zsh 提示符中 %F{color} 和 %{$fg[color]%} 之间的区别

zsh 提示符中 %F{color} 和 %{$fg[color]%} 之间的区别

我注意到有两种方法可以在提示中设置前景色zsh

PROMPT='%F{blue}$'
PROMPT='%{$fg[blue]%}$'

这两行都会产生蓝色$作为提示。这两者之间有什么区别吗?是否有设置提示的首选方法?

如果您想指定颜色代码,您可以指定$F{160}或 其他数字,但不能指定%{$fg[160]%}。这是这两个选项之间的唯一区别吗?

答案1

直接%F{...}转义由zsh C代码直接处理。使用$fg[blue]是访问名为 的关联数组fg。为此,您需要调用colorszsh 附带的函数。对于也依赖于该PROMPT_SUBST选项的提示。

这两种方式产生的结果没有太大区别。前者更干净,并且与 zsh 对终端状态的跟踪配合得更好。它于 2008 年添加到 zsh 中,而颜色功能于 1999 年添加。如今,您不太可能继续使用太旧的 zsh 来缺乏任何一个功能,因此没有必要再坚持旧的方式了。

正如您所注意到的,%F可以处理您的终端支持 88 或 256 色的数字。如果您运行更新的 zsh,您还可以指定十六进制三元组,例如%F{#0000ff}您有真彩色终端(或加载 zsh/nearcolor 模块)。

相关内容