public
Last active

In vimpule mode, allow "jk" sequence to switch back to viper mode... there may be an fn that already implements this... but this works:

  • Download Gist
escape-if-next-char-is-k.el
Emacs Lisp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
(defun viper-escape-if-next-char (c)
"Watches the next letter. If c, then switch to viper mode, otherwise insert a j and forward unpressed key to unread-command-events"
(self-insert-command 1)
(let ((next-key (read-event)))
(if (= c next-key)
(progn
(delete-backward-char 1)
(viper-mode))
(setq unread-command-events (list next-key)))))
 
(defun viper-escape-if-next-char-is-k (arg)
(interactive "p")
(if (= arg 1)
(viper-escape-if-next-char ?k)
(self-insert-command arg)))
 
(define-key viper-insert-basic-map (kbd "j") 'viper-escape-if-next-char-is-k)

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.