Vim is an amazing tool. At least I think it is. But people tend to call me crazy when I say this. Could it be that years of using and abusing Vim have clouded my vision?
(I actually don’t believe that I still use PHPStorm quite regularly, so I don’t think I’m a Vim fundamentalism, even though I love it)
To clarify this issue in my head I decided to put together a list of the pros and cons of Vim. Not only I compiled those I think are the pros and cons, but I also scoured through the internet to see what other people think about it.
This list reflects my thoughts on latest versions of Vim. So, things like “Vim doesn’t have terminal support” or “Vim is synchronous” will not figure on this list.
So, without further ado, let’s start with the good things!
Lightweight and fast — When compared to other graphical editors like atom and Sublime, Vim is by far faster and lighter. It uses a sliver of the system’s memory and it loads instantly.
Powerful plugin model — Vim has a vibrant and almost endless plugin environment. It’s easy to find plugins for everything, from file management to version control, to color schemes. If you need something, there’s probably already a plugin for it.
Free and open-source— Not only Vim is free and open-source, but it’s also available for all platforms in either terminal or GUI mode. It also works over in the terminal over SSH.
Configuration portability — Once Vim it’s tuned to our needs, we can take our .vimrc or init.vim to any machine we need and have the same experience across all machines.
Keyboard-based, mouse-free interface— There’s no need to reach for the mouse again. Everything is a mere key press or two away with almost 200 functions specifically for text editing. Vim does support the mouse, but it’s designed so you don’t have to use it for greater efficiency.
Great productivity tool, once learned is hard to forget — Vim is one of those tools that the more you learn about it, the faster and more productive you’ll become. Almost everything is mnemonic and can be custom to your needs.
There’s a lot of good things about it. But not everything is a sea of roses. Let’s take a look at the cons of Vim.
Difficult learning curve — There’s a steep learning curve learning all the commands and modes supported in Vim. Then, we’ll still have to spend more time tuning settings to our needs.
High effort to customize— I like to say that configuring Vim is a never-ending effort. There’s always something that can be tweaked or improved.
Poor support for external tooling — Many plugins depend on optional Python and Lua features, which may or may not be included in whatever binaries are available in the machine.
Poor Feature Discoverability — Though basic features like syntax checking, autocompletion, and file management are all available out of the box or with minimal configuration, this is not obvious. The help is very well written but it’s hard to guess where can the documentation for these features can be found.
Doesn’t play nice with the system cut/paste mechanisms — A lot of times there are issues with accessing the system clipboard so we can copy and paste content from external applications.
Like every other tool, Vim has its strong and weak points. As I mentioned earlier, I still use other tools when I feel they are more appropriate to the task in hands. But my default is Vim and will continue to be for the time being.
It’s all a matter of considering the good points vs the bad ones, and I hope this article can guide you on your own decision.