Why Vim Sucks

I’ve used Vim (MacVim to be exact) now for a number of months and after working with it have come to the conclusion that it simply is not a viable text-editing solution. There are a number of things wrong, but my short list is a mere three items.

Reading code is unwieldy (scrolling).

Continued annoyance here is what has led me to pass on MacVim as a tool. Any non-trivial application will have more code in it than a person can grok without reviewing sections so I need an easy way to do this, my most common task. First I’ll run a find to get me in the vicinity of say, a function I need to review, and then I start reading. At this point Vim purists may start yelling at me, but I feel like the best tool for this is a mouse. While reading I am already not actively typing, and with my trackpad that allows me both horizontal and vertical scrolling I can simply gesture to move about and read. Once I find where I need to be, I click, and switch modes again to typing.

The problem here is that no GUI Vim (that I am aware of) supports horizontal scrolling of any measure. This wasn’t an issue in the days of X character lines, but these days it is the bale of hay that broke the camel’s back.

It is completely unusable until you modify your settings.

Let’s come up with some sensible defaults, people! To make it usable I had to browse around a whole bunch of websites to figure out what settings I needed to set in order to have it do basic things a text editor should be able to do, like hanging indents. I’m completely comfortable with that, but how about a nice well-explained example.vimrc to make my life easier? I ended up borrowing a .vimrc and modifying it as I saw fit but simply not knowing what all is possible *forces* you to read the entire (huge) manual of options. No thanks, even a number of months later and I wouldn’t count myself among those that are happy with my settings.

Which line or character am I focused on?

Every time I exit insert mode I move back a character. Really? Who ever thought that was a good idea? I press enter in normal mode and it inserts a new line below my current line. That breaks a UI pattern of every other text editor I’ve ever used. Sure, I’m sacrificing discoverability in Vim for some of its more powerful tools, but just because I don’t care about discoverability doesn’t mean you can screw with something I’ve been taught in every other application but yours. Let’s just say that I want a consistent user interface pattern because when I exit other modes it doesn’t move me back a character. And when I’m in insert mode, enter does put a line break where you’d expect. Continuity, please.

More generally, how about a cursory review of people new to Vim and seeing what does and doesn’t turn them off about using it, and then implement changes that make these new users more comfortable. For all I care do it in an example.vimrc file, but for (your geek pseudo-deity)’s sake, give people new to Vim a fighting chance! A good bet is that not all users are as masochistic as I am, and I gave this a really long, very intentional trial period before ditching it. Fix these issues and I’ll come back and revisit my evaluation.

(Yes, I’m being a bit inflammatory and not everything I am saying is a cohesive argument against Vim, but I’m venting—allow me that before you criticize me too harshly in the comments.)