web-dev-qa-db-ja.com

Linux:bashプロンプトを着色すると改行が壊れる

bashプロンプトを次のように色付けしようとすると:

export PS1="\e[0;31m[\u@\h \W]\$ \e[m "

キャリッジリターンを解除します(行がいっぱいのときに新しい行に移動するのではなく、同じ行から開始して入力テキストを消去します)。

カラーシーケンスを削除すると、正常に動作します。
私はUbuntu 11.10とターミナルを使用しています(guakeにも同じバグがあります)。

26
Abonec

「readline」がプロンプトの表示長を正しく計算するためには、\[\]の間のすべてのエスケープシーケンスをラップする必要があります。それらがないと、「readline」はプロンプトが実際よりも長いと考え、テキストがいつマージンに達したかを知りません。

 PS1 = "\ [\ e [; 31分\][\ u @\h\W]\$ \ [\ e [m\]
46
user1686

[および]ヒントは、OS X 10.8.2のbashでも機能しました。

私が使う:

PS1 = "[\ e [0; 37m\W\$(git branch 2>/dev/null | grep -e '*' | sed 's/^ ..(。*)/ {\ 1} /')\$\e [m] "

現在使用中のgitブランチを示しています。

1
stonefruit