VIM Commands Jumpstart
This page was last modified 2009-04-15 16:51:06 by Puchu.Net user Choco. (Show history)


What is VIM?

VIM is a powerful editor based on vi, which exists on most platforms and comes pre-installed on most UNIX machines. On Linux platforms, vi is aliased to invoke vim.

Moving Cursor

Commands to move cursor around your terminal or window:

gg first line of a file
G last line of a file
^ beginning of a line
$ end of a line
h previous character (left)
l next character (right)
k previous line (up)
j next line (down)

Note that, if you enter a numerical value before typing the command letters, the action is repeated. For example, to move 10 lines up, type 10k.

If you want to go to a specific line number in your file, type line numberG.


To search for a pattern:


After typing and hitting the Enter. key, your cursor will stop at beginning of the first match from the last cursor position. To cycle forward through all of the matched patterns, type n. To cycle backward, type N.


To select characters covered by motion:


To select everything:


Here, gg moves to beginning of file, v selects, G$ motion covers last character of last line in the file.


To insert new texts at current cursor position, type i; to insert after current cursor position, type a. To append new texts at end of line, type A. Once you enter insert/append mode, you will remain in that mode until you hit the Esc key.

As an aside, ctrl + [ is also the same as the Esc key. But you don't want to use it too often, because you may get the Emacs claws; just because you can doesn't mean you have to.

To delete character at current cursor position, type x; to delete previous character type X. To delete one line type dd.

To copy one line, type Y; if you have made a selection already, type y to copy your selection. To paste what you copied, type P to insert before current cursor position; type p to append after current cursor position.

As with most vi commands, typing a number before typing commands repeats the action the number of times you specify. So to type:

blah blah blah blah blah 

I just need to type the following sequence: `5iblah ` and hit Esc key twice. 5 for the number of repeats, i to enter insert mode.

Global Replace

Global replace target with replacement, both works the same way:


Line Justification

Line justification (useful if you use vim as an editor for e-mails, such as from within pine) for texts covered by motion to fit a terminal of 80 columns:

:set textwidth=74

Followed by:


(For example, motion here can be G$, to cover from present cursor location till end of file.)


Mark current position with label (a key) and then recall it (bring cursor back to the marked position):


Block Indent

First select the text you want to indent, then use > and < (shift and . or ,) keys to indent right and left. == will indent a range of text automatically.


To enable syntax folding, use command set foldmethod=syntax. zo/zO opens one/all fold levels. zc/zC closes one/all fold levels. zm/zM folds one/all levels deeper. zr/zR reduces one/all fold levels.

Editor Configuration

When you work with terminals, you may want to tell vim to use 2 space characters are used for each tab:

:set ts=2

To toggle line numbers, type:

:set nu!

Other useful commands:

  • set nu / set nonu to display/hide line numbers.
  • set list / set nolist to display/hide non-printable characters.
  • set ic / set noic to perform non-case-sensitive/case-sensitive search.



Document is accessible from © 2002-2010 Sean Yang, Karen Yang, Don Yang and/or respective authors, all rights reserverd.

This material may contain (biased) opinions, inappropriate materials for numerous individuals, work of other authors from the internet, links that refer to other web documents and resources, or origial work that cannot be use for personal or commercial purposes. Please respect the work of original authors.

Creative Commons License
Powered By MediaWiki

© 2002-2010 Sean Yang, all rights reserved.