September 11, 2019

If you look it up in the Dictionary, vim means energy, enthusiasm, vigor. If you are a programmer though you might know that I’m talking about about a text editor, Vim (Vi Improved), one of the earliest and most popular text editors.

In this post I’ll share my story with the editor and what I’ve learned in the process.

The first time I opened Vim I was in high school. I was learning my way around Linux systems and happened to stumble on a few tutorials that used Vim as the program to edit configuration and property files.

At the time, I didn’t think much of it. I just learned enough keys to be able to edit a few lines and exit from it. Something not so easy apparently.

It was not until college that I really started to use it, be frustrated by it and ultimately fall in love with it. I was starting as an apprentice at one of Simón Bolívar University’s IT Lab. At first, like most, I didn’t like the editor. It felt weird. I was slow using it. What was this thing about needing to hit i before actually seeing any characters appear on the screen?! I’m sure many fellow programmers know what I’m talking about.

Everything worked through weird keyboard shortcuts, there were different editing modes (wtf!!). But, I had to learn it, it was part of the training. After reading through endless :help pages and doing some Vim golf I started to see results. Without realizing I was editing files faster than some of my peers. Suddenly I didn’t need to think switching editing modes or jumping to other parts of the documents. The shortcuts were becoming part of my muscle memory. Vim was becoming a key tool in my toolbox.

Fast forward to 2019. I have been using Vim for around 10 years. It has become a central part in my workflow. I use Vim in one form or another for almost everything. I take notes exclusively in Vim. I write documents and code in Vim. I even browse the Internet with Vim shortcuts. I use the CVim Chrome extension. This sounds crazy but I can move between tabs, open new pages and jump to links without moving my hands from the keyboard.

Based on all this experience I’ve noticed some things about Vim.

Good things take time

“Repetition is the mother of skill” - Tony Robbins

I still recall times of frustration while initially learning how to edit files in Vim. I struggled to input even just a few words. But, little by little I started seeing results. Over time, with a lot of practice I started to get the hang of it. I started to enjoy using the editor.

My advice is to be patient. Only through practice and repetition the keys and shortcuts become part of you.

Vim is Lindy

The Lindy effect states that “the future life expectancy of non-perishable things is proportional to their current age.” Most fundamental technologies show Lindy aspects. Take books for example. Even with the advent of computers, smartphones and tablets, people are buying and reading physical books like never before. This ancient technology is not going away any time soon.

Similarly, Vim has some Lindy traits. The editor has been around for more than 27 years. It has survived and remains popular despite a myriad of new tools that claim to do a better job at editing files.

I am pretty sure that I’ll still be using Vim 10 years from now.

99% of the time you don’t need and IDE for development

I started programming around the same time I started using Vim. At the time though I thought Vim was only useful for writing simple scripts. After years of use and having tested a variety of IDEs (IDEs are programs that help you write programs), I believe that — with a few plugins — Vim is as good a tool for programming as any other. For 99% of the tasks you don’t need any of the fancy features that modern IDEs bloated with features provide.

By keeping things simple Vim lets you focus on the essentials: edit text faster and with less distractions.

Vim is not only for programmers

Vim is a text editor. It doesn’t care if you’re writing poetry or just a simple program. It has just the right features to edit files and move around words as quickly as possible and with no distractions. It does such a good job that I have never used Microsoft Word or other similar apps.

The problem though is that many non-programmers have never heard of Vim. Through the years it has remained mostly a programming tool because it is hidden away inside a Terminal (Vim doesn’t have a Graphical User Interface).

If you spend a lot of time writing words on a computer I encourage you to give Vim a try. There’s plenty of plugins that can assist you with writing-specific tasks. There’s even a book that might help you get started.

Stop testing other editors and note taking apps

There’s always a new cool tool, a new editing app that promises to make things easier for you, that has a new shiny feature you think is the missing piece in your always expanding toolbox. I’ve experienced this over and over. I’ve tried using apps like Evernote, OneNote, BoostNote, Bear and many others, only to come back to Vim.

Once, I spent many months learning how to use Evernote. I really liked its “search everywhere” feature. But even after learning many shortcuts I found myself going back to Vim to write. Evernote never felt quite right, its many features were too distracting. On top of this, Evernote supports only it’s own proprietary file format. With Vim I can write whatever I want, in whichever format I prefer and keep my everything organized in my own plain-text filesystem.

Learn from others

“Don’t be ashamed of copying. It is the best way of learning.”

Vim is an open source project. This means that all its source code is available online. This also means that most users will share their configurations, plugins and tricks on the Internet. I’ve always found this fascinating and very useful. Through the years I’ve learned new tricks and tailored my Vim preferences by reading other configurations and copying them. No shame in that. I’ve learned a thing or two and now keep all my configuration files on GitHub. Perhaps others will find them useful and benefit from them.

The keyboard is really an extension of your mind

One of the more impressive and counterintuitive perks of learning and mastering Vim is that the keyboard really becomes an extension of your mind. By enabling you to interact with the system in different modes, you don’t need to learn many complicated shortcuts, just a few simple ones. The result is that you can type much faster and you never need to leave the keyboard. The mouse — or trackpad — become obsolete.

Remember, there’s always a crave for that new item that will make our life easier or that one app that will do some magic and simplify our workflow. In reality, in my experience, most of these promises go unfulfilled. More doesn’t mean better. Choose your tools wisely. Better a time-tested tool that does a few things very well than some new app with an identity problem trying to do too many things for you.