Rediscovering Sublime Text
One day last week, I updated Visual Studio Code. Anecdotally it feels like it asks for updates twice a week now. I’m sure that’s not true, but I feel overwhelmed by app update requests in this vibe-coded world we live in now. A couple of recent updates have really annoyed me.
The one that’s been most annoying is this feature that allows you to hold the Alt or Option key, click the X on a tab, and have VS Code close all tabs except the one you clicked on. That’s a fine and useful feature, of course. The problem is compatibility with the built-in onscreen keyboard in macOS. Now when I click Option on my keyboard while doing other things (like clicking through to TypeScript definitions), the tabs will pick up that keystroke and the tabs get stuck in alternative-close-button mode. So now I keep nearly closing all my tabs by accident.
The other abrupt change that was annoying to me was the modern redesigned UI. If you haven’t seen it, they’ve gone with the current trend of having lots of rounded rectangle panels inside the window. From a design point of view, I guess it looks fine. It’s not unattractive. But some affordances were lost in the course of this design. For example, it’s difficult to tell which tab is the active tab. The tabs are a little smaller too and I found them difficult to click.
Look, I know it’s cliché to complain about redesigns. I might be doing a bit of old man yelling at clouds here. But I’ve just been not caring about the updates as most of them are focused on “agentic” stuff. And I’m not super into that stuff at the moment.
I decided to dust off the old Sublime Text. I had a registered copy on my machine ready to go with pretty much default settings. So I popped that open, and started using it, only installing packages or changing settings when something really annoyed me. To my surprise, I was able to get it to do most of the things that I rely on in VS Code.
I was a Sublime Text user for several years, having moved to it from Panic’s Coda. I do have Panic’s latest editor Nova. It is very good, but I’ve had enough problems getting it to be compatible with some of my older projects that I kind of gave up on it. I was happy with Sublime Text for years, but when some package changed, it really messed up my daily workflow at the time (I can’t remember what it was, but I think it had something to do with using Emmet shortcuts inside of SCSS files).
Visual Studio Code does a lot. It’s had an impressive run. In its prime as a code editor (the website calls it an AI editor now), it was the gold standard for a well made Electron app. And it’s still good, even if I don’t care for its current direction. So I’m not knocking it too hard.
Having said that, I was pleasantly surprised with my return to Sublime Text. It’s fast. That’s immediately noticeable when launching it. Its TypeScript support (with the LSP and LSP-typescript packages installed) is pretty good. Code completion is very important to me as I have difficulty typing. I miss the AI-powered autocomplete that I get with Copilot (in many cases this saves me a ton of tedious typing on an onscreen keyboard) but the non-AI autocomplete in Sublime seems better than VS Code’s non-AI completion in many ways. For example, one of Sublime Text’s completion options are often just other strings I’ve typed in the file already. It seems kind of dumb, but it’s pretty useful, especially if I’m repeating class names, attributes, or component props in an HTML (or Vue) file.
I miss VS Code’s mouse friendly sidebar. But I’m getting used to Sublime’s minimalistic sidebar once again. The SideBarEnhancements package enables some context menu file operations. Another nicety is that hover cards, such as those that you get when using TypeScript and hover over a piece of code, include clickable links to the definition and other references. That saves me from having to use an extra click on my onscreen keyboard to hold down the modifier key. The command palette feels more responsive and its fuzzy matching feels superior to VS Code’s. This is all purely anecdotal, of course. I say it’s fast because it feels fast. I say the fuzzy searching is better because it feels like it’s better. I haven’t actually timed it.
It’s a nice, snappy text editor. What more is there to say really? I always think about this old blog post by David DeSandro:
But I continue to use TextMate, and will continue to TextMate. Because TextMate works for me.
You don’t hear about TextMate because TextMate is old. What would I tweet? Still using TextMate. Still good. TextMate’s problems are well known. Its hacky solutions are documented. Most everything’s been covered.
I will tell you what Sublime Text does not do, though. It doesn’t constantly push me to use a different window of the editor that is all about controlling AI agents. It doesn’t incessantly beg to be updated (although to be fair I’ve only been using it for a weekend; but the last release on the stable branch was last year). It doesn’t ship half-bated experimental features that are on by default.
It, of course, has plenty of cons compared to VS Code. The setup was not easy. There isn’t autocomplete in your user settings, so you need to look through the global settings JSON to find out what things you can change. I ran into other random issues with the language server and getting Prettier working. But I managed to overcome whatever obstacles got in the way.
Now, I am not naive. I’m sure I will fall right back into using VS Code at some point. I just have so much muscle memory and configuration built around it. But I’m enjoying this little stint with Sublime Text. It’s been, well, sublime to have a text editor be a text editor.