Željko Filipin's blog.
Home Blog Tags Now License

View on GitHub
1 April 2015


by Željko Filipin



Vim is one of the two most popular text editors, the other one being Emacs.

Vim Emacs

The story

Before getting involved in the editor war, let me tell you a story.

As everybody else that writes code for living, I have used a lot of editors and IDEs. I liked some more than others. What was always intriguing to me was the fanaticism of Vim and Emacs users. I have tried both. For a minute. My first impression was what is this I don’t even…?!

I remember the times when I would type git commit and end up in Vim by mistake. The only thing I knew was to very carefully close it with :q.

Editing commit message in Vim

The only command-line editor that I was able to use was nano.


Then, last year, while taking a look at the Ruby survey results I was surprised to see replies to the text editor of preference question. To summarize:

Emacs being in single digit percentage did not surprise me. Texmate going down or Sublime going up did not surprise me. What did surprise me was Vim going up from year to year. What?! I have decided to spend some time and learn the basics. A few months ago I have carefully replaced editor in my .gitconfig from nano to vim.


All I know about Vim I have learned from vimtutor. I can not remember how I have stumbled upon it. Just start it from the command line:

$ vimtutor

vimtutor normal mode

The first page says:

The approximate time required to complete the tutor is 25-30 minutes

but that is a lie. You will need more time. As far as I remember, an hour or two. This blog post will cover just a few things from vimtutor.


What you will notice, if you end up in Vim by mistake, is that nothing works. You start typing. In best case, nothing happens. In worst case, you mess up the file entirely, or delete it. That is because by default you are in “normal” mode. Yeah, right, normal. Anyway, you want the other mode, insert. To change from normal to insert mode, press i. That is all. You will notice -- INSERT -- text at the bottom of the screen.

vimtutor insert mode

To change from insert to normal mode, press escape. If you are not sure what to do, press escape. That will get you to normal mode. Fortunately, there are no other modes.


It is simple: $ vim file-name. If file-name exists, you will start editing it. If it does not exist, you will get an empty screen.


While in normal mode, you can move around with cursor keys and with hjkl keys. h is left, j is down, k is up, l is right. While in insert mode you can navigate only with cursor keys, of course. hjkl keys will type respective letters.


If you have had enough, it is important to know how to exit. The usual things do not work. If you are in normal mode and you have not edited the file, just type :q. If you are in insert mode, press escape to get to normal mode.

If you have made some changes, Vim will ask you what to do when you type :q

Save changes to ""?
[Y]es, (N)o, (C)ancel:

If you have made some changes, and you want to save them, exit with :wq


You will probably want to tweak your Vim configuration file, .vimrc. A good starting point is .vimrc at Vim Tips wiki. Also, feel free to take a look at my .vimrc.

More information


tags: code - event - featured - speaker - twitter - vim