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 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 in 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 esoteric 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).
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.