Vim is the prime example for a geeky editor. There’s no chance to use it without reading the manual. Whoever watches a professional Vim-operator at work will be puzzled. There’s no such thing as usability to discover. Still, many claim there’s no faster way to edit files than with Vim. Let’s see why.
Vim supports the keyboard-only paradigm. Moving your hand from the home row to the mouse is time consuming in the long run. I’ve been looking for ways to operate keyboard only back then and it’s one of the reasons I’ve chosen Vim as a possible replacement for Eclipse. The reason for both terrible usability and efficient workflows is the two-mode paradigm. There’s one mode to insert text and another to perform commands. This way Vim avoids the need for meta keys as every single key can be attached to a command. It’s hard to get your head around it in the beginning but the number of saved keystrokes compared to other editors is amazing.
There’s Vim script, a scripting language built into Vim. To be honest, I haven’t looked into it. I’ve found out there are ways to extend Vim with Ruby. That’s more likely to meet my taste. Of course there are plugins, too. About a gazillion. Twenty different approaches for each problem you can think of. Yeah, I’m exaggerating a little here but that’s always annoying me. You spend time looking for a solution, find multiple and there’s rarely any way to choose between them but trying every single one. Well, it’s much better than no ready-made solutions at all.
I’d like to point out stackoverflow again:
I’m also a fan of good screencasts. If you like them too and are not afraid to spend some bucks, then I can recommend the two PeepCode screencasts on Vim. They’re really good! One more place where Vim knowledge is gathered: github. Popular Vim users share their plugins and config files there. It’s always worth having a look at them.
Looking back, the main reason I moved away from Vim are aesthetics. Font rendering is awful and I was missing a decent project tree. I know, there’s NERD tree. It works great but hurts my eyes. I’m sure many will shake their heads now. A programmer’s screen has to look nerdy, you’ll say. Functionality is far more important than aesthetics, you’ll say. I say you’re right and far be it from me to prove you wrong. Still, I’m looking for the best compromise between beauty and functionality. During my research for this article I stumbled upon MacVim. I delightfully discovered that they’ve implemented proper font rendering. I gave it a try and really - it looks gorgeous. One leap towards perfection. To be honest, I’m quite tempted to delve into it again soon. Especially after discovering the font aliasing feature ;) What are your experiences with Vim?