For the past nine months that I have been learning to program, I have used Sublime Text for all of my coding needs. It is a great editor and extremely friendly to beginners. I have come to love it’s slick UI and ease of use.
As I have been exploring the internet for tools to get better at programming, I could not help but come across some very strong opinions. In particular, a developers choice of text editor can become subject of strong criticism. The two main contenders in the editor debate are Emacs and vim. Both claim to increase the speed at which you can get things done. Up until this week, I figured I would stay out of the conflict and stick to Sublime Text.
Earlier in the summer, one of my co-workers suggested that I tried Emacs. Since my familiarity with programming was slowly getting better, I thought I would give it a try. After my initial apprehension about leaving the safety of Sublime Text, I dove into learning emacs this week.
One of the philosophies of Emacs (and vim) is that you should never use the mouse. At first, this was intimidating, but I knew that using the mouse is very inefficient. The greatest hurdle to overcome is the fact that I can’t touch type. I have taken that on as a second goal with learning Emacs. Even though I can’t touch type, most of the key-bindings are easy to learn and really do speed things up. I can quickly search for a file without using a separate terminal window by using
C-x C-f or skip to the end of the paragraph that I’m currently writing with
M-e. Navigating through projects and code is definitely quicker, and I have only been at it for a week now.
Faster project navigation isn’t the only things it does better: it can run a terminal emulator in the same window. I don’t have to have a separate terminal window to switch back and forth from. This is probably my favorite feature, as it saves me a ton of time not have to switch programs to run shell commands.
Another great thing about emacs is its low barrier of entry for customization. If you learn some Emacs Lisp, you can write your own extensions. Although I’m not at that point yet, the language itself isn’t too hard to pick up. There are tons of packages and plugins you can add to extend Emacs by just putting the relevant package files in your
.emacs.d directory and adding a few lines to your
.emacs customization file.
So far, I love emacs despite it not being as pretty as Sublime Text. During my Emacs research over the past week, I came across a quote from Steve Yegge that solidified my commitment to learning emacs:
“All of the greatest engineers in the world use Emacs. The world-changer types. Not the great gal in the cube next to you. Not Fred, the amazing guy down the hall. I’m talking about the greatest software developers of our profession, the ones who changed the face of the industry. The James Goslings, the Donald Knuths, the Paul Grahams, the Jamie Zawinskis, the Eric Bensons. Real engineers use Emacs. You have to be way smart to use it well, and it makes you incredibly powerful if you can master it. Go look over Paul Nordstrom’s shoulder while he works sometime, if you don’t believe me. It’s a real eye-opener for someone who’s used Visual Blub .NET-like IDEs their whole career.
Emacs is the 100-year editor.”