zsh
プロンプトに色を付けたいのですが。そのために、次のコードを使用します。
export PS1=%F{blue}%n%#
しかし、それを正しく行うには、次のように%f
値にPS1
を追加する必要があります。
export PS1=%F{blue}%n%#%f
%f
を省略すると、動作がおかしくなります。色がプロンプトに影響するだけでなく、たとえば、 ls -l
、その出力の最初の行も色分けされています:
PS1
カラー値の設定は他のコマンドにどのように影響しますか?それはプロンプトだけに関係するべきではありませんか?
%f
は、指定された前景色の使用を停止するようにzsh
シェルに指示します。 zsh
プロンプト展開のmanページ はこう言っています:
%F
(%f
)端末でサポートされている場合は、別の前景色を使用して開始(停止)します。
zsh
に前景色をリセットするように指示しない場合、新しい前景色が指定されるまで(たとえば、緑のプレーンファイル)、後続の前景文字はその色を取得します。
1つの色に切り替える端末コマンドがあります。これは維持されます。その後、元に戻します。これは、ターミナルで直接Escコードを使用するか、特別なzsh
固有のコマンドを使用して実行できます。
echo \\033[31m red \\033[34m blue \\033[m and black again
(必要なバックスラッシュの数はシェルによって異なる場合があります)
zsh
は%Fと%fを解釈し、端末に応じて上記のようなEscコードに変換します。