6

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

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

PROMPT='%B[%d] 
➞  %b'

我尝试通过以下方式添加颜色:

autoload -U colors && colors

PROMPT='%{$fg[#87afdf]%}%B[%d]
➞  %b%{$reset_color%}'

但这只会给我以下胡言乱语:

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

任何关于如何进行的想法将不胜感激。

4

3 回答 3

17

您必须使用 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
于 2018-04-10T11:03:41.990 回答
3

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

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

有一个简单的脚本可用,它将设置$FG$BG数组以提供一种按数字使用 256 色调色板中的颜色的方法,但无需处理终端处理这些所需的转义序列。

于 2012-12-13T23:13:10.070 回答
2

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

如何打印可用颜色

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

spectrum_ls 

它将打印所有可用的颜色

在此处输入图像描述

...

在此处输入图像描述

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

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

可能的问题

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

资源

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

于 2020-12-17T11:10:49.040 回答