Beginning Vim

Vim? What? Why?

Let me say that: there is a raging war out there, driven by the eternal question “What text editor do you use?”. Personally, I was ignorant of the two camps (namely, the vi-like editors and Emacs). However, I got curious when I found out that Notepad-like programs are not even considered as text editors. When people have such strong feelings about a program, it definitely deserves a few hours to play with.

So what is Vim? Simply put: an extensible text editor, focused on manipulation of text, rather than pure editing. There are currently about 3500 extensions for it, ranging from source control integration to a personal wiki.It is said that mastering Vim will yield great productivity gains in term of coding. Well, that’s pretty convincing!

Learning Vim

If you feel hooked, you should download and install it. There is only one practical way of learning Vim, and it’s to use it. The first advice I got was to do all my text editing in it for a week before judging it. But let me give you a word of warning — the learning curve is steep, to say the least.

Personally, I started off with the integrated tutorial¬†in Vim, called vimtutor. It’s a shell script that can be found in the installation directory. Under 64bit Windows, that’s C:\Program Files (x86)\Vim\vim73\vimtutor.bat. You’ll need to run it several times (when practicing “how to close vim”), so keeping a command prompt or explorer window in the directory is quite handy. Here are also some interactive tutorials that I reviewed.

If you prefer video, and want to spare a few bucks to treat yourself, PeepCode has the Smash Into Vim series (2 x $12). The alternative are Derek Wyatt’s craaaazy vim novice screencasts* – these are funny, too! Vimcasts have videos that cover interesting information to supplement the other tutorials, but aren’t targeted at complete novices.

If you are an active Twitter user, you may like to follow @vimtips for daily vim tips. Past tips are archived on vimtweets.com, and there are real gems among them.

And if you want to setup your workspace for learning, you can use the Vim movement shortcuts wallpaper.

Making it beautiful

One definition of beautiful = vim + railscasts color scheme + consolas

This is absolutely necessary, since the default color scheme / font combination is really ugly. I think that this repels many people and could be fixed for the sake of better first-time user experience. Of course, this may be an intentional design decision, made either to please the die-hard fans or to create a tribal vim community. Or a bit of both.

My personal preference is the railscasts color scheme, with the Consolas font. In order to apply these, you need to create a _vimrc file (that stores the Vim configuration) in your user directory (for windows 7, that’s C:\users\yourusername) and place the following two lines in it:

colorscheme railscasts
set guifont=Consolas:h12

In order to use the railscasts theme, you have to download it from the link above and place it in the vimfiles/colors/ subdirectory of your user directory.

Sharing your Vim configuration across multiple computers

If you want to learn Vim both at work and at home (like me!), it is convenient to share your configuration between computers, so that you get the same environment without much effort. What better way to share it than to put it on GitHub! However, there happened to be two problems with this:

  1. I turned out to be too lazy to pull my configuration every time I make a change. Dropbox to the rescue! I simply cloned the configuration repository to my Dropbox folder and it got synced across my work and home PC.
  2. I didn’t want the local repository to be the same as my Windows 7 user folder. This can be easily fixed by creating a symbolic link for the _vimrc and vimfiles, like this:
    cd c:\users\gyoshev
    mklink _vimrc "F:\github\config\_vimrc"
    mklink /D vimfiles "F:\github\config\vimfiles"

    In Windows Explorer, the newly created links should look like this:

    symbolic links to _vimrc and vimfiles

Voila! Everything gets synced everywhere.

Conclusion

Well, I hope that these resources will prove useful to you! I certainly feel more confident after having read and watched most of them. And if you need help, don’t forget to :h command it ;-)

P.S.: Many thanks to @korchev, for the initial help and the aggressive Vim marketing at work :)

* Don’t worry, after the first 2-3 of them, he calms down. At first, I expected that he’ll ritually consume his mouse, with candles and everything. You’ll see what I mean.

5 thoughts on “Beginning Vim

  1. Waiting for the detailed stats on improved productivity. I know you’ll be recording every single metric, especially LOC/h.

  2. Give Emacs a go to, but make sure you use a really good (modern) existing .emacs config, because it’s ugly as sin out the box, and takes months to get a good config going… But once it’s going, it’s vim awesome x9000

  3. Nice, I am a newbie in the programming world but would like to get started with Vim right away. I don’t see any reason why not. :)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>