syl20bnr/evil-escape
{ "createdAt": "2014-10-23T01:38:57Z", "defaultBranch": "master", "description": "Customizable key sequence to escape from insert state and everything else in Emacs.", "fullName": "syl20bnr/evil-escape", "homepage": null, "language": "Emacs Lisp", "name": "evil-escape", "pushedAt": "2024-01-17T05:01:17Z", "stargazersCount": 233, "topics": [], "updatedAt": "2025-11-16T06:59:39Z", "url": "https://github.com/syl20bnr/evil-escape"}evil-escape
Section titled “evil-escape”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
- quit evil-multiedit
And more to come !
Contributions to support more buffers are very welcome: Escape Everything !
Install
Section titled “Install”The package is available in [MELPA][].
If you have MELPA in package-archives, use
M-x package-install RET evil-escape RETIf 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-modeCustomization
Section titled “Customization”Key sequence
Section titled “Key sequence”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")Delay between keys
Section titled “Delay between keys”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)Unordered key sequence
Section titled “Unordered key sequence”The key sequence can be entered in any order by setting
the variable evil-escape-unordered-key-sequence to non nil.
Excluding a major mode
Section titled “Excluding a major mode”A major mode can be excluded by adding it to the list
evil-escape-excluded-major-modes.
Enable only for a list of major modes
Section titled “Enable only for a list of 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.
Inhibit evil-escape
Section titled “Inhibit evil-escape”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.
Assign a key binding directly
Section titled “Assign a key binding directly”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)[MELPA] !: http://melpa.org/