定制zsh';显示上一个命令退出代码时的提示

定制zsh';显示上一个命令退出代码时的提示,zsh,exit-code,Zsh,Exit Code,Zsh能够使用%?转义序列在提示符中显示上一个命令的返回代码/退出代码 但是,我希望得到以下提示: user@host ~ [%?] % 当退出代码不同于0且: user@host ~ % 退出代码为0时 如果我单独使用%?,它将始终显示,即使%?为0。 此外,我需要方括号,但仅当退出代码不是0时 最简单的方法是什么?将其添加到PS1中要显示退出代码的位置: %(?..[%?] ) 这是一个条件表达式。如果第一个点之前的表达式为真,则输出两个点之间的部分(本例中为零)。如果第二个点后的部分

Zsh能够使用
%?
转义序列在提示符中显示上一个命令的返回代码/退出代码

但是,我希望得到以下提示:

user@host ~ [%?] %
当退出代码不同于0且:

user@host ~ %
退出代码为0时

如果我单独使用
%?
,它将始终显示,即使
%?
为0。 此外,我需要方括号,但仅当退出代码不是0时


最简单的方法是什么?

将其添加到
PS1
中要显示退出代码的位置:

%(?..[%?] )
这是一个条件表达式。如果第一个点之前的表达式为真,则输出两个点之间的部分(本例中为零)。如果第二个点后的部分为false,则输出该部分

例如:

PS1='%n%m %~ %(?..[%?] )%# '

或者,您可以:

setopt PRINT_EXIT_VALUE
始终打印显示先前返回值的换行符


我不喜欢将其用于普通用途,但它通常有助于调试shell脚本。

这是对我的提示的极好补充。我目前在robbyrussell主题中进行了自定义:提示符=“${ret_status}%{$fg[cyan]]]}%n@%m:%4~%{$reset_color%}$(git_提示符_info)”