粗体颜色变体的 zsh 提示配置

use*_*428 5 zsh command-prompt mintty

我已经配置了我的终端(Cygwin 上的 mintty)以将颜色绑定到某些名称,例如

# (Excerpt of .minttyrc)
Green=103,252,66
BoldGreen=53,228,11
BoldAsColour=yes
Run Code Online (Sandbox Code Playgroud)

这种配置的工作原理是,例如,在配置 git 或 nano 时,我可以访问这些颜色。但是,当我想配置 zsh 提示时,只有非粗体变体有效。我想我使用错误的语法来指代粗体颜色。例子:

print -P 'X%F{green}ABC%fY'
Run Code Online (Sandbox Code Playgroud)

这会以“我的”绿色显示字母“ABC”,但是如果我执行以下任何操作

print -P 'X%F{bold green}ABC%fY'
print -P 'X%F{boldgreen}ABC%fY'
print -P 'X%F{bright green}ABC%fY'
print -P 'X%F{brightgreen}ABC%fY'
Run Code Online (Sandbox Code Playgroud)

整个字符串以正常的前景色显示,这可能意味着无法识别颜色名称。

我也试过

print -P 'X%B%F{green}ABC%f%bY'
Run Code Online (Sandbox Code Playgroud)

但这不使用 BoldGreen 值,而是以 - eh - 更粗的字体显示 ABC。

有人可以向我解释,为什么会发生这种情况,并提出解决方法吗?

Mar*_*ert 1

您可以使用数字形式%F来访问 8 种标准颜色的明亮版本。此for循环将列出每个基色及其相应的明亮版本:

for c in {0..7}; do 
  b=$((c+8))
  print -P - "%F{$c}$c%f -> %F{$b}$b%f"
done
Run Code Online (Sandbox Code Playgroud)

因此,例如, while%F{2}会给你基色绿色,%F{10}会给你亮绿色。

更多信息请参见此处%F (%f)此处的fg=颜色