Bash zsh vi模式状态行
在zsh或bash中有没有一种方法可以设置状态行?e、 g.在VI中,它会让您知道您处于插入模式,并且 --插入--Bash zsh vi模式状态行,bash,vi,zsh,Bash,Vi,Zsh,在zsh或bash中有没有一种方法可以设置状态行?e、 g.在VI中,它会让您知道您处于插入模式,并且 --插入-- 命令行是否有等价物?这已在和中得到回答。对于堆栈溢出的完整性: function zle-line-init zle-keymap-select { RPS1="${${KEYMAP/vicmd/-- NORMAL --}/(main|viins)/-- INSERT --}" RPS2=$RPS1 zle reset-prompt } zle -N zl
命令行是否有等价物?这已在和中得到回答。对于堆栈溢出的完整性:
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
如果您希望指示器位于当前行下方而不是右侧,请从:
确切地说,我可以理解您的担忧,如果您不介意使用插件,我认为下面的插件可以帮助您完美地显示vi模式状态,以及在vi模式上获得更好体验的额外好处等等 zsh vi模式:更好、更友好的zsh vi(vim)模式插件。
该插件提供了一个
ZVM_MODE
变量,用于检索当前vi模式并更好地显示指示器
目前支持以下模式:
ZVM_MODE_NORMAL
ZVM_MODE_INSERT
ZVM_MODE_VISUAL
ZVM_MODE_VISUAL_LINE
为了更新vi模式指示器,我们应该在选择vi模式命令后将命令添加到zvm\u。例如:
安装此插件后
# 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
}
以下是一个例子:
hmmmm。。。现在,我想使处于--INSERT--状态的ctrl+c不会退出命令,而是退出到正常模式,最后在正常模式下ctrl-c退出命令。您可以在INSERT和正常模式下为ctrl+c设置不同的绑定,只需将正确的选项传递到bindkey
.sweet即可。我迫不及待地想做这件事。我如何使用第二个(指示灯在下面)和我已经有的提示?我将把现有的$PROMPT变量放在哪里?我试过了,但切换模式时,标签在插入和正常之间不会更新。@user779159将您的东西放入PS1
。您需要使用PROMPT
或PS1
,它们是别名。
# 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
}