Zshellプロンプトで8色しか呼び出せないようです。
例:
Prompt="[%n@%{$fg[Magenta]%}%m%{$reset_color%} %.]
%# "
正常に動作します。しかしながら、
Prompt="[%n@%{$fg[brmagenta]%}%m%{$reset_color%} %.]
%# "
動作しません。基本的に、「明るい」カラーバリエーションは表示されません。
調査したところ、zshの色が「colors」setoptによって呼び出されていることがわかりました。
している
echo ${(o)color}
この出力を生成します:
00 01 02 03 04 05 07 08 22 23 24 25 27 28 30 30 30 30 31 31 32 32 33 33 34 34 35 35 36 36
37 37 39 39 40 40 41 42 43 44 45 46 47 49 bg-black bg-blue bg-cyan bg-default bg-green
bg-Magenta bg-red bg-white bg-yellow black blink blue bold conceal cyan default faint green
Magenta no-blink no-conceal no-reverse no-standout no-underline none normal red reverse
standout underline white yellow
ご覧のとおり、標準の8色のみが使用可能です。 "bg-"バリアントを使用してみましたが、これも出力をデフォルトのテキストの色のままにします。
あなたが提供できるどんな助けでも大歓迎です。もちろん、通常の色の1つだけを使用することもできますが、その後は何も学びません。
どのターミナルエミュレータを使用していますか? echotc Co
を実行すると、サポートされている色の数を確認できます。たとえば、私のurxvt
は88色をサポートしていますが、xterm
は8色しかサポートしておらず、明るいバリエーションは含まれていません。
urxvt
で実行すると、次のようになります。
# Dark Magenta/Violet:
PS1="[%F{34}%n%F{reset}@%F{Magenta}%m%F{reset} %.] "
# Bright Thistle purple:
PS1="[%F{54}%n%F{reset}@%F{Magenta}%m%F{reset} %.] "
出典:man zshall
あなたが話しているすべての「色」は、\e[{color_code}m
という形式のエスケープシーケンスです。 Zsh関数colors
は、人間が読める色名を端末エスケープシーケンスにマッピングするいくつかのzsh連想配列変数を追加するだけです。したがって、直接使用することもできます
PS1=%{$'\e[54m'%}...
または、@ Mischa Arefievの答えを試してみてください。エスケープシーケンスはすべてのシェルで機能しますが、%F{54}...
などの構造はzshでのみ機能します。