The Power of Vim

I am a reformed emacs user.

Used it for years, on a dialy basis, as my sole programming environment. Eventually, I got tired of it. It took forever to start up (I didn’t just leave it open), it wasn’t always available, like when booting from a Live CD or something, and it was disturbingly overkill for any need to perform a simple edit on a configuration file. Unfortunately, the default editors that were (and are) on most Linux distributions are dinosaurs like pico or nano, which are downright unpleasant to use.

Oh, sure I’d tried Vi before, but it had seemed so obtuse. A model text editor? Why would I want modes on my text editor? But over time my love for emacs waned. Doing simple things like copying text required mastery of obscure chorded commands, and hardly an incantation existed that didn’t require a half dozen modifier keys. It was originally the desire for a text editor that I didn’t mind opening for quick edits, one that I didn’t feel I needed to marry just to learn to use, that originally drew me to vim.

Soon, switching between entry modes was second nature. The first time I wanted to search, and found it no further away than the Perl regex language…I knew I couldn’t go back.

Then, I found myself out in the workplace, a free software hacker trapped in a Microsoft Ghetto (it’s a big ghetto, don’t get me wrong). Sure, I could have installed Vim on Windows, and I did, but I’ve always found Visual Studio makes for a painful tool when trying to use other editors. Sure, other’s have done it, but it wasn’t worth it for me. However, recently, I’ve decided to refocus on learning vim. In part, because I’m tired of hearing people brag about features of their editors that Vim has had forever, but also because those skills finally translate into my day job, now that there are bindings for Visual Studio 2010 to behave like vim.

Still, there is much to learn. Rob Conery, a former Microsoftie who’s since gone out on his own, has started posting Vim Kata on his blog, an extension of the code kata’s that have gained popularity lately, this is just a repetitive set of instructions you can repeat to get a little better at certain vim commands. Plus, Drew Neil is doing weekly vimcasts, which lack the repetition of the kata’s, but provide great information and more explanation than Conery has.

Lately I’ve also been looking at modules for vim to make it more complete. To help with my recent YUI3 presentation, I started using SnipMate, a port of TextMate’s snippets to vim, creating a custom snippets file for that. I’ve installed the Gist script, to make working with Github Gists easier. I’ve been learning to configure vim so that I automatically get the file formatting rules I want for whatever platform I’m working with.

I won’t say that Vim isn’t a complex editor, and that the modal editing takes some getting used to. However, I will say that since I’ve really worked to learn Vim, I’ve found there is a logic to everything it does, and that my programming has probably gotten faster. Certainly, there is something to be said for the tools in Visual Studio which aid in refactoring, or IntelliSense, which helps make sense of an immensely complicated API. However, ultimately these editors are just text editors, and I’m increasingly convinced that no editor mangles text as efficiently as vim.