A while ago, I experimented with Neovim - a highly customizable text editor loved by many developers. While it's an incredibly powerful tool that many use successfully, I found myself spending my evenings tweaking configurations and exploring new plugins. It turned into quite the time sink - fun to set up, but many features ended up unused in my daily workflow. Dealing with updates could be tricky, and I missed the more mature AI capabilities that VS Code offered.
So I decided to move back to VS Code, and eventually to Cursor. Everyone keeps talking about Cursor's Composer feature, but I'm kind of addicted to the multiline edit feature. It's just neat how it suggests changes to multiple lines while I'm coding and it's not getting in your way. The switch was pretty straightforward - I installed the Vim plugin to keep my familiar Vim movements, and since Cursor is built on VS Code, I got access to all my favorite extensions too.
I've been using this setup for a while now, and thought it might be fun to share how I've configured everything. Maybe you'll find some useful bits for your own setup. I took inspiration from Lazar Nikolov's VS Code vim setup and added my own twist to it.
Quick Disclaimer
Hey, just a quick heads up - this is just my personal setup that evolved over time. There's no "right way" to do this stuff, and what works for me might drive you nuts. Feel free to grab any bits you like and tweak them to match your style. The best setup is the one that doesn't get in your way while coding. Also, you could use this setup in VS Code as well.
Essential Settings
Let's start with the basic settings that make this setup work. These go in your settings.json file:
Keybindings Setup
I've organized my keybindings into different categories to make them easier to understand and customize. You can add these to your keybindings.json file.
It certainly does not cover everything that I used within Neovim, but it covers the most important ones for me. I still miss the Telescope plugin for Neovim, but for now I'm fine with just using the search bar in Cursor. I think this will not be the last iteration of this setup, but I'm pretty happy with it for now.