Por que alguns comandos (geralmente longos) são confundidos no bash & zsh?

9

Muitas vezes quando eu insiro um longo comando no bash ou zsh (estes são os únicos dois shells que eu tenho certeza que vi isso) o cursor distorce para algum lugar no meio da string que eu estou digitando, alguém pode explicar por que isto é, e se algo pode ser feito sobre isso?

Tenho notado que isso geralmente acontece quando eu navego no histórico do meu shell (usando as teclas de seta), quando encontro uma entrada longa, a entrada longa e nova se confunde com a entrada anterior, tornando o texto truncado. / p>

Eu tenho um exemplo com strings curtas, que acabei de notar:

Histórico contém:

mkdir sune1
mkdir sune2

Se eu navegar para mkdir sune1 e, em seguida, para mkdir sune2 , esperaria que minha linha de comando fosse mkdir sune2 (pois é para isso que naveguei agora), mas obtenho mkdir1sune2 . / p>

Eu tenho notado isso com frequência há anos, mas nunca deixe que isso me incomode muito, mas eu acho que é hora de mudar! Então, alguma idéia?

    
por Jonatan 29.12.2012 / 15:18

1 resposta

7

Sua string de prompt provavelmente escapou incorretamente de caracteres não imprimíveis. Se você tem alguma coisa como mudanças de cor no seu prompt, você precisa colocar \[ e \] em torno das seqüências de escape do terminal para que o bash possa dizer que eles não ocupam espaço na tela - caso contrário, ele calcula mal onde o comando real é na tela e atualiza no lugar errado. Consulte esta seção do TLDP . Em zsh, coloque %{ e %} em torno das seqüências de escape.

    
por 29.12.2012 / 19:04

Tags