←back to Blog

Learning Vim can be overwhelming. Here’s 3 tips from 10+ years of experience to make it easier

There’s a reason “How do I exit Vim?” has been viewed 2.7M times on StackOverflow.

Vim can be a beast. So many features to learn, new ways of working to understand. In the beginning, even quitting can make your headspin.

Luckily, learning it doesn’t have to be like drinking from a firehose.

I was just a kid when I first picked up Vi. And after 30 years of Vi & Vim, with 10 straight as a primary editor, I have a few suggestions for new vim-ers.

Eat the elephant, one bite at a time

Time and again, when I’m helping someone who has tried and failed with Vim, the loss in early productivity is what scared them away. They tried to get comfortable with all the motions, plugins, everything all at once.

What they should have done is pick one feature and use it ’till it’s normal. Then repeat.

Example: Don’t do every motion all at once. Start by getting comfortable moving by Words with W and B. That’s it.

Don’t worry about anything else for a few days. Work it like a (mostly) regular editor, except when using the word motion.

Do the tutorials

Start with vimtutor. For Neovim, use nvim +Tutor. That’ll get you the basics, and ready for the next step.

the average user needs something more than vimtutor and less than the help manual.

After vimtutor, move to Learn Vim: The Smart Way, where that quote comes from.

Add plugins slowly

Nothing wrong with starting with one of the beginner configuration bases, like kickstart.nvim or Neovim from Scratch. Also use other people’s config as inspiration. Just don’t pull them in blindly, all at once.

Pick one, get comfortable with it in your workflow, and then add another.

If you’re going to code, I’d suggest coc.nvim or nvim-lspconfig as soon as you’re ready. They both enable VSCode-like IDE power through the magic of LSP servers.

If you go slow, you’ll be productive faster. Don’t rush it.

Leave a Reply

Your email address will not be published. Required fields are marked *