5

gitを使用するときにbashプロンプトをカスタマイズするために、〜/.localshファイルに次のものを入れました。

基本的に、現在のブランチをターミナルに表示したいと思います。gitkツールは、背景が緑色で前景が黒色のブランチを表示するので、これを実行しようとしています。

私が持っているものは機能しますが、キーボードの上矢印を押して前のコマンドをスクロールバックすると、上書きされます。

これは、カラーシーケンスを[\e[0m]で終了しないときの前に起こったことです。getgitbranch関数を呼び出したために、これが発生しています。プロンプトの長さがわからない端末と関係があると思います。

だから、ここに質問があります...上矢印を使用するときにbashプロンプトで動的要素を正しく使用し、それを無駄にしないようにするにはどうすればよいですか?

function getgitbranch()
{
git branch | grep "^\*" | cut -c3-
}

function blabla()
{
PS1=""
PS1="$PS1\[\e[0;30m\]\[\e[42m\]\[\$(getgitbranch)\]\[\e[0;49m\]\[\e[0m\] "
PS1="$PS1\[\e[1;35m\][\[\e[0m\]"
PS1="$PS1\[\e[1;33m\]\w\[\e[0m\]"
PS1="$PS1\[\e[1;35m\]]\[\e[0m\]"
PS1="$PS1 \[\e[1;31m\]>\[\e[0m\] "
export PS1
}
4

1 に答える 1

7

\[\]の周りから を取り外し$(getgitbranch)ます。その関数によって出力される文字は、実際には画面上のスペースを占有するため、Bash でそれらを考慮する必要があります。を使用すると、その中に表示される文字\[\]はカウントされません。

于 2010-08-25T16:07:06.887 に答える