Customizable key sequence to escape from insert state and everything else in Emacs.
Emacs Lisp
Latest commit b4d44fc Jan 15, 2017 @syl20bnr Bump version to 3.14
Failed to load latest commit information.
.gitignore Initial commit Oct 23, 2014
LICENSE Initial commit Oct 23, 2014 Add support for image-mode Jun 7, 2016
evil-escape.el Bump version to 3.14 Jan 15, 2017



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

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


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

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

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

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

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

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

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)