ZSH:提示扩展return代码大于

ZSH: prompt expansion return code greater than

这个问题(理论上)很简单。我想要的只是让我的 zsh 提示打印 return 代码(如果它小于或等于 128)以及相应的信号(当它大于 128 时)。我找不到任何这样做的例子和 zsh docs 只指定怎么做

if the exit status of the last command was n

我唯一(有点)工作的版本如下(仅适用于 SIGINT):

PROMPT='%130(?.[$(kill -l $?)].$?)> '

我也尝试过使用 precmd 但完全失败了(当 zsh 执行函数时 return 代码似乎受到干扰但不要引用我的话)。

解决方案确实很简单,只需要创建一个不同的函数(我将 return 代码传递给它)而不是使用 precmd。下面是我的 zsh 提示符的最终版本,包括 return 代码/信号行为:

code () {
  if ((  > 128 )); then
    echo "SIG$(kill -l )"
  else
    echo 
  fi
}
setopt promptsubst
PROMPT='%F{green}%n%f@%m %F{cyan}%~%f> '
RPROMPT='%(?..%F{red}[$(code $?)]%f'