My text editors
This note summarizes my current status and past adventures with text editors.
Current editor: VSCode
I spent many years in VSCode, particularly when I was on a team doing a lot of Python and TypeScript development. Then I spent some years in hipper editors, specifically Emacs, Neovim, and Zed. Now I’m back on VSCode.
Here are the reasons.
VSCode just works
VSCode is the souped-up minivan of text editors. It’s got all the features, and for the most part, they all work with ease.
I’ve loved diving deep into making Emacs and Neovim suitable alternatives (see below), but that entails major side quests. Those quests are good fun when I want text-editor configuration to be my hobby. And sometimes I do! But eventually that passes, and I go back to just wanting to get work done.
At that point, VSCode becomes mighty appealing, and it’s a welcoming editor to return to. My configuration is auto-synchronized. My snippets from years past are all there waiting for me. LSPs just work. It’s just easy.
VSCode is not blocked at work
This is a big one; otherwise I’d probably be using Zed. My company’s security software blocks all unblessed binaries. I can seek approval, and often do for standard, defensible tools like ripgrep, but it’s a process, and it forces me to think about whether I really need the software in question for my day to day work.
VSCode is perma-approved. That really simplifies things for me during business hours.
For more on this, see my section on Zed below.
Robust remote development
VSCode’s Remote Development feature is great for my personal remote-dev work. It took a sec to figure it out, but it’s been smooth sailing ever since.
Zed’s equivalent is really good, too. But see my Zed section below.
Past adventures
Zed
I used Zed when I first wanted to work on my stuff remotely, and it was good. My files lived on my Mac Mini at home. I could access them by SSHing through a jump server running Tailscale. I can’t run Tailscale on my work laptop, so the jump server was necessary.
Zed made this all feel more or less like working on my files locally. It was rad.
Problems with Zed
Zed is under very active development. Which is awesome. Less awesome: each time it updates, I have to get it reapproved at work because it shows up in my company’s security software as a fresh, unknown binary. That’s fair. I get it.
During one of these reapprovals, there was a signal that the company might be further scrutinizing Zed usage. And, to be fair, suppose they came to me and said, “Can’t you just use VScode instead?” The only reasonable answer would be, I totally can. I prefer Zed for reasons that are thoroughly irrelevant to my work.
So I figured the writing was on the wall and started to look for the next option.
Neovim
I love many things about Neovim. I love that it’s so fast and light. I love that it runs in the terminal. I love all the Ninja-like editing tricks. I love that it gives me a consistent set of editing keybindings across macOS and Linux.
I’ve thrown myself at Neovim a few times over the years. See this post for some thoughts on my latest toss.
Problems with Neovim
Since Neovim doesn’t have its own remote-SSH feature, I was doing my remote development in the terminal by SSHing into my home server via the jump-server proxy. That meant that every keystroke had to do multiple network hops to get from the source to my screen. And it felt like it. It was sluggish.
Also, as mentioned above, Neovim configuration is a side quest.
It takes a lot of time, and here are a lot of decisions with no correct answers.
For example, what is the best cocktail of plugins and configs to get LSPs working well?
Should I still use
Mason?
What about
mason-tool-installer?
Which LSP is best for <language>?
Add my locked-down work machine to the mix and it generates more questions, like, are the binaries that each LSP needs to run actually approvable, or will they be blocked?
These questions cause decision fatigue. Sometimes I enjoy doing all the research and experimentation to find my own answers. And sometimes I don’t.
Finally, I started having second thoughts about modal editing for my use cases. That pushed me to move on.
Emacs
Ahh, Emacs.
I’ve had torrid love affairs with it in the past, but it always ends up driving me a little crazy. You can read about my last round with it here.