Vim - I hate to love you

Posted on 2020-04-07 .

When I migrated from Microsoft Windows to GNU/Linux and FreeBSD back in 1998/1999 I cannot remember what text editor I was using for software development, but I naturally looked for something familiar and I do remember using Quanta Pro and Kate at some point. Later I began using terminal applications almost exclusively and I eventually also did all my web development in the terminal. During this time I used two simple editors namely nano and mcedit. I was quite satisfied with the simplicity of these editors and continued to use them for many years. Whenever I needed to do more advanced editing, such as refactoring a code base, I used terminal applications such as greb and sed. This worked just fine.

Then one day a friend advised me to take a look at a "real" editor and he recommended Emacs. He also recommended Emacs Rocks and I was naturally surprised at some of the amazing stuff you could do. I decided to dive into Emacs, but after about a weeks usage I couldn't take it any longer. Emacs was unbearably slow and required a lot of plugins before it was really useful so I began to look for other editors with similar capabilities.

Then I found Vim and eventually settled on that. The modal aspect of Vim made sense to me and it was very fast and efficient even with very big files and it didn't require any plugins.

I decided to use Vim exclusively in order to become more efficient with it and I printed out a cheat sheet which I placed beside my keyboard. I also took the Vimtutor and watched a bunch of tutorials online.

Since then Vim has been my favorite text editor no matter what editing work I am doing. I have done both tons of coding in Vim as well as writing articles, books and documentation.

But all is not well with Vim.

I have noticed that despite the fact that I have been using Vim for almost a decade now, it still requires mental effort on my part to use the editor!

Many Vim users swear to the increased productivity that Vim provides, but very few Vim users actually realize that they are not really using Vim, instead they have stuffed Vim full of plugins and a thousand lines long command file that change how Vim normally behaves to compensate for the insurmountable time it otherwise takes to really master Vim.

Many Vim users also repeatedly state that Vim is only hard to use at first but when you really learn it, you become very productive.

The problem with that statement is that you will be just as productive if you use a simple text editor and then just learn the basic Unix tools for manipulating text like greb, awk and sed.

And I cannot help myself, but I think it is worth quoting Adrien Lucas Ecoffet when he said:

Vim users (I am not one of them) will tell you something along the lines of "it is hard to use at first but when you really learn it, you become super productive".

However, the second part of this sentence applies to just about every good editor out there: if you really learn Sublime Text, you will become super productive. If you really learn Emacs, you will become super productive. If you really learn Visual Studio... you get the idea.

Here's the thing though, you never actually need to really learn your text editor... Unless you use vim.

It's not that I don't grok Vim, it's just that it is so rare that I have found myself in a situation where I can say that this really truly matters.

Selecting stuff between parenthesis or brackets, utilizing marks (bookmarks), and jumping between specific characters in text is something Vim excels at, but at the same time this hardly counts as being super productive just because you can do that in a couple of keystrokes rather than holding down the shift key while pressing repeatedly on the arrow keys. Do you really think that something like that matters that much? Do you really think those few extra microseconds are that important?

I know people who still don't know basic stuff you can do with Vim even after having used the editor for more than twenty years! It's simply too time consuming to constantly having to look up how you can keep improving your workflow with Vim.

What other text editor requires you to have cheat sheets and yellow sticky notes hanging around for weeks, months, or even years besides perhaps Emacs?

I will actually go so far as to state that Vim might even decrease your productivity. Yes, I really just said that!

The reason I say that is because during the time when I used the really simple editors, all my mental energy was spend concentrating on the problem I was trying to solve with the code I was writing. No mental energy was ever spend on navigating the code.

In ten years you can master multiple programming languages yet still find yourself discovering things about Vim you didn't know was possible or even existed.

Why is it that something as simple as a text editor requires a 3.522 page long help documentation?

Don't get me wrong, the documentation is amazing, but 3.522 pages? Is it an instruction manual to a Boing 747? How can something as simple as text editing require a 3.522 page long documentation? This just isn't right!

The fact is that Vim isn't simple. Not by a long shot. And Vim is perhaps one of the most bloated pieces of software ever created. You have not one way to do a specific thing but sometimes almost a hundred different way to achieve the same result.

And no, the stupid and utterly ridicules basic navigation with the h, j, k and l keys, as well as several other key relations, has absolutely nothing to do with keeping your hand on the so-called "home row" and being efficient in typing, as a lot of people believe, this is just a side effect. It's a remnant from the old terminal keyboards. Notice also where some of the other "most used" Vim keys are located.

In time I have slowly realized why Linus Torvalds criticized Linux distributions he had found difficult to install.

I'm sorry, you may want to close your ears now, I want a distribution to be easy to install, so that I can just get on with my life, which is mostly kernel.

Linus called Debian a "pointless exercise" as the point of a distribution is to make things simple and easy to install. Now, I have personally never found Debian difficult to install, but I can certainly understand what he's talking about. Today I spend perhaps more than 95% of the time in the terminal emulator and I do feel quite productive, even more than I used to be with the software I used in the past, but all this has come with a price.

I remember back when nano and mcedit was my favorite editors, perhaps I wasn't able to perform all the amazing things I am with Vim today, but on the other hand I lived in blissful ignorance not knowing any of the crap I know today and I was focused on the work I did, not on the tools I was using to get the work done. This was not only much more minimalism at heart, but it was in fact in many ways also much more productive.

Occasionally you will run into the kind of problem that Vim can solve in a fraction of the time it will take in a less capable text editor, and while you do save yourself time and pain in that specific situation, all the rest of the time when you're just typing text, you don't really need any of that. Furthermore you can do the same if you just know how to use your terminal programs.

My problem today is that I have grown so accustomed to how Vim navigates text that it is a painful exercise to sit down infront of another text editor unless it has a Vim keybindings plugin, and even then is it still painful because even with regular expressions enabled it cannot reach anywere near the level of text manipulation that Vim does so amazingly well.

Vim - I really hate to love you!

If you have any comments or corrections please feel free to email them to me. Also, if you found this content useful consider supporting me on Patreon