DEV Community

Sergey Kislyakov
Sergey Kislyakov

Posted on

Should I learn Vim (or its keybindings)?

I wonder does Vim really boosts up your productivity. My IDE has the keybindings so I wonder should I give it a shot or not.

Top comments (25)

Collapse
 
mortoray profile image
edA‑qa mort‑ora‑y

I use vim for small things in the console, or when over a network connection. Beyond a few basic commands I don't know much, and would never use it for more than minor changes. It also tends to pop up for some git commands.

Minimal commands I use frequently:

  • i to edit a document
  • ESC to get to non-edit mode
  • dd to delete a line
  • d + down_arrown to delete a couple of lines
  • ESC to enter commands
  • :w to save the file
  • :q to quit, and q! to quit without saving
  • :m-2 to move a line up one, useful for reording git commits
Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

I started learning vim a while back, and I've never regretted it. I can be so much more productive in it in the command line than I can w/ programs like nano. Sometimes it's even faster than my IDE for particularly complex changes.

That said, vim isn't for everyone. Try it and emacs both - they're quite different, but allow the same degree of uber-productivity once you master it - and then decide which one you like better and learn it. You won't be sorry!

(In case anyone wonders, I hate emacs personally...but I recognize that as my own preferences and way of thinking! I have never known anyone that liked both emacs and vim, but one can almost invariably master one or the other.)

Collapse
 
jaysoifer profile image
Jonathan Soifer • Edited

Hi,

Time to update this answer.

There is an emacs version called Spacemacs with a vim editing mode.

It’s a distribution aimed at those of us who love vi and its keybindings and the power of emacs as an “operating system”.

So #1: it is possible to like both. I see absolutely no reason why not.

And, based off of that, I don’t understand what you mean by “almost invariably”.

So #2: yes. You can master both. There is no evil demon that formats your HD if you try it.

Collapse
 
bobcoggeshall profile image
Bob Coggeshall • Edited

I learned VI around 35 years ago. Yes, you will need to spend a little while becoming as productive in what ever editor you are currently using... Other editors have come and gone. It is still my personal choice and I am still learning new tricks to become more productive in it. I am very impressed it is still so popular to this day. sudo you're welcome.

Collapse
 
eljayadobe profile image
Eljay-Adobe • Edited

I use Vim. I think it is great... for me.

Give it a try. If you like it, great. If it doesn't work for you, that's understandable.

You will want to take a quick look at this Tutorial.

I found this to be a helpful Cheat Sheet. (Hmm, although that one is lower resolution than the image I have. UPDATE: here is a higher resolution version.)

Collapse
 
defman profile image
Sergey Kislyakov

I'm using this cheatsheet for now. I already navigate and edit my code with Vim keybindings and I kinda like it.

Collapse
 
svnset profile image
Robin L. • Edited

Well there may be good vim plugins like those from Jetbrains, but in my opinion they always fall short in some way.

Also I could imagine it is kind of hard to learn vim or beeing motivated to learn it without using it natively.

As someone who uses vim (nvim nowadays) for everything, I'd also like to add that this huge productivity boost many people have in mind when talking about vim is an illusion. There is always the right tool for the right job and most of the time it depends firstly on your skills and secondly on the tools you use. Using vim is in my opinion more than just using some editor. It's a way of thinking (modularity!) and if it fits in your environment (but only then) so that you end up spending alot of time in vim, productivity can be increased alot yes. It suits people the best who spend most of their time in the terminal and have their ecosystem of small modular programs set (eg. vim, fzf, rg, tmux/nvr, ranger, glances, fish...) which they love and use everyday.

I say this because I bet you have a workflow already and it could take months or more to be at the same level you are right now. Well enough demotivation for now. Motivating you to use vim is easy. It is by far the best editor I came across and if you somehow manage to survive the first few months in vim with all the getting started issues (learn text objects!!!) you will never look back :)

Collapse
 
defman profile image
Sergey Kislyakov

Well I'm a vim user now. Wasn't that hard to learn it. I suffered a lot when switched from qwerty to dvorak so I'm not scared of re-learning keys anymore ;)

Collapse
 
svnset profile image
Robin L.

You say that as if we stop learning new stuff in vim at some point. We'll never do don't get fooled :P But I am happy for everyone who makes this step and I should've not written this post literally seconds ago... Welcome to the family :)

Collapse
 
alanmbarr profile image
Alan Barr

I like vim keybindings because it helps me minimize moving my wrist and using the mouse a lot. Ran into some wrist pain and I rarely have issues now. I only use maybe 1/10 of the power of vim as it takes quite a bit of memory to remember everything it does.

Collapse
 
nektro profile image
Meghan (she/her)

If you want to edit text on the command line on Linux at any point I would go for it. If it doesn't pertain to anything you work on, I don't think there's really anything else you'd get out of it.

Collapse
 
craser profile image
Chris Raser

First, if you're looking for productivity, the following are all much larger factors than your IDE/editor:

  • Uninterrupted blocks of time to work in (allows concentration)
  • Automated testing (supports debugging, refactoring, onboarding...)
  • Clear communication of team & individual goals (ensures that you're doing the right thing, because "Doing the right thing adequately trumps doing the wrong thing beautifully.")

So if you're trying to prioritize what to learn/change, you might be better off building your testing speed/skills than learning a new editor. If those are all in place, then by all means look for a better IDE/editor.

I've used various IDEs & editors, and the "productivity" isn't a product of keybindings, but rather a of features that let you think and act over bigger "chunks" of code.

I love IntelliJ's refactoring functions (extract function, extract parent class, create/goto test, etc.), and I love that IntelliJ (and WebStorm) let me rebind keys, or just hit Shift-Cmd-A and type the name of the command I want to invoke.

So, I totally agree that good key bindings are important. But you'll get more of a productivity boost by delegating more work to your tools, and having fast ways to accomplish that delegation. Pick your IDE/editor for the features, then configure the keybindings to suit you.

Cheers, and let us all know what you find!

Collapse
 
5n4p_ profile image
Andreas Schnapp • Edited

I have started learning how to use vim the right way by reading "Practical Vim" by Drew Neil. I really enjoyed the reading and it changes the way of thinking while editing text completly.

While I always love coding it's even more fun by editing the vim way (ok most tasks i'm using a IDE with vim mode).

But there was also some tasks which feels like hard work. Where you have to edit many places and do some boring but error prone changes multiple times.

Today I love having the same situation. I make the change one time in a very clear and reproducable vim movements/commands sequence. And then I can easily do the "hard work" by using the first sequence multiple times as a macro.

It take some time to master vim but for me it was quite fun and i'm love to find new ways of beeing more productive every day.

Collapse
 
jenc profile image
Jen Chan

I just started a job where I had to learn it a month ago. My boss recommended vim-adventures.com or something like that. tbh I never got past level 3 but that was everything I needed to know to be semi functional. I can really see the benefits being going to any computer and being able to code right away!