Holy_Wars
Since time immemorial, folks have been arguing about tools. Every community has these differences. For example, woodworkers argue about the merits of power-tools vs. hand-tools, gun nuts argue about the merits of the newfangled M4 vs. the venerable and reliable AK-47, and automotive enthusiasts argue about the merits of dual-clutch vs. manual transmissions.
Techies on the other hand, argue about writing tools, which boils down to a simple question.
The choice is simple: Vim, or Emacs?
For as long as I/m can remember my dad has been a die-hard Emacs user, and myself a die-hard Vim user. My dad of course, cares much more about getting work done than arguing over the merits of a particular tool, whereas I waste time arguing about it rather than getting work done.
Here’s the thing though, I really shouldn’t be talking trash unless I actually understand why someone would like Emacs. I can make a great case for Vim. It’s simple, it’s ubiquitous, both as an application and as a framework, and it’s damn fast. Vim gets shit done quickly, and remains utterly uncompromising.
This appeals to me greatly, but that doesn’t give me the excuse to talk trash about the other major choice, nor critically, to make fun of my dad for using his preferred editor. This is obnoxious behavior that I want to curb. So, for starters, I want to try his editor in the best way possible, using the best starter configs.
Basically, I want to see exactly what the fuss is about, and maybe understand my dad a little better in the process.
Starting_Out
Before starting out, I naively assumed that Emacs would be uncomplicated, it isn’t. After multiple installation attempts that eventually culminated in circumstances forcing me to compile Emacs from source, I eventually settled on using Doom Emacs as a framework.
I did so because the main point here was for me to see my dad’s preferred editor in the best possible light, so I could evaluate it with a charitable mindset. This wasn’t merely an attempt to understand my dad, but also to begin to apologize for how I’ve treated him. He deserves better, so I’ll understand him, one way or the other.
After managing to open the source code for this post, I realized something important. With this setup, Emacs looks clean, modern, and runs damn fast. I never imagined that Emacs was even capable of any of that. “It looks this good and works this well out of the box?!” I screamed far too loudly for the hour I was working at, stupidly assuming this was its only party trick.
The_Real_Party_Trick
One of the features that became clear to me after 30 minutes of usage was how familiar Emacs seemed, which baffled me. After all, wasn’t Emacs supposed to have strange keybinds? I didn’t notice anything different from my usual experience with Vim.
Then it hit me.
This was Vim, running in Emacs.
It was at this point that I began to grok exactly what Emacs actually is.
Emacs is a terrible text editor on its own, but add Vim keybinds, and suddenly you’ve got not just a text editor, not just an IDE, but a full-blown operating system, that can use Vim keybinds through an installable package (evil).
I’ve been searching for the perfect solution to Vim-ify everything I use, so that I can use the same keybinds everywhere. Not only did I find that in Emacs, I found a file browser, a terminal emulator, a web browser, a git GUI, and much more.
I went in expecting to find a poor replacement for Vim. Instead, in Emacs, I found a fantastic replacement for VSCode.
The real party trick, is that Emacs can do it all.
Forget X, Emacs is the real Everything App (TM).
Beginning_To_Understand
I quickly realized from this exercise, that I hadn’t found a replacement for Vim, so much as I’d found a replacement for VSCode. After playing around with Emacs for only an hour in its best possible form, VSCode felt positively old-fashioned and clunky.
Emacs does everything that VSCode does, but better, and in the terminal (or GUI), and it’s free and open-source.
Folks, I think I might be falling in love.
The_Real_Point
It was at this point, that I was beginning to understand why my dad loved using this system so much to do his work.
Moreover, I began to feel a creeping sense of remorse well up within me.
Had I been obnoxious in perpetuating the Vim vs. Emacs holy war? (Yes.)
Was this behavior incredibly rude to my dad, who merely chose a tool that worked perfectly for him? (Yes again.)
Was this a point where I could experience some kind of growth? (Obviously yes.)
At the very least, I gained a much greater appreciation for my dad’s computing experience, even though it isn’t his main field. He has an understanding of computers that can only come from being forced to use punch-cards to run code, to log in to a mainframe through a terminal, or to use computers in an era before GUIs were mainstream.
That experience is incredibly valuable, and this exercise allowed me to gain a greater appreciation for that.
As far as I’m concerned, learning more about your parents as people and coming to appreciate them from that perspective, can only be a good thing, and I’m glad to be able to know my dad better.
Aftermath
All of the work on setting up and learning Emacs ended up meaning quite a lot to me. Rather humorously though, I talked to my dad about it after setting everything up and apologized to him for being such an ass about tool choice and the like, and he just laughed.
Evidently, it didn’t bother him anywhere near as much as it did me.
Which makes my personal attachment to this project pretty damn funny in hindsight.
Well, at least I found a new editor (and a new appreciation for my dad as a human being, which is even better).
May God bless each and every one of you.
♾️ 🏳️🌈 🏳️⚧️
-Sheena
Updates & Errata
UPDATE 08/01/2024: Header-Related table-of-contents bug fixed across all posts. ToC should render correctly now.