Vi Cheatsheet
Home ] Up ]



vi - Command mode

i input mode
esc command mode
:se number display line numbers
:se nonumber don't display line numbers
:e open file
:w save (write) file to disk
:wq save and quit
:q! quit but don't save
number,command apply command number times (e.g. 4,x = delete 4 characters)
. repeat last effective cmd
esc,u undo it

vi - Command mode - Moving the cursor

- go to beginning of previous line
0 (zero) or ^ go to beginning of this line
$ go to end of this line
ret or + = go to beginning of next line (NOT THE SAME AS INPUT RETURN)
w go to beginning of next word
b go to beginning of this word
e go to end of this word
sft-h go to first line onscreen
sft-l go to last line onscreen
ctrl-f forward (down) one screen
ctrl-b backward (up) one screen
1,sft-g top of the buffer
sft-g bottom of the buffer (i.e. EOF)
line,sft-g go to line (e.g. 3,5,sft-g = line 35)
column,| go to column (e.g. 4,| = column 4)

vi - Command mode - Deletion

deleted text is put to the general purpose buffer; use the p cmd to retrieve it you can also use yanks to not delete it but still put it in the GPB basically delete = cut and yank = copy in your OS's Edit menu
x delete this character
d,w delete word
d,d delete line
sft-d delete to end of line (same as emacs ctrl-k)
y,w yank to beginning of next word
sft-y or y,$ yank to end of line
y,y yank entire line
buffer"lines"y,y yank lines number of lines into buffer buffer (a-z)
p paste contents of general-purpose buffer

vi - Command mode - Replacement

To use replacers type the sequence and then type the string of characters to replace with, e.g. 2,c,w,"Bored Zo" to replace from the cursor to the end of the next word to "Bored Zo"
r replace a single character
shift-r replace characters from the cursor(e.g. if | is the cursor and your text is "I AM the |Entertained Zo!" shift-r,"Bored" will give you "I AM the Boredtained Zo!")
c,w or c,e change from cursor to end of word
c,b change from beginning of word to before cursor
c,$ or sft-c change from cursor to end of line
c,c change the ENTIRE line
:x,ys/oldstring/newstring/ substitute newstring for oldstring from line x to line y (if y = $ then to EOF)
~ toggle a character's case

vi - Command mode - Searching

see section on regular expressions above
/ search forward from cursor for a pattern
? search backward from cursor for a pattern
n next result
sft-n previous result

vi - Command mode - Insertion

o insert a blank line below this one
sft-o ...above this one
:r file insert file at cursor



My name is Michael Oliver, and I can be contacted by email here.
The current time is Sunday, 21-Jan-2018 04:35:31 UTC.
This page was last modified on Friday, 11-Mar-2011 21:01:58 UTC.
This page has received 1028 hits since December 2, 2001.