First Impression: Sublime Text 2

A first-glance review of the oft-lauded Sublime Text 2 programmer's editor.

I've been curious about this editor for a long time.  A lot of people whose opinion I respect rave about it.  (Mind you a lot of people whose opinion I don't respect also rave about it, so…)  In the opening days of 2013 I got a little windfall of US$.  This gave me an opportunity to purchase this text editor I've heard so much about and to give it a try.  Now normally I'm a Vim user, but unlike many such users (or Emacs users, for that matter) I'm not married to my text editor.  Indeed I frequently refer to my editor preference as ABE (Anything But Emacs).  I'm comfortable using almost anything.  (Except, obviously, Emacs.)  Further, I'm always looking for a better way to do things because I believe that keeping yourself to one tool, no matter what field you work in, is a surefire way to stagnation.


This is, therefore, the first impression review (a more detailed review will follow after I've used it for a while) of Sublime Text 2  (henceforth ST2) of a happy, but curious and open-minded Vim user.


The very first impression anybody gets of a piece of software is its installation procedure.  I run Linux and thus installed on Linux.  What I describe here is the process for Linux; I cannot speak to other platforms (yet – I will be installing this on a Windows machine at some point, both in its "portable" and regular versions).  Briefly, however, here is the process:

  • Download the appropriate tarball.
  • Extract the tarball where you want ST2 to live.  (I used /usr/local.)
  • Adjust your path to include the new subdirectory created by the previous step.
  • Fire up the editor with sublime_text.

There, that wasn't so bad, was it?  Oh, wait.  Yes it was.  Because not even free software is this primitive much of the time.  When I build Vim, I have an "install" target that puts the various components in their appropriate, standardized places in my file system.  (Note that word there: standardized.  There actually is a standard for this stuff!)  The same is true for Emacs.  Even the relatively young project Textadept does this.  And in all cases I can easily change where it installs if I prefer different locations for things.  ST2, a program I've paid for, recall, doesn't conform to any standards for installation and doesn't permit any real customization.  You have to manually edit paths, as a result, a problem that's made worse by the fact that some of the directories in the tarball (including the root one!) have spaces in the name.  So in my case I'd have to add /usr/local/Sublime\ Text\ 2 to my path.  This isn't necessarily a problem (and, indeed, it shouldn't be!), but sadly a lot of tools in the Unix world will choke on files and directories with spaces in their name.  It's generally best practice to avoid them, especially for what amounts to system utilities like ST2.


Guys, I paid you for this.  You're supposed to be doing the work for me, not the other way around.


So, to fix all this up, I renamed that root directory to sublime-2.0.1, then further made a symlink to it at /usr/local/sublime (for easier upgrading later on).  I then added that symlink to my PATH.  Further, typing out sublime_text all the time will be a pain in the ass.  One quick aliasing later and I now type st instead.  It all worked and none of this was difficult, but it is annoying and "annoying" is not a word that should be used in the context of paid software.

Running the editor

My first impression was ruined somewhat by the installation procedure, but it raised quite a bit when I typed st at the prompt and saw the window pop up.  First, it's blindlingly fast.  From a strictly subjective stance it appeared to be about two times as fast as gvim and three times as fast or more than emacs.  This, my friends, is a very snappy editor!  Also, it's a very clean-looking editor.  Here are screenshots of ST2, Vim and Emacs as they show up when you just fire them up.  ST2 is lean and clean with clear, reasonably conventional menus and very little noise.  Vim looks both a bit messier at the start and a bit uglier.  Its menus also look a lot like stuff people just randomly threw up there.  (Part of this, of course, is because of the plugins I have installed, but we'll be talking about those later.)  Emacs is just a mess.  It looks to me like someone who wanted a web browser met someone who wanted a text editor, had messy sex and spawned this horror.


Screenshots of three text editors at startup.
Sublime Text 2 Vim Emacs
Sublime Text 2 empty screenshot GVim empty screenshot

Emacs empty screenshot


I'm an old fan of Vim (dating to before there was even a vi, in fact!), but I have to admit, ST2 looks better.  Much better.



A bit of common sense

I don't know about you readers, but I tend to fire up my text editors from my shell.  When I use my old standby from the shell—Vim—here's what happens:

  • I type gvim.
  • Vim starts, popping up its window.
  • My shell is free to use.

This is just how it works.  This is not how it works for ST2:

  • I type st (c.f. above).
  • ST2 starts, popping up its window.
  • I type ^Z.
  • I type bg.
  • My shell is free to use.

See those two extra steps?  Why is it that Vim has been able to start up without tying up my terminal for … well, pretty much since I started using it (well over a decade ago) and yet ST2 can't do it?  (To be fair nor can Emacs and Textadept, so this is a common complaint.  Still, there's this whole "I paid for it" thing going on…)  I guess I have to modify my alias above to alias st='sublime_text &'.  This leaves my terminal free, but also litters it with jobs and the possiblity of stupid mistakes as I accidentally kill job 1, forgetting that job 1 is my editor this time.  I'd really rather they'd just done it right in the first place.

OK, nit-picking aside…

This editor is hot.  I mean I really quite like it.  It's fast, it's clean and it's almost as expressive, at first glance, as Vim with only a few more keystrokes.  Indeed, some of its tools, like the Command Palette, make me more productive with it out of the box than I was with Vim after several months of use.  Being able to do keystroke-minimal fuzzy searches on any command provided by any part of the editor (including plugins!) is a huge bonus.  This feature alone makes me seriously consider using ST2 as my default coding editor!  No more searching through a myriad of "help" files that are written from the perspective of someone who already knows the system!  I can see what commands are available, organized by plug-in, and searched for fuzzily.  I can attach any provided command to any mnemonic keystroke combination I care to should I find myself using a given command more and more often.


And I haven't even talked about the Minimap or the Goto Anything facility or the like.  Nor have I talked about the hundreds (yes, hundreds) of wild and wonderful plugins available for it.

That being said…

It takes a while to get to this power.  Because the web site for ST2 is an unmitigated disaster.  Go take a look at it.  Don't touch anything, just read it.  Then come back and answer this: is it obvious where to go for documentation?  Is it obvious where to go for the Sublime Text 2 community?  This editor lives and breathes plugins.  Can you easily see from the front page where to go to get these?




Programming tools run on community.  Communities supply the plugins the manufacturer can't supply.  Communities provide the assistance and help for newcomers that would otherwise swamp the manufacturer.  Community is what makes or breaks software products outside of the "Enterprise Software" world.  (Schmoozing is what makes or breaks that kind of software.)  SO WHY IN GOD'S NAME IS IT SO HARD TO FIND THE ST2 COMMUNITY?!  Why is it so hard to find repositories of plugins?  There's a link to a "Forum" provided and that's about it.  There's no hint that there's a "community-standard" plugin manager available nor that there's a place to search for packages with links to their home pages.  (You're welcome for those!)


Then let's look at the documenation.  No, really, look at it.  (I'm linking you to it because you're not going to find it from that front page!  Guys, documentation is not "support".  It's a basic requirement for using any modern piece of software!)  You could, of course, use the online help.  In your editor, Help → Documentation … takes you to that very same web site.  What you see is what you get.  A half-assed collection of little articles that covers maybe a tenth of the editor.  Little articles that are even wrong (!).  (If you're a Linux user, try following these instructions to do column selection via the keyboard.  Hint: it won't work.)


You do, to be fair, also get a link to the unofficial documentation site which gives you a lot better support.  But … really?  I'm being charged so that other people who got charged can have the honour of documenting the product they paid for?  WTF?!  Is this what's called "professionalism" these days?!  I have this radical notion, old-timer that I am: why don't you document the editor as you add its features?  You need a break from coding every so often anyway, so why not take that break by documenting?  You can hire a tech writer to clean up and reorganize this stuff afterward (because programmers tend to absolutely suck at writing), but at least the information will be there and you won't have that shameful "documentation" page glaring at you every time you fail to avoid looking at it.

Now before you storm off all angry-like…

…keep in mind that this is very explicitly a "first impressions" review.  I have not used ST2 in-depth and, as a result, my review is probably not the fairest thing on the planet.  That is, however, the main point here.  There's an old saying about first impressions; they last the longest.  My first impression is overall a good one, but it's tainted by the fact that I paid for software that has some very serious flaws both in its implementation and in its ecosystem.  I'll be using ST2 as my main coding platform for the next month or two and will be doing a more in-depth review of its features, strengths and weaknesses afterwards.  There I will be much more fair, but this review should be a warning call to the developers: clean up the new user experience if you want this editor to take off like I suspect it deserves to.


Sublime Text 2 is a good offering.  It's a snappy editor that looks to be almost as configurable as Emacs without being as obtuse and unreasonably difficult to use out of the box.  I quite like it and don't quite regret the $59 spent on it.


Don't quite regret it….


…because for professional software that costs actual money, it is in desperate need of key improvements, to wit:

  • It needs documentation that is both complete and available offline;
  • It needs a web site that is more community-focused;
  • It needs to make prominent third-party plugins easier to find from the get-go;
  • It needs to launch more cleanly from a terminal;
  • It needs to provide a clean installation process for all of its supported platforms.

Were ST2 an open source project (like, say, Textadept, a roughly-similar text editor based on Lua instead of Python; I will be reviewing this soon) I would be far more forgiving of the above quirks, but for professional software that costs money what is delivered is simply not enough.  Yes, it's only $59, but Vim is free.  Emacs is free.  Textadept is free.  And any one of these is a suitable replacement for ST2 (and the last one is very similar in feel at first glance).

Filed under: , ,
Bahman Movaqar
Bahman Movaqar says:
Jan 07, 2013 10:24 AM

I thought I'd put some notes on Emacs, as you're (as you said) not an Emacs user.

* Freeing up the shell: `emacsclient' with `-n' switch does exactly that. For example `emacsclient -c -n'

* Fuzzy matching: Emacs has built-in fuzzy command matching. For example to run `foo-bar-baz-godzill' command, you just need to type `f-b' and press TAB and Emacs will show the commands that match that pattern.

* Easy command exploration: Again Emacs has this built-in. For example, if you don't know how to comment a region, you just press `C-h a' and type "comment". Emacs will show you all commands that cover than along with the shortcut keys (if any) and an optional description.

* Startup time: Emacs is a sluggish monster if you try `emacs' at the command line; that's right. The alternative is to run `emacs --daemon' once and use clients (`emacsclient -t' for terminal based one and `emacsclient -c' for a GUI one) to use it. This way the clients normally start in less than 200ms, which is very impressive.

And finally about Sublime itself: I gave it a very brief try a few months ago. It was good looking as you said. But compared to Vim and Emacs it had almost nothing to offer in terms of extensions and functionality (besides the navigation and such). Also I find the editiing with arrow keys a real pain after all these years with Emacs and Vim (though this doesn't apply to everyone, specially the ones coming from Windoze or conventional editors).

Michael T. Richter
Michael T. Richter says:
Jan 07, 2013 10:29 AM

The Emacs fuzzy command matching is clumsy—very clumsy—compared to Sublime's. Because of this the fuzzy matching of commands *is* the command exploration all in one. And it does some very clever matching!

The situation with plugins and such seems to have approved. If you follow that link to the list of plugins there's over 500 listed and that's just one such site. Apparently there are more. Sublime doesn't have support for everything I use yet, but it had support for a surprising number of things. (I even found Prolog support.)

"Editing with arrow keys", BTW, is what you do when you're new I think. There are some very sophisticated movement and selection commands in Sublime; I suspect that once you know them it'll verge on Vim-like economy of motion (except for that Ctrl key).

Michael T. Richter
Michael T. Richter says:
Jan 07, 2013 10:31 AM

I meant "improved", obviously, not "approved". Stupid braino.

Bahman Movaqar
Bahman Movaqar says:
Jan 07, 2013 10:42 AM

Funny that I had already read it as "improved".

Michael T. Richter
Michael T. Richter says:
Jan 08, 2013 03:06 PM

I solved the launching problem myself: