Rant: Considering switching to Sublime Text
I have been using Sublime Text recently and I hate to admit that I really like it. I authored this post in Sublime Text, and I've been using it for all manner of note-taking and quick script writing for about four weeks now.
I've been an Emacs diehard for years. I fell out of love with writing code in Emacs and now only use it for specific tools, the most prominent being Magit and org-mode. I thought note-taking was one activity Emacs had complete dominance in. I never thought I would see the day when I would download Sublime Text, much less start using it frequently.
After watching streams from programmers like Andreas Kling1 and Gingerbill I became interested in using other kinds of editors. These guys fly through their code with basically just simple navigation commands and good auto-complete. If it's good enough for them, it has to be good enough for me.
This blog post is a sheepish bit of justification to the part of my brain that still turns up it's nose at other text editors, and I guess an apology to my friends who I evangelized Emacs to. Later on we ruminate. Read on, it'll probably be insanely boring for you.
What do I dislike about my Emacs setup?
I have been evolving my Emacs setup for nearly a decade now, which is a scary thought to have. It has been completely re-vamped at least three times. The current iteration is about three years of git history. What could possibly still be missing?
LSP support is janky.
There are many LSP packages for Emacs; however none of them beat an IDE in my experience.
Even with the glut of LSP improvements like libjansson
support and tree-sitter-mode
, and Emacs is just not as fast or slick as PyCharm.
Installation is a fragile, annoying process, and every LSP server has a slightly different one.
After like two hours I not get pylsp
to work, though I did get pyright
and ruff
for type-checking and linting respectively.
I've had tons of issues with virtual environments not being recognized, conflicts between the system Python and the venv Python, servers disconnecting, servers not implementing very necessary features (like Go to Definition
)...
Just a mess!
Find and replace across files. This is so, so easy in literally every other Editor except Emacs.
Yes, I know about Projectile. No, it is not as convenient as just whacking ⌘⇧F
and typing into a dumb little box with dumb little buttons and drop-down arrows for filters.
Open multiple projects in different windows. Again, this is so easy to do in every other editor... With Emacs, I don't think you are really supposed to have multiple instances open, and every frame is part of the same instance all shares the same namespace. Maybe you can! But it seems to annoy things like Magit and TRAMP.
Poor mouse support. Compared to literally any other editor on the planet, Emacs mouse support is garbage. I want to be able to click and drag to re-order tabs, split windows, re-size windows, etc., and I want it to feel smooth and easy. There's probably a way to do this in Emacs, but I haven't figured it out yet.
macOS support is not as good.
I use a Mac at work and also recently got a Mac for personal use.
Emacs feels like a second-class citizen on macOS.
My work laptop still has an issue where Emacs doesn't appear in Spotlight and I don't know why.
(Works fine on my personal laptop...)
Launching it by double-clicking on /Applications/Emacs.app
doesn't set the environment variables right or something, and it disables native-comp
.
So I literally launch Emacs by opening a terminal, typing emacs
, and then hiding the terminal window with ⌘H
.
Which is silly and annoying. There are other issues like permissions, drag-and-drop, MIME types, etc.
These issues feel like such petty things when looked at individually. However when I'm in the middle of doing actual work I don't want to be bothered by these things.
What do I like about Sublime Text (over Emacs)?
Multiple cursors. The multiple cursor implementation (multiple-cursors.el) in Emacs always felt extremely clunky and error-prone. I don't know exactly why, but I never liked using it. Multiple cursors in Sublime Text feels good. It is incredibly intuitive and useful. I daresay it covers like 90% of the use cases for macros while being quicker and easier to use.
Tabs.
It took me a really long time to figure out why navigating in Emacs felt so laborious and navigating in ST felt frictionless and smooth.
It's TABS, duh!.
Tabs are again not strictly necessary, and Emacs has plenty of tools to swap between files.
But being able to just click on exactly what I want is priceless.
Emacs does have a tab implementation but it is truly dreadful.
The tabs are small, ugly, not very customizable, and are not draggable (which is crucial functionality).
(See section above about Poor mouse support).
When I realized this I felt embarrased. Hitting C-x b
is not exactly a difficult challenge, so saying "Emacs doesn't feel easy to use" sounds like I'm just admitting to being a lazy idiot.
But it really does introduce just enough mental overhead to make Emacs feel noticeably worse.
The minimap.
It sounds really stupid because in theory, imenu
should be just as good.
But I strongly prefer a minimap.
It helps me a lot navigating a large file, much more than I expected it to.
Perhaps it taps into some sort of visual processing center in my brain.
Vim keybindings. I prefer Emacs keyboard shortcuts but these work fine as well. The Vim support probably wouldn't hold up for a real purist but I only use pretty basic Vim commands anyways.
Font rendering. It just feels a lot better. It may even be a Mac vs Windows thing but the font rendering on Emacs was always kind of bad.
Speed. Even with the latest bells and whistles offered by libjansson
and native-comp
, Emacs is much slower than Sublime Text.
To be fair to Emacs, it's doing quite a lot of stuff - I have something like 60 plugins.
I could also use the Emacs Profiler to diagnose these issues and probably get a lot of performance gains.
The reality is, however, that those plugins are autoloaded, half of them are trying to replicate functionality that I already have or don't need in other editors, and I've already tried quite a number of things to make Emacs feel snappier.
ST absolutely soars; there is no 'loading time'.
(Mostly) simple plugin system. One thing I really love about Emacs is the ability to just drop elisp code into anywhere and execute it. I have even stored elisp macros in multi-line comments in source files for later use. Sublime Text pales in comparison, but it gets the job done. You can just stick a file in your ST configuration folder and it will reload the editor. Plus, the configuration language is Python, which is much easier for me to use than elisp since I write Python nearly every day, and elisp only when I'm struggling to force something to work.
What don't I like about Sublime Text?
Not open source. Using cross-platform, open-source technology is something I try to do. Using cross-platform stuff is more important, but usually open source improves multi-platform support a lot, at least for developer tools, so I've come to consider those things as part of a mutual package. The price doesn't really worry me, it's the idea that eventually the company producing ST will close. By contrast, Emacs is a cockroach, it will literally never die.
The price. $70 isn't a whole lot of money, considering. But it's $70 every three years, and there's many capable editors like Emacs that are free. Of course, ST is actually free too, as the free trial is indefinite, but the program nags you and that kind of makes me feel guilty about not buying a copy sometimes.
Some keyboard shortcuts. At this point my brain is scrambled from using five different editors at once; I have a much higher misfire rate using Sublime Text because occasionally I'll whack C-g
to exit or something.
Honestly though, I thought I would miss a lot of the Emacs keyboard shortcuts like C-x r t
and I just don't...
ultiple cursor editing does most of what I need.
No remote editing. This isn't really a big deal, but I do sometimes edit remotely.
It's hard to take this as a slight against ST in a discussion comparing ST and Emacs, because I strongly dislike the remote editing features of Emacs as well...
But at least I can SSH and use Emacs console-only if needed, which isn't possible with most other editors.
There is an rmate
plugin which supposedly works but I never got it to for my purposes.
No outline. Emacs has imenu
and other tools, and VSC has an explicit outline so you can see an overview of a file.
ST has no such functionality as far as I know.
This is also a minor complaint; between the minimap and the "Go Anywhere" functionality it is very easy to hop around.
Why not just stop using Emacs?
Well, it's very simple.
First off, I don't want to. As I already aluded too, it makes me feel like kind of an idiot to have spent so much time and effort into learning Emacs and helping other people learn Emacs, only to stop using it now.
Second, I can't! There's still things in my workflow that only Emacs can do. Magit is an indispensible tool for me. Even though I'm using physical notebooks over org-mode more often these days for notes and calendaring, I still have dozens of org files in my knowledge base that I regularly consult and update.
Conclusions
There's a terrifying layer behind the current thoughts, which is that I think I'm getting old.
When I was a kid I would spend hours and hours watching YouTube videos about computers to accomplish the tiniest, stupidest little victories. Like, spending two hours to make a custom button on the DWM window manager. Or, trying to optimize my Firefox plugins for absolute maximum privacy. Or, writing an Emacs function that let me scrape web data. Or, installing Manjaro just because my friend said it was better than Ubuntu (neither of us had any real reason why).
Now, computers are my job. I have to work on them whether I like it or not, and that's removed the magic. I feel old and cranky. I used to care about whimsy in my software, writing a program that did something I thought was fun or cool. I used to care about open source, the UNIX philosophy, and writing "elegant" programs.
Now I spend hours tinkering with Gitlab pipelines and being frustrated because there's real consequences when something doesn't work. My patience for friction is drastically decreasing the longer I do software development. So I just use whatever tool gets me there the fastest and easiest. Gone are the days of feeling "loyal" to a specific software; if I can't immediately figure out how to do something in ST, I switch back to Emacs.
I think when I consider my dwindling Emacs usage, it's not really about using a specific editor to feel cool or be more productive or to have fun or because it works the best. It's feeling like the curiosity, vigor, and sheer nerdiness I had as a kid is slipping away, being sacrificed to a corporate position.
Does this mean ST isn't a good product or that I shouldn't use it? I think actually the opposite. The situation still feels bittersweet.
I am actually not sure what Andreas uses. It's definitely CLion, and it's definitely not the default keyboard shortcuts, but I don't think it's the JetBrains Vim plugin for CLion. Gingerbill uses raw ST to my knowledge.↩