About Articles Projects Links Apps Feed

Evil Collection

Evil Collection is a set of Evil bindings (a Vim emulation layer for Emacs) targeting all the modes (e.g. help-mode, M-x calendar, Eshell and many more) that are not covered by default.

The incomplete coverage of Evil was the main critique that discouraged many Vim fans from using Emacs. Hopefully this complaint now belongs to the past.

Installation and development

See https://github.com/emacs-evil/evil-collection.

Although more than 100 modes and counting are supported, our work is not over yet: some points in the rationale still need to be worked out, some modes are missing. Development has gained significant traction and will probably remain active for a while. More improvements are to be expected in the future.

Should you run into any issue or miss a mode in particular, check the issue tracker and let us know. All contributions are welcome!

Motivation

The Evil mode is widely considered the best Vim emulation layer out there to the extent that “Evil is Emacs true editor” has become a recurring joke.

And yet, despite its tremendous success, many Vim users and other modal-editing enthusiasts refrain from switching to Emacs/Evil for the sake of one major hindrance: that Evil bindings are not ubiquitous within Emacs and that too many special modes require a “binding context switch” that can be disconcerting, if not a frustrating cognitive burden.

The solution is obvious: write bindings for all the modes that require it. That is, all the Emacs vanilla modes, but also all the third-party, community supported packages.

Facing the Herculean proportions of this task, no wonder that we haven’t seen it happening in years. And yet this is too bad.

For too many of us, Evil users, the “binding context switch” is a daily pain in the hands. If you’ve felt among the brave ones, maybe you’ve rolled up your sleeves and derived some approximate, mildly inconsistent bindings of your own. For countless hours of frustration.

Writings bindings, at least consistent ones, is hard.

Last but not least, this might be the last milestone before many Vim wannabe-converts actually make the final move to join the ranks of the Emacs community :)

Enter Evil Collection:

  • Defined guidelines to enforce bindings as consistent as possible across a wide variety of modes.
  • Bindings for the “rest of vanilla Emacs” that is not covered yet. Since Emacs, despite its huge size, features a limited number (understand “finite”) of special modes and that most of those are rather simple (think `package-menu`), this is very feasible. This would also be a good starting point as a reference for the guidelines.
  • Binding sets for all the popular third-party packages out there. (I know, that’s crazy.)

Note that Evil Collection does not step on the territory that is already covered by other independent packages, namely:

You’ll have to install those separately for a complete Evil experience.

Two previously separate packages have been integrated in Evil Collection:

History

The above article is mostly taken from the following conversations:

I started working independently on this initiative around the time I first posted the aforementioned articles. A commenter pointed out that another fellow developer, James N (whom I didn’t know at the time) had been working on a similar binding set. After a brief discussion, we decided to join forces into what was going to become Evil Collection.

Hadn’t we had the luck to get to meet, it’s most certain that the project would not have grown so fast while maintaining such a high quality standard.

This story is, I believe, a great show off of the productive and efficient dynamics inherent to free software development.

Comments

Date: 2018-08-20

Made with Emacs 27.0.50 (Org mode 9.1.9)

Creative Commons License