Leaving VSCode
Tags: vscode, vim
Published: 2020-08-05 21:25:20

Spoiler alert: I'm old. Old enough that uni assignments would be mostly done by ssh'ing into the mainframe computer and work there. At a time where the editor ecosystem was quite frankly... not there. Sublime didn't exist at the time, and nano felt underwhelming compared to vim, especially with our professors handing out vim tips as we'd go through stuff.

So I learnt vim, and modal editing. And never left that knowledge behind. I feel it's quite useful if you take the time to learn it, the same way your capacities grow as you learn shortcuts for your favorite editor. Vim just placed it at the forefront. Given that most editors support vi bindings, it's not knowledge that goes to waste if you leave vim behind.

Which is what I've done for a while now! First for Emacs, which has the best vi emulation layer, and would argue edges out vim in places! It was fun while it lasted, but as I moved towards a frontend-focused role, VSCode autocomplete was too appealing a deal to think about not  using it. The bindings were adequate. Limited and not super nicely integrated, yes, but adequate. The completion magic really sold it despite the modal layer shortcomings.

But let's be honest for a minute. Microsoft sucks. They went to great length to change their image, but the fact remains that the company is collaborating with rather unsavoury actors, and still struggles to treat their employees decently, especially when it comes to their marginalised workers. And I'm not ok with that. It's not really my job to fix Microsoft issues, and it's probably not something that can be fixed under our current economic system. But the fact remains that I am uncomfortable using their products, and that's the thing I can do something about, especially when it's not something that would hamper my visibility nor something that my workplace uses extensively like github. VSCode fits the bill, and so we said our goodbyes.

I tried going back to Emacs, but their LSP integration is still slow unless you're willing to go on the bleeding edge, and even then, things look uncertain when it comes to protocol extensions. A lot of the really magical stuff happens in those, and these niceties are hard to forget about. I thought that vim did not handle these either, [as YCM has no appetite in doing so](https://github.com/rust-analyzer/rust-analyzer/issues/2518#issuecomment-618828465). But I was wrong! [coc.nvim](https://github.com/neoclide/coc.nvim) is a fully featured LSP implementation that strives to offer the same capabilities as VSCode (Not just the LSP) all in the comfort of a native modal editor. Javascript and Typescript are part of the default bundle, but other LSPs are readily available too, and work quite nicely.

I gained a lot in the transition. I don't need to leave the terminal anymore, it feels a lot snappier, which I find especially important on something I use on daily. I got back to a modal model that just works, without any quirks, and a very minimal interface to leave space for what matters: the code.

I'll probably continue fluttering around over the years to be honest, unless I actually manage to write [my own thing](https://github.com/synecdokey/viper), that works the way I want it to!

PS: I use Neovim, and you probably should too. Vim is trying to diverge more and more from Neovim, but goes in a direction that looks a lot less appealing than [Neovim's roadmap](https://neovim.io/roadmap/).