Ashish Panigrahi
आशिष पाणिग्राही

Switching to GNU Emacs

14-04-2024

Over the past five years, I've been using Vim (well NeoVim specifically) for all of my text editing needs ranging from tinkering with config files, shell scripts, to writing this website, making LaTeX reports and theses, etc. The paradigm of modal text editing that is Vim, just feels right. The user communicates exactly how text needs to be edited. For instance: delete all characters until a specific character appears? Done. Only delete lines in the file that cover certain patterns? Built-in regex has you covered! The point is, once you understand how modal editing works, any other form of text editing feels like it's from the stone ages.

Now you might ask, why am I switching to GNU Emacs, the opposing contender to Vim in the well known editor war? Well, the more "silly" reason is that it gives me an opportunity to learn a new piece of software, understand it's inner workings, etc. The more pragmatic reason is that, like any rivalry, both sides have their pros and cons. GNU Emacs presents itself as a truly hackable editor in any way the user desires. This is thanks to the editor being written and configured in Emacs lisp, a dialect of the Lisp family of languages. Vim on the other hand is written mostly in C but is configured in an obscure language that is Vimscript. The advantage with the Emacs lisp is that one can write not only specific functions to help in any form of text editing and beyond (one of the charms of Emacs) but also supplements more experienced users in contributing to the core development of Emacs. This appeals to me from a FOSS perspective as I truly believe that free software development being run by volunteers should be tightly knit with its user community. This helps not only in raising issues with the software better but also helps in the users contributing to the development.

This truly hackable experience, presented by Emacs also benefits in the form of tasks that are not necessarily based around text-editing. Thanks to the wonderful community, Emacs boasts a wide-range of well-written packages such as org-mode (Task management system with a markup style of its own) and Magit (A Git porcelain inside Emacs). One of the primary reasons I've decided to switch is due to org-mode (which I intend to cover in detail in subsequent blog entries).

Some people might argue that Emacs goes against the UNIX philosophy of minimalism and "doing one thing right". Technically Emacs is more of a Lisp environment than a text editor, or like the more famous vim adage: "Emacs is a great operating system, but it lacks a good text editor". I cannot really comment here because I'm still very new to Emacs but the quote does hold some truth. Emacs (atleast from my first impressions) has estoric keybindings which are completely foreign to new users let alone someone coming from a vim background. Ctrl and Alt (known as Meta in Emacs parlance) are the most common keys which form part of the key-chord style of using emacs. These keys obviously are placed at positions on a standard QWERTY keyboard layout that when used frequently leads to the more infamous Emacs pinky which is basically repetitive strain injury (RSI). For this reason, I will be using emacs with Evil which is the Vi-emulation package in emacs, atleast until I get the hang of working with Emacs before perhaps trying the stock keybindings (which apparently most of the emacs community adheres to).

Relevant xkcd

For the next couple weeks I will try to steadily convert to using Emacs and hopefully perform all of my computing needs with emacs in the not-so-long future. This blog post is mainly for me to make this commitment. As a first step, this blog entry is written entirely in Emacs.