zsh vi模式状态行

ui_*_*jax 15 vi bash zsh

在zsh或bash中有没有办法拥有状态行?例如在VI中,它会让你知道你处于插入模式 - INSERT -

命令行是否有等价?

Gil*_*il' 20

超级用户Unix Stack Exchange已经回答了这个问题.为了Stack Overflow的完整性:

function zle-line-init zle-keymap-select {
    RPS1="${${KEYMAP/vicmd/-- NORMAL --}/(main|viins)/-- INSERT --}"
    RPS2=$RPS1
    zle reset-prompt
}
zle -N zle-line-init
zle -N zle-keymap-select
Run Code Online (Sandbox Code Playgroud)

如果你想要指向当前行以下的指标而不是右边的指标,来自Unix Stack Exchange:

terminfo_down_sc=$terminfo[cud1]$terminfo[cuu1]$terminfo[sc]$terminfo[cud1]
function zle-line-init zle-keymap-select {
    PS1_2="${${KEYMAP/vicmd/-- NORMAL --}/(main|viins)/-- INSERT --}"
    PS1="%{$terminfo_down_sc$PS1_2$terminfo[rc]%}%~ %# "
    zle reset-prompt
}
preexec () { print -rn -- $terminfo[el]; }
Run Code Online (Sandbox Code Playgroud)