Like most programmers who use a Mac and avoid doing real work, I've been examining alternatives to TextMate lately. The suddenness with which so many people have done so smells like a strange craze of (as alluded) made-up procrastination, rather than a real attempt at tool-sharpening. I can only confirm this for myself, and I can do so with the fact that the best replacement for TextMate I can find is still TextMate.
I tried several but some had immediate turn-offs, so the ones I really gave a good go were BBEdit 10 and Coda 1.9. Espresso seems good if you need an HTML editor, but I vastly more often am writing software that itself produces HTML, so it wasn't for me. (This is also a source of consternation with Coda.) Sublime Text and Kod I discounted for the UNIXish complexity of their configuration – Kod especially, with its complete opacity for where or how to do so. Smultron sounded good, but it seems superseded by Fraise, and Fraise wouldn't even open the project I was working on.
BBEdit and Coda each have idiosyncrasies that disincline me to use them. At best these are things to consider then get over, if the rest of the tool makes up for them, but in a program that's going to become essentially my workplace, they are the little itches that cause the only delusion bigger than “switching text editors might be useful”: that I could possibly spare the time and care to do it better myself.
BBEdit
BBEdit has a habit of becoming the frontmost background application whenever files in a project it has open are saved. I mostly noticed this when reloading a page in the browser caused new .pyc files to be written, but it was especially obvious for the little while I was using Coda in combination with BBEdit.
There are generally a lot of little frobs in BBEdit that I'm sure are present and loved and used in common workflows, but to someone new who just wants everything out of the way so I can work, they seem complicated and unnecessary. I always minimized the “Currently Open Documents” and “Recent Documents” boxes in the project files list during my trial. Instead the minimized panes stuck around like warts on the regular spatially navigable files list, much like the line endings selector, and the word count indicator, and the white diamond file-is-as-saved-but-there's-redo-history indicator.
(In comparison to tabs – rarely a party either – I wonder now if I should have tried using the “Currently Open Documents” list more. Minimizing those panes also seemed to cause the pane to be drawn with the wrong scroll offset with a long project revealed, such that a click would reveal oops, you actually clicked on this completely unrelated file, ha ha so funny!)
Metaphorically, this same problem afflicts BBEdit's “Show Invisibles” mode. In showing a full contrast diamond sigil for each space character, BBEdit's invisibles mode says, “HELLO DID YOU WANT INVISIBLES HERE ARE THE INVISIBLES YOU ASKED FOR HERE HERE THEY ARE.” It's very clear, but in comparison TextMate's “Show Invisibles” mode is x-ray vision. It provides the same information so unobtrusively that when I went to turn it on to write this comparison, TextMate reminded me that it was in fact already on, because I leave it on all the time.
I don't want to blame this on BBEdit's age per se, but rather it seems that it's grown to afford a multitude of workflows through these various features. It's a hard adjustment from TextMate's flexibility through extensibility. BBEdit is a great workbench that has been kitted out in a certain way, while TextMate is just a workbench, and you can trick it out or keep it clean at your own discretion.
Coda
In the same way, Coda's downsides for me come from its core thesis as an integrated tool for making web sites. As I mentioned for Espresso, my projects are often software that itself creates web pages, so some of its features maladapt it for my projects. This starts from the ill fit of my projects to Coda's idea of sites: not all of them have remote locations they need pushed to (the closest they have is source control), or a “local URL” (without running the software as a server). When creating a site for a new project, almost none of the settings in the site configuration screen were appropriate.
Another particular case is that Coda doesn't ignore the .pyc files in my Python projects, instead displaying them in the file tree. It doesn't make sense to hide files in either a web page editor or in a file transfer client, of course, so I understand why it should be this way, but that's not the behavior I want in my project editor.
For its features that do map to things I still need, Coda sometimes uses a technology I'm not using. It provides some amount of source control integration, but I'm not sure what since it only works with Subversion. For its Transmit heritage it might only support FTP, but I deploy my projects with rsync, or sometimes just with git. I wouldn't generally recommend frameworkizing a tool, but I hope Coda 2 makes these workflow parts swappable for other technologies.
When this discussion first came up in my Twitter circle, I vaguely handwaved that I quit Coda for something weird it did with spaces. This time the only problem I saw with spacing was that when you indent a block, Coda also indents the blank lines, rather than avoid the trailing whitespace. Not sure if I imagined the problem I had before or what. The actual editing in Coda is pretty nice.
In conclusion
Both BBEdit and Coda are great editors and they well deserve their fans. I could do the work I do with a text editor with either of them. However, neither of them offer a fit quite as good as TextMate. Perhaps this is because my workflow has grown around how TextMate works, but it feels like a simple system that both BBEdit and Coda support, but decorate. In both cases, I would be buying a lot more software than I would use. I'm eager to see what might be in Coda 2, but for now I may as well stick with the editor I already bought.