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 
  @  execute command in register
  !  send next to command, replace output (eg  !}fmt passes the current
       paragraph to the command fmt, and replaces the output with
       whatever fmt returns.) 
 !!  send line to command
 >>  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 (if defined as interupt)
  d  delete until...  
  D  delete to end of line 
 ^d  scroll down half a window, moves to previous shiftwidth in insert
       mode
  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 in command, quotes next character in insert
  w  beginning of next word 
  W  beginning of next word, ignore punctuation 
 ^w  unused in command, in insert move back to beginning of previous
       word
  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 (only if changes have been made) and quit 
 ^z  unused

Command mode input options ( : commands)

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

 :r        read  into current text 
 :r !   read output from command  into current text 
 :nr       read in at line number 
 :!        run command, return 
 :sh             goto shell 
 :so       read and execute commands from 
 :x              write (only if changes have been made) and quit 
 :wq             write and quit 
 :l1,l2w   write between lines l1 and l2 to .  If  
                   is not specified, assume current.  If l1,l2 not 
                   specified, assume entire file (making it :w)
 :w >>     append to .  May use line numbers
 :w!             overwrite current file 
 :q              quit
 :q!             quit, forget changes 
 :e        edit  without leaving vi 
 :e!             forget changes since last write
 :n              edit next file 
 :e +n     edit  at line n, if no end, assume end of file 
 :n       specify  as new list of files to edit 
 :e#             edit alternate file (if :e  is used, alternate is
                   the original file)
 :args           show files to be edited 
 :rew            rewind list 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> 
 :cd  cd to 
 :set