This is an old revision of the document!
VIM Commands
* you can start the VIM tutor by typing 'vimtutor' at a command prompt
Navigation
h, j, k, l | move left, down, up, right |
$ or END | jump to the end of the current line |
<html>^</html> or HOME | jump to the beginning of the current line |
Shift-G | go to end of file |
<number> Shift-G | go to line <number> of file; i.e.: '1 Shift-g' to go to first line |
Ctrl-e | scroll window downwards by line |
Ctrl-y | scroll window upwards by line |
Ctrl-f | scroll window page forward (down) |
Ctrl-b | scroll window page back (up) |
Files
Ctrl-g | show line/percentage location in file and file status |
:q | quit |
:q! | quit without saving changes |
ZZ | immediately exit saving changes |
ZQ | immediately exit without saving changes |
:w | save changes |
:wq | save changes and quit |
:! <command> | execute an external command, such as dir, ls, etc… |
:r <filename> | insert the contents of a file |
Search and Replace
/ <searchterm> | begin search for <searchterm> |
n | continue searching the file for <searchterm> |
Shift-N | search in the opposite direction |
? <searchterm> | begin backwards search for <searchterm> |
% | find matching ), ], or } |
:s/old/new | search and replace the first occurance of 'old' with 'new' in the current line |
:s/old/new/g | search and replace all occurances of 'old' with 'new' in the current line |
:#,#s/old/new/g | search and replace all occurances of 'old' with 'new' between the two line numbers (#,#) |
:%s/old/new/g | search and replace all occurances of 'old' with 'new' in the whole file |
:%s/old/new/gc | search and replace all occurances of 'old' with 'new' in the whole file, asking for confirmation each time |
Windows
Ctrl-w w | switch to next window |
Ctrl-w Shift-W | switch to previous window |
Ctrl-w <number> - | reduce the height of the current window by <number> lines |
Ctrl-w <number> + | increase the height of the current window by <number> lines |
Ctrl-w s :split | create another window for the current buffer (horizontal) |
Ctrl-w v :vsplit | create another window for the current buffer (vertical) |
Ctrl-w c :close | close current window |
Ctrl-w n :new | create a new window and start editing an empty file in it |
Ctrl-w q :q :quit | quit current window; when quitting the last window, exit VIM |
Copy, Cut, Paste (yank, delete, put)
p | put (paste below) |
Shift-P | put (paste above) |
v | block select (characterwise) mode |
V | block select (linewise) mode |
<number>yy | yank <number> of lines into register (copy) |
y | (after block select) yank (copy) |
d | (after block select) delete (cut) |
Editing
i | insert |
r | replace (temporary mode) |
a | append |
cw | change word (delete remaining portion of the word, and begin editing) |
c(same options as d) | change line, change word etc… |
dd | delete line |
de | delete word (no space) |
dw | delete word |
d$ | delete to end of line |
d<html>^</html> | delete to beginning of line |
u | undo |
U | undo all for line |
Ctrl-r | undo an undo (reverse direction) |
> | indent |
< | outdent |
Code Completion
:help ins-completion
Settings
:se[t] | show all options that differ from their default value |
:se[t] all | show all but terminal options |
:se[t] {option}? | show value of option |
:se[t] {option} | Toggle option: set, switch it on. Number option: show value. String option: show value. |
:se[t] no{option} | Toggle option: Invert value. |
:se[t] {option}& | Reset option to its default value. |
:opt[ions] :bro[wse] se[t] | open a window for viewing and setting all options |
Saving Settings
:mk[exrc] [file] :mk[exrc]! [file] | write, always write current key mappings and changed options to [file] |
:mkv[imrc][!] [file] | (like :mk, but the default is .vimrc) |
Common Settings
(see above for usage)
'number' 'nu' | line numbers for each line |
'spell' | spell check |
'wrap' | line wrapping |
'list' | list mode (tabs as ctrl-i, end of line as $) |
'linebreak' 'lbr' | wrap at word |
'expandtab' 'et' | expand-tab (tabs expanded into spaces) |
'autoindent' 'ai' | auto-indent (copy indent from current line) |
'cindent' 'cin' | C program indenting |
'smartindent' 'si' | smart indenting (like cin, but supposed to work better and is less strict) |
'smarttab' 'sta' |