# emacs-evil/evil

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/emacs-evil-evil).**

3,792 stars · 304 forks · Emacs Lisp · GPL-3.0

## Links

- GitHub: https://github.com/emacs-evil/evil
- awesome-repositories: https://awesome-repositories.com/repository/emacs-evil-evil.md

## Topics

`editing` `editor` `emacs` `evil` `vim`

## Description

Evil is a modal editing framework and state-machine layer for the Emacs text editor. It functions as a modal text editing layer that separates text entry from navigation and manipulation by routing intercepted keystrokes through a central command dispatching system.

The project serves as a Vim keybinding emulator, mapping standard modal editing commands and keyboard shortcuts into the Emacs environment. It utilizes an operator-motion command engine to compose atomic movement and action inputs into complex grammatical editing operations.

The framework covers keyboard-driven navigation and text editor customization. It includes a system for modal keybinding configuration and a custom extension framework for defining unique logic and commands.

## Tags

### Development Tools & Productivity

- [Vim Keybinding Emulations](https://awesome-repositories.com/f/development-tools-productivity/command-line-configurations/vim-style-interface-emulations/vim-keybinding-emulations.md) — Implements a comprehensive mapping of Vim modal commands and shortcuts within the Emacs environment. ([source](https://github.com/emacs-evil/evil#readme))
- [Vim Emulation Layers](https://awesome-repositories.com/f/development-tools-productivity/vim-emulation-layers.md) — Implements a complete modal interaction system that mimics Vim's motions and operators within Emacs.
- [Grammatical Command Composition](https://awesome-repositories.com/f/development-tools-productivity/command-composition-tools/grammatical-command-composition.md) — Constructs complex editing operations by buffering atomic movement and action inputs.
- [Grammatical Command Engines](https://awesome-repositories.com/f/development-tools-productivity/command-line-argument-handlers/command-construction-logic/composable-editing-commands/grammatical-command-engines.md) — Composes atomic movement and action inputs into complex grammatical editing operations.
- [Editor Input Interception](https://awesome-repositories.com/f/development-tools-productivity/command-line-interface-plugins/event-triggered-shell-commands/command-interception-listeners/editor-input-interception.md) — Hooks into the Emacs event cycle to intercept raw input for transformation into modal commands.
- [Layered Keymaps](https://awesome-repositories.com/f/development-tools-productivity/custom-key-mappings/modal-keymap-states/state-toggle-mappings/layered-keymaps.md) — Provides layered keymaps that override default editor behaviors based on the active modal state.
- [Modal Editing Frameworks](https://awesome-repositories.com/f/development-tools-productivity/emacs-extensions/modal-editing-frameworks.md) — Provides a state-machine layer for Emacs that enables Vim-style navigation and editing workflows.
- [Modal Editing Layers](https://awesome-repositories.com/f/development-tools-productivity/keybinding-configurations/keybinding-presets/modal-editing-layers.md) — Functions as a configuration layer that transforms the editor into a state-machine-driven modal environment.
- [Modal Keybinding Engines](https://awesome-repositories.com/f/development-tools-productivity/keybinding-configurations/mode-specific-keybindings/modal-keybinding-engines.md) — Employs a state-machine engine to map key sequences to configurable action handlers across different modes. ([source](https://github.com/emacs-evil/evil#readme))
- [Keyboard-Driven Code Navigation](https://awesome-repositories.com/f/development-tools-productivity/keyboard-driven-code-navigation.md) — Enables high-speed cursor movement and complex edits using text objects and character sequences.
- [Modal Editing Systems](https://awesome-repositories.com/f/development-tools-productivity/modal-editing-systems.md) — Implements an input scheme that separates navigation and manipulation from text entry via distinct modes. ([source](https://github.com/emacs-evil/evil#readme))
- [Operator Motion Repetition](https://awesome-repositories.com/f/development-tools-productivity/operator-motion-repetition.md) — Combines text operators with navigation jumps to execute complex modal editing sequences.
- [Buffer-Local Settings](https://awesome-repositories.com/f/development-tools-productivity/buffer-local-settings.md) — Implements a mechanism for storing modal state and configurations that apply specifically to the current active editor buffer.
- [General Editor Behavior Customizations](https://awesome-repositories.com/f/development-tools-productivity/editor-extensions/editor-behavior-customizations/explorer-behavior-customizations/general-editor-behavior-customizations.md) — Provides APIs for modifying the runtime behavior and functional key mappings of the editor.

### Operating Systems & Systems Programming

- [Modal Editing Modes](https://awesome-repositories.com/f/operating-systems-systems-programming/keyboard-input-modes/modal-editing-modes.md) — Implements high-level modal editing behaviors that change how keys trigger commands.
- [Vi Modal Editing](https://awesome-repositories.com/f/operating-systems-systems-programming/keyboard-input-modes/vi-modal-editing.md) — Implements the modal paradigm of separating text entry from navigation and manipulation.

### Software Engineering & Architecture

- [Message Loop Hooks](https://awesome-repositories.com/f/software-engineering-architecture/event-interception/message-loop-hooks.md) — Injects callback functions into the editor's message loop to capture and transform input sequences.
- [Input Mode State Machines](https://awesome-repositories.com/f/software-engineering-architecture/state-machine-logic/lightweight-state-machines/error-state-machines/input-mode-state-machines.md) — Uses a deterministic state machine to manage transitions between different input modes via keystrokes.
- [Extensibility Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/extensibility-frameworks.md) — Provides an architectural framework for users to define custom logic and extend the modal editing layer. ([source](https://github.com/emacs-evil/evil#readme))

### Part of an Awesome List

- [Text Object Parsing](https://awesome-repositories.com/f/awesome-lists/devtools/regex-and-pattern-matching/regex-pattern-matching/text-object-parsing.md) — Identifies structural units like words and paragraphs using regex for targeted text manipulation.
