{"id":2283,"date":"2011-11-03T22:08:02","date_gmt":"2011-11-03T12:08:02","guid":{"rendered":"http:\/\/www.vectorstorm.org\/?p=2283"},"modified":"2013-04-01T23:08:05","modified_gmt":"2013-04-01T13:08:05","slug":"happy-birthday-vim","status":"publish","type":"post","link":"https:\/\/www.vectorstorm.com.au\/2011\/11\/03\/happy-birthday-vim\/","title":{"rendered":"Happy Birthday, Vim"},"content":{"rendered":"

\"\"<\/a><\/p>\n

So it’s Vim<\/a>‘s twentieth birthday today. \u00a0Or yesterday, depending on where you stand vis-a-vis the international dateline. \u00a0(screenshot above is MacVim displaying a snippet of the current MMORPG Tycoon 2 codebase)<\/p>\n

For those with other backgrounds, vim is a free text editor. \u00a0It’s basically an improved version of vi, the original visual text editor. \u00a0(vi was the first program which would display your text at the same time that you were editing it) \u00a0Another popular old text editor which is still in modern use is emacs. \u00a0And the flame wars between vi users and emacs users are one of those eternal debates amongst IT people who have nothing better to do with their time, right up there with tabs vs. spaces (tabs), tabstops (4), little-endian vs. big-endian (big), and Coke vs. Dr. Pepper (just some tea, please, and a little bit of milk would be lovely, thanks).<\/p>\n

Functionally, vim is just a text editor. \u00a0But it’s a text editor that’s designed around being used exclusively by the keyboard; \u00a0once you really know what you’re doing, you never have to touch the mouse at all. \u00a0Or even move your fingers away from the home row. \u00a0(Don’t touch your arrow keys!) \u00a0Once you get used to it, it’s actually substantially faster and easier to get around a text file — or a whole project — this way. \u00a0But it does take a bit of practice and research to reach the point where it becomes effortless.<\/p>\n

Oddly enough, my first experience with vim was with its first appearance anywhere; \u00a0on Fish Disk #591, for my Amiga 500 computer. \u00a0Admittedly, it completely baffled me at the time, and I quickly threw it aside to spend more attention on the various games which were (let’s be honest) the main reason I acquired and kept those disks of freeware software. \u00a0And it wasn’t until a decade later that I’d re-encounter vim, as I started to play with Linux, where it was one of several “vi-like” editors available (though it seemed to be gaining acceptance as the best of the lot). \u00a0I still didn’t use it much, but I at least learned enough to use it as my default Unix editor. \u00a0And during my time at Atari Melbourne House, I wrote a few server programs and a lot of perl scripts, all using vim as my source code editor.<\/p>\n

But it wasn’t until very recently, when I started poking with Xcode 4, with its major revamp of Mac and iOS coding features, where I finally decided that I really wanted a more consistent interface for writing code, something that would work the same across multiple platforms, and would remain responsive and not inexplicably freeze up the way that most IDEs will occasionally do. \u00a0Other people talked about how great the Mac-exclusive text editor\u00a0TextMate<\/a> is, and I considered it, but I really wanted something that I could use on any platform. \u00a0So my mind went back to vim, and I really dove into all the details that I had only skimmed before.<\/p>\n

I would estimate that it took me about two weeks of full-time development using vim to get back to my usual development speed. \u00a0And after another two weeks, I was substantially faster in vim than in other editors. \u00a0(Of course, I was already familiar with many of the core vim concepts; \u00a0others have estimated 1-2 months to become proficient, for someone who’s jumping in cold)<\/p>\n

Anyhow. \u00a0I just wanted to mention. \u00a0Just because it’s made coding so much less painful, again. \u00a0Any coders out there, I’d definitely recommend experimenting with other text editors, and see if there’s one that works well for you personally. \u00a0Don’t just always use the one that’s built straight into your IDE by default, the way that most of us do. \u00a0There are far better tools available out there, if you’ll only look!<\/p>\n","protected":false},"excerpt":{"rendered":"

So it’s Vim‘s twentieth birthday today. \u00a0Or yesterday, depending on where you stand vis-a-vis the international dateline. \u00a0(screenshot above is MacVim displaying a snippet of the current MMORPG Tycoon 2 codebase) For those with other backgrounds, vim is a free text editor. \u00a0It’s basically an improved version of vi, the original visual text editor. \u00a0(vi…<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[7],"tags":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/po9WK-AP","_links":{"self":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/2283"}],"collection":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/comments?post=2283"}],"version-history":[{"count":2,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/2283\/revisions"}],"predecessor-version":[{"id":2816,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/2283\/revisions\/2816"}],"wp:attachment":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/media?parent=2283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/categories?post=2283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/tags?post=2283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}