Why I use Emacs


These days at the lab, I have been having friendly arguments with a colleague about the merits of Emacs vs Vim. A long time ago (2001-2006) I was a power Vim user, I could move to any place in a file without thinking about it, I left ":wq" in all the files that I edited with other editors and my .vimrc was easily the most complex configuration file I had on my system. I won't get into the details of why I switched (long story short: the languages I was interested in back then, Common Lisp and OCaml, had way better Emacs modes than Vim did), instead I'll explain some of the reasons why I have been using Emacs for the past 8 years and why I see myself sticking with it for many years to come.

Emacs: The Editor

There is a joke that goes "Emacs is a great operating system: it just lacks a good text editor." It's usually uttered by Vim users who have the only editor that I consider is superior at manipulating text than Emacs, and by people using other editors (e.g. Atom, Sublime Text) who parrot the Vim users.

The truth is that Emacs is a great text editor if you learn to use it properly. Beyond the basic movement commands of moving one character/word/sentence/paragraph at a time, Emacs has many commands that make manipulating text great:

Emacs: The Operating System

Going back to the joke "Emacs is a great operating system: it just lacks a good editor", it turns out that the part about Emacs being a great operating system is also true!

Emacs: The Development Environment

I am a programmer, and Emacs features for development are what really drew me in. Emacs has support for practically all known programming languages, and very often its support is better than anything else you can find. One great advantage of this wide support is that you can use Emacs for all your programming needs, whatever the language may be, and benefit from the intimate knowledge you have of your editor. To me, it seems like a much better deal than knowing in less details one editor per language. It's also less annoying (and less memory hungry) if you happen to work in many different languages at once (e.g. Python, Django templates, HTML, CSS, JavaScript).

Emacs: The Lisp Machine

Emacs is really a Lisp machine: all modes are written in Lisp and you can configure the editor using Lisp commands. Being a Lisp Machine is also what allows all the cool modes mentioned above: when you need something, you can always use Emacs Lisp to code it. Although Emacs Lisp is not the greatest language in the world, it is still a powerful and sophisticated language that can be used to transform a problem you have into a solution that an entire community can use.

This unbounded extensibility is the reason why GNU Emacs is still used today, more than 30 years after its initial release. If a piece of software cannot keep up with the times, it will eventually be replaced by something better. By giving the users of Emacs the power to fit it to do anything they please, the authors of Emacs have ensured that the people most interested in keeping it up to date can do so.


Emacs may not be for everyone, I accept that, but I strongly suggest that you give it a try. Not so that you can adopt it, but so that when you go back to your preferred editor, you can bring something new and fresh to their development.

I'll probably still be using Emacs in 2024, and if I start having Emacs pinkie syndrome, I can always just enable evil-mode :)