I spent some of grad school really getting into Vim. Then I shifted around, and most recently I’ve been using VSCode. A number of my colleagues (per screen-share demonstrations) seem to use some kind of neovim, but I’ve not really talked to anyone about it. I think I learned about neovim a while ago from Hacker news, so it’s been very lightly on my radar.
I like the general idea of the editor being something you get-in-and-get-out–vim’s original idea. I really tried to use Emacs as an OS a while ago, and I was never quite able to buy into that. Alon those lines, when I see various youtube videos on how to set up neovim, so many of them basically celebrate setting it up as an IDE. This suggests they don’t see the same “cost” to plugins that I do!
Cost of Plugins
Plugins add some functionality to neovim, but in turn increase the size of the cross-product-of-compatibility you have to worry about. If I have 30 plugins active when editing some source file, and suddenly neovim crashes, I have at least 31 things to consider investigating. I’d rather not! Even in the non-buggy case, when there is a plugin that I really like, to a degree I have to care about the compatibility of it with all the other plugins. This is true as things upgrade, or there’s some hotness (like a new plugin manager) that suddenly half the plugins want to move to, and half the plugins don’t. From what I can tell so far the plugins in neovim work hard to maintain compatibility, but that’s just it: it’s hard work!
Using “just” neovim doesn’t spare one from this, of course, but meaningfully reduces that cost. In a sentence, plugins increase the area-of-compatibility-concern quadratically.
Goal of Using Neovim
I’m comfortable, in theory at least, to customize nvim. That, plus its wealth of code motions and operations (for which I’ve been a middling amateur!) feels like it opens a lot of doors to improving the inner loop of my work. “Surround” motions, registers, marks, and of course the genuinely-great plugins available are things that, if I really internalize, might very well really help me. So I’m going to be looking at neovim with that aim.