Home > UI > TextMate usability flaws

TextMate usability flaws

I’ve posted previously about TextMate, a great text editor for Mac OSX.  While it is one of the best text editors I’ve used due to its simplicity, elegance, and power, there are a few UI features that drive me up the wall, and make it fall short of being perfect.

Tab key behavior

Here I have a bunch of text selected.  What will happen when I hit tab?

If you answered, delete your selection and insert a literal tab, you win the prize.  What happens in Microsoft Word, NetBeans Platform, and any number of other IDEs and text editors?  The text is indented.  This is clearly the better alternative in my mind because it is non-destructive, and you can get the destructive tab with a simple addition of any delete/backspace key before hitting tab.

Furthermore, it’s inconsistent – if I had selected that text and hit quote, I’d have the text surrounded by quotes, not a single quote replacing all my test.  I would argue that it does more harm than good to

To indent the region, you have to do ⌘-]; to unindent you do ⌘-[.  I’m sure there’s a way to remap tab and shift tab to indent the region, but it’s not immediately clear to me how to do that.  If you know how, please comment so people can see.  Every time I switch between Netbeans and TextMate I invariably delete a whole region of text I meant to indent by forgetting to context switch and use ⌘-].  Fortunately TextMate has extremely good undo support, so it’s not the end of the world, but it’s that little bit of friction that slows down work and adds up to frustration over multiple instances.

EDIT: The following sneaks up on me all the time and also is very irksome.  Here’s a rather typical situation:

Before backwards indenting

Here I want to move the block of text backward; I resist the urge to hit shift tab, and instead press ⌘-[.  What happens?  Not what you’d think.

After hitting un-indent

I really cannot think of a valid reason for this behavior; I have the first line selected, but it does not respond to the indentation command.  Very frustrating.

Syntax highlighting with unsaved files

If you are working on an unsaved file, there is no way to tell TextMate to treat it as a file of a certain programming language, and thus which syntax highlighting rules apply.

Why is this irksome?  When I’m writing a blog post, for instance, I have a lot of snippets I compose in TextMate.  In order to get the syntax highlighting to work correctly, I need to save each individual file.

Now, I’m not suggesting TextMate is magical and can read my mind as to what ruleset to apply to an unsaved file.  What I’m suggesting is the addition of a menu that allows you to apply the syntax rules of a given language to the current file, regardless of whether it’s saved or not.  Notepad++, a Windows text editor, has precisely this feature.

EDIT: Thanks to the comment by Marshall, I realize that this complaint is way off base – I didn’t realize where the menu was but it’s there.  Right where it says “Plain text” in the above screen shot, click that and you get a full list of languages to treat the file as.

Tab support

Tab support is abysmal.  There is no support for closing tabs with the middle mouse button, a convention followed by most major web browsers, as well as NetBeans and Eclipse.  Instead, you are forced to click a small close icon on each tab.  Fitts’s Law states that the smaller a button is, the longer it will take a user to navigate to; this is part of the reason that Apple has adopted menu bars at the top of the screen rather than floating with each window.  Doing so gives the menu effectively infinite height, as the user can slam the mouse up and not go past it.  Long story short, having the only means of closing tabs be a tiny button is bad UI design.

I could forgive the lack of middle button close IF the tabs supported sensible context menus to close other tabs.  Compare for instance the options of some other products that support tabs:

Firefox’s popup menu on tab

When you right click a tab in TextMate, no context menu appears – there is absolutely no menu option I can find to close all tabs.  Any system providing tabs should allow the user to make a blank slate for himself and focus on one (or zero) files at a time.  As it stands, you must click each tiny x button individually on all the tabs.

Finally, you cannot undock tabs.  Again, maybe I’ve just been spoiled by other products like Adium, Firefox, and NetBeans, but I consider it a very important feature to be able to undock tabs to show two windows side by side.  While tabs are certainly more space efficient than tiling windows side by side, sometimes you really need to compare two files side by side.  TextMate makes it very difficult to do that, especially when you have opened a project rather than individual files.

Here is the workflow in FireFox:

Before drag is initiated on the tab

While tab is being dragged; note that a translucent version of the page follows the cursor to indicate what is happening

After the drop is completed, the tab is split off from the original window and becomes a separate frame.


TextMate is an excellent text editor but not without some usability flaws.  I’ve detailed some features that irritate me about TextMate, due to their violation of the principle of least astonishment; I’ve used enough other similar systems to expect certain functionality, and this expectation is violated in a few ways.  These ways include the fact that hitting tab while text is selected replaces the contents with a literal tab rather than indenting the region, lack of a feature to syntax highlight unsaved files, an inability to close multiple tabs at once, and finally an inability to drag tabs out of the frame to become separate frames, so as to be able to compare documents side by side.  Software designers take note – if you are going to have tabs, you must build in these features or your users will feel seriously limited.

Categories: UI Tags: , ,
  1. May 24, 2010 at 8:32 pm

    Re: Syntax highlighting in unsaved files.

    In the very bottom bar click where it says “Plain Text”. You can select the language it is as well as see the many hotkeys to set it for you.

    • i82much
      May 24, 2010 at 9:28 pm

      Thanks Marshall – I don’t know how I missed that. Guess I was expecting it in a menu rather than in plain site in the interface. I’ve amended the relevant section

  2. Blake Taylor
    June 24, 2010 at 10:27 am

    The lack of powerful “browser” tab related options in textmate frustrates me as well. My biggest hangup is that tabs drop of the right side of the window and that there is no simple way to get them back into the visible area. Google Chrome is the best implementation I have seen of tabs to date. If TextMate acted like that I would be in heaven.

    BTW, the key combo for closing all tabs is ctrl+cmd+w. This option becomes visible from the file menu if you hold down the ctrl key.

    • i82much
      June 24, 2010 at 10:59 am

      Excellent information.. I don’t know if I would have ever found out about that “Close all tabs” key shortcut. I don’t frequently go around holding down random meta keys while browsing through the menus.

      Another possibility would be if the tabs reacted to the scroll wheel, so you could scroll through your tabs (a la NetBeans and Firefox)

  3. Blake Taylor
    June 24, 2010 at 10:43 am

    Oh and to avoid your tab indenting problem, a work around of sorts is to hit cmd+shift+L before doing the left shift. You can lock this functionality in with the following steps:
    * In a TextMate editor window press: opt+cmd+m
    * cmd+shift+L
    * cmd+[
    * opt+shift+M
    * ctrl+cmd+M
    * Name your macro (I called it “Left Shift”), and associate with cmd+[

    Now cmd+[ does the line selection automatically.

    I too prefer the tab key, but once you get use to cmd+[, it’s is easy enough to remember, although not preferred.

    • i82much
      June 25, 2010 at 3:06 pm

      Interesting – I didn’t know how to record macros before. Thanks for the tip.

  4. scott
    July 3, 2010 at 7:13 pm

    thanks for this post. these same things irk me as well. i paid for textmate a long time ago, but it breaks so many features i am used to with other editors, particularly editors in windows. the missing tab-indent functionality is #1, and the funky indent/unindent is #2 frustration (where a line won’t be un-indented if not fully selected.)

    here is my other main frustration: drag and drop a file onto textmate, and it won’t open in a new tab! if i drop a file on the app icon, it opens in a new window. if i drop the file into a textmate window i already have open, it should then open the file in a new tab, right? wrong… it pastes the ENTIRE CONTENTS of the dropped file in the middle of my document. what? sometimes i don’t understand how this passes for a great text editor… i could name 10 better editors for windows. i will just name two: context (free) and sublime text (not free). sublime text is everything that textmate SHOULD be.

    • Nick
      July 3, 2010 at 10:16 pm

      Very good points. I get bitten by that drag and drop feature at least once a day.

    • April 28, 2011 at 3:24 pm

      I use TM for both code and writing, and this makes good sense when TextMate is used as a LaTeX or HTML editor. The dropping behaviour triggers a ruby macro that dictates what it does – for example, when I drop a PDF on prose I’m writing, TM automatically fills out the syntax that I would otherwise type out to include the file (caption, width, labels… and lets you tab through the parameters you’re likely to change!) And a different set if a EPS is dropped, so on so forth. I guess for most languages the default is a local text-dump, which isn’t what most people want, but this can be customized to taste.

      • Nick
        April 28, 2011 at 4:17 pm

        Thanks for the info, that’s very useful to know


  5. November 18, 2010 at 5:36 pm

    Thanks Nick, all of the issues you mention above annoy me every day of using TextMate. I’ve gotten used to most of them, but one key combo I sorely miss is CTRL+Tab and CTRL+Shift+Tab to tab through my open tabs. I realize there is another key combo, but nearly every other app with tabs uses this combo – even Photoshop – and frankly any combo with brackets is a real pain on German keyboards.

    • i82much
      November 18, 2010 at 8:26 pm

      Ditto on the cycle through tabs. I’ve gotten to the point where I will just close all my tabs periodically and then reopen the file I’m looking for via the Command T shortcut, rather than trying to find it in my tab list. Not ideal at all.

      In most cases the Command T shortcut works well, but when you have a lot of similarly named files, it falls apart.

  6. arri
    November 22, 2010 at 8:50 pm

    textmate has its’ short-commings, but pretty much all the points you mention, and the fact you mention them, simply show that you (and many readers) probably maybe need some time to try and really understand its’ potential..

    TM goes way beyond the trivial-level of the issues you describe (like a tab-keys’ functionality). To give you an idea; a nice illustration is this o’reilly article, outlining howto implement a RPN-calculator IN (not just with..) textmate. And as it happens, this also involves customizing the TAB-key’s behaviour 😉


    • i82much
      November 22, 2010 at 10:11 pm


      Thanks for replying.

      I love TextMate, and I do realize that it’s extremely powerful – if you read a few of my other posts on Unix you’ll know I understand the power of the command line, and how incredible it is that TextMate can tie into any arbitrary script you write. My intention in this post is to highlight some of the *UI* problems that TextMate has. While I agree that the tab key can have some great uses (e.g. isoD –> current date), I don’t see why the tab behavior can’t be dependent upon whether text is highlighted or not.

      Anyways, thanks for that link – I hadn’t seen that before.

  7. November 29, 2010 at 7:08 pm

    I also can’t stand textmate’s tab indent/unindent functionality. I’m coming from Notepad++ and it’s the most painful thing to adapt to.

    Anyone know of a fix?

    If I have text selected and I hit the tab key, I want to indent that text, not replace it with a tab.

    If I have text selected and I hit shift+tab, I want to deindent.

    I don’t want to hit a 3 key combination to deindent since it’s a very common combo.

  8. December 1, 2010 at 6:11 am

    Superb posting, I share the same views. I wonder why this particular world truly does not picture for a moment like me and also the blog site creator 😀

  9. December 17, 2012 at 10:59 pm

    What theme are you using out of curiosity?

    • i82much
      January 6, 2013 at 12:28 pm

      Good question – I’m not sure. I just launched TextMate and it was on the default theme; somewhere along the way I must have lost it.

  1. July 9, 2011 at 11:47 pm

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: