Table of Contents
Customizable key sequence to escape from insert state and everything else in Emacs.
Version 3.0 is a rewrite of evil-escape
and removes the previous limitations:
- escape sequence can now be used in macros
- there is no limitation on the choice of key for the first key of the sequence.
Press quickly fd
(or the 2-keys sequence of your choice) to:
- escape from all stock evil states to normal state
- escape from evil-lisp-state to normal state
- escape from evil-iedit-state to normal state
- abort evil ex command
- quit minibuffer
- abort isearch
- quit ibuffer
- quit image buffer
- quit compilation buffers
- quit magit buffers
- quit help buffers
- quit apropos buffers
- quit ert buffers
- quit undo-tree buffer
- quit paradox
- quit gist-list menu
- quit helm-ag-edit
- hide neotree buffer
- hide treemacs buffer
- quit evil-multiedit
And more to come !
Contributions to support more buffers are very welcome: Escape Everything !
The package is available in MELPA.
If you have MELPA in package-archives
, use
M-x package-install RET evil-escape RET
If you don't, open evil-escape.el
in Emacs and call
package-install-from-buffer
.
To toggle the evil-escape
mode globally:
M-x evil-escape-mode
The key sequence can be customized with the variable evil-escape-key-sequence
.
For instance to change it for jk
:
(setq-default evil-escape-key-sequence "jk")
The delay between the two key presses can be customized with the variable
evil-escape-delay
. The default value is 0.1
. If your key sequence is
composed with the two same characters it is recommended to set the delay to
0.2
.
(setq-default evil-escape-delay 0.2)
The key sequence can be entered in any order by setting
the variable evil-escape-unordered-key-sequence
to non nil.
A major mode can be excluded by adding it to the list
evil-escape-excluded-major-modes
.
An inclusive list of major modes can defined with the variable
evil-escape-enable-only-for-major-modes
. When this list is non-nil
then evil-escape is enabled only for the major-modes in the list.
A list of zero arity functions can be defined with variable
evil-escape-inhibit-functions
, if any of these functions return
non nil then evil-escape is inhibited.
It is also possible to inhibit evil-escape in a let binding by
setting the evil-escape-inhibit
variable to non nil.
It is possible to bind evil-escape' function directly
, for
instance to execute evil-escape with C-c C-g:
(global-set-key (kbd "C-c C-g") 'evil-escape)