Below you can see some of the most important vi commands.
Starting, Exiting, Reading and Writing Files in vi
Command | Description |
---|---|
vi myfile | Start vi and edit myfile |
vi -r myfile | Start vi and edit myfile in recovery mode from a system crash |
:r file2<RET> | Read in file2 and insert at current position |
:w<RET> | Write out the file |
:w myfile<RET> | Write out the file to myfile |
:w! file2<RET> | Overwrite file2 |
:x<RET> or :wq<RET> | Exit vi and write out modified file |
:q<RET> | Quit vi |
:q!<RET> | Quit vi even though modifications have not been saved |
Changing Position in vi
Command | Description |
---|---|
arrow keys | Use the arrow keys for up, down, left and right; or: |
j or <RET> | One line down |
k | One line up |
h or Backspace | One character left |
l or Space | One character right |
0 | Move to beginning of line |
$ | Move to end of line |
w | Move to beginning of next word |
b | Move back to beginning of preceding word |
:0 <RET> or 1G | Move to beginning of file |
:n <RET> or nG | Move to line n |
:$ <RET> or G | Move to last line in file |
^f or PageDown | Move forward one page |
^b or PageUp | Move backward one page |
^l | Refresh and center screen |
Searching for Text in vi
Command | Description |
---|---|
/pattern<RET> | Search forward for pattern |
n | Move to next occurrence of search pattern |
string<RET> | Search backward for pattern |
N | Move to previous occurrence of search pattern |
Changing, Adding and Deleting Text in vi
Command | Description |
---|---|
a | Append text after cursor; stop upon Escape key |
A | Append text at end of current line; stop upon Escape key |
i | Insert text before cursor; stop upon Escape key |
I | Insert text at beginning of current line; stop upon Escape key |
o | Start a new line below current line, insert text there; stop upon Escape key |
O | Start a new line above current line, insert text there; stop upon Escape key |
r | Replace character at current position |
R | Replace text starting with current position; stop upon Escape key |
x | Delete character at current position |
Nx | Delete N characters, starting at current position |
dw | Delete the word at the current position |
D | Delete the rest of the current line |
dd | Delete the current line |
Ndd or dNd | Delete N lines |
u | Undo the previous operation |
yy | Yank (cut) the current line and put it in buffer |
Nyy or yNy | Yank (cut) N lines and put it in buffer |
p | Paste at the current position the yanked line or lines from the buffer |