vi commands
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 :x 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