Por que o CTRL-r age de forma estranha (mostrando apenas parte de um comando) no OS X

10

Ctrl + r é uma excelente ferramenta para pesquisar o .bash_history dos comandos executados anteriormente.

No entanto, quando eu uso no meu OS X Terminal.app eu vejo um comportamento estranho, e eu queria saber se alguém vê a mesma coisa ou sabe como consertar isso.

  1. Ctrl + r
  2. digite algo como find
  3. oh legal, olha ... é o comando que eu queria find . -exec grep -q "hello world" '{}' \; -print
  4. Eu quero executar esse comando, mas mude o hello world para outra coisa.
  5. Então eu apertei ou
  6. Agora o comando é SORTA na linha de comando, mas sempre parece uma versão truncada do comando, como esta: -q "blog_posts_by" '{}' \; -print , onde o comando inteiro está lá, e eu posso usar as teclas de cursor para me mover linha, mas nem toda ela é impressa. Há uma desconexão entre o que é mostrado na linha e o que o terminal acha que estou editando.

Alguém sabe por que isso pode acontecer? Não é um fenômeno fácil pesquisar nas webs.

    
por bryan kennedy 19.01.2011 / 18:43

3 respostas

14

Você provavelmente tem seqüências de escape para cores no seu prompt que não estão adequadamente delimitadas. Eles precisam ser colocados em \[ e \] .

PS1='\[3[1;36m\]\u\[3[0m\]@\[3[1;34m\]\h\[3[0m\]\$ '

O comprimento das seqüências de caracteres não imprimíveis não é incluído no comprimento do prompt quando elas são encapsuladas e a posição dos comandos anteriores precisa ser calculada para a exibição adequada quando eles são quebrados.

    
por 19.01.2011 / 21:12
0

Isso pode ser devido à forma como as teclas de escape são configuradas no seu Terminal, o que eu normalmente faço é usar a seta para a esquerda ou para a direita no iTerm ou Terminal.app, já que eu não sou fã de retornar imediatamente, isso trabalhar para você?

    
por 19.01.2011 / 19:48
0

Outra causa possível para esse problema é ter o valor TERM incorreto. Por exemplo, isso aconteceu comigo quando eu estava usando cores no meu PS1, mas meu TERM foi definido como xterm . Eu mudei para xterm-256color e então o CTRL-r começou a funcionar corretamente novamente.

    
por 26.04.2018 / 23:19