Browse Source

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

Fixes #7797
Marc Cornellà 6 years ago
parent
commit
5f7666e20b
1 changed files with 12 additions and 1 deletions
  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)