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

gge*_*ond 6 configuration zsh prompt zshrc

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

目前,我已按如下方式设置提示:

PROMPT='%B[%d] 
?  %b'
Run Code Online (Sandbox Code Playgroud)

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

autoload -U colors && colors

PROMPT='%{$fg[#87afdf]%}%B[%d]
?  %b%{$reset_color%}'
Run Code Online (Sandbox Code Playgroud)

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

$fg[#87afdf][/Users/gregory]
?  $reset_color
Run Code Online (Sandbox Code Playgroud)

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

小智 15

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

for code in {000..255}; do print -P -- "$code: %F{$code}Color%f"; done
Run Code Online (Sandbox Code Playgroud)

bash 也一样:

for code in {0..255}; do echo -e "\e[38;05;${code}m $code: Color"; done
Run Code Online (Sandbox Code Playgroud)


luk*_*uke 7

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

如何打印可用颜色

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

spectrum_ls 
Run Code Online (Sandbox Code Playgroud)

它将打印所有可用的颜色

在此输入图像描述

...

在此输入图像描述

如何在 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


qqx*_*qqx 3

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

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

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