プロンプトで前景色を設定する方法が 2 つあることに気付きましたzsh
。
PROMPT='%F{blue}$'
PROMPT='%{$fg[blue]%}$'
これらの行は両方ともプロンプトとして青色を生成します$
。これら 2 つには違いがありますか? また、プロンプトを設定するための推奨される方法はありますか?
カラーコードを指定したい場合は、$F{160}
または他の数値を使用できますが、 は使用できません%{$fg[160]%}
。これが、これら 2 つのオプションの唯一の違いでしょうか?
答え1
直接%F{...}
エスケープは、zsh C コードによって直接処理されます。 を使用すると、$fg[blue]
という名前の連想配列にアクセスしますfg
。これを機能させるには、zsh に付属する関数を呼び出す必要がありますcolors
。プロンプトの場合は、 もPROMPT_SUBST
オプションに依存します。
これら 2 つの方法で生成される結果には、大きな違いはありません。前者の方がクリーンで、zsh のターミナル状態の追跡とよりうまく連携します。これは 2008 年に zsh に追加されましたが、colors 関数は 1999 年に追加されました。今日では、どちらかの機能が欠けているほど古い zsh に固執することはほとんどありません。そのため、古い方法に固執する意味はもうありません。
また、お気づきのとおり、%F
端末が 88 色または 256 色をサポートしている場合は、数値を処理できます。より新しい zsh を実行する場合は、トゥルー%F{#0000ff}
カラー端末がある場合 (または zsh/nearcolor モジュールをロードする場合) のように、16 進数のトリプレットを指定することもできます。