Quitting
:x | Exit saving changes |
:q | Exit as long as there have been no changes |
ZZ | Exit and save changes if any have been made |
:q! | Exit and ignore any changes |
Inserting Text
i | Insert before cursor |
I | Insert before line |
a | Append after cursor |
A | Append after line |
o | Open a new line after current line |
O | Open a new line before current line |
r | Replace one character |
R | Replace many characters |
Motion
h | Move left |
j | Move down |
k | Move up |
l | Move right |
w | Move to next word |
W | Move to next blank delimited word |
b | Move to the beginning of the word |
B | Move to the beginning of blank delimted word |
e | Move to the end of the word |
E | Move to the end of Blank delimited word |
( | Move a sentence back |
) | Move a sentence forward |
{ | Move a paragraph back |
} | Move a paragraph forward |
0 | Move to the begining of the line |
$ | Move to the end of the line |
1G | Move to the first line of the file |
G | Move to the last line of the file |
nG | Move to nth line of the file |
:n | Move to nth line of the file |
fc | Move forward to c |
Fc | Move back to c |
H | Move to top of screen |
M | Move to middle of screen |
L | Move to botton of screen |
% | Move to associated ( ), { }, [] |
Deleting Text
Almost all deletion commands are performed by typing d followed by a motion. For example, dw deletes a word. A few other deletes are:
x | Delete character to the right of cursor |
X | Delete character to the left of cursor |
D | Delete to the end of the line |
dd | Delete current line |
:d | Delete current line |
Yanking Text
Like deletion, almost all yank commands are performed by typing y followed by a motion. For example, y$ yanks to the end of the line. Two other yank commands are:
yy | Yank the current line |
:y | Yank the current line |
Putting text
p | Put after the position or after the line |
P | Put before the poition or before the line |
Search for strings
/string | Search forward for string |
?string | Search back for string |
n | Search for next instance of string |
N | Search for previous instance of string |
Replace
The search and replace function is accomplished with the :s command. It is commonly used in combination with ranges or the :g command (below).
:s/pattern/string/flags | Replace pattern with string according to flags. |
g Flag | Replace all occurences of pattern |
c Flag | Confirm replaces |
& | Repeat last :s command |
:.= | Shows current line number |
:= | Shows number of lines in file |
VI Settings
Note: Options given are default. To change them, enter type :set option to turn them on or :set nooption to turn them off.To make them execute every time you open VI, create a file in your HOME directory called .exrc and type the options without the colon (:) preceding the option Set Default Description
:set ai noai | Turns on auto indentation |
:set all | Prints all options to the screen |
:set ap aw | Prints line after d c J m :s t u commands |
:set aw noaw | Automatic write on :n ! e# ^^ :rew ^} :tag |
:set bf nobf | Discards control characters from input |
:set dir=tmp dir = /tmp | Sets tmp to directory or buffer file |
:set eb noed | Precedes error messages with a bell |
:set ed noed | Precedes error messages with a bell |
:set ic noic | Ignores case when searching |
:set lisp nolisp | Modifies brackets for Lisp compatibility. |
:set list nolist | Shows tabs (^l) and end of line ($) |
:set magic magic | Allows pattern matching with special characters |
:set mesg mesg | Allows others to send messages |
:set nooption | Turns off option |
:set nu nonu | Shows line numbers |
:set opt opt | Speeds output; eliminates automatic RETURN |
:set prompt prompt | Prompts for command input with : |
:set re nore | Simulates smart terminal on dumb terminal |
:set ro noro | Changes file type to "read only" |
:set scroll=n scroll = 11 | set n lines for CTRL-d and z |
:set showmode nosm | Indicates input or replace mode at bottom |
:set sm nosm | Show matching { or ( as ) or } is typed |