DEV Community

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

Posted on

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

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 families (VS Code, Cursor, and whatnot).

Now that I am a Neovim user, I simply cannot stand GUI IDEs. I can relate to this video by Nir Lichtman more and more as I am in the VIM workflow.

This is by no means to say that anyone who uses GUI editors is not an efficient developer. DON'T GET IT WRONG!!

First, let me share my story before sharing anything else.

My VIM journey starts

When starting to code, everyone suggests using VS Code, so I started using it and that was my preferred choice of editor as well.

But after using it for 4 whole years, I started to get sick of it. Everyone suggests thousands of different extensions for one single niche in programming.

And I fell into the trap of installing most of the recommended plugins which I didn't even use ever. It was just sitting there in because it was so-called recommended extensions, and also you feel a bit of guilt to remove recommended things, right? 🫤 so they were just there.

One day, out of nowhere, this video from typecraft, got recommended in my YouTube feed.

I was so tempted to check out what VIM really is. Before this, I never used VIM because once, when I entered VIM accidentally, I had to spend quite some time figuring out just how to close it 🫤, so didn't even have a thought of using it. So, for any terminal work that required using an editor, I used nano.

So, I finally decided to take a look into what all this hype for VIM in developers was really about.

To my surprise, I was really hooked on the VIM ecosystem in no time. Then I did all the LSP configuration, autoformatting, fuzzy finding, and more, which you get pre-built in other GUI IDEs. I loved manually configuring everything down to the minutest details to my preferences.

I got to know how all of this works behind the scenes, and I already knew VIM was my thing.

Then, it was time to learn some VIM motions, so I started learning VIM motions from YouTube. After watching quite a few videos on VIM motions, it didn’t really feel like I knew VIM motions and everything else in VIM more than the basics.

So, that led me to read this fantastic book "Practical Vim" by Drew Neil.

Practical Vim Cover Page

This book introduced me to the soul of VIM. I’m never a book-reading guy, but I read this 356-page book that just talks about VIM. 😴

From this, as you can imagine, I am already quite into the VIM ecosystem and have no thoughts of going back to any other IDEs, at least for now.

What Next?

When I started learning VIM, I thought learning VIM was just learning VIM, but I was completely wrong!

It introduces you to the whole ecosystem of developer tools. After entering this terminal ecosystem of editors, I learned quite a few other developer tools like tmux, stow, window managers like i3, and overall, the importance of understanding things by reading and doing rather than watching some YouTube videos and learning.

Using VIM and entering this complete terminal ecosystem actually convinced me to completely switch from Windows with WSL2 to a full-time Linux user with Arch.

Mind Blown GIF

For me, it was Arch, for you, it might be something else, but you will find reasons for transitioning into Linux.

Along the way, I got to know some of the OGs like ThePrimeagen, TjDevries .... the Mario and Luigi of the Neovim cult.

Primeagen and Tj Devries

How exactly a 10x DEV?

The phrase 10x dev sounds a bit weird, but to me, a 10x dev is really just a super-efficient DEV. And let me tell you, VIM is like the cheat code to becoming one.

After using VIM for quite some time now, it feels great to say that I don’t even have a GUI editor installed on my machine. It’s just me, my terminal, and VIM. And honestly, I’ve never been more productive.

Here’s the thing: VIM forces you to think differently. It’s not just about typing code, it’s about editing text efficiently. 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. You start to think in terms of actions and movements. Want to delete a word? dw. Delete a line? dd. Need to jump to the end of the file? G. It’s that simple.

And the best part? VIM is everywhere. Once you’re comfortable with it, you can SSH into any server, open any file, and feel right at home. No need to install a bulky IDE or configure a million plugins. It’s just VIM, and it’s always there.

Typing GIF

So, is VIM the secret to becoming a 10x dev? Maybe. But more importantly, it’s about adopting a mindset of efficiency. VIM is just the tool that helps you get there.

And hey, if nothing else, at least you can say I use VIM, BTW! 😂


Wrap!

So, there you have it! This is my journey from being a GUI-loving dev who cared more about the aesthetics of the editor to becoming a terminal-obsessed VIM fellow.

If you are still on the thoughts of giving VIM a try? I say go for it.

You will definitely feel the power that comes with staying in the terminal overall.

Top comments (24)

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! 😂

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
 
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
 
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
 
aayyusshh_69 profile image
Aayush Pokharel

Great one sathi. 😍🥰

Collapse
 
shricodev profile image
Shrijal Acharya

Thank you, Aayush ✌️

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
 
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
 
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

Some comments may only be visible to logged-in visitors. Sign in to view all comments.