zshellプロンプトでは、8つの色しか呼び出せないようです。
例:
PROMPT="[%n@%{$fg[magenta]%}%m%{$reset_color%} %.]
%# "
うまくいきます。しかし、
PROMPT="[%n@%{$fg[brmagenta]%}%m%{$reset_color%} %.]
%# "
動作しません。デフォルトでは、「明るい」色の変更はありません。
いくつかの研究の終わりに、zshの色が "color" 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
答え2
あなたが言及するすべての「色」は一種のエスケープシーケンスです\e[{color_code}m
。 Zsh関数は、colors
人間が読める色名を端末エスケープシーケンスにマップするいくつかのzsh連想配列変数を追加します。だから自分で使うことができます
PS1=%{$'\e[54m'%}...
または@Mischa Arefievの答えを試してみてください。もっと読みやすいです。エスケープシーケンスはすべてのシェルで使用できますが、同様の構文は%F{54}...
zshでのみ使用できます。