ZShellの16色


11

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つだけを使用することもできますが、その後は何も学びません。

回答:


9

どのターミナルエミュレータを使用していますか?を実行すると、サポートされてechotc Coいる色の数を確認できます。たとえば、urxvt88色を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


4

あなたが話しているすべての「色」は、フォームのエスケープシーケンスにすぎません\e[{color_code}m。Zsh関数colorsは、人間が読める色名をターミナルエスケープシーケンスにマッピングするいくつかのzsh連想配列変数を追加するだけです。したがって、直接使用することもできます

PS1=%{$'\e[54m'%}...

または@Mischa Arefievの答えを試してみてください、それはより読みやすいです。エスケープシーケンスはどのシェルでも機能しますが、構造%F{54}...はzshでのみ機能することに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.