explaingit

emacs-evil/evil

3,763Emacs LispAudience · developerComplexity · 2/5Setup · easy

TLDR

Evil is an Emacs package that brings Vim's modal keyboard editing style into Emacs, letting you use Vim navigation and commands while keeping all Emacs features and packages you already rely on.

Mindmap

mindmap
  root((evil))
    What it does
      Vim keys in Emacs
      Modal editing
      Intercepts keystrokes
    Vim features included
      Normal mode
      Visual mode
      Text objects
      Macros and registers
    Setup
      Emacs package manager
      Startup file config
      Emacs 24.1 or later
    Extensibility
      Custom behaviors
      Package integrations
      Extension system
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Use Vim-style hjkl navigation and modal editing inside Emacs without switching to a different editor

USE CASE 2

Configure Vim text objects, macros, and registers to work seamlessly in your existing Emacs setup

USE CASE 3

Add custom Vim-like keyboard behaviors for Emacs packages you already use via Evil's extension system

Tech stack

Emacs LispEmacs

Getting it running

Difficulty · easy Time to first run · 30min

Requires Emacs 24.1 or later, a few lines must be added to the Emacs startup configuration file.

No license information is mentioned in the repository's README.

In plain English

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.

Copy-paste prompts

Prompt 1
How do I install Evil in Emacs and enable it at startup with the minimal config in my init.el file?
Prompt 2
What Evil mode settings do I need to make Vim-style text objects like ci and da work correctly in Emacs?
Prompt 3
How do I extend Evil to add custom Vim-like keybindings for a specific Emacs package like Org Mode or Magit?
Prompt 4
Why is my Evil mode leader key not working in insert mode, and how do I fix the keybinding conflict?
Prompt 5
How do I configure Evil to use Vim macros and registers exactly the same way I would in real Vim?
Open on GitHub → Explain another repo

← emacs-evil on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.