Ctrl+ ré uma ótima ferramenta para procurar .bash_history
comandos executados anteriormente.
No entanto, quando o uso no meu OS X Terminal.app, vejo um comportamento estranho e fiquei imaginando se alguém vê a mesma coisa ou sabe como corrigi-la.
- Ctrl+r
- digite algo como
find
- oh legal, olha ... é o comando que eu queria
find . -exec grep -q "hello world" '{}' \; -print
- Quero executar esse comando, mas mudar o olá mundo para outra coisa.
- Então eu bati ←ou→
- Agora, o comando é SORTA na linha de comando, mas sempre se parece com uma versão truncada do comando, assim:
-q "blog_posts_by" '{}' \; -print
onde o comando todo está lá, e eu posso usar as teclas do cursor para percorrer a linha, mas não todas. está impresso. Há uma desconexão entre o que é mostrado na linha e o que o terminal realmente pensa que estou editando.
Alguém tem idéia de por que isso pode acontecer? Não é um fenômeno fácil pesquisar nas webs.
Respostas:
Você provavelmente tem seqüências de escape para cores no prompt que não são delimitadas corretamente. Eles precisam ser incluídos em
\[
e\]
.O comprimento das seqüências de caracteres que não são de impressão não é incluído no comprimento do prompt, quando são incluídos, e a posição dos comandos anteriores precisa ser calculada para a exibição adequada quando eles são quebrados.
fonte
PS1
, mas não novamente após o novo caractere de linha.Isso pode ser devido à maneira como as teclas de escape estão configuradas no seu Terminal, o que normalmente faço é usar a seta esquerda ou direita no iTerm ou no Terminal.app, já que não sou fã de pressionar o retorno imediatamente, isso funciona para você ?
fonte
Outra causa possível para esse problema é ter o
TERM
valor errado . Por exemplo, isso aconteceu comigo quando eu estava usando cores no meu PS1, mas o meuTERM
estava definido comoxterm
. Eu mudei paraxterm-256color
e o CTRL-r começou a funcionar corretamente novamente.fonte