Notes to Self

Alex Sokolsky's Notes on Computers and Programming

vi cheat sheet

vi in wikipedia, original article.

Command Line

Command Action
vi file edit file
view file view file
vi -r file view file
vi -R file view file
vi + file edit file, cursor at last line
vi +n file edit file, cursor at line n

Modes: Command & Input

vi starts in command mode. Navigation commands operate in command mode. To switch to input mode enter one of the input commands. Once in input mode, any character you type is added to the file. To exit the input mode, press the Esc key.

graph LR
    A[Start] --> B(Command Mode)
    B -- Navigation --> B
    B -- Deletion --> B
    B -- Input Command --> D(Input Mode)
    D --Esc--> B

Save, Exit

While in command mode…

Key Action
:x Save and exit
:q Quit
:q! Discard changes, quit
:e! Discard changes since last save
:w Save
:w! Save, overwrite protection
:w file Save as file
:wq Save the file, exit vi


Key Action
:e file Open file for editing
:e! file Discard changes, open file for editing

While in Command Mode…

Key Action
H Upper left corner (home)
M Middle line
L Lower left corner
h Back a character
l Forward a character
j Down a line
k Up a line
^ Beginning of line
$ End of line
w One word forward
b Back one word
G go to the last line
n G go to line n
: n go to line n
Ctrl+G display line


Key Action
z [Enter] Cursor at top
z. Cursor in the middle
z- Cursor at bottom

Search & Replace

Key Action
fc Find c
; Repeat find (find next c)
/ pattern Forward
/ Repeat forward
? pattern Reverse
? Repeat reverse
n Next occurrence in the direction of search
N Prev occurrence in the direction of search
:g/from/s//to/g Global replace

Deletion Commands

While in command mMode…

Key Action
dd Delete a line
n dd Delete n lines
d) Delete to end of sentence
db Delete the previous word
D Delete to the end of line
x Delete a character

Undo commands

Key Action
u Undo last change
U Undo all changes on line

Input Commands

These force transition to input mode. To get back into command mode, press Esc.

Key Action
i Insert before
a Insert after
I Insert at the beginning of line
A Insert at the end of line
o Open line below
O Open line above
:r file Import a file
:12r file Import a file at line 12