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

时间:2012-12-13 22:24:46

标签: 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_color

非常感谢任何关于如何进行的想法。

3 个答案:

答案 0 :(得分:2)

除非您使用的是非常不寻常的终端,否则您无法使用任何您想要的颜色组合。标准终端仅限于(最多)256-color palette

zsh附带的colors函数只是允许通过名称引用旧的16色调色板中的颜色,它将无助于使用该范围之外的颜色。

有一个simple script可用于设置$FG$BG数组,以提供一种方法来使用256色调色板中的颜色,但不需要处理终端处理这些序列所必需的逃逸序列。

答案 1 :(得分:1)

您必须使用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

答案 2 :(得分:0)

Oh-My-Zsh用户的解决方案

如何打印可用颜色

如上所述,您必须使用256色调色板。 查看可用颜色的最简单方法是使用以下命令(因为ZSH使用下面的光谱):

spectrum_ls 

它将打印所有可用的颜色

enter image description here

...

enter image description here

如何在Oh-my-zsh主题中使用颜色

要在主题中使用颜色,您必须像$FG[<0-255>]这样写颜色,例如$FG[172]
大写可能很重要,因为$fg[172]在我的控制台上不起作用!

可能的问题

您的终端可能仅支持8种颜色,而不是256种。如果为true,则执行spectrum_ls后将看不到所有颜色。
在这种情况下,您必须将终端配置为支持256色。

来源

https://dev.to/yujinyuz/custom-colors-in-oh-my-zsh-themes-4h13