Learning a new Editor


I often fall back to my (now well-worn) copy of The Pragmatic Programmer to take a look at things I can do to hone my abilities as a programmer. Recently, the two rules that have most recently hit me as things I haven't put much focus on are Invest Regularly in Your Knowledge Portfolio, and There Are No Final Decisions. In a fit of Christmas downime enegry, I decided to incorporate these principles by taking myself out of my normal comfort zone, and cutting out one of my most widely used tools - vim.

I've been a vimmer for many years, and I've incorporated utilities passed down from greater minds than I (Tim Pope, the guys at Pivotal, etc.) and had become comfortable in how I used my text editor day-to-day. I had a nice workflow set up, utilizing multiple vim tabs and separate sessions within tmux windows, and life was pretty good.

Then, in December, the challenge was set: strip vim out of my workflow for good, and find something else.

Naturally, and guided by one of my coworkers, I managed to settle on what is generally considered to be the prime competitor to vim - Emacs.

Baby Steps

I've had forays into learning Emacs before, but I've always shied away, after playing with some basic tooling, and forgetting how to close it more often than I care to admit. This time was different, though; I had more years of experience under my belt, and it was more about getting myself into an uncomfortable place before I gain more knowledge.

My first thought was to find some type of starting guide. While the Emacs tutorial helped in terms of understanding navigation and simple editing, it didn't really show me the true power of the environment that I had gained. A cursory google search brought me to the Emacs Starter Kit. This toolkit provides some default setting to get you started with the environment; I used the documentation around it to gain knowledge of things like Melpa and Marmalade, which act as Emacs Package Managers of sorts.

Following my initial setup with the starter kit, I started delving into the emacs wiki. This became a much more handy resource to me, as it provided me with multiple provided solutions to given issues that I've encountered while converting my vim-based mind to a constantly-insert-enabled editor. When I'd run into an issue where I found something I'd like to do similar to vim, I'd head to the wiki to find what analogs are available. Once I'd find a package which did what I looked for, I'd test it out with an M-x pacakge-install, and incorporate it into my init.el when I felt I had it down.


I had been asked while converting why I decided not to use a vi-like editor package for Emacs (like Evil or Viper). I felt that, if I were to do this, it would be skimping out on what I should be learning, and I'd get less of an understanding of Emacs because I was sticking to my old method of doing things. Thus, I opted for Emacs's standard of editing, and no vi-emulation modes.


These are the things that I've discovered in the two months since I switched:

Things I wish I had from Vim:

Things I know I still have yet to learn:

We'll see what the next few months hold.

/Programming/ /Emacs/