VIM is one of those things developers are in love with or despise. In fact, a common joke is to open up vim on a friends computer and see if they figure out how to exit vim. Despite having a bit of a rough reputation, vim, or atleast vim keybinds are a major tool in my efficiency toolkit. I like to think of using vim-mode as a ‘micro-efficiency’ that at a glance saves small amounts of time, but repeated thousands of times at the course of hours at the keyboard, the efficiency boost really adds up.
What is VI-Mode?
When most people hear the term vim, they think of a text editing program, and they would be absolutely correct. But to me, vim is much more than an editing program. It carries a beautiful set of keybinds (sometimes called vi-mode) that prioritizes exclusively using the keyboard instead of the traditional keyboard and mouse combination to navigate your source files.
For example, to navigate a source code file with a out-of-the-box editor, you would naturally use your mouse to click the desired location, and likely use your keyboard’s left and right arrows to hone in on your target.
With VI-mode, we instead use keyboard shortcuts to not only insert text, but also to navigate between words, skip to ends of lines, find and replace patterns, and a whole other set of beautiful things.
For example, with VI-mode, we use the following common navigation keys:
k -> move up one line
j -> move down one line
l -> move right one character
h -> move left one character
At first, this may be a little bit intimidating. And lets be real, it is. When I first started learning vim, I was about 30% less efficient at work. Trivial things like basic text editing were frustrating exercises. But eventually, the wiring in your brain starts to change and your fingers build that muscle memory. Over time your effectiveness will grow and grow and soon, flying around your text file will be something you don’t even have to think about.
Using VI mode has a couple major benefits:
The thing with vi-mode is that there are a TON of commands that can speed up your code or text writing abilities. I call them micro-efficiencies – save a couple key strokes here and there is no big deal, but do this hundreds if not thousands of times per day and you can easily save yourself 10-15 minutes / day. This adds up over time.
If you’re using terminals a lot, or sshing into cloud boxes regularly, you’re going to need to know either vim or any out of the box text editor. VIM comes with every pre-packaged linux/unix distribution out there – so if you’re on a box and need to edit a config file quickly to get out of a jam, you’re going to need to know atleast one basic text editing tool.
Look Like a Pro
Sometimes this is ignored, but there is a certain degree of impressiveness watching someone fly around their keyboard and generating a flurry of text on their screen. Learning vim well is an impressive feat that you can show off to your friends.
Constantly Learning New Tricks
My favourite part of using vim is that I’m constantly learning new tricks to improve my efficiency. For example, I recently learned of vim registers that allow you store your clipboard contents into variables on your keyboard. This may seem a bit abstract, but in real life, its a common need to copy something to your clipboard and keep it on-hand for later. I’m learning little tricks like this all the time, and its always exciting to find opportunities to start applying these tricks in your day to day activities.
This constant feeling of self improvement and knowing that with each new trick, I’m getting more and more efficiency. I think you would limit yourself to a traditional editor, you would hit your efficiency ceiling much sooner. But with VIM, its a constant upwards trajectory as you learn new techniques and find opportunities to apply them to your daily work.
If you’ve never tried vi-mode, I highly suggest giving it a shot. It might just change the way you type.
If you’re interested in learning more, the best place to start is with the VIM documentation here.