Beyond Vim emulation in VSCode

David Ratier
3 min readMar 31, 2021

Pros and cons of different modal edition strategies in VSCode

I’ve been experimenting a lot with my VSCode config lately. I’m looking for the best modal editing experience for my favourite IDE. Here’s what I found so far.

1. VSCodeVim

This is the official vim extension maintained by the VSCode team as some other popular extensions (Github pull requests, Gitlens…)

Although it works fine, there are some issues for now that are a dealbreaker for me :

  • It feels clunky and slow
  • It’s not very configurable

Since it’s under active development I believe it will get better and I might get back to it.

2. VSCode NeoVim

I tried out this setup for a while and I must say it was way better than the classic Vim emulation. Although it is much more complicated to set up it’s worth the hasle in my opinion.

This extension allows us to use real neovim as a backend for VSCode. We can then customize our init.vim as we would normally do and benefit of a more customizable vim experience right inside VSCode. Menus are key navigable and a command prompt is available for vim commands such as “:w” or “:q”.

  • Real vim is running under the hood (no emulation)
  • As a consequence of the above statement it’s completely configurable throuh your vim.init
  • It requires nvim 0.5.0 or above which hasn’t been release into a stable version yet. You’ll need to use the nightly nvim build for this to work. This is a huge con as your system might break any day (although it’s unlikely thanks to the amazing team behind nvim)

Youtuber ChrisAtMachine as made an awesome video on the subject. He’s also working on a NeoVim config that feels like VSCode if you want to go that way.

3. OniVim2

THIS IS STILL IN ALPHA AND IS UNUSABLE FOR NOW

I’ll put this here as I’ve been trying it out in my research for the ultimate modal editor. It’s not actually VSCode but is marketed as a VSCode compatible editor, which means it can support extensions in the open VSC extensions registery.

  • VSCode extensions compatible throught the Open VSX extensions registry
  • First class, rich vim experience with navigation and airline
  • Native implementation (no electron) using ReasonML and Revery

The beta version is being developped right now. I purchased a 40$ lifetime licence to support the project, while you could live with this editor as it is there are too many issues for it to be a viable alternative to VSCode, for now…

I still encourage you to look it up, maybe not buy a licence for now, but you can support the project with Patreon

4. ModalEdit

This is what I use for now in my day to day config. It is highly configurable and allows you to design your own modal editing experience.

It perfectly integrates into VSCode because it only uses VSCode commands under the hood. Presets are available such as Vim or Kakoune.

The downside is that the maintainers don’t seem to be very active, I’ve opened a pull request over a month ago and still didn’t get any response.

--

--