【发布时间】:2011-04-07 01:56:57
【问题描述】:
在 zsh 或 bash 中有没有办法设置状态行?例如在VI中它会让你知道你处于插入模式 -- 插入 --
命令行是否有等价物?
【问题讨论】:
在 zsh 或 bash 中有没有办法设置状态行?例如在VI中它会让你知道你处于插入模式 -- 插入 --
命令行是否有等价物?
【问题讨论】:
Super User 和 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
如果您希望指示器位于当前行下方而不是右侧,则来自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]; }
【讨论】:
bindkey即可。
PS1。您需要使用PROMPT 或PS1,它们是别名。
没错,我能理解你的顾虑,如果你不介意使用插件,我认为下面的一个可以帮助你完美地展示vi模式状态,还有更好的vi模式体验的额外奖励和以此类推。
zsh-vi-mode:一个更好更友好的 ZSH 的 vi(vim) 模式插件。
https://github.com/jeffreytse/zsh-vi-mode
这个插件提供了一个ZVM_MODE 变量供您检索当前的vi 模式并更好地显示指标。
目前支持以下模式:
ZVM_MODE_NORMAL
ZVM_MODE_INSERT
ZVM_MODE_VISUAL
ZVM_MODE_VISUAL_LINE
为了更新 vi 模式指示器,我们应该将我们的命令添加到 zvm_after_select_vi_mode_commands。例如:
安装此插件后
# The plugin will auto execute this `zvm_after_select_vi_mode` function
function zvm_after_select_vi_mode() {
case $ZVM_MODE in
$ZVM_MODE_NORMAL)
# Something you want to do...
;;
$ZVM_MODE_INSERT)
# Something you want to do...
;;
$ZVM_MODE_VISUAL)
# Something you want to do...
;;
$ZVM_MODE_VISUAL_LINE)
# Something you want to do...
;;
esac
}
这是一个例子:
【讨论】: