Unpopular opinion: Vim is better than modern IDEs

Unpopular opinion: Vim is better than modern IDEs

Well.. not Vim exactly, more specifically NeoVim or LunarVim. NeoVim is a refactor of the traditional vim with lots of features. LunarVim is an IDE layer on top of NeoVIM which is great. LunarVim is by no means a requirement, you can choose to configure NeoVim as an IDE to your liking using available plugins.

LunarVim gives you an IDE-level experience right out of the box. Language servers, auto-completion, code actions, and debugging. Granted, it's not set up for every language and framework, but the configuration is simple. I'll share my configuration of LunarVim once I've properly structured it.

But why?

Now.. to the controversial opinion that Vim is better than modern IDEs. Visual Studio and JetBrains' IDEs are fantastic, no doubt about it. It works great, right out of the box with no or minimal configuration required. If you just want to download an IDE and get at it, there are most likely the best options for you. However, if you would like to configure your IDE just to your liking, in an environment that is focused on keyboard shortcuts minimizing mouse usage, and maximizing efficiency, you should take a look at Vim.

As I recently built a custom keyboard (link to post) Vim was all the more appealing to me as I like to use the keyboard as much as possible. Writing code at work and home for multiple hours a day, I like to take good care of my hands reducing risks of carpal tunnel. Vim allows me to keep my hands comfortably resting on my keyboard to carry out all actions I need. With some smart window management tools on Mac, I can navigate all my applications with the keyboard as well.

My favorite features

This video highlights some of the shortcuts that are extremely useful. But in general:

  • Navigation is made super easy
  • Text manipulation is extensive
  • Macros! Recording an action you want to perform multiple times
  • Create shortcuts for anything you want

Overall, it's centered around shortcuts. Creating breakpoints, fuzzy searching, replacing text, and surrounding text. It's optimized for efficiency, and a proficient Vim user is blazingly fast, as The Primeagen would say.

A compromise

If you're used to the functionalities in Rider or VS and don't see yourself spending countless hours configuring and setting up your vim environment, I get it. Rider and VS have extensions that bring vim motions to your favorite IDE. This allows you to take advantage of the amazing navigation properties of vim inside your IDE. I find myself going back to rider once in a while for .NET development, using IdeaVIM makes this experience much more pleasant.

A final note

I'm not trying to push vim down your throat. I want to open you up to the idea that vim is in fact a great alternative to the more traditional IDEs, given you give it some time to get used to and set it up. It's free and open source and unlimited in possibilities. I find it more fun to write code using vim, I watched a youtube video once, and he put it well: vim feels like you're playing a game. As I'm getting the hang of it, I feel more productive and have more fun while working on my projects.

I plan to publish a post in the future about my lunarvim config with a detailed instruction on how to set it up yourself.