有条件的颜色ZSH提示

时间:2015-09-02 17:01:01

标签: zsh prompt zshrc

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

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

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

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

enter image description here

我做错了什么?

修改

在解决我的错字之后我现在有:

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

我的提示现在看起来像这样:

enter image description here

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

这是我使用的(对于右侧的提示)

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