emacs-evil/evil

The extensible vi layer for Emacs.

Emacs Lisp

3,860

1,947 commits

updated Jul 28, 2026

See the code

README

An extensible vi layer for Emacs

Build status MELPA MELPA Stable NonGNU ELPA Documentation Status License: GPL v3

Evil is an extensible vi layer for Emacs. It emulates the main features of Vim, and provides facilities for writing custom extensions. Also see our page on EmacsWiki.

Installation

See the official documentation for installation instructions. We recommend using package.el.

As a quickstart, you can add the following code to your Emacs init file.

;; Set up package.el to work with MELPA
(require 'package)
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(package-initialize)
(package-refresh-contents)

;; Download Evil
(unless (package-installed-p 'evil)
  (package-install 'evil))

;; Enable Evil
(require 'evil)
(evil-mode 1)

Dependencies

  • Evil requires Emacs 24.1 or later.

  • Evil requires any of the following for C-r:

    • undo-redo from Emacs 28
    • The undo-tree package (available via GNU ELPA)
    • The undo-fu package (available via MELPA and NonGNU ELPA)
  • For the motions g; g, and for the last-change-register ., Evil requires the goto-chg.el package (available via MELPA and NonGNU ELPA), which provides the functions goto-last-change and goto-last-change-reverse.

  • For Emacs 24.1 and 24.2 Evil also requires cl-lib.

Documentation

The latest version of the documentation is readable online here. It is also available as PDF and as EPUB.

Mailing list

Evil is discussed at the gmane.emacs.vim-emulation mailing list.

IRC

Visit us on irc.libera.chat #evil-mode.

Contribution

See CONTRIBUTING.md for guidelines for issues and pull requests.

editing
editor
emacs
evil
vim

emacs-evil/evil

The extensible vi layer for Emacs.

Emacs Lisp

3,860

1,947 commits

updated Jul 28, 2026

See the code

README

An extensible vi layer for Emacs

Build status MELPA MELPA Stable NonGNU ELPA Documentation Status License: GPL v3

Evil is an extensible vi layer for Emacs. It emulates the main features of Vim, and provides facilities for writing custom extensions. Also see our page on EmacsWiki.

Installation

See the official documentation for installation instructions. We recommend using package.el.

As a quickstart, you can add the following code to your Emacs init file.

;; Set up package.el to work with MELPA
(require 'package)
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(package-initialize)
(package-refresh-contents)

;; Download Evil
(unless (package-installed-p 'evil)
  (package-install 'evil))

;; Enable Evil
(require 'evil)
(evil-mode 1)

Dependencies

  • Evil requires Emacs 24.1 or later.

  • Evil requires any of the following for C-r:

    • undo-redo from Emacs 28
    • The undo-tree package (available via GNU ELPA)
    • The undo-fu package (available via MELPA and NonGNU ELPA)
  • For the motions g; g, and for the last-change-register ., Evil requires the goto-chg.el package (available via MELPA and NonGNU ELPA), which provides the functions goto-last-change and goto-last-change-reverse.

  • For Emacs 24.1 and 24.2 Evil also requires cl-lib.

Documentation

The latest version of the documentation is readable online here. It is also available as PDF and as EPUB.

Mailing list

Evil is discussed at the gmane.emacs.vim-emulation mailing list.

IRC

Visit us on irc.libera.chat #evil-mode.

Contribution

See CONTRIBUTING.md for guidelines for issues and pull requests.

editing
editor
emacs
evil
vim

Project health

Overall

3.4/10

Maintained

1/10

Code review

5/10
OpenSSF Scorecard

Significant stargazers

(top 24 of 76)

Shohei YOSHIDA

796 followers · starred Nov 2024

Glenn Slotte

239 followers · starred Feb 2022

Alvaro Bartolome

918 followers · starred Aug 2024

Fanyi Pu

166 followers · starred Apr 2026