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.