Part of being a game developer is, well, obviously, writing code. A lot of code. That involves spending a lot of time staring at a screen endlessly guzzling lethal amounts of coffee while your fingers dance on the keyboard like they’ve been possessed by some sort of fast-paced EDM dancing deity. This week, I changed my JetBrains Rider keybinds to emulate
vim, and…this is the result.
If you’re not an avid command-line user, you may not know what
vim is. And that’s completely okay. Some people will tell you that learning it is the greatest thing you can do for your productivity and your health while typing. Others will wonder why the hell anybody would put themselves through the sheer pain of using it. But what’s so strange and different about
vim that gets people so divided like that?
The short answer is its keybinds. That is,
vim‘s way of accepting input from humans and turning it into text on the screen. If you’re coming from GUI-based text editors like VS Code or Notepad++, from IDEs like Rider, or from word processors like LibreOffice Writer, then using
vim for the first time is the opposite of intuitive.
This isn’t because the developers of
vim want you to suffer. In fact, that’s the opposite of their intentions. Instead, it’s designed to improve your efficiency and productivity by keeping your hands off the mouse and on the keyboard. This idea is so popular that there are even extensions for popular IDEs that emulate
vim‘s keybinds, in an effort to give you the benefits of
vim without losing the benefits of a graphical IDE. Rider’s version of this is called IdeaVim.
How does this help productivity and health?
There are two main things that
vim tries to minimize: Using the mouse, and doing things repetitively. Time spent pointing and clicking on menu items is time spent not actually writing code. If you have to point and click to get to a specific line or spot in the code that your text cursor’s not near, that’s a time waster. You lose your flow.
Likewise, if you have to spend a few seconds spamming the arrow keys to cursor around the file, you’re also not actually writing code. You could save a lot of time if you could just press one, two or three keys and jump straight to where you need to be.
The productivity benefits are obvious – if you’re spending less time interacting with external UI elements or trying to just navigate the text cursor, you have more time to write code. In the long run this adds up to you being able to write and ship quality features and fixes much more quickly.
The health benefits are also there as well – if you can eliminate the mouse from the equation, you can keep your wrists rested on the keyboard. Throw an ergonomic keyboard into the mix and…even better. Not only that, but minimizing repetitive keystrokes also minimizes your risk of developing Repetitive Strain Injury later in life. I already have blindness to worry about, sign me up!
An overview of the keybinds
Before jumping into
vim or replacing your IDE’s keybinds with it, you need to know the basic keybinds – otherwise you’re going to be completely lost and probably not even know how to close the program. So here’s an overview.
Instead of me trying to explain it in text, just watch this Fireship video:
Is this really worth it for me?
After a week of trying out these keybinds, I can confidently say that I regret it. While I cannot deny that there are benefits to using
vim keybinds over “normal” keybinds, and that I can now use vim confidently in the command-line, there is a good reason for me to stop using it in my IDE. Here’s why.
The short answer is that I’m blind and my accessibility tools require the mouse. The big thing I’ve learned is that, in order for me to TRULY be able to unplug the mouse, I need to be able to write code without the use of a screen magnifier. I still need to take my hands off the keyboard if my text cursor goes off-screen, if I need to zoom in or out, or if I need to interact with an off-screen UI element.
However, in an ideal world where I’m not blind, I can confidently say that I prefer vim when programming. But I’ll be uninstalling IdeaVim in the not-so-ideal real world.