Well at least not this week anyways. I wish someone could give me a great reason to move.
I’ve really been working hard trying to figure why anyone would want to move from Textmate back to
Emacs or Vim (or anything else for that matter, but those two are the ones I hear about the most). Textmate is one of those things I really enjoyed when I made Mac OS X my full time development environment back in early 2006. As an editor, it was easy to use and extend, and it was fairly pretty to boot. Plus, back in the early days, updates were coming out like crazy, and it seemed inevitable that Textmate would morph into the greatest editor ever.
Now we fast forward to late 2008, and I’m still using Textmate. I have my issues with it, but it is still that great configurable editor I found back in 2006. I guess that is the gift and the curse. It’s pretty much the same editor I was using back in 2006.
I thought I would I try to understand why people wanted to move. I have some sneaking suspicions, but are those nuances really annoying enough for me to move back to Vim or Emacs?
Let’s start with my number one problem with Textmate: no split windows! This bugs the hell out of me. At least five times a day, I can think of some task that would have been way easier to accomplish if I had the ability to do split screen and work on the same file in multiple locations, or even edit two files side by side or top to bottom. I’ll admit, the search for split windows has made me want to move on multiple occasions.
What other problems do I have with Textmate?
The project search is terrible. The good thing is that this is easily fixed by installing the “Ack In Project” plugin or one of the others which make searching much quicker.
Textmate chokes on large files. I’ve trained myself to not click on files I know to be large. This is a nuance, but nothing to make me rant and rave. Textmate also chokes on large projects.
Extending Textmate isn’t very obvious. At least at first it isn’t. The work that is happening on the dialog plugin is interesting at least, and a taste of what is to come might be demonstrated in the “GetBundles” plugin. The problem is you can’t extend it down to level of adding split windows or anything like that.
So, why haven’t I moved yet? The answer is simple. Both Vim and Emacs offer great solutions to some of the individual problems I have, but neither offer a total solution (that is easy to cobble together at least), and neither of them look as good as Textmate out of the box.
The previous answer was just too easy. I can really give you some concrete examples of what is wrong with Emacs and Vim as well.
Let’s start with Emacs:
Emacs is complex. Extremely complex. And to configure it correctly, you have to learn Lisp. Lisp is interesting in its own right, but I want to be able to configure my editor in the language of my choosing, and one of the nice things about Textmate is that it allows me to do that.
Emacs looks like dog poop out of the box. (on the Mac at least) The AquaMacs project has taken some steps in fixing these problems, but it isn’t there. I actually prefer Carbon Emacs, and it looks like total crap on the Mac. Some concessions must be made due to the fact that Emacs wasn’t written for the Mac, and it works on a myriad of platforms the same way.
There are some people out there trying to ease the transition into Emacs a bit. Phil Hagelberg is doing some cool stuff with his emacs starter kit, and if the rumors are true, I believe he is working with Peepcode as well. Chris Wanstrath has released Textmate.el. At first these projects seem real cool (and they are. i’m definitely glad these guys are there releasing these extremely cool codes for free), but in my mind it seems like the mob’s mindset is to move away from Textmate while keeping Textmate’s features. Pragmatic Bryan just figures that he would stick with Textmate, and have less to learn.
Emacs has really weird key combinations. To tell you the truth, after a while, you get used to them. But just starting out, you’ll wonder if you are just setting yourself up for early case of carpal tunnel.
Now on to Vim:
Vim is great. I actually use it every day. But not every often to do heavy coding. My problem with Vim is that it feels like a 1000 piece jigsaw puzzle. Sure, you can put the middle together and see the picture, but it isn’t complete, and will take you a long time to make it complete.
As with Textmate, Vim requires you to learn a language to configure it. I’m not down with that.
Vim is cryptic. Cryptic is cool when you have awesome finger memory.
I’m sure I have more, but this rant is about something positive. I’m not bashing Emacs and Vim.
Now on to a lesson I would like to share with everyone. It is something I learned a long time ago. I’m sure I read it somewhere like the Pragmatic Programmer or something, but I’m not sure:
The evolution of a person from neophyte to mastery of development of some programming technology isn’t just dependent on how well you know the language. Or even in many cases how you apply the language. The great developers (at least the ones I’ve met) are truly one with their editor (or IDE).