我正在尝试制作一个 über-simple(单字符)提示,为我提供尽可能多的信息。这是我目前拥有的(拥有了很长时间,不记得我在哪里找到了原版):
# RPS1="['%1v', '%2v', '%3v', '%4v', '%5v', '%6v', '%7v', '%8v', '%9v']" # debug
PS1=" %(?|%2F|%1F)%1(V|%1v|%(#|#|:))%(?|%2f|%1f) "
function zle-line-init {
zle -K vicmd
}
zle -N zle-line-init
function zle-keymap-select {
psvar[1]="${${KEYMAP/(main|viins)/>}/vicmd/}"
zle reset-prompt
psvar[1]=""
}
zle -N zle-keymap-select
这相当简单;它在渲染时将提示初始化为命令模式,并:
在 vi 的“命令”模式下显示提示,在 vi 的“插入”模式下显示>
提示(通过更改)。psvar[1]
此外,如果您以 root 身份操作,:
则替换为 ,并且字符的颜色显示最后一个命令的退出状态。#
我的问题:
当键盘映射发生变化时(即,当我切换“命令”和“插入”模式时,例如,a
然后使用转义键,$?
退出状态被成功0
状态覆盖,从而导致提示显示绿色而不是红色(即使上一个命令失败)。如何保存或设置提示,以便%(?|…|…)
部分$PS1
正确显示发送到 shell 的最后一个命令的退出状态?