有条件地为 ZSH 提示着色

Conditionally Color ZSH Prompt

我正在尝试根据上一个命令的 return 代码为我的提示着色。我有以下内容:

PROMPT='%{$fg_bold[cyan]%}%~$(git_prompt_info) %($?.%{fg_bold[cyan]%}.%{$fg_bold[red]%})»%{$reset_color%} '

具体来说,我在 %($?.%{fg_bold[cyan]%}.%{$fg_bold[red]%}) 部分遇到了问题。

不幸的是,我的提示最终看起来像这样:

我做错了什么?

编辑:

修正我的错字后,我现在有:

PROMPT='%{$fg_bold[cyan]%}%~$(git_prompt_info) %($?.%{$fg_bold[cyan]%}.%{$fg_bold[red]%})»%{$reset_color%} '

我的提示现在是这样的:

您忘记了参数扩展的 $,并且您 没有 ? 前面加上美元;它是条件标志,而不是参数引用。

%(?.%{$fg_bold[cyan]%}.%{$fg_bold[red]%})
  ^   ^

另一种方法是将 return 代码(当不同于 0 时)发送到 kill -l,以便您可以显示错误代码的名称。

这是我用的(右边的提示)

setopt PROMPT_SUBST
RPS1='%(?..%{$fg_bold[red]%}[%? $(kill -l $?)]%{${reset_color}%} )%T' # time