Every now and then someone asks me how to learn Vim.1 My answer is always thesame: it’s simpler than you think, but it takes longer than you’d like. Here’smy bulletproof 3-step plan.Step 1: Learn the BasicsStart with vimtutor – it ships with Vim and takes about 30 minutes. It’llteach you enough to survive: moving around, editing text, saving, quitting. Theessentials.Once you’re past that, I strongly recommend PracticalVim by DrewNeil. This book changed the way I think about Vim. I had known the basics ofVim for over 20 years, but the Vim editing model never really clicked for meuntil I read it. The key insight is that Vim has a grammar – operators(verbs) combine with motions (nouns) to form commands. d (delete) + w(word) = dw. c (change) + i" (inside quotes) = ci". Once youinternalize this composable language, you stop memorizing individual commandsand start thinking in Vim. The book is structured as 121 self-contained tipsrather than a linear tutorial, which makes it great for dipping in and out. You could also just read :help cover to cover – Vim’s built-indocumentation is excellent. But let’s be honest, few people have that kind ofpatience.Other resources worth checking out: Advent of Vim– a playlist of short video tutorials covering basic Vim topics. Great forvisual learners who prefer bite-sized lessons. ThePrimeagen’s Vim Fundamentals– if you prefer video content and a more energetic teaching style. vim-be-good – a Neovimplugin that gamifies Vim practice. Good for building muscle memory.Step 2: Start SmallResist the temptation to grab a massive Neovim distribution likeLazyVim on day one. You’ll find it overwhelming ifyou don’t understand the basics and don’t know how the Vim/Neovim pluginecosystem works. It’s like trying to drive a race car before you’ve learned howa clutch works.Instead, start with a minimal configuration and grow it gradually. I wroteabout this in detail in Build your .vimrc fromScratch– the short version is that modern Vim and Neovim ship with excellent defaultsand you can get surprisingly far with a handful of settings.I’m a tinkerer by nature. I like to understand how my tools operate at theirfundamental level, and I always take that approach when learning something new.Building your config piece by piece means you understand every line in it, andwhen something breaks you know exactly where to look.Step 3: Practice for 10 YearsI’m only half joking. Peter Norvig’s famous essay Teach Yourself Programmingin Ten Years makes the case that masteringany complex skill requires sustained, deliberate practice over a long period –not a weekend crash course. The same applies to Vim.Grow your configuration one setting at a time. Learn Vimscript (or Lua ifyou’re on Neovim). Read other people’s configs. Maybe write a small plugin.Every month you’ll discover some built-in feature or clever trick that makesyou wonder how you ever lived without it. One of the reasons I chose Emacs over Vim back in the day was that I reallyhated Vimscript – it was a terrible language to write anything in. These daysthe situation is much better: Vim9 Script is a significant improvement, andNeovim’s switch to Lua makes building configs and plugins genuinely enjoyable.Mastering an editor like Vim is a lifelong journey. Then again, the way thingsare going with LLM-assisted coding, maybe you should think long and hard aboutwhether you want to commit your life to learning an editor when half theindustry is “programming” without one. But that’s a rant for another day.Plan BIf this bulletproof plan doesn’t work out for you, there’s always Emacs. Over20 years in and I’m still learning new things – these days mostly how to makethe best of evil-mode so I can have thebest of both worlds. As I like to say: The road to Emacs mastery is paved with a lifetime of M-x invocations.That’s all I have for you today. Keep hacking! Just kidding – everyone asks me about learning Emacs. But here we are. ↩︎