web-dev-qa-db-ja.com

ZShellの16色

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

11
Tammer Ibrahim

どのターミナルエミュレータを使用していますか? 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

9
Mischa Arefiev

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

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

または、@ Mischa Arefievの答えを試してみてください。エスケープシーケンスはすべてのシェルで機能しますが、%F{54}...などの構造はzshでのみ機能します。

4
ZyX