diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt
new file mode 100644
index 0000000..e18827f
--- /dev/null
+++ b/runtime/doc/quickref.txt
@@ -0,0 +1,1325 @@
+*quickref.txt*  For Vim version 7.0aa.  Last change: 2004 May 05
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+			    Quick reference guide
+
+							 *quickref* *Contents*
+ tag	  subject			 tag	  subject	~
+|Q_ct|  list of help files		|Q_re|	Repeating commands
+|Q_lr|	motion: Left-right		|Q_km|	Key mapping
+|Q_ud|	motion: Up-down			|Q_ab|	Abbreviations
+|Q_tm|	motion: Text object		|Q_op|	Options
+|Q_pa|	motion: Pattern searches	|Q_ur|	Undo/Redo commands
+|Q_ma|	motion: Marks			|Q_et|	External commands
+|Q_vm|	motion: Various			|Q_qf|	Quickfix commands
+|Q_ta|	motion: Using tags		|Q_vc|	Various commands
+|Q_sc|	Scrolling			|Q_ce|	Ex: Command-line editing
+|Q_in|	insert: Inserting text		|Q_ra|	Ex: Ranges
+|Q_ai|	insert: Keys			|Q_ex|	Ex: Special characters
+|Q_ss|	insert: Special keys		|Q_ed|	Editing a file
+|Q_di|	insert: Digraphs		|Q_fl|	Using the argument list
+|Q_si|	insert: Special inserts		|Q_wq|	Writing and quitting
+|Q_de|	change: Deleting text		|Q_st|	Starting VIM
+|Q_cm|	change: Copying and moving	|Q_ac|	Automatic commands
+|Q_ch|	change: Changing text		|Q_wi|	Multi-window commands
+|Q_co|	change: Complex			|Q_bu|	Buffer list commands
+|Q_vi|	Visual mode			|Q_sy|	Syntax highlighting
+|Q_to|	Text objects			|Q_gu|	GUI commands
+					|Q_fo|  Folding
+
+------------------------------------------------------------------------------
+N is used to indicate an optional count that can be given before the command.
+------------------------------------------------------------------------------
+*Q_lr*		Left-right motions
+
+|h|	N  h		left (also: CTRL-H, <BS>, or <Left> key)
+|l|	N  l		right (also: <Space> or <Right> key)
+|0|	   0		to first character in the line (also: <Home> key)
+|^|	   ^		to first non-blank character in the line
+|$|	N  $		to the last character in the line (N-1 lines lower)
+			   (also: <End> key)
+|g0|	N  g0		to first character in screen line (differs from "0"
+			   when lines wrap)
+|g^|	N  g^		to first non-blank character in screen line (differs
+			   from "^" when lines wrap)
+|g$|	N  g$		to last character in screen line (differs from "$"
+			   when lines wrap)
+|gm|	N  gm		to middle of the screen line
+|bar|	N  |		to column N (default: 1)
+|f|	N  f{char}	to the Nth occurrence of {char} to the right
+|F|	N  F{char}	to the Nth occurrence of {char} to the left
+|t|	N  t{char}	till before the Nth occurrence of {char} to the right
+|T|	N  T{char}	till before the Nth occurrence of {char} to the left
+|;|	N  ;		repeat the last "f", "F", "t", or "T" N times
+|,|	N  ,		repeat the last "f", "F", "t", or "T" N times in
+			   opposite direction
+------------------------------------------------------------------------------
+*Q_ud*		Up-down motions
+
+|k|	N  k		up N lines (also: CTRL-P and <Up>)
+|j|	N  j		down N lines (also: CTRL-J, CTRL-N, <NL>, and <Down>)
+|-|	N  -		up N lines, on the first non-blank character
+|+|	N  +		down N lines, on the first non-blank character (also:
+			   CTRL-M and <CR>)
+|_|	N  _		down N-1 lines, on the first non-blank character
+|G|	N  G		goto line N (default: last line), on the first
+			   non-blank character
+|gg|	N  gg		goto line N (default: first line), on the first
+			   non-blank character
+|N%|	N  %		goto line N percentage down in the file.  N must be
+			   given, otherwise it is the |%| command.
+|gk|	N  gk		up N screen lines (differs from "k" when line wraps)
+|gj|	N  gj		down N screen lines (differs from "j" when line wraps)
+------------------------------------------------------------------------------
+*Q_tm*		Text object motions
+
+|w|	N  w		N words forward
+|W|	N  W		N blank-separated |WORD|s forward
+|e|	N  e		forward to the end of the Nth word
+|E|	N  E		forward to the end of the Nth blank-separated |WORD|
+|b|	N  b		N words backward
+|B|	N  B		N blank-separated |WORD|s backward
+|ge|	N  ge		backward to the end of the Nth word
+|gE|	N  gE		backward to the end of the Nth blank-separated |WORD|
+
+|)|	N  )		N sentences forward
+|(|	N  (		N sentences backward
+|}|	N  }		N paragraphs forward
+|{|	N  {		N paragraphs backward
+|]]|	N  ]]		N sections forward, at start of section
+|[[|	N  [[		N sections backward, at start of section
+|][|	N  ][		N sections forward, at end of section
+|[]|	N  []		N sections backward, at end of section
+|[(|	N  [(		N times back to unclosed '('
+|[{|	N  [{		N times back to unclosed '{'
+|[m|	N  [m		N times back to start of method (for Java)
+|[M|	N  [M		N times back to end of method (for Java)
+|])|	N  ])		N times forward to unclosed ')'
+|]}|	N  ]}		N times forward to unclosed '}'
+|]m|	N  ]m		N times forward to start of method (for Java)
+|]M|	N  ]M		N times forward to end of method (for Java)
+|[#|	N  [#		N times back to unclosed "#if" or "#else"
+|]#|	N  ]#		N times forward to unclosed "#else" or "#endif"
+|[star|	N  [*		N times back to start of comment "/*"
+|]star|	N  ]*		N times forward to end of comment "*/"
+------------------------------------------------------------------------------
+*Q_pa*		Pattern searches
+
+|/|	N  /{pattern}[/[offset]]<CR>
+			search forward for the Nth occurrence of {pattern}
+|?|	N  ?{pattern}[?[offset]]<CR>
+			search backward for the Nth occurrence of {pattern}
+|/<CR>|	N  /<CR>	repeat last search, in the forward direction
+|?<CR>|	N  ?<CR>	repeat last search, in the backward direction
+|n|	N  n		repeat last search
+|N|	N  N		repeat last search, in opposite direction
+|star|	N  *		search forward for the identifier under the cursor
+|#|	N  #		search backward for the identifier under the cursor
+|gstar|	N  g*		like "*", but also find partial matches
+|g#|	N  g#		like "#", but also find partial matches
+|gd|	   gd		goto local declaration of identifier under the cursor
+|gD|	   gD		goto global declaration of identifier under the cursor
+
+|pattern|		Special characters in search patterns
+
+			meaning		      magic   nomagic	~
+		matches any single character	.	\.
+		       matches start of line	^	^
+			       matches <EOL>	$	$
+		       matches start of word	\<	\<
+			 matches end of word	\>	\>
+	matches a single char from the range	[a-z]	\[a-z]
+      matches a single char not in the range	[^a-z]	\[^a-z]
+		  matches an identifier char	\i	\i
+		   idem but excluding digits	\I	\I
+		 matches a keyword character	\k	\k
+		   idem but excluding digits	\K	\K
+	       matches a file name character	\f	\f
+		   idem but excluding digits	\F	\F
+	       matches a printable character	\p	\p
+		   idem but excluding digits	\P	\P
+	     matches a white space character	\s	\s
+	 matches a non-white space character	\S	\S
+
+			       matches <Esc>	\e	\e
+			       matches <Tab>	\t	\t
+				matches <CR>	\r	\r
+				matches <BS>	\b	\b
+
+     matches 0 or more of the preceding atom	*	\*
+     matches 1 or more of the preceding atom	\+	\+
+	matches 0 or 1 of the preceding atom	\=	\=
+	matches 2 to 5 of the preceding atom	\{2,5}  \{2,5}
+		  separates two alternatives	\|	\|
+		group a pattern into an atom	\(\)	\(\)
+
+|search-offset|		Offsets allowed after search command
+
+    [num]	[num] lines downwards, in column 1
+    +[num]	[num] lines downwards, in column 1
+    -[num]	[num] lines upwards, in column 1
+    e[+num]	[num] characters to the right of the end of the match
+    e[-num]	[num] characters to the left of the end of the match
+    s[+num]	[num] characters to the right of the start of the match
+    s[-num]	[num] characters to the left of the start of the match
+    b[+num]	[num] identical to s[+num] above (mnemonic: begin)
+    b[-num]	[num] identical to s[-num] above (mnemonic: begin)
+    ;{search-command}	execute {search-command} next
+------------------------------------------------------------------------------
+*Q_ma*		Marks and motions
+
+|m|	   m{a-zA-Z}	mark current position with mark {a-zA-Z}
+|`a|	   `{a-z}	go to mark {a-z} within current file
+|`A|	   `{A-Z}	go to mark {A-Z} in any file
+|`0|	   `{0-9}	go to the position where Vim was previously exited
+|``|	   ``		go to the position before the last jump
+|`quote|   `"		go to the position when last editing this file
+|`[|	   `[		go to the start of the previously operated or put text
+|`]|	   `]		go to the end of the previously operated or put text
+|`<|	   `<		go to the start of the (previous) Visual area
+|`>|	   `>		go to the end of the (previous) Visual area
+|`.|	   `.		go to the position of the last change in this file
+|'|	   '{a-zA-Z0-9[]'"<>.}
+			same as `, but on the first non-blank in the line
+|:marks|  :marks	print the active marks
+|CTRL-O|  N  CTRL-O	go to Nth older position in jump list
+|CTRL-I|  N  CTRL-I	go to Nth newer position in jump list
+|:ju|	  :ju[mps]	print the jump list
+------------------------------------------------------------------------------
+*Q_vm*		Various motions
+
+|%|	   %		find the next brace, bracket, comment, or "#if"/
+			   "#else"/"#endif" in this line and go to its match
+|H|	N  H		go to the Nth line in the window, on the first
+			   non-blank
+|M|	   M		go to the middle line in the window, on the first
+			   non-blank
+|L|	N  L		go to the Nth line from the bottom, on the first
+			   non-blank
+
+|go|	N  go			go to Nth byte in the buffer
+|:go|	:[range]go[to] [off]	go to [off] byte in the buffer
+------------------------------------------------------------------------------
+*Q_ta*		Using tags
+
+|:ta|	   :ta[g][!] {tag}	Jump to tag {tag}
+|:ta|	   :[count]ta[g][!]	Jump to [count]'th newer tag in tag list
+|CTRL-]|      CTRL-]		Jump to the tag under cursor, unless changes
+				   have been made
+|:ts|	   :ts[elect][!] [tag]	List matching tags and select one to jump to
+|:tjump|   :tj[ump][!] [tag]	Jump to tag [tag] or select from list when
+				   there are multiple matches
+
+|:tags|	   :tags		Print tag list
+|CTRL-T|   N  CTRL-T		Jump back from Nth older tag in tag list
+|:po|	   :[count]po[p][!]	Jump back from [count]'th older tag in tag list
+|:tnext|   :[count]tn[ext][!]	Jump to [count]'th next matching tag
+|:tp|      :[count]tp[revious][!] Jump to [count]'th previous matching tag
+|:tr|	   :[count]tr[ewind][!] Jump to [count]'th matching tag
+|:tl|	   :tl[ast][!]		Jump to last matching tag
+
+|:ptag|	   :pt[ag] {tag}	open a preview window to show tag {tag}
+|CTRL-W_}|     CTRL-W }		like CTRL-] but show tag in preview window
+|:pts|     :pts[elect]		like ":tselect" but show tag in preview window
+|:ptjump|  :ptj[ump]		like ":tjump" but show tag in preview window
+|:pclose|  :pc[lose]		close tag preview window
+|CTRL-W_z|     CTRL-W z		close tag preview window
+------------------------------------------------------------------------------
+*Q_sc*		Scrolling
+
+|CTRL-E|	N  CTRL-E	window N lines downwards (default: 1)
+|CTRL-D|	N  CTRL-D	window N lines Downwards (default: 1/2 window)
+|CTRL-F|	N  CTRL-F	window N pages Forwards (downwards)
+|CTRL-Y|	N  CTRL-Y	window N lines upwards (default: 1)
+|CTRL-U|	N  CTRL-U	window N lines Upwards (default: 1/2 window)
+|CTRL-B|	N  CTRL-B	window N pages Backwards (upwards)
+|z<CR>|		   z<CR> or zt	redraw, current line at top of window
+|z.|		   z.	 or zz	redraw, current line at center of window
+|z-|		   z-	 or zb	redraw, current line at bottom of window
+
+These only work when 'wrap' is off:
+|zh|		N  zh		scroll screen N characters to the right
+|zl|		N  zl		scroll screen N characters to the left
+|zH|		N  zH		scroll screen half a screenwidth to the right
+|zL|		N  zL		scroll screen half a screenwidth to the left
+------------------------------------------------------------------------------
+*Q_in*		Inserting text
+
+|a|	N  a	append text after the cursor (N times)
+|A|	N  A	append text at the end of the line (N times)
+|i|	N  i	insert text before the cursor (N times) (also: <Insert>)
+|I|	N  I	insert text before the first non-blank in the line (N times)
+|gI|	N  gI	insert text in column 1 (N times)
+|o|	N  o	open a new line below the current line, append text (N times)
+|O|	N  O	open a new line above the current line, append text (N times)
+|:startinsert|  :star[tinsert][!]  start Insert mode, append when [!] used
+
+in Visual block mode:
+|v_b_I|    I	insert the same text in front of all the selected lines
+|v_b_A|	   A	append the same text after all the selected lines
+------------------------------------------------------------------------------
+*Q_ai*		Insert mode keys
+
+|insert-index|	alphabetical index of Insert mode commands
+
+leaving Insert mode:
+|i_<Esc>|	<Esc>		  end Insert mode, back to Normal mode
+|i_CTRL-C|	CTRL-C		  like <Esc>, but do not use an abbreviation
+|i_CTRL-O|	CTRL-O {command}  execute {command} and return to Insert mode
+
+moving around:
+|i_<Up>|	cursor keys	  move cursor left/right/up/down
+|i_<S-Left>|	shift-left/right  one word left/right
+|i_<S-Up>|	shift-up/down	  one screenful backward/forward
+|i_<End>|	<End>		  cursor after last character in the line
+|i_<Home>|	<Home>		  cursor to first character in the line
+------------------------------------------------------------------------------
+*Q_ss*		Special keys in Insert mode
+
+|i_CTRL-V|	CTRL-V {char}..	  insert character literally, or enter decimal
+				     byte value
+|i_<NL>|	<NL> or <CR> or CTRL-M or CTRL-J
+				  begin new line
+|i_CTRL-E|	CTRL-E		  insert the character from below the cursor
+|i_CTRL-Y|	CTRL-Y		  insert the character from above the cursor
+
+|i_CTRL-A|	CTRL-A		  insert previously inserted text
+|i_CTRL-@|	CTRL-@		  insert previously inserted text and stop
+				     Insert mode
+|i_CTRL-R|	CTRL-R {0-9a-z%#:.-="}  insert the contents of a register
+
+|i_CTRL-N|	CTRL-N		  insert next match of identifier before the
+				     cursor
+|i_CTRL-P|	CTRL-P		  insert previous match of identifier before
+				     the cursor
+|i_CTRL-X|	CTRL-X ...	  complete the word before the cursor in
+				     various ways
+
+|i_<BS>|	<BS> or CTRL-H	  delete the character before the cursor
+|i_<Del>|	<Del>		  delete the character under the cursor
+|i_CTRL-W|	CTRL-W		  delete word before the cursor
+|i_CTRL-U|	CTRL-U		  delete all entered characters in the current
+				     line
+|i_CTRL-T|	CTRL-T		  insert one shiftwidth of indent in front of
+				       the current line
+|i_CTRL-D|	CTRL-D		  delete one shiftwidth of indent in front of
+				     the current line
+|i_0_CTRL-D|	0 CTRL-D	  delete all indent in the current line
+|i_^_CTRL-D|	^ CTRL-D	  delete all indent in the current line,
+				     restore indent in next line
+------------------------------------------------------------------------------
+*Q_di*		Digraphs
+
+|:dig|	   :dig[raphs]		show current list of digraphs
+|:dig|	   :dig[raphs] {char1}{char2} {number} ...
+				add digraph(s) to the list
+
+In Insert or Command-line mode:
+|i_CTRL-K|	CTRL-K {char1} {char2}
+				  enter digraph
+|i_digraph|	{char1} <BS> {char2}
+				  enter digraph if 'digraph' option set
+------------------------------------------------------------------------------
+*Q_si*		Special inserts
+
+|:r|	   :r [file]	   insert the contents of [file] below the cursor
+|:r!|	   :r! {command}   insert the standard output of {command} below the
+			      cursor
+------------------------------------------------------------------------------
+*Q_de*		Deleting text
+
+|x|	N  x		delete N characters under and after the cursor
+|<Del>| N  <Del>	delete N characters under and after the cursor
+|X|	N  X		delete N characters before the cursor
+|d|	N  d{motion}	delete the text that is moved over with {motion}
+|v_d|	{visual}d	delete the highlighted text
+|dd|	N  dd		delete N lines
+|D|	N  D		delete to the end of the line (and N-1 more lines)
+|J|	N  J		join N-1 lines (delete <EOL>s)
+|v_J|	{visual}J	join the highlighted lines
+|gJ|	N  gJ		like "J", but without inserting spaces
+|v_gJ|	{visual}gJ	like "{visual}J", but without inserting spaces
+|:d|	:[range]d [x]	delete [range] lines [into register x]
+------------------------------------------------------------------------------
+*Q_cm*		Copying and moving text
+
+|quote|	  "{char}	use register {char} for the next delete, yank, or put
+|:reg|	  :reg		show the contents of all registers
+|:reg|	  :reg {arg}	show the contents of registers mentioned in {arg}
+|y|	  N  y{motion}	yank the text moved over with {motion} into a register
+|v_y|	     {visual}y	yank the highlighted text into a register
+|yy|	  N  yy		yank N lines into a register
+|Y|	  N  Y		yank N lines into a register
+|p|	  N  p		put a register after the cursor position (N times)
+|P|	  N  P		put a register before the cursor position (N times)
+|]p|	  N  ]p		like p, but adjust indent to current line
+|[p|	  N  [p		like P, but adjust indent to current line
+|gp|	  N  gp		like p, but leave cursor after the new text
+|gP|	  N  gP		like P, but leave cursor after the new text
+------------------------------------------------------------------------------
+*Q_ch*		Changing text
+
+|r|	  N  r{char}	replace N characters with {char}
+|gr|	  N  gr{char}	replace N characters without affecting layout
+|R|	  N  R		enter Replace mode (repeat the entered text N times)
+|gR|	  N  gR		enter virtual Replace mode: Like Replace mode but
+			   without affecting layout
+|v_b_r|	  {visual}r{char}
+			in Visual block mode: Replace each char of the
+			   selected text with {char}
+
+	(change = delete text and enter Insert mode)
+|c|	  N  c{motion}	change the text that is moved over with {motion}
+|v_c|	     {visual}c	change the highlighted text
+|cc|	  N  cc		change N lines
+|S|	  N  S		change N lines
+|C|	  N  C		change to the end of the line (and N-1 more lines)
+|s|	  N  s		change N characters
+|v_b_c|	     {visual}c	in Visual block mode: Change each of the selected
+			   lines with the entered text
+|v_b_C|	     {visual}C	in Visual block mode: Change each of the selected
+			   lines until end-of-line with the entered text
+
+|~|	  N  ~		switch case for N characters and advance cursor
+|v_~|	     {visual}~	switch case for highlighted text
+|v_u|	     {visual}u	make highlighted text lowercase
+|v_U|	     {visual}U	make highlighted text uppercase
+|g~|	     g~{motion} switch case for the text that is moved over with
+			   {motion}
+|gu|	     gu{motion} make the text that is moved over with {motion}
+			   lowercase
+|gU|	     gU{motion} make the text that is moved over with {motion}
+			   uppercase
+|v_g?|	     {visual}g? perform rot13 encoding on highlighted text
+|g?|	     g?{motion} perform rot13 encoding on the text that is moved over
+			   with {motion}
+
+|CTRL-A|  N  CTRL-A	add N to the number at or after the cursor
+|CTRL-X|  N  CTRL-X	subtract N from the number at or after the cursor
+
+|<|	  N  <{motion}	move the lines that are moved over with {motion} one
+			   shiftwidth left
+|<<|	  N  <<		move N lines one shiftwidth left
+|>|	  N  >{motion}	move the lines that are moved over with {motion} one
+			   shiftwidth right
+|>>|	  N  >>		move N lines one shiftwidth right
+|gq|	  N  gq{motion}	format the lines that are moved over with {motion} to
+			   'textwidth' length
+|:ce|	  :[range]ce[nter] [width]
+			center the lines in [range]
+|:le|	  :[range]le[ft] [indent]
+			left-align the lines in [range] (with [indent])
+|:ri|	  :[range]ri[ght] [width]
+			right-align the lines in [range]
+------------------------------------------------------------------------------
+*Q_co*		Complex changes
+
+|!|	   N  !{motion}{command}<CR>
+			filter the lines that are moved over through {command}
+|!!|	   N  !!{command}<CR>
+			filter N lines through {command}
+|v_!|	      {visual}!{command}<CR>
+			filter the highlighted lines through {command}
+|:range!|  :[range]! {command}<CR>
+			filter [range] lines through {command}
+|=|	   N  ={motion}
+			filter the lines that are moved over through 'equalprg'
+|==|	   N  ==	filter N lines through 'equalprg'
+|v_=|	      {visual}=
+			filter the highlighted lines through 'equalprg'
+|:s|	   :[range]s[ubstitute]/{pattern}/{string}/[g][c]
+			substitute {pattern} by {string} in [range] lines;
+			   with [g], replace all occurrences of {pattern};
+			   with [c], confirm each replacement
+|:s|	   :[range]s[ubstitute] [g][c]
+			repeat previous ":s" with new range and options
+|&|	      &		Repeat previous ":s" on current line without options
+|:ret|	   :[range]ret[ab][!] [tabstop]
+			set 'tabstop' to new value and adjust white space
+			   accordingly
+------------------------------------------------------------------------------
+*Q_vi*		Visual mode
+
+|visual-index|	list of Visual mode commands.
+
+|v|	   v		start highlighting characters  }  move cursor and use
+|V|	   V		start highlighting linewise    }  operator to affect
+|CTRL-V|   CTRL-V	start highlighting blockwise   }  highlighted text
+|v_o|	   o		exchange cursor position with start of highlighting
+|gv|	   gv		start highlighting on previous visual area
+|v_v|	   v		highlight characters or stop highlighting
+|v_V|	   V		highlight linewise or stop highlighting
+|v_CTRL-V| CTRL-V	highlight blockwise or stop highlighting
+------------------------------------------------------------------------------
+*Q_to*		Text objects (only in Visual mode or after an operator)
+
+|v_aw|	N  aw		Select "a word"
+|v_iw|	N  iw		Select "inner word"
+|v_aW|	N  aW		Select "a |WORD|"
+|v_iW|	N  iW		Select "inner |WORD|"
+|v_as|	N  as		Select "a sentence"
+|v_is|	N  is		Select "inner sentence"
+|v_ap|	N  ap		Select "a paragraph"
+|v_ip|	N  ip		Select "inner paragraph"
+|v_ab|	N  ab		Select "a block" (from "[(" to "])")
+|v_ib|	N  ib		Select "inner block" (from "[(" to "])")
+|v_aB|	N  aB		Select "a Block" (from "[{" to "]}")
+|v_iB|	N  iB		Select "inner Block" (from "[{" to "]}")
+------------------------------------------------------------------------------
+*Q_re*		Repeating commands
+
+|.|	   N  .		repeat last change (with count replaced with N)
+|q|	      q{a-z}	record typed characters into register {a-z}
+|q|	      q{A-Z}	record typed characters, appended to register {a-z}
+|q|	      q		stop recording
+|@|	   N  @{a-z}	execute the contents of register {a-z} (N times)
+|@@|	   N  @@	   repeat previous @{a-z} (N times)
+|:@|	   :@{a-z}	execute the contents of register {a-z} as an Ex
+			   command
+|:@@|	   :@@		repeat previous :@{a-z}
+|:g|	   :[range]g[lobal]/{pattern}/[cmd]
+			Execute Ex command [cmd] (default: ":p") on the lines
+			   within [range] where {pattern} matches.
+|:g|	   :[range]g[lobal]!/{pattern}/[cmd]
+			Execute Ex command [cmd] (default: ":p") on the lines
+			   within [range] where {pattern} does NOT match.
+|:so|	   :so[urce] {file}
+			Read Ex commands from {file}.
+|:so|	   :so[urce]! {file}
+			Read Vim commands from {file}.
+|:sl|	   :sl[eep] [sec]
+			don't do anything for [sec] seconds
+|gs|	   N  gs	Goto Sleep for N seconds
+------------------------------------------------------------------------------
+*Q_km*		Key mapping
+
+|:map|	     :ma[p] {lhs} {rhs}	  Map {lhs} to {rhs} in Normal and Visual
+				     mode.
+|:map!|	     :ma[p]! {lhs} {rhs}  Map {lhs} to {rhs} in Insert and Command-line
+				     mode.
+|:noremap|   :no[remap][!] {lhs} {rhs}
+				  Same as ":map", no remapping for this {rhs}
+|:unmap|     :unm[ap] {lhs}	  Remove the mapping of {lhs} for Normal and
+				     Visual mode.
+|:unmap!|    :unm[ap]! {lhs}	  Remove the mapping of {lhs} for Insert and
+				     Command-line mode.
+|:map_l|     :ma[p] [lhs]	  List mappings (starting with [lhs]) for
+				     Normal and Visual mode.
+|:map_l!|    :ma[p]! [lhs]	  List mappings (starting with [lhs]) for
+				     Insert and Command-line mode.
+|:cmap|	     :cmap/:cunmap/:cnoremap
+				  like ":map!"/":unmap!"/":noremap!" but for
+				     Command-line mode only
+|:imap|	     :imap/:iunmap/:inoremap
+				  like ":map!"/":unmap!"/":noremap!" but for
+				     Insert mode only
+|:nmap|	     :nmap/:nunmap/:nnoremap
+				  like ":map"/":unmap"/":noremap" but for
+				     Normal mode only
+|:vmap|	     :vmap/:vunmap/:vnoremap
+				  like ":map"/":unmap"/":noremap" but for
+				     Visual mode only
+|:omap|	     :omap/:ounmap/:onoremap
+				  like ":map"/":unmap"/":noremap" but only for
+				     when an operator is pending
+|:mapc|      :mapc[lear]	  remove mappings for Normal and Visual mode
+|:mapc|      :mapc[lear]!	  remove mappings for Insert and Cmdline mode
+|:imapc|     :imapc[lear]	  remove mappings for Insert mode
+|:vmapc|     :vmapc[lear]	  remove mappings for Visual mode
+|:omapc|     :omapc[lear]	  remove mappings for Operator-pending mode
+|:nmapc|     :nmapc[lear]	  remove mappings for Normal mode
+|:cmapc|     :cmapc[lear]	  remove mappings for Cmdline mode
+|:mkexrc|    :mk[exrc][!] [file]  write current mappings, abbreviations, and
+				     settings to [file] (default: ".exrc";
+				     use ! to overwrite)
+|:mkvimrc|   :mkv[imrc][!] [file]
+				  same as ":mkexrc", but with default ".vimrc"
+|:mksession| :mks[ession][!] [file]
+				  like ":mkvimrc", but store current files,
+				     windows, etc. too, to be able to continue
+				     this session later.
+------------------------------------------------------------------------------
+*Q_ab*		Abbreviations
+
+|:abbreviate|	:ab[breviate] {lhs} {rhs}  add abbreviation for {lhs} to {rhs}
+|:abbreviate|	:ab[breviate] {lhs}	   show abbr's that start with {lhs}
+|:abbreviate|	:ab[breviate]		   show all abbreviations
+|:unabbreviate|	:una[bbreviate] {lhs}	   remove abbreviation for {lhs}
+|:noreabbrev|	:norea[bbrev] [lhs] [rhs]  like ":ab", but don't remap [rhs]
+|:iabbrev|	:iab/:iunab/:inoreab	   like ":ab", but only for Insert mode
+|:cabbrev|	:cab/:cunab/:cnoreab	   like ":ab", but only for
+						Command-line mode
+|:abclear|	:abc[lear]		   remove all abbreviations
+|:cabclear|	:cabc[lear]		   remove all abbr's for Cmdline mode
+|:iabclear|	:iabc[lear]		   remove all abbr's for Insert mode
+------------------------------------------------------------------------------
+*Q_op*		Options
+
+|:set|		:se[t]			  Show all modified options.
+|:set|		:se[t] all		  Show all non-termcap options.
+|:set|		:se[t] termcap		  Show all termcap options.
+|:set|		:se[t] {option}		  Set boolean option (switch it on),
+					  show string or number option.
+|:set|		:se[t] no{option}	  Reset boolean option (switch it off).
+|:set|		:se[t] inv{option}	  invert boolean option.
+|:set|		:se[t] {option}={value}	  Set string/number option to {value}.
+|:set|		:se[t] {option}+={value}  append {value} to string option, add
+					  {value} to number option
+|:set|		:se[t] {option}-={value}  remove {value} to string option,
+					  subtract {value} from number option
+|:set|		:se[t] {option}?	  Show value of {option}.
+|:set|		:se[t] {option}&	  Reset {option} to its default value.
+
+|:setlocal|	:setl[ocal]		  like ":set" but set the local value
+					  for options that have one
+|:setglobal|	:setg[lobal]		  like ":set" but set the global value
+					  of a local option
+
+|:fix|		:fix[del]		  Set value of 't_kD' according to
+					  value of 't_kb'.
+|:options|	:opt[ions]		  Open a new window to view and set
+					  options, grouped by functionality,
+					  a one line explanation and links to
+					  the help.
+
+Short explanation of each option:		*option-list*
+|'aleph'|	  |'al'|     ASCII code of the letter Aleph (Hebrew)
+|'allowrevins'|	  |'ari'|    allow CTRL-_ in Insert and Command-line mode
+|'altkeymap'|	  |'akm'|    for default second language (Farsi/Hebrew)
+|'ambiwidth'|	  |'ambw'|   what to do with Unicode chars of ambiguous width
+|'antialias'|	  |'anti'|   Mac OS X: use smooth, antialiased fonts
+|'autochdir'|	  |'acd'|    change directory to the file in the current window
+|'arabic'|	  |'arab'|   for Arabic as a default second language
+|'arabicshape'|   |'arshape'| do shaping for Arabic characters
+|'autoindent'|	  |'ai'|     take indent for new line from previous line
+|'autoread'|	  |'ar'|     autom. read file when changed outside of Vim
+|'autowrite'|	  |'aw'|     automatically write file if changed
+|'autowriteall'|  |'awa'|    as 'autowrite', but works with more commands
+|'background'|	  |'bg'|     "dark" or "light", used for highlight colors
+|'backspace'|	  |'bs'|     how backspace works at start of line
+|'backup'|	  |'bk'|     keep backup file after overwriting a file
+|'backupcopy'|	  |'bkc'|    make backup as a copy, don't rename the file
+|'backupdir'|	  |'bdir'|   list of directories for the backup file
+|'backupext'|	  |'bex'|    extension used for the backup file
+|'backupskip'|	  |'bsk'|    no backup for files that match these patterns
+|'balloondelay'|  |'bdlay'|  delay in mS before a balloon may pop up
+|'ballooneval'|   |'beval'|  switch on balloon evaluation
+|'binary'|	  |'bin'|    read/write/edit file in binary mode
+|'bioskey'|	  |'biosk'|  MS-DOS: use bios calls for input characters
+|'bomb'|		     prepend a Byte Order Mark to the file
+|'breakat'|	  |'brk'|    characters that may cause a line break
+|'browsedir'|	  |'bsdir'|  which directory to start browsing in
+|'bufhidden'|	  |'bh'|     what to do when buffer is no longer in window
+|'buflisted'|	  |'bl'|     whether the buffer shows up in the buffer list
+|'buftype'|	  |'bt'|     special type of buffer
+|'casemap'|	  |'cmp'|    specifies how case of letters is changed
+|'cdpath'|	  |'cd'|     list of directories searched with ":cd"
+|'cedit'|		     key used to open the command-line window
+|'charconvert'|   |'ccv'|    expression for character encoding conversion
+|'cindent'|	  |'cin'|    do C program indenting
+|'cinkeys'|	  |'cink'|   keys that trigger indent when 'cindent' is set
+|'cinoptions'|	  |'cino'|   how to do indenting when 'cindent' is set
+|'cinwords'|	  |'cinw'|   words where 'si' and 'cin' add an indent
+|'clipboard'|	  |'cb'|     use the clipboard as the unnamed register
+|'cmdheight'|	  |'ch'|     number of lines to use for the command-line
+|'cmdwinheight'|  |'cwh'|    height of the command-line window
+|'columns'|	  |'co'|     number of columns in the display
+|'comments'|	  |'com'|    patterns that can start a comment line
+|'commentstring'| |'cms'|    template for comments; used for fold marker
+|'compatible'|	  |'cp'|     behave Vi-compatible as much as possible
+|'complete'|	  |'cpt'|    specify how Insert mode completion works
+|'confirm'|	  |'cf'|     ask what to do about unsaved/read-only files
+|'conskey'|	  |'consk'|  get keys directly from console (MS-DOS only)
+|'copyindent'|    |'ci'|     make 'autoindent' use existing indent structure
+|'cpoptions'|	  |'cpo'|    flags for Vi-compatible behavior
+|'cscopepathcomp'| |'cspc'|  how many components of the path to show
+|'cscopeprg'|	  |'csprg'|  command to execute cscope
+|'cscopequickfix'| |'csqf'|  use quickfix window for cscope results
+|'cscopetag'|	  |'cst'|    use cscope for tag commands
+|'cscopetagorder'| |'csto'|  determines ":cstag" search order
+|'cscopeverbose'| |'csverb'| give messages when adding a cscope database
+|'debug'|		     set to "msg" to see all error messages
+|'define'|	  |'def'|    pattern to be used to find a macro definition
+|'delcombine'|	  |'deco'|   delete combining characters on their own
+|'dictionary'|	  |'dict'|   list of file names used for keyword completion
+|'diff'|		     use diff mode for the current window
+|'diffexpr'|	  |'dex'|    expression used to obtain a diff file
+|'diffopt'|	  |'dip'|    options for using diff mode
+|'digraph'|	  |'dg'|     enable the entering of digraphs in Insert mode
+|'directory'|	  |'dir'|    list of directory names for the swap file
+|'display'|	  |'dy'|     list of flags for how to display text
+|'eadirection'|   |'ead'|    in which direction 'equalalways' works
+|'edcompatible'|  |'ed'|     toggle flags of ":substitute" command
+|'encoding'|	  |'enc'|    encoding used internally
+|'endofline'|	  |'eol'|    write <EOL> for last line in file
+|'equalalways'|   |'ea'|     windows are automatically made the same size
+|'equalprg'|	  |'ep'|     external program to use for "=" command
+|'errorbells'|	  |'eb'|     ring the bell for error messages
+|'errorfile'|	  |'ef'|     name of the errorfile for the QuickFix mode
+|'errorformat'|   |'efm'|    description of the lines in the error file
+|'esckeys'|	  |'ek'|     recognize function keys in Insert mode
+|'eventignore'|	  |'ei'|     autocommand events that are ignored
+|'expandtab'|	  |'et'|     use spaces when <Tab> is inserted
+|'exrc'|	  |'ex'|     read .vimrc and .exrc in the current directory
+|'fileencoding'|  |'fenc'|   file encoding for multi-byte text
+|'fileencodings'| |'fencs'|  automatically detected character encodings
+|'fileformat'|	  |'ff'|     file format used for file I/O
+|'fileformats'|	  |'ffs'|    automatically detected values for 'fileformat'
+|'filetype'|	  |'ft'|     type of file, used for autocommands
+|'fillchars'|	  |'fcs'|    characters to use for displaying special items
+|'fkmap'|	  |'fk'|     Farsi keyboard mapping
+|'foldclose'|	  |'fcl'|    close a fold when the cursor leaves it
+|'foldcolumn'|	  |'fdc'|    width of the column used to indicate folds
+|'foldenable'|	  |'fen'|    set to display all folds open
+|'foldexpr'|	  |'fde'|    expression used when 'foldmethod' is "expr"
+|'foldignore'|	  |'fdi'|    ignore lines when 'foldmethod' is "indent"
+|'foldlevel'|	  |'fdl'|    close folds with a level higher than this
+|'foldlevelstart'| |'fdls'|  'foldlevel' when starting to edit a file
+|'foldmarker'|	  |'fmr'|    markers used when 'foldmethod' is "marker"
+|'foldmethod'|	  |'fdm'|    folding type
+|'foldminlines'|  |'fml'|    minimum number of lines for a fold to be closed
+|'foldnestmax'|   |'fdn'|    maximum fold depth
+|'foldopen'|	  |'fdo'|    for which commands a fold will be opened
+|'foldtext'|	  |'fdt'|    expression used to display for a closed fold
+|'formatoptions'| |'fo'|     how automatic formatting is to be done
+|'formatprg'|	  |'fp'|     name of external program used with "gq" command
+|'gdefault'|	  |'gd'|     the ":substitute" flag 'g' is default on
+|'grepformat'|	  |'gfm'|    format of 'grepprg' output
+|'grepprg'|	  |'gp'|     program to use for ":grep"
+|'guicursor'|	  |'gcr'|    GUI: settings for cursor shape and blinking
+|'guifont'|	  |'gfn'|    GUI: Name(s) of font(s) to be used
+|'guifontset'|	  |'gfs'|    GUI: Names of multi-byte fonts to be used
+|'guifontwide'|   |'gfw'|    list of font names for double-wide characters
+|'guiheadroom'|	  |'ghr'|    GUI: pixels room for window decorations
+|'guioptions'|	  |'go'|     GUI: Which components and options are used
+|'guipty'|		     GUI: try to use a pseudo-tty for ":!" commands
+|'helpfile'|	  |'hf'|     full path name of the main help file
+|'helpheight'|	  |'hh'|     minimum height of a new help window
+|'helplang'|	  |'hlg'|    preferred help languages
+|'hidden'|	  |'hid'|    don't unload buffer when it is |abandon|ed
+|'highlight'|	  |'hl'|     sets highlighting mode for various occasions
+|'hlsearch'|	  |'hls'|    highlight matches with last search pattern
+|'history'|	  |'hi'|     number of command-lines that are remembered
+|'hkmap'|	  |'hk'|     Hebrew keyboard mapping
+|'hkmapp'|	  |'hkp'|    phonetic Hebrew keyboard mapping
+|'icon'|		     let Vim set the text of the window icon
+|'iconstring'|		     string to use for the Vim icon text
+|'ignorecase'|	  |'ic'|     ignore case in search patterns
+|'imactivatekey'| |'imak'|   key that activates the X input method
+|'imcmdline'|	  |'imc'|    use IM when starting to edit a command line
+|'imdisable'|	  |'imd'|    do not use the IM in any mode
+|'iminsert'|	  |'imi'|    use :lmap or IM in Insert mode
+|'imsearch'|	  |'ims'|    use :lmap or IM when typing a search pattern
+|'include'|	  |'inc'|    pattern to be used to find an include file
+|'includeexpr'|   |'inex'|   expression used to process an include line
+|'incsearch'|	  |'is'|     highlight match while typing search pattern
+|'indentexpr'|	  |'inde'|   expression used to obtain the indent of a line
+|'indentkeys'|	  |'indk'|   keys that trigger indenting with 'indentexpr'
+|'infercase'|	  |'inf'|    adjust case of match for keyword completion
+|'insertmode'|	  |'im'|     start the edit of a file in Insert mode
+|'isfname'|	  |'isf'|    characters included in file names and pathnames
+|'isident'|	  |'isi'|    characters included in identifiers
+|'iskeyword'|	  |'isk'|    characters included in keywords
+|'isprint'|	  |'isp'|    printable characters
+|'joinspaces'|	  |'js'|     two spaces after a period with a join command
+|'key'|			     encryption key
+|'keymap'|	  |'kmp'|    name of a keyboard mapping
+|'keymodel'|	  |'km'|     enable starting/stopping selection with keys
+|'keywordprg'|	  |'kp'|     program to use for the "K" command
+|'langmap'|	  |'lmap'|   alphabetic characters for other language mode
+|'langmenu'|	  |'lm'|     language to be used for the menus
+|'laststatus'|	  |'ls'|     tells when last window has status lines
+|'lazyredraw'|	  |'lz'|     don't redraw while executing macros
+|'linebreak'|	  |'lbr'|    wrap long lines at a blank
+|'lines'|		     number of lines in the display
+|'linespace'|	  |'lsp'|    number of pixel lines to use between characters
+|'lisp'|		     automatic indenting for Lisp
+|'lispwords'|	  |'lw'|     words that change how lisp indenting works
+|'list'|		     show <Tab> and <EOL>
+|'listchars'|	  |'lcs'|    characters for displaying in list mode
+|'loadplugins'|   |'lpl'|    load plugin scripts when starting up
+|'magic'|		     changes special characters in search patterns
+|'makeef'|	  |'mef'|    name of the errorfile for ":make"
+|'makeprg'|	  |'mp'|     program to use for the ":make" command
+|'matchpairs'|	  |'mps'|    pairs of characters that "%" can match
+|'matchtime'|	  |'mat'|    tenths of a second to show matching paren
+|'maxfuncdepth'|  |'mfd'|    maximum recursive depth for user functions
+|'maxmapdepth'|   |'mmd'|    maximum recursive depth for mapping
+|'maxmem'|	  |'mm'|     maximum memory (in Kbyte) used for one buffer
+|'maxmemtot'|	  |'mmt'|    maximum memory (in Kbyte) used for all buffers
+|'menuitems'|	  |'mis'|    maximum number of items in a menu
+|'modeline'|	  |'ml'|     recognize modelines at start or end of file
+|'modelines'|	  |'mls'|    number of lines checked for modelines
+|'modifiable'|	  |'ma'|     changes to the text are not possible
+|'modified'|	  |'mod'|    buffer has been modified
+|'more'|		     pause listings when the whole screen is filled
+|'mouse'|		     enable the use of mouse clicks
+|'mousefocus'|	  |'mousef'| keyboard focus follows the mouse
+|'mousehide'|	  |'mh'|     hide mouse pointer while typing
+|'mousemodel'|	  |'mousem'| changes meaning of mouse buttons
+|'mouseshape'|	  |'mouses'| shape of the mouse pointer in different modes
+|'mousetime'|	  |'mouset'| max time between mouse double-click
+|'nrformats'|	  |'nf'|     number formats recognized for CTRL-A command
+|'number'|	  |'nu'|     print the line number in front of each line
+|'osfiletype'|	  |'oft'|    operating system-specific filetype information
+|'paragraphs'|	  |'para'|   nroff macros that separate paragraphs
+|'paste'|		     allow pasting text
+|'pastetoggle'|	  |'pt'|     key code that causes 'paste' to toggle
+|'patchexpr'|	  |'pex'|    expression used to patch a file
+|'patchmode'|	  |'pm'|     keep the oldest version of a file
+|'path'|	  |'pa'|     list of directories searched with "gf" et.al.
+|'preserveindent'| |'pi'|    preserve the indent structure when reindenting
+|'previewheight'| |'pvh'|    height of the preview window
+|'previewwindow'| |'pvw'|    identifies the preview window
+|'printdevice'|   |'pdev'|   name of the printer to be used for :hardcopy
+|'printencoding'| |'penc'|   encoding to be used for printing
+|'printexpr'|     |'pexpr'|  expression used to print PostScript for :hardcopy
+|'printfont'|	  |'pfn'|    name of the font to be used for :hardcopy
+|'printheader'|   |'pheader'| format of the header used for :hardcopy
+|'printoptions'|  |'popt'|   controls the format of :hardcopy output
+|'readonly'|	  |'ro'|     disallow writing the buffer
+|'remap'|		     allow mappings to work recursively
+|'report'|		     threshold for reporting nr. of lines changed
+|'restorescreen'| |'rs'|     Win32: restore screen when exiting
+|'revins'|	  |'ri'|     inserting characters will work backwards
+|'rightleft'|	  |'rl'|     window is right-to-left oriented
+|'rightleftcmd'|  |'rlc'|    commands for which editing works right-to-left
+|'ruler'|	  |'ru'|     show cursor line and column in the status line
+|'rulerformat'|	  |'ruf'|    custom format for the ruler
+|'runtimepath'|   |'rtp'|    list of directories used for runtime files
+|'scroll'|	  |'scr'|    lines to scroll with CTRL-U and CTRL-D
+|'scrollbind'|	  |'scb'|    scroll in window as other windows scroll
+|'scrolljump'|	  |'sj'|     minimum number of lines to scroll
+|'scrolloff'|	  |'so'|     minimum nr. of lines above and below cursor
+|'scrollopt'|	  |'sbo'|    how 'scrollbind' should behave
+|'sections'|	  |'sect'|   nroff macros that separate sections
+|'secure'|		     secure mode for reading .vimrc in current dir
+|'selection'|	  |'sel'|    what type of selection to use
+|'selectmode'|	  |'slm'|    when to use Select mode instead of Visual mode
+|'sessionoptions'| |'ssop'|  options for |:mksession|
+|'shell'|	  |'sh'|     name of shell to use for external commands
+|'shellcmdflag'|  |'shcf'|   flag to shell to execute one command
+|'shellpipe'|	  |'sp'|     string to put output of ":make" in error file
+|'shellquote'|	  |'shq'|    quote character(s) for around shell command
+|'shellredir'|	  |'srr'|    string to put output of filter in a temp file
+|'shellslash'|	  |'ssl'|    use forward slash for shell file names
+|'shelltype'|	  |'st'|     Amiga: influences how to use a shell
+|'shellxquote'|	  |'sxq'|    like 'shellquote', but include redirection
+|'shiftround'|	  |'sr'|     round indent to multiple of shiftwidth
+|'shiftwidth'|	  |'sw'|     number of spaces to use for (auto)indent step
+|'shortmess'|	  |'shm'|    list of flags, reduce length of messages
+|'shortname'|	  |'sn'|     non-MS-DOS: Filenames assumed to be 8.3 chars
+|'showbreak'|	  |'sbr'|    string to use at the start of wrapped lines
+|'showcmd'|	  |'sc'|     show (partial) command in status line
+|'showfulltag'|	  |'sft'|    show full tag pattern when completing tag
+|'showmatch'|	  |'sm'|     briefly jump to matching bracket if insert one
+|'showmode'|	  |'smd'|    message on status line to show current mode
+|'sidescroll'|	  |'ss'|     minimum number of columns to scroll horizontal
+|'sidescrolloff'| |'siso'|   min. nr. of columns to left and right of cursor
+|'smartcase'|	  |'scs'|    no ignore case when pattern has uppercase
+|'smartindent'|   |'si'|     smart autoindenting for C programs
+|'smarttab'|	  |'sta'|    use 'shiftwidth' when inserting <Tab>
+|'softtabstop'|	  |'sts'|    number of spaces that <Tab> uses while editing
+|'splitbelow'|	  |'sb'|     new window from split is below the current one
+|'splitright'|	  |'spr'|    new window is put right of the current one
+|'startofline'|   |'sol'|    commands move cursor to first blank in line
+|'statusline'|	  |'stl'|    custom format for the status line
+|'suffixes'|	  |'su'|     suffixes that are ignored with multiple match
+|'suffixesadd'|   |'sua'|    suffixes added when searching for a file
+|'swapfile'|	  |'swf'|    whether to use a swapfile for a buffer
+|'swapsync'|	  |'sws'|    how to sync the swap file
+|'switchbuf'|	  |'swb'|    sets behavior when switching to another buffer
+|'syntax'|	  |'syn'|    syntax to be loaded for current buffer
+|'tabstop'|	  |'ts'|     number of spaces that <Tab> in file uses
+|'tagbsearch'|	  |'tbs'|    use binary searching in tags files
+|'taglength'|	  |'tl'|     number of significant characters for a tag
+|'tagrelative'|   |'tr'|     file names in tag file are relative
+|'tags'|	  |'tag'|    list of file names used by the tag command
+|'tagstack'|	  |'tgst'|   push tags onto the tag stack
+|'term'|		     name of the terminal
+|'termbidi'|	  |'tbidi'|  terminal takes care of bi-directionality
+|'termencoding'|  |'tenc'|   character encoding used by the terminal
+|'terse'|		     shorten some messages
+|'textauto'|	  |'ta'|     obsolete, use 'fileformats'
+|'textmode'|	  |'tx'|     obsolete, use 'fileformat'
+|'textwidth'|	  |'tw'|     maximum width of text that is being inserted
+|'thesaurus'|	  |'tsr'|    list of thesaurus files for keyword completion
+|'tildeop'|	  |'top'|    tilde command "~" behaves like an operator
+|'timeout'|	  |'to'|     time out on mappings and key codes
+|'timeoutlen'|	  |'tm'|     time out time in milliseconds
+|'title'|		     let Vim set the title of the window
+|'titlelen'|		     percentage of 'columns' used for window title
+|'titleold'|		     old title, restored when exiting
+|'titlestring'|		     string to use for the Vim window title
+|'toolbar'|	  |'tb'|     GUI: which items to show in the toolbar
+|'toolbariconsize'| |'tbis'| size of the toolbar icons (for GTK 2 only)
+|'ttimeout'|		     time out on mappings
+|'ttimeoutlen'|	  |'ttm'|    time out time for key codes in milliseconds
+|'ttybuiltin'|	  |'tbi'|    use built-in termcap before external termcap
+|'ttyfast'|	  |'tf'|     indicates a fast terminal connection
+|'ttymouse'|	  |'ttym'|   type of mouse codes generated
+|'ttyscroll'|	  |'tsl'|    maximum number of lines for a scroll
+|'ttytype'|	  |'tty'|    alias for 'term'
+|'undolevels'|	  |'ul'|     maximum number of changes that can be undone
+|'updatecount'|   |'uc'|     after this many characters flush swap file
+|'updatetime'|	  |'ut'|     after this many milliseconds flush swap file
+|'verbose'|	  |'vbs'|    give informative messages
+|'viewdir'|	  |'vdir'|   directory where to store files with :mkview
+|'viewoptions'|   |'vop'|    specifies what to save for :mkview
+|'viminfo'|	  |'vi'|     use .viminfo file upon startup and exiting
+|'virtualedit'|   |'ve'|     when to use virtual editing
+|'visualbell'|	  |'vb'|     use visual bell instead of beeping
+|'warn'|		     warn for shell command when buffer was changed
+|'weirdinvert'|   |'wi'|     for terminals that have weird inversion method
+|'whichwrap'|	  |'ww'|     allow specified keys to cross line boundaries
+|'wildchar'|	  |'wc'|     command-line character for wildcard expansion
+|'wildcharm'|	  |'wcm'|    like 'wildchar' but also works when mapped
+|'wildignore'|	  |'wig'|    files matching these patterns are not completed
+|'wildmenu'|	  |'wmnu'|   use menu for command line completion
+|'wildmode'|	  |'wim'|    mode for 'wildchar' command-line expansion
+|'winaltkeys'|	  |'wak'|    when the windows system handles ALT keys
+|'winheight'|	  |'wh'|     minimum number of lines for the current window
+|'winfixheight'|  |'wfh'|    keep window height when opening/closing windows
+|'winminheight'|  |'wmh'|    minimum number of lines for any window
+|'winminwidth'|   |'wmw'|    minimal number of columns for any window
+|'winwidth'|	  |'wiw'|    minimal number of columns for current window
+|'wrap'|		     long lines wrap and continue on the next line
+|'wrapmargin'|	  |'wm'|     chars from the right where wrapping starts
+|'wrapscan'|	  |'ws'|     searches wrap around the end of the file
+|'write'|		     writing to a file is allowed
+|'writeany'|	  |'wa'|     write to file with no need for "!" override
+|'writebackup'|   |'wb'|     make a backup before overwriting a file
+|'writedelay'|	  |'wd'|     delay this many msec for each char (for debug)
+------------------------------------------------------------------------------
+*Q_ur*		Undo/Redo commands
+
+|u|	  N  u		undo last N changes
+|CTRL-R|  N  CTRL-R	redo last N undone changes
+|U|	     U		restore last changed line
+------------------------------------------------------------------------------
+*Q_et*		External commands
+
+|:shell|	:sh[ell]	start a shell
+|:!|		:!{command}	execute {command} with a shell
+|K|		   K		lookup keyword under the cursor with
+				   'keywordprg' program (default: "man")
+------------------------------------------------------------------------------
+*Q_qf*		Quickfix commands
+
+|:cc|		:cc [nr]	display error [nr] (default is the same again)
+|:cnext|	:cn		display the next error
+|:cprevious|	:cp		display the previous error
+|:clist|	:cl		list all errors
+|:cfile|	:cf		read errors from the file 'errorfile'
+|:cquit|	:cq		quit without writing and return error code (to
+				   the compiler)
+|:make|		:make [args]	start make, read errors, and jump to first
+				   error
+|:grep|		:gr[ep] [args]	execute 'grepprg' to find matches and jump to
+				   the first one.
+------------------------------------------------------------------------------
+*Q_vc*		Various commands
+
+|CTRL-L|	   CTRL-L	Clear and redraw the screen.
+|CTRL-G|	   CTRL-G	show current file name (with path) and cursor
+				   position
+|ga|		   ga		show ascii value of character under cursor in
+				   decimal, hex, and octal
+|g_CTRL-G|	   g CTRL-G	show cursor column, line, and character
+				   position
+|CTRL-C|	   CTRL-C	during searches: Interrupt the search
+|dos-CTRL-Break|   CTRL-Break	MS-DOS: during searches: Interrupt the search
+|<Del>|		   <Del>	while entering a count: delete last character
+|:version|	:ve[rsion]	show version information
+|:mode|		:mode N		MS-DOS: set screen mode to N (number, C80,
+				   C4350, etc.)
+|:normal|	:norm[al][!] {commands}
+				Execute Normal mode commands.
+|Q|		Q		switch to "Ex" mode
+
+|:redir|	:redir >{file}		redirect messages to {file}
+|:silent|	:silent[!] {command}	execute {command} silently
+|:confirm|	:confirm {command}	quit, write, etc., asking about
+					unsaved changes or read-only files.
+|:browse|	:browse {command}	open/read/write file, using a
+					file selection dialog
+------------------------------------------------------------------------------
+*Q_ce*		Command-line editing
+
+|c_<Esc>|	<Esc>		   abandon command-line (if 'wildchar' is
+				      <Esc>, type it twice)
+
+|c_CTRL-V|	CTRL-V {char}	   insert {char} literally
+|c_CTRL-V|	CTRL-V {number}    enter decimal value of character (up to
+				      three digits)
+|c_CTRL-K|	CTRL-K {char1} {char2}
+				   enter digraph (See |Q_di|)
+|c_CTRL-R|	CTRL-R {0-9a-z"%#:-=}
+				   insert the contents of a register
+
+|c_<Left>|	<Left>/<Right>	   cursor left/right
+|c_<S-Left>|	<S-Left>/<S-Right> cursor one word left/right
+|c_CTRL-B|	CTRL-B/CTRL-E	   cursor to beginning/end of command-line
+
+|c_<BS>|	<BS>		   delete the character in front of the cursor
+|c_<Del>|	<Del>		   delete the character under the cursor
+|c_CTRL-W|	CTRL-W		   delete the word in front of the cursor
+|c_CTRL-U|	CTRL-U		   remove all characters
+
+|c_<Up>|	<Up>/<Down>	   recall older/newer command-line that starts
+				      with current command
+|c_<S-Up>|	<S-Up>/<S-Down>	   recall older/newer command-line from history
+|:history|	:his[tory]	   show older command-lines
+
+Context-sensitive completion on the command-line:
+
+|c_wildchar|	'wildchar'  (default: <Tab>)
+				do completion on the pattern in front of the
+				   cursor.  If there are multiple matches,
+				   beep and show the first one; further
+				   'wildchar' will show the next ones.
+|c_CTRL-D|	CTRL-D		list all names that match the pattern in
+				   front of the cursor
+|c_CTRL-A|	CTRL-A		insert all names that match pattern in front
+				   of cursor
+|c_CTRL-L|	CTRL-L		insert longest common part of names that
+				   match pattern
+|c_CTRL-N|	CTRL-N		after 'wildchar' with multiple matches: go
+				   to next match
+|c_CTRL-P|	CTRL-P		after 'wildchar' with multiple matches: go
+				   to previous match
+------------------------------------------------------------------------------
+*Q_ra*		Ex ranges
+
+|:range|	,		separates two line numbers
+|:range|	;		idem, set cursor to the first line number
+				before interpreting the second one
+
+|:range|	{number}	an absolute line number
+|:range|	.		the current line
+|:range|	$		the last line in the file
+|:range|	%		equal to 1,$ (the entire file)
+|:range|	*		equal to '<,'> (visual area)
+|:range|	't		position of mark t
+|:range|	/{pattern}[/]	the next line where {pattern} matches
+|:range|	?{pattern}[?]	the previous line where {pattern} matches
+
+|:range|	+[num]		add [num] to the preceding line number
+				   (default: 1)
+|:range|	-[num]		subtract [num] from the preceding line
+				   number (default: 1)
+------------------------------------------------------------------------------
+*Q_ex*		Special Ex characters
+
+|:bar|	    |		separates two commands (not for ":global" and ":!")
+|:quote|    "		begins comment
+
+|:_%|	    %		current file name (only where a file name is expected)
+|:_#|	    #[num]	alternate file name [num] (only where a file name is
+			   expected)
+	Note: The next four are typed literally; these are not special keys!
+|:<cword>|  <cword>	word under the cursor (only where a file name is
+			   expected)
+|:<cWORD>|  <cWORD>	WORD under the cursor (only where a file name is
+			   expected) (see |WORD|)
+|:<cfile>|  <cfile>	file name under the cursor (only where a file name is
+			   expected)
+|:<afile>|  <afile>	file name for autocommand (only where a file name is
+			   expected)
+|:<sfile>|  <sfile>	file name of a ":source"d file, within that file (only
+			   where a file name is expected)
+
+		After "%", "#", "<cfile>", "<sfile>" or "<afile>"
+		|::p|	    :p		full path
+		|::h|	    :h		head (file name removed)
+		|::t|	    :t		tail (file name only)
+		|::r|	    :r		root (extension removed)
+		|::e|	    :e		extension
+		|::s|	    :s/{pat}/{repl}/	substitute {pat} with {repl}
+------------------------------------------------------------------------------
+*Q_ed*		Editing a file
+
+	   Without !: Fail if changes has been made to the current buffer.
+	      With !: Discard any changes to the current buffer.
+|:edit_f|  :e[dit][!] {file}	Edit {file}.
+|:edit|	   :e[dit][!]		Reload the current file.
+|:enew|	   :ene[w][!]		Edit a new, unnamed buffer.
+|:find|    :fin[d][!] {file}	Find {file} in 'path' and edit it.
+
+|CTRL-^|   N   CTRL-^		Edit alternate file N (equivalent to ":e #N").
+|gf|	       gf  or ]f	Edit the file whose name is under the cursor
+|:pwd|	   :pwd			Print the current directory name.
+|:cd|	   :cd [path]		Change the current directory to [path].
+|:cd-|	   :cd -		Back to previous current directory.
+|:file|	   :f[ile]		Print the current file name and the cursor
+				   position.
+|:file|	   :f[ile] {name}	Set the current file name to {name}.
+|:files|   :files		Show alternate file names.
+------------------------------------------------------------------------------
+*Q_fl*		Using the argument list			|argument-list|
+
+|:args|	   :ar[gs]		Print the argument list, with the current file
+				   in "[]".
+|:all|	   :all  or :sall	Open a window for every file in the arg list.
+|:wn|	   :wn[ext][!]		Write file and edit next file.
+|:wn|	   :wn[ext][!] {file}	Write to {file} and edit next file, unless
+				   {file} exists.  With !, overwrite existing
+				   file.
+|:wN|	   :wN[ext][!] [file]	Write file and edit previous file.
+
+	     in current window    in new window	~
+|:argument|  :argu[ment] N	  :sar[gument] N	Edit file N
+|:next|	     :n[ext]		  :sn[ext]		Edit next file
+|:next_f|    :n[ext] {arglist}	  :sn[ext] {arglist}	define new arg list
+							   and edit first file
+|:Next|	     :N[ext]		  :sN[ext]		Edit previous file
+|:first|     :fir[st]		  :sfir[st]		Edit first file
+|:last|	     :la[st]		  :sla[st]		Edit last file
+------------------------------------------------------------------------------
+*Q_wq*		Writing and quitting
+
+|:w|	  :[range]w[rite][!]		Write to the current file.
+|:w_f|	  :[range]w[rite] {file}	Write to {file}, unless it already
+					   exists.
+|:w_f|	  :[range]w[rite]! {file}	Write to {file}.  Overwrite an existing
+					   file.
+|:w_a|	  :[range]w[rite][!] >>		Append to the current file.
+|:w_a|	  :[range]w[rite][!] >> {file}	Append to {file}.
+|:w_c|	  :[range]w[rite] !{cmd}	Execute {cmd} with [range] lines as
+					   standard input.
+|:up|	  :[range]up[date][!]		write to current file if modified
+|:wall|	  :wa[ll][!]			write all changed buffers
+
+|:q|	  :q[uit]		Quit current buffer, unless changes have been
+				   made.  Exit Vim when there are no other
+				   non-help buffers
+|:q|	  :q[uit]!		Quit current buffer always, discard any
+				   changes.  Exit Vim when there are no other
+				   non-help buffers
+|:qa|	  :qa[ll]		Exit Vim, unless changes have been made.
+|:qa|	  :qa[ll]!		Exit Vim always, discard any changes.
+|:cq|	  :cq			Quit without writing and return error code.
+
+|:wq|	  :wq[!]		Write the current file and exit.
+|:wq|	  :wq[!] {file}		Write to {file} and exit.
+|:xit|	  :x[it][!] [file]	Like ":wq" but write only when changes have
+				   been made
+|ZZ|	     ZZ			Same as ":x".
+|ZQ|	     ZQ			Same as ":q!".
+|:xall|	  :xa[ll][!]  or :wqall[!]
+				Write all changed buffers and exit
+
+|:stop|	  :st[op][!]		Suspend VIM or start new shell. If 'aw' option
+				   is set and [!] not given write the buffer.
+|CTRL-Z|     CTRL-Z		Same as ":stop"
+------------------------------------------------------------------------------
+*Q_st*		Starting VIM
+
+|-vim|	   vim [options]		start editing with an empty buffer
+|-file|	   vim [options] {file} ..	start editing one or more files
+|--|	   vim [options] -		read file from stdin
+|-tag|	   vim [options] -t {tag}	edit the file associated with {tag}
+|-qf|	   vim [options] -q [fname]	start editing in QuickFix mode,
+					   display the first error
+
+	Vim arguments:
+
+|-gui|	-g		    start GUI (also allows other options)
+
+|-+|	+[num]		    put the cursor at line [num] (default: last line)
+|-+c|	+{command}	    execute {command} after loading the file
+|-+/|	+/{pat} {file} ..   put the cursor at the first occurrence of {pat}
+|-v|	-v		    Vi mode, start ex in Normal mode
+|-e|	-e		    Ex mode, start vim in Ex mode
+|-R|	-R		    Read-only mode, implies -n
+|-m|	-m		    modifications not allowed (resets 'write' option)
+|-b|	-b		    binary mode
+|-l|	-l		    lisp mode
+|-A|	-A		    Arabic mode ('arabic' is set)
+|-F|	-F		    Farsi mode ('fkmap' and 'rightleft' are set)
+|-H|	-H		    Hebrew mode ('hkmap' and 'rightleft' are set)
+|-V|	-V		    Verbose, give informative messages
+|-C|	-C		    Compatible, set the 'compatible' option
+|-N|	-N		    Nocompatible, reset the 'compatible' option
+|-r|	-r		    give list of swap files
+|-r|	-r {file} ..	    recover aborted edit session
+|-n|	-n		    do not create a swap file
+|-o|	-o [num]	    open [num] windows (default: one for each file)
+|-f|	-f		    GUI: foreground process, don't fork
+			    Amiga: do not restart VIM to open a window (for
+				e.g., mail)
+|-s|	-s {scriptin}	    first read commands from the file {scriptin}
+|-w|	-w {scriptout}	    write typed chars to file {scriptout} (append)
+|-W|	-W {scriptout}	    write typed chars to file {scriptout} (overwrite)
+|-T|	-T {terminal}	    set terminal name
+|-d|	-d {device}	    Amiga: open {device} to be used as a console
+|-u|	-u {vimrc}	    read inits from {vimrc} instead of other inits
+|-U|	-U {gvimrc}	    idem, for when starting the GUI
+|-i|	-i {viminfo}	    read info from {viminfo} instead of other files
+|---|	--		    end of options, other arguments are file names
+|--help|    --help	    show list of arguments and exit
+|--version| --version	    show version info and exit
+|--|	-		    Read file from stdin.
+------------------------------------------------------------------------------
+*Q_ac*		Automatic Commands
+
+|viminfo-file|	Read registers, marks, history at startup, save when exiting.
+
+|:rviminfo|	:rv[iminfo] [file]	Read info from viminfo file [file]
+|:rviminfo|	:rv[iminfo]! [file]	idem, overwrite existing info
+|:wviminfo|	:wv[iminfo] [file]	Add info to viminfo file [file]
+|:wviminfo|	:wv[iminfo]! [file]	Write info to viminfo file [file]
+
+|modeline|	Automatic option setting when editing a file
+
+|modeline|	vim:{set-arg}: ..	In the first and last lines of the
+					file (see 'ml' option), {set-arg} is
+					given as an argument to ":set"
+
+|autocommand|	Automatic execution of commands on certain events.
+
+|:autocmd|	:au			List all autocommands
+|:autocmd|	:au {event}		List all autocommands for {event}
+|:autocmd|	:au {event} {pat}	List all autocommands for {event} with
+					{pat}
+|:autocmd|	:au {event} {pat} {cmd}	Enter new autocommands for {event}
+					with {pat}
+|:autocmd|	:au!			Remove all autocommands
+|:autocmd|	:au! {event}		Remove all autocommands for {event}
+|:autocmd|	:au! * {pat}		Remove all autocommands for {pat}
+|:autocmd|	:au! {event} {pat}	Remove all autocommands for {event}
+					with {pat}
+|:autocmd|	:au! {event} {pat} {cmd}  Remove all autocommands for {event}
+					with {pat} and enter new one
+------------------------------------------------------------------------------
+*Q_wi*		Multi-window commands
+
+|CTRL-W_s|	CTRL-W s  or  :split	Split window into two parts
+|:split_f|	:split {file}		Split window and edit {file} in one of
+					   them
+|:vsplit|	:vsplit {file}		Same, but split vertically
+|:vertical|	:vertical {cmd}		Make {cmd} split vertically
+
+|:sfind|	:sf[ind] {file}		Split window, find {file} in 'path'
+					   and edit it.
+|CTRL-W_]|	CTRL-W ]		Split window and jump to tag under
+					   cursor
+|CTRL-W_f|	CTRL-W f		Split window and edit file name under
+					   the cursor
+|CTRL-W_^|	CTRL-W ^		Split window and edit alternate file
+|CTRL-W_n|	CTRL-W n  or  :new	Create new empty window
+|CTRL-W_q|	CTRL-W q  or  :q[uit]	Quit editing and close window
+|CTRL-W_c|	CTRL-W c  or  :cl[ose]	Make buffer hidden and close window
+|CTRL-W_o|	CTRL-W o  or  :on[ly]	Make current window only one on the
+					   screen
+
+|CTRL-W_j|	CTRL-W j		Move cursor to window below
+|CTRL-W_k|	CTRL-W k		Move cursor to window above
+|CTRL-W_CTRL-W|	CTRL-W CTRL-W		Move cursor to window below (wrap)
+|CTRL-W_W|	CTRL-W W		Move cursor to window above (wrap)
+|CTRL-W_t|	CTRL-W t		Move cursor to top window
+|CTRL-W_b|	CTRL-W b		Move cursor to bottom window
+|CTRL-W_p|	CTRL-W p		Move cursor to previous active window
+
+|CTRL-W_r|	CTRL-W r		Rotate windows downwards
+|CTRL-W_R|	CTRL-W R		Rotate windows upwards
+|CTRL-W_x|	CTRL-W x		Exchange current window with next one
+
+|CTRL-W_=|	CTRL-W =		Make all windows equal height
+|CTRL-W_-|	CTRL-W -		Decrease current window height
+|CTRL-W_+|	CTRL-W +		Increase current window height
+|CTRL-W__|	CTRL-W _		Set current window height (default:
+					   very high)
+------------------------------------------------------------------------------
+*Q_bu*		Buffer list commands
+
+|:buffers|	:buffers  or  :files	list all known buffer and file names
+
+|:ball|		:ball	  or  :sball	edit all args/buffers
+|:unhide|	:unhide   or  :sunhide	edit all loaded buffers
+
+|:badd|		:badd {fname}		add file name {fname} to the list
+|:bunload|	:bunload[!] [N]		unload buffer [N] from memory
+|:bdelete|	:bdelete[!] [N]		unload buffer [N] and delete it from
+					   the buffer list
+
+	      in current window   in new window	~
+|:buffer|     :[N]buffer [N]	  :[N]sbuffer [N]     to arg/buf N
+|:bnext|      :[N]bnext [N]	  :[N]sbnext [N]      to Nth next arg/buf
+|:bNext|      :[N]bNext [N]	  :[N]sbNext [N]      to Nth previous arg/buf
+|:bprevious|  :[N]bprevious [N]   :[N]sbprevious [N]  to Nth previous arg/buf
+|:bfirst|     :bfirst		  :sbfirst	      to first arg/buf
+|:blast|      :blast		  :sblast	      to last arg/buf
+|:bmodified|  :[N]bmod [N]	  :[N]sbmod [N]	      to Nth modified buf
+------------------------------------------------------------------------------
+*Q_sy*		Syntax Highlighting
+
+|:syn-on|	:syntax on		start using syntax highlighting
+|:syn-off|	:syntax off		stop using syntax highlighting
+
+|:syn-keyword|	:syntax keyword {group-name} {keyword} ..
+					add a syntax keyword item
+|:syn-match|	:syntax match {group-name} {pattern} ...
+					add syntax match item
+|:syn-region|	:syntax region {group-name} {pattern} ...
+					add syntax region item
+|:syn-sync|	:syntax sync [ccomment | lines {N} | ...]
+					tell syntax how to sync
+|:syntax|	:syntax [list]		list current syntax items
+|:syn-clear|	:syntax clear		clear all syntax info
+
+|:highlight|	:highlight clear	clear all highlight info
+|:highlight|	:highlight {group-name} {key}={arg} ..
+					set highlighting for {group-name}
+
+|:filetype|	:filetype on		switch on file type detection, without
+					syntax highlighting
+|:filetype|	:filetype plugin indent on
+					switch on file type detection, with
+					automatic indenting and settings
+------------------------------------------------------------------------------
+*Q_gu*		GUI commands
+
+|:gui|		:gui			UNIX: start the GUI
+|:gui|		:gui {fname} ..		idem, and edit {fname} ..
+
+|:menu|		:menu			list all menus
+|:menu|		:menu {mpath}		list menus starting with {mpath}
+|:menu|		:menu {mpath} {rhs}	add menu {mpath}, giving {lhs}
+|:menu|		:menu {pri} {mpath} {rhs}
+					idem, with priorities {pri}
+|:menu|		:menu ToolBar.{name} {rhs}
+					add toolbar item, giving {lhs}
+|:tmenu|	:tmenu {mpath} {text}	add tooltip to menu {mpath}
+|:unmenu|	:unmenu {mpath}		remove menu {mpath}
+------------------------------------------------------------------------------
+*Q_fo*		Folding
+
+|'foldmethod'|	set foldmethod=manual	manual folding
+		set foldmethod=indent	folding by indent
+		set foldmethod=expr	folding by 'foldexpr'
+		set foldmethod=syntax	folding by syntax regions
+		set foldmethod=marker	folding by 'foldmarkers'
+
+|zf|		zf{motion}		operator: Define a fold manually
+|:fold|		:{range}fold		define a fold for {range} lines
+|zd|		zd			delete one fold under the cursor
+|zD|		zD			delete all folds under the cursor
+
+|zo|		zo			open one fold under the cursor
+|zO|		zO			open all folds under the cursor
+|zc|		zc			close one fold under the cursor
+|zC|		zC			close all folds under the cursor
+
+|zm|		zm			fold more: decrease 'foldlevel'
+|zM|		zM			close all folds: make 'foldlevel' zero
+|zr|		zr			reduce folding: increase 'foldlevel'
+|zR|		zR			open all folds: make 'foldlevel' max.
+
+|zn|		zn			fold none: reset 'foldenable'
+|zN|		zN			fold normal set 'foldenable'
+|zi|		zi			invert 'foldenable'
+
+ vim:tw=78:ts=8:ft=help:norl:
