Meu problema é que o shell Bash para de mostrar os caracteres digitados nele. Ele lê os comandos embora.
Já me deparei com esse problema algumas vezes e não entendo o que o causa. Eu sei como resolver isso, mas eu realmente não gosto quando estou "vodu" minha maneira de sair dos problemas.
Descreverei as duas maneiras pelas quais me deparei com esse problema:
Estou executando um determinado processo, http://pythonpaste.org/script/ e, às vezes, quando eu paro isso ou quebra o controle, é devolvido ao shell. Quando eu digito comandos no shell, os caracteres digitados não aparecem. Quando pressiono enter, os comandos são enviados. Então, por exemplo:
- Eu digito "ls"
- Só vejo um prompt vazio e nada mais
- Pressiono enter e recebo uma lista dos arquivos, em outras palavras: o comando é executado
- quando eu dou o comando "reset" o shell começa a funcionar normalmente novamente
A segunda maneira que isso acontece é quando eu dou um comando como este:
$ grep foo * -l | xargs vim
Uso o grep para encontrar arquivos que tenham um determinado padrão e, em seguida, desejo abrir todos os arquivos resultantes do grep. Isso funciona como um encanto (embora não tão rápido quanto eu esperava). Mas quando saio do Vim, meu shell para de mostrar os caracteres digitados nele. Um comando de redefinição resolve o problema.
Meu palpite é que ambos os problemas têm uma razão subjacente, mas estou meio que perplexo em como ou qual é essa razão.
A pesquisa desse problema é problemática, porque a descrição é meio vaga e não possui termos de pesquisa rígidos.
Editar
Dando o
stty --all
comando conforme a solicitação de John S. Gruber deu a seguinte saída (espaço em branco editado para facilitar a leitura)
speed 0 baud;
rows 53;
columns 186;
line = 0;
intr = <undef>;
quit = <undef>;
erase = <undef>;
kill = <undef>;
eof = <undef>;
eol = <undef>;
eol2 = <undef>;
swtch = <undef>;
start = <undef>;
stop = <undef>;
susp = <undef>;
rprnt = <undef>;
werase = <undef>;
lnext = <undef>;
flush = <undef>;
min = 0;
time = 0;
-parenb
-parodd cs8
-hupcl
-cstopb cread
-clocal
-crtscts
-ignbrk
-brkint
-ignpar
-parmrk
-inpck
-istrip
-inlcr
-igncr
-icrnl
-ixon
-ixoff
-iuclc
-ixany
-imaxbel
-iutf8
-opost
-olcuc
-ocrnl
-onlcr
-onocr
-onlret
-ofill
-ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig
-icanon
-iexten
-echo
-echoe
-echok
-echonl
-noflsh
-xcase
-tostop
-echoprt
-echoctl
-echoke
stty --all
à minha pergunta. Desde já, obrigado!
stty --all
e coloque os resultados em sua pergunta. Eco é uma característica tty que está sendo desativada. O Vim fará isso enquanto estiver em execução e também colocará o terminal no modo bruto. Ao sair, deve redefinir as configurações do terminal. Quando o vim está sendo executado, você não deseja repetir oi
comando que coloca o editor no modo de inserção, por exemplo. Essas configurações informam ao dispositivo tty como ele deve processar o que você digita. Enquanto vim está em execução que cuida de ecoando o que deve ser feito eco, etc.