我用来在提示中precmd
生成彩色状态。git
我生成一个类似于 的刺痛%F{green}master%f%F{red}%f
,并将其分配给$psvar[1]
.
我的提示包括%1v
显示文本。
但是,我没有看到绿色和红色文本,而是看到分配的文字值。
有什么办法可以zsh
解析 的内容吗$psvar
?
答案1
提示扩展不是递归的。您的提示中有%1v
,因此 的内容$psvar[1]
将插入到您的提示中。
不要将提示扩展指令放入 中$psvar
,而是放入提示内容。插入终端转义序列以更改颜色。您可以使用colors
为了那个原因。
autoload -U colors
colors
… {
psvar[1]="$fg[green]$branch$fg[default]"
}
答案2
%-expandos 的结果不会重新扩展,因此插入的任何内容都会
%v
按字面意思出现在最终提示中。
所以看来唯一的办法就是使用set -o prompt_subst
.