ZShell中的16种颜色


11

我似乎只能在zshell提示中调用8种颜色。

例:

PROMPT="[%n@%{$fg[magenta]%}%m%{$reset_color%} %.]
%# "

工作良好。然而,

PROMPT="[%n@%{$fg[brmagenta]%}%m%{$reset_color%} %.]
%# "

不起作用 基本上,没有“明亮”的颜色变化出现。

经过研究后,我发现zsh的颜色由“颜色” 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-”变体,该变体还将输出保留为默认文本颜色。

您能提供的任何帮助将不胜感激。当然,我可以只使用一种普通的颜色,但是我什么也学不了!

Answers:


9

您正在使用哪种终端仿真器?您可以通过运行查看支持的颜色数量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


4

您正在谈论的所有“颜色”只是某种形式的转义序列\e[{color_code}m。Zsh函数colors除了添加一些将人类可读的颜色名称映射到终端转义序列的zsh关联数组变量外,什么也没做。因此,您可以直接使用

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

或尝试@Mischa Arefiev的答案,它更具可读性。请注意,转义序列可在任何shell中使用,而类似的构造%F{54}...仅可在zsh中使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.