Skip to main content.
Index | Support | Documentation | FAQ

vi command summary

The following tables contain all the basic 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