Emacs is a classic piece of software that has stood the test of time. It has been around for decades and will probably be around for decades to come, so though it has a bit of a learning curve, it’s well worth the effort to learn.
Although my original motivation for learning Emacs was in pursuit of the ultimate clojure IDE experience, I’ve quickly realized it is extremely valuable as a general-purpose editor. My background has always been as an IDE guy (eclipse, IntelliJ IDEA, etc.), aside from knowing just enough vi to get around on the command-line.
Here’s some of the reasons I chose to invest in learning Emacs whole hog:
An IDE-like editor for other programming languages
I’ve started to branch out into some newer programming languages in recent years, and I expect to continue doing so. I need a powerful editor for other programming languages without full-blown IDE support, which I generally will still prefer when available. For example, I would never consider using Emacs for java, where you clearly want first-class IDE support. I would use IntelliJ IDEA hands down.
In terms of a clojure IDE, while I like Cursive, I find I just can’t get a good dev flow going in it. My hope is that Emacs can provide me that powerful and truly “dailed in” experience when writing clojure programs.
You can do ALMOST anything without ever needing to leave Emacs
Google something. Work with version control. Open a shell. Open scratch notes. It’s all right there. And even if you have a more exotic use case, there’s a good chance someone has created an Emacs mode for it!
It’s OSS and free
It’s almost 100% programmable
If I ever want to customize or add some specific behaviour, I CAN. This is usually almost impossible in other editors, or involves writing elaborate plugins. In Emacs, you can frequently write just a single function and then trivially bind it to a key combination or your choice if you want, or just access it by name using the extended command system.
I can create my custom configuration and pull it down to a vanilla Emacs installation on a new laptop and be up in minutes with everything at my fingertips. Granted, IDE’s let you save settings too, but I find when moving machines there’s always some things that don’t carry over.
You can use it on the command-line
This means you have it available to you when in a terminal. This is huge. You can only really do this with a text-based editor like Emacs or vim. In addition, Emacs has a super powerful remote editing capability with TRAMP mode, so you can edit remote files using your local Emacs installation with all your customizations intact.
Economy of Motion
You can do anything in Emacs with just the keyboard. This can really give you flow while working – or so I hear. Being new to it, I’m still incredibly slow. But in time, as the muscle memory develops, I can see it becoming much more efficient than using the mouse where I do now.
Emacs is getting easier to use all the time
With newer versions of Emacs, usability continues to improve. For example, there is now a decent package management story. Many modules keep ease of use in mind and try to minimize required configuration. There’s lots of great starter kits, and reference configurations from prominent users in the community. Overall, Emacs is requiring less need for fiddling unless you want to (which, OK, you will :P).
The Emacs community is VERY active!
Just a cursory browse of some popular packages shows tonnes of recent activity. The editor seems to be enjoying a massive renaissance in the last few years in the age of github; it continues to get better and better, and may be one of the first places to get editor support for a new or emerging programming language or really anything (file formats, templates, etc).
My newbie setup
So far I’m sticking with the GNU 24 distro with the excellent prelude starter kit. This gives me a pretty nice out-of-the-box setup without much need for customization. Of course I did fork it and have started to make a few of my own customizations.
Besides the built-in help and main Emacs wiki, here are a few other useful resources:
In the future, I’ll be writing a blog series on learning Emacs as an IDE coming from a background using IntelliJ IDEA. Amongst commercial IDE’s, IMO IDEA is the best out there. It packs a ton of awesome features and really tries to give you as much as you need so that you almost never have to leave the IDE. Emacs is like this too, but to an insanely higher degree.
In the meantime, I put together a small site to catalog the key combinations I find essential here.