TextMate

I’ve been a BBEdit user for more than a decade, and consider it one of the finest pieces of software I’ve ever used. But a new text editing application, TextMate, has me re-evaluating my loyalty. I hope to make 2006 the year I achieve “text editing zen,” and I think TextMate is the application to help me do it.

I’ve used BBEdit for many years, starting with version 3.5 and buying every version released since then. It’s a wonderful application, one where when I learn of a new version, I send them my credit card info before reading what’s actually in a new release. To say that I love BBEdit is an understatement; it’s been one of the core tools I’ve used to earn a living for more than a decade.

A little over a year ago, a new kid on the OS X text editing block appeared. TextMate was the first text editing application I’ve seen in 10+ years which has tempted me to leave BBEdit, mostly on the strength of a screencast for Ruby on Rails, where TextMate was (in theory) an incidental part of the demo.

A BBEdit user who simply tries TextMate, and looks for features to be similar, or in similar places, will probably be quite disappointed. TextMate feels, at first blush, like it has far fewer features, and is a letdown if you’re looking for BBEdit with a few added features like the snazzy snippets feature from the Rails video. But this is because the two applications are designed with different philosophies, and BBEdit exposes much more of its features in the menus and dialogs.

TextMate, on the other hand, sometimes seems like mostly text editing infrastructure. Much of the functionality — and virtually all of the really sexy stuff — is “hidden” inside the bundles which provide language-specific tools and commands. TextMate provides the infrastructure to allow very sophisticated features to be built into these bundles, many of which are created or enhanced by third-parties.

It is an application which rewards — many, many times over — the explorer who invests time in learning how to use it, the “zen” of TextMate, which is quite different from how you use BBEdit. Once you have invested the required effort in learning where TextMate’s power lies, I think it compares very, very favorably with BBEdit; for some, it stands head and shoulders above.

If you spend a fair amount of your time coding for a living, TextMate is definitely something to check out. But, invest the time to really understand how it’s supposed to be used. The TextMate Manual and Garrett Dimon’s Trick Your TextMate Series are good places to start.

Update: I learned a few new tricks in this capsule review of TextMate at Vitamin, and someone built this nifty customized quick reference card generator for TextMate that could be indispensable.

Another Update: This TextMate Basics Tutorial may be the best introduction to TextMate available today. Truly outstanding, both for learning how to use TextMate, but also for understanding what makes it so powerful.

10 thoughts on “TextMate”

  1. I still use TextMate on my mac at home today! It’s a really great tool and I enjoy using it almost everyday

  2. Thank you for your post! I’m a textmate n00b and your post greatly helps my exploration many many thanks :)

  3. I’ve seen Michael use TextMate firsthand and seen some of it’s power. Looks really impressive, and might be a worthy tool to add to the arsenal. Thank you for that review. I’m going to give it a whirl.

    So many text editors, so little time… ;-)

  4. Is there a good resource for Q&A about TextMate, for those who are new to it? I’ve heard comments that it is under-documented. BBEdit was quite documented, even though it did take studying to really get into it. Also I find that even after reading the TextMate manual about a topic, I still don’t understand what they are saying. Plain language, please!

  5. Interesting. I do spend my time in HTML, CSS, and PHP. Good searching, and searching lots of files is important, so hope TextMate doesn’t let me down there. I’d love a list of what’s equivalent in the two apps. Key combinations to start with, but other things like

    * strip HTML from selected text
    * is there an equivalent of the “QuickSearch” live text search
    * can you split windows
    * can you have newly opened files automatically be included in the foremost project
    * can you copy/remove all lines containing a text string
    * can you have a window open showing all the Snippets
    * can you insert the contents of the clipboard into a snippet

    Maybe MacroMates should write a “Switching from BBEdit” guide.

  6. @James: TextMate’s bundles include a huge number of “snippets,” which are intelligent expansions of short codes into structured text. For example, typing ifelsetab gets you a full if/else code structure, with placeholders for different elements in the structure, which you can tab through and type into as though they were fields.

    There’s also a large number of commands, also in the bundles, which can do similarly intelligent things with selected text, the entire document, or the file or entire project.

    What’s especially powerful about TextMate’s snippets and commands is how well they are tied into the Unix shell in Mac OS X. You can send your selection, line, whole document, etc., out to the shell, where you can do anything to it that a Unix shell script (and Perl, and awk, and any other Unix command line tool) can do, and return that to replace the selection, insert into the document, or even show as a Tool Tip.

    In a sense, TextMate is a lot like Mac OS X: a beautiful interface that lets you do real work in, but which also ties in directly and deeply to the underlying Unix layer, to get access to the full power of the entire suite of 30+ years of Unix tool development.

    This is of course of most use to serious developers, at whom TextMate is most directly targeted. It’s still of use to HTML coders, in the sense of being able to use all the terrific bundles that are useful while doing HTML work. These folks may not create their own bundles, or even modify the existing ones, but they can certainly take advantage of the existing ones — which are improving all the time.

    But to get to your question of the Zen of TextMate, you have to either already be a text editing Zen Master, or have seen one in action. I remember years ago watching Dominic Giampaolo (an engineer at Be at the time, now with Apple) editing code using, of all things, vi. It was amazing. His hands on the keyboard just did things, and made changes appear on screen. No conscious thought involved. My opinion of vi changed in about 30 seconds. I can get around in vi, but always wondered why some people actually seemed to love it. Well, when you get the Zen of vi, it’s an amazingly fast and efficient way to write code.

    I think that anyone who wants to be a professional software developer needs to reach that level of comfort and expertise with their coding environment. And it should involve the mouse as little as possible, because that will slow you way, way down.

    With BBEdit, I’m constantly reaching for the mouse — though in fairness, I’ve never felt like I reached BBEdit’s full potential for navigation and control.

    But TextMate feels more natural to my brain, and in spite of only using it for 6 months half time at only one job, I’ve found myself getting very comfortable with its capabilities, to the point of wishing that I had TextMate’s editing behavior and capabilities everywhere.

    That said, I still reach for BBEdit, full-time on my own laptop (but that’ll end soon, I’m thinking), and whenever I need to do a file comparison at that one job (where I use their equipment). BBEdit also has a far better multi-file search capability, and even the plain in-file search is more capable and flexible, if you’re using the search dialog. BBEdit is still far faster if you open really huge files. And there are other things, I’m sure, but can’t think of off the top of my head.

    Don’t get me wrong, though; I still love BBEdit, and look forward to the day when I can send Bare Bones more money in return for a new release. Eagerly!

  7. I’m a long-time BBEdit user like you. You say there is a different “zen” to TextMate — Can you describe it? How would it be different from how I would use BBEdit? Also, the first commenter left this out: in what cases would you use Textmate over BBEdit? Thanks.

  8. Michael, I hear you. I am a long time BBEdit user (but only since v. 6) which I use to do (x)html, PHP, MySQL, etc. I wanted to learn RoR and kept seeing Textmate in the video and reading how people rave about it.

    I was a little disappointed at first, but that’s because I didn’t understand the differing philosophies behind the two products. Now that I see where TM’s strengths lie, I appreciate it more and more. BBEdit is still in the dock, but I love having both options available for what they do best.

Comments are closed.