Y U NO VIM

Peter John Alvarado
Peter John Alvarado
Sep 30, 2024
8-10 min read


When I first started my career as a software developer, I stuck with what I knew. Like many, I gravitated toward modern IDEs like Sublime and Atom that offered everything at your fingertips with just a few clicks. They seemed user-friendly, visually appealing, and easy to pick up. But that changed when my seniors introduced me to something very different: Vim.

At first, I wasn’t convinced. Why would I want to use a text editor that seemed stuck in the past? Vim didn’t have the sleek, polished feel of my usual IDE, and its reliance on the keyboard felt awkward and unintuitive. I figured it was just a tool for the nostalgic or those who liked to tinker endlessly with configurations. But as I soon learned, there was more to Vim than meets the eye and it felt the more I used VIM the more I fell in love with it.


A Quick Tour about the roots of Vim!

In the fast-paced world of technology, change is often seen as the only constant. Nowhere is this more apparent than in the rapid advancement of artificial intelligence. Yet, amidst the waves of innovation, some things remain remarkably unchanged. One such example is vi, the text editor that has withstood the test of time.

vi was created by Bill Joy in 1976, long before computers had graphical interfaces as we know them today. To put that in perspective, it was just five years after the release of Intel’s first microprocessor, the 4004. In the world of computing, that’s practically ancient history—akin to hieroglyphs in the realm of programming. Yet despite its age, vi's core design has remained largely intact.

What makes vi stand out is its unique approach to text editing. It separates the act of inserting text from issuing commands, a fundamental design choice that has carried over into modern successors like Vim and Neovim. The goal of vi was simple but powerful: to maximize programmer productivity by minimizing keystrokes. Back in 1976, most computers didn’t even have a mouse, and in 2024, many vi users still prefer not to use one when coding.

It’s incredible to think that almost fifty years after its creation, I can sit here and use the same quirky, efficient style of text editing to build modern web applications. In a field where tools and trends often come and go, vi and its descendants stand as a testament to the power of simplicity and effective design. It’s a reminder that sometimes, the best ideas are the ones that stay the same.

The Nudge From My Seniors

During my first few weeks on the team, I noticed something interesting. My seniors were coding at lightning speed. They never seemed to lift their hands off the keyboard, even when navigating complex codebases. No mouse clicks, no dragging windows. Just pure, uninterrupted flow.

I asked them how they managed to work so quickly, and their answer was unanimous: Vim.

They encouraged me to give it a shot (with grinning faces). They assured me that the learning curve was steep but worth it. At first, I hesitated. Vim had this intimidating aura, with its strange modes, cryptic key combinations, and lack of traditional menus. But my seniors wouldn’t let me off the hook that easily. They gave me a few pointers to start with—basic commands, how to switch between modes, and how to navigate text efficiently. They even shared some of their own Vim configurations to make my setup more comfortable.

I’ve tried using vim for a few weeks alongside my beloved IDE (Sublime). The first few days are hard as I need to cope with the learning curve of using this new editor, and at the end of the day I still go back to using the IDE. Then there is a time where I assigned to tasks related to server configurations where IDE’s are not available and the only tool i could use to edit files in the server is either nano or vim so I use the latter which I’m a bit familiar  with at least to navigate, not until I developed some kind of pain in my wrist (carpal tunnel syndrome) from scrolling large files and navigating through the project directory using my IDE. This is where I decided to uninstall my IDE and go VIM.

Climbing the Learning Curve

The first few days were still rough even though I had used vim before I fully switched to using it completely as my go to editor. Switching between insert and normal mode felt like walking with two left feet. I kept forgetting how to exit the program and had to Google “how to quit Vim” more times than I care to admit, I can’t also do full directory search as I am not aware that I need to install a third party plugin to achieve this. But my seniors were patient, reassuring me that this awkward phase was normal.

Little by little, I started to see the benefits. My fingers were getting used to the keybindings, and I was spending less time fiddling with the mouse. Tasks that used to require multiple clicks were now accomplished with a few keystrokes.

The Breakthrough Moment

The moment things clicked was when I realized how customizable Vim was. One of my seniors showed me how to map my own keybindings, install plugins, and tweak settings to create a personalized environment. I could mold Vim to work exactly how I wanted it to. Suddenly, I wasn’t just a user—I was in control.

Before I knew it, I was navigating through files, editing code, and performing complex tasks without breaking a sweat. The very tool I had once dismissed as outdated now felt like an essential part of my workflow. The minimalist design that had initially seemed like a limitation became a strength, helping me focus on what mattered: writing code.

Vim started feeling less like a tool and more like an extension of my hands on the keyboard and lastly the wrist pain is gone.

Why Vim Works

Vim isn’t just a text editor; it’s a philosophy. It’s built around efficiency—doing more with fewer keystrokes and fewer distractions. By eliminating the reliance on the mouse, it forces you to stay in the flow, maximizing productivity. And once you learn its quirks and commands, there’s no going back.

My seniors were right all along. Vim might have an intimidating learning curve, but it rewards you tenfold once you pass it. Every day, I’m grateful for their push to try something new and leave my comfort zone like installing more plugins that helps me boost my productivity and exploring with integrating LSP (Language Server Protocols) to achieve auto  completion, formatting and linting features available with VScode.

My Advice for Newcomers

If you’re like I was—skeptical or intimidated by Vim—here’s my advice: Stick with it. Yes, it’s different from modern IDEs, and yes, it will feel strange at first. But once you get the hang of it, you’ll see why so many experienced developers swear by it.

Start small. Learn the basic commands, get comfortable switching between modes, and gradually introduce plugins or configurations. And most importantly, lean on your colleagues or online communities for support. It’s a journey, but one worth taking.I highly suggest to try Vim Tutor to get more familiar with the keystrokes and commands.

And if this appetizer has you hungry for more, I'd start by installing Neovim using the superb LazyVim distribution. Neovim from scratch is like climbing Mount Everest without oxygen.Then checkout the excellent Vim and Neovim tutorials available on Youtube from the likes of ThePrimeagan and Typecraft, along with Elijah Manor's LazyVim introduction.

Conclusion

Switching to Vim was one of the best decisions I’ve made in my development career, and I have my seniors to thank for it. They didn’t just encourage me to use a different tool—they taught me the value of mastering my environment and striving for efficiency in everything I do. So, if your team nudges you toward Vim, take it as an opportunity. You might just find, as I did, that it’s exactly what you needed all along.

To wrap this up I want to share my dev environment for those who like tinkering to achieve a smooth and productive work environment.

Editor: Neovim

Terminal: Kitty (I came from using Tmux and decided to adopt Kitty to achieve built in multiple window pane manager)

Shell: Fish (I’ve started with bash and zsh but currently in love with fish as it allows me more room for configuration)

My configurations for Neovim and my dotfiles are available on my github:

NeoVim
DotFiles

For further reading related to the setup I have, I highly suggest checking this article 5 Tweaks for a Productive Terminal or reach me out on slack if you have any questions or suggestions.


PS: The Title Y U NO VIM came from an ascii art that I’ve always seen on one of my seniors whenever he started booting/opening vim, which I also have since he allowed me to copy his configurations. This ascii art is the only one I’ve preserved from my old vim configuration which I migrated from using vim script to lua script. The title came from a meme known as Y U NO which simply means `Why don’t You`.

Thank you for taking the time to read my article. If you are interested in learning more about me we can connect with each other.‍

If you're curious to know more about Montani International Inc please feel free to explore our various online platforms and be sure to check out some of our informative articles, latest project updates, and behind-the-scenes glimpses of what it's like to work at Montani.