Why I’m Not A Big Fan Of Vim/Vim-Like Text Editors?
There are a lot of developers out there who use vim for development. I’m one of those users who think that Vim, is not a good one. And let me explain this…
A while ago, in my previous articles, I mentioned that I hate vim for development. This led some people to question me and my opinions. This article non only clears that but also says why I would not recommend vim for development to others as well.
I’m sure some of you would disagree with these and that’s fine. All the points mentioned below are my opinions and it’s gonna differ from person to person. That being said, it’s also possible that I might change your mind. Let's get started.
And btw, the title says “Why I’m not a big fan of Vim”. Not “Why you should stop using vim”. In short, this is my opinion so take it lightly
What Is Vim?
Vim is a terminal-based text editor which could be configured to… well… almost anything from a basic functional editor to a complete feature-rich IDE.
It uses a “mode-system” where you use “i”, “ESC”, and other keys to go between different modes like insert mode, visual mode, normal mode, etc to interact with the file.
It looks empty by default, but on customization, the text editor could be made to look close to anything. For vim at least, customization is the biggest key. Not to mention, the text editor could be stuffed with almost any features and reworked into other similar text editors. Some editors like that include vi, neovim, etc.
The text editor truly is a beast and could be made into quite literally ANYTHING.
The problem I Have With This
But, everything has some disadvantages, and in Vim there are just too many for me to use for development. Here are some.
As a developer, the programs which I use should probably take care of everything from git to autocomplete to syntax highlighter, and more. I mean… If you are a developer, it’s obvious that you probably prefer syntax autocomplete, git integration, graphical features, and a lot more to be there by default rather than us taking up time and doing it ourselves, considering that vim is intended for developers.
Vim, let’s configure what we want. BUT, it wants us to configure everything, where some of those are gonna be used by everyone and could be added into vim by default.
Now, you might ask what about people who don’t need the extra features? And this is a good question. Some people are not developers and yet use Vim and don't need any autocomplete or similar features. This is where Vi or vi-minimal, so that should work.
Taking another text editor like, let's say atom or sublime, we get an interface with one “mode”. You just start typing what want. This not only saves time but also increases efficiency.
I mean… Even from a logical point of view, hitting “i” before typing and “Shift+V” before you copy something, might seem like a small thing while working, but in long run, at least for me, it just feels unnecessary.
Now one might argue it would help the workflow since the “the mode system” is very much keyboard-based. But even then, if I’m using a normal text editor like Atom, I could use just the keyboard and travel around, with just one mode.
Even for the smallest thing like undo we have to hit escape, make sure we are in normal mode, and then hit u. I think just directly hitting ctrl+z works way faster. Not to mention getting used to such unusual workflows just takes up a lot of time.
Now… Many of you might see this as an advantage. And of course, it does have a lot of advantages being a text editor which opens directly from the terminal. I mean, of course, it’s probably the text editor I use in tty(CUI) interfaces.
BUT, personally have a lot of disadvantages having it work from the terminal. The first major disadvantage is that it cannot view anything other than text. It might seem like a small thing, but as a game developer who has some form of graphics involved all the time, it just does not help. At the same time, I could just quickly view whatever was intended in something atom, sublime, etc.
Vim is one of those text editors which is very time-consuming to configure and get used to but is NOT worth it. And I’m saying this as my opinion genuinely.
I spend around 3–4 years having my own highly configured vimrc file and also got used to the basic workflow of vim. BUT, at the end of the day, I realized that I could do the same in a “normal” text editor, without spending years getting used to it. Not to mention, setting up text editors like VsCode is as simple as just signing in to your Microsoft account to get all the “configurations” you have done. Whereas on Vim, It took about an hour to get it up and ready(that is… if I have spent months having my vimrc and getting used to it). Compare that to VsCode, which took about… well… not even 2 minutes to sign in, you get my point right?
I call this a bonus because old always does not mean bad. But sometimes, it means outdated. In my case, Vim is just too old for a text editor like this. Come on… It STILL uses “hjkl” for the cursor to move around. For those of you who don’t know, hjkl were used as arrow keys before keyboards actually implemented them separately.
Also, a quick side note is that it is not being improved in the recent past. I mean… the last few releases of Vim was of adding a couple of very rarely used commands, integration with some new plugins, and some small backend changes. Comparing that to other editors, it needs to move faster.
I’ll be making more videos on YouTube but here’s my point. To make the text editors more efficient, Vim seems to try a bit too hard, and this kind of misses the point itself.
Well, that’s about it in the article. Let me know what your opinions are(I’m sure they are different), you can also message me on Twitter if you have anything and I’ll meet you in the next article/tweet/video.
You’re Awesome :)