Este prompt faz com que os terminais fiquem no meio da tela, por quê?

Este prompt faz com que os terminais fiquem no meio da tela, por quê?

Eu tenho o seguinte prompt PS1:

export PS1="\e[1m\e[38;5;198m\u\e[0m @ \e[1m\e[38;5;208m\h\e[0m : \e[1m\w\e[0m\e[38;5;226m\$(parse_git_branch)\e[0m \e[1m>>>\e[0m "

o que acontece é que ao digitar e chegar na metade do terminal, ele vai mandar o cursor para o início da linha e se sobrescrever assim:

rossid @ HOST : /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents >>>

oussid @ HOST : /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents >>>  this is just a test to show what happens nothing seri 

(o resto da string grave substitui o início)

Alguma ideia do porquê? (Estou usando o terminal padrão osx e o terminal IntelliJ... todos fazem o mesmo)

Responder1

Você deve colocar todas as sequências de escape não imprimíveis entre \[e \]. Por exemplo:

  PS1="\[\e[1m\]\[\e[38;5;198m\]\u\[\e[0m\] @ "

[Mostra apenas parte do seu prompt. Faça o mesmo para descansar.]

informação relacionada