Configuration 如何定义在ZSH提示符中使用的自定义颜色?

Configuration 如何定义在ZSH提示符中使用的自定义颜色?,configuration,zsh,prompt,zshrc,Configuration,Zsh,Prompt,Zshrc,我在配置zsh提示符时遇到一些困难。具体来说,我希望字体的颜色由十六进制代码定义:#87afdf 目前,我已经设置了如下提示: PROMPT='%B[%d] ➞ %b' 我尝试通过以下方式添加颜色: autoload -U colors && colors PROMPT='%{$fg[#87afdf]%}%B[%d] ➞ %b%{$reset_color%}' 但这只会让我胡言乱语: $fg[#87afdf][/Users/gregory] ➞ $reset_col

我在配置zsh提示符时遇到一些困难。具体来说,我希望字体的颜色由十六进制代码定义:#87afdf

目前,我已经设置了如下提示:

PROMPT='%B[%d] 
➞  %b'
我尝试通过以下方式添加颜色:

autoload -U colors && colors

PROMPT='%{$fg[#87afdf]%}%B[%d]
➞  %b%{$reset_color%}'
但这只会让我胡言乱语:

$fg[#87afdf][/Users/gregory]
➞  $reset_color

如果您有任何关于如何进行的想法,我们将不胜感激。

除非您使用的是非常不寻常的终端,否则您不能只使用您想要的任何颜色组合。标准端子仅限于(最多)a

zsh附带的
colors
功能只是允许通过名称引用旧16调色板中的颜色,它对使用超出该范围的颜色没有帮助


有一种可用的方法可以设置
$FG
$BG
数组,提供一种按数字使用256调色板颜色的方法,但不需要处理终端处理这些颜色所需的转义序列。

必须使用256调色板。您可以使用以下命令查看ZSH中256种颜色中每种颜色的数值:

for code in {000..255}; do print -P -- "$code: %F{$code}Color%f"; done
bash也是如此:

for code in {0..255}; do echo -e "\e[38;05;${code}m $code: Color"; done
Oh My Zsh用户的解决方案 如何打印可用颜色 如前所述,您必须使用256色调色板。 查看可用颜色的最简单方法是使用以下命令(因为ZSH在下面使用光谱):

它将打印所有可用的颜色

如何在Oh my zsh主题中使用颜色 要在主题中使用颜色,必须像
$FG[]
那样编写,例如
$FG[172]

大写可能很重要,因为
$fg[172]
在我的控制台上不起作用

可能的问题 您的终端可能只支持8种颜色,而不是256种颜色。如果为真,则在执行
spectrum\u ls
后,您将看不到所有颜色
在这种情况下,您必须将终端配置为支持256色

来源

spectrum_ls