2017-06-28 24 views
0

注:私はMac OS X Sierraを実行していますが、この問題はUbuntuでも発生します。端末のプロンプトを変更した後でテキストがクリアされない

私は、次のような端末プロンプトをカスタマイズした:私は最後に改行を入れているので、私は>後に新しい行にコマンドを入力し始める

export PS1="\n\[\033[1;31m\]\u \[\033[1;32m\]@ \[\033[1;32m\]\h \[\033[0;35m\]in \[\033[0;36m\]\w\n\[\033[0;34m\]> \[\033[1;37m\] \e[0m" 

注意。私はこれをいくつかのマシンで行いました。私は、改行を追加するたびに端末が変な動作をすることに気付きました。変なふうにすることで

、私はこの(これは私が言及したPS1値を使用する場合は、エラーを複製するステップを含む)であるを参照してください正確な動作:

  1. アクセス古いコマンドは、上矢印を押して、キー。

  2. 1語以上の単語で構成され、最初の単語の長さが4文字以上のコマンドに遭遇すると、その単語の最初の4文字がプロンプト。

  3. この「粘着部分」は私が削除することはできず、上矢印キーを何度か押しても実行されません。例えば

、私は最後に入力した4つのコマンドは(最新のものから最近の)した場合:clearman manthis thathelp。その後

、私はインクリメンタルアップキーを押して、前のコマンドを見て:

enter image description here

helpが正しく表示されています。

enter image description here

this that適切に表示されています。

enter image description here

thisは、開始時に追加されるかに注意してください。私は試しても削除できません。

enter image description here

私がアップキーを押すと滞在し続けています。

この問題を解決するにはどうすればよいですか?

答えて

2

あなたのプロンプトのエスケープ・シーケンスのそれぞれは、それらの文字列をカウントする目的のために無視されるべきであるということはbashを伝えるために\[\]で括弧する必要があります。あなたの例の最後の括弧は括弧で囲まれていません:

export PS1="\n\[\033[1;31m\]\u \[\033[1;32m\]@ \[\033[1;32m\]\h \[\033[0;35m\]in \[\033[0;36m\]\w\n\[\033[0;34m\]> \[\033[1;37m\] \e[0m" 

\e[0m

エラーを修正した場合、bashはより良い結果をもたらす可能性があります。これは推奨される修正を示しています。

export PS1="\n\[\033[1;31m\]\u \[\033[1;32m\]@ \[\033[1;32m\]\h \[\033[0;35m\]in \[\033[0;36m\]\w\n\[\033[0;34m\]> \[\033[1;37m\] \[\e[0m\]" 
+1

ありがとうございます! –

関連する問題