DEV Community

Cover image for (Neo)Vim Makes You a 10x DEV, and I'm not Kidding

(Neo)Vim Makes You a 10x DEV, and I'm not Kidding

Shrijal Acharya on February 10, 2025

WOAH, that's a bold statement 🀨 Wait, I'll explain... So you've clicked on the post, which likely means you are from other code editor ...
Collapse
 
anmolbaranwal profile image
Anmol Baranwal β€’

As you said, it's more about a mindset of efficiency (at least I feel the same). Great write up Shrijal. πŸ‘

Collapse
 
larastewart_engdev profile image
Lara Stewart - DevOps Cloud Engineer β€’

Yes, I feel the same. It could be VIM where you are efficient, or it could be any other IDE like JetBrains or VS Code. But at least you should give VIM a try.

I am thinking of learning VIM myself. I plan to start by having the VIM plugin installed in VS Code.

Collapse
 
shricodev profile image
Shrijal Acharya β€’

Starting out with the VIM plugin installed is a great way to begin.

Thread Thread
 
ddebajyati profile image
Debajyati Dey β€’ β€’ Edited

Maybe, but I don't agree.

As far as I listened from others' experiences, the vim extension only gives a crap experience.
I know jumping straight into Vim can feel notoriously dangerous but hey, trust me! This is the best possible way.

Let me explain, why, I have, such a strong opinion.

  • You can't simply "half do" Vim. You can't! By mixing VS Code's GUI way and Vim's modal editing will lead you to the drawbacks of both systems and the advantages of neither.
  • You will see yourself struggling to consistently use the Neovim extension, constantly switching back to familiar VS Code shortcuts. This back-and-forth will hinder your productivity and learning, ultimately preventing you from truly grasping Neovim.
  • Your reliance on VS Code's familiar shortcuts and mouse usage will prevent you from breaking those habits and embracing Vim's unique workflow. You remain trapped in your old coding style, never giving Vim/Neovim a fair chance.
  • Using Vim commands in VS Code is not a real solution. It creates a false sense of familiarity while masking the fundamental differences between the two environments. While you initially attempt to use the Vim extension, you will likely gain a superficial understanding of Vim commands and the actual Neovim workflow. However, this didn't translate to actual Vim proficiency because the underlying environment and workflow were still VS Code-centric.

To truly learn Vim, you need to commit to it fully, outside the familiar environment of VS Code.

Now the obvious obstacle ahead is your current ongoing work. You have a job. You are working on something. You can't just directly jump on a completely alien environment and get your job done, in time, being productive, without having knowledge and prior experience of that environment. And that's okay.

Take your time. Try vimming in a different workspace. Mayybe something like a hobby project? Which you have plenty of time to spend on? Why not share the time on coding while learning vim by writing code on vim?

Or maybe you would learn to be proficient in basics (of modal editing) first.

The thing is for getting used to with the basics of vim(just the basic writing, editing, saving and exiting), imo it's actually better if you start using it as a notepad replacement if you are currently running Windows.

Why? Because it is a much simpler, easy approach. It's like breaking your big problem into smaller parts, a relatively more doable way. You start using vim as your secondary note taking app. Then slowly the keybinds, the commands and the whole workflow makes a permanent place in your muscle memory. That ubiquitous text editor, will eventually go ranks higher becoming your go to quick note tool, and then someday your universal text editor.

Learning vim is a journey. It takes time. It also needs a great starting in the proper way if you don't want getting lost somewhere in a jungle of conflicting hybrid environment, messed up.

That being said, Vim or if more accurately said Neovim is inherently universal. Neovim is faster than vim. It takes less startup time to open than vim and you can use it for basic one line config file edits to coding a large software project, efficiently. It's so unique, it needs to be done in it's own way.

And for getting the modern features like autocomplete, copilots, formatters, there are lots of plugins available in the ecosystem. The most beginner friendly way will be adopting a preconfigured distribution like LazyVim, Kickstart.nvim etc. to get started without initial config build up overhead.

This how you slowly & ultimately become one of them. The OG martian vimmers!

This is what I understand. What do you think?

Real world people experience 1

Real world people experience 2

Thread Thread
 
shricodev profile image
Shrijal Acharya β€’

@ddebajyati You hold a point. The thing is, if you plan on using the VIM plugin in any GUI IDE, just use it until you’re comfortable with the basic VIM motions, I'd say. Most folks never try VIM because of their fear of the terminal, TBH. At least with the plugin, you can experience what surface-level VIM is like.

If I were to recommend someone to start with VIM, I’d suggest going with raw (Neo)Vim for sure.

Thread Thread
 
ddebajyati profile image
Debajyati Dey β€’

Yeah kinda true. People are scared of the terminal.πŸ˜‚

For me it was really exciting and interesting because it felt like I am some cool hacker! πŸ˜‚

Thread Thread
 
shricodev profile image
Shrijal Acharya β€’

So true. Even more, if you have that green looking font for your terminal. πŸ˜†

Collapse
 
shricodev profile image
Shrijal Acharya β€’

Thank you, @anmolbaranwal, buddy. ✌️ Yeah, it's the mindset that makes the difference. For me, with VIM, everything is at my fingertips, and there is no friction in the workflow.

Collapse
 
aavash_parajuli_72 profile image
Aavash Parajuli β€’

I can 100% agree on this. I did not go for this book, I used the nvim default help pages.

:h help.txt
Enter fullscreen mode Exit fullscreen mode
Collapse
 
shricodev profile image
Shrijal Acharya β€’

Yeah, I fully agree with this. I feel that when I was starting out, I did look at the help pages, but not thoroughly.

Collapse
 
ddebajyati profile image
Debajyati Dey β€’

totally agree. The help command is a game changer.

Collapse
 
jesterly profile image
Jester Lee β€’

Although I do agree Vim is highly efficient, this isn't exactly true either:

Once you get the hang of VIM motions, you start to realize how much time you’ve been wasting with your mouse or arrow keys.

From my own observations as a Vi user since 1994 and someone who has sat next to hardcore Vim & Emacs coders since 2000, veteran VS Coders rarely touch the mouse, and I hate to admit this but they are just as productive as Vim coders, if not more so with the help of Copilot. By far, the #1 prerequisite to being a 10x dev is your proficiency at the language you're coding in (and of course your IQ), not the tool you're using :-).

Collapse
 
shricodev profile image
Shrijal Acharya β€’

For sure, being super efficient in anything will take you far, and it doesn’t have to be Vim. That said, for most folks, plain VS Code might not be the best option, and some may not even know that something like VIM exists to give it a shot at least. But at the end of the day, it’s all about what works best for you.

By far, the #1 prerequisite to being a 10x dev is your proficiency at the language you're coding in (and of course your IQ), not the tool you're using :-)

I completely agree with this. Goes without saying.

Collapse
 
decaf_dev profile image
decaf Dev β€’

I think this is a great article. The only push back I have is on efficiency. Efficiency is highly overrated in my opinion. There are better mindsets to spend time contemplating as a developer or engineer. A few would be security, maintainability, and sustainability (carbon footprint). Sure, using a tool like Vim can help with these, and that is one of the reasons I think it is a valuable tool 😁.

Collapse
 
shricodev profile image
Shrijal Acharya β€’

Yeah, VIM is just so valuable for so many things, you know, especially once you get the hang of it.

Collapse
 
ddebajyati profile image
Debajyati Dey β€’

So for you it started with typecraft. In my case, it all began with Elliott Means (Dreamsofcode).

Man, ngl that aesthetically pleasing Neovim rice made me get out of my comfort zone from vscode to trying something new, exciting, FANTASTIC!

Learning vim has rewarded me in many different ways. The most important one was actually being able to get what I want by digging into the Documentation rather than being stuck in the never ending vicious loop hell of prompting ChatGPT while GPT is giving really awful results.

I won't say "I don't use AI anymore". That would be an unbelievable lie.
But, what I mean is that - when solutions don't already exist, you get nothing valuable from Stackoverflow or AI Chats, then only way out is to READ docs. Learning Vim, Vimscript, and configuring Neovim has made me capable and get used to understand and get what I need from the Docs when building some project(which used to be very difficult for me at some point of time, I could never stands libraries without watching a tutorial from YT or prompting CHAT-GPT), without getting intimidated or scared.

Well, I would like to know where did you get the name 'vim' for the very first time. Was it typecraft or something else?

Collapse
 
shricodev profile image
Shrijal Acharya β€’

I had heard about it a few years back and mistakenly stepped into VIM once when trying to edit a configuration file. Like many others, I didn’t know how to close VIM, so I had to Google something as simple as closing an editor. It felt horrible, and I didn’t look back at it for at least a few years.

But then I got to know what VIM really is through Typecraft, and this long journey of setting things up introduced me to folks like ThePrimeagen and TJ along the way.

I use something similar to Copilot, but it’s called Codeium. I don’t use it very often, but autocomplete really helps sometimes.

VIM really introduced me to stuffs similar as you said, so it has definitely helped me in so many ways.

Collapse
 
aayyusshh_69 profile image
Aayush Pokharel β€’

Great one sathi. 😍πŸ₯°

Collapse
 
shricodev profile image
Shrijal Acharya β€’

Thank you, Aayush ✌️

Collapse
 
yoelp profile image
Yoel Pinhas β€’

Good article, really enjoyed reading it.
I honestly envy you.

I'm oldβ€”I started writing code in the '90s. In the early 2000s, I was an early adopter of Eclipse. It blew my mind how a GUI could help me write code better. I have ADHD and dyslexia, so achieving fluency in projects with hundreds of classes always felt like a real challengeβ€”until I started using IDEs.

Back when I started, Vim and Emacs were the only real options. I customized them to suit my needs, but I never reached full satisfaction. Around 2009, I transitioned from software development to design verification and had to go back to using Vim and Emacs. This was after six years of watching IDEs evolve rapidly. It was a nightmare. I felt like an idiotβ€”trivial tasks took me forever because I couldn’t feel in control. I couldn’t remember the massive class hierarchy, the instantiation chain, or even where certain functions were and what their signatures looked like. My dyslexia and ADHD became serious obstacles, and I even started doubting my abilities as a developer.

So, I toyed with the idea of writing an Eclipse plugin for Specman. Luckily, a new product with the same goal was being developed, and I reached out to the developers, who gladly gave me a tester license. It turned out great for everyoneβ€”developers in DV quickly grew fond of it, and my company ended up purchasing multiple licenses. Most importantly, I regained confidence as a developer.

You see, tools are personal. As a minimalist, I really like Vimβ€”I wish I could use it. But for me, it’s more of a distraction. This post is just a reminder for you younger devs: there’s no silver bullet, no one-size-fits-all solution. For some, Vim is great. But if it doesn’t work for you, you are not the problem.

Collapse
 
shricodev profile image
Shrijal Acharya β€’

@yoelp The comment really made my day. Thank you so much! πŸ˜‡πŸ™

Collapse
 
kwnaidoo profile image
Kevin Naidoo β€’

Nice read! For eager beavers 😊 try "LazyVim". It'll install all the IDE features you need for most languages.

I still use VScode, but Neovim is also very productive especially since I am big on Linux and the terminal and love to stay on my keyboard.

Neovim + nohup + tmux is just super productive! Also starship.rs/ and ZSH makes the terminal so much nicer to work in.

Collapse
 
shricodev profile image
Shrijal Acharya β€’

Thank you, @kwnaidoo ✌️.

Yeah, starting with a distro can be a good option and is recommended by most of the fellows in the community as well.

Neovim + tmux is pure gold 🀍

Feels silly that I didn't know about nohup. Thanks for sharing this. Starship is super awesome, but recently I’ve started opting for the RobbyRussell prompt instead, as its Git features really felt like they were slowing down the prompt load for some reason. πŸ€·β€β™‚οΈ

Collapse
 
gnsp profile image
Ganesh Prasad β€’

I have been a long time vim user (started using it in 2012) and really efficient at it. Currently my vim configuration does almost everything that vscode does.

And I don't think it makes me a better developer as such. 2 years ago I started using vscode and intellij idea because most of my colleagues used these, and I found that a modern IDE does boost productivity. I still use the IDEs with vim mode, because "muscle memory", and do most of my build / test / deploy stuff from the terminal -- but modern IDEs generally offer more convenience than vim.

Also, majority of the things that actually make me a more productive developer are not related to any editor. Here are some of the things that helped me boost productivity:

1.I got a lot of scripts to do a lot of stuff, especially the boring stuff.

  1. I also got a lot of aliases (most from oh-my-zsh, some I configured myself), if I have to run the same command multiple times, I configure an alias for it.

  2. Touch typing, I learnt the proper typing technique a bit late (~2020), but that was a good investment of my time.

  3. Most importantly, I rarely use fuzzy search. In almost all of the projects I work with, irrespective of complexity and size, I take my time to understand the structure of the code I'm working with. I use grep a lot (and usually with regex). Plus I have my own set of scripts to actually parse large volumes code and answer more complex queries about the codebase.

Collapse
 
shricodev profile image
Shrijal Acharya β€’

Yeah, I understand you, it’s a matter of preference. For me, actually doing all the stuff in the terminal really feels like home. Making the switch from Vim to the terminal is just one key press away.

For me, though, everything that a GUI IDE does which I need is ported to my Vim workflow. I don't see any features that I miss in Vim which are available in other IDEs, and I plan to stay native to one thing. Things I use the most, I like to keep minimal and easy to switch, and so is my Vim configuration. The main killer feature for me is that there’s nothing that requires me to start using the mouse in the middle of coding. Switching between multiple projects is just a few keypress, with tmux + nvim workflow with ThePrimeagen tmux-sessionizer script.

All of this is what is stopping me to use any other IDEs, at least for now.

IDEs with plugins help, but not much. Still, there are a lot of things where you need to use a mouse. If you feel like customizing all that stuff adding a keybind, you’re better off with something that doesn’t require it. As @ddebajyati has mentioned in the comment here, the incomplete "half VIM" might instead hinder mastering it or overall your productivity.

Touch typing, I learnt the proper typing technique a bit late (~2020), but that was a good investment of my time.

I must say, this is somewhat the same case for me. I did learn touch typing a bit late, and I feel Vim complements it, as you have to continuously type characters other than a-z, and all that really helps. Just a few days ago, I hit 98 wpm with symbols.

Collapse
 
hbthepencil profile image
HB_the_Pencil β€’

After reading this, I might have to try Vim sometime... I'm mostly a Python dev, though, so not sure how much more efficient this would be than PyCharm.

Collapse
 
shricodev profile image
Shrijal Acharya β€’

Give it a shot! I'm not familiar with PyCharm, but you should get decent experience using Python in Neovim if the LSP and everything are set up properly.

Collapse
 
nitincodery profile image
nitin β€’

Image description

Collapse
 
shricodev profile image
Shrijal Acharya β€’

Imposter detected! πŸ˜†

Collapse
 
zwilliamtm profile image
William Martinez β€’

Vim only for no ui-developer… run SwiftUI, Kotlin JetpackCompose…

Collapse
 
shricodev profile image
Shrijal Acharya β€’

I'm not very familiar with these, though. For most of the devs, it shouldn't really be any issue.

Collapse
 
gimalay profile image
Dmytro Halichenko β€’ β€’ Edited

Vim motions are also great for notes taking. I even build extension (LSP) for this github.com/iwe-org/iwe

Collapse
 
shricodev profile image
Shrijal Acharya β€’

Good one @gimalay, ✌️ I'll take a look at your plugin. Note-taking is definitely superior in Neovim. For now, I'm using Obsidian, but I plan to start editing Markdown in Neovim soon.

Collapse
 
shricodev profile image
Shrijal Acharya β€’

If you're interested, you can view my dotfiles here.
github.com/shricodev/dotfiles

Collapse
 
yogoboywe profile image
Yogor Vinece β€’

Neovim all the way!

Collapse
 
shricodev profile image
Shrijal Acharya β€’

Hell yeah! πŸ™Œ

Collapse
 
orlan_marciales profile image

IMHO, this reads up more like a CEO/CTO cheap excuse on "How we can save costs?, Yes let's write up an article on how to use VIM (which it's free), but with a free extension (too)"

CEO/CTO: OK, now give me my BONUS for saving money to corporate...

XD...

Collapse
 
alptekin profile image
alptekin I. β€’

Not writing to oppose, in fact I really like the idea (and neovim) but I could not go thru the process of learning Lua (could not spend time as I had to learn much other things). Maybe later, I will try once more. Currently I am using vsCode with vim motions, zen mode, trying to be quite minimalist, using the same theme when I was using neovim, and think that it is (like) neovim, until I need to install an extension (and not trying to be much greedy here) :) and use the git commands (I sometimes write git commands on terminal but I use vs code’s interface too)… good luck.

Collapse
 
shricodev profile image
Shrijal Acharya β€’

Learning Lua was a small challenge when trying to shift, but it was only required to the extent needed to set up a plugin configuration. So, it didn’t take long. Some people I admire, like Anthony GG, follow vscode-vim approach, mostly using VS Code but knowing enough Vim to switch between VS Code and Neovim as needed.

So yeah, if there’s no friction in your workflow, and you can build things faster in VS Code than in Neovim, I don’t see any problem. You can definitely give it a shot in the future. For now, try improving your Vim surface level commands muscle memory in the VS Code.

Collapse
 
oblivianos profile image
Αλέξης Β«OblivianosΒ» Ξ£Ο„Ξ±Ο…ΟΞΉΞ±Ξ½ΟŒΟ‚ β€’

so what about debugging? VS code makes i a breeze to debug a nodejs program. can you do it in vim with the same ease/tools the vscode debugger provides? I have tried a bit of REPL to debug in terminal but it felt alien and clunky

Collapse
 
shricodev profile image
Shrijal Acharya β€’

For this, there is nvim-dap. It might not be very visually appealing or intuitive, but it gets the job done.

Collapse
 
c_k_c6c7156c1f991203855d0 profile image
C K β€’ β€’ Edited

🎢You may check out anytime you like, but you can never leave.🎢

I can never figure out how to exit vim and get stuck there forever!!

Collapse
 
shricodev profile image
Shrijal Acharya β€’

You may check out anytime you like, but you can never leave.

This should actually be their slogan. Somehow, everyone gets stuck there first and forever.

Collapse
 
dhanush9952 profile image
Dhanush β€’

Good to see a post on NEO VIM after a long time. πŸ‘

Collapse
 
shricodev profile image
Shrijal Acharya β€’

Hope you liked it, @dhanush9952.