シェルプロンプトが色付けされるように.bashrcをexport PS1="\033[1;33m\u@\h: \w>\033[0m"
を含めるように変更しましたが、\033
がgit出力(少なくともlogとdiff)を台無しにしているようです。 ESC[33mcommit long-commit-number ESC[m
のようなものが表示されます。
\e[
の代わりに\033[
も試しましたが、それでもESC[33m
が表示されます。これを回避しながら、シェルプロンプトの色を維持する方法はありますか?
プロンプト設定は正しくありませんが、gitの問題とはまったく関係ありません。
行編集を機能させる(つまり、プロンプトが印刷された後のカーソルの位置を知る)には、bashはプロンプトの幅を正確に知る必要があります。考えられるすべての端末固有のエスケープシーケンスを認識できるわけではないため、プロンプトの特定の部分が表示されないことを明示的に通知する必要があります。それらは\[
および\]
コードで囲まれている必要があります。例えば:
PS1="\[\033[1;33m\]\u@\h: \w>\[\033[m\]"
これを行わないと、1行より長いコマンドを入力すると、2行目が最初の行を上書きしたり、その他の不具合が発生したりすることがよくあります。
ただし、これはgitには影響しません。 git log
がESC[33m
を出力する理由は、git自体がその行を黄色で表示することを望んでいるためです。カラーオプションcolor.ui
が有効になっています。黄色の代わりに「ESC」という単語を参照する理由は、$ PAGERがシーケンスを認識しないためです。 (人間が読めるテキストではなく)バイナリデータを含むファイルを読んでいると見なします。
デフォルトのless
ページャーを$ PAGERとして使用している場合、$LESS
変数にいくつかのカスタムオプションを追加した可能性がありますそして色を許可するものを忘れてしまいました。 -R
。通常、gitはページャーの実行時に内部的に$LESS
を設定しますが、その変数を自分で設定した場合、gitはそれに触れず、-R
を追加する必要があります。
export LESS="R"
export LESS="e M q R F X z -3"
...またはそれらの線に沿った何か。