浏览代码

vi-mode: reset KEYMAP on accept-line (#7818)

Fixes #7797
Marc Cornellà 5 年之前
父节点
当前提交
5f7666e20b
共有 1 个文件被更改,包括 12 次插入1 次删除
  1. 12 1
      plugins/vi-mode/vi-mode.plugin.zsh

+ 12 - 1
plugins/vi-mode/vi-mode.plugin.zsh

@@ -8,13 +8,24 @@ function zle-keymap-select() {
 }
 
 zle -N zle-keymap-select
-zle -N edit-command-line
+
+function vi-accept-line() {
+  VI_KEYMAP=main
+  zle accept-line
+}
+
+zle -N vi-accept-line
 
 
 bindkey -v
 
+# use custom accept-line widget to update $VI_KEYMAP
+bindkey -M vicmd '^J' vi-accept-line
+bindkey -M vicmd '^M' vi-accept-line
+
 # allow v to edit the command line (standard behaviour)
 autoload -Uz edit-command-line
+zle -N edit-command-line
 bindkey -M vicmd 'v' edit-command-line
 
 # allow ctrl-p, ctrl-n for navigate history (standard behaviour)