As every software developer knows, the editor you use is personal – it’s not a just a tool, but an extension to you. After using it for hours on end day after day, a strange bond forms between an coder and their editor – one that has intense meaning and one that last for years and years.
Yes it’s as strange relationship that is personal for each coder, really on the edge of religious faith. And watch out if someone talks in disdain for someones editor of choice. Wars and Crusades have broken out for less. Heck, the battle between VI and Emacs still wages after all these decades. If you ever want to stir up a group of developers, start smack-talking their editor.
For me, I was lucky to follow the righteous path and discover Emacs many (25?) years ago while working on a VAX/VMS machine. Running off a mini-VAX and displaying on a green glowing terminal, I found it glorious. It wasn’t a pure GNU Emacs if I remember correctly, but it had all the hot-editing-porn-features I needed – multiple buffers, ability to enter commands and direct editing — no weird “gold key” needed as with EDT and other available editors at the time. Emacs was my baby.
And when I made the transition to Unix Emacs was there — full strength GNU Emacs. It was beautiful and just made life easier. And as I got my own X-Windows workstation, X-Emacs became the version of choice for me. Throughout my hard-core coding days, I wouldn’t go anywhere without Emacs – even when needs switched to Windows in the late 90’s, Emacs came along. It was my editor and nothing would ever change that … or so I thought.
CTO – Goodbye Coding
As my career took off, I found myself spending less and less time with my beloved Emacs. It was sad, but the needs of my new position required less text editing and more communication and idea exchange. It happened slowly, but email, presentations and note taking became more important than the ability to store multiple buffers of code snippets in several yank-buffers while refractor the display driver code to support the latest version of Linux.
And sure, I still visited my old love when doing fun side projects, but the intensity and passion were gone. By the later part of the 00’s, I was never using Emacs at all. It was over and any simple editing I needed I’d just start a quick Vi session. Yes it felt like cheating, but it was fast, quick and really no damage was done — although I did feel dirty.
Hello Old Friend
Recently I’ve had the free time to start coding again as part of some exciting future work. As I started this project up, the first thing I did was download and install the latest version of Emacs for the Mac – AquaEmacs. It’s Emacs as it’s heart, but has a soft and modern Mac wrapper.
It was like meeting an old friend after decades – we look a little different, but after a little time the same old banter and interactions start to show. Same with Emacs — the same key commands worked, the same buffer management and meta-key commands. And I still remembered most of the commands — as long as I didn’t think about them. It was fun, it was exciting …
I soon became frustrated with my old editor of choice. Emacs still had the same features, but they now seemed old and crufty. Hard to manage and tedious to use. meta-x what? What was that control command ? And the help, search and preferences systems felt 20 years old — because they were. My favorite editor from the 90s hadn’t aged well – now it looked weird, was a little wrinkled at its heart and you know, it kinda smelled funny. it was obvious, it was time to find a new editor.
Time for a New Editor
As noted earlier, an editor is a very personal choice and searching for a new one is a large undertaking. The decision you make will determine a tool you’ll use for years, so it’s something to not take lightly.
I had very few specific needs for my new editor: edit code, manage multiple buffers, modern interface and controls, and run on a Mac. The true match would determined through use and interaction.
Now to find the candidate editors. Luckily a vast amount of information was available on the web and after some research it became clear three candidates existed: BBEdit, TextMate and Sublime Text. Each offered a trail version, which I downloaded and committed to use daily.
I won’t dive into a detailed review of each, but here my high-level impressions of each:
While BBEdit is a very popular editor, in day-to-day use it felt old and a little clunky. There was a ‘bolted-on’ feel to it’s functionality and it just didn’t fit into my workflow. It is popular with the web-crowd, so maybe if your hacking a web-stack this is the editor for you.
TextMate was the go-to editor for Mac professionals in the past. It provided all modern features needed for hard-core development and was the clear winner for an editor on the Mac. However, a few years ago the primary developer of TextMate open sourced the editor and left it to the community to take over development. This was seen as the death of TextMate.
However, development has gained momentum as of late, and TextMate 2 builds are available for use. Using the beta builds I found it was a decent editor, but something was always off …. just not right. It seemed slow and the fit and finish was missing. Also it was beta code and it wasn’t clear when the final version would be released. I would be hard to make a commitment here.
Sublime Text 2
From a one-man-shop, Sublime Text has a strong following and while currently at version 2, version 3 is far along with development builds available.
While it had some quirks, I found Sublime Text a pleasure to use – it’s fast, has a modern interface and had a fantastic plug-in system. The community around the editor was active and passionate. And it had an added bonus — it was cross platform.
While I wasn’t sure at first, as I used Sublime Text more and more, it became clear this was the editor for me. So after an extensive trial peopled I purchased a license and have enjoyed this editor ever since.
So will I have a long and fruitful relationship with Sublime Text 2 as I did with Emacs? Only time will tell. But right now we’re in the honeymoon phase – everything is perfect — puppy dogs and bunnies. I hope it lasts, but if things get ugly I do have a fallback. I can always go back to my first love – Emacs!