The Editor War

I have a thought for everyone regarding the editor holy-war that flares up from time to time.

It doesn't matter which editor you use as long as you're productive.

That said, I'm always trying new editors in the hopes of finding something that makes me more efficient. But I also don't care in the slightest which editor you use.

Here's a short list of editors that I've used on a regular basis over the years:

Emacs

When I was in college, the CS department had 2 computer labs. The first lab had 1 SGI workstation and a couple of dumb-terminals that connected to the main SunOS box that served the campus. The second lab had 10 underpowered Gatway boxes running RedHat 4. The computers in the first lab were the only ones that had X-Windows installed so they where usually taken. I didn't want to have to deal with a modem connection from the Macintosh labs in the library so that meant living in command-line world of the RH 4 boxes.

I liked Emacs but never really got beyond a very basic level with it. I gave up on it when I started running my own linux server at home. The box I was using had very low specs and vim was much faster to load than Emacs. I learned the basics of vim and that was enough to get by with.

UltraEdit

I was always on the lookup for a decent Windows-based editor since I was dividing my time between Windows & Linux. I don't remember how I found out about UltraEdit but it's still my favorite Windows editor of all time. It's lightweight, inexpensive, and very full-featured. There's one feature that stands out about all others: The ability to edit remote files over SFTP/FTP. That single feature was my main reason for using UltraEdit and the feature that convinced me to quit using the trial version and pay for the full version. I've yet to see another editor that handles remote editing as seamlessly.

Textpad

I'll only mention Textpad briefly because I'm sometimes forced to use it at work. There are so many things that bother me about it that's hard to know where to start. The #1 reason that I hate Textpad with the fire of a thousand suns is non-standard keyboard shortcuts. For example, find & replace? Press F5. All of the shortcuts that I've been using for so long that they're part of my muscle-memory are useless in Textpad. That's such a basic thing and it completely destroys my usability experience with Textpad.

jEdit

I went in for an interview at a PHP development shop a while back and they used jEdit exclusively. It looked interesting so I downloaded it and gave it a try. I liked the cross-platform aspect of it and it was zippy enough that I wasn't always aware that I was using a Java app. It also has the ability to assign custom keyboard shortcuts to pretty much anything which is good. But the remote file editing kept causing it to crash, the XML validator was clunky and hard to use, and I could never get it to properly format Python scripts so I eventually gave up on it. It may be worth trying again someday but I'm not willing to make the time investment I think it will take to get really good at it.

Vim

I've been using Vim (or gVim on Windows) on and off for years now but, about 4 months ago, I decided that I was going to spend a month using nothing but vim and see how good I got. I'm a very keyboard oriented person so switching between the mouse & keyboard can be jarring and disruptive. Even UltraEdit bothered me with how much I still had to use the mouse. So I printed out a bunch of cheat sheets of vim commands, ran through the vim tutor, and plastered post-it notes of commonly used functions all over my monitors. I also uninstalled UltraEdit so I wouldn't be tempted.

That's what really made the difference. Using vim casually can feel frustrating and slow but spending the time to learn as many different keyboard commands as possible is completely worth it. I'm about a thousand times faster with vim than I am with anything else and I'm learning new things about it all the time. That initial learning curve was worth getting through and I have no plans to switch to anything else near term.

I love that I can keep my vimrc file on my thumbdrive so I can easily copy it from machine to machine and get exactly the same behavior everywhere. I love that every *nix machine I ever work on will have some flavor of it that I can use.

Pretty much the only thing I don't like is that I can't remote-edit files from gVim on Windows. I can open up a putty window and use vim from there but it's not as convenient. I'm also so used to the vim keyboard commands that I end up messing things up by trying to use them in other programs out of habit.

But, if you only take one thing away from this post, it's that it doesn't matter what you use. Find something you like and spend the time it takes to get really good at it. You may be slow in the short term while you're learning but you'll make your time investment back ten-fold once you're up to speed.

And make sure to always keep an eye out for something better.