Starting vi
Command | Description |
---|---|
vi file | start at line 1 of file |
vi +n file | start at line n of file |
vi + file | start at last line of file |
vi +/pattern file | start at pattern in file |
vi -r file | recover file after a system crash |
Saving files and quitting vi
Command | Description |
---|---|
:e file | edit file (save current file with :w first) |
:w | save (write out) the file being edited |
:w file | save as file |
:w! file | save as an existing file |
:q | quit vi |
:wq | save the file and quit vi |
😡 | save the file if it has changed and quit vi |
:q! | quit vi without saving changes |
Moving the cursor
Keys pressed | Effect |
---|---|
h | left one character |
l or <Space> | right one character |
k | up one line |
j or <Enter> | down one line |
b | left one word |
w | right one word |
( | start of sentence |
) | end of sentence |
{ | start of paragraph |
} | end of paragraph |
1G | top of file |
nG | line n |
G | end of file |
<Ctrl>W | first character of insertion |
<Ctrl>U | up ½ screen |
<Ctrl>D | down ½ screen |
<Ctrl>B | up one screen |
<Ctrl>F | down one screen |
Inserting text
Keys pressed | Text inserted |
---|---|
a | after the cursor |
A | after last character on the line |
i | before the cursor |
I | before first character on the line |
o | open line below current line |
O | open line above current line |
Changing and replacing text
Keys pressed | Text changed or replaced |
---|---|
cw | word |
3cw | three words |
cc | current line |
5cc | five lines |
r | current character only |
R | current character and those to its right |
s | current character |
S | current line |
~ | switch between lowercase and uppercase |
Deleting text
Keys pressed | Text deleted |
---|---|
x | character under cursor |
12x | 12 characters |
X | character to left of cursor |
dw | word |
3dw | three words |
d0 | to beginning of line |
d$ | to end of line |
dd | current line |
5dd | five lines |
d{ | to beginning of paragraph |
d} | to end of paragraph |
:1,. d | to beginning of file |
:.,$ d | to end of file |
:1,$ d | whole file |
Using markers and buffers
Command | Description |
---|---|
mf | set marker named “f'' |
`f | go to marker “f'' |
´f | go to start of line containing marker “f'' |
"s12yy | copy 12 lines into buffer “s'' |
"ty} | copy text from cursor to end of paragraph into buffer “t'' |
"ly1G | copy text from cursor to top of file into buffer “l'' |
"kd`f | cut text from cursor up to marker “f'' into buffer “k'' |
"kp | paste buffer “k'' into text |
Searching for text
Search | Finds |
---|---|
/and | next occurrence of “and'', for example, “and'', “stand'', “grand'' |
?and | previous occurrence of “and'' |
/^The | next line that starts with “The'', for example, “The'', “Then'', “There'' |
/^The\> | next line that starts with the word “The'' |
/end$ | next line that ends with “end'' |
/[bB]ox | next occurrence of “box'' or “Box'' |
n | repeat the most recent search, in the same direction |
N | repeat the most recent search, in the opposite direction |
Searching for and replacing text
Command | Description |
---|---|
:s/pear/peach/g | replace all occurrences of “pear'' with “peach'' on current line |
:/orange/s//lemon/g | change all occurrences of “orange'' into “lemon'' on next line containing “orange'' |
:.,$/\<file/directory/g | replace all words starting with “file'' by “directory'' on every line from current line onward, for example, “filename'' becomes “directoryname'' |
:g/one/s//1/g | replace every occurrence of “one'' with 1, for example, “oneself'' becomes “1self'', “someone'' becomes “some1'' |
Matching patterns of text
Expression | Matches |
---|---|
. | any single character |
zero or more of the previous expression | |
. | zero or more arbitrary characters |
\< | beginning of a word |
\> | end of a word |
\ | quote a special character |
\ | the character “'' |
^ | beginning of a line |
$ | end of a line |
[set] | one character from a set of characters |
[XYZ] | one of the characters “X'', “Y'', or “Z'' |
[[:upper:]][[:lower:]]* | one uppercase character followed by any number of lowercase characters |
[^set] | one character not from a set of characters |
[^XYZ[:digit:]] | any character except “X'', “Y'', “Z'', or a numeric digit |
Options to the :set command
Option | Effect |
---|---|
all | list settings of all options |
ignorecase | ignore case in searches |
list | display <Tab> and end-of-line characters |
mesg | display messages sent to your terminal |
nowrapscan | prevent searches from wrapping round the end or beginning of a file |
number | display line numbers |
report=5 | warn if five or more lines are changed by command |
term=ansi | set terminal type to “ansi'' |
terse | shorten error messages |
warn | display “[No write since last change]'' on shell escape if file has not been saved |
Leave a Reply