6.0 - Alphabetical vi quick reference

... means that something needs to be specified before or after the command, as appropriate. This is normally a cursor movement keys (h,j,k,l,w,b, etc.) or a line number.

  #  (where # is a number) following command n times...  
  :  go to ex-mode 
  )  next sentence 
  (  previous sentence 
  }  next paragraph 
  {  previous paragraph 
 ]]  next section 
 [[  previous section
  0  beginning of line 
  $  end of line 
  ^  first non-whitespace character
  +  first character of next line 
  -  first character of previous line 
(spacebar) next character 
(return) next line 
  /  search forward 
  ? search backward 
  %  find match of current parenthesis, brace, or bracket 
  ,  reverse direction of last f, F, t, or T 
  ;  repeat last f, F, t, or T
  .  repeat last command
  `  goto mark 
  '  goto beginning of line with mark 
 ``  return to previous mark or location before a search 
 ''  go to start of line of previous mark or location before search
  ~  switch case of current character 
  "  store in register 
 !!  repeat last shell command
  !  send next to command, replace output (eg  !}fmt passes the current
       paragraph to the command fmt, and replaces the output with
       whatever fmt returns.) 
 >>  shift paragraph one shiftwidth to the right 
 <<  shift paragraph one shiftwidth to the left 
 >%  shift until matching (, [, or { to the right 
 <%  shift until matching (, [, or { to the left
  a  append after the current location 
  A  append at the end of the line
 ^a  unused
  b  beginning of previous word 
  B  beginning of previous word, ignore punctuation 
 ^b  scroll back one screen
  c  change until...  
  C  change to end of line 
 ^c  ends insert mode, unused in command mode
  d  delete until...  
  D  delete to end of line 
 ^d  scroll down half a window, moves to previous shiftwidth in insert
  e  end of word 
  E  end of word, ignore punctuation 
 ^e  scroll screen down one line
  f  find...  
  F  find backward...  
 ^f  scroll forward one screen
  g  unused 
  G  ...Goto  [defaults to end of file] 
 ^g  show status line
  h  left 
  H  first line on screen 
 ^h  backspace in insert mode, left in command mode
  i  insert before current location 
  I  insert before first non-whitespace character on line 
 ^i  tab in insert, unused in command
  j  down 
  J  join next line with current line 
 ^j  down in command, create newline in insert
  k  up 
  K  unused 
 ^k  unused
  l  right 
  L  last line on screen 
 ^l  redraw screen
  m  mark position into register 
  M  middle of screen 
 ^m  carriage return
  n  repeat last search 
  N  repeat last search, reverse direction 
 ^n down in command
  o  open line below current 
  O  open line above current 
 ^o  unused
  p  put below current line 
  P  put above current line 
 ^p  up in command
  q  unused 
  Q  quit and run ex 
 ^q  unused
  r  replace current character 
  R  replace characters until insert mode is left 
 ^r  redraw screen in command mode
  s  substitute 
  S  substitute entire line 
 ^s  unused
  t  to...  
  T  backward to...  
 ^t  moves to next shiftwidth.
  u  undo last change 
  U  undo changes to current line 
 ^u  scroll up half a window
  v  unused 
  V  unused 
 ^v  unused
  w  beginning of next word 
  W  beginning of next word, ignore punctuation 
 ^w  unused in command, in insert move back to beginning of previous
  x  delete current character 
  X  delete previous character 
 ^x  unused
  y  yank...  
  Y  yank current line 
 ^y  scroll screen up one line
  z  reposition screen around line (Return to top of screen, . to 
       middle, - to bottom) 
 ZZ  write and quit 
 ^z  unused

6.1 - Command mode input options ( : commands)

(Note: this is not a canonical list, just some of the more important ones.)

 :r <file>   	read <file> into current text 
 :r !<command>   	read output from command <command> into current text 
 :nr <file>	   	read in at line number 
 :!<file>	        run command, return 
 :sh           		goto shell 
 :so <file>     	read and execute commands from <file>
 :x              	write and quit 
 :wq             	write and quit 
 :l1,l2w <file>	write between lines l1 and l2 to <file>.  If <file> 
                   is not specified, assume current.  If l1,l2 not 
                   specified, assume entire file (making it :w)
 :w >&g;t <file>	append to <file>.  May use line numbers
 :w!             	overwrite current file 
 :q              	quit
 :q!             	quit, forget changes 
 :e <file>		edit <file> without leaving vi 
 :e!             	forget changes since last write
 :n              	edit next file 
 :e +n <file>	edit <file> at line n, if no end, assume end of file 
 :n <files>		specify <files> as new list of files to edit 
 :e#             	edit alternate file (if :e <file> is used, alternate is
		   the original file)
 :args           	show files to be edited 
 :rew            	rewind life of files to top 
 :map m n        	create a macro (make m do n) 
 :map! m n       	create an insert mode macro (make m do n) 
 :unmap m        	destroy macro m 
 :unmap! m       	destroy insert mode macro m 
 :ab <1> <2>    abbreviate - replace <1> with <2> whenever typed as 
                   a word
 :unab <1>       	unabbreviate <1> 
 :set <option>   	set <option>...

6.2 - set options

The abbreviations in parenthesis may be used. Syntax:

:set <option> <param> (If <param> is expected) Multiple options may be specified on one line.
:set <option>? displays the value of the <option>
:set all displays the value of all the options.

For options without a value, set no<option> turns it off.

Option:             Default:           What it does:

autoindent (ai)     noai               Makes new lines automatically
                                         indent to the position as the 
                                         line above or below
autoprint (ap)      ap                 Display changes after each 
autowrite (aw)      noaw               Automatically save file 
                                         before :n, :!  
beautify (bf)       nobf               Ignore all control characters
                                         during input (except tab, 
                                         newline, formfeed)
directory= (dir=)   /tmp               Name of the directory to store 
edcompatible        noedcompatible     Use ed-like features on 
errorbells (eb)     errorbells         Sound bell on error
exrc (ex)           noexrc             Allow .exrc files outside home 
hardtabs= (ht=)     8                  Set boundary for hardware tabs 
ignore case (ic)    noic               Ignore case in regex expressions 
lisp                nolisp             Turn on lisp mode
list                nolist             Display all tabs, end of lines
magic               magic              Enable more regex expressions
mesg                mesg               Allows mesgs to be sent to 
number (nu)         nonumber           Displays line numbers in file 
open                open               Allows open and visual
optimize (opt)      optimize           Optimizes throughput of text by 
                                         not sending carriage returns 
                                         when printing text
paragraphs= (para=) IPLPPPQPPLIbp      Sets the delimiters for { & }
prompt              prompt             Command mode input gives : prompt 
readonly (ro)       noro               Cannot write unless ! is given  
redraw              noredraw           Redraw screen when edits are made 
remap               remap              Allows macros that point to other
report=             5                  Report changes if they effect > x
scroll              1/2 window         Amount of screen to scroll when
					 scroll down is received in
					 command mode.  Also, number of
					 lines printer by z.  (z prints
sections=           SHNHH HU           Defines end of section for [[ 
                                         and ]] 
shell= (sh=)        /bin/sh            Default shell.  Uses SHELL
					 environment, if set
shiftwidth= (sw=)   8                  Characters to shift when using
					 shift commands
showmatch (sm)      nosm               Show matching {, }, (, ), [, or ] 
showmode            noshowmode         Shows which mode you are in.
slowopen (slow)                        Do not update display 
                                         immediately after insert
tabstop= (ts=)      8                  Sets tabstop length 
taglength= (tl=)    0                  Number of characters significant
                                         for tags (0 means all 
tags=               tag, /usr/lib/tags Define pathname of files 
                                         containing tags.
term=                                  Set the terminal type
terse               noterse            Display shorter error messages
timeout (to)        timeout            Keyboard maps timeout after one 
ttytype=                               Set the terminal type
warn                warn               Display "No write since last 
                                         change" messages
window= (w=)                           Number of lines in window in visual
wrapmargin= (wm=)   0                  Set the right margin.  Greater 
                                         than 0 will word wrap n spaces
                                         from the edge of the screen
wrapscan (ws)       ws                 Searches wrap around end of file
writeany (wa)       nowa               Allow saving to any file

This HTML version of the vi Faq was compiled by Baruch Promislow of Macom Networking LTD.

(C)opyright, E. Larry Lidz, 1994, 1995. All Rights Reserved.