TextMate: Bundles of goodness

Warning: this is a long post about… a text editor.

screen shot I’m very late to the TextMate party. Like many other people, I heard the buzz when it came out last fall, checked it out, and went away interested but unimpressed.

At the time I knew that BBEdit’s long stint as my primary text editor was coming to a close. For its replacement I wanted an app that felt cleaner; was Cocoa, not Carbon; didn’t have a dozen years of accumulated cruft in the menus; and didn’t have language-specific features that felt tacked-on. For shell tasks I continued to use and enjoy Emacs, but I was pining for a great native editor on the desktop.

Ironically, for almost a year after that I primarily relied on TextWrangler; it really is quite a good little free editor, but after a while I couldn’t ignore its shortcomings and I was still resolved not to go back to BBEdit. I tried all of the other appealing Cocoa options (SubEthaEdit, Smultron, skEdit, Xcode) with no lasting joy.

A couple weeks ago I decided to take another look at TextMate; within a few days I bought it, and I’m fairly sure I’m in for the long haul.

There are lots of swell things about TextMate, but the killer feature is the “bundles” system for handling different languages and types of text. Many people misunderstand this to be just about syntax coloring; far from it. A language bundle can contain templates, “snippets” (mini-templates with smart placeholders that you can tab through), commands (real commands, i.e. shell integration), macros, and more.

If you’re a coder who always writes Java or always writes HTML, you might not think TextMate is the best. But if you’re like me, it’s a godsend. Last week I used TextMate to edit Python, PHP, HTML, Django templates, Markdown, plist files, and plain text. (I’m writing this post in TextMate, naturally, and using the built-in Markdown preview.)

TextMate is an app that invites hacking, in the best sense of the term. There are dozens of bundles, including boutique stuff like Haskell, Matlab, and R – mostly due to user involvement.

The bundles organize features in a discoverable way. As I work with TextMate I have the same experience over and over: it occurs to me to want something (an HTML tidying command, or an email quoting macro), I look for it, and I find it. This discoverability is where TextMate’s real power comes from; the huge number of language-specific features could completely destroy the application if they were organized poorly.

(I haven’t felt the need for documentation very often while using TextMate, which is lucky for me. It can be difficult to quickly find information about its advanced features. There’s the built-in help, the wiki, the book, and the blog, not to mention the mailing list. They’re all helpful, but the information is too scattered. Some consolidation would be good!)

Finally, I see that TextMate’s “snippets” system has now been ported/cloned to both vim and emacs. Wow. I think that might be one of the signs of the text editing apocalypse.

Quentin commented on Sat Nov 12 05:45:27 2005:

One thing I love about TextWrangler is its ability to browse, open and save on remote machines via FTP/SFTP.

Almost all my editing of plain text files is for stuff running on web servers elsewhere, and TextWrangler makes this really easy. TextMate looks nice and will, I think, integrate to some degree with various FTP programs. But it’s hard to beat TW’s convenience for this… you just press shift when the file’s not on your machine - shift-cmd-O, shift-cmd-S etc. It even remembers remote files in your Recent Files list… really handy if you need to keep tweaking that one particular web page.

Tricky decisions…

Paul commented on Sat Nov 12 13:45:35 2005:

It’s funny – integrated FTP seems to be one of those “there are only two kinds of people” things. You can find arguments about it in the TextMate wiki. I’m happier using the “Edit with” feature in my FTP client (Cyberduck, at the moment) – in fact, I didn’t even know TextWrangler had built-in FTP because I never went looking for it. I think this is partly related to my antipathy for file dialogs. I’m much happier browsing a Finder-style list that persists in its own window.

Nathan commented on Sat Nov 12 16:35:22 2005:

I agree that the bundles are really where the power is. They turned me as well.

TextMate works really well with Transmit, if you need ftp. I do not like ftp integrated into my text editor.

If you really wanted to, just use the Finder to connect to an ftp server and open the folder in TextMate as a project.

Quentin Stafford-Fraser commented on Sat Nov 12 19:14:50 2005:

Yes, I can appreciate all the arguments for FTP not being a function provided by an editor. It’s just that any theoretical objections I might have vanish, when it’s done as well as it is in TextWrangler!

And, actually, it’s SFTP that really counts, and the Finder doesn’t support that. But I’ll have a play with the Transmit integration and see if I can get used to it!

Paul commented on Sun Nov 13 00:37:11 2005:

FWIW, the Finder is useless for this in any case – not only does it lack SFTP, but its FTP is read-only!

Alan Cole commented on Fri Apr 7 05:02:43 2006:

I have to say that FTP and SFTP built into my Text Editor is essential for me. I’ve been using Pagespinner for years now for most of my editing and have got used to pressing shift+S to save locally to disk followed by shift+Command+S to upload the file to the relevant web-server… No need to open a second FTp app as PageSpinner does it for me, no need to delve deeply into various directories on in the finder and on the remote server to get things in the right place, PageSpinner does it all for me.

I would however LOVE to swap over and start using TextMate as some of its features look amazing, but I save so much time by having FTP built into my editor that I just can’t take the plunge until TextMate has a similar function…. I so wish it did.