Eu não consegui reproduzir isso. Estou usando o perfil Pro no Terminal.app e defino 'Declare terminal as' como rxvt. Talvez isso ajude.
Estou tendo um problema com o meu terminal há algum tempo. Parece que a combinação de bash (ou melhor, readline) e Terminal.app se confunde de alguma forma quando eu aperto a tecla cursor-right para sair do modo “reverse-i-search” (Control-R). Depois, os caracteres à direita do cursor são duplicados. Vim, sendo uma aplicação mais complexa, reage duplicando os caracteres na ordem errada.
Mostrarei algumas capturas de tela para ilustrar o problema.
Primeiro de tudo, esta é uma nova janela de terminal rodando “GNU bash, versão 3.2.48 (1) -release (x86_64-apple-darwin10.0)” (OSX 10.6.4). O prompt é bastante complexo, você pode encontrar o código no GitHub . Não tenho ideia se o meu prompt está causando os problemas, mas no Linux não. Para completar, vou explicar em algum grau: A parte ciano está mostrando o status do Git para o diretório atual e gerado por PROMPT_COMMAND
. Um exemplo $PS1
tem esta aparência:
\[\e]0;\u@\h:\w\a\]\[\e[1;32m\]\u\[\e[0;32m\]@\[\e[1;30m\]\h\[\e[1;34m\] \w \[\e[0;36m\]di ~? \[\e[1;30m\]\[\e[0;37m\]\A \[\e[0;33m\]\[\e[1;31m\]1\$\[\e[0m\]
Para referência, esta é a saída de stty
:
speed 9600 baud; 50 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
-echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
-extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel iutf8
-ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
-dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
stop = ^S; susp = ^Z; time = 0; werase = ^W;
Não deve haver nenhuma configuração não padrão aqui. Para o caso de teste:
Eu digito echo 126
e, em seguida, clico em "cursor para a esquerda" uma vez, depois digito 345 e, em seguida, pressionamento "retornar". Então, eu apertei Control-R e digitei "p". Foi quando tirei esta primeira captura de tela:
Agora,depoisdepressionar"cursor right" para sair do modo de pesquisa inversa, o terminal emite um bipe e começa a ficar confuso:
Parademonstraroproblema,eufaçoexatamenteomesmoecho
deantes:eudigitoecho126
,movoumcaractereparaaesquerdaedigito345
,seguidoderetorno.
Como você pode ver, para cada caractere que eu digite, outro "6" é exibido à direita do cursor. As coisas ficam ainda piores quando entro no Vim. Este é o meu recém-iniciado Vim depois de entrar no modo de inserção e digitar um caractere de espaço:
(Oespaçoqueestásendomostradocomosublinhadoénormal,essaéaopção'list'
emação.)
Vejacomoamensagemdesaudaçãosemoveparaadireitadeumamaneiraestranha?Outroexemploéoseguinte:UmnovoVimapósinseriri126<Left>345<Esc>
:
Agora, alguma ideia do que está acontecendo aqui? É óbvio que trabalhar dessa maneira é quase impossível. Usar reset
funciona, mas fazer isso toda vez não é a coisa mais conveniente a fazer.
Se você precisar de informações adicionais, ficaremos felizes em fornecê-las. Além disso, sou um usuário de CLI experiente, então você não precisa explicar tudo à prova de falhas.
Eu não posso dizer o que neste momento, mas há algo definitivamente não certo na string de prompt do PS1 que você está usando que está fazendo com que o Terminal atue quando está usando a emulação "xterm-color". Eu tenho a mesma versão do BASH e MacOS como você faz aqui, e eu corro meu terminal em emulação de cor xterm. No momento em que exportei a variável PS1 com o valor que você forneceu na pergunta e fiz o truque mencionado no modo de pesquisa inversa, pude ver exatamente o mesmo comportamento em meu Terminal do que no seu.
Tags bash macos terminal.app