🔕 This post is part of the Inner Brew section where I share personal reflections and stories (not the regular Concepts section). If you want, you can turn off notifications for this section here: Notifications → Disable “Inner Brew“.
Hello! Today, let’s talk about why I switched to Vim, or more precisely, to Vim keybindings.
From the early days of my career, I used various IDEs but never spent much time memorizing keybindings.
Yet, in 2016, I switched to IntelliJ, and with that move, I decided that for once, I would work on my productivity and make sure to touch the mouse as little as possible. Good decision or not, I also decided to customize nearly 90% of the keybindings. It got to a point where someone familiar with IntelliJ wouldn’t even recognize my setup.
If you’ve ever gone through something like that, you know it takes time to be productive. At first, your brain melts for every single action. But after a few weeks, you start getting used to your config and can be really productive.
Everything was perfect for seven years as I kept working with IntelliJ until… I joined Google. Indeed, it was quite a shock for me to see that Google has its own IDE1.
There was a plugin to import IntelliJ’s default config, but since I had overridden almost everything, I had to reconfigure a ton of shortcuts manually. And even then, some keybindings I was using just didn’t exist in Google's IDE.
At this point, I decided to make one of the move I’m the happiest about: switching to Vim keybindings.
Let me just clarify what I mean by Vim keybindings. I didn’t switch to the Vim editor itself; I switched to Vim shortcuts. Indeed, many IDEs like IntelliJ or VS Code allow you to use Vim keybindings. For example, if you open this sandbox, it’s not the Vim editor, but it’s an editor based on Vim keybindings.
The learning curve was pretty steep, at least for me. Also, it’s worth noting that using Vim with a QWERTY keyboard layout is much more efficient than with other layouts. If you’re using a layout that’s quite different from QWERTY you may also need to switch layouts.
NOTE: When I joined Google, I switched to Vim keybindings and a new keyboard layout at the same time. I remember sharing my IDE with a colleague during one of my first days and judging by how slowly I was typing, I’m pretty sure he thought I was dumb.
So what are the benefits?
First, default Vim keybindings give you almost everything you need to be productive. Sure, there are still some IDE-specific features (like refactoring functions automatically), but most of what you need to navigate and manipulate code quickly is right there. It took me some time to adapt, but today, I can say I’m even faster than with my old customized IntelliJ setup.
Second, and probably the essence of this post: switching to Vim keybindings gave me a consistent editing experience. Whether I’m coding in Google IDE, on Google Colab, at home on IntelliJ (with the IdeaVim plugin), or editing a remote file through a terminal with Neovim, the experience is the same. I don’t need to adapt to a different setup every time. And if one day I switch to another IDE, chances are high that it will support Vim keybindings too, as the Vim community is really active.
Being efficient and keeping a consistent editing style across tools is why I would strongly recommend having a look at Vim keybindings. Maybe it’s not for you, and that’s perfectly fine. But if it clicks, it might give you the same productivity boost it gave me.
💬 Do you use Vim keybindings? If not, have you ever considered trying them?
❤️ If you made it this far and enjoyed the post, please consider giving it a like.
📚 Resources
More From the Inner Brew Category
Explore Further
Practical Vim // The book I used to learn Vim. Most of what I know comes from it, and I highly recommend it if you decide to switch to Vim.
Vim Tips You Probably Never Heard of:
IntelliJ 25% discount code on all product pack:
TheCoderCafe
. // This post is not sponsored by IntelliJ, but since they supported 1,000 Subscribers, 1 Coding Challenge! I thought it was fair to mention it since I talked about IntelliJ in this post.
“Google has its own X”. Replace X with almost anything, and you pretty much get how things work at Google.