Most of my decisions are pretty forced. I don't use Eclipse or Gedit because they were crashing my computer. I don't want to spend time learning vim, and am skeptical of it because I read bad things about modes in UI books.
For me sublime text 2 just got the basics right: black background, tabs, text completion, no crashes. The only feature I really appreciate that seems unusual are the pinstripes denoting tab characters
I don't have a problem with Vim's main modes, because I always know what mode I am in. Not only is the name of the current mode always in the bottom-left of the window, the cursor also looks different depending on whether I am Insert mode (vertical line) or Normal mode (rectangle). I suspect that your UI books warned against modes where the user might forget what mode they are in.
However, you also go into another mode when you enter the beginning of a multi-key shortcut (such as 'ma' to mark the current location with label 'a'). This is indicated at the bottom-right of the window by showing the keys you have typed so far (such as 'm'). Since that is the only indicator, sometimes I have accidentally forgotten I was in this mode. So that can be a problem. But it's easy to undo mistakes - just press 'u' in Normal mode, or Ctrl-O if the effect was moving the cursor. And if I know I'm in some weird mode and just want to get out, I can just mash Esc, and that always brings me safely back to Normal mode.
Of course, the reason Vim has modes in the first place is to give modifier-key-less ways to access a lot of functionality. I think the modes are overall a good thing. It's very nice to be able to edit and rearrange text with so few keystrokes and no need to move your hand to the mouse.
But configuring Vim so it works well can be a large pain. I've been using public computers to program a lot recently, so I've been using Sublime Text 2 on those, because of its good defaults and cross-platform nature. I hope to soon upload my Vim configuration files online so I can use it on other computers, but first I have a bunch of bugs in my configuration I have to fix. That's where I envy Emacs for having a good configuration language.
It took me five years (and counting) to get Vim to a place where I'm happy with how it looks and functions. ST2 gives me that out-of-the-box, and it's improving constantly.
I switched from Vim to ST2 two days ago, and this was precisely why.
At the risk of repeating what you wrote above: strictly speaking, Sublime Text 2 doesn't do anything you couldn't do with Vim, either by installing multiple plugins or writing your own plugin.
The difference is that most of the plugins I installed in Vim are features which just work in ST2. I can't _believe_ I went this long without a robust "find in files" or a project system.
Also, in the ~10 or so years I've used Vim, I've _never_ learned its specialized scripting language. Every time I've tried, I've given up in frustration. You can use another language but you can never truly escape vimscript. ST2 plugins are written in Python.
It's tastefully designed in every sense, from the look to the feature set to the extensibility.
The one thing I'm not keen on is its reuse of actual TextMate bundles. I definitely understand why it was done, but some of the bundles seem a bit legacy and they all use gnarly XML.
Before Sublime I was using emacs. Sublime Text 2 is really well done. You have to try it to understand. If you want a characterization, I would call it the balsamiq of text editors.
It looks nice (shouldn't matter, I guess, but it does to me a bit). For example, scrolling is much smoother and easier for my eyes to track and keep my place -- MacVim only lets you scroll complete line by complete line which is kind of jumpy.
The folder hierarchy in the sidebar is better integrated. Open a new ST2 window, go Project -> Add Folder to Project, and then all its subfolders and files will be easily browseable. It's not always necessary, though, because the fuzzy file finder search is so good. (Like Command T, but built-in).
Multiple cursors. I use this more than I would have thought. You can command-click and get multiple cursors, or you can highlight a word and command-d to incrementally highlight each further instance. Then, you can type and it goes to all the cursors simultaneously. If you, say, shift-opt-left arrow, it will highlight the word to the left, and then you can copy, and it will copy every word but associated to its particular cursor, so you can then hit command-right arrow to go to the end of the line, and then paste each of the copied words.
So, say, I want three similar json objects, one related to cats, one dogs, and one birds. (This is a contrived example, and probably not the best way to do it, but just to demonstrate the power here.)
Now what I'd do is I'd write on three separate lines, "cat", "dog", and "bird". Then, I'd highlight each of them to get multiple cursors, hit cmd-c so I have "cat", "dog", and "bird" copied for each cursor, and then just write the json object and all three would be done at the same time. If I wanted a variable to be called "myAnimal", then I could paste (so, I'd get the three animals). Opt-shift-left arrow to highlight them, command-p (which brings up the fuzzy-finder for all of sublime's functionality), type "capt", which will bring up "Capitalize", hit enter to do so. (Now I have "Cat", "Dog", and "Bird"). Then opt-left arrow to go to the beginning of the word, and type "my", and now I have "myCat", "myDog", and "myBird".
I'm not sure how well that came across, but basically multiple cursors is a killer feature that I didn't have in Vim. Couple that with a powerful macro system of recording keystrokes, and then using those macros with the multiple cursors, you can do a lot of editing fast.
The only reason I don't use ST2 is because it isn't nearly as good as Vim at indenting and highlighting the languages I use. Another reason would be that I can't use it in a terminal and would have to switch to another editor.
But the rest of ST2 is utterly fantastic. In particular, using Python as the extension language. Elisp is okay, but VimL is terrible. ST2 is the only popular editor I'm aware of that has a real programming language as its extension language and not a editor-specific language.
For me the most important feature is the quick file finder / browser / preview whatever that is called (cmd/ctrl+P), along with the ability to save folders as projects. Everything else is really nice too, but that is definitely the feature that sold it for me.
Sublime is great in general. One area it lacks is good auto-formatting support (it has the feature, but it generally fails) I use this feature all the time in JetBrains IDEs and it's tough to live w/out once you are used to it.
Any particular reasons why? I currently use MacVim with solarize dark color palette.