.bashrc PS1設定を正しくレンダリングできませんでした。

.bashrc PS1設定を正しくレンダリングできませんでした。

\[...\]私は基本的に問題が何であるかを知っています。 (空白ではありませんか?)文字をエスケープし、bashがプロンプトの幅を正しく計算できるようにするには、これを使用する必要があるためです。

しかし、私はすべてを理解することができず、正確にどこに置くべきかをよく理解していないので、試行錯誤を受けました\[...\]

STARTCOLOR='\[\e[0;31m\]'
ENDCOLOR='\[\e[0m\]'
BACKGROUND='\[\e[47m\]'
export PS1="$STARTCOLOR$BACKGROUND\u@\h \[\t\]$ENDCOLOR\w>\$?\$\]"

私が使っているものです。唯一の問題は、矢印キーを使用して前のコマンドを長すぎるまでスクロールすると、\w>\$?\$\PS1セクションが消えることです。前のコマンドを使用して前に移動した後に矢印キーを使用して戻るにも、この現象が発生します。

ベストアンサー1

問題は、出力内容を印刷するために非印刷タグを使用していることです(\t--timestamp)。

STARTCOLOR='\[\e[0;31m\]'
ENDCOLOR='\[\e[0m\]'
BACKGROUND='\[\e[47m\]'
export PS1="$STARTCOLOR$BACKGROUND\u@\h \t$ENDCOLOR\w>\$?\$ "

\[ ... \]カラーコードなど、印刷されない文字の周囲のシーケンスにのみ適用されます。

おすすめ記事