Use Vim-style hjkl navigation and modal editing inside Emacs without switching to a different editor
Configure Vim text objects, macros, and registers to work seamlessly in your existing Emacs setup
Add custom Vim-like keyboard behaviors for Emacs packages you already use via Evil's extension system
Requires Emacs 24.1 or later, a few lines must be added to the Emacs startup configuration file.
Evil is a package for Emacs that brings Vim-style keyboard editing into the Emacs text editor. Emacs and Vim are two of the oldest and most established text editors used by programmers. They have very different philosophies: Vim is known for its modal editing approach, where the keyboard behaves differently depending on which mode you are in (navigating text vs. typing text vs. making selections), while Emacs has a different keyboard shortcut system with heavy use of modifier keys like Control and Alt. Evil (short for Extensible VI Layer) lets Emacs users adopt Vim's modal editing style without giving up the Emacs environment they already know. This matters because many people prefer Vim's navigation and editing commands for speed and efficiency, but also want access to Emacs features, packages, and customizations that are difficult or impossible to replicate in standard Vim. Evil bridges the two by running inside Emacs and intercepting keystrokes to behave the way Vim would. The package replicates the main Vim features: normal mode, insert mode, visual mode, the command-line, text objects, motions, operators, marks, registers, and macros. It also provides an extension system so developers can add custom Vim-style behaviors specific to their workflow or the Emacs packages they use. Installing Evil is done through Emacs's built-in package manager, with a few lines of configuration added to the Emacs startup file. It requires Emacs version 24.1 or later. Documentation is available online and as downloadable PDF and EPUB files. The project has a mailing list and an IRC channel for community discussion.
← emacs-evil on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.