HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
emacs-evil
evil
Emacs Lisp2017–2026
emacs-evil / evil

evil

The extensible vi layer for Emacs.

39Distinct people
46Mentions
1Explicit recommenders
3.9KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

The extensible vi layer for Emacs.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

> What both Emacs and Vim have in common is an intimidating learning curve. You can't just dip your toe in. Another thing that Emacs and Vim have in common is Vim…

nequo used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 10:02:05 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year46 dated mentions

Observed mentions: 2017-04-15 22:23:13 UTC to 2026-07-30 17:45:40 UTC.

0369122017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 10 mentions; 0 submissions, 10 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 12 mentions; 1 submissions, 11 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC514
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC202
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC303
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC707
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC404
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC10010
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC12111
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC202
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC000
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
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.
Read the full README on GitHub

What Hacker News says

10 sources
I don't think there's anything like that for Emacs. At least, I've not heard of it. I mostly learned it through reading stuff like Mastering Emacs and watching YouTube videos, as well as testing out other peoples configs. UX wise, it's pretty different but I know a lot of people use Evil (https://github.com/emacs-evil/evil) or something similar to get a more vi like experience out of Emacs. If you're not vested in an Emacs workflow, or don't have one at all, I think it's worth checking out other peoples configs. The biggest benefit of Emacs is that you can do some much from one place. That's much less context switching that you have to do, and I can see why some people prefer it.
In An Interview with Mickey Petersen, Author of Mastering Emacs
I have an article I wrote about how I did this, but may have lost it to time. The short version is I have SLIME running inside Emacs, and my text files open in vim. I would just reload the changed file(s) when needed (originally with cl:load-file, then later with asdf, which is roughly "make" for lisp). I used slime similarly to how I would use gdb. It was a big improvement over using vim with the clisp[1] REPL both because SLIME was more powerful than the clisp repl, and because it worked with other implementations like CMU CL (which sbcl now is a fork of). I mostly just used the menus for interacting with emacs, but since the shortcuts are listed beside commands, I did learn the more commonly used ones. I continued like this for years until I discoveredevil-mode[2], which was the first thing close enough to vim to be usable for me (a
Read the rest
nd even then I had to add a few keybindings that it was missing). 1: clisp is a specific implementation of common lisp, not an abbreviation 2: https://github.com/emacs-evil/evil
In Common Lisp vs Racket
What parts did you find difficult? When I first started, I found the keybindings odd, but now I love them since the core set of shortcuts—C-a, C-e, C-f, etc.—work "everywhere" from the terminal, to GNU readline-based programs, to even native macOS text boxes. If you don't like the default keybindings, you can change them or use the Evil package [0] for Vim bindings. If you want to get up and running quickly, I'd check out Doom Emacs [1] which is easier to configure and takes care of a lot of configuration for you. I personally use a reasonably-minimal config I wrote myself [2]. If you like to tinker, I'd recommend writing your own config, as it will also teach you a lot about Emacs. If you have any questions feel free to reach out—contact info in my profile. [0] https://github.com/emacs-evil/evil [1] https://github.com/hlissner/doom-emacs
Read the rest
In What’s new in Emacs 28.1?

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.