このプロンプトにより、端末が画面の途中で折り返されるのはなぜですか?

このプロンプトにより、端末が画面の途中で折り返されるのはなぜですか?

次の 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 "

何が起こるかというと、入力してターミナルの半分まで達すると、カーソルが行の先頭に送られ、次のように上書きされます。

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 

(文字列の残りの部分は先頭を置き換えます)

理由が分かりますか? (私は OSX 標準ターミナルと IntelliJ ターミナルを使用していますが、すべて同じです)

答え1

印刷できないエスケープ シーケンスはすべて と で囲む必要があります\[\]例:

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

[プロンプトの一部のみを表示します。残りの部分も同様に実行します。]

関連情報