web-dev-qa-db-ja.com

PS1カラーの設定

zshプロンプトに色を付けたいのですが。そのために、次のコードを使用します。

export PS1=%F{blue}%n%#

しかし、それを正しく行うには、次のように%f値にPS1を追加する必要があります。

export PS1=%F{blue}%n%#%f

%fを省略すると、動作がおかしくなります。色がプロンプトに影響するだけでなく、たとえば、 ls -l、その出力の最初の行も色分けされています: enter image description here

PS1カラー値の設定は他のコマンドにどのように影響しますか?それはプロンプトだけに関係するべきではありませんか?

8
Spectre911

%fは、指定された前景色の使用を停止するようにzshシェルに指示します。 zshプロンプト展開のmanページ はこう言っています:

%F%f

端末でサポートされている場合は、別の前景色を使用して開始(停止)します。

zshに前景色をリセットするように指示しない場合、新しい前景色が指定されるまで(たとえば、緑のプレーンファイル)、後続の前景文字はその色を取得します。

7
Jeff Schaller

1つの色に切り替える端末コマンドがあります。これは維持されます。その後、元に戻します。これは、ターミナルで直接Escコードを使用するか、特別なzsh固有のコマンドを使用して実行できます。

echo \\033[31m red \\033[34m blue \\033[m and black again

(必要なバックスラッシュの数はシェルによって異なる場合があります)

zshは%Fと%fを解釈し、端末に応じて上記のようなEscコードに変換します。

4
Ned64