updated for version 7.0001
diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile
new file mode 100644
index 0000000..a87565e
--- /dev/null
+++ b/runtime/doc/Makefile
@@ -0,0 +1,363 @@
+#
+# Makefile for the Vim documentation on Unix
+#
+# If you get "don't know how to make scratch", first run make in the source
+# directory.  Or remove the include below.
+
+AWK = awk
+
+# Set to $(VIMTARGET) when executed from src/Makefile.
+VIMEXE = vim
+
+# include the config.mk from the source directory.  It's only needed to set
+# AWK, used for "make html".  Comment this out if the include gives problems.
+include ../../src/auto/config.mk
+
+DOCS = \
+	arabic.txt \
+	autocmd.txt \
+	change.txt \
+	cmdline.txt \
+	debugger.txt \
+	develop.txt \
+	diff.txt \
+	digraph.txt \
+	editing.txt \
+	eval.txt \
+	farsi.txt \
+	filetype.txt \
+	fold.txt \
+	gui.txt \
+	gui_w16.txt \
+	gui_w32.txt \
+	gui_x11.txt \
+	hangulin.txt \
+	hebrew.txt \
+	help.txt \
+	howto.txt \
+	if_cscop.txt \
+	if_ole.txt \
+	if_perl.txt \
+	if_pyth.txt \
+	if_ruby.txt \
+	if_sniff.txt \
+	if_tcl.txt \
+	indent.txt \
+	index.txt \
+	insert.txt \
+	intro.txt \
+	map.txt \
+	message.txt \
+	motion.txt \
+	mbyte.txt \
+	mlang.txt \
+	netbeans.txt \
+	options.txt \
+	os_390.txt \
+	os_amiga.txt \
+	os_beos.txt \
+	os_dos.txt \
+	os_mac.txt \
+	os_mint.txt \
+	os_msdos.txt \
+	os_os2.txt \
+	os_qnx.txt \
+	os_risc.txt \
+	os_unix.txt \
+	os_vms.txt \
+	os_win32.txt \
+	pattern.txt \
+	pi_expl.txt \
+	pi_gzip.txt \
+	pi_netrw.txt \
+	pi_spec.txt \
+	quickfix.txt \
+	quickref.txt \
+	quotes.txt \
+	recover.txt \
+	remote.txt \
+	repeat.txt \
+	rileft.txt \
+	russian.txt \
+	scroll.txt \
+	sign.txt \
+	sponsor.txt \
+	starting.txt \
+	syntax.txt \
+	tagsrch.txt \
+	term.txt \
+	tips.txt \
+	todo.txt \
+	uganda.txt \
+	undo.txt \
+	usr_01.txt \
+	usr_02.txt \
+	usr_03.txt \
+	usr_04.txt \
+	usr_05.txt \
+	usr_06.txt \
+	usr_07.txt \
+	usr_08.txt \
+	usr_09.txt \
+	usr_10.txt \
+	usr_11.txt \
+	usr_12.txt \
+	usr_20.txt \
+	usr_21.txt \
+	usr_22.txt \
+	usr_23.txt \
+	usr_24.txt \
+	usr_25.txt \
+	usr_26.txt \
+	usr_27.txt \
+	usr_28.txt \
+	usr_29.txt \
+	usr_30.txt \
+	usr_31.txt \
+	usr_40.txt \
+	usr_41.txt \
+	usr_42.txt \
+	usr_43.txt \
+	usr_44.txt \
+	usr_45.txt \
+	usr_90.txt \
+	usr_toc.txt \
+	various.txt \
+	version4.txt \
+	version5.txt \
+	version6.txt \
+	vi_diff.txt \
+	visual.txt \
+	windows.txt \
+	workshop.txt
+
+HTMLS = \
+	arabic.html \
+	autocmd.html \
+	change.html \
+	cmdline.html \
+	debugger.html \
+	develop.html \
+	diff.html \
+	digraph.html \
+	editing.html \
+	eval.html \
+	farsi.html \
+	filetype.html \
+	fold.html \
+	gui.html \
+	gui_w16.html \
+	gui_w32.html \
+	gui_x11.html \
+	hangulin.html \
+	hebrew.html \
+	help.html \
+	howto.html \
+	if_cscop.html \
+	if_ole.html \
+	if_perl.html \
+	if_pyth.html \
+	if_ruby.html \
+	if_sniff.html \
+	if_tcl.html \
+	indent.html \
+	index.html \
+	insert.html \
+	intro.html \
+	map.html \
+	message.html \
+	motion.html \
+	mbyte.html \
+	mlang.html \
+	netbeans.html \
+	options.html \
+	os_390.html \
+	os_amiga.html \
+	os_beos.html \
+	os_dos.html \
+	os_mac.html \
+	os_mint.html \
+	os_msdos.html \
+	os_os2.html \
+	os_qnx.html \
+	os_risc.html \
+	os_unix.html \
+	os_vms.html \
+	os_win32.html \
+	pattern.html \
+	pi_expl.html \
+	pi_gzip.html \
+	pi_netrw.html \
+	pi_spec.html \
+	quickfix.html \
+	quickref.html \
+	quotes.html \
+	recover.html \
+	remote.html \
+	repeat.html \
+	rileft.html \
+	russian.html \
+	scroll.html \
+	sign.html \
+	sponsor.html \
+	starting.html \
+	syntax.html \
+	tagsrch.html \
+	tags.html \
+	term.html \
+	tips.html \
+	todo.html \
+	uganda.html \
+	undo.html \
+	usr_01.html \
+	usr_02.html \
+	usr_03.html \
+	usr_04.html \
+	usr_05.html \
+	usr_06.html \
+	usr_07.html \
+	usr_08.html \
+	usr_09.html \
+	usr_10.html \
+	usr_11.html \
+	usr_12.html \
+	usr_20.html \
+	usr_21.html \
+	usr_22.html \
+	usr_23.html \
+	usr_24.html \
+	usr_25.html \
+	usr_26.html \
+	usr_27.html \
+	usr_28.html \
+	usr_29.html \
+	usr_30.html \
+	usr_31.html \
+	usr_40.html \
+	usr_41.html \
+	usr_42.html \
+	usr_43.html \
+	usr_44.html \
+	usr_45.html \
+	usr_90.html \
+	usr_toc.html \
+	various.html \
+	version4.html \
+	version5.html \
+	version6.html \
+	vi_diff.html \
+	visual.html \
+	windows.html \
+	workshop.html
+
+.SUFFIXES:
+.SUFFIXES: .c .o .txt .html
+
+all: tags vim.man vimdiff.man vimtutor.man xxd.man
+
+# Use Vim to generate the tags file.  Can only be used when Vim has been
+# compiled and installed.  Supports multiple languages.
+vimtags: $(DOCS)
+	$(VIMEXE) -u NONE -esX -c "helptags ." -c quit
+
+# Use "doctags" to generate the tags file.  Only works for English!
+tags: doctags $(DOCS)
+	./doctags $(DOCS) | LANG=C LC_ALL=C sort >tags
+	uniq -d -2 tags
+
+doctags: doctags.c
+	$(CC) doctags.c -o doctags
+
+vim.man: vim.1
+	nroff -man vim.1 | sed -e s/.//g > vim.man
+
+vimdiff.man: vimdiff.1
+	nroff -man vimdiff.1 | sed -e s/.//g > vimdiff.man
+
+vimtutor.man: vimtutor.1
+	nroff -man vimtutor.1 | sed -e s/.//g > vimtutor.man
+
+xxd.man: xxd.1
+	nroff -man xxd.1 | sed -e s/.//g > xxd.man
+
+uganda.nsis.txt: uganda.txt
+	sed -e 's/[ 	]*\*[-a-zA-Z0-9.]*\*//g' -e 's/vim:tw=78://' \
+		uganda.txt | uniq >uganda.nsis.txt
+
+# Awk version of .txt to .html conversion.
+html: noerrors tags tags.ref $(HTMLS)
+	@if test -f errors.log; then more errors.log; fi
+
+noerrors:
+	-rm -f errors.log
+
+.txt.html:
+	$(AWK) -f makehtml.awk $< >$@
+
+tags.ref tags.html: tags
+	$(AWK) -f maketags.awk tags >tags.html
+
+# Perl version of .txt to .html conversion.
+# There can't be two rules to produce a .html from a .txt file.
+# Just run over all .txt files each time one changes.  It's fast anyway.
+perlhtml: tags $(DOCS)
+	./vim2html.pl tags $(DOCS)
+
+clean:
+	-rm doctags *.html tags.ref
+
+# These files are in the extra archive, skip if not present
+
+arabic.txt:
+	touch arabic.txt
+
+farsi.txt:
+	touch farsi.txt
+
+hebrew.txt:
+	touch hebrew.txt
+
+russian.txt:
+	touch russian.txt
+
+gui_w16.txt:
+	touch gui_w16.txt
+
+gui_w32.txt:
+	touch gui_w32.txt
+
+if_ole.txt:
+	touch if_ole.txt
+
+os_390.txt:
+	touch os_390.txt
+
+os_amiga.txt:
+	touch os_amiga.txt
+
+os_beos.txt:
+	touch os_beos.txt
+
+os_dos.txt:
+	touch os_dos.txt
+
+os_mac.txt:
+	touch os_mac.txt
+
+os_mint.txt:
+	touch os_mint.txt
+
+os_msdos.txt:
+	touch os_msdos.txt
+
+os_os2.txt:
+	touch os_os2.txt
+
+os_qnx.txt:
+	touch os_qnx.txt
+
+os_risc.txt:
+	touch os_risc.txt
+
+os_win32.txt:
+	touch os_win32.txt
diff --git a/runtime/doc/arabic.txt b/runtime/doc/arabic.txt
new file mode 100644
index 0000000..2d96148
--- /dev/null
+++ b/runtime/doc/arabic.txt
@@ -0,0 +1,323 @@
+*arabic.txt*	For Vim version 7.0aa.  Last change: 2004 Jun 09
+
+
+		  VIM REFERENCE MANUAL	  by Nadim Shaikli
+
+
+Arabic Language support (options & mappings) for Vim		*Arabic*
+
+{Vi does not have any of these commands}
+
+								*E800*
+In order to use right-to-left and Arabic mapping support, it is
+necessary to compile VIM with the |+arabic| feature.
+
+These functions have been created by Nadim Shaikli <nadim-at-arabeyes.org>
+
+It is best to view this file with these settings within VIM's GUI: >
+
+	:set encoding=utf-8
+	:set arabicshape
+
+
+Introduction
+------------
+Arabic is a rather demanding language in which a number of special
+features are required.	Characters are right-to-left oriented and
+ought to appear as such on the screen (ie. from right to left).
+Arabic also requires shaping of its characters, meaning the same
+character has a different visual form based on its relative location
+within a word (initial, medial, final or stand-alone).	Arabic also
+requires two different forms of combining and the ability, in
+certain instances, to either superimpose up to two characters on top
+of another (composing) or the actual substitution of two characters
+into one (combining).  Lastly, to display Arabic properly one will
+require not only ISO-8859-6 (U+0600-U+06FF) fonts, but will also
+require Presentation Form-B (U+FE70-U+FEFF) fonts both of which are
+subsets within a so-called ISO-10646-1 font.
+
+The commands, prompts and help files are not in Arabic, therefore
+the user interface remains the standard Vi interface.
+
+
+Highlights
+----------
+o  Editing left-to-right files as in the original VIM hasn't changed.
+
+o  Viewing and editing files in right-to-left windows.	 File
+   orientation is per window, so it is possible to view the same
+   file in right-to-left and left-to-right modes, simultaneously.
+
+o  No special terminal with right-to-left capabilities is required.
+   The right-to-left changes are completely hardware independent.
+   Only Arabic fonts are necessary.
+
+o  Compatible with the original VIM.   Almost all features work in
+   right-to-left mode (there are liable to be bugs).
+
+o  Changing keyboard mapping and reverse insert modes using a single
+   command.
+
+o  Toggling complete Arabic support via a single command.
+
+o  While in Arabic mode, numbers are entered from left to right. Upon
+   entering a none number character, that character will be inserted
+   just into the left of the last number.
+
+o  Arabic keymapping on the command line in reverse insert mode.
+
+o  Proper Bidirectional functionality is possible given VIM is
+   started within a Bidi capable terminal emulator.
+
+
+Arabic Fonts						*arabicfonts*
+------------
+
+VIM requires monospaced fonts of which there are many out there.
+Arabic requires ISO-8859-6 as well as Presentation Form-B fonts
+(without Form-B, Arabic will _NOT_ be usable).	It is highly
+recommended that users search for so-called 'ISO-10646-1' fonts.
+Do an Internet search or check www.arabeyes.org for further
+info on where to attain the necessary Arabic fonts.
+
+
+Font Installation
+-----------------
+
+o  Installation of fonts for X Window systems (Unix/Linux)
+
+   Depending on your system, copy your_ARABIC_FONT file into a
+   directory of your choice.  Change to the directory containing
+   the Arabic fonts and execute the following commands:
+
+     %	mkfontdir
+     %	xset +fp path_name_of_arabic_fonts_directory
+
+
+Usage
+-----
+Prior to the actual usage of Arabic within VIM, a number of settings
+need to be accounted for and invoked.
+
+o  Setting the Arabic fonts
+
+   +  For VIM GUI set the 'guifont' to your_ARABIC_FONT. This is done
+      by entering the following command in the VIM window.
+>
+		:set guifont=your_ARABIC_FONT
+<
+      NOTE: the string 'your_ARABIC_FONT' is used to denote a complete
+	    font name akin to that used in linux/unix system.
+	    (eg. -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1)
+
+      You can append the 'guifont' set command to your .vimrc file
+      in order to get the same above noted results.  In other words,
+      you can include ':set guifont=your_ARABIC_FONT' to your .vimrc
+      file.
+
+   +  Under the X Window environment, you can also start VIM with
+      '-fn your_ARABIC_FONT' option.
+
+o  Setting the appropriate character Encoding
+   To enable the correct Arabic encoding the following command needs
+   to be appended,
+>
+		:set encoding=utf-8
+<
+   to your .vimrc file (entering the command manually into you VIM
+   window is highly discouraged).  In short, include ':set
+   encoding=utf-8' to your .vimrc file.
+
+   Attempts to use Arabic without UTF-8 will result the following
+   warning message,
+
+								*W17*  >
+     Arabic requires UTF-8, do ':set encoding=utf-8'
+
+o  Enable Arabic settings [short-cut]
+
+   In order to simplify and streamline things, you can either invoke
+   VIM with the command-line option,
+
+     % vim -A my_utf8_arabic_file ...
+
+   or enable 'arabic' via the following command within VIM
+>
+		:set arabic
+<
+   The two above noted possible invocations are the preferred manner
+   in which users are instructed to proceed.  Baring an enabled 'termbidi'
+   setting, both command options:
+
+     1. set the appropriate keymap
+     2. enable the deletion of a single combined pair character
+     3. enable rightleft    mode
+     4. enable rightleftcmd mode (affecting the command-line)
+     5. enable arabicshape  mode (do visual character alterations)
+
+   You may also append the command to your .vimrc file and simply
+   include ':set arabic' to it.
+
+   You are also capable of disabling Arabic support via
+>
+		:set noarabic
+<
+   which resets everything that the command had enabled without touching
+   the global settings as they could affect other possible open buffers.
+   In short the 'noarabic' command,
+
+     1. resets to the alternate keymap
+     2. disables the deletion of a single combined pair character
+     3. disables rightleft mode
+
+   NOTE: the 'arabic' command takes into consideration 'termbidi' for
+	 possible external bi-directional (bidi) support from the
+	 terminal ("mlterm" for instance offers such support).
+	 'termbidi', if available, is superior to rightleft support
+	 and its support is preferred due to its level of offerings.
+	 'arabic' when 'termbidi' is enabled only sets the keymap.
+
+   If, on the other hand, you'd like to be verbose and explicit and
+   are opting not to use the 'arabic' short-cut command, here's what
+   is needed (ie. if you use ':set arabic' you can skip this section) -
+
+   +  Arabic Keymapping Activation
+
+      To activate the Arabic keymap (ie. to remap your English/Latin
+      keyboard to look-n-feel like a standard Arabic one), set the
+      'keymap' command to "arabic".  This is done by entering
+>
+		:set keymap=arabic
+<
+      in your VIM window.  You can also append the 'keymap' set command to
+      your .vimrc file.  In other words, you can include ':set keymap=arabic'
+      to your .vimrc file.
+
+      To turn toggle (or switch) your keymapping between Arabic and the
+      default mapping (English), it is advised that users use the 'CTRL-^'
+      key press while in insert (or add/replace) mode.	The command-line
+      will display your current mapping by displaying an "Arabic" string
+      next to your insertion mode (eg. -- INSERT Arabic --) indicating
+      your current keymap.
+
+   +  Arabic deletion of a combined pair character
+
+      By default VIM has the 'delcombine' option disabled.  This option
+      allows the deletion of ALEF in a LAM_ALEF (LAA) combined character
+      and still retain the LAM (ie. it reverts to treating the combined
+      character as its natural two characters form -- this also pertains
+      to harakat and their combined forms).  You can enable this option
+      by entering
+>
+		:set delcombine
+<
+      in our VIM window.  You can also append the 'delcombine' set command
+      to your .vimrc file.  In other words, you can include ':set delcombine'
+      to your .vimrc file.
+
+   +  Arabic right-to-left Mode
+
+      By default VIM starts in Left-to-right mode.  'rightleft' is the
+      command that allows one to alter a window's orientation - that can
+      be accomplished via,
+
+      - Toggling between left-to-right and right-to-left modes is
+	accomplished through ':set rightleft' and ':set norightleft'.
+
+      - While in Left-to-right mode, enter ':set rl' in the command line
+	('rl' is the abbreviation for rightleft).
+
+      - Put the ':set rl' line in your '.vimrc' file to start the VIM in
+	right-to-left mode permanently.
+
+   +  Arabic right-to-left command-line Mode
+
+      For certain commands the editing can be done in right-to-left mode.
+      Currently this is only applicable to search commands.
+
+      This is controlled with the 'rightleftcmd' option.  The default is
+      "search", which means that windows in which 'rightleft' is set will
+      edit search commands in right-left mode.	To disable this behavior,
+>
+		:set rightleftcmd=
+<
+      To enable right-left editing of search commands again,
+>
+		:set rightleftcmd&
+<
+   +  Arabic Shaping Mode
+
+      To activate the required visual characters alterations (shaping,
+      composing, combining) which the Arabic language requires, enable
+      the 'arabicshape' command.  This is done by entering
+>
+		:set arabicshape
+<
+      in our VIM window.  You can also append the 'arabicshape' set
+      command to your .vimrc file.  In other words, you can include
+      ':set arabicshape' to your .vimrc file.
+
+
+Keymap/Keyboard						*arabickeymap*
+---------------
+
+The character/letter encoding used in VIM is the standard UTF-8.
+It is widely discouraged that any other encoding be used or even
+attempted.
+
+Note: UTF-8 is an all encompassing encoding and as such is
+      the only supported (and encouraged) encoding with
+      regard to Arabic (all other proprietary encodings
+      should be discouraged and frowned upon).
+
+o  Keyboard
+
+   +  CTRL-^ in insert/replace mode toggles between Arabic/Latin mode
+
+   +  Keyboard mapping is based on the Microsoft's Arabic keymap (the
+      defacto standard in the Arab world):
+
+  +---------------------------------------------------------------------+
+  |!   |@   |#   |$   |%   |^   |&   |*   |(   |)   |_   |+   ||   |~  ّ |
+  |1 ١ |2 ٢ |3 ٣ |4 ٤ |5 ٥ |6 ٦ |7 ٧ |8 ٨ |9 ٩ |0 ٠ |-   |=   |\   |` ذ |
+  +---------------------------------------------------------------------+
+       |Q  َ |W  ً |E  ُ |R  ٌ |T لإ |Y إ |U ` |I ÷ |O x |P ؛ |{ < |} > |
+       |q ض |w ص |e ث |r ق |t ف |y غ |u ع |i ه |o خ |p ح |[ ج |] د |
+       +-----------------------------------------------------------+
+	 |A  ِ |S  ٍ |D [ |F ] |G لأ |H أ |J ـ |K ، |L / |:   |"   |
+	 |a ش |s س |d ي |f ب |g ل |h ا |j ت |k ن |l م |; ك |' ط |
+	 +------------------------------------------------------+
+	   |Z ~ |X  ْ |C { |V } |B لآ |N آ |M ' |< , |> . |? ؟ |
+	   |z ئ |x ء |c ؤ |v ر |b لا |n ى |m ة |, و |. ز |/ ظ |
+	   +-------------------------------------------------+
+
+Restrictions
+------------
+
+o  VIM in its GUI form does not currently support Bi-directionality
+   (ie. the ability to see both Arabic and Latin intermixed within
+   the same line).
+
+
+Known Bugs
+----------
+
+There is one known minor bug,
+
+ 1. If you insert a haraka (eg. Fatha (U+064E)) after a LAM (U+0644)
+    and then insert an ALEF (U+0627), the appropriate combining will
+    not happen due to the sandwiched haraka resulting in something
+    that will NOT be displayed correctly.
+
+    WORK-AROUND: Don't include harakats between LAM and ALEF combos.
+		 In general, don't anticipate to see correct visual
+		 representation with regard to harakats and LAM+ALEF
+		 combined characters (even those entered after both
+		 characters).  The problem noted is strictly a visual
+		 one, meaning saving such a file will contain all the
+		 appropriate info/encodings - nothing is lost.
+
+No other bugs are known to exist.
+
+ vim:tw=78:ts=8:ft=help:norl:
+
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
new file mode 100644
index 0000000..4cc7472
--- /dev/null
+++ b/runtime/doc/autocmd.txt
@@ -0,0 +1,904 @@
+*autocmd.txt*   For Vim version 7.0aa.  Last change: 2004 Apr 20
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Automatic commands					*autocommand*
+
+For a basic explanation, see section |40.3| in the user manual.
+
+1.  Introduction		|autocmd-intro|
+2.  Defining autocommands	|autocmd-define|
+3.  Removing autocommands	|autocmd-remove|
+4.  Listing autocommands	|autocmd-list|
+5.  Events			|autocmd-events|
+6.  Patterns			|autocmd-patterns|
+7.  Groups			|autocmd-groups|
+8.  Executing autocommands	|autocmd-execute|
+9.  Using autocommands		|autocmd-use|
+
+{Vi does not have any of these commands}
+{only when the |+autocmd| feature has not been disabled at compile time}
+
+==============================================================================
+1. Introduction						*autocmd-intro*
+
+You can specify commands to be executed automatically for when reading or
+writing a file, when entering or leaving a buffer or window, and when exiting
+Vim.  For example, you can create an autocommand to set the 'cindent' option
+for files matching *.c.  You can also use autocommands to implement advanced
+features, such as editing compressed files (see |gzip-example|).  The usual
+place to put autocommands is in your .vimrc or .exrc file.
+
+							*E203* *E204* *E143*
+WARNING: Using autocommands is very powerful, and may lead to unexpected side
+effects.  Be careful not to destroy your text.
+- It's a good idea to do some testing on an expendable copy of a file first.
+  For example: If you use autocommands to decompress a file when starting to
+  edit it, make sure that the autocommands for compressing when writing work
+  correctly.
+- Be prepared for an error halfway through (e.g., disk full).  Vim will mostly
+  be able to undo the changes to the buffer, but you may have to clean up the
+  changes to other files by hand (e.g., compress a file that has been
+  decompressed).
+- If the BufRead* events allow you to edit a compressed file, the FileRead*
+  events should do the same (this makes recovery possible in some rare cases).
+  It's a good idea to use the same autocommands for the File* and Buf* events
+  when possible.
+
+==============================================================================
+2. Defining autocommands				*autocmd-define*
+
+Note: The ":autocmd" command cannot be followed by another command, since any
+'|' is considered part of the command.
+
+							*:au* *:autocmd*
+:au[tocmd] [group] {event} {pat} [nested] {cmd}
+			Add {cmd} to the list of commands that Vim will
+			execute automatically on {event} for a file matching
+			{pat}.  Vim always adds the {cmd} after existing
+			autocommands, so that the autocommands execute in the
+			order in which they were given.  See |autocmd-nested|
+			for [nested].
+
+Note that special characters (e.g., "%", "<cword>") in the ":autocmd"
+arguments are not expanded when the autocommand is defined.  These will be
+expanded when the Event is recognized, and the {cmd} is executed.  The only
+exception is that "<sfile>" is expanded when the autocmd is defined.  Example:
+>
+	:au BufNewFile,BufRead *.html so <sfile>:h/html.vim
+
+Here Vim expands <sfile> to the name of the file containing this line.
+
+When your .vimrc file is sourced twice, the autocommands will appear twice.
+To avoid this, put this command in your .vimrc file, before defining
+autocommands: >
+
+	:autocmd!	" Remove ALL autocommands for the current group.
+
+If you don't want to remove all autocommands, you can instead use a variable
+to ensure that Vim includes the autocommands only once: >
+
+	:if !exists("autocommands_loaded")
+	:  let autocommands_loaded = 1
+	:  au ...
+	:endif
+
+When the [group] argument is not given, Vim uses the current group (as defined
+with ":augroup"); otherwise, Vim uses the group defined with [group].  Note
+that [group] must have been defined before.  You cannot define a new group
+with ":au group ..."; use ":augroup" for that.
+
+While testing autocommands, you might find the 'verbose' option to be useful: >
+	:set verbose=9
+This setting makes Vim echo the autocommands as it executes them.
+
+When defining an autocommand in a script, it will be able to call functions
+local to the script and use mappings local to the script.  When the event is
+triggered and the command executed, it will run in the context of the script
+it was defined in.  This matters if |<SID>| is used in a command.
+
+When executing the commands, the messages from one command overwrites a
+previous message.  This is different from when executing the commands
+manually.  Mostly the screen will not scroll up, thus there is no hit-enter
+prompt.  When one command outputs two messages this can happen anyway.
+
+==============================================================================
+3. Removing autocommands				*autocmd-remove*
+
+:au[tocmd]! [group] {event} {pat} [nested] {cmd}
+			Remove all autocommands associated with {event} and
+			{pat}, and add the command {cmd}.  See
+			|autocmd-nested| for [nested].
+
+:au[tocmd]! [group] {event} {pat}
+			Remove all autocommands associated with {event} and
+			{pat}.
+
+:au[tocmd]! [group] * {pat}
+			Remove all autocommands associated with {pat} for all
+			events.
+
+:au[tocmd]! [group] {event}
+			Remove ALL autocommands for {event}.
+
+:au[tocmd]! [group]	Remove ALL autocommands.
+
+When the [group] argument is not given, Vim uses the current group (as defined
+with ":augroup"); otherwise, Vim uses the group defined with [group].
+
+==============================================================================
+4. Listing autocommands					*autocmd-list*
+
+:au[tocmd] [group] {event} {pat}
+			Show the autocommands associated with {event} and
+			{pat}.
+
+:au[tocmd] [group] * {pat}
+			Show the autocommands associated with {pat} for all
+			events.
+
+:au[tocmd] [group] {event}
+			Show all autocommands for {event}.
+
+:au[tocmd] [group]	Show all autocommands.
+
+If you provide the [group] argument, Vim lists only the autocommands for
+[group]; otherwise, Vim lists the autocommands for ALL groups.  Note that this
+argument behavior differs from that for defining and removing autocommands.
+
+==============================================================================
+5. Events					*autocmd-events* *E215* *E216*
+
+					*autocommand-events* *{event}*
+Vim recognizes the following events.  Vim ignores the case of event names
+(e.g., you can use "BUFread" or "bufread" instead of "BufRead").
+
+							*BufNewFile*
+BufNewFile			When starting to edit a file that doesn't
+				exist.  Can be used to read in a skeleton
+				file.
+						*BufReadPre* *E200* *E201*
+BufReadPre			When starting to edit a new buffer, before
+				reading the file into the buffer.  Not used
+				if the file doesn't exist.
+						*BufRead* *BufReadPost*
+BufRead or BufReadPost		When starting to edit a new buffer, after
+				reading the file into the buffer, before
+				executing the modelines.  See |BufWinEnter|
+				for when you need to do something after
+				processing the modelines.
+				This does NOT work for ":r file".  Not used
+				when the file doesn't exist.  Also used after
+				successfully recovering a file.
+							*BufReadCmd*
+BufReadCmd			Before starting to edit a new buffer.  Should
+				read the file into the buffer. |Cmd-event|
+							*BufFilePre*
+BufFilePre			Before changing the name of the current buffer
+				with the ":file" or ":saveas" command.
+							*BufFilePost*
+BufFilePost			After changing the name of the current buffer
+				with the ":file" or ":saveas" command.
+							*FileReadPre*
+FileReadPre			Before reading a file with a ":read" command.
+							*FileReadPost*
+FileReadPost			After reading a file with a ":read" command.
+				Note that Vim sets the '[ and '] marks to the
+				first and last line of the read.  This can be
+				used to operate on the lines just read.
+							*FileReadCmd*
+FileReadCmd			Before reading a file with a ":read" command.
+				Should do the reading of the file. |Cmd-event|
+							*FilterReadPre* *E135*
+FilterReadPre			Before reading a file from a filter command.
+				Vim checks the pattern against the name of
+				the current buffer, not the name of the
+				temporary file that is the output of the
+				filter command.
+							*FilterReadPost*
+FilterReadPost			After reading a file from a filter command.
+				Vim checks the pattern against the name of
+				the current buffer as with FilterReadPre.
+							*FileType*
+FileType			When the 'filetype' option has been set.
+				<afile> can be used for the name of the file
+				where this option was set, and <amatch> for
+				the new value of 'filetype'.
+				See |filetypes|.
+							*Syntax*
+Syntax				When the 'syntax' option has been set.
+				<afile> can be used for the name of the file
+				where this option was set, and <amatch> for
+				the new value of 'syntax'.
+				See |:syn-on|.
+							*StdinReadPre*
+StdinReadPre			Before reading from stdin into the buffer.
+				Only used when the "-" argument was used when
+				Vim was started |--|.
+							*StdinReadPost*
+StdinReadPost			After reading from the stdin into the buffer,
+				before executing the modelines.  Only used
+				when the "-" argument was used when Vim was
+				started |--|.
+						*BufWrite* *BufWritePre*
+BufWrite or BufWritePre		Before writing the whole buffer to a file.
+							*BufWritePost*
+BufWritePost			After writing the whole buffer to a file
+				(should undo the commands for BufWritePre).
+							*BufWriteCmd*
+BufWriteCmd			Before writing the whole buffer to a file.
+				Should do the writing of the file and reset
+				'modified' if successful.  The buffer contents
+				should not be changed.  |Cmd-event|
+							*FileWritePre*
+FileWritePre			Before writing to a file, when not writing the
+				whole buffer.
+							*FileWritePost*
+FileWritePost			After writing to a file, when not writing the
+				whole buffer.
+							*FileWriteCmd*
+FileWriteCmd			Before writing to a file, when not writing the
+				whole buffer.  Should do the writing to the
+				file.  Should not change the buffer.
+				|Cmd-event|
+							*FileAppendPre*
+FileAppendPre			Before appending to a file.
+							*FileAppendPost*
+FileAppendPost			After appending to a file.
+							*FileAppendCmd*
+FileAppendCmd			Before appending to a file.  Should do the
+				appending to the file. |Cmd-event|
+							*FilterWritePre*
+FilterWritePre			Before writing a file for a filter command or
+				making a diff.
+				Vim checks the pattern against the name of
+				the current buffer, not the name of the
+				temporary file that is the output of the
+				filter command.
+							*FilterWritePost*
+FilterWritePost			After writing a file for a filter command or
+				making a diff.
+				Vim checks the pattern against the name of
+				the current buffer as with FilterWritePre.
+							*FileChangedShell*
+FileChangedShell		When Vim notices that the modification time of
+				a file has changed since editing started.
+				Also when the file attributes of the file
+				change. |timestamp|
+				Mostly triggered after executing a shell
+				command, but also with a |:checktime| command
+				or when Vim regains input focus.
+				This autocommand is triggered for each changed
+				file.  It is not used when 'autoread' is set
+				and the buffer was not changed.  If a
+				FileChangedShell autocommand is present the
+				warning message and prompt is not given.
+				This is useful for reloading related buffers
+				which are affected by a single command.
+				NOTE: When this autocommand is executed, the
+				current buffer "%" may be different from the
+				buffer that was changed "<afile>".
+				NOTE: The commands must not change the current
+				buffer, jump to another buffer or delete a
+				buffer.  *E246*
+				NOTE: This event never nests, to avoid an
+				endless loop.  This means that while executing
+				commands for the FileChangedShell event no
+				other FileChangedShell event will be
+				triggered.
+							*FileChangedRO*
+FileChangedRO			Before making the first change to a read-only
+				file.  Can be used to check-out the file from
+				a source control system.  Not triggered when
+				the change was caused by an autocommand.
+				WARNING: This event is triggered when making a
+				change, just before the change is applied to
+				the text.  If the autocommand moves the cursor
+				the effect of the change is undefined.
+							*FocusGained*
+FocusGained			When Vim got input focus.  Only for the GUI
+				version and a few console versions where this
+				can be detected.
+							*FocusLost*
+FocusLost			When Vim lost input focus.  Only for the GUI
+				version and a few console versions where this
+				can be detected.
+							*FuncUndefined*
+FuncUndefined			When a user function is used but it isn't
+				defined.  Useful for defining a function only
+				when it's used.  Both <amatch> and <afile> are
+				set to the name of the function.
+							*CursorHold*
+CursorHold			When the user doesn't press a key for the time
+				specified with 'updatetime'.  Not re-triggered
+				until the user has pressed a key (i.e. doesn't
+				fire every 'updatetime' ms if you leave Vim to
+				make some coffee. :)  See |CursorHold-example|
+				for previewing tags.
+				This event is only triggered in Normal mode.
+				Note: Interactive commands cannot be used for
+				this event.  There is no hit-enter prompt,
+				the screen is updated directly (when needed).
+				Note: In the future there will probably be
+				another option to set the time.
+				Hint: to force an update of the status lines
+				use: >
+					:let &ro = &ro
+<				{only on Amiga, Unix, Win32, MSDOS and all GUI
+				versions}
+							*BufEnter*
+BufEnter			After entering a buffer.  Useful for setting
+				options for a file type.  Also executed when
+				starting to edit a buffer, after the
+				BufReadPost autocommands.
+							*BufLeave*
+BufLeave			Before leaving to another buffer.  Also when
+				leaving or closing the current window and the
+				new current window is not for the same buffer.
+				Not used for ":qa" or ":q" when exiting Vim.
+							*BufWinEnter*
+BufWinEnter			After a buffer is displayed in a window.  This
+				can be when the buffer is loaded (after
+				processing the modelines), when a hidden
+				buffer is displayed in a window (and is no
+				longer hidden) or a buffer already visible in
+				a window is also displayed in another window.
+							*BufWinLeave*
+BufWinLeave			Before a buffer is removed from a window.
+				Not when it's still visible in another window.
+				Also triggered when exiting.  It's triggered
+				before BufUnload or BufHidden.
+				NOTE: When this autocommand is executed, the
+				current buffer "%" may be different from the
+				buffer being unloaded "<afile>".
+							*BufUnload*
+BufUnload			Before unloading a buffer.  This is when the
+				text in the buffer is going to be freed.  This
+				may be after a BufWritePost and before a
+				BufDelete.  Also used for all buffers that are
+				loaded when Vim is going to exit.
+				NOTE: When this autocommand is executed, the
+				current buffer "%" may be different from the
+				buffer being unloaded "<afile>".
+							*BufHidden*
+BufHidden			Just after a buffer has become hidden.  That
+				is, when there are no longer windows that show
+				the buffer, but the buffer is not unloaded or
+				deleted.  Not used for ":qa" or ":q" when
+				exiting Vim.
+				NOTE: When this autocommand is executed, the
+				current buffer "%" may be different from the
+				buffer being unloaded "<afile>".
+							*BufNew*
+BufNew				Just after creating a new buffer.  Also used
+				just after a buffer has been renamed.  When
+				the buffer is added to the buffer list BufAdd
+				will be triggered too.
+				NOTE: When this autocommand is executed, the
+				current buffer "%" may be different from the
+				buffer being created "<afile>".
+							*BufCreate* *BufAdd*
+BufAdd or BufCreate		Just after creating a new buffer which is
+				added to the buffer list, or adding a buffer
+				to the buffer list.
+				Also used just after a buffer in the buffer
+				list has been renamed.
+				The BufCreate event is for historic reasons.
+				NOTE: When this autocommand is executed, the
+				current buffer "%" may be different from the
+				buffer being created "<afile>".
+							*BufDelete*
+BufDelete			Before deleting a buffer from the buffer list.
+				The BufUnload may be called first (if the
+				buffer was loaded).
+				Also used just before a buffer in the buffer
+				list is renamed.
+				NOTE: When this autocommand is executed, the
+				current buffer "%" may be different from the
+				buffer being deleted "<afile>".
+							*BufWipeout*
+BufWipeout			Before completely deleting a buffer.  The
+				BufUnload and BufDelete events may be called
+				first (if the buffer was loaded and was in the
+				buffer list).  Also used just before a buffer
+				is renamed (also when it's not in the buffer
+				list).
+				NOTE: When this autocommand is executed, the
+				current buffer "%" may be different from the
+				buffer being deleted "<afile>".
+							*WinEnter*
+WinEnter			After entering another window.  Not done for
+				the first window, when Vim has just started.
+				Useful for setting the window height.
+				If the window is for another buffer, Vim
+				executes the BufEnter autocommands after the
+				WinEnter autocommands.
+				Note: When using ":split fname" the WinEnter
+				event is triggered after the split but before
+				the file "fname" is loaded.
+							*WinLeave*
+WinLeave			Before leaving a window.  If the window to be
+				entered next is for a different buffer, Vim
+				executes the BufLeave autocommands before the
+				WinLeave autocommands (but not for ":new").
+				Not used for ":qa" or ":q" when exiting Vim.
+							*CmdwinEnter*
+CmdwinEnter			After entering the command-line window.
+				Useful for setting options specifically for
+				this special type of window.  This is
+				triggered _instead_ of BufEnter and WinEnter.
+				<afile> is set to a single character,
+				indicating the type of command-line.
+				|cmdwin-char|
+							*CmdwinLeave*
+CmdwinLeave			Before leaving the command-line window.
+				Useful to clean up any global setting done
+				with CmdwinEnter.  This is triggered _instead_
+				of BufLeave and WinLeave.
+				<afile> is set to a single character,
+				indicating the type of command-line.
+				|cmdwin-char|
+							*GUIEnter*
+GUIEnter			After starting the GUI successfully, and after
+				opening the window.  It is triggered before
+				VimEnter when using gvim.  Can be used to
+				position the window from a .gvimrc file: >
+	:autocmd GUIEnter * winpos 100 50
+<							*VimEnter*
+VimEnter			After doing all the startup stuff, including
+				loading .vimrc files, executing the "-c cmd"
+				arguments, creating all windows and loading
+				the buffers in them.
+							*VimLeavePre*
+VimLeavePre			Before exiting Vim, just before writing the
+				.viminfo file.  This is executed only once,
+				if there is a match with the name of what
+				happens to be the current buffer when exiting.
+				Mostly useful with a "*" pattern. >
+	:autocmd VimLeavePre * call CleanupStuff()
+<				To detect an abnormal exit use |v:dying|.
+							*VimLeave*
+VimLeave			Before exiting Vim, just after writing the
+				.viminfo file.  Executed only once, like
+				VimLeavePre.
+				To detect an abnormal exit use |v:dying|.
+							*EncodingChanged*
+EncodingChanged			Fires off when the 'encoding' option is
+				changed.  Useful to set up fonts, for example.
+							*FileEncoding*
+FileEncoding			Obsolete.  It still works and is equivalent
+				to |EncodingChanged|.
+							*RemoteReply*
+RemoteReply			When a reply from a Vim that functions as
+				server was received |server2client()|.
+				<amatch> is equal to the {serverid} from which
+				the reply was sent, and <afile> is the actual
+				reply string.
+				Note that even if an autocommand is defined,
+				the reply should be read with |remote_read()|
+				to consume it.
+							*TermChanged*
+TermChanged			After the value of 'term' has changed.  Useful
+				for re-loading the syntax file to update the
+				colors, fonts and other terminal-dependent
+				settings.  Executed for all loaded buffers.
+							*TermResponse*
+TermResponse			After the response to |t_RV| is received from
+				the terminal.  The value of |v:termresponse|
+				can be used to do things depending on the
+				terminal version.
+							*UserGettingBored*
+UserGettingBored		When the user hits CTRL-C.  Just kidding! :-)
+							*User*
+User				Never executed automatically.  To be used for
+				autocommands that are only executed with
+				":doautocmd".
+
+You can specify a comma-separated list of event names.  No white space can be
+used in this list.  The command applies to all the events in the list.
+
+For READING FILES there are four kinds of events possible:
+	BufNewFile			starting to edit a non-existent file
+	BufReadPre	BufReadPost	starting to edit an existing file
+	FilterReadPre	FilterReadPost	read the temp file with filter output
+	FileReadPre	FileReadPost	any other file read
+Vim uses only one of these four kinds when reading a file.  The "Pre" and
+"Post" events are both triggered, before and after reading the file.
+
+Note that the autocommands for the *ReadPre events and all the Filter events
+are not allowed to change the current buffer (you will get an error message if
+this happens).  This is to prevent the file to be read into the wrong buffer.
+
+Note that the 'modified' flag is reset AFTER executing the BufReadPost
+and BufNewFile autocommands.  But when the 'modified' option was set by the
+autocommands, this doesn't happen.
+
+You can use the 'eventignore' option to ignore a number of events or all
+events.
+
+==============================================================================
+6. Patterns					*autocmd-patterns* *{pat}*
+
+The file pattern {pat} is tested for a match against the file name in one of
+two ways:
+1. When there is no '/' in the pattern, Vim checks for a match against only
+   the tail part of the file name (without its leading directory path).
+2. When there is a '/' in the pattern,  Vim checks for a match against the
+   both short file name (as you typed it) and the full file name (after
+   expanding it to a full path and resolving symbolic links).
+
+Examples: >
+	:autocmd BufRead *.txt		set et
+Set the 'et' option for all text files. >
+
+	:autocmd BufRead /vim/src/*.c	set cindent
+Set the 'cindent' option for C files in the /vim/src directory. >
+
+	:autocmd BufRead /tmp/*.c	set ts=5
+If you have a link from "/tmp/test.c" to "/home/nobody/vim/src/test.c", and
+you start editing "/tmp/test.c", this autocommand will match.
+
+Note:  To match part of a path, but not from the root directory, use a '*' as
+the first character.  Example: >
+	:autocmd BufRead */doc/*.txt	set tw=78
+This autocommand will for example be executed for "/tmp/doc/xx.txt" and
+"/usr/home/piet/doc/yy.txt".  The number of directories does not matter here.
+
+
+The file name that the pattern is matched against is after expanding
+wildcards.  Thus is you issue this command: >
+	:e $ROOTDIR/main.$EXT
+The argument is first expanded to: >
+	/usr/root/main.py
+Before it's matched with the pattern of the autocommand.  Careful with this
+when using events like FileReadCmd, the value of <amatch> may not be what you
+expect.
+
+
+Environment variables can be used in a pattern: >
+	:autocmd BufRead $VIMRUNTIME/doc/*.txt  set expandtab
+And ~ can be used for the home directory (if $HOME is defined): >
+	:autocmd BufWritePost ~/.vimrc   so ~/.vimrc
+	:autocmd BufRead ~archive/*      set readonly
+The environment variable is expanded when the autocommand is defined, not when
+the autocommand is executed.  This is different from the command!
+
+							*file-pattern*
+The pattern is interpreted like mostly used in file names:
+	*	matches any sequence of characters
+	?	matches any single character
+	\?	matches a '?'
+	.	matches a '.'
+	~	matches a '~'
+	,	separates patterns
+	\,	matches a ','
+	{ }	like \( \) in a |pattern|
+	,	inside { }: like \| in a |pattern|
+	\	special meaning like in a |pattern|
+	[ch]	matches 'c' or 'h'
+	[^ch]   match any character but 'c' and 'h'
+
+Note that for all systems the '/' character is used for path separator (even
+MS-DOS and OS/2).  This was done because the backslash is difficult to use
+in a pattern and to make the autocommands portable across different systems.
+
+
+Matching with the pattern is done when an event is triggered.  Changing the
+buffer name in one of the autocommands, or even deleting the buffer, does not
+change which autocommands will be executed.  Example: >
+
+	au BufEnter *.foo  bdel
+	au BufEnter *.foo  set modified
+
+This will delete the current buffer and then set 'modified' in what has become
+the current buffer instead.  Vim doesn't take into account that "*.foo"
+doesn't match with that buffer name.  It matches "*.foo" with the name of the
+buffer at the moment the event was triggered.
+
+==============================================================================
+7. Groups						*autocmd-groups*
+
+Autocommands can be put together in a group.  This is useful for removing or
+executing a group of autocommands.  For example, all the autocommands for
+syntax highlighting are put in the "highlight" group, to be able to execute
+":doautoall highlight BufRead" when the GUI starts.
+
+When no specific group is selected, Vim uses the default group.  The default
+group does not have a name.  You cannot execute the autocommands from the
+default group separately; you can execute them only by executing autocommands
+for all groups.
+
+Normally, when executing autocommands automatically, Vim uses the autocommands
+for all groups.  The group only matters when executing autocommands with
+":doautocmd" or ":doautoall", or when defining or deleting autocommands.
+
+The group name can contain any characters except white space.  The group name
+"end" is reserved (also in uppercase).
+
+The group name is case sensitive.  Note that this is different from the event
+name!
+
+							*:aug* *:augroup*
+:aug[roup] {name}		Define the autocmd group name for the
+				following ":autocmd" commands.  The name "end"
+				or "END" selects the default group.
+
+						*:augroup-delete* *E367*
+:aug[roup]! {name}		Delete the autocmd group {name}.  Don't use
+				this if there is still an autocommand using
+				this group!  This is not checked.
+
+To enter autocommands for a specific group, use this method:
+1. Select the group with ":augroup {name}".
+2. Delete any old autocommands with ":au!".
+3. Define the autocommands.
+4. Go back to the default group with "augroup END".
+
+Example: >
+	:augroup uncompress
+	:  au!
+	:  au BufEnter *.gz	%!gunzip
+	:augroup END
+
+This prevents having the autocommands defined twice (e.g., after sourcing the
+.vimrc file again).
+
+==============================================================================
+8. Executing autocommands				*autocmd-execute*
+
+Vim can also execute Autocommands non-automatically.  This is useful if you
+have changed autocommands, or when Vim has executed the wrong autocommands
+(e.g., the file pattern match was wrong).
+
+Note that the 'eventignore' option applies here too.  Events listed in this
+option will not cause any commands to be executed.
+
+					*:do* *:doau* *:doautocmd* *E217*
+:do[autocmd] [group] {event} [fname]
+			Apply the autocommands matching [fname] (default:
+			current file name) for {event} to the current buffer.
+			You can use this when the current file name does not
+			match the right pattern, after changing settings, or
+			to execute autocommands for a certain event.
+			It's possible to use this inside an autocommand too,
+			so you can base the autocommands for one extension on
+			another extension.  Example: >
+				:au Bufenter *.cpp so ~/.vimrc_cpp
+				:au Bufenter *.cpp doau BufEnter x.c
+<			Be careful to avoid endless loops.  See
+			|autocmd-nested|.
+
+			When the [group] argument is not given, Vim executes
+			the autocommands for all groups.  When the [group]
+			argument is included, Vim executes only the matching
+			autocommands for that group.  Note: if you use an
+			undefined group name, Vim gives you an error message.
+
+						*:doautoa* *:doautoall*
+:doautoa[ll] [group] {event} [fname]
+			Like ":doautocmd", but apply the autocommands to each
+			loaded buffer.  Note that {fname} is used to select
+			the autocommands, not the buffers to which they are
+			applied.
+			Careful: Don't use this for autocommands that delete a
+			buffer, change to another buffer or change the
+			contents of a buffer; the result is unpredictable.
+			This command is intended for autocommands that set
+			options, change highlighting, and things like that.
+
+==============================================================================
+9. Using autocommands					*autocmd-use*
+
+For WRITING FILES there are four possible sets of events.  Vim uses only one
+of these sets for a write command:
+
+BufWriteCmd	BufWritePre	BufWritePost	writing the whole buffer
+		FilterWritePre	FilterWritePost	writing to filter temp file
+FileAppendCmd	FileAppendPre	FileAppendPost	appending to a file
+FileWriteCmd	FileWritePre	FileWritePost	any other file write
+
+When there is a matching "*Cmd" autocommand, it is assumed it will do the
+writing.  No further writing is done and the other events are not triggered.
+|Cmd-event|
+
+Note that the *WritePost commands should undo any changes to the buffer that
+were caused by the *WritePre commands; otherwise, writing the file will have
+the side effect of changing the buffer.
+
+Before executing the autocommands, the buffer from which the lines are to be
+written temporarily becomes the current buffer.  Unless the autocommands
+change the current buffer or delete the previously current buffer, the
+previously current buffer is made the current buffer again.
+
+The *WritePre and *AppendPre autocommands must not delete the buffer from
+which the lines are to be written.
+
+The '[ and '] marks have a special position:
+- Before the *ReadPre event the '[ mark is set to the line just above where
+  the new lines will be inserted.
+- Before the *ReadPost event the '[ mark is set to the first line that was
+  just read, the '] mark to the last line.
+- Before executing the *WritePre and *AppendPre autocommands the '[ mark is
+  set to the first line that will be written, the '] mark to the last line.
+Careful: '[ and '] change when using commands that change the buffer.
+
+In commands which expect a file name, you can use "<afile>" for the file name
+that is being read |:<afile>| (you can also use "%" for the current file
+name).  "<abuf>" can be used for the buffer number of the currently effective
+buffer.  This also works for buffers that doesn't have a name.  But it doesn't
+work for files without a buffer (e.g., with ":r file").
+
+							*gzip-example*
+Examples for reading and writing compressed files: >
+  :augroup gzip
+  :  autocmd!
+  :  autocmd BufReadPre,FileReadPre	*.gz set bin
+  :  autocmd BufReadPost,FileReadPost	*.gz '[,']!gunzip
+  :  autocmd BufReadPost,FileReadPost	*.gz set nobin
+  :  autocmd BufReadPost,FileReadPost	*.gz execute ":doautocmd BufReadPost " . expand("%:r")
+  :  autocmd BufWritePost,FileWritePost	*.gz !mv <afile> <afile>:r
+  :  autocmd BufWritePost,FileWritePost	*.gz !gzip <afile>:r
+
+  :  autocmd FileAppendPre		*.gz !gunzip <afile>
+  :  autocmd FileAppendPre		*.gz !mv <afile>:r <afile>
+  :  autocmd FileAppendPost		*.gz !mv <afile> <afile>:r
+  :  autocmd FileAppendPost		*.gz !gzip <afile>:r
+  :augroup END
+
+The "gzip" group is used to be able to delete any existing autocommands with
+":autocmd!", for when the file is sourced twice.
+
+("<afile>:r" is the file name without the extension, see |:_%:|)
+
+The commands executed for the BufNewFile, BufRead/BufReadPost, BufWritePost,
+FileAppendPost and VimLeave events do not set or reset the changed flag of the
+buffer.  When you decompress the buffer with the BufReadPost autocommands, you
+can still exit with ":q".  When you use ":undo" in BufWritePost to undo the
+changes made by BufWritePre commands, you can still do ":q" (this also makes
+"ZZ" work).  If you do want the buffer to be marked as modified, set the
+'modified' option.
+
+To execute Normal mode commands from an autocommand, use the ":normal"
+command.  Use with care!  If the Normal mode command is not finished, the user
+needs to type characters (e.g., after ":normal m" you need to type a mark
+name).
+
+If you want the buffer to be unmodified after changing it, reset the
+'modified' option.  This makes it possible to exit the buffer with ":q"
+instead of ":q!".
+
+							*autocmd-nested* *E218*
+By default, autocommands do not nest.  If you use ":e" or ":w" in an
+autocommand, Vim does not execute the BufRead and BufWrite autocommands for
+those commands.  If you do want this, use the "nested" flag for those commands
+in which you want nesting.  For example: >
+  :autocmd FileChangedShell *.c nested e!
+The nesting is limited to 10 levels to get out of recursive loops.
+
+It's possible to use the ":au" command in an autocommand.  This can be a
+self-modifying command!  This can be useful for an autocommand that should
+execute only once.
+
+There is currently no way to disable the autocommands.  If you want to write a
+file without executing the autocommands for that type of file, write it under
+another name and rename it with a shell command.  In some situations you can
+use the 'eventignore' option.
+
+Note: When reading a file (with ":read file" or with a filter command) and the
+last line in the file does not have an <EOL>, Vim remembers this.  At the next
+write (with ":write file" or with a filter command), if the same line is
+written again as the last line in a file AND 'binary' is set, Vim does not
+supply an <EOL>.  This makes a filter command on the just read lines write the
+same file as was read, and makes a write command on just filtered lines write
+the same file as was read from the filter.  For example, another way to write
+a compressed file: >
+
+  :autocmd FileWritePre *.gz   set bin|'[,']!gzip
+  :autocmd FileWritePost *.gz  undo|set nobin
+<
+							*autocommand-pattern*
+You can specify multiple patterns, separated by commas.  Here are some
+examples: >
+
+  :autocmd BufRead   *		set tw=79 nocin ic infercase fo=2croq
+  :autocmd BufRead   .letter	set tw=72 fo=2tcrq
+  :autocmd BufEnter  .letter	set dict=/usr/lib/dict/words
+  :autocmd BufLeave  .letter	set dict=
+  :autocmd BufRead,BufNewFile   *.c,*.h	set tw=0 cin noic
+  :autocmd BufEnter  *.c,*.h	abbr FOR for (i = 0; i < 3; ++i)<CR>{<CR>}<Esc>O
+  :autocmd BufLeave  *.c,*.h	unabbr FOR
+
+For makefiles (makefile, Makefile, imakefile, makefile.unix, etc.): >
+
+  :autocmd BufEnter  ?akefile*	set include=^s\=include
+  :autocmd BufLeave  ?akefile*	set include&
+
+To always start editing C files at the first function: >
+
+  :autocmd BufRead   *.c,*.h	1;/^{
+
+Without the "1;" above, the search would start from wherever the file was
+entered, rather than from the start of the file.
+
+						*skeleton* *template*
+To read a skeleton (template) file when opening a new file: >
+
+  :autocmd BufNewFile  *.c	0r ~/vim/skeleton.c
+  :autocmd BufNewFile  *.h	0r ~/vim/skeleton.h
+  :autocmd BufNewFile  *.java	0r ~/vim/skeleton.java
+
+To insert the current date and time in a *.html file when writing it: >
+
+  :autocmd BufWritePre,FileWritePre *.html   ks|call LastMod()|'s
+  :fun LastMod()
+  :  if line("$") > 20
+  :    let l = 20
+  :  else
+  :    let l = line("$")
+  :  endif
+  :  exe "1," . l . "g/Last modified: /s/Last modified: .*/Last modified: " .
+  :  \ strftime("%Y %b %d")
+  :endfun
+
+You need to have a line "Last modified: <date time>" in the first 20 lines
+of the file for this to work.  Vim replaces <date time> (and anything in the
+same line after it) with the current date and time.  Explanation:
+	ks		mark current position with mark 's'
+	call LastMod()  call the LastMod() function to do the work
+	's		return the cursor to the old position
+The LastMod() function checks if the file is shorter than 20 lines, and then
+uses the ":g" command to find lines that contain "Last modified: ".  For those
+lines the ":s" command is executed to replace the existing date with the
+current one.  The ":execute" command is used to be able to use an expression
+for the ":g" and ":s" commands.  The date is obtained with the strftime()
+function.  You can change its argument to get another date string.
+
+When entering :autocmd on the command-line, completion of events and command
+names may be done (with <Tab>, CTRL-D, etc.) where appropriate.
+
+Vim executes all matching autocommands in the order that you specify them.
+It is recommended that your first autocommand be used for all files by using
+"*" as the file pattern.  This means that you can define defaults you like
+here for any settings, and if there is another matching autocommand it will
+override these.  But if there is no other matching autocommand, then at least
+your default settings are recovered (if entering this file from another for
+which autocommands did match).  Note that "*" will also match files starting
+with ".", unlike Unix shells.
+
+						    *autocmd-searchpat*
+Autocommands do not change the current search patterns.  Vim saves the current
+search patterns before executing autocommands then restores them after the
+autocommands finish.  This means that autocommands do not affect the strings
+highlighted with the 'hlsearch' option.  Within autocommands, you can still
+use search patterns normally, e.g., with the "n" command.
+If you want an autocommand to set the search pattern, such that it is used
+after the autocommand finishes, use the ":let @/ =" command.
+The search-highlighting cannot be switched off with ":nohlsearch" in an
+autocommand.  Use the 'h' flag in the 'viminfo' option to disable search-
+highlighting when starting Vim.
+
+							*Cmd-event*
+When using one of the "*Cmd" events, the matching autocommands are expected to
+do the file reading or writing.  This can be used when working with a special
+kind of file, for example on a remote system.
+CAREFUL: If you use these events in a wrong way, it may have the effect of
+making it impossible to read or write the matching files!  Make sure you test
+your autocommands properly.  Best is to use a pattern that will never match a
+normal file name, for example "ftp://*".
+
+When defining a BufReadCmd it will be difficult for Vim to recover a crashed
+editing session.  When recovering from the original file, Vim reads only those
+parts of a file that are not found in the swap file.  Since that is not
+possible with a BufReadCmd, use the |:preserve| command to make sure the
+original file isn't needed for recovery.  You might want to do this only when
+you expect the file to be modified.
+
+The |v:cmdarg| variable holds the "++enc=" and "++ff=" argument that are
+effective.  These should be used for the command that reads/writes the file.
+The |v:cmdbang| variable is one when "!" was used, zero otherwise.
+
+See the $VIMRUNTIME/plugin/netrw.vim for examples.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
new file mode 100644
index 0000000..2e56ccb
--- /dev/null
+++ b/runtime/doc/change.txt
@@ -0,0 +1,1425 @@
+*change.txt*    For Vim version 7.0aa.  Last change: 2004 May 08
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+This file describes commands that delete or change text.  In this context,
+changing text means deleting the text and replacing it with other text using
+one command.  You can undo all of these commands.  You can repeat the non-Ex
+commands with the "." command.
+
+1. Deleting text		|deleting|
+2. Delete and insert		|delete-insert|
+3. Simple changes		|simple-change|		*changing*
+4. Complex changes		|complex-change|
+5. Copying and moving text	|copy-move|
+6. Formatting text		|formatting|
+
+For inserting text see |insert.txt|.
+
+==============================================================================
+1. Deleting text					*deleting* *E470*
+
+["x]<Del>	or					*<Del>* *x* *dl*
+["x]x			Delete [count] characters under and after the cursor
+			[into register x] (not |linewise|).  Does the same as
+			"dl".
+			The <Del> key does not take a [count].  Instead, it
+			deletes the last character of the count.
+			See |:fixdel| if the <Del> key does not do what you
+			want.  See |'whichwrap'| for deleting a line break
+			(join lines).  {Vi does not support <Del>}
+
+							*X* *dh*
+["x]X			Delete [count] characters before the cursor [into
+			register x] (not |linewise|).  Does the same as "dh".
+			Also see |'whichwrap'|.
+
+							*d*
+["x]d{motion}		Delete text that {motion} moves over [into register
+			x].  See below for exceptions.
+
+							*dd*
+["x]dd			Delete [count] lines [into register x] |linewise|.
+
+							*D*
+["x]D			Delete the characters under the cursor until the end
+			of the line and [count]-1 more lines [into register
+			x]; synonym for "d$".
+			(not |linewise|)
+
+{Visual}["x]x	or					*v_x* *v_d* *v_<Del>*
+{Visual}["x]d   or
+{Visual}["x]<Del>	Delete the highlighted text [into register x] (for
+			{Visual} see |Visual-mode|).  {not in Vi}
+
+{Visual}["x]CTRL-H   or					*v_CTRL-H* *v_<BS>*
+{Visual}["x]<BS>	When in Select mode: Delete the highlighted text [into
+			register x].
+
+{Visual}["x]X	or					*v_X* *v_D* *v_b_D*
+{Visual}["x]D		Delete the highlighted lines [into register x] (for
+			{Visual} see |Visual-mode|).  In Visual block mode,
+			"D" deletes the highlighted text plus all text until
+			the end of the line.  {not in Vi}
+
+						*:d* *:de* *:del* *:delete*
+:[range]d[elete] [x]	Delete [range] lines (default: current line) [into
+			register x].
+
+:[range]d[elete] [x] {count}
+			Delete {count} lines, starting with [range]
+			(default: current line |cmdline-ranges|) [into
+			register x].
+
+These commands delete text.  You can repeat them with the "." command
+(except ":d") and undo them.  Use Visual mode to delete blocks of text.  See
+|registers| for an explanation of registers.
+
+An exception for the d{motion} command: If the motion is not linewise, the
+start and end of the motion are not in the same line, and there are only
+blanks before the start and after the end of the motion, the delete becomes
+linewise.  This means that the delete also removes the line of blanks that you
+might expect to remain.
+
+Trying to delete an empty region of text (e.g., "d0" in the first column)
+is an error when 'cpoptions' includes the 'E' flag.
+
+							*J*
+J			Join [count] lines, with a minimum of two lines.
+			Remove the indent and insert up to two spaces (see
+			below).
+
+							*v_J*
+{Visual}J		Join the highlighted lines, with a minimum of two
+			lines.  Remove the indent and insert up to two spaces
+			(see below).  {not in Vi}
+
+							*gJ*
+gJ			Join [count] lines, with a minimum of two lines.
+			Don't insert or remove any spaces.  {not in Vi}
+
+							*v_gJ*
+{Visual}gJ		Join the highlighted lines, with a minimum of two
+			lines.  Don't insert or remove any spaces.  {not in
+			Vi}
+
+							*:j* *:join*
+:[range]j[oin][!]	Join [range] lines.  Same as "J", except with [!]
+			the join does not insert or delete any spaces.
+			If a [range] has equal start and end values, this
+			command does nothing.  The default behavior is to
+			join the current line with the line below it.
+			{not in Vi: !}
+
+:[range]j[oin][!] {count}
+			Join {count} lines, starting with [range] (default:
+			current line |cmdline-ranges|).  Same as "J", except
+			with [!] the join does not insert or delete any
+			spaces.
+			{not in Vi: !}
+
+These commands delete the <EOL> between lines.  This has the effect of joining
+multiple lines into one line.  You can repeat these commands (except ":j") and
+undo them.
+
+These commands, except "gJ", insert one space in place of the <EOL> unless
+there is trailing white space or the next line starts with a ')'.  These
+commands, except "gJ", delete any leading white space on the next line.  If
+the 'joinspaces' option is on, these commands insert two spaces after a '.',
+'!' or '?' (but if 'cpoptions' includes the 'j' flag, they insert two spaces
+only after a '.').
+The 'B' and 'M' flags in 'formatoptions' change the behavior for inserting
+spaces before and after a multi-byte character |fo-table|.
+
+
+==============================================================================
+2. Delete and insert				*delete-insert* *replacing*
+
+							*R*
+R			Enter Replace mode: Each character you type replaces
+			an existing character, starting with the character
+			under the cursor.  Repeat the entered text [count]-1
+			times.  See |Replace-mode| for more details.
+
+							*gR*
+gR			Enter Virtual Replace mode: Each character you type
+			replaces existing characters in screen space.  So a
+			<Tab> may replace several characters at once.
+			Repeat the entered text [count]-1 times.  See
+			|Virtual-Replace-mode| for more details.
+			{not available when compiled without the +vreplace
+			feature}
+
+							*c*
+["x]c{motion}		Delete {motion} text [into register x] and start
+			insert.  When  'cpoptions' includes the 'E' flag and
+			there is no text to delete (e.g., with "cTx" when the
+			cursor is just after an 'x'), an error occurs and
+			insert mode does not start (this is Vi compatible).
+			When  'cpoptions' does not include the 'E' flag, the
+			"c" command always starts insert mode, even if there
+			is no text to delete.
+
+							*cc*
+["x]cc			Delete [count] lines [into register x] and start
+			insert |linewise|.  If 'autoindent' is on, preserve
+			the indent of the first line.
+
+							*C*
+["x]C			Delete from the cursor position to the end of the
+			line and [count]-1 more lines [into register x], and
+			start insert.  Synonym for c$ (not |linewise|).
+
+							*s*
+["x]s			Delete [count] characters [into register x] and start
+			insert (s stands for Substitute).  Synonym for "cl"
+			(not |linewise|).
+
+							*S*
+["x]S			Delete [count] lines [into register x] and start
+			insert.  Synonym for "cc" |linewise|.
+
+{Visual}["x]c	or					*v_c* *v_s*
+{Visual}["x]s		Delete the highlighted text [into register x] and
+			start insert (for {Visual} see |Visual-mode|).  {not
+			in Vi}
+
+							*v_r*
+{Visual}["x]r{char}	Replace all selected characters by {char}.
+
+							*v_C*
+{Visual}["x]C		Delete the highlighted lines [into register x] and
+			start insert.  In Visual block mode it works
+			differently |v_b_C|.  {not in Vi}
+							*v_S*
+{Visual}["x]S		Delete the highlighted lines [into register x] and
+			start insert (for {Visual} see |Visual-mode|).  {not
+			in Vi}
+							*v_R*
+{Visual}["x]R		Currently just like {Visual}["x]S.  In a next version
+			it might work differently. {not in Vi}
+
+Notes:
+- You can end Insert and Replace mode with <Esc>.
+- See the section "Insert and Replace mode" |mode-ins-repl| for the other
+  special characters in these modes.
+- The effect of [count] takes place after Vim exits Insert or Replace mode.
+- When the 'cpoptions' option contains '$' and the change is within one line,
+  Vim continues to show the text to be deleted and puts a '$' at the last
+  deleted character.
+
+See |registers| for an explanation of registers.
+
+Replace mode is just like Insert mode, except that every character you enter
+deletes one character.  If you reach the end of a line, Vim appends any
+further characters (just like Insert mode).  In Replace mode, the backspace
+key restores the original text (if there was any).  (See section "Insert and
+Replace mode" |mode-ins-repl|).
+
+						*cw* *cW*
+Special case: "cw" and "cW" work the same as "ce" and "cE" if the cursor is
+on a non-blank.  This is because Vim interprets "cw" as change-word, and a
+word does not include the following white space.  {Vi: "cw" when on a blank
+followed by other blanks changes only the first blank; this is probably a
+bug, because "dw" deletes all the blanks; use the 'w' flag in 'cpoptions' to
+make it work like Vi anyway}
+
+If you prefer "cw" to include the space after a word, use this mapping: >
+	:map cw dwi
+<
+							*:c* *:ch* *:change*
+:{range}c[hange]	Replace lines of text with some different text.
+			Type a line containing only "." to stop replacing.
+			Without {range}, this command changes only the current
+			line.
+
+==============================================================================
+3. Simple changes					*simple-change*
+
+							*r*
+r{char}			Replace the character under the cursor with {char}.
+			If {char} is a <CR> or <NL>, a line break replaces the
+			character.  To replace with a real <CR>, use CTRL-V
+			<CR>.  CTRL-V <NL> replaces with a <Nul>.
+			{Vi: CTRL-V <CR> still replaces with a line break,
+			cannot replace something with a <CR>}
+			If you give a [count], Vim replaces [count] characters
+			with [count] {char}s.  When {char} is a <CR> or <NL>,
+			however, Vim inserts only one <CR>: "5r<CR>" replaces
+			five characters with a single line break.
+			When {char} is a <CR> or <NL>, Vim performs
+			autoindenting.  This works just like deleting the
+			characters that are replaced and then doing
+			"i<CR><Esc>".
+			{char} can be entered as a digraph |digraph-arg|.
+			|:lmap| mappings apply to {char}.  The CTRL-^ command
+			in Insert mode can be used to switch this on/off
+			|i_CTRL-^|.  See |utf-8-char-arg| about using
+			composing characters when 'encoding' is Unicode.
+
+							*gr*
+gr{char}		Replace the virtual characters under the cursor with
+			{char}.  This replaces in screen space, not file
+			space.  See |gR| and |Virtual-Replace-mode| for more
+			details.  As with |r| a count may be given.
+			{char} can be entered like with |r|.
+			{not available when compiled without the +vreplace
+			feature}
+
+						*digraph-arg*
+The argument for Normal mode commands like |r| and |t| is a single character.
+When 'cpo' doesn't contain the 'D' flag, this character can also be entered
+like |digraphs|.  First type CTRL-K and then the two digraph characters.
+{not available when compiled without the |+digraphs| feature}
+
+						*case*
+The following commands change the case of letters.  The currently active
+|locale| is used.  See |:language|.  The LC_CTYPE value matters here.
+
+							*~*
+~			'notildeop' option: Switch case of the character
+			under the cursor and move the cursor to the right.
+			If a [count] is given, do that many characters. {Vi:
+			no count}
+
+~{motion}		'tildeop' option: switch case of {motion} text. {Vi:
+			tilde cannot be used as an operator}
+
+							*g~*
+g~{motion}		Switch case of {motion} text. {not in Vi}
+
+g~g~							*g~g~* *g~~*
+g~~			Switch case of current line. {not in Vi}.
+
+							*v_~*
+{Visual}~		Switch case of highlighted text (for {Visual} see
+			|Visual-mode|). {not in Vi}
+
+							*v_U*
+{Visual}U		Make highlighted text uppercase (for {Visual} see
+			|Visual-mode|). {not in Vi}
+
+							*gU* *uppercase*
+gU{motion}		Make {motion} text uppercase. {not in Vi}
+			Example: >
+				:map! <C-F> <Esc>gUiw`]a
+<			This works in Insert mode: press CTRL-F to make the
+			word before the cursor uppercase.  Handy to type
+			words in lowercase and then make them uppercase.
+
+
+gUgU							*gUgU* *gUU*
+gUU			Make current line uppercase. {not in Vi}.
+
+							*v_u*
+{Visual}u		Make highlighted text lowercase (for {Visual} see
+			|Visual-mode|).  {not in Vi}
+
+							*gu* *lowercase*
+gu{motion}		Make {motion} text lowercase. {not in Vi}
+
+gugu							*gugu* *guu*
+guu			Make current line lowercase. {not in Vi}.
+
+							*g?* *rot13*
+g?{motion}		Rot13 encode {motion} text. {not in Vi}
+
+							*v_g?*
+{Visual}g?		Rot13 encode the highlighted text (for {Visual} see
+			|Visual-mode|).  {not in Vi}
+
+g?g?							*g?g?* *g??*
+g??			Rot13 encode current line. {not in Vi}.
+
+
+Adding and subtracting ~
+							*CTRL-A*
+CTRL-A			Add [count] to the number or alphabetic character at
+			or after the cursor.  {not in Vi}
+
+							*CTRL-X*
+CTRL-X			Subtract [count] from the number or alphabetic
+			character at or after the cursor.  {not in Vi}
+
+The CTRL-A and CTRL-X commands work for (signed) decimal numbers, unsigned
+octal and hexadecimal numbers and alphabetic characters.  This depends on the
+'nrformats' option.
+- When 'nrformats' includes "alpha", Vim will change the alphabetic character
+  under or after the cursor.  This is useful to make lists with an alphabetic
+  index.
+- When 'nrformats' includes "hex", Vim assumes numbers starting with '0x' or
+  '0X' are hexadecimal.  The case of the rightmost letter in the number
+  determines the case of the resulting hexadecimal number.  If there is no
+  letter in the current number, Vim uses the previously detected case.
+- When 'nrformats' includes "octal", Vim considers numbers starting with a '0'
+  to be octal.  Other numbers are decimal and may have a preceding minus sign.
+  If the cursor is on a number, the commands apply to that number; otherwise
+  Vim uses the number to the right of the cursor.
+
+For numbers with leading zeros (including all octal and hexadecimal numbers),
+Vim preserves the number of characters in the number when possible.  CTRL-A on
+"0077" results in "0100", CTRL-X on "0x100" results in "0x0ff".  Note that
+when 'nrformats' includes "octal", decimal numbers with leading zeros are
+impossible because they are indistinguishable from octal numbers.
+
+The CTRL-A command is very useful in a macro.  Example: Use the following
+steps to make a numbered list.
+
+1. Create the first list entry, make sure it starts with a number.
+2. qa	     - start recording into buffer 'a'
+3. Y	     - yank the entry
+4. p	     - put a copy of the entry below the first one
+5. CTRL-A    - increment the number
+6. q	     - stop recording
+7. <count>@a - repeat the yank, put and increment <count> times
+
+
+SHIFTING LINES LEFT OR RIGHT				*shift-left-right*
+
+							*<*
+<{motion}		Shift {motion} lines one 'shiftwidth' leftwards.
+
+							*<<*
+<<			Shift [count] lines one 'shiftwidth' leftwards.
+
+							*v_<*
+{Visual}[count]<	Shift the highlighted lines [count] 'shiftwidth'
+			leftwards (for {Visual} see |Visual-mode|).  {not in
+			Vi}
+
+							*>*
+ >{motion}		Shift {motion} lines one 'shiftwidth' rightwards.
+
+							*>>*
+ >>			Shift [count] lines one 'shiftwidth' rightwards.
+
+							*v_>*
+{Visual}[count]>	Shift the highlighted lines [count] 'shiftwidth'
+			rightwards (for {Visual} see |Visual-mode|).  {not in
+			Vi}
+
+							*:<*
+:[range]<		Shift [range] lines one 'shiftwidth' left.  Repeat '<'
+			for shifting multiple 'shiftwidth's.
+
+:[range]< {count}	Shift {count} lines one 'shiftwidth' left, starting
+			with [range] (default current line |cmdline-ranges|).
+			Repeat '<' for shifting multiple 'shiftwidth's.
+
+:[range]le[ft] [indent]	left align lines in [range].  Sets the indent in the
+			lines to [indent] (default 0).  {not in Vi}
+
+							*:>*
+:[range]>		Shift {count} [range] lines one 'shiftwidth' right.
+			Repeat '>' for shifting multiple 'shiftwidth's.
+
+:[range]> {count}	Shift {count} lines one 'shiftwidth' right, starting
+			with [range] (default current line |cmdline-ranges|).
+			Repeat '>' for shifting multiple 'shiftwidth's.
+
+The ">" and "<" commands are handy for changing the indentation within
+programs.  Use the 'shiftwidth' option to set the size of the white space
+which these commands insert or delete.  Normally the 'shiftwidth' option is 8,
+but you can set it to, say, 3 to make smaller indents.  The shift leftwards
+stops when there is no indent.  The shift right does not affect empty lines.
+
+If the 'shiftround' option is on, the indent is rounded to a multiple of
+'shiftwidth'.
+
+If the 'smartindent' option is on, or 'cindent' is on and 'cinkeys' contains
+'#', shift right does not affect lines starting with '#' (these are supposed
+to be C preprocessor lines that must stay in column 1).
+
+When the 'expandtab' option is off (this is the default) Vim uses <Tab>s as
+much as possible to make the indent.  You can use ">><<" to replace an indent
+made out of spaces with the same indent made out of <Tab>s (and a few spaces
+if necessary).  If the 'expandtab' option is on, Vim uses only spaces.  Then
+you can use ">><<" to replace <Tab>s in the indent by spaces (or use
+":retab!").
+
+To move a line several 'shiftwidth's, use Visual mode or the ":" commands.
+For example: >
+	Vjj4>		move three lines 4 indents to the right
+	:<<<		move current line 3 indents to the left
+	:>> 5		move 5 lines 2 indents to the right
+	:5>>		move line 5 2 indents to the right
+
+==============================================================================
+4. Complex changes					*complex-change*
+
+							*!* *filter*
+!{motion}{filter}	Filter {motion} text lines through the external
+			program {filter}.
+
+							*!!*
+!!{filter}		Filter [count] lines through the external program
+			{filter}.
+
+							*v_!*
+{Visual}!{filter}	Filter the highlighted lines through the external
+			program {filter} (for {Visual} see |Visual-mode|).
+			{not in Vi}
+
+:{range}![!]{filter} [!][arg]				*:range!*
+			Filter {range} lines through the external program
+			{filter}.  Vim replaces the optional bangs with the
+			latest given command and appends the optional [arg].
+			Vim saves the output of the filter command in a
+			temporary file and then reads the file into the
+			buffer.  Vim uses the 'shellredir' option to redirect
+			the filter output to the temporary file.
+			When the 'R' flag is included in 'cpoptions' marks in
+			the filtered lines are deleted, unless the
+			|:keepmarks| command is used.  Example: >
+				:keepmarks '<,'>!sort
+<			When the number of lines after filtering is less than
+			before, marks in the missing lines are deleted anyway.
+
+							*=*
+={motion}		Filter {motion} lines through the external program
+			given with the 'equalprg' option.  When the 'equalprg'
+			option is empty (this is the default), use the
+			internal formatting function |C-indenting|.  But when
+			'indentexpr' is not empty, it will be used instead
+			|indent-expression|.
+
+							*==*
+==			Filter [count] lines like with ={motion}.
+
+							*v_=*
+{Visual}=		Filter the highlighted lines like with ={motion}.
+			{not in Vi}
+
+A filter is a program that accepts text at standard input, changes it in some
+way, and sends it to standard output.  You can use the commands above to send
+some text through a filter.  Examples of filters are "sort", which sorts lines
+alphabetically, and "indent", which formats C program files (you need a
+version of indent that works like a filter; not all versions do).  The 'shell'
+option specifies the shell Vim uses to execute the filter command (See also
+the 'shelltype' option).  You can repeat filter commands with ".".  Vim does
+not recognize a comment (starting with '"') after the ":!" command.
+
+
+						*:s* *:su* *:substitute*
+:[range]s[ubstitute]/{pattern}/{string}/[&][c][e][g][p][r][i][I] [count]
+			For each line in [range] replace a match of {pattern}
+			with {string}.
+			For the {pattern} see |pattern|.
+			{string} can be a literal string, or something
+			special; see |sub-replace-special|.
+			When [range] and [count] are omitted, replace in the
+			current line only.
+			When [count] is given, replace in [count] lines,
+			starting with the last line in [range].  When [range]
+			is omitted start in the current line.
+			Also see |cmdline-ranges|.
+			See |:s_flags| for the flags.
+
+:[range]s[ubstitute] [c][e][g][p][r][i][I] [count]
+:[range]&[&][c][e][g][p][r][i][I] [count]			*:&*
+			Repeat last :substitute with same search pattern and
+			substitute string, but without the same flags.  You
+			may add extra flags (see |:s_flags|).
+			Note that after ":substitute" the '&' flag can't be
+			used, it's recognized as a pattern separator.
+			The space between ":substitute" and the 'c', 'g' and
+			'r' flags isn't required, but in scripts it's a good
+			idea to keep it to avoid confusion.
+
+:[range]~[&][c][e][g][p][r][i][I] [count]			*:~*
+			Repeat last substitute with same substitute string
+			but with last used search pattern.  This is like
+			":&r".  See |:s_flags| for the flags.
+
+						*&*
+&			Synonym for ":s//~/" (repeat last substitute).  Note
+			that the flags are not remembered, thus it might
+			actually work differently.  You can use ":&&" to keep
+			the flags.
+
+						*g&*
+g&			Synonym for ":%s//~/&" (repeat last substitute on all
+			lines with the same flags).
+			Mnemonic: global substitute. {not in Vi}
+
+						*:snomagic* *:sno*
+:[range]sno[magic] ...	Same as ":substitute", but always use 'nomagic'.
+			{not in Vi}
+
+						*:smagic* *:sm*
+:[range]sm[agic] ...	Same as ":substitute", but always use 'magic'.
+			{not in Vi}
+
+							*:s_flags*
+The flags that you can use for the substitute commands:
+
+[&]	Must be the first one: Keep the flags from the previous substitute
+	command.  Examples: >
+		:&&
+		:s/this/that/&
+<	Note that ":s" and ":&" don't keep the flags.
+	{not in Vi}
+
+[c]	Confirm each substitution.  Vim highlights the matching string (with
+	|hl-IncSearch|).  You can type:				*:s_c*
+	    'y'	    to substitute this match
+	    'l'	    to substitute this match and then quit ("last")
+	    'n'	    to skip this match
+	    <Esc>   to quit substituting
+	    'a'	    to substitute this and all remaining matches {not in Vi}
+	    'q'	    to quit substituting {not in Vi}
+	    CTRL-E  to scroll the screen up {not in Vi, not available when
+			compiled without the +insert_expand feature}
+	    CTRL-Y  to scroll the screen down {not in Vi, not available when
+			compiled without the +insert_expand feature}
+	If the 'edcompatible' option is on, Vim remembers the [c] flag and
+	toggles it each time you use it, but resets it when you give a new
+	search pattern.
+	{not in Vi: highlighting of the match, other responses than 'y' or 'n'}
+
+[e]     When the search pattern fails, do not issue an error message and, in
+	particular, continue in maps as if no error occurred.  This is most
+	useful to prevent the "No match" error from breaking a mapping.  Vim
+	does not suppress the following error messages, however:
+		Regular expressions can't be delimited by letters
+		\ should be followed by /, ? or &
+		No previous substitute regular expression
+		Trailing characters
+		Interrupted
+	{not in Vi}
+
+[g]	Replace all occurrences in the line.  Without this argument,
+	replacement occurs only for the first occurrence in each line.  If
+	the 'edcompatible' option is on, Vim remembers this flag and toggles
+	it each time you use it, but resets it when you give a new search
+	pattern.  If the 'gdefault' option is on, this flag is on by default
+	and the [g] argument switches it off.
+
+[i]	Ignore case for the pattern.  The 'ignorecase' and 'smartcase' options
+	are not used.
+	{not in Vi}
+
+[I]	Don't ignore case for the pattern.  The 'ignorecase' and 'smartcase'
+	options are not used.
+	{not in Vi}
+
+[p]	Print the line containing the last substitute.
+	{not in Vi}
+
+[r]	Only useful in combination with ":&" or ":s" without arguments.  ":&r"
+	works the same way as ":~":  When the search pattern is empty, use the
+	previously used search pattern instead of the search pattern from the
+	last substitute or ":global".  If the last command that did a search
+	was a substitute or ":global", there is no effect.  If the last
+	command was a search command such as "/", use the pattern from that
+	command.
+	For ":s" with an argument this already happens: >
+		:s/blue/red/
+		/green
+		:s//red/   or  :~   or  :&r
+<	The last commands will replace "green" with "red". >
+		:s/blue/red/
+		/green
+		:&
+<	The last command will replace "blue" with "red".
+	{not in Vi}
+
+Note that there is no flag to change the "magicness" of the pattern.  A
+different command is used instead.  The reason is that the flags can only be
+found by skipping the pattern, and in order to skip the pattern the
+"magicness" must be known.  Catch 22!
+
+If the {pattern} for the substitute command is empty, the command uses the
+pattern from the last substitute or ":global" command.  With the [r] flag, the
+command uses the pattern from the last substitute, ":global", or search
+command.
+
+For compatibility with Vi these two exceptions are allowed:
+"\/{string}/" and "\?{string}?" do the same as "//{string}/r".
+"\&{string}&" does the same as "//{string}/".
+							*E146*
+Instead of the '/' which surrounds the pattern and replacement string, you
+can use any other character, but not an alphanumeric character, '\', '"' or
+'|'.  This is useful if you want to include a '/' in the search pattern or
+replacement string.  Example: >
+	:s+/+//+
+
+For the definition of a pattern, see |pattern|.
+
+					*sub-replace-special* *:s\=*
+When the {string} starts with "\=" it is evaluated as an expression, see
+|sub-replace-expression|.  Otherwise these characters in {string} have a
+special meaning:
+
+magic	nomagic	  action    ~
+  &	  \&	  replaced with the whole matched pattern	     *s/\&*
+ \&	   &	  replaced with &
+      \0	  replaced with the whole matched pattern	   *\0* *s/\0*
+      \1	  replaced with the matched pattern in the first
+		  pair of ()					     *s/\1*
+      \2	  replaced with the matched pattern in the first
+		  pair of ()					     *s/\2*
+      ..	  ..						     *s/\3*
+      \9	  replaced with the matched pattern in the ninth
+		  pair of ()					     *s/\9*
+  ~	  \~	  replaced with the {string} of the previous
+		  substitute					     *s~*
+ \~	   ~	  replaced with ~				     *s/\~*
+      \u	  next character made uppercase			     *s/\u*
+      \U	  following characters made uppercase, until \E      *s/\U*
+      \l	  next character made lowercase			     *s/\l*
+      \L	  following characters made lowercase, until \E      *s/\L*
+      \e	  end of \u, \U, \l and \L (NOTE: not <Esc>!)	     *s/\e*
+      \E	  end of \u, \U, \l and \L			     *s/\E*
+      <CR>	  split line in two at this point
+		  (Type the <CR> as CTRL-V <Enter>)		     *s<CR>*
+      \r	  idem						     *s/\r*
+      \<CR>	  insert a carriage-return (CTRL-M)
+		  (Type the <CR> as CTRL-V <Enter>)		     *s/\<CR>*
+      \n	  insert a <NL> (<NUL> in the file)
+		  (does NOT break the line)			     *s/\n*
+      \b	  insert a <BS>					     *s/\b*
+      \t	  insert a <Tab>				     *s/\t*
+      \\	  insert a single backslash			     *s/\\*
+      \x	  where x is any character not mentioned above:
+		  Reserved for future expansion
+
+Examples: >
+  :s/a\|b/xxx\0xxx/g		 modifies "a b"	     to "xxxaxxx xxxbxxx"
+  :s/\([abc]\)\([efg]\)/\2\1/g	 modifies "af fa bg" to "fa fa gb"
+  :s/abcde/abc^Mde/		 modifies "abcde"    to "abc", "de" (two lines)
+  :s/$/\^M/			 modifies "abcde"    to "abcde^M"
+
+Note: In previous versions CTRL-V was handled in a special way.  Since this is
+not Vi compatible, this was removed.  Use a backslash instead.
+
+command		text	result ~
+:s/aa/a^Ma/	aa	a<line-break>a
+:s/aa/a\^Ma/	aa	a^Ma
+:s/aa/a\\^Ma/	aa	a\<line-break>a
+
+(you need to type CTRL-V <CR> to get a ^M here)
+
+The numbering of "\1", "\2" etc. is done based on which "\(" comes first in
+the pattern (going left to right).  When a parentheses group matches several
+times, the last one will be used for "\1", "\2", etc.  Example: >
+  :s/\(\(a[a-d] \)*\)/\2/      modifies "aa ab x" to "ab x"
+
+When using parentheses in combination with '|', like in \([ab]\)\|\([cd]\),
+either the first or second pattern in parentheses did not match, so either
+\1 or \2 is empty.  Example: >
+  :s/\([ab]\)\|\([cd]\)/\1x/g   modifies "a b c d"  to "ax bx x x"
+<
+
+Substitute with an expression			*sub-replace-expression*
+
+When the substitute string starts with "\=" the remainer is interpreted as an
+expression.  This does not work recursively: a substitute() function inside
+the expression cannot use "\=" for the substitute string.
+
+The special meaning for characters as mentioned at |sub-replace-special| does
+not apply except "<CR>", "\<CR>" and "\\".  Thus in the result of the
+expression you need to use two backslashes get one, put a backslash before a
+<CR> you want to insert and use a <CR> without a backslash where you want to
+break the line.
+
+For convenience a <NL> character is also used as a line break.  Prepend a
+backslash to get a real <NL> character (which will be a NUL in the file).
+
+The whole matched text can be accessed with "submatch(0)".  The text matched
+with the first pair of () with "submatch(1)".  Likewise for further
+sub-matches in ().
+
+Be careful: The separation character must not appear in the expression!
+Consider using a character like "@" or ":".  There is no problem if the result
+of the expression contains the separation character.
+
+Example: >
+	:s@\n@\="\r" . expand("$HOME") . "\r"@
+This replaces an end-of-line with a new line containing the value of $HOME.
+
+
+						*:pro* *:promptfind*
+:promptf[ind] [string]
+			Put up a Search dialog.  When [string] is given, it is
+			used as the initial search string.
+			{only for Win32, Motif and GTK GUI}
+
+						*:promptr* *:promptrepl*
+:promptr[epl] [string]
+			Put up a Search/Replace dialog.  When [string] is
+			given, it is used as the initial search string.
+			{only for Win32, Motif and GTK GUI}
+
+							*:ret* *:retab*
+:[range]ret[ab][!] [new_tabstop]
+			Replace all sequences of white-space containing a
+			<Tab> with new strings of white-space using the new
+			tabstop value given.  If you do not specify a new
+			tabstop size or it is zero, Vim uses the current value
+			of 'tabstop'.
+			The current value of 'tabstop' is always used to
+			compute the width of existing tabs.
+			With !, Vim also replaces strings of only normal
+			spaces with tabs where appropriate.
+			With 'expandtab' on, Vim replaces all tabs with the
+			appropriate number of spaces.
+			This command sets 'tabstop' to the new value given,
+			and if performed on the whole file, which is default,
+			should not make any visible change.
+			Careful: This command modifies any <Tab> characters
+			inside of strings in a C program.  Use "\t" to avoid
+			this (that's a good habit anyway).
+			":retab!" may also change a sequence of spaces by
+			<Tab> characters, which can mess up a printf().
+			{not in Vi}
+			Not available when |+ex_extra| feature was disabled at
+			compile time.
+
+							*retab-example*
+Example for using autocommands and ":retab" to edit a file which is stored
+with tabstops at 8 but edited with tabstops set at 4.  Warning: white space
+inside of strings can change!  Also see 'softtabstop' option. >
+
+  :auto BufReadPost	*.xx	retab! 4
+  :auto BufWritePre	*.xx	retab! 8
+  :auto BufWritePost	*.xx	retab! 4
+  :auto BufNewFile	*.xx	set ts=4
+
+==============================================================================
+5. Copying and moving text				*copy-move*
+
+							*quote*
+"{a-zA-Z0-9.%#:-"}	Use register {a-zA-Z0-9.%#:-"} for next delete, yank
+			or put (use uppercase character to append with
+			delete and yank) ({.%#:} only work with put).
+
+							*:reg* *:registers*
+:reg[isters]		Display the contents of all numbered and named
+			registers.  {not in Vi}
+
+:reg[isters] {arg}	Display the contents of the numbered and named
+			registers that are mentioned in {arg}.  For example: >
+				:dis 1a
+<			to display registers '1' and 'a'.  Spaces are allowed
+			in {arg}.  {not in Vi}
+
+							*:di* *:display*
+:di[splay] [arg]	Same as :registers.  {not in Vi}
+
+							*y* *yank*
+["x]y{motion}		Yank {motion} text [into register x].  When no
+			characters are to be yanked (e.g., "y0" in column 1),
+			this is an error when 'cpoptions' includes the 'E'
+			flag.
+
+							*yy*
+["x]yy			Yank [count] lines [into register x] |linewise|.
+
+							*Y*
+["x]Y			yank [count] lines [into register x] (synonym for
+			yy, |linewise|).  If you like "Y" to work from the
+			cursor to the end of line (which is more logical,
+			but not Vi-compatible) use ":map Y y$".
+
+							*v_y*
+{Visual}["x]y		Yank the highlighted text [into register x] (for
+			{Visual} see |Visual-mode|).  {not in Vi}
+
+							*v_Y*
+{Visual}["x]Y		Yank the highlighted lines [into register x] (for
+			{Visual} see |Visual-mode|).  {not in Vi}
+
+							*:y* *:yank*
+:[range]y[ank] [x]	Yank [range] lines [into register x].
+
+:[range]y[ank] [x] {count}
+			Yank {count} lines, starting with last line number
+			in [range] (default: current line |cmdline-ranges|),
+			[into register x].
+
+							*p* *put* *E353*
+["x]p			Put the text [from register x] after the cursor
+			[count] times.  {Vi: no count}
+
+							*P*
+["x]P			Put the text [from register x] before the cursor
+			[count] times.  {Vi: no count}
+
+							*<MiddleMouse>*
+["x]<MiddleMouse>	Put the text from a register before the cursor [count]
+			times.  Uses the "* register, unless another is
+			specified.  Using the mouse only works when 'mouse'
+			contains 'n' or 'a'.
+			{not in Vi}
+			If you have a scrollwheel and often accidentally paste
+			text, you can use these mappings to disable the
+			pasting with the middle mouse button: >
+				:map <MiddleMouse> <Nop>
+				:imap <MiddleMouse> <Nop>
+<			You might want to disable the multi-click versions
+			too, see |double-click|.
+
+							*gp*
+["x]gp			Just like "p", but leave the cursor just after the new
+			text.  {not in Vi}
+
+							*gP*
+["x]gP			Just like "P", but leave the cursor just after the new
+			text.  {not in Vi}
+
+							*:pu* *:put*
+:[line]pu[t] [x]	Put the text [from register x] after [line] (default
+			current line).  This always works |linewise|, thus
+			this command can be used to put a yanked block as new
+			lines.
+			The register can also be '=' followed by an optional
+			expression.  The expression continues until the end of
+			the command.  You need to escape the '|' and '"'
+			characters to prevent them from terminating the
+			command.  Example: >
+				:put ='path' . \",/test\"
+<			If there is no expression after '=', Vim uses the
+			previous expression.  You can see it with ":dis =".
+
+:[line]pu[t]! [x]	Put the text [from register x] before [line] (default
+			current line).
+
+["x]]p		    or					*]p* *]<MiddleMouse>*
+["x]]<MiddleMouse>	Like "p", but adjust the indent to the current line.
+			Using the mouse only works when 'mouse' contains 'n'
+			or 'a'.  {not in Vi}
+
+["x][P		    or					*[P*
+["x]]P		    or					*]P*
+["x][p		    or					*[p* *[<MiddleMouse>*
+["x][<MiddleMouse>	Like "P", but adjust the indent to the current line.
+			Using the mouse only works when 'mouse' contains 'n'
+			or 'a'.  {not in Vi}
+
+You can use these commands to copy text from one place to another.  Do this
+by first getting the text into a register with a yank, delete or change
+command, then inserting the register contents with a put command.  You can
+also use these commands to move text from one file to another, because Vim
+preserves all registers when changing buffers (the CTRL-^ command is a quick
+way to toggle between two files).
+
+				*linewise-register* *characterwise-register*
+You can repeat the put commands with "." (except for :put) and undo them.  If
+the command that was used to get the text into the register was |linewise|,
+Vim inserts the text below ("p") or above ("P") the line where the cursor is.
+Otherwise Vim inserts the text after ("p") or before ("P") the cursor.  With
+the ":put" command, Vim always inserts the text in the next line.  You can
+exchange two characters with the command sequence "xp".  You can exchange two
+lines with the command sequence "ddp".  You can exchange two words with the
+command sequence "deep" (start with the cursor in the blank space before the
+first word).  You can use the "']" or "`]" command after the put command to
+move the cursor to the end of the inserted text, or use "'[" or "`[" to move
+the cursor to the start.
+
+						*put-Visual-mode* *v_p* *v_P*
+When using a put command like |p| or |P| in Visual mode, Vim will try to
+replace the selected text with the contents of the register.  Whether this
+works well depends on the type of selection and the type of the text in the
+register.  With blockwise selection it also depends on the size of the block
+and whether the corners are on an existing character. (implementation detail:
+it actually works by first putting the register after the selection and then
+deleting the selection).
+
+							*blockwise-register*
+If you use a blockwise Visual mode command to get the text into the register,
+the block of text will be inserted before ("P") or after ("p") the cursor
+column in the current and next lines.  Vim makes the whole block of text start
+in the same column.  Thus the inserted text looks the same as when it was
+yanked or deleted.  Vim may replace some <Tab> characters with spaces to make
+this happen.  However, if the width of the block is not a multiple of a <Tab>
+width and the text after the inserted block contains <Tab>s, that text may be
+misaligned.
+
+Note that after a characterwise yank command, Vim leaves the cursor on the
+first yanked character that is closest to the start of the buffer.  This means
+that "yl" doesn't move the cursor, but "yh" moves the cursor one character
+left.
+Rationale:	In Vi the "y" command followed by a backwards motion would
+		sometimes not move the cursor to the first yanked character,
+		because redisplaying was skipped.  In Vim it always moves to
+		the first character, as specified by Posix.
+With a linewise yank command the cursor is put in the first line, but the
+column is unmodified, thus it may not be on the first yanked character.
+
+There are nine types of registers:			*registers* *E354*
+1. The unnamed register ""
+2. 10 numbered registers "0 to "9
+3. The small delete register "-
+4. 26 named registers "a to "z or "A to "Z
+5. four read-only registers ":, "., "% and "#
+6. the expression register "=
+7. The selection and drop registers "*, "+ and "~ 
+8. The black hole register "_
+9. Last search pattern register "/
+
+1. Unnamed register ""				*quote_quote* *quotequote*
+Vim fills this register with text deleted with the "d", "c", "s", "x" commands
+or copied with the yank "y" command, regardless of whether or not a specific
+register was used (e.g.  "xdd).  An exception is the '_' register: "_dd does
+not store the deleted text in any register.  Vim uses the contents of this
+register for any put command (p or P) which does not specify a register.
+Additionally you can access it with the name '"'.  This means you have to type
+two double quotes.  Writing to the "" register writes to register "0.
+{Vi: register contents are lost when changing files, no '"'}
+
+2. Numbered registers "0 to "9		*quote_number* *quote0*	*quote1*
+					*quote2* *quote3* *quote4* *quote9*
+Vim fills these registers with text from yank and delete commands.
+   Numbered register 0 contains the text from the most recent yank command,
+unless the command specified another register with ["x].
+   Numbered register 1 contains the text deleted by the most recent delete or
+change command, unless the command specified another register or the text is
+less than one line (the small delete register is used then).  An exception is
+made for these commands: |%|, |(|, |)|, |`|, |/|, |?|, |n|, |N|, |{| and |}|.
+Register "1 is always used then (this is Vi compatible).  The "- register is
+used as well if the delete is within a line.
+   With each successive deletion or change, Vim shifts the previous contents
+of register 1 into register 2, 2 into 3, and so forth, losing the previous
+contents of register 9.
+{Vi: numbered register contents are lost when changing files; register 0 does
+not exist}
+
+3. Small delete register "-				*quote_-* *quote-*
+This register contains text from commands that delete less than one line,
+except when the command specifies a register with ["x].
+{not in Vi}
+
+4. Named registers "a to "z or "A to "Z			*quote_alpha* *quotea*
+Vim fills these registers only when you say so.  Specify them as lowercase
+letters to replace their previous contents or as uppercase letters to append
+to their previous contents.
+
+5. Read-only registers ":, "., "% and "#
+These are '%', '#', ':' and '.'.  You can use them only with the "p", "P",
+and ":put" commands and with CTRL-R.  {not in Vi}
+						*quote_.* *quote.* *E29*
+	".	Contains the last inserted text (the same as what is inserted
+		with the insert mode commands CTRL-A and CTRL-@).  Note: this
+		doesn't work with CTRL-R on the command-line.  It works a bit
+		differently, like inserting the text instead of putting it
+		('textwidth' and other options affect what is inserted).
+							*quote_%* *quote%*
+	"%	Contains the name of the current file.
+							*quote_#* *quote#*
+	"#	Contains the name of the alternate file.
+						*quote_:* *quote:* *E30*
+	":	Contains the most recent executed command-line.  Example: Use
+		"@:" to repeat the previous command-line command.
+		The command-line is only stored in this register when at least
+		one character of it was typed.  Thus it remains unchanged if
+		the command was completely from a mapping.
+		{not available when compiled without the |+cmdline_hist|
+		feature}
+
+6. Expression register "=				*quote_=* *quote=*
+This is not really a register that stores text, but is a way to use an
+expression in commands which use a register.  The expression register is
+read-only; you cannot put text into it.  After the '=', the cursor moves to
+the command-line, where you can enter any expression (see |expression|).  All
+normal command-line editing commands are available, including a special
+history for expressions.  When you end the command-line by typing <CR>, Vim
+computes the result of the expression.  If you end it with <Esc>, Vim abandons
+the expression.  If you do not enter an expression, Vim uses the previous
+expression (like with the "/" command).  If the "= register is used for the
+"p" command, the string is split up at <NL> characters.  If the string ends in
+a <NL>, it is regarded as a linewise register.  {not in Vi}
+
+7. Selection and drop registers "*, "+ and "~ 
+Use these register for storing and retrieving the selected text for the GUI.
+See |quotestar| and |quoteplus|.  When the clipboard is not available or not
+working, the unnamed register is used instead.  {not in Vi}
+
+Note that there is only a distinction between "* and "+ for X11 systems.  For
+an explanation of the difference, see |x11-selection|.  Under MS-Windows, use
+of "* and "+ is actually synonymous and refers to the |gui-clipboard|.
+
+						*quote_~* *quote~* *<Drop>*
+The read-only "~ register stores the dropped text from the last drag'n'drop
+operation.  When something has been dropped onto Vim, the "~ register is
+filled in and the <Drop> pseudo key is sent for notification.  You can remap
+this key if you want; the default action (for all modes) is to insert the
+contents of the "~ register at the cursor position.  {not in Vi}
+{only available when compiled with the |+dnd| feature, curently only with the
+GTK GUI}
+
+Note: The "~ register is only used when dropping plain text onto Vim.
+Drag'n'drop of URI lists is handled internally.
+
+8. Black hole register "_				*quote_*
+When writing to this register, nothing happens.  This can be used to delete
+text without affecting the normal registers.  When reading from this register,
+nothing is returned.  {not in Vi}
+
+9. Last search pattern register	"/			*quote_/* *quote/*
+Contains the most recent search-pattern.  This is used for "n" and 'hlsearch'.
+It is writable with ":let", you can change it to have 'hlsearch' highlight
+other matches without actually searching.  You can't yank or delete into this
+register.  {not in Vi}
+
+							*@/*
+You can write to a register with a ":let" command |:let-@|.  Example: >
+	:let @/ = "the"
+
+If you use a put command without specifying a register, Vim uses the register
+that was last filled (this is also the contents of the unnamed register).  If
+you are confused, use the ":dis" command to find out what Vim will put (this
+command displays all named and numbered registers; the unnamed register is
+labelled '"').
+
+The next three commands always work on whole lines.
+
+:[range]co[py] {address}				*:co* *:copy*
+			Copy the lines given by [range] to below the line
+			given by {address}.
+
+							*:t*
+:t			Synonym for copy.
+
+:[range]m[ove] {address}			*:m* *:mo* *:move* *E134*
+			Move the lines given by [range] to below the line
+			given by {address}.
+
+==============================================================================
+6. Formatting text					*formatting*
+
+:[range]ce[nter] [width]				*:ce* *:center*
+			Center lines in [range] between [width] columns
+			(default 'textwidth' or 80 when 'textwidth' is 0).
+			{not in Vi}
+			Not available when |+ex_extra| feature was disabled at
+			compile time.
+
+:[range]ri[ght] [width]					*:ri* *:right*
+			Right-align lines in [range] at [width] columns
+			(default 'textwidth' or 80 when 'textwidth' is 0).
+			{not in Vi}
+			Not available when |+ex_extra| feature was disabled at
+			compile time.
+
+							*:le* *:left*
+:[range]le[ft] [indent]
+			Left-align lines in [range].  Sets the indent in the
+			lines to [indent] (default 0).  {not in Vi}
+			Not available when |+ex_extra| feature was disabled at
+			compile time.
+
+							*gq*
+gq{motion}		Format the lines that {motion} moves over.  The
+			'textwidth' option controls the length of each
+			formatted line (see below).  If the 'textwidth' option
+			is 0, the formatted line length is the screen width
+			(with a maximum width of 79).  {not in Vi}
+			The 'formatoptions' option controls the type of
+			formatting |fo-table|.
+			NOTE: The "Q" command formerly performed this
+			function.  If you still want to use "Q" for
+			formatting, use this mapping: >
+				:nnoremap Q gq
+
+gqgq							*gqgq* *gqq*
+gqq			Format the current line.  {not in Vi}
+
+							*v_gq*
+{Visual}gq		Format the highlighted text.  (for {Visual} see
+			|Visual-mode|).  {not in Vi}
+
+							*gw*
+gw{motion}		Format the lines that {motion} moves over.  Similar to
+			|gq| but puts the cursor back at the same position in
+			the text.  However, 'formatprg' is not used.
+			{not in Vi}
+
+Example: To format the current paragraph use:			*gqap*  >
+	gqap
+
+The "gq" command leaves the cursor in the line where the motion command takes
+the cursor.  This allows you to repeat formatting repeated with ".".  This
+works well with "gqj" (format current and next line) and "gq}" (format until
+end of paragraph).  Note: When 'formatprg' is set, "gq" leaves the cursor on
+the first formatted line (as with using a filter command).
+
+If you want to format the current paragraph and continue where you were, use: >
+	gwap
+If you always want to keep paragraphs formatted you may want to add the 'a'
+flag to 'formatoptions'.  See |auto-format|.
+
+If the 'autoindent' option is on, Vim uses the indent of the first line for
+the following lines.
+
+Formatting does not change empty lines (but it does change lines with only
+white space!).
+
+The 'joinspaces' option is used when lines are joined together.
+
+You can set the 'formatprg' option to the name of an external program for Vim
+to use for text formatting.  The 'textwidth' and other options have no effect
+on formatting by an external program.
+
+							*right-justify*
+There is no command in Vim to right justify text.  You can do it with
+an external command, like "par" (e.g.: "!}par" to format until the end of the
+paragraph) or set 'formatprg' to "par".
+
+							*format-comments*
+Vim can format comments in a special way.  Vim recognizes a comment by a
+specific string at the start of the line (ignoring white space).  Three types
+of comments can be used:
+
+- A comment string that repeats at the start of each line.  An example is the
+  type of comment used in shell scripts, starting with "#".
+- A comment string that occurs only in the first line, not in the following
+  lines.  An example is this list with dashes.
+- Three-piece comments that have a start string, an end string, and optional
+  lines in between.  The strings for the start, middle and end are different.
+  An example is the C-style comment:
+	/*
+	 * this is a C comment
+	 */
+
+The 'comments' option is a comma-separated list of parts.  Each part defines a
+type of comment string.  A part consists of:
+	{flags}:{string}
+
+{string} is the literal text that must appear.
+
+{flags}:
+  n	Nested comment.  Nesting with mixed parts is allowed.  If 'comments'
+	is "n:),n:>" a line starting with "> ) >" is a comment.
+
+  b	Blank (<Space>, <Tab> or <EOL>) required after {string}.
+
+  f	Only the first line has the comment string.  Do not repeat comment on
+	the next line, but preserve indentation (e.g., a bullet-list).
+
+  s	Start of three-piece comment
+
+  m	Middle of a three-piece comment
+
+  e	End of a three-piece comment
+
+  l	Left adjust middle with start or end (default).  Only recognized when
+	used together with 's' or 'e'.
+
+  r	Right adjust middle with start or end.  Only recognized when used
+	together with 's' or 'e'.
+
+  O	Don't use this one for the "O" command.
+
+  x	Allows three-piece comments to be ended by just typing the last
+	character of the end-comment string as the first character on a new
+	line, when the middle-comment string has already been inserted
+	automatically.  See below for more details.
+
+  {digits}
+	When together with 's' or 'e': add extra indent for the middle part.
+	This can be used to left-align the middle part with the start or end
+	and then add an offset.
+
+  -{digits}
+	Like {digits} but reduce the indent.  This only works when there is
+	some indent for the start or end part that can be removed.
+
+When a string has none of the 'f', 's', 'm' or 'e' flags, Vim assumes the
+comment string repeats at the start of each line.  The flags field may be
+empty.
+
+Any blank space in the text before and after the {string} is part of the
+{string}, so do not include leading or trailing blanks unless the blanks are a
+required part of the comment string.
+
+When one comment leader is part of another, specify the part after the whole.
+For example, to include both "-" and "->", use >
+	:set comments=f:->,f:-
+
+A three-piece comment must always be given as start,middle,end, with no other
+parts in between.  An example of a three-piece comment is >
+	sr:/*,mb:*,ex:*/
+for C-comments.  To avoid recognizing "*ptr" as a comment, the middle string
+includes the 'b' flag.  For three-piece comments, Vim checks the text after
+the start and middle strings for the end string.  If Vim finds the end string,
+the comment does not continue on the next line.  Three-piece comments must
+have a middle string because otherwise Vim can't recognize the middle lines.
+
+Notice the use of the "x" flag in the above three-piece comment definition.
+When you hit Return in a C-comment, Vim will insert the middle comment leader
+for the new line, e.g. " * ".  To close this comment you just have to type "/"
+before typing anything else on the new line.  This will replace the
+middle-comment leader with the end-comment leader, leaving just " */".  There
+is no need to hit BackSpace first.
+
+Examples: >
+   "b:*"	Includes lines starting with "*", but not if the "*" is
+		followed by a non-blank.  This avoids a pointer dereference
+		like "*str" to be recognized as a comment.
+   "n:>"	Includes a line starting with ">", ">>", ">>>", etc.
+   "fb:-"	Format a list that starts with "- ".
+
+By default, "b:#" is included.  This means that a line that starts with
+"#include" is not recognized as a comment line.  But a line that starts with
+"# define" is recognized.  This is a compromise.
+
+Often the alignment can be changed from right alignment to a left alignment
+with an additional space.  For example, for Javadoc comments, this can be
+used (insert a backslash before the space when using ":set"): >
+	s1:/*,mb:*,ex:*/
+Note that an offset is included with start, so that the middle part is left
+aligned with the start and then an offset of one character added.  This makes
+it possible to left align the start and middle for this construction: >
+	/**
+	 * comment
+	 */
+
+{not available when compiled without the |+comments| feature}
+
+							*fo-table*
+You can use the 'formatoptions' option  to influence how Vim formats text.
+'formatoptions' is a string that can contain any of the letters below.  The
+default setting is "tcq".  You can separate the option letters with commas for
+readability.
+
+letter	 meaning when present in 'formatoptions'    ~
+
+t	Auto-wrap text using textwidth (does not apply to comments)
+c	Auto-wrap comments using textwidth, inserting the current comment
+	leader automatically.
+r	Automatically insert the current comment leader after hitting
+	<Enter> in Insert mode.
+o	Automatically insert the current comment leader after hitting 'o' or
+	'O' in Normal mode.
+q	Allow formatting of comments with "gq".
+	Note that formatting will not change blank lines or lines containing
+	only the comment leader.  A new paragraph starts after such a line,
+	or when the comment leader changes.
+w	Trailing white space indicates a paragraph continues in the next line.
+	A line that ends in a non-white character ends a paragraph.
+a	Automatic formatting of paragraphs.  Every time text is inserted or
+	deleted the paragraph will be reformatted.  See |auto-format|.
+	When the 'c' flag is present this only happens for recognized
+	comments.
+n	When formatting text, recognize numbered lists.  The indent of the
+	text after the number is used for the next line.  The number may
+	optionally be followed by '.', ':', ')', ']' or '}'.  Note that
+	'autoindent' must be set too.  Doesn't work well together with "2".
+	Example: >
+		1. the first item
+		   wraps
+		2. the second item
+2	When formatting text, use the indent of the second line of a paragraph
+	for the rest of the paragraph, instead of the indent of the first
+	line.  This supports paragraphs in which the first line has a
+	different indent than the rest.  Note that 'autoindent' must be set
+	too.  Example: >
+			first line of a paragraph
+		second line of the same paragraph
+		third line.
+v	Vi-compatible auto-wrapping in insert mode: Only break a line at a
+	blank that you have entered during the current insert command.  (Note:
+	this is not 100% Vi compatible.  Vi has some "unexpected features" or
+	bugs in this area.  It uses the screen column instead of the line
+	column.)
+b	Like 'v', but only auto-wrap if you enter a blank at or before
+	the wrap margin.  If the line was longer than 'textwidth' when you
+	started the insert, or you do not enter a blank in the insert before
+	reaching 'textwidth', Vim does not perform auto-wrapping.
+l	Long lines are not broken in insert mode: When a line was longer than
+	'textwidth' when the insert command started, Vim does not
+	automatically format it.
+m	Also break at a multi-byte character above 255.  This is useful for
+	Asian text where every character is a word on its own.
+M	When joining lines, don't insert a space before or after a multi-byte
+	character.  Overrules the 'B' flag.
+B	When joining lines, don't insert a space between two multi-byte
+	characters.  Overruled by the 'M' flag.
+1	Don't break a line after a one-letter word.  It's broken before it
+	instead (if possible).
+
+
+With 't' and 'c' you can specify when Vim performs auto-wrapping:
+value	action	~
+""	no automatic formatting (you can use "gq" for manual formatting)
+"t"	automatic formatting of text, but not comments
+"c"	automatic formatting for comments, but not text (good for C code)
+"tc"	automatic formatting for text and comments
+
+Note that when 'textwidth' is 0, Vim does no formatting anyway (but does
+insert comment leaders according to the 'comments' option).
+
+Note that when 'paste' is on, Vim does no formatting at all.
+
+Note that 'textwidth' can be non-zero even if Vim never performs auto-wrapping;
+'textwidth' is still useful for formatting with "gq".
+
+If the 'comments' option includes "/*", "*" and/or "*/", then Vim has some
+built in stuff to treat these types of comments a bit more cleverly.
+Opening a new line before or after "/*" or "*/" (with 'r' or 'o' present in
+'formatoptions') gives the correct start of the line automatically.  The same
+happens with formatting and auto-wrapping. Opening a line after a line
+starting with "/*" or "*" and containing "*/", will cause no comment leader to
+be inserted, and the indent of the new line is taken from the line containing
+the start of the comment.
+E.g.:
+    /* ~
+     * Your typical comment. ~
+     */ ~
+    The indent on this line is the same as the start of the above
+    comment.
+
+All of this should be really cool, especially in conjunction with the new
+:autocmd command to prepare different settings for different types of file.
+
+Some examples:
+  for C code (only format comments): >
+	:set fo=croq
+< for Mail/news	(format all, don't start comment with "o" command): >
+	:set fo=tcrq
+<
+
+Automatic formatting					*auto-format*
+
+When the 'a' flag is present in 'formatoptions' text is formatted
+automatically when inserting text or deleting text.  This works nice for
+editing text paragraphs.  A few hints on how to use this:
+
+- You need to properly define paragraphs.  The simplest is paragraphs that are
+  separated by a blank line.  When there is no separating blank line, consider
+  using the 'w' flag and adding a space at the end of each line in the
+  paragraphs except the last one.
+
+- You can set the 'formatoptions' based on the type of file |filetype| or
+  specifically for one file with a |modeline|.
+
+- Set 'formatoptions' to "aw2tq" to make text with indents like this:
+
+	    bla bla foobar bla 
+	bla foobar bla foobar bla
+	    bla bla foobar bla 
+	bla foobar bla bla foobar
+
+- Add the 'c' flag to only auto-format comments.  Useful in source code.
+
+And a few warnings:
+
+- When part of the text is not properly separated in paragraphs, making
+  changes in this text will cause it to be formatted anyway.  Consider doing >
+
+	:set fo-=a
+
+- When using the 'w' flag (trailing space means paragraph continues) and
+  deleting the last line of a paragraph with |dd|, the paragraph will be
+  joined with the next one.
+
+- Changed text is saved for undo.  Formatting is also a change.  Thus each
+  format action saves text for undo.  This may consume quite a lot of memory.
+
+- Formatting a long paragraph and/or with complicated indenting may be slow.
+
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
new file mode 100644
index 0000000..90b35b4
--- /dev/null
+++ b/runtime/doc/cmdline.txt
@@ -0,0 +1,992 @@
+*cmdline.txt*   For Vim version 7.0aa.  Last change: 2004 Mar 31
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+				*Cmdline-mode* *Command-line-mode*
+Command-line mode		*Cmdline* *Command-line* *mode-cmdline* *:*
+
+Command-line mode is used to enter Ex commands (":"), search patterns
+("/" and "?"), and filter commands ("!").
+
+Basic command line editing is explained in chapter 20 of the user manual
+|usr_20.txt|.
+
+1. Command-line editing		|cmdline-editing|
+2. Command-line completion	|cmdline-completion|
+3. Ex command-lines		|cmdline-lines|
+4. Ex command-line ranges	|cmdline-ranges|
+5. Ex special characters	|cmdline-special|
+6. Command-line window		|cmdline-window|
+
+==============================================================================
+1. Command-line editing					*cmdline-editing*
+
+Normally characters are inserted in front of the cursor position.  You can
+move around in the command-line with the left and right cursor keys.  With the
+<Insert> key, you can toggle between inserting and overstriking characters.
+{Vi: can only alter the last character in the line}
+
+Note that if your keyboard does not have working cursor keys or any of the
+other special keys, you can use ":cnoremap" to define another key for them.
+For example, to define tcsh style editing keys:		*tcsh-style*  >
+	:cnoremap <C-A> <Home>
+	:cnoremap <C-F> <Right>
+	:cnoremap <C-B> <Left>
+	:cnoremap <Esc>b <S-Left>
+	:cnoremap <Esc>f <S-Right>
+(<> notation |<>|; type all this literally)
+
+							*cmdline-too-long*
+When the command line is getting longer than what fits on the screen, only the
+part that fits will be shown.  The cursor can only move in this visible part,
+thus you cannot edit beyond that.
+
+						*cmdline-history* *history*
+The command-lines that you enter are remembered in a history table.  You can
+recall them with the up and down cursor keys.  There are actually four
+history tables:
+- one for ':' commands
+- one for search strings
+- one for expressions
+- one for input lines, typed for the |input()| function.
+These are completely separate.  Each history can only be accessed when
+entering the same type of line.
+Use the 'history' option to set the number of lines that are remembered
+(default: 20).
+Notes:
+- When you enter a command-line that is exactly the same as an older one, the
+  old one is removed (to avoid repeated commands moving older commands out of
+  the history).
+- Only commands that are typed are remembered.  Ones that completely come from
+  mappings are not put in the history
+- All searches are put in the search history, including the ones that come
+  from commands like "*" and "#".  But for a mapping, only the last search is
+  remembered (to avoid that long mappings trash the history).
+{Vi: no history}
+{not available when compiled without the |+cmdline_hist| feature}
+
+There is an automatic completion of names on the command-line; see
+|cmdline-completion|.
+
+							*c_CTRL-V*
+CTRL-V		Insert next non-digit literally.  Up to three digits form the
+		decimal value of a single byte.  The non-digit and the three
+		digits are not considered for mapping.  This works the same
+		way as in Insert mode (see above, |i_CTRL-V|).
+		Note: Under Windows CTRL-V is often mapped to paste text.
+		Use CTRL-Q instead then.
+							*c_CTRL-Q*
+CTRL-Q		Same as CTRL-V.  But with some terminals it is used for
+		control flow, it doesn't work then.
+
+							*c_<Left>*
+<Left>		cursor left
+							*c_<Right>*
+<Right>		cursor right
+							*c_<S-Left>*
+<S-Left> or <C-Left>					*c_<C-Left>*
+		cursor one WORD left
+							*c_<S-Right>*
+<S-Right> or <C-Right>					*c_<C-Right>*
+		cursor one WORD right
+CTRL-B or <Home>					*c_CTRL-B* *c_<Home>*
+		cursor to beginning of command-line
+CTRL-E or <End>						*c_CTRL-E* *c_<End>*
+		cursor to end of command-line
+
+							*c_<LeftMouse>*
+<LeftMouse>	cursor to position of mouse click.
+
+CTRL-H							*c_<BS>* *c_CTRL-H*
+<BS>		delete the character in front of the cursor (see |:fixdel| if
+		your <BS> key does not do what you want).
+							*c_<Del>*
+<Del>		delete the character under the cursor (at end of line:
+		character before the cursor) (see |:fixdel| if your <Del>
+		key does not do what you want).
+							*c_CTRL-W*
+CTRL-W		delete the word before the cursor
+							*c_CTRL-U*
+CTRL-U		remove all characters between the cursor position and
+		the beginning of the line.  Previous versions of vim
+		deleted all characters on the line.  If that is the
+		preferred behavior, add the following to your .vimrc: >
+			:cnoremap <C-U> <C-E><C-U>
+<
+		Note: if the command-line becomes empty with one of the
+		delete commands, Command-line mode is quit.
+							*c_<Insert>*
+<Insert>	Toggle between insert and overstrike.  {not in Vi}
+
+{char1} <BS> {char2}	or				*c_digraph*
+CTRL-K {char1} {char2}					*c_CTRL-K*
+		enter digraph (see |digraphs|).  When {char1} is a special
+		key, the code for that key is inserted in <> form.  {not in Vi}
+
+CTRL-R {0-9a-z"%#:-=.}					*c_CTRL-R* *c_<C-R>*
+		Insert the contents of a numbered or named register.  Between
+		typing CTRL-R and the second character '"' will be displayed
+		to indicate that you are expected to enter the name of a
+		register.
+		The text is inserted as if you typed it, but mappings and
+		abbreviations are not used.  Command-line completion through
+		'wildchar' is not triggered though.  And characters that end
+		the command line are inserted literally (<Esc>, <CR>, <NL>,
+		<C-C>).  A <BS> or CTRL-W could still end the command line
+		though, and remaining characters will then be interpreted in
+		another mode, which might not be what you intended.
+		Special registers:
+			'"'	the unnamed register, containing the text of
+				the last delete or yank
+			'%'	the current file name
+			'#'	the alternate file name
+			'*'	the clipboard contents (X11: primary selection)
+			'+'	the clipboard contents
+			'/'	the last search pattern
+			':'	the last command-line
+			'-'	the last small (less than a line) delete
+			'.'	the last inserted text
+							*c_CTRL-R_=*
+			'='	the expression register: you are prompted to
+				enter an expression (see |expression|)
+		See |registers| about registers.  {not in Vi}
+
+CTRL-R CTRL-F				*c_CTRL-R_CTRL-F* *c_<C-R>_<C-F>*
+CTRL-R CTRL-P				*c_CTRL-R_CTRL-P* *c_<C-R>_<C-P>*
+CTRL-R CTRL-W				*c_CTRL-R_CTRL-W* *c_<C-R>_<C-W>*
+CTRL-R CTRL-A				*c_CTRL-R_CTRL-A* *c_<C-R>_<C-A>*
+		Insert the object under the cursor:
+			CTRL-F	the Filename under the cursor
+			CTRL-P	the Filename under the cursor, expanded with
+				'path' as in |gf|
+			CTRL-W	the Word under the cursor
+			CTRL-A	the WORD under the cursor; see |WORD|
+		{not in Vi}
+		CTRL-F and CTRL-P: {only when +file_in_path feature is
+		included}
+
+					*c_CTRL-R_CTRL-R* *c_<C-R>_<C-R>*
+					*c_CTRL-R_CTRL-O* *c_<C-R>_<C-O>*
+CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A}
+CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A}
+		Insert register or object under the cursor.  Works like
+		|c_CTRL-R| but inserts the text literally.  For example, if
+		register a contains "xy^Hz" (where ^H is a backspace),
+		"CTRL-R a" will insert "xz" while "CTRL-R CTRL-R a" will
+		insert "xy^Hz".
+
+CTRL-\ e {expr}						*c_CTRL-\_e*
+		Evaluate {expr} and replace the whole command line with the
+		result.  You will be prompted for the expression, type <Enter>
+		to finish it.  It's most useful in mappings though.  See
+		|expression|.
+		See |c_CTRL-R_=| for inserting the result of an expression.
+		Useful functions are |getcmdline()| and |getcmdpos()|.
+		The cursor position is unchanged, except when the cursor was
+		at the end of the line, then it stays at the end.
+		|setcmdpos()| can be used to set the cursor position.
+		Example: >
+			:cmap <F7> <C-\>eAppendSome()<CR>
+			:func AppendSome()
+			   :let cmd = getcmdline() . " Some()"
+			   :" place the cursor on the )
+			   :call setcmdpos(strlen(cmd))
+			   :return cmd
+			:endfunc
+<
+							*c_CTRL-Y*
+CTRL-Y		When there is a modeless selection, copy the selection into
+		the clipboard. |modeless-selection|
+		If there is no selection CTRL-Y is inserted as a character.
+
+CTRL-J						*c_CTRL-J* *c_<NL>* *c_<CR>*
+<CR> or <NL>	start entered command
+							*c_<Esc>*
+<Esc>		When typed and 'x' not present in 'cpoptions', quit
+		Command-line mode without executing.  In macros or when 'x'
+		present in 'cpoptions', start entered command.
+							*c_CTRL-C*
+CTRL-C		quit command-line without executing
+
+							*c_<Up>*
+<Up>		recall older command-line from history, whose beginning
+		matches the current command-line (see below).
+		{not available when compiled without the |+cmdline_hist|
+		feature}
+							*c_<Down>*
+<Down>		recall more recent command-line from history, whose beginning
+		matches the current command-line (see below).
+		{not available when compiled without the |+cmdline_hist|
+		feature}
+
+							*c_<S-Up>* *c_<PageUp>*
+<S-Up> or <PageUp>
+		recall older command-line from history
+		{not available when compiled without the |+cmdline_hist|
+		feature}
+						*c_<S-Down>* *c_<PageDown>*
+<S-Down> or <PageDown>
+		recall more recent command-line from history
+		{not available when compiled without the |+cmdline_hist|
+		feature}
+
+CTRL-D		command-line completion (see |cmdline-completion|)
+'wildchar' option
+		command-line completion (see |cmdline-completion|)
+CTRL-N		command-line completion (see |cmdline-completion|)
+CTRL-P		command-line completion (see |cmdline-completion|)
+CTRL-A		command-line completion (see |cmdline-completion|)
+CTRL-L		command-line completion (see |cmdline-completion|)
+
+							*c_CTRL-_*
+CTRL-_		a - switch between Hebrew and English keyboard mode, which is
+		private to the command-line and not related to hkmap.
+		This is useful when Hebrew text entry is required in the
+		command-line, searches, abbreviations, etc.  Applies only if
+		Vim is compiled with the |+rightleft| feature and the
+		'allowrevins' option is set.
+		See |rileft.txt|.
+
+		b - switch between Farsi and English keyboard mode, which is
+		private to the command-line and not related to fkmap.  In
+		Farsi keyboard mode the characters are inserted in reverse
+		insert manner.  This is useful when Farsi text entry is
+		required in the command-line, searches, abbreviations, etc.
+		Applies only if Vim is compiled with the |+farsi| feature.
+		See |farsi.txt|.
+
+							*c_CTRL-^*
+CTRL-^		Toggle the use of language |:lmap| mappings and/or Input
+		Method.
+		When typing a pattern for a search command and 'imsearch' is
+		not -1, VAL is the value of 'imsearch', otherwise VAL is the
+		value of 'iminsert'.
+		When language mappings are defined:
+		- If VAL is 1 (langmap mappings used) it becomes 0 (no langmap
+		  mappings used).
+		- If VAL was not 1 it becomes 1, thus langmap mappings are
+		  enabled.
+		When no language mappings are defined:
+		- If VAL is 2 (Input Method is used) it becomes 0 (no input
+		  method used)
+		- If VAL has another value it becomes 2, thus the Input Method
+		  is enabled.
+		These language mappings are normally used to type characters
+		that are different from what the keyboard produces.  The
+		'keymap' option can be used to install a whole number of them.
+		When entering a command line, langmap mappings are switched
+		off, since you are expected to type a command.  After
+		switching it on with CTRL-^, the new state is not used again
+		for the next command or Search pattern.
+		{not in Vi}
+
+For Emacs-style editing on the command-line see |emacs-keys|.
+
+The <Up> and <Down> keys take the current command-line as a search string.
+The beginning of the next/previous command-lines are compared with this
+string.  The first line that matches is the new command-line.  When typing
+these two keys repeatedly, the same string is used again.  For example, this
+can be used to find the previous substitute command: Type ":s" and then <Up>.
+The same could be done by typing <S-Up> a number of times until the desired
+command-line is shown.  (Note: the shifted arrow keys do not work on all
+terminals)
+
+							*his* *:history*
+:his[tory]	Print the history of last entered commands.
+		{not in Vi}
+		{not available when compiled without the |+cmdline_hist|
+		feature}
+
+:his[tory] [{name}] [{first}][, [{last}]]
+		List the contents of history {name} which can be:
+		c[md]	 or :	command-line history
+		s[earch] or /	search string history
+		e[xpr]	 or =	expression register history
+		i[nput]	 or @	input line history
+		a[ll]		all of the above
+		{not in Vi}
+
+		If the numbers {first} and/or {last} are given, the respective
+		range of entries from a history is listed.  These numbers can
+		be specified in the following form:
+							*:history-indexing*
+		A positive number represents the absolute index of an entry
+		as it is given in the first column of a :history listing.
+		This number remains fixed even if other entries are deleted.
+
+		A negative number means the relative position of an entry,
+		counted from the newest entry (which has index -1) backwards.
+
+		Examples:
+		List entries 6 to 12 from the search history: >
+			:history / 6,12
+<
+		List the recent five entries from all histories: >
+			:history all -5,
+
+==============================================================================
+2. Command-line completion				*cmdline-completion*
+
+When editing the command-line, a few commands can be used to complete the
+word before the cursor.  This is available for:
+
+- Command names: At the start of the command-line.
+- Tags: Only after the ":tag" command.
+- File names: Only after a command that accepts a file name or a setting for
+  an option that can be set to a file name.  This is called file name
+  completion.
+- Options: Only after the ":set" command.
+- Mappings: Only after a ":map" or similar command.
+- Variable and function names: Only after a ":if", ":call" or similar command.
+
+When Vim was compiled with the |+cmdline_compl| feature disabled, only file
+names, directories and help items can be completed.
+
+These are the commands that can be used:
+
+							*c_CTRL-D*
+CTRL-D		List names that match the pattern in front of the cursor.
+		When showing file names, directories are highlighted (see
+		'highlight' option).  Names where 'suffixes' matches are moved
+		to the end.
+					*c_CTRL-I* *c_wildchar* *c_<Tab>*
+'wildchar' option
+		A match is done on the pattern in front of the cursor.  The
+		match (if there are several, the first match) is inserted
+		in place of the pattern.  (Note: does not work inside a
+		macro, because <Tab> or <Esc> are mostly used as 'wildchar',
+		and these have a special meaning in some macros.) When typed
+		again and there were multiple matches, the next
+		match is inserted.  After the last match, the first is used
+		again (wrap around).
+		The behavior can be changed with the 'wildmode' option.
+							*c_CTRL-N*
+CTRL-N		After using 'wildchar' which got multiple matches, go to next
+		match.  Otherwise recall more recent command-line from history.
+<S-Tab>							*c_CTRL-P* *c_<S-Tab>*
+CTRL-P		After using 'wildchar' which got multiple matches, go to
+		previous match.  Otherwise recall older command-line from
+		history.  <S-Tab> only works with the GUI, on the Amiga and
+		with MS-DOS.
+							*c_CTRL-A*
+CTRL-A		All names that match the pattern in front of the cursor are
+		inserted.
+							*c_CTRL-L*
+CTRL-L		A match is done on the pattern in front of the cursor.  If
+		there is one match, it is inserted in place of the pattern.
+		If there are multiple matches the longest common part is
+		inserted in place of the pattern.  If the result is shorter
+		than the pattern, no completion is done.
+
+The 'wildchar' option defaults to <Tab> (CTRL-E when in Vi compatible mode; in
+a previous version <Esc> was used).  In the pattern standard wildcards '*' and
+'?' are accepted.  '*' matches any string, '?' matches exactly one character.
+
+If you like tcsh's autolist completion, you can use this mapping:
+	:cnoremap X <C-L><C-D>
+(Where X is the command key to use, <C-L> is CTRL-L and <C-D> is CTRL-D)
+This will find the longest match and then list all matching files.
+
+If you like tcsh's autolist completion, you can use the 'wildmode' option to
+emulate it.  For example, this mimics autolist=ambiguous:
+	:set wildmode=longest,list
+This will find the longest match with the first 'wildchar', then list all
+matching files with the next.
+
+							*suffixes*
+For file name completion you can use the 'suffixes' option to set a priority
+between files with almost the same name.  If there are multiple matches,
+those files with an extension that is in the 'suffixes' option are ignored.
+The default is ".bak,~,.o,.h,.info,.swp,.obj", which means that files ending
+in ".bak", "~", ".o", ".h", ".info", ".swp" and ".obj" are sometimes ignored.
+It is impossible to ignore suffixes with two dots.  Examples:
+
+  pattern:	files:				match:	~
+   test*	test.c test.h test.o		test.c
+   test*	test.h test.o			test.h and test.o
+   test*	test.i test.h test.c		test.i and test.c
+
+If there is more than one matching file (after ignoring the ones matching
+the 'suffixes' option) the first file name is inserted.  You can see that
+there is only one match when you type 'wildchar' twice and the completed
+match stays the same.  You can get to the other matches by entering
+'wildchar', CTRL-N or CTRL-P.  All files are included, also the ones with
+extensions matching the 'suffixes' option.
+
+To completely ignore files with some extension use 'wildignore'.
+
+The old value of an option can be obtained by hitting 'wildchar' just after
+the '='.  For example, typing 'wildchar' after ":set dir=" will insert the
+current value of 'dir'.  This overrules file name completion for the options
+that take a file name.
+
+If you would like using <S-Tab> for CTRL-P in an xterm, put this command in
+your .cshrc: >
+	xmodmap -e "keysym Tab = Tab Find"
+And this in your .vimrc: >
+	:cmap <Esc>[1~ <C-P>
+
+==============================================================================
+3. Ex command-lines					*cmdline-lines*
+
+The Ex commands have a few specialties:
+
+							*:quote*
+'"' at the start of a line causes the whole line to be ignored.  '"'
+after a command causes the rest of the line to be ignored.  This can be used
+to add comments.  Example: >
+	:set ai		"set 'autoindent' option
+It is not possible to add a comment to a shell command ":!cmd" or to the
+":map" command and friends, because they see the '"' as part of their
+argument.
+
+							*:bar* *:\bar*
+'|' can be used to separate commands, so you can give multiple commands in one
+line.  If you want to use '|' in an argument, precede it with '\'.
+
+These commands see the '|' as their argument, and can therefore not be
+followed by another command:
+    :argdo
+    :autocmd
+    :bufdo
+    :command
+    :cscope
+    :debug
+    :folddoopen
+    :folddoclosed
+    :function
+    :global
+    :help
+    :helpfind
+    :make
+    :normal
+    :perl
+    :perldo
+    :promptfind
+    :promptrepl
+    :pyfile
+    :python
+    :registers
+    :read !
+    :scscope
+    :tcl
+    :tcldo
+    :tclfile
+    :vglobal
+    :windo
+    :write !
+    :[range]!
+    a user defined command without the "-bar" argument |:command|
+
+Note that this is confusing (inherited from Vi): With ":g" the '|' is included
+in the command, with ":s" it is not.
+
+To be able to use another command anyway, use the ":execute" command.
+Example (append the output of "ls" and jump to the first line): >
+	:execute 'r !ls' | '[
+
+There is one exception: When the 'b' flag is present in 'cpoptions', with the
+":map" and ":abbr" commands and friends CTRL-V needs to be used instead of
+'\'.  You can also use "<Bar>" instead.  See also |map_bar|.
+
+Examples: >
+	:!ls | wc		view the output of two commands
+	:r !ls | wc		insert the same output in the text
+	:%g/foo/p|>		moves all matching lines one shiftwidth
+	:%s/foo/bar/|>		moves one line one shiftwidth
+	:map q 10^V|		map "q" to "10|"
+	:map q 10\| map \ l	map "q" to "10\" and map "\" to "l"
+					(when 'b' is present in 'cpoptions')
+
+You can also use <NL> to separate commands in the same way as with '|'.  To
+insert a <NL> use CTRL-V CTRL-J.  "^@" will be shown.  Using '|' is the
+preferred method.  But for external commands a <NL> must be used, because a
+'|' is included in the external command.  To avoid the special meaning of <NL>
+it must be preceded with a backslash.  Example: >
+	:r !date<NL>-join
+This reads the current date into the file and joins it with the previous line.
+
+Note that when the command before the '|' generates an error, the following
+commands will not be executed.
+
+
+Because of Vi compatibility the following strange commands are supported: >
+	:|			print current line (like ":p")
+	:3|			print line 3 (like ":3p")
+	:3			goto line 3
+
+A colon is allowed between the range and the command name.  It is ignored
+(this is Vi compatible).  For example: >
+	:1,$:s/pat/string
+
+When the character '%' or '#' is used where a file name is expected, they are
+expanded to the current and alternate file name (see the chapter "editing
+files" |:_%| |:_#|).
+
+Embedded spaces in file names are allowed on the Amiga if one file name is
+expected as argument.  Trailing spaces will be ignored, unless escaped with a
+backslash or CTRL-V.  Note that the ":next" command uses spaces to separate
+file names.  Escape the spaces to include them in a file name.  Example: >
+	:next foo\ bar goes\ to school\
+starts editing the three files "foo bar", "goes to" and "school ".
+
+When you want to use the special characters '"' or '|' in a command, or want
+to use '%' or '#' in a file name, precede them with a backslash.  The
+backslash is not required in a range and in the ":substitute" command.
+
+							*:_!*
+The '!' (bang) character after an Ex command makes the command behave in a
+different way.  The '!' should be placed immediately after the command, without
+any blanks in between.  If you insert blanks the '!' will be seen as an
+argument for the command, which has a different meaning.  For example:
+	:w! name	write the current buffer to file "name", overwriting
+			any existing file
+	:w !name	send the current buffer as standard input to command
+			"name"
+
+==============================================================================
+4. Ex command-line ranges	*cmdline-ranges* *[range]* *E16* *E493*
+
+Some Ex commands accept a line range in front of them.  This is noted as
+[range].  It consists of one or more line specifiers, separated with ',' or
+';'.
+
+The basics are explained in section |10.3| of the user manual.
+
+						*:,* *:;*
+When separated with ';' the cursor position will be set to that line
+before interpreting the next line specifier.  This doesn't happen for ','.
+Examples: >
+   4,/this line/
+<	from line 4 till match with "this line" after the cursor line. >
+   5;/that line/
+<	from line 5 till match with "that line" after line 5.
+
+The default line specifier for most commands is the cursor position, but the
+commands ":write" and ":global" have the whole file (1,$) as default.
+
+If more line specifiers are given than required for the command, the first
+one(s) will be ignored.
+
+Line numbers may be specified with:		*:range* *E14* *{address}*
+	{number}	an absolute line number
+	.		the current line			  *:.*
+	$		the last line in the file		  *:$*
+	%		equal to 1,$ (the entire file)		  *:%*
+	't		position of mark t (lowercase)		  *:'*
+	'T		position of mark T (uppercase); when the mark is in
+			another file it cannot be used in a range
+	/{pattern}[/]	the next line where {pattern} matches	  *:/*
+	?{pattern}[?]	the previous line where {pattern} matches *:?*
+	\/		the next line where the previously used search
+			pattern matches
+	\?		the previous line where the previously used search
+			pattern matches
+	\&		the next line where the previously used substitute
+			pattern matches
+
+Each may be followed (several times) by '+' or '-' and an optional number.
+This number is added or subtracted from the preceding line number.  If the
+number is omitted, 1 is used.
+
+The "/" and "?" after {pattern} are required to separate the pattern from
+anything that follows.
+
+The "/" and "?" may be preceded with another address.  The search starts from
+there.  The difference from using ';' is that the cursor isn't moved.
+Examples: >
+	/pat1//pat2/	Find line containing "pat2" after line containing
+			"pat1", without moving the cursor.
+	7;/pat2/	Find line containing "pat2", after line 7, leaving
+			the cursor in line 7.
+
+The {number} must be between 0 and the number of lines in the file.  When
+using a 0 (zero) this is interpreted as a 1 by most commands.  Commands that
+use it as a count do use it as a zero (|:tag|, |:pop|, etc).  Some commands
+interpret the zero as "before the first line" (|:read|, search pattern, etc).
+
+Examples: >
+	.+3		three lines below the cursor
+	/that/+1	the line below the next line containing "that"
+	.,$		from current line until end of file
+	0;/that		the first line containing "that", also matches in the
+			first line.
+	1;/that		the first line after line 1 containing "that"
+
+Some commands allow for a count after the command.  This count is used as the
+number of lines to be used, starting with the line given in the last line
+specifier (the default is the cursor line).  The commands that accept a count
+are the ones that use a range but do not have a file name argument (because
+a file name can also be a number).
+
+Examples: >
+	:s/x/X/g 5	substitute 'x' by 'X' in the current line and four
+			following lines
+	:23d 4		delete lines 23, 24, 25 and 26
+
+
+Folds and Range
+
+When folds are active the line numbers are rounded off to include the whole
+closed fold.  See |fold-behavior|.
+
+
+Reverse Range
+
+A range should have the lower line number first.  If this is not the case, Vim
+will ask you if it should swap the line numbers.  This is not done within the
+global command ":g".
+
+
+Count and Range						*N:*
+
+When giving a count before entering ":", this is translated into:
+		:.,.+(count - 1)
+In words: The 'count' lines at and after the cursor.  Example: To delete
+three lines: >
+		3:d<CR>		is translated into: .,.+2d<CR>
+<
+
+Visual Mode and Range					*v_:*
+
+{Visual}:	Starts a command-line with the Visual selected lines as a
+		range.  The code ":'<,'>" is used for this range, which makes
+		it possible to select a similar line from the command-line
+		history for repeating a command on different Visually selected
+		lines.
+
+==============================================================================
+5. Ex special characters				*cmdline-special*
+
+In Ex commands, at places where a file name can be used, the following
+characters have a special meaning.  These can also be used in the expression
+function expand() |expand()|.
+	%	is replaced with the current file name			*:_%*
+	#	is replaced with the alternate file name		*:_#*
+	#n	(where n is a number) is replaced with the file name of
+		buffer n.  "#0" is the same as "#"
+	##	is replaced with all names in the argument list		*:_##*
+		concatenated, separated by spaces.  Each space in a name
+		is preceded with a backslash.
+Note that these give the file name as it was typed.  If an absolute path is
+needed (when using the file name from a different directory), you need to add
+":p".  See |filename-modifiers|.
+Note that backslashes are inserted before spaces, so that the command will
+correctly interpret the file name.  But this doesn't happen for shell
+commands.  For those you probably have to use quotes: >
+	:!ls "%"
+	:r !spell "%"
+
+To avoid the special meaning of '%' and '#' insert a backslash before it.
+Detail: The special meaning is always escaped when there is a backslash before
+it, no matter how many backslashes.
+	you type:		result	~
+	   #			alternate.file
+	   \#			#
+	   \\#			\#
+
+			       *:<cword>* *:<cWORD>* *:<cfile>* *<cfile>*
+			       *:<sfile>* *<sfile>* *:<afile>* *<afile>*
+			       *:<abuf>* *<abuf>* *:<amatch>* *<amatch>*
+			       *E495* *E496* *E497* *E498* *E499* *E500*
+Note: these are typed literally, they are not special keys!
+	<cword>    is replaced with the word under the cursor (like |star|)
+	<cWORD>    is replaced with the WORD under the cursor (see |WORD|)
+	<cfile>    is replaced with the path name under the cursor (like what
+		   |gf| uses)
+	<afile>    when executing autocommands, is replaced with the file name
+		   for a file read or write
+	<abuf>     when executing autocommands, is replaced with the currently
+		   effective buffer number (for ":r file" it is the current
+		   buffer, the file being read is not in a buffer).
+	<amatch>   when executing autocommands, is replaced with the match for
+		   which this autocommand was executed.  It differs form
+		   <afile> only when the file name isn't used to match with
+		   (for FileType and Syntax events).
+	<sfile>    when executing a ":source" command, is replaced with the
+		   file name of the sourced file;
+		   when executing a function, is replaced with
+		   "function {function-name}"; function call nesting is
+		   indicated like this:
+		   "function {function-name1}..{function-name2}".  Note that
+		   filename-modifiers are useless when <sfile> is used inside
+		   a function.
+
+							 *filename-modifiers*
+	 *:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs*
+The file name modifiers can be used after "%", "#", "#n", "<cfile>", "<sfile>",
+"<afile>" or "<abuf>".  They are also used with the |fnamemodify()| function.
+These are not available when Vim has been compiled without the |+modify_fname|
+feature.
+These modifiers can be given, in this order:
+	:p	Make file name a full path.  Must be the first modifier.  Also
+		changes "~/" (and "~user/" for Unix and VMS) to the path for
+		the home directory.  If the name is a directory a path
+		separator is added at the end.  For a file name that does not
+		exist and does not have an absolute path the result is
+		unpredictable.
+	:8	Converts the path to 8.3 short format (currently only on
+		win32).  Will act on as much of a path that is an existing
+		path.
+	:~	Reduce file name to be relative to the home directory, if
+		possible.  File name is unmodified if it is not below the home
+		directory.
+	:.	Reduce file name to be relative to current directory, if
+		possible.  File name is unmodified if it is not below the
+		current directory.
+		For maximum shortness, use ":~:.".
+	:h	Head of the file name (the last component and any separators
+		removed).  Cannot be used with :e, :r or :t.
+		Can be repeated to remove several components at the end.
+		When the file name ends in a path separator, only the path
+		separator is removed.  Thus ":p:h" on a directory name results
+		on the directory name itself (without trailing slash).
+		When the file name is an absolute path (starts with "/" for
+		Unix; "x:\" for MS-DOS, WIN32, OS/2; "drive:" for Amiga), that
+		part is not removed.  When there is no head (path is relative
+		to current directory) the result is empty.
+	:t	Tail of the file name (last component of the name).  Must
+		precede any :r or :e.
+	:r	Root of the file name (the last extension removed).  When
+		there is only an extension (file name that starts with '.',
+		e.g., ".vimrc"), it is not removed.  Can be repeated to remove
+		several extensions (last one first).
+	:e	Extension of the file name.  Only makes sense when used alone.
+		When there is no extension the result is empty.
+		When there is only an extension (file name that starts with
+		'.'), the result is empty.  Can be repeated to include more
+		extensions.  If there are not enough extensions (but at least
+		one) as much as possible are included.
+	:s?pat?sub?
+		Substitute the first occurrence of "pat" with "sub".  This
+		works like the |:s| command.  "pat" is a regular expression.
+		Any character can be used for '?', but it must not occur in
+		"pat" or "sub".
+		After this, the previous modifiers can be used again.  For
+		example ":p", to make a full path after the substitution.
+	:gs?pat?sub?
+		Substitute all occurrences of "path" with "sub".  Otherwise
+		this works like ":s".
+
+Examples, when the file name is "src/version.c", current dir
+"/home/mool/vim": >
+  :p			/home/mool/vim/src/version.c
+  :p:.				       src/version.c
+  :p:~				 ~/vim/src/version.c
+  :h				       src
+  :p:h			/home/mool/vim/src
+  :p:h:h		/home/mool/vim
+  :t					   version.c
+  :p:t					   version.c
+  :r				       src/version
+  :p:r			/home/mool/vim/src/version
+  :t:r					   version
+  :e						   c
+  :s?version?main?		       src/main.c
+  :s?version?main?:p	/home/mool/vim/src/main.c
+  :p:gs?/?\\?		\home\mool\vim\src\version.c
+
+Examples, when the file name is "src/version.c.gz": >
+  :p			/home/mool/vim/src/version.c.gz
+  :e						     gz
+  :e:e						   c.gz
+  :e:e:e					   c.gz
+  :e:e:r					   c
+  :r				       src/version.c
+  :r:e						   c
+  :r:r				       src/version
+  :r:r:r			       src/version
+<
+					*extension-removal* *:_%<*
+If a "<" is appended to "%", "#", "#n" or "CTRL-V p" the extension of the file
+name is removed (everything after and including the last '.' in the file
+name).  This is included for backwards compatibility with version 3.0, the
+":r" form is preferred.  Examples: >
+
+	%		current file name
+	%<		current file name without extension
+	#		alternate file name for current window
+	#<		idem, without extension
+	#31		alternate file number 31
+	#31<		idem, without extension
+	<cword>		word under the cursor
+	<cWORD>		WORD under the cursor (see |WORD|)
+	<cfile>		path name under the cursor
+	<cfile><	idem, without extension
+
+Note: Where a file name is expected wildcards expansion is done.  On Unix the
+shell is used for this, unless it can be done internally (for speed).
+Backticks also work, like in >
+	:n `echo *.c`
+(backtick expansion is not possible in |restricted-mode|)
+But expansion is only done if there are any wildcards before expanding the
+'%', '#', etc..  This avoids expanding wildcards inside a file name.  If you
+want to expand the result of <cfile>, add a wildcard character to it.
+Examples: (alternate file name is "?readme?")
+	command		expands to  ~
+	:e #		:e ?readme?
+	:e `ls #`	:e {files matching "?readme?"}
+	:e #.*		:e {files matching "?readme?.*"}
+	:cd <cfile>	:cd {file name under cursor}
+	:cd <cfile>*	:cd {file name under cursor plus "*" and then expanded}
+
+When the expanded argument contains a "!" and it is used for a shell command
+(":!cmd", ":r !cmd" or ":w !cmd"), it is escaped with a backslash to avoid it
+being expanded into a previously used command.  When the 'shell' option
+contains "sh", this is done twice, to avoid the shell trying to expand the
+"!".
+
+							*filename-backslash*
+For filesystems that use a backslash as directory separator (MS-DOS, Windows,
+OS/2), it's a bit difficult to recognize a backslash that is used to escape
+the special meaning of the next character.  The general rule is: If the
+backslash is followed by a normal file name character, it does not have a
+special meaning.  Therefore "\file\foo" is a valid file name, you don't have
+to type the backslash twice.
+
+An exception is the '$' sign.  It is a valid character in a file name.  But
+to avoid a file name like "$home" to be interpreted as an environment variable,
+it needs to be preceded by a backslash.  Therefore you need to use "/\$home"
+for the file "$home" in the root directory.  A few examples:
+
+	FILE NAME	INTERPRETED AS	~
+	$home		expanded to value of environment var $home
+	\$home		file "$home" in current directory
+	/\$home		file "$home" in root directory
+	\\$home		file "\\", followed by expanded $home
+
+==============================================================================
+6. Command-line window				*cmdline-window* *cmdwin*
+
+In the command-line window the command line can be edited just like editing
+text in any window.  It is a special kind of window, because you cannot leave
+it in a normal way.
+{not available when compiled without the |+cmdline_hist| or |+vertsplit|
+feature}
+
+
+OPEN
+
+There are two ways to open the command-line window:
+1. From Command-line mode, use the key specified with the 'cedit' option.
+   The default is CTRL-F when 'compatible' is not set.
+2. From Normal mode, use the "q:", "q/" or "q?" command.  *q:* *q/* *q?*
+   This starts editing an Ex command-line ("q:") or search string ("q/" or
+   "q?").  Note that this is not possible while recording is in progress (the
+   "q" stops recording then).
+
+When the window opens it is filled with the command-line history.  The last
+line contains the command as typed so far.  The left column will show a
+character that indicates the type of command-line being edited, see
+|cmdwin-char|.
+
+Vim will be in Normal mode when the editor is opened, except when 'insertmode'
+is set.
+
+The height of the window is specified with 'cmdwinheight' (or smaller if there
+is no room).  The window is always full width and is positioned just above the
+command-line.
+
+
+EDIT
+
+You can now use commands to move around and edit the text in the window.  Both
+in Normal mode and Insert mode.
+
+It is possible to use ":", "/" and other commands that use the command-line,
+but it's not possible to open another command-line window then.  There is no
+nesting.
+							*E11*
+The command-line window is not a normal window.  It is not possible to move to
+another window or edit another buffer.  All commands that would do this are
+disabled in the command-line window.  Of course it _is_ possible to execute
+any command that you entered in the command-line window.
+
+
+CLOSE							*E199*
+
+There are several ways to leave the command-line window:
+
+<CR>		Execute the command-line under the cursor.  Works both in
+		Insert and in Normal mode.
+CTRL-C		Continue in Command-line mode.  The command-line under the
+		cursor is used as the command-line.  Works both in Insert and
+		in Normal mode.  ":close" also works.  There is no redraw,
+		thus the window will remain visible.
+:quit		Discard the command line and go back to Normal mode.
+		":exit", ":xit" and CTRL-\ CTRL-N also work.
+:qall		Quit Vim, unless there are changes in some buffer.
+:qall!		Quit Vim, discarding changes to any buffer.
+
+Once the command-line window is closed the old window sizes are restored.  The
+executed command applies to the window and buffer where the command-line was
+started from.  This works as if the command-line window was not there, except
+that there will be an extra screen redraw.
+The buffer used for the command-line window is deleted.  Any changes to lines
+other than the one that is executed with <CR> are lost.
+
+
+VARIOUS
+
+The command-line window cannot be used:
+- when there already is a command-line window (no nesting)
+- for entering a encryption key or when using inputsecret()
+- when Vim was not compiled with the +vertsplit feature
+
+Some options are set when the command-line window is opened:
+'filetype'	"vim", when editing an Ex command-line; this starts Vim syntax
+		highlighting if it was enabled
+'rightleft'	off
+'modifiable'	on
+'buftype'	"nofile"
+'swapfile'	off
+
+It is allowed to write the buffer contents to a file.  This is an easy way to
+save the command-line history and read it back later.
+
+If the 'wildchar' option is set to <Tab>, and the command-line window is used
+for an Ex command, then two mappings will be added to use <Tab> for completion
+in the command-line window, like this: >
+	:imap <buffer> <Tab> <C-X><C-V>
+	:nmap <buffer> <Tab> a<C-X><C-V>
+Note that hitting <Tab> in Normal mode will do completion on the next
+character.  That way it works at the end of the line.
+If you don't want these mappings, disable them with: >
+	au CmdwinEnter [:>] iunmap <Tab>
+	au CmdwinEnter [:>] nunmap <Tab>
+You could put these lines in your vimrc file.
+
+While in the command-line window you cannot use the mouse to put the cursor in
+another window, or drag statuslines of other windows.  You can drag the
+statusline of the command-line window itself and the statusline above it.
+Thus you can resize the command-line window, but not others.
+
+
+AUTOCOMMANDS
+
+Two autocommand events are used: |CmdwinEnter| and |CmdwinLeave|.  Since this
+window is of a special type, the WinEnter, WinLeave, BufEnter and BufLeave
+events are not triggered.  You can use the Cmdwin events to do settings
+specifically for the command-line window.  Be careful not to cause side
+effects!
+Example: >
+	:au CmdwinEnter :  let b:cpt_save = &cpt | set cpt=v
+	:au CmdwinLeave :  let &cpt = b:cpt_save
+This sets 'complete' to use command-line completion in Insert mode for CTRL-N.
+Another example: >
+	:au CmdwinEnter [/?]  startinsert
+This will make Vim start in Insert mode in the command-line window.
+
+						*cmdwin-char*
+The character used for the pattern indicates the type of command-line:
+	:	normal Ex command
+	>	debug mode command |debug-mode|
+	/	forward search string
+	?	backward search string
+	=	expression for "= |expr-register|
+	@	string for |input()|
+	-	text for |:insert| or |:append|
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/debugger.txt b/runtime/doc/debugger.txt
new file mode 100644
index 0000000..4b1a188
--- /dev/null
+++ b/runtime/doc/debugger.txt
@@ -0,0 +1,135 @@
+*debugger.txt*  For Vim version 7.0aa.  Last change: 2001 Dec 22
+
+
+		  VIM REFERENCE MANUAL    by Gordon Prieur
+
+
+Debugger Support Features				*debugger-support*
+
+1. Debugger Features		|debugger-features|
+2. Vim Compile Options		|debugger-compilation|
+3. Integrated Debuggers		|debugger-integration|
+
+{Vi does not have any of these features}
+
+==============================================================================
+1. Debugger Features					*debugger-features*
+
+The following features are available for an integration with a debugger or
+an Integrated Programming Environment (IPE) or Integrated Development
+Environment (IDE):
+
+	Alternate Command Input				|alt-input|
+	Debug Signs					|debug-signs|
+	Debug Source Highlight				|debug-highlight|
+	Message Footer					|gui-footer|
+	Balloon Evaluation				|balloon-eval|
+
+These features were added specifically for use in the Motif version of gvim.
+However, the |alt-input| and |debug-highlight| were written to be usable in
+both vim and gvim. Some of the other features could be used in the non-GUI
+vim with slight modifications. However, I did not do this nor did I test the
+reliability of building for vim or non Motif GUI versions.
+
+
+1.1 Alternate Command Input				*alt-input*
+
+For Vim to work with a debugger there must be at least an input connection
+with a debugger or external tool. In many cases there will also be an output
+connection but this isn't absolutely necessary.
+
+The purpose of the input connection is to let the external debugger send
+commands to Vim. The commands sent by the debugger should give the debugger
+enough control to display the current debug environment and state.
+
+The current implementation is based on the X Toolkit dispatch loop and the
+XtAddInput() function call.
+
+
+1.2 Debug Signs						*debug-signs*
+
+Many debuggers mark specific lines by placing a small sign or color highlight
+on the line. The |:sign| command lets the debugger set this graphic mark. Some
+examples where this feature would be used would be a debugger showing an arrow
+representing the Program Counter (PC) of the program being debugged. Another
+example would be a small stop sign for a line with a breakpoint. These visible
+highlights let the user keep track of certain parts of the state of the
+debugger.
+
+This feature can be used with more than debuggers, too. An IPE can use a sign
+to highlight build errors, searched text, or other things. The sign feature
+can also work together with the |debug-highlight| to ensure the mark is
+highly visible.
+
+Debug signs are defined and placed using the |:sign| command.
+
+
+1.3 Debug Source Highlight				*debug-highlight*
+
+This feature allows a line to have a predominant highlight. The highlight is
+intended to make a specific line stand out. The highlight could be made to
+work for both vim and gvim, whereas the debug sign is, in most cases, limited
+to gvim. The one exception to this is Sun Microsystem's dtterm. The dtterm
+from Sun has a "sign gutter" for showing signs.
+
+
+1.4 Message Footer					*gui-footer*
+
+The message footer can be used to display messages from a debugger or IPE. It
+can also be used to display menu and toolbar tips. The footer area is at the
+bottom of the GUI window, below the line used to display colon commands.
+
+The display of the footer is controlled by the 'guioptions' letter 'F'.
+
+
+1.5 Balloon Evaluation					*balloon-eval*
+
+This feature allows a debugger, or other external tool, to display dynamic
+information based on where the mouse is pointing. The purpose of this feature
+was to allow Sun's Visual WorkShop debugger to display expression evaluations.
+However, the feature was implemented in as general a manner as possible and
+could be used for displaying other information as well.
+
+The Balloon Evaluation has some settable parameters too.  The font list and
+colors can be set via X resources (XmNballoonEvalFontList,
+XmNballoonEvalBackground, and XmNballoonEvalForeground).
+The 'balloondelay' option sets the delay before an attempt is made to show a
+balloon.
+The 'ballooneval' option needs to be set to switch it on.
+
+Balloon evaluation is only available when compiled with the |+balloon_eval|
+and |+sun_workshop| features.
+
+The Balloon evaluation functions are also used to show a tooltip for the
+toolbar.  The 'ballooneval' option does not need to be set for this.  But the
+other settings apply.
+
+==============================================================================
+2. Vim Compile Options					*debugger-compilation*
+
+The debugger features were added explicitly for use with Sun's Visual
+WorkShop Integrated Programming Environment (ipe). However, they were done
+in as generic a manner as possible so that integration with other debuggers
+could also use some or all of the tools used with Sun's ipe.
+
+The following compile time preprocessor variables control the features:
+
+    Alternate Command Input			ALT_X_INPUT
+    Debug Glyphs				FEAT_SIGNS
+    Debug Highlights				FEAT_SIGNS
+    Message Footer				FEAT_FOOTER
+    Balloon Evaluation				FEAT_BEVAL
+
+The first integration with a full IPE/IDE was with Sun Visual WorkShop. To
+compile a gvim which interfaces with VWS set the following flag, which sets
+all the above flags:
+
+    Sun Visual WorkShop				FEAT_SUN_WORKSHOP
+
+==============================================================================
+3. Integrated Debuggers					*debugger-integration*
+
+Currently the only fully integrated debugger/IPE/IDE is Sun's Visual WorkShop
+Integrated Programming Environment.
+
+ vim:tw=78:sw=4:ts=8:ft=help:norl:
diff --git a/runtime/doc/develop.txt b/runtime/doc/develop.txt
new file mode 100644
index 0000000..6e4f4e3
--- /dev/null
+++ b/runtime/doc/develop.txt
@@ -0,0 +1,384 @@
+*develop.txt*   For Vim version 7.0aa.  Last change: 2004 Jan 17
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Development of Vim.					*development*
+
+This text is important for those who want to be involved in further developing
+Vim.
+
+1. Design goals		|design-goals|
+2. Coding style		|coding-style|
+3. Design decisions	|design-decisions|
+4. Assumptions		|design-assumptions|
+
+See the file README.txt in the "src" directory for an overview of the source
+code.
+
+Vim is open source software.  Everybody is encouraged to contribute to help
+improving Vim.  For sending patches a context diff "diff -c" is preferred.
+Also see http://www.vim.org/tips/tip.php?tip_id=618.
+
+==============================================================================
+1. Design goals						*design-goals*
+
+Most important things come first (roughly).
+
+Note that quite a few items are contradicting.  This is intentional.  A
+balance must be found between them.
+
+
+VIM IS... VI COMPATIBLE					*design-compatible*
+
+First of all, it should be possible to use Vim as a drop-in replacement for
+Vi.  When the user wants to, he can use Vim in compatible mode and hardly
+notice any difference with the original Vi.
+
+Exceptions:
+- We don't reproduce obvious Vi bugs in Vim.
+- There are different versions of Vi.  I am using Version 3.7 (6/7/85) as a
+  reference.  But support for other versions is also included when possible.
+  The Vi part of POSIX is not considered a definitive source.
+- Vim adds new commands, you cannot rely on some command to fail because it
+  didn't exist in Vi.
+- Vim will have a lot of features that Vi doesn't have.  Going back from Vim
+  to Vi will be a problem, this cannot be avoided.
+- Some things are hardly ever used (open mode, sending an e-mail when
+  crashing, etc.).  Those will only be included when someone has a good reason
+  why it should be included and it's not too much work.
+- For some items it is debatable whether Vi compatibility should be
+  maintained.  There will be an option flag for these.
+
+
+VIM IS... IMPROVED					*design-improved*
+
+The IMproved bits of Vim should make it a better Vi, without becoming a
+completely different editor.  Extensions are done with a "Vi spirit".
+- Use the keyboard as much as feasible.  The mouse requires a third hand,
+  which we don't have.  Many terminals don't have a mouse.
+- When the mouse is used anyway, avoid the need to switch back to the
+  keyboard.  Avoid mixing mouse and keyboard handling.
+- Add commands and options in a consistent way.  Otherwise people will have a
+  hard time finding and remembering them.  Keep in mind that more commands and
+  options will be added later.
+- A feature that people do not know about is a useless feature.  Don't add
+  obscure features, or at least add hints in documentation that they exists.
+- Minimize using CTRL and other modifiers, they are more difficult to type.
+- There are many first-time and inexperienced Vim users.  Make it easy for
+  them to start using Vim and learn more over time.
+- There is no limit to the features that can be added.  Selecting new features
+  is one based on (1) what users ask for, (2) how much effort it takes to
+  implement and (3) someone actually implementing it.
+
+
+VIM IS... MULTI PLATFORM				*design-multi-platform*
+
+Vim tries to help as many users on as many platforms as possible.
+- Support many kinds of terminals.  The minimal demands are cursor positioning
+  and clear-screen.  Commands should only use key strokes that most keyboards
+  have.  Support all the keys on the keyboard for mapping.
+- Support many platforms.  A condition is that there is someone willing to do
+  Vim development on that platform, and it doesn't mean messing up the code.
+- Support many compilers and libraries.  Not everybody is able or allowed to
+  install another compiler or GUI library.
+- People switch from one platform to another, and from GUI to terminal
+  version.  Features should be present in all versions, or at least in as many
+  as possible with a reasonable effort.  Try to avoid that users must switch
+  between platforms to accomplish their work efficiently.
+- That a feature is not possible on some platforms, or only possible on one
+  platform, does not mean it cannot be implemented.  [This intentionally
+  contradicts the previous item, these two must be balanced.]
+
+
+VIM IS... WELL DOCUMENTED				*design-documented*
+
+- A feature that isn't documented is a useless feature.  A patch for a new
+  feature must include the documentation.
+- Documentation should be comprehensive and understandable.  Using examples is
+  recommended.
+- Don't make the text unnecessarily long.  Less documentation means that an
+  item is easier to find.
+
+
+VIM IS... HIGH SPEED AND SMALL IN SIZE			*design-speed-size*
+
+Using Vim must not be a big attack on system resources.  Keep it small and
+fast.
+- Computers are becoming faster and bigger each year.  Vim can grow too, but
+  no faster than computers are growing.  Keep Vim usable on older systems.
+- Many users start Vim from a shell very often.  Startup time must be short.
+- Commands must work efficiently.  The time they consume must be as small as
+  possible.  Useful commands may take longer.
+- Don't forget that some people use Vim over a slow connection.  Minimize the
+  communication overhead.
+- Items that add considerably to the size and are not used by many people
+  should be a feature that can be disabled.
+- Vim is a component among other components.  Don't turn it into a massive
+  application, but have it work well together with other programs.
+
+
+VIM IS... MAINTAINABLE					*design-maintain*
+
+- The source code should not become a mess.  It should be reliable code.
+- Use the same layout in all files to make it easy to read |coding-style|.
+- Use comments in a useful way!
+- Porting to another platform should be made easy, without having to change
+  too much platform-independent code.
+- Use the object-oriented spirit: Put data and code together.  Minimize the
+  knowledge spread to other parts of the code.
+
+
+VIM IS... FLEXIBLE					*design-flexible*
+
+Vim should make it easy for users to work in their preferred styles rather
+than coercing its users into particular patterns of work.  This can be for
+items with a large impact (e.g., the 'compatible' option) or for details.  The
+defaults are carefully chosen such that most users will enjoy using Vim as it
+is.  Commands and options can be used to adjust Vim to the desire of the user
+and its environment.
+
+
+VIM IS... NOT						*design-not*
+
+- Vim is not a shell or an Operating System.  You will not be able to run a
+  shell inside Vim or use it to control a debugger.  This should work the
+  other way around: Use Vim as a component from a shell or in an IDE.
+  A satirical way to say this: "Unlike Emacs, Vim does not attempt to include
+  everything but the kitchen sink, but some people say that you can clean one
+  with it.  ;-)"
+- Vim is not a fancy GUI editor that tries to look nice at the cost of
+  being less consistent over all platforms.  But functional GUI features are
+  welcomed.
+
+==============================================================================
+2. Coding style						*coding-style*
+
+These are the rules to use when making changes to the Vim source code.  Please
+stick to these rules, to keep the sources readable and maintainable.
+
+This list is not complete.  Look in the source code for more examples.
+
+
+MAKING CHANGES						*style-changes*
+
+The basic steps to make changes to the code:
+1. Adjust the documentation.  Doing this first gives you an impression of how
+   your changes affect the user.
+2. Make the source code changes.
+3. Check ../doc/todo.txt if the change affects any listed item.
+4. Make a patch with "diff -c" against the unmodified code and docs.
+5. Make a note about what changed and include it with the patch.
+
+
+USE OF COMMON FUNCTIONS					*style-functions*
+
+Some functions that are common to use, have a special Vim version.  Always
+consider using the Vim version, because they were introduced with a reason.
+
+NORMAL NAME	VIM NAME	DIFFERENCE OF VIM VERSION
+free()		vim_free()	Checks for freeing NULL
+malloc()	alloc()		Checks for out of memory situation
+malloc()	lalloc()	Like alloc(), but has long argument
+strcpy()	STRCPY()	Includes cast to (char *), for char_u * args
+strchr()	vim_strchr()	Accepts special characters
+strrchr()	vim_strrchr()	Accepts special characters
+isspace()	vim_isspace()	Can handle characters > 128
+iswhite()	vim_iswhite()	Only TRUE for Tab and space
+memcpy()	vim_memmove()	Handles overlapped copies
+bcopy()		vim_memmove()	Handles overlapped copies
+memset()	vim_memset()	Uniform for all systems
+
+
+NAMES							*style-names*
+
+Function names can not be more than 31 characters long (because of VMS).
+
+Don't use "delete" as a variable name, C++ doesn't like it.
+
+Because of the requirement that Vim runs on as many systems as possible, we
+need to avoid using names that are already defined by the system.  This is a
+list of names that are known to cause trouble.  The name is given as a regexp
+pattern.
+
+is.*()		POSIX, ctype.h
+to.*()		POSIX, ctype.h
+
+d_.*		POSIX, dirent.h
+l_.*		POSIX, fcntl.h
+gr_.*		POSIX, grp.h
+pw_.*		POSIX, pwd.h
+sa_.*		POSIX, signal.h
+mem.*		POSIX, string.h
+str.*		POSIX, string.h
+wcs.*		POSIX, string.h
+st_.*		POSIX, stat.h
+tms_.*		POSIX, times.h
+tm_.*		POSIX, time.h
+c_.*		POSIX, termios.h
+MAX.*		POSIX, limits.h
+__.*		POSIX, system
+_[A-Z].*	POSIX, system
+E[A-Z0-9]*	POSIX, errno.h
+
+*_t		POSIX, for typedefs.  Use *_T instead.
+
+wait		don't use as argument to a function, conflicts with types.h
+index		shadows global declaration
+time		shadows global declaration
+new		C++ reserved keyword
+try		Borland C++ doesn't like it to be used as a variable.
+
+basename()	GNU string function
+dirname()	GNU string function
+get_env_value()	Linux system function
+
+
+VARIOUS							*style-various*
+
+Typedef'ed names should end in "_t": >
+    typedef int some_t;
+Define'ed names should be uppercase: >
+    #define SOME_THING
+Features always start with "FEAT_": >
+    #define FEAT_FOO
+
+Don't use '\"', some compilers can't handle it.  '"' works fine.
+
+Don't use:
+    #if HAVE_SOME
+Some compilers can't handle that and complain that "HAVE_SOME" is not defined.
+Use
+    #ifdef HAVE_SOME
+or
+    #if defined(HAVE_SOME)
+
+
+STYLE							*style-examples*
+
+General rule: One statement per line.
+
+Wrong:	    if (cond) a = 1;
+
+OK:	    if (cond)
+		a = 1;
+
+Wrong:	    while (cond);
+
+OK:	    while (cond)
+		;
+
+Wrong:	    do a = 1; while (cond);
+
+OK:	    do
+		a = 1;
+	    while (cond);
+
+
+Functions start with:
+
+Wrong:	int function_name(int arg1, int arg2)
+
+OK:	/*
+	 * Explanation of what this function is used for.
+	 *
+	 * Return value explanation.
+	 */
+	    int
+	function_name(arg1, arg2)
+	    int		arg1;		/* short comment about arg1 */
+	    int		arg2;		/* short comment about arg2 */
+	{
+	    int		local;		/* comment about local */
+
+	    local = arg1 * arg2;
+
+NOTE: Don't use ANSI style function declarations.  A few people still have to
+use a compiler that doesn't support it.
+
+
+SPACES AND PUNCTUATION					*style-spaces*
+
+No space between a function name and the bracket:
+
+Wrong:  func (arg);
+OK:	func(arg);
+
+Do use a space after if, while, switch, etc.
+
+Wrong:	if(arg)		for(;;)
+OK:	if (arg)	for (;;)
+
+Use a space after a comma and semicolon:
+
+Wrong:  func(arg1,arg2);	for (i = 0;i < 2;++i)
+OK:	func(arg1, arg2);	for (i = 0; i < 2; ++i)
+
+Use a space before and after '=', '+', '/', etc.
+
+Wrong:	var=a*5;
+OK:	var = a * 5;
+
+In general: Use empty lines to group lines of code together.  Put a comment
+just above the group of lines.  This makes it more easy to quickly see what is
+being done.
+
+OK:	/* Prepare for building the table. */
+	get_first_item();
+	table_idx = 0;
+
+	/* Build the table */
+	while (has_item())
+	    table[table_idx++] = next_item();
+
+	/* Finish up. */
+	cleanup_items();
+	generate_hash(table);
+
+==============================================================================
+3. Design decisions					*design-decisions*
+
+Folding
+
+Several forms of folding should be possible for the same buffer.  For example,
+have one window that shows the text with function bodies folded, another
+window that shows a function body.
+
+Folding is a way to display the text.  It should not change the text itself.
+Therefore the folding has been implemented as a filter between the text stored
+in a buffer (buffer lines) and the text displayed in a window (logical lines).
+
+
+Naming the window
+
+The word "window" is commonly used for several things: A window on the screen,
+the xterm window, a window inside Vim to view a buffer.
+To avoid confusion, other items that are sometimes called window have been
+given another name.  Here is an overview of the related items:
+
+screen		The whole display.  For the GUI it's something like 1024x768
+		pixels.  The Vim shell can use the whole screen or part of it.
+shell		The Vim application.  This can cover the whole screen (e.g.,
+		when running in a console) or part of it (xterm or GUI).
+window		View on a buffer.  There can be several windows in Vim,
+		together with the command line, menubar, toolbar, etc. they
+		fit in the shell.
+
+
+To be continued...
+
+==============================================================================
+4. Assumptions						*design-assumptions*
+
+Size of variables:
+char	    8 bit signed
+char_u	    8 bit unsigned
+int	    16, 32 or 64 bit signed
+unsigned    16, 32 or 64 bit unsigned
+long	    32 or 64 bit signed, can hold a pointer
+
+Note that some compilers cannot handle long lines or strings.  The C89
+standard specifies a limit of 509 characters.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
new file mode 100644
index 0000000..1020723
--- /dev/null
+++ b/runtime/doc/diff.txt
@@ -0,0 +1,371 @@
+*diff.txt*      For Vim version 7.0aa.  Last change: 2004 May 01
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+				*diff* *vimdiff* *gvimdiff* *diff-mode*
+This file describes the +diff feature: Showing differences between two or
+three versions of the same file.
+
+The basics are explained in section |08.7| of the user manual.
+
+1. Starting diff mode		|vimdiff|
+2. Viewing diffs		|view-diffs|
+3. Jumping to diffs		|jumpto-diffs|
+4. Copying diffs		|copy-diffs|
+5. Diff options			|diff-options|
+
+{not in Vi}
+
+==============================================================================
+1. Starting diff mode
+
+The easiest way to start editing in diff mode is with the "vimdiff" command.
+This starts Vim as usual, and additionally sets up for viewing the differences
+between the arguments. >
+
+	vimdiff file1 file2 [file3 [file4]]
+
+This is equivalent to: >
+
+	vim -d file1 file2 [file3 [file4]]
+
+You may also use "gvimdiff" or "vim -d -g".  The GUI is started then.
+You may also use "viewdiff" or "gviewdiff".  Vim starts in readonly mode then.
+"r" may be prepended for restricted mode (see |-Z|).
+
+The second and following arguments may also be a directory name.  Vim will
+then append the file name of the first argument to the directory name to find
+the file.
+
+This only works when a standard "diff" command is available.  See 'diffexpr'.
+
+What happens is that Vim opens a window for each of the files.  This is like
+using the |-O| argument.  This uses vertical splits.  If you prefer horizontal
+splits add the |-o| argument: >
+
+	vimdiff -o file1 file2 [file3]
+
+In each of the edited files these options are set:
+
+	'diff'		on
+	'scrollbind'	on
+	'scrollopt'	includes "hor"
+	'wrap'		off
+	'foldmethod'	"diff"
+	'foldcolumn'	2
+
+These options are set local to the window.  When editing another file they are
+reset to the global value.
+
+The differences shown are actually the differences in the buffer.  Thus if you
+make changes after loading a file, these will be included in the displayed
+diffs.  You might have to do ":diffupdate" now and then, not all changes are
+immediately taken into account.
+
+In your .vimrc file you could do something special when Vim was started in
+diff mode.  You could use a construct like this: >
+
+	if &diff
+	   setup for diff mode
+	else
+	   setup for non-diff mode
+	endif
+
+While already in Vim you can start diff mode in three ways.
+
+							*E98*
+:diffsplit {filename}					*:diffs* *:diffsplit*
+		Open a new window on the file {filename}.  The options are set
+		as for "vimdiff" for the current and the newly opened window.
+		Also see 'diffexpr'.
+
+							*:difft* *:diffthis*
+:diffthis	Make the current window part of the diff windows.  This sets
+		the option like for "vimdiff".
+
+:diffpatch {patchfile}					*:diffp* *:diffpatch*
+		Use the current buffer, patch it with the diff found in
+		{patchfile} and open a buffer on the result.  The options are
+		set as for "vimdiff".
+		{patchfile} can be in any format that the "patch" program
+		understands or 'patchexpr' can handle.
+		Note that {patchfile} should only contain a diff for one file,
+		the current file.  If {patchfile} contains diffs for other
+		files as well, the results are unpredictable.  Vim changes
+		directory to /tmp to avoid files in the current directory
+		accidentally being patched.  But it may still result in
+		various ".rej" files to be created.  And when absolute path
+		names are present these files may get patched anyway.
+
+To make these commands use a vertical split, prepend |:vertical|.  Examples: >
+
+	:vert diffsplit main.c~
+	:vert diffpatch /tmp/diff
+<
+							*E96*
+There can be up to four buffers with 'diff' set.
+
+Since the option values are remembered with the buffer, you can edit another
+file for a moment and come back to the same file and be in diff mode again.
+If you don't want diff mode, reset the 'diff' option.  And you probably want
+to get rid of the fold column: >
+
+	:set nodiff foldcolumn=0
+
+==============================================================================
+2. Viewing diffs						*view-diffs*
+
+The effect is that the diff windows show the same text, with the differences
+highlighted.  When scrolling the text, the 'scrollbind' option will make the
+text in other windows to be scrolled as well.  With vertical splits the text
+should be aligned properly.
+
+The alignment of text will go wrong when:
+- 'wrap' is on, some lines will be wrapped and occupy two or more screen
+  lines
+- folds are open in one window but not another
+- 'scrollbind' is off
+- changes have been made to the text
+- "filler" is not present in 'diffopt', deleted/inserted lines makes the
+  alignment go wrong
+
+All the buffers edited in a window where the 'diff' option is set will join in
+the diff.  This is also possible for hidden buffers.  They must have been
+edited in a window first for this to be possible.
+
+Since 'diff' is a window-local option, it's possible to view the same buffer
+in diff mode in one window and "normal" in another window.  It is also
+possible to view the changes you have made to a buffer, but since Vim doesn't
+allow having two buffers for the same file, you need to make a copy of the
+original file and diff with that.  For example: >
+	:!cp % tempfile
+	:diffsplit tempfile
+
+A buffer that is unloaded cannot be used for the diff.  But it does work for
+hidden buffers.  You can use ":hide" to close a window without unloading the
+buffer.
+
+
+							*:diffu* *:diffupdate*
+Vim attempts to keep the differences updated when you make changes to the
+text.  This mostly takes care of inserted and deleted lines.  Changes within a
+line and more complicated changes do not cause the differences to be updated.
+To force the differences to be updated use: >
+
+	:diffupdate
+
+
+Vim will show filler lines for lines that are missing in one window but are
+present in another.  These lines were inserted in another file or deleted in
+this file.  Removing "filler" from the 'diffopt' option will make Vim not
+display these filler lines.
+
+
+Folds are used to hide the text that wasn't changed.  See |folding| for all
+the commands that can be used with folds.
+
+The context of lines above a difference that are not included in the fold can
+be set with the 'diffopt' option.  For example, to set the context to three
+lines: >
+
+	:set diffopt=filler,context:3
+
+
+The diffs are highlighted with these groups:
+
+|hl-DiffAdd|	DiffAdd		Added (inserted) lines.  These lines exist in
+				this buffer but not in another.
+|hl-DiffChange|	DiffChange	Changed lines.
+|hl-DiffText|	DiffText	Changed text inside a Changed line.  Vim
+				finds the first character that is different,
+				and the last character that is different
+				(searching from the end of the line).  The
+				text in between is highlighted.  This means
+				that parts in the middle that are still the
+				same are highlighted anyway.
+|hl-DiffDelete| DiffDelete	Deleted lines.  Also called filler lines,
+				because they don't really exist in this
+				buffer.
+
+==============================================================================
+3. Jumping to diffs					*jumpto-diffs*
+
+Two commands can be used to jump to diffs:
+								*[c*
+	[c		Jump backwards to the previous start of a change.
+			When a count is used, do it that many times.
+								*]c*
+	]c		Jump forwards to the next start of a change.
+			When a count is used, do it that many times.
+
+It is an error if there is no change for the cursor to move to.
+
+==============================================================================
+4. Diff copying			*copy-diffs* *E99* *E100* *E101* *E102* *E103*
+
+There are two commands to copy text from one buffer to another.  The result is
+that the buffers will be equal within the specified range.
+
+							*:diffg* *:diffget*
+:[range]diffg[et] [bufspec]
+		Modify the current buffer to undo difference with another
+		buffer.  If [bufspec] is given, that buffer is used.
+		Otherwise this only works if there is one other buffer in diff
+		mode.
+		See below for [range].
+
+							*:diffpu* *:diffput*
+:[range]diffpu[t] [bufspec]
+		Modify another buffer to undo difference with the current
+		buffer.  Just like ":diffget" but the other buffer is modified
+		instead of the current one.
+		See below for [range].
+
+							*do*
+do		Same as ":diffget" without argument or range.  The "o" stands
+		for "obtain" ("dg" can't be used, it could be the start of
+		"dgg"!).
+
+							*dp*
+dp		Same as ":diffput" without argument or range.
+
+When no [range] is given, the diff at the cursor position or just above it is
+affected.  When [range] is used, Vim tries to only put or get the specified
+lines.  When there are deleted lines, this may not always be possible.
+
+There can be deleted lines below the last line of the buffer.  When the cursor
+is on the last line in the buffer and there is no diff above this line, the
+":diffget" and "do" commands will obtain lines from the other buffer.
+
+To be able to get those lines from another buffer in a [range] it's allowed to
+use the last line number plus one.  This command gets all diffs from the other
+buffer: >
+
+	:1,$+1diffget
+
+Note that deleted lines are displayed, but not counted as text lines.  You
+can't move the cursor into them.  To fill the deleted lines with the lines
+from another buffer use ":diffget" on the line below them.
+
+The [bufspec] argument above can be a buffer number, a pattern for a buffer
+name or a part of a buffer name.  Examples:
+
+	:diffget		Use the other buffer which is in diff mode
+	:diffget 3		Use buffer 3
+	:diffget v2		Use the buffer which matches "v2" and is in
+				diff mode (e.g., "file.c.v2")
+
+==============================================================================
+5. Diff options						*diff-options*
+
+Also see |'diffopt'| and the "diff" item of |'fillchars'|.
+
+
+FINDING THE DIFFERENCES					*diff-diffexpr*
+
+The 'diffexpr' option can be set to use something else than the standard
+"diff" program to compare two files and find the differences.
+
+When 'diffexpr' is empty, Vim uses this command to find the differences
+between file1 and file2: >
+
+	diff file1 file2 > outfile
+
+The ">" is replaced with the value of 'shellredir'.
+
+The output of "diff" must be a normal "ed" style diff.  Do NOT use a context
+diff.  This example explains the format that Vim expects: >
+
+	1a2
+	> bbb
+	4d4
+	< 111
+	7c7
+	< GGG
+	---
+	> ggg
+
+The "1a2" item appends the line "bbb".
+The "4d4" item deletes the line "111".
+The '7c7" item replaces the line "GGG" with "ggg".
+
+When 'diffexpr' is not empty, Vim evaluates to obtain a diff file in the
+format mentioned.  These variables are set to the file names used:
+
+	v:fname_in		original file
+	v:fname_new		new version of the same file
+	v:fname_out		resulting diff file
+
+Additionally, 'diffexpr' should take care of "icase" and "iwhite" in the
+'diffopt' option.  'diffexpr' cannot change the value of 'lines' and
+'columns'.
+
+Example (this does almost the same as 'diffexpr' being empty): >
+
+	set diffexpr=MyDiff()
+	function MyDiff()
+	   let opt = ""
+	   if &diffopt =~ "icase"
+	     let opt = opt . "-i "
+	   endif
+	   if &diffopt =~ "iwhite"
+	     let opt = opt . "-b "
+	   endif
+	   silent execute "!diff -a --binary " . opt . v:fname_in . " " . v:fname_new .
+		\  " > " . v:fname_out
+	endfunction
+
+The "-a" argument is used to force comparing the files as text, comparing as
+binaries isn't useful.  The "--binary" argument makes the files read in binary
+mode, so that a CTRL-Z doesn't end the text on DOS.
+
+						*E97*
+Vim will do a test if the diff output looks alright.  If it doesn't, you will
+get an error message.  Possible causes:
+-  The "diff" program cannot be executed.
+-  The "diff" program doesn't produce normal "ed" style diffs (see above).
+-  The 'shell' and associated options are not set correctly.  Try if filtering
+   works with a command like ":!sort".
+-  You are using 'diffexpr' and it doesn't work.
+If it's not clear what the problem is set the 'verbose' option to see more
+messages.
+
+
+USING PATCHES					*diff-patchexpr*
+
+The 'patchexpr' option can be set to use something else than the standard
+"patch" program.
+
+When 'patchexpr' is empty, Vim will call the "patch" program like this: >
+
+	patch -o outfile origfile < patchfile
+
+This should work fine with most versions of the "patch" program.  Note that a
+CR in the middle of a line may cause problems, it is seen as a line break.
+
+If the default doesn't work for you, set the 'patchexpr' to an expression that
+will have the same effect.  These variables are set to the file names used:
+
+	v:fname_in		original file
+	v:fname_diff		patch file
+	v:fname_out		resulting patched file
+
+Example (this does the same as 'patchexpr' being empty): >
+
+	let patchexpr=MyPatch
+	function MyPatch
+	   :call system("patch -o " . v:fname_out . " " . v:fname_in .
+	   \  " < " . v:fname_diff)
+	endfunction
+
+Make sure that using the "patch" program doesn't have unwanted side effects.
+For example, watch out for additionally generated files, which should be
+deleted.  It should just patch the file and nothing else.
+   Vim will change directory to "/tmp" or another temp directory before
+evaluating 'patchexpr'.  This hopefully avoids that files in the current
+directory are accidentally patched.  Vim will also delete files starting with
+v:fname_in and ending in ".rej" and ".orig".
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/digraph.txt b/runtime/doc/digraph.txt
new file mode 100644
index 0000000..529b30d
--- /dev/null
+++ b/runtime/doc/digraph.txt
@@ -0,0 +1,322 @@
+*digraph.txt*   For Vim version 7.0aa.  Last change: 2001 Sep 03
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Digraphs						*digraphs* *Digraphs*
+
+Digraphs are used to enter characters that normally cannot be entered by
+an ordinary keyboard.  These are mostly accented characters which have the
+eighth bit set.  The digraphs are easier to remember than the decimal number
+that can be entered with CTRL-V (see |i_CTRL-V|).
+
+There is a brief introduction on digraphs in the user manual: |24.9|
+An alternative is using the 'keymap' option.
+
+1. Defining digraphs	|digraphs-define|
+2. Using digraphs	|digraphs-use|
+3. Default digraphs	|digraphs-default|
+
+{Vi does not have any of these commands}
+
+==============================================================================
+1. Defining digraphs					*digraphs-define*
+
+						*:dig* *:digraphs*
+:dig[raphs]		show currently defined digraphs.
+							*E104* *E39*
+:dig[raphs] {char1}{char2} {number} ...
+			Add digraph {char1}{char2} to the list.  {number} is
+			the decimal representation of the character.
+			Example: >
+	:digr e: 235 a: 228
+<			Avoid defining a digraph with '_' (underscore) as the
+			first character, it has a special meaning in the
+			future.
+
+Vim is normally compiled with the |+digraphs| feature.  If the feature is
+disabled, the ":digraph" command will display an error message.
+
+Example of the output of ":digraphs": >
+ TH Þ  222  ss ß  223  a! à  224  a' á  225  a> â  226  a? ã  227  a: ä  228
+
+The first two characters in each column are the characters you have to type to
+enter the digraph.
+
+In the middle of each column is the resulting character.  This may be mangled
+if you look at it on a system that does not support digraphs or if you print
+this file.
+
+The decimal number is the number of the character.
+
+==============================================================================
+2. Using digraphs					*digraphs-use*
+
+There are two methods to enter digraphs:			*i_digraph*
+	CTRL-K {char1} {char2}		or
+	{char1} <BS> {char2}
+The first is always available; the second only when the 'digraph' option is
+set.
+
+If a digraph with {char1}{char2} does not exist, Vim searches for a digraph
+{char2}{char1}.  This helps when you don't remember which character comes
+first.
+
+Note that when you enter CTRL-K {char1}, where {char1} is a special key, Vim
+enters the code for that special key.  This is not a digraph.
+
+Once you have entered the digraph, Vim treats the character like a normal
+character that occupies only one character in the file and on the screen.
+Example: >
+	'B' <BS> 'B'	will enter the broken '|' character (166)
+	'a' <BS> '>'	will enter an 'a' with a circumflex (226)
+	CTRL-K '-' '-'	will enter a soft hyphen (173)
+
+The current digraphs are listed with the ":digraphs" command.  Some of the
+default ones are listed below |digraph-table|.
+
+For CTRL-K, there is one general digraph: CTRL-K <Space> {char} will enter
+{char} with the highest bit set.  You can use this to enter meta-characters.
+
+The <Esc> character cannot be part of a digraph.  When hitting <Esc>, Vim
+stops digraph entry and ends Insert mode or Command-line mode, just like
+hitting an <Esc> out of digraph context.  Use CTRL-V 155 to enter meta-ESC
+(CSI).
+
+If you accidentally typed an 'a' that should be an 'e', you will type 'a' <BS>
+'e'.  But that is a digraph, so you will not get what you want.  To correct
+this, you will have to type <BS> e again.  To avoid this don't set the
+'digraph' option and use CTRL-K to enter digraphs.
+
+You may have problems using Vim with characters which have an ASCII value
+above 128.  For example: You insert ue (u-umlaut) and the editor echoes \334
+in Insert mode.  After leaving the Insert mode everything is fine.  Note that
+fmt removes all characters with ASCII codes above 128 from the text being
+formatted.  On some Unix systems this means you have to define the
+environment-variable LC_CTYPE.  If you are using csh, then put the following
+line in your .cshrc: >
+	setenv LC_CTYPE iso_8859_1
+
+==============================================================================
+3. Default digraphs					*digraphs-default*
+
+Vim comes with a set of default digraphs.  Check the output of ":digraphs" to
+see them.
+
+On most systems Vim uses the same digraphs.  They work for the Unicode and
+ISO-8859-1 character sets.  These default digraphs are taken from the RFC1345
+mnemonics.  To make it easy to remember the mnemonic, the second character has
+a standard meaning:
+
+	char name		char	meaning ~
+	Exclamation mark	!	Grave
+	Apostrophe		'	Acute accent
+	Greater-Than sign	>	Circumflex accent
+	Question Mark		?	tilde
+	Hyphen-Minus		-	Macron
+	Left parenthesis	(	Breve
+	Full Stop		.	Dot Above
+	Colon			:	Diaeresis
+	Comma			,	Cedilla
+	Underline		_	Underline
+	Solidus			/	Stroke
+	Quotation mark		"	Double acute accent
+	Semicolon		;	Ogonek
+	Less-Than sign		<	Caron
+	Zero			0	Ring above
+	Two			2	Hook
+	Nine			9	Horn
+
+	Equals			=	Cyrillic
+	Asterisk		*	Greek
+	Percent sign		%	Greek/Cyrillic special
+	Plus			+	smalls: Arabic, capitals: Hebrew
+	Three			3	some Latin/Greek/Cyrillic letters
+	Four			4	Bopomofo
+	Five			5	Hiragana
+	Six			6	Katakana
+
+Example: a: is ä  and o: is ö
+
+These are the RFC1345 digraphs for the one-byte characters.  See the output of
+":digraphs" for the others.  The characters above 255 are only available when
+Vim was compiled with the |+multi_byte| feature.
+							*digraph-table*
+char  digraph	hex	dec	official name ~
+^@	NU	0x00	  0	NULL (NUL)
+^A	SH	0x01	  1	START OF HEADING (SOH)
+^B	SX	0x02	  2	START OF TEXT (STX)
+^C	EX	0x03	  3	END OF TEXT (ETX)
+^D	ET	0x04	  4	END OF TRANSMISSION (EOT)
+^E	EQ	0x05	  5	ENQUIRY (ENQ)
+^F	AK	0x06	  6	ACKNOWLEDGE (ACK)
+^G	BL	0x07	  7	BELL (BEL)
+^H	BS	0x08	  8	BACKSPACE (BS)
+^I	HT	0x09	  9	CHARACTER TABULATION (HT)
+^@	LF	0x0a	 10	LINE FEED (LF)
+^K	VT	0x0b	 11	LINE TABULATION (VT)
+^L	FF	0x0c	 12	FORM FEED (FF)
+^M	CR	0x0d	 13	CARRIAGE RETURN (CR)
+^N	SO	0x0e	 14	SHIFT OUT (SO)
+^O	SI	0x0f	 15	SHIFT IN (SI)
+^P	DL	0x10	 16	DATALINK ESCAPE (DLE)
+^Q	D1	0x11	 17	DEVICE CONTROL ONE (DC1)
+^R	D2	0x12	 18	DEVICE CONTROL TWO (DC2)
+^S	D3	0x13	 19	DEVICE CONTROL THREE (DC3)
+^T	D4	0x14	 20	DEVICE CONTROL FOUR (DC4)
+^U	NK	0x15	 21	NEGATIVE ACKNOWLEDGE (NAK)
+^V	SY	0x16	 22	SYNCRONOUS IDLE (SYN)
+^W	EB	0x17	 23	END OF TRANSMISSION BLOCK (ETB)
+^X	CN	0x18	 24	CANCEL (CAN)
+^Y	EM	0x19	 25	END OF MEDIUM (EM)
+^Z	SB	0x1a	 26	SUBSTITUTE (SUB)
+^[	EC	0x1b	 27	ESCAPE (ESC)
+^\	FS	0x1c	 28	FILE SEPARATOR (IS4)
+^]	GS	0x1d	 29	GROUP SEPARATOR (IS3)
+^^	RS	0x1e	 30	RECORD SEPARATOR (IS2)
+^_	US	0x1f	 31	UNIT SEPARATOR (IS1)
+	SP	0x20	 32	SPACE
+#	Nb	0x23	 35	NUMBER SIGN
+$	DO	0x24	 36	DOLLAR SIGN
+@	At	0x40	 64	COMMERCIAL AT
+[	<(	0x5b	 91	LEFT SQUARE BRACKET
+\	//	0x5c	 92	REVERSE SOLIDUS
+]	)>	0x5d	 93	RIGHT SQUARE BRACKET
+^	'>	0x5e	 94	CIRCUMFLEX ACCENT
+`	'!	0x60	 96	GRAVE ACCENT
+{	(!	0x7b	123	LEFT CURLY BRACKET
+|	!!	0x7c	124	VERTICAL LINE
+}	!)	0x7d	125	RIGHT CURLY BRACKET
+~	'?	0x7e	126	TILDE
+^?	DT	0x7f	127	DELETE (DEL)
+~@	PA	0x80	128	PADDING CHARACTER (PAD)
+~A	HO	0x81	129	HIGH OCTET PRESET (HOP)
+~B	BH	0x82	130	BREAK PERMITTED HERE (BPH)
+~C	NH	0x83	131	NO BREAK HERE (NBH)
+~D	IN	0x84	132	INDEX (IND)
+~E	NL	0x85	133	NEXT LINE (NEL)
+~F	SA	0x86	134	START OF SELECTED AREA (SSA)
+~G	ES	0x87	135	END OF SELECTED AREA (ESA)
+~H	HS	0x88	136	CHARACTER TABULATION SET (HTS)
+~I	HJ	0x89	137	CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+~J	VS	0x8a	138	LINE TABULATION SET (VTS)
+~K	PD	0x8b	139	PARTIAL LINE FORWARD (PLD)
+~L	PU	0x8c	140	PARTIAL LINE BACKWARD (PLU)
+~M	RI	0x8d	141	REVERSE LINE FEED (RI)
+~N	S2	0x8e	142	SINGLE-SHIFT TWO (SS2)
+~O	S3	0x8f	143	SINGLE-SHIFT THREE (SS3)
+~P	DC	0x90	144	DEVICE CONTROL STRING (DCS)
+~Q	P1	0x91	145	PRIVATE USE ONE (PU1)
+~R	P2	0x92	146	PRIVATE USE TWO (PU2)
+~S	TS	0x93	147	SET TRANSMIT STATE (STS)
+~T	CC	0x94	148	CANCEL CHARACTER (CCH)
+~U	MW	0x95	149	MESSAGE WAITING (MW)
+~V	SG	0x96	150	START OF GUARDED AREA (SPA)
+~W	EG	0x97	151	END OF GUARDED AREA (EPA)
+~X	SS	0x98	152	START OF STRING (SOS)
+~Y	GC	0x99	153	SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+~Z	SC	0x9a	154	SINGLE CHARACTER INTRODUCER (SCI)
+~[	CI	0x9b	155	CONTROL SEQUENCE INTRODUCER (CSI)
+~\	ST	0x9c	156	STRING TERMINATOR (ST)
+~]	OC	0x9d	157	OPERATING SYSTEM COMMAND (OSC)
+~^	PM	0x9e	158	PRIVACY MESSAGE (PM)
+~_	AC	0x9f	159	APPLICATION PROGRAM COMMAND (APC)
+|	NS	0xa0	160	NO-BREAK SPACE
+¡	!I	0xa1	161	INVERTED EXCLAMATION MARK
+¢	Ct	0xa2	162	CENT SIGN
+£	Pd	0xa3	163	POUND SIGN
+¤	Cu	0xa4	164	CURRENCY SIGN
+¥	Ye	0xa5	165	YEN SIGN
+¦	BB	0xa6	166	BROKEN BAR
+§	SE	0xa7	167	SECTION SIGN
+¨	':	0xa8	168	DIAERESIS
+©	Co	0xa9	169	COPYRIGHT SIGN
+ª	-a	0xaa	170	FEMININE ORDINAL INDICATOR
+«	<<	0xab	171	LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+¬	NO	0xac	172	NOT SIGN
+­	--	0xad	173	SOFT HYPHEN
+®	Rg	0xae	174	REGISTERED SIGN
+¯	'm	0xaf	175	MACRON
+°	DG	0xb0	176	DEGREE SIGN
+±	+-	0xb1	177	PLUS-MINUS SIGN
+²	2S	0xb2	178	SUPERSCRIPT TWO
+³	3S	0xb3	179	SUPERSCRIPT THREE
+´	''	0xb4	180	ACUTE ACCENT
+µ	My	0xb5	181	MICRO SIGN
+¶	PI	0xb6	182	PILCROW SIGN
+·	.M	0xb7	183	MIDDLE DOT
+¸	',	0xb8	184	CEDILLA
+¹	1S	0xb9	185	SUPERSCRIPT ONE
+º	-o	0xba	186	MASCULINE ORDINAL INDICATOR
+»	>>	0xbb	187	RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+¼	14	0xbc	188	VULGAR FRACTION ONE QUARTER
+½	12	0xbd	189	VULGAR FRACTION ONE HALF
+¾	34	0xbe	190	VULGAR FRACTION THREE QUARTERS
+¿	?I	0xbf	191	INVERTED QUESTION MARK
+À	A!	0xc0	192	LATIN CAPITAL LETTER A WITH GRAVE
+Á	A'	0xc1	193	LATIN CAPITAL LETTER A WITH ACUTE
+Â	A>	0xc2	194	LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+Ã	A?	0xc3	195	LATIN CAPITAL LETTER A WITH TILDE
+Ä	A:	0xc4	196	LATIN CAPITAL LETTER A WITH DIAERESIS
+Å	AA	0xc5	197	LATIN CAPITAL LETTER A WITH RING ABOVE
+Æ	AE	0xc6	198	LATIN CAPITAL LETTER AE
+Ç	C,	0xc7	199	LATIN CAPITAL LETTER C WITH CEDILLA
+È	E!	0xc8	200	LATIN CAPITAL LETTER E WITH GRAVE
+É	E'	0xc9	201	LATIN CAPITAL LETTER E WITH ACUTE
+Ê	E>	0xca	202	LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+Ë	E:	0xcb	203	LATIN CAPITAL LETTER E WITH DIAERESIS
+Ì	I!	0xcc	204	LATIN CAPITAL LETTER I WITH GRAVE
+Í	I'	0xcd	205	LATIN CAPITAL LETTER I WITH ACUTE
+Î	I>	0xce	206	LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+Ï	I:	0xcf	207	LATIN CAPITAL LETTER I WITH DIAERESIS
+Ð	D-	0xd0	208	LATIN CAPITAL LETTER ETH (Icelandic)
+Ñ	N?	0xd1	209	LATIN CAPITAL LETTER N WITH TILDE
+Ò	O!	0xd2	210	LATIN CAPITAL LETTER O WITH GRAVE
+Ó	O'	0xd3	211	LATIN CAPITAL LETTER O WITH ACUTE
+Ô	O>	0xd4	212	LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+Õ	O?	0xd5	213	LATIN CAPITAL LETTER O WITH TILDE
+Ö	O:	0xd6	214	LATIN CAPITAL LETTER O WITH DIAERESIS
+×	*X	0xd7	215	MULTIPLICATION SIGN
+Ø	O/	0xd8	216	LATIN CAPITAL LETTER O WITH STROKE
+Ù	U!	0xd9	217	LATIN CAPITAL LETTER U WITH GRAVE
+Ú	U'	0xda	218	LATIN CAPITAL LETTER U WITH ACUTE
+Û	U>	0xdb	219	LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+Ü	U:	0xdc	220	LATIN CAPITAL LETTER U WITH DIAERESIS
+Ý	Y'	0xdd	221	LATIN CAPITAL LETTER Y WITH ACUTE
+Þ	TH	0xde	222	LATIN CAPITAL LETTER THORN (Icelandic)
+ß	ss	0xdf	223	LATIN SMALL LETTER SHARP S (German)
+à	a!	0xe0	224	LATIN SMALL LETTER A WITH GRAVE
+á	a'	0xe1	225	LATIN SMALL LETTER A WITH ACUTE
+â	a>	0xe2	226	LATIN SMALL LETTER A WITH CIRCUMFLEX
+ã	a?	0xe3	227	LATIN SMALL LETTER A WITH TILDE
+ä	a:	0xe4	228	LATIN SMALL LETTER A WITH DIAERESIS
+å	aa	0xe5	229	LATIN SMALL LETTER A WITH RING ABOVE
+æ	ae	0xe6	230	LATIN SMALL LETTER AE
+ç	c,	0xe7	231	LATIN SMALL LETTER C WITH CEDILLA
+è	e!	0xe8	232	LATIN SMALL LETTER E WITH GRAVE
+é	e'	0xe9	233	LATIN SMALL LETTER E WITH ACUTE
+ê	e>	0xea	234	LATIN SMALL LETTER E WITH CIRCUMFLEX
+ë	e:	0xeb	235	LATIN SMALL LETTER E WITH DIAERESIS
+ì	i!	0xec	236	LATIN SMALL LETTER I WITH GRAVE
+í	i'	0xed	237	LATIN SMALL LETTER I WITH ACUTE
+î	i>	0xee	238	LATIN SMALL LETTER I WITH CIRCUMFLEX
+ï	i:	0xef	239	LATIN SMALL LETTER I WITH DIAERESIS
+ð	d-	0xf0	240	LATIN SMALL LETTER ETH (Icelandic)
+ñ	n?	0xf1	241	LATIN SMALL LETTER N WITH TILDE
+ò	o!	0xf2	242	LATIN SMALL LETTER O WITH GRAVE
+ó	o'	0xf3	243	LATIN SMALL LETTER O WITH ACUTE
+ô	o>	0xf4	244	LATIN SMALL LETTER O WITH CIRCUMFLEX
+õ	o?	0xf5	245	LATIN SMALL LETTER O WITH TILDE
+ö	o:	0xf6	246	LATIN SMALL LETTER O WITH DIAERESIS
+÷	-:	0xf7	247	DIVISION SIGN
+ø	o/	0xf8	248	LATIN SMALL LETTER O WITH STROKE
+ù	u!	0xf9	249	LATIN SMALL LETTER U WITH GRAVE
+ú	u'	0xfa	250	LATIN SMALL LETTER U WITH ACUTE
+û	u>	0xfb	251	LATIN SMALL LETTER U WITH CIRCUMFLEX
+ü	u:	0xfc	252	LATIN SMALL LETTER U WITH DIAERESIS
+ý	y'	0xfd	253	LATIN SMALL LETTER Y WITH ACUTE
+þ	th	0xfe	254	LATIN SMALL LETTER THORN (Icelandic)
+ÿ	y:	0xff	255	LATIN SMALL LETTER Y WITH DIAERESIS
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/doctags.c b/runtime/doc/doctags.c
new file mode 100644
index 0000000..9213dd9
--- /dev/null
+++ b/runtime/doc/doctags.c
@@ -0,0 +1,83 @@
+/* vim:set ts=4 sw=4:
+ * this program makes a tags file for vim_ref.txt
+ *
+ * Usage: doctags vim_ref.txt vim_win.txt ... >tags
+ *
+ * A tag in this context is an identifier between stars, e.g. *c_files*
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+
+#define LINELEN 200
+
+	int
+main(argc, argv)
+	int		argc;
+	char	**argv;
+{
+	char	line[LINELEN];
+	char	*p1, *p2;
+	char	*p;
+	FILE	*fd;
+
+	if (argc <= 1)
+	{
+		fprintf(stderr, "Usage: doctags docfile ... >tags\n");
+		exit(1);
+	}
+	printf("help-tags\ttags\t1\n");
+	while (--argc > 0)
+	{
+		++argv;
+		fd = fopen(argv[0], "r");
+		if (fd == NULL)
+		{
+			fprintf(stderr, "Unable to open %s for reading\n", argv[0]);
+			continue;
+		}
+		while (fgets(line, LINELEN, fd) != NULL)
+		{
+			p1 = strchr(line, '*');				/* find first '*' */
+			while (p1 != NULL)
+			{
+				p2 = strchr(p1 + 1, '*');		/* find second '*' */
+				if (p2 != NULL && p2 > p1 + 1)	/* skip "*" and "**" */
+				{
+					for (p = p1 + 1; p < p2; ++p)
+						if (*p == ' ' || *p == '\t' || *p == '|')
+							break;
+					/*
+					 * Only accept a *tag* when it consists of valid
+					 * characters, there is white space before it and is
+					 * followed by a white character or end-of-line.
+					 */
+					if (p == p2
+							&& (p1 == line || p1[-1] == ' ' || p1[-1] == '\t')
+								&& (strchr(" \t\n\r", p[1]) != NULL
+									|| p[1] == '\0'))
+					{
+						*p2 = '\0';
+						++p1;
+						printf("%s\t%s\t/*", p1, argv[0]);
+						while (*p1)
+						{
+							/* insert backslash before '\\' and '/' */
+							if (*p1 == '\\' || *p1 == '/')
+								putchar('\\');
+							putchar(*p1);
+							++p1;
+						}
+						printf("*\n");
+						p2 = strchr(p2 + 1, '*');		/* find next '*' */
+					}
+				}
+				p1 = p2;
+			}
+		}
+		fclose(fd);
+	}
+	return 0;
+}
diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
new file mode 100644
index 0000000..e25c34a
--- /dev/null
+++ b/runtime/doc/editing.txt
@@ -0,0 +1,1432 @@
+*editing.txt*   For Vim version 7.0aa.  Last change: 2004 Apr 28
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Editing files						*edit-files*
+
+1.  Introduction		|edit-intro|
+2.  Editing a file		|edit-a-file|
+3.  Dialogs			|edit-dialogs|
+4.  The current directory	|current-directory|
+5.  The argument list		|argument-list|
+6.  Writing			|writing|
+7.  Writing and quitting	|write-quit|
+8.  Editing binary files	|edit-binary|
+9.  Encryption			|encryption|
+10. Timestamps			|timestamps|
+
+==============================================================================
+1. Introduction						*edit-intro*
+
+Editing a file with Vim means:
+
+1. reading the file into the internal buffer
+2. changing the buffer with editor commands
+3. writing the buffer into a file
+
+							*current-file*
+As long as you don't write the buffer, the original file remains unchanged.
+If you start editing a file (read a file into the buffer), the file name is
+remembered as the "current file name".
+
+							*alternate-file*
+If there already was a current file name, then that one becomes the alternate
+file name.  All file names are remembered in the file list.  When you enter a
+file name, for editing (e.g., with ":e filename") or writing (e.g., with (:w
+file name"), the file name is added to the list.  You can use this list to
+remember which files you edited and to quickly switch from one file to
+another with the CTRL-^ command (e.g., to copy text).  First type the number
+of the file and then hit CTRL-^.  {Vi: only one alternate file name}
+
+CTRL-G		or				*CTRL-G* *:f* *:fi* *:file*
+:f[ile]			Prints the current file name (as typed), the
+			cursor position (unless the 'ruler' option is set),
+			and the file status (readonly, modified, read errors,
+			new file)).  See the 'shortmess' option about how tho
+			make this message shorter.  {Vi does not include
+			column number}
+
+{count}CTRL-G		Like CTRL-G, but prints the current file name with
+			full path.  If the count is higher than 1 the current
+			buffer number is also given.  {not in Vi}
+
+					*g_CTRL-G* *word-count* *byte-count*
+g CTRL-G		Prints the current position of the cursor in four
+			ways: Column, Line, Word and Byte.  If there are
+			characters in the line that take more than one
+			position on the screen (<Tab> or special character),
+			both the "real" column and the screen column are
+			shown, separated with a dash.  See also 'ruler'
+			option.  {not in Vi}
+
+							*v_g_CTRL-G*
+{Visual}g CTRL-G	Similar to "g CTRL-G", but Word, Line, and Byte counts
+			for the visually selected region are displayed.  In
+			Blockwise mode, Column count is also shown.  (For
+			{Visual} see |Visual-mode|.)
+			{not in VI}
+
+							*:file_f*
+:f[ile] {name}		Sets the current file name to {name}.
+
+:buffers
+:files
+:ls			List all the currently known file names.  See
+			'windows.txt' |:files| |:buffers| |:ls|.  {not in
+			Vi}
+
+Vim will remember the full path name of a file name that you enter.  In most
+cases when the file name is displayed only the name you typed is shown, but
+the full path name is being used if you used the ":cd" command |:cd|.
+
+							*home-replace*
+If the environment variable $HOME is set, and the file name starts with that
+string, it is often displayed with HOME replaced with "~".  This was done to
+keep file names short.  When reading or writing files the full name is still
+used, the "~" is only used when displaying file names.  When replacing the
+file name would result in just "~", "~/" is used instead (to avoid confusion
+with 'backupext' set to "~").
+
+When writing the buffer, the default is to use the current file name.  Thus
+when you give the "ZZ" or ":wq" command, the original file will be
+overwritten.  If you do not want this, the buffer can be written into another
+file by giving a file name argument to the ":write" command.  For example: >
+
+	vim testfile
+	[change the buffer with editor commands]
+	:w newfile
+	:q
+
+This will create a file "newfile", that is a modified copy of "testfile".
+The file "testfile" will remain unchanged.  Anyway, if the 'backup' option is
+set, Vim renames or copies the original file before it will be overwritten.
+You can use this file if you discover that you need the original file.  See
+also the 'patchmode' option.  The name of the backup file is normally the same
+as the original file with 'backupext' appended.  The default "~" is a bit
+strange to avoid accidentally overwriting existing files.  If you prefer ".bak"
+change the 'backupext' option.  Extra dots are replaced with '_' on MS-DOS
+machines, when Vim has detected that an MS-DOS-like filesystem is being used
+(e.g., messydos or crossdos) or when the 'shortname' option is on.  The
+backup file can be placed in another directory by setting 'backupdir'.
+
+							*auto-shortname*
+Technical: On the Amiga you can use 30 characters for a file name.  But on an
+	   MS-DOS-compatible filesystem only 8 plus 3 characters are
+	   available.  Vim tries to detect the type of filesystem when it is
+	   creating the .swp file.  If an MS-DOS-like filesystem is suspected,
+	   a flag is set that has the same effect as setting the 'shortname'
+	   option.  This flag will be reset as soon as you start editing a
+	   new file.  The flag will be used when making the file name for the
+	   ".swp" and ".~" files for the current file.  But when you are
+	   editing a file in a normal filesystem and write to an MS-DOS-like
+	   filesystem the flag will not have been set.  In that case the
+	   creation of the ".~" file may fail and you will get an error
+	   message.  Use the 'shortname' option in this case.
+
+When you started editing without giving a file name, "No File" is displayed in
+messages.  If the ":write" command is used with a file name argument, the file
+name for the current file is set to that file name.  This only happens when
+the 'F' flag is included in 'cpoptions' (by default it is included).  This is
+useful when entering text in an empty buffer and then writing it to a file.
+If 'cpoptions' contains the 'f' flag (by default it is NOT included) the file
+name is set for the ":read file" command.  This is useful when starting Vim
+without an argument and then doing ":read file" to start editing a file.
+							*not-edited*
+Because the file name was set without really starting to edit that file, you
+are protected from overwriting that file.  This is done by setting the
+"notedited" flag.  You can see if this flag is set with the CTRL-G or ":file"
+command.  It will include "[Not edited]" when the "notedited" flag is set.
+When writing the buffer to the current file name (with ":w!"), the "notedited"
+flag is reset.
+
+							*abandon*
+Vim remembers whether you have changed the buffer.  You are protected from
+losing the changes you made.  If you try to quit without writing, or want to
+start editing another file, Vim will refuse this.  In order to overrule this
+protection, add a '!' to the command.  The changes will then be lost.  For
+example: ":q" will not work if the buffer was changed, but ":q!" will.  To see
+whether the buffer was changed use the "CTRL-G" command.  The message includes
+the string "[Modified]" if the buffer has been changed.
+
+If you want to automatically save the changes without asking, switch on the
+'autowriteall' option.  'autowrite' is the associated Vi-compatible option
+that does not work for all commands.
+
+If you want to keep the changed buffer without saving it, switch on the
+'hidden' option.  See |hidden-buffer|.
+
+==============================================================================
+2. Editing a file					*edit-a-file*
+
+							*:e* *:edit*
+:e[dit] [++opt] [+cmd]	Edit the current file.  This is useful to re-edit the
+			current file, when it has been changed outside of Vim.
+			This fails when changes have been made to the current
+			buffer and 'autowriteall' isn't set or the file can't
+			be written.
+			Also see |++opt| and |+cmd|.
+			{Vi: no ++opt}
+
+							*:edit!*
+:e[dit]! [++opt] [+cmd]
+			Edit the current file always.  Discard any changes to
+			the current buffer.  This is useful if you want to
+			start all over again.
+			Also see |++opt| and |+cmd|.
+			{Vi: no ++opt}
+
+							*:edit_f*
+:e[dit] [++opt] [+cmd] {file}
+			Edit {file}.
+			This fails when changes have been made to the current
+			buffer, unless 'hidden' is set or 'autowriteall' is
+			set and the file can be written.
+			Also see |++opt| and |+cmd|.
+			{Vi: no ++opt}
+
+							*:edit!_f*
+:e[dit]! [++opt] [+cmd] {file}
+			Edit {file} always.  Discard any changes to the
+			current buffer.
+			Also see |++opt| and |+cmd|.
+			{Vi: no ++opt}
+
+:e[dit] [++opt] [+cmd] #[count]
+			Edit the [count]th alternate file name (as shown by
+			:files).  This command does the same as
+			[count] CTRL-^.  But ":e #" doesn't work if the
+			alternate buffer doesn't have a file name, while
+			CTRL-^ still works then.
+			Also see |++opt| and |+cmd|.
+			{Vi: no ++opt}
+
+							*:ene* *:enew*
+:ene[w]			Edit a new, unnamed buffer.  This fails when changes
+			have been made to the current buffer, unless 'hidden'
+			is set or 'autowriteall' is set and the file can be
+			written.
+			If 'fileformats' is not empty, the first format given
+			will be used for the new buffer.  If 'fileformats' is
+			empty, the 'fileformat' of the current buffer is used.
+			{not in Vi}
+
+							*:ene!* *:enew!*
+:ene[w]!		Edit a new, unnamed buffer.  Discard any changes to
+			the current buffer.
+			Set 'fileformat' like |:enew|.
+			{not in Vi}
+
+							*:fin* *:find*
+:fin[d][!] [++opt] [+cmd] {file}
+			Find {file} in 'path' and then |:edit| it.
+			{not in Vi} {not available when the |+file_in_path|
+			feature was disabled at compile time}
+
+:{count}fin[d][!] [++opt] [+cmd] {file}
+			Just like ":find", but use the {count} match in
+			'path'.  Thus ":2find file" will find the second
+			"file" found in 'path'.  When there are fewer matches
+			for the file in 'path' than asked for, you get an
+			error message.
+
+							*:ex*
+:ex [++opt] [+cmd] [file]
+			Same as |:edit|.
+
+							*:vi* *:visual*
+:vi[sual][!] [++opt] [+cmd] [file]
+			When entered in Ex mode: Leave |Ex-mode|, go back to
+			Normal mode.  Otherwise same as |:edit|.
+
+							*:vie* *:view*
+:vie[w] [++opt] [+cmd] file
+			When entered in Ex mode: Leave Ex mode, go back to
+			Normal mode.  Otherwise same as |:edit|, but set
+			'readonly' option for this buffer.  {not in Vi}
+
+							*CTRL-^* *CTRL-6*
+[count]CTRL-^		Edit [count]th alternate file (equivalent to ":e
+			#[count]").  Without count this gets you to the
+			previously edited file.  This is a quick way to toggle
+			between two (or more) files.
+			If the 'autowrite' or 'autowriteall' option is on and
+			the buffer was changed, write it.
+			Mostly the ^ character is positioned on the 6 key,
+			pressing CTRL and 6 then gets you what we call CTRL-^.
+			But on some non-US keyboards CTRL-^ is produced in
+			another way.
+
+[count]]f						*]f* *[f*
+[count][f		Same as "gf".  Deprecated.
+
+							*gf* *E446* *E447*
+[count]gf		Edit the file whose name is under or after the cursor.
+			Mnemonic: "goto file".
+			Uses the 'isfname' option to find out which characters
+			are supposed to be in a file name.  Trailing
+			punctuation characters ".,:;!" are ignored.
+			Uses the 'path' option as a list of directory names
+			to look for the file.  Also looks for the file
+			relative to the current file.
+			Uses the 'suffixesadd' option to check for file names
+			with a suffix added.
+			If the file can't be found, 'includeexpr' is used to
+			modify the name and another attempt is done.
+			If a [count] is given, the count'th file that is found
+			in the 'path' is edited.
+			This command fails if Vim refuses to |abandon| the
+			current file.
+			If you do want to edit a new file, use: >
+				:e <cfile>
+<			To make gf always work like that: >
+				:map gf :e <cfile><CR>
+<			If the name is a hypertext link, that looks like
+			"type://machine/path", you need the |netrw| plugin.
+			For Unix the '~' character is expanded, like in
+			"~user/file".  Environment variables are expanded too
+			|expand-env|.
+			{not in Vi}
+			{not available when the |+file_in_path| feature was
+			disabled at compile time}
+
+							*v_gf*
+{Visual}[count]gf	Same as "gf", but the highlighted text is used as the
+			name of the file to edit.  'isfname' is ignored.
+			Leading blanks are skipped, otherwise all blanks and
+			special characters are included in the file name.
+			(For {Visual} see |Visual-mode|.)
+			{not in VI}
+
+These commands are used to start editing a single file.  This means that the
+file is read into the buffer and the current file name is set.  The file that
+is opened depends on the current directory, see |:cd|.
+
+See |read-messages| for an explanation of the message that is given after the
+file has been read.
+
+You can use the ":e!" command if you messed up the buffer and want to start
+all over again.  The ":e" command is only useful if you have changed the
+current file name.
+
+							*:filename* *{file}*
+Note for systems other than Unix and MS-DOS: When using a command that
+accepts a single file name (like ":edit file") spaces in the file name are
+allowed, but trailing spaces are ignored.  This is useful on systems that
+allow file names with embedded spaces (like the Amiga).  Example: The command
+":e   Long File Name " will edit the file "Long File Name".  When using a
+command that accepts more than one file name (like ":next file1 file2")
+embedded spaces must be escaped with a backslash.
+
+Wildcards in {file} are expanded.  Which wildcards are supported depends on
+the system.  These are the common ones:
+	*	matches anything, including nothing
+	?	matches one character
+	[abc]	match 'a', 'b' or 'c'
+To avoid the special meaning of the wildcards prepend a backslash.  However,
+on MS-Windows the backslash is a path separator and "path\[abc]" is still seen
+as a wildcard when "[" is in the 'isfname' option.  A simple way to avoid this
+is to use "path\[[]abc]".  Then the file "path[abc]" literally.
+
+					*backtick-expansion* *`-expansion*
+On Unix you can also use backticks in the file name, for example: >
+	:e `find . -name ver\\*.c -print`
+The backslashes before the star are required to prevent "ver*.c" to be
+expanded by the shell before executing the find program.
+This also works for most other systems, with the restriction that the
+backticks must be around the whole item.  It is not possible to have text
+directly before the first or just after the last backtick.
+
+You can have the backticks expanded as a Vim expression, instead of
+an external command, by using the syntax `={expr}` e.g. >
+	:let foo='bar'
+	:e `=foo . ".c" `
+edits "bar.c".  Note that the expression cannot contain a backtick.
+
+							*++opt* *[++opt]*
+The [++opt] argument can be used to force the value of 'fileformat' or
+'fileencoding' to a value for one command.  The form is: >
+	++{optname}={value}
+
+Where {optname} is one of:		*++ff* *++enc* *++bin* *++nobin*
+    ff     or  fileformat   overrides 'fileformat'
+    enc    or  encoding	    overrides 'fileencoding'
+    bin    or  binary	    sets 'binary'
+    nobin  or  nobinary	    resets 'binary'
+
+{value} cannot contain white space.  It can be any valid value for these
+options.  Examples: >
+	:e ++ff=unix
+This edits the same file again with 'fileformat' set to "unix". >
+
+	:w ++enc=latin1 newfile
+This writes the current buffer to "newfile" in latin1 format.
+
+Note that when reading, the 'fileformat' and 'fileencoding' options will be
+set to the used format.  When writing this doesn't happen, thus a next write
+will use the old value of the option.  Same for the 'binary' option.
+
+There may be several ++opt arguments, separated by white space.  They must all
+appear before any |+cmd| argument.
+
+							*+cmd* *[+cmd]*
+The [+cmd] argument can be used to position the cursor in the newly opened
+file, or execute any other command:
+	+		Start at the last line.
+	+{num}		Start at line {num}.
+	+/{pat}		Start at first line containing {pat}.
+	+{command}	Execute {command} after opening the new file.
+			{command} is any Ex command.
+To include a white space in the {pat} or {command}, precede it with a
+backslash.  Double the number of backslashes. >
+	:edit  +/The\ book	     file
+	:edit  +/dir\ dirname\\      file
+	:edit  +set\ dir=c:\\\\temp  file
+Note that in the last example the number of backslashes is halved twice: Once
+for the "+cmd" argument and once for the ":set" command.
+
+							*file-formats*
+The 'fileformat' option sets the <EOL> style for a file:
+'fileformat'    characters	   name				~
+  "dos"		<CR><NL> or <NL>   DOS format		*DOS-format*
+  "unix"	<NL>		   Unix format		*Unix-format*
+  "mac"		<CR>		   Mac format		*Mac-format*
+Previously 'textmode' was used.  It is obsolete now.
+
+When reading a file, the mentioned characters are interpreted as the <EOL>.
+In DOS format (default for MS-DOS, OS/2 and Win32), <CR><NL> and <NL> are both
+interpreted as the <EOL>.  Note that when writing the file in DOS format,
+<CR> characters will be added for each single <NL>.  Also see |file-read|.
+
+When writing a file, the mentioned characters are used for <EOL>.  For DOS
+format <CR><NL> is used.  Also see |DOS-format-write|.
+
+You can read a file in DOS format and write it in Unix format.  This will
+replace all <CR><NL> pairs by <NL> (assuming 'fileformats' includes "dos"): >
+	:e file
+	:set fileformat=unix
+	:w
+If you read a file in Unix format and write with DOS format, all <NL>
+characters will be replaced with <CR><NL> (assuming 'fileformats' includes
+"unix"): >
+	:e file
+	:set fileformat=dos
+	:w
+
+If you start editing a new file and the 'fileformats' option is not empty
+(which is the default), Vim will try to detect whether the lines in the file
+are separated by the specified formats.  When set to "unix,dos", Vim will
+check for lines with a single <NL> (as used on Unix and Amiga) or by a <CR>
+<NL> pair (MS-DOS).  Only when ALL lines end in <CR><NL>, 'fileformat' is set
+to "dos", otherwise it is set to "unix".  When 'fileformats' includes "mac",
+and no <NL> characters are found in the file, 'fileformat' is set to "mac".
+
+If the 'fileformat' option is set to "dos" on non-MS-DOS systems the message
+"[dos format]" is shown to remind you that something unusual is happening.  On
+MS-DOS systems you get the message "[unix format]" if 'fileformat' is set to
+"unix".  On all systems but the Macintosh you get the message "[mac format]"
+if 'fileformat' is set to "mac".
+
+If the 'fileformats' option is empty and DOS format is used, but while reading
+a file some lines did not end in <CR><NL>, "[CR missing]" will be included in
+the file message.
+If the 'fileformats' option is empty and Mac format is used, but while reading
+a file a <NL> was found, "[NL missing]" will be included in the file message.
+
+If the new file does not exist, the 'fileformat' of the current buffer is used
+when 'fileformats' is empty.  Otherwise the first format from 'fileformats' is
+used for the new file.
+
+Before editing binary, executable or Vim script files you should set the
+'binary' option.  A simple way to do this is by starting Vim with the "-b"
+option.  This will avoid the use of 'fileformat'.  Without this you risk that
+single <NL> characters are unexpectedly replaced with <CR><NL>.
+
+You can encrypt files that are written by setting the 'key' option.  This
+provides some security against others reading your files. |encryption|
+
+
+File Searching						*file-searching*
+
+{not available when compiled without the |+path_extra| feature}
+
+The file searching is currently used for the 'path', 'cdpath' and 'tags'
+options.  There are three different types of searching:
+
+1) Downward search:
+   Downward search uses the wildcards '*', '**' and possibly others
+   supported by your operating system. '*' and '**' are handled inside Vim, so
+   they work on all operating systems.
+
+   The usage of '*' is quite simple: It matches 0 or more characters.
+
+   '**' is more sophisticated:
+      - It ONLY matches directories.
+      - It matches up to 30  directories deep, so you can use it to search an
+	entire directory tree
+      - The maximum number of levels matched can be given by appending a number
+	to '**'.
+	Thus '/usr/**2' can match: >
+		/usr
+		/usr/include
+		/usr/include/sys
+		/usr/include/g++
+		/usr/lib
+		/usr/lib/X11
+		....
+<	It does NOT match '/usr/include/g++/std' as this would be three
+	levels.
+	The allowed number range is 0 ('**0' is removed) to 255.
+	If the given number is smaller than 0 it defaults to 30, if it's
+	bigger than 255 it defaults to 255.
+      - '**' can only be at the end of the path or be followed by a path
+	separator or by a number and a path separator.
+
+   You can combine '*' and '**' in any order: >
+	/usr/**/sys/*
+	/usr/*/sys/**
+	/usr/**2/sys/*
+
+2) Upward search:
+   Here you can give a directory and then search the directory tree upward for
+   a file. You could give stop-directories to limit the upward search. The
+   stop-directories are appended to the path (for the 'path' option) or to
+   the filename (for the 'tags' option) with a ';'. If you want several
+   stop-directories separate them with ';'. If you want no stop-directory
+   ("search upward till the root directory) just use ';'. >
+	/usr/include/sys;/usr
+<   will search in: >
+	   /usr/include/sys
+	   /usr/include
+	   /usr
+<
+   If you use a relative path the upward search is started in Vim's current
+   directory or in the directory of the current file (if the relative path
+   starts with './' and 'd' is not included in 'cpoptions').
+
+   If Vim's current path is /u/user_x/work/release and you do >
+	:set path=include;/u/user_x
+<  and then search for a file with |gf| the file is searched in: >
+	/u/user_x/work/release/include
+	/u/user_x/work/include
+	/u/user_x/include
+
+3) Combined up/downward search
+   If Vim's current path is /u/user_x/work/release and you do >
+	set path=**;/u/user_x
+<  and then search for a file with |gf| the file is searched in: >
+	/u/user_x/work/release/**
+	/u/user_x/work/**
+	/u/user_x/**
+<
+   BE CAREFUL! This might consume a lot of time, as the search of
+   '/u/user_x/**' includes '/u/user_x/work/**' and
+   '/u/user_x/work/release/**'.  So '/u/user_x/work/release/**' is searched
+   three and '/u/user_x/work/**' is searched two times.
+
+   In the above example you might want to set path to: >
+	:set path=**,/u/user_x/**
+<   This searches: >
+	/u/user_x/work/release/**
+	/u/user_x/**
+<   This searches the same directories, but in a different order.
+
+==============================================================================
+3. Dialogs						*edit-dialogs*
+
+							*:confirm* *:conf*
+:conf[irm] {command}	Execute {command}, and use a dialog when an
+			operation has to be confirmed.  Can be used on the
+			":q", ":qa" and ":w" commands (the latter to over-ride
+			a read-only setting).
+
+Examples: >
+  :confirm w foo
+<	Will ask for confirmation when "foo" already exists. >
+  :confirm q
+<	Will ask for confirmation when there are changes. >
+  :confirm qa
+<	If any modified, unsaved buffers exist, you will be prompted to save
+	or abandon each one.  There are also choices to "save all" or "abandon
+	all".
+
+If you want to always use ":confirm", set the 'confirm' option.
+
+			*:browse* *:bro* *E338* *E614* *E615* *E616* *E578*
+:bro[wse] {command}	Open a file selection dialog for an argument to
+			{command}.  At present this works for |:e|, |:w|,
+			|:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc| and
+			|:mksession|.
+			{only in Win32, Athena, Motif, GTK and Mac GUI}
+			When ":browse" is not possible you get an error
+			message.  If the |+browse| feature is missing or the
+			{command} doesn't support browsing, the {command} is
+			executed without a dialog.
+			":browse set" works like |:options|.
+
+The syntax is best shown via some examples: >
+	:browse e $vim/foo
+<		Open the browser in the $vim/foo directory, and edit the
+		file chosen. >
+	:browse e
+<		Open the browser in the directory specified with 'browsedir',
+		and edit the file chosen. >
+	:browse w
+<		Open the browser in the directory of the current buffer,
+		with the current buffer filename as default, and save the
+		buffer under the filename chosen. >
+	:browse w C:/bar
+<		Open the browser in the C:/bar directory, with the current
+		buffer filename as default, and save the buffer under the
+		filename chosen.
+Also see the |'browsedir'| option.
+For versions of Vim where browsing is not supported, the command is executed
+unmodified.
+
+							*browsefilter*
+For MS Windows, you can modify the filters that are used in the browse dialog.
+By setting the g:browsefilter or b:browsefilter variables, you can change the
+filters globally or locally to the buffer.  The variable is set to a string in
+the format "{filter label}\t{pattern};{pattern}\n" where {filter label} is the
+text that appears in the "Files of Type" comboBox, and {pattern} is the
+pattern which filters the filenames.  Several patterns can be given, separated
+by ';'.
+
+For Motif the same format is used, but only the very first pattern is actually
+used (Motif only offers one pattern, but you can edit it).
+
+For example, to have only Vim files in the dialog, you could use the following
+command: >
+
+     let g:browsefilter="Vim Scripts\t*.vim\nVim Startup Files\t*vimrc\n"
+
+You can override the filter setting on a per-buffer basis by setting the
+b:browsefilter variable.  You would most likely set b:browsefilter in a
+filetype plugin, so that the browse dialog would contain entries related to
+the type of file you are currently editing.  Disadvantage: This makes it
+difficult to start editing a file of a different type.  To overcome this, you
+may want to add "All Files\t*.*\n" as the final filter, so that the user can
+still access any desired file.
+
+==============================================================================
+4. The current directory				*current-directory*
+
+You may use the |:cd| and |:lcd| commands to change to another directory, so
+you will not have to type that directory name in front of the file names.  It
+also makes a difference for executing external commands, e.g. ":!ls".
+
+							*:cd* *E472*
+:cd			On non-Unix systems: Print the current directory
+			name.  On Unix systems: Change the current directory
+			to the home directory.  Use |:pwd| to print the
+			current directory on all systems.
+
+:cd {path}		Change the current directory to {path}.
+			If {path} is relative, it is searched for in the
+			directories listed in |'cdpath'|.
+			Does not change the meaning of an already opened file,
+			because its full path name is remembered.  Files from
+			the |arglist| may change though!
+			On MS-DOS this also changes the active drive.
+			To change to the directory of the current file: >
+				:cd %:h
+<
+							*:cd-* *E186*
+:cd -			Change to the previous current directory (before the
+			previous ":cd {path}" command). {not in Vi}
+
+							*:chd* *:chdir*
+:chd[ir] [path]		Same as |:cd|.
+
+							*:lc* *:lcd*
+:lc[d] {path}		Like |:cd|, but only set the current directory for the
+			current window.  The current directory for other
+			windows is not changed. {not in Vi}
+
+							*:lch* *:lchdir*
+:lch[dir]		Same as |:lcd|. {not in Vi}
+
+							*:pw* *:pwd* *E187*
+:pw[d]			Print the current directory name.  {Vi: no pwd}
+			Also see |getcwd()|.
+
+So long as no |:lcd| command has been used, all windows share the same current
+directory.  Using a command to jump to another window doesn't change anything
+for the current directory.
+When a |:lcd| command has been used for a window, the specified directory
+becomes the current directory for that window.  Windows where the |:lcd|
+command has not been used stick to the global current directory.  When jumping
+to another window the current directory will become the last specified local
+current directory.  If none was specified, the global current directory is
+used.
+When a |:cd| command is used, the current window will lose his local current
+directory and will use the global current directory from now on.
+
+After using |:cd| the full path name will be used for reading and writing
+files.  On some networked file systems this may cause problems.  The result of
+using the full path name is that the file names currently in use will remain
+referring to the same file.  Example: If you have a file a:test and a
+directory a:vim the commands ":e test" ":cd vim" ":w" will overwrite the file
+a:test and not write a:vim/test.  But if you do ":w test" the file a:vim/test
+will be written, because you gave a new file name and did not refer to a
+filename before the ":cd".
+
+==============================================================================
+5. The argument list				*argument-list* *arglist*
+
+If you give more than one file name when starting Vim, this list is remembered
+as the argument list.  You can jump to each file in this list.
+
+Do not confuse this with the buffer list, which you can see with the
+|:buffers| command.  The argument list was already present in Vi, the buffer
+list is new in Vim.  A file name in the argument list will also be present in
+the buffer list (unless it was deleted with ":bdel").
+
+This subject is introduced in section |07.2| of the user manual.
+
+There is one global argument list, which is used for all windows by default.
+It is possible to create a new argument list local to a window, see
+|:arglocal|.
+
+You can use the argument list with the following commands, and with the
+expression functions |argc()| and |argv()|.  These all work on the argument
+list of the current window.
+
+							*:ar* *:args*
+:ar[gs]			Print the argument list, with the current file in
+			square brackets.
+
+:ar[gs] [++opt] [+cmd] {arglist}			*:args_f*
+			Define {arglist} as the new argument list and edit
+			the first one.  This fails when changes have been made
+			and Vim does not want to |abandon| the current buffer.
+			Also see |++opt| and |+cmd|.
+			{Vi: no ++opt}
+
+:ar[gs]! [++opt] [+cmd] {arglist}			*:args_f!*
+			Define {arglist} as the new argument list and edit
+			the first one.  Discard any changes to the current
+			buffer.
+			Also see |++opt| and |+cmd|.
+			{Vi: no ++opt}
+
+:[count]arge[dit][!] [++opt] [+cmd] {name}		*:arge* *:argedit*
+			Add {name} to the argument list and edit it.
+			When {name} already exists in the argument list, this
+			entry is edited.
+			This is like using |:argadd| and then |:edit|.
+			Note that only one file name is allowed, and spaces
+			inside the file name are allowed, like with |:edit|.
+			[count] is used like with |:argadd|.
+			[!] is required if the current file cannot be
+			|abandon|ed.
+			Also see |++opt| and |+cmd|.
+			{not in Vi}
+
+:[count]arga[dd] {name} ..			*:arga* *:argadd* *E479*
+			Add the {name}s to the argument list.
+			If [count] is omitted, the {name}s are added just
+			after the current entry in the argument list.
+			Otherwise they are added after the [count]'th file.
+			If the argument list is "a b c", and "b" is the
+			current argument, then these commands result in:
+				command		new argument list ~
+				:argadd x	a b x c
+				:0argadd x	x a b c
+				:1argadd x	a x b c
+				:99argadd x	a b c x
+			There is no check for duplicates, it is possible to
+			add a file to the argument list twice.
+			The currently edited file is not changed.
+			{not in Vi} {not available when compiled without the
+			|+listcmds| feature}
+			Note: you can also use this method: >
+				:args ## x
+<			This will add the "x" item and sort the new list.
+
+:argd[elete] {pattern} ..			*:argd* *:argdelete* *E480*
+			Delete files from the argument list that match the
+			{pattern}s.  {pattern} is used like a file pattern,
+			see |file-pattern|.  "%" can be used to delete the
+			current entry.
+			This command keeps the currently edited file, also
+			when it's deleted from the argument list.
+			{not in Vi} {not available when compiled without the
+			|+listcmds| feature}
+
+:{range}argd[elete]	Delete the {range} files from the argument list.
+			When the last number in the range is too high, up to
+			the last argument is deleted.  Example: >
+				:10,1000argdel
+<			Deletes arguments 10 and further, keeping 1-9.
+			{not in Vi} {not available when compiled without the
+			|+listcmds| feature}
+
+							*:argu* *:argument*
+:[count]argu[ment] [count] [++opt] [+cmd]
+			Edit file [count] in the argument list.  When [count]
+			is omitted the current entry is used.  This fails
+			when changes have been made and Vim does not want to
+			|abandon| the current buffer.
+			Also see |++opt| and |+cmd|.
+			{not in Vi} {not available when compiled without the
+			|+listcmds| feature}
+
+:[count]argu[ment]! [count] [++opt] [+cmd]
+			Edit file [count] in the argument list, discard any
+			changes to the current buffer.  When [count] is
+			omitted the current entry is used.
+			Also see |++opt| and |+cmd|.
+			{not in Vi} {not available when compiled without the
+			|+listcmds| feature}
+
+:[count]n[ext] [++opt] [+cmd]			*:n* *:ne* *:next* *E165* *E163*
+			Edit [count] next file.  This fails when changes have
+			been made and Vim does not want to |abandon| the
+			current buffer.  Also see |++opt| and |+cmd|.  {Vi: no
+			count or ++opt}.
+
+:[count]n[ext]! [++opt] [+cmd]
+			Edit [count] next file, discard any changes to the
+			buffer.  Also see |++opt| and |+cmd|.  {Vi: no count
+			or ++opt}.
+
+:n[ext] [++opt] [+cmd] {arglist}			*:next_f*
+			Same as |:args_f|.
+
+:n[ext]! [++opt] [+cmd] {arglist}
+			Same as |:args_f!|.
+
+:[count]N[ext] [count] [++opt] [+cmd]			*:Next* *:N* *E164*
+			Edit [count] previous file in argument list.  This
+			fails when changes have been made and Vim does not
+			want to |abandon| the current buffer.
+			Also see |++opt| and |+cmd|.  {Vi: no count or ++opt}.
+
+:[count]N[ext]! [count] [++opt] [+cmd]
+			Edit [count] previous file in argument list.  Discard
+			any changes to the buffer.  Also see |++opt| and
+			|+cmd|.  {Vi: no count or ++opt}.
+
+:[count]prev[ious] [count] [++opt] [+cmd]		*:prev* *:previous*
+			Same as :Next.  Also see |++opt| and |+cmd|.  {Vi:
+			only in some versions}
+
+							*:rew* *:rewind*
+:rew[ind] [++opt] [+cmd]
+			Start editing the first file in the argument list.
+			This fails when changes have been made and Vim does
+			not want to |abandon| the current buffer.
+			Also see |++opt| and |+cmd|. {Vi: no ++opt}
+
+:rew[ind]! [++opt] [+cmd]
+			Start editing the first file in the argument list.
+			Discard any changes to the buffer.  Also see |++opt|
+			and |+cmd|. {Vi: no ++opt}
+
+							*:fir* *:first*
+:fir[st][!] [++opt] [+cmd]
+			Other name for ":rewind". {not in Vi}
+
+							*:la* *:last*
+:la[st] [++opt] [+cmd]
+			Start editing the last file in the argument list.
+			This fails when changes have been made and Vim does
+			not want to |abandon| the current buffer.
+			Also see |++opt| and |+cmd|.  {not in Vi}
+
+:la[st]! [++opt] [+cmd]
+			Start editing the last file in the argument list.
+			Discard any changes to the buffer.  Also see |++opt|
+			and |+cmd|.  {not in Vi}
+
+							*:wn* *:wnext*
+:[count]wn[ext] [++opt] [+cmd]
+			Write current file and start editing the [count]
+			next file.  Also see |++opt| and |+cmd|.  {not in Vi}
+
+:[count]wn[ext] [++opt] [+cmd] {file}
+			Write current file to {file} and start editing the
+			[count] next file, unless {file} already exists and
+			the 'writeany' option is off.  Also see |++opt| and
+			|+cmd|.  {not in Vi}
+
+:[count]wn[ext]! [++opt] [+cmd] {file}
+			Write current file to {file} and start editing the
+			[count] next file.  Also see |++opt| and |+cmd|.  {not
+			in Vi}
+
+:[count]wN[ext][!] [++opt] [+cmd] [file]		*:wN* *:wNext*
+:[count]wp[revous][!] [++opt] [+cmd] [file]		*:wp* *:wprevious*
+			Same as :wnext, but go to previous file instead of
+			next.  {not in Vi}
+
+The [count] in the commands above defaults to one.  For some commands it is
+possible to use two counts.  The last one (rightmost one) is used.
+
+If no [+cmd] argument is present, the cursor is positioned at the last known
+cursor position for the file.  If 'startofline' is set, the cursor will be
+positioned at the first non-blank in the line, otherwise the last know column
+is used.  If there is no last known cursor position the cursor will be in the
+first line (the last line in Ex mode).
+
+The wildcards in the argument list are expanded and the file names are sorted.
+Thus you can use the command "vim *.c" to edit all the C files.  From within
+Vim the command ":n *.c" does the same.  On Unix you can also use backticks,
+for example: >
+	:n `find . -name \\*.c -print`
+The backslashes before the star are required to prevent "*.c" to be expanded
+by the shell before executing the find program.
+
+							*arglist-position*
+When there is an argument list you can see which file you are editing in the
+title of the window (if there is one and 'title' is on) and with the file
+message you get with the "CTRL-G" command.  You will see something like
+	(file 4 of 11)
+If 'shortmess' contains 'f' it will be
+	(4 of 11)
+If you are not really editing the file at the current position in the argument
+list it will be
+	(file (4) of 11)
+This means that you are position 4 in the argument list, but not editing the
+fourth file in the argument list.  This happens when you do ":e file".
+
+
+LOCAL ARGUMENT LIST
+
+{not in Vi}
+{not available when compiled without the |+windows| or |+listcmds| feature}
+
+							*:arglocal*
+:argl[ocal]		Make a local copy of the global argument list.
+			Doesn't start editing another file.
+
+:argl[ocal][!] [++opt] [+cmd] {arglist}
+			Define a new argument list, which is local to the
+			current window.  Works like |:args_f| otherwise.
+
+							*:argglobal*
+:argg[lobal]		Use the global argument list for the current window.
+			Doesn't start editing another file.
+
+:argg[lobal][!] [++opt] [+cmd] {arglist}
+			Use the global argument list for the current window.
+			Define a new global argument list like |:args_f|.
+			All windows using the global argument list will see
+			this new list.
+
+There can be several argument lists.  They can be shared between windows.
+When they are shared, changing the argument list in one window will also
+change it in the other window.
+
+When a window is split the new window inherits the argument list from the
+current window.  The two windows then share this list, until one of them uses
+|:arglocal| or |:argglobal| to use another argument list.
+
+
+USING THE ARGUMENT LIST
+
+						*:argdo*
+:argdo[!] {cmd}		Execute {cmd} for each file in the argument list.
+			It works like doing this: >
+				:rewind
+				:{cmd}
+				:next
+				:{cmd}
+				etc.
+<			When the current file can't be |abandon|ed and the [!]
+			is not present, the command fails.
+			When an error is detected on one file, further files
+			in the argument list will not be visited.
+			The last file in the argument list (or where an error
+			occurred) becomes the current file.
+			{cmd} can contain '|' to concatenate several commands.
+			{cmd} must not change the argument list.
+			Note: While this command is executing, the Syntax
+			autocommand event is disabled by adding it to
+			'eventignore'.  This considerably speeds up editing
+			each file.
+			{not in Vi} {not available when compiled without the
+			|+listcmds| feature}
+			Also see |:windo| and |:bufdo|.
+
+Example: >
+	:args *.c
+	:argdo set ff=unix | update
+This sets the 'fileformat' option to "unix" and writes the file if is now
+changed.  This is done for all *.c files.
+
+Example: >
+	:args *.[ch]
+	:argdo %s/\<my_foo\>/My_Foo/ge | update
+This changes the word "my_foo" to "My_Foo" in all *.c and *.h files.  The "e"
+flag is used for the ":substitute" command to avoid an error for files where
+"my_foo" isn't used.  ":update" writes the file only if changes were made.
+
+==============================================================================
+6. Writing					*writing* *save-file*
+
+Note: When the 'write' option is off, you are not able to write any file.
+
+							*:w* *:write*
+						*E502* *E503* *E504* *E505*
+						*E512* *E514* *E667*
+:w[rite]		Write the whole buffer to the current file.  This is
+			the normal way to save changes to a file.  It fails
+			when the 'readonly' option is set or when there is
+			another reason why the file can't be written.
+
+:w[rite]!		Like ":write", but forcefully write when 'readonly' is
+			set or there is another reason why writing was
+			refused.
+			Note: This may change the permission and ownership of
+			the file and break (symbolic) links.  Add the 'W' flag
+			to 'cpoptions' to avoid this.
+
+:[range]w[rite][!]	Write the specified lines to the current file.  This
+			is unusual, because the file will not contain all
+			lines in the buffer.
+
+							*:w_f* *:write_f*
+:[range]w[rite]	{file}	Write the specified lines to {file}, unless it
+			already exists and the 'writeany' option is off.
+
+							*:w!*
+:[range]w[rite]! {file}	Write the specified lines to {file}.  Overwrite an
+			existing file.
+
+						*:w_a* *:write_a* *E494*
+:[range]w[rite][!] >>	Append the specified lines to the current file.
+
+:[range]w[rite][!] >> {file}
+			Append the specified lines to {file}.  '!' forces the
+			write even if file does not exist.
+
+							*:w_c* *:write_c*
+:[range]w[rite] !{cmd}	Execute {cmd} with [range] lines as standard input
+			(note the space in front of the '!').  {cmd} is
+			executed like with ":!{cmd}", any '!' is replaced with
+			the previous command |:!|.
+
+The default [range] for the ":w" command is the whole buffer (1,$).
+If a file name is given with ":w" it becomes the alternate file.  This can be
+used, for example, when the write fails and you want to try again later with
+":w #".  This can be switched off by removing the 'A' flag from the
+'cpoptions' option.
+
+							*:sav* *:saveas*
+:sav[eas][!] {file}	Save the current buffer under the name {file} and set
+			the filename of the current buffer to {file}.  The
+			previous name is used for the alternate file name.
+			The [!] is needed to overwrite an existing file.
+			{not in Vi}
+
+							*:up* *:update*
+:[range]up[date][!] [>>] [file]
+			Like ":write", but only write when the buffer has been
+			modified.  {not in Vi}
+
+
+WRITING WITH MULTIPLE BUFFERS				*buffer-write*
+
+							*:wa* *:wall*
+:wa[ll]			Write all changed buffers.  Buffers without a file
+			name or which are readonly are not written. {not in
+			Vi}
+
+:wa[ll]!		Write all changed buffers, even the ones that are
+			readonly.  Buffers without a file name are not
+			written. {not in Vi}
+
+
+Vim will warn you if you try to overwrite a file that has been changed
+elsewhere.  See |timestamp|.
+
+			    *backup* *E207* *E506* *E507* *E508* *E509* *E510*
+If you write to an existing file (but do not append) while the 'backup',
+'writebackup' or 'patchmode' option is on, a backup of the original file is
+made.  The file is either copied or renamed (see 'backupcopy').  After the
+file has been successfully written and when the 'writebackup' option is on and
+the 'backup' option is off, the backup file is deleted.  When the 'patchmode'
+option is on the backup file may be renamed.
+
+							*backup-table*
+'backup' 'writebackup'	action	~
+   off	     off	no backup made
+   off	     on		backup current file, deleted afterwards (default)
+   on	     off	delete old backup, backup current file
+   on	     on		delete old backup, backup current file
+
+When the 'backupskip' pattern matches with the name of the file which is
+written, no backup file is made.  The values of 'backup' and 'writebackup' are
+ignored then.
+
+When the 'backup' option is on, an old backup file (with the same name as the
+new backup file) will be deleted.  If 'backup' is not set, but 'writebackup'
+is set, an existing backup file will not be deleted.  The backup file that is
+made while the file is being written will have a different name.
+
+On some filesystems it's possible that in a crash you lose both the backup and
+the newly written file (it might be there but contain bogus data).  In that
+case try recovery, because the swap file is synced to disk and might still be
+there. |:recover|
+
+The directories given with the 'backupdir' option is used to put the backup
+file in.  (default: same directory as the written file).
+
+Whether the backup is a new file, which is a copy of the original file, or the
+original file renamed depends on the 'backupcopy' option.  See there for an
+explanation of when the copy is made and when the file is renamed.
+
+If the creation of a backup file fails, the write is not done.  If you want
+to write anyway add a '!' to the command.
+
+							*write-readonly*
+When the 'cpoptions' option contains 'W', Vim will refuse to overwrite a
+readonly file.  When 'W' is not present, ":w!" will overwrite a readonly file,
+if the system allows it (the directory must be writable).
+
+							*write-fail*
+If the writing of the new file fails, you have to be careful not to lose
+your changes AND the original file.  If there is no backup file and writing
+the new file failed, you have already lost the original file! DON'T EXIT VIM
+UNTIL YOU WRITE OUT THE FILE! If a backup was made, it is put back in place
+of the original file (if possible).  If you exit Vim, and lose the changes
+you made, the original file will mostly still be there.  If putting back the
+original file fails, there will be an error message telling you that you
+lost the original file.
+
+						*DOS-format-write*
+If the 'fileformat' is "dos", <CR> <NL> is used for <EOL>.  This is default
+for MS-DOS, Win32 and OS/2.  On other systems the message "[dos format]" is
+shown to remind you that an unusual <EOL> was used.
+						*Unix-format-write*
+If the 'fileformat' is "unix", <NL> is used for <EOL>.  On MS-DOS, Win32 and
+OS/2 the message "[unix format]" is shown.
+						*Mac-format-write*
+If the 'fileformat' is "mac", <CR> is used for <EOL>.  On non-Mac systems the
+message "[mac format]" is shown.
+
+See also |file-formats| and the 'fileformat' and 'fileformats' options.
+
+						*ACL*
+ACL stands for Access Control List.  It is an advanced way to control access
+rights for a file.  It is used on new MS-Windows and Unix systems, but only
+when the filesystem supports it.
+   Vim attempts to preserve the ACL info when writing a file.  The backup file
+will get the ACL info of the original file.
+   The ACL info is also used to check if a file is read-only (when opening the
+file).
+
+						*read-only-share*
+When MS-Windows shares a drive on the network it can be marked as read-only.
+This means that even if the file read-only attribute is absent, and the ACL
+settings on NT network shared drives allow writing to the file, you can still
+not write to the file.  Vim on Win32 platforms will detect read-only network
+drives and will mark the file as read-only.  You will not be able to override
+it with |:write|.
+
+						*write-device*
+When the file name is actually a device name, Vim will not make a backup (that
+would be impossible).  You need to use "!", since the device already exists.
+Example for Unix: >
+	:w! /dev/lpt0
+and for MS-DOS or MS-Windows: >
+	:w! lpt0
+For Unix a device is detected when the name doesn't refer to a normal file or
+a directory.  A fifo or named pipe also looks like a device to Vim.
+For MS-DOS and MS-Windows the device is detected by its name:
+	AUX
+	CON
+	CLOCK$
+	NUL
+	PRN
+	COMn	n=1,2,3... etc
+	LPTn	n=1,2,3... etc
+The names can be in upper- or lowercase.
+
+==============================================================================
+7. Writing and quitting					*write-quit*
+
+							*:q* *:quit*
+:q[uit]			Quit the current window.  Quit Vim if this is the last
+			window.  This fails when changes have been made and
+			Vim refuses to |abandon| the current buffer, and when
+			the last file in the argument list has not been
+			edited.
+
+:conf[irm] q[uit]	Quit, but give prompt when changes have been made, or
+			the last file in the argument list has not been
+			edited.  See |:confirm| and 'confirm'.  {not in Vi}
+
+:q[uit]!		Quit without writing, also when visible buffers have
+			changes.  Does not exit when there are changed hidden
+			buffers.  Use ":qall!" to exit always.
+
+:cq[uit]		Quit always, without writing, and return an error
+			code.  See |:cq|.  Used for Manx's QuickFix mode (see
+			|quickfix|).  {not in Vi}
+
+							*:wq*
+:wq			Write the current file and quit.  Writing fails when
+			the file is read-only or the buffer does not have a
+			name.  Quitting fails when the last file in the
+			argument list has not been edited.
+
+:wq!			Write the current file and quit.  Writing fails when
+			the current buffer does not have a name.
+
+:wq {file}		Write to {file} and quit.  Quitting fails when the
+			last file in the argument list has not been edited.
+
+:wq! {file}		Write to {file} and quit.
+
+:[range]wq[!] [file]	Same as above, but only write the lines in [range].
+
+							*:x* *:xit*
+:[range]x[it][!] [file]
+			Like ":wq", but write only when changes have been
+			made.
+			When 'hidden' is set and there are more windows, the
+			current buffer becomes hidden, after writing the file.
+
+							*:exi* *:exit*
+:[range]exi[t][!] [file]
+			Same as :xit.
+
+							*ZZ*
+ZZ			Write current file, if modified, and quit (same as
+			":x").  (Note: If there are several windows for the
+			current file, the file is written if it was modified
+			and the window is closed).
+
+							*ZQ*
+ZQ			Quit without checking for changes (same as ":q!").
+			{not in Vi}
+
+MULTIPLE WINDOWS AND BUFFERS				*window-exit*
+
+							*:qa* *:qall*
+:qa[ll]		Exit Vim, unless there are some buffers which have been
+		changed.  (Use ":bmod" to go to the next modified buffer).
+		When 'autowriteall' is set all changed buffers will be
+		written, like |:wqall|. {not in Vi}
+
+:conf[irm] qa[ll]
+		Exit Vim.  Bring up a prompt when some buffers have been
+		changed.  See |:confirm|. {not in Vi}
+
+:qa[ll]!	Exit Vim.  Any changes to buffers are lost. {not in Vi}
+
+							*:quita* *:quitall*
+:quita[ll][!]	Same as ":qall". {not in Vi}
+
+:wqa[ll]					*:wqa* *:wqall* *:xa* *:xall*
+:xa[ll]		Write all changed buffers and exit Vim.  If there are buffers
+		without a file name, which are readonly or which cannot be
+		written for another reason, Vim will not quit. {not in Vi}
+
+:conf[irm] wqa[ll]
+:conf[irm] xa[ll]
+		Write all changed buffers and exit Vim.  Bring up a prompt
+		when some buffers are readonly or cannot be written for
+		another reason.  See |:confirm|. {not in Vi}
+
+:wqa[ll]!
+:xa[ll]!	Write all changed buffers, even the ones that are readonly,
+		and exit Vim.  If there are buffers without a file name or
+		which cannot be written for another reason, Vim will not quit.
+		{not in Vi}
+
+==============================================================================
+8. Editing binary files					*edit-binary*
+
+Although Vim was made to edit text files, it is possible to edit binary
+files.  The |-b| Vim argument (b for binary) makes Vim do file I/O in binary
+mode, and sets some options for editing binary files ('binary' on, 'textwidth'
+to 0, 'modeline' off, 'expandtab' off).  Setting the 'binary' option has the
+same effect.  Don't forget to do this before reading the file.
+
+There are a few things to remember when editing binary files:
+- When editing executable files the number of characters must not change.
+  Use only the "R" or "r" command to change text.  Do not delete characters
+  with "x" or by backspacing.
+- Set the 'textwidth' option to 0.  Otherwise lines will unexpectedly be
+  split in two.
+- When there are not many <EOL>s, the lines will become very long.  If you
+  want to edit a line that does not fit on the screen reset the 'wrap' option.
+  Horizontal scrolling is used then.  If a line becomes too long (more than
+  about 32767 characters on the Amiga, much more on 32-bit systems, see
+  |limits|) you cannot edit that line.  The line will be split when reading
+  the file.  It is also possible that you get an "out of memory" error when
+  reading the file.
+- Make sure the 'binary' option is set BEFORE loading the
+  file.  Otherwise both <CR> <NL> and <NL> are considered to end a line
+  and when the file is written the <NL> will be replaced with <CR> <NL>.
+- <Nul> characters are shown on the screen as ^@.  You can enter them with
+  "CTRL-V CTRL-@" or "CTRL-V 000" {Vi cannot handle <Nul> characters in the
+  file}
+- To insert a <NL> character in the file split up a line.  When writing the
+  buffer to a file a <NL> will be written for the <EOL>.
+- Vim normally appends an <EOL> at the end of the file if there is none.
+  Setting the 'binary' option prevents this.  If you want to add the final
+  <EOL>, set the 'endofline' option.  You can also read the value of this
+  option to see if there was an <EOL> for the last line (you cannot see this
+  in the text).
+
+==============================================================================
+9. Encryption						*encryption*
+
+Vim is able to write files encrypted, and read them back.  The encrypted text
+cannot be read without the right key.
+
+Note: The swapfile and text in memory is not encrypted.  A system
+administrator will be able to see your text while you are editing it.
+When filtering text with ":!filter" or using ":w !command" the text is not
+encrypted, this may reveal it to others.
+
+WARNING: If you make a typo when entering the key and then write the file and
+exit, the text will be lost!
+
+The normal way to work with encryption, is to use the ":X" command, which will
+ask you to enter a key.  A following write command will use that key to
+encrypt the file.  If you later edit the same file, Vim will ask you to enter
+a key.  If you type the same key as that was used for writing, the text will
+be readable again.  If you use a wrong key, it will be a mess.
+
+							*:X*
+:X	Prompt for an encryption key.  The typing is done without showing the
+	actual text, so that someone looking at the display won't see it.
+	The typed key is stored in the 'key' option, which is used to encrypt
+	the file when it is written.  The file will remain unchanged until you
+	write it.  See also |-x|.
+
+The value of the 'key' options is used when text is written.  When the option
+is not empty, the written file will be encrypted, using the value as the
+encryption key.  A magic number is prepended, so that Vim can recognize that
+the file is encrypted.
+
+To disable the encryption, reset the 'key' option to an empty value: >
+	:set key=
+
+When reading a file that has been encrypted and this option is not empty, it
+will be used for decryption.  If the value is empty, you will be prompted to
+enter the key.  If you don't enter a key, the file is edited without being
+decrypted.
+
+If want to start reading a file that uses a different key, set the 'key'
+option to an empty string, so that Vim will prompt for a new one.  Don't use
+the ":set" command to enter the value, other people can read the command over
+your shoulder.
+
+Since the value of the 'key' option is supposed to be a secret, its value can
+never be viewed.  You should not set this option in a vimrc file.
+
+An encrypted file can be recognized by the "file" command, if you add this
+line to "/etc/magic", "/usr/share/misc/magic" or wherever your system has the
+"magic" file: >
+     0	string	VimCrypt~	Vim encrypted file
+
+Notes:
+- Encryption is not possible when doing conversion with 'charconvert'.
+- Text you copy or delete goes to the numbered registers.  The registers can
+  be saved in the .viminfo file, where they could be read.  Change your
+  'viminfo' option to be safe.
+- Someone can type commands in Vim when you walk away for a moment, he should
+  not be able to get the key.
+- If you make a typing mistake when entering the key, you might not be able to
+  get your text back!
+- If you type the key with a ":set key=value" command, it can be kept in the
+  history, showing the 'key' value in a viminfo file.
+- There is never 100% safety.  The encryption in Vim has not been tested for
+  robustness.
+- The algorithm used is breakable.  A 4 character key in about one hour, a 6
+  character key in one day (on a Pentium 133 PC).  This requires that you know
+  some text that must appear in the file.  An expert can break it for any key.
+  When the text has been decrypted, this also means that the key can be
+  revealed, and other files encrypted with the same key can be decrypted.
+- Pkzip uses the same encryption, and US Govt has no objection to its export.
+  Pkzip's public file APPNOTE.TXT describes this algorithm in detail.
+- Vim originates from the Netherlands.  That is where the sources come from.
+  Thus the encryption code is not exported from the USA.
+
+==============================================================================
+10. Timestamps					*timestamp* *timestamps*
+
+Vim remembers the modification timestamp of a file when you begin editing it.
+This is used to avoid that you have two different versions of the same file
+(without you knowing this).
+
+After a shell command is run (|:!cmd| |suspend| |:read!| |K|) timestamps are
+compared for all buffers in a window.   Vim will run any associated
+|FileChangedShell| autocommands or display a warning for any files that have
+changed.  In the GUI this happens when Vim regains input focus.
+
+							*E321* *E462*
+If you want to automatically reload a file when it has been changed outside of
+Vim, set the 'autoread' option.  This doesn't work at the moment you write the
+file though, only when the file wasn't changed inside of Vim.
+
+Note that if a FileChangedShell autocommand is defined you will not get a
+warning message or prompt.  The autocommand is expected to handle this.
+
+There is no warning for a directory (e.g., in the |file-explorer|).  But you
+do get warned if you started editing a new file and it was created as a
+directory later.
+
+When Vim notices the timestamp of a file has changed, and the file is being
+edited in a buffer but has not changed, Vim checks if the contents of the file
+is equal.  This is done by reading the file again (into a hidden buffer, which
+is immediately deleted again) and comparing the text.  If the text is equal,
+you will get no warning.
+
+If you don't get warned often enough you can use the following command.
+
+							*:checkt* *:checktime*
+:checkt[ime]		Check if any buffers were changed outside of Vim.
+			This checks and warns you if you would end up with two
+			versions of a file.
+			If this is called from an autocommand, a ":global"
+			command or is not typed the actual check is postponed
+			until a moment the side effects (reloading the file)
+			would be harmless.
+			Each loaded buffer is checked for its associated file
+			being changed.  If the file was changed Vim will take
+			action.  If there are no changes in the buffer and
+			'autoread' is set, the buffer is reloaded.  Otherwise,
+			you are offered the choice of reloading the file.  If
+			the file was deleted you get an error message.
+			If the file previously didn't exist you get a warning
+			if it exists now.
+			Once a file has been checked the timestamp is reset,
+			you will not be warned again.
+
+:[N]checkt[ime] {filename}
+:[N]checkt[ime] [N]
+			Check the timestamp of a specific buffer.  The buffer
+			may be specified by name, number or with a pattern.
+
+
+Before writing a file the timestamp is checked.  If it has changed, Vim will
+ask if you really want to overwrite the file:
+
+	WARNING: The file has been changed since reading it!!!
+	Do you really want to write to it (y/n)?
+
+If you hit 'y' Vim will continue writing the file.  If you hit 'n' the write is
+aborted.  If you used ":wq" or "ZZ" Vim will not exit, you will get another
+chance to write the file.
+
+The message would normally mean that somebody has written to the file after
+the edit session started.  This could be another person, in which case you
+probably want to check if your changes to the file and the changes from the
+other person should be merged.  Write the file under another name and check for
+differences (the "diff" program can be used for this).
+
+It is also possible that you modified the file yourself, from another edit
+session or with another command (e.g., a filter command).  Then you will know
+which version of the file you want to keep.
+
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
new file mode 100644
index 0000000..4685ff5
--- /dev/null
+++ b/runtime/doc/eval.txt
@@ -0,0 +1,4583 @@
+*eval.txt*      For Vim version 7.0aa.  Last change: 2004 May 18
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Expression evaluation			*expression* *expr* *E15* *eval*
+
+Using expressions is introduced in chapter 41 of the user manual |usr_41.txt|.
+
+Note: Expression evaluation can be disabled at compile time.  If this has been
+done, the features in this document are not available.  See |+eval| and the
+last chapter below.
+
+1.  Variables		|variables|
+2.  Expression syntax	|expression-syntax|
+3.  Internal variable	|internal-variables|
+4.  Builtin Functions	|functions|
+5.  Defining functions	|user-functions|
+6.  Curly braces names	|curly-braces-names|
+7.  Commands		|expression-commands|
+8.  Exception handling	|exception-handling|
+9.  Examples		|eval-examples|
+10. No +eval feature	|no-eval-feature|
+11. The sandbox		|eval-sandbox|
+
+{Vi does not have any of these commands}
+
+==============================================================================
+1. Variables						*variables*
+
+There are two types of variables:
+
+Number		a 32 bit signed number.
+String		a NUL terminated string of 8-bit unsigned characters.
+
+These are converted automatically, depending on how they are used.
+
+Conversion from a Number to a String is by making the ASCII representation of
+the Number.  Examples: >
+	Number 123	-->	String "123"
+	Number 0	-->	String "0"
+	Number -1	-->	String "-1"
+
+Conversion from a String to a Number is done by converting the first digits
+to a number.  Hexadecimal "0xf9" and Octal "017" numbers are recognized.  If
+the String doesn't start with digits, the result is zero.  Examples: >
+	String "456"	-->	Number 456
+	String "6bar"	-->	Number 6
+	String "foo"	-->	Number 0
+	String "0xf1"	-->	Number 241
+	String "0100"	-->	Number 64
+	String "-8"	-->	Number -8
+	String "+8"	-->	Number 0
+
+To force conversion from String to Number, add zero to it: >
+	:echo "0100" + 0
+
+For boolean operators Numbers are used.  Zero is FALSE, non-zero is TRUE.
+
+Note that in the command >
+	:if "foo"
+"foo" is converted to 0, which means FALSE.  To test for a non-empty string,
+use strlen(): >
+	:if strlen("foo")
+
+If you need to know the type of a variable or expression, use the |type()|
+function.
+
+When the '!' flag is included in the 'viminfo' option, global variables that
+start with an uppercase letter, and don't contain a lowercase letter, are
+stored in the viminfo file |viminfo-file|.
+
+When the 'sessionoptions' option contains "global", global variables that
+start with an uppercase letter and contain at least one lowercase letter are
+stored in the session file |session-file|.
+
+variable name		can be stored where ~
+my_var_6		not
+My_Var_6		session file
+MY_VAR_6		viminfo file
+
+
+It's possible to form a variable name with curly braces, see
+|curly-braces-names|.
+
+==============================================================================
+2. Expression syntax					*expression-syntax*
+
+Expression syntax summary, from least to most significant:
+
+|expr1| expr2 ? expr1 : expr1	if-then-else
+
+|expr2|	expr3 || expr3 ..	logical OR
+
+|expr3|	expr4 && expr4 ..	logical AND
+
+|expr4|	expr5 == expr5		equal
+	expr5 != expr5		not equal
+	expr5 >	 expr5		greater than
+	expr5 >= expr5		greater than or equal
+	expr5 <	 expr5		smaller than
+	expr5 <= expr5		smaller than or equal
+	expr5 =~ expr5		regexp matches
+	expr5 !~ expr5		regexp doesn't match
+
+	expr5 ==? expr5		equal, ignoring case
+	expr5 ==# expr5		equal, match case
+	etc.			As above, append ? for ignoring case, # for
+				matching case
+
+|expr5|	expr6 +	 expr6 ..	number addition
+	expr6 -	 expr6 ..	number subtraction
+	expr6 .	 expr6 ..	string concatenation
+
+|expr6|	expr7 *	 expr7 ..	number multiplication
+	expr7 /	 expr7 ..	number division
+	expr7 %	 expr7 ..	number modulo
+
+|expr7|	! expr7			logical NOT
+	- expr7			unary minus
+	+ expr7			unary plus
+	expr8
+
+|expr8|	expr9[expr1]		index in String
+
+|expr9|	number			number constant
+	"string"		string constant
+	'string'		literal string constant
+	&option			option value
+	(expr1)			nested expression
+	variable		internal variable
+	va{ria}ble		internal variable with curly braces
+	$VAR			environment variable
+	@r			contents of register 'r'
+	function(expr1, ...)	function call
+	func{ti}on(expr1, ...)	function call with curly braces
+
+
+".." indicates that the operations in this level can be concatenated.
+Example: >
+	&nu || &list && &shell == "csh"
+
+All expressions within one level are parsed from left to right.
+
+
+expr1							*expr1* *E109*
+-----
+
+expr2 ? expr1 : expr1
+
+The expression before the '?' is evaluated to a number.  If it evaluates to
+non-zero, the result is the value of the expression between the '?' and ':',
+otherwise the result is the value of the expression after the ':'.
+Example: >
+	:echo lnum == 1 ? "top" : lnum
+
+Since the first expression is an "expr2", it cannot contain another ?:.  The
+other two expressions can, thus allow for recursive use of ?:.
+Example: >
+	:echo lnum == 1 ? "top" : lnum == 1000 ? "last" : lnum
+
+To keep this readable, using |line-continuation| is suggested: >
+	:echo lnum == 1
+	:\	? "top"
+	:\	: lnum == 1000
+	:\		? "last"
+	:\		: lnum
+
+
+expr2 and expr3						*expr2* *expr3*
+---------------
+
+					*expr-barbar* *expr-&&*
+The "||" and "&&" operators take one argument on each side.  The arguments
+are (converted to) Numbers.  The result is:
+
+	 input				 output ~
+n1		n2		n1 || n2	n1 && n2 ~
+zero		zero		zero		zero
+zero		non-zero	non-zero	zero
+non-zero	zero		non-zero	zero
+non-zero	non-zero	non-zero	non-zero
+
+The operators can be concatenated, for example: >
+
+	&nu || &list && &shell == "csh"
+
+Note that "&&" takes precedence over "||", so this has the meaning of: >
+
+	&nu || (&list && &shell == "csh")
+
+Once the result is known, the expression "short-circuits", that is, further
+arguments are not evaluated.  This is like what happens in C.  For example: >
+
+	let a = 1
+	echo a || b
+
+This is valid even if there is no variable called "b" because "a" is non-zero,
+so the result must be non-zero.  Similarly below: >
+
+	echo exists("b") && b == "yes"
+
+This is valid whether "b" has been defined or not.  The second clause will
+only be evaluated if "b" has been defined.
+
+
+expr4							*expr4*
+-----
+
+expr5 {cmp} expr5
+
+Compare two expr5 expressions, resulting in a 0 if it evaluates to false, or 1
+if it evaluates to true.
+
+			*expr-==*  *expr-!=*  *expr->*   *expr->=*
+			*expr-<*   *expr-<=*  *expr-=~*  *expr-!~*
+			*expr-==#* *expr-!=#* *expr->#*  *expr->=#*
+			*expr-<#*  *expr-<=#* *expr-=~#* *expr-!~#*
+			*expr-==?* *expr-!=?* *expr->?*  *expr->=?*
+			*expr-<?*  *expr-<=?* *expr-=~?* *expr-!~?*
+		use 'ignorecase'    match case	   ignore case ~
+equal			==		==#		==?
+not equal		!=		!=#		!=?
+greater than		>		>#		>?
+greater than or equal	>=		>=#		>=?
+smaller than		<		<#		<?
+smaller than or equal	<=		<=#		<=?
+regexp matches		=~		=~#		=~?
+regexp doesn't match	!~		!~#		!~?
+
+Examples:
+"abc" ==# "Abc"	  evaluates to 0
+"abc" ==? "Abc"	  evaluates to 1
+"abc" == "Abc"	  evaluates to 1 if 'ignorecase' is set, 0 otherwise
+
+When comparing a String with a Number, the String is converted to a Number,
+and the comparison is done on Numbers.  This means that "0 == 'x'" is TRUE,
+because 'x' converted to a Number is zero.
+
+When comparing two Strings, this is done with strcmp() or stricmp().  This
+results in the mathematical difference (comparing byte values), not
+necessarily the alphabetical difference in the local language.
+
+When using the operators with a trailing '#", or the short version and
+'ignorecase' is off, the comparing is done with strcmp().
+
+When using the operators with a trailing '?', or the short version and
+'ignorecase' is set, the comparing is done with stricmp().
+
+The "=~" and "!~" operators match the lefthand argument with the righthand
+argument, which is used as a pattern.  See |pattern| for what a pattern is.
+This matching is always done like 'magic' was set and 'cpoptions' is empty, no
+matter what the actual value of 'magic' or 'cpoptions' is.  This makes scripts
+portable.  To avoid backslashes in the regexp pattern to be doubled, use a
+single-quote string, see |literal-string|.
+Since a string is considered to be a single line, a multi-line pattern
+(containing \n, backslash-n) will not match.  However, a literal NL character
+can be matched like an ordinary character.  Examples:
+	"foo\nbar" =~ "\n"	evaluates to 1
+	"foo\nbar" =~ "\\n"	evaluates to 0
+
+
+expr5 and expr6						*expr5* *expr6*
+---------------
+expr6 +	 expr6 ..	number addition		*expr-+*
+expr6 -	 expr6 ..	number subtraction	*expr--*
+expr6 .	 expr6 ..	string concatenation	*expr-.*
+
+expr7 *	 expr7 ..	number multiplication	*expr-star*
+expr7 /	 expr7 ..	number division		*expr-/*
+expr7 %	 expr7 ..	number modulo		*expr-%*
+
+For all, except ".", Strings are converted to Numbers.
+
+Note the difference between "+" and ".":
+	"123" + "456" = 579
+	"123" . "456" = "123456"
+
+When the righthand side of '/' is zero, the result is 0x7fffffff.
+When the righthand side of '%' is zero, the result is 0.
+
+
+expr7							*expr7*
+-----
+! expr7			logical NOT		*expr-!*
+- expr7			unary minus		*expr-unary--*
++ expr7			unary plus		*expr-unary-+*
+
+For '!' non-zero becomes zero, zero becomes one.
+For '-' the sign of the number is changed.
+For '+' the number is unchanged.
+
+A String will be converted to a Number first.
+
+These three can be repeated and mixed.  Examples:
+	!-1	    == 0
+	!!8	    == 1
+	--9	    == 9
+
+
+expr8							*expr8*
+-----
+expr9[expr1]		index in String		*expr-[]* *E111*
+
+This results in a String that contains the expr1'th single byte from expr9.
+expr9 is used as a String, expr1 as a Number.  Note that this doesn't work for
+multi-byte encodings.
+
+Note that index zero gives the first character.  This is like it works in C.
+Careful: text column numbers start with one!  Example, to get the character
+under the cursor: >
+	:let c = getline(line("."))[col(".") - 1]
+
+If the length of the String is less than the index, the result is an empty
+String.
+
+						*expr9*
+number
+------
+number			number constant		*expr-number*
+
+Decimal, Hexadecimal (starting with 0x or 0X), or Octal (starting with 0).
+
+
+string							*expr-string* *E114*
+------
+"string"		string constant		*expr-quote*
+
+Note that double quotes are used.
+
+A string constant accepts these special characters:
+\...	three-digit octal number (e.g., "\316")
+\..	two-digit octal number (must be followed by non-digit)
+\.	one-digit octal number (must be followed by non-digit)
+\x..	byte specified with two hex numbers (e.g., "\x1f")
+\x.	byte specified with one hex number (must be followed by non-hex char)
+\X..	same as \x..
+\X.	same as \x.
+\u....  character specified with up to 4 hex numbers, stored according to the
+	current value of 'encoding' (e.g., "\u02a4")
+\U....	same as \u....
+\b	backspace <BS>
+\e	escape <Esc>
+\f	formfeed <FF>
+\n	newline <NL>
+\r	return <CR>
+\t	tab <Tab>
+\\	backslash
+\"	double quote
+\<xxx>	Special key named "xxx".  e.g. "\<C-W>" for CTRL-W.
+
+Note that "\000" and "\x00" force the end of the string.
+
+
+literal-string						*literal-string* *E115*
+---------------
+'string'		literal string constant		*expr-'*
+
+Note that single quotes are used.
+
+This string is taken literally.  No backslashes are removed or have a special
+meaning.  A literal-string cannot contain a single quote.  Use a normal string
+for that.
+
+
+option						*expr-option* *E112* *E113*
+------
+&option			option value, local value if possible
+&g:option		global option value
+&l:option		local option value
+
+Examples: >
+	echo "tabstop is " . &tabstop
+	if &insertmode
+
+Any option name can be used here.  See |options|.  When using the local value
+and there is no buffer-local or window-local value, the global value is used
+anyway.
+
+
+register						*expr-register*
+--------
+@r			contents of register 'r'
+
+The result is the contents of the named register, as a single string.
+Newlines are inserted where required.  To get the contents of the unnamed
+register use @" or @@.  The '=' register can not be used here.  See
+|registers| for an explanation of the available registers.
+
+
+nesting							*expr-nesting* *E110*
+-------
+(expr1)			nested expression
+
+
+environment variable					*expr-env*
+--------------------
+$VAR			environment variable
+
+The String value of any environment variable.  When it is not defined, the
+result is an empty string.
+						*expr-env-expand*
+Note that there is a difference between using $VAR directly and using
+expand("$VAR").  Using it directly will only expand environment variables that
+are known inside the current Vim session.  Using expand() will first try using
+the environment variables known inside the current Vim session.  If that
+fails, a shell will be used to expand the variable.  This can be slow, but it
+does expand all variables that the shell knows about.  Example: >
+	:echo $version
+	:echo expand("$version")
+The first one probably doesn't echo anything, the second echoes the $version
+variable (if your shell supports it).
+
+
+internal variable					*expr-variable*
+-----------------
+variable		internal variable
+See below |internal-variables|.
+
+
+function call		*expr-function* *E116* *E117* *E118* *E119* *E120*
+-------------
+function(expr1, ...)	function call
+See below |functions|.
+
+
+==============================================================================
+3. Internal variable				*internal-variables* *E121*
+									*E461*
+An internal variable name can be made up of letters, digits and '_'.  But it
+cannot start with a digit.  It's also possible to use curly braces, see
+|curly-braces-names|.
+
+An internal variable is created with the ":let" command |:let|.
+An internal variable is destroyed with the ":unlet" command |:unlet|.
+Using a name that isn't an internal variable, or an internal variable that has
+been destroyed, results in an error.
+
+There are several name spaces for variables.  Which one is to be used is
+specified by what is prepended:
+
+		(nothing) In a function: local to a function; otherwise: global
+|buffer-variable|    b:	  Local to the current buffer.
+|window-variable|    w:	  Local to the current window.
+|global-variable|    g:	  Global.
+|local-variable|     l:	  Local to a function.
+|script-variable|    s:	  Local to a |:source|'ed Vim script.
+|function-argument|  a:	  Function argument (only inside a function).
+|vim-variable|       v:	  Global, predefined by Vim.
+
+						*buffer-variable* *b:var*
+A variable name that is preceded with "b:" is local to the current buffer.
+Thus you can have several "b:foo" variables, one for each buffer.
+This kind of variable is deleted when the buffer is wiped out or deleted with
+|:bdelete|.
+
+One local buffer variable is predefined:
+					*b:changedtick-variable* *changetick*
+b:changedtick	The total number of changes to the current buffer.  It is
+		incremented for each change.  An undo command is also a change
+		in this case.  This can be used to perform an action only when
+		the buffer has changed.  Example: >
+		    :if my_changedtick != b:changedtick
+		    :   let my_changedtick = b:changedtick
+		    :   call My_Update()
+		    :endif
+<
+						*window-variable* *w:var*
+A variable name that is preceded with "w:" is local to the current window.  It
+is deleted when the window is closed.
+
+						*global-variable* *g:var*
+Inside functions global variables are accessed with "g:".  Omitting this will
+access a variable local to a function.  But "g:" can also be used in any other
+place if you like.
+
+						*local-variable* *l:var*
+Inside functions local variables are accessed without prepending anything.
+But you can also prepend "l:" if you like.
+
+						*script-variable* *s:var*
+In a Vim script variables starting with "s:" can be used.  They cannot be
+accessed from outside of the scripts, thus are local to the script.
+
+They can be used in:
+- commands executed while the script is sourced
+- functions defined in the script
+- autocommands defined in the script
+- functions and autocommands defined in functions and autocommands which were
+  defined in the script (recursively)
+- user defined commands defined in the script
+Thus not in:
+- other scripts sourced from this one
+- mappings
+- etc.
+
+script variables can be used to avoid conflicts with global variable names.
+Take this example:
+
+	let s:counter = 0
+	function MyCounter()
+	  let s:counter = s:counter + 1
+	  echo s:counter
+	endfunction
+	command Tick call MyCounter()
+
+You can now invoke "Tick" from any script, and the "s:counter" variable in
+that script will not be changed, only the "s:counter" in the script where
+"Tick" was defined is used.
+
+Another example that does the same: >
+
+	let s:counter = 0
+	command Tick let s:counter = s:counter + 1 | echo s:counter
+
+When calling a function and invoking a user-defined command, the context for
+script varialbes is set to the script where the function or command was
+defined.
+
+The script variables are also available when a function is defined inside a
+function that is defined in a script.  Example: >
+
+	let s:counter = 0
+	function StartCounting(incr)
+	  if a:incr
+	    function MyCounter()
+	      let s:counter = s:counter + 1
+	    endfunction
+	  else
+	    function MyCounter()
+	      let s:counter = s:counter - 1
+	    endfunction
+	  endif
+	endfunction
+
+This defines the MyCounter() function either for counting up or counting down
+when calling StartCounting().  It doesn't matter from where StartCounting() is
+called, the s:counter variable will be accessible in MyCounter().
+
+When the same script is sourced again it will use the same script variables.
+They will remain valid as long as Vim is running.  This can be used to
+maintain a counter: >
+
+	if !exists("s:counter")
+	  let s:counter = 1
+	  echo "script executed for the first time"
+	else
+	  let s:counter = s:counter + 1
+	  echo "script executed " . s:counter . " times now"
+	endif
+
+Note that this means that filetype plugins don't get a different set of script
+variables for each buffer.  Use local buffer variables instead |b:var|.
+
+
+Predefined Vim variables:			*vim-variable* *v:var*
+
+			*v:charconvert_from* *charconvert_from-variable*
+v:charconvert_from
+		The name of the character encoding of a file to be converted.
+		Only valid while evaluating the 'charconvert' option.
+
+			*v:charconvert_to* *charconvert_to-variable*
+v:charconvert_to
+		The name of the character encoding of a file after conversion.
+		Only valid while evaluating the 'charconvert' option.
+
+					*v:cmdarg* *cmdarg-variable*
+v:cmdarg	This variable is used for two purposes:
+		1. The extra arguments given to a file read/write command.
+		   Currently these are "++enc=" and "++ff=".  This variable is
+		   set before an autocommand event for a file read/write
+		   command is triggered.  There is a leading space to make it
+		   possible to append this variable directly after the
+		   read/write command.  Note: The "+cmd" argument isn't
+		   included here, because it will be executed anyway.
+		2. When printing a PostScript file with ":hardcopy" this is
+		   the argument for the ":hardcopy" command.  This can be used
+		   in 'printexpr'.
+
+					*v:cmdbang* *cmdbang-variable*
+v:cmdbang	Set like v:cmdarg for a file read/write command.  When a "!"
+		was used the value is 1, otherwise it is 0.  Note that this
+		can only be used in autocommands.  For user commands |<bang>|
+		can be used.
+
+					*v:count* *count-variable*
+v:count		The count given for the last Normal mode command.  Can be used
+		to get the count before a mapping.  Read-only.  Example: >
+	:map _x :<C-U>echo "the count is " . v:count<CR>
+<		Note: The <C-U> is required to remove the line range that you
+		get when typing ':' after a count.
+		"count" also works, for backwards compatibility.
+
+					*v:count1* *count1-variable*
+v:count1	Just like "v:count", but defaults to one when no count is
+		used.
+
+						*v:ctype* *ctype-variable*
+v:ctype		The current locale setting for characters of the runtime
+		environment.  This allows Vim scripts to be aware of the
+		current locale encoding.  Technical: it's the value of
+		LC_CTYPE.  When not using a locale the value is "C".
+		This variable can not be set directly, use the |:language|
+		command.
+		See |multi-lang|.
+
+					*v:dying* *dying-variable*
+v:dying		Normally zero.  When a deadly signal is caught it's set to
+		one.  When multiple signals are caught the number increases.
+		Can be used in an autocommand to check if Vim didn't
+		terminate normally. {only works on Unix}
+		Example: >
+	:au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif
+<
+					*v:errmsg* *errmsg-variable*
+v:errmsg	Last given error message.  It's allowed to set this variable.
+		Example: >
+	:let v:errmsg = ""
+	:silent! next
+	:if v:errmsg != ""
+	:  ... handle error
+<		"errmsg" also works, for backwards compatibility.
+
+					*v:exception* *exception-variable*
+v:exception	The value of the exception most recently caught and not
+		finished.  See also |v:throwpoint| and |throw-variables|.
+		Example: >
+	:try
+	:  throw "oops"
+	:catch /.*/
+	:  echo "caught" v:exception
+	:endtry
+<		Output: "caught oops".
+
+					*v:fname_in* *fname_in-variable*
+v:fname_in	The name of the input file.  Only valid while evaluating:
+			option		used for ~
+			'charconvert'	file to be converted
+			'diffexpr'	original file
+			'patchexpr'	original file
+			'printexpr'	file to be printed
+
+					*v:fname_out* *fname_out-variable*
+v:fname_out	The name of the output file.  Only valid while
+		evaluating:
+			option		used for ~
+			'charconvert'	resulting converted file (*)
+			'diffexpr'	output of diff
+			'patchexpr'	resulting patched file
+		(*) When doing conversion for a write command (e.g., ":w
+		file") it will be equal to v:fname_in.  When doing conversion
+		for a read command (e.g., ":e file") it will be a temporary
+		file and different from v:fname_in.
+
+					*v:fname_new* *fname_new-variable*
+v:fname_new	The name of the new version of the file.  Only valid while
+		evaluating 'diffexpr'.
+
+					*v:fname_diff* *fname_diff-variable*
+v:fname_diff	The name of the diff (patch) file.  Only valid while
+		evaluating 'patchexpr'.
+
+					*v:folddashes* *folddashes-variable*
+v:folddashes	Used for 'foldtext': dashes representing foldlevel of a closed
+		fold.
+		Read-only. |fold-foldtext|
+
+					*v:foldlevel* *foldlevel-variable*
+v:foldlevel	Used for 'foldtext': foldlevel of closed fold.
+		Read-only. |fold-foldtext|
+
+					*v:foldend* *foldend-variable*
+v:foldend	Used for 'foldtext': last line of closed fold.
+		Read-only. |fold-foldtext|
+
+					*v:foldstart* *foldstart-variable*
+v:foldstart	Used for 'foldtext': first line of closed fold.
+		Read-only. |fold-foldtext|
+
+						*v:lang* *lang-variable*
+v:lang		The current locale setting for messages of the runtime
+		environment.  This allows Vim scripts to be aware of the
+		current language.  Technical: it's the value of LC_MESSAGES.
+		The value is system dependent.
+		This variable can not be set directly, use the |:language|
+		command.
+		It can be different from |v:ctype| when messages are desired
+		in a different language than what is used for character
+		encoding.  See |multi-lang|.
+
+						*v:lc_time* *lc_time-variable*
+v:lc_time	The current locale setting for time messages of the runtime
+		environment.  This allows Vim scripts to be aware of the
+		current language.  Technical: it's the value of LC_TIME.
+		This variable can not be set directly, use the |:language|
+		command.  See |multi-lang|.
+
+						*v:lnum* *lnum-variable*
+v:lnum		Line number for the 'foldexpr' and 'indentexpr' expressions.
+		Only valid while one of these expressions is being evaluated.
+		Read-only. |fold-expr| 'indentexpr'
+
+					*v:prevcount* *prevcount-variable*
+v:prevcount	The count given for the last but one Normal mode command.
+		This is the v:count value of the previous command.  Useful if
+		you want to cancel Visual mode and then use the count. >
+			:vmap % <Esc>:call MyFilter(v:prevcount)<CR>
+<		Read-only.
+
+					*v:progname* *progname-variable*
+v:progname	Contains the name (with path removed) with which Vim was
+		invoked.  Allows you to do special initialisations for "view",
+		"evim" etc., or any other name you might symlink to Vim.
+		Read-only.
+
+					*v:register* *register-variable*
+v:register	The name of the register supplied to the last normal mode
+		command.  Empty if none were supplied. |getreg()| |setreg()|
+
+					*v:servername* *servername-variable*
+v:servername	The resulting registered |x11-clientserver| name if any.
+		Read-only.
+
+					*v:shell_error* *shell_error-variable*
+v:shell_error	Result of the last shell command.  When non-zero, the last
+		shell command had an error.  When zero, there was no problem.
+		This only works when the shell returns the error code to Vim.
+		The value -1 is often used when the command could not be
+		executed.  Read-only.
+		Example: >
+	:!mv foo bar
+	:if v:shell_error
+	:  echo 'could not rename "foo" to "bar"!'
+	:endif
+<		"shell_error" also works, for backwards compatibility.
+
+					*v:statusmsg* *statusmsg-variable*
+v:statusmsg	Last given status message.  It's allowed to set this variable.
+
+				*v:termresponse* *termresponse-variable*
+v:termresponse	The escape sequence returned by the terminal for the |t_RV|
+		termcap entry.  It is set when Vim receives an escape sequence
+		that starts with ESC [ or CSI and ends in a 'c', with only
+		digits, ';' and '.' in between.
+		When this option is set, the TermResponse autocommand event is
+		fired, so that you can react to the response from the
+		terminal.
+		The response from a new xterm is: "<Esc>[ Pp ; Pv ; Pc c".  Pp
+		is the terminal type: 0 for vt100 and 1 for vt220.  Pv is the
+		patch level (since this was introduced in patch 95, it's
+		always 95 or bigger).  Pc is always zero.
+		{only when compiled with |+termresponse| feature}
+
+				*v:this_session* *this_session-variable*
+v:this_session	Full filename of the last loaded or saved session file.  See
+		|:mksession|.  It is allowed to set this variable.  When no
+		session file has been saved, this variable is empty.
+		"this_session" also works, for backwards compatibility.
+
+					*v:throwpoint* *throwpoint-variable*
+v:throwpoint	The point where the exception most recently caught and not
+		finished was thrown.  Not set when commands are typed.  See
+		also |v:exception| and |throw-variables|.
+		Example: >
+	:try
+	:  throw "oops"
+	:catch /.*/
+	:  echo "Exception from" v:throwpoint
+	:endtry
+<		Output: "Exception from test.vim, line 2"
+
+					*v:version* *version-variable*
+v:version	Version number of Vim: Major version number times 100 plus
+		minor version number.  Version 5.0 is 500.  Version 5.1 (5.01)
+		is 501.  Read-only.  "version" also works, for backwards
+		compatibility.
+		Use |has()| to check if a certain patch was included, e.g.: >
+			if has("patch123")
+<		Note that patch numbers are specific to the version, thus both
+		version 5.0 and 5.1 may have a patch 123, but these are
+		completely different.
+
+					*v:warningmsg* *warningmsg-variable*
+v:warningmsg	Last given warning message.  It's allowed to set this variable.
+
+==============================================================================
+4. Builtin Functions					*functions*
+
+See |function-list| for a list grouped by what the function is used for.
+
+(Use CTRL-] on the function name to jump to the full explanation)
+
+USAGE				RESULT	DESCRIPTION	~
+
+append( {lnum}, {string})	Number  append {string} below line {lnum}
+argc()				Number	number of files in the argument list
+argidx()			Number  current index in the argument list
+argv( {nr})			String	{nr} entry of the argument list
+browse( {save}, {title}, {initdir}, {default})
+				String	put up a file requester
+bufexists( {expr})		Number	TRUE if buffer {expr} exists
+buflisted( {expr})		Number  TRUE if buffer {expr} is listed
+bufloaded( {expr})		Number  TRUE if buffer {expr} is loaded
+bufname( {expr})		String	Name of the buffer {expr}
+bufnr( {expr})			Number	Number of the buffer {expr}
+bufwinnr( {expr})		Number	window number of buffer {expr}
+byte2line( {byte})		Number	line number at byte count {byte}
+char2nr( {expr})		Number	ASCII value of first char in {expr}
+cindent( {lnum})		Number  C indent for line {lnum}
+col( {expr})			Number	column nr of cursor or mark
+confirm( {msg} [, {choices} [, {default} [, {type}]]])
+				Number	number of choice picked by user
+cscope_connection( [{num} , {dbpath} [, {prepend}]])
+				Number	checks existence of cscope connection
+cursor( {lnum}, {col})		Number  position cursor at {lnum}, {col}
+delete( {fname})		Number	delete file {fname}
+did_filetype()			Number	TRUE if FileType autocommand event used
+escape( {string}, {chars})	String	escape {chars} in {string} with '\'
+eventhandler( )			Number  TRUE if inside an event handler
+executable( {expr})		Number	1 if executable {expr} exists
+exists( {expr})			Number	TRUE if {expr} exists
+expand( {expr})			String	expand special keywords in {expr}
+filereadable( {file})		Number	TRUE if {file} is a readable file
+filewritable( {file})		Number	TRUE if {file} is a writable file
+fnamemodify( {fname}, {mods})	String	modify file name
+foldclosed( {lnum})		Number  first line of fold at {lnum} if closed
+foldclosedend( {lnum})		Number  last line of fold at {lnum} if closed
+foldlevel( {lnum})		Number	fold level at {lnum}
+foldtext( )			String  line displayed for closed fold
+foreground( )			Number	bring the Vim window to the foreground
+getchar( [expr])		Number  get one character from the user
+getcharmod( )			Number  modifiers for the last typed character
+getbufvar( {expr}, {varname})		variable {varname} in buffer {expr}
+getcmdline()			String	return the current command-line
+getcmdpos()			Number	return cursor position in command-line
+getcwd()			String	the current working directory
+getfsize( {fname})		Number	size in bytes of file
+getftime( {fname})		Number	last modification time of file
+getline( {lnum})		String	line {lnum} from current buffer
+getreg( [{regname}])		String  contents of register
+getregtype( [{regname}])	String  type of register
+getwinposx()			Number	X coord in pixels of GUI Vim window
+getwinposy()			Number	Y coord in pixels of GUI Vim window
+getwinvar( {nr}, {varname})		variable {varname} in window {nr}
+glob( {expr})			String	expand file wildcards in {expr}
+globpath( {path}, {expr})	String	do glob({expr}) for all dirs in {path}
+has( {feature})			Number	TRUE if feature {feature} supported
+hasmapto( {what} [, {mode}])	Number	TRUE if mapping to {what} exists
+histadd( {history},{item})	String	add an item to a history
+histdel( {history} [, {item}])	String	remove an item from a history
+histget( {history} [, {index}])	String	get the item {index} from a history
+histnr( {history})		Number	highest index of a history
+hlexists( {name})		Number	TRUE if highlight group {name} exists
+hlID( {name})			Number	syntax ID of highlight group {name}
+hostname()			String	name of the machine Vim is running on
+iconv( {expr}, {from}, {to})	String  convert encoding of {expr}
+indent( {lnum})			Number  indent of line {lnum}
+input( {prompt} [, {text}])	String	get input from the user
+inputdialog( {p} [, {t} [, {c}]]) String  like input() but in a GUI dialog
+inputrestore()			Number  restore typeahead
+inputsave()			Number  save and clear typeahead
+inputsecret( {prompt} [, {text}]) String  like input() but hiding the text
+isdirectory( {directory})	Number	TRUE if {directory} is a directory
+libcall( {lib}, {func}, {arg})	String  call {func} in library {lib} with {arg}
+libcallnr( {lib}, {func}, {arg})  Number  idem, but return a Number
+line( {expr})			Number	line nr of cursor, last line or mark
+line2byte( {lnum})		Number	byte count of line {lnum}
+lispindent( {lnum})		Number  Lisp indent for line {lnum}
+localtime()			Number	current time
+maparg( {name}[, {mode}])	String	rhs of mapping {name} in mode {mode}
+mapcheck( {name}[, {mode}])	String	check for mappings matching {name}
+match( {expr}, {pat}[, {start}])
+				Number	position where {pat} matches in {expr}
+matchend( {expr}, {pat}[, {start}])
+				Number	position where {pat} ends in {expr}
+matchstr( {expr}, {pat}[, {start}])
+				String	match of {pat} in {expr}
+mode()				String  current editing mode
+nextnonblank( {lnum})		Number	line nr of non-blank line >= {lnum}
+nr2char( {expr})		String	single char with ASCII value {expr}
+prevnonblank( {lnum})		Number	line nr of non-blank line <= {lnum}
+remote_expr( {server}, {string} [, {idvar}])
+				String	send expression
+remote_foreground( {server})	Number	bring Vim server to the foreground
+remote_peek( {serverid} [, {retvar}])
+				Number	check for reply string
+remote_read( {serverid})	String	read reply string
+remote_send( {server}, {string} [, {idvar}])
+				String	send key sequence
+rename( {from}, {to})		Number  rename (move) file from {from} to {to}
+resolve( {filename})		String  get filename a shortcut points to
+search( {pattern} [, {flags}])	Number  search for {pattern}
+searchpair( {start}, {middle}, {end} [, {flags} [, {skip}]])
+				Number  search for other end of start/end pair
+server2client( {clientid}, {string})
+				Number	send reply string
+serverlist()			String	get a list of available servers
+setbufvar( {expr}, {varname}, {val})	set {varname} in buffer {expr} to {val}
+setcmdpos( {pos})		Number	set cursor position in command-line
+setline( {lnum}, {line})	Number	set line {lnum} to {line}
+setreg( {n}, {v}[, {opt}])	Number  set register to value and type
+setwinvar( {nr}, {varname}, {val})	set {varname} in window {nr} to {val}
+simplify( {filename})		String  simplify filename as much as possible
+strftime( {format}[, {time}])	String	time in specified format
+stridx( {haystack}, {needle})	Number	first index of {needle} in {haystack}
+strlen( {expr})			Number	length of the String {expr}
+strpart( {src}, {start}[, {len}])
+				String	{len} characters of {src} at {start}
+strridx( {haystack}, {needle})	Number	last index of {needle} in {haystack}
+strtrans( {expr})		String	translate string to make it printable
+submatch( {nr})			String  specific match in ":substitute"
+substitute( {expr}, {pat}, {sub}, {flags})
+				String	all {pat} in {expr} replaced with {sub}
+synID( {line}, {col}, {trans})	Number	syntax ID at {line} and {col}
+synIDattr( {synID}, {what} [, {mode}])
+				String	attribute {what} of syntax ID {synID}
+synIDtrans( {synID})		Number	translated syntax ID of {synID}
+system( {expr})			String	output of shell command {expr}
+tempname()			String	name for a temporary file
+tolower( {expr})		String	the String {expr} switched to lowercase
+toupper( {expr})		String	the String {expr} switched to uppercase
+type( {name})			Number	type of variable {name}
+virtcol( {expr})		Number	screen column of cursor or mark
+visualmode( [expr])		String	last visual mode used
+winbufnr( {nr})			Number	buffer number of window {nr}
+wincol()			Number	window column of the cursor
+winheight( {nr})		Number	height of window {nr}
+winline()			Number	window line of the cursor
+winnr()				Number	number of current window
+winrestcmd()			String  returns command to restore window sizes
+winwidth( {nr})			Number	width of window {nr}
+
+append({lnum}, {string})				*append()*
+		Append the text {string} after line {lnum} in the current
+		buffer.  {lnum} can be zero, to insert a line before the first
+		one.  Returns 1 for failure ({lnum} out of range) or 0 for
+		success.
+
+							*argc()*
+argc()		The result is the number of files in the argument list of the
+		current window.  See |arglist|.
+
+							*argidx()*
+argidx()	The result is the current index in the argument list.  0 is
+		the first file.  argc() - 1 is the last one.  See |arglist|.
+
+							*argv()*
+argv({nr})	The result is the {nr}th file in the argument list of the
+		current window.  See |arglist|.  "argv(0)" is the first one.
+		Example: >
+	:let i = 0
+	:while i < argc()
+	:  let f = escape(argv(i), '. ')
+	:  exe 'amenu Arg.' . f . ' :e ' . f . '<CR>'
+	:  let i = i + 1
+	:endwhile
+<
+							*browse()*
+browse({save}, {title}, {initdir}, {default})
+		Put up a file requester.  This only works when "has("browse")"
+		returns non-zero (only in some GUI versions).
+		The input fields are:
+		    {save}	when non-zero, select file to write
+		    {title}	title for the requester
+		    {initdir}	directory to start browsing in
+		    {default}	default file name
+		When the "Cancel" button is hit, something went wrong, or
+		browsing is not possible, an empty string is returned.
+
+bufexists({expr})					*bufexists()*
+		The result is a Number, which is non-zero if a buffer called
+		{expr} exists.
+		If the {expr} argument is a string it must match a buffer name
+		exactly.
+		If the {expr} argument is a number buffer numbers are used.
+		Unlisted buffers will be found.
+		Note that help files are listed by their short name in the
+		output of |:buffers|, but bufexists() requires using their
+		long name to be able to find them.
+		Use "bufexists(0)" to test for the existence of an alternate
+		file name.
+							*buffer_exists()*
+		Obsolete name: buffer_exists().
+
+buflisted({expr})					*buflisted()*
+		The result is a Number, which is non-zero if a buffer called
+		{expr} exists and is listed (has the 'buflisted' option set).
+		The {expr} argument is used like with bufexists().
+
+bufloaded({expr})					*bufloaded()*
+		The result is a Number, which is non-zero if a buffer called
+		{expr} exists and is loaded (shown in a window or hidden).
+		The {expr} argument is used like with bufexists().
+
+bufname({expr})						*bufname()*
+		The result is the name of a buffer, as it is displayed by the
+		":ls" command.
+		If {expr} is a Number, that buffer number's name is given.
+		Number zero is the alternate buffer for the current window.
+		If {expr} is a String, it is used as a |file-pattern| to match
+		with the buffer names.  This is always done like 'magic' is
+		set and 'cpoptions' is empty.  When there is more than one
+		match an empty string is returned.
+		"" or "%" can be used for the current buffer, "#" for the
+		alternate buffer.
+		A full match is preferred, otherwise a match at the start, end
+		or middle of the buffer name is accepted.
+		Listed buffers are found first.  If there is a single match
+		with a listed buffer, that one is returned.  Next unlisted
+		buffers are searched for.
+		If the {expr} is a String, but you want to use it as a buffer
+		number, force it to be a Number by adding zero to it: >
+			:echo bufname("3" + 0)
+<		If the buffer doesn't exist, or doesn't have a name, an empty
+		string is returned. >
+	bufname("#")		alternate buffer name
+	bufname(3)		name of buffer 3
+	bufname("%")		name of current buffer
+	bufname("file2")	name of buffer where "file2" matches.
+<							*buffer_name()*
+		Obsolete name: buffer_name().
+
+							*bufnr()*
+bufnr({expr})	The result is the number of a buffer, as it is displayed by
+		the ":ls" command.  For the use of {expr}, see |bufname()|
+		above.  If the buffer doesn't exist, -1 is returned.
+		bufnr("$") is the last buffer: >
+	:let last_buffer = bufnr("$")
+<		The result is a Number, which is the highest buffer number
+		of existing buffers.  Note that not all buffers with a smaller
+		number necessarily exist, because ":bwipeout" may have removed
+		them.  Use bufexists() to test for the existence of a buffer.
+							*buffer_number()*
+		Obsolete name: buffer_number().
+							*last_buffer_nr()*
+		Obsolete name for bufnr("$"): last_buffer_nr().
+
+bufwinnr({expr})					*bufwinnr()*
+		The result is a Number, which is the number of the first
+		window associated with buffer {expr}.  For the use of {expr},
+		see |bufname()| above.  If buffer {expr} doesn't exist or
+		there is no such window, -1 is returned.  Example: >
+
+	echo "A window containing buffer 1 is " . (bufwinnr(1))
+
+<		The number can be used with |CTRL-W_w| and ":wincmd w"
+		|:wincmd|.
+
+
+byte2line({byte})					*byte2line()*
+		Return the line number that contains the character at byte
+		count {byte} in the current buffer.  This includes the
+		end-of-line character, depending on the 'fileformat' option
+		for the current buffer.  The first character has byte count
+		one.
+		Also see |line2byte()|, |go| and |:goto|.
+		{not available when compiled without the |+byte_offset|
+		feature}
+
+char2nr({expr})						*char2nr()*
+		Return number value of the first char in {expr}.  Examples: >
+			char2nr(" ")		returns 32
+			char2nr("ABC")		returns 65
+<		The current 'encoding' is used.  Example for "utf-8": >
+			char2nr("á")		returns 225
+			char2nr("á"[0])		returns 195
+
+cindent({lnum})						*cindent()*
+		Get the amount of indent for line {lnum} according the C
+		indenting rules, as with 'cindent'.
+		The indent is counted in spaces, the value of 'tabstop' is
+		relevant.  {lnum} is used just like in |getline()|.
+		When {lnum} is invalid or Vim was not compiled the |+cindent|
+		feature, -1 is returned.
+
+							*col()*
+col({expr})	The result is a Number, which is the column of the file
+		position given with {expr}.  The accepted positions are:
+		    .	    the cursor position
+		    $	    the end of the cursor line (the result is the
+			    number of characters in the cursor line plus one)
+		    'x	    position of mark x (if the mark is not set, 0 is
+			    returned)
+		For the screen column position use |virtcol()|.
+		Note that only marks in the current file can be used.
+		Examples: >
+			col(".")		column of cursor
+			col("$")		length of cursor line plus one
+			col("'t")		column of mark t
+			col("'" . markname)	column of mark markname
+<		The first column is 1.  0 is returned for an error.
+		For the cursor position, when 'virtualedit' is active, the
+		column is one higher if the cursor is after the end of the
+		line.  This can be used to obtain the column in Insert mode: >
+			:imap <F2> <C-O>:let save_ve = &ve<CR>
+				\<C-O>:set ve=all<CR>
+				\<C-O>:echo col(".") . "\n" <Bar>
+				\let &ve = save_ve<CR>
+<
+						*confirm()*
+confirm({msg} [, {choices} [, {default} [, {type}]]])
+		Confirm() offers the user a dialog, from which a choice can be
+		made.  It returns the number of the choice.  For the first
+		choice this is 1.
+		Note: confirm() is only supported when compiled with dialog
+		support, see |+dialog_con| and |+dialog_gui|.
+		{msg} is displayed in a |dialog| with {choices} as the
+		alternatives.  When {choices} is missing or empty, "&OK" is
+		used (and translated).
+		{msg} is a String, use '\n' to include a newline.  Only on
+		some systems the string is wrapped when it doesn't fit.
+		{choices} is a String, with the individual choices separated
+		by '\n', e.g. >
+			confirm("Save changes?", "&Yes\n&No\n&Cancel")
+<		The letter after the '&' is the shortcut key for that choice.
+		Thus you can type 'c' to select "Cancel".  The shortcut does
+		not need to be the first letter: >
+			confirm("file has been modified", "&Save\nSave &All")
+<		For the console, the first letter of each choice is used as
+		the default shortcut key.
+		The optional {default} argument is the number of the choice
+		that is made if the user hits <CR>.  Use 1 to make the first
+		choice the default one.  Use 0 to not set a default.  If
+		{default} is omitted, 1 is used.
+		The optional {type} argument gives the type of dialog.  This
+		is only used for the icon of the Win32 GUI.  It can be one of
+		these values: "Error", "Question", "Info", "Warning" or
+		"Generic".  Only the first character is relevant.  When {type}
+		is omitted, "Generic" is used.
+		If the user aborts the dialog by pressing <Esc>, CTRL-C,
+		or another valid interrupt key, confirm() returns 0.
+
+		An example: >
+   :let choice = confirm("What do you want?", "&Apples\n&Oranges\n&Bananas", 2)
+   :if choice == 0
+   :	echo "make up your mind!"
+   :elseif choice == 3
+   :	echo "tasteful"
+   :else
+   :	echo "I prefer bananas myself."
+   :endif
+<		In a GUI dialog, buttons are used.  The layout of the buttons
+		depends on the 'v' flag in 'guioptions'.  If it is included,
+		the buttons are always put vertically.  Otherwise,  confirm()
+		tries to put the buttons in one horizontal line.  If they
+		don't fit, a vertical layout is used anyway.  For some systems
+		the horizontal layout is always used.
+
+							*cscope_connection()*
+cscope_connection([{num} , {dbpath} [, {prepend}]])
+		Checks for the existence of a |cscope| connection.  If no
+		parameters are specified, then the function returns:
+			0, if cscope was not available (not compiled in), or
+			   if there are no cscope connections;
+			1, if there is at least one cscope connection.
+
+		If parameters are specified, then the value of {num}
+		determines how existence of a cscope connection is checked:
+
+		{num}	Description of existence check
+		-----	------------------------------
+		0	Same as no parameters (e.g., "cscope_connection()").
+		1	Ignore {prepend}, and use partial string matches for
+			{dbpath}.
+		2	Ignore {prepend}, and use exact string matches for
+			{dbpath}.
+		3	Use {prepend}, use partial string matches for both
+			{dbpath} and {prepend}.
+		4	Use {prepend}, use exact string matches for both
+			{dbpath} and {prepend}.
+
+		Note: All string comparisons are case sensitive!
+
+		Examples.  Suppose we had the following (from ":cs show"): >
+
+  # pid    database name			prepend path
+  0 27664  cscope.out				/usr/local
+<
+		Invocation					Return Val ~
+		----------					---------- >
+		cscope_connection()					1
+		cscope_connection(1, "out")				1
+		cscope_connection(2, "out")				0
+		cscope_connection(3, "out")				0
+		cscope_connection(3, "out", "local")			1
+		cscope_connection(4, "out")				0
+		cscope_connection(4, "out", "local")			0
+		cscope_connection(4, "cscope.out", "/usr/local")	1
+<
+cursor({lnum}, {col})					*cursor()*
+		Positions the cursor at the column {col} in the line {lnum}.
+		Does not change the jumplist.
+		If {lnum} is greater than the number of lines in the buffer,
+		the cursor will be positioned at the last line in the buffer.
+		If {lnum} is zero, the cursor will stay in the current line.
+		If {col} is greater than the number of characters in the line,
+		the cursor will be positioned at the last character in the
+		line.
+		If {col} is zero, the cursor will stay in the current column.
+
+							*delete()*
+delete({fname})	Deletes the file by the name {fname}.  The result is a Number,
+		which is 0 if the file was deleted successfully, and non-zero
+		when the deletion failed.
+
+							*did_filetype()*
+did_filetype()	Returns non-zero when autocommands are being executed and the
+		FileType event has been triggered at least once.  Can be used
+		to avoid triggering the FileType event again in the scripts
+		that detect the file type. |FileType|
+		When editing another file, the counter is reset, thus this
+		really checks if the FileType event has been triggered for the
+		current buffer.  This allows an autocommand that starts
+		editing another buffer to set 'filetype' and load a syntax
+		file.
+
+escape({string}, {chars})				*escape()*
+		Escape the characters in {chars} that occur in {string} with a
+		backslash.  Example: >
+			:echo escape('c:\program files\vim', ' \')
+<		results in: >
+			c:\\program\ files\\vim
+<
+eventhandler()						*eventhandler()*
+		Returns 1 when inside an event handler.  That is that Vim got
+		interrupted while waiting for the user to type a character,
+		e.g., when dropping a file on Vim.  This means interactive
+		commands cannot be used.  Otherwise zero is returned.
+
+executable({expr})					*executable()*
+		This function checks if an executable with the name {expr}
+		exists.  {expr} must be the name of the program without any
+		arguments.  executable() uses the normal $PATH.
+		The result is a Number:
+			1	exists
+			0	does not exist
+			-1	not implemented on this system
+
+							*exists()*
+exists({expr})	The result is a Number, which is non-zero if {expr} is
+		defined, zero otherwise.  The {expr} argument is a string,
+		which contains one of these:
+			&option-name	Vim option (only checks if it exists,
+					not if it really works)
+			+option-name	Vim option that works.
+			$ENVNAME	environment variable (could also be
+					done by comparing with an empty
+					string)
+			*funcname	built-in function (see |functions|)
+					or user defined function (see
+					|user-functions|).
+			varname		internal variable (see
+					|internal-variables|).  Does not work
+					for |curly-braces-names|.
+			:cmdname	Ex command: built-in command, user
+					command or command modifier |:command|.
+					Returns:
+					1  for match with start of a command
+					2  full match with a command
+					3  matches several user commands
+					To check for a supported command
+					always check the return value to be 2.
+			#event		autocommand defined for this event
+			#event#pattern	autocommand defined for this event and
+					pattern (the pattern is taken
+					literally and compared to the
+					autocommand patterns character by
+					character)
+		For checking for a supported feature use |has()|.
+
+		Examples: >
+			exists("&shortname")
+			exists("$HOSTNAME")
+			exists("*strftime")
+			exists("*s:MyFunc")
+			exists("bufcount")
+			exists(":Make")
+			exists("#CursorHold");
+			exists("#BufReadPre#*.gz")
+<		There must be no space between the symbol (&/$/*/#) and the
+		name.
+		Note that the argument must be a string, not the name of the
+		variable itself!  For example: >
+			exists(bufcount)
+<		This doesn't check for existence of the "bufcount" variable,
+		but gets the contents of "bufcount", and checks if that
+		exists.
+
+expand({expr} [, {flag}])				*expand()*
+		Expand wildcards and the following special keywords in {expr}.
+		The result is a String.
+
+		When there are several matches, they are separated by <NL>
+		characters.  [Note: in version 5.0 a space was used, which
+		caused problems when a file name contains a space]
+
+		If the expansion fails, the result is an empty string.  A name
+		for a non-existing file is not included.
+
+		When {expr} starts with '%', '#' or '<', the expansion is done
+		like for the |cmdline-special| variables with their associated
+		modifiers.  Here is a short overview:
+
+			%		current file name
+			#		alternate file name
+			#n		alternate file name n
+			<cfile>		file name under the cursor
+			<afile>		autocmd file name
+			<abuf>		autocmd buffer number (as a String!)
+			<amatch>	autocmd matched name
+			<sfile>		sourced script file name
+			<cword>		word under the cursor
+			<cWORD>		WORD under the cursor
+			<client>	the {clientid} of the last received
+					message |server2client()|
+		Modifiers:
+			:p		expand to full path
+			:h		head (last path component removed)
+			:t		tail (last path component only)
+			:r		root (one extension removed)
+			:e		extension only
+
+		Example: >
+			:let &tags = expand("%:p:h") . "/tags"
+<		Note that when expanding a string that starts with '%', '#' or
+		'<', any following text is ignored.  This does NOT work: >
+			:let doesntwork = expand("%:h.bak")
+<		Use this: >
+			:let doeswork = expand("%:h") . ".bak"
+<		Also note that expanding "<cfile>" and others only returns the
+		referenced file name without further expansion.  If "<cfile>"
+		is "~/.cshrc", you need to do another expand() to have the
+		"~/" expanded into the path of the home directory: >
+			:echo expand(expand("<cfile>"))
+<
+		There cannot be white space between the variables and the
+		following modifier.  The |fnamemodify()| function can be used
+		to modify normal file names.
+
+		When using '%' or '#', and the current or alternate file name
+		is not defined, an empty string is used.  Using "%:p" in a
+		buffer with no name, results in the current directory, with a
+		'/' added.
+
+		When {expr} does not start with '%', '#' or '<', it is
+		expanded like a file name is expanded on the command line.
+		'suffixes' and 'wildignore' are used, unless the optional
+		{flag} argument is given and it is non-zero.  Names for
+		non-existing files are included.
+
+		Expand() can also be used to expand variables and environment
+		variables that are only known in a shell.  But this can be
+		slow, because a shell must be started.  See |expr-env-expand|.
+		The expanded variable is still handled like a list of file
+		names.  When an environment variable cannot be expanded, it is
+		left unchanged.  Thus ":echo expand('$FOOBAR')" results in
+		"$FOOBAR".
+
+		See |glob()| for finding existing files.  See |system()| for
+		getting the raw output of an external command.
+
+filereadable({file})					*filereadable()*
+		The result is a Number, which is TRUE when a file with the
+		name {file} exists, and can be read.  If {file} doesn't exist,
+		or is a directory, the result is FALSE.  {file} is any
+		expression, which is used as a String.
+							*file_readable()*
+		Obsolete name: file_readable().
+
+filewritable({file})					*filewritable()*
+		The result is a Number, which is 1 when a file with the
+		name {file} exists, and can be written.  If {file} doesn't
+		exist, or is not writable, the result is 0.  If (file) is a
+		directory, and we can write to it, the result is 2.
+
+fnamemodify({fname}, {mods})				*fnamemodify()*
+		Modify file name {fname} according to {mods}.  {mods} is a
+		string of characters like it is used for file names on the
+		command line.  See |filename-modifiers|.
+		Example: >
+			:echo fnamemodify("main.c", ":p:h")
+<		results in: >
+			/home/mool/vim/vim/src
+<		Note: Environment variables and "~" don't work in {fname}, use
+		|expand()| first then.
+
+foldclosed({lnum})					*foldclosed()*
+		The result is a Number.  If the line {lnum} is in a closed
+		fold, the result is the number of the first line in that fold.
+		If the line {lnum} is not in a closed fold, -1 is returned.
+
+foldclosedend({lnum})					*foldclosedend()*
+		The result is a Number.  If the line {lnum} is in a closed
+		fold, the result is the number of the last line in that fold.
+		If the line {lnum} is not in a closed fold, -1 is returned.
+
+foldlevel({lnum})					*foldlevel()*
+		The result is a Number, which is the foldlevel of line {lnum}
+		in the current buffer.  For nested folds the deepest level is
+		returned.  If there is no fold at line {lnum}, zero is
+		returned.  It doesn't matter if the folds are open or closed.
+		When used while updating folds (from 'foldexpr') -1 is
+		returned for lines where folds are still to be updated and the
+		foldlevel is unknown.  As a special case the level of the
+		previous line is usually available.
+
+							*foldtext()*
+foldtext()	Returns a String, to be displayed for a closed fold.  This is
+		the default function used for the 'foldtext' option and should
+		only be called from evaluating 'foldtext'.  It uses the
+		|v:foldstart|, |v:foldend| and |v:folddashes| variables.
+		The returned string looks like this: >
+			+-- 45 lines: abcdef
+<		The number of dashes depends on the foldlevel.  The "45" is
+		the number of lines in the fold.  "abcdef" is the text in the
+		first non-blank line of the fold.  Leading white space, "//"
+		or "/*" and the text from the 'foldmarker' and 'commentstring'
+		options is removed.
+		{not available when compiled without the |+folding| feature}
+
+							*foreground()*
+foreground()	Move the Vim window to the foreground.  Useful when sent from
+		a client to a Vim server. |remote_send()|
+		On Win32 systems this might not work, the OS does not always
+		allow a window to bring itself to the foreground.  Use
+		|remote_foreground()| instead.
+		{only in the Win32, Athena, Motif and GTK GUI versions and the
+		Win32 console version}
+
+getchar([expr])						*getchar()*
+		Get a single character from the user.  If it is an 8-bit
+		character, the result is a number.  Otherwise a String is
+		returned with the encoded character.  For a special key it's a
+		sequence of bytes starting with 0x80 (decimal: 128).
+		If [expr] is omitted, wait until a character is available.
+		If [expr] is 0, only get a character when one is available.
+		If [expr] is 1, only check if a character is available, it is
+				not consumed.  If a normal character is
+				available, it is returned, otherwise a
+				non-zero value is returned.
+		If a normal character available, it is returned as a Number.
+		Use nr2char() to convert it to a String.
+		The returned value is zero if no character is available.
+		The returned value is a string of characters for special keys
+		and when a modifier (shift, control, alt) was used.
+		There is no prompt, you will somehow have to make clear to the
+		user that a character has to be typed.
+		There is no mapping for the character.
+		Key codes are replaced, thus when the user presses the <Del>
+		key you get the code for the <Del> key, not the raw character
+		sequence.  Examples: >
+			getchar() == "\<Del>"
+			getchar() == "\<S-Left>"
+<		This example redefines "f" to ignore case: >
+			:nmap f :call FindChar()<CR>
+			:function FindChar()
+			:  let c = nr2char(getchar())
+			:  while col('.') < col('$') - 1
+			:    normal l
+			:    if getline('.')[col('.') - 1] ==? c
+			:      break
+			:    endif
+			:  endwhile
+			:endfunction
+
+getcharmod()						*getcharmod()*
+		The result is a Number which is the state of the modifiers for
+		the last obtained character with getchar() or in another way.
+		These values are added together:
+			2	shift
+			4	control
+			8	alt (meta)
+			16	mouse double click
+			32	mouse triple click
+			64	mouse quadruple click
+			128	Macintosh only: command
+		Only the modifiers that have not been included in the
+		character itself are obtained.  Thus Shift-a results in "A"
+		with no modifier.
+
+getbufvar({expr}, {varname})				*getbufvar()*
+		The result is the value of option or local buffer variable
+		{varname} in buffer {expr}.  Note that the name without "b:"
+		must be used.
+		This also works for a global or local window option, but it
+		doesn't work for a global or local window variable.
+		For the use of {expr}, see |bufname()| above.
+		When the buffer or variable doesn't exist an empty string is
+		returned, there is no error message.
+		Examples: >
+			:let bufmodified = getbufvar(1, "&mod")
+			:echo "todo myvar = " . getbufvar("todo", "myvar")
+<
+getcmdline()						*getcmdline()*
+		Return the current command-line.  Only works when the command
+		line is being edited, thus requires use of |c_CTRL-\_e| or
+		|c_CTRL-R_=|.
+		Example: >
+			:cmap <F7> <C-\>eescape(getcmdline(), ' \')<CR>
+<		Also see |getcmdpos()| and |setcmdpos()|.
+
+getcmdpos({pos})					*getcmdpos()*
+		Return the position of the cursor in the command line as a
+		byte count.  The first column is 1.
+		Only works when editing the command line, thus requires use of
+		|c_CTRL-\_e| or |c_CTRL-R_=|.  Returns 0 otherwise.
+		Also see |setcmdpos()| and |getcmdline()|.
+
+							*getcwd()*
+getcwd()	The result is a String, which is the name of the current
+		working directory.
+
+getfsize({fname})					*getfsize()*
+		The result is a Number, which is the size in bytes of the
+		given file {fname}.
+		If {fname} is a directory, 0 is returned.
+		If the file {fname} can't be found, -1 is returned.
+
+getftime({fname})					*getftime()*
+		The result is a Number, which is the last modification time of
+		the given file {fname}.  The value is measured as seconds
+		since 1st Jan 1970, and may be passed to strftime().  See also
+		|localtime()| and |strftime()|.
+		If the file {fname} can't be found -1 is returned.
+
+							*getline()*
+getline({lnum}) The result is a String, which is line {lnum} from the current
+		buffer.  Example: >
+			getline(1)
+<		When {lnum} is a String that doesn't start with a
+		digit, line() is called to translate the String into a Number.
+		To get the line under the cursor: >
+			getline(".")
+<		When {lnum} is smaller than 1 or bigger than the number of
+		lines in the buffer, an empty string is returned.
+
+getreg([{regname}])					*getreg()*
+		The result is a String, which is the contents of register
+		{regname}. Example: >
+			:let cliptext = getreg('*')
+<		getreg('=') returns the last evaluated value of the expression
+		register. (For use in maps).
+		If {regname} is not specified, |v:register| is used.
+
+getregtype([{regname}])					*getregtype()*
+		The result is a String, which is type of register {regname}.
+		The value will be one of:
+		    "v"			for |characterwise| text
+		    "V"			for |linewise| text
+		    "<CTRL-V>{width}"	for |blockwise-visual| text
+		    0			for an empty or unknown register
+		<CTRL-V> is one character with value 0x16.
+		If {regname} is not specified, |v:register| is used.
+
+							*getwinposx()*
+getwinposx()	The result is a Number, which is the X coordinate in pixels of
+		the left hand side of the GUI Vim window.  The result will be
+		-1 if the information is not available.
+
+							*getwinposy()*
+getwinposy()	The result is a Number, which is the Y coordinate in pixels of
+		the top of the GUI Vim window.  The result will be -1 if the
+		information is not available.
+
+getwinvar({nr}, {varname})				*getwinvar()*
+		The result is the value of option or local window variable
+		{varname} in window {nr}.
+		This also works for a global or local buffer option, but it
+		doesn't work for a global or local buffer variable.
+		Note that the name without "w:" must be used.
+		Examples: >
+			:let list_is_on = getwinvar(2, '&list')
+			:echo "myvar = " . getwinvar(1, 'myvar')
+<
+							*glob()*
+glob({expr})	Expand the file wildcards in {expr}.  The result is a String.
+		When there are several matches, they are separated by <NL>
+		characters.
+		If the expansion fails, the result is an empty string.
+		A name for a non-existing file is not included.
+
+		For most systems backticks can be used to get files names from
+		any external command.  Example: >
+			:let tagfiles = glob("`find . -name tags -print`")
+			:let &tags = substitute(tagfiles, "\n", ",", "g")
+<		The result of the program inside the backticks should be one
+		item per line.  Spaces inside an item are allowed.
+
+		See |expand()| for expanding special Vim variables.  See
+		|system()| for getting the raw output of an external command.
+
+globpath({path}, {expr})				*globpath()*
+		Perform glob() on all directories in {path} and concatenate
+		the results.  Example: >
+			:echo globpath(&rtp, "syntax/c.vim")
+<		{path} is a comma-separated list of directory names.  Each
+		directory name is prepended to {expr} and expanded like with
+		glob().  A path separator is inserted when needed.
+		To add a comma inside a directory name escape it with a
+		backslash.  Note that on MS-Windows a directory may have a
+		trailing backslash, remove it if you put a comma after it.
+		If the expansion fails for one of the directories, there is no
+		error message.
+		The 'wildignore' option applies: Names matching one of the
+		patterns in 'wildignore' will be skipped.
+
+							*has()*
+has({feature})	The result is a Number, which is 1 if the feature {feature} is
+		supported, zero otherwise.  The {feature} argument is a
+		string.  See |feature-list| below.
+		Also see |exists()|.
+
+hasmapto({what} [, {mode}])				*hasmapto()*
+		The result is a Number, which is 1 if there is a mapping that
+		contains {what} in somewhere in the rhs (what it is mapped to)
+		and this mapping exists in one of the modes indicated by
+		{mode}.
+		Both the global mappings and the mappings local to the current
+		buffer are checked for a match.
+		If no matching mapping is found 0 is returned.
+		The following characters are recognized in {mode}:
+			n	Normal mode
+			v	Visual mode
+			o	Operator-pending mode
+			i	Insert mode
+			l	Language-Argument ("r", "f", "t", etc.)
+			c	Command-line mode
+		When {mode} is omitted, "nvo" is used.
+
+		This function is useful to check if a mapping already exists
+		to a function in a Vim script.  Example: >
+			:if !hasmapto('\ABCdoit')
+			:   map <Leader>d \ABCdoit
+			:endif
+<		This installs the mapping to "\ABCdoit" only if there isn't
+		already a mapping to "\ABCdoit".
+
+histadd({history}, {item})				*histadd()*
+		Add the String {item} to the history {history} which can be
+		one of:					*hist-names*
+			"cmd"	 or ":"	  command line history
+			"search" or "/"   search pattern history
+			"expr"   or "="   typed expression history
+			"input"  or "@"	  input line history
+		If {item} does already exist in the history, it will be
+		shifted to become the newest entry.
+		The result is a Number: 1 if the operation was successful,
+		otherwise 0 is returned.
+
+		Example: >
+			:call histadd("input", strftime("%Y %b %d"))
+			:let date=input("Enter date: ")
+<		This function is not available in the |sandbox|.
+
+histdel({history} [, {item}])				*histdel()*
+		Clear {history}, ie. delete all its entries.  See |hist-names|
+		for the possible values of {history}.
+
+		If the parameter {item} is given as String, this is seen
+		as regular expression.  All entries matching that expression
+		will be removed from the history (if there are any).
+		Upper/lowercase must match, unless "\c" is used |/\c|.
+		If {item} is a Number, it will be interpreted as index, see
+		|:history-indexing|.  The respective entry will be removed
+		if it exists.
+
+		The result is a Number: 1 for a successful operation,
+		otherwise 0 is returned.
+
+		Examples:
+		Clear expression register history: >
+			:call histdel("expr")
+<
+		Remove all entries starting with "*" from the search history: >
+			:call histdel("/", '^\*')
+<
+		The following three are equivalent: >
+			:call histdel("search", histnr("search"))
+			:call histdel("search", -1)
+			:call histdel("search", '^'.histget("search", -1).'$')
+<
+		To delete the last search pattern and use the last-but-one for
+		the "n" command and 'hlsearch': >
+			:call histdel("search", -1)
+			:let @/ = histget("search", -1)
+
+histget({history} [, {index}])				*histget()*
+		The result is a String, the entry with Number {index} from
+		{history}.  See |hist-names| for the possible values of
+		{history}, and |:history-indexing| for {index}.  If there is
+		no such entry, an empty String is returned.  When {index} is
+		omitted, the most recent item from the history is used.
+
+		Examples:
+		Redo the second last search from history. >
+			:execute '/' . histget("search", -2)
+
+<		Define an Ex command ":H {num}" that supports re-execution of
+		the {num}th entry from the output of |:history|. >
+			:command -nargs=1 H execute histget("cmd", 0+<args>)
+<
+histnr({history})					*histnr()*
+		The result is the Number of the current entry in {history}.
+		See |hist-names| for the possible values of {history}.
+		If an error occurred, -1 is returned.
+
+		Example: >
+			:let inp_index = histnr("expr")
+<
+hlexists({name})					*hlexists()*
+		The result is a Number, which is non-zero if a highlight group
+		called {name} exists.  This is when the group has been
+		defined in some way.  Not necessarily when highlighting has
+		been defined for it, it may also have been used for a syntax
+		item.
+							*highlight_exists()*
+		Obsolete name: highlight_exists().
+
+							*hlID()*
+hlID({name})	The result is a Number, which is the ID of the highlight group
+		with name {name}.  When the highlight group doesn't exist,
+		zero is returned.
+		This can be used to retrieve information about the highlight
+		group.  For example, to get the background color of the
+		"Comment" group: >
+	:echo synIDattr(synIDtrans(hlID("Comment")), "bg")
+<							*highlightID()*
+		Obsolete name: highlightID().
+
+hostname()						*hostname()*
+		The result is a String, which is the name of the machine on
+		which Vim is currently running. Machine names greater than
+		256 characters long are truncated.
+
+iconv({expr}, {from}, {to})				*iconv()*
+		The result is a String, which is the text {expr} converted
+		from encoding {from} to encoding {to}.
+		When the conversion fails an empty string is returned.
+		The encoding names are whatever the iconv() library function
+		can accept, see ":!man 3 iconv".
+		Most conversions require Vim to be compiled with the |+iconv|
+		feature.  Otherwise only UTF-8 to latin1 conversion and back
+		can be done.
+		This can be used to display messages with special characters,
+		no matter what 'encoding' is set to.  Write the message in
+		UTF-8 and use: >
+			echo iconv(utf8_str, "utf-8", &enc)
+<		Note that Vim uses UTF-8 for all Unicode encodings, conversion
+		from/to UCS-2 is automatically changed to use UTF-8.  You
+		cannot use UCS-2 in a string anyway, because of the NUL bytes.
+		{only available when compiled with the +multi_byte feature}
+
+							*indent()*
+indent({lnum})	The result is a Number, which is indent of line {lnum} in the
+		current buffer.  The indent is counted in spaces, the value
+		of 'tabstop' is relevant.  {lnum} is used just like in
+		|getline()|.
+		When {lnum} is invalid -1 is returned.
+
+input({prompt} [, {text}])				*input()*
+		The result is a String, which is whatever the user typed on
+		the command-line.  The parameter is either a prompt string, or
+		a blank string (for no prompt).  A '\n' can be used in the
+		prompt to start a new line.  The highlighting set with
+		|:echohl| is used for the prompt.  The input is entered just
+		like a command-line, with the same editing commands and
+		mappings.  There is a separate history for lines typed for
+		input().
+		If the optional {text} is present, this is used for the
+		default reply, as if the user typed this.
+		NOTE: This must not be used in a startup file, for the
+		versions that only run in GUI mode (e.g., the Win32 GUI).
+		Note: When input() is called from within a mapping it will
+		consume remaining characters from that mapping, because a
+		mapping is handled like the characters were typed.
+		Use |inputsave()| before input() and |inputrestore()|
+		after input() to avoid that.  Another solution is to avoid
+		that further characters follow in the mapping, e.g., by using
+		|:execute| or |:normal|.
+
+		Example: >
+			:if input("Coffee or beer? ") == "beer"
+			:  echo "Cheers!"
+			:endif
+<		Example with default text: >
+			:let color = input("Color? ", "white")
+<		Example with a mapping: >
+			:nmap \x :call GetFoo()<CR>:exe "/" . Foo<CR>
+			:function GetFoo()
+			:  call inputsave()
+			:  let g:Foo = input("enter search pattern: ")
+			:  call inputrestore()
+			:endfunction
+
+inputdialog({prompt} [, {text} [, {cancelreturn}]])		*inputdialog()*
+		Like input(), but when the GUI is running and text dialogs are
+		supported, a dialog window pops up to input the text.
+		Example: >
+			:let n = inputdialog("value for shiftwidth", &sw)
+			:if n != ""
+			:  let &sw = n
+			:endif
+<		When the dialog is cancelled {cancelreturn} is returned.  When
+		omitted an empty string is returned.
+		Hitting <Enter> works like pressing the OK button.  Hitting
+		<Esc> works like pressing the Cancel button.
+
+inputrestore()						*inputrestore()*
+		Restore typeahead that was saved with a previous inputsave().
+		Should be called the same number of times inputsave() is
+		called.  Calling it more often is harmless though.
+		Returns 1 when there is nothing to restore, 0 otherwise.
+
+inputsave()						*inputsave()*
+		Preserve typeahead (also from mappings) and clear it, so that
+		a following prompt gets input from the user.  Should be
+		followed by a matching inputrestore() after the prompt.  Can
+		be used several times, in which case there must be just as
+		many inputrestore() calls.
+		Returns 1 when out of memory, 0 otherwise.
+
+inputsecret({prompt} [, {text}])			*inputsecret()*
+		This function acts much like the |input()| function with but
+		two exceptions:
+		a) the user's response will be displayed as a sequence of
+		asterisks ("*") thereby keeping the entry secret, and
+		b) the user's response will not be recorded on the input
+		|history| stack.
+		The result is a String, which is whatever the user actually
+		typed on the command-line in response to the issued prompt.
+
+isdirectory({directory})				*isdirectory()*
+		The result is a Number, which is non-zero when a directory
+		with the name {directory} exists.  If {directory} doesn't
+		exist, or isn't a directory, the result is FALSE.  {directory}
+		is any expression, which is used as a String.
+
+						*libcall()* *E364* *E368*
+libcall({libname}, {funcname}, {argument})
+		Call function {funcname} in the run-time library {libname}
+		with single argument {argument}.
+		This is useful to call functions in a library that you
+		especially made to be used with Vim.  Since only one argument
+		is possible, calling standard library functions is rather
+		limited.
+		The result is the String returned by the function.  If the
+		function returns NULL, this will appear as an empty string ""
+		to Vim.
+		If the function returns a number, use libcallnr()!
+		If {argument} is a number, it is passed to the function as an
+		int; if {argument} is a string, it is passed as a
+		null-terminated string.
+		This function will fail in |restricted-mode|.
+
+		libcall() allows you to write your own 'plug-in' extensions to
+		Vim without having to recompile the program.  It is NOT a
+		means to call system functions!  If you try to do so Vim will
+		very probably crash.
+
+		For Win32, the functions you write must be placed in a DLL
+		and use the normal C calling convention (NOT Pascal which is
+		used in Windows System DLLs).  The function must take exactly
+		one parameter, either a character pointer or a long integer,
+		and must return a character pointer or NULL.  The character
+		pointer returned must point to memory that will remain valid
+		after the function has returned (e.g. in static data in the
+		DLL).  If it points to allocated memory, that memory will
+		leak away.  Using a static buffer in the function should work,
+		it's then freed when the DLL is unloaded.
+
+		WARNING: If the function returns a non-valid pointer, Vim may
+		crash!  This also happens if the function returns a number,
+		because Vim thinks it's a pointer.
+		For Win32 systems, {libname} should be the filename of the DLL
+		without the ".DLL" suffix.  A full path is only required if
+		the DLL is not in the usual places.
+		For Unix: When compiling your own plugins, remember that the
+		object code must be compiled as position-independent ('PIC').
+		{only in Win32 on some Unix versions, when the |+libcall|
+		feature is present}
+		Examples: >
+			:echo libcall("libc.so", "getenv", "HOME")
+			:echo libcallnr("/usr/lib/libc.so", "getpid", "")
+<
+							*libcallnr()*
+libcallnr({libname}, {funcname}, {argument})
+		Just like libcall(), but used for a function that returns an
+		int instead of a string.
+		{only in Win32 on some Unix versions, when the |+libcall|
+		feature is present}
+		Example (not very useful...): >
+			:call libcallnr("libc.so", "printf", "Hello World!\n")
+			:call libcallnr("libc.so", "sleep", 10)
+<
+							*line()*
+line({expr})	The result is a Number, which is the line number of the file
+		position given with {expr}.  The accepted positions are:
+		    .	    the cursor position
+		    $	    the last line in the current buffer
+		    'x	    position of mark x (if the mark is not set, 0 is
+			    returned)
+		Note that only marks in the current file can be used.
+		Examples: >
+			line(".")		line number of the cursor
+			line("'t")		line number of mark t
+			line("'" . marker)	line number of mark marker
+<							*last-position-jump*
+		This autocommand jumps to the last known position in a file
+		just after opening it, if the '" mark is set: >
+	:au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g'\"" | endif
+<
+line2byte({lnum})					*line2byte()*
+		Return the byte count from the start of the buffer for line
+		{lnum}.  This includes the end-of-line character, depending on
+		the 'fileformat' option for the current buffer.  The first
+		line returns 1.
+		This can also be used to get the byte count for the line just
+		below the last line: >
+			line2byte(line("$") + 1)
+<		This is the file size plus one.
+		When {lnum} is invalid, or the |+byte_offset| feature has been
+		disabled at compile time, -1 is returned.
+		Also see |byte2line()|, |go| and |:goto|.
+
+lispindent({lnum})					*lispindent()*
+		Get the amount of indent for line {lnum} according the lisp
+		indenting rules, as with 'lisp'.
+		The indent is counted in spaces, the value of 'tabstop' is
+		relevant.  {lnum} is used just like in |getline()|.
+		When {lnum} is invalid or Vim was not compiled the
+		|+lispindent| feature, -1 is returned.
+
+localtime()						*localtime()*
+		Return the current time, measured as seconds since 1st Jan
+		1970.  See also |strftime()| and |getftime()|.
+
+maparg({name}[, {mode}])				*maparg()*
+		Return the rhs of mapping {name} in mode {mode}.  When there
+		is no mapping for {name}, an empty String is returned.
+		These characters can be used for {mode}:
+			"n"	Normal
+			"v"	Visual
+			"o"	Operator-pending
+			"i"	Insert
+			"c"	Cmd-line
+			"l"	langmap |language-mapping|
+			""	Normal, Visual and Operator-pending
+		When {mode} is omitted, the modes from "" are used.
+		The {name} can have special key names, like in the ":map"
+		command.  The returned String has special characters
+		translated like in the output of the ":map" command listing.
+		The mappings local to the current buffer are checked first,
+		then the global mappings.
+
+mapcheck({name}[, {mode}])				*mapcheck()*
+		Check if there is a mapping that matches with {name} in mode
+		{mode}.  See |maparg()| for {mode} and special names in
+		{name}.
+		A match happens with a mapping that starts with {name} and
+		with a mapping which is equal to the start of {name}.
+
+			matches mapping "a"     "ab"    "abc" ~
+		   mapcheck("a")	yes	yes	 yes
+		   mapcheck("abc")	yes	yes	 yes
+		   mapcheck("ax")	yes	no	 no
+		   mapcheck("b")	no	no	 no
+
+		The difference with maparg() is that mapcheck() finds a
+		mapping that matches with {name}, while maparg() only finds a
+		mapping for {name} exactly.
+		When there is no mapping that starts with {name}, an empty
+		String is returned.  If there is one, the rhs of that mapping
+		is returned.  If there are several mappings that start with
+		{name}, the rhs of one of them is returned.
+		The mappings local to the current buffer are checked first,
+		then the global mappings.
+		This function can be used to check if a mapping can be added
+		without being ambiguous.  Example: >
+	:if mapcheck("_vv") == ""
+	:   map _vv :set guifont=7x13<CR>
+	:endif
+<		This avoids adding the "_vv" mapping when there already is a
+		mapping for "_v" or for "_vvv".
+
+match({expr}, {pat}[, {start}])				*match()*
+		The result is a Number, which gives the index (byte offset) in
+		{expr} where {pat} matches.  A match at the first character
+		returns zero.  If there is no match -1 is returned.  Example: >
+			:echo match("testing", "ing")
+<		results in "4".
+		See |string-match| for how {pat} is used.
+		If {start} is given, the search starts from index {start}.
+		The result, however, is still the index counted from the
+		first character. Example: >
+			:echo match("testing", "ing", 2)
+<		result is again "4". >
+			:echo match("testing", "ing", 4)
+<		result is again "4". >
+			:echo match("testing", "t", 2)
+<		result is "3".
+		If {start} < 0, it will be set to 0.
+		If {start} > strlen({expr}) -1 is returned.
+		See |pattern| for the patterns that are accepted.
+		The 'ignorecase' option is used to set the ignore-caseness of
+		the pattern.  'smartcase' is NOT used.  The matching is always
+		done like 'magic' is set and 'cpoptions' is empty.
+
+matchend({expr}, {pat}[, {start}])			*matchend()*
+		Same as match(), but return the index of first character after
+		the match.  Example: >
+			:echo matchend("testing", "ing")
+<		results in "7".
+		The {start}, if given, has the same meaning as for match(). >
+			:echo matchend("testing", "ing", 2)
+<		results in "7". >
+			:echo matchend("testing", "ing", 5)
+<		result is "-1".
+
+matchstr({expr}, {pat}[, {start}])			*matchstr()*
+		Same as match(), but return the matched string.  Example: >
+			:echo matchstr("testing", "ing")
+<		results in "ing".
+		When there is no match "" is returned.
+		The {start}, if given, has the same meaning as for match(). >
+			:echo matchstr("testing", "ing", 2)
+<		results in "ing". >
+			:echo matchstr("testing", "ing", 5)
+<		result is "".
+
+							*mode()*
+mode()		Return a string that indicates the current mode:
+			n	Normal
+			v	Visual by character
+			V	Visual by line
+			CTRL-V	Visual blockwise
+			s	Select by character
+			S	Select by line
+			CTRL-S	Select blockwise
+			i	Insert
+			R	Replace
+			c	Command-line
+			r	Hit-enter prompt
+		This is useful in the 'statusline' option.  In most other
+		places it always returns "c" or "n".
+
+nextnonblank({lnum})					*nextnonblank()*
+		Return the line number of the first line at or below {lnum}
+		that is not blank.  Example: >
+			if getline(nextnonblank(1)) =~ "Java"
+<		When {lnum} is invalid or there is no non-blank line at or
+		below it, zero is returned.
+		See also |prevnonblank()|.
+
+nr2char({expr})						*nr2char()*
+		Return a string with a single character, which has the number
+		value {expr}.  Examples: >
+			nr2char(64)		returns "@"
+			nr2char(32)		returns " "
+<		The current 'encoding' is used.  Example for "utf-8": >
+			nr2char(300)		returns I with bow character
+<		Note that a NUL character in the file is specified with
+		nr2char(10), because NULs are represented with newline
+		characters.  nr2char(0) is a real NUL and terminates the
+		string, thus isn't very useful.
+
+prevnonblank({lnum})					*prevnonblank()*
+		Return the line number of the first line at or above {lnum}
+		that is not blank.  Example: >
+			let ind = indent(prevnonblank(v:lnum - 1))
+<		When {lnum} is invalid or there is no non-blank line at or
+		above it, zero is returned.
+		Also see |nextnonblank()|.
+
+							*remote_expr()* *E449*
+remote_expr({server}, {string} [, {idvar}])
+		Send the {string} to {server}.  The string is sent as an
+		expression and the result is returned after evaluation.
+		If {idvar} is present, it is taken as the name of a
+		variable and a {serverid} for later use with
+		remote_read() is stored there.
+		See also |clientserver| |RemoteReply|.
+		This function is not available in the |sandbox|.
+		{only available when compiled with the |+clientserver| feature}
+		Note: Any errors will cause a local error message to be issued
+		and the result will be the empty string.
+		Examples: >
+			:echo remote_expr("gvim", "2+2")
+			:echo remote_expr("gvim1", "b:current_syntax")
+<
+
+remote_foreground({server})				*remote_foreground()*
+		Move the Vim server with the name {server} to the foreground.
+		This works like: >
+			remote_expr({server}, "foreground()")
+<		Except that on Win32 systems the client does the work, to work
+		around the problem that the OS doesn't always allow the server
+		to bring itself to the foreground.
+		This function is not available in the |sandbox|.
+		{only in the Win32, Athena, Motif and GTK GUI versions and the
+		Win32 console version}
+
+
+remote_peek({serverid} [, {retvar}])		*remote_peek()*
+		Returns a positive number if there are available strings
+		from {serverid}.  Copies any reply string into the variable
+		{retvar} if specified.  {retvar} must be a string with the
+		name of a variable.
+		Returns zero if none are available.
+		Returns -1 if something is wrong.
+		See also |clientserver|.
+		This function is not available in the |sandbox|.
+		{only available when compiled with the |+clientserver| feature}
+		Examples: >
+			:let repl = ""
+			:echo "PEEK: ".remote_peek(id, "repl").": ".repl
+
+remote_read({serverid})				*remote_read()*
+		Return the oldest available reply from {serverid} and consume
+		it.  It blocks until a reply is available.
+		See also |clientserver|.
+		This function is not available in the |sandbox|.
+		{only available when compiled with the |+clientserver| feature}
+		Example: >
+			:echo remote_read(id)
+<
+							*remote_send()* *E241*
+remote_send({server}, {string} [, {idvar}])
+		Send the {string} to {server}.  The string is sent as
+		input keys and the function returns immediately.
+		If {idvar} is present, it is taken as the name of a
+		variable and a {serverid} for later use with
+		remote_read() is stored there.
+		See also |clientserver| |RemoteReply|.
+		This function is not available in the |sandbox|.
+		{only available when compiled with the |+clientserver| feature}
+		Note: Any errors will be reported in the server and may mess
+		up the display.
+		Examples: >
+		:echo remote_send("gvim", ":DropAndReply ".file, "serverid").
+		 \ remote_read(serverid)
+
+		:autocmd NONE RemoteReply *
+		 \ echo remote_read(expand("<amatch>"))
+		:echo remote_send("gvim", ":sleep 10 | echo ".
+		 \ 'server2client(expand("<client>"), "HELLO")<CR>')
+
+
+rename({from}, {to})					*rename()*
+		Rename the file by the name {from} to the name {to}.  This
+		should also work to move files across file systems.  The
+		result is a Number, which is 0 if the file was renamed
+		successfully, and non-zero when the renaming failed.
+		This function is not available in the |sandbox|.
+
+resolve({filename})					*resolve()* *E655*
+		On MS-Windows, when {filename} is a shortcut (a .lnk file),
+		returns the path the shortcut points to in a simplified form.
+		On Unix, repeat resolving symbolic links in all path
+		components of {filename} and return the simplified result.
+		To cope with link cycles, resolving of symbolic links is
+		stopped after 100 iterations.
+		On other systems, return the simplified {filename}.
+		The simplification step is done as by |simplify()|.
+		resolve() keeps a leading path component specifying the
+		current directory (provided the result is still a relative
+		path name) and also keeps a trailing path separator.
+
+search({pattern} [, {flags}])				*search()*
+		Search for regexp pattern {pattern}.  The search starts at the
+		cursor position.
+		{flags} is a String, which can contain these character flags:
+		'b'	search backward instead of forward
+		'w'	wrap around the end of the file
+		'W'	don't wrap around the end of the file
+		If neither 'w' or 'W' is given, the 'wrapscan' option applies.
+
+		When a match has been found its line number is returned, and
+		the cursor will be positioned at the match.  If there is no
+		match a 0 is returned and the cursor doesn't move.  No error
+		message is given.
+
+		Example (goes over all files in the argument list): >
+		    :let n = 1
+		    :while n <= argc()	    " loop over all files in arglist
+		    :  exe "argument " . n
+		    :  " start at the last char in the file and wrap for the
+		    :  " first search to find match at start of file
+		    :  normal G$
+		    :  let flags = "w"
+		    :  while search("foo", flags) > 0
+		    :    s/foo/bar/g
+		    :	 let flags = "W"
+		    :  endwhile
+		    :  update		    " write the file if modified
+		    :  let n = n + 1
+		    :endwhile
+<
+							*searchpair()*
+searchpair({start}, {middle}, {end} [, {flags} [, {skip}]])
+		Search for the match of a nested start-end pair.  This can be
+		used to find the "endif" that matches an "if", while other
+		if/endif pairs in between are ignored.
+		The search starts at the cursor.  If a match is found, the
+		cursor is positioned at it and the line number is returned.
+		If no match is found 0 or -1 is returned and the cursor
+		doesn't move.  No error message is given.
+
+		{start}, {middle} and {end} are patterns, see |pattern|.  They
+		must not contain \( \) pairs.  Use of \%( \) is allowed.  When
+		{middle} is not empty, it is found when searching from either
+		direction, but only when not in a nested start-end pair.  A
+		typical use is: >
+			searchpair('\<if\>', '\<else\>', '\<endif\>')
+<		By leaving {middle} empty the "else" is skipped.
+
+		{flags} are used like with |search()|.  Additionally:
+		'n'	do Not move the cursor
+		'r'	Repeat until no more matches found; will find the
+			outer pair
+		'm'	return number of Matches instead of line number with
+			the match; will only be > 1 when 'r' is used.
+
+		When a match for {start}, {middle} or {end} is found, the
+		{skip} expression is evaluated with the cursor positioned on
+		the start of the match.  It should return non-zero if this
+		match is to be skipped.  E.g., because it is inside a comment
+		or a string.
+		When {skip} is omitted or empty, every match is accepted.
+		When evaluating {skip} causes an error the search is aborted
+		and -1 returned.
+
+		The value of 'ignorecase' is used.  'magic' is ignored, the
+		patterns are used like it's on.
+
+		The search starts exactly at the cursor.  A match with
+		{start}, {middle} or {end} at the next character, in the
+		direction of searching, is the first one found.  Example: >
+			if 1
+			  if 2
+			  endif 2
+			endif 1
+<		When starting at the "if 2", with the cursor on the "i", and
+		searching forwards, the "endif 2" is found.  When starting on
+		the character just before the "if 2", the "endif 1" will be
+		found.  That's because the "if 2" will be found first, and
+		then this is considered to be a nested if/endif from "if 2" to
+		"endif 2".
+		When searching backwards and {end} is more than one character,
+		it may be useful to put "\zs" at the end of the pattern, so
+		that when the cursor is inside a match with the end it finds
+		the matching start.
+
+		Example, to find the "endif" command in a Vim script: >
+
+	:echo searchpair('\<if\>', '\<el\%[seif]\>', '\<en\%[dif]\>', 'W',
+			\ 'getline(".") =~ "^\\s*\""')
+
+<		The cursor must be at or after the "if" for which a match is
+		to be found.  Note that single-quote strings are used to avoid
+		having to double the backslashes.  The skip expression only
+		catches comments at the start of a line, not after a command.
+		Also, a word "en" or "if" halfway a line is considered a
+		match.
+		Another example, to search for the matching "{" of a "}": >
+
+	:echo searchpair('{', '', '}', 'bW')
+
+<		This works when the cursor is at or before the "}" for which a
+		match is to be found.  To reject matches that syntax
+		highlighting recognized as strings: >
+
+	:echo searchpair('{', '', '}', 'bW',
+	     \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
+<
+server2client( {clientid}, {string})			*server2client()*
+		Send a reply string to {clientid}.  The most recent {clientid}
+		that sent a string can be retrieved with expand("<client>").
+		{only available when compiled with the |+clientserver| feature}
+		Note:
+		This id has to be stored before the next command can be
+		received. Ie. before returning from the received command and
+		before calling any commands that waits for input.
+		See also |clientserver|.
+		Example: >
+			:echo server2client(expand("<client>"), "HELLO")
+<
+serverlist()					*serverlist()*
+		Return a list of available server names, one per line.
+		When there are no servers or the information is not available
+		an empty string is returned.  See also |clientserver|.
+		{only available when compiled with the |+clientserver| feature}
+		Example: >
+			:echo serverlist()
+<
+setbufvar({expr}, {varname}, {val})			*setbufvar()*
+		Set option or local variable {varname} in buffer {expr} to
+		{val}.
+		This also works for a global or local window option, but it
+		doesn't work for a global or local window variable.
+		For a local window option the global value is unchanged.
+		For the use of {expr}, see |bufname()| above.
+		Note that the variable name without "b:" must be used.
+		Examples: >
+			:call setbufvar(1, "&mod", 1)
+			:call setbufvar("todo", "myvar", "foobar")
+<		This function is not available in the |sandbox|.
+
+setcmdpos({pos})					*setcmdpos()*
+		Set the cursor position in the command line to byte position
+		{pos}.  The first position is 1.
+		Use |getcmdpos()| to obtain the current position.
+		Only works while editing the command line, thus you must use
+		|c_CTRL-\_e| or |c_CTRL-R_=|.  The position is set after the
+		command line is set to the expression.
+		When the number is too big the cursor is put at the end of the
+		line.  A number smaller than one has undefined results.
+		Returns 0 when successful, 1 when not editing the command
+		line.
+
+setline({lnum}, {line})					*setline()*
+		Set line {lnum} of the current buffer to {line}.  If this
+		succeeds, 0 is returned.  If this fails (most likely because
+		{lnum} is invalid) 1 is returned.  Example: >
+			:call setline(5, strftime("%c"))
+<		Note: The '[ and '] marks are not set.
+
+							*setreg()*
+setreg({regname}, {value} [,{options}])
+		Set the register {regname} to {value}.
+		If {options} contains "a" or {regname} is upper case,
+		then the value is appended.
+		{options} can also contains a register type specification:
+		    "c" or "v"	      |characterwise| mode
+		    "l" or "V"	      |linewise| mode
+		    "b" or "<CTRL-V>" |blockwise-visual| mode
+		If a number immediately follows "b" or "<CTRL-V>" then this is
+		used as the width of the selection - if it is not specified
+		then the width of the block is set to the number of characters
+		in the longest line (counting a <TAB> as 1 character).
+
+		If {options} contains no register settings, then the default
+		is to use character mode unless {value} ends in a <NL>.
+		Setting the '=' register is not possible.
+		Returns zero for success, non-zero for failure.
+
+		Examples: >
+			:call setreg(v:register, @*)
+			:call setreg('*', @%, 'ac')
+			:call setreg('a', "1\n2\n3", 'b5')
+
+<		This example shows using the functions to save and restore a
+		register. >
+			:let var_a = getreg('a')
+			:let var_amode = getregtype('a')
+			    ....
+			:call setreg('a', var_a, var_amode)
+
+<		You can also change the type of a register by appending
+		nothing: >
+			:call setreg('a', '', 'al')
+
+setwinvar({nr}, {varname}, {val})			*setwinvar()*
+		Set option or local variable {varname} in window {nr} to
+		{val}.
+		This also works for a global or local buffer option, but it
+		doesn't work for a global or local buffer variable.
+		For a local buffer option the global value is unchanged.
+		Note that the variable name without "w:" must be used.
+		Examples: >
+			:call setwinvar(1, "&list", 0)
+			:call setwinvar(2, "myvar", "foobar")
+<		This function is not available in the |sandbox|.
+
+simplify({filename})					*simplify()*
+		Simplify the file name as much as possible without changing
+		the meaning.  Shortcuts (on MS-Windows) or symbolic links (on
+		Unix) are not resolved.  If the first path component in
+		{filename} designates the current directory, this will be
+		valid for the result as well.  A trailing path separator is
+		not removed either.
+		Example: >
+			simplify("./dir/.././/file/") == "./file/"
+<		Note: The combination "dir/.." is only removed if "dir" is
+		a searchable directory or does not exist.  On Unix, it is also
+		removed when "dir" is a symbolic link within the same
+		directory.  In order to resolve all the involved symbolic
+		links before simplifying the path name, use |resolve()|.
+
+strftime({format} [, {time}])				*strftime()*
+		The result is a String, which is a formatted date and time, as
+		specified by the {format} string.  The given {time} is used,
+		or the current time if no time is given.  The accepted
+		{format} depends on your system, thus this is not portable!
+		See the manual page of the C function strftime() for the
+		format.  The maximum length of the result is 80 characters.
+		See also |localtime()| and |getftime()|.
+		The language can be changed with the |:language| command.
+		Examples: >
+		  :echo strftime("%c")		   Sun Apr 27 11:49:23 1997
+		  :echo strftime("%Y %b %d %X")	   1997 Apr 27 11:53:25
+		  :echo strftime("%y%m%d %T")	   970427 11:53:55
+		  :echo strftime("%H:%M")	   11:55
+		  :echo strftime("%c", getftime("file.c"))
+						   Show mod time of file.c.
+<
+stridx({haystack}, {needle})				*stridx()*
+		The result is a Number, which gives the index in {haystack} of
+		the first occurrence of the String {needle} in the String
+		{haystack}. The search is done case-sensitive. For advanced
+		searches use |match()|.
+		If the {needle} does not occur in {haystack} it returns -1.
+		See also |strridx()|. Examples: >
+		  :echo stridx("An Example", "Example")	     3
+		  :echo stridx("Starting point", "Start")    0
+		  :echo stridx("Starting point", "start")   -1
+<
+							*strlen()*
+strlen({expr})	The result is a Number, which is the length of the String
+		{expr} in bytes.  If you want to count the number of
+		multi-byte characters use something like this: >
+
+			:let len = strlen(substitute(str, ".", "x", "g"))
+
+<		Composing characters are not counted.
+
+strpart({src}, {start}[, {len}])			*strpart()*
+		The result is a String, which is part of {src}, starting from
+		byte {start}, with the length {len}.
+		When non-existing bytes are included, this doesn't result in
+		an error, the bytes are simply omitted.
+		If {len} is missing, the copy continues from {start} till the
+		end of the {src}. >
+			strpart("abcdefg", 3, 2)    == "de"
+			strpart("abcdefg", -2, 4)   == "ab"
+			strpart("abcdefg", 5, 4)    == "fg"
+			strpart("abcdefg", 3)       == "defg"
+<		Note: To get the first character, {start} must be 0.  For
+		example, to get three bytes under and after the cursor: >
+			strpart(getline(line(".")), col(".") - 1, 3)
+<
+strridx({haystack}, {needle})				*strridx()*
+		The result is a Number, which gives the index in {haystack} of
+		the last occurrence of the String {needle} in the String
+		{haystack}. The search is done case-sensitive. For advanced
+		searches use |match()|.
+		If the {needle} does not occur in {haystack} it returns -1.
+		See also |stridx()|. Examples: >
+		  :echo strridx("an angry armadillo", "an")	     3
+<
+strtrans({expr})					*strtrans()*
+		The result is a String, which is {expr} with all unprintable
+		characters translated into printable characters |'isprint'|.
+		Like they are shown in a window.  Example: >
+			echo strtrans(@a)
+<		This displays a newline in register a as "^@" instead of
+		starting a new line.
+
+submatch({nr})						*submatch()*
+		Only for an expression in a |:substitute| command.  Returns
+		the {nr}'th submatch of the matched text.  When {nr} is 0
+		the whole matched text is returned.
+		Example: >
+			:s/\d\+/\=submatch(0) + 1/
+<		This finds the first number in the line and adds one to it.
+		A line break is included as a newline character.
+
+substitute({expr}, {pat}, {sub}, {flags})		*substitute()*
+		The result is a String, which is a copy of {expr}, in which
+		the first match of {pat} is replaced with {sub}.  This works
+		like the ":substitute" command (without any flags).  But the
+		matching with {pat} is always done like the 'magic' option is
+		set and 'cpoptions' is empty (to make scripts portable).
+		See |string-match| for how {pat} is used.
+		And a "~" in {sub} is not replaced with the previous {sub}.
+		Note that some codes in {sub} have a special meaning
+		|sub-replace-special|.  For example, to replace something with
+		"\n" (two characters), use "\\\\n" or '\\n'.
+		When {pat} does not match in {expr}, {expr} is returned
+		unmodified.
+		When {flags} is "g", all matches of {pat} in {expr} are
+		replaced.  Otherwise {flags} should be "".
+		Example: >
+			:let &path = substitute(&path, ",\\=[^,]*$", "", "")
+<		This removes the last component of the 'path' option. >
+			:echo substitute("testing", ".*", "\\U\\0", "")
+<		results in "TESTING".
+
+synID({line}, {col}, {trans})				*synID()*
+		The result is a Number, which is the syntax ID at the position
+		{line} and {col} in the current window.
+		The syntax ID can be used with |synIDattr()| and
+		|synIDtrans()| to obtain syntax information about text.
+		{col} is 1 for the leftmost column, {line} is 1 for the first
+		line.
+		When {trans} is non-zero, transparent items are reduced to the
+		item that they reveal.  This is useful when wanting to know
+		the effective color.  When {trans} is zero, the transparent
+		item is returned.  This is useful when wanting to know which
+		syntax item is effective (e.g. inside parens).
+		Warning: This function can be very slow.  Best speed is
+		obtained by going through the file in forward direction.
+
+		Example (echoes the name of the syntax item under the cursor): >
+			:echo synIDattr(synID(line("."), col("."), 1), "name")
+<
+synIDattr({synID}, {what} [, {mode}])			*synIDattr()*
+		The result is a String, which is the {what} attribute of
+		syntax ID {synID}.  This can be used to obtain information
+		about a syntax item.
+		{mode} can be "gui", "cterm" or "term", to get the attributes
+		for that mode.  When {mode} is omitted, or an invalid value is
+		used, the attributes for the currently active highlighting are
+		used (GUI, cterm or term).
+		Use synIDtrans() to follow linked highlight groups.
+		{what}		result
+		"name"		the name of the syntax item
+		"fg"		foreground color (GUI: color name used to set
+				the color, cterm: color number as a string,
+				term: empty string)
+		"bg"		background color (like "fg")
+		"fg#"		like "fg", but for the GUI and the GUI is
+				running the name in "#RRGGBB" form
+		"bg#"		like "fg#" for "bg"
+		"bold"		"1" if bold
+		"italic"	"1" if italic
+		"reverse"	"1" if reverse
+		"inverse"	"1" if inverse (= reverse)
+		"underline"	"1" if underlined
+
+		Example (echoes the color of the syntax item under the
+		cursor): >
+	:echo synIDattr(synIDtrans(synID(line("."), col("."), 1)), "fg")
+<
+synIDtrans({synID})					*synIDtrans()*
+		The result is a Number, which is the translated syntax ID of
+		{synID}.  This is the syntax group ID of what is being used to
+		highlight the character.  Highlight links given with
+		":highlight link" are followed.
+
+							*system()*
+system({expr})	Get the output of the shell command {expr}.  Note: newlines
+		in {expr} may cause the command to fail.  The characters in
+		'shellquote' and 'shellxquote' may also cause trouble.
+		This is not to be used for interactive commands.
+		The result is a String.  Example: >
+
+			:let files = system("ls")
+
+<		To make the result more system-independent, the shell output
+		is filtered to replace <CR> with <NL> for Macintosh, and
+		<CR><NL> with <NL> for DOS-like systems.
+		The command executed is constructed using several options:
+	'shell' 'shellcmdflag' 'shellxquote' {expr} 'shellredir' {tmp} 'shellxquote'
+		({tmp} is an automatically generated file name).
+		For Unix and OS/2 braces are put around {expr} to allow for
+		concatenated commands.
+
+		The resulting error code can be found in |v:shell_error|.
+		This function will fail in |restricted-mode|.
+		Unlike ":!cmd" there is no automatic check for changed files.
+		Use |:checktime| to force a check.
+
+tempname()					*tempname()* *temp-file-name*
+		The result is a String, which is the name of a file that
+		doesn't exist.  It can be used for a temporary file.  The name
+		is different for at least 26 consecutive calls.  Example: >
+			:let tmpfile = tempname()
+			:exe "redir > " . tmpfile
+<		For Unix, the file will be in a private directory (only
+		accessible by the current user) to avoid security problems
+		(e.g., a symlink attack or other people reading your file).
+		When Vim exits the directory and all files in it are deleted.
+		For MS-Windows forward slashes are used when the 'shellslash'
+		option is set or when 'shellcmdflag' starts with '-'.
+
+tolower({expr})						*tolower()*
+		The result is a copy of the String given, with all uppercase
+		characters turned into lowercase (just like applying |gu| to
+		the string).
+
+toupper({expr})						*toupper()*
+		The result is a copy of the String given, with all lowercase
+		characters turned into uppercase (just like applying |gU| to
+		the string).
+
+type({expr})						*type()*
+		The result is a Number:
+			0 if {expr} has the type Number
+			1 if {expr} has the type String
+
+virtcol({expr})						*virtcol()*
+		The result is a Number, which is the screen column of the file
+		position given with {expr}.  That is, the last screen position
+		occupied by the character at that position, when the screen
+		would be of unlimited width.  When there is a <Tab> at the
+		position, the returned Number will be the column at the end of
+		the <Tab>.  For example, for a <Tab> in column 1, with 'ts'
+		set to 8, it returns 8.
+		For the byte position use |col()|.
+		When Virtual editing is active in the current mode, a position
+		beyond the end of the line can be returned. |'virtualedit'|
+		The accepted positions are:
+		    .	    the cursor position
+		    $	    the end of the cursor line (the result is the
+			    number of displayed characters in the cursor line
+			    plus one)
+		    'x	    position of mark x (if the mark is not set, 0 is
+			    returned)
+		Note that only marks in the current file can be used.
+		Examples: >
+  virtcol(".")	   with text "foo^Lbar", with cursor on the "^L", returns 5
+  virtcol("$")	   with text "foo^Lbar", returns 9
+  virtcol("'t")    with text "    there", with 't at 'h', returns 6
+<		The first column is 1.  0 is returned for an error.
+
+visualmode([expr])						*visualmode()*
+		The result is a String, which describes the last Visual mode
+		used.  Initially it returns an empty string, but once Visual
+		mode has been used, it returns "v", "V", or "<CTRL-V>" (a
+		single CTRL-V character) for character-wise, line-wise, or
+		block-wise Visual mode respectively.
+		Example: >
+			:exe "normal " . visualmode()
+<		This enters the same Visual mode as before.  It is also useful
+		in scripts if you wish to act differently depending on the
+		Visual mode that was used.
+
+		If an expression is supplied that results in a non-zero number
+		or a non-empty string, then the Visual mode will be cleared
+		and the old value is returned.  Note that " " and "0" are also
+		non-empty strings, thus cause the mode to be cleared.
+
+							*winbufnr()*
+winbufnr({nr})	The result is a Number, which is the number of the buffer
+		associated with window {nr}. When {nr} is zero, the number of
+		the buffer in the current window is returned.  When window
+		{nr} doesn't exist, -1 is returned.
+		Example: >
+  :echo "The file in the current window is " . bufname(winbufnr(0))
+<
+							*wincol()*
+wincol()	The result is a Number, which is the virtual column of the
+		cursor in the window.  This is counting screen cells from the
+		left side of the window.  The leftmost column is one.
+
+winheight({nr})						*winheight()*
+		The result is a Number, which is the height of window {nr}.
+		When {nr} is zero, the height of the current window is
+		returned.  When window {nr} doesn't exist, -1 is returned.
+		An existing window always has a height of zero or more.
+		Examples: >
+  :echo "The current window has " . winheight(0) . " lines."
+<
+							*winline()*
+winline()	The result is a Number, which is the screen line of the cursor
+		in the window.  This is counting screen lines from the top of
+		the window.  The first line is one.
+
+							*winnr()*
+winnr()		The result is a Number, which is the number of the current
+		window.  The top window has number 1.  The number can be used
+		with |CTRL-W_w| and ":wincmd w" |:wincmd|.
+
+							*winrestcmd()*
+winrestcmd()	Returns a sequence of |:resize| commands that should restore
+		the current window sizes.  Only works properly when no windows
+		are opened or closed and the current window is unchanged.
+		Example: >
+			:let cmd = winrestcmd()
+			:call MessWithWindowSizes()
+			:exe cmd
+
+winwidth({nr})						*winwidth()*
+		The result is a Number, which is the width of window {nr}.
+		When {nr} is zero, the width of the current window is
+		returned.  When window {nr} doesn't exist, -1 is returned.
+		An existing window always has a width of zero or more.
+		Examples: >
+  :echo "The current window has " . winwidth(0) . " columns."
+  :if winwidth(0) <= 50
+  :  exe "normal 50\<C-W>|"
+  :endif
+<
+
+							*feature-list*
+There are three types of features:
+1.  Features that are only supported when they have been enabled when Vim
+    was compiled |+feature-list|.  Example: >
+	:if has("cindent")
+2.  Features that are only supported when certain conditions have been met.
+    Example: >
+	:if has("gui_running")
+<							*has-patch*
+3.  Included patches.  First check |v:version| for the version of Vim.
+    Then the "patch123" feature means that patch 123 has been included for
+    this version.  Example (checking version 6.2.148 or later): >
+	:if v:version > 602 || v:version == 602 && has("patch148")
+
+all_builtin_terms	Compiled with all builtin terminals enabled.
+amiga			Amiga version of Vim.
+arabic			Compiled with Arabic support |Arabic|.
+arp			Compiled with ARP support (Amiga).
+autocmd			Compiled with autocommands support.
+balloon_eval		Compiled with |balloon-eval| support.
+beos			BeOS version of Vim.
+browse			Compiled with |:browse| support, and browse() will
+			work.
+builtin_terms		Compiled with some builtin terminals.
+byte_offset		Compiled with support for 'o' in 'statusline'
+cindent			Compiled with 'cindent' support.
+clientserver		Compiled with remote invocation support |clientserver|.
+clipboard		Compiled with 'clipboard' support.
+cmdline_compl		Compiled with |cmdline-completion| support.
+cmdline_hist		Compiled with |cmdline-history| support.
+cmdline_info		Compiled with 'showcmd' and 'ruler' support.
+comments		Compiled with |'comments'| support.
+cryptv			Compiled with encryption support |encryption|.
+cscope			Compiled with |cscope| support.
+compatible		Compiled to be very Vi compatible.
+debug			Compiled with "DEBUG" defined.
+dialog_con		Compiled with console dialog support.
+dialog_gui		Compiled with GUI dialog support.
+diff			Compiled with |vimdiff| and 'diff' support.
+digraphs		Compiled with support for digraphs.
+dnd			Compiled with support for the "~ register |quote_~|.
+dos32			32 bits DOS (DJGPP) version of Vim.
+dos16			16 bits DOS version of Vim.
+ebcdic			Compiled on a machine with ebcdic character set.
+emacs_tags		Compiled with support for Emacs tags.
+eval			Compiled with expression evaluation support.  Always
+			true, of course!
+ex_extra		Compiled with extra Ex commands |+ex_extra|.
+extra_search		Compiled with support for |'incsearch'| and
+			|'hlsearch'|
+farsi			Compiled with Farsi support |farsi|.
+file_in_path		Compiled with support for |gf| and |<cfile>|
+find_in_path		Compiled with support for include file searches
+			|+find_in_path|.
+fname_case		Case in file names matters (for Amiga, MS-DOS, and
+			Windows this is not present).
+folding			Compiled with |folding| support.
+footer			Compiled with GUI footer support. |gui-footer|
+fork			Compiled to use fork()/exec() instead of system().
+gettext			Compiled with message translation |multi-lang|
+gui			Compiled with GUI enabled.
+gui_athena		Compiled with Athena GUI.
+gui_beos		Compiled with BeOs GUI.
+gui_gtk			Compiled with GTK+ GUI (any version).
+gui_gtk2		Compiled with GTK+ 2 GUI (gui_gtk is also defined).
+gui_mac			Compiled with Macintosh GUI.
+gui_motif		Compiled with Motif GUI.
+gui_photon		Compiled with Photon GUI.
+gui_win32		Compiled with MS Windows Win32 GUI.
+gui_win32s		idem, and Win32s system being used (Windows 3.1)
+gui_running		Vim is running in the GUI, or it will start soon.
+hangul_input		Compiled with Hangul input support. |hangul|
+iconv			Can use iconv() for conversion.
+insert_expand		Compiled with support for CTRL-X expansion commands in
+			Insert mode.
+jumplist		Compiled with |jumplist| support.
+keymap			Compiled with 'keymap' support.
+langmap			Compiled with 'langmap' support.
+libcall			Compiled with |libcall()| support.
+linebreak		Compiled with 'linebreak', 'breakat' and 'showbreak'
+			support.
+lispindent		Compiled with support for lisp indenting.
+listcmds		Compiled with commands for the buffer list |:files|
+			and the argument list |arglist|.
+localmap		Compiled with local mappings and abbr. |:map-local|
+mac			Macintosh version of Vim.
+macunix			Macintosh version of Vim, using Unix files (OS-X).
+menu			Compiled with support for |:menu|.
+mksession		Compiled with support for |:mksession|.
+modify_fname		Compiled with file name modifiers. |filename-modifiers|
+mouse			Compiled with support mouse.
+mouseshape		Compiled with support for 'mouseshape'.
+mouse_dec		Compiled with support for Dec terminal mouse.
+mouse_gpm		Compiled with support for gpm (Linux console mouse)
+mouse_netterm		Compiled with support for netterm mouse.
+mouse_pterm		Compiled with support for qnx pterm mouse.
+mouse_xterm		Compiled with support for xterm mouse.
+multi_byte		Compiled with support for editing Korean et al.
+multi_byte_ime		Compiled with support for IME input method.
+multi_lang		Compiled with support for multiple languages.
+netbeans_intg		Compiled with support for |netbeans|.
+ole			Compiled with OLE automation support for Win32.
+os2			OS/2 version of Vim.
+osfiletype		Compiled with support for osfiletypes |+osfiletype|
+path_extra		Compiled with up/downwards search in 'path' and 'tags'
+perl			Compiled with Perl interface.
+postscript		Compiled with PostScript file printing.
+printer			Compiled with |:hardcopy| support.
+python			Compiled with Python interface.
+qnx			QNX version of Vim.
+quickfix		Compiled with |quickfix| support.
+rightleft		Compiled with 'rightleft' support.
+ruby			Compiled with Ruby interface |ruby|.
+scrollbind		Compiled with 'scrollbind' support.
+showcmd			Compiled with 'showcmd' support.
+signs			Compiled with |:sign| support.
+smartindent		Compiled with 'smartindent' support.
+sniff			Compiled with SniFF interface support.
+statusline		Compiled with support for 'statusline', 'rulerformat'
+			and special formats of 'titlestring' and 'iconstring'.
+sun_workshop		Compiled with support for Sun |workshop|.
+syntax			Compiled with syntax highlighting support.
+syntax_items		There are active syntax highlighting items for the
+			current buffer.
+system			Compiled to use system() instead of fork()/exec().
+tag_binary		Compiled with binary searching in tags files
+			|tag-binary-search|.
+tag_old_static		Compiled with support for old static tags
+			|tag-old-static|.
+tag_any_white		Compiled with support for any white characters in tags
+			files |tag-any-white|.
+tcl			Compiled with Tcl interface.
+terminfo		Compiled with terminfo instead of termcap.
+termresponse		Compiled with support for |t_RV| and |v:termresponse|.
+textobjects		Compiled with support for |text-objects|.
+tgetent			Compiled with tgetent support, able to use a termcap
+			or terminfo file.
+title			Compiled with window title support |'title'|.
+toolbar			Compiled with support for |gui-toolbar|.
+unix			Unix version of Vim.
+user_commands		User-defined commands.
+viminfo			Compiled with viminfo support.
+vim_starting		True while initial source'ing takes place.
+vertsplit		Compiled with vertically split windows |:vsplit|.
+virtualedit		Compiled with 'virtualedit' option.
+visual			Compiled with Visual mode.
+visualextra		Compiled with extra Visual mode commands.
+			|blockwise-operators|.
+vms			VMS version of Vim.
+vreplace		Compiled with |gR| and |gr| commands.
+wildignore		Compiled with 'wildignore' option.
+wildmenu		Compiled with 'wildmenu' option.
+windows			Compiled with support for more than one window.
+winaltkeys		Compiled with 'winaltkeys' option.
+win16			Win16 version of Vim (MS-Windows 3.1).
+win32			Win32 version of Vim (MS-Windows 95/98/ME/NT/2000/XP).
+win64			Win64 version of Vim (MS-Windows 64 bit).
+win32unix		Win32 version of Vim, using Unix files (Cygwin)
+win95			Win32 version for MS-Windows 95/98/ME.
+writebackup		Compiled with 'writebackup' default on.
+xfontset		Compiled with X fontset support |xfontset|.
+xim			Compiled with X input method support |xim|.
+xsmp			Compiled with X session management support.
+xsmp_interact		Compiled with interactive X session management support.
+xterm_clipboard		Compiled with support for xterm clipboard.
+xterm_save		Compiled with support for saving and restoring the
+			xterm screen.
+x11			Compiled with X11 support.
+
+							*string-match*
+Matching a pattern in a String
+
+A regexp pattern as explained at |pattern| is normally used to find a match in
+the buffer lines.  When a pattern is used to find a match in a String, almost
+everything works in the same way.  The difference is that a String is handled
+like it is one line.  When it contains a "\n" character, this is not seen as a
+line break for the pattern.  It can be matched with a "\n" in the pattern, or
+with ".".  Example: >
+	:let a = "aaaa\nxxxx"
+	:echo matchstr(a, "..\n..")
+	aa
+	xx
+	:echo matchstr(a, "a.x")
+	a
+	x
+
+Don't forget that "^" will only match at the first character of the String and
+"$" at the last character of the string.  They don't match after or before a
+"\n".
+
+==============================================================================
+5. Defining functions					*user-functions*
+
+New functions can be defined.  These can be called just like builtin
+functions.  The function executes a sequence of Ex commands.  Normal mode
+commands can be executed with the |:normal| command.
+
+The function name must start with an uppercase letter, to avoid confusion with
+builtin functions.  To prevent from using the same name in different scripts
+avoid obvious, short names.  A good habit is to start the function name with
+the name of the script, e.g., "HTMLcolor()".
+
+It's also possible to use curly braces, see |curly-braces-names|.
+
+							*local-function*
+A function local to a script must start with "s:".  A local script function
+can only be called from within the script and from functions, user commands
+and autocommands defined in the script.  It is also possible to call the
+function from a mappings defined in the script, but then |<SID>| must be used
+instead of "s:" when the mapping is expanded outside of the script.
+
+					*:fu* *:function* *E128* *E129* *E123*
+:fu[nction]		List all functions and their arguments.
+
+:fu[nction] {name}	List function {name}.
+							*E124* *E125*
+:fu[nction][!] {name}([arguments]) [range] [abort]
+			Define a new function by the name {name}.  The name
+			must be made of alphanumeric characters and '_', and
+			must start with a capital or "s:" (see above).
+						*function-argument* *a:var*
+			An argument can be defined by giving its name.  In the
+			function this can then be used as "a:name" ("a:" for
+			argument).
+			Up to 20 arguments can be given, separated by commas.
+			Finally, an argument "..." can be specified, which
+			means that more arguments may be following.  In the
+			function they can be used as "a:1", "a:2", etc.  "a:0"
+			is set to the number of extra arguments (which can be
+			0).
+			When not using "...", the number of arguments in a
+			function call must be equal to the number of named
+			arguments.  When using "...", the number of arguments
+			may be larger.
+			It is also possible to define a function without any
+			arguments.  You must still supply the () then.
+			The body of the function follows in the next lines,
+			until the matching |:endfunction|.  It is allowed to
+			define another function inside a function body.
+								*E127* *E122*
+			When a function by this name already exists and [!] is
+			not used an error message is given.  When [!] is used,
+			an existing function is silently replaced.  Unless it
+			is currently being executed, that is an error.
+						*a:firstline* *a:lastline*
+			When the [range] argument is added, the function is
+			expected to take care of a range itself.  The range is
+			passed as "a:firstline" and "a:lastline".  If [range]
+			is excluded, ":{range}call" will call the function for
+			each line in the range, with the cursor on the start
+			of each line.  See |function-range-example|.
+			When the [abort] argument is added, the function will
+			abort as soon as an error is detected.
+			The last used search pattern and the redo command "."
+			will not be changed by the function.
+
+					*:endf* *:endfunction* *E126* *E193*
+:endf[unction]		The end of a function definition.  Must be on a line
+			by its own, without other commands.
+
+					*:delf* *:delfunction* *E130* *E131*
+:delf[unction] {name}	Delete function {name}.
+
+							*:retu* *:return* *E133*
+:retu[rn] [expr]	Return from a function.  When "[expr]" is given, it is
+			evaluated and returned as the result of the function.
+			If "[expr]" is not given, the number 0 is returned.
+			When a function ends without an explicit ":return",
+			the number 0 is returned.
+			Note that there is no check for unreachable lines,
+			thus there is no warning if commands follow ":return".
+
+			If the ":return" is used after a |:try| but before the
+			matching |:finally| (if present), the commands
+			following the ":finally" up to the matching |:endtry|
+			are executed first.  This process applies to all
+			nested ":try"s inside the function.  The function
+			returns at the outermost ":endtry".
+
+
+Inside a function variables can be used.  These are local variables, which
+will disappear when the function returns.  Global variables need to be
+accessed with "g:".
+
+Example: >
+  :function Table(title, ...)
+  :  echohl Title
+  :  echo a:title
+  :  echohl None
+  :  let idx = 1
+  :  while idx <= a:0
+  :    echo a:{idx} . ' '
+  :    let idx = idx + 1
+  :  endwhile
+  :  return idx
+  :endfunction
+
+This function can then be called with: >
+  let lines = Table("Table", "line1", "line2")
+  let lines = Table("Empty Table")
+
+To return more than one value, pass the name of a global variable: >
+  :function Compute(n1, n2, divname)
+  :  if a:n2 == 0
+  :    return "fail"
+  :  endif
+  :  let g:{a:divname} = a:n1 / a:n2
+  :  return "ok"
+  :endfunction
+
+This function can then be called with: >
+  :let success = Compute(13, 1324, "div")
+  :if success == "ok"
+  :  echo div
+  :endif
+
+An alternative is to return a command that can be executed.  This also works
+with local variables in a calling function.  Example: >
+  :function Foo()
+  :  execute Bar()
+  :  echo "line " . lnum . " column " . col
+  :endfunction
+
+  :function Bar()
+  :  return "let lnum = " . line(".") . " | let col = " . col(".")
+  :endfunction
+
+The names "lnum" and "col" could also be passed as argument to Bar(), to allow
+the caller to set the names.
+
+							*:cal* *:call* *E107*
+:[range]cal[l] {name}([arguments])
+		Call a function.  The name of the function and its arguments
+		are as specified with |:function|.  Up to 20 arguments can be
+		used.
+		Without a range and for functions that accept a range, the
+		function is called once.  When a range is given the cursor is
+		positioned at the start of the first line before executing the
+		function.
+		When a range is given and the function doesn't handle it
+		itself, the function is executed for each line in the range,
+		with the cursor in the first column of that line.  The cursor
+		is left at the last line (possibly moved by the last function
+		call).  The arguments are re-evaluated for each line.  Thus
+		this works:
+						*function-range-example*  >
+	:function Mynumber(arg)
+	:  echo line(".") . " " . a:arg
+	:endfunction
+	:1,5call Mynumber(getline("."))
+<
+		The "a:firstline" and "a:lastline" are defined anyway, they
+		can be used to do something different at the start or end of
+		the range.
+
+		Example of a function that handles the range itself: >
+
+	:function Cont() range
+	:  execute (a:firstline + 1) . "," . a:lastline . 's/^/\t\\ '
+	:endfunction
+	:4,8call Cont()
+<
+		This function inserts the continuation character "\" in front
+		of all the lines in the range, except the first one.
+
+								*E132*
+The recursiveness of user functions is restricted with the |'maxfuncdepth'|
+option.
+
+							*autoload-functions*
+When using many or large functions, it's possible to automatically define them
+only when they are used.  Use the FuncUndefined autocommand event with a
+pattern that matches the function(s) to be defined.  Example: >
+
+	:au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim
+
+The file "~/vim/bufnetfuncs.vim" should then define functions that start with
+"BufNet".  Also see |FuncUndefined|.
+
+==============================================================================
+6. Curly braces names					*curly-braces-names*
+
+Wherever you can use a variable, you can use a "curly braces name" variable.
+This is a regular variable name with one or more expressions wrapped in braces
+{} like this: >
+	my_{adjective}_variable
+
+When Vim encounters this, it evaluates the expression inside the braces, puts
+that in place of the expression, and re-interprets the whole as a variable
+name.  So in the above example, if the variable "adjective" was set to
+"noisy", then the reference would be to "my_noisy_variable", whereas if
+"adjective" was set to "quiet", then it would be to "my_quiet_variable".
+
+One application for this is to create a set of variables governed by an option
+value.  For example, the statement >
+	echo my_{&background}_message
+
+would output the contents of "my_dark_message" or "my_light_message" depending
+on the current value of 'background'.
+
+You can use multiple brace pairs: >
+	echo my_{adverb}_{adjective}_message
+..or even nest them: >
+	echo my_{ad{end_of_word}}_message
+where "end_of_word" is either "verb" or "jective".
+
+However, the expression inside the braces must evaluate to a valid single
+variable name. e.g. this is invalid: >
+	:let foo='a + b'
+	:echo c{foo}d
+.. since the result of expansion is "ca + bd", which is not a variable name.
+
+						*curly-braces-function-names*
+You can call and define functions by an evaluated name in a similar way.
+Example: >
+	:let func_end='whizz'
+	:call my_func_{func_end}(parameter)
+
+This would call the function "my_func_whizz(parameter)".
+
+==============================================================================
+7. Commands						*expression-commands*
+
+:let {var-name} = {expr1}				*:let* *E18*
+			Set internal variable {var-name} to the result of the
+			expression {expr1}.  The variable will get the type
+			from the {expr}.  If {var-name} didn't exist yet, it
+			is created.
+
+:let ${env-name} = {expr1}			*:let-environment* *:let-$*
+			Set environment variable {env-name} to the result of
+			the expression {expr1}.  The type is always String.
+
+:let @{reg-name} = {expr1}			*:let-register* *:let-@*
+			Write the result of the expression {expr1} in register
+			{reg-name}.  {reg-name} must be a single letter, and
+			must be the name of a writable register (see
+			|registers|).  "@@" can be used for the unnamed
+			register, "@/" for the search pattern.
+			If the result of {expr1} ends in a <CR> or <NL>, the
+			register will be linewise, otherwise it will be set to
+			characterwise.
+			This can be used to clear the last search pattern: >
+				:let @/ = ""
+<			This is different from searching for an empty string,
+			that would match everywhere.
+
+:let &{option-name} = {expr1}			*:let-option* *:let-star*
+			Set option {option-name} to the result of the
+			expression {expr1}.  The value is always converted to
+			the type of the option.
+			For an option local to a window or buffer the effect
+			is just like using the |:set| command: both the local
+			value and the global value is changed.
+
+:let &l:{option-name} = {expr1}
+			Like above, but only set the local value of an option
+			(if there is one).  Works like |:setlocal|.
+
+:let &g:{option-name} = {expr1}
+			Like above, but only set the global value of an option
+			(if there is one).  Works like |:setglobal|.
+
+							*E106*
+:let {var-name}	..	List the value of variable {var-name}.  Several
+			variable names may be given.
+
+:let			List the values of all variables.
+
+							*:unlet* *:unl* *E108*
+:unl[et][!] {var-name} ...
+			Remove the internal variable {var-name}.  Several
+			variable names can be given, they are all removed.
+			With [!] no error message is given for non-existing
+			variables.
+
+:if {expr1}			*:if* *:endif* *:en* *E171* *E579* *E580*
+:en[dif]		Execute the commands until the next matching ":else"
+			or ":endif" if {expr1} evaluates to non-zero.
+
+			From Vim version 4.5 until 5.0, every Ex command in
+			between the ":if" and ":endif" is ignored.  These two
+			commands were just to allow for future expansions in a
+			backwards compatible way.  Nesting was allowed.  Note
+			that any ":else" or ":elseif" was ignored, the "else"
+			part was not executed either.
+
+			You can use this to remain compatible with older
+			versions: >
+				:if version >= 500
+				:  version-5-specific-commands
+				:endif
+<			The commands still need to be parsed to find the
+			"endif".  Sometimes an older Vim has a problem with a
+			new command.  For example, ":silent" is recognized as
+			a ":substitute" command.  In that case ":execute" can
+			avoid problems: >
+				:if version >= 600
+				:  execute "silent 1,$delete"
+				:endif
+<
+			NOTE: The ":append" and ":insert" commands don't work
+			properly in between ":if" and ":endif".
+
+						*:else* *:el* *E581* *E583*
+:el[se]			Execute the commands until the next matching ":else"
+			or ":endif" if they previously were not being
+			executed.
+
+					*:elseif* *:elsei* *E582* *E584*
+:elsei[f] {expr1}	Short for ":else" ":if", with the addition that there
+			is no extra ":endif".
+
+:wh[ile] {expr1}			*:while* *:endwhile* *:wh* *:endw*
+							*E170* *E585* *E588*
+:endw[hile]		Repeat the commands between ":while" and ":endwhile",
+			as long as {expr1} evaluates to non-zero.
+			When an error is detected from a command inside the
+			loop, execution continues after the "endwhile".
+
+			NOTE: The ":append" and ":insert" commands don't work
+			properly inside a ":while" loop.
+
+						*:continue* *:con* *E586*
+:con[tinue]		When used inside a ":while", jumps back to the
+			":while".  If it is used after a |:try| inside the
+			":while" but before the matching |:finally| (if
+			present), the commands following the ":finally" up to
+			the matching |:endtry| are executed first.  This
+			process applies to all nested ":try"s inside the
+			":while".  The outermost ":endtry" then jumps back to
+			the ":while".
+
+						*:break* *:brea* *E587*
+:brea[k]		When used inside a ":while", skips to the command
+			after the matching ":endwhile".  If it is used after
+			a |:try| inside the ":while" but before the matching
+			|:finally| (if present), the commands following the
+			":finally" up to the matching |:endtry| are executed
+			first.  This process applies to all nested ":try"s
+			inside the ":while".  The outermost ":endtry" then
+			jumps to the command after the ":endwhile".
+
+:try				*:try* *:endt* *:endtry* *E600* *E601* *E602*
+:endt[ry]		Change the error handling for the commands between
+			":try" and ":endtry" including everything being
+			executed across ":source" commands, function calls,
+			or autocommand invocations.
+
+			When an error or interrupt is detected and there is
+			a |:finally| command following, execution continues
+			after the ":finally".  Otherwise, or when the
+			":endtry" is reached thereafter, the next
+			(dynamically) surrounding ":try" is checked for
+			a corresponding ":finally" etc.  Then the script
+			processing is terminated.  (Whether a function
+			definition has an "abort" argument does not matter.)
+			Example: >
+		:try | edit too much | finally | echo "cleanup" | endtry
+		:echo "impossible"	" not reached, script terminated above
+<
+			Moreover, an error or interrupt (dynamically) inside
+			":try" and ":endtry" is converted to an exception.  It
+			can be caught as if it were thrown by a |:throw|
+			command (see |:catch|).  In this case, the script
+			processing is not terminated.
+
+			The value "Vim:Interrupt" is used for an interrupt
+			exception.  An error in a Vim command is converted
+			to a value of the form "Vim({command}):{errmsg}",
+			other errors are converted to a value of the form
+			"Vim:{errmsg}".  {command} is the full command name,
+			and {errmsg} is the message that is displayed if the
+			error exception is not caught, always beginning with
+			the error number.
+			Examples: >
+		:try | sleep 100 | catch /^Vim:Interrupt$/ | endtry
+		:try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry
+<
+					*:cat* *:catch* *E603* *E604* *E605*
+:cat[ch] /{pattern}/	The following commands until the next ":catch",
+			|:finally|, or |:endtry| that belongs to the same
+			|:try| as the ":catch" are executed when an exception
+			matching {pattern} is being thrown and has not yet
+			been caught by a previous ":catch".  Otherwise, these
+			commands are skipped.
+			When {pattern} is omitted all errors are caught.
+			Examples: >
+		:catch /^Vim:Interrupt$/	" catch interrupts (CTRL-C)
+		:catch /^Vim\%((\a\+)\)\=:E/	" catch all Vim errors
+		:catch /^Vim\%((\a\+)\)\=:/	" catch errors and interrupts
+		:catch /^Vim(write):/		" catch all errors in :write
+		:catch /^Vim\%((\a\+)\)\=:E123/	" catch error E123
+		:catch /my-exception/		" catch user exception
+		:catch /.*/			" catch everything
+		:catch				" same as /.*/
+<
+			Another character can be used instead of / around the
+			{pattern}, so long as it does not have a special
+			meaning (e.g., '|' or '"') and doesn't occur inside
+			{pattern}.
+			NOTE: It is not reliable to ":catch" the TEXT of
+			an error message because it may vary in different
+			locales.
+
+					*:fina* *:finally* *E606* *E607*
+:fina[lly]		The following commands until the matching |:endtry|
+			are executed whenever the part between the matching
+			|:try| and the ":finally" is left:  either by falling
+			through to the ":finally" or by a |:continue|,
+			|:break|, |:finish|, or |:return|, or by an error or
+			interrupt or exception (see |:throw|).
+
+							*:th* *:throw* *E608*
+:th[row] {expr1}	The {expr1} is evaluated and thrown as an exception.
+			If the ":throw" is used after a |:try| but before the
+			first corresponding |:catch|, commands are skipped
+			until the first ":catch" matching {expr1} is reached.
+			If there is no such ":catch" or if the ":throw" is
+			used after a ":catch" but before the |:finally|, the
+			commands following the ":finally" (if present) up to
+			the matching |:endtry| are executed.  If the ":throw"
+			is after the ":finally", commands up to the ":endtry"
+			are skipped.  At the ":endtry", this process applies
+			again for the next dynamically surrounding ":try"
+			(which may be found in a calling function or sourcing
+			script), until a matching ":catch" has been found.
+			If the exception is not caught, the command processing
+			is terminated.
+			Example: >
+		:try | throw "oops" | catch /^oo/ | echo "caught" | endtry
+<
+
+							*:ec* *:echo*
+:ec[ho] {expr1} ..	Echoes each {expr1}, with a space in between.  The
+			first {expr1} starts on a new line.
+			Also see |:comment|.
+			Use "\n" to start a new line.  Use "\r" to move the
+			cursor to the first column.
+			Uses the highlighting set by the |:echohl| command.
+			Cannot be followed by a comment.
+			Example: >
+		:echo "the value of 'shell' is" &shell
+<			A later redraw may make the message disappear again.
+			To avoid that a command from before the ":echo" causes
+			a redraw afterwards (redraws are often postponed until
+			you type something), force a redraw with the |:redraw|
+			command.  Example: >
+		:new | redraw | echo "there is a new window"
+<
+							*:echon*
+:echon {expr1} ..	Echoes each {expr1}, without anything added.  Also see
+			|:comment|.
+			Uses the highlighting set by the |:echohl| command.
+			Cannot be followed by a comment.
+			Example: >
+				:echon "the value of 'shell' is " &shell
+<
+			Note the difference between using ":echo", which is a
+			Vim command, and ":!echo", which is an external shell
+			command: >
+		:!echo %		--> filename
+<			The arguments of ":!" are expanded, see |:_%|. >
+		:!echo "%"		--> filename or "filename"
+<			Like the previous example.  Whether you see the double
+			quotes or not depends on your 'shell'. >
+		:echo %			--> nothing
+<			The '%' is an illegal character in an expression. >
+		:echo "%"		--> %
+<			This just echoes the '%' character. >
+		:echo expand("%")	--> filename
+<			This calls the expand() function to expand the '%'.
+
+							*:echoh* *:echohl*
+:echoh[l] {name}	Use the highlight group {name} for the following
+			|:echo|, |:echon| and |:echomsg| commands.  Also used
+			for the |input()| prompt.  Example: >
+		:echohl WarningMsg | echo "Don't panic!" | echohl None
+<			Don't forget to set the group back to "None",
+			otherwise all following echo's will be highlighted.
+
+							*:echom* *:echomsg*
+:echom[sg] {expr1} ..	Echo the expression(s) as a true message, saving the
+			message in the |message-history|.
+			Spaces are placed between the arguments as with the
+			|:echo| command.  But unprintable characters are
+			displayed, not interpreted.
+			Uses the highlighting set by the |:echohl| command.
+			Example: >
+		:echomsg "It's a Zizzer Zazzer Zuzz, as you can plainly see."
+<
+							*:echoe* *:echoerr*
+:echoe[rr] {expr1} ..	Echo the expression(s) as an error message, saving the
+			message in the |message-history|.  When used in a
+			script or function the line number will be added.
+			Spaces are placed between the arguments as with the
+			:echo command.  When used inside a try conditional,
+			the message is raised as an error exception instead
+			(see |try-echoerr|).
+			Example: >
+		:echoerr "This script just failed!"
+<			If you just want a highlighted message use |:echohl|.
+			And to get a beep: >
+		:exe "normal \<Esc>"
+<
+							*:exe* *:execute*
+:exe[cute] {expr1} ..	Executes the string that results from the evaluation
+			of {expr1} as an Ex command.  Multiple arguments are
+			concatenated, with a space in between.  {expr1} is
+			used as the processed command, command line editing
+			keys are not recognized.
+			Cannot be followed by a comment.
+			Examples: >
+		:execute "buffer " nextbuf
+		:execute "normal " count . "w"
+<
+			":execute" can be used to append a command to commands
+			that don't accept a '|'.  Example: >
+		:execute '!ls' | echo "theend"
+
+<			":execute" is also a nice way to avoid having to type
+			control characters in a Vim script for a ":normal"
+			command: >
+		:execute "normal ixxx\<Esc>"
+<			This has an <Esc> character, see |expr-string|.
+
+			Note: The executed string may be any command-line, but
+			you cannot start or end a "while" or "if" command.
+			Thus this is illegal: >
+		:execute 'while i > 5'
+		:execute 'echo "test" | break'
+<
+			It is allowed to have a "while" or "if" command
+			completely in the executed string: >
+		:execute 'while i < 5 | echo i | let i = i + 1 | endwhile'
+<
+
+							*:comment*
+			":execute", ":echo" and ":echon" cannot be followed by
+			a comment directly, because they see the '"' as the
+			start of a string.  But, you can use '|' followed by a
+			comment.  Example: >
+		:echo "foo" | "this is a comment
+
+==============================================================================
+8. Exception handling					*exception-handling*
+
+The Vim script language comprises an exception handling feature.  This section
+explains how it can be used in a Vim script.
+
+Exceptions may be raised by Vim on an error or on interrupt, see
+|catch-errors| and |catch-interrupt|.  You can also explicitly throw an
+exception by using the ":throw" command, see |throw-catch|.
+
+
+TRY CONDITIONALS					*try-conditionals*
+
+Exceptions can be caught or can cause cleanup code to be executed.  You can
+use a try conditional to specify catch clauses (that catch exceptions) and/or
+a finally clause (to be executed for cleanup).
+   A try conditional begins with a |:try| command and ends at the matching
+|:endtry| command.  In between, you can use a |:catch| command to start
+a catch clause, or a |:finally| command to start a finally clause.  There may
+be none or multiple catch clauses, but there is at most one finally clause,
+which must not be followed by any catch clauses.  The lines before the catch
+clauses and the finally clause is called a try block. >
+
+     :try
+     :  ...
+     :  ...				TRY BLOCK
+     :  ...
+     :catch /{pattern}/
+     :  ...
+     :  ...				CATCH CLAUSE
+     :  ...
+     :catch /{pattern}/
+     :  ...
+     :  ...				CATCH CLAUSE
+     :  ...
+     :finally
+     :  ...
+     :  ...				FINALLY CLAUSE
+     :  ...
+     :endtry
+
+The try conditional allows to watch code for exceptions and to take the
+appropriate actions.  Exceptions from the try block may be caught.  Exceptions
+from the try block and also the catch clauses may cause cleanup actions.
+   When no exception is thrown during execution of the try block, the control
+is transferred to the finally clause, if present.  After its execution, the
+script continues with the line following the ":endtry".
+   When an exception occurs during execution of the try block, the remaining
+lines in the try block are skipped.  The exception is matched against the
+patterns specified as arguments to the ":catch" commands.  The catch clause
+after the first matching ":catch" is taken, other catch clauses are not
+executed.  The catch clause ends when the next ":catch", ":finally", or
+":endtry" command is reached - whatever is first.  Then, the finally clause
+(if present) is executed.  When the ":endtry" is reached, the script execution
+continues in the following line as usual.
+   When an exception that does not match any of the patterns specified by the
+":catch" commands is thrown in the try block, the exception is not caught by
+that try conditional and none of the catch clauses is executed.  Only the
+finally clause, if present, is taken.  The exception pends during execution of
+the finally clause.  It is resumed at the ":endtry", so that commands after
+the ":endtry" are not executed and the exception might be caught elsewhere,
+see |try-nesting|.
+   When during execution of a catch clause another exception is thrown, the
+remaining lines in that catch clause are not executed.  The new exception is
+not matched against the patterns in any of the ":catch" commands of the same
+try conditional and none of its catch clauses is taken.  If there is, however,
+a finally clause, it is executed, and the exception pends during its
+execution.  The commands following the ":endtry" are not executed.  The new
+exception might, however, be caught elsewhere, see |try-nesting|.
+   When during execution of the finally clause (if present) an exception is
+thrown, the remaining lines in the finally clause are skipped.  If the finally
+clause has been taken because of an exception from the try block or one of the
+catch clauses, the original (pending) exception is discarded.  The commands
+following the ":endtry" are not executed, and the exception from the finally
+clause is propagated and can be caught elsewhere, see |try-nesting|.
+
+The finally clause is also executed, when a ":break" or ":continue" for
+a ":while" loop enclosing the complete try conditional is executed from the
+try block or a catch clause.  Or when a ":return" or ":finish" is executed
+from the try block or a catch clause of a try conditional in a function or
+sourced script, respectively.  The ":break", ":continue", ":return", or
+":finish" pends during execution of the finally clause and is resumed when the
+":endtry" is reached.  It is, however, discarded when an exception is thrown
+from the finally clause.
+   When a ":break" or ":continue" for a ":while" loop enclosing the complete
+try conditional or when a ":return" or ":finish" is encountered in the finally
+clause, the rest of the finally clause is skipped, and the ":break",
+":continue", ":return" or ":finish" is executed as usual.  If the finally
+clause has been taken because of an exception or an earlier ":break",
+":continue", ":return", or ":finish" from the try block or a catch clause,
+this pending exception or command is discarded.
+
+For examples see |throw-catch| and |try-finally|.
+
+
+NESTING	OF TRY CONDITIONALS				*try-nesting*
+
+Try conditionals can be nested arbitrarily.  That is, a complete try
+conditional can be put into the try block, a catch clause, or the finally
+clause of another try conditional.  If the inner try conditional does not
+catch an exception thrown in its try block or throws a new exception from one
+of its catch clauses or its finally clause, the outer try conditional is
+checked according to the rules above.  If the inner try conditional is in the
+try block of the outer try conditional, its catch clauses are checked, but
+otherwise only the finally clause is executed.  It does not matter for
+nesting, whether the inner try conditional is directly contained in the outer
+one, or whether the outer one sources a script or calls a function containing
+the inner try conditional.
+
+When none of the active try conditionals catches an exception, just their
+finally clauses are executed.  Thereafter, the script processing terminates.
+An error message is displayed in case of an uncaught exception explicitly
+thrown by a ":throw" command.  For uncaught error and interrupt exceptions
+implicitly raised by Vim, the error message(s) or interrupt message are shown
+as usual.
+
+For examples see |throw-catch|.
+
+
+EXAMINING EXCEPTION HANDLING CODE			*except-examine*
+
+Exception handling code can get tricky.  If you are in doubt what happens, set
+'verbose' to 13 or use the ":13verbose" command modifier when sourcing your
+script file.  Then you see when an exception is thrown, discarded, caught, or
+finished.  When using a verbosity level of at least 14, things pending in
+a finally clause are also shown.  This information is also given in debug mode
+(see |debug-scripts|).
+
+
+THROWING AND CATCHING EXCEPTIONS			*throw-catch*
+
+You can throw any number or string as an exception.  Use the |:throw| command
+and pass the value to be thrown as argument: >
+	:throw 4711
+	:throw "string"
+<							*throw-expression*
+You can also specify an expression argument.  The expression is then evaluated
+first, and the result is thrown: >
+	:throw 4705 + strlen("string")
+	:throw strpart("strings", 0, 6)
+
+An exception might be thrown during evaluation of the argument of the ":throw"
+command.  Unless it is caught there, the expression evaluation is abandoned.
+The ":throw" command then does not throw a new exception.
+   Example: >
+
+	:function! Foo(arg)
+	:  try
+	:    throw a:arg
+	:  catch /foo/
+	:  endtry
+	:  return 1
+	:endfunction
+	:
+	:function! Bar()
+	:  echo "in Bar"
+	:  return 4710
+	:endfunction
+	:
+	:throw Foo("arrgh") + Bar()
+
+This throws "arrgh", and "in Bar" is not displayed since Bar() is not
+executed. >
+	:throw Foo("foo") + Bar()
+however displays "in Bar" and throws 4711.
+
+Any other command that takes an expression as argument might also be
+abandoned by an (uncaught) exception during the expression evaluation.  The
+exception is then propagated to the caller of the command.
+   Example: >
+
+	:if Foo("arrgh")
+	:  echo "then"
+	:else
+	:  echo "else"
+	:endif
+
+Here neither of "then" or "else" is displayed.
+
+							*catch-order*
+Exceptions can be caught by a try conditional with one or more |:catch|
+commands, see |try-conditionals|.   The values to be caught by each ":catch"
+command can be specified as a pattern argument.  The subsequent catch clause
+gets executed when a matching exception is caught.
+   Example: >
+
+	:function! Foo(value)
+	:  try
+	:    throw a:value
+	:  catch /^\d\+$/
+	:    echo "Number thrown"
+	:  catch /.*/
+	:    echo "String thrown"
+	:  endtry
+	:endfunction
+	:
+	:call Foo(0x1267)
+	:call Foo('string')
+
+The first call to Foo() displays "Number thrown", the second "String thrown".
+An exception is matched against the ":catch" commands in the order they are
+specified.  Only the first match counts.  So you should place the more
+specific ":catch" first.  The following order does not make sense: >
+
+	:  catch /.*/
+	:    echo "String thrown"
+	:  catch /^\d\+$/
+	:    echo "Number thrown"
+
+The first ":catch" here matches always, so that the second catch clause is
+never taken.
+
+							*throw-variables*
+If you catch an exception by a general pattern, you may access the exact value
+in the variable |v:exception|: >
+
+	:  catch /^\d\+$/
+	:    echo "Number thrown.  Value is" v:exception
+
+You may also be interested where an exception was thrown.  This is stored in
+|v:throwpoint|.  Note that "v:exception" and "v:throwpoint" are valid for the
+exception most recently caught as long it is not finished.
+   Example: >
+
+	:function! Caught()
+	:  if v:exception != ""
+	:    echo 'Caught "' . v:exception . '" in ' . v:throwpoint
+	:  else
+	:    echo 'Nothing caught'
+	:  endif
+	:endfunction
+	:
+	:function! Foo()
+	:  try
+	:    try
+	:      try
+	:	 throw 4711
+	:      finally
+	:	 call Caught()
+	:      endtry
+	:    catch /.*/
+	:      call Caught()
+	:      throw "oops"
+	:    endtry
+	:  catch /.*/
+	:    call Caught()
+	:  finally
+	:    call Caught()
+	:  endtry
+	:endfunction
+	:
+	:call Foo()
+
+This displays >
+
+	Nothing caught
+	Caught "4711" in function Foo, line 4
+	Caught "oops" in function Foo, line 10
+	Nothing caught
+
+A practical example:  The following command ":LineNumber" displays the line
+number in the script or function where it has been used: >
+
+	:function! LineNumber()
+	:    return substitute(v:throwpoint, '.*\D\(\d\+\).*', '\1', "")
+	:endfunction
+	:command! LineNumber try | throw "" | catch | echo LineNumber() | endtry
+<
+							*try-nested*
+An exception that is not caught by a try conditional can be caught by
+a surrounding try conditional: >
+
+	:try
+	:  try
+	:    throw "foo"
+	:  catch /foobar/
+	:    echo "foobar"
+	:  finally
+	:    echo "inner finally"
+	:  endtry
+	:catch /foo/
+	:  echo "foo"
+	:endtry
+
+The inner try conditional does not catch the exception, just its finally
+clause is executed.  The exception is then caught by the outer try
+conditional.  The example displays "inner finally" and then "foo".
+
+							*throw-from-catch*
+You can catch an exception and throw a new one to be caught elsewhere from the
+catch clause: >
+
+	:function! Foo()
+	:  throw "foo"
+	:endfunction
+	:
+	:function! Bar()
+	:  try
+	:    call Foo()
+	:  catch /foo/
+	:    echo "Caught foo, throw bar"
+	:    throw "bar"
+	:  endtry
+	:endfunction
+	:
+	:try
+	:  call Bar()
+	:catch /.*/
+	:  echo "Caught" v:exception
+	:endtry
+
+This displays "Caught foo, throw bar" and then "Caught bar".
+
+							*rethrow*
+There is no real rethrow in the Vim script language, but you may throw
+"v:exception" instead: >
+
+	:function! Bar()
+	:  try
+	:    call Foo()
+	:  catch /.*/
+	:    echo "Rethrow" v:exception
+	:    throw v:exception
+	:  endtry
+	:endfunction
+<							*try-echoerr*
+Note that this method cannot be used to "rethrow" Vim error or interrupt
+exceptions, because it is not possible to fake Vim internal exceptions.
+Trying so causes an error exception.  You should throw your own exception
+denoting the situation.  If you want to cause a Vim error exception containing
+the original error exception value, you can use the |:echoerr| command: >
+
+	:try
+	:  try
+	:    asdf
+	:  catch /.*/
+	:    echoerr v:exception
+	:  endtry
+	:catch /.*/
+	:  echo v:exception
+	:endtry
+
+This code displays
+
+	Vim(echoerr):Vim:E492: Not an editor command:   asdf ~
+
+
+CLEANUP CODE						*try-finally*
+
+Scripts often change global settings and restore them at their end.  If the
+user however interrupts the script by pressing CTRL-C, the settings remain in
+an inconsistent state.  The same may happen to you in the development phase of
+a script when an error occurs or you explicitly throw an exception without
+catching it.  You can solve these problems by using a try conditional with
+a finally clause for restoring the settings.  Its execution is guaranteed on
+normal control flow, on error, on an explicit ":throw", and on interrupt.
+(Note that errors and interrupts from inside the try conditional are converted
+to exceptions.  When not caught, they terminate the script after the finally
+clause has been executed.)
+Example: >
+
+	:try
+	:  let s:saved_ts = &ts
+	:  set ts=17
+	:
+	:  " Do the hard work here.
+	:
+	:finally
+	:  let &ts = s:saved_ts
+	:  unlet s:saved_ts
+	:endtry
+
+This method should be used locally whenever a function or part of a script
+changes global settings which need to be restored on failure or normal exit of
+that function or script part.
+
+							*break-finally*
+Cleanup code works also when the try block or a catch clause is left by
+a ":continue", ":break", ":return", or ":finish".
+   Example: >
+
+	:let first = 1
+	:while 1
+	:  try
+	:    if first
+	:      echo "first"
+	:      let first = 0
+	:      continue
+	:    else
+	:      throw "second"
+	:    endif
+	:  catch /.*/
+	:    echo v:exception
+	:    break
+	:  finally
+	:    echo "cleanup"
+	:  endtry
+	:  echo "still in while"
+	:endwhile
+	:echo "end"
+
+This displays "first", "cleanup", "second", "cleanup", and "end". >
+
+	:function! Foo()
+	:  try
+	:    return 4711
+	:  finally
+	:    echo "cleanup\n"
+	:  endtry
+	:  echo "Foo still active"
+	:endfunction
+	:
+	:echo Foo() "returned by Foo"
+
+This displays "cleanup" and "4711 returned by Foo".  You don't need to add an
+extra ":return" in the finally clause.  (Above all, this would override the
+return value.)
+
+							*except-from-finally*
+Using either of ":continue", ":break", ":return", ":finish", or ":throw" in
+a finally clause is possible, but not recommended since it abandons the
+cleanup actions for the try conditional.  But, of course, interrupt and error
+exceptions might get raised from a finally clause.
+   Example where an error in the finally clause stops an interrupt from
+working correctly: >
+
+	:try
+	:  try
+	:    echo "Press CTRL-C for interrupt"
+	:    while 1
+	:    endwhile
+	:  finally
+	:    unlet novar
+	:  endtry
+	:catch /novar/
+	:endtry
+	:echo "Script still running"
+	:sleep 1
+
+If you need to put commands that could fail into a finally clause, you should
+think about catching or ignoring the errors in these commands, see
+|catch-errors| and |ignore-errors|.
+
+
+CATCHING ERRORS						*catch-errors*
+
+If you want to catch specific errors, you just have to put the code to be
+watched in a try block and add a catch clause for the error message.  The
+presence of the try conditional causes all errors to be converted to an
+exception.  No message is displayed and |v:errmsg| is not set then.  To find
+the right pattern for the ":catch" command, you have to know how the format of
+the error exception is.
+   Error exceptions have the following format: >
+
+	Vim({cmdname}):{errmsg}
+or >
+	Vim:{errmsg}
+
+{cmdname} is the name of the command that failed; the second form is used when
+the command name is not known.  {errmsg} is the error message usually produced
+when the error occurs outside try conditionals.  It always begins with
+a capital "E", followed by a two or three-digit error number, a colon, and
+a space.
+
+Examples:
+
+The command >
+	:unlet novar
+normally produces the error message >
+	E108: No such variable: "novar"
+which is converted inside try conditionals to an exception >
+	Vim(unlet):E108: No such variable: "novar"
+
+The command >
+	:dwim
+normally produces the error message >
+	E492: Not an editor command: dwim
+which is converted inside try conditionals to an exception >
+	Vim:E492: Not an editor command: dwim
+
+You can catch all ":unlet" errors by a >
+	:catch /^Vim(unlet):/
+or all errors for misspelled command names by a >
+	:catch /^Vim:E492:/
+
+Some error messages may be produced by different commands: >
+	:function nofunc
+and >
+	:delfunction nofunc
+both produce the error message >
+	E128: Function name must start with a capital: nofunc
+which is converted inside try conditionals to an exception >
+	Vim(function):E128: Function name must start with a capital: nofunc
+or >
+	Vim(delfunction):E128: Function name must start with a capital: nofunc
+respectively.  You can catch the error by its number independently on the
+command that caused it if you use the following pattern: >
+	:catch /^Vim(\a\+):E128:/
+
+Some commands like >
+	:let x = novar
+produce multiple error messages, here: >
+	E121: Undefined variable: novar
+	E15: Invalid expression:  novar
+Only the first is used for the exception value, since it is the most specific
+one (see |except-several-errors|).  So you can catch it by >
+	:catch /^Vim(\a\+):E121:/
+
+You can catch all errors related to the name "nofunc" by >
+	:catch /\<nofunc\>/
+
+You can catch all Vim errors in the ":write" and ":read" commands by >
+	:catch /^Vim(\(write\|read\)):E\d\+:/
+
+You can catch all Vim errors by the pattern >
+	:catch /^Vim\((\a\+)\)\=:E\d\+:/
+<
+							*catch-text*
+NOTE: You should never catch the error message text itself: >
+	:catch /No such variable/
+only works in the english locale, but not when the user has selected
+a different language by the |:language| command.  It is however helpful to
+cite the message text in a comment: >
+	:catch /^Vim(\a\+):E108:/   " No such variable
+
+
+IGNORING ERRORS						*ignore-errors*
+
+You can ignore errors in a specific Vim command by catching them locally: >
+
+	:try
+	:  write
+	:catch
+	:endtry
+
+But you are strongly recommended NOT to use this simple form, since it could
+catch more than you want.  With the ":write" command, some autocommands could
+be executed and cause errors not related to writing, for instance: >
+
+	:au BufWritePre * unlet novar
+
+There could even be such errors you are not responsible for as a script
+writer: a user of your script might have defined such autocommands.  You would
+then hide the error from the user.
+   It is much better to use >
+
+	:try
+	:  write
+	:catch /^Vim(write):/
+	:endtry
+
+which only catches real write errors.  So catch only what you'd like to ignore
+intentionally.
+
+For a single command that does not cause execution of autocommands, you could
+even suppress the conversion of errors to exceptions by the ":silent!"
+command: >
+	:silent! nunmap k
+This works also when a try conditional is active.
+
+
+CATCHING INTERRUPTS					*catch-interrupt*
+
+When there are active try conditionals, an interrupt (CTRL-C) is converted to
+the exception "Vim:Interrupt".  You can catch it like every exception.  The
+script is not terminated, then.
+   Example: >
+
+	:function! TASK1()
+	:  sleep 10
+	:endfunction
+
+	:function! TASK2()
+	:  sleep 20
+	:endfunction
+
+	:while 1
+	:  let command = input("Type a command: ")
+	:  try
+	:    if command == ""
+	:      continue
+	:    elseif command == "END"
+	:      break
+	:    elseif command == "TASK1"
+	:      call TASK1()
+	:    elseif command == "TASK2"
+	:      call TASK2()
+	:    else
+	:      echo "\nIllegal command:" command
+	:      continue
+	:    endif
+	:  catch /^Vim:Interrupt$/
+	:    echo "\nCommand interrupted"
+	:    " Caught the interrupt.  Continue with next prompt.
+	:  endtry
+	:endwhile
+
+You can interrupt a task here by pressing CTRL-C; the script then asks for
+a new command.  If you press CTRL-C at the prompt, the script is terminated.
+
+For testing what happens when CTRL-C would be pressed on a specific line in
+your script, use the debug mode and execute the |>quit| or |>interrupt|
+command on that line.  See |debug-scripts|.
+
+
+CATCHING ALL						*catch-all*
+
+The commands >
+
+	:catch /.*/
+	:catch //
+	:catch
+
+catch everything, error exceptions, interrupt exceptions and exceptions
+explicitly thrown by the |:throw| command.  This is useful at the top level of
+a script in order to catch unexpected things.
+   Example: >
+
+	:try
+	:
+	:  " do the hard work here
+	:
+	:catch /MyException/
+	:
+	:  " handle known problem
+	:
+	:catch /^Vim:Interrupt$/
+	:    echo "Script interrupted"
+	:catch /.*/
+	:  echo "Internal error (" . v:exception . ")"
+	:  echo " - occurred at " . v:throwpoint
+	:endtry
+	:" end of script
+
+Note: Catching all might catch more things than you want.  Thus, you are
+strongly encouraged to catch only for problems that you can really handle by
+specifying a pattern argument to the ":catch".
+   Example: Catching all could make it nearly impossible to interrupt a script
+by pressing CTRL-C: >
+
+	:while 1
+	:  try
+	:    sleep 1
+	:  catch
+	:  endtry
+	:endwhile
+
+
+EXCEPTIONS AND AUTOCOMMANDS				*except-autocmd*
+
+Exceptions may be used during execution of autocommands.  Example: >
+
+	:autocmd User x try
+	:autocmd User x   throw "Oops!"
+	:autocmd User x catch
+	:autocmd User x   echo v:exception
+	:autocmd User x endtry
+	:autocmd User x throw "Arrgh!"
+	:autocmd User x echo "Should not be displayed"
+	:
+	:try
+	:  doautocmd User x
+	:catch
+	:  echo v:exception
+	:endtry
+
+This displays "Oops!" and "Arrgh!".
+
+							*except-autocmd-Pre*
+For some commands, autocommands get executed before the main action of the
+command takes place.  If an exception is thrown and not caught in the sequence
+of autocommands, the sequence and the command that caused its execution are
+abandoned and the exception is propagated to the caller of the command.
+   Example: >
+
+	:autocmd BufWritePre * throw "FAIL"
+	:autocmd BufWritePre * echo "Should not be displayed"
+	:
+	:try
+	:  write
+	:catch
+	:  echo "Caught:" v:exception "from" v:throwpoint
+	:endtry
+
+Here, the ":write" command does not write the file currently being edited (as
+you can see by checking 'modified'), since the exception from the BufWritePre
+autocommand abandons the ":write".  The exception is then caught and the
+script displays: >
+
+	Caught: FAIL from BufWrite Auto commands for "*"
+<
+							*except-autocmd-Post*
+For some commands, autocommands get executed after the main action of the
+command has taken place.  If this main action fails and the command is inside
+an active try conditional, the autocommands are skipped and an error exception
+is thrown that can be caught by the caller of the command.
+   Example: >
+
+	:autocmd BufWritePost * echo "File successfully written!"
+	:
+	:try
+	:  write /i/m/p/o/s/s/i/b/l/e
+	:catch
+	:  echo v:exception
+	:endtry
+
+This just displays: >
+
+	Vim(write):E212: Can't open file for writing (/i/m/p/o/s/s/i/b/l/e)
+
+If you really need to execute the autocommands even when the main action
+fails, trigger the event from the catch clause.
+   Example: >
+
+	:autocmd BufWritePre  * set noreadonly
+	:autocmd BufWritePost * set readonly
+	:
+	:try
+	:  write /i/m/p/o/s/s/i/b/l/e
+	:catch
+	:  doautocmd BufWritePost /i/m/p/o/s/s/i/b/l/e
+	:endtry
+<
+You can also use ":silent!": >
+
+	:let x = "ok"
+	:let v:errmsg = ""
+	:autocmd BufWritePost * if v:errmsg != ""
+	:autocmd BufWritePost *   let x = "after fail"
+	:autocmd BufWritePost * endif
+	:try
+	:  silent! write /i/m/p/o/s/s/i/b/l/e
+	:catch
+	:endtry
+	:echo x
+
+This displays "after fail".
+
+If the main action of the command does not fail, exceptions from the
+autocommands will be catchable by the caller of the command:  >
+
+	:autocmd BufWritePost * throw ":-("
+	:autocmd BufWritePost * echo "Should not be displayed"
+	:
+	:try
+	:  write
+	:catch
+	:  echo v:exception
+	:endtry
+<
+							*except-autocmd-Cmd*
+For some commands, the normal action can be replaced by a sequence of
+autocommands.  Exceptions from that sequence will be catchable by the caller
+of the command.
+   Example:  For the ":write" command, the caller cannot know whether the file
+had actually been written when the exception occurred.  You need to tell it in
+some way. >
+
+	:if !exists("cnt")
+	:  let cnt = 0
+	:
+	:  autocmd BufWriteCmd * if &modified
+	:  autocmd BufWriteCmd *   let cnt = cnt + 1
+	:  autocmd BufWriteCmd *   if cnt % 3 == 2
+	:  autocmd BufWriteCmd *     throw "BufWriteCmdError"
+	:  autocmd BufWriteCmd *   endif
+	:  autocmd BufWriteCmd *   write | set nomodified
+	:  autocmd BufWriteCmd *   if cnt % 3 == 0
+	:  autocmd BufWriteCmd *     throw "BufWriteCmdError"
+	:  autocmd BufWriteCmd *   endif
+	:  autocmd BufWriteCmd *   echo "File successfully written!"
+	:  autocmd BufWriteCmd * endif
+	:endif
+	:
+	:try
+	:	write
+	:catch /^BufWriteCmdError$/
+	:  if &modified
+	:    echo "Error on writing (file contents not changed)"
+	:  else
+	:    echo "Error after writing"
+	:  endif
+	:catch /^Vim(write):/
+	:    echo "Error on writing"
+	:endtry
+
+When this script is sourced several times after making changes, it displays
+first >
+	File successfully written!
+then >
+	Error on writing (file contents not changed)
+then >
+	Error after writing
+etc.
+
+							*except-autocmd-ill*
+You cannot spread a try conditional over autocommands for different events.
+The following code is ill-formed: >
+
+	:autocmd BufWritePre  * try
+	:
+	:autocmd BufWritePost * catch
+	:autocmd BufWritePost *   echo v:exception
+	:autocmd BufWritePost * endtry
+	:
+	:write
+
+
+EXCEPTION HIERARCHIES AND PARAMETERIZED EXCEPTIONS	*except-hier-param*
+
+Some programming languages allow to use hierarchies of exception classes or to
+pass additional information with the object of an exception class.  You can do
+similar things in Vim.
+   In order to throw an exception from a hierarchy, just throw the complete
+class name with the components separated by a colon, for instance throw the
+string "EXCEPT:MATHERR:OVERFLOW" for an overflow in a mathematical library.
+   When you want to pass additional information with your exception class, add
+it in parentheses, for instance throw the string "EXCEPT:IO:WRITEERR(myfile)"
+for an error when writing "myfile".
+   With the appropriate patterns in the ":catch" command, you can catch for
+base classes or derived classes of your hierarchy.  Additional information in
+parentheses can be cut out from |v:exception| with the ":substitute" command.
+   Example: >
+
+	:function! CheckRange(a, func)
+	:  if a:a < 0
+	:    throw "EXCEPT:MATHERR:RANGE(" . a:func . ")"
+	:  endif
+	:endfunction
+	:
+	:function! Add(a, b)
+	:  call CheckRange(a:a, "Add")
+	:  call CheckRange(a:b, "Add")
+	:  let c = a:a + a:b
+	:  if c < 0
+	:    throw "EXCEPT:MATHERR:OVERFLOW"
+	:  endif
+	:  return c
+	:endfunction
+	:
+	:function! Div(a, b)
+	:  call CheckRange(a:a, "Div")
+	:  call CheckRange(a:b, "Div")
+	:  if (a:b == 0)
+	:    throw "EXCEPT:MATHERR:ZERODIV"
+	:  endif
+	:  return a:a / a:b
+	:endfunction
+	:
+	:function! Write(file)
+	:  try
+	:    execute "write" a:file
+	:  catch /^Vim(write):/
+	:    throw "EXCEPT:IO(" . getcwd() . ", " . a:file . "):WRITEERR"
+	:  endtry
+	:endfunction
+	:
+	:try
+	:
+	:  " something with arithmetics and I/O
+	:
+	:catch /^EXCEPT:MATHERR:RANGE/
+	:  let function = substitute(v:exception, '.*(\(\a\+\)).*', '\1', "")
+	:  echo "Range error in" function
+	:
+	:catch /^EXCEPT:MATHERR/	" catches OVERFLOW and ZERODIV
+	:  echo "Math error"
+	:
+	:catch /^EXCEPT:IO/
+	:  let dir = substitute(v:exception, '.*(\(.\+\),\s*.\+).*', '\1', "")
+	:  let file = substitute(v:exception, '.*(.\+,\s*\(.\+\)).*', '\1', "")
+	:  if file !~ '^/'
+	:    let file = dir . "/" . file
+	:  endif
+	:  echo 'I/O error for "' . file . '"'
+	:
+	:catch /^EXCEPT/
+	:  echo "Unspecified error"
+	:
+	:endtry
+
+The exceptions raised by Vim itself (on error or when pressing CTRL-C) use
+a flat hierarchy:  they are all in the "Vim" class.  You cannot throw yourself
+exceptions with the "Vim" prefix; they are reserved for Vim.
+   Vim error exceptions are parameterized with the name of the command that
+failed, if known.  See |catch-errors|.
+
+
+PECULIARITIES
+							*except-compat*
+The exception handling concept requires that the command sequence causing the
+exception is aborted immediately and control is transferred to finally clauses
+and/or a catch clause.
+
+In the Vim script language there are cases where scripts and functions
+continue after an error: in functions without the "abort" flag or in a command
+after ":silent!", control flow goes to the following line, and outside
+functions, control flow goes to the line following the outermost ":endwhile"
+or ":endif".  On the other hand, errors should be catchable as exceptions
+(thus, requiring the immediate abortion).
+
+This problem has been solved by converting errors to exceptions and using
+immediate abortion (if not suppressed by ":silent!") only when a try
+conditional is active.  This is no restriction since an (error) exception can
+be caught only from an active try conditional.  If you want an immediate
+termination without catching the error, just use a try conditional without
+catch clause.  (You can cause cleanup code being executed before termination
+by specifying a finally clause.)
+
+When no try conditional is active, the usual abortion and continuation
+behavior is used instead of immediate abortion.  This ensures compatibility of
+scripts written for Vim 6.1 and earlier.
+
+However, when sourcing an existing script that does not use exception handling
+commands (or when calling one of its functions) from inside an active try
+conditional of a new script, you might change the control flow of the existing
+script on error.  You get the immediate abortion on error and can catch the
+error in the new script.  If however the sourced script suppresses error
+messages by using the ":silent!" command (checking for errors by testing
+|v:errmsg| if appropriate), its execution path is not changed.  The error is
+not converted to an exception.  (See |:silent|.)  So the only remaining cause
+where this happens is for scripts that don't care about errors and produce
+error messages.  You probably won't want to use such code from your new
+scripts.
+
+							*except-syntax-err*
+Syntax errors in the exception handling commands are never caught by any of
+the ":catch" commands of the try conditional they belong to.  Its finally
+clauses, however, is executed.
+   Example: >
+
+	:try
+	:  try
+	:    throw 4711
+	:  catch /\(/
+	:    echo "in catch with syntax error"
+	:  catch
+	:    echo "inner catch-all"
+	:  finally
+	:    echo "inner finally"
+	:  endtry
+	:catch
+	:  echo 'outer catch-all caught "' . v:exception . '"'
+	:  finally
+	:    echo "outer finally"
+	:endtry
+
+This displays: >
+    inner finally
+    outer catch-all caught "Vim(catch):E54: Unmatched \("
+    outer finally
+The original exception is discarded and an error exception is raised, instead.
+
+							*except-single-line*
+The ":try", ":catch", ":finally", and ":endtry" commands can be put on
+a single line, but then syntax errors may make it difficult to recognize the
+"catch" line, thus you better avoid this.
+   Example: >
+	:try | unlet! foo # | catch | endtry
+raises an error exception for the trailing characters after the ":unlet!"
+argument, but does not see the ":catch" and ":endtry" commands, so that the
+error exception is discarded and the "E488: Trailing characters" message gets
+displayed.
+
+							*except-several-errors*
+When several errors appear in a single command, the first error message is
+usually the most specific one and therefor converted to the error exception.
+   Example: >
+	echo novar
+causes >
+	E121: Undefined variable: novar
+	E15: Invalid expression: novar
+The value of the error exception inside try conditionals is: >
+	Vim(echo):E121: Undefined variable: novar
+<							*except-syntax-error*
+But when a syntax error is detected after a normal error in the same command,
+the syntax error is used for the exception being thrown.
+   Example: >
+	unlet novar #
+causes >
+	E108: No such variable: "novar"
+	E488: Trailing characters
+The value of the error exception inside try conditionals is: >
+	Vim(unlet):E488: Trailing characters
+This is done because the syntax error might change the execution path in a way
+not intended by the user.  Example: >
+	try
+	    try | unlet novar # | catch | echo v:exception | endtry
+	catch /.*/
+	    echo "outer catch:" v:exception
+	endtry
+This displays "outer catch: Vim(unlet):E488: Trailing characters", and then
+a "E600: Missing :endtry" error message is given, see |except-single-line|.
+
+==============================================================================
+9. Examples						*eval-examples*
+
+Printing in Hex ~
+>
+  :" The function Nr2Hex() returns the Hex string of a number.
+  :func Nr2Hex(nr)
+  :  let n = a:nr
+  :  let r = ""
+  :  while n
+  :    let r = '0123456789ABCDEF'[n % 16] . r
+  :    let n = n / 16
+  :  endwhile
+  :  return r
+  :endfunc
+
+  :" The function String2Hex() converts each character in a string to a two
+  :" character Hex string.
+  :func String2Hex(str)
+  :  let out = ''
+  :  let ix = 0
+  :  while ix < strlen(a:str)
+  :    let out = out . Nr2Hex(char2nr(a:str[ix]))
+  :    let ix = ix + 1
+  :  endwhile
+  :  return out
+  :endfunc
+
+Example of its use: >
+  :echo Nr2Hex(32)
+result: "20" >
+  :echo String2Hex("32")
+result: "3332"
+
+
+Sorting lines (by Robert Webb) ~
+
+Here is a Vim script to sort lines.  Highlight the lines in Vim and type
+":Sort".  This doesn't call any external programs so it'll work on any
+platform.  The function Sort() actually takes the name of a comparison
+function as its argument, like qsort() does in C.  So you could supply it
+with different comparison functions in order to sort according to date etc.
+>
+  :" Function for use with Sort(), to compare two strings.
+  :func! Strcmp(str1, str2)
+  :  if (a:str1 < a:str2)
+  :	return -1
+  :  elseif (a:str1 > a:str2)
+  :	return 1
+  :  else
+  :	return 0
+  :  endif
+  :endfunction
+
+  :" Sort lines.  SortR() is called recursively.
+  :func! SortR(start, end, cmp)
+  :  if (a:start >= a:end)
+  :	return
+  :  endif
+  :  let partition = a:start - 1
+  :  let middle = partition
+  :  let partStr = getline((a:start + a:end) / 2)
+  :  let i = a:start
+  :  while (i <= a:end)
+  :	let str = getline(i)
+  :	exec "let result = " . a:cmp . "(str, partStr)"
+  :	if (result <= 0)
+  :	    " Need to put it before the partition.  Swap lines i and partition.
+  :	    let partition = partition + 1
+  :	    if (result == 0)
+  :		let middle = partition
+  :	    endif
+  :	    if (i != partition)
+  :		let str2 = getline(partition)
+  :		call setline(i, str2)
+  :		call setline(partition, str)
+  :	    endif
+  :	endif
+  :	let i = i + 1
+  :  endwhile
+
+  :  " Now we have a pointer to the "middle" element, as far as partitioning
+  :  " goes, which could be anywhere before the partition.  Make sure it is at
+  :  " the end of the partition.
+  :  if (middle != partition)
+  :	let str = getline(middle)
+  :	let str2 = getline(partition)
+  :	call setline(middle, str2)
+  :	call setline(partition, str)
+  :  endif
+  :  call SortR(a:start, partition - 1, a:cmp)
+  :  call SortR(partition + 1, a:end, a:cmp)
+  :endfunc
+
+  :" To Sort a range of lines, pass the range to Sort() along with the name of a
+  :" function that will compare two lines.
+  :func! Sort(cmp) range
+  :  call SortR(a:firstline, a:lastline, a:cmp)
+  :endfunc
+
+  :" :Sort takes a range of lines and sorts them.
+  :command! -nargs=0 -range Sort <line1>,<line2>call Sort("Strcmp")
+<
+							*sscanf*
+There is no sscanf() function in Vim.  If you need to extract parts from a
+line, you can use matchstr() and substitute() to do it.  This example shows
+how to get the file name, line number and column number out of a line like
+"foobar.txt, 123, 45". >
+   :" Set up the match bit
+   :let mx='\(\f\+\),\s*\(\d\+\),\s*\(\d\+\)'
+   :"get the part matching the whole expression
+   :let l = matchstr(line, mx)
+   :"get each item out of the match
+   :let file = substitute(l, mx, '\1', '')
+   :let lnum = substitute(l, mx, '\2', '')
+   :let col = substitute(l, mx, '\3', '')
+
+The input is in the variable "line", the results in the variables "file",
+"lnum" and "col". (idea from Michael Geddes)
+
+==============================================================================
+10. No +eval feature				*no-eval-feature*
+
+When the |+eval| feature was disabled at compile time, none of the expression
+evaluation commands are available.  To prevent this from causing Vim scripts
+to generate all kinds of errors, the ":if" and ":endif" commands are still
+recognized, though the argument of the ":if" and everything between the ":if"
+and the matching ":endif" is ignored.  Nesting of ":if" blocks is allowed, but
+only if the commands are at the start of the line.  The ":else" command is not
+recognized.
+
+Example of how to avoid executing commands when the |+eval| feature is
+missing: >
+
+	:if 1
+	:  echo "Expression evaluation is compiled in"
+	:else
+	:  echo "You will _never_ see this message"
+	:endif
+
+==============================================================================
+11. The sandbox					*eval-sandbox* *sandbox* *E48*
+
+The 'foldexpr', 'includeexpr', 'indentexpr', 'statusline' and 'foldtext'
+options are evaluated in a sandbox.  This means that you are protected from
+these expressions having nasty side effects.  This gives some safety for when
+these options are set from a modeline.  It is also used when the command from
+a tags file is executed.
+This is not guaranteed 100% secure, but it should block most attacks.
+
+These items are not allowed in the sandbox:
+	- changing the buffer text
+	- defining or changing mapping, autocommands, functions, user commands
+	- setting certain options (see |option-summary|)
+	- executing a shell command
+	- reading or writing a file
+	- jumping to another buffer or editing a file
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/evim.1 b/runtime/doc/evim.1
new file mode 100644
index 0000000..bd25ed6
--- /dev/null
+++ b/runtime/doc/evim.1
@@ -0,0 +1,49 @@
+.TH EVIM 1 "2002 February 16"
+.SH NAME
+evim \- easy Vim, edit a file with Vim and setup for modeless editing
+.SH SYNOPSIS
+.br
+.B evim
+[options] [file ..]
+.br
+.B eview
+.SH DESCRIPTION
+.B eVim
+starts
+.B Vim
+and sets options to make it behave like a modeless editor.
+This is still Vim but used as a point-and-click editor.
+This feels a lot like using Notepad on MS-Windows.
+.B eVim
+will always run in the GUI, to enable the use of menus and toolbar.
+.PP
+Only to be used for people who really can't work with Vim in the normal way.
+Editing will be much less efficient.
+.PP
+.B eview
+is the same, but starts in read-only mode.  It works just like evim -R.
+.PP
+See vim(1) for details about Vim, options, etc.
+.PP
+The 'insertmode' option is set to be able to type text directly.
+.br
+Mappings are setup to make Copy and Paste work with the MS-Windows keys.
+CTRL-X cuts text, CTRL-C copies text and CTRL-V pastes text.
+Use CTRL-Q to obtain the original meaning of CTRL-V.
+.SH OPTIONS
+See vim(1).
+.SH FILES
+.TP 15
+/usr/local/lib/vim/evim.vim
+The script loaded to initialize eVim.
+.SH AKA
+Also Known As "Vim for gumbies".
+When using evim you are expected to take a handkerchief,
+make a knot in each corner and wear it on your head.
+.SH SEE ALSO
+vim(1)
+.SH AUTHOR
+Most of
+.B Vim
+was made by Bram Moolenaar, with a lot of help from others.
+See the Help/Credits menu.
diff --git a/runtime/doc/farsi.txt b/runtime/doc/farsi.txt
new file mode 100644
index 0000000..9902709
--- /dev/null
+++ b/runtime/doc/farsi.txt
@@ -0,0 +1,269 @@
+*farsi.txt*     For Vim version 7.0aa.  Last change: 2002 Oct 29
+
+
+		  VIM REFERENCE MANUAL    by Mortaza Ghassab Shiran
+
+
+Right to Left and Farsi Mapping for Vim		*farsi* *Farsi*
+
+{Vi does not have any of these commands}
+
+						*E27*
+In order to use right-to-left and Farsi mapping support, it is necessary to
+compile Vim with the |+farsi| feature.
+
+These functions have been made by Mortaza G. Shiran <shiran@jps.net>
+
+
+Introduction
+------------
+In right-to-left oriented files the characters appear on the screen from right
+to left.  This kind of file is most useful when writing Farsi documents,
+composing faxes or writing Farsi memos.
+
+The commands, prompts and help files are not in Farsi, therefore the user
+interface remains the standard Vi interface.
+
+
+Highlights
+----------
+o  Editing left-to-right files as in the original Vim, no change.
+
+o  Viewing and editing files in right-to-left windows.   File orientation is
+   per window, so it is possible to view the same file in right-to-left and
+   left-to-right modes, simultaneously.
+
+o  Compatibility to the original Vim.   Almost all features work in
+   right-to-left mode (see bugs below).
+
+o  Changing keyboard mapping and reverse insert modes using a single
+   command.
+
+o  Backing from reverse insert mode to the correct place in the file
+   (if possible).
+
+o  While in Farsi mode, numbers are entered from left to right. Upon entering
+   a none number character, that character will be inserted just into the
+   left of the last number.
+
+o  No special terminal with right-to-left capabilities is required.  The
+   right-to-left changes are completely hardware independent.  Only
+   Farsi font is necessary.
+
+o  Farsi keymapping on the command line in reverse insert mode.
+
+o  Toggling between left-to-right and right-to-left via F8 function key.
+
+o  Toggling between Farsi ISIR-3342 standard encoding and VIM Farsi via F9
+   function key. Since this makes sense only for the text written in
+   right-to-left mode, this function is also supported only in right-to-left
+   mode.
+
+Farsi Fonts					*farsi fonts*
+-----------
+
+If the "extra" archive has been unpacked, the following files are found in the
+subdirectories of the '$VIM/farsi' directory:
+
+   +  far-a01.pcf    X Windows fonts for Unix including Linux systems
+   +  far-a01.bf     X Windows fonts for SunOs
+   +  far-a01.f16    a screen fonts for Unix including Linux systems
+   +  far-a01.fon    a monospaced fonts for Windows NT/95/98
+   +  far-a01.com    a screen fonts for DOS
+
+
+Font Installation
+-----------------
+
+o  Installation of fonts for MS Window systems (NT/95/98)
+
+   From 'Control Panel' folder, start the 'Fonts' program. Then from 'file'
+   menu item select 'Install New Fonts ...'. Browse and select the
+   'far-a01.fon', then follow the installation guide.
+   NOTE: several people have reported that this does not work.  The solution
+   is unknown.
+
+o  Installation of fonts for X Window systems (Unix/Linux)
+
+   Depending on your system, copy far-a01.pcf.Z or far-a01.pcf.gz into a
+   directory of your choice.  Change to the directory containing the Farsi
+   fonts and execute the following commands:
+
+   >  mkfontdir
+   >  xset +fp path_name_of_farsi_fonts_directory
+
+o  Installation of fonts for X Window systems (SunOs)
+
+   Copy far-a01.bf font into a directory of your choice.
+   Change to the directory containing the far-a01.fb fonts and
+   execute the following commands:
+
+   >  fldfamily
+   >  xset +fp path_name_of_fonts_directory
+
+o  Installation of ASCII screen fonts (Unix/Linux)
+
+   For Linux system, copy the far-a01.f16 fonts into /usr/lib/kbd/consolefonts
+   directory and execute the setfont program as "setfont far-a01.f16". For
+   other systems (e.g. SCO Unix), please refer to the fonts installation
+   section of your system administration manuals.
+
+o  Installation of ASCII screen fonts (DOS)
+
+   After system power on, prior to the first use of VIM, upload the Farsi
+   fonts by executing the far-a01.com font uploading program.
+
+
+Usage
+-----
+Prior to starting VIM, the environment in which VIM can run in Farsi mode,
+must be set.  In addition to installation of Farsi fonts, following points
+refer to some of the system environments, which you may need to set:
+Key code mapping, loading graphic card in ASCII screen mode, setting the IO
+driver in 8 bit clean mode ... .
+
+o  Setting the Farsi fonts
+
+   +  For VIM GUI set the 'guifont' to far-a01. This is done by entering
+      ':set guifont=far-a01' in the VIM window.
+
+      You can have 'guifont' set to far-a01 by VIM during the VIM startup
+      by appending the ':set guifont=far-a01' into your .vimrc file
+      (in case of NT/95/98 platforms _vimrc).
+
+      Under the X Window environment, you can also start the VIM with
+      '-fn far-a01' option.
+
+   +  For the VIM within a xterm, start a xterm with the Farsi fonts (e.g.
+      kterm -fn far-a01). Then start the VIM inside the kterm.
+
+   +  For VIM under DOS, prior to the first usage of VIM, upload the Farsi
+      fonts by executing the far-a01.com fonts uploading program.
+
+o  Farsi Keymapping Activation
+
+   To activate the Farsi keymapping, set either 'altkeymap' or 'fkmap'.
+   This is done by entering ':set akm' or ':set fk' in the VIM window.
+   You can have 'altkeymap' or 'fkmap' set as default by appending ':set akm'
+   or ':set fk' in your .vimrc file or _vimrc in case of NT/95/98 platforms.
+
+   To turn off the Farsi keymapping as a default second language keymapping,
+   reset the 'altkeymap' by entering ':set noakm'.
+
+o  right-to-left Farsi Mode
+
+   By default VIM starts in Left-to-right mode. Following are ways to change
+   the window orientation:
+
+   + Start the VIM with -F option (e.g. vim -F ... ).
+
+   + Use F8 function key to toggle between left-to-right and right-to-left.
+
+   + While in Left-to-right mode, enter 'set rl' in the command line ('rl' is
+     the abbreviation for rightleft).
+
+   + Put the 'set rl' line in your '.vimrc' file to start the  VIM in
+     right-to-left mode permanently.
+
+Encoding
+--------
+
+The letter encoding used is the VIM extended ISIR-3342 standard with a built
+in function to convert between VIM extended ISIR-3342 and ISIR-3342 standard.
+
+For document portability reasons, the letter encoding is kept the same across
+different platforms (i.e. UNIX's, NT/95/98, MS DOS, ...).
+
+
+o  Keyboard
+
+   +  CTRL-_ in insert/replace modes toggles between Farsi(akm)/Latin
+      mode as follows:
+
+   +  CTRL-_ moves the cursor to the end of the typed text in edit mode.
+
+   +  CTRL-_ in command mode only toggles keyboard mapping between Farsi(akm)/
+      Latin. The Farsi text is then entered in reverse insert mode.
+
+   +  F8 - Toggles between left-to-right and right-to-left.
+
+   +  F9 - Toggles the encoding between ISIR-3342 standard and VIM extended
+      ISIR-3342 (supported only in right-to-left mode).
+
+   +  Keyboard mapping is based on the Iranian ISIRI-2901 standard.
+      Following table shows the keyboard mapping while Farsi(akm) mode set:
+
+	-------------------------------------
+	`  1  2  3  4  5  6  7  8  9  0  -  =
+	¢  ±  ²  ³  ´  µ  ¶  ·  ¸  ¹  °  ­  ½
+	-------------------------------------
+	~  !  @  #  $  %  ^  &  *  (  )  _  +
+	~  £  §  ®  ¤  ¥  ª  ¬  è  ¨  ©  é  «
+	-------------------------------------
+	q  w  e  r  t  z  u  i  o  p  [  ]
+	Ó  Ò  Æ  Ù  Ø  Õ  Ö  à  Ê  É  Ç  ˆ
+	-------------------------------------
+	Q  W  E  R  T  Z  U  I  O  P  {  }
+	÷  õ  ô  ó  ò  ý  ð  ö  [  ]  {  }
+	-------------------------------------
+	a  s  d  f  g  h  j  k  l  ;  '  \
+	Ñ  Ð  á  Ã  Ü  Á  Å  Þ  Ý  Ú  Û  ë
+	-------------------------------------
+	A  S  D  F  G  H  J  K  L  :  "  |
+	ù  û  þ  ú  ø  À  ü  æ  ç  º  »  ê
+	-------------------------------------
+	<  y  x  c  v  b  n  m  ,  .  /
+	¾  ×  Ô  Î  Í  Ì  Ë  Ä  ß  ¦  ¯
+	-------------------------------------
+	>  Y  X  C  V  B  N  M  <  >  ?
+	¼  ñ  Ô  Ï  Í  ¡  Ë  Â  ¾  ¼  ¿
+	-------------------------------------
+
+Note:
+	¡  stands for Farsi PSP (break without space)
+
+	¢  stands for Farsi PCN (for HAMZE attribute )
+
+Restrictions
+------------
+
+o  In insert/replace mode and fkmap (Farsi mode) set, CTRL-B is not
+   supported.
+
+o  If you change the character mapping between Latin/Farsi, the redo buffer
+   will be reset (emptied). That is, redo is valid and will function (using
+   '.') only within the mode you are in.
+
+o  While numbers are entered in Farsi mode, the redo buffer will be reset
+   (emptied). That is, you can not redo the last changes (using '.') after
+   entering numbers.
+
+o  While in left-to-right and Farsi mode set, CTRL-R is not supported.
+
+o  While in right-to-left mode, the search on 'Latin' pattern does not work,
+   except if you enter the Latin search pattern in reverse.
+
+o  In the command mode, there is no support for entering the numbers from left
+   to right and also for the sake of the flexibility the keymapping logic is
+   restricted.
+
+o  Under X Window environment, if you want to run the VIM within a xterm
+   terminal emulator and Farsi mode set, you need to have an ANSI compatible
+   xterm terminal emulator. This is because the letter codes above 128 decimal
+   have certain meanings in the standard xterm terminal emulator.
+
+   Note: Under X Window environment, VIM GUI works fine in Farsi mode.
+	 This eliminates the need of any xterm terminal emulator.
+
+
+Bugs
+----
+While in insert/replace and Farsi mode set, if you repeatedly change the
+cursor position (via cursor movement) and enter new text and then try to undo
+the last change, the undo will lag one change behind.  But as you continue to
+undo, you will reach the original line of text. You can also use U to undo all
+changes made in the current line.
+
+For more information about the bugs refer to rileft.txt.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt
new file mode 100644
index 0000000..a855d46
--- /dev/null
+++ b/runtime/doc/filetype.txt
@@ -0,0 +1,529 @@
+*filetype.txt*  For Vim version 7.0aa.  Last change: 2004 May 05
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Filetypes						*filetype* *file-type*
+
+1. Filetypes					|filetypes|
+2. Filetype plugin				|filetype-plugins|
+3. Docs for the default filetype plugins.	|ftplugin-docs|
+
+Also see |autocmd.txt|.
+
+{Vi does not have any of these commands}
+
+==============================================================================
+1. Filetypes					*filetypes* *file-types*
+
+Vim can detect the type of file that is edited.  This is done by checking the
+file name and sometimes by inspecting the contents of the file for specific
+text.
+
+							*:filetype* *:filet*
+To enable file type detection, use this command in your vimrc: >
+	:filetype on
+Each time a new or existing file is edited, Vim will try to recognize the type
+of the file and set the 'filetype' option.  This will trigger the FileType
+event, which can be used to set the syntax highlighting, set options, etc.
+
+NOTE: Filetypes and 'compatible' don't work together well, since being Vi
+compatible means options are global.  Resetting 'compatible' is recommended,
+if you didn't do that already.
+
+Detail: The ":filetype on" command will load one of these files:
+		Amiga	    $VIMRUNTIME/filetype.vim
+		Mac	    $VIMRUNTIME:filetype.vim
+		MS-DOS	    $VIMRUNTIME\filetype.vim
+		RiscOS	    Vim:Filetype
+		Unix	    $VIMRUNTIME/filetype.vim
+		VMS	    $VIMRUNTIME/filetype.vim
+	This file is a Vim script that defines autocommands for the
+	BufNewFile and BufRead events.  If the file type is not found by the
+	name, the file $VIMRUNTIME/scripts.vim is used to detect it from the
+	contents of the file.
+
+To add your own file types, see |new-filetype| below.
+
+If the file type is not detected automatically, or it finds the wrong type,
+you can either set the 'filetype' option manually, or add a modeline to your
+file.  Example, for in an IDL file use the command: >
+	:set filetype=idl
+or add this |modeline| to the file: >
+	/* vim: set filetype=idl : */
+<
+						*:filetype-plugin-on*
+You can enable loading the plugin files for specific file types with: >
+	:filetype plugin on
+If filetype detection was not switched on yet, it will be as well.
+This actually loads the file "ftplugin.vim" in 'runtimepath'.
+The result is that when a file is edited its plugin file is loaded (if there
+is one for the detected filetype). |filetype-plugin|
+
+						*:filetype-plugin-off*
+You can disable it again with: >
+	:filetype plugin off
+The filetype detection is not switched off then.  But if you do switch off
+filetype detection, the plugins will not be loaded either.
+This actually loads the file "ftplugof.vim" in 'runtimepath'.
+
+						*:filetype-indent-on*
+You can enable loading the indent file for specific file types with: >
+	:filetype indent on
+If filetype detection was not switched on yet, it will be as well.
+This actually loads the file "indent.vim" in 'runtimepath'.
+The result is that when a file is edited its indent file is loaded (if there
+is one for the detected filetype). |indent-expression|
+
+						*:filetype-indent-off*
+You can disable it again with: >
+	:filetype indent off
+The filetype detection is not switched off then.  But if you do switch off
+filetype detection, the indent files will not be loaded either.
+This actually loads the file "indoff.vim" in 'runtimepath'.
+
+						*:filetype-off*
+To disable file type detection, use this command: >
+	:filetype off
+This will keep the flags for "plugin" and "indent", but since no file types
+are being detected, they won't work until the next ":filetype on".
+
+
+Overview:					*:filetype-overview*
+
+command				detection	plugin		indent ~
+:filetype on			on		unchanged	unchanged
+:filetype off			off		unchanged	unchanged
+:filetype plugin on		on		on		unchanged
+:filetype plugin off		unchanged	off		unchanged
+:filetype indent on		on		unchanged	on
+:filetype indent off		unchanged	unchanged	off
+:filetype plugin indent on	on		on		on
+:filetype plugin indent off	unchanged	off		off
+
+To see the current status, type: >
+	:filetype
+The output looks something like this: >
+	filetype detection:ON  plugin:ON  indent:OFF
+
+The file types are also used for syntax highlighting.  If the ":syntax on"
+command is used, the file type detection is installed too.  There is no need
+to do ":filetype on" after ":syntax on".
+
+To disable one of the file types, add a line in the your filetype file, see
+|remove-filetype|.
+
+							*filetype-detect*
+To detect the file type again: >
+	:filetype detect
+Use this if you started with an empty file and typed text that makes it
+possible to detect the file type.  For example, when you entered this in a
+shell script: "#!/bin/csh".
+   When filetype detection was off, it will be enabled first, like the "on"
+argument was used.
+
+							*filetype-overrule*
+When the same extension is used for two filetypes, Vim tries to guess what
+kind of file it is.  This doesn't always work.  A number of global variables
+can be used to overrule the filetype used for certain extensions:
+
+	file name	variable ~
+	*.asa		g:filetype_asa	|aspvbs-syntax| |aspperl-syntax|
+	*.asp		g:filetype_asp	|aspvbs-syntax| |aspperl-syntax|
+	*.asm		g:asmsyntax	|asm-syntax|
+	*.prg		g:filetype_prg
+	*.pl		g:filetype_pl
+	*.inc		g:filetype_inc
+	*.w		g:filetype_w	|cweb-syntax|
+	*.i		g:filetype_i	|progress-syntax|
+	*.p		g:filetype_p	|pascal-syntax|
+	*.sh		g:bash_is_sh	|sh-syntax|
+
+							*filetype-ignore*
+To avoid that certain files are being inspected, the g:ft_ignore_pat variable
+is used.  The default value is set like this: >
+	:let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
+This means that the contents of compressed files are not inspected.
+
+							*new-filetype*
+If a file type that you want to use is not detected yet, there are three ways
+to add it.  In any way, it's better not modify the $VIMRUNTIME/filetype.vim
+file.  It will be overwritten when installing a new version of Vim.
+
+A. If you want to overrule all default file type checks.
+   This works by writing one file for each filetype.  The disadvantage is that
+   means there can be many files.  The advantage is that you can simply drop
+   this file in the right directory to make it work.
+
+   1. Create your user runtime directory.  You would normally use the first
+      item of the 'runtimepath' option.  Then create the directory "ftdetect"
+      inside it.  Example for Unix: >
+	:!mkdir ~/.vim
+	:!mkdir ~/.vim/ftdetect
+<
+   2. Create a file that contains an autocommand to detect the file type.
+      Example: >
+	au BufRead,BufNewFile *.mine		set filetype=mine
+<     Note that there is no "augroup" command, this has already been done
+      when sourcing your file.  You could also use the pattern "*" and then
+      check the contents of the file to recognize it.
+      Write this file as "mine.vim" in the "ftdetect" directory in your user
+      runtime directory.  For example, for Unix: >
+	:w ~/.vim/ftdetect/mine.vim
+
+<  3. To use the new filetype detection you must restart Vim.
+
+   The files in the "ftdetect" directory are used after all the default
+   checks, thus they can overrule a previously detected file type.
+
+B. If you want to detect your file after the default file type checks.
+
+   This works like A above, but instead of setting 'filetype' unconditionally
+   use ":setfiletype".  This will only set 'filetype' if no file type was
+   detected yet.  Example: >
+	au BufRead,BufNewFile *.txt		setfiletype text
+<
+   You can also use the already detected file type in your command.  For
+   example, to use the file type "mypascal" when "pascal" has been detected: >
+	au BufRead,BufNewFile *		if &ft == 'pascal' | set ft=mypascal
+								       | endif
+
+C. If your file type can be detected by the file name.
+   1. Create your user runtime directory.  You would normally use the first
+      item of the 'runtimepath' option.  Example for Unix: >
+	:!mkdir ~/.vim
+<
+   2. Create a file that contains autocommands to detect the file type.
+      Example: >
+	" my filetype file
+	if exists("did_load_filetypes")
+	  finish
+	endif
+	augroup filetypedetect
+	  au! BufRead,BufNewFile *.mine		setfiletype mine
+	  au! BufRead,BufNewFile *.xyz		setfiletype drawing
+	augroup END
+<     Write this file as "filetype.vim" in your user runtime directory.  For
+      example, for Unix: >
+	:w ~/.vim/filetype.vim
+
+<  3. To use the new filetype detection you must restart Vim.
+
+   Your filetype.vim will be sourced before the default FileType autocommands
+   have been installed.  Your autocommands will match first, and the
+   ":setfiletype" command will make sure that no other autocommands will set
+   'filetype' after this.
+							*new-filetype-scripts*
+D. If your filetype can only be detected by inspecting the contents of the
+   file.
+
+   1. Create your user runtime directory.  You would normally use the first
+      item of the 'runtimepath' option.  Example for Unix: >
+	:!mkdir ~/.vim
+<
+   2. Create a vim script file for doing this.  Example: >
+	if did_filetype()	" filetype already set..
+	  finish		" ..don't do these checks
+	endif
+	if getline(1) =~ '^#!.*\<mine\>'
+	  setfiletype mine
+	elseif getline(1) =~? '\<drawing\>'
+	  setfiletype drawing
+	endif
+<     See $VIMRUNTIME/scripts.vim for more examples.
+      Write this file as "scripts.vim" in your user runtime directory.  For
+      example, for Unix: >
+	:w ~/.vim/scripts.vim
+<
+   3. The detection will work right away, no need to restart Vim.
+
+   Your scripts.vim is loaded before the default checks for file types, which
+   means that your rules override the default rules in
+   $VIMRUNTIME/scripts.vim.
+
+						*remove-filetype*
+If a file type is detected that is wrong for you, install a filetype.vim or
+scripts.vim to catch it (see above).  You can set 'filetype' to a non-existing
+name to avoid that it will be set later anyway: >
+	:set filetype=ignored
+
+If you are setting up a system with many users, and you don't want each user
+to add/remove the same filetypes, consider writing the filetype.vim and
+scripts.vim files in a runtime directory that is used for everybody.  Check
+the 'runtimepath' for a directory to use.  If there isn't one, set
+'runtimepath' in the |system-vimrc|.  Be careful to keep the default
+directories!
+
+
+						*autocmd-osfiletypes*
+On operating systems which support storing a file type with the file, you can
+specify that an autocommand should only be executed if the file is of a
+certain type.
+
+The actual type checking depends on which platform you are running Vim
+on; see your system's documentation for details.
+
+To use osfiletype checking in an autocommand you should put a list of types to
+match in angle brackets in place of a pattern, like this: >
+
+	:au BufRead *.html,<&faf;HTML>  runtime! syntax/html.vim
+
+This will match:
+
+- Any file whose name ends in `.html'
+- Any file whose type is `&faf' or 'HTML', where the meaning of these types
+  depends on which version of Vim you are using.
+  Unknown types are considered NOT to match.
+
+You can also specify a type and a pattern at the same time (in which case they
+must both match): >
+
+	:au BufRead <&fff>diff*
+
+This will match files of type `&fff' whose names start with `diff'.
+
+Note that osfiletype checking is skipped if Vim is compiled without the
+|+osfiletype| feature.
+
+							*plugin-details*
+The "plugin" directory can be in any of the directories in the 'runtimepath'
+option.  All of these directories will be searched for plugins and they are
+all loaded.  For example, if this command: >
+
+	set runtimepath
+
+produces this output: >
+
+	runtimepath=/etc/vim,~/.vim,/usr/local/share/vim/vim60
+
+then Vim will load all plugins in these directories: >
+
+	/etc/vim/plugin/
+	~/.vim/plugin/
+	/usr/local/share/vim/vim60/plugin/
+
+Note that the last one is the value of $VIMRUNTIME which has been expanded.
+
+What if it looks like your plugin is not being loaded?  You can find out what
+happens when Vim starts up by using the |-V| argument: >
+	vim -V1
+You will see a lot of messages, in between them is a remark about loading the
+plugins.  It starts with: >
+	Searching for "plugin/*.vim" in
+There you can see where Vim looks for your plugin scripts.
+
+==============================================================================
+2. Filetype plugin					*filetype-plugins*
+
+When loading filetype plugins has been enabled |:filetype-plugin-on|, options
+will be set and mappings defined.  These are all local to the buffer, they
+will not be used for other files.
+
+Defining mappings for a filetype may get in the way of the mappings you
+define yourself.  There are a few ways to avoid this:
+1. Set the "maplocalleader" variable to the key sequence you want the mappings
+   to start with.  Example: >
+	:let maplocalleader = ","
+<  All mappings will then start with a comma instead of the default, which
+   is a backslash.  Also see |<LocalLeader>|.
+
+2. Define your own mapping.  Example: >
+	:map ,p <Plug>MailQuote
+<  You need to check the description of the plugin file below for the
+   functionality it offers and the string to map to.
+   You need to define your own mapping before the plugin is loaded (before
+   editing a file of that type).  The plugin will then skip installing the
+   default mapping.
+
+3. Disable defining mappings for a specific filetype by setting a variable,
+   which contains the name of the filetype.  For the "mail" filetype this
+   would be: >
+	:let no_mail_maps = 1
+
+4. Disable defining mappings for all filetypes by setting a variable: >
+	:let no_plugin_maps = 1
+<
+
+							*ftplugin-overrule*
+If a global filetype plugin does not do exactly what you want, there are three
+ways to change this:
+
+1. Add a few settings.
+   You must create a new filetype plugin in a directory early in
+   'runtimepath'.  For Unix, for example you could use this file: >
+	vim ~/.vim/ftplugin/fortran.vim
+<  You can set those settings and mappings that you would like to add.  Note
+   that the global plugin will be loaded after this, it may overrule the
+   settings that you do here.  If this is the case, you need to use one of the
+   following two methods.
+
+2. Make a copy of the plugin and change it.
+   You must put the copy in a directory early in 'runtimepath'.  For Unix, for
+   example, you could do this: >
+	cp $VIMRUNTIME/ftplugin/fortran.vim ~/.vim/ftplugin/fortran.vim
+<  Then you can edit the copied file to your liking.  Since the b:did_ftplugin
+   variable will be set, the global plugin will not be loaded.
+   A disadvantage of this method is that when the distributed plugin gets
+   improved, you will have to copy and modify it again.
+
+3. Overrule the settings after loading the global plugin.
+   You must create a new filetype plugin in a directory from the end of
+   'runtimepath'.  For Unix, for example, you could use this file: >
+	vim ~/.vim/after/ftplugin/fortran.vim
+<  In this file you can change just those settings that you want to change.
+
+==============================================================================
+3.  Docs for the default filetype plugins.		*ftplugin-docs*
+
+
+CHANGELOG						*changelog-plugin*
+
+Allows for easy entrance of Changelog entries in Changelog files. There are
+some commands, mappings, and variables worth exploring:
+
+Options:
+'comments'		is made empty to not mess up formatting.
+'textwidth'		is set to 78, which is standard.
+'formatoptions'		the 't' flag is added to wrap when inserting text.
+
+Commands:
+NewChangelogEntry	Adds a new Changelog entry in an intelligent fashion
+			(see below).
+
+Local mappings:
+<Leader>o		Starts a new Changelog entry in an equally intelligent
+			fashion (see below).
+
+Global mappings:
+			NOTE: The global mappings are accessed by sourcing the
+			ftplugin/changelog.vim file first, e.g. with >
+				runtime ftplugin/man.vim
+<			in your |.vimrc|.
+<Leader>o		Switches to the ChangeLog buffer opened for the
+			current directory, or opens it in a new buffer if it
+			exists in the current directory.  Then it does the
+			same as the local <Leader>o described above.
+
+Variables:
+g:changelog_timeformat	The date (and time) format used in ChangeLog entries.
+			The format accepted is the same as for the
+			|strftime()| function.
+			The default is "%Y-%m-%d" which is the standard format
+			for many ChangeLog layouts.
+g:changelog_username	The name and email address of the user.
+			The default is deduced from environment variables and
+			system files.  It searches /etc/passwd for the comment
+			part of the current user, which informally contains
+			the real name of the user up to the first separating
+			comma.  then it checks the $NAME environment variable
+			and finally runs `whoami` and `hostname` to build an
+			email address.  The final form is >
+				Full Name  <user@host>
+<
+g:changelog_new_date_format
+			The format to use when creating a new date-entry.
+			The following table describes special tokens in the
+			string:
+				%%	insert a single '%' character
+				%d	insert the date from above
+				%u	insert the user from above
+				%c	where to position cursor when done
+			The default is "%d  %u\n\n\t* %c\n\n", which produces
+			something like (| is where cursor will be, unless at
+			the start of the line where it denotes the beginning
+			of the line) >
+				|2003-01-14  Full Name  <user@host>
+				|
+				|        * |
+<
+g:changelog_new_entry_format
+			The format used when creating a new entry.
+			The following table describes special tokens in the
+			string:
+				%c	where to position cursor when done
+			The default is "\t*%c", which produces something
+			similar to >
+				|        * |
+<
+g:changelog_date_entry_search
+			The search pattern to use when searching for a
+			date-entry.
+			The same tokens that can be used for
+			g:changelog_new_date_format can be used here as well.
+			The default is '^\s*%d\_s*%u' which finds lines
+			matching the form >
+				|2003-01-14  Full Name  <user@host>
+<			and some similar formats.
+
+The Changelog entries are inserted where they add the least amount of text.
+After figuring out the current date and user, the file is searched for an
+entry beginning with the current date and user and if found adds another item
+under it. If not found, a new entry and item is prepended to the beginning of
+the Changelog.
+
+
+FORTRAN							*fortran-plugin*
+
+Options:
+'expandtab'	is switched on to avoid tabs as required by the Fortran
+		standards unless the user has set fortran_have_tabs in .vimrc.
+'textwidth'	is set to 72 for fixed source format as required by the
+		Fortran standards and to 80 for free source format.
+'formatoptions' is set to break code and comment lines and to preserve long
+		lines. You can format comments with |gq|.
+For further discussion of fortran_have_tabs and the method used for the
+detection of source format see |fortran-syntax|.
+
+
+MAIL							*mail-plugin*
+
+Options:
+'modeline'	is switched off to avoid the danger of trojan horses, and to
+		avoid that a Subject line with "Vim:" in it will cause an
+		error message.
+'textwidth'	is set to 72.  This is often recommended for e-mail.
+'formatoptions'  is set to break text lines and to repeat the comment leader
+		in new lines, so that a leading ">" for quotes is repeated.
+		You can also format quoted text with |gq|.
+
+Local mappings:
+<LocalLeader>q   or   \\MailQuote
+	Quotes the text selected in Visual mode, or from the cursor position
+	to the end of the file in Normal mode.  This means "> " is inserted in
+	each line.
+
+MAN							*man-plugin* *:Man*
+
+Displays a manual page in a nice way.  Also see the user manual
+|find-manpage|.
+
+To start using the ":Man" command before any manual page was loaded, source
+this script from your startup vimrc file: >
+
+	runtime ftplugin/man.vim
+
+Options:
+'iskeyword'	the '.' character is added to be able to use CTRL-] on the
+		manual page name.
+
+Commands:
+Man {name}	Display the manual page for {name} in a window.
+Man {number} {name}
+		Display the manual page for {name} in a section {number}.
+
+Global mapping:
+<Leader>K	Displays the manual page for the word under the cursor.
+
+Local mappings:
+CTRL-]		Jump to the manual page for the word under the cursor.
+CTRL-T		Jump back to the previous manual page.
+
+
+RPM SPEC						*spec-plugin*
+
+Since the text for this plugin is rather long it has been put in a separate
+file: |pi_spec.txt|.
+
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt
new file mode 100644
index 0000000..cbe1237
--- /dev/null
+++ b/runtime/doc/fold.txt
@@ -0,0 +1,581 @@
+*fold.txt*      For Vim version 7.0aa.  Last change: 2004 May 20
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Folding						*Folding* *folding*
+
+You can find an introduction on folding in chapter 28 of the user manual.
+|usr_28.txt|
+
+1. Fold methods		|fold-methods|
+2. Fold commands	|fold-commands|
+3. Fold options		|fold-options|
+4. Behavior of folds	|fold-behavior|
+
+{Vi has no Folding}
+{not available when compiled without the +folding feature}
+
+==============================================================================
+1. Fold methods					*fold-methods*
+
+The folding method can be set with the 'foldmethod' option.
+
+When setting 'foldmethod' to a value other than "manual", all folds are
+deleted and new ones created.  Switching to the "manual" method doesn't remove
+the existing folds.  This can be used to first define the folds automatically
+and then change them manually.
+
+There are six methods to select folds:
+	manual		manually define folds
+	indent		more indent means a higher fold level
+	expr		specify an expression to define folds
+	syntax		folds defined by syntax highlighting
+	diff		folds for unchanged text
+	marker		folds defined by markers in the text
+
+
+MANUAL						*fold-manual*
+
+Use commands to manually define the fold regions.  This can also be used by a
+script that parses text to find folds.
+
+The level of a fold is only defined by its nesting.  To increase the fold
+level of a fold for a range of lines, define a fold inside it that has the
+same lines.
+
+The manual folds are lost when you abandon the file.  To save the folds use
+the |:mkview| command.  The view can be restored later with |:loadview|.
+
+
+INDENT						*fold-indent*
+
+The folds are automatically defined by the indent of the lines.
+
+The foldlevel is computed from the indent of the line, divided by the
+'shiftwidth' (rounded down).  A sequence of lines with the same or higher fold
+level form a fold, with the lines with a higher level forming a nested fold.
+
+The nesting of folds is limited with 'foldnestmax'.
+
+Some lines are ignored and get the fold level of the line above or below it,
+whatever is the lowest.  These are empty or white lines and lines starting
+with a character in 'foldignore'.  White space is skipped before checking for
+characters in 'foldignore'.  For C use "#" to ignore preprocessor lines.
+
+When you want to ignore lines in another way, use the 'expr' method.  The
+|indent()| function can be used in 'foldexpr' to get the indent of a line.
+
+
+EXPR						*fold-expr*
+
+The folds are automatically defined by their foldlevel, like with the "indent"
+method.  The value of the 'foldexpr' option is evaluated to get the foldlevel
+of a line.  Examples:
+This will create a fold for all consecutive lines that start with a Tab: >
+	:set foldexpr=getline(v:lnum)[0]==\"\\t\"
+This will call a function to compute the fold level: >
+	:set foldexpr=MyFoldLevel(v:lnum)
+This will make a fold out of paragraphs separated by blank lines: >
+	:set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1
+this does the same: >
+	:set foldexpr=getline(v:lnum-1)=~'^\\s*$'&&getline(v:lnum)=~'\\S'?'>1':1
+
+Note that backslashes must be used to escape characters that ":set" handles
+differently (space, backslash, double quote, etc., see |option-backslash|).
+
+These are the conditions with which the expression is evaluated:
+- The current buffer and window are set for the line.
+- The variable "v:lnum" is set to the line number.
+- The result is used for the fold level in this way:
+  value			meaning ~
+  0			the line is not in a fold
+  1, 2, ..		the line is in a fold with this level
+  -1			the fold level is undefined, use the fold level of a
+			line before or after this line, whichever is the
+			lowest.
+  "="			use fold level from the previous line
+  "a1", "a2", ..	add one, two, .. to the fold level of the previous
+			line
+  "s1", "s2", ..	subtract one, two, .. from the fold level of the
+			previous line
+  "<1", "<2", ..	a fold with this level ends at this line
+  ">1", ">2", ..	a fold with this level starts at this line
+
+It is not required to mark the start (end) of a fold with ">1" ("<1"), a fold
+will also start (end) when the fold level is higher (lower) than the fold
+level of the previous line.
+
+There must be no side effects from the expression.  The text in the buffer,
+cursor position, the search patterns, options etc. must not be changed.
+
+If there is some error in the expression, or the resulting value isn't
+recognized, there is no error message and the fold level will be zero.
+For debugging the 'debug' option can be set to "msg", the error messages will
+be visible then.
+
+Note: Since the expression has to be evaluated for every line, this fold
+method can be very slow!
+
+Try to avoid the "=", "a" and "s" return values, since Vim often has to search
+backwards for a line for which the fold level is defined.  This can be slow.
+
+|foldlevel()| can be useful to compute a fold level relative to a previous
+fold level.  But note that foldlevel() may return -1 if the level is not known
+yet.  And it returns the level at the start of the line, while a fold might
+end in that line.
+
+
+SYNTAX						*fold-syntax*
+
+A fold is defined by syntax items that have the "fold" argument. |:syn-fold|
+
+The fold level is defined by nesting folds.  The nesting of folds is limited
+with 'foldnestmax'.
+
+Be careful to specify proper syntax syncing.  If this is not done right, folds
+may differ from the displayed highlighting.  This is especially relevant when
+using patterns that match more than one line.  In case of doubt, try using
+brute-force syncing: >
+	:syn sync fromstart
+
+
+DIFF						*fold-diff*
+
+The folds are automatically defined for text that is not part of a change or
+close to a change.
+
+This method only works properly when the 'diff' option is set for the current
+window and changes are being displayed.  Otherwise the whole buffer will be
+one big fold.
+
+The 'diffopt' option can be used to specify the context.  That is, the number
+of lines between the fold and a change that are not included in the fold.  For
+example, to use a context of 8 lines: >
+	:set diffopt=filler,context:8
+The default context is six lines.
+
+When 'scrollbind' is also set, Vim will attempt to keep the same folds open in
+other diff windows, so that the same text is visible.
+
+
+MARKER						*fold-marker*
+
+Markers in the text tell where folds start and end.  This allows you to
+precisely specify the folds.  This will allow deleting and putting a fold,
+without the risk of including the wrong lines.  The 'foldtext' option is
+normally set such that the text before the marker shows up in the folded line.
+This makes it possible to give a name to the fold.
+
+Markers can have a level included, or can use matching pairs.  Including a
+level is easier, you don't have to add end markers and avoid problems with
+non-matching marker pairs.  Example: >
+	/* global variables {{{1 */
+	int varA, varB;
+
+	/* functions {{{1 */
+	/* funcA() {{{2 */
+	void funcA() {}
+
+	/* funcB() {{{2 */
+	void funcB() {}
+
+A fold starts at a "{{{" marker.  The following number specifies the fold
+level.  What happens depends on the difference between the current fold level
+and the level given by the marker:
+1. If a marker with the same fold level is encountered, the previous fold
+   ends and another fold with the same level starts.
+2. If a marker with a higher fold level is found, a nested fold is started.
+3. if a marker with a lower fold level is found, all folds up to and including
+   this level end and a fold with the specified level starts.
+
+The number indicates the fold level.  A zero cannot be used.
+You can use "}}}" with a digit to indicate the level of the fold that
+ends.  The fold level of the following line will be one less than the
+indicated level.  Note that Vim doesn't look back to the level of the matching
+marker (that would take too much time).  Example: >
+
+	{{{1
+	fold level here is 1
+	{{{3
+	fold level here is 3
+	}}}3
+	fold level here is 2
+
+You can also use matching pairs of "{{{" and "}}}" markers to define folds.
+Each "{{{" increases the fold level by one, each "}}}" decreases the fold
+level by one.  Be careful to keep the markers matching!  Example: >
+
+	{{{
+	fold level here is 1
+	{{{
+	fold level here is 2
+	}}}
+	fold level here is 1
+
+You can mix using markers with a number and without a number.  A useful way of
+doing this is to use numbered markers for large folds, and unnumbered markers
+locally in a function.  For example use level one folds for the sections of
+your file like "structure definitions", "local variables" and "functions".
+Use level 2 markers for each definition and function,  Use unnumbered markers
+inside functions.  When you make changes in a function to split up folds, you
+don't have to renumber the markers.
+
+The markers can be set with the 'foldmarker' option.  It is recommended to
+keep this at the default value of "{{{,}}}", so that files can be exchanged
+between Vim users.  Only change it when it is required for the file (e.g., it
+contains markers from another folding editor, or the default markers cause
+trouble for the language of the file).
+
+							*fold-create-marker*
+"zf" can be used to create a fold defined by markers.  Vim will insert the
+markers for you.  Vim will append the start and end marker, as specified with
+'foldmarker'.  The markers are appended to the end of the line.
+'commentstring' is used if it isn't empty.
+This does not work properly when:
+- The line already contains a marker with a level number.  Vim then doesn't
+  know what to do.
+- Folds nearby use a level number in their marker which gets in the way.
+- The line is inside a comment, 'commentstring' isn't empty and nested
+  comments don't work.  For example with C: adding /* {{{ */ inside a comment
+  will truncate the existing comment.  Either put the marker before or after
+  the comment, or add the marker manually.
+Generally it's not a good idea to let Vim create markers when you already have
+markers with a level number.
+
+							*fold-delete-marker*
+"zd" can be used to delete a fold defined by markers.  Vim will delete the
+markers for you.  Vim will search for the start and end markers, as specified
+with 'foldmarker', at the start and end of the fold.  When the text around the
+marker matches with 'commentstring', that text is deleted as well.
+This does not work properly when:
+- A line contains more than one marker and one of them specifies a level.
+  Only the first one is removed, without checking if this will have the
+  desired effect of deleting the fold.
+- The marker contains a level number and is used to start or end several folds
+  at the same time.
+
+==============================================================================
+2. Fold commands				*fold-commands* *E490*
+
+All folding commands start with "z".  Hint: the "z" looks like a folded piece
+of paper, if you look at it from the side.
+
+
+CREATING AND DELETING FOLDS ~
+							*zf* *E350*
+zf{motion}  or
+{Visual}zf	Operator to create a fold.
+		This only works when 'foldmethod' is "manual" or "marker".
+		The new fold will be closed for the "manual" method.
+		'foldenable' will be set.
+		Also see |fold-create-marker|.
+
+							*zF*
+zF		Create a fold for N lines.  Works like "zf".
+
+:{range}fo[ld]						*:fold* *:fo*
+		Create a fold for the lines in {range}.  Works like "zf".
+
+							*zd* *E351*
+zd		Delete one fold at the cursor.  When the cursor is on folded
+		line, that fold is deleted.  Nested folds are moved one level
+		up.  In Visual mode all folds (partially) in the selected area
+		are deleted.  Careful: This easily deletes more folds than you
+		expect and there is no undo.
+		This only works when 'foldmethod' is "manual" or "marker".
+		Also see |fold-delete-marker|.
+
+							*zD*
+zD		Delete folds recursively at the cursor.  In Visual mode all
+		folds (partially) in the selected area and all nested folds in
+		them are deleted.
+		This only works when 'foldmethod' is "manual" or "marker".
+		Also see |fold-delete-marker|.
+
+							*zE* *E352*
+zE		Eliminate all folds in the window.
+		This only works when 'foldmethod' is "manual" or "marker".
+		Also see |fold-delete-marker|.
+
+
+OPENING AND CLOSING FOLDS ~
+
+A fold smaller than 'foldminlines' will always be displayed like it was open.
+Therefore the commands below may work differently on small folds.
+
+							*zo*
+zo		Open one fold under the cursor.  When a count is given, that
+		many folds deep will be opened.  In Visual mode one level of
+		folds is opened for all lines in the selected area.
+
+							*zO*
+zO		Open all folds under the cursor recursively.  Folds that don't
+		contain the cursor line are unchanged.
+		In Visual mode it opens all folds that are in the selected
+		area, also those that are only partly selected.
+
+							*zc*
+zc		Close one fold under the cursor.  When a count is given, that
+		many folds deep are closed.  In Visual mode one level of folds
+		is closed for all lines in the selected area.
+		'foldenable' will be set.
+
+							*zC*
+zC		Close all folds under the cursor recursively.  Folds that
+		don't contain the cursor line are unchanged.
+		In Visual mode it closes all folds that are in the selected
+		area, also those that are only partly selected.
+		'foldenable' will be set.
+
+							*za*
+za		When on a closed fold: open it. When folds are nested, you
+		may have to use "za" several times.  When a count is given,
+		that many closed folds are opened.
+		When on an open fold: close it and set 'foldenable'.  This
+		will only close one level, since using "za" again will open
+		the fold.  When a count is given that many folds will be
+		closed (that's not the same as repeating "za" that many
+		times).
+
+							*zA*
+zA		When on a closed fold: open it recursively.
+		When on an open fold: close it recursively and set
+		'foldenable'.
+
+							*zv*
+zv		View cursor line: Open just enough folds to make the line in
+		which the cursor is located not folded.
+
+							*zx*
+zx		Update folds: Undo manually opened and closed folds: re-apply
+		'foldlevel', then do "zv": View cursor line.
+
+							*zX*
+zX		Undo manually opened and closed folds: re-apply 'foldlevel'.
+
+							*zm*
+zm		Fold more: Subtract one from 'foldlevel'.  If 'foldlevel' was
+		already zero nothing happens.
+		'foldenable' will be set.
+
+							*zM*
+zM		Close all folds: set 'foldlevel' to 0.
+		'foldenable' will be set.
+
+							*zr*
+zr		Reduce folding: Add one to 'foldlevel'.
+
+							*zR*
+zR		Open all folds.  This sets 'foldlevel' to highest fold level.
+
+							*:foldo* *:foldopen*
+:{range}foldo[pen][!]
+		Open folds in {range}.  When [!] is added all folds are
+		opened.  Useful to see all the text in {range}.  Without [!]
+		one level of folds is opened.
+
+							*:foldc* *:foldclose*
+:{range}foldc[lose][!]
+		Close folds in {range}.  When [!] is added all folds are
+		closed.  Useful to hide all the text in {range}.  Without [!]
+		one level of folds is closed.
+
+							*zn*
+zn		Fold none: reset 'foldenable'.  All folds will be open.
+
+							*zN*
+zN		Fold normal: set 'foldenable'.  All folds will be as they
+		were before.
+
+							*zi*
+zi		Invert 'foldenable'.
+
+
+MOVING OVER FOLDS ~
+							*[z*
+[z		Move to the start of the current open fold.  If already at the
+		start, move to the start of the fold that contains it.  If
+		there is no containing fold, the command fails.
+		When a count is used, repeats the command N times.
+
+							*]z*
+]z		Move to the end of the current open fold.  If already at the
+		end, move to the end of the fold that contains it.  If there
+		is no containing fold, the command fails.
+		When a count is used, repeats the command N times.
+
+							*zj*
+zj		Move downwards to the start of the next fold.  A closed fold
+		is counted as one fold.
+		When a count is used, repeats the command N times.
+		This command can be used after an |operator|.
+
+							*zk*
+zk		Move upwards to the end of the previous fold.  A closed fold
+		is counted as one fold.
+		When a count is used, repeats the command N times.
+		This command can be used after an |operator|.
+
+
+EXECUTING COMMANDS ON FOLDS ~
+
+:[range]foldd[oopen] {cmd}			*:foldd* *:folddoopen*
+		Execute {cmd} on all lines that are not in a closed fold.
+		When [range] is given, only these lines are used.
+		Each time {cmd} is executed the cursor is positioned on the
+		line it is executed for.
+		This works like the ":global" command: First all lines that
+		are not in a closed fold are marked.  Then the {cmd} is
+		executed for all marked lines.  Thus when {cmd} changes the
+		folds, this has no influence on where it is executed (except
+		when lines are deleted, of course).
+		Example: >
+			:folddoopen s/end/loop_end/ge
+<		Note the use of the "e" flag to avoid getting an error message
+		where "end" doesn't match.
+
+:[range]folddoc[losed] {cmd}			*:folddoc* *:folddoclosed*
+		Execute {cmd} on all lines that are in a closed fold.
+		Otherwise like ":folddoopen".
+
+==============================================================================
+3. Fold options					*fold-options*
+
+COLORS							*fold-colors*
+
+The colors of a closed fold are set with the Folded group |hl-Folded|.  The
+colors of the fold column are set with the FoldColumn group |hl-FoldColumn|.
+Example to set the colors: >
+
+	:highlight Folded guibg=grey guifg=blue
+	:highlight FoldColumn guibg=darkgrey guifg=white
+
+
+FOLDLEVEL						*fold-foldlevel*
+
+'foldlevel' is a number option: The higher the more folded regions are open.
+When 'foldlevel' is 0, all folds are closed.
+When 'foldlevel' is positive, some folds closed.
+When 'foldlevel' is very high, all folds are open.
+'foldlevel' is applied when it is changed.  After that manually folds can be
+opened and closed.
+When increased, folds above the new level are opened.  No manually opened
+folds will be closed.
+When decreased, folds above the new level are closed.  No manually closed
+folds will be opened.
+
+
+FOLDTEXT						*fold-foldtext*
+
+'foldtext' is a string option that specifies an expression.  This expression
+is evaluated to obtain the text displayed for a closed fold.  Example: >
+
+    :set foldtext=v:folddashes.substitute(getline(v:foldstart),'/\\*\\\|\\*/\\\|{{{\\d\\=','','g')
+
+This shows the first line of the fold, with "/*", "*/" and "{{{" removed.
+Note the use of backslashes to avoid some characters to be interpreted by the
+":set" command.  It's simpler to define a function and call that: >
+
+    :set foldtext=MyFoldText()
+    :function MyFoldText()
+    :  let line = getline(v:foldstart)
+    :  let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g')
+    :  return v:folddashes . sub
+    :endfunction
+
+Evaluating 'foldtext' is done in the |sandbox|.  The current window is set to
+the window that displays the line.  Errors are ignored.
+
+The default value is |foldtext()|.  This returns a reasonable text for most
+types of folding.  If you don't like it, you can specify your own 'foldtext'
+expression.  It can use these special Vim variables:
+	v:foldstart	line number of first line in the fold
+	v:foldend	line number of last line in the fold
+	v:folddashes	a string that contains dashes to represent the
+			foldlevel.
+	v:foldlevel	the foldlevel of the fold
+
+In the result a TAB is replaced with a space and unprintable characters are
+made into printable characters.
+
+The resulting line is truncated to fit in the window, it never wraps.
+When there is room after the text, it is filled with the character specified
+by 'fillchars'.
+
+Note that backslashes need to be used for characters that the ":set" command
+handles differently: Space, backslash and double-quote. |option-backslash|
+
+
+FOLDCOLUMN						*fold-foldcolumn*
+
+'foldcolumn' is a number, which sets the width for a column on the side of the
+window to indicate folds.  When it is zero, there is no foldcolumn.  A normal
+value is 4 or 5.  The minimal useful value is 2.  The maximum is 12.
+
+An open fold is indicated with a column that has a '-' at the top and '|'
+characters below it.  This column stops where the open fold stops.  When folds
+nest, the nested fold is one character right of the fold it's contained in.
+
+A closed fold is indicated with a '+'.
+
+Where the fold column is too narrow to display all nested folds, digits are
+shown to indicate the nesting level.
+
+The mouse can also be used to open and close folds by clicking in the
+fold column:
+- Click on a '+' to open the closed fold at this row.
+- Click on any other non-blank character to close the open fold at this row.
+
+
+OTHER OPTIONS
+
+'foldenable'  'fen':	Open all folds while not set.
+'foldexpr'    'fde':	Expression used for "expr" folding.
+'foldignore'  'fdi':	Characters used for "indent" folding.
+'foldmarker'  'fmr':	Defined markers used for "marker" folding.
+'foldmethod'  'fdm':	Name of the current folding method.
+'foldminlines' 'fml':	Minimum number of screen lines for a fold to be
+			displayed closed.
+'foldnestmax' 'fdn':	Maximum nesting for "indent" and "syntax" folding.
+'foldopen'    'fdo':	Which kinds of commands open closed folds.
+'foldclose'   'fcl':	When the folds not under the cursor are closed.
+
+==============================================================================
+4. Behavior of folds					*fold-behavior*
+
+When moving the cursor upwards or downwards and when scrolling, the cursor
+will move to the first line of a sequence of folded lines.  When the cursor is
+already on a folded line, it moves to the next unfolded line or the next
+closed fold.
+
+While the cursor is on folded lines, the cursor is always displayed in the
+first column.  The ruler does show the actual cursor position, but since the
+line is folded, it cannot be displayed there.
+
+Many movement commands handle a sequence of folded lines like an empty line.
+For example, the "w" command stops once in the first column.
+
+When in Insert mode, the cursor line is never folded.  That allows you to see
+what you type!
+
+When using an operator, a closed fold is included as a whole.  Thus "dl"
+deletes the whole closed fold under the cursor.
+
+For Ex commands the range is adjusted to always start at the first line of a
+fold and end at the last line of a fold.  Thus this command: >
+	:s/foo/bar/g
+when used with the cursor on a closed fold, will replace "foo" with "bar" in
+all lines of the fold.
+This does not happen for |:folddoopen| and |:folddoclosed|.
+
+When editing a buffer that has been edited before, the last used folding
+settings are used again.  For manual folding the defined folds are restored.
+For all folding methods the manually opened and closed folds are restored.
+If this buffer has been edited in this window, the values from back then are
+used.  Otherwise the values from the window where the buffer was edited last
+are used.
+
+==============================================================================
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt
new file mode 100644
index 0000000..430a3eb
--- /dev/null
+++ b/runtime/doc/gui.txt
@@ -0,0 +1,951 @@
+*gui.txt*       For Vim version 7.0aa.  Last change: 2004 Jun 02
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Vim's Graphical User Interface				*gui* *GUI*
+
+1. Starting the GUI		|gui-start|
+2. Scrollbars			|gui-scrollbars|
+3. Mouse Control		|gui-mouse|
+4. Making GUI Selections	|gui-selections|
+5. Menus			|menus|
+6. Extras			|gui-extras|
+7. Shell Commands		|gui-shell|
+
+Other GUI documentation:
+|gui_x11.txt|	For specific items of the X11 GUI.
+|gui_w32.txt|	For specific items of the Win32 GUI.
+
+{Vi does not have any of these commands}
+
+==============================================================================
+1. Starting the GUI				*gui-start* *E229* *E233*
+
+First you must make sure you actually have a version of Vim with the GUI code
+included.  You can check this with the ":version" command, it should include
+"+GUI_Athena", "+GUI_BeOS", "+GUI_GTK", "+GUI_Motif" or "MS-Windows ... bit
+GUI version".
+
+How to start the GUI depends on the system used.  Mostly you can run the
+GUI version of Vim with:
+    gvim [options] [files...]
+
+The X11 version of Vim can run both in GUI and in non-GUI mode.  See
+|gui-x11-start|.
+
+					*gui-init* *gvimrc* *.gvimrc* *_gvimrc*
+When the GUI starts up initializations are carried out, in this order:
+- The termcap options are reset to their default value for the GUI.
+- If the system menu file exists, it is sourced.  The name of this file is
+  normally "$VIMRUNTIME/menu.vim".  You can check this with ":version".  Also
+  see |$VIMRUNTIME|.  To skip loading the system menu include 'M' in
+  'guioptions'.				*buffers-menu* *no_buffers_menu*
+  The system menu file includes a "Buffers" menu.  If you don't want this, set
+  the "no_buffers_menu" variable in your .vimrc (not .gvimrc!): >
+	:let no_buffers_menu = 1
+< NOTE: Switching on syntax highlighting also loads the menu file, thus
+  disabling the Buffers menu must be done before ":syntax on".
+  The path names are truncated to 35 characters.  You can truncate them at a
+  different length, for example 50, like this: >
+	:let bmenu_max_pathlen = 50
+- If the "-U {gvimrc}" command-line option has been used when starting Vim,
+  the {gvimrc} file will be read for initializations.  The following
+  initializations are skipped.
+- For Unix and MS-Windows, if the system gvimrc exists, it is sourced.  The
+  name of this file is normally "$VIM/gvimrc".  You can check this with
+  ":version".  Also see |$VIM|.
+- The following are tried, and only the first one that exists is used:
+  - If the GVIMINIT environment variable exists and is not empty, it is
+    executed as an Ex command.
+  - If the user gvimrc file exists, it is sourced.  The name of this file is
+    normally "$HOME/.gvimrc".  You can check this with ":version".
+  - For Win32, when $HOME is not set, "$VIM\_gvimrc" is used.
+  - When a "_gvimrc" file is not found, ".gvimrc" is tried too.  And vice
+    versa.
+- If the 'exrc' option is set (which is NOT the default) the file ./.gvimrc
+  is sourced, if it exists and isn't the same file as the system or user
+  gvimrc file.  If this file is not owned by you, some security restrictions
+  apply.  When ".gvimrc" is not found, "_gvimrc" is tried too.  For Macintosh
+  and DOS/Win32 "_gvimrc" is tried first.
+
+NOTE: All but the first one are not carried out if Vim was started with
+"-u NONE" and no "-U" argument was given, or when started with "-U NONE".
+
+All this happens AFTER the normal Vim initializations, like reading your
+.vimrc file.  See |initialization|.
+But the GUI window is only opened after all the initializations have been
+carried out.  If you want some commands to be executed just after opening the
+GUI window, use the |GUIEnter| autocommand event.  Example: >
+	:autocommand GUIEnter * winpos 100 50
+
+You can use the gvimrc files to set up your own customized menus (see |:menu|)
+and initialize other things that you may want to set up differently from the
+terminal version.
+
+Recommended place for your personal GUI initializations:
+	Unix		    $HOME/.gvimrc
+	OS/2		    $HOME/.gvimrc or $VIM/.gvimrc
+	MS-DOS and Win32    $HOME/_gvimrc or $VIM/_gvimrc
+	Amiga		    s:.gvimrc or $VIM/.gvimrc
+
+There are a number of options which only have meaning in the GUI version of
+Vim.  These are 'guicursor', 'guifont', 'guipty' and 'guioptions'.  They are
+documented in |options.txt| with all the other options.
+
+If using the Motif or Athena version of the GUI (but not for the GTK+ or Win32
+version), a number of X resources are available.  See |gui-resources|.
+
+Another way to set the colors for different occasions is with highlight
+groups.  The "Normal" group is used to set the background and foreground
+colors.  Example (which looks nice): >
+
+	:highlight Normal guibg=grey90
+
+The "guibg" and "guifg" settings override the normal background and
+foreground settings.  The other settings for the Normal highlight group are
+not used.  Use the 'guifont' option to set the font.
+
+Also check out the 'guicursor' option, to set the colors for the cursor in
+various modes.
+
+Vim tries to make the window fit on the screen when it starts up.  This avoids
+that you can't see part of it.  On the X Window System this requires a bit of
+guesswork.  You can change the height that is used for the window title and a
+task bar with the 'guiheadroom' option.
+
+						*:winp* *:winpos* *E188*
+:winp[os]
+		Display current position of the top left corner of the GUI vim
+		window in pixels.  Does not work in all versions.
+
+:winp[os] {X} {Y}							*E466*
+		Put the GUI vim window at the given {X} and {Y} coordinates.
+		The coordinates should specify the position in pixels of the
+		top left corner of the window.  Does not work in all versions.
+		Does work in an (new) xterm |xterm-color|.
+		When the GUI window has not been opened yet, the values are
+		remembered until the window is opened.  The position is
+		adjusted to make the window fit on the screen (if possible).
+
+						    *:win* *:winsize* *E465*
+:win[size] {width} {height}
+		Set the window height to {width} by {height} characters.
+		Obsolete, use ":set lines=11 columns=22".
+		If you get less lines than expected, check the 'guiheadroom'
+		option.
+
+If you are running the X Window System, you can get information about the
+window Vim is running in with this command: >
+	:!xwininfo -id $WINDOWID
+
+==============================================================================
+2. Scrollbars						*gui-scrollbars*
+
+There are vertical scrollbars and a horizontal scrollbars.  You may
+configure which ones appear with the 'guioptions' option.
+
+The interface looks like this (with ":set guioptions=mlrb"):
+
+		       +------------------------------+
+		       | File  Edit		 Help | <- Menu bar (m)
+		       +-+--------------------------+-+
+		       |^|			    |^|
+		       |#| Text area.		    |#|
+		       | |			    | |
+		       |v|__________________________|v|
+ Normal status line -> |-+ File.c	       5,2  +-|
+ between Vim windows   |^|""""""""""""""""""""""""""|^|
+		       | |			    | |
+		       | | Another file buffer.     | |
+		       | |			    | |
+		       |#|			    |#|
+ Left scrollbar (l) -> |#|			    |#| <- Right
+		       |#|			    |#|    scrollbar (r)
+		       | |			    | |
+		       |v|			    |v|
+		       +-+--------------------------+-+
+		       | |< ####		   >| | <- Bottom
+		       +-+--------------------------+-+    scrollbar (b)
+
+Any of the scrollbar or menu components may be turned off by not putting the
+appropriate letter in the 'guioptions' string.  The bottom scrollbar is
+only useful when 'nowrap' is set.
+
+
+VERTICAL SCROLLBARS					*gui-vert-scroll*
+
+Each Vim window has a scrollbar next to it which may be scrolled up and down
+to move through the text in that buffer.  The size of the scrollbar-thumb
+indicates the fraction of the buffer which can be seen in the window.
+When the scrollbar is dragged all the way down, the last line of the file
+will appear in the top of the window.
+
+If a window is shrunk to zero height (by the growth of another window) its
+scrollbar disappears. It reappears when the window is restored.
+
+If a window is vertically split, it will get a scrollbar when it is the
+current window and when, taking the middle of the current window and drawing a
+vertical line, this line goes through the window.
+When there are scrollbars on both sides, and the middle of the current window
+is on the left half, the right scrollbar column will contain scrollbars for
+the rightmost windows.  The same happens on the other side.
+
+
+HORIZONTAL SCROLLBARS					*gui-horiz-scroll*
+
+The horizontal scrollbar (at the bottom of the Vim GUI) may be used to
+scroll text sideways when the 'wrap' option is turned off.  The
+scrollbar-thumb size is such that the text of the longest visible line may be
+scrolled as far as possible left and right.  The cursor is moved when
+necessary, it must remain on a visible character (unless 'virtualedit' is
+set).
+
+Computing the length of the longest visible takes quite a bit of computation,
+and it has to be done every time something changes.  If this takes too much
+time or you don't like the cursor jumping to another line, include the 'h'
+flag in 'guioptions'.  Then the scrolling is limited by the text of the
+current cursor line.
+
+							*athena-intellimouse*
+If you have an Intellimouse and an X server that supports using the wheel,
+then you can use the wheel to scroll the text up and down in gvim.  This works
+with XFree86 4.0 and later, and with some older versions when you add patches.
+See |scroll-mouse-wheel|.
+
+For older versions of XFree86 you must patch your X server.  The following
+page has a bit of information about using the Intellimouse on Linux as well as
+links to the patches and X server binaries (may not have the one you need
+though):
+    http://www.inria.fr/koala/colas/mouse-wheel-scroll/
+
+==============================================================================
+3. Mouse Control					*gui-mouse*
+
+The mouse only works if the appropriate flag in the 'mouse' option is set.
+When the GUI is switched on, and 'mouse' wasn't set yet, the 'mouse' option is
+automatically set to "a", enabling it for all modes except for the
+|hit-enter| prompt.  If you don't want this, a good place to change the
+'mouse' option is the "gvimrc" file.
+
+Other options that are relevant:
+'mousefocus'	window focus follows mouse pointer |gui-mouse-focus|
+'mousemodel'	what mouse button does which action
+'mousehide'	hide mouse pointer while typing text
+'selectmode'	whether to start Select mode or Visual mode
+
+A quick way to set these is with the ":behave" command.
+							*:behave* *:be*
+:be[have] {model}	Set behavior for mouse and selection.  Valid
+			arguments are:
+			   mswin	MS-Windows behavior
+			   xterm	Xterm behavior
+
+			Using ":behave" changes these options:
+			option		mswin			xterm	~
+			'selectmode'	"mouse,key"		""
+			'mousemodel'	"popup"			"extend"
+			'keymodel'	"startsel,stopsel"	""
+			'selection'	"exclusive"		"inclusive"
+
+In the $VIMRUNTIME directory, there is a script called |mswin.vim|, which will
+also map a few keys to the MS-Windows cut/copy/paste commands.  This is NOT
+compatible, since it uses the CTRL-V, CTRL-X and CTRL-C keys.  If you don't
+mind, use this command: >
+	:so $VIMRUNTIME/mswin.vim
+
+For scrolling with a wheel on a mouse, see |scroll-mouse-wheel|.
+
+
+3.1 Moving Cursor with Mouse				*gui-mouse-move*
+
+Click the left mouse button somewhere in a text buffer where you want the
+cursor to go, and it does!
+This works in	    when 'mouse' contains ~
+Normal mode	    'n' or 'a'
+Visual mode	    'v' or 'a'
+Insert mode	    'i' or 'a'
+
+Select mode is handled like Visual mode.
+
+You may use this with an operator such as 'd' to delete text from the current
+cursor position to the position you point to with the mouse.  That is, you hit
+'d' and then click the mouse somewhere.
+
+							*gui-mouse-focus*
+The 'mousefocus' option can be set to make the keyboard focus follow the
+mouse pointer.  This means that the window where the mouse pointer is, is the
+active window.  Warning: this doesn't work very well when using a menu,
+because the menu command will always be applied to the top window.
+
+If you are on the ':' line (or '/' or '?'), then clicking the left or right
+mouse button will position the cursor on the ':' line (if 'mouse' contains
+'c', 'a' or 'A').
+
+In any situation the middle mouse button may be clicked to paste the current
+selection.
+
+
+3.2 Selection with Mouse				*gui-mouse-select*
+
+The mouse can be used to start a selection.  How depends on the 'mousemodel'
+option:
+'mousemodel' is "extend": use the right mouse button
+'mousemodel' is "popup":  use the left mouse button, while keeping the Shift
+key pressed.
+
+If there was no selection yet, this starts a selection from the old cursor
+position to the position pointed to with the mouse.  If there already is a
+selection then the closest end will be extended.
+
+If 'selectmode' contains "mouse", then the selection will be in Select mode.
+This means that typing normal text will replace the selection.  See
+|Select-mode|.  Otherwise, the selection will be in Visual mode.
+
+Double clicking may be done to make the selection word-wise, triple clicking
+makes it line-wise, and quadruple clicking makes it rectangular block-wise.
+
+See |gui-selections| on how the selection is used.
+
+
+3.3 Other Text Selection with Mouse		*gui-mouse-modeless*
+						*modeless-selection*
+A different kind of selection is used when:
+- in Command-line mode
+- in the Command-line window and pointing in another window
+- at the |hit-enter| prompt
+- whenever the current mode is not in the 'mouse' option
+- when holding the CTRL and SHIFT keys in the GUI
+Since Vim continues like the selection isn't there, and there is no mode
+associated with the selection, this is called modeless selection.  Any text in
+the Vim window can be selected.  Select the text by pressing the left mouse
+button at the start, drag to the end and release.  To extend the selection,
+use the right mouse button when 'mousemodel' is "extend", or the left mouse
+button with the shift key pressed when 'mousemodel' is "popup".
+The middle mouse button pastes the text.
+The selection is removed when the selected text is scrolled or changed.
+On the command line CTRL-Y can be used to copy the selection into the
+clipboard.  To do this from Insert mode, use CTRL-O : CTRL-Y <CR>.
+
+
+3.4 Using Mouse on Status Lines				*gui-mouse-status*
+
+Clicking the left or right mouse button on the status line below a Vim
+window makes that window the current window.  This actually happens on button
+release (to be able to distinguish a click from a drag action).
+
+With the left mouse button a status line can be dragged up and down, thus
+resizing the windows above and below it.  This does not change window focus.
+
+The same can be used on the vertical separator: click to give the window left
+of it focus, drag left and right to make windows wider and narrower.
+
+
+3.5 Various Mouse Clicks				*gui-mouse-various*
+
+    <S-LeftMouse>	Search forward for the word under the mouse click.
+			When 'mousemodel' is "popup" this starts or extends a
+			selection.
+    <S-RightMouse>	Search backward for the word under the mouse click.
+    <C-LeftMouse>	Jump to the tag name under the mouse click.
+    <C-RightMouse>	Jump back to position before the previous tag jump
+			(same as "CTRL-T")
+
+
+3.6 Mouse Mappings					*gui-mouse-mapping*
+
+The mouse events, complete with modifiers, may be mapped.  Eg: >
+   :map <S-LeftMouse>     <RightMouse>
+   :map <S-LeftDrag>      <RightDrag>
+   :map <S-LeftRelease>   <RightRelease>
+   :map <2-S-LeftMouse>   <2-RightMouse>
+   :map <2-S-LeftDrag>    <2-RightDrag>
+   :map <2-S-LeftRelease> <2-RightRelease>
+   :map <3-S-LeftMouse>   <3-RightMouse>
+   :map <3-S-LeftDrag>    <3-RightDrag>
+   :map <3-S-LeftRelease> <3-RightRelease>
+   :map <4-S-LeftMouse>   <4-RightMouse>
+   :map <4-S-LeftDrag>    <4-RightDrag>
+   :map <4-S-LeftRelease> <4-RightRelease>
+These mappings make selection work the way it probably should in a Motif
+application, with shift-left mouse allowing for extending the visual area
+rather than the right mouse button.
+
+Mouse mapping with modifiers does not work for modeless selection.
+
+
+3.7 Drag and drop						*drag-n-drop*
+
+You can drag and drop one or more files into the Vim window, where they will
+be opened as if a |:drop| command was used.
+
+If you hold down Shift while doing this, Vim changes to the first dropped
+file's directory.  If you hold Ctrl Vim will always split a new window for the
+file.  Otherwise it's only done if the current buffer has been changed.
+
+You can also drop a directory on Vim.  This starts the explorer plugin for
+that directory (assuming it was enabled, otherwise you'll get an error
+message).  Keep Shift pressed to change to the directory instead.
+
+If Vim happens to be editing a command line, the names of the dropped files
+and directories will be inserted at the cursor.  This allows you to use these
+names with any Ex command.  Special characters (space, tab, double quote and
+'|'; backslash on non-MS-Windows systems) will be escaped.
+
+==============================================================================
+4. Making GUI Selections				*gui-selections*
+
+							*quotestar*
+You may make selections with the mouse (see |gui-mouse-select|), or by using
+Vim's Visual mode (see |v|).  If 'a' is present in 'guioptions', then
+whenever a selection is started (Visual or Select mode), or when the selection
+is changed, Vim becomes the owner of the windowing system's primary selection
+(on MS-Windows the |gui-clipboard| is used; under X11, the |x11-selection| is
+used - you should read whichever of these is appropriate now).
+
+							*clipboard*
+There is a special register for storing this selection, it is the "*
+register.  Nothing is put in here unless the information about what text is
+selected is about to change (eg with a left mouse click somewhere), or when
+another application wants to paste the selected text.  Then the text is put
+in the "* register.  For example, to cut a line and make it the current
+selection/put it on the clipboard: >
+
+	"*dd
+
+Similarly, when you want to paste a selection from another application, e.g.,
+by clicking the middle mouse button, the selection is put in the "* register
+first, and then 'put' like any other register.  For example, to put the
+selection (contents of the clipboard): >
+
+	"*p
+
+When using this register under X11, also see |x11-selection|.  This also
+explains the related "+ register.
+
+Note that when pasting text from one Vim into another separate Vim, the type
+of selection (character, line, or block) will also be copied.  For other
+applications the type is always character.  However, if the text gets
+transferred via the |x11-cut-buffer|, the selection type is ALWAYS lost.
+
+When the "unnamed" string is included in the 'clipboard' option, the unnamed
+register is the same as the "* register.  Thus you can yank to and paste the
+selection without prepending "* to commands.
+
+==============================================================================
+5. Menus						*menus*
+
+For an introduction see |usr_42.txt| in the user manual.
+
+
+5.1 Using Menus						*using-menus*
+
+Basically, menus can be used just like mappings.  You can define your own
+menus, as many as you like.
+Long-time Vim users won't use menus much.  But the power is in adding your own
+menus and menu items.  They are most useful for things that you can't remember
+what the key sequence was.
+
+For creating menus in a different language, see |:menutrans|.
+
+							*menu.vim*
+The default menus are read from the file "$VIMRUNTIME/menu.vim".  See
+|$VIMRUNTIME| for where the path comes from.  You can set up your own menus.
+Starting off with the default set is a good idea.  You can add more items, or,
+if you don't like the defaults at all, start with removing all menus
+|:unmenu-all|.  You can also avoid the default menus being loaded by adding
+this line to your .vimrc file (NOT your .gvimrc file!): >
+	:let did_install_default_menus = 1
+If you also want to avoid the Syntax menu: >
+	:let did_install_syntax_menu = 1
+If you do want the Syntax menu but not all the entries for each available
+syntax file (which take quite a bit of time to load): >
+	:let skip_syntax_sel_menu = 1
+<
+							*console-menus*
+Although this documentation is in the GUI section, you can actually use menus
+in console mode too.  You will have to load |menu.vim| explicitly then, it is
+not done by default.  You can use the |:emenu| command and command-line
+completion with 'wildmenu' to access the menu entries almost like a real menu
+system.  To do this, put these commands in your .vimrc file: >
+	:source $VIMRUNTIME/menu.vim
+	:set wildmenu
+	:set cpo-=<
+	:set wcm=<C-Z>
+	:map <F4> :emenu <C-Z>
+Pressing <F4> will start the menu.  You can now use the cursor keys to select
+a menu entry.  Hit <Enter> to execute it.  Hit <Esc> if you want to cancel.
+This does require the |+menu| feature enabled at compile time.
+
+							*tear-off-menus*
+GTK+ and Motif support Tear-off menus.  These are sort of sticky menus or
+pop-up menus that are present all the time.  If the resizing does not work
+correctly, this may be caused by using something like "Vim*geometry" in the
+defaults.  Use "Vim.geometry" instead.
+
+The Win32 GUI version emulates Motif's tear-off menus.  Actually, a Motif user
+will spot the differences easily, but hopefully they're just as useful.  You
+can also use the |:tearoff| command together with |hidden-menus| to create
+floating menus that do not appear on the main menu bar.
+
+
+5.2 Creating New Menus					*creating-menus*
+
+				*:me*  *:menu*  *:noreme*  *:noremenu*
+				*:am*  *:amenu* *:an*      *:anoremenu*
+				*:nme* *:nmenu* *:nnoreme* *:nnoremenu*
+				*:ome* *:omenu* *:onoreme* *:onoremenu*
+				*:vme* *:vmenu* *:vnoreme* *:vnoremenu*
+				*:ime* *:imenu* *:inoreme* *:inoremenu*
+				*:cme* *:cmenu* *:cnoreme* *:cnoremenu*
+				*E330* *E327* *E331* *E336* *E333*
+				*E328* *E329* *E337*
+To create a new menu item, use the ":menu" commands.  They are mostly like
+the ":map" set of commands but the first argument is a menu item name, given
+as a path of menus and submenus with a '.' between them. eg: >
+
+   :menu File.Save  :w<CR>
+   :inoremenu File.Save  <C-O>:w<CR>
+   :menu Edit.Big\ Changes.Delete\ All\ Spaces  :%s/[ ^I]//g<CR>
+
+This last one will create a new item in the menu bar called "Edit", holding
+the mouse button down on this will pop up a menu containing the item
+"Big Changes", which is a sub-menu containing the item "Delete All Spaces",
+which when selected, performs the operation.
+
+Special characters in a menu name:
+
+	&	The next character is the shortcut key.  Make sure each
+		shortcut key is only used once in a (sub)menu.  If you want to
+		insert a literal "&" in the menu name use "&&".
+	<Tab>	Separates the menu name from right-aligned text.  This can be
+		used to show the equivalent typed command.  The text "<Tab>"
+		can be used here for convenience.  If you are using a real
+		Tab, don't forget to put a backslash before it!
+Example: >
+
+   :amenu &File.&Open<Tab>:e  :browse e<CR>
+
+[typed literally]
+With the shortcut "F" (while keeping the <Alt> key pressed), and then "O",
+this menu can be used.  The second part is shown as "Open     :e".  The ":e"
+is right aligned, and the "O" is underlined, to indicate it is the shortcut.
+
+The ":amenu" command can be used to define menu entries for all modes at once.
+To make the command work correctly, a character is automatically inserted for
+some modes:
+	mode		inserted	appended	~
+	Normal		nothing		nothing
+	Visual		<C-C>		<C-\><C-G>
+	Insert		<C-O>
+	Cmdline		<C-C>		<C-\><C-G>
+	Op-pending	<C-C>		<C-\><C-G>
+
+Appending CTRL-\ CTRL-G is for going back to insert mode when 'insertmode' is
+set. |CTRL-\_CTRL-G|
+
+Example: >
+
+   :amenu File.Next	:next^M
+
+is equal to: >
+
+   :nmenu File.Next	:next^M
+   :vmenu File.Next	^C:next^M^\^G
+   :imenu File.Next	^O:next^M
+   :cmenu File.Next	^C:next^M^\^G
+   :omenu File.Next	^C:next^M^\^G
+
+Careful: In Insert mode this only works for a SINGLE Normal mode command,
+because of the CTRL-O.  If you have two or more commands, you will need to use
+the ":imenu" command.  For inserting text in any mode, you can use the
+expression register: >
+
+   :amenu Insert.foobar   "='foobar'<CR>P
+
+Note that the '<' and 'k' flags in 'cpoptions' also apply here (when
+included they make the <> form and raw key codes not being recognized).
+
+Note that <Esc> in Cmdline mode executes the command, like in a mapping.  This
+is Vi compatible.  Use CTRL-C to quit Cmdline mode.
+
+						*:menu-<silent>* *:menu-silent*
+To define a menu which will not be echoed on the command line, add
+"<silent>" as the first argument.  Example: >
+	:menu <silent> Settings.Ignore\ case  :set ic<CR>
+The ":set ic" will not be echoed when using this menu.  Messages from the
+executed command are still given though.  To shut them up too, add a ":silent"
+in the executed command: >
+	:menu <silent> Search.Header :exe ":silent normal /Header\r"<CR>
+<
+						*:menu-<script>* *:menu-script*
+The "to" part of the menu will be inspected for mappings.  If you don't want
+this, use the ":noremenu" command (or the similar one for a specific mode).
+If you do want to use script-local mappings, add "<script>" as the very first
+argument to the ":menu" command or after "<silent>".
+
+							*menu-priority*
+You can give a priority to a menu.  Menus with a higher priority go more to
+the right.  The priority is given as a number before the ":menu" command.
+Example: >
+	:80menu Buffer.next :bn<CR>
+
+The default menus have these priorities:
+	File		10
+	Edit		20
+	Tools		40
+	Syntax		50
+	Buffers		60
+	Window		70
+	Help		9999
+
+When no or zero priority is given, 500 is used.
+The priority for the PopUp menu is not used.
+
+The Help menu will be placed on the far right side of the menu bar on systems
+which support this (Motif and GTK+).  For GTK+ 2, this is not done anymore
+because right-aligning the Help menu is now discouraged UI design.
+
+You can use a priority higher than 9999, to make it go after the Help menu,
+but that is non-standard and is discouraged.  The highest possible priority is
+about 32000.  The lowest is 1.
+
+							*sub-menu-priority*
+The same mechanism can be used to position a sub-menu.  The priority is then
+given as a dot-separated list of priorities, before the menu name: >
+	:menu 80.500 Buffer.next :bn<CR>
+Giving the sub-menu priority is only needed when the item is not to be put
+in a normal position.  For example, to put a sub-menu before the other items: >
+	:menu 80.100 Buffer.first :brew<CR>
+Or to put a sub-menu after the other items, and further items with default
+priority will be put before it: >
+	:menu 80.900 Buffer.last :blast<CR>
+When a number is missing, the default value 500 will be used: >
+	:menu .900 myMenu.test :echo "text"<CR>
+The menu priority is only used when creating a new menu.  When it already
+existed, e.g., in another mode, the priority will not change.  Thus, the
+priority only needs to be given the first time a menu is used.
+An exception is the PopUp menu.  There is a separate menu for each mode
+(Normal, Op-pending, Visual, Insert, Cmdline).  The order in each of these
+menus can be different.  This is different from menu-bar menus, which have
+the same order for all modes.
+NOTE: sub-menu priorities currently don't work for all versions of the GUI.
+
+							*menu-separator* *E332*
+Menu items can be separated by a special item that inserts some space between
+items.  Depending on the system this is displayed as a line or a dotted line.
+These items must start with a '-' and end in a '-'.  The part in between is
+used to give it a unique name.  Priorities can be used as with normal items.
+Example: >
+	:menu Example.item1	:do something
+	:menu Example.-Sep-	:
+	:menu Example.item2	:do something different
+Note that the separator also requires a rhs.  It doesn't matter what it is,
+because the item will never be selected.  Use a single colon to keep it
+simple.
+
+							*gui-toolbar*
+The toolbar is currently available in the Win32, Athena, Motif, GTK+ (X11) and
+Photon GUI.  It should turn up in other GUIs in due course.  The default
+toolbar is setup in menu.vim.
+The display of the toolbar is controlled by the 'guioptions' letter 'T'. You
+can thus have menu & toolbar together, or either on its own, or neither.
+The appearance is controlled by the 'toolbar' option.  You can chose between
+an image, text or both.
+
+							*toolbar-icon*
+The toolbar is defined as a special menu called ToolBar, which only has one
+level.  Vim interprets the items in this menu as follows:
+1)  If an "icon=" argument was specified, the file with this name is used.
+    The file can either be specified with the full path or with the base name.
+    In the last case it is searched for in the "bitmaps" directory in
+    'runtimepath', like in point 3).  Examples: >
+	:amenu icon=/usr/local/pixmaps/foo_icon.xpm ToolBar.Foo :echo "Foo"<CR>
+	:amenu icon=FooIcon ToolBar.Foo :echo "Foo"<CR>
+<   Note that in the first case the extension is included, while in the second
+    case it is omitted.
+    If the file cannot be opened the next points are tried.
+    A space in the file name must be escaped with a backslash.
+    A menu priority must come _after_ the icon argument: >
+	:amenu icon=foo 1.42 ToolBar.Foo :echo "42!"<CR>
+2)  An item called 'BuiltIn##', where ## is a number, is taken as number ## of
+    the built-in bitmaps available in Vim. Currently there are 31 numbered
+    from 0 to 30 which cover most common editing operations |builtin-tools|. >
+	:amenu ToolBar.BuiltIn22 :call SearchNext("back")<CR>
+3)  An item with another name is first searched for in the directory
+    "bitmaps" in 'runtimepath'.  If found, the bitmap file is used as the
+    toolbar button image.  Note that the exact filename is OS-specific: For
+    example, under Win32 the command >
+	:amenu ToolBar.Hello :echo "hello"<CR>
+<   would find the file 'hello.bmp'.  Under GTK+/X11 it is 'Hello.xpm'.  With
+    GTK+ 2 the files 'Hello.png', 'Hello.xpm' and 'Hello.bmp' are checked for
+    existence, and the first one found would be used.
+    For MS-Windows and GTK+ 2 the bitmap is scaled to fit the button.  For
+    MS-Windows a size of 18 by 18 pixels works best.
+    For MS-Windows the bitmap should have 16 colors with the standard palette.
+    The light grey pixels will be changed to the Window frame color and the
+    dark grey pixels to the window shadow color.  More colors might also work,
+    depending on your system.
+4)  If the bitmap is still not found, Vim checks for a match against its list
+    of built-in names.  Each built-in button image has a name.
+    So the command >
+	:amenu ToolBar.Open :e
+<   will show the built-in "open a file" button image if no open.bmp exists.
+    All the built-in names can be seen used in menu.vim.
+5)  If all else fails, a blank, but functioning, button is displayed.
+
+							*builtin-tools*
+nr  Name		Normal action  ~
+00  New			open new window
+01  Open		browse for file to open in current window
+02  Save		write buffer to file
+03  Undo		undo last change
+04  Redo		redo last undone change
+05  Cut			delete selected text to clipboard
+06  Copy		copy selected text to clipboard
+07  Paste		paste text from clipboard
+08  Print		print current buffer
+09  Help		open a buffer on Vim's builtin help
+10  Find		start a search command
+11  SaveAll		write all modified buffers to file
+12  SaveSesn		write session file for current situation
+13  NewSesn		write new session file
+14  LoadSesn		load session file
+15  RunScript		browse for file to run as a Vim script
+16  Replace		prompt for substitute command
+17  WinClose		close current window
+18  WinMax		make current window use many lines
+19  WinMin		make current window use few lines
+20  WinSplit		split current window
+21  Shell		start a shell
+22  FindPrev		search again, backward
+23  FindNext		search again, forward
+24  FindHelp		prompt for word to search help for
+25  Make		run make and jump to first error
+26  TagJump		jump to tag under the cursor
+27  RunCtags		build tags for files in current directory
+28  WinVSplit		split current window vertically
+29  WinMaxWidth		make current window use many columns
+30  WinMinWidth		make current window use few columns
+
+					*hidden-menus* *win32-hidden-menus*
+In the Win32 and GTK+ GUI, starting a menu name with ']' excludes that menu
+from the main menu bar.  You must then use the |:popup| or |:tearoff| command
+to display it.
+
+							*popup-menu*
+In the Win32, GTK+, Motif, Athena and Photon GUI, you can define the special
+menu "PopUp".  This is the menu that is displayed when the right mouse button
+is pressed, if 'mousemodel' is set to popup or popup_setpos.
+
+
+5.3 Showing What Menus Are Mapped To			*showing-menus*
+
+To see what an existing menu is mapped to, use just one argument after the
+menu commands (just like you would with the ":map" commands).  If the menu
+specified is a submenu, then all menus under that hierarchy will be shown.
+If no argument is given after :menu at all, then ALL menu items are shown
+for the appropriate mode (eg, Command-line mode for :cmenu).
+
+Special characters in the list, just before the rhs:
+*	The menu was defined with "nore" to disallow remapping.
+&	The menu was defined with "<script>" to allow remapping script-local
+	mappings only.
+-	The menu was disabled.
+
+Note that hitting <Tab> while entering a menu name after a menu command may
+be used to complete the name of the menu item.
+
+
+5.4 Executing Menus					*execute-menus*
+
+						*:em*  *:emenu* *E334* *E335*
+:[range]em[enu] {menu}		Execute {menu} from the command line.
+				The default is to execute the Normal mode
+				menu.  If a range is specified, it executes
+				the Visual mode menu.
+				If used from <c-o>, it executes the
+				insert-mode menu Eg: >
+	:emenu File.Exit
+
+If the console-mode vim has been compiled with WANT_MENU defined, you can
+use :emenu to access useful menu items you may have got used to from GUI
+mode.  See 'wildmenu' for an option that works well with this.  See
+|console-menus| for an example.
+
+When using a range, if the lines match with '<,'>, then the menu is executed
+using the last visual selection.
+
+
+5.5 Deleting Menus					*delete-menus*
+
+						*:unme*  *:unmenu*
+						*:aun*   *:aunmenu*
+						*:nunme* *:nunmenu*
+						*:ounme* *:ounmenu*
+						*:vunme* *:vunmenu*
+						*:iunme* *:iunmenu*
+						*:cunme* *:cunmenu*
+To delete a menu item or a whole submenu, use the unmenu commands, which are
+analogous to the unmap commands.  Eg: >
+    :unmenu! Edit.Paste
+
+This will remove the Paste item from the Edit menu for Insert and
+Command-line modes.
+
+Note that hitting <Tab> while entering a menu name after an umenu command
+may be used to complete the name of the menu item for the appropriate mode.
+
+To remove all menus use:			*:unmenu-all*  >
+	:unmenu *	" remove all menus in Normal and visual mode
+	:unmenu! *	" remove all menus in Insert and Command-line mode
+	:aunmenu *	" remove all menus in all modes
+
+If you want to get rid of the menu bar: >
+	:set guioptions-=m
+
+
+5.6 Disabling Menus					*disable-menus*
+
+						*:menu-disable* *:menu-enable*
+If you do not want to remove a menu, but disable it for a moment, this can be
+done by adding the "enable" or "disable" keyword to a ":menu" command.
+Examples: >
+	:menu disable &File.&Open\.\.\.
+	:amenu enable *
+	:amenu disable &Tools.*
+
+The command applies to the modes as used with all menu commands.  Note that
+characters like "&" need to be included for translated names to be found.
+When the argument is "*", all menus are affected.  Otherwise the given menu
+name and all existing submenus below it are affected.
+
+
+5.7 Examples for Menus					*menu-examples*
+
+Here is an example on how to add menu items with menu's!  You can add a menu
+item for the keyword under the cursor.  The register "z" is used. >
+
+  :nmenu Words.Add\ Var		wb"zye:menu! Words.<C-R>z <C-R>z<CR>
+  :nmenu Words.Remove\ Var	wb"zye:unmenu! Words.<C-R>z<CR>
+  :vmenu Words.Add\ Var		"zy:menu! Words.<C-R>z <C-R>z <CR>
+  :vmenu Words.Remove\ Var	"zy:unmenu! Words.<C-R>z<CR>
+  :imenu Words.Add\ Var		<Esc>wb"zye:menu! Words.<C-R>z <C-R>z<CR>a
+  :imenu Words.Remove\ Var	<Esc>wb"zye:unmenu! Words.<C-R>z<CR>a
+
+(the rhs is in <> notation, you can copy/paste this text to try out the
+mappings, or put these lines in your gvimrc; "<C-R>" is CTRL-R, "<CR>" is
+the <CR> key.  |<>|)
+
+
+5.8 Tooltips & Menu tips
+
+See section |42.4| in the user manual.
+
+							*:tmenu* *:tm*
+:tm[enu] {menupath} {rhs}	Define a tip for a menu or tool.  {only in
+				X11 and Win32 GUI}
+
+:tm[enu] [menupath]		List menu tips. {only in X11 and Win32 GUI}
+
+							*:tunmenu* *:tu*
+:tu[nmenu] {menupath}		Remove a tip for a menu or tool.
+				{only in X11 and Win32 GUI}
+
+When a tip is defined for a menu item, it appears in the command-line area
+when the mouse is over that item, much like a standard Windows menu hint in
+the status bar. (Except when Vim is in Command-line mode, when of course
+nothing is displayed.)
+When a tip is defined for a ToolBar item, it appears as a tooltip when the
+mouse pauses over that button, in the usual fashion.  Use the |hl-Tooltip|
+highlight group to change its colors.
+
+A "tip" can be defined for each menu item.  For example, when defining a menu
+item like this: >
+	:amenu MyMenu.Hello :echo "Hello"<CR>
+The tip is defined like this: >
+	:tmenu MyMenu.Hello Displays a greeting.
+And delete it with: >
+	:tunmenu MyMenu.Hello
+
+Tooltips are currently only supported for the X11 and Win32 GUI. However, they
+should appear for the other gui platforms in the not too distant future.
+
+The ":tmenu" command works just like other menu commands, it uses the same
+arguments.  ":tunmenu" deletes an existing menu tip, in the same way as the
+other unmenu commands.
+
+If a menu item becomes invalid (i.e. its actions in all modes are deleted) Vim
+deletes the menu tip (and the item) for you.  This means that :aunmenu deletes
+a menu item - you don't need to do a :tunmenu as well.
+
+
+5.9 Popup Menus
+
+In the Win32 and GTK+ GUI, you can cause a menu to popup at the cursor.
+This behaves similarly to the PopUp menus except that any menu tree can
+be popped up.
+
+This command is for backwards compatibility, using it is discouraged, because
+it behaves in a strange way.
+
+							*:popup* *:popu*
+:popu[p] {name}			Popup the menu {name}.  The menu named must
+				have at least one subentry, but need not
+				appear on the menu-bar (see |hidden-menus|).
+				{only available for Win32 and GTK GUI}
+
+Example: >
+	:popup File
+will make the "File" menu (if there is one) appear at the text cursor. >
+
+	:amenu ]Toolbar.Make	:make<CR>
+	:popup ]Toolbar
+This creates a popup menu that doesn't exist on the main menu-bar.
+
+Note that a menu that starts with ']' will not be displayed.
+
+==============================================================================
+6. Extras						*gui-extras*
+
+This section describes other features which are related to the GUI.
+
+- With the GUI, there is no wait for one second after hitting escape, because
+  the key codes don't start with <Esc>.
+
+- Typing ^V followed by a special key in the GUI will insert "<Key>", since
+  the internal string used is meaningless.  Modifiers may also be held down to
+  get "<Modifiers-Key>".
+
+- In the GUI, the modifiers SHIFT, CTRL, and ALT (or META) may be used within
+  mappings of special keys and mouse events.  eg: :map <M-LeftDrag> <LeftDrag>
+
+- In the GUI, several normal keys may have modifiers in mappings etc, these
+  are <Space>, <Tab>, <NL>, <CR>, <Esc>.
+
+- To check in a Vim script if the GUI is being used, you can use something
+  like this: >
+
+	if has("gui_running")
+	   echo "yes, we have a GUI"
+	else
+	   echo "Boring old console"
+	endif
+
+==============================================================================
+7. Shell Commands					*gui-shell*
+
+For the X11 GUI the external commands are executed inside the gvim window.
+See |gui-pty|.
+
+WARNING: Executing an external command from the X11 GUI will not always
+work.  "normal" commands like "ls", "grep" and "make" mostly work fine.
+Commands that require an intelligent terminal like "less" and "ispell" won't
+work.  Some may even hang and need to be killed from another terminal.  So be
+careful!
+
+For the Win32 GUI the external commands are executed in a separate window.
+See |gui-shell-win32|.
+
+ vim:tw=78:sw=4:ts=8:ft=help:norl:
diff --git a/runtime/doc/gui_w16.txt b/runtime/doc/gui_w16.txt
new file mode 100644
index 0000000..5055afe
--- /dev/null
+++ b/runtime/doc/gui_w16.txt
@@ -0,0 +1,186 @@
+*gui_w16.txt*   For Vim version 7.0aa.  Last change: 2001 Sep 03
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Vim's Graphical User Interface				*gui-w16* *win16-gui*
+
+1. Starting the GUI		|win16-start|
+2. Vim as default editor	|win16-default-editor|
+3. Using the clipboard		|win16-clipboard|
+4. Shell Commands		|win16-shell|
+5. Special colors		|win16-colors|
+6. Windows dialogs & browsers	|win16-dialogs|
+7. Various			|win16-various|
+
+Other relevant documentation:
+|gui.txt|	For generic items of the GUI.
+|os_msdos.txt|  For items common to DOS and Windows.
+|gui_w32.txt|	Some items here are also applicable to the Win16 version.
+
+{Vi does not have a Windows GUI}
+
+The Win16 version of Vim will run on Windows 3.1 or later. It has not been
+tested on 3.0, it probably won't work without being recompiled and
+modified. (but you really should upgrade to 3.11 anyway. :)
+
+In most respects it behaves identically to the Win32 GUI version, including
+having a flat-style toolbar(!). The chief differences:
+
+1) Bold/Italic text is not available, to speed up repaint/reduce resource
+   usage. (You can re-instate this by undefining MSWIN16_FASTTEXT.)
+2) No tearoff menu emulation.
+3) No OLE interface.
+4) No long filename support (of course)
+5) No tooltips on toolbar buttons - instead they produce command-line tips
+   like menu items do.
+6) Line length limited to 32767 characters (like 16-bit DOS version)
+
+
+==============================================================================
+1. Starting the GUI					*win16-start*
+
+The Win16 GUI version of Vim will always start the GUI, no matter how you
+start it or what it's called. There is no 'console' version as such, but you
+can use one of the DOS versions in a DOS box.
+
+The Win16 GUI has an extra menu item:  "Window/Select Font".  It brings up the
+standard Windows font selector. Note that bold and italic fonts are not
+supported in an attempt to maximize GDI drawing speed.
+
+Setting the menu height doesn't work for the Win16 GUI.
+
+							*win16-maximized*
+If you want Vim to start with a maximized window, add this command to your
+vimrc or gvimrc file: >
+	au GUIEnter * simalt ~x
+<
+
+There is a specific version of gvim.exe that runs under the Win32s subsystem
+of Windows 3.1 or 3.11.  See |win32s|.
+
+==============================================================================
+2. Vim as default editor				*win16-default-editor*
+
+To set Vim as the default editor for a file type you can use File Manager's
+"Associate" feature.
+
+When you open a file in Vim by double clicking it, Vim changes to that
+file's directory.
+
+See also |notepad|.
+
+==============================================================================
+3. Using the clipboard					*win16-clipboard*
+
+Windows has a clipboard, where you can copy text to, and paste text from.  Vim
+supports this in several ways.
+The clipboard works in the same way as the Win32 version: see |gui-clipboard|.
+
+==============================================================================
+4. Shell Commands					*win16-shell*
+
+Vim spawns a DOS window for external commands, to make it possible to run any
+DOS command. The window uses the _default.pif settings.
+
+							*win16-!start*
+Normally, Vim waits for a command to complete before continuing (this makes
+sense for most shell commands which produce output for Vim to use).  If you
+want Vim to start a program and return immediately, you can use the following
+syntax:
+	:!start {command}
+This may only work for a Windows program though.
+Don't forget that you must tell Windows 3.1x to keep executing a DOS command
+in the background while you switch back to Vim.
+
+==============================================================================
+5. Special colors					*win16-colors*
+
+On Win16, the normal DOS colors can be used.  See |dos-colors|.
+
+Additionally the system configured colors can also be used.  These are known
+by the names Sys_XXX, where XXX is the appropriate system color name, from the
+following list (see the Win32 documentation for full descriptions).  Case is
+ignored.
+
+Sys_BTNFace		Sys_BTNShadow			Sys_ActiveBorder
+Sys_ActiveCaption	Sys_AppWorkspace		Sys_Background
+Sys_BTNText		Sys_CaptionText			Sys_GrayText
+Sys_Highlight		Sys_HighlightText		Sys_InactiveBorder
+Sys_InactiveCaption	Sys_InactiveCaptionText		Sys_Menu
+Sys_MenuText		Sys_ScrollBar			Sys_Window
+Sys_WindowFrame		Sys_WindowText
+
+Probably the most useful values are
+	Sys_Window	    Normal window background
+	Sys_WindowText      Normal window text
+	Sys_Highlight       Highlighted background
+	Sys_HighlightText   Highlighted text
+
+These extra colors are also available:
+Gray, Grey, LightYellow, SeaGreen, Orange, Purple, SlateBlue, Violet,
+
+
+See also |rgb.txt|.
+
+==============================================================================
+						*win16-dialogs*
+6. Windows dialogs & browsers
+
+The Win16 GUI can use familiar Windows components for some operations, as well
+as the traditional interface shared with the console version.
+
+
+6.1 Dialogs
+
+The dialogs displayed by the "confirm" family (i.e. the 'confirm' option,
+|:confirm| command and |confirm()| function are GUI-based rather than the
+console-based ones used by other versions.  There is no option to change this.
+
+
+6.2 File Browsers
+
+When prepending ":browse" before file editing commands, a file requester is
+used to allow you to select an existing file.  See |:browse|.
+
+
+==============================================================================
+7. Various						*win16-various*
+
+							*win16-printing*
+The "File/Print" menu uses Notepad to print the current buffer.  This is a bit
+clumsy, but it's portable.  If you want something else, you can define your
+own print command.  For example, you could look for the 16-bit version of
+PrintFile.  See $VIMRUNTIME/menu.vim for how it works by default.
+
+Using this should also work: >
+	:w >>prn
+
+Vim supports a number of standard MS Windows features. Some of these are
+detailed elsewhere: see |'mouse'|, |win32-hidden-menus|.
+Also see |:simalt|
+
+							*win16-drag-n-drop*
+You can drag and drop one or more files into the vim window, where they will
+be opened as normal.  If you hold down Shift while doing this, Vim changes to
+the (first) dropped file's directory.  If you hold Ctrl, Vim will always split
+a new window for the file.  Otherwise it's only done if the current buffer has
+been changed.
+You can also drop a directory's icon, but rather than open all files in the
+directory (which wouldn't usually be what you want) Vim instead changes to
+that directory and begins a new file.
+If Vim happens to be editing a command line, the names of the dropped files
+and directories will be inserted at the cursor.  This allows you to use these
+names with any Ex command.
+
+							*win16-truetype*
+It is recommended that you use a raster font and not a TrueType
+fixed-pitch font. e.g. Use Courier, not Courier New. This is not just
+to use less resources but because there are subtle bugs in the
+handling of fixed-pitch TrueType in Win3.1x. In particular, when you move
+a block cursor over a pipe character '|', the cursor is drawn in the wrong
+size and bits get left behind. This is a bug in the Win3.1x GDI, it doesn't
+happen if you run the exe under 95/NT.
+
+ vim:tw=78:sw=4:ts=8:ft=help:norl:
diff --git a/runtime/doc/gui_w32.txt b/runtime/doc/gui_w32.txt
new file mode 100644
index 0000000..574aa35
--- /dev/null
+++ b/runtime/doc/gui_w32.txt
@@ -0,0 +1,472 @@
+*gui_w32.txt*   For Vim version 7.0aa.  Last change: 2004 May 03
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Vim's Win32 Graphical User Interface			*gui-w32* *win32-gui*
+
+1. Starting the GUI		|gui-w32-start|
+2. Vim as default editor	|vim-default-editor|
+3. Using the clipboard		|gui-clipboard|
+4. Shell Commands		|gui-shell-win32|
+5. Special colors		|win32-colors|
+6. Windows dialogs & browsers	|gui-w32-dialogs|
+7. Command line arguments	|gui-w32-cmdargs|
+8. Various			|gui-w32-various|
+
+Other relevant documentation:
+|gui.txt|	For generic items of the GUI.
+|os_win32.txt|  For Win32 specific items.
+
+{Vi does not have a Windows GUI}
+
+==============================================================================
+1. Starting the GUI					*gui-w32-start*
+
+The Win32 GUI version of Vim will always start the GUI, no matter how you
+start it or what it's called.
+
+The GUI will always run in the Windows subsystem.  Mostly shells automatically
+return with a command prompt after starting gvim.  If not, you should use the
+"start" command: >
+	start gvim [options] file ..
+
+Note: All fonts (bold, italic) must be of the same size!!!  If you don't do
+this, text will disappear or mess up the display.  Vim does not check the font
+sizes.  It's the size in screen pixels that must be the same.  Note that some
+fonts that have the same point size don't have the same pixel size!
+Additionally, the positioning of the fonts must be the same (ascent and
+descent).
+
+The Win32 GUI has an extra menu item:  "Edit/Select Font".  It brings up the
+standard Windows font selector.
+
+Setting the menu height doesn't work for the Win32 GUI.
+
+							*gui-win32-maximized*
+If you want Vim to start with a maximized window, add this command to your
+vimrc or gvimrc file: >
+	au GUIEnter * simalt ~x
+<
+								*gui-w32s*
+There is a specific version of gvim.exe that runs under the Win32s subsystem
+of Windows 3.1 or 3.11.  See |win32s|.
+
+==============================================================================
+2. Vim as default editor				*vim-default-editor*
+
+To set Vim as the default editor for a file type:
+1. Start a Windows Explorer
+2. Chose View/Options -> File Types
+3. Select the path to gvim for every file type that you want to use it for.
+   (you can also use three spaces in the file type field, for files without an
+   extension).
+   In the "open" action, use: >
+	gvim "%1"
+<  The quotes are required for using file names with embedded spaces.
+   You can also use this: >
+	gvim "%L"
+<  This should avoid short (8.3 character) file names in some situations.  But
+   I'm not sure if this works everywhere.
+
+When you open a file in Vim by double clicking it, Vim changes to that
+file's directory.
+
+If you want Vim to start full-screen, use this for the Open action: >
+	gvim -c "simalt ~x" "%1"
+
+Another method, which also works when you put Vim in another directory (e.g.,
+when you have got a new version):
+1. select a file you want to use Vim with
+2. <Shift-F10>
+3. select "Open With..." menu entry
+4. click "Other..."
+5. browse to the (new) location of Vim and click "Open"
+6. make "Always Use this program..." checked
+7. <OK>
+
+						*send-to-menu* *sendto*
+You can also install Vim in the "Send To" menu:
+1. Start a Windows Explorer
+2. Navigate to your sendto directory:
+   Windows 95: %windir%\sendto (e.g. "c:\windows\sendto")
+   Windows NT: %windir%\profiles\%user%\sendto (e.g.
+	       "c:\winnt\profiles\mattha\sendto").
+3. Right-click in the file pane and select New->Shortcut
+4. Follow the shortcut wizard, using the full path to VIM/GVIM.
+
+When you 'send a file to Vim', Vim changes to that file's directory.  Note,
+however, that any long directory names will appear in their short (MS-DOS)
+form.  This is a limitation of the Windows "Send To" mechanism.
+
+						*notepad*
+You could replace notepad.exe with gvim.exe, but that has a few side effects.
+Some programs rely on notepad arguments, which are not recognized by Vim.  For
+example "notepad -p" is used by some applications to print a file.  It's
+better to leave notepad where it is and use another way to start Vim.
+
+						*win32-popup-menu*
+A more drastic approach is to install an "Edit with Vim" entry in the popup
+menu for the right mouse button.  With this you can edit any file with Vim.
+
+This can co-exist with the file associations mentioned above.  The difference
+is that the file associations will make starting Vim the default action.  With
+the "Edit with Vim" menu entry you can keep the existing file association for
+double clicking on the file, and edit the file with Vim when you want.  For
+example, you can associate "*.mak" with your make program.  You can execute
+the makefile by double clicking it and use the "Edit with Vim" entry to edit
+the makefile.
+
+You can select any files and right-click to see a menu option called "Edit
+with gvim".  Chosing this menu option will invoke gvim with the file you have
+selected.  If you select multiple files, you will find two gvim-related menu
+options:
+"Edit with multiple gvims"  -- one gvim for each file in the selection
+"Edit with single gvim"     -- one gvim for all the files in the selection
+And if there already is a gvim running:
+"Edit with existing gvim"   -- edit the file with the running gvim
+
+						*install-registry*
+You can add the "Edit with Vim" menu entry in an easy way by using the
+"install.exe" program.  It will add several registry entries for you.
+
+You can also do this by hand.  This is complicated!  Use the install.exe if
+you can.
+
+1. Start the registry editor with "regedit".
+2. Add these keys:
+   key		value name		    value ~
+   HKEY_CLASSES_ROOT\CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99}
+		{default}		    Vim Shell Extension
+   HKEY_CLASSES_ROOT\CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99}\InProcServer32
+		{default}		    {path}\gvimext.dll
+		ThreadingModel		    Apartment
+   HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\gvim
+		{default}		    {51EEE242-AD87-11d3-9C1E-0090278BBD99}
+   HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved
+		{51EEE242-AD87-11d3-9C1E-0090278BBD99}
+					    Vim Shell Extension
+   HKEY_LOCAL_MACHINE\Software\Vim\Gvim
+		path			    {path}\gvim.exe
+   HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\vim 5.6
+		DisplayName		    Vim 5.6: Edit with Vim popup menu entry
+		UninstallString		    {path}\uninstal.exe
+
+   Replace {path} with the path that leads to the executable.
+   Don't type {default}, this is the value for the key itself.
+
+To remove "Edit with Vim" from the popup menu, just remove the registry
+entries mentioned above.  The "uninstal.exe" program can do this for you.  You
+can also use the entry in the Windows standard "Add/Remove Programs" list.
+
+If you notice that this entry overrules other file type associations, set
+those associations again by hand (using Windows Explorer, see above).  This
+only seems to happen on some Windows NT versions (Windows bug?).  Procedure:
+1. Find the name of the file type.  This can be done by starting the registry
+   editor, and searching for the extension in \\HKEY_CLASSES_ROOT
+2. In a Windows Explorer, use View/Options/File Types.  Search for the file
+   type in the list and click "Edit".  In the actions list, you can select on
+   to be used as the default (normally the "open" action) and click on the
+   "Set Default" button.
+
+
+Vim in the "Open With..." context menu			*win32-open-with-menu*
+
+If you use the Vim install program you have the choice to add Vim to the "Open
+With..." menu.  This means you can use Vim to edit many files.  Not every file
+(for unclear reasons...), thus the "Edit with Vim" menu entry is still useful.
+
+One reason to add this is to be able to edit HTML files directly from Internet
+Explorer.  To enable this use the "Tools" menu, "Internet Options..." entry.
+In the dialog select the "Programs" tab and select Vim in the "HTML editor"
+choice.  If it's not there than installing didn't work properly.
+
+Doing this manually can be done with this script:
+
+----------------------------------------------------------
+REGEDIT4
+
+[HKEY_CLASSES_ROOT\Applications\gvim.exe]
+
+[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell]
+
+[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit]
+
+[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command]
+@="c:\\vim\\vim62\\gvim.exe \"%1\""
+
+[HKEY_CLASSES_ROOT\.htm\OpenWithList\gvim.exe]
+
+[HKEY_CLASSES_ROOT\*\OpenWithList\gvim.exe]
+
+----------------------------------------------------------
+
+Change the "c:\\vim\\vim62" bit to where gvim.exe is actually located.
+
+To uninstall this run the Vim uninstall program or manually delete the
+registry entries with "regedit".
+
+==============================================================================
+3. Using the clipboard					*gui-clipboard*
+
+Windows has a clipboard, where you can copy text to, and paste text from.  Vim
+supports this in several ways.  For other systems see |gui-selections|.
+
+The "* register reflects the contents of the clipboard.  |quotestar|
+
+When the "unnamed" string is included in the 'clipboard' option, the unnamed
+register is the same.  Thus you can yank to and paste from the clipboard
+without prepending "* to commands.
+
+The 'a' flag in 'guioptions' is not included by default.  This means that text
+is only put on the clipboard when an operation is performed on it.  Just
+Visually selecting text doesn't put it on the clipboard.  When the 'a' flag is
+included, the text is copied to the clipboard even when it is not operated
+upon.
+
+							*mswin.vim*
+To use the standard MS-Windows way of CTRL-X, CTRL-C and CTRL-V, use the
+$VIMRUNTIME/mswin.vim script.  You could add this line to your _vimrc file: >
+	source $VIMRUNTIME/mswin.vim
+
+Since CTRL-C is used to copy the text to the clipboard, it can't be used to
+cancel an operation.  Use CTRL-Break for that.
+
+							*CTRL-V-alternative*
+Since CTRL-V is used to paste, you can't use it to start a blockwise Visual
+selection.  You can use CTRL-Q instead.  You can also use CTRL-Q in Insert
+mode and Command-line mode to get the old meaning of CTRL-V.  But CTRL-Q
+doesn't work for terminals when it's used for control flow.
+
+NOTE: The clipboard support still has a number of bugs.  See |todo|.
+
+==============================================================================
+4. Shell Commands					*gui-shell-win32*
+
+Vim uses another window for external commands, to make it possible to run any
+command.  The external command gets its own environment for running, just like
+it was started from a DOS prompt.
+
+							*win32-vimrun*
+Executing an external command is done indirectly by the "vimrun" command.  The
+"vimrun.exe" must be in the path for this to work.  Or it must be in the same
+directory as the Vim executable.  If "vimrun" cannot be found, the command is
+executed directly, but then the DOS window closes immediately after the
+external command has finished.
+WARNING: If you close this window with the "X" button, and confirm the
+question if you really want to kill the application, Vim may be killed too!
+(This does not apply to commands run asynchronously with ":!start".)
+
+In Windows 95, the window in which the commands are executed is always 25x80
+characters, to be as DOS compatible as possible (this matters!).  The default
+system font is used. On NT, the window will be the default you have set up for
+"Console" in Control Panel. On Win32s, the properties of the DOS box are
+determined by _default.pif in the windows directory.
+
+							*msdos-mode*
+If you get a dialog that says "This program is set to run in MS-DOS mode..."
+when you run an external program, you can solve this by changing the
+properties of the associated shortcut:
+- Use a Windows Explorer to find the command.com that is used.  It can be
+  c:\command.com, c:\dos\command.com, c:\windows\command.com, etc.
+- With the right mouse button, select properties of this command.com.
+- In the Program tab select "Advanced".
+- Unselect "MS-DOS mode".
+- Click "OK" twice.
+
+							*win32-!start*
+Normally, Vim waits for a command to complete before continuing (this makes
+sense for most shell commands which produce output for Vim to use).  If you
+want Vim to start a program and return immediately, you can use the following
+syntax on W95 & NT: >
+	:!start {command}
+On Win32s, you will have to go to another window instead. Don't forget that
+you must tell Windows 3.1x to keep executing a DOS command in the background
+while you switch back to Vim.
+
+==============================================================================
+5. Special colors					*win32-colors*
+
+On Win32, the normal DOS colors can be used.  See |dos-colors|.
+
+Additionally the system configured colors can also be used.  These are known
+by the names Sys_XXX, where XXX is the appropriate system color name, from the
+following list (see the Win32 documentation for full descriptions).  Case is
+ignored. note: On Win32s not all of these colors are supported.
+
+Sys_3DDKShadow		Sys_3DFace			Sys_BTNFace
+Sys_3DHilight		Sys_3DHighlight			Sys_BTNHilight
+Sys_BTNHighlight	Sys_3DLight			Sys_3DShadow
+Sys_BTNShadow		Sys_ActiveBorder		Sys_ActiveCaption
+Sys_AppWorkspace	Sys_Background			Sys_Desktop
+Sys_BTNText		Sys_CaptionText			Sys_GrayText
+Sys_Highlight		Sys_HighlightText		Sys_InactiveBorder
+Sys_InactiveCaption	Sys_InactiveCaptionText		Sys_InfoBK
+Sys_InfoText		Sys_Menu			Sys_MenuText
+Sys_ScrollBar		Sys_Window			Sys_WindowFrame
+Sys_WindowText
+
+Probably the most useful values are
+	Sys_Window	    Normal window background
+	Sys_WindowText      Normal window text
+	Sys_Highlight       Highlighted background
+	Sys_HighlightText   Highlighted text
+
+These extra colors are also available:
+Gray, Grey, LightYellow, SeaGreen, Orange, Purple, SlateBlue, Violet,
+
+								*rgb.txt*
+Additionally, colors defined by a "rgb.txt" file can be used.  This file is
+well known from X11.  A few lines from it: >
+
+  255 218 185		   peach puff
+  205 133  63		   peru
+  255 181 197		   pink
+
+This shows the layout of the file:  First the R, G and B value as a decimal
+number, followed by the name of the color.  The four fields are separated by
+spaces.
+
+You can get an rgb.txt file from any X11 distribution.  It is located in a
+directory like "/usr/X11R6/lib/X11/".  For Vim it must be located in the
+$VIMRUNTIME directory.  Thus the file can be found with "$VIMRUNTIME/rgb.txt".
+
+==============================================================================
+						*gui-w32-dialogs* *dialog*
+6. Windows dialogs & browsers
+
+The Win32 GUI can use familiar Windows components for some operations, as well
+as the traditional interface shared with the console version.
+
+
+6.1 Dialogs
+
+The dialogs displayed by the "confirm" family (i.e. the 'confirm' option,
+|:confirm| command and |confirm()| function) are GUI-based rather than the
+console-based ones used by other versions.  The 'c' flag in 'guioptions'
+changes this.
+
+
+6.2 File Browsers
+
+When prepending ":browse" before file editing commands, a file requester is
+used to allow you to select an existing file.  See |:browse|.
+
+
+6.3 Tearoff Menus
+
+The Win32 GUI emulates Motif's tear-off menus.  At the top of each menu you
+will see a small graphic "rip here" sign.  Selecting it will cause a floating
+window to be created with the same menu entries on it.  The floating menu can
+then be accessed just as if it was the original (including sub-menus), but
+without having to go to the menu bar each time.
+This is most useful if you find yourself using a command buried in a sub-menu
+over and over again.
+The tearoff menus can be positioned where you like, and always stay just above
+the Main Vim window. You can get rid of them by closing them as usual; they
+also of course close when you exit Vim.
+
+							*:tearoff* *:te*
+:te[aroff] {name}	Tear-off the menu {name}.  The menu named must have at
+			least one subentry, but need not appear on the
+			menu-bar (see |win32-hidden-menus|).
+
+Example: >
+	:tearoff File
+will make the "File" menu (if there is one) appear as a tearoff menu. >
+
+	:amenu ]Toolbar.Make	:make<CR>
+	:tearoff ]Toolbar
+This creates a floating menu that doesn't exist on the main menu-bar.
+
+Note that a menu that starts with ']' will not be displayed.
+
+==============================================================================
+7. Command line arguments				*gui-w32-cmdargs*
+
+Analysis of a command line into parameters is not standardised in MS Windows.
+Gvim has to provide logic to analyse a command line.  This logic is likely to
+be different from the default logic provided by a compilation system used to
+build vim.  The differences relate to unusual double quote (") usage.
+The arguments "C:\My Music\freude.txt" and "+/Sch\"iller" are handled in the
+same way.  The argument "+/Sch""iller" may be handled different by gvim and
+vim, depending what it was compiled with.
+
+The rules are:
+      a) A parameter is a sequence of graphic characters.
+      b) Parameters are separated by white space.
+      c) A parameter can be enclosed in double quotes to include white space.
+      d) A sequence of zero or more backslashes (\) and a double quote (")
+	is special. The effective number of backslashes is halved, rounded
+	down.  An even number of backslashes reverses the acceptability of
+	spaces and tabs, an odd number of backslashes produces a literal
+	double quote.
+
+So:
+	"	is a special double quote
+	\"	is a literal double quote
+	\\"	is a literal backslash and a special double quote
+	\\\"	is a literal backslash and a literal double quote
+	\\\\"	is 2 literal backslashes and a special double quote
+	\\\\\"	is 2 literal backslashes and a literal double quote
+	etc.
+
+Example: >
+	gvim "C:\My Music\freude" +"set ignorecase" +/"\"foo\\" +\"bar\\\"
+
+opens "C:\My Music\freude" and executes the line mode commands: >
+	set ignorecase; /"foo\ and /bar\"
+
+==============================================================================
+8. Various						*gui-w32-various*
+
+							*gui-w32-printing*
+The "File/Print" menu prints the text with syntax highlighting, see
+|:hardcopy|.  If you just want to print the raw text and have a default
+printer installed this should also work: >
+	:w >>prn
+
+Vim supports a number of standard MS Windows features. Some of these are
+detailed elsewhere: see |'mouse'|, |win32-hidden-menus|.
+
+							*drag-n-drop-win32*
+You can drag and drop one or more files into the Vim window, where they will
+be opened as normal.  See |drag-n-drop|.
+
+							*:simalt* *:si*
+:sim[alt] {key}		simulate pressing {key} while holding Alt pressed.
+			{not in Vi} {only for Win32 versions}
+
+Normally, Vim takes control of all Alt-<Key> combinations, to increase the
+number of possible mappings. This clashes with the standard use of Alt as the
+key for accessing menus.
+The quick way of getting standard behavior is to set the 'winaltkeys' option
+to "yes".  This however prevents you from mapping Alt keys at all.
+Another way is to set 'winaltkeys' to "menu".  Menu shortcut keys are then
+handled by windows, other ALT keys can be mapped.  This doesn't allow a
+dependency on the current state though.
+To get round this, the :simalt command allows Vim (when 'winaltkeys' is not
+"yes") to fake a Windows-style Alt keypress. You can use this to map Alt key
+combinations (or anything else for that matter) to produce standard Windows
+actions. Here are some examples: >
+
+	:map <M-f> :simalt f<CR>
+This makes Alt-F pop down the 'File' menu (with the stock Menu.vim) by
+simulating the keystrokes Alt, F. >
+	:map <M-Space> :simalt ~<CR>
+This maps Alt-Space to pop down the system menu for the Vim window. Note that
+~ is used by simalt to represent the <Space> character. >
+	:map <C-n> :simalt ~n<CR>
+Maps Control-N to produce the keys Alt-Space followed by N. This minimizes the
+Vim window via the system menu.
+
+						*intellimouse-wheel-problems*
+When using the Intellimouse mouse wheel causes Vim to stop accepting input, go
+to:
+	ControlPanel - Mouse - Wheel - UniversalScrolling - Exceptions
+
+And add gvim to the list of applications.  This problem only appears to happen
+with the Intellimouse driver 2.2 and when "Universal Scrolling" is turned on.
+
+ vim:tw=78:sw=4:ts=8:ft=help:norl:
diff --git a/runtime/doc/gui_x11.txt b/runtime/doc/gui_x11.txt
new file mode 100644
index 0000000..d547302
--- /dev/null
+++ b/runtime/doc/gui_x11.txt
@@ -0,0 +1,576 @@
+*gui_x11.txt*   For Vim version 7.0aa.  Last change: 2004 Mar 16
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Vim's Graphical User Interface				*gui-x11* *GUI-X11*
+							*Athena* *Motif*
+1. Starting the X11 GUI		|gui-x11-start|
+2. GUI Resources		|gui-resources|
+3. Shell Commands		|gui-pty|
+4. Various			|gui-x11-various|
+5. GTK version			|gui-gtk|
+6. GNOME version		|gui-gnome|
+7. Compiling			|gui-x11-compiling|
+8. X11 selection mechanism	|x11-selection|
+
+Other relevant documentation:
+|gui.txt|	For generic items of the GUI.
+
+{Vi does not have any of these commands}
+
+==============================================================================
+1. Starting the X11 GUI					*gui-x11-start* *E665*
+
+Then you can run the GUI version of Vim in either of these ways:
+    gvim [options] [files...]
+    vim -g [options] [files...]
+
+So if you call the executable "gvim", or make "gvim" a link to the executable,
+then the GUI version will automatically be used.  Additional characters may be
+added after "gvim", for example "gvim-5".
+
+You may also start up the GUI from within the terminal version by using one of
+these commands:
+	:gui [++opt] [+cmd] [-f|-b] [files...]			*:gu* *:gui*
+	:gvim [++opt] [+cmd] [-f|-b] [files...]			*:gv* *:gvim*
+The "-f" option runs Vim in the foreground.
+The "-b" option runs Vim in the background (this is the default).
+Also see |++opt| and |+cmd|.
+
+							*gui-fork*
+When the GUI is started, it does a fork() and exits the current process.
+When gvim was started from a shell this makes the shell accept further
+commands.  If you don't want this (e.g. when using gvim for a mail program
+that waits for gvim to exit), start gvim with "gvim -f", "vim -gf" or use
+":gui -f".  Don't use "vim -fg", because "-fg" specifies the foreground
+color.
+
+When using "gvim -f" and then ":gui", Vim will run in the foreground.  The
+"-f" argument will be remembered.  To force running Vim in the background use
+":gui -b".
+
+"gvim --nofork" does the same as "gvim -f".
+
+If you want the GUI to run in the foreground always, include the 'f'
+flag in 'guioptions'.  |-f|.
+
+==============================================================================
+2. GUI Resources			*gui-resources* *.Xdefaults*
+
+If using the Motif or Athena version of the GUI (not for the GTK+ or Win32
+version), a number of X resources are available.  You should use Vim's class
+"Vim" when setting these.  They are as follows:
+
+    Resource name	Meaning		~
+
+    reverseVideo	Boolean: should reverse video be used?
+    background		Color of background.
+    foreground		Color of normal text.
+    scrollBackground	Color of trough portion of scrollbars.
+    scrollForeground	Color of slider and arrow portions of scrollbars.
+    menuBackground	Color of menu backgrounds.
+    menuForeground	Color of menu foregrounds.
+    tooltipForeground	Color of tooltip and balloon foreground.
+    tooltipBackground	Color of tooltip and balloon background.
+
+    font		Name of font used for normal text.
+    boldFont		Name of font used for bold text.
+    italicFont		Name of font used for italic text.
+    boldItalicFont	Name of font used for bold, italic text.
+    menuFont		Name of font used for the menus, used when compiled
+			without the |+xfontset| feature
+    menuFontSet		Name of fontset used for the menus, used when compiled
+			with the |+xfontset| feature
+    tooltipFont		Name of the font used for the tooltip and balloons.
+			When compiled with the |+xfontset| feature this is a
+			fontset name.
+
+    geometry		Initial geometry to use for gvim's window (default
+			is same size as terminal that started it).
+    scrollbarWidth	Thickness of scrollbars.
+    borderWidth		Thickness of border around text area.
+    menuHeight		Height of the menu bar (only for Athena).
+
+A special font for italic, bold, and italic-bold text will only be used if
+the user has specified one via a resource.  No attempt is made to guess what
+fonts should be used for these based on the normal text font.
+
+Note that the colors can also be set with the ":highlight" command, using the
+"Normal", "Menu", "Tooltip", and "Scrollbar" groups.  Example: >
+	:highlight Menu guibg=lightblue
+	:highlight Tooltip guibg=yellow
+	:highlight Scrollbar guibg=lightblue guifg=blue
+	:highlight Normal guibg=grey90
+<
+							*font-sizes*
+Note: All fonts (except for the menu and tooltip) must be of the same size!!!
+If you don't do this, text will disappear or mess up the display.  Vim does
+not check the font sizes.  It's the size in screen pixels that must be the
+same.  Note that some fonts that have the same point size don't have the same
+pixel size!  Additionally, the positioning of the fonts must be the same
+(ascent and descent).  You can check this with "xlsfonts -l {fontname}".
+
+If any of these things are also set with Vim commands, eg with
+":set guifont=Screen15", then this will override the X resources (currently
+'guifont' is the only option that is supported).
+
+Here is an example of what you might put in your ~/.Xdefaults file: >
+
+	Vim*useSchemes:			all
+	Vim*sgiMode:			true
+	Vim*useEnhancedFSB:		true
+	Vim.foreground:			Black
+	Vim.background:			Wheat
+	Vim*fontList:			7x13
+
+The first three of these are standard resources on Silicon Graphics machines
+which make Motif applications look even better, highly recommended!
+
+The "Vim*fontList" is to set the menu font for Motif.  Example: >
+	Vim*menuBar*fontList:	     -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
+With Athena: >
+	Vim*menuBar*SmeBSB*font:     -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
+	Vim*menuBar*MenuButton*font: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
+
+NOTE: A more portable, and indeed more correct, way to specify the menu font
+in either Motif or Athena is through the resource: >
+	Vim.menuFont:	     -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
+Or, when compiled with the |+xfontset| feature: >
+	Vim.menuFontSet:     -*-courier-medium-r-*-*-10-*-*-*-*-*-*-*
+
+Don't use "Vim*geometry" in the defaults.  This will break the menus.  Use
+"Vim.geometry" instead.
+
+If you get an error message "Cannot allocate colormap entry for "gray60",
+try adding this to your Vim resources (change the colors to your liking): >
+
+	Vim*scrollBackground:		Black
+	Vim*scrollForeground:		Blue
+
+The resources can also be set with arguments to Vim:
+
+    argument		meaning	~
+							*-gui*
+   -display {display}	Run vim on {display}		*-display*
+   -iconic		Start vim iconified		*-iconic*
+   -background {color}	Use {color} for the background	*-background*
+   -bg {color}		idem				*-bg*
+   -foreground {color}	Use {color} for normal text	*-foreground*
+   -fg {color}		idem				*-fg*
+   -ul {color}		idem				*-ul*
+   -font {font}		Use {font} for normal text	*-font*
+   -fn {font}		idem				*-fn*
+   -boldfont {font}	Use {font} for bold text	*-boldfont*
+   -italicfont {font}	Use {font} for italic text	*-italicfont*
+   -menufont {font}	Use {font} for menu items	*-menufont*
+   -menufontset {fontset} Use {fontset} for menu items	*-menufontset*
+   -mf {font}		idem				*-mf*
+   -geometry {geom}	Use {geom} for initial geometry	*-geometry*
+   -geom {geom}		idem, see |-geometry-example|	*-geom*
+   -borderwidth {width}	Use a border width of {width}	*-borderwidth*
+   -bw {width}		idem				*-bw*
+							*-scrollbarwidth*
+   -scrollbarwidth {width}	Use a scrollbar width of {width}
+   -sw {width}		idem				*-sw*
+   -menuheight {height}	Use a menu bar height of {height} *-menuheight*
+   -mh {height}		idem				*-mh*
+			NOTE: On Motif the value is ignored, the menu height
+			is computed to fit the menus.
+   -reverse		Use reverse video		*-reverse*
+   -rv			idem				*-rv*
+   +reverse		Don't use reverse video		*-+reverse*
+   +rv			idem				*-+rv*
+   -xrm {resource}	Set the specified resource	*-xrm*
+
+Note about reverse video: Vim checks that the result is actually a light text
+on a dark background.  The reason is that some X11 versions swap the colors,
+and some don't.  These two examples will both give yellow text on a blue
+background:
+    gvim -fg Yellow -bg Blue -reverse
+    gvim -bg Yellow -fg Blue -reverse
+
+							*-geometry-example*
+An example for the geometry argument: >
+	gvim -geometry 80x63+8+100
+This creates a window with 80 columns and 63 lines at position 8 pixels from
+the left and 100 pixels from the top of the screen.
+
+==============================================================================
+3. Shell Commands					*gui-pty*
+
+WARNING: Executing an external command from the GUI will not always work.
+"normal" commands like "ls", "grep" and "make" mostly work fine.  Commands
+that require an intelligent terminal like "less" and "ispell" won't work.
+Some may even hang and need to be killed from another terminal.  So be
+careful!
+
+There are two ways to do the I/O with a shell command: Pipes and a pseudo-tty.
+The default is to use a pseudo-tty.  This should work best on most systems.
+
+Unfortunately, the implementation of the pseudo-tty is different on every Unix
+system.  And some systems require root permission.  To avoid running into
+problems with a pseudo-tty when you least expect it, test it when not editing
+a file.  Be prepared to "kill" the started command or Vim.  Commands like
+":r !cat" may hang!
+
+If using a pseudo-tty does not work for you, reset the 'guipty' option: >
+
+	:set noguipty
+
+Using a pipe should work on any Unix system, but there are disadvantages:
+- Some shell commands will notice that a pipe is being used and behave
+  differently.  E.g., ":!ls" will list the files in one column.
+- The ":sh" command won't show a prompt, although it will sort of work.
+- When using ":make" it's not possible to interrupt with a CTRL-C.
+
+Typeahead while the external command is running is often lost.  This happens
+both with a pipe and a pseudo-tty.  This is a known problem, but it seems it
+can't be fixed (or at least, it's very difficult).
+
+							*gui-pty-erase*
+When your erase character is wrong for an external command, you should fix
+this in your "~/.cshrc" file, or whatever file your shell uses for
+initializations.  For example, when you want to use backspace to delete
+characters, but hitting backspaces produces "^H" instead, try adding this to
+your "~/.cshrc": >
+	stty erase ^H
+The ^H is a real CTRL-H, type it as CTRL-V CTRL-H.
+
+==============================================================================
+4. Various						*gui-x11-various*
+
+							*gui-x11-printing*
+The "File/Print" menu simply sends the current buffer to "lpr".  No options or
+whatever.  If you want something else, you can define your own print command.
+For example: >
+
+  :10amenu File.Print :w !lpr -Php3
+  :10vmenu File.Print :w !lpr -Php3
+<
+							*X11-icon*
+Vim uses a black&white icon by default when compiled with Motif or Athena.  A
+colored Vim icon is included as $VIMRUNTIME/vim32x32.xpm.  For GTK+, this is
+the builtin icon used.  Unfortunately, how you should install it depends on
+your window manager.  When you use this, remove the 'i' flag from
+'guioptions', to remove the black&white icon: >
+  :set guioptions-=i
+
+If you use one of the fvwm* family of window managers simply add this line to
+your .fvwm2rc configuration file: >
+
+  Style "vim"		Icon vim32x32.xpm
+
+Make sure the icon file's location is consistent with the window manager's
+ImagePath statement.  Either modify the ImagePath from within your .fvwm2rc or
+drop the icon into one the pre-defined directories: >
+
+  ImagePath /usr/X11R6/include/X11/pixmaps:/usr/X11R6/include/X11/bitmaps
+
+Note: older versions of fvwm use "IconPath" instead of "ImagePath".
+
+For CDE "dtwm" (a derivative of Motif) add this line in the .Xdefaults: >
+   Dtwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm
+
+For "mwm" (Motif window manager) the line would be: >
+   Mwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm
+
+Mouse Pointers Available in X11				*X11_mouse_shapes*
+
+By using the |'mouseshape'| option, the mouse pointer can be automatically
+changed whenever Vim enters one of its various modes (e.g., Insert or
+Command).  Currently, the available pointers are:
+
+	arrow			an arrow pointing northwest
+	beam			a I-like vertical bar
+	size			an arrow pointing up and down
+	busy			a wristwatch
+	blank			an invisible pointer
+	crosshair		a thin "+" sign
+	hand1			a dark hand pointing northeast
+	hand2			a light hand pointing northwest
+	pencil			a pencil pointing southeast
+	question		question_arrow
+	right_arrow		an arrow pointing northeast
+	up_arrow		an arrow pointing upwards
+
+Additionally, any of the mouse pointers that are built into X11 may be
+used by specifying an integer from the X11/cursorfont.h include file.
+
+If a name is used that exists on other systems, but not in X11, the default
+"arrow" pointer is used.
+
+==============================================================================
+5. GTK version						*gui-gtk* *GTK+* *GTK*
+
+The GTK version of the GUI works a little bit different.
+
+GTK does _not_ use the traditional X resource settings.  Thus items in your
+~/.Xdefaults or app-defaults files are not used.
+Many of the traditional X command line arguments are not supported.  (e.g.,
+stuff like -bg, -fg, etc).  The ones that are supported are:
+
+    command line argument   resource name	meaning ~
+    -fn  or  -font	    .font		font name for the text
+    -geom  or  -geometry    .geometry		size of the gvim window
+    -rv  or  -reverse	    *reverseVideo	white text on black background
+    -display					display to be used
+    -fg -foreground {color}			foreground color
+    -bg -background {color}			background color
+
+To set the font, see |'guifont'|.  For GTK, there's also a menu option that
+does this.
+
+Additionally, there are these command line arguments, which are handled by GTK
+internally.  Look in the GTK documentation for how they are used:
+	--sync
+	--gdk-debug
+	--gdk-no-debug
+	--no-xshm	(not in GTK+ 2)
+	--xim-preedit	(not in GTK+ 2)
+	--xim-status	(not in GTK+ 2)
+	--gtk-debug
+	--gtk-no-debug
+	--g-fatal-warnings
+	--gtk-module
+	--display	(GTK+ counterpart of -display; works the same way.)
+	--screen	(The screen number; for GTK+ 2.2 multihead support.)
+
+These arguments are ignored when the |+netbeans_intg| feature is used:
+	-xrm
+	-mf
+
+As for colors, Vim's color settings (for syntax highlighting) is still
+done the traditional Vim way.  See |:highlight| for more help.
+
+If you want to set the colors of remaining gui components (e.g., the
+menubar, scrollbar, whatever), those are GTK specific settings and you
+need to set those up in some sort of gtkrc file.  You'll have to refer
+to the GTK documentation, however little there is, on how to do this.
+See http://developer.gnome.org/doc/API/2.0/gtk/gtk-Resource-Files.html
+for more information.
+
+						*gtk-tooltip-colors*
+Example, which sets the tooltip colors to black on light-yellow: >
+
+	style "tooltips"
+	{
+		bg[NORMAL] = "#ffffcc"
+		fg[NORMAL] = "#000000"
+	}
+
+	widget "gtk-tooltips*"		style "tooltips"
+
+Write this in the file ~/.gtkrc and it will be used by GTK+.  For GTK+ 2
+you might have to use the file ~/.gtkrc-2.0 instead, depending on your
+distribution.
+
+Using Vim as a GTK+ plugin				*gui-gtk-socketid*
+
+When the GTK+ version of Vim starts up normally, it creates its own top level
+window (technically, a 'GtkWindow').  GTK+ provides an embedding facility with
+its GtkSocket and GtkPlug widgets.  If one GTK+ application creates a
+GtkSocket widget in one of its windows, an entirely different GTK+ application
+may embed itself into the first application by creating a top-level GtkPlug
+widget using the socket's ID.
+
+If you pass Vim the command-line option '--socketid' with a decimal or
+hexadecimal value, Vim will create a GtkPlug widget using that value instead
+of the normal GtkWindow.  This enables Vim to act as a GTK+ plugin.
+
+This really is a programmer's interface, and is of no use without a supporting
+application to spawn the Vim correctly.  For more details on GTK+ sockets, see
+http://www.gtk.org/api/
+
+Note that this feature requires the latest GTK version.  GTK 1.2.10 still has
+a small problem.  The socket feature has not yet been tested with GTK+ 2 --
+feel free to volunteer.
+
+==============================================================================
+6. GNOME version				*gui-gnome* *Gnome* *GNOME*
+
+The GNOME GUI works just like the GTK+ version.  See |GTK+| above for how it
+works.  It looks a bit different though, and implements one important feature
+that's not available in the plain GTK+ GUI:  Interaction with the session
+manager. |gui-gnome-session|
+
+These are the different looks:
+- Uses GNOME dialogs (GNOME 1 only).  The GNOME 2 GUI uses the same nice
+  dialogs as the GTK+ 2 version.
+- Uses the GNOME dock, so that the toolbar and menubar can be moved to
+  different locations other than the top (e.g., the toolbar can be placed on
+  the left, right, top, or bottom).  The placement of the menubar and
+  toolbar is only saved in the GNOME 2 version.
+- That means the menubar and toolbar handles are back!  Yeah!  And the
+  resizing grid still works too.
+
+GNOME is automatically compiled with if it was found by configure.
+(FIXME: Is this still true?  Use --enable-gnome-check to force it to.)
+
+GNOME session support			*gui-gnome-session* *gnome-session*
+
+On logout, Vim shows the well-known exit confirmation dialog if any buffers
+are modified.  Clicking [Cancel] will stop the logout process.  Otherwise the
+current session is stored to disk by using the |:mksession| command, and
+restored the next time you log in.
+
+The GNOME session support should also work with the KDE session manager.
+If you are experiencing any problems please report them as bugs.
+
+Note: The automatic session save works entirely transparent, in order to
+avoid conflicts with your own session files, scripts and autocommands.  That
+means in detail:
+- The session file is stored to a separate directory (usually $HOME/.gnome2).
+- 'sessionoptions' is ignored, and a hardcoded set of appropriate flags is
+  used instead: >
+	blank,curdir,folds,globals,help,options,winsize
+- The internal variable |v:this_session| is not changed when storing the
+  session.  Also, it is restored to its old value when logging in again.
+
+The position and size of the GUI window is not saved by Vim since doing so
+is the window manager's job.  But if compiled with GTK+ 2 support, Vim helps
+the WM to identify the window by restoring the window role (using the |--role|
+command line argument).
+
+==============================================================================
+7. Compiling						*gui-x11-compiling*
+
+If using X11, Vim's Makefile will by default first try to find the necessary
+GTK+ files on your system.  If the GTK+ files cannot be found, then the Motif
+files will be searched for.  Finally, if this fails, the Athena files will be
+searched for.  If all three fail, the GUI will be disabled.
+
+For GTK+, Vim's configuration process requires that GTK+ be properly
+installed.  That is, the shell script 'gtk-config' must be in your PATH, and
+you can already successful compile, build, and execute a GTK+ program.  The
+reason for this is because the compiler flags (CFLAGS) and link flags
+(LDFLAGS) are obtained through the 'gtk-config' shell script.
+
+If you want to build with GTK+ 2 support pass the --enable-gtk2-check argument
+to ./configure.  Optionally, support for GNOME 2 will be compiled if the
+--enable-gnome-check option is also given.  Note that the support for GTK+ 2
+is still experimental.  However, many people have reported that it works just
+fine for them.
+
+Otherwise, if you are using Motif or Athena, when you have the Motif or Athena
+files in a directory where configure doesn't look, edit the Makefile to enter
+the names of the directories.  Search for "GUI_INC_LOC" for an example to set
+the Motif directories, "CONF_OPT_X" for Athena.
+
+							*gui-x11-gtk*
+At the time of this writing, you may use either GTK+ version 1.0.6 or 1.2.  It
+is suggested that you use v1.2 since not all of Vim's GUI features are present
+if using v1.0.6.  For instance, there are no tearoff menus present in v1.0.6.
+Using a version from GTK+'s CVS tree may or may not work, and is therefore not
+supported and not recommended.
+
+For the experimental GTK+ 2 GUI, using the latest release of the GTK+ 2.0 or
+GTK+ 2.2 series is recommended.  CVS HEAD seems to work fine most of time as
+well.
+
+Lastly, although GTK+ has supposedly been ported to the Win32 platform, this
+has not been tested with Vim and is also unsupported.  Also, it's unlikely to
+even compile since GTK+ GUI uses parts of the generic X11 code.  This might
+change in distant future; particularly because getting rid of the X11 centric
+code parts is also required for GTK+ framebuffer support.
+
+							*gui-x11-motif*
+For Motif, you need at least Motif version 1.2 and/or X11R5.  Motif 2.0 and
+X11R6 are OK.  Motif 1.1 and X11R4 might work, no guarantee (there may be a
+few problems, but you might make it compile and run with a bit of work, please
+send me the patches if you do).  The newest releases of LessTif have been
+reported to work fine too.
+
+							*gui-x11-athena*
+The Athena version uses the Xaw widget set by default.  If you have the 3D
+version, you might want to link with Xaw3d instead.  This will make the
+menus look a bit better.  Edit the Makefile and look for "XAW_LIB".  The
+scrollbars will remain the same, because Vim has its own, which are already
+3D (in fact, they look more like Motif).
+
+							*gui-x11-neXtaw*
+The neXtaw version is mostly like Athena, but uses different widgets.
+
+							*gui-x11-misc*
+In general, do not try to mix files from different GTK+, Motif, Athena and X11
+versions.  This will cause problems.  For example, using header files for
+X11R5 with a library for X11R6 probably doesn't work (although the linking
+won't give an error message, Vim will crash later).
+
+==============================================================================
+8. X11 selection mechanism				*x11-selection*
+
+If using X11, in either the GUI or an xterm with an X11-aware Vim, then Vim
+provides varied access to the X11 selection and clipboard.  These are accessed
+by using the two selection registers "* and "+.
+
+X11 provides two basic types of global store, selections and cut-buffers,
+which differ in one important aspect: selections are "owned" by an
+application, and disappear when that application (e.g., Vim) exits, thus
+losing the data, whereas cut-buffers, are stored within the X-server itself
+and remain until written over or the X-server exits (e.g., upon logging out).
+
+The contents of selections are held by the originating application (e.g., upon
+a copy), and only passed on to another application when that other application
+asks for them (e.g., upon a paste).
+
+The contents of cut-buffers are immediately written to, and are then
+accessible directly from the X-server, without contacting the originating
+application.
+
+							*quoteplus* *quote+*
+There are three documented X selections: PRIMARY (which is expected to
+represent the current visual selection - as in Vim's Visual mode), SECONDARY
+(which is ill-defined) and CLIPBOARD (which is expected to be used for
+cut, copy and paste operations).
+
+Of these three, Vim uses PRIMARY when reading and writing the "* register
+(hence when the X11 selections are available, Vim sets a default value for
+|'clipboard'| of "autoselect"), and CLIPBOARD when reading and writing the "+
+register.  Vim does not access the SECONDARY selection.
+
+Examples: (assuming the default option values)
+- Select an URL in Visual mode in Vim.  Go to a text field in Netscape and
+  click the middle mouse button.  The selected text will be inserted
+  (hopefully!).
+- Select some text in Netscape by dragging with the mouse.  Go to Vim and
+  press the middle mouse button: The selected text is inserted.
+- Select some text in Vim and do "+y.  Go to Netscape, select some text in a
+  textfield by dragging with the mouse.  Now use the right mouse button and
+  select "Paste" from the popup menu.  The selected text is overwritten by the
+  text from Vim.
+Note that the text in the "+ register remains available when making a Visual
+selection, which makes other text available in the "* register.  That allows
+overwriting selected text.
+							*x11-cut-buffer*
+There are, by default, 8 cut-buffers: CUT_BUFFER0 to CUT_BUFFER7.  Vim only
+uses CUT_BUFFER0, which is the one that xterm uses by default.
+
+Whenever Vim is about to become unavailable (either via exiting or becoming
+suspended), and thus unable to respond to another application's selection
+request, it writes the contents of any owned selection to CUT_BUFFER0.  If the
+"+ CLIPBOARD selection is owned by Vim, then this is written in preference,
+otherwise if the "* PRIMARY selection is owned by Vim, then that is written.
+
+Similarly, when Vim tries to paste from "* or "+ (either explicitly, or, in
+the case of the "* register, when the middle mouse button is clicked), if the
+requested X selection is empty or unavailable, Vim reverts to reading the
+current value of the CUT_BUFFER0.
+
+Note that when text is copied to CUT_BUFFER0 in this way, the type of
+selection (character, line or block) is always lost, even if it is a Vim which
+later pastes it.
+
+Xterm, by default, always writes visible selections to both PRIMARY and
+CUT_BUFFER0.  When it pastes, it uses PRIMARY if this is available, or else
+falls back upon CUT_BUFFER0.  For this reason, when cutting and pasting
+between Vim and an xterm, you should use the "* register.  Xterm doesn't use
+CLIPBOARD, thus the "+ doesn't work with xterm.
+
+Most newer applications will provide their current selection via PRIMARY ("*)
+and use CLIPBOARD ("+) for cut/copy/paste operations.  You thus have access to
+both by choosing to use either of the "* or "+ registers.
+
+
+ vim:tw=78:sw=4:ts=8:ft=help:norl:
diff --git a/runtime/doc/hangulin.txt b/runtime/doc/hangulin.txt
new file mode 100644
index 0000000..c1133cb
--- /dev/null
+++ b/runtime/doc/hangulin.txt
@@ -0,0 +1,101 @@
+*hangulin.txt*  For Vim version 7.0aa.  Last change: 2001 Sep 03
+
+
+		  VIM REFERENCE MANUAL    by Chi-Deok Hwang and Sung-Hyun Nam
+
+Introduction					*hangul*
+------------
+It is to input hangul, the Korean language, with VIM GUI version.
+If you have a XIM program, you can use another |+xim| feature.
+Basically, it is for whom has no XIM program.
+
+Compile
+-------
+Next is a basic option. You can add any other configure option. >
+
+   ./configure --with-x --enable-multibyte --enable-fontset --enable-hangulinput
+
+And you should check the feature.h. If |+hangul_input| feature is enabled
+by configure, you can select more options such as keyboard type, 2 bulsik
+or 3 bulsik. You can find keywords like next in there. >
+
+	#define HANGUL_DEFAULT_KEYBOARD 2
+	#define ESC_CHG_TO_ENG_MODE
+	/* #define X_LOCALE */
+	/* #define SLOW_XSERVER */
+
+Environment variables
+---------------------
+You should set LANG variable to Korean locale such as ko or ko_KR.euc.
+If you set LC_ALL variable, it should be set to Korean locale also.
+
+VIM resource
+------------
+You should add nexts to your global vimrc ($HOME/.vimrc). >
+
+	:set fileencoding=korea
+
+Keyboard
+--------
+You can change keyboard type (2 bulsik or 3 bulsik) using VIM_KEYBOARD
+or HANGUL_KEYBOARD_TYPE environment variables. For sh, just do (2 bulsik): >
+
+    export VIM_KEYBOARD="2"
+or >
+    export HANGUL_KEYBOARD_TYPE="2"
+
+If both are set, VIM_KEYBOARD has higher priority.
+
+Hangul Fonts
+------------
+You can set text font using $HOME/.Xdefaults or $HOME/.gvimrc.
+But to use Hangul, you should set 'guifontset' in your vimrc.
+
+$HOME/.Xdefaults: >
+    Vim.font: english_font
+
+    ! Nexts are for hangul menu with Athena
+    *international: True
+    Vim*fontSet: english_font,hangul_font
+
+    ! Nexts are for hangul menu with Motif
+    *international: True
+    Vim*fontList: english_font;hangul_font:
+
+$HOME/.gvimrc: >
+    set guifontset=english_font,hangul_font
+
+attention! the , (comma) or ; (semicolon)
+
+And there should be no ':set guifont'. If it exists, then Gvim ignores
+':set guifontset'. It means VIM runs without fontset supporting.
+So, you can see only English. Hangul does not be correctly displayed.
+
+After 'fontset' feature is enabled, VIM does not allow using 'font'.
+For example, if you use >
+   :set guifontset=eng_font,your_font
+in your .gvimrc, then you should do for syntax >
+   :hi Comment guifg=Cyan font=another_eng_font,another_your_font
+If you just do >
+   :hi Comment font=another_eng_font
+then you can see a GOOD error message. Be careful!
+
+hangul_font width should be twice than english_font width.
+
+Unsupported Feature
+-------------------
+Johab font not yet supported. And I don't have any plan.
+If you really want to use johab font, you can use the
+hanguldraw.c in gau package.
+
+Hanja input not yet supported. And I don't have any plan.
+If you really want to input hanja, just use VIM with hanterm.
+
+Bug or Comment
+--------------
+Send comments, patches and suggestions to:
+
+				    Chi-Deok Hwang <hwang@mizi.co.kr>
+				    Nam SungHyun <namsh@lge.com>
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/hebrew.txt b/runtime/doc/hebrew.txt
new file mode 100644
index 0000000..f595e29
--- /dev/null
+++ b/runtime/doc/hebrew.txt
@@ -0,0 +1,145 @@
+*hebrew.txt*    For Vim version 7.0aa.  Last change: 2003 May 11
+
+
+	   VIM REFERENCE MANUAL    by Ron Aaron (and Avner Lottem)
+
+
+Hebrew Language support (options & mapping) for Vim		*hebrew*
+
+The supporting 'rightleft' functionality was originally created by Avner
+Lottem:
+   E-mail: alottem@iil.intel.com
+   Phone:  +972-4-8307322
+
+Ron Aaron <ron@ronware.org> is currently helping support these features.
+
+{Vi does not have any of these commands}
+
+All this is only available when the |+rightleft| feature was enabled at
+compile time.
+
+
+Introduction
+------------
+Hebrew-specific options are 'hkmap', 'hkmapp' 'keymap'=hebrew and 'aleph'.
+Hebrew-useful options are 'delcombine', 'allowrevins', 'revins', 'rightleft'
+and 'rightleftcmd'.
+
+The 'rightleft' mode reverses the display order, so characters are displayed
+from right to left instead of the usual left to right.  This is useful
+primarily when editing Hebrew or other Middle-Eastern languages.
+See |rileft.txt| for further details.
+
+Details
+--------------
++  Options:
+   +  'rightleft' ('rl') sets window orientation to right-to-left.  This means
+      that the logical text 'ABC' will be displayed as 'CBA', and will start
+      drawing at the right edge of the window, not the left edge.
+   +  'hkmap' ('hk') sets keyboard mapping to Hebrew, in insert/replace modes.
+   +  'aleph' ('al'), numeric, holds the decimal code of Aleph, for keyboard
+      mapping.
+   +  'hkmapp' ('hkp') sets keyboard mapping to 'phonetic hebrew'
+
+   NOTE: these three ('hkmap', 'hkmapp' and 'aleph') are obsolete.  You should
+	 use ":set keymap=hebrewp" instead.
+
+   +  'delcombine' ('deco'), boolean, if editing UTF-8 encoded Hebrew, allows
+      one to remove the niqud or te`amim by pressing 'x' on a character (with
+      associated niqud).
+
+   +  'rightleftcmd' ('rlc') makes the command-prompt for searches show up on
+      the right side.  It only takes effect if the window is 'rightleft'.
+
++  Encoding:
+   +  Under Unix, ISO 8859-8 encoding (Hebrew letters codes: 224-250).
+   +  Under MS DOS, PC encoding (Hebrew letters codes: 128-154).
+      These are defaults, that can be overridden using the 'aleph' option.
+   +  You should prefer using UTF8, as it supports the combining-characters
+      ('deco' does nothing if UTF8 encoding is not active).
+
++  Vim arguments:
+   +  'vim -H file' starts editing a Hebrew file, i.e. 'rightleft' and 'hkmap'
+      are set.
+
++  Keyboard:
+   +  The 'allowrevins' option enables the CTRL-_ command in Insert mode and
+      in Command-line mode.
+
+   +  CTRL-_ in insert/replace modes toggles 'revins' and 'hkmap' as follows:
+
+      When in rightleft window, 'revins' and 'nohkmap' are toggled, since
+      English will likely be inserted in this case.
+
+      When in norightleft window, 'revins' 'hkmap' are toggled, since Hebrew
+      will likely be inserted in this case.
+
+      CTRL-_ moves the cursor to the end of the typed text.
+
+   +  CTRL-_ in command mode only toggles keyboard mapping (see Bugs below).
+      This setting is independent of 'hkmap' option, which only applies to
+      insert/replace mode.
+
+      Note: On some keyboards, CTRL-_ is mapped to CTRL-?.
+
+   +  Keyboard mapping while 'hkmap' is set (standard Israeli keyboard):
+
+	q w e r t y u i o p
+	/ ' ק ר א ט ו ן ם פ
+
+	 a s d f g h j k l ; '
+	 ש ד ג כ ע י ח ל ך ף ,
+
+	  z x c v b n m , . /
+	  ז ס ב ה נ מ צ ת ץ .
+
+      This is also the keymap when 'keymap=hebrew' is set.  The advantage of
+      'keymap' is that it works properly when using UTF8, e.g. it inserts the
+      correct characters; 'hkmap' does not.  The 'keymap' keyboard can also
+      insert niqud and te`amim.  To see what those mappings are,look at the
+      keymap file 'hebrew.vim' etc.
+
+
+Typing backwards
+
+If the 'revins' (reverse insert) option is set, inserting happens backwards.
+This can be used to type Hebrew.  When inserting characters the cursor is not
+moved and the text moves rightwards.  A <BS> deletes the character under the
+cursor.  CTRL-W and CTRL-U also work in the opposite direction.  <BS>, CTRL-W
+and CTRL-U do not stop at the start of insert or end of line, no matter how
+the 'backspace' option is set.
+
+There is no reverse replace mode (yet).
+
+If the 'showmode' option is set, "-- REVERSE INSERT --" will be shown in the
+status line when reverse Insert mode is active.
+
+When the 'allowrevins' option is set, reverse Insert mode can be also entered
+via CTRL-_, which has some extra functionality: First, keyboard mapping is
+changed according to the window orientation -- if in a left-to-right window,
+'revins' is used to enter Hebrew text, so the keyboard changes to Hebrew
+('hkmap' is set); if in a right-to-left window, 'revins' is used to enter
+English text, so the keyboard changes to English ('hkmap' is reset).  Second,
+when exiting 'revins' via CTRL-_, the cursor moves to the end of the typed
+text (if possible).
+
+
+Pasting when in a rightleft window
+----------------------------------
+When cutting text with the mouse and pasting it in a rightleft window
+the text will be reversed, because the characters come from the cut buffer
+from the left to the right, while inserted in the file from the right to
+the left.   In order to avoid it, toggle 'revins' (by typing CTRL-? or CTRL-_)
+before pasting.
+
+
+Hebrew characters and the 'isprint' variable
+--------------------------------------------
+Sometimes Hebrew character codes are in the non-printable range defined by
+the 'isprint' variable.  For example in the Linux console, the Hebrew font
+encoding starts from 128, while the default 'isprint' variable is @,161-255.
+The result is that all Hebrew characters are displayed as ~x.  To solve this
+problem, set isprint=@,128-255.
+
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt
new file mode 100644
index 0000000..3614e4c
--- /dev/null
+++ b/runtime/doc/help.txt
@@ -0,0 +1,197 @@
+*help.txt*	For Vim version 7.0aa.  Last change: 2004 May 04
+
+			VIM - main help file
+									 k
+      Move around:  Use the cursor keys, or "h" to go left,	       h   l
+		    "j" to go down, "k" to go up, "l" to go right.	 j
+Close this window:  Use ":q<Enter>".
+   Get out of Vim:  Use ":qa!<Enter>" (careful, all changes are lost!).
+
+Jump to a subject:  Position the cursor on a tag between |bars| and hit CTRL-].
+   With the mouse:  ":set mouse=a" to enable the mouse (in xterm or GUI).
+		    Double-click the left mouse button on a tag between |bars|.
+	Jump back:  Type CTRL-T or CTRL-O (repeat to go further back).
+
+Get specific help:  It is possible to go directly to whatever you want help
+		    on, by giving an argument to the ":help" command |:help|.
+		    It is possible to further specify the context:
+							*help-context*
+			  WHAT			PREPEND    EXAMPLE	~
+		      Normal mode commands     (nothing)   :help x
+		      Visual mode commands	  v_	   :help v_u
+		      Insert mode commands	  i_	   :help i_<Esc>
+		      Command-line commands	  :	   :help :quit
+		      Command-line editing	  c_	   :help c_<Del>
+		      Vim command arguments	  -	   :help -r
+		      Options			  '	   :help 'textwidth'
+  Search for help:  Type ":help word", then hit CTRL-D to see matching
+		    help entries for "word".
+
+VIM stands for Vi IMproved.  Most of VIM was made by Bram Moolenaar, but only
+through the help of many others.  See |credits|.
+------------------------------------------------------------------------------
+						*doc-file-list* *Q_ct*
+BASIC:
+|quickref|	Overview of the most common commands you will use
+|tutor|		30 minutes training course for beginners
+|copying|	About copyrights
+|iccf|		Helping poor children in Uganda
+|sponsor|	Sponsor Vim development, become a registered Vim user
+|www|		Vim on the World Wide Web
+|bugs|		Where to send bug reports
+
+USER MANUAL: These files explain how to accomplish an editing task.
+
+|usr_toc.txt|	Table Of Contents
+
+Getting Started ~
+|usr_01.txt|  About the manuals
+|usr_02.txt|  The first steps in Vim
+|usr_03.txt|  Moving around
+|usr_04.txt|  Making small changes
+|usr_05.txt|  Set your settings
+|usr_06.txt|  Using syntax highlighting
+|usr_07.txt|  Editing more than one file
+|usr_08.txt|  Splitting windows
+|usr_09.txt|  Using the GUI
+|usr_10.txt|  Making big changes
+|usr_11.txt|  Recovering from a crash
+|usr_12.txt|  Clever tricks
+
+Editing Effectively ~
+|usr_20.txt|  Typing command-line commands quickly
+|usr_21.txt|  Go away and come back
+|usr_22.txt|  Finding the file to edit
+|usr_23.txt|  Editing other files
+|usr_24.txt|  Inserting quickly
+|usr_25.txt|  Editing formatted text
+|usr_26.txt|  Repeating
+|usr_27.txt|  Search commands and patterns
+|usr_28.txt|  Folding
+|usr_29.txt|  Moving through programs
+|usr_30.txt|  Editing programs
+|usr_31.txt|  Exploiting the GUI
+
+Tuning Vim ~
+|usr_40.txt|  Make new commands
+|usr_41.txt|  Write a Vim script
+|usr_42.txt|  Add new menus
+|usr_43.txt|  Using filetypes
+|usr_44.txt|  Your own syntax highlighted
+|usr_45.txt|  Select your language
+
+Making Vim Run ~
+|usr_90.txt|  Installing Vim
+
+
+REFERENCE MANUAL: These files explain every detail of Vim.
+
+General subjects ~
+|intro.txt|	general introduction to Vim; notation used in help files
+|help.txt|	overview and quick reference (this file)
+|index.txt|	alphabetical index of all commands
+|help-tags|	all the tags you can jump to (index of tags)
+|howto.txt|	how to do the most common editing tasks
+|tips.txt|	various tips on using Vim
+|message.txt|	(error) messages and explanations
+|quotes.txt|	remarks from users of Vim
+|todo.txt|	known problems and desired extensions
+|develop.txt|	development of Vim
+|uganda.txt|	Vim distribution conditions and what to do with your money
+
+Basic editing ~
+|starting.txt|	starting Vim, Vim command arguments, initialisation
+|editing.txt|	editing and writing files
+|motion.txt|	commands for moving around
+|scroll.txt|	scrolling the text in the window
+|insert.txt|	Insert and Replace mode
+|change.txt|	deleting and replacing text
+|indent.txt|	automatic indenting for C and other languages
+|undo.txt|	Undo and Redo
+|repeat.txt|	repeating commands, Vim scripts and debugging
+|visual.txt|	using the Visual mode (selecting a text area)
+|various.txt|	various remaining commands
+|recover.txt|	recovering from a crash
+
+Advanced editing ~
+|cmdline.txt|	Command-line editing
+|options.txt|	description of all options
+|pattern.txt|	regexp patterns and search commands
+|map.txt|	key mapping and abbreviations
+|tagsrch.txt|	tags and special searches
+|quickfix.txt|	commands for a quick edit-compile-fix cycle
+|windows.txt|	commands for using multiple windows and buffers
+|syntax.txt|	syntax highlighting
+|diff.txt|	working with two or three versions of the same file
+|autocmd.txt|	automatically executing commands on an event
+|filetype.txt|	settings done specifically for a type of file
+|eval.txt|	expression evaluation, conditional commands
+|fold.txt|	hide (fold) ranges of lines
+
+Special issues ~
+|remote.txt|	using Vim as a server or client
+|term.txt|	using different terminals and mice
+|digraph.txt|	list of available digraphs
+|mbyte.txt|	multi-byte text support
+|mlang.txt|	non-English language support
+|arabic.txt|	Arabic language support and editing
+|farsi.txt|	Farsi (Persian) editing
+|hebrew.txt|	Hebrew language support and editing
+|russian.txt|	Russian language support and editing
+|hangulin.txt|	Hangul (Korean) input mode
+|rileft.txt|	right-to-left editing mode
+
+GUI ~
+|gui.txt|	Graphical User Interface (GUI)
+|gui_w16.txt|	Windows 3.1 GUI
+|gui_w32.txt|	Win32 GUI
+|gui_x11.txt|	X11 GUI
+
+Interfaces ~
+|if_cscop.txt|	using cscope with Vim
+|if_perl.txt|	Perl interface
+|if_pyth.txt|	Python interface
+|if_sniff.txt|	SNiFF+ interface
+|if_tcl.txt|	Tcl interface
+|if_ole.txt|	OLE automation interface for Win32
+|if_ruby.txt|	Ruby interface
+|debugger.txt|	Interface with a debugger
+|workshop.txt|	Sun Visual Workshop interface
+|netbeans.txt|	NetBeans External Editor interface
+|sign.txt|	debugging signs
+
+Versions ~
+|vi_diff.txt|	Main differences between Vim and Vi
+|version4.txt|	Differences between Vim version 3.0 and 4.x
+|version5.txt|	Differences between Vim version 4.6 and 5.x
+|version6.txt|	Differences between Vim version 5.7 and 6.x
+						*sys-file-list*
+Remarks about specific systems ~
+|os_390.txt|	OS/390 Unix
+|os_amiga.txt|	Amiga
+|os_beos.txt|	BeOS and BeBox
+|os_dos.txt|	MS-DOS and MS-Windows NT/95 common items
+|os_mac.txt|	Macintosh
+|os_mint.txt|	Atari MiNT
+|os_msdos.txt|	MS-DOS (plain DOS and DOS box under Windows)
+|os_os2.txt|	OS/2
+|os_qnx.txt|	QNX
+|os_risc.txt|	RISC-OS
+|os_unix.txt|	Unix
+|os_vms.txt|	VMS
+|os_win32.txt|	MS-Windows 95/98/NT
+						*standard-plugin-list*
+Standard plugins ~
+|pi_netrw.txt|	Reading and writing files over a network
+|pi_gzip.txt|	Reading and writing compressed files
+|pi_expl.txt|	File explorer
+
+LOCAL ADDITIONS:				*local-additions*
+
+------------------------------------------------------------------------------
+*bars*		Bars example
+
+Now that you've jumped here with CTRL-] or a double mouse click, you can use
+CTRL-T, CTRL-O, g<RightMouse>, or <C-RightMouse> to go back to where you were.
+------------------------------------------------------------------------------
+ vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl:
diff --git a/runtime/doc/help.txt.info b/runtime/doc/help.txt.info
new file mode 100755
index 0000000..0f8df81
--- /dev/null
+++ b/runtime/doc/help.txt.info
Binary files differ
diff --git a/runtime/doc/howto.txt b/runtime/doc/howto.txt
new file mode 100644
index 0000000..aa99190
--- /dev/null
+++ b/runtime/doc/howto.txt
@@ -0,0 +1,96 @@
+*howto.txt*	For Vim version 7.0aa.  Last change: 2001 Sep 03
+
+
+		  VIM REFERENCE MANUAL	  by Bram Moolenaar
+
+
+How to ...				*howdoi* *how-do-i* *howto* *how-to*
+
+|tutor|			get started
+|:quit|			exit?  I'm trapped, help me!
+|initialization|	initialize Vim
+|vimrc-intro|		write a Vim script file (vimrc)
+|suspend|		suspend Vim
+|usr_11.txt|		recover after a crash
+|07.4|			keep a backup of my file when writing over it
+
+|usr_07.txt|		edit files
+|23.4|			edit binary files
+|usr_24.txt|		insert text
+|deleting|		delete text
+|usr_04.txt|		change text
+|04.5|			copy and move text
+|usr_25.txt|		format text
+|30.6|			format comments
+|30.2|			indent C programs
+|25.3|			automatically set indent
+
+|usr_26.txt|		repeat commands
+|02.5|			undo and redo
+
+|usr_03.txt|		move around
+|word-motions|		word motions
+|left-right-motions|	left-right motions
+|up-down-motions|	up-down motions
+|object-motions|	text-object motions
+|various-motions|	various motions
+|object-select|		text-object selection
+|'whichwrap'|		move over line breaks
+|'virtualedit'|		move to where there is no text
+|usr_27.txt|		specify pattern for searches
+|tags-and-searches|	do tags and special searches
+|29.4|			search in include'd files used to find
+			variables, functions, or macros
+|K|			look up manual for the keyword under cursor
+
+|03.7|			scroll
+|'sidescroll'|		scroll horizontally/sideways
+|'scrolloff'|		set visible context lines
+
+|mode-switching|	change modes
+|04.4|			use Visual mode
+|'insertmode'|		start Vim in Insert mode
+
+|40.1|			map keys
+|24.7|			create abbreviations
+
+|ins-expandtab|		expand a tab to spaces in Insert mode
+|i_CTRL-R|		insert contents of a register in Insert mode
+|24.3|			complete words in Insert mode
+|25.1|			break a line before it gets too long
+
+|20.1|			do command-line editing
+|20.3|			do command-line completion
+|'cmdheight'|		increase the height of command-line
+|10.3|			specify command-line ranges
+|40.3|			specify commands to be executed automatically
+			before/after reading/writing entering/leaving a
+			buffer/window
+
+|'autowrite'|		write automatically
+|30.1|			speedup edit-compile-edit cycle or compile and fix
+			errors within Vim
+
+|options|		set options
+|auto-setting|		set options automatically
+|term-dependent-settings| set options depending on terminal name
+|save-settings|		save settings
+|:quote|		comment my exrc/vimrc/gvimrc files
+|'helpheight'|		change the default help height
+|'highlight'|		set various highlighting modes
+|'title'|		set the window title
+|'icon'|		set window icon title
+|'report'|		avoid seeing the change messages on every line
+|'shortmess'|		avoid |hit-enter| prompts
+
+|mouse-using|		use mouse with Vim
+|usr_08.txt|		manage multiple windows and buffers
+|gui.txt|		use the gui
+
+|You can't! (yet)|	do dishes using Vim
+
+|usr_06.txt|		switch on syntax highlighting
+|2html.vim|		convert a colored file to HTML
+|less|			use Vim like less or more with syntax highlighting
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/if_cscop.txt b/runtime/doc/if_cscop.txt
new file mode 100644
index 0000000..44ff66c
--- /dev/null
+++ b/runtime/doc/if_cscop.txt
@@ -0,0 +1,474 @@
+*if_cscop.txt*  For Vim version 7.0aa.  Last change: 2004 Jan 17
+
+
+		  VIM REFERENCE MANUAL    by Andy Kahn
+
+							*cscope* *Cscope*
+This document explains how to use Vim's cscope interface.
+
+Cscope is a tool like ctags, but think of it as ctags on steroids since it
+does a lot more than what ctags provides.  In Vim, jumping to a result from
+a cscope query is just like jumping to any tag; it is saved on the tag stack
+so that with the right keyboard mappings, you can jump back and forth between
+functions as you normally would with |tags|.
+
+1. Cscope introduction		|cscope-intro|
+2. Cscope related commands	|cscope-commands|
+3. Cscope options		|cscope-options|
+4. How to use cscope in Vim	|cscope-howtouse|
+5. Limitations			|cscope-limitations|
+6. Suggested usage		|cscope-suggestions|
+7. Availability & Information	|cscope-info|
+
+This is currently for Unix and Win32 only.
+{Vi does not have any of these commands}
+
+==============================================================================
+1. Cscope introduction					*cscope-intro*
+
+The following text is taken from a version of the cscope man page:
+
+				    -----
+
+  Cscope is an interactive screen-oriented tool that helps you:
+
+       Learn how a C program works without endless flipping through a thick
+       listing.
+
+       Locate the section of code to change to fix a bug without having to
+       learn the entire program.
+
+       Examine the effect of a proposed change such as adding a value to an
+       enum variable.
+
+       Verify that a change has been made in all source files such as adding
+       an argument to an existing function.
+
+       Rename a global variable in all source files.
+
+       Change a constant to a preprocessor symbol in selected lines of files.
+
+  It is designed to answer questions like:
+       Where is this symbol used?
+       Where is it defined?
+       Where did this variable get its value?
+       What is this global symbol's definition?
+       Where is this function in the source files?
+       What functions call this function?
+       What functions are called by this function?
+       Where does the message "out of space" come from?
+       Where is this source file in the directory structure?
+       What files include this header file?
+
+  Cscope answers these questions from a symbol database that it builds the
+  first time it is used on the source files.  On a subsequent call, cscope
+  rebuilds the database only if a source file has changed or the list of
+  source files is different.  When the database is rebuilt the data for the
+  unchanged files is copied from the old database, which makes rebuilding
+  much faster than the initial build.
+
+				    -----
+
+When cscope is normally invoked, you will get a full-screen selection
+screen allowing you to make a query for one of the above questions.
+However, once a match is found to your query and you have entered your
+text editor to edit the source file containing match, you cannot simply
+jump from tag to tag as you normally would with vi's Ctrl-] or :tag
+command.
+
+Vim's cscope interface is done by invoking cscope with its line-oriented
+interface, and then parsing the output returned from a query.  The end
+result is that cscope query results become just like regular tags, so
+you can jump to them just like you do with normal tags (Ctrl-] or :tag)
+and then go back by popping off the tagstack with Ctrl-T.  (Please note
+however, that you don't actually jump to a cscope tag simply by doing
+Ctrl-] or :tag without remapping these commands or setting an option.
+See the remaining sections on how the cscope interface works and for
+suggested use.)
+
+
+==============================================================================
+2. Cscope related commands				*cscope-commands*
+
+		*:cscope* *:cs* *:scs* *:scscope* *E259* *E262* *E561* *E560*
+All cscope commands are accessed through suboptions to the main cscope
+command ":cscope".  The shortest abbreviation is ":cs".  The ":scscope"
+command does the same and also splits the window (short: "scs").
+
+The available subcommands are:
+
+			*E563* *E564* *E566* *E568* *E569* *E622* *E623*
+			*E625* *E626* *E609*
+    add   : Add a new cscope database/connection.
+
+	USAGE	:cs add {file|dir} [pre-path] [flags]
+
+	    [pre-path] is the pathname used with the -P command to cscope.
+
+	    [flags] are any additional flags you want to pass to cscope.
+
+	EXAMPLES >
+	    :cscope add /usr/local/cdb/cscope.out
+	    :cscope add /projects/vim/cscope.out /usr/local/vim
+	    :cscope add cscope.out /usr/local/vim -C
+<
+				      *cscope-find* *cs-find*
+						*E565* *E567*
+    find  : Query cscope.  All cscope query options are available
+	    except option #5 ("Change this grep pattern").
+
+	USAGE	:cs find {querytype} {name}
+
+	    {querytype} corresponds to the actual cscope line
+	    interface numbers as well as default nvi commands:
+
+		0 or s: Find this C symbol
+		1 or g: Find this definition
+		2 or d: Find functions called by this function
+		3 or c: Find functions calling this function
+		4 or t: Find this text string
+		6 or e: Find this egrep pattern
+		7 or f: Find this file
+		8 or i: Find files #including this file
+
+	EXAMPLES >
+	    :cscope find c vim_free
+	    :cscope find 3 vim_free
+<
+	    These two examples perform the same query. >
+
+	    :cscope find 0 DEFAULT_TERM
+<
+	    Executing this example on the source code for Vim 5.1 produces the
+	    following output:
+
+	    Cscope tag: DEFAULT_TERM
+	       #   line  filename / context / line
+	       1   1009  vim-5.1-gtk/src/term.c <<GLOBAL>>
+			 #define DEFAULT_TERM (char_u *)"amiga"
+	       2   1013  vim-5.1-gtk/src/term.c <<GLOBAL>>
+			 #define DEFAULT_TERM (char_u *)"win32"
+	       3   1017  vim-5.1-gtk/src/term.c <<GLOBAL>>
+			 #define DEFAULT_TERM (char_u *)"pcterm"
+	       4   1021  vim-5.1-gtk/src/term.c <<GLOBAL>>
+			 #define DEFAULT_TERM (char_u *)"ansi"
+	       5   1025  vim-5.1-gtk/src/term.c <<GLOBAL>>
+			 #define DEFAULT_TERM (char_u *)"vt52"
+	       6   1029  vim-5.1-gtk/src/term.c <<GLOBAL>>
+			 #define DEFAULT_TERM (char_u *)"os2ansi"
+	       7   1033  vim-5.1-gtk/src/term.c <<GLOBAL>>
+			 #define DEFAULT_TERM (char_u *)"ansi"
+	       8   1037  vim-5.1-gtk/src/term.c <<GLOBAL>>
+			 # undef DEFAULT_TERM
+	       9   1038  vim-5.1-gtk/src/term.c <<GLOBAL>>
+			 #define DEFAULT_TERM (char_u *)"beos-ansi"
+	      10   1042  vim-5.1-gtk/src/term.c <<GLOBAL>>
+			 #define DEFAULT_TERM (char_u *)"mac-ansi"
+	      11   1335  vim-5.1-gtk/src/term.c <<set_termname>>
+			 term = DEFAULT_TERM;
+	      12   1459  vim-5.1-gtk/src/term.c <<set_termname>>
+			 if (STRCMP(term, DEFAULT_TERM))
+	      13   1826  vim-5.1-gtk/src/term.c <<termcapinit>>
+			 term = DEFAULT_TERM;
+	      14   1833  vim-5.1-gtk/src/term.c <<termcapinit>>
+			 term = DEFAULT_TERM;
+	      15   3635  vim-5.1-gtk/src/term.c <<update_tcap>>
+			 p = find_builtin_term(DEFAULT_TERM);
+	    Enter nr of choice (<CR> to abort):
+
+	    The output shows several pieces of information:
+	    1. The tag number (there are 15 in this example).
+	    2. The line number where the tag occurs.
+	    3. The filename where the tag occurs.
+	    4. The context of the tag (e.g., global, or the function name).
+	    5. The line from the file itself.
+
+    help  : Show a brief synopsis.
+
+	    USAGE   :cs help
+
+						*E260* *E261*
+    kill  : Kill a cscope connection (or kill all cscope connections).
+
+	    USAGE   :cs kill {num|partial_name}
+
+	    To kill a cscope connection, the connection number or a partial
+	    name must be specified.  The partial name is simply any part of
+	    the pathname of the cscope database.  Kill a cscope connection
+	    using the partial name with caution!
+
+	    If the specified connection number is -1, then _ALL_ cscope
+	    connections will be killed.
+
+    reset : Reinit all cscope connections.
+
+	    USAGE   :cs reset
+
+    show  : Show cscope connections.
+
+	    USAGE   :cs show
+
+							*:cstag* *E257* *E562*
+If you use cscope as well as ctags, |:cstag| allows you to search one or
+the other before making a jump.  For example, you can choose to first
+search your cscope database(s) for a match, and if one is not found, then
+your tags file(s) will be searched.  The order in which this happens
+is determined by the value of |csto|.  See |cscope-options| for more
+details.
+
+|:cstag| performs the equivalent of ":cs find g" on the identifier when
+searching through the cscope database(s).
+
+|:cstag| performs the equivalent of |:tjump| on the identifier when searching
+through your tags file(s).
+
+
+==============================================================================
+3. Cscope options					*cscope-options*
+
+Use the |:set| command to set all cscope options.  Ideally, you would do
+this in one of your startup files (e.g., .vimrc).  Some cscope related
+variables are only valid within |.vimrc|.  Setting them after vim has
+started will have no effect!
+
+							*cscopeprg* *csprg*
+'cscopeprg' specifies the command to execute cscope.  The default is
+"cscope".  For example: >
+	:set csprg=/usr/local/bin/cscope
+<
+					    *cscopequickfix* *csqf* *E469*
+{not available when compiled without the |+quickfix| feature}
+'cscopequickfix' specifies whether to use quickfix window to show cscope
+results. This is a list of comma-separated values. Each item consists of
+|cscope-find| command (s, g, d, c, t, e, f or i) and flag (+, - or 0).
+'+' indicates that results must be appended to quickfix window,
+'-' implies previous results clearance, '0' or command absence - don't use
+quickfix. Search is performed from start until first command occurrence.
+The default value is "" (don't use quickfix anyway). The following value
+seems to be useful: "s-,c-,d-,i-,t-,e-".
+
+							*cscopetag* *cst*
+If 'cscopetag' set, the commands ":tag" and CTRL-] as well as "vim -t" will
+always use |:cstag| instead of the default :tag behavior.  Effectively, by
+setting 'cst', you will always search your cscope databases as well as your
+tag files.  The default is off.  Examples: >
+	:set cst
+	:set nocst
+<
+							*cscopetagorder* *csto*
+The value of 'csto' determines the order in which |:cstag| performs a search.
+If 'csto' is set to zero, cscope database(s) are searched first, followed
+by tag file(s) if cscope did not return any matches.  If 'csto' is set to
+one, tag file(s) are searched before cscope database(s).  The default is zero.
+Examples: >
+	:set csto=0
+	:set csto=1
+<
+						*cscopeverbose* *csverb*
+If 'cscopeverbose' is not set (the default), messages will not be printed
+indicating success or failure when adding a cscope database.  Ideally, you
+should reset this option in your |.vimrc| before adding any cscope databases,
+and after adding them, set it.  From then on, when you add more databases
+within Vim, you will get a (hopefully) useful message should the database fail
+to be added.  Examples: >
+	:set csverb
+	:set nocsverb
+<
+						      *cscopepathcomp* *cspc*
+The value of 'cspc' determines how many components of a file's path to
+display.  With the default value of zero the entire path will be displayed.
+The value one will display only the filename with no path.  Other values
+display that many components.  For example: >
+	:set cspc=3
+will display the last 3 components of the file's path, including the file
+name itself.
+
+==============================================================================
+4. How to use cscope in Vim				*cscope-howtouse*
+
+The first thing you need to do is to build a cscope database for your
+source files.  For the most basic case, simply do "cscope -b".  Please
+refer to the cscope man page for more details.
+
+Assuming you have a cscope database, you need to "add" the database to Vim.
+This establishes a cscope "connection" and makes it available for Vim to use.
+You can do this in your .vimrc file, or you can do it manually after starting
+vim.  For example, to add the cscope database "cscope.out", you would do:
+
+	:cs add cscope.out
+
+You can double-check the result of this by executing ":cs show".  This will
+produce output which looks like this:
+
+ # pid	  database name			      prepend path
+ 0 28806  cscope.out			      <none>
+
+Note:
+Because of the Microsoft RTL limitations, Win32 version shows 0 instead
+of the real pid.
+
+Once a cscope connection is established, you can make queries to cscope and
+the results will be printed to you.  Queries are made using the command
+":cs find".  For example:
+
+	:cs find g ALIGN_SIZE
+
+This can get a little cumbersome since one ends up doing a significant
+amount of typing.  Fortunately, there are ways around this by mapping
+shortcut keys.  See |cscope-suggestions| for suggested usage.
+
+If the results return only one match, you will automatically be taken to it.
+If there is more than one match, you will be given a selection screen to pick
+the match you want to go to.  After you have jumped to the new location,
+simply hit Ctrl-T to get back to the previous one.
+
+
+==============================================================================
+5. Limitations						*cscope-limitations*
+
+Cscope support for Vim is only available on systems that support these four
+system calls: fork(), pipe(), execl(), waitpid().  This means it is mostly
+limited to Unix systems.
+
+Additionally Cscope support works for Win32.  For more information and a
+cscope version for Win32 see:
+
+	http://iamphet.nm.ru/cscope/index.html
+
+There are a couple of hard-coded limitations:
+
+    1. The maximum number of cscope connections allowed is 8.  Do you
+    really need more?
+
+    2. Doing a |:tjump| when |:cstag| searches the tag files is not
+    configurable (e.g., you can't do a tselect instead).
+
+==============================================================================
+6. Suggested usage					*cscope-suggestions*
+
+Put these entries in your .vimrc (adjust the pathname accordingly to your
+setup): >
+
+	if has("cscope")
+		set csprg=/usr/local/bin/cscope
+		set csto=0
+		set cst
+		set nocsverb
+		" add any database in current directory
+		if filereadable("cscope.out")
+		    cs add cscope.out
+		" else add database pointed to by environment
+		elseif $CSCOPE_DB != ""
+		    cs add $CSCOPE_DB
+		endif
+		set csverb
+	endif
+
+By setting 'cscopetag', we have effectively replaced all instances of the :tag
+command with :cstag.  This includes :tag, Ctrl-], and "vim -t".  In doing
+this, the regular tag command not only searches your ctags generated tag
+files, but your cscope databases as well.
+
+Some users may want to keep the regular tag behavior and have a different
+shortcut to access :cstag.  For example, one could map Ctrl-_  (underscore)
+to :cstag with the following command: >
+
+	map <C-_> :cstag <C-R>=expand("<cword>")<CR><CR>
+
+A couple of very commonly used cscope queries (using ":cs find") is to
+find all functions calling a certain function and to find all occurrences
+of a particular C symbol.  To do this, you can use these mappings as an
+example: >
+
+	map g<C-]> :cs find 3 <C-R>=expand("<cword>")<CR><CR>
+	map g<C-\> :cs find 0 <C-R>=expand("<cword>")<CR><CR>
+
+These mappings for Ctrl-] (right bracket) and Ctrl-\ (backslash) allow you to
+place your cursor over the function name or C symbol and quickly query cscope
+for any matches.
+
+Or you may use the following scheme, inspired by Vim/Cscope tutorial from
+Cscope Home Page (http://cscope.sourceforge.net/): >
+
+	nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
+	nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
+	nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>
+
+	" Using 'CTRL-spacebar' then a search type makes the vim window
+	" split horizontally, with search result displayed in
+	" the new window.
+
+	nmap <C-Space>s :scs find s <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-Space>g :scs find g <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-Space>c :scs find c <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-Space>t :scs find t <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-Space>e :scs find e <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-Space>f :scs find f <C-R>=expand("<cfile>")<CR><CR>
+	nmap <C-Space>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
+	nmap <C-Space>d :scs find d <C-R>=expand("<cword>")<CR><CR>
+
+	" Hitting CTRL-space *twice* before the search type does a vertical
+	" split instead of a horizontal one
+
+	nmap <C-Space><C-Space>s
+		\:vert scs find s <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-Space><C-Space>g
+		\:vert scs find g <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-Space><C-Space>c
+		\:vert scs find c <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-Space><C-Space>t
+		\:vert scs find t <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-Space><C-Space>e
+		\:vert scs find e <C-R>=expand("<cword>")<CR><CR>
+	nmap <C-Space><C-Space>i
+		\:vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
+	nmap <C-Space><C-Space>d
+		\:vert scs find d <C-R>=expand("<cword>")<CR><CR>
+
+==============================================================================
+7. Cscope availability and information			*cscope-info*
+
+If you do not already have cscope (it did not come with your compiler
+license or OS distribution), then you can download it for free from:
+	http://cscope.sourceforge.net/
+This is released by SCO under the BSD license.
+
+If you want a newer version of cscope, you will probably have to buy it.
+According to the (old) nvi documentation:
+
+	You can buy version 13.3 source with an unrestricted license
+	for $400 from AT&T Software Solutions by calling +1-800-462-8146.
+
+Also you can download cscope 13.x and mlcscope 14.x (multi-lingual cscope
+which supports C, C++, Java, lex, yacc, breakpoint listing, Ingres, and SDL)
+from World-Wide Exptools Open Source packages page:
+	http://www.bell-labs.com/project/wwexptools/packages.html
+
+In Solaris 2.x, if you have the C compiler license, you will also have
+cscope.  Both are usually located under /opt/SUNWspro/bin
+
+SGI developers can also get it.  Search for Cscope on this page:
+	http://freeware.sgi.com/index-by-alpha.html
+	https://toolbox.sgi.com/toolbox/utilities/cscope/
+The second one is for those who have a password for the SGI toolbox.
+
+There is source to an older version of a cscope clone (called "cs") available
+on the net.  Due to various reasons, this is not supported with Vim.
+
+The cscope interface/support for Vim was originally written by
+Andy Kahn <ackahn@netapp.com>.  The original structure (as well as a tiny
+bit of code) was adapted from the cscope interface in nvi.  Please report
+any problems, suggestions, patches, et al., you have for the usage of
+cscope within Vim to him.
+							*cscope-win32*
+For a cscope version for Win32 see: http://iamphet.nm.ru/cscope/index.html
+
+Win32 support was added by Sergey Khorev <khorev@softlab.ru>. Contact him
+if you have Win32-specific issues.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/if_ole.txt b/runtime/doc/if_ole.txt
new file mode 100644
index 0000000..9ced34e
--- /dev/null
+++ b/runtime/doc/if_ole.txt
@@ -0,0 +1,162 @@
+*if_ole.txt*    For Vim version 7.0aa.  Last change: 2003 Jun 19
+
+
+		  VIM REFERENCE MANUAL    by Paul Moore
+
+
+The OLE Interface to Vim				*ole-interface*
+
+1. Activation			|ole-activation|
+2. Methods			|ole-methods|
+3. The "normal" command		|ole-normal|
+4. Registration			|ole-registration|
+5. MS Visual Studio integration	|MSVisualStudio|
+
+{Vi does not have any of these commands}
+
+OLE is only available when compiled with the |+ole| feature.  See
+src/if_ole.INSTALL.
+An alternative is using the client-server communication |clientserver|.
+
+==============================================================================
+1. Activation						*ole-activation*
+
+Vim acts as an OLE automation server, accessible from any automation client,
+for example, Visual Basic, Python, or Perl. The Vim application "name" (its
+"ProgID", in OLE terminology) is "Vim.Application".
+
+Hence, in order to start a Vim instance (or connect to an already running
+instance), code similar to the following should be used:
+
+[Visual Basic] >
+	Dim Vim As Object
+	Set Vim = CreateObject("Vim.Application")
+
+[Python] >
+	from win32com.client.dynamic import Dispatch
+	vim = Dispatch('Vim.Application')
+
+[Perl] >
+	use Win32::OLE;
+	$vim = new Win32::OLE 'Vim.Application';
+
+Vim does not support acting as a "hidden" OLE server, like some other OLE
+Automation servers. When a client starts up an instance of Vim, that instance
+is immediately visible. Simply closing the OLE connection to the Vim instance
+is not enough to shut down the Vim instance - it is necessary to explicitly
+execute a quit command (for example, :qa!, :wqa).
+
+==============================================================================
+2. Methods						*ole-methods*
+
+Vim exposes four methods for use by clients.
+
+							*ole-sendkeys*
+SendKeys(keys)		Execute a series of keys.
+
+This method takes a single parameter, which is a string of keystrokes. These
+keystrokes are executed exactly as if they had been types in at the keyboard.
+Special keys can be given using their <..> names, as for the right hand side
+of a mapping. Note: Execution of the Ex "normal" command is not supported -
+see below |ole-normal|.
+
+Examples (Visual Basic syntax) >
+	Vim.SendKeys "ihello<Esc>"
+	Vim.SendKeys "ma1GV4jy`a"
+
+These examples assume that Vim starts in Normal mode. To force Normal mode,
+start the key sequence with CTRL-\ CTRL-N as in >
+
+	Vim.SendKeys "<C-\><C-N>ihello<Esc>"
+
+CTRL-\ CTRL-N returns Vim to Normal mode, when in Insert or Command-line mode.
+Note that this doesn't work halfway a Vim command
+
+							*ole-eval*
+Eval(expr)		Evaluate an expression.
+
+This method takes a single parameter, which is an expression in Vim's normal
+format (see |expression|).  It returns a string, which is the result of
+evaluating the expression.
+
+Examples (Visual Basic syntax) >
+	Line20 = Vim.Eval("getline(20)")
+	Twelve = Vim.Eval("6 + 6")		' Note this is a STRING
+	Font = Vim.Eval("&guifont")
+<
+							*ole-setforeground*
+SetForeground()		Make the Vim window come to the foreground
+
+This method takes no arguments.  No value is returned.
+
+Example (Visual Basic syntax) >
+	Vim.SetForeground
+<
+
+							*ole-gethwnd*
+GetHwnd()		Return the handle of the Vim window.
+
+This method takes no arguments.  It returns the hwnd of the main Vimwindow.
+You can use this if you are writing something which needs to manipulate the
+Vim window, or to track it in the z-order, etc.
+
+Example (Visual Basic syntax) >
+	Vim_Hwnd = Vim.GetHwnd
+<
+
+==============================================================================
+3. The "normal" command					*ole-normal*
+
+Due to the way Vim processes OLE Automation commands, combined with the method
+of implementation of the ex command :normal, it is not possible to execute the
+:normal command via OLE automation. Any attempt to do so will fail, probably
+harmlessly, although possibly in unpredictable ways.
+
+There is currently no practical way to trap this situation, and users must
+simply be aware of the limitation.
+==============================================================================
+4. Registration					*ole-registration* *E243*
+
+Before Vim will act as an OLE server, it must be registered in the system
+registry. In order to do this, Vim should be run with a single parameter of
+"-register".
+							*-register*  >
+	gvim -register
+
+If gvim with OLE support is run and notices that no Vim OLE server has been
+registered, it will present a dialog and offers you the choice to register by
+clicking "Yes".
+
+In some situations registering is not possible.  This happens when the
+registry is not writable.  If you run into this problem you need to run gvim
+as "Administrator".
+
+Once vim is registered, the application path is stored in the registry. Before
+moving, deleting, or upgrading Vim, the registry entries should be removed
+using the "-unregister" switch.
+							*-unregister*  >
+	gvim -unregister
+
+The OLE mechanism will use the first registered Vim it finds.  If a Vim is
+already running, this one will be used.  If you want to have (several) Vim
+sessions open that should not react to OLE commands, use the non-OLE version,
+and put it in a different directory.  The OLE version should then be put in a
+directory that is not in your normal path, so that typing "gvim" will start
+the non-OLE version.
+
+							*-silent*
+To avoid the message box that pops up to report the result, prepend "-silent":
+>
+	gvim -silent -register
+	gvim -silent -unregister
+
+==============================================================================
+5. MS Visual Studio integration			*MSVisualStudio* *VisVim*
+
+The OLE version can be used to run Vim as the editor in Microsoft Visual
+Studio.  This is called "VisVim".  It is included in the archive that contains
+the OLE version.  The documentation can be found in the runtime directory, the
+README_VisVim.txt file.
+
+==============================================================================
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/if_perl.txt b/runtime/doc/if_perl.txt
new file mode 100644
index 0000000..882cd6a
--- /dev/null
+++ b/runtime/doc/if_perl.txt
@@ -0,0 +1,258 @@
+*if_perl.txt*   For Vim version 7.0aa.  Last change: 2004 May 01
+
+
+		  VIM REFERENCE MANUAL    by Sven Verdoolaege
+					 and Matt Gerassimof
+
+Perl and Vim				*perl* *Perl*
+
+1. Editing Perl files			|perl-editing|
+2. Compiling VIM with Perl interface	|perl-compiling|
+3. Using the Perl interface		|perl-using|
+
+{Vi does not have any of these commands}
+
+The Perl interface only works when Vim was compiled with the |+perl| feature.
+
+==============================================================================
+1. Editing Perl files					*perl-editing*
+
+Vim syntax highlighting supports Perl and POD files.  Vim assumes a file is
+Perl code if the filename has a .pl or .pm suffix. Vim also examines the first
+line of a file, regardless of the filename suffix, to check if a file is a
+Perl script (see scripts.vim in Vim's syntax directory).  Vim assumes a file
+is POD text if the filename has a .POD suffix.
+
+To use tags with Perl, you need a recent version of Exuberant ctags.  Look
+here:
+	http://ctags.sourceforge.net
+
+Alternatively, you can use the Perl script pltags.pl, which is shipped with
+Vim in the $VIMRUNTIME/tools directory.  This script has currently more
+features than Exuberant ctags' Perl support.
+
+==============================================================================
+2. Compiling VIM with Perl interface			*perl-compiling*
+
+To compile Vim with Perl interface, you need Perl 5.004 (or later).  Perl must
+be installed before you compile Vim.  Vim's Perl interface does NOT work with
+the 5.003 version that has been officially released!  It will probably work
+with Perl 5.003_05 and later.
+
+The Perl patches for Vim were made by:
+	Sven Verdoolaege <skimo@breughel.ufsia.ac.be>
+	Matt Gerassimof
+
+Perl for MS-Windows can be found at:
+http://www.perl.com/CPAN/ports/nt/Standard/x86/
+
+==============================================================================
+3. Using the Perl interface				*perl-using*
+
+							*:perl* *:pe*
+:pe[rl] {cmd}		Execute Perl command {cmd}. The current package
+			is "main".
+
+:pe[rl] << {endpattern}
+{script}
+{endpattern}
+			Execute Perl script {script}.
+			{endpattern} must NOT be preceded by any white space.
+			If {endpattern} is omitted, it defaults to a dot '.'
+			like for the |:append| and |:insert| commands.  Using
+			'.' helps when inside a function, because "$i;" looks
+			like the start of an |:insert| command to Vim.
+			This form of the |:perl| command is mainly useful for
+			including perl code in vim scripts.
+			Note: This command doesn't work when the Perl feature
+			wasn't compiled in.  To avoid errors, see
+			|script-here|.
+
+
+Example vim script: >
+
+	function! WhitePearl()
+	perl << EOF
+		VIM::Msg("pearls are nice for necklaces");
+		VIM::Msg("rubys for rings");
+		VIM::Msg("pythons for bags");
+		VIM::Msg("tcls????");
+	EOF
+	endfunction
+<
+
+							*:perldo* *:perld*
+:[range]perld[o] {cmd}	Execute Perl command {cmd} for each line in the
+			[range], with $_ being set to the text of each line in
+			turn, without a trailing <EOL>. Setting $_ will change
+			the text, but note that it is not possible to add or
+			delete lines using this command.
+			The default for [range] is the whole file: "1,$".
+
+Here are some things you can try: >
+
+  :perl $a=1
+  :perldo $_ = reverse($_);1
+  :perl VIM::Msg("hello")
+  :perl $line = $curbuf->Get(42)
+<
+							*E299*
+Executing Perl commands in the |sandbox| is limited.  ":perldo" will not be
+possible at all.  ":perl" will be evaluated in the Safe environment, if
+possible.
+
+
+							*perl-overview*
+Here is an overview of the functions that are available to Perl: >
+
+  :perl VIM::Msg("Text")		# displays a message
+  :perl VIM::Msg("Error", "ErrorMsg")	# displays an error message
+  :perl VIM::Msg("remark", "Comment")	# displays a highlighted message
+  :perl VIM::SetOption("ai")		# sets a vim option
+  :perl $nbuf = VIM::Buffers()		# returns the number of buffers
+  :perl @buflist = VIM::Buffers()	# returns array of all buffers
+  :perl $mybuf = (VIM::Buffers('qq.c'))[0] # returns buffer object for 'qq.c'
+  :perl @winlist = VIM::Windows()	# returns array of all windows
+  :perl $nwin = VIM::Windows()		# returns the number of windows
+  :perl ($success, $v) = VIM::Eval('&path') # $v: option 'path', $success: 1
+  :perl ($success, $v) = VIM::Eval('&xyz')  # $v: '' and $success: 0
+  :perl $v = VIM::Eval('expand("<cfile>")') # expands <cfile>
+  :perl $curwin->SetHeight(10)		# sets the window height
+  :perl @pos = $curwin->Cursor()	# returns (row, col) array
+  :perl @pos = (10, 10)
+  :perl $curwin->Cursor(@pos)		# sets cursor to @pos
+  :perl $curwin->Cursor(10,10)		# sets cursor to row 10 col 10
+  :perl $mybuf = $curwin->Buffer()	# returns the buffer object for window
+  :perl $curbuf->Name()			# returns buffer name
+  :perl $curbuf->Number()		# returns buffer number
+  :perl $curbuf->Count()		# returns the number of lines
+  :perl $l = $curbuf->Get(10)		# returns line 10
+  :perl @l = $curbuf->Get(1 .. 5)	# returns lines 1 through 5
+  :perl $curbuf->Delete(10)		# deletes line 10
+  :perl $curbuf->Delete(10, 20)		# delete lines 10 through 20
+  :perl $curbuf->Append(10, "Line")	# appends a line
+  :perl $curbuf->Append(10, "Line1", "Line2", "Line3") # appends 3 lines
+  :perl @l = ("L1", "L2", "L3")
+  :perl $curbuf->Append(10, @l)		# appends L1, L2 and L3
+  :perl $curbuf->Set(10, "Line")	# replaces line 10
+  :perl $curbuf->Set(10, "Line1", "Line2")	# replaces lines 10 and 11
+  :perl $curbuf->Set(10, @l)		# replaces 3 lines
+<
+							*perl-Msg*
+VIM::Msg({msg}, {group}?)
+			Displays the message {msg}.  The optional {group}
+			argument specifies a highlight group for Vim to use
+			for the message.
+
+							*perl-SetOption*
+VIM::SetOption({arg})	Sets a vim option.  {arg} can be any argument that the
+			":set" command accepts.  Note that this means that no
+			spaces are allowed in the argument!  See |:set|.
+
+							*perl-Buffers*
+VIM::Buffers([{bn}...])	With no arguments, returns a list of all the buffers
+			in an array context or returns the number of buffers
+			in a scalar context.  For a list of buffer names or
+			numbers {bn}, returns a list of the buffers matching
+			{bn}, using the same rules as Vim's internal
+			|bufname()| function.
+
+							*perl-Windows*
+VIM::Windows([{wn}...])	With no arguments, returns a list of all the windows
+			in an array context or returns the number of windows
+			in a scalar context.  For a list of window numbers
+			{wn}, returns a list of the windows with those
+			numbers.
+
+							*perl-DoCommand*
+VIM::DoCommand({cmd})	Executes Ex command {cmd}.
+
+							*perl-Eval*
+VIM::Eval({expr})	Evaluates {expr} and returns (success, val).
+			success=1 indicates that val contains the value of
+			{expr}; success=0 indicates a failure to evaluate
+			the expression.  '@x' returns the contents of register
+			x, '&x' returns the value of option x, 'x' returns the
+			value of internal |variables| x, and '$x' is equivalent
+			to perl's $ENV{x}.  All |functions| accessible from
+			the command-line are valid for {expr}.
+
+							*perl-SetHeight*
+Window->SetHeight({height})
+			Sets the Window height to {height}, within screen
+			limits.
+
+							*perl-GetCursor*
+Window->Cursor({row}?, {col}?)
+			With no arguments, returns a (row, col) array for the
+			current cursor position in the Window.  With {row} and
+			{col} arguments, sets the Window's cursor position to
+			{row} and {col}.  Note that {col} is numbered from 0,
+			Perl-fashion, and thus is one less than the value in
+			Vim's ruler.
+
+Window->Buffer()					*perl-Buffer*
+			Returns the Buffer object corresponding to the given
+			Window.
+
+							*perl-Name*
+Buffer->Name()		Returns the filename for the Buffer.
+
+							*perl-Number*
+Buffer->Number()	Returns the number of the Buffer.
+
+							*perl-Count*
+Buffer->Count()		Returns the number of lines in the Buffer.
+
+							*perl-Get*
+Buffer->Get({lnum}, {lnum}?, ...)
+			Returns a text string of line {lnum} in the Buffer
+			for each {lnum} specified. An array can be passed
+			with a list of {lnum}'s specified.
+
+							*perl-Delete*
+Buffer->Delete({lnum}, {lnum}?)
+			Deletes line {lnum} in the Buffer.  With the second
+			{lnum}, deletes the range of lines from the first
+			{lnum} to the second {lnum}.
+
+							*perl-Append*
+Buffer->Append({lnum}, {line}, {line}?, ...)
+			Appends each {line} string after Buffer line {lnum}.
+			The list of {line}s can be an array.
+
+							*perl-Set*
+Buffer->Set({lnum}, {line}, {line}?, ...)
+			Replaces one or more Buffer lines with specified
+			{lines}s, starting at Buffer line {lnum}.  The list of
+			{line}s can be an array.  If the arguments are
+			invalid, replacement does not occur.
+
+$main::curwin
+			The current window object.
+
+$main::curbuf
+			The current buffer object.
+
+
+							*script-here*
+When using a script language in-line, you might want to skip this when the
+language isn't supported.  But this mechanism doesn't work: >
+   if has('perl')
+     perl << EOF
+       this will NOT work!
+   EOF
+   endif
+Instead, put the Perl/Python/Ruby/etc. command in a function and call that
+function: >
+    if has('perl')
+      function DefPerl()
+	perl << EOF
+	  this works
+    EOF
+      endfunction
+      call DefPerl()
+    endif
+Note that "EOF" must be at the start of the line.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/if_pyth.txt b/runtime/doc/if_pyth.txt
new file mode 100644
index 0000000..df75fcf
--- /dev/null
+++ b/runtime/doc/if_pyth.txt
@@ -0,0 +1,299 @@
+*if_pyth.txt*   For Vim version 7.0aa.  Last change: 2004 Feb 28
+
+
+		  VIM REFERENCE MANUAL    by Paul Moore
+
+
+The Python Interface to Vim				*python* *Python*
+
+1. Commands			|python-commands|
+2. The vim module		|python-vim|
+3. Buffer objects		|python-buffer|
+4. Range objects		|python-range|
+5. Window objects		|python-window|
+
+{Vi does not have any of these commands}
+
+The Python interface is available only when Vim was compiled with the
+|+python| feature.
+
+==============================================================================
+1. Commands						*python-commands*
+
+					*:python* *:py* *E205* *E263* *E264*
+:[range]py[thon] {stmt}
+			Execute Python statement {stmt}.
+
+:[range]py[thon] << {endmarker}
+{script}
+{endmarker}
+			Execute Python script {script}.
+			Note: This command doesn't work when the Python
+			feature wasn't compiled in.  To avoid errors, see
+			|script-here|.
+
+{endmarker} must NOT be preceded by any white space.  If {endmarker} is
+omitted from after the "<<", a dot '.' must be used after {script}, like
+for the |:append| and |:insert| commands.
+This form of the |:python| command is mainly useful for including python code
+in Vim scripts.
+
+Example: >
+	function! IcecreamInitialize()
+	python << EOF
+	class StrawberryIcecream:
+		def __call__(self):
+			print 'EAT ME'
+	EOF
+	endfunction
+<
+Note: Python is very sensitive to the indenting.  Also make sure the "class"
+line and "EOF" do not have any indent.
+
+							*:pyfile* *:pyf*
+:[range]pyf[ile] {file}
+			Execute the Python script in {file}.  The whole
+			argument is used as a single file name.  {not in Vi}
+
+Both of these commands do essentially the same thing - they execute a piece of
+Python code, with the "current range" |python-range| set to the given line
+range.
+
+In the case of :python, the code to execute is in the command-line.
+In the case of :pyfile, the code to execute is the contents of the given file.
+
+Python commands cannot be used in the |sandbox|.
+
+To pass arguments you need to set sys.argv[] explicitly.  Example: >
+
+	:python import sys
+	:python sys.argv = ["foo", "bar"]
+	:pyfile myscript.py
+
+Here are some examples					*python-examples*  >
+
+	:python from vim import *
+	:python from string import upper
+	:python current.line = upper(current.line)
+	:python print "Hello"
+	:python str = current.buffer[42]
+
+(Note that changes - like the imports - persist from one command to the next,
+just like in the Python interpreter.)
+
+==============================================================================
+2. The vim module					*python-vim*
+
+Python code gets all of its access to vim (with one exception - see
+|python-output| below) via the "vim" module. The vim module implements two
+methods, three constants, and one error object.  You need to import the vim
+module before using it: >
+	:python import vim
+
+Overview >
+	print "Hello"			# displays a message
+	vim.command(cmd)		# execute an ex command
+	w = vim.windows[n]		# gets window "n"
+	cw = vim.current.window		# gets the current window
+	b = vim.buffers[n]		# gets buffer "n"
+	cb = vim.current.buffer		# gets the current buffer
+	w.height = lines		# sets the window height
+	w.cursor = (row, col)		# sets the window cursor position
+	pos = w.cursor			# gets a tuple (row, col)
+	name = b.name			# gets the buffer file name
+	line = b[n]			# gets a line from the buffer
+	lines = b[n:m]			# gets a list of lines
+	num = len(b)			# gets the number of lines
+	b[n] = str			# sets a line in the buffer
+	b[n:m] = [str1, str2, str3]	# sets a number of lines at once
+	del b[n]			# deletes a line
+	del b[n:m]			# deletes a number of lines
+
+
+Methods of the "vim" module
+
+vim.command(str)					*python-command*
+	Executes the vim (ex-mode) command str. Returns None.
+	Examples: >
+		vim.command("set tw=72")
+		vim.command("%s/aaa/bbb/g")
+<	The following definition executes Normal mode commands: >
+		def normal(str):
+			vim.command("normal "+str)
+		# Note the use of single quotes to delimit a string containing
+		# double quotes
+		normal('"a2dd"aP')
+<								*E659*
+	The ":python" command cannot be used recursively with Python 2.2 and
+	older.  This only works with Python 2.3 and later: >
+		:python vim.command("python print 'Hello again Python'")
+
+vim.eval(str)						*python-eval*
+	Evaluates the expression str using the vim internal expression
+	evaluator (see |expression|). Returns the expression result as a
+	string.
+	Examples: >
+		text_width = vim.eval("&tw")
+		str = vim.eval("12+12")		# NB result is a string! Use
+						# string.atoi() to convert to
+						# a number.
+
+Error object of the "vim" module
+
+vim.error						*python-error*
+	Upon encountering a Vim error, Python raises an exception of type
+	vim.error.
+	Example: >
+		try:
+			vim.command("put a")
+		except vim.error:
+			# nothing in register a
+
+Constants of the "vim" module
+
+	Note that these are not actually constants - you could reassign them.
+	But this is silly, as you would then lose access to the vim objects
+	to which the variables referred.
+
+vim.buffers						*python-buffers*
+	A sequence object providing access to the list of vim buffers. The
+	object supports the following operations: >
+		b = vim.buffers[i]	# Indexing (read-only)
+		b in vim.buffers	# Membership test
+		n = len(vim.buffers)	# Number of elements
+		for b in vim.buffers:	# Sequential access
+<
+vim.windows						*python-windows*
+	A sequence object providing access to the list of vim windows. The
+	object supports the following operations: >
+		w = vim.windows[i]	# Indexing (read-only)
+		w in vim.windows	# Membership test
+		n = len(vim.windows)	# Number of elements
+		for w in vim.windows:	# Sequential access
+<
+vim.current						*python-current*
+	An object providing access (via specific attributes) to various
+	"current" objects available in vim:
+		vim.current.line	The current line (RW)		String
+		vim.current.buffer	The current buffer (RO)		Buffer
+		vim.current.window	The current window (RO)		Window
+		vim.current.range	The current line range (RO)	Range
+
+	The last case deserves a little explanation. When the :python or
+	:pyfile command specifies a range, this range of lines becomes the
+	"current range". A range is a bit like a buffer, but with all access
+	restricted to a subset of lines. See |python-range| for more details.
+
+
+Output from Python					*python-output*
+	Vim displays all Python code output in the Vim message area.  Normal
+	output appears as information messages, and error output appears as
+	error messages.
+
+	In implementation terms, this means that all output to sys.stdout
+	(including the output from print statements) appears as information
+	messages, and all output to sys.stderr (including error tracebacks)
+	appears as error messages.
+
+							*python-input*
+	Input (via sys.stdin, including input() and raw_input()) is not
+	supported, and may cause the program to crash. This should probably be
+	fixed.
+
+==============================================================================
+3. Buffer objects					*python-buffer*
+
+Buffer objects represent vim buffers. You can obtain them in a number of ways:
+	- via vim.current.buffer (|python-current|)
+	- from indexing vim.buffers (|python-buffers|)
+	- from the "buffer" attribute of a window (|python-window|)
+
+Buffer objects have one read-only attribute - name - the full file name for
+the buffer. They also have three methods (append, mark, and range; see below).
+
+You can also treat buffer objects as sequence objects. In this context, they
+act as if they were lists (yes, they are mutable) of strings, with each
+element being a line of the buffer. All of the usual sequence operations,
+including indexing, index assignment, slicing and slice assignment, work as
+you would expect. Note that the result of indexing (slicing) a buffer is a
+string (list of strings). This has one unusual consequence - b[:] is different
+from b. In particular, "b[:] = None" deletes the whole of the buffer, whereas
+"b = None" merely updates the variable b, with no effect on the buffer.
+
+Buffer indexes start at zero, as is normal in Python. This differs from vim
+line numbers, which start from 1. This is particularly relevant when dealing
+with marks (see below) which use vim line numbers.
+
+The buffer object methods are:
+	b.append(str)	Append a line to the buffer
+	b.append(list)	Append a list of lines to the buffer
+			Note that the option of supplying a list of strings to
+			the append method differs from the equivalent method
+			for Python's built-in list objects.
+	b.mark(name)	Return a tuple (row,col) representing the position
+			of the named mark (can also get the []"<> marks)
+	b.range(s,e)	Return a range object (see |python-range|) which
+			represents the part of the given buffer between line
+			numbers s and e |inclusive|.
+
+Examples (assume b is the current buffer) >
+	print b.name		# write the buffer file name
+	b[0] = "hello!!!"	# replace the top line
+	b[:] = None		# delete the whole buffer
+	del b[:]		# delete the whole buffer (same as above)
+	b[0:0] = [ "a line" ]	# add a line at the top
+	del b[2]		# delete a line (the third)
+	b.append("bottom")	# add a line at the bottom
+	n = len(b)		# number of lines
+	(row,col) = b.mark('a') # named mark
+	r = b.range(1,5)	# a sub-range of the buffer
+
+==============================================================================
+4. Range objects					*python-range*
+
+Range objects represent a part of a vim buffer. You can obtain them in a
+number of ways:
+	- via vim.current.range (|python-current|)
+	- from a buffer's range() method (|python-buffer|)
+
+A range object is almost identical in operation to a buffer object. However,
+all operations are restricted to the lines within the range (this line range
+can, of course, change as a result of slice assignments, line deletions, or
+the range.append() method).
+
+The range object attributes are:
+	r.start		Index of first line into the buffer
+	r.end		Index of last line into the buffer
+
+The range object methods are:
+	r.append(str)	Append a line to the range
+	r.append(list)	Append a list of lines to the range
+			Note that the option of supplying a list of strings to
+			the append method differs from the equivalent method
+			for Python's built-in list objects.
+
+Example (assume r is the current range):
+	# Send all lines in a range to the default printer
+	vim.command("%d,%dhardcopy!" % (r.start+1,r.end+1))
+
+==============================================================================
+5. Window objects					*python-window*
+
+Window objects represent vim windows. You can obtain them in a number of ways:
+	- via vim.current.window (|python-current|)
+	- from indexing vim.windows (|python-windows|)
+
+You can manipulate window objects only through their attributes. They have no
+methods, and no sequence or other interface.
+
+Window attributes are:
+	buffer (read-only)	The buffer displayed in this window
+	cursor (read-write)	The current cursor position in the window
+				This is a tuple, (row,col).
+	height (read-write)	The window height, in rows
+	width (read-write)	The window width, in columns
+The height attribute is writable only if the screen is split horizontally.
+The width attribute is writable only if the screen is split vertically.
+
+==============================================================================
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/if_ruby.txt b/runtime/doc/if_ruby.txt
new file mode 100644
index 0000000..e8d09f6
--- /dev/null
+++ b/runtime/doc/if_ruby.txt
@@ -0,0 +1,175 @@
+*if_ruby.txt*   For Vim version 7.0aa.  Last change: 2004 Mar 14
+
+
+		  VIM REFERENCE MANUAL    by Shugo Maeda
+
+The Ruby Interface to Vim				*ruby* *Ruby*
+
+
+1. Commands			|ruby-commands|
+2. The VIM module		|ruby-vim|
+3. VIM::Buffer objects		|ruby-buffer|
+4. VIM::Window objects		|ruby-window|
+5. Global variables		|ruby-globals|
+
+{Vi does not have any of these commands}
+			*E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273*
+
+The Ruby interface only works when Vim was compiled with the |+ruby| feature.
+
+The home page for ruby is http://www.ruby-lang.org/.  You can find links for
+downloading Ruby there.
+
+==============================================================================
+1. Commands						*ruby-commands*
+
+							*:ruby* *:rub*
+:rub[y] {cmd}		Execute Ruby command {cmd}.
+
+:rub[y] << {endpattern}
+{script}
+{endpattern}
+			Execute Ruby script {script}.
+			{endpattern} must NOT be preceded by any white space.
+			If {endpattern} is omitted, it defaults to a dot '.'
+			like for the |:append| and |:insert| commands. This
+			form of the |:ruby| command is mainly useful for
+			including ruby code in vim scripts.
+			Note: This command doesn't work when the Ruby feature
+			wasn't compiled in.  To avoid errors, see
+			|script-here|.
+
+Example Vim script: >
+
+	function! RedGem()
+	ruby << EOF
+	class Garnet
+		def initialize(s)
+			@buffer = VIM::Buffer.current
+			vimputs(s)
+		end
+		def vimputs(s)
+			@buffer.append(@buffer.count,s)
+		end
+	end
+	gem = Garnet.new("pretty")
+	EOF
+	endfunction
+<
+
+						*:rubydo* *:rubyd* *E265*
+:[range]rubyd[o] {cmd}	Evaluate Ruby command {cmd} for each line in the
+			[range], with $_ being set to the text of each line in
+			turn, without a trailing <EOL>. Setting $_ will change
+			the text, but note that it is not possible to add or
+			delete lines using this command.
+			The default for [range] is the whole file: "1,$".
+
+							*:rubyfile* *:rubyf*
+:rubyf[ile] {file}	Execute the Ruby script in {file}.  This is the same as
+			":ruby load 'file'", but allows file name completion.
+
+Executing Ruby commands is not possible in the |sandbox|.
+
+==============================================================================
+2. The VIM module					*ruby-vim*
+
+Ruby code gets all of its access to vim via the "VIM" module.
+
+Overview >
+	print "Hello"			# displays a message
+	VIM.command(cmd)		# execute an ex command
+	num = VIM::Window.count		# gets the number of windows
+	w = VIM::Window[n]		# gets window "n"
+	cw = VIM::Window.current	# gets the current window
+	num = VIM::Buffer.count		# gets the number of buffers
+	b = VIM::Buffer[n]		# gets buffer "n"
+	cb = VIM::Buffer.current	# gets the current buffer
+	w.height = lines		# sets the window height
+	w.cursor = [row, col]		# sets the window cursor position
+	pos = w.cursor			# gets an array [row, col]
+	name = b.name			# gets the buffer file name
+	line = b[n]			# gets a line from the buffer
+	num = b.count			# gets the number of lines
+	b[n] = str			# sets a line in the buffer
+	b.delete(n)			# deletes a line
+	b.append(n, str)		# appends a line after n
+<
+
+Module Functions:
+
+							*ruby-message*
+VIM::message({msg})
+	Displays the message {msg}.
+
+							*ruby-set_option*
+VIM::set_option({arg})
+	Sets a vim option.  {arg} can be any argument that the ":set" command
+	accepts.  Note that this means that no spaces are allowed in the
+	argument!  See |:set|.
+
+							*ruby-command*
+VIM::command({cmd})
+	Executes Ex command {cmd}.
+
+							*ruby-evaluate*
+VIM::evaluate({expr})
+	Evaluates {expr} using the vim internal expression evaluator (see
+	|expression|). Returns the expression result as a string.
+
+==============================================================================
+3. VIM::Buffer objects					*ruby-buffer*
+
+VIM::Buffer objects represent vim buffers.
+
+Class Methods:
+
+current		Returns the current buffer object.
+count		Returns the number of buffers.
+self[{n}]	Returns the buffer object for the number {n}. The first number
+		is 0.
+
+Methods:
+
+name		Returns the name of the buffer.
+number		Returns the number of the buffer.
+count		Returns the number of lines.
+length		Returns the number of lines.
+self[{n}]	Returns a line from the buffer. {n} is the line number.
+self[{n}] = {str}
+		Sets a line in the buffer. {n} is the line number.
+delete({n})	Deletes a line from the buffer. {n} is the line number.
+append({n}, {str})
+		Appends a line after the line {n}.
+
+==============================================================================
+4. VIM::Window objects					*ruby-window*
+
+VIM::Window objects represent vim windows.
+
+Class Methods:
+
+current		Returns the current window object.
+count		Returns the number of windows.
+self[{n}]	Returns the window object for the number {n}. The first number
+		is 0.
+
+Methods:
+
+buffer		Returns the buffer displayed in the window.
+height		Returns the height of the window.
+height = {n}	Sets the window height to {n}.
+cursor		Returns a [row, col] array for the cursor position.
+cursor = [{row}, {col}]
+		Sets the cursor position to {row} and {col}.
+
+==============================================================================
+4. Global variables					*ruby-globals*
+
+There are two global variables.
+
+$curwin		The current window object.
+$curbuf		The current buffer object.
+
+==============================================================================
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/if_sniff.txt b/runtime/doc/if_sniff.txt
new file mode 100644
index 0000000..12b34c4
--- /dev/null
+++ b/runtime/doc/if_sniff.txt
@@ -0,0 +1,95 @@
+*if_sniff.txt*	For Vim version 7.0aa.  Last change: 2001 Sep 03
+
+
+		  VIM REFERENCE MANUAL
+		by Anton Leherbauer (toni@takefive.co.at)
+
+
+SNiFF+ and Vim				    *sniff*
+
+1. Introduction				    |sniff-intro|
+2. Commands				    |sniff-commands|
+3. Compiling Vim with SNiFF+ interface	    |sniff-compiling|
+
+{Vi does not have any of these commands}  *E275* *E274* *E276* *E278* *E279*
+
+The SNiFF+ interface only works, when Vim was compiled with the |+sniff|
+feature.
+
+==============================================================================
+1. Introduction					*sniff-intro*
+
+The following features for the use with SNiFF+ are available:
+
+   * Vim can be used for all editing requests
+   * SNiFF+ recognizes and updates all browsers when a file is saved in Vim
+   * SNiFF+ commands can be issued directly from Vim
+
+How to use Vim with SNiFF+
+   1. Make sure SNiFF+ is running.
+   2. In the Editor view of the Preferences dialog set the Field named
+      'External Editor' to 'Emacs/Vim'.
+   4. Start Vim
+   5. Connect to SNiFF+ (:sniff connect)
+
+Once a connection is established, SNiFF+ uses Vim for all requests to show or
+edit source code.  On the other hand, you can send queries to SNiFF+ with the
+:sniff command.
+
+==============================================================================
+2. Commands				    *sniff-commands*
+
+			    *:sniff* *:sni*
+:sni[ff] request [symbol]   Send request to sniff with optional symbol.
+			    {not in Vi}
+:sni[ff]		    Display all possible requests and the connection
+			    status
+
+Most requests require a symbol (identifier) as parameter. If it is omitted,
+Vim will use the current word under the cursor.
+The available requests are listed below:
+
+request		      mapping	description
+-------------------------------------------------------------------------------
+connect			sc	Establish connection with SNiFF+.
+				Make sure SNiFF+ is prepared for this in the
+				Preferences
+disconnect		sq	Disconnect from SNiFF+. You can reconnect any
+				time with :sniff connect (or 'sc')
+toggle			st	Toggle between implementation
+				and definition file
+find-symbol		sf	Load the symbol into a Symbol Browser
+browse-class		sb	Loads the class into a Class Browser
+superclass		ss	Edit superclass of symbol
+overridden		so	Edit overridden method of symbol
+retrieve-file		srf	Retrieve symbol in current file
+retrieve-project	srp	Retrieve symbol in current project
+retrieve-all-projects	srP	Retrieve symbol in all projects
+retrieve-next		sR	Retrieve symbol using current Retriever
+				settings
+goto-symbol		sg	Goto definition or implementation of symbol
+hierarchy		sh	Load symbol into the Hierarchy Browser
+restr-hier		sH	same as above but show only related classes
+xref-to			sxt	Start a refers-to query on symbol and
+				load the results into the Cross Referencer
+xref-by			sxb	Start a referred-by query on symbol
+xref-has		sxh	Start a refers-to components query on symbol
+xref-used-by		sxu	Start a referred-by as component query on
+				symbol
+show-docu		sd	Show documentation of symbol
+gen-docu		sD	Generate documentation of symbol
+
+The mappings are defined in a file 'sniff.vim', which is part of every SNiFF+
+product ($SNIFF_DIR/config/sniff.vim). This file is sourced whenever Vim
+connects to SNiFF+.
+
+==============================================================================
+3. Compiling Vim with SNiFF+ interface		*sniff-compiling*
+
+To compile Vim with SNiFF+ support, you need two source files of the extra
+archive: if_sniff.c and if_sniff.h.
+On Unix: Edit the Makefile and uncomment the line "--enable-sniff".  Or run
+configure manually with this argument.
+On NT: Specify SNIFF=yes with your make command.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/if_tcl.txt b/runtime/doc/if_tcl.txt
new file mode 100644
index 0000000..b386bed
--- /dev/null
+++ b/runtime/doc/if_tcl.txt
@@ -0,0 +1,512 @@
+*if_tcl.txt*    For Vim version 7.0aa.  Last change: 2004 Jan 17
+
+
+		  VIM REFERENCE MANUAL    by Ingo Wilken
+
+
+The Tcl Interface to Vim				*tcl* *Tcl* *TCL*
+
+1. Commands				|tcl-ex-commands|
+2. Tcl commands				|tcl-commands|
+3. Tcl variables			|tcl-variables|
+4. Tcl window commands			|tcl-window-cmds|
+5. Tcl buffer commands			|tcl-buffer-cmds|
+6. Miscellaneous; Output from Tcl	|tcl-misc| |tcl-output|
+7. Known bugs & problems		|tcl-bugs|
+8. Examples				|tcl-examples|
+
+{Vi does not have any of these commands} *E280* *E281*
+
+The Tcl interface only works when Vim was compiled with the |+tcl| feature.
+
+WARNING: There are probably still some bugs.  Please send bug reports,
+comments, ideas etc to <Ingo.Wilken@informatik.uni-oldenburg.de>
+
+==============================================================================
+1. Commands				*tcl-ex-commands* *E571* *E572*
+
+							*:tcl* *:tc*
+:tc[l] {cmd}		Execute Tcl command {cmd}.
+
+:[range]tc[l] << {endmarker}
+{script}
+{endmarker}
+			Execute Tcl script {script}.
+			Note: This command doesn't work when the Tcl feature
+			wasn't compiled in.  To avoid errors, see
+			|script-here|.
+
+{endmarker} must NOT be preceded by any white space. If {endmarker} is
+omitted from after the "<<", a dot '.' must be used after {script}, like for
+the |:append| and |:insert| commands.
+This form of the |:tcl| command is mainly useful for including tcl code in Vim
+scripts.
+
+Example: >
+	function! DefineDate()
+	    tcl << EOF
+	    proc date {} {
+		return [clock format [clock seconds]]
+	    }
+	EOF
+	endfunction
+<
+
+							*:tcldo* *:tcld*
+:[range]tcld[o] {cmd}	Execute Tcl command {cmd} for each line in [range]
+			with the variable "line" being set to the text of each
+			line in turn, and "lnum" to the line number.  Setting
+			"line" will change the text, but note that it is not
+			possible to add or delete lines using this command.
+			If {cmd} returns an error, the command is interrupted.
+			The default for [range] is the whole file: "1,$".
+			See |tcl-var-line| and |tcl-var-lnum|.  {not in Vi}
+
+							*:tclfile* *:tclf*
+:tclf[ile] {file}	Execute the Tcl script in {file}.  This is the same as
+			":tcl source {file}", but allows file name completion.
+			{not in Vi}
+
+
+Note that Tcl objects (like variables) persist from one command to the next,
+just as in the Tcl shell.
+
+Executing Tcl commands is not possible in the |sandbox|.
+
+==============================================================================
+2. Tcl commands						*tcl-commands*
+
+Tcl code gets all of its access to vim via commands in the "::vim" namespace.
+The following commands are implemented: >
+
+	::vim::beep			# Guess.
+	::vim::buffer {n}		# Create Tcl command for one buffer.
+	::vim::buffer list		# Create Tcl commands for all buffers.
+	::vim::command [-quiet] {cmd}	# Execute an ex command.
+	::vim::expr {expr}		# Use Vim's expression evaluator.
+	::vim::option {opt}		# Get vim option.
+	::vim::option {opt} {val}	# Set vim option.
+	::vim::window list		# Create Tcl commands for all windows.
+
+Commands:
+	::vim::beep					*tcl-beep*
+	Honk.  Does not return a result.
+
+	::vim::buffer {n}				*tcl-buffer*
+	::vim::buffer exists {n}
+	::vim::buffer list
+	Provides access to vim buffers.  With an integer argument, creates a
+	buffer command (see |tcl-buffer-cmds|) for the buffer with that
+	number, and returns its name as the result.  Invalid buffer numbers
+	result in a standard Tcl error.  To test for valid buffer numbers,
+	vim's internal functions can be used: >
+		set nbufs [::vim::expr bufnr("$")]
+		set isvalid [::vim::expr "bufexists($n)"]
+<	The "list" option creates a buffer command for each valid buffer, and
+	returns a list of the command names as the result.
+	Example: >
+		set bufs [::vim::buffer list]
+		foreach b $bufs { $b append end "The End!" }
+<	The "exists" option checks if a buffer with the given number exists.
+	Example: >
+		if { [::vim::buffer exists $n] } { ::vim::command ":e #$n" }
+<	This command might be replaced by a variable in future versions.
+	See also |tcl-var-current| for the current buffer.
+
+	::vim::command {cmd}				*tcl-command*
+	::vim::command -quiet {cmd}
+	Execute the vim (ex-mode) command {cmd}.  Any ex command that affects
+	a buffer or window uses the current buffer/current window.  Does not
+	return a result other than a standard Tcl error code.  After this
+	command is completed, the "::vim::current" variable is updated.
+	The "-quiet" flag suppresses any error messages from vim.
+	Examples: >
+		::vim::command "set ts=8"
+		::vim::command "%s/foo/bar/g"
+<	To execute normal-mode commands, use "normal" (see |:normal|): >
+		set cmd "jj"
+		::vim::command "normal $cmd"
+<	See also |tcl-window-command| and |tcl-buffer-command|.
+
+	::vim::expr {expr}				*tcl-expr*
+	Evaluates the expression {expr} using vim's internal expression
+	evaluator (see |expression|).   Any expression that queries a buffer
+	or window property uses the current buffer/current window.  Returns
+	the result as a string.
+	Examples: >
+		set perl_available [::vim::expr has("perl")]
+<	See also |tcl-window-expr| and |tcl-buffer-expr|.
+
+	::vim::option {opt}				*tcl-option*
+	::vim::option {opt} {value}
+	Without second argument, queries the value of a vim option.  With this
+	argument, sets the vim option to {value}, and returns the previous
+	value as the result.  Any options that are marked as 'local to buffer'
+	or 'local to window' affect the current buffer/current window.  The
+	global value is not changed, use the ":set" command for that.  For
+	boolean options, {value} should be "0" or "1", or any of the keywords
+	"on", "off" or "toggle".  See |option-summary| for a list of options.
+	Example: >
+		::vim::option ts 8
+<	See also |tcl-window-option| and |tcl-buffer-option|.
+
+	::vim::window {option}				*tcl-window*
+	Provides access to vim windows.  Currently only the "list" option is
+	implemented. This creates a window command (see |tcl-window-cmds|) for
+	each window, and returns a list of the command names as the result.
+	Example: >
+		set wins [::vim::window list]
+		foreach w $wins { $w height 4 }
+<	This command might be replaced by a variable in future versions.
+	See also |tcl-var-current| for the current window.
+
+==============================================================================
+3. Tcl variables					*tcl-variables*
+
+The ::vim namespace contains a few variables.  These are created when the Tcl
+interpreter is called from vim and set to current values. >
+
+	::vim::current		# array containing "current" objects
+	::vim::lbase		# number of first line
+	::vim::range		# array containing current range numbers
+	line			# current line as a string (:tcldo only)
+	lnum			# current line number (:tcldo only)
+
+Variables:
+	::vim::current					*tcl-var-current*
+	This is an array providing access to various "current" objects
+	available in vim.  The contents of this array are updated after
+	"::vim::command" is called, as this might change vim's current
+	settings (e.g., by deleting the current buffer).
+	The "buffer" element contains the name of the buffer command for the
+	current buffer.  This can be used directly to invoke buffer commands
+	(see |tcl-buffer-cmds|).  This element is read-only.
+	Example: >
+		$::vim::current(buffer) insert begin "Hello world"
+<	The "window" element contains the name of the window command for the
+	current window.  This can be used directly to invoke window commands
+	(see |tcl-window-cmds|).  This element is read-only.
+	Example: >
+		$::vim::current(window) height 10
+<
+	::vim::lbase					*tcl-var-lbase*
+	This variable controls how Tcl treats line numbers.  If it is set to
+	'1', then lines and columns start at 1.  This way, line numbers from
+	Tcl commands and vim expressions are compatible.  If this variable is
+	set to '0', then line numbers and columns start at 0 in Tcl.  This is
+	useful if you want to treat a buffer as a Tcl list or a line as a Tcl
+	string and use standard Tcl commands that return an index ("lsort" or
+	"string first", for example).  The default value is '1'.  Currently,
+	any non-zero values is treated as '1', but your scripts should not
+	rely on this.  See also |tcl-linenumbers|.
+
+	::vim::range					*tcl-var-range*
+	This is an array with three elements, "start", "begin" and "end".  It
+	contains the line numbers of the start and end row of the current
+	range.  "begin" is the same as "start".  This variable is read-only.
+	See |tcl-examples|.
+
+	line						*tcl-var-line*
+	lnum						*tcl-var-lnum*
+	These global variables are only available if the ":tcldo" ex command
+	is being executed.  They contain the text and line number of the
+	current line.  When the Tcl command invoked by ":tcldo" is completed,
+	the current line is set to the contents of the "line" variable, unless
+	the variable was unset by the Tcl command.  The "lnum" variable is
+	read-only.  These variables are not in the "::vim" namespace so they
+	can be used in ":tcldo" without much typing (this might be changed in
+	future versions).  See also |tcl-linenumbers|.
+
+==============================================================================
+4. Tcl window commands					*tcl-window-cmds*
+
+Window commands represent vim windows.  They are created by several commands:
+	::vim::window list			|tcl-window|
+	"windows" option of a buffer command	|tcl-buffer-windows|
+The ::vim::current(window) variable contains the name of the window command
+for the current window.  A window command is automatically deleted when the
+corresponding vim window is closed.
+
+Lets assume the name of the window command is stored in the Tcl variable "win",
+i.e. "$win" calls the command.  The following options are available: >
+
+	$win buffer		# Create Tcl command for window's buffer.
+	$win command {cmd}	# Execute ex command in windows context.
+	$win cursor		# Get current cursor position.
+	$win cursor {var}	# Set cursor position from array variable.
+	$win cursor {row} {col}	# Set cursor position.
+	$win delcmd {cmd}	# Call Tcl command when window is closed.
+	$win expr {expr}	# Evaluate vim expression in windows context.
+	$win height		# Report the window's height.
+	$win height {n}		# Set the window's height.
+	$win option {opt} [val]	# Get/Set vim option in windows context.
+
+Options:
+	$win buffer					*tcl-window-buffer*
+	Creates a Tcl command for the window's buffer, and returns its name as
+	the result.  The name should be stored in a variable: >
+		set buf [$win buffer]
+<	$buf is now a valid Tcl command.  See |tcl-buffer-cmds| for the
+	available options.
+
+	$win cursor					*tcl-window-cursor*
+	$win cursor {var}
+	$win cursor {row} {col}
+	Without argument, reports the current cursor position as a string.
+	This can be converted to a Tcl array variable: >
+		array set here [$win cursor]
+<	"here(row)" and "here(column)" now contain the cursor position.
+	With a single argument, the argument is interpreted as the name of a
+	Tcl array variable, which must contain two elements "row" and "column".
+	These are used to set the cursor to the new position: >
+		$win cursor here	;# not $here !
+<	With two arguments, sets the cursor to the specified row and column: >
+		$win cursor $here(row) $here(column)
+<	Invalid positions result in a standard Tcl error, which can be caught
+	with "catch".  The row and column values depend on the "::vim::lbase"
+	variable.  See |tcl-var-lbase|.
+
+	$win delcmd {cmd}				*tcl-window-delcmd*
+	Registers the Tcl command {cmd} as a deletion callback for the window.
+	This command is executed (in the global scope) just before the window
+	is closed.  Complex commands should be build with "list": >
+		$win delcmd [list puts vimerr "window deleted"]
+<	See also |tcl-buffer-delcmd|.
+
+	$win height					*tcl-window-height*
+	$win height {n}
+	Without argument, reports the window's current height.  With an
+	argument, tries to set the window's height to {n}, then reports the
+	new height (which might be different from {n}).
+
+	$win command [-quiet] {cmd}			*tcl-window-command*
+	$win expr {expr}				*tcl-window-expr*
+	$win option {opt} [val]				*tcl-window-option*
+	These are similar to "::vim::command" etc., except that everything is
+	done in the context of the window represented by $win, instead of the
+	current window.  For example, setting an option that is marked 'local
+	to window' affects the window $win.  Anything that affects or queries
+	a buffer uses the buffer displayed in this window (i.e. the buffer
+	that is represented by "$win buffer").  See |tcl-command|, |tcl-expr|
+	and |tcl-option| for more information.
+	Example: >
+		$win option number on
+
+==============================================================================
+5. Tcl buffer commands					*tcl-buffer-cmds*
+
+Buffer commands represent vim buffers.  They are created by several commands:
+	::vim::buffer {N}			|tcl-buffer|
+	::vim::buffer list			|tcl-buffer|
+	"buffer" option of a window command	|tcl-window-buffer|
+The ::vim::current(buffer) variable contains the name of the buffer command
+for the current buffer.  A buffer command is automatically deleted when the
+corresponding vim buffer is destroyed.  Whenever the buffer's contents are
+changed, all marks in the buffer are automatically adjusted.  Any changes to
+the buffer's contents made by Tcl commands can be undone with the "undo" vim
+command (see |undo|).
+
+Lets assume the name of the buffer command is stored in the Tcl variable "buf",
+i.e. "$buf" calls the command.  The following options are available: >
+
+	$buf append {n} {str}	# Append a line to buffer, after line {n}.
+	$buf command {cmd}	# Execute ex command in buffers context.
+	$buf count		# Report number of lines in buffer.
+	$buf delcmd {cmd}	# Call Tcl command when buffer is deleted.
+	$buf delete {n}		# Delete a single line.
+	$buf delete {n} {m}	# Delete several lines.
+	$buf expr {expr}	# Evaluate vim expression in buffers context.
+	$buf get {n}		# Get a single line as a string.
+	$buf get {n} {m}	# Get several lines as a list.
+	$buf insert {n} {str}	# Insert a line in buffer, as line {n}.
+	$buf last		# Report line number of last line in buffer.
+	$buf mark {mark}	# Report position of buffer mark.
+	$buf name		# Report name of file in buffer.
+	$buf number		# Report number of this buffer.
+	$buf option {opt} [val]	# Get/Set vim option in buffers context.
+	$buf set {n} {text}	# Replace a single line.
+	$buf set {n} {m} {list}	# Replace several lines.
+	$buf windows		# Create Tcl commands for buffer's windows.
+<
+							*tcl-linenumbers*
+Most buffer commands take line numbers as arguments.  How Tcl treats these
+numbers depends on the "::vim::lbase" variable (see |tcl-var-lbase|).  Instead
+of line numbers, several keywords can be also used: "top", "start", "begin",
+"first", "bottom", "end" and "last".
+
+Options:
+	$buf append {n} {str}				*tcl-buffer-append*
+	$buf insert {n} {str}				*tcl-buffer-insert*
+	Add a line to the buffer.  With the "insert" option, the string
+	becomes the new line {n}, with "append" it is inserted after line {n}.
+	Example: >
+		$buf insert top "This is the beginning."
+		$buf append end "This is the end."
+<	To add a list of lines to the buffer, use a loop: >
+		foreach line $list { $buf append $num $line ; incr num }
+<
+	$buf count					*tcl-buffer-count*
+	Reports the total number of lines in the buffer.
+
+	$buf delcmd {cmd}				*tcl-buffer-delcmd*
+	Registers the Tcl command {cmd} as a deletion callback for the buffer.
+	This command is executed (in the global scope) just before the buffer
+	is deleted.  Complex commands should be build with "list": >
+		$buf delcmd [list puts vimerr "buffer [$buf number] gone"]
+<	See also |tcl-window-delcmd|.
+
+	$buf delete {n}					*tcl-buffer-delete*
+	$buf delete {n} {m}
+	Deletes line {n} or lines {n} through {m} from the buffer.
+	This example deletes everything except the last line: >
+		$buf delete first [expr [$buf last] - 1]
+<
+	$buf get {n}					*tcl-buffer-get*
+	$buf get {n} {m}
+	Gets one or more lines from the buffer.  For a single line, the result
+	is a string; for several lines, a list of strings.
+	Example: >
+		set topline [$buf get top]
+<
+	$buf last					*tcl-buffer-last*
+	Reports the line number of the last line.  This value depends on the
+	"::vim::lbase" variable.  See |tcl-var-lbase|.
+
+	$buf mark {mark}				*tcl-buffer-mark*
+	Reports the position of the named mark as a string, similar to the
+	cursor position of the "cursor" option of a window command (see
+	|tcl-window-cursor|).  This can be converted to a Tcl array variable: >
+		array set mpos [$buf mark "a"]
+<	"mpos(column)" and "mpos(row)" now contain the position of the mark.
+	If the mark is not set, a standard Tcl error results.
+
+	$buf name
+	Reports the name of the file in the buffer.  For a buffer without a
+	file, this is an empty string.
+
+	$buf number
+	Reports the number of this buffer.  See |:buffers|.
+	This example deletes a buffer from vim: >
+		::vim::command "bdelete [$buf number]"
+<
+	$buf set {n} {string}				*tcl-buffer-set*
+	$buf set {n} {m} {list}
+	Replace one or several lines in the buffer.  If the list contains more
+	elements than there are lines to replace, they are inserted into the
+	buffer.  If the list contains fewer elements, any unreplaced line is
+	deleted from the buffer.
+
+	$buf windows					*tcl-buffer-windows*
+	Creates a window command for each window that displays this buffer, and
+	returns a list of the command names as the result.
+	Example: >
+		set winlist [$buf windows]
+		foreach win $winlist { $win height 4 }
+<	See |tcl-window-cmds| for the available options.
+
+	$buf command [-quiet] {cmd}			*tcl-buffer-command*
+	$buf expr {exr}					*tcl-buffer-expr*
+	$buf option {opt} [val]				*tcl-buffer-option*
+	These are similar to "::vim::command" etc., except that everything is
+	done in the context of the buffer represented by $buf, instead of the
+	current buffer.  For example, setting an option that is marked 'local
+	to buffer' affects the buffer $buf.  Anything that affects or queries
+	a window uses the first window in vim's window list that displays this
+	buffer (i.e. the first entry in the list returned by "$buf windows").
+	See |tcl-command|, |tcl-expr| and |tcl-option| for more information.
+	Example: >
+		if { [$buf option modified] } { $buf command "w" }
+
+==============================================================================
+6. Miscellaneous; Output from Tcl		*tcl-misc* *tcl-output*
+
+The standard Tcl commands "exit" and "catch" are replaced by custom versions.
+"exit" terminates the current Tcl script and returns to vim, which deletes the
+Tcl interpreter.  Another call to ":tcl" then creates a new Tcl interpreter.
+"exit" does NOT terminate vim!  "catch" works as before, except that it does
+not prevent script termination from "exit".  An exit code != 0 causes the ex
+command that invoked the Tcl script to return an error.
+
+Two new I/O streams are available in Tcl, "vimout" and "vimerr".  All output
+directed to them is displayed in the vim message area, as information messages
+and error messages, respectively.  The standard Tcl output streams stdout and
+stderr are mapped to vimout and vimerr, so that a normal "puts" command can be
+used to display messages in vim.
+
+==============================================================================
+7. Known bugs & problems				*tcl-bugs*
+
+Calling one of the Tcl ex commands from inside Tcl (via "::vim::command") may
+have unexpected side effects.  The command creates a new interpreter, which
+has the same abilities as the standard interpreter - making "::vim::command"
+available in a safe child interpreter therefore makes the child unsafe.  (It
+would be trivial to block nested :tcl* calls or ensure that such calls from a
+safe interpreter create only new safe interpreters, but quite pointless -
+depending on vim's configuration, "::vim::command" may execute arbitrary code
+in any number of other scripting languages.)  A call to "exit" within this new
+interpreter does not affect the old interpreter; it only terminates the new
+interpreter, then script processing continues normally in the old interpreter.
+
+Input from stdin is currently not supported.
+
+==============================================================================
+8. Examples:						*tcl-examples*
+
+Here are a few small (and maybe useful) Tcl scripts.
+
+This script sorts the lines of the entire buffer (assume it contains a list
+of names or something similar):
+	set buf $::vim::current(buffer)
+	set lines [$buf get top bottom]
+	set lines [lsort -dictionary $lines]
+	$buf set top bottom $lines
+
+This script reverses the lines in the buffer.  Note the use of "::vim::lbase"
+and "$buf last" to work with any line number setting.
+	set buf $::vim::current(buffer)
+	set t $::vim::lbase
+	set b [$buf last]
+	while { $t < $b } {
+		set tl [$buf get $t]
+		set bl [$buf get $b]
+		$buf set $t $bl
+		$buf set $b $tl
+		incr t
+		incr b -1
+	}
+
+This script adds a consecutive number to each line in the current range:
+	set buf $::vim::current(buffer)
+	set i $::vim::range(start)
+	set n 1
+	while { $i <= $::vim::range(end) } {
+		set line [$buf get $i]
+		$buf set $i "$n\t$line"
+		incr i ; incr n
+	}
+
+The same can also be done quickly with two ex commands, using ":tcldo":
+	:tcl set n 1
+	:[range]tcldo set line "$n\t$line" ; incr n
+
+This procedure runs an ex command on each buffer (idea stolen from Ron Aaron):
+	proc eachbuf { cmd } {
+		foreach b [::vim::buffer list] {
+			$b command $cmd
+		}
+	}
+Use it like this:
+	:tcl eachbuf %s/foo/bar/g
+Be careful with Tcl's string and backslash substitution, tough. If in doubt,
+surround the ex command with curly braces.
+
+
+If you want to add some Tcl procedures permanently to vim, just place them in
+a file (e.g. "~/.vimrc.tcl" on Unix machines), and add these lines to your
+startup file (usually "~/.vimrc" on Unix):
+	if has("tcl")
+		tclfile ~/.vimrc.tcl
+	endif
+
+==============================================================================
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt
new file mode 100644
index 0000000..a35ce54
--- /dev/null
+++ b/runtime/doc/indent.txt
@@ -0,0 +1,522 @@
+*indent.txt*    For Vim version 7.0aa.  Last change: 2004 Apr 25
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+This file is about indenting C programs and other files.
+
+1. Indenting C programs		|C-indenting|
+2. Indenting by expression	|indent-expression|
+
+==============================================================================
+1. Indenting C programs					*C-indenting*
+
+The basics for C indenting are explained in section |30.2| of the user manual.
+
+Vim has options for automatically indenting C program files.  These options
+affect only the indent and do not perform other formatting.  For comment
+formatting, see |format-comments|.
+
+Note that this will not work when the |+smartindent| or |+cindent| features
+have been disabled at compile time.
+
+There are in fact four methods available for indentation:
+'autoindent'	uses the indent from the previous line.
+'smartindent'	is like 'autoindent' but also recognizes some C syntax to
+		increase/reduce the indent where appropriate.
+'cindent'	Works more cleverly than the other two and is configurable to
+		different indenting styles.
+'indentexpr'	The most flexible of all: Evaluates an expression to compute
+		the indent of a line.  When non-empty this method overrides
+		the other ones.  See |indent-expression|.
+The rest of this section describes the 'cindent' option.
+
+Note that 'cindent' indenting does not work for every code scenario.  Vim
+is not a C compiler: it does not recognize all syntax.
+
+These four options control C program indenting:
+'cindent'	Enables Vim to perform C program indenting automatically.
+'cinkeys'	Specifies which keys trigger reindenting in insert mode.
+'cinoptions'	Sets your preferred indent style.
+'cinwords'	Defines keywords that start an extra indent in the next line.
+
+If 'lisp' is not on and 'equalprg' is empty, the "=" operator indents using
+Vim's built-in algorithm rather than calling an external program.
+
+See |autocommand| for how to set the 'cindent' option automatically for C code
+files and reset it for others.
+
+					*cinkeys-format* *indentkeys-format*
+The 'cinkeys' option is a string that controls Vim's indenting in response to
+typing certain characters or commands in certain contexts.  Note that this not
+only triggers C-indenting.  When 'indentexpr' is not empty 'indentkeys' is
+used instead.  The format of 'cinkeys' and 'indentkeys' is equal.
+
+The default is "0{,0},0),:,0#,!^F,o,O,e" which specifies that indenting occurs
+as follows:
+
+	"0{"	if you type '{' as the first character in a line
+	"0}"	if you type '}' as the first character in a line
+	"0)"	if you type ')' as the first character in a line
+	":"	if you type ':' after a label or case statement
+	"0#"	if you type '#' as the first character in a line
+	"!^F"	if you type CTRL-F (which is not inserted)
+	"o"	if you type a <CR> anywhere or use the "o" command (not in
+		insert mode!)
+	"O"	if you use the "O" command (not in insert mode!)
+	"e"	if you type the second 'e' for an "else" at the start of a
+		line
+
+Characters that can precede each key:
+!	When a '!' precedes the key, Vim will not insert the key but will
+	instead reindent the current line.  This allows you to define a
+	command key for reindenting the current line.  CTRL-F is the default
+	key for this.  Be careful if you define CTRL-I for this because CTRL-I
+	is the ASCII code for <Tab>.
+*	When a '*' precedes the key, Vim will reindent the line before
+	inserting the key.  If 'cinkeys' contains "*<Return>", Vim reindents
+	the current line before opening a new line.
+0	When a zero precedes the key (but appears after '!' or '*') Vim will
+	reindent the line only if the key is the first character you type in
+	the line.  When used before "=" Vim will only reindent the line if
+	there is only white space before the word.
+
+When neither '!' nor '*' precedes the key, Vim reindents the line after you
+type the key.  So ';' sets the indentation of a line which includes the ';'.
+
+Special key names:
+<>	Angle brackets mean spelled-out names of keys.  For example: "<Up>",
+	"<Ins>" (see |key-notation|).
+^	Letters preceded by a caret (^) are control characters.  For example:
+	"^F" is CTRL-F.
+o	Reindent a line when you use the "o" command or when Vim opens a new
+	line below the current one (e.g., when you type <Enter> in insert
+	mode).
+O	Reindent a line when you use the "O" command.
+e	Reindent a line that starts with "else" when you type the second 'e'.
+:	Reindent a line when a ':' is typed which is after a label or case
+	statement.  Don't reindent for a ":" in "class::method" for C++.  To
+	Reindent for any ":", use "<:>".
+=word	Reindent when typing the last character of "word".  "word" may
+	actually be part of another word.  Thus "=end" would cause reindenting
+	when typing the "d" in "endif" or "endwhile".  But not when typing
+	"bend".  Also reindent when completion produces a word that starts
+	with "word".  "0=word" reindents when there is only white space before
+	the word.
+=~word	Like =word, but ignore case.
+
+If you really want to reindent when you type 'o', 'O', 'e', '0', '<', '>',
+'*', ':' or '!', use "<o>", "<O>", "<e>", "<0>", "<<>", "<>>", "<*>", "<:>" or
+"<!>", respectively, for those keys.
+
+For an emacs-style indent mode where lines aren't indented every time you
+press Enter but only if you press Tab, I suggest:
+	:set cinkeys=0{,0},:,0#,!<Tab>,!^F
+You might also want to switch off 'autoindent' then.
+
+Note: If you change the current line's indentation manually, Vim ignores the
+cindent settings for that line.  This prevents vim from reindenting after you
+have changed the indent by typing <BS>, <Tab>, or <Space> in the indent or
+used CTRL-T or CTRL-D.
+
+						*cinoptions-values*
+The 'cinoptions' option sets how Vim performs indentation.  In the list below,
+"N" represents a number of your choice (the number can be negative).  When
+there is an 's' after the number, Vim multiplies the number by 'shiftwidth':
+"1s" is 'shiftwidth', "2s" is two times 'shiftwidth', etc.  You can use a
+decimal point, too: "-0.5s" is minus half a 'shiftwidth'.  The examples below
+assume a 'shiftwidth' of 4.
+
+	>N    Amount added for "normal" indent.  Used after a line that should
+	      increase the indent (lines starting with "if", an opening brace,
+	      etc.).  (default 'shiftwidth').
+
+		cino=		    cino=>2		cino=>2s >
+		  if (cond)	      if (cond)		  if (cond)
+		  {		      {			  {
+		      foo;		foo;			  foo;
+		  }		      }			  }
+<
+	eN    Add N to the prevailing indent inside a set of braces if the
+	      opening brace at the End of the line (more precise: is not the
+	      first character in a line).  This is useful if you want a
+	      different indent when the '{' is at the start of the line from
+	      when '{' is at the end of the line.  (default 0).
+
+		cino=		    cino=e2		cino=e-2 >
+		  if (cond) {	      if (cond) {	  if (cond) {
+		      foo;		    foo;	    foo;
+		  }		      }			  }
+		  else		      else		  else
+		  {		      {			  {
+		      bar;		  bar;		      bar;
+		  }		      }			  }
+<
+	nN    Add N to the prevailing indent for a statement after an "if",
+	      "while", etc., if it is NOT inside a set of braces.  This is
+	      useful if you want a different indent when there is no '{'
+	      before the statement from when there is a '{' before it.
+	      (default 0).
+
+		cino=		    cino=n2		cino=n-2 >
+		  if (cond)	      if (cond)		  if (cond)
+		      foo;		    foo;	    foo;
+		  else		      else		  else
+		  {		      {			  {
+		      bar;		  bar;		      bar;
+		  }		      }			  }
+<
+	fN    Place the first opening brace of a function or other block in
+	      column N.  This applies only for an opening brace that is not
+	      inside other braces and is at the start of the line.  What comes
+	      after the brace is put relative to this brace.  (default 0).
+
+		cino=		    cino=f.5s		cino=f1s >
+		  func()	      func()		  func()
+		  {			{		      {
+		      int foo;		    int foo;		  int foo;
+<
+	{N    Place opening braces N characters from the prevailing indent.
+	      This applies only for opening braces that are inside other
+	      braces.  (default 0).
+
+		cino=		    cino={.5s		cino={1s >
+		  if (cond)	      if (cond)		  if (cond)
+		  {			{		      {
+		      foo;		  foo;		      foo;
+<
+	}N    Place closing braces N characters from the matching opening
+	      brace.  (default 0).
+
+		cino=		    cino={2,}-0.5s	cino=}2 >
+		  if (cond)	      if (cond)		  if (cond)
+		  {			{		  {
+		      foo;		  foo;		      foo;
+		  }		      }			    }
+<
+	^N    Add N to the prevailing indent inside a set of braces if the
+	      opening brace is in column 0.  This can specify a different
+	      indent for whole of a function (some may like to set it to a
+	      negative number).  (default 0).
+
+		cino=		    cino=^-2		cino=^-s >
+		  func()	      func()		  func()
+		  {		      {			  {
+		      if (cond)		if (cond)	  if (cond)
+		      {			{		  {
+			  a = b;	    a = b;	      a = b;
+		      }			}		  }
+		  }		      }			  }
+<
+	:N    Place case labels N characters from the indent of the switch().
+	      (default 'shiftwidth').
+
+		cino=		    cino=:0 >
+		  switch (x)	      switch(x)
+		  {		      {
+		      case 1:	      case 1:
+			  a = b;	  a = b;
+		      default:	      default:
+		  }		      }
+<
+	=N    Place statements occurring after a case label N characters from
+	      the indent of the label.  (default 'shiftwidth').
+
+		cino=		    cino==10 >
+		   case 11:		case 11:  a = a + 1;
+		       a = a + 1;		  b = b + 1;
+<
+	lN    If N != 0 Vim will align with a case label instead of the
+	      statement after it in the same line.
+
+		cino=			    cino=l1 >
+		    switch (a) {	      switch (a) {
+			case 1: {		  case 1: {
+				    break;	      break;
+				}		  }
+<
+	bN    If N != 0 Vim will align a final "break" with the case label,
+	      so that case..break looks like a sort of block. (default: 0).
+
+		cino=		    cino=b1 >
+		  switch (x)	      switch(x)
+		  {		      {
+		      case 1:		  case 1:
+			  a = b;	      a = b;
+			  break;	  break;
+
+		      default:		  default:
+			  a = 0;	      a = 0;
+			  break;	  break;
+		  }		      }
+<
+	gN    Place C++ scope declarations N characters from the indent of the
+	      block they are in.  (default 'shiftwidth').  A scope declaration
+	      can be "public:", "protected:" or "private:".
+
+		cino=		    cino=g0 >
+		  {		      {
+		      public:	      public:
+			  a = b;	  a = b;
+		      private:	      private:
+		  }		      }
+<
+	hN    Place statements occurring after a C++ scope declaration N
+	      characters from the indent of the label.  (default
+	      'shiftwidth').
+
+		cino=		    cino=h10 >
+		   public:		public:   a = a + 1;
+		       a = a + 1;		  b = b + 1;
+<
+	pN    Parameter declarations for K&R-style function declarations will
+	      be indented N characters from the margin.  (default
+	      'shiftwidth').
+
+		cino=		    cino=p0		cino=p2s >
+		  func(a, b)	      func(a, b)	  func(a, b)
+		      int a;	      int a;			  int a;
+		      char b;	      char b;			  char b;
+<
+	tN    Indent a function return type declaration N characters from the
+	      margin.  (default 'shiftwidth').
+
+		cino=		    cino=t0		cino=t7 >
+		      int	      int			 int
+		  func()	      func()		  func()
+<
+	iN    Indent C++ base class declarations and contructor
+	      initializations, if they start in a new line (otherwise they
+	      are aligned at the right side of the ':').
+	      (default 'shiftwidth').
+
+		cino=			  cino=i0 >
+		  class MyClass :	    class MyClass :
+		      public BaseClass      public BaseClass
+		  {}			    {}
+		  MyClass::MyClass() :	    MyClass::MyClass() :
+		      BaseClass(3)	    BaseClass(3)
+		  {}			    {}
+<
+	+N    Indent a continuation line (a line that spills onto the next) N
+	      additional characters.  (default 'shiftwidth').
+
+		cino=			  cino=+10 >
+		  a = b + 9 *		    a = b + 9 *
+		      c;			      c;
+<
+	cN    Indent comment lines after the comment opener, when there is no
+	      other text with which to align, N characters from the comment
+	      opener.  (default 3).  See also |format-comments|.
+
+		cino=			  cino=c5 >
+		  /*			    /*
+		     text.			 text.
+		   */			     */
+<
+	CN    When N is non-zero, indent comment lines by the amount specified
+	      with the c flag above even if there is other text behind the
+	      comment opener.  (default 0).
+
+		cino=c0			  cino=c0,C1 >
+		  /********		    /********
+		    text.		    text.
+		  ********/		    ********/
+<	      (Example uses ":set comments& comments-=s1:/* comments^=s0:/*")
+
+	/N    Indent comment lines N characters extra. (default 0).
+		cino=			  cino=/4 >
+		  a = b;		    a = b;
+		  /* comment */			/* comment */
+		  c = d;		    c = d;
+<
+	(N    When in unclosed parentheses, indent N characters from the line
+	      with the unclosed parentheses.  Add a 'shiftwidth' for every
+	      unclosed parentheses.  When N is 0 or the unclosed parentheses
+	      is the first non-white character in its line, line up with the
+	      next non-white character after the unclosed parentheses.
+	      (default 'shiftwidth' * 2).
+
+		cino=			  cino=(0 >
+		  if (c1 && (c2 ||	    if (c1 && (c2 ||
+			      c3))		       c3))
+		      foo;			foo;
+		  if (c1 &&		    if (c1 &&
+			  (c2 || c3))		(c2 || c3))
+		     {			       {
+<
+	uN    Same as (N, but for one level deeper.  (default 'shiftwidth').
+
+		cino=			  cino=u2 >
+		  if (c123456789	    if (c123456789
+			  && (c22345		    && (c22345
+			      || c3))		      || c3))
+<
+	UN    When N is non-zero, do not ignore the indenting specified by
+	      ( or u in case that the unclosed parentheses is the first
+	      non-white character in its line.  (default 0).
+
+		cino= or cino=(s	  cino=(s,U1 >
+		  c = c1 &&		    c = c1 &&
+		      (				(
+		       c2 ||			    c2 ||
+		       c3			    c3
+		      ) && c4;			) && c4;
+<
+	wN    When in unclosed parentheses and N is non-zero and either
+	      using "(0" or "u0", respectively, or using "U0" and the unclosed
+	      parentheses is the first non-white character in its line, line
+	      up with the character immediately after the unclosed parentheses
+	      rather than the first non-white character.  (default 0).
+
+		cino=(0			  cino=(0,w1 >
+		  if (   c1		    if (   c1
+			 && (   c2		&& (   c2
+				|| c3))		    || c3))
+		      foo;			foo;
+<
+	WN    When in unclosed parentheses and N is non-zero and either
+	      using "(0" or "u0", respectively and the unclosed parentheses is
+	      the last non-white character in its line and it is not the
+	      closing parentheses, indent the following line N characters
+	      relative to the outer context (i.e. start of the line or the
+	      next unclosed parentheses). (default: 0).
+
+		cino=(0			   cino=(0,W4 >
+		  a_long_line(		    a_long_line(
+			      argument,		argument,
+			      argument);	argument);
+		  a_short_line(argument,    a_short_line(argument,
+			       argument);		 argument);
+<
+	mN    When N is non-zero, line up a line starting with a closing
+	      parentheses with the first character of the line with the
+	      matching opening parentheses.  (default 0).
+
+		cino=(s			  cino=(s,m1 >
+		  c = c1 && (		    c = c1 && (
+		      c2 ||			c2 ||
+		      c3			c3
+		      ) && c4;		    ) && c4;
+		  if (			    if (
+		      c1 && c2			c1 && c2
+		     )			    )
+		      foo;			foo;
+<
+					*java-cinoptions* *java-indenting*
+	jN    Indent java anonymous classes correctly.  The value 'N' is
+	      currently unused but must be non-zero (e.g. 'j1'). 'j1' will
+	      indent for example the following code snippet correctly: >
+
+		object.add(new ChangeListener() {
+		    public void stateChanged(ChangeEvent e) {
+			do_something();
+		    }
+		});
+<
+	)N    Vim searches for unclosed parentheses at most N lines away.
+	      This limits the time needed to search for parentheses.  (default
+	      20 lines).
+
+	*N    Vim searches for unclosed comments at most N lines away.  This
+	      limits the time needed to search for the start of a comment.
+	      (default 30 lines).
+
+
+The defaults, spelled out in full, are:
+	cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,l0,gs,hs,ps,ts,+s,c3,C0,(2s,us,
+		   \U0,w0,m0,j0,)20,*30
+
+Vim puts a line in column 1 if:
+- It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'.
+- It starts with a label (a keyword followed by ':', other than "case" and
+  "default").
+- Any combination of indentations causes the line to have less than 0
+  indentation.
+
+==============================================================================
+2. Indenting by expression				*indent-expression*
+
+The basics for using flexible indenting are explained in section |30.3| of the
+user manual.
+
+If you want to write your own indent file, it must set the 'indentexpr'
+option.  Setting the 'indentkeys' option is often useful.  See the
+$VIMRUNTIME/indent directory for examples.
+
+
+REMARKS ABOUT SPECIFIC INDENT FILES ~
+
+
+FORTRAN							*fortran-indent*
+
+Block if, select case, and where constructs are indented. Comments, labelled
+statements and continuation lines are indented if the Fortran is in free
+source form, whereas they are not indented if the Fortran is in fixed source
+form because of the left margin requirements. Hence manual indent corrections
+will be necessary for labelled statements and continuation lines when fixed
+source form is being used. For further discussion of the method used for the
+detection of source format see |fortran-syntax|.
+
+Do loops ~
+All do loops are left unindented by default. Do loops can be unstructured in
+Fortran with (possibly multiple) loops ending on a labelled executable
+statement of almost arbitrary type. Correct indentation requires
+compiler-quality parsing. Old code with do loops ending on labelled statements
+of arbitrary type can be indented with elaborate programs such as Tidy
+(http://www.unb.ca/chem/ajit/f_tidy.htm). Structured do/continue loops are
+also left unindented because continue statements are also used for purposes
+other than ending a do loop. Programs such as Tidy can convert structured
+do/continue loops to the do/enddo form. Do loops of the do/enddo variety can
+be indented. If you use only structured loops of the do/enddo form, you should
+declare this by setting the fortran_do_enddo variable in your .vimrc as
+follows >
+
+   let fortran_do_enddo=1
+
+in which case do loops will be indented. If all your loops are of do/enddo
+type only in, say, .f90 files, then you should set a buffer flag with an
+autocommand such as >
+
+  au! BufRead,BufNewFile *.f90 let b:fortran_do_enddo=1
+
+to get do loops indented in .f90 files and left alone in Fortran files with
+other extensions such as .for.
+
+
+VERILOG							*verilog-indent*
+
+General block statements such as if, for, case, always, initial, function,
+specify and begin, etc., are indented.  The module block statements (first
+level blocks) are not indented by default.  you can turn on the indent with
+setting a variable in the .vimrc as follows: >
+
+  let b:verilog_indent_modules = 1
+
+then the module blocks will be indented.  To stop this, remove the variable: >
+
+  :unlet b:verilog_indent_modules
+
+To set the variable only for Verilog file.  The following statements can be
+used: >
+
+  au BufReadPost * if exists("b:current_syntax")
+  au BufReadPost *   if b:current_syntax == "verilog"
+  au BufReadPost *     let b:verilog_indent_modules = 1
+  au BufReadPost *   endif
+  au BufReadPost * endif
+
+Furthermore, setting the variable b:verilog_indent_width to change the
+indenting width (default is 'shiftwidth'): >
+
+  let b:verilog_indent_width = 4
+  let b:verilog_indent_width = &sw * 2
+
+In addition, you can turn the verbose mode for debug issue: >
+
+  let b:verilog_indent_verbose = 1
+
+Make sure to do ":set cmdheight=2" first to allow the display of the message.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
new file mode 100644
index 0000000..791e5ba
--- /dev/null
+++ b/runtime/doc/index.txt
@@ -0,0 +1,1423 @@
+*index.txt*     For Vim version 7.0aa.  Last change: 2004 May 24
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+								*index*
+This file contains a list of all commands for each mode, with a tag and a
+short description.  The lists are sorted on ASCII value.
+
+Tip: When looking for certain functionality, use a search command.  E.g.,
+to look for deleting something, use: "/delete".
+
+1. Insert mode				|insert-index|
+2. Normal mode				|normal-index|
+   2.1. Text objects			|objects|
+   2.2. Window commands			|CTRL-W|
+   2.3. Square bracket commands		|[|
+   2.4. Commands starting with 'g'	|g|
+   2.5. Commands starting with 'z'	|z|
+3. Visual mode				|visual-index|
+4. Command-line editing			|ex-edit-index|
+5. EX commands				|ex-cmd-index|
+
+For an overview of options see help.txt |option-list|.
+For an overview of built-in functions see |functions|.
+For a list of Vim variables see |vim-variable|.
+For a complete listing of all help items see |help-tags|.
+
+==============================================================================
+1. Insert mode						*insert-index*
+
+tag		char		action	~
+-----------------------------------------------------------------------
+|i_CTRL-@|	CTRL-@		insert previously inserted text and stop
+				insert
+|i_CTRL-A|	CTRL-A		insert previously inserted text
+		CTRL-B		not used |i_CTRL-B-gone|
+|i_CTRL-C|	CTRL-C		quit insert mode, without checking for
+				abbreviation, unless 'insertmode' set.
+|i_CTRL-D|	CTRL-D		delete one shiftwidth of indent in the current
+				line
+|i_CTRL-E|	CTRL-E		insert the character which is below the cursor
+		CTRL-F		not used (but by default it's in 'cinkeys' to
+				re-indent the current line)
+|i_CTRL-G_j|	CTRL-G CTRL-J	line down, to column where inserting started
+|i_CTRL-G_j|	CTRL-G j	line down, to column where inserting started
+|i_CTRL-G_j|	CTRL-G <Down>	line down, to column where inserting started
+|i_CTRL-G_k|	CTRL-G CTRL-K	line up, to column where inserting started
+|i_CTRL-G_k|	CTRL-G k	line up, to column where inserting started
+|i_CTRL-G_k|	CTRL-G <Up>	line up, to column where inserting started
+|i_CTRL-G_u|	CTRL-G u	start new undoable edit
+|i_<BS>|	<BS>		delete character before the cursor
+|i_digraph|	{char1}<BS>{char2}
+				enter digraph (only when 'digraph' option set)
+|i_CTRL-H|	CTRL-H		same as <BS>
+|i_<Tab>|	<Tab>		insert a <Tab> character
+|i_CTRL-I|	CTRL-I		same as <Tab>
+|i_<NL>|	<NL>		same as <CR>
+|i_CTRL-J|	CTRL-J		same as <CR>
+|i_CTRL-K|	CTRL-K {char1} {char2}
+				enter digraph
+|i_CTRL-L|	CTRL-L		when 'insertmode' set: Leave Insert mode
+|i_<CR>|	<CR>		begin new line
+|i_CTRL-M|	CTRL-M		same as <CR>
+|i_CTRL-N|	CTRL-N		find next match for keyword in front of the
+				cursor
+|i_CTRL-O|	CTRL-O		execute a single command and return to insert
+				mode
+|i_CTRL-P|	CTRL-P		find previous match for keyword in front of
+				the cursor
+|i_CTRL-Q|	CTRL-Q		same as CTRL-V, unless used for terminal
+				control flow
+|i_CTRL-R|	CTRL-R {0-9a-z"%#*:=}
+				insert the contents of a register
+|i_CTRL-R_CTRL-R| CTRL-R CTRL-R {0-9a-z"%#*:=}
+				insert the contents of a register literally
+|i_CTRL-R_CTRL-O| CTRL-R CTRL-O {0-9a-z"%#*:=}
+				insert the contents of a register literally
+				and don't auto-indent
+|i_CTRL-R_CTRL-P| CTRL-R CTRL-P {0-9a-z"%#*:=}
+				insert the contents of a register literally
+				and fix indent.
+		CTRL-S		(used for terminal control flow)
+|i_CTRL-T|	CTRL-T		insert one shiftwidth of indent in current
+				line
+|i_CTRL-U|	CTRL-U		delete all entered characters in the current
+				line
+|i_CTRL-V|	CTRL-V {char}	insert next non-digit literally
+|i_CTRL-V_digit| CTRL-V {number} insert three digit decimal number as a single
+				byte.
+|i_CTRL-W|	CTRL-W		delete word before the cursor
+|i_CTRL-X|	CTRL-X {mode}	enter CTRL-X sub mode, see below
+|i_CTRL-Y|	CTRL-Y		insert the character which is above the cursor
+|i_CTRL-Z|	CTRL-Z		when 'insertmode' set: suspend Vim
+|i_<Esc>|	<Esc>		end insert mode (unless 'insertmode' set)
+|i_CTRL-[|	CTRL-[		same as <Esc>
+|i_CTRL-\_CTRL-N| CTRL-\ CTRL-N	 go to Normal mode
+|i_CTRL-\_CTRL-G| CTRL-\ CTRL-G	 go to mode specified with 'insertmode'
+		CTRL-\ a - z	reserved for extensions
+		CTRL-\ others	not used
+|i_CTRL-]|	CTRL-]		trigger abbreviation
+|i_CTRL-^|	CTRL-^		toggle use of |:lmap| mappings
+|i_CTRL-_|	CTRL-_		When 'allowrevins' set: change language
+				(Hebrew, Farsi) {only when compiled with
+				+rightleft feature}
+
+		<Space> to '~'	not used, except '0' and '^' followed by
+				CTRL-D
+
+|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
+				it in the next line
+
+|i_<Del>|	<Del>		delete character under the cursor
+
+		Meta characters (0x80 to 0xff, 128 to 255)
+				not used
+
+|i_<Left>|	<Left>		cursor one character left
+|i_<S-Left>|	<S-Left>	cursor one word left
+|i_<C-Left>|	<C-Left>	cursor one word left
+|i_<Right>|	<Right>		cursor one character right
+|i_<S-Right>|	<S-Right>	cursor one word right
+|i_<C-Right>|	<C-Right>	cursor one word right
+|i_<Up>|	<Up>		cursor one line up
+|i_<S-Up>|	<S-Up>		same as <PageUp>
+|i_<Down>|	<Down>		cursor one line down
+|i_<S-Down>|	<S-Down>	same as <PageDown>
+|i_<Home>|	<Home>		cursor to start of line
+|i_<C-Home>|	<C-Home>	cursor to start of file
+|i_<End>|	<End>		cursor past end of line
+|i_<C-End>|	<C-End>		cursor past end of file
+|i_<PageUp>|	<PageUp>	one screenfull backward
+|i_<PageDown>|	<PageDown>	one screenfull forward
+|i_<F1>|	<F1>		same as <Help>
+|i_<Help>|	<Help>		stop insert mode and display help window
+|i_<Insert>|	<Insert>	toggle Insert/Replace mode
+|i_<LeftMouse>|	<LeftMouse>	cursor at mouse click
+|i_<MouseDown>|	<MouseDown>	scroll three lines downwards
+|i_<S-MouseDown>| <S-MouseDown>	scroll a full page downwards
+|i_<MouseUp>|	<MouseUp>	scroll three lines upwards
+|i_<S-MouseUp>|	<S-MouseUp>	scroll a full page upwards
+
+commands in CTRL-X submode
+
+|i_CTRL-X_CTRL-D|	CTRL-X CTRL-D	complete defined identifiers
+|i_CTRL-X_CTRL-E|	CTRL-X CTRL-E	scroll up
+|i_CTRL-X_CTRL-F|	CTRL-X CTRL-F	complete file names
+|i_CTRL-X_CTRL-I|	CTRL-X CTRL-I	complete identifiers
+|i_CTRL-X_CTRL-K|	CTRL-X CTRL-K	complete identifiers from dictionary
+|i_CTRL-X_CTRL-L|	CTRL-X CTRL-L	complete whole lines
+|i_CTRL-X_CTRL-N|	CTRL-X CTRL-N	next completion
+|i_CTRL-X_CTRL-P|	CTRL-X CTRL-P	previous completion
+|i_CTRL-X_CTRL-T|	CTRL-X CTRL-T	complete identifiers from thesaurus
+|i_CTRL-X_CTRL-Y|	CTRL-X CTRL-Y	scroll down
+|i_CTRL-X_CTRL-]|	CTRL-X CTRL-]	complete tags
+{not available when compiled without the +insert_expand feature}
+
+==============================================================================
+2. Normal mode						*normal-index*
+
+CHAR	 any non-blank character
+WORD	 a sequence of non-blank characters
+N	 a number entered before the command
+{motion} a cursor movement command
+Nmove	 the text that is moved over with a {motion}
+SECTION	 a section that possibly starts with '}' instead of '{'
+
+note: 1 = cursor movement command; 2 = can be undone/redone
+
+tag		char	      note action in Normal mode	~
+------------------------------------------------------------------------------
+		CTRL-@		   not used
+|CTRL-A|	CTRL-A		2  add N to number at/after cursor
+|CTRL-B|	CTRL-B		1  scroll N screens Backwards
+|CTRL-C|	CTRL-C		   interrupt current (search) command
+|CTRL-D|	CTRL-D		   scroll Down N lines (default: half a screen)
+|CTRL-E|	CTRL-E		   scroll N lines upwards (N lines Extra)
+|CTRL-F|	CTRL-F		1  scroll N screens Forward
+|CTRL-G|	CTRL-G		   display current file name and position
+|<BS>|		<BS>		1  same as "h"
+|CTRL-H|	CTRL-H		1  same as "h"
+|<Tab>|		<Tab>		1  go to N newer entry in jump list
+|CTRL-I|	CTRL-I		1  same as <Tab>
+|<NL>|		<NL>		1  same as "j"
+|CTRL-J|	CTRL-J		1  same as "j"
+		CTRL-K		   not used
+|CTRL-L|	CTRL-L		   redraw screen
+|<CR>|		<CR>		1  cursor to the first CHAR N lines lower
+|CTRL-M|	CTRL-M		1  same as <CR>
+|CTRL-N|	CTRL-N		1  same as "j"
+|CTRL-O|	CTRL-O		1  go to N older entry in jump list
+|CTRL-P|	CTRL-P		1  same as "k"
+		CTRL-Q		   (used for terminal control flow)
+|CTRL-R|	CTRL-R		2  redo changes which were undone with 'u'
+		CTRL-S		   (used for terminal control flow)
+|CTRL-T|	CTRL-T		   jump to N older Tag in tag list
+|CTRL-U|	CTRL-U		   scroll N lines Upwards (default: half a
+				   screen)
+|CTRL-V|	CTRL-V		   start blockwise Visual mode
+|CTRL-W|	CTRL-W {char}	   window commands, see |CTRL-W|
+|CTRL-X|	CTRL-X		2  subtract N from number at/after cursor
+|CTRL-Y|	CTRL-Y		   scroll N lines downwards
+|CTRL-Z|	CTRL-Z		   suspend program (or start new shell)
+		CTRL-[ <Esc>	   not used
+|CTRL-\_CTRL-N| CTRL-\ CTRL-N	   go to Normal mode (no-op)
+|CTRL-\_CTRL-G| CTRL-\ CTRL-G	   go to mode specified with 'insertmode'
+		CTRL-\ a - z	   reserved for extensions
+		CTRL-\ others      not used
+|CTRL-]|	CTRL-]		   :ta to ident under cursor
+|CTRL-^|	CTRL-^		   edit Nth alternate file (equivalent to
+				   ":e #N")
+		CTRL-_		   not used
+
+|<Space>|	<Space>		1  same as "l"
+|!|		!{motion}{filter}
+				2  filter Nmove text through the {filter}
+				   command
+|!!|		!!{filter}	2  filter N lines through the {filter} command
+|quote|		"{a-zA-Z0-9.%#:-"}  use register {a-zA-Z0-9.%#:-"} for next
+				   delete, yank or put (uppercase to append)
+				   ({.%#:} only work with put)
+|#|		#		1  search backward for the Nth occurrence of
+				   the ident under the cursor
+|$|		$		1  cursor to the end of Nth next line
+|%|		%		1  find the next (curly/square) bracket on
+				   this line and go to its match, or go to
+				   matching comment bracket, or go to matching
+				   preprocessor directive.
+|N%|		{count}%	1  go to N percentage in the file
+|&|		&		2  repeat last :s
+|'|		'{a-zA-Z0-9}	1  cursor to the first CHAR on the line with
+				   mark {a-zA-Z0-9}
+|''|		''		1  cursor to the first CHAR of the line where
+				   the cursor was before the latest jump.
+|'(|		'(		1  cursor to the first CHAR on the line of the
+				   start of the current sentence
+|')|		')		1  cursor to the first CHAR on the line of the
+				   end of the current sentence
+|'<|		'<		1  cursor to the first CHAR of the line where
+				   highlighted area starts/started in the
+				   current buffer.
+|'>|		'>		1  cursor to the first CHAR of the line where
+				   highlighted area ends/ended in the current
+				   buffer.
+|'[|		'[		1  cursor to the first CHAR on the line of the
+				   start of last operated text or start of put
+				   text
+|']|		']		1  cursor to the first CHAR on the line of the
+				   end of last operated text or end of put
+				   text
+|'{|		'{		1  cursor to the first CHAR on the line of the
+				   start of the current paragraph
+|'}|		'}		1  cursor to the first CHAR on the line of the
+				   end of the current paragraph
+|(|		(		1  cursor N sentences backward
+|)|		)		1  cursor N sentences forward
+|star|		*		1  search forward for the Nth occurrence of
+				   the ident under the cursor
+|+|		+		1  same as <CR>
+|,|		,		1  repeat latest f, t, F or T in opposite
+				   direction N times
+|-|		-		1  cursor to the first CHAR N lines higher
+|.|		.		2  repeat last change with count replaced with
+				   N
+|/|		/{pattern}<CR>	1  search forward for the Nth occurrence of
+				   {pattern}
+|/<CR>|		/<CR>		1  search forward for {pattern} of last search
+|count|		0		1  cursor to the first char of the line
+|count|		1		   prepend to command to give a count
+|count|		2			"
+|count|		3			"
+|count|		4			"
+|count|		5			"
+|count|		6			"
+|count|		7			"
+|count|		8			"
+|count|		9			"
+|:|		:		1  start entering an Ex command
+|N:|		{count}:	   start entering an Ex command with range
+				   from current line to N-1 lines down
+|;|		;		1  repeat latest f, t, F or T N times
+|<|		<{motion}	2  shift Nmove lines one 'shiftwidth'
+				   leftwards
+|<<|		<<		2  shift N lines one 'shiftwidth' leftwards
+|=|		={motion}	2  filter Nmove lines through "indent"
+|==|		==		2  filter N lines through "indent"
+|>|		>{motion}	2  shift Nmove lines one 'shiftwidth'
+				   rightwards
+|>>|		>>		2  shift N lines one 'shiftwidth' rightwards
+|?|		?{pattern}<CR>	1  search backward for the Nth previous
+				   occurrence of {pattern}
+|?<CR>|		?<CR>		1  search backward for {pattern} of last search
+|@|		@{a-z}		2  execute the contents of register {a-z}
+				   N times
+|@:|		@:		   repeat the previous ":" command N times
+|@@|		@@		2  repeat the previous @{a-z} N times
+|A|		A		2  append text after the end of the line N times
+|B|		B		1  cursor N WORDS backward
+|C|		["x]C		2  change from the cursor position to the end
+				   of the line, and N-1 more lines [into
+				   buffer x]; synonym for "c$"
+|D|		["x]D		2  delete the characters under the cursor
+				   until the end of the line and N-1 more
+				   lines [into buffer x]; synonym for "d$"
+|E|		E		1  cursor forward to the end of WORD N
+|F|		F{char}		1  cursor to the Nth occurrence of {char} to
+				   the left
+|G|		G		1  cursor to line N, default last line
+|H|		H		1  cursor to line N from top of screen
+|I|		I		2  insert text before the first CHAR on the
+				   line N times
+|J|		J		2  Join N lines; default is 2
+|K|		K		   lookup Keyword under the cursor with
+				   'keywordprg'
+|L|		L		1  cursor to line N from bottom of screen
+|M|		M		1  cursor to middle line of screen
+|N|		N		1  repeat the latest '/' or '?' N times in
+				   opposite direction
+|O|		O		2  begin a new line above the cursor and
+				   insert text, repeat N times
+|P|		["x]P		2  put the text [from buffer x] before the
+				   cursor N times
+|Q|		Q		   switch to "Ex" mode
+|R|		R		2  enter replace mode: overtype existing
+				   characters, repeat the entered text N-1
+				   times
+|S|		["x]S		2  delete N lines [into buffer x] and start
+				   insert; synonym for "^cc" or "0cc",
+				   depending on autoindent
+|T|		T{char}		1  cursor till after Nth occurrence of {char}
+				   to the left
+|U|		U		2  undo all latest changes on one line
+|V|		V		   start linewise Visual mode
+|W|		W		1  cursor N WORDS forward
+|X|		["x]X		2  delete N characters before the cursor [into
+				   buffer x]
+|Y|		["x]Y		   yank N lines [into buffer x]; synonym for
+				   "yy"
+|ZZ|		ZZ		   store current file if modified, and exit
+|ZQ|		ZQ		   exit current file always
+|[|		[{char}		   square bracket command (see below)
+		\		   not used
+|]|		]{char}		   square bracket command (see below)
+|^|		^		1  cursor to the first CHAR of the line
+|_|		_		1  cursor to the first CHAR N - 1 lines lower
+|`|		`{a-zA-Z0-9}	1  cursor to the mark {a-zA-Z0-9}
+|`(|		`(		1  cursor to the start of the current sentence
+|`)|		`)		1  cursor to the end of the current sentence
+|`<|		`<		1  cursor to the start of the highlighted area
+|`>|		`>		1  cursor to the end of the highlighted area
+|`[|		`[		1  cursor to the start of last operated text
+				   or start of putted text
+|`]|		`]		1  cursor to the end of last operated text or
+				   end of putted text
+|``|		``		1  cursor to the position before latest jump
+|`{|		`{		1  cursor to the start of the current paragraph
+|`}|		`}		1  cursor to the end of the current paragraph
+|a|		a		2  append text after the cursor N times
+|b|		b		1  cursor N words backward
+|c|		["x]c{motion}	2  delete Nmove text [into buffer x] and start
+				   insert
+|cc|		["x]cc		2  delete N lines [into buffer x] and start
+				   insert
+|d|		["x]d{motion}	2  delete Nmove text [into buffer x]
+|dd|		["x]dd		2  delete N lines [into buffer x]
+|do|		do		2  same as ":diffget"
+|dp|		dp		2  same as ":diffput"
+|e|		e		1  cursor forward to the end of word N
+|f|		f{char}		1  cursor to Nth occurrence of {char} to the
+				   right
+|g|		g{char}		   extended commands, see below
+|h|		h		1  cursor N chars to the left
+|i|		i		2  insert text before the cursor N times
+|j|		j		1  cursor N lines downward
+|k|		k		1  cursor N lines upward
+|l|		l		1  cursor N chars to the right
+|m|		m{A-Za-z}	   set mark {A-Za-z} at cursor position
+|n|		n		1  repeat the latest '/' or '?' N times
+|o|		o		2  begin a new line below the cursor and
+				   insert text, repeat N times
+|p|		["x]p		2  put the text [from register x] after the
+				   cursor N times
+|q|		q{0-9a-zA-Z"}	   record typed characters into named register
+				   {0-9a-zA-Z"} (uppercase to append)
+|q|		q		   (while recording) stops recording
+|q:|		q:		   edit : command-line in command-line window
+|q/|		q/		   edit / command-line in command-line window
+|q?|		q?		   edit ? command-line in command-line window
+|r|		r{char}		2  replace N chars with {char}
+|s|		["x]s		2  (substitute) delete N characters [into
+				   buffer x] and start insert
+|t|		t{char}		1  cursor till before Nth occurrence of {char}
+				   to the right
+|u|		u		2  undo changes
+|v|		v		   start characterwise Visual mode
+|w|		w		1  cursor N words forward
+|x|		["x]x		2  delete N characters under and after the
+				   cursor [into buffer x]
+|y|		["x]y{motion}	   yank Nmove text [into buffer x]
+|yy|		["x]yy		   yank N lines [into buffer x]
+|z|		z{char}		   commands starting with 'z', see below
+|{|		{		1  cursor N paragraphs backward
+|bar|		|		1  cursor to column N
+|}|		}		1  cursor N paragraphs forward
+|~|		~		2  'tildeop' off: switch case of N characters
+				   under cursor and move the cursor N
+				   characters to the right
+|~|		~{motion}	   'tildeop' on: switch case of Nmove text
+|<C-End>|	<C-End>		1  same as "G"
+|<C-Home>|	<C-Home>	1  same as "gg"
+|<C-Left>|	<C-Left>	1  same as "b"
+|<C-LeftMouse>|	<C-LeftMouse>	   ":ta" to the keyword at the mouse click
+|<C-Right>|	<C-Right>	1  same as "w"
+|<C-RightMouse>| <C-RightMouse>	   same as "CTRL-T"
+|<Del>|		["x]<Del>	2  same as "x"
+|N<Del>|	{count}<Del>	   remove the last digit from {count}
+|<Down>|	<Down>		1  same as "j"
+|<End>|		<End>		1  same as "$"
+|<F1>|		<F1>		   same as <Help>
+|<Help>|	<Help>		   open a help window
+|<Home>|	<Home>		1  same as "0"
+|<Insert>|	<Insert>	2  same as "i"
+|<Left>|	<Left>		1  same as "h"
+|<LeftMouse>|	<LeftMouse>	1  move cursor to the mouse click position
+|<MiddleMouse>| <MiddleMouse>	2  same as "P" at the mouse click position
+|<PageDown>|	<PageDown>	   same as CTRL-F
+|<PageUp>|	<PageUp>	   same as CTRL-B
+|<Right>|	<Right>		1  same as "l"
+|<RightMouse>|	<RightMouse>	   start Visual mode, move cursor to the mouse
+				   click position
+|<S-Down>|	<S-Down>	1  same as CTRL-F
+|<S-Left>|	<S-Left>	1  same as "b"
+|<S-LeftMouse>|	<S-LeftMouse>	   same as "*" at the mouse click position
+|<S-Right>|	<S-Right>	1  same as "w"
+|<S-RightMouse>| <S-RightMouse>	   same as "#" at the mouse click position
+|<S-Up>|	<S-Up>		1  same as CTRL-B
+|<Undo>|	<Undo>		2  same as "u"
+|<Up>|		<Up>		1  same as "k"
+|<MouseDown>|	<MouseDown>	   scroll three lines downwards
+|<S-MouseDown>|	<S-MouseDown>	   scroll a full page downwards
+|<MouseUp>|	<MouseUp>	   scroll three lines upwards
+|<S-MouseUp>|	<S-MouseUp>	   scroll a full page upwards
+
+==============================================================================
+2.1 Text objects						*objects*
+
+These can be used after an operator or in Visual mode to select an object.
+
+tag		command		   action in Normal mode	~
+------------------------------------------------------------------------------
+|v_a(|		a(		   same as ab
+|v_a)|		a)		   same as ab
+|v_a<|		a<		   "a <>" from '<' to the matching '>'
+|v_a>|		a>		   same as a<
+|v_aB|		aB		   "a Block" from "[{" to "]}" (with brackets)
+|v_aW|		aW		   "a WORD" (with white space)
+|v_a[|		a[		   "a []" from '[' to the matching ']'
+|v_a]|		a]		   same as a[
+|v_ab|		ab		   "a block" from "[(" to "])" (with braces)
+|v_ap|		ap		   "a paragraph" (with white space)
+|v_as|		as		   "a sentence" (with white space)
+|v_aw|		aw		   "a word" (with white space)
+|v_a{|		a{		   same as aB
+|v_a}|		a}		   same as aB
+|v_i(|		i(		   same as ib
+|v_i)|		i)		   same as ib
+|v_i<|		i<		   "inner <>" from '<' to the matching '>'
+|v_i>|		i>		   same as i<
+|v_iB|		iB		   "inner Block" from "[{" and "]}"
+|v_iW|		iW		   "inner WORD"
+|v_i[|		i[		   "inner []" from '[' to the matching ']'
+|v_i]|		i]		   same as i[
+|v_ib|		ib		   "inner block" from "[(" to "])"
+|v_ip|		ip		   "inner paragraph"
+|v_is|		is		   "inner sentence"
+|v_iw|		iw		   "inner word"
+|v_i{|		i{		   same as iB
+|v_i}|		i}		   same as iB
+
+==============================================================================
+2.2 Window commands						*CTRL-W*
+
+tag		command		   action in Normal mode	~
+------------------------------------------------------------------------------
+|CTRL-W_CTRL-B|	CTRL-W CTRL-B	   same as "CTRL-W b"
+|CTRL-W_CTRL-C|	CTRL-W CTRL-C	   same as "CTRL-W c"
+|CTRL-W_CTRL-D|	CTRL-W CTRL-D	   same as "CTRL-W d"
+|CTRL-W_CTRL-F|	CTRL-W CTRL-F	   same as "CTRL-W f"
+		CTRL-W CTRL-G	   same as "CTRL-W g .."
+|CTRL-W_CTRL-H|	CTRL-W CTRL-H	   same as "CTRL-W h"
+|CTRL-W_CTRL-I|	CTRL-W CTRL-I	   same as "CTRL-W i"
+|CTRL-W_CTRL-J|	CTRL-W CTRL-J	   same as "CTRL-W j"
+|CTRL-W_CTRL-K|	CTRL-W CTRL-K	   same as "CTRL-W k"
+|CTRL-W_CTRL-L|	CTRL-W CTRL-L	   same as "CTRL-W l"
+|CTRL-W_CTRL-N|	CTRL-W CTRL-N	   same as "CTRL-W n"
+|CTRL-W_CTRL-O|	CTRL-W CTRL-O	   same as "CTRL-W o"
+|CTRL-W_CTRL-P|	CTRL-W CTRL-P	   same as "CTRL-W p"
+|CTRL-W_CTRL-Q|	CTRL-W CTRL-Q	   same as "CTRL-W q"
+|CTRL-W_CTRL-R|	CTRL-W CTRL-R	   same as "CTRL-W r"
+|CTRL-W_CTRL-S|	CTRL-W CTRL-S	   same as "CTRL-W s"
+|CTRL-W_CTRL-T|	CTRL-W CTRL-T	   same as "CTRL-W t"
+|CTRL-W_CTRL-V|	CTRL-W CTRL-V	   same as "CTRL-W v"
+|CTRL-W_CTRL-W|	CTRL-W CTRL-W	   same as "CTRL-W w"
+|CTRL-W_CTRL-X|	CTRL-W CTRL-X	   same as "CTRL-W x"
+|CTRL-W_CTRL-Z|	CTRL-W CTRL-Z	   same as "CTRL-W z"
+|CTRL-W_CTRL-]|	CTRL-W CTRL-]	   same as "CTRL-W ]"
+|CTRL-W_CTRL-^|	CTRL-W CTRL-^	   same as "CTRL-W ^"
+|CTRL-W_CTRL-_|	CTRL-W CTRL-_	   same as "CTRL-W _"
+|CTRL-W_+|	CTRL-W +	   increase current window height N lines
+|CTRL-W_-|	CTRL-W -	   decrease current window height N lines
+|CTRL-W_<|	CTRL-W <	   decrease current window width N columns
+|CTRL-W_=|	CTRL-W =	   make all windows the same height
+|CTRL-W_>|	CTRL-W >	   increase current window width N columns
+|CTRL-W_H|	CTRL-W H	   move current window to the far left
+|CTRL-W_J|	CTRL-W J	   move current window to the very bottom
+|CTRL-W_K|	CTRL-W K	   move current window to the very top
+|CTRL-W_L|	CTRL-W L	   move current window to the far right
+|CTRL-W_P|	CTRL-W P	   go to preview window
+|CTRL-W_R|	CTRL-W R	   rotate windows upwards N times
+|CTRL-W_S|	CTRL-W S	   same as "CTRL-W s"
+|CTRL-W_W|	CTRL-W W	   go to N previous window (wrap around)
+|CTRL-W_]|	CTRL-W ]	   split window and jump to tag under cursor
+|CTRL-W_^|	CTRL-W ^	   split current window and edit alternate
+				   file N
+|CTRL-W__|	CTRL-W _	   set current window height to N (default:
+				   very high)
+|CTRL-W_b|	CTRL-W b	   go to bottom window
+|CTRL-W_c|	CTRL-W c	   close current window (like |:close|)
+|CTRL-W_d|	CTRL-W d	   split window and jump to definition under
+				   the cursor
+|CTRL-W_f|	CTRL-W f	   split window and edit file name under the
+				   cursor
+|CTRL-W_g_CTRL-]| CTRL-W g CTRL-]  split window and do |:tjump| to tag under
+				   cursor
+|CTRL-W_g]|	CTRL-W g ]	   split window and do |:tselect| for tag
+				   under cursor
+|CTRL-W_g}|	CTRL-W g }	   do a |:ptjump| to the tag under the cursor
+|CTRL-W_h|	CTRL-W h	   go to Nth left window (stop at first window)
+|CTRL-W_i|	CTRL-W i	   split window and jump to declaration of
+				   identifier under the cursor
+|CTRL-W_j|	CTRL-W j	   go N windows down (stop at last window)
+|CTRL-W_k|	CTRL-W k	   go N windows up (stop at first window)
+|CTRL-W_l|	CTRL-W l	   go to Nth right window (stop at last window)
+|CTRL-W_n|	CTRL-W n	   open new window, N lines high
+|CTRL-W_o|	CTRL-W o	   close all but current window (like |:only|)
+|CTRL-W_p|	CTRL-W p	   go to previous (last accessed) window
+|CTRL-W_q|	CTRL-W q	   quit current window (like |:quit|)
+|CTRL-W_r|	CTRL-W r	   rotate windows downwards N times
+|CTRL-W_s|	CTRL-W s	   split current window in two parts, new
+				   window N lines high
+|CTRL-W_t|	CTRL-W t	   go to top window
+|CTRL-W_v|	CTRL-W v	   split current window vertically, new window
+				   N lines wide
+|CTRL-W_w|	CTRL-W w	   go to N next window (wrap around)
+|CTRL-W_x|	CTRL-W x	   exchange current window with window N
+				   (default: next window)
+|CTRL-W_z|	CTRL-W z	   close preview window
+|CTRL-W_bar|	CTRL-W |	   set window width to N columns
+|CTRL-W_}|	CTRL-W }	   show tag under cursor in preview window
+|CTRL-W_<Down>|	CTRL-W <Down>	   same as "CTRL-W j"
+|CTRL-W_<Up>|	CTRL-W <Up>	   same as "CTRL-W k"
+|CTRL-W_<Left>|	CTRL-W <Left>	   same as "CTRL-W h"
+|CTRL-W_<Right>| CTRL-W <Right>	   same as "CTRL-W l"
+
+==============================================================================
+2.3 Square bracket commands					*[* *]*
+
+tag		char	      note action in Normal mode	~
+------------------------------------------------------------------------------
+|[_CTRL-D|	[ CTRL-D	   jump to first #define found in current and
+				   included files matching the word under the
+				   cursor, start searching at beginning of
+				   current file
+|[_CTRL-I|	[ CTRL-I	   jump to first line in current and included
+				   files that contains the word under the
+				   cursor, start searching at beginning of
+				   current file
+|[#|		[#		1  cursor to N previous unmatched #if, #else
+				   or #ifdef
+|['|		['		1  cursor to previous lowercase mark, on first
+				   non-blank
+|[(|		[(		1  cursor N times back to unmatched '('
+|[star|		[*		1  same as "[/"
+|[`|		[`		1  cursor to previous lowercase mark
+|[/|		[/		1  cursor to N previous start of a C comment
+|[D|		[D		   list all defines found in current and
+				   included files matching the word under the
+				   cursor, start searching at beginning of
+				   current file
+|[I|		[I		   list all lines found in current and
+				   included files that contain the word under
+				   the cursor, start searching at beginning of
+				   current file
+|[P|		[P		2  same as "[p"
+|[[|		[[		1  cursor N sections backward
+|[]|		[]		1  cursor N SECTIONS backward
+|[c|		[c		1  cursor N times backwards to start of change
+|[d|		[d		   show first #define found in current and
+				   included files matching the word under the
+				   cursor, start searching at beginning of
+				   current file
+|[f|		[f		   same as "gf"
+|[i|		[i		   show first line found in current and
+				   included files that contains the word under
+				   the cursor, start searching at beginning of
+				   current file
+|[p|		[p		2  like "P", but adjust indent to current line
+|[m|		[m		1  cursor N times back to start of member
+				   function
+|[z|		[z		1  move to start of open fold
+|[{|		[{		1  cursor N times back to unmatched '{'
+|[<MiddleMouse> [<MiddleMouse>	2  same as "[p"
+
+|]_CTRL-D|	] CTRL-D	   jump to first #define found in current and
+				   included files matching the word under the
+				   cursor, start searching at cursor position
+|]_CTRL-I|	] CTRL-I	   jump to first line in current and included
+				   files that contains the word under the
+				   cursor, start searching at cursor position
+|]#|		]#		1  cursor to N next unmatched #endif or #else
+|]'|		]'		1  cursor to next lowercase mark, on first
+				   non-blank
+|])|		])		1  cursor N times forward to unmatched ')'
+|]star|		]*		1  same as "]/"
+|]`|		]`		1  cursor to next lowercase mark
+|]/|		]/		1  cursor to N next end of a C comment
+|]D|		]D		   list all #defines found in current and
+				   included files matching the word under the
+				   cursor, start searching at cursor position
+|]I|		]I		   list all lines found in current and
+				   included files that contain the word under
+				   the cursor, start searching at cursor
+				   position
+|]P|		]P		2  same as "[p"
+|][|		][		1  cursor N SECTIONS forward
+|]]|		]]		1  cursor N sections forward
+|]c|		]c		1  cursor N times forward to start of change
+|]d|		]d		   show first #define found in current and
+				   included files matching the word under the
+				   cursor, start searching at cursor position
+|]f|		]f		   same as "gf"
+|]i|		]i		   show first line found in current and
+				   included files that contains the word under
+				   the cursor, start searching at cursor
+				   position
+|]p|		]p		2  like "p", but adjust indent to current line
+|]m|		]m		1  cursor N times forward to end of member
+				   function
+|]z|		]z		1  move to end of open fold
+|]}|		]}		1  cursor N times forward to unmatched '}'
+|]<MiddleMouse> ]<MiddleMouse>	2  same as "]p"
+
+==============================================================================
+2.4 Commands starting with 'g'						*g*
+
+tag		char	      note action in Normal mode	~
+------------------------------------------------------------------------------
+|g_CTRL-A|	g CTRL-A	   only when compiled with MEM_PROFILE
+				   defined: dump a memory profile
+|g_CTRL-G|	g CTRL-G	   show information about current cursor
+				   position
+|g_CTRL-H|	g CTRL-H	   start Select block mode
+|g_CTRL-]|	g CTRL-]	   |:tjump| to the tag under the cursor
+|g#|		g#		1  like "#", but without using "\<" and "\>"
+|g$|		g$		1  when 'wrap' off go to rightmost character of
+				   the current line that is on the screen;
+				   when 'wrap' on go to the rightmost character
+				   of the current screen line
+|g&|		g&		2  repeat last ":s" on all lines
+|g'|		g'{mark}	1  like |'| but without changing the jumplist
+|g`|		g`{mark}	1  like |`| but without changing the jumplist
+|gstar|		g*		1  like "*", but without using "\<" and "\>"
+|g0|		g0		1  when 'wrap' off go to leftmost character of
+				   the current line that is on the screen;
+				   when 'wrap' on go to the leftmost character
+				   of the current screen line
+|g8|		g8		   print hex value of bytes used in UTF-8
+				   character under the cursor
+|g?|		g?		2  Rot13 encoding operator
+|g?g?|		g??		2  Rot13 encode current line
+|g?g?|		g?g?		2  Rot13 encode current line
+|gD|		gD		1  go to definition of word under the cursor
+				   in current file
+|gE|		gE		1  go backwards to the end of the previous
+				   WORD
+|gH|		gH		   start Select line mode
+|gI|		gI		2  like "I", but always start in column 1
+|gJ|		gJ		2  join lines without inserting space
+|gP|		["x]gP		2  put the text [from register x] before the
+				   cursor N times, leave the cursor after it
+|gR|		gR		2  enter Virtual Replace mode
+|gU|		gU{motion}	2  make Nmove text uppercase
+|gV|		gV		   don't reselect the previous Visual area
+				   when executing a mapping or menu in Select
+				   mode
+|g]|		g]		   :tselect on the tag under the cursor
+|g^|		g^		1  when 'wrap' off go to leftmost non-white
+				   character of the current line that is on
+				   the screen; when 'wrap' on go to the
+				   leftmost non-white character of the current
+				   screen line
+|ga|		ga		   print ascii value of character under the
+				   cursor
+|gd|		gd		1  go to definition of word under the cursor
+				   in current function
+|ge|		ge		1  go backwards to the end of the previous
+				   word
+|gf|		gf		   start editing the file whose name is under
+				   the cursor
+|gg|		gg		1  cursor to line N, default first line
+|gh|		gh		   start Select mode
+|gi|		gi		2  like "i", but first move to the |'^| mark
+|gj|		gj		1  like "j", but when 'wrap' on go N screen
+				   lines down
+|gk|		gk		1  like "k", but when 'wrap' on go N screen
+				   lines up
+|gm|		gm		1  go to character at middle of the screenline
+|go|		go		1  cursor to byte N in the buffer
+|gp|		["x]gp		2  put the text [from register x] after the
+				   cursor N times, leave the cursor after it
+|gq|		gq{motion}	2  format Nmove text
+|gr|		gr{char}	2  virtual replace N chars with {char}
+|gs|		gs		   go to sleep for N seconds (default 1)
+|gu|		gu{motion}	2  make Nmove text lowercase
+|gv|		gv		   reselect the previous Visual area
+|gw|		gw{motion}	2  format Nmove text and keep cursor
+|g~|		g~{motion}	2  swap case for Nmove text
+|g<Down>|	g<Down>		1  same as "gj"
+|g<End>|	g<End>		1  same as "g$"
+|g<Home>|	g<Home>		1  same as "g0"
+|g<LeftMouse>|	g<LeftMouse>	   same as <C-LeftMouse>
+		g<MiddleMouse>	   same as <C-MiddleMouse>
+|g<RightMouse>|	g<RightMouse>	   same as <C-RightMouse>
+|g<Up>|		g<Up>		1  same as "gk"
+
+==============================================================================
+2.5 Commands starting with 'z'						*z*
+
+tag		char	      note action in Normal mode	~
+------------------------------------------------------------------------------
+|z<CR>|		z<CR>		   redraw, cursor line to top of window,
+				   cursor on first non-blank
+|zN<CR>|	z{height}<CR>	   redraw, make window {height} lines high
+|z+|		z+		   cursor on line N (default line below
+				   window), otherwise like "z<CR>"
+|z-|		z-		   redraw, cursor line at bottom of window,
+				   cursor on first non-blank
+|z.|		z.		   redraw, cursor line to center of window,
+				   cursor on first non-blank
+|zA|		zA		   open a closed fold or close an open fold
+				   recursively
+|zC|		zC		   close folds recursively
+|zD|		zD		   delete folds recursively
+|zE|		zE		   eliminate all folds
+|zF|		zF		   create a fold for N lines
+|zM|		zM		   set 'foldlevel' to zero
+|zN|		zN		   set 'foldenable'
+|zO|		zO		   open folds recursively
+|zR|		zR		   set 'foldlevel' to the deepest fold
+|zX|		zX		   re-apply 'foldlevel'
+|z^|		z^		   cursor on line N (default line above
+				   window), otherwise like "z-"
+|za|		za		   open a closed fold, close an open fold
+|zb|		zb		   redraw, cursor line at bottom of window
+|zc|		zc		   close a fold
+|zd|		zd		   delete a fold
+|ze|		ze		   when 'wrap' off scroll horizontally to
+				   position the cursor at the end (right side)
+				   of the screen
+|zf|		zf{motion}	   create a fold for Nmove text
+|zh|		zh		   when 'wrap' off scroll screen N characters
+				   to the right
+|zi|		zi		   toggle 'foldenable'
+|zj|		zj		1  move to the start of the next fold
+|zk|		zk		1  move to the end of the previous fold
+|zl|		zl		   when 'wrap' off scroll screen N characters
+				   to the left
+|zm|		zm		   subtract one from 'foldlevel'
+|zn|		zn		   reset 'foldenable'
+|zo|		zo		   open fold
+|zr|		zr		   add one to 'foldlevel'
+|zs|		zs		   when 'wrap' off scroll horizontally to
+				   position the cursor at the start (left
+				   side) of the screen
+|zt|		zt		   redraw, cursor line at top of window
+|zv|		zv		   open enough folds to view the cursor line
+|zx|		zx		   re-apply 'foldlevel' and do "zv"
+|zz|		zz		   redraw, cursor line at center of window
+|z<Left>|	z<Left>		   same as "zh"
+|z<Right>|	z<Right>	   same as "zl"
+
+==============================================================================
+3. Visual mode						*visual-index*
+
+Most commands in Visual mode are the same as in Normal mode. The ones listed
+here are those that are different.
+
+tag		command	      note action in Visual mode	~
+------------------------------------------------------------------------------
+|v_CTRL-\_CTRL-N| CTRL-\ CTRL-N	   stop Visual mode
+|v_CTRL-\_CTRL-G| CTRL-\ CTRL-G	   go to mode specified with 'insertmode'
+|v_CTRL-G|	CTRL-G		   toggle between Visual mode and Select mode
+|v_<BS>|	<BS>		2  Select mode: delete highlighted area
+|v_CTRL-H|	CTRL-H		2  same as <BS>
+|v_CTRL-O|	CTRL-O		   switch from Select to Visual mode for one
+				   command
+|v_CTRL-V|	CTRL-V		   make Visual mode blockwise or stop Visual
+				   mode
+|v_CTRL-]|	CTRL-]		   jump to highlighted tag
+|v_!|		!{filter}	2  filter the highlighted lines through the
+				   external command {filter}
+|v_:|		:		   start a command-line with the highlighted
+				   lines as a range
+|v_<|		<		2  shift the highlighted lines one
+				   'shiftwidth' left
+|v_=|		=		2  filter the highlighted lines through the
+				   external program given with the 'equalprg'
+				   option
+|v_>|		>		2  shift the highlighted lines one
+				   'shiftwidth' right
+|v_b_A|		A		2  block mode: append same text in all lines,
+				   after the highlighted area
+|v_C|		C		2  delete the highlighted lines and start
+				   insert
+|v_D|		D		2  delete the highlighted lines
+|v_b_I|		I		2  block mode: insert same text in all lines,
+				   before the highlighted area
+|v_J|		J		2  join the highlighted lines
+|v_K|		K		   run 'keywordprg' on the highlighted area
+|v_O|		O		   Move horizontally to other corner of area.
+		Q		   does not start Ex mode
+|v_R|		R		2  delete the highlighted lines and start
+				   insert
+|v_S|		S		2  delete the highlighted lines and start
+				   insert
+|v_U|		U		2  make highlighted area uppercase
+|v_V|		V		   make Visual mode linewise or stop Visual
+				   mode
+|v_X|		X		2  delete the highlighted lines
+|v_Y|		Y		   yank the highlighted lines
+|v_a(|		a(		   same as ab
+|v_a)|		a)		   same as ab
+|v_a<|		a<		   extend highlighted area with a <> block
+|v_a>|		a>		   same as a<
+|v_aB|		aB		   extend highlighted area with a {} block
+|v_aW|		aW		   extend highlighted area with "a WORD"
+|v_a[|		a[		   extend highlighted area with a [] block
+|v_a]|		a]		   same as a[
+|v_ab|		ab		   extend highlighted area with a () block
+|v_ap|		ap		   extend highlighted area with a paragraph
+|v_as|		as		   extend highlighted area with a sentence
+|v_aw|		aw		   extend highlighted area with "a word"
+|v_a{|		a{		   same as aB
+|v_a}|		a}		   same as aB
+|v_c|		c		2  delete highlighted area and start insert
+|v_d|		d		2  delete highlighted area
+|v_gJ|		gJ		2  join the highlighted lines without
+				   inserting spaces
+|v_gq|		gq		2  format the highlighted lines
+|v_gv|		gv		   exchange current and previous highlighted
+				   area
+|v_i(|		i(		   same as ib
+|v_i)|		i)		   same as ib
+|v_i<|		i<		   extend highlighted area with inner <> block
+|v_i>|		i>		   same as i<
+|v_iB|		iB		   extend highlighted area with inner {} block
+|v_iW|		iW		   extend highlighted area with "inner WORD"
+|v_i[|		i[		   extend highlighted area with inner [] block
+|v_i]|		i]		   same as i[
+|v_ib|		ib		   extend highlighted area with inner () block
+|v_ip|		ip		   extend highlighted area with inner paragraph
+|v_is|		is		   extend highlighted area with inner sentence
+|v_iw|		iw		   extend highlighted area with "inner word"
+|v_i{|		i{		   same as iB
+|v_i}|		i}		   same as iB
+|v_o|		o		   move cursor to other corner of area
+|v_r|		r		2  delete highlighted area and start insert
+|v_s|		s		2  delete highlighted area and start insert
+|v_u|		u		2  make highlighted area lowercase
+|v_v|		v		   make Visual mode characterwise or stop
+				   Visual mode
+|v_x|		x		2  delete the highlighted area
+|v_y|		y		   yank the highlighted area
+|v_~|		~		2  swap case for the highlighted area
+
+==============================================================================
+4. Command-line editing					*ex-edit-index*
+
+Get to the command-line with the ':', '!', '/' or '?' commands.
+Normal characters are inserted at the current cursor position.
+"Completion" below refers to context-sensitive completion.  It will complete
+file names, tags, commands etc. as appropriate.
+
+		CTRL-@		not used
+|c_CTRL-A|	CTRL-A		do completion on the pattern in front of the
+				cursor and insert all matches
+|c_CTRL-B|	CTRL-B		cursor to begin of command-line
+|c_CTRL-C|	CTRL-C		same as <ESC>
+|c_CTRL-D|	CTRL-D		list completions that match the pattern in
+				front of the cursor
+|c_CTRL-E|	CTRL-E		cursor to end of command-line
+|'cedit'|	CTRL-F		default value for 'cedit': opens the
+				command-line window; otherwise not used
+		CTRL-G		not used
+|c_<BS>|	<BS>		delete the character in front of the cursor
+|c_digraph|	{char1} <BS> {char2}
+				enter digraph when 'digraph' is on
+|c_CTRL-H|	CTRL-H		same as <BS>
+|c_<Tab>|	<Tab>		if 'wildchar' is <Tab>: Do completion on
+				the pattern in front of the cursor
+|c_<S-Tab>|	<S-Tab>		same as CTRL-P
+|c_wildchar|	'wildchar'	Do completion on the pattern in front of the
+				cursor (default: <Tab>)
+|c_CTRL-I|	CTRL-I		same as <Tab>
+|c_<NL>|	<NL>		same as <CR>
+|c_CTRL-J|	CTRL-J		same as <CR>
+|c_CTRL-K|	CTRL-K {char1} {char2}
+				enter digraph
+|c_CTRL-L|	CTRL-L		do completion on the pattern in front of the
+				cursor and insert the longest common part
+|c_<CR>|	<CR>		execute entered command
+|c_<CR>|	CTRL-M		same as <CR>
+|c_CTRL-N|	CTRL-N		after using 'wildchar' with multiple matches:
+				go to next match, otherwise: same as <Down>
+		CTRL-O		not used
+|c_CTRL-P|	CTRL-P		after using 'wildchar' with multiple matches:
+				go to previous match, otherwise: same as <Up>
+|c_CTRL-Q|	CTRL-Q		same as CTRL-V, unless it's used for terminal
+				control flow
+|c_CTRL-R|	CTRL-R {0-9a-z"%#*:= CTRL-F CTRL-P CTRL-W CTRL-A}
+				insert the contents of a register or object
+				under the cursor as if typed
+|c_CTRL-R_CTRL-R| CTRL-R CTRL-R {0-9a-z"%#*:= CTRL-F CTRL-P CTRL-W CTRL-A}
+				insert the contents of a register or object
+				under the cursor literally
+		CTRL-S		(used for terminal control flow)
+		CTRL-T		not used
+|c_CTRL-U|	CTRL-U		remove all characters
+|c_CTRL-V|	CTRL-V		insert next non-digit literally, insert three
+				digit decimal number as a single byte.
+|c_CTRL-W|	CTRL-W		delete the word in front of the cursor
+		CTRL-X		not used (reserved for completion)
+		CTRL-Y		copy (yank) modeless selection
+		CTRL-Z		not used (reserved for suspend)
+|c_<Esc>|	<Esc>		abandon command-line without executing it
+|c_<Esc>|	CTRL-[		same as <Esc>
+|c_CTRL-\_CTRL-N| CTRL-\ CTRL-N	 go to Normal mode, abandon command-line
+|c_CTRL-\_CTRL-G| CTRL-\ CTRL-G	 go to mode specified with 'insertmode',
+				abandon command-line
+		CTRL-\ a - d	reserved for extensions
+|c_CTRL-\_e|	CTRL-\ e {expr} replace the command line with the result of
+				{expr}
+		CTRL-\ f - z	reserved for extensions
+		CTRL-\ others	not used
+		CTRL-]		not used
+|c_CTRL-^|	CTRL-^		toggle use of |:lmap| mappings
+|c_CTRL-_|	CTRL-_		when 'allowrevins' set: change language
+				(Hebrew, Farsi)
+|c_<Del>|	<Del>		delete the character under the cursor
+
+|c_<Left>|	<Left>		cursor left
+|c_<S-Left>|	<S-Left>	cursor one word left
+|c_<C-Left>|	<C-Left>	cursor one word left
+|c_<Right>|	<Right>		cursor right
+|c_<S-Right>|	<S-Right>	cursor one word right
+|c_<C-Right>|	<C-Right>	cursor one word right
+|c_<Up>|	<Up>		recall previous command-line from history that
+				matches pattern in front of the cursor
+|c_<S-Up>|	<S-Up>		recall previous command-line from history
+|c_<Down>|	<Down>		recall next command-line from history that
+				matches pattern in front of the cursor
+|c_<S-Down>|	<S-Down>	recall next command-line from history
+|c_<Home>|	<Home>		cursor to start of command-line
+|c_<End>|	<End>		cursor to end of command-line
+|c_<PageDown>|	<PageDown>	same as <S-Down>
+|c_<PageUp>|	<PageUp>	same as <S-Up>
+|c_<Insert>|	<Insert>	toggle insert/overstrike mode
+|c_<LeftMouse>|	<LeftMouse>	cursor at mouse click
+
+You found it, Arthur!				*holy-grail*
+
+==============================================================================
+5. EX commands					*ex-cmd-index* *:index*
+
+This is a brief but complete listing of all the ":" commands, without
+mentioning any arguments.  The optional part of the command name is inside [].
+The commands are sorted on the non-optional part of their name.
+
+|:!|		:!		filter lines or execute an external command
+|:!!|		:!!		repeat last ":!" command
+|:#|		:#		same as ":number"
+|:&|		:&		repeat last ":substitute"
+|:star|		:*		execute contents of a register
+|:<|		:<		shift lines one 'shiftwidth' left
+|:=|		:=		print the cursor line number
+|:>|		:>		shift lines one 'shiftwidth' right
+|:@|		:@		execute contents of a register
+|:@@|		:@@		repeat the previous ":@"
+|:Next|		:N[ext]		go to previous file in the argument list
+|:Print|	:P[rint]	print lines
+|:X|		:X		ask for encryption key
+|:append|	:a[ppend]	append text
+|:abbreviate|	:ab[breviate]	enter abbreviation
+|:abclear|	:abc[lear]	remove all abbreviations
+|:aboveleft|	:abo[veleft]	make split window appear left or above
+|:all|		:al[l]		open a window for each file in the argument
+				list
+|:amenu|	:am[enu]	enter new menu item for all modes
+|:anoremenu|	:an[oremenu]	enter a new menu for all modes that will not
+				be remapped
+|:args|		:ar[gs]		print the argument list
+|:argadd|	:arga[dd]	add items to the argument list
+|:argdelete|	:argd[elete]	delete items from the argument list
+|:argedit|	:arge[dit]	add item to the argument list and edit it
+|:argdo|	:argdo		do a command on all items in the argument list
+|:argglobal|	:argg[lobal]	define the global argument list
+|:arglocal|	:argl[ocal]	define a local argument list
+|:argument|	:argu[ment]	go to specific file in the argument list
+|:ascii|	:as[cii]	print ascii value of character under the cursor
+|:autocmd|	:au[tocmd]	enter or show autocommands
+|:augroup|	:aug[roup]	select the autocommand group to use
+|:aunmenu|	:aun[menu]	remove menu for all modes
+|:buffer|	:b[uffer]	go to specific buffer in the buffer list
+|:bNext|	:bN[ext]	go to previous buffer in the buffer list
+|:ball|		:ba[ll]		open a window for each buffer in the buffer list
+|:badd|		:bad[d]		add buffer to the buffer list
+|:bdelete|	:bd[elete]	remove a buffer from the buffer list
+|:behave|	:be[have]	set mouse and selection behavior
+|:belowright|	:bel[owright]	make split window appear right or below
+|:bfirst|	:bf[irst]	go to first buffer in the buffer list
+|:blast|	:bl[ast]	go to last buffer in the buffer list
+|:bmodified|	:bm[odified]	go to next buffer in the buffer list that has
+				been modified
+|:bnext|	:bn[ext]	go to next buffer in the buffer list
+|:botright|	:bo[tright]	make split window appear at bottom or far right
+|:bprevious|	:bp[revious]	go to previous buffer in the buffer list
+|:brewind|	:br[ewind]	go to first buffer in the buffer list
+|:break|	:brea[k]	break out of while loop
+|:breakadd|	:breaka[dd]	add a debugger breakpoint
+|:breakdel|	:breakd[el]	delete a debugger breakpoint
+|:breaklist|	:breakl[ist]	list debugger breakpoints
+|:browse|	:bro[wse]	use file selection dialog
+|:bufdo|	:bufdo		execute command in each listed buffer
+|:buffers|	:buffers	list all files in the buffer list
+|:bunload|	:bun[load]	unload a specific buffer
+|:bwipeout|	:bw[ipeout]	really delete a buffer
+|:change|	:c[hange]	replace a line or series of lines
+|:cNext|	:cN[ext]	go to previous error
+|:cNfile|	:cNf[ile]	go to last error in previous file
+|:cabbrev|	:ca[bbrev]	like ":abbreviate" but for Command-line mode
+|:cabclear|	:cabc[lear]	clear all abbreviations for Command-line mode
+|:call|		:cal[l]		call a function
+|:catch|	:cat[ch]	part of a :try command
+|:cc|		:cc		go to specific error
+|:cclose|	:ccl[ose]	close quickfix window
+|:cd|		:cd		change directory
+|:center|	:ce[nter]	format lines at the center
+|:cfile|	:cf[ile]	read file with error messages and jump to first
+|:cfirst|	:cfir[st]	go to the specified error, default first one
+|:cgetfile|	:cg[etfile]	read file with error messages
+|:changes|	:cha[nges]	print the change list
+|:chdir|	:chd[ir]	change directory
+|:checkpath|	:che[ckpath]	list included files
+|:checktime|	:checkt[ime]	check timestamp of loaded buffers
+|:clist|	:cl[ist]	list all errors
+|:clast|	:cla[st]	go to the specified error, default last one
+|:close|	:clo[se]	close current window
+|:cmap|		:cm[ap]		like ":map" but for Command-line mode
+|:cmapclear|	:cmapc[lear]	clear all mappings for Command-line mode
+|:cmenu|	:cme[nu]	add menu for Command-line mode
+|:cnext|	:cn[ext]	go to next error
+|:cnewer|	:cnew[er]	go to newer error list
+|:cnfile|	:cnf[ile]	go to first error in next file
+|:cnoremap|	:cno[remap]	like ":noremap" but for Command-line mode
+|:cnoreabbrev|	:cnorea[bbrev]	like ":noreabbrev" but for Command-line mode
+|:cnoremenu|	:cnoreme[nu]	like ":noremenu" but for Command-line mode
+|:copy|		:co[py]		copy lines
+|:colder|	:col[der]	go to older error list
+|:colorscheme|	:colo[rscheme]	load a specific color scheme
+|:command|	:com[mand]	create user-defined command
+|:comclear|	:comc[lear]	clear all user-defined commands
+|:compiler|	:comp[iler]	do settings for a specific compiler
+|:continue|	:con[tinue]	go back to :while
+|:confirm|	:conf[irm]	prompt user when confirmation required
+|:copen|	:cope[n]	open quickfix window
+|:cprevious|	:cp[revious]	go to previous error
+|:cpfile|	:cpf[ile]	go to last error in previous file
+|:cquit|	:cq[uit]	quit Vim with an error code
+|:crewind|	:cr[ewind]	go to the specified error, default first one
+|:cscope|	:cs[cope]       execute cscope command
+|:cstag|	:cst[ag]	use cscope to jump to a tag
+|:cunmap|	:cu[nmap]	like ":unmap" but for Command-line mode
+|:cunabbrev|	:cuna[bbrev]	like ":unabbrev" but for Command-line mode
+|:cunmenu|	:cunme[nu]	remove menu for Command-line mode
+|:cwindow|	:cw[indow]	open or close quickfix window
+|:delete|	:d[elete]	delete lines
+|:debug|	:deb[ug]	run a command in debugging mode
+|:debuggreedy|	:debugg[reedy]	read debug mode commands from normal input
+|:delcommand|	:delc[ommand]	delete user-defined command
+|:delfunction|	:delf[unction]	delete a user function
+|:diffupdate|	:dif[fupdate]	update 'diff' buffers
+|:diffget|	:diffg[et]	remove differences in current buffer
+|:diffpatch|	:diffp[atch]	apply a patch and show differences
+|:diffput|	:diffpu[t]	remove differences in other buffer
+|:diffsplit|	:diffs[plit]	show differences with another file
+|:diffthis|	:diffthis	make current window a diff window
+|:digraphs|	:dig[raphs]	show or enter digraphs
+|:display|	:di[splay]	display registers
+|:djump|	:dj[ump]	jump to #define
+|:dlist|	:dl[ist]	list #defines
+|:doautocmd|	:do[autocmd]	apply autocommands to current buffer
+|:doautoall|	:doautoa[ll]	apply autocommands for all loaded buffers
+|:drop|		:dr[op]		jump to window editing file or edit file in
+				current window
+|:dsearch|	:ds[earch]	list one #define
+|:dsplit|	:dsp[lit]	split window and jump to #define
+|:edit|		:e[dit]		edit a file
+|:echo|		:ec[ho]		echoes the result of expressions
+|:echoerr|	:echoe[rr]	like :echo, show like an error and use history
+|:echohl|	:echoh[l]	set highlighting for echo commands
+|:echomsg|	:echom[sg]	same as :echo, put message in history
+|:echon|	:echon		same as :echo, but without <EOL>
+|:else|		:el[se]		part of an :if command
+|:elseif|	:elsei[f]	part of an :if command
+|:emenu|	:em[enu]	execute a menu by name
+|:endif|	:en[dif]	end previous :if
+|:endfunction|	:endf[unction]	end of a user function
+|:endtry|	:endt[ry]	end previous :try
+|:endwhile|	:endw[hile]	end previous :while
+|:enew|		:ene[w]		edit a new, unnamed buffer
+|:ex|		:ex		same as ":edit"
+|:execute|	:exe[cute]	execute result of expressions
+|:exit|		:exi[t]		same as ":xit"
+|:file|		:f[ile]		show or set the current file name
+|:files|	:files		list all files in the buffer list
+|:filetype|	:filet[ype]	switch file type detection on/off
+|:find|		:fin[d]		find file in 'path' and edit it
+|:finally|	:fina[lly]	part of a :try command
+|:finish|	:fini[sh]	quit sourcing a Vim script
+|:first|	:fir[st]	go to the first file in the argument list
+|:fixdel|	:fix[del]	set key code of <Del>
+|:fold|		:fo[ld]		create a fold
+|:foldclose|	:foldc[lose]	close folds
+|:folddoopen|	:foldd[oopen]	execute command on lines not in a closed fold
+|:folddoclosed|	:folddoc[losed]	execute command on lines in a closed fold
+|:foldopen|	:foldo[pen]	open folds
+|:function|	:fu[nction]	define a user function
+|:global|	:g[lobal]	execute commands for matching lines
+|:goto|		:go[to]		go to byte in the buffer
+|:grep|		:gr[ep]		run 'grepprg' and jump to first match
+|:grepadd|	:grepa[dd]	like grep, but append to current list
+|:gui|		:gu[i]		start the GUI
+|:gvim|		:gv[im]		start the GUI
+|:hardcopy|	:ha[rdcopy]	send text to the printer
+|:help|		:h[elp]		open a help window
+|:helpfind|	:helpf[ind]	dialog to open a help window
+|:helpgrep|	:helpg[rep]	like ":grep" but searches help files
+|:helptags|	:helpt[ags]	generate help tags for a directory
+|:highlight|	:hi[ghlight]	specify highlighting methods
+|:hide|		:hid[e]		hide current buffer for a command
+|:history|	:his[tory]	print a history list
+|:insert|	:i[nsert]	insert text
+|:iabbrev|	:ia[bbrev]	like ":abbrev" but for Insert mode
+|:iabclear|	:iabc[lear]	like ":abclear" but for Insert mode
+|:if|		:if		execute commands when condition met
+|:ijump|	:ij[ump]	jump to definition of identifier
+|:ilist|	:il[ist]	list lines where identifier matches
+|:imap|		:im[ap]		like ":map" but for Insert mode
+|:imapclear|	:imapc[lear]	like ":mapclear" but for Insert mode
+|:imenu|	:ime[nu]	add menu for Insert mode
+|:inoremap|	:ino[remap]	like ":noremap" but for Insert mode
+|:inoreabbrev|	:inorea[bbrev]	like ":noreabbrev" but for Insert mode
+|:inoremenu|	:inoreme[nu]	like ":noremenu" but for Insert mode
+|:intro|	:int[ro]	print the introductory message
+|:isearch|	:is[earch]	list one line where identifier matches
+|:isplit|	:isp[lit]	split window and jump to definition of
+				identifier
+|:iunmap|	:iu[nmap]	like ":unmap" but for Insert mode
+|:iunabbrev|	:iuna[bbrev]	like ":unabbrev" but for Insert mode
+|:iunmenu|	:iunme[nu]	remove menu for Insert mode
+|:join|		:j[oin]		join lines
+|:jumps|	:ju[mps]	print the jump list
+|:k|		:k		set a mark
+|:keepmarks|	:kee[pmarks]	following command keeps marks where they are
+|:keepjumps|	:keepj[jumps]	following command keeps jumplist and marks
+|:list|		:l[ist]		print lines
+|:last|		:la[st]		go to the last file in the argument list
+|:language|	:lan[guage]	set the language (locale)
+|:lcd|		:lc[d]		change directory locally
+|:lchdir|	:lch[dir]	change directory locally
+|:left|		:le[ft]		left align lines
+|:leftabove|	:lefta[bove]	make split window appear left or above
+|:let|		:let		assign a value to a variable or option
+|:lmap|		:lm[ap]		like ":map!" but includes Lang-Arg mode
+|:lmapclear|	:lmapc[lear]	like ":mapclear!" but includes Lang-Arg mode
+|:lnoremap|	:ln[oremap]	like ":noremap!" but includes Lang-Arg mode
+|:loadkeymap|	:loadk[eymap]	load the following keymaps until EOF
+|:loadview|	:lo[adview]	load view for current window from a file
+|:lockmarks|	:loc[kmarks]	following command keeps marks where they are
+|:ls|		:ls		list all buffers
+|:lunmap|	:lu[nmap]	like ":unmap!" but includes Lang-Arg mode
+|:move|		:m[ove]		move lines
+|:mark|		:ma[rk]		set a mark
+|:make|		:mak[e]		execute external command 'makeprg' and parse
+				error messages
+|:map|		:map		show or enter a mapping
+|:mapclear|	:mapc[lear]	clear all mappings for Normal and Visual mode
+|:marks|	:marks		list all marks
+|:match|	:mat[ch]	define a match to highlight
+|:menu|		:me[nu]		enter a new menu item
+|:menutranslate| :menut[ranslate] add a menu translation item
+|:messages|	:mes[sages]	view previously displayed messages
+|:mkexrc|	:mk[exrc]	write current mappings and settings to a file
+|:mksession|	:mks[ession]	write session info to a file
+|:mkvimrc|	:mkv[imrc]	write current mappings and settings to a file
+|:mkview|	:mkvie[w]	write view of current window to a file
+|:mode|		:mod[e]		show or change the screen mode
+|:next|		:n[ext]		go to next file in the argument list
+|:new|		:new		create a new empty window
+|:nmap|		:nm[ap]		like ":map" but for Normal mode
+|:nmapclear|	:nmapc[lear]	clear all mappings for Normal mode
+|:nmenu|	:nme[nu]	add menu for Normal mode
+|:nnoremap|	:nn[oremap]	like ":noremap" but for Normal mode
+|:nnoremenu|	:nnoreme[nu]	like ":noremenu" but for Normal mode
+|:noremap|	:no[remap]	enter a mapping that will not be remapped
+|:nohlsearch|	:noh[lsearch]	suspend 'hlsearch' highlighting
+|:noreabbrev|	:norea[bbrev]	enter an abbreviation that will not be
+				remapped
+|:noremenu|	:noreme[nu]	enter a menu that will not be remapped
+|:normal|	:norm[al]	execute Normal mode commands
+|:number|	:nu[mber]	print lines with line number
+|:nunmap|	:nun[map]	like ":unmap" but for Normal mode
+|:nunmenu|	:nunme[nu]	remove menu for Normal mode
+|:open|		:o[pen]		start open mode (not implemented)
+|:omap|		:om[ap]		like ":map" but for Operator-pending mode
+|:omapclear|	:omapc[lear]	remove all mappings for Operator-pending mode
+|:omenu|	:ome[nu]	add menu for Operator-pending mode
+|:only|		:on[ly]		close all windows except current one
+|:onoremap|	:ono[remap]	like ":noremap" but for Operator-pending mode
+|:onoremenu|	:onoreme[nu]	like ":noremenu" but for Operator-pending mode
+|:options|	:opt[ions]	open the options-window
+|:ounmap|	:ou[nmap]	like ":unmap" but for Operator-pending mode
+|:ounmenu|	:ounme[nu]	remove menu for Operator-pending mode
+|:print|	:p[rint]	print lines
+|:pclose|	:pc[lose]	close preview window
+|:pedit|	:ped[it]	edit file in the preview window
+|:perl|		:pe[rl]		execute Perl command
+|:perldo|	:perld[o]	execute Perl command for each line
+|:pop|		:po[p]		jump to older entry in tag stack
+|:popup|	:pop[up]	popup a menu by name
+|:ppop|		:pp[op]		":pop" in preview window
+|:preserve|	:pre[serve]	write all text to swap file
+|:previous|	:prev[ious]	go to previous file in argument list
+|:promptfind|	:pro[mptfind]	Search dialog
+|:promptrepl|	:promptr[epl]	Search/Replace dialog
+|:psearch|	:ps[earch]	like ":ijump" but shows match in preview window
+|:ptag|		:pt[ag]		show tag in preview window
+|:ptNext|	:ptN[ext]	|:tNext| in preview window
+|:ptfirst|	:ptf[irst]	|:trewind| in preview window
+|:ptjump|	:ptj[ump]	|:tjump| and show tag in preview window
+|:ptlast|	:ptl[ast]	|:tlast| in preview window
+|:ptnext|	:ptn[ext]	|:tnext| in preview window
+|:ptprevious|	:ptp[revious]	|:tprevious| in preview window
+|:ptrewind|	:ptr[ewind]	|:trewind| in preview window
+|:ptselect|	:pts[elect]	|:tselect| and show tag in preview window
+|:put|		:pu[t]		insert contents of register in the text
+|:pwd|		:pw[d]		print current directory
+|:python|	:py[thon]	execute Python command
+|:pyfile|	:pyf[ile]	execute Python script file
+|:quit|		:q[uit]		quit current window (when one window quit Vim)
+|:quitall|	:quita[ll]	quit Vim
+|:qall|		:qa[ll]		quit Vim
+|:read|		:r[ead]		read file into the text
+|:recover|	:rec[over]	recover a file from a swap file
+|:redo|		:red[o]		redo one undone change
+|:redir|	:redi[r]	redirect messages to a file or register
+|:redraw|	:redr[aw]	force a redraw of the display
+|:redrawstatus|	:redraws[tatus]	force a redraw of the status line(s)
+|:registers|	:reg[isters]	display the contents of registers
+|:resize|	:res[ize]	change current window height
+|:retab|	:ret[ab]	change tab size
+|:return|	:retu[rn]	return from a user function
+|:rewind|	:rew[ind]	go to the first file in the argument list
+|:right|	:ri[ght]	right align text
+|:rightbelow|	:rightb[elow]	make split window appear right or below
+|:ruby|		:rub[y]		execute Ruby command
+|:rubydo|	:rubyd[o]	execute Ruby command for each line
+|:rubyfile|	:rubyf[ile]	execute Ruby script file
+|:runtime|	:ru[ntime]	source vim scripts in 'runtimepath'
+|:rviminfo|	:rv[iminfo]	read from viminfo file
+|:substitute|	:s[ubstitute]	find and replace text
+|:sNext|	:sN[ext]	split window and go to previous file in
+				argument list
+|:sargument|	:sa[rgument]	split window and go to specific file in
+				argument list
+|:sall|		:sal[l]		open a window for each file in argument list
+|:saveas|	:sav[eas]	save file under another name.
+|:sbuffer|	:sb[uffer]	split window and go to specific file in the
+				buffer list
+|:sbNext|	:sbN[ext]	split window and go to previous file in the
+				buffer list
+|:sball|	:sba[ll]	open a window for each file in the buffer list
+|:sbfirst|	:sbf[irst]	split window and go to first file in the
+				buffer list
+|:sblast|	:sbl[ast]	split window and go to last file in buffer
+				list
+|:sbmodified|	:sbm[odified]	split window and go to modified file in the
+				buffer list
+|:sbnext|	:sbn[ext]	split window and go to next file in the buffer
+				list
+|:sbprevious|	:sbp[revious]	split window and go to previous file in the
+				buffer list
+|:sbrewind|	:sbr[ewind]	split window and go to first file in the
+				buffer list
+|:scriptnames|	:scrip[tnames]	list names of all sourced Vim scripts
+|:scriptencoding| :scripte[ncoding]	encoding used in sourced Vim script
+|:scscope|	:scs[cope]      split window and execute cscope command
+|:set|		:se[t]		show or set options
+|:setfiletype|	:setf[iletype]	set 'filetype', unless it was set already
+|:setglobal|	:setg[lobal]	show global values of options
+|:setlocal|	:setl[ocal]	show or set options locally
+|:sfind|	:sf[ind]	split current window and edit file in 'path'
+|:sfirst|	:sfir[st]	split window and go to first file in the
+				argument list
+|:shell|	:sh[ell]	escape to a shell
+|:simalt|	:sim[alt]	Win32 GUI: simulate Windows ALT key
+|:sign|		:sig[n]		manipulate signs
+|:silent|	:sil[ent]	Run a command silently
+|:sleep|	:sl[eep]	do nothing for a few seconds
+|:slast|	:sla[st]	split window and go to last file in the
+				argument list
+|:smagic|	:sm[agic]	:substitute with 'magic'
+|:snext|	:sn[ext]	split window and go to next file in the
+				argument list
+|:sniff|	:sni[ff]	send request to sniff
+|:snomagic|	:sno[magic]	:substitute with 'nomagic'
+|:source|	:so[urce]	read Vim or Ex commands from a file
+|:split|	:sp[lit]	split current window
+|:sprevious|	:spr[evious]	split window and go to previous file in the
+				argument list
+|:srewind|	:sre[wind]	split window and go to first file in the
+				argument list
+|:stop|		:st[op]		suspend the editor or escape to a shell
+|:stag|		:sta[g]		split window and jump to a tag
+|:startinsert|	:star[tinsert]	start Insert mode
+|:stopinsert||	:stopi[nsert]	stop Insert mode
+|:stjump|	:stj[ump]	do ":tjump" and split window
+|:stselect|	:sts[elect]	do ":tselect" and split window
+|:sunhide|	:sun[hide]	same as ":unhide"
+|:suspend|	:sus[pend]	same as ":stop"
+|:sview|	:sv[iew]	split window and edit file read-only
+|:swapname|	:sw[apname]	show the name of the current swap file
+|:syntax|	:sy[ntax]	syntax highlighting
+|:syncbind|	:sync[bind]	sync scroll binding
+|:t|		:t		same as ":copy"
+|:tNext|	:tN[ext]	jump to previous matching tag
+|:tag|		:ta[g]		jump to tag
+|:tags|		:tags		show the contents of the tag stack
+|:tcl|		:tc[l]		execute Tcl command
+|:tcldo|	:tcld[o]	execute Tcl command for each line
+|:tclfile|	:tclf[ile]	execute Tcl script file
+|:tearoff|	:te[aroff]	tear-off a menu
+|:tfirst|	:tf[irst]	jump to first matching tag
+|:throw|	:th[row]	throw an exception
+|:tjump|	:tj[ump]	like ":tselect", but jump directly when there
+				is only one match
+|:tlast|	:tl[ast]	jump to last matching tag
+|:tmenu|	:tm[enu]	define menu tooltip
+|:tnext|	:tn[ext]	jump to next matching tag
+|:topleft|	:to[pleft]	make split window appear at top or far left
+|:tprevious|	:tp[revious]	jump to previous matching tag
+|:trewind|	:tr[ewind]	jump to first matching tag
+|:try|		:try		execute commands, abort on error or exception
+|:tselect|	:ts[elect]	list matching tags and select one
+|:tunmenu|	:tu[nmenu]	remove menu tooltip
+|:undo|		:u[ndo]		undo last change(s)
+|:unabbreviate|	:una[bbreviate]	remove abbreviation
+|:unhide|	:unh[ide]	open a window for each loaded file in the
+				buffer list
+|:unlet|	:unl[et]	delete variable
+|:unmap|	:unm[ap]	remove mapping
+|:unmenu|	:unme[nu]	remove menu
+|:update|	:up[date]	write buffer if modified
+|:vglobal|	:v[global]	execute commands for not matching lines
+|:version|	:ve[rsion]	print version number and other info
+|:verbose|	:verb[ose]	execute command with 'verbose' set
+|:vertical|	:vert[ical]	make following command split vertically
+|:visual|	:vi[sual]	same as ":edit", but turns off "Ex" mode
+|:view|		:vie[w]		edit a file read-only
+|:vmap|		:vm[ap]		like ":map" but for Visual mode
+|:vmapclear|	:vmapc[lear]	remove all mappings for Visual mode
+|:vmenu|	:vme[nu]	add menu for Visual mode
+|:vnoremap|	:vn[oremap]	like ":noremap" but for Visual mode
+|:vnew|		:vne[w]		create a new empty window, vertically split
+|:vnoremenu|	:vnoreme[nu]	like ":noremenu" but for Visual mode
+|:vsplit|	:vs[plit]	split current window vertically
+|:vunmap|	:vu[nmap]	like ":unmap" but for Visual mode
+|:vunmenu|	:vunme[nu]	remove menu for Visual mode
+|:windo|	:windo		execute command in each window
+|:write|	:w[rite]	write to a file
+|:wNext|	:wN[ext]	write to a file and go to previous file in
+				argument list
+|:wall|		:wa[ll]		write all (changed) buffers
+|:while|	:wh[ile]	execute loop for as long as condition met
+|:winsize|	:wi[nsize]	get or set window size (obsolete)
+|:wincmd|	:winc[md]	execute a Window (CTRL-W) command
+|:winpos|	:winp[os]	get or set window position
+|:wnext|	:wn[ext]	write to a file and go to next file in
+				argument list
+|:wprevious|	:wp[revious]	write to a file and go to previous file in
+				argument list
+|:wq|		:wq		write to a file and quit window or Vim
+|:wqall|	:wqa[ll]	write all changed buffers and quit Vim
+|:wsverb|	:ws[verb]	pass the verb to workshop over IPC
+|:wviminfo|	:wv[iminfo]	write to viminfo file
+|:xit|		:x[it]		write if buffer changed and quit window or Vim
+|:xall|		:xa[ll]		same as ":wqall"
+|:yank|		:y[ank]		yank lines into a register
+|:z|		:z		print some lines
+|:~|		:~		repeat last ":substitute"
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
new file mode 100644
index 0000000..1439dbe
--- /dev/null
+++ b/runtime/doc/insert.txt
@@ -0,0 +1,1064 @@
+*insert.txt*    For Vim version 7.0aa.  Last change: 2004 Apr 09
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+						*Insert* *Insert-mode*
+Inserting and replacing text				*mode-ins-repl*
+
+Most of this file is about Insert and Replace mode.  At the end are a few
+commands for inserting text in other ways.
+
+An overview of the most often used commands can be found in chapter 24 of the
+user manual |usr_24.txt|.
+
+1. Special keys						|ins-special-keys|
+2. Special special keys					|ins-special-special|
+3. 'textwidth' and 'wrapmargin' options			|ins-textwidth|
+4. 'expandtab', 'smarttab' and 'softtabstop'  options	|ins-expandtab|
+5. Replace mode						|Replace-mode|
+6. Virtual Replace mode					|Virtual-Replace-mode|
+7. Insert mode completion				|ins-completion|
+8. Insert mode commands					|inserting|
+9. Ex insert commands					|inserting-ex|
+10. Inserting a file					|inserting-file|
+
+Also see 'virtualedit', for moving the cursor to positions where there is no
+character.  Useful for editing a table.
+
+==============================================================================
+1. Special keys						*ins-special-keys*
+
+In Insert and Replace mode, the following characters have a special meaning;
+other characters are inserted directly.  To insert one of these special
+characters into the buffer, precede it with CTRL-V.  To insert a <Nul>
+character use "CTRL-V CTRL-@" or "CTRL-V 000".  On some systems, you have to
+use "CTRL-V 003" to insert a CTRL-C.  Note: When CTRL-V is mapped you can
+often use CTRL-Q instead |i_CTRL-Q|.
+
+If you are working in a special language mode when inserting text, see the
+'langmap' option, |'langmap'|, on how to avoid switching this mode on and off
+all the time.
+
+If you have 'insertmode' set, <Esc> and a few other keys get another meaning.
+See |'insertmode'|.
+
+char		action	~
+-----------------------------------------------------------------------
+						*i_CTRL-[* *i_<Esc>*
+<Esc> or CTRL-[	End insert or Replace mode, go back to Normal mode.  Finish
+		abbreviation.
+		Note: If your <Esc> key is hard to hit on your keyboard, train
+		yourself to use CTRL-[.
+						*i_CTRL-C*
+CTRL-C		Quit insert mode, go back to Normal mode.  Do not check for
+		abbreviations.
+
+						*i_CTRL-@*
+CTRL-@		Insert previously inserted text and stop insert.  {Vi: only
+		when typed as first char, only up to 128 chars}
+						*i_CTRL-A*
+CTRL-A		Insert previously inserted text.  {not in Vi}
+
+						*i_CTRL-H* *i_<BS>* *i_BS*
+<BS> or CTRL-H	Delete the character before the cursor (see |i_backspacing|
+		about joining lines).
+		See |:fixdel| if your <BS> key does not do what you want.
+		{Vi: does not delete autoindents}
+						*i_<Del>* *i_DEL*
+<Del>		Delete the character under the cursor.  If the cursor is at
+		the end of the line, and the 'backspace' option includes
+		"eol", delete the <EOL>; the next line is appended after the
+		current one.
+		See |:fixdel| if your <Del> key does not do what you want.
+		{not in Vi}
+						*i_CTRL-W*
+CTRL-W		Delete the word before the cursor (see |i_backspacing| about
+		joining lines).  See the section "word motions",
+		|word-motions|, for the definition of a word.
+						*i_CTRL-U*
+CTRL-U		Delete all entered characters in the current line (see
+		|i_backspacing| about joining lines).
+
+						*i_CTRL-I* *i_<Tab>* *i_Tab*
+<Tab> or CTRL-I Insert a tab.  If the 'expandtab' option is on, the
+		equivalent number of spaces is inserted (use CTRL-V <Tab> to
+		avoid the expansion; use CTRL-Q <Tab> if CTRL-V is mapped
+		|i_CTRL-Q|).  See also the 'smarttab' option and
+		|ins-expandtab|.
+						*i_CTRL-J* *i_<NL>*
+<NL> or CTRL-J	Begin new line.
+						*i_CTRL-M* *i_<CR>*
+<CR> or CTRL-M	Begin new line.
+						*i_CTRL-K*
+CTRL-K {char1} [char2]
+		Enter digraph (see |digraphs|).  When {char1} is a special
+		key, the code for that key is inserted in <> form.  For
+		example, the string "<S-Space>" can be entered by typing
+		<C-K><S-Space> (two keys).  Neither char is considered for
+		mapping.  {not in Vi}
+
+CTRL-N		Find next keyword (see |i_CTRL-N|).  {not in Vi}
+CTRL-P		Find previous keyword (see |i_CTRL-P|).  {not in Vi}
+
+CTRL-R {0-9a-z"%#*+:.-=}					*i_CTRL-R*
+		Insert the contents of a register.  Between typing CTRL-R and
+		the second character, '"' will be displayed to indicate that
+		you are expected to enter the name of a register.
+		The text is inserted as if you typed it, but mappings and
+		abbreviations are not used.  If you have options like
+		'textwidth', 'formatoptions', or 'autoindent' set, this will
+		influence what will be inserted.  This is different from what
+		happens with the "p" command and pasting with the mouse.
+		Special registers:
+			'"'	the unnamed register, containing the text of
+				the last delete or yank
+			'%'	the current file name
+			'#'	the alternate file name
+			'*'	the clipboard contents (X11: primary selection)
+			'+'	the clipboard contents
+			'/'	the last search pattern
+			':'	the last command-line
+			'.'	the last inserted text
+			'-'	the last small (less than a line) delete
+			'='	the expression register: you are prompted to
+				enter an expression (see |expression|)
+		See |registers| about registers.  {not in Vi}
+
+CTRL-R CTRL-R {0-9a-z"%#*+/:.-=}			*i_CTRL-R_CTRL-R*
+		Insert the contents of a register.  Works like using a single
+		CTRL-R, but the text is inserted literally, not as if typed.
+		This differs when the register contains characters like <BS>.
+		Example, where register a contains "ab^Hc": >
+	CTRL-R a		results in "ac".
+	CTRL-R CTRL-R a		results in "ab^Hc".
+<		Options 'textwidth', 'formatoptions', etc. still apply.  If
+		you also want to avoid these, use "<C-R><C-O>r", see below.
+		The '.' register (last inserted text) is still inserted as
+		typed.  {not in Vi}
+
+CTRL-R CTRL-O {0-9a-z"%#*+/:.-=}			*i_CTRL-R_CTRL-O*
+		Insert the contents of a register literally and don't
+		auto-indent.  Does the same as pasting with the mouse
+		|<MiddleMouse>|.
+		Does not replace characters!
+		The '.' register (last inserted text) is still inserted as
+		typed.  {not in Vi}
+
+CTRL-R CTRL-P {0-9a-z"%#*+/:.-=}			*i_CTRL-R_CTRL-P*
+		Insert the contents of a register literally and fix the
+		indent, like |[<MiddleMouse>|.
+		Does not replace characters!
+		The '.' register (last inserted text) is still inserted as
+		typed.  {not in Vi}
+
+						*i_CTRL-T*
+CTRL-T		Insert one shiftwidth of indent at the start of the current
+		line.  The indent is always rounded to a 'shiftwidth' (this is
+		vi compatible).  {Vi: only when in indent}
+						*i_CTRL-D*
+CTRL-D		Delete one shiftwidth of indent at the start of the current
+		line.  The indent is always rounded to a 'shiftwidth' (this is
+		vi compatible).  {Vi: CTRL-D works only when used after
+		autoindent}
+						*i_0_CTRL-D*
+0 CTRL-D	Delete all indent in the current line.  {Vi: CTRL-D works
+		only when used after autoindent}
+						*i_^_CTRL-D*
+^ CTRL-D	Delete all indent in the current line.  The indent is
+		restored in the next line.  This is useful when inserting a
+		label.  {Vi: CTRL-D works only when used after autoindent}
+
+						*i_CTRL-V*
+CTRL-V		Insert next non-digit literally.  For special keys, the
+		terminal code is inserted.  It's also possible to enter the
+		decimal, octal or hexadecimal value of a character
+		|i_CTRL-V_digit|.
+		The characters typed right after CTRL-V are not considered for
+		mapping.  {Vi: no decimal byte entry}
+		Note: When CTRL-V is mapped (e.g., to paste text) you can
+		often use CTRL-Q instead |i_CTRL-Q|.
+
+						*i_CTRL-Q*
+CTRL-Q		Same as CTRL-V.
+		Note: Some terminal connections may eat CTRL-Q, it doesn't
+		work then.  It does work in the GUI.
+
+CTRL-X		Enter CTRL-X mode.  This is a sub-mode where commands can
+		be given to complete words or scroll the window. See
+		|i_CTRL-X| and |ins-completion|. {not in Vi}
+
+						*i_CTRL-E*
+CTRL-E		Insert the character which is below the cursor.  {not in Vi}
+						*i_CTRL-Y*
+CTRL-Y		Insert the character which is above the cursor.  {not in Vi}
+		Note that for CTRL-E and CTRL-Y 'textwidth' is not used, to be
+		able to copy characters from a long line.
+
+						*i_CTRL-_*
+CTRL-_		Switch between languages, as follows:
+		-  When in a rightleft window, revins and nohkmap are toggled,
+		   since English will likely be inserted in this case.
+		-  When in a norightleft window, revins and hkmap are toggled,
+		   since Hebrew will likely be inserted in this case.
+
+		CTRL-_ moves the cursor to the end of the typed text.
+
+		This command is only available when the 'allowrevins' option
+		is set.
+		Please refer to |rileft.txt| for more information about
+		right-to-left mode.
+		{not in Vi}
+		Only if compiled with the |+rightleft| feature (which is not
+		the default).
+						*i_CTRL-^*
+CTRL-^		Toggle the use of typing language characters.
+		When language |:lmap| mappings are defined:
+		- If 'iminsert' is 1 (langmap mappings used) it becomes 0 (no
+		  langmap mappings used).
+		- If 'iminsert' has another value it becomes 1, thus langmap
+		  mappings are enabled.
+		When no language mappings are defined:
+		- If 'iminsert' is 2 (Input Method used) it becomes 0 (no
+		  Input Method used).
+		- If 'iminsert' has another value it becomes 2, thus the Input
+		  Method is enabled.
+		When set to 1, the value of the "b:keymap_name" variable, the
+		'keymap' option or "<lang>" appears in the status line.
+		The language mappings are normally used to type characters
+		that are different from what the keyboard produces.  The
+		'keymap' option can be used to install a whole number of them.
+		{not in Vi}
+
+						*i_CTRL-]*
+CTRL-]		Trigger abbreviation, without inserting a character.  {not in
+		Vi}
+
+						*i_<Insert>*
+<Insert>	Toggle between Insert and Replace mode.  {not in Vi}
+-----------------------------------------------------------------------
+
+						*i_backspacing*
+The effect of the <BS>, CTRL-W, and CTRL-U depend on the 'backspace' option
+(unless 'revins' is set).  This is a comma separated list of items:
+
+item	    action ~
+indent	    allow backspacing over autoindent
+eol	    allow backspacing over end-of-line (join lines)
+start	    allow backspacing over the start position of insert; CTRL-W and
+	    CTRL-U stop once at the start position
+
+When 'backspace' is empty, Vi compatible backspacing is used.  You cannot
+backspace over autoindent, before column 1 or before where insert started.
+
+For backwards compatibility the values "0", "1" and "2" are also allowed, see
+|'backspace'|.
+
+If the 'backspace' option does contain "eol" and the cursor is in column 1
+when one of the three keys is used, the current line is joined with the
+previous line.  This effectively deletes the <EOL> in front of the cursor.
+{Vi: does not cross lines, does not delete past start position of insert}
+
+						*i_CTRL-V_digit*
+With CTRL-V the decimal, octal or hexadecimal value of a character can be
+entered directly.  This way you can enter any character, except a line break
+(<NL>, value 10).  There are five ways to enter the character value:
+
+first char	mode	     max nr of chars   max value ~
+(none)		decimal		   3		255
+o or O		octal		   3		255
+x or X		hexadecimal	   2		ff	 (255)
+u		hexadecimal	   4		ffff	 (65535)
+U		hexadecimal	   8		7fffffff (2147483647)
+
+Normally you would type the maximum number of characters.  Thus to enter a
+space (value 32) you would type <C-V>032.  You can omit the leading zero, in
+which case the character typed after the number must be a non-digit.  This
+happens for the other modes as well: As soon as you type a character that is
+invalid for the mode, the value before it will be used and the "invalid"
+character is dealt with in the normal way.
+
+If you enter a value of 10, it will end up in the file as a 0.  The 10 is a
+<NL>, which is used internally to represent the <Nul> character.  When writing
+the buffer to a file, the <NL> character is translated into <Nul>.  The <NL>
+character is written at the end of each line.  Thus if you want to insert a
+<NL> character in a file you will have to make a line break.
+
+						*i_CTRL-X* *insert_expand*
+CTRL-X enters a sub-mode where several commands can be used.  Most of these
+commands do keyword completion; see |ins-completion|.  These are not available
+when Vim was compiled without the |+insert_expand| feature.
+
+Two commands can be used to scroll the window up or down, without exiting
+insert mode:
+
+						*i_CTRL-X_CTRL-E*
+CTRL-X CTRL-E		scroll window one line up.
+
+						*i_CTRL-X_CTRL-Y*
+CTRL-X CTRL-Y		scroll window one line down.
+
+After CTRL-X is pressed, each CTRL-E (CTRL-Y) scrolls the window up (down) by
+one line unless that would cause the cursor to move from its current position
+in the file.  As soon as another key is pressed, CTRL-X mode is exited and
+that key is interpreted as in Insert mode.
+
+
+==============================================================================
+2. Special special keys				*ins-special-special*
+
+The following keys are special.  They stop the current insert, do something,
+and then restart insertion.  This means you can do something without getting
+out of Insert mode.  This is very handy if you prefer to use the Insert mode
+all the time, just like editors that don't have a separate Normal mode.  You
+may also want to set the 'backspace' option to "indent,eol,start" and set the
+'insertmode' option.  You can use CTRL-O if you want to map a function key to
+a command.
+
+The changes (inserted or deleted characters) before and after these keys can
+be undone separately.  Only the last change can be redone and always behaves
+like an "i" command.
+
+char		action	~
+-----------------------------------------------------------------------
+<Up>		cursor one line up			     *i_<Up>*
+<Down>		cursor one line down			     *i_<Down>*
+CTRL-G <Up>	cursor one line up, insert start column	     *i_CTRL-G_<Up>*
+CTRL-G k	cursor one line up, insert start column	     *i_CTRL-G_k*
+CTRL-G CTRL-K	cursor one line up, insert start column	     *i_CTRL-G_CTRL-K*
+CTRL-G <Down>	cursor one line down, insert start column    *i_CTRL-G_<Down>*
+CTRL-G j	cursor one line down, insert start column    *i_CTRL-G_j*
+CTRL-G CTRL-J	cursor one line down, insert start column    *i_CTRL-G_CTRL-J*
+<Left>		cursor one character left		     *i_<Left>*
+<Right>		cursor one character right		     *i_<Right>*
+<S-Left>	cursor one word back (like "b" command)	     *i_<S-Left>*
+<C-Left>	cursor one word back (like "b" command)	     *i_<C-Left>*
+<S-Right>	cursor one word forward (like "w" command)   *i_<S-Right>*
+<C-Right>	cursor one word forward (like "w" command)   *i_<C-Right>*
+<Home>		cursor to first char in the line	     *i_<Home>*
+<End>		cursor to after last char in the line	     *i_<End>*
+<C-Home>	cursor to first char in the file	     *i_<C-Home>*
+<C-End>		cursor to after last char in the file	     *i_<C-End>*
+<LeftMouse>	cursor to position of mouse click	     *i_<LeftMouse>*
+<S-Up>		move window one page up			     *i_<S-Up>*
+<PageUp>	move window one page up			     *i_<PageUp>*
+<S-Down>	move window one page down		     *i_<S-Down>*
+<PageDown>	move window one page down		     *i_<PageDown>*
+<MouseDown>	scroll three lines down			     *i_<MouseDown>*
+<S-MouseDown>	scroll a full page down			     *i_<S-MouseDown>*
+<MouseUp>	scroll three lines up			     *i_<MouseUp>*
+<S-MouseUp>	scroll a full page up			     *i_<S-MouseUp>*
+CTRL-O		execute one command, return to Insert mode   *i_CTRL-O*
+CTRL-G u	break undo sequence, start new change	     *i_CTRL-G_u*
+-----------------------------------------------------------------------
+
+Note: If the cursor keys take you out of Insert mode, check the 'noesckeys'
+option.
+
+The CTRL-O command sometimes has a side effect: If the cursor was beyond the
+end of the line, it will be put on the last character in the line.  In
+mappings it's often better to use <Esc> (first put an "x" in the text, <Esc>
+will then always put the cursor on it).
+
+The shifted cursor keys are not available on all terminals.
+
+Another side effect is that a count specified before the "i" or "a" command is
+ignored.  That is because repeating the effect of the command after CTRL-O is
+too complicated.
+
+An example for using CTRL-G u: >
+
+	:inoremap <C-H> <C-G>u<C-H>
+
+This redefines the backspace key to start a new undo sequence.  You can now
+undo the effect of the backspace key, without changing what you typed before
+that, with CTRL-O u.
+
+When the 'whichwrap' option is set appropriately, the <Left> and <Right>
+keys on the first/last character in the line make the cursor wrap to the
+previous/next line.
+
+The CTRL-G j and CTRL-G k commands can be used to insert text in front of a
+column.  Example: >
+   int i;
+   int j;
+Position the cursor on the first "int", type "istatic<C-G>j       ".  The
+result is: >
+   static int i;
+	  int j;
+When inserting the same text in front of the column in every line, use the
+Visual blockwise command "I" |v_b_I|.
+
+==============================================================================
+3. 'textwidth' and 'wrapmargin' options			*ins-textwidth*
+
+The 'textwidth' option can be used to automatically break a line before it
+gets too long.  Set the 'textwidth' option to the desired maximum line
+length.  If you then type more characters (not spaces or tabs), the
+last word will be put on a new line (unless it is the only word on the
+line).  If you set 'textwidth' to 0, this feature is disabled.
+
+The 'wrapmargin' option does almost the same.  The difference is that
+'textwidth' has a fixed width while 'wrapmargin' depends on the width of the
+screen.  When using 'wrapmargin' this is equal to using 'textwidth' with a
+value equal to (columns - 'wrapmargin'), where columns is the width of the
+screen.
+
+When 'textwidth' and 'wrapmargin' are both set, 'textwidth' is used.
+
+If you don't really want to break the line, but view the line wrapped at a
+convenient place, see the 'linebreak' option.
+
+The line is only broken automatically when using insert mode, or when
+appending to a line.  When in replace mode and the line length is not
+changed, the line will not be broken.
+
+Long lines are broken if you enter a non-white character after the margin.
+The situations where a line will be broken can be restricted by adding
+characters to the 'formatoptions' option:
+"l"  Only break a line if it was not longer than 'textwidth' when the insert
+     started.
+"v"  Only break at a white character that has been entered during the
+     current insert command.  This is mostly Vi-compatible.
+"lv" Only break if the line was not longer than 'textwidth' when the insert
+     started and only at a white character that has been entered during the
+     current insert command.  Only differs from "l" when entering non-white
+     characters while crossing the 'textwidth' boundary.
+
+If you want to format a block of text, you can use the "gq" operator.  Type
+"gq" and a movement command to move the cursor to the end of the block.  In
+many cases, the command "gq}" will do what you want (format until the end of
+paragraph).  Alternatively, you can use "gqap", which will format the whole
+paragraph, no matter where the cursor currently is.  Or you can use Visual
+mode: hit "v", move to the end of the block, and type "gq".  See also |gq|.
+
+==============================================================================
+4. 'expandtab', 'smarttab' and 'softtabstop' options	*ins-expandtab*
+
+If the 'expandtab' option is on, spaces will be used to fill the amount of
+whitespace of the tab.  If you want to enter a real <Tab>, type CTRL-V first
+(use CTRL-Q when CTRL-V is mapped |i_CTRL-Q|).
+The 'expandtab' option is off by default.  Note that in Replace mode, a single
+character is replaced with several spaces.  The result of this is that the
+number of characters in the line increases.  Backspacing will delete one
+space at a time.  The original character will be put back for only one space
+that you backspace over (the last one).  {Vi does not have the 'expandtab'
+option}
+
+							*ins-smarttab*
+When the 'smarttab' option is on, a <Tab> inserts 'shiftwidth' positions at
+the beginning of a line and 'tabstop' positions in other places.  This means
+that often spaces instead of a <Tab> character are inserted.  When 'smarttab
+is off, a <Tab> always inserts 'tabstop' positions, and 'shiftwidth' is only
+used for ">>" and the like.  {not in Vi}
+
+							*ins-softtabstop*
+When the 'softtabstop' option is non-zero, a <Tab> inserts 'softtabstop'
+positions, and a <BS> used to delete white space, will delete 'softtabstop'
+positions.  This feels like 'tabstop' was set to 'softtabstop', but a real
+<Tab> character still takes 'tabstop' positions, so your file will still look
+correct when used by other applications.
+
+If 'softtabstop' is non-zero, a <BS> will try to delete as much white space to
+move to the previous 'softtabstop' position, except when the previously
+inserted character is a space, then it will only delete the character before
+the cursor.  Otherwise you cannot always delete a single character before the
+cursor.  You will have to delete 'softtabstop' characters first, and then type
+extra spaces to get where you want to be.
+
+==============================================================================
+5. Replace mode				*Replace* *Replace-mode* *mode-replace*
+
+Enter Replace mode with the "R" command in normal mode.
+
+In Replace mode, one character in the line is deleted for every character you
+type.  If there is no character to delete (at the end of the line), the
+typed character is appended (as in Insert mode).  Thus the number of
+characters in a line stays the same until you get to the end of the line.
+If a <NL> is typed, a line break is inserted and no character is deleted.
+
+Be careful with <Tab> characters.  If you type a normal printing character in
+its place, the number of characters is still the same, but the number of
+columns will become smaller.
+
+If you delete characters in Replace mode (with <BS>, CTRL-W, or CTRL-U), what
+happens is that you delete the changes.  The characters that were replaced
+are restored.  If you had typed past the existing text, the characters you
+added are deleted.  This is effectively a character-at-a-time undo.
+
+If the 'expandtab' option is on, a <Tab> will replace one character with
+several spaces.  The result of this is that the number of characters in the
+line increases.  Backspacing will delete one space at a time.  The original
+character will be put back for only one space that you backspace over (the
+last one).  {Vi does not have the 'expandtab' option}
+
+==============================================================================
+6. Virtual Replace mode		*vreplace-mode* *Virtual-Replace-mode*
+
+Enter Virtual Replace mode with the "gR" command in normal mode.
+{not available when compiled without the +vreplace feature}
+{Vi does not have Virtual Replace mode}
+
+Virtual Replace mode is similar to Replace mode, but instead of replacing
+actual characters in the file, you are replacing screen real estate, so that
+characters further on in the file never appear to move.
+
+So if you type a <Tab> it may replace several normal characters, and if you
+type a letter on top of a <Tab> it may not replace anything at all, since the
+<Tab> will still line up to the same place as before.
+
+Typing a <NL> still doesn't cause characters later in the file to appear to
+move.  The rest of the current line will be replaced by the <NL> (that is,
+they are deleted), and replacing continues on the next line.  A new line is
+NOT inserted unless you go past the end of the file.
+
+Interesting effects are seen when using CTRL-T and CTRL-D.  The characters
+before the cursor are shifted sideways as normal, but characters later in the
+line still remain still.  CTRL-T will hide some of the old line under the
+shifted characters, but CTRL-D will reveal them again.
+
+As with Replace mode, using <BS> etc will bring back the characters that were
+replaced.  This still works in conjunction with 'smartindent', CTRL-T and
+CTRL-D, 'expandtab', 'smarttab', 'softtabstop', etc.
+
+In 'list' mode, Virtual Replace mode acts as if it was not in 'list' mode,
+unless "L" is in 'cpoptions'.
+
+Note that the only times characters beyond the cursor should appear to move
+are in 'list' mode, and occasionally when 'wrap' is set (and the line changes
+length to become shorter or wider than the width of the screen), or
+momentarily when typing over a CTRL character.  A CTRL character takes up two
+screen spaces.  When replacing it with two normal characters, the first will
+be inserted and the second will replace the CTRL character.
+
+This mode is very useful for editing <Tab> separated columns in tables, for
+entering new data while keeping all the columns aligned.
+
+==============================================================================
+7. Insert mode completion				*ins-completion*
+
+In Insert and Replace modes, there are several commands to complete part of a
+keyword or line that has been typed.  This is useful if you are using
+complicated keywords (e.g., function names with capitals and underscores).
+
+These commands are not available when the |+insert_expand| feature was
+disabled at compile time.
+
+Completion can be done for:
+
+1. Whole lines						|i_CTRL-X_CTRL-L|
+2. keywords in the current file				|i_CTRL-X_CTRL-N|
+3. keywords in 'dictionary'				|i_CTRL-X_CTRL-K|
+4. keywords in 'thesaurus', thesaurus-style		|i_CTRL-X_CTRL-T|
+5. keywords in the current and included files		|i_CTRL-X_CTRL-I|
+6. tags							|i_CTRL-X_CTRL-]|
+7. file names						|i_CTRL-X_CTRL-F|
+8. definitions or macros				|i_CTRL-X_CTRL-D|
+9. Vim command-line					|i_CTRL-X_CTRL-V|
+10. keywords in 'complete'				|i_CTRL-N|
+
+All these (except 2) are done in CTRL-X mode.  This is a sub-mode of Insert
+and Replace modes.  You enter CTRL-X mode by typing CTRL-X and one of the
+CTRL-X commands.  You exit CTRL-X mode by typing a key that is not a valid
+CTRL-X mode command.  Valid keys are the CTRL-X command itself, CTRL-N (next),
+and CTRL-P (previous).
+
+Also see the 'infercase' option if you want to adjust the case of the match.
+
+Note: The keys that are valid in CTRL-X mode are not mapped.  This allows for
+":map ^F ^X^F" to work (where ^F is CTRL-F and ^X is CTRL-X).  The key that
+ends CTRL-X mode (any key that is not a valid CTRL-X mode command) is mapped.
+Also, when doing completion with 'complete' mappings apply as usual.
+
+The following mappings are suggested to make typing the completion commands
+a bit easier (although they will hide other commands): >
+    :inoremap ^] ^X^]
+    :inoremap ^F ^X^F
+    :inoremap ^D ^X^D
+    :inoremap ^L ^X^L
+
+As a special case, typing CTRL-R to perform register insertion (see
+|i_CTRL-R|) will not exit CTRL-X mode.  This is primarily to allow the use of
+the '=' register to call some function to determine the next operation.  If
+the contents of the register (or result of the '=' register evaluation) are
+not valid CTRL-X mode keys, then CTRL-X mode will be exited as if those keys
+had been typed.
+
+For example, the following will map <Tab> to either actually insert a <Tab> if
+the current line is currently only whitespace, or start/continue a CTRL-N
+completion operation: >
+
+	function! CleverTab()
+	   if strpart( getline('.'), 0, col('.')-1 ) =~ '^\s*$'
+	      return "\<Tab>"
+	   else
+	      return "\<C-N>"
+	endfunction
+	inoremap <Tab> <C-R>=CleverTab()<CR>
+
+
+
+Completing whole lines					*compl-whole-line*
+
+							*i_CTRL-X_CTRL-L*
+CTRL-X CTRL-L		Search backwards for a line that starts with the
+			same characters as in the current line before the
+			cursor.  Indent is ignored.  The found line is
+			inserted in front of the cursor.
+			The 'complete' option is used to decide in which
+			buffers a match is searched for.  But only loaded
+			buffers are used.
+	CTRL-L	or
+	CTRL-P		Search backwards for next matching line.  This line
+			replaces the previous matching line.
+
+	CTRL-N		Search forward for next matching line.  This line
+			replaces the previous matching line.
+
+	CTRL-X CTRL-L	After expanding a line you can additionally get the
+			line next to it by typing CTRL-X CTRL-L again, unless
+			a double CTRL-X is used.
+
+Completing keywords in current file			*compl-current*
+
+							*i_CTRL-X_CTRL-P*
+							*i_CTRL-X_CTRL-N*
+CTRL-X CTRL-N		Search forwards for words that start with the keyword
+			in front of the cursor.  The found keyword is inserted
+			in front of the cursor.
+
+CTRL-X CTRL-P		Search backwards for words that start with the keyword
+			in front of the cursor.  The found keyword is inserted
+			in front of the cursor.
+
+	CTRL-N		Search forward for next matching keyword.  This
+			keyword replaces the previous matching keyword.
+
+	CTRL-P		Search backwards for next matching keyword.  This
+			keyword replaces the previous matching keyword.
+
+	CTRL-X CTRL-N or
+	CTRL-X CTRL-P	Further use of CTRL-X CTRL-N or CTRL-X CTRL-P will
+			copy the words following the previous expansion in
+			other contexts unless a double CTRL-X is used.
+
+If there is a keyword in front of the cursor (a name made out of alphabetic
+characters and characters in 'iskeyword'), it is used as the search pattern,
+with "\<" prepended (meaning: start of a word).  Otherwise "\<\k\k" is used
+as search pattern (start of any keyword of at least two characters).
+
+In Replace mode, the number of characters that are replaced depends on the
+length of the matched string.  This works like typing the characters of the
+matched string in Replace mode.
+
+If there is not a valid keyword character before the cursor, any keyword of
+at least two characters is matched.
+	e.g., to get:
+	    printf("(%g, %g, %g)", vector[0], vector[1], vector[2]);
+	just type:
+	    printf("(%g, %g, %g)", vector[0], ^P[1], ^P[2]);
+
+Multiple repeats of the same completion are skipped; thus a different match
+will be inserted at each CTRL-N and CTRL-P (unless there is only one
+matching keyword).
+
+Single character matches are never included, as they usually just get in
+the way of what you were really after.
+	e.g., to get:
+		printf("name = %s\n", name);
+	just type:
+		printf("name = %s\n", n^P);
+	or even:
+		printf("name = %s\n", ^P);
+The 'n' in '\n' is skipped.
+
+After expanding a word, you can use CTRL-X CTRL-P or CTRL-X CTRL-N to get the
+word following the expansion in other contexts.  These sequences search for
+the text just expanded and further expand by getting an extra word.  This is
+useful if you need to repeat a sequence of complicated words.  Although CTRL-P
+and CTRL-N look just for strings of at least two characters, CTRL-X CTRL-P and
+CTRL-X CTRL-N can be used to expand words of just one character.
+	e.g., to get:
+		M&eacute;xico
+	you can type:
+		M^N^P^X^P^X^P
+CTRL-N starts the expansion and then CTRL-P takes back the single character
+"M", the next two CTRL-X CTRL-P's get the words "&eacute" and ";xico".
+
+If the previous expansion was split, because it got longer than 'textwidth',
+then just the text in the current line will be used.
+
+If the match found is at the end of a line, then the first word in the next
+line will be inserted and the message "word from next line" displayed, if
+this word is accepted the next CTRL-X CTRL-P or CTRL-X CTRL-N will search
+for those lines starting with this word.
+
+
+Completing keywords in 'dictionary'			*compl-dictionary*
+
+							*i_CTRL-X_CTRL-K*
+CTRL-X CTRL-K		Search the files given with the 'dictionary' option
+			for words that start with the keyword in front of the
+			cursor.  This is like CTRL-N, but only the dictionary
+			files are searched, not the current file.  The found
+			keyword is inserted in front of the cursor.  This
+			could potentially be pretty slow, since all matches
+			are found before the first match is used.  By default,
+			the 'dictionary' option is empty.
+			For suggestions where to find a list of words, see the
+			'dictionary' option.
+
+	CTRL-K	or
+	CTRL-N		Search forward for next matching keyword.  This
+			keyword replaces the previous matching keyword.
+
+	CTRL-P		Search backwards for next matching keyword.  This
+			keyword replaces the previous matching keyword.
+
+							*i_CTRL-X_CTRL-T*
+CTRL-X CTRL-T		Works as CTRL-X CTRL-K, but in a special way. It uses
+			the 'thesaurus' option instead of 'dictionary'.  If a
+			match is found in the thesaurus file, all the
+			remaining words on the same line are included as
+			matches, even though they don't complete the word.
+			Thus a word can be completely replaced.
+
+			For an example, imagine the 'thesaurus' file has a
+			line like this: >
+				angry furious mad enraged
+<			Placing the cursor after the letters "ang" and typing
+			CTRL-X CTRL-T would complete the word "angry";
+			subsequent presses would change the word to "furious",
+			"mad" etc.
+			Other uses include translation between two languages,
+			or grouping API functions by keyword.
+
+	CTRL-T	or
+	CTRL-N		Search forward for next matching keyword.  This
+			keyword replaces the previous matching keyword.
+
+	CTRL-P		Search backwards for next matching keyword.  This
+			keyword replaces the previous matching keyword.
+
+
+Completing keywords in the current and included files	*compl-keyword*
+
+The 'include' option is used to specify a line that contains an include file
+name.  The 'path' option is used to search for include files.
+
+							*i_CTRL-X_CTRL-I*
+CTRL-X CTRL-I		Search for the first keyword in the current and
+			included files that starts with the same characters
+			as those before the cursor.  The matched keyword is
+			inserted in front of the cursor.
+
+	CTRL-N		Search forwards for next matching keyword.  This
+			keyword replaces the previous matching keyword.
+			Note: CTRL-I is the same as <Tab>, which is likely to
+			be typed after a successful completion, therefore
+			CTRL-I is not used for searching for the next match.
+
+	CTRL-P		Search backward for previous matching keyword.  This
+			keyword replaces the previous matching keyword.
+
+	CTRL-X CTRL-I	Further use of CTRL-X CTRL-I will copy the words
+			following the previous expansion in other contexts
+			unless a double CTRL-X is used.
+
+Completing tags						*compl-tag*
+							*i_CTRL-X_CTRL-]*
+CTRL-X CTRL-]		Search for the first tag that starts with the same
+			characters as before the cursor.  The matching tag is
+			inserted in front of the cursor.  Alphabetic
+			characters and characters in 'iskeyword' are used
+			to decide which characters are included in the tag
+			name (same as for a keyword).  See also |CTRL-]|.
+			The 'showfulltag' option can be used to add context
+			from around the tag definition.
+	CTRL-]	or
+	CTRL-N		Search forwards for next matching tag.  This tag
+			replaces the previous matching tag.
+
+	CTRL-P		Search backward for previous matching tag.  This tag
+			replaces the previous matching tag.
+
+
+Completing file names					*compl-filename*
+							*i_CTRL-X_CTRL-F*
+CTRL-X CTRL-F		Search for the first file name that starts with the
+			same characters as before the cursor.  The matching
+			file name is inserted in front of the cursor.
+			Alphabetic characters and characters in 'isfname'
+			are used to decide which characters are included in
+			the file name.  Note: the 'path' option is not used
+			here (yet).
+	CTRL-F	or
+	CTRL-N		Search forwards for next matching file name.  This
+			file name replaces the previous matching file name.
+
+	CTRL-P		Search backward for previous matching file name.
+			This file name replaces the previous matching file
+			name.
+
+
+Completing definitions or macros			*compl-define*
+
+The 'define' option is used to specify a line that contains a definition.
+The 'include' option is used to specify a line that contains an include file
+name.  The 'path' option is used to search for include files.
+
+							*i_CTRL-X_CTRL-D*
+CTRL-X CTRL-D		Search in the current and included files for the
+			first definition (or macro) name that starts with
+			the same characters as before the cursor.  The found
+			definition name is inserted in front of the cursor.
+	CTRL-D	or
+	CTRL-N		Search forwards for next matching macro name.  This
+			macro name replaces the previous matching macro
+			name.
+
+	CTRL-P		Search backward for previous matching macro name.
+			This macro name replaces the previous matching macro
+			name.
+
+	CTRL-X CTRL-D	Further use of CTRL-X CTRL-D will copy the words
+			following the previous expansion in other contexts
+			unless a double CTRL-X is used.
+
+
+Completing Vim commands					*compl-vim*
+
+Completion is context-sensitive.  It works like on the Command-line.  It
+completes an Ex command as well as its arguments.
+
+							*i_CTRL-X_CTRL-V*
+CTRL-X CTRL-V		Guess what kind of item is in front of the cursor and
+			find the first match for it.
+			Note: When CTRL-V is mapped you can often use CTRL-Q
+			instead |i_CTRL-Q|.
+	CTRL-V	or
+	CTRL-N		Search forwards for next match.  This match replaces
+			the previous one.
+
+	CTRL-P		Search backward for previous match.  This match
+			replaces the previous one.
+
+	CTRL-X CTRL-V	Further use of CTRL-X CTRL-V will do the same as
+			CTRL-V.  This allows mapping a key to do Vim command
+			completion, for example: >
+				:imap <Tab> <C-X><C-V>
+
+Completing keywords from different sources		*compl-generic*
+
+							*i_CTRL-N*
+CTRL-N			Find next match for words that start with the
+			keyword in front of the cursor, looking in places
+			specified with the 'complete' option.  The found
+			keyword is inserted in front of the cursor.
+
+							*i_CTRL-P*
+CTRL-P			Find previous match for words that start with the
+			keyword in front of the cursor, looking in places
+			specified with the 'complete' option.  The found
+			keyword is inserted in front of the cursor.
+
+	CTRL-N		Search forward for next matching keyword.  This
+			keyword replaces the previous matching keyword.
+
+	CTRL-P		Search backwards for next matching keyword.  This
+			keyword replaces the previous matching keyword.
+
+	CTRL-X CTRL-N or
+	CTRL-X CTRL-P	Further use of CTRL-X CTRL-N or CTRL-X CTRL-P will
+			copy the words following the previous expansion in
+			other contexts unless a double CTRL-X is used.
+
+==============================================================================
+8. Insert mode commands					*inserting*
+
+The following commands can be used to insert new text into the buffer.  They
+can all be undone and repeated with the "." command.
+
+							*a*
+a			Append text after the cursor [count] times.  If the
+			cursor is in the first column of an empty line Insert
+			starts there.  But not when 'virtualedit' is set!
+
+							*A*
+A			Append text at the end of the line [count] times.
+
+<insert>	or				*i* *insert* *<Insert>*
+i			Insert text before the cursor [count] times.
+			When using CTRL-O in Insert mode |i_CTRL-O| the count
+			is not supported.
+
+							*I*
+I			Insert text before the first non-blank in the line
+			[count] times.
+
+							*gI*
+gI			Insert text in column 1 [count] times.  {not in Vi}
+
+							*gi*
+gi			Insert text in the same position as where Insert mode
+			was stopped last time in the current buffer.
+			This uses the |'^| mark.  It's different from "`^i"
+			when the mark is past the end of the line.
+			The position is corrected for inserted/deleted lines,
+			but NOT for inserted/deleted characters.
+			When the |:keepjumps| command modifier is used the |'^|
+			mark wont be changed.
+			{not in Vi}
+
+							*o*
+o			Begin a new line below the cursor and insert text,
+			repeat [count] times.  {Vi: blank [count] screen
+			lines}
+
+							*O*
+O			Begin a new line above the cursor and insert text,
+			repeat [count] times.  {Vi: blank [count] screen
+			lines}
+
+These commands are used to start inserting text.  You can end insert mode with
+<Esc>.  See |mode-ins-repl| for the other special characters in Insert mode.
+The effect of [count] takes place after Insert mode is exited.
+
+When 'autoindent' is on, the indent for a new line is obtained from the
+previous line.  When 'smartindent' or 'cindent' is on, the indent for a line
+is automatically adjusted for C programs.
+
+'textwidth' can be set to the maximum width for a line.  When a line becomes
+too long when appending characters a line break is automatically inserted.
+
+
+==============================================================================
+9. Ex insert commands					*inserting-ex*
+
+							*:a* *:append*
+:{range}a[ppend]	Insert several lines of text below the specified
+			line.  If the {range} is missing, the text will be
+			inserted after the current line.
+
+							*:i* *:in* *:insert*
+:{range}i[nsert]	Insert several lines of text above the specified
+			line.  If the {range} is missing, the text will be
+			inserted before the current line.
+
+These two commands will keep on asking for lines, until you type a line
+containing only a ".".  Watch out for lines starting with a backslash, see
+|line-continuation|.
+NOTE: ":append" and ":insert" don't work properly in between ":if" and
+":endif".
+
+							*:start* *:startinsert*
+:star[tinsert][!]	Start Insert mode just after executing this command.
+			Works like typing "i" in Normal mode.  When the ! is
+			included it works like "A", append to the line.
+			Otherwise insertion starts at the cursor position.
+			Note that when using this command in a function or
+			script, the insertion only starts after the function
+			or script is finished.
+			{not in Vi}
+			{not available when compiled without the +ex_extra
+			feature}
+
+							*:stopi* *:stopinsert*
+:stopi[nsert]		Stop Insert mode as soon as possible.  Works like
+			typing <Esc> in Insert mode.
+			Can be used in an autocommand, example: >
+				:au BufEnter scratch stopinsert
+
+==============================================================================
+10. Inserting a file					*inserting-file*
+
+							*:r* *:re* *:read*
+:r[ead] [name]		Insert the file [name] (default: current file) below
+			the cursor.
+
+:{range}r[ead] [name]	Insert the file [name] (default: current file) below
+			the specified line.
+
+							*:r!* *:read!*
+:r[ead] !{cmd}		Execute {cmd} and insert its standard output below
+			the cursor.  A temporary file is used to store the
+			output of the command which is then read into the
+			buffer.  'shellredir' is used to save the output of
+			the command, which can be set to include stderr or
+			not.  {cmd} is executed like with ":!{cmd}", any '!'
+			is replaced with the previous command |:!|.
+
+These commands insert the contents of a file, or the output of a command,
+into the buffer.  They can be undone.  They cannot be repeated with the "."
+command.  They work on a line basis, insertion starts below the line in which
+the cursor is, or below the specified line.  To insert text above the first
+line use the command ":0r {name}".
+
+After the ":read" command, the cursor is left on the first non-blank in the
+first new line.  Unless in Ex mode, then the cursor is left on the last new
+line (sorry, this is Vi compatible).
+
+If a file name is given with ":r", it becomes the alternate file.  This can be
+used, for example, when you want to edit that file instead: ":e! #".  This can
+be switched off by removing the 'a' flag from the 'cpoptions' option.
+
+							*file-read*
+The 'fileformat' option sets the <EOL> style for a file:
+'fileformat'    characters	   name				~
+  "dos"		<CR><NL> or <NL>   DOS format
+  "unix"	<NL>		   Unix format
+  "mac"		<CR>		   Mac format
+Previously 'textmode' was used.  It is obsolete now.
+
+If 'fileformat' is "dos", a <CR> in front of an <NL> is ignored and a CTRL-Z
+at the end of the file is ignored.
+
+If 'fileformat' is "mac", a <NL> in the file is internally represented by a
+<CR>.  This is to avoid confusion with a <NL> which is used to represent a
+<NUL>.  See |CR-used-for-NL|.
+
+If the 'fileformats' option is not empty Vim tries to recognize the type of
+<EOL> (see |file-formats|).  However, the 'fileformat' option will not be
+changed, the detected format is only used while reading the file.
+A similar thing happens with 'fileencodings'.
+
+On non-MS-DOS, Win32, and OS/2 systems the message "[dos format]" is shown if
+a file is read in DOS format, to remind you that something unusual is done.
+On Macintosh, MS-DOS, Win32, and OS/2 the message "[unix format]" is shown if
+a file is read in Unix format.
+On non-Macintosh systems, the message "[Mac format]" is shown if a file is
+read in Mac format.
+
+An example on how to use ":r !": >
+	:r !uuencode binfile binfile
+This command reads "binfile", uuencodes it and reads it into the current
+buffer.  Useful when you are editing e-mail and want to include a binary
+file.
+
+							*read-messages*
+When reading a file Vim will display a message with information about the read
+file.  In the table is an explanation for some of the items.  The others are
+self explanatory.  Using the long or the short version depends on the
+'shortmess' option.
+
+	long		short		meaning ~
+	[readonly]	{RO}		the file is write protected
+	[fifo/socket]			using a stream
+	[fifo]				using a fifo stream
+	[socket]			using a socket stream
+	[CR missing]			reading with "dos" 'fileformat' and a
+					NL without a preceding CR was found.
+	[NL found]			reading with "mac" 'fileformat' and a
+					NL was found (could be "unix" format)
+	[long lines split]		at least one line was split in two
+	[NOT converted]			conversion from 'fileencoding' to
+					'encoding' was desired but not
+					possible
+	[converted]			conversion from 'fileencoding' to
+					'encoding' done
+	[crypted]			file was decrypted
+	[READ ERRORS]			not all of the file could be read
+
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt
new file mode 100644
index 0000000..8d3ac6e
--- /dev/null
+++ b/runtime/doc/intro.txt
@@ -0,0 +1,890 @@
+*intro.txt*     For Vim version 7.0aa.  Last change: 2004 Jun 12
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Introduction to Vim					*ref* *reference*
+
+1. Introduction			|intro|
+2. Vim on the internet		|internet|
+3. Credits			|credits|
+4. Notation			|notation|
+5. Modes, introduction		|vim-modes-intro|
+6. Switching from mode to mode	|mode-switching|
+7. The window contents		|window-contents|
+8. Definitions			|definitions|
+
+==============================================================================
+1. Introduction						*intro*
+
+Vim stands for Vi IMproved.  It used to be Vi IMitation, but there are so many
+improvements that a name change was appropriate.  Vim is a text editor which
+includes almost all the commands from the Unix program "Vi" and a lot of new
+ones.  It is very useful for editing programs and other plain text.
+   All commands are given with the keyboard.  This has the advantage that you
+can keep your fingers on the keyboard and your eyes on the screen.  For those
+who want it, there is mouse support and a GUI version with scrollbars and
+menus (see |gui.txt|).
+
+An overview of this manual can be found in the file "help.txt", |help.txt|.
+It can be accessed from within Vim with the <Help> or <F1> key and with the
+|:help| command (just type ":help", without the bars or quotes).
+   The 'helpfile' option can be set to the name of the help file, in case it
+is not located in the default place.  You can jump to subjects like with tags:
+Use CTRL-] to jump to a subject under the cursor, use CTRL-T to jump back.
+
+Throughout this manual the differences between Vi and Vim are mentioned in
+curly braces, like this: {Vi does not have on-line help}.  See |vi_diff.txt|
+for a summary of the differences between Vim and Vi.
+
+This manual refers to Vim on various machines.  There may be small differences
+between different computers and terminals.  Besides the remarks given in this
+document, there is a separate document for each supported system, see
+|sys-file-list|.
+
+This manual is a reference for all the Vim commands and options.  This is not
+an introduction to the use of Vi or Vim, it gets a bit complicated here and
+there.  For beginners, there is a hands-on |tutor|.  To learn using Vim, read
+the user manual |usr_toc.txt|.
+
+							*book*
+There are many books on Vi that contain a section for beginners.  There are
+two books I can recommend:
+
+	"Vim - Vi Improved" by Steve Oualline
+
+This is the very first book completely dedicated to Vim.  It is very good for
+beginners.  The most often used commands are explained with pictures and
+examples.  The less often used commands are also explained, the more advanced
+features are summarized.  There is a comprehensive index and a quick
+reference.  Parts of this book have been included in the user manual
+|frombook|.
+Published by New Riders Publishing.  ISBN: 0735710015
+For more information try one of these:
+	http://iccf-holland.org/click5.html
+	http://www.vim.org/iccf/click5.html
+
+	"Learning the Vi editor" by Linda Lamb and Arnold Robbins
+
+This is a book about Vi that includes a chapter on Vim (in the sixth edition).
+The first steps in Vi are explained very well.  The commands that Vim adds are
+only briefly mentioned.  There is also a German translation.
+Published by O'Reilly.  ISBN: 1-56592-426-6.
+
+==============================================================================
+2. Vim on the internet					*internet*
+
+			*www* *faq* *FAQ* *distribution* *download*
+The Vim pages contain the most recent information about Vim.  They also
+contain links to the most recent version of Vim.  The FAQ is a list of
+Frequently Asked Questions.  Read this if you have problems.
+
+	VIM home page:	  http://www.vim.org/
+	VIM FAQ:	  http://vimdoc.sf.net/
+	Downloading:	  ftp://ftp.vim.org/pub/vim/MIRRORS
+
+
+Usenet News group where Vim is discussed:		*news* *usenet*
+	comp.editors
+This group is also for other editors.  If you write about Vim, don't forget to
+mention that.
+
+						*mail-list* *maillist*
+There are several mailing lists for Vim:
+<vim@vim.org>
+	For discussions about using existing versions of Vim: Useful mappings,
+	questions, answers, where to get a specific version, etc.
+<vim-dev@vim.org>				*vim-dev* *vimdev*
+	For discussions about changing Vim: New features, porting, patches,
+	beta-test versions, etc.
+<vim-announce@vim.org>				*vim-announce*
+	Announcements about new versions of Vim; also for beta-test versions
+	and ports to different systems.
+<vim-multibyte@vim.org>				*vim-multibyte*
+	For discussions about using and improving the multi-byte aspects of
+	Vim.
+<vim-mac@vim.org>				*vim-mac*
+	For discussions about using and improving the Macintosh version of
+	Vim.
+
+See http://www.vim.org/maillist.php for the latest information.
+
+NOTE:
+- You can only send messages to these lists if you have subscribed!
+- You need to send the messages from the same location as where you subscribed
+  from (to avoid spam mail).
+- Maximum message size is 40000 characters.
+
+						*subscribe-maillist*
+If you want to join, send a message to
+	<vim-help@vim.org>
+Make sure that your "From:" address is correct.  Then the list server will
+give you help on how to subscribe.
+
+You can retrieve old messages from the maillist software, and an index of
+messages.  Ask vim-help for instructions.
+
+Archives are kept at:				*maillist-archive*
+http://groups.yahoo.com/group/vim
+http://groups.yahoo.com/group/vimdev
+http://groups.yahoo.com/group/vimannounce
+http://groups.yahoo.com/group/vim-multibyte
+http://groups.yahoo.com/group/vim-mac
+
+
+Additional maillists:
+
+<vim-fr@club.voila.fr>				*french-maillist*
+	Vim list in the French language.  Subscribe by sending a message to
+		<vim-fr-subscribe@club.voila.fr>
+	Or go to http://groups.yahoo.com/group/vim-fr.
+
+
+Bug reports:				*bugs* *bug-reports* *bugreport.vim*
+
+Send bug reports to: Vim bugs <bugs@vim.org>
+This is not a maillist but the message is redirected to the Vim maintainer.
+Please be brief; all the time that is spent on answering mail is subtracted
+from the time that is spent on improving Vim!  Always give a reproducible
+example and try to find out which settings or other things influence the
+appearance of the bug.  Try different machines, if possible.  Send me patches
+if you can!
+
+In case of doubt, use: >
+   :so $VIMRUNTIME/bugreport.vim
+This will create a file "bugreport.txt" in the current directory, with a lot
+of information of your environment.  Before sending this out, check if it
+doesn't contain any confidential information!
+
+							*debug-vim*
+When Vim crashes in one of the test files, and you are using gcc for
+compilation, here is what you can do to find out exactly where Vim crashes:
+
+1. Compile Vim with the "-g" option (there is a line in the Makefile for this,
+   which you can uncomment).
+
+2. Execute these commands (replace "11" with the test that fails): >
+	cd testdir
+	gdb ../vim
+	run -u unix.vim -U NONE -s dotest.in test11.in
+
+3. Check where Vim crashes, gdb should give a message for this.
+
+4. Get a stack trace from gdb with this command: >
+	where
+<  You can check out different places in the stack trace with: >
+	frame 3
+<  Replace "3" with one of the numbers in the stack trace.
+
+							*year-2000* *Y2K*
+Since Vim internally doesn't use dates for editing, there is no year 2000
+problem to worry about.  Vim does use the time in the form of seconds since
+January 1st 1970.  It is used for a time-stamp check of the edited file and
+the swap file, which is not critical and should only cause warning messages.
+
+There might be a year 2038 problem, when the seconds don't fit in a 32 bit int
+anymore.  This depends on the compiler, libraries and operating system.
+Specifically, time_t and the ctime() function are used.  And the time_t is
+stored in four bytes in the swap file.  But that's only used for printing a
+file date/time for recovery, it will never affect normal editing.
+
+The Vim strftime() function directly uses the strftime() system function.
+localtime() uses the time() system function.  getftime() uses the time
+returned by the stat() system function.  If your system libraries are year
+2000 compliant, Vim is too.
+
+The user may create scripts for Vim that use external commands.  These might
+introduce Y2K problems, but those are not really part of Vim itself.
+
+==============================================================================
+3. Credits						*credits* *author*
+
+Most of Vim was written by Bram Moolenaar <Bram@vim.org>.
+
+Parts of the documentation come from several Vi manuals, written by:
+	W.N. Joy
+	Alan P.W. Hewett
+	Mark Horton
+
+The Vim editor is based on Stevie and includes (ideas from) other software,
+worked on by the people mentioned here.  Other people helped by sending me
+patches, suggestions and giving feedback about what is good and bad in Vim.
+
+Vim would never have become what it is now, without the help of these people!
+
+	Ron Aaron		Win32 GUI changes
+	Zoltan Arpadffy		work on VMS port
+	Tony Andrews		Stevie
+	Gert van Antwerpen	changes for DJGPP on MS-DOS
+	Berkeley DB(3)		ideas for swap file implementation
+	Keith Bostic		Nvi
+	Walter Briscoe		Makefile updates, various patches
+	Ralf Brown		SPAWNO library for MS-DOS
+	Robert Colon		many useful remarks
+	Marcin Dalecki		GTK+ GUI port, toolbar icons, gettext()
+	Kayhan Demirel		sent me news in Uganda
+	Chris & John Downey	xvi (ideas for multi-windows version)
+	Henk Elbers		first VMS port
+	Eric Fischer		Mac port, 'cindent', and other improvements
+	Benji Fisher		Answering lots of user questions
+	Bill Foster		Athena GUI port
+	Loic Grenie		xvim (ideas for multi windows version)
+	Sven Guckes		Vim promotor and previous WWW page maintainer
+	Darren Hiebert		Exuberant ctags
+	Bruce Hunsaker		improvements for VMS port
+	Andy Kahn		Cscope support, GTK+ GUI port
+	Oezguer Kesim		Maintainer of Vim Mailing Lists
+	Axel Kielhorn		work on the Macintosh port
+	Steve Kirkendall	Elvis
+	Roger Knobbe		original port to Windows NT
+	Sergey Laskavy		Vim's help from Moscow
+	Felix von Leitner	Maintainer of Vim Mailing Lists
+	David Leonard		Port of Python extensions to Unix
+	Avner Lottem		Edit in right-to-left windows
+	Flemming Madsen		X11 client-server, various features and patches
+	MicroSoft		Gave me a copy of DevStudio to compile Vim with
+	Paul Moore		Python interface extensions, many patches
+	Katsuhito Nagano	Work on multi-byte versions
+	Sung-Hyun Nam		Work on multi-byte versions
+	Vince Negri		Win32 GUI and generic console enhancements
+	Steve Oualline		Author of the first Vim book |frombook|
+	George V. Reilly	Win32 port, Win32 GUI start-off
+	Stephen Riehm		bug collector
+	Stefan Roemer		various patches and help to users
+	Ralf Schandl		IBM OS/390 port
+	Olaf Seibert		DICE and BeBox version, regexp improvements
+	Mortaza Shiran		Farsi patches
+	Peter da Silva		termlib
+	Paul Slootman		OS/2 port
+	Henry Spencer		regular expressions
+	Dany St-Amant		Macintosh port
+	Tim Thompson		Stevie
+	G. R. (Fred) Walter	Stevie
+	Sven Verdoolaege	Perl interface
+	Robert Webb		Command-line completion, GUI versions, and
+				lots of patches
+	Ingo Wilken		Tcl interface
+	Mike Williams		PostScript printing
+	Juergen Weigert		Lattice version, AUX improvements, UNIX and
+				MS-DOS ports, autoconf
+	Stefan 'Sec' Zehl	Maintainer of vim.org
+
+I wish to thank all the people that sent me bug reports and suggestions.  The
+list is too long to mention them all here.  Vim would not be the same without
+the ideas from all these people: They keep Vim alive!
+
+
+In this documentation there are several references to other versions of Vi:
+							*Vi*
+Vi	"the original".  Without further remarks this is the version
+	of Vi that appeared in Sun OS 4.x.  ":version" returns
+	"Version 3.7, 6/7/85".  Sometimes other versions are referred
+	to.  Only runs under Unix.  Source code only available with a
+	license.  More information on Vi can be found through:
+		http://vi-editor.org	[doesn't currently work...]
+							*Posix*
+Posix	From the IEEE standard 1003.2, Part 2: Shell and utilities.
+	Generally known as "Posix".  This is a textual description of
+	how Vi is supposed to work.
+	The version used is a draft from beginning 1996, so all remarks are
+	"expected to comply to" this.  Anything can change though...
+							*Nvi*
+Nvi	The "New" Vi.  The version of Vi that comes with BSD 4.4 and FreeBSD.
+	Very good compatibility with the original Vi, with a few extensions.
+	The version used is 1.79.  ":version" returns "Version 1.79
+	(10/23/96)".  There has been no release the last few years, although
+	there is a development version 1.81.
+	Source code is freely available.
+							*Elvis*
+Elvis	Another Vi clone, made by Steve Kirkendall.  Very compact but isn't
+	as flexible as Vim.
+	The version used is 2.1.  It is still being developed.  Source code is
+	freely available.
+
+==============================================================================
+4. Notation						*notation*
+
+When syntax highlighting is used to read this, text that is not typed
+literally is often highlighted with the Special group.  These are items in [],
+{} and <>, and CTRL-X.
+
+Note that Vim uses all possible characters in commands.  Sometimes the [], {}
+and <> are part of what you type, the context should make this clear.
+
+
+[]		Characters in square brackets are optional.
+
+						    *count* *[count]* *E489*
+[count]		An optional number that may precede the command to multiply
+		or iterate the command.  If no number is given, a count of one
+		is used, unless otherwise noted.  Note that in this manual the
+		[count] is not mentioned in the description of the command,
+		but only in the explanation.  This was done to make the
+		commands easier to look up.  If the 'showcmd' option is on,
+		the (partially) entered count is shown at the bottom of the
+		window.  You can use <Del> to erase the last digit (|N<Del>|).
+
+							*[quotex]*
+["x]		An optional register designation where text can be stored.
+		See |registers|.  The x is a single character between 'a' and
+		'z' or 'A' and 'Z' or '"', and in some cases (with the put
+		command) between '0' and '9', '%', '#', or others. The
+		uppercase and lowercase letter designate the same register,
+		but the lowercase letter is used to overwrite the previous
+		register contents, while the uppercase letter is used to
+		append to the previous register contents. Without the ""x" or
+		with """" the stored text is put into the unnamed register.
+
+							*{}*
+{}		Curly braces denote parts of the command which must appear,
+		but which can take a number of different values.  The
+		differences between Vim and Vi are also given in curly braces
+		(this will be clear from the context).
+
+							*{char1-char2}*
+{char1-char2}	A single character from the range char1 to char2.  For
+		example: {a-z} is a lowercase letter.  Multiple ranges may be
+		concatenated.  For example, {a-zA-Z0-9} is any alphanumeric
+		character.
+
+							*{motion}*
+{motion}	A command that moves the cursor.  These are explained in
+		|motion.txt|.  Examples:
+			w		to start of next word
+			b		to begin of current word
+			4j		four lines down
+			/The<CR>	to next occurrence of "The"
+		This is used after an |operator| command to move over the text
+		that is to be operated upon.
+		- If the motion includes a count and the operator also has a
+		  count, the two counts are multiplied.  For example: "2d3w"
+		  deletes six words.
+		- The motion can be backwards, e.g. "db" to delete to the
+		  start of the word.
+		- The motion can also be a mouse click.  The mouse is not
+		  supported in every terminal though.
+		- The ":omap" command can be used to map characters while an
+		  operator is pending.
+		- Ex commands can be used to move the cursor.  This can be
+		  used to call a function that does some complicated motion.
+		  The motion is always characterwise exclusive, no matter
+		  what ":" command is used.  This means it's impossible to
+		  include the last character of a line without the line break
+		  (unless 'virtualedit' is set).
+		  If the Ex command changes the text before where the operator
+		  starts or jumps to another buffer the result is
+		  unpredictable.  It is possible to change the text further
+		  down.  Jumping to another buffer is possible if the current
+		  buffer is not unloaded.
+
+							*{Visual}*
+{Visual}	A selected text area.  It is started with the "v", "V", or
+		CTRL-V command, then any cursor movement command can be used
+		to change the end of the selected text.
+		This is used before an |operator| command to highlight the
+		text that is to be operated upon.
+		See |Visual-mode|.
+
+							*<character>*
+<character>	A special character from the table below, optionally with
+		modifiers, or a single ASCII character with modifiers.
+
+							*'character'*
+'c'		A single ASCII character.
+
+							*CTRL-{char}*
+CTRL-{char}	{char} typed as a control character; that is, typing {char}
+		while holding the CTRL key down.  The case of {char} does not
+		matter; thus CTRL-A and CTRL-a are equivalent.  But on some
+		terminals, using the SHIFT key will produce another code,
+		don't use it then.
+
+							*'option'*
+'option'	An option, or parameter, that can be set to a value, is
+		enclosed in single quotes.  See |options|.
+
+							*quotecommandquote*
+"command"	A reference to a command that you can type is enclosed in
+		double quotes.
+
+					*key-notation* *key-codes* *keycodes*
+These names for keys are used in the documentation.  They can also be used
+with the ":map" command (insert the key name by pressing CTRL-K and then the
+key you want the name for).
+
+notation	meaning		    equivalent	decimal value(s)	~
+-----------------------------------------------------------------------
+<Nul>		zero			CTRL-@	  0 (stored as 10) *<Nul>*
+<BS>		backspace		CTRL-H	  8	*backspace*
+<Tab>		tab			CTRL-I	  9	*tab* *Tab*
+							*linefeed*
+<NL>		linefeed		CTRL-J	 10 (used for <Nul>)
+<FF>		formfeed		CTRL-L	 12	*formfeed*
+<CR>		carriage return		CTRL-M	 13	*carriage-return*
+<Return>	same as <CR>				*<Return>*
+<Enter>		same as <CR>				*<Enter>*
+<Esc>		escape			CTRL-[	 27	*escape* *<Esc>*
+<Space>		space				 32	*space*
+<lt>		less-than		<	 60	*<lt>*
+<Bslash>	backslash		\	 92	*backslash* *<Bslash>*
+<Bar>		vertical bar		|	124	*<Bar>*
+<Del>		delete				127
+<CSI>		command sequence intro  ALT-Esc 155	*<CSI>*
+<xCSI>		CSI when typed in the GUI		*<xCSI>*
+
+<EOL>		end-of-line (can be <CR>, <LF> or <CR><LF>,
+		depends on system and 'fileformat')	*<EOL>*
+
+<Up>		cursor-up			*cursor-up* *cursor_up*
+<Down>		cursor-down			*cursor-down* *cursor_down*
+<Left>		cursor-left			*cursor-left* *cursor_left*
+<Right>		cursor-right			*cursor-right* *cursor_right*
+<S-Up>		shift-cursor-up
+<S-Down>	shift-cursor-down
+<S-Left>	shift-cursor-left
+<S-Right>	shift-cursor-right
+<C-Left>	control-cursor-left
+<C-Right>	control-cursor-right
+<F1> - <F12>	function keys 1 to 12		*function_key* *function-key*
+<S-F1> - <S-F12> shift-function keys 1 to 12	*<S-F1>*
+<Help>		help key
+<Undo>		undo key
+<Insert>	insert key
+<Home>		home				*home*
+<End>		end				*end*
+<PageUp>	page-up				*page_up* *page-up*
+<PageDown>	page-down			*page_down* *page-down*
+<kHome>		keypad home (upper left)	*keypad-home*
+<kEnd>		keypad end (lower left)		*keypad-end*
+<kPageUp>	keypad page-up (upper right)	*keypad-page-up*
+<kPageDown>	keypad page-down (lower right)	*keypad-page-down*
+<kPlus>		keypad +			*keypad-plus*
+<kMinus>	keypad -			*keypad-minus*
+<kMultiply>	keypad *			*keypad-multiply*
+<kDivide>	keypad /			*keypad-divide*
+<kEnter>	keypad Enter			*keypad-enter*
+<kPoint>	keypad Decimal point		*keypad-point*
+<k0> - <k9>	keypad 0 to 9			*keypad-0* *keypad-9*
+<S-...>		shift-key			*shift* *<S-*
+<C-...>		control-key			*control* *ctrl* *<C-*
+<M-...>		alt-key or meta-key		*meta* *alt* *<M-*
+<A-...>		same as <M-...>			*<A-*
+<D-...>		command-key (Macintosh only)	*<D-*
+<t_xx>		key with "xx" entry in termcap
+-----------------------------------------------------------------------
+
+Note: The shifted cursor keys, the help key, and the undo key are only
+available on a few terminals.  On the Amiga, shifted function key 10 produces
+a code (CSI) that is also used by key sequences.  It will be recognized only
+after typing another key.
+
+Note: There are two codes for the delete key.  127 is the decimal ASCII value
+for the delete key, which is always recognized.  Some delete keys send another
+value, in which case this value is obtained from the termcap entry "kD".  Both
+values have the same effect.  Also see |:fixdel|.
+
+Note: The keypad keys are used in the same way as the corresponding "normal"
+keys.  For example, <kHome> has the same effect as <Home>.  If a keypad key
+sends the same raw key code as its non-keypad equivalent, it will be
+recognized as the non-keypad code.  For example, when <kHome> sends the same
+code as <Home>, when pressing <kHome> Vim will think <Home> was pressed.
+Mapping <kHome> will not work then.
+
+								*<>*
+Examples are often given in the <> notation.  Sometimes this is just to make
+clear what you need to type, but often it can be typed literally, e.g., with
+the ":map" command.  The rules are:
+ 1.  Any printable characters are typed directly, except backslash and '<'
+ 2.  A backslash is represented with "\\", double backslash, or "<Bslash>".
+ 3.  A real '<' is represented with "\<" or "<lt>".  When there is no
+     confusion possible, a '<' can be used directly.
+ 4.  "<key>" means the special key typed.  This is the notation explained in
+     the table above.  A few examples:
+	   <Esc>		Escape key
+	   <C-G>		CTRL-G
+	   <Up>			cursor up key
+	   <C-LeftMouse>	Control- left mouse click
+	   <S-F11>		Shifted function key 11
+	   <M-a>		Meta- a  ('a' with bit 8 set)
+	   <M-A>		Meta- A  ('A' with bit 8 set)
+	   <t_kd>		"kd" termcap entry (cursor down key)
+
+If you want to use the full <> notation in Vim, you have to make sure the '<'
+flag is excluded from 'cpoptions' (when 'compatible' is not set, it already is
+by default). >
+	:set cpo-=<
+The <> notation uses <lt> to escape the special meaning of key names.  Using a
+backslash also works, but only when 'cpoptions' does not include the 'B' flag.
+
+Examples for mapping CTRL-H to the six characters "<Home>": >
+	:imap <C-H> \<Home>
+	:imap <C-H> <lt>Home>
+The first one only works when the 'B' flag is not in 'cpoptions'.  The second
+one always works.
+To get a literal "<lt>" in a mapping: >
+	:map <C-L> <lt>lt>
+
+For mapping, abbreviation and menu commands you can then copy-paste the
+examples and use them directly.  Or type them literally, including the '<' and
+'>' characters.  This does NOT work for other commands, like ":set" and
+":autocmd"!
+
+==============================================================================
+5. Modes, introduction				*vim-modes-intro* *vim-modes*
+
+Vim has six BASIC modes:
+
+					*Normal* *Normal-mode* *command-mode*
+Normal mode		In Normal mode you can enter all the normal editor
+			commands.  If you start the editor you are in this
+			mode (unless you have set the 'insertmode' option,
+			see below).  This is also known as command mode.
+
+Visual mode		This is like Normal mode, but the movement commands
+			extend a highlighted area.  When a non-movement
+			command is used, it is executed for the highlighted
+			area.  See |Visual-mode|.
+			If the 'showmode' option is on "-- VISUAL --" is shown
+			at the bottom of the window.
+
+Select mode		This looks most like the MS-Windows selection mode.
+			Typing a printable character deletes the selection
+			and starts Insert mode.  See |Select-mode|.
+			If the 'showmode' option is on "-- SELECT --" is shown
+			at the bottom of the window.
+
+Insert mode		In Insert mode the text you type is inserted into the
+			buffer.  See |Insert-mode|.
+			If the 'showmode' option is on "-- INSERT --" is shown
+			at the bottom of the window.
+
+Command-line mode	In Command-line mode (also called Cmdline mode) you
+Cmdline mode		can enter one line of text at the bottom of the
+			window.  This is for the Ex commands, ":", the pattern
+			search commands, "?" and "/", and the filter command,
+			"!".  |Cmdline-mode|
+
+Ex mode			Like Command-line mode, but after entering a command
+			you remain in Ex mode.  Very limited editing of the
+			command line.  |Ex-mode|
+
+There are five ADDITIONAL modes.  These are variants of the BASIC modes:
+
+				*Operator-pending* *Operator-pending-mode*
+Operator-pending mode	This is like Normal mode, but after an operator
+			command has started, and Vim is waiting for a {motion}
+			to specify the text that the operator will work on.
+
+Replace mode		Replace mode is a special case of Insert mode.  You
+			can do the same things as in Insert mode, but for
+			each character you enter, one character of the existing
+			text is deleted.  See |Replace-mode|.
+			If the 'showmode' option is on "-- REPLACE --" is
+			shown at the bottom of the window.
+
+Insert Normal mode	Entered when CTRL-O given in Insert mode.  This is
+			like Normal mode, but after executing one command Vim
+			returns to Insert mode.
+			If the 'showmode' option is on "-- (insert) --" is
+			shown at the bottom of the window.
+
+Insert Visual mode	Entered when starting a Visual selection from Insert
+			mode, e.g., by using CTRL-O and then "v", "V" or
+			CTRL-V.  When the Visual selection ends, Vim returns
+			to Insert mode.
+			If the 'showmode' option is on "-- (insert) VISUAL --"
+			is shown at the bottom of the window.
+
+Insert Select mode	Entered when starting Select mode from Insert mode.
+			E.g., by dragging the mouse or <S-Right>.
+			When the Select mode ends, Vim returns to Insert mode.
+			If the 'showmode' option is on "-- (insert) SELECT --"
+			is shown at the bottom of the window.
+
+==============================================================================
+6. Switching from mode to mode				*mode-switching*
+
+If for any reason you do not know which mode you are in, you can always get
+back to Normal mode by typing <Esc> twice.  This doesn't work for Ex mode
+though, use ":visual".
+You will know you are back in Normal mode when you see the screen flash or
+hear the bell after you type <Esc>.  However, when pressing <Esc> after using
+CTRL-O in Insert mode you get a beep but you are still in Insert mode, type
+<Esc> again.
+
+							*i_esc*
+		TO mode						    ~
+		Normal	Visual	Select	Insert	  Replace   Cmd-line  Ex ~
+FROM mode								 ~
+Normal			v V ^V	  *4	 *1	    R	    : / ? !   Q
+Visual		 *2		  ^G	 c C	    --	      :       --
+Select		 *5	^O ^G		 *6	    --	      --      --
+Insert		 <Esc>	  --	  --		  <Insert>    --      --
+Replace		 <Esc>	  --	  --	<Insert>	      --      --
+Command-line	 *3	  --	  --	 :start	    --		      --
+Ex		 :vi	  --	  --	 --	    --	      --
+
+-  NA
+-- not possible
+
+*1 Go from Normal mode to Insert mode by giving the command "i", "I", "a",
+   "A", "o", "O", "c", "C", "s" or S".
+*2 Go from Visual mode to Normal mode by giving a non-movement command, which
+   causes the command to be executed, or by hitting <Esc> "v", "V" or "CTRL-V"
+   (see |v_v|), which just stops Visual mode without side effects.
+*3 Go from Command-line mode to Normal mode by:
+   - Hitting <CR> or <NL>, which causes the entered command to be executed.
+   - Deleting the complete line (e.g., with CTRL-U) and giving a final <BS>.
+   - Hitting CTRL-C or <Esc>, which quits the command-line without executing
+     the command.
+   In the last case <Esc> may be the character defined with the 'wildchar'
+   option, in which case it will start command-line completion.  You can
+   ignore that and type <Esc> again.  {Vi: when hitting <Esc> the command-line
+   is executed.  This is unexpected for most people; therefore it was changed
+   in Vim.  But when the <Esc> is part of a mapping, the command-line is
+   executed.  If you want the Vi behaviour also when typing <Esc>, use ":cmap
+   ^V<Esc> ^V^M"}
+*4 Go from Normal to Select mode by:
+   - use the mouse to select text while 'selectmode' contains "mouse"
+   - use a non-printable command to move the cursor while keeping the Shift
+     key pressed, and the 'selectmode' option contains "key"
+   - use "v", "V" or "CTRL-V" while 'selectmode' contains "cmd"
+   - use "gh", "gH" or "g CTRL-H"  |g_CTRL-H|
+*5 Go from Select mode to Normal mode by using a non-printable command to move
+   the cursor, without keeping the Shift key pressed.
+*6 Go from Select mode to Insert mode by typing a printable character.  The
+   selection is deleted and the character is inserted.
+
+If the 'insertmode' option is on, editing a file will start in Insert mode.
+
+	*CTRL-\_CTRL-N* *i_CTRL-\_CTRL-N* *c_CTRL-\_CTRL-N* *v_CTRL-\_CTRL-N*
+Additionally the command CTRL-\ CTRL-N or <C-\><C-N> can be used to go to
+Normal mode from any other mode.  This can be used to make sure Vim is in
+Normal mode, without causing a beep like <Esc> would.  However, this does not
+work in Ex mode.  When used after a command that takes an argument, such as
+|f| or |m|, the timeout set with 'ttimeoutlen' applies.
+
+	*CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G*
+The command CTRL-\ CTRL-G or <C-\><C-G> can be used to go to Insert mode when
+'insertmode' is set.  Otherwise it goes to Normal mode.  This can be used to
+make sure Vim is in the mode indicated by 'insertmode', without knowing in
+what mode Vim currently is.
+
+				    *Q* *mode-Ex* *Ex-mode* *Ex* *EX* *E501*
+Q			Switch to "Ex" mode.  This is a bit like typing ":"
+			commands one after another, except:
+			- You don't have to keep pressing ":".
+			- The screen doesn't get updated after each command.
+			- There is no normal command-line editing.
+			- Mappings and abbreviations are not used.
+			In fact, you are editing the lines with the "standard"
+			line-input editing commands (<Del> or <BS> to erase,
+			CTRL-U to kill the whole line).
+			Vim will enter this mode by default if it's invoked as
+			"ex" on the command-line.
+			Use the ":vi" command |:visual| to exit "Ex" mode.
+			Note: In older versions of Vim "Q" formatted text,
+			that is now done with |gq|.  But if you use the
+			|vimrc_example.vim| script "Q" works like "gq".
+
+					*gQ*
+gQ			Switch to "Ex" mode, but really behave like typing ":"
+			commands after another.  All command line editing,
+			completion etc. is available.
+			Use the ":vi" command |:visual| to exit "Ex" mode.
+			{not in Vi}
+
+==============================================================================
+7. The window contents					*window-contents*
+
+In Normal mode and Insert/Replace mode the screen window will show the current
+contents of the buffer: What You See Is What You Get.  There are two
+exceptions:
+- When the 'cpoptions' option contains '$', and the change is within one line,
+  the text is not directly deleted, but a '$' is put at the last deleted
+  character.
+- When inserting text in one window, other windows on the same text are not
+  updated until the insert is finished.
+{Vi: The screen is not always updated on slow terminals}
+
+Lines longer than the window width will wrap, unless the 'wrap' option is off
+(see below).  The 'linebreak' option can be set to wrap at a blank character.
+
+If the window has room after the last line of the buffer, Vim will show '~' in
+the first column of the last lines in the window, like this: >
+
+	+-----------------------+
+	|some line		|
+	|last line		|
+	|~			|
+	|~			|
+	+-----------------------+
+
+Thus the '~' lines indicate that the end of the buffer was reached.
+
+If the last line in a window doesn't fit, Vim will indicate this with a '@' in
+the first column of the last lines in the window, like this: >
+
+	+-----------------------+
+	|first line		|
+	|second line		|
+	|@			|
+	|@			|
+	+-----------------------+
+
+Thus the '@' lines indicate that there is a line that doesn't fit in the
+window.
+
+When the "lastline" flag is present in the 'display' option, you will not see
+'@' characters at the left side of window.  If the last line doesn't fit
+completely, only the part that fits is shown, and the last three characters of
+the last line are replaced with "@@@", like this: >
+
+	+-----------------------+
+	|first line		|
+	|second line		|
+	|a very long line that d|
+	|oesn't fit in the wi@@@|
+	+-----------------------+
+
+If there is a single line that is too long to fit in the window, this is a
+special situation.  Vim will show only part of the line, around where the
+cursor is.  There are no special characters shown, so that you can edit all
+parts of this line.
+{Vi: gives an "internal error" on lines that do not fit in the window}
+
+The '@' occasion in the 'highlight' option can be used to set special
+highlighting for the '@' and '~' characters.  This makes it possible to
+distinguish them from real characters in the buffer.
+
+The 'showbreak' option contains the string to put in front of wrapped lines.
+
+							*wrap-off*
+If the 'wrap' option is off, long lines will not wrap.  Only the part that
+fits on the screen is shown.  If the cursor is moved to a part of the line
+that is not shown, the screen is scrolled horizontally.  The advantage of
+this method is that columns are shown as they are and lines that cannot fit
+on the screen can be edited.  The disadvantage is that you cannot see all the
+characters of a line at once.  The 'sidescroll' option can be set to the
+minimal number of columns to scroll.  {Vi: has no 'wrap' option}
+
+All normal ASCII characters are displayed directly on the screen.  The <Tab>
+is replaced with the number of spaces that it represents.  Other non-printing
+characters are replaced with "^{char}", where {char} is the non-printing
+character with 64 added.  Thus character 7 (bell) will be shown as "^G".
+Characters between 127 and 160 are replaced with "~{char}", where {char} is
+the character with 64 subtracted.  These characters occupy more than one
+position on the screen.  The cursor can only be positioned on the first one.
+
+If you set the 'number' option, all lines will be preceded with their
+number.  Tip: If you don't like wrapping lines to mix with the line numbers,
+set the 'showbreak' option to eight spaces:
+	":set showbreak=\ \ \ \ \ \ \ \ "
+
+If you set the 'list' option, <Tab> characters will not be shown as several
+spaces, but as "^I".  A '$' will be placed at the end of the line, so you can
+find trailing blanks.
+
+In Command-line mode only the command-line itself is shown correctly.  The
+display of the buffer contents is updated as soon as you go back to Command
+mode.
+
+The last line of the window is used for status and other messages.  The
+status messages will only be used if an option is on:
+
+status message			option	     default	Unix default	~
+current mode			'showmode'	on	    on
+command characters		'showcmd'	on	    off
+cursor position			'ruler'		off	    off
+
+The current mode is "-- INSERT --" or "-- REPLACE --", see |'showmode'|.  The
+command characters are those that you typed but were not used yet.  {Vi: does
+not show the characters you typed or the cursor position}
+
+If you have a slow terminal you can switch off the status messages to speed
+up editing:
+	:set nosc noru nosm
+
+If there is an error, an error message will be shown for at least one second
+(in reverse video).  {Vi: error messages may be overwritten with other
+messages before you have a chance to read them}
+
+Some commands show how many lines were affected.  Above which threshold this
+happens can be controlled with the 'report' option (default 2).
+
+On the Amiga Vim will run in a CLI window.  The name Vim and the full name of
+the current file name will be shown in the title bar.  When the window is
+resized, Vim will automatically redraw the window.  You may make the window as
+small as you like, but if it gets too small not a single line will fit in it.
+Make it at least 40 characters wide to be able to read most messages on the
+last line.
+
+On most Unix systems, resizing the window is recognized and handled correctly
+by Vim.  {Vi: not ok}
+
+==============================================================================
+8. Definitions						*definitions*
+
+  screen		The whole area that Vim uses to work in.  This can be
+			a terminal emulator window.  Also called "the Vim
+			window".
+  window		A view on a buffer.
+
+A screen contains one or more windows, separated by status lines and with the
+command line at the bottom.
+
+	+-------------------------------+
+screen	| window 1	| window 2	|
+	|		|		|
+	|		|		|
+	|= status line =|= status line =|
+	| window 3			|
+	|				|
+	|				|
+	|==== status line ==============|
+	|command line			|
+	+-------------------------------+
+
+The command line is also used for messages.  It scrolls up the screen when
+there is not enough room in the command line.
+
+A difference is made between four types of lines:
+
+  buffer lines		The lines in the buffer.  This is the same as the
+			lines as they are read from/written to a file.  They
+			can be thousands of characters long.
+  logical lines		The buffer lines with folding applied.  Buffer lines
+			in a closed fold are changed to a single logical line:
+			"+-- 99 lines folded".  They can be thousands of
+			characters long.
+  window lines		The lines displayed in a window: A range of logical
+			lines with wrapping, line breaks, etc.  applied.  They
+			can only be as long as the width of the window allows,
+			longer lines are wrapped or truncated.
+  screen lines		The lines of the screen that Vim uses.  Consists of
+			the window lines of all windows, with status lines
+			and the command line added.  They can only be as long
+			as the width of the screen allows.  When the command
+			line gets longer it wraps and lines are scrolled to
+			make room.
+
+buffer lines	logical lines	window lines	screen lines ~
+
+1. one		1. one		1. +-- folded   1.  +-- folded
+2. two		2. +-- folded	2. five		2.  five
+3. three	3. five		3. six		3.  six
+4. four		4. six		4. seven	4.  seven
+5. five		5. seven			5.  === status line ===
+6. six						6.  aaa
+7. seven					7.  bbb
+						8.  ccc ccc c
+1. aaa		1. aaa		1. aaa		9.  cc
+2. bbb		2. bbb		2. bbb		10. ddd
+3. ccc ccc ccc	3. ccc ccc ccc	3. ccc ccc c	11. ~ 
+4. ddd		4. ddd		4. cc		12. === status line ===
+				5. ddd		13. (command line)
+				6. ~ 
+
+==============================================================================
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/makehtml.awk b/runtime/doc/makehtml.awk
new file mode 100644
index 0000000..8ae067e
--- /dev/null
+++ b/runtime/doc/makehtml.awk
@@ -0,0 +1,780 @@
+BEGIN   {
+	# some initialization variables
+	asciiart="no";
+	wasset="no";
+	lineset=0;
+	sample="no";
+	while ( getline ti <"tags.ref" > 0 ) {
+		nf=split(ti,tag,"	");
+		tagkey[tag[1]]="yes";tagref[tag[1]]=tag[2];
+	}
+	skip_word["and"]="yes";
+	skip_word["backspace"]="yes";
+	skip_word["beep"]="yes";
+	skip_word["bugs"]="yes";
+	skip_word["da"]="yes";
+	skip_word["end"]="yes";
+	skip_word["ftp"]="yes";
+	skip_word["go"]="yes";
+	skip_word["help"]="yes";
+	skip_word["home"]="yes";
+	skip_word["news"]="yes";
+	skip_word["index"]="yes";
+	skip_word["insert"]="yes";
+	skip_word["into"]="yes";
+	skip_word["put"]="yes";
+	skip_word["reference"]="yes";
+	skip_word["section"]="yes";
+	skip_word["space"]="yes";
+	skip_word["starting"]="yes";
+	skip_word["toggle"]="yes";
+	skip_word["various"]="yes";
+	skip_word["version"]="yes";
+	skip_word["is"]="yes";
+}
+#
+# protect special chars
+#
+/[><&á]/ {gsub(/&/,"\\&amp;");gsub(/>/,"\\&gt;");gsub(/</,"\\&lt;");gsub("á","\\&aacute;");}
+#
+# end of sample lines by non-blank in first column
+#
+sample == "yes" && substr($0,1,4) == "&lt;" { sample = "no"; gsub(/^&lt;/, " "); }
+sample == "yes" && substr($0,1,1) != " " && substr($0,1,1) != "	" && length($0) > 0 { sample = "no" }
+#
+# sample lines printed bold unless empty...
+#
+sample == "yes" && $0 =="" { print ""; next; }
+sample == "yes" && $0 !="" { print "<B>" $0 "</B>"; next; }
+#
+# start of sample lines in next line
+#
+$0 == "&gt;" { sample = "yes"; print ""; next; }
+substr($0,length($0)-4,5) == " &gt;" { sample = "yes"; gsub(/ &gt;$/, ""); }
+#
+# header lines printed bold, colored
+#
+substr($0,length($0),1) == "~" { print "<B><FONT COLOR=\"PURPLE\">" substr($0,1,length($0)-1) "</FONT></B>"; next; }
+#
+#ad hoc code
+#
+/^"\|\& / {gsub(/\|/,"\\&#124;"); }
+/ = b / {gsub(/ b /," \\&#98; "); }
+#
+# one letter tag
+#
+/[ 	]\*.\*[ 	]/ {gsub(/\*/,"ZWWZ"); }
+#
+# isolated "*"
+#
+/[ 	]\*[ 	]/ {gsub(/ \* /," \\&#42; ");
+		    gsub(/ \*	/," \\&#42;	");
+		    gsub(/	\* /,"	\\&#42; ");
+		    gsub(/	\*	/,"	\\&#42;	"); }
+#
+# tag start
+#
+/[ 	]\*[^ 	]/	{gsub(/ \*/," ZWWZ");gsub(/	\*/,"	ZWWZ");}
+/^\*[^ 	]/ 	 {gsub(/^\*/,"ZWWZ");}
+#
+# tag end
+#
+/[^ 	]\*$/ 	 {gsub(/\*$/,"ZWWZ");}
+/[^ \/	]\*[ 	]/  {gsub(/\*/,"ZWWZ");}
+#
+# isolated "|"
+#
+/[ 	]\|[ 	]/ {gsub(/ \| /," \\&#124; ");
+		    gsub(/ \|	/," \\&#124;	");
+		    gsub(/	\| /,"	\\&#124; ");
+		    gsub(/	\|	/,"	\\&#124;	"); }
+/'\|'/ { gsub(/'\|'/,"'\\&#124;'"); }
+/\^V\|/ {gsub(/\^V\|/,"^V\\&#124;");}
+/ \\\|	/ {gsub(/\|/,"\\&#124;");}
+#
+# one letter pipes and "||" false pipe (digraphs)
+#
+/[ 	]\|.\|[ 	]/ && asciiart == "no" {gsub(/\|/,"YXXY"); }
+/^\|.\|[ 	]/ {gsub(/\|/,"YXXY"); }
+/\|\|/ {gsub(/\|\|/,"\\&#124;\\&#124;"); }
+/^shellpipe/ {gsub(/\|/,"\\&#124;"); }
+#
+# pipe start
+#
+/[ 	]\|[^ 	]/ && asciiart == "no"	{gsub(/ \|/," YXXY");
+			gsub(/	\|/,"	YXXY");}
+/^\|[^ 	]/ 	 {gsub(/^\|/,"YXXY");}
+#
+# pipe end
+#
+/[^ 	]\|$/ && asciiart == "no" {gsub(/\|$/,"YXXY");}
+/[^ 	]\|[s ,.);	]/ && asciiart == "no" {gsub(/\|/,"YXXY");}
+/[^ 	]\|]/ && asciiart == "no" {gsub(/\|/,"YXXY");}
+#
+# various
+#
+/'"/ 	{gsub(/'"/,"\\&#39;\\&#34;'");}
+/"/	{gsub(/"/,"\\&quot;");}
+/%/	{gsub(/%/,"\\&#37;");}
+
+NR == 1 { nf=split(FILENAME,f,".")
+	print "<HTML>";
+
+	print "<HEAD>"
+	if ( FILENAME == "mbyte.txt" ) {
+	    # needs utf-8 as uses many languages
+	    print "<META HTTP-EQUIV=\"Content-type\" content=\"text/html; charset=UTF-8\">";
+	} else {
+	    # common case - Latin1
+	    print "<META HTTP-EQUIV=\"Content-type\" content=\"text/html; charset=ISO-8859-1\">";
+	}
+	print "<TITLE>Vim documentation: " f[1] "</TITLE>";
+	print "</HEAD>";
+
+	print "<BODY BGCOLOR=\"#ffffff\">";
+	print "<H1>Vim documentation: " f[1] "</H1>";
+	print "<A NAME=\"top\"></A>";
+	if ( FILENAME != "help.txt" ) {
+	  print "<A HREF=\"help.html\">main help file</A>\n";
+	}
+	print "<HR>";
+	print "<PRE>";
+	filename=f[1]".html";
+}
+
+# set to a low value to test for few lines of text
+# NR == 99999 { exit; }
+
+# ignore underlines and tags
+substr($0,1,5) == " vim:" { next; }
+substr($0,1,4) == "vim:" { next; }
+# keep just whole lines of "-", "="
+substr($0,1,3) == "===" && substr($0,75,1) != "=" { next; }
+substr($0,1,3) == "---" && substr($0,75,1) != "-" { next; }
+
+{
+	nstar = split($0,s,"ZWWZ");
+	for ( i=2 ; i <= nstar ; i=i+2 ) {
+		nbla=split(s[i],blata,"[ 	]");
+		if ( nbla > 1 ) {
+			gsub("ZWWZ","*");
+			nstar = split($0,s,"ZWWZ");
+		}
+	}
+	npipe = split($0,p,"YXXY");
+	for ( i=2 ; i <= npipe ; i=i+2 ) {
+		nbla=split(p[i],blata,"[ 	]");
+		if ( nbla > 1 ) {
+			gsub("YXXY","|");
+			ntabs = split($0,p,"YXXY");
+		}
+	}
+}
+
+
+FILENAME == "gui.txt" && asciiart == "no"  \
+	  && $0 ~ /\+----/ && $0 ~ /----\+/ {
+	asciiart= "yes";
+	asciicnt=0;
+	}
+
+FILENAME == "quotes.txt" && asciiart == "no" \
+	  && $0 ~ /In summary:/ {
+	asciiart= "yes";
+	asciicnt=0;
+	}
+
+FILENAME == "usr_20.txt" && asciiart == "no" \
+	  && $0 ~ /an empty line at the end:/ {
+	asciiart= "yes";
+	asciicnt=0;
+	}
+
+asciiart == "yes" && $0=="" { asciicnt++; }
+
+asciiart == "yes" && asciicnt == 2 { asciiart = "no"; }
+
+asciiart == "yes" { npipe = 1; }
+#	{ print NR " <=> " asciiart; }
+
+#
+# line contains  "*"
+#
+nstar > 2 && npipe < 3 {
+	printf("\n");
+	for ( i=1; i <= nstar ; i=i+2 ) {
+		this=s[i];
+		put_this();
+		ii=i+1;
+		nbla = split(s[ii],blata," ");
+		if ( ii <= nstar ) {
+			if ( nbla == 1 && substr(s[ii],length(s[ii]),1) != " " ) {
+			printf("*<A NAME=\"%s\"></A>",s[ii]);
+				printf("<B>%s</B>*",s[ii]);
+			} else {
+			printf("*%s*",s[ii]);
+			}
+		}
+	}
+	printf("\n");
+	next;
+	}
+#
+# line contains "|"
+#
+npipe > 2 && nstar < 3 {
+	if  ( npipe%2 == 0 ) {
+		for ( i=1; i < npipe ; i++ ) {
+			gsub("ZWWZ","*",p[i]);
+			printf("%s|",p[i]);
+		}
+		printf("%s\n",p[npipe]);
+		next;
+		}
+	for ( i=1; i <= npipe ; i++ )
+		{
+		if ( i % 2 == 1 ) {
+			gsub("ZWWZ","*",p[i]);
+			this=p[i];
+			put_this();
+			}
+			else {
+			nfn=split(p[i],f,".");
+			if ( nfn == 1 || f[2] == "" || f[1] == "" || length(f[2]) < 3 ) {
+				find_tag1();
+				}
+				else {
+		printf "|<A HREF=\"" f[1] ".html\">" p[i] "</A>|";
+				}
+			}
+		}
+		printf("\n");
+		next;
+	}
+#
+# line contains both "|" and "*"
+#
+npipe > 2 && nstar > 2 {
+	printf("\n");
+	for ( j=1; j <= nstar ; j=j+2 ) {
+		npipe = split(s[j],p,"YXXY");
+		if ( npipe > 1 ) {
+			for ( np=1; np<=npipe; np=np+2 ) {
+				this=p[np];
+				put_this();
+				i=np+1;find_tag1();
+			}
+		} else {
+			this=s[j];
+			put_this();
+		}
+		jj=j+1;
+		nbla = split(s[jj],blata," ");
+		if ( jj <= nstar && nbla == 1 && s[jj] != "" ) {
+		printf("*<A NAME=\"%s\"></A>",s[jj]);
+			printf("<B>%s</B>*",s[jj]);
+		} else {
+			if ( s[jj] != "" ) {
+			printf("*%s*",s[jj]);
+			}
+		}
+	}
+	printf("\n");
+	next;
+	}
+#
+# line contains e-mail address john.doe@some.place.edu
+#
+$0 ~ /@/ && $0 ~ /[a-zA-Z0-9]@[a-z]/ \
+	{
+	nemail=split($0,em," ");
+	if ( substr($0,1,1) == "	" ) { printf("	"); }
+	for ( i=1; i <= nemail; i++ ) {
+		if ( em[i] ~ /@/ ) {
+			if ( substr(em[i],2,3) == "lt;" && substr(em[i],length(em[i])-2,3) == "gt;" ) {
+				mailaddr=substr(em[i],5,length(em[i])-8);
+				printf("<A HREF=\"mailto:%s\">&lt;%s&gt;</A> ",mailaddr,mailaddr);
+			} else {
+				if ( substr(em[i],2,3) == "lt;" && substr(em[i],length(em[i])-3,3) == "gt;" ) {
+					mailaddr=substr(em[i],5,length(em[i])-9);
+					printf("<A HREF=\"mailto:%s\">&lt;%s&gt;</A>%s ",mailaddr,mailaddr,substr(em[i],length(em[i]),1));
+				} else {
+					printf("<A HREF=\"mailto:%s\">%s</A> ",em[i],em[i]);
+				}
+			}
+		} else {
+				printf("%s ",em[i]);
+		}
+	}
+	#print "*** " NR " " FILENAME " - possible mail ref";
+	printf("\n");
+	next;
+	}
+#
+# line contains http / ftp reference
+#
+$0 ~ /http:\/\// || $0 ~ /ftp:\/\// {
+	gsub("URL:","");
+	gsub("&lt;","");
+	gsub("&gt;","");
+	gsub("\\(","");
+	gsub("\\)","");
+	nemail=split($0,em," ");
+	for ( i=1; i <= nemail; i++ ) {
+		if ( substr(em[i],1,5) == "http:" ||
+	     	substr(em[i],1,4) == "ftp:" ) {
+			if ( substr(em[i],length(em[i]),1) != "." ) {
+				printf("	<A HREF=\"%s\">%s</A>",em[i],em[i]);
+			} else {
+				em[i]=substr(em[i],1,length(em[i])-1);
+				printf("	<A HREF=\"%s\">%s</A>.",em[i],em[i]);
+			}
+		} else {
+		printf(" %s",em[i]);
+		}
+	}
+	#print "*** " NR " " FILENAME " - possible http ref";
+	printf("\n");
+	next;
+	}
+#
+# some lines contains just one "almost regular" "*"...
+#
+nstar == 2  {
+	this=s[1];
+	put_this();
+	printf("*");
+	this=s[2];
+	put_this();
+	printf("\n");
+	next;
+	}
+#
+# regular line
+#
+	{ ntabs = split($0,tb,"	");
+	for ( i=1; i < ntabs ; i++) {
+		this=tb[i];
+		put_this();
+		printf("	");
+		}
+	this=tb[ntabs];
+	put_this();
+	printf("\n");
+	}
+
+
+asciiart == "yes"  && $0 ~ /\+-\+--/  \
+	&& $0 ~ "scrollbar" { asciiart = "no"; }
+
+END {
+	topback();
+	print "</PRE>\n</BODY>\n\n\n</HTML>"; }
+
+#
+# as main we keep index.txt (by default)
+# other candidate, help.txt
+#
+function topback () {
+	if ( FILENAME != "tags" ) {
+	if ( FILENAME != "help.txt" ) {
+	printf("<A HREF=\"#top\">top</A> - ");
+	printf("<A HREF=\"help.html\">main help file</A>\n");
+	} else {
+	printf("<A HREF=\"#top\">top</A>\n");
+	}
+	}
+}
+
+function find_tag1() {
+	if ( p[i] == "" ) { return; }
+	if ( tagkey[p[i]] == "yes" ) {
+		which=tagref[p[i]];
+		put_href();
+		return;
+	}
+	# if not found, then we have a problem
+	print "============================================"  >>"errors.log";
+	print FILENAME ", line " NR ", pointer: >>" p[i] "<<" >>"errors.log";
+	print $0 >>"errors.log";
+	which="intro.html";
+	put_href();
+}
+
+function see_tag() {
+# ad-hoc code:
+if ( atag == "\"--" || atag == "--\"" ) { return; }
+if_already();
+if ( already == "yes" ) {
+	printf("%s",aword);
+	return;
+	}
+allow_one_char="no";
+find_tag2();
+if ( done == "yes" ) { return; }
+rightchar=substr(atag,length(atag),1);
+if (    rightchar == "." \
+     || rightchar == "," \
+     || rightchar == ":" \
+     || rightchar == ";" \
+     || rightchar == "!" \
+     || rightchar == "?" \
+     || rightchar == ")" ) {
+	atag=substr(atag,1,length(atag)-1);
+	if_already();
+	if ( already == "yes" ) {
+		printf("%s",aword);
+		return;
+	}
+	find_tag2();
+	if ( done == "yes" ) { printf("%s",rightchar);return; }
+	leftchar=substr(atag,1,1);
+	lastbut1=substr(atag,length(atag),1);
+	if (    leftchar == "'" && lastbut1 == "'"  ) {
+		allow_one_char="yes";
+		atag=substr(atag,2,length(atag)-2);
+		if_already();
+		if ( already == "yes" ) {
+			printf("%s",aword);
+			return;
+		}
+		printf("%s",leftchar);
+		aword=substr(atag,1,length(atag))""lastbut1""rightchar;
+		find_tag2();
+		if ( done == "yes" ) { printf("%s%s",lastbut1,rightchar);return; }
+		}
+	}
+atag=aword;
+leftchar=substr(atag,1,1);
+if (    leftchar == "'" && rightchar == "'"  ) {
+	allow_one_char="yes";
+	atag=substr(atag,2,length(atag)-2);
+	if  ( atag == "<" ) { printf(" |%s|%s| ",atag,p[2]); }
+	if_already();
+	if ( already == "yes" ) {
+		printf("%s",aword);
+		return;
+		}
+	printf("%s",leftchar);
+	find_tag2();
+	if ( done == "yes" ) { printf("%s",rightchar);return; }
+	printf("%s%s",atag,rightchar);
+	return;
+	}
+last2=substr(atag,length(atag)-1,2);
+first2=substr(atag,1,2);
+if (    first2 == "('" && last2 == "')"  ) {
+	allow_one_char="yes";
+	atag=substr(atag,3,length(atag)-4);
+	if_already();
+	if ( already == "yes" ) {
+		printf("%s",aword);
+		return;
+		}
+	printf("%s",first2);
+	find_tag2();
+	if ( done == "yes" ) { printf("%s",last2);return; }
+	printf("%s%s",atag,last2);
+	return;
+	}
+if ( last2 == ".)" ) {
+	atag=substr(atag,1,length(atag)-2);
+	if_already();
+	if ( already == "yes" ) {
+		printf("%s",aword);
+		return;
+		}
+	find_tag2();
+	if ( done == "yes" ) { printf("%s",last2);return; }
+	printf("%s%s",atag,last2);
+	return;
+	}
+if ( last2 == ")." ) {
+	atag=substr(atag,1,length(atag)-2);
+	find_tag2();
+	if_already();
+	if ( already == "yes" ) {
+		printf("%s",aword);
+		return;
+		}
+	if ( done == "yes" ) { printf("%s",last2);return; }
+	printf("%s%s",atag,last2);
+	return;
+	}
+first6=substr(atag,1,6);
+last6=substr(atag,length(atag)-5,6);
+if ( last6 == atag ) {
+	printf("%s",aword);
+	return;
+	}
+last6of7=substr(atag,length(atag)-6,6);
+if ( first6 == "&quot;" && last6of7 == "&quot;" && length(atag) > 12 ) {
+	allow_one_char="yes";
+	atag=substr(atag,7,length(atag)-13);
+	if_already();
+	if ( already == "yes" ) {
+		printf("%s",aword);
+		return;
+		}
+	printf("%s",first6);
+	find_tag2();
+	if ( done == "yes" ) { printf("&quot;%s",rightchar); return; }
+	printf("%s&quot;%s",atag,rightchar);
+	return;
+	}
+if ( first6 == "&quot;" && last6 != "&quot;" ) {
+	allow_one_char="yes";
+	atag=substr(atag,7,length(atag)-6);
+	if ( atag == "[" ) { printf("&quot;%s",atag); return; }
+	if ( atag == "." ) { printf("&quot;%s",atag); return; }
+	if ( atag == ":" ) { printf("&quot;%s",atag); return; }
+	if ( atag == "a" ) { printf("&quot;%s",atag); return; }
+	if ( atag == "A" ) { printf("&quot;%s",atag); return; }
+	if ( atag == "g" ) { printf("&quot;%s",atag); return; }
+	if_already();
+	if ( already == "yes" ) {
+		printf("&quot;%s",atag);
+		return;
+		}
+	printf("%s",first6);
+	find_tag2();
+	if ( done == "yes" ) { return; }
+	printf("%s",atag);
+	return;
+	}
+if ( last6 == "&quot;" && first6 == "&quot;" ) {
+	allow_one_char="yes";
+	atag=substr(atag,7,length(atag)-12);
+	if_already();
+	if ( already == "yes" ) {
+		printf("%s",aword);
+		return;
+		}
+	printf("%s",first6);
+	find_tag2();
+	if ( done == "yes" ) { printf("%s",last6);return; }
+	printf("%s%s",atag,last6);
+	return;
+	}
+last6of7=substr(atag,length(atag)-6,6);
+if ( last6of7 == "&quot;" && first6 == "&quot;" ) {
+	allow_one_char="yes";
+	atag=substr(atag,7,length(atag)-13);
+	#printf("\natag=%s,aword=%s\n",atag,aword);
+	if_already();
+	if ( already == "yes" ) {
+		printf("%s",aword);
+		return;
+		}
+	printf("%s",first6);
+	find_tag2();
+	if ( done == "yes" ) { printf("%s%s",last6of7,rightchar);return; }
+	printf("%s%s%s",atag,last6of7,rightchar);
+	return;
+	}
+printf("%s",aword);
+}
+
+function find_tag2() {
+	done="no";
+	# no blanks present in a tag...
+	ntags=split(atag,blata,"[ 	]");
+	if ( ntags > 1 ) { return; }
+	if 	( ( allow_one_char == "no" ) && \
+		  ( index("!#$%\&'()+,-./0:;=?@ACINX\\[\\]^_`at\\{\\}~",atag) !=0 ) ) {
+		return;
+	}
+	if ( skip_word[atag] == "yes" ) { return; }
+	if ( wasset == "yes" && lineset == NR ) {
+	wasset="no";
+	see_opt();
+	if ( done_opt == "yes" ) {return;}
+	}
+	if ( wasset == "yes" && lineset != NR ) {
+	wasset="no";
+	}
+	if ( atag == ":set" ) {
+	wasset="yes";
+	lineset=NR;
+	}
+	if ( tagkey[atag] == "yes" ) {
+		which=tagref[atag];
+		put_href2();
+		done="yes";
+	}
+}
+
+function find_tag3() {
+	done="no";
+	# no blanks present in a tag...
+	ntags=split(btag,blata,"[ 	]");
+	if ( ntags > 1 ) { return; }
+	if 	( ( allow_one_char == "no" ) && \
+		  ( index("!#$%\&'()+,-./0:;=?@ACINX\\[\\]^_`at\\{\\}~",btag) !=0 ) ) {
+	  	return;
+	}
+	if ( skip_word[btag] == "yes" ) { return; }
+	if ( tagkey[btag] == "yes" ) {
+		which=tagref[btag];
+		put_href3();
+		done="yes";
+	}
+}
+
+function put_href() {
+	if ( p[i] == "" ) { return; }
+	if ( which == FILENAME ) {
+		printf("|<A HREF=\"#%s\">%s</A>|",p[i],p[i]);
+		}
+		else {
+		nz=split(which,zz,".");
+		if ( zz[2] == "txt" || zz[1] == "tags" ) {
+		printf("|<A HREF=\"%s.html#%s\">%s</A>|",zz[1],p[i],p[i]);
+		}
+		else {
+		printf("|<A HREF=\"intro.html#%s\">%s</A>|",p[i],p[i]);
+		}
+	}
+}
+
+function put_href2() {
+	if ( atag == "" ) { return; }
+	if ( which == FILENAME ) {
+		printf("<A HREF=\"#%s\">%s</A>",atag,atag);
+		}
+		else {
+		nz=split(which,zz,".");
+		if ( zz[2] == "txt" || zz[1] == "tags" ) {
+		printf("<A HREF=\"%s.html#%s\">%s</A>",zz[1],atag,atag);
+		}
+		else {
+		printf("<A HREF=\"intro.html#%s\">%s</A>",atag,atag);
+		}
+	}
+}
+
+function put_href3() {
+	if ( btag == "" ) { return; }
+	if ( which == FILENAME ) {
+		printf("<A HREF=\"#%s\">%s</A>",btag,btag2);
+		}
+		else {
+		nz=split(which,zz,".");
+		if ( zz[2] == "txt" || zz[1] == "tags" ) {
+		printf("<A HREF=\"%s.html#%s\">%s</A>",zz[1],btag,btag2);
+		}
+		else {
+		printf("<A HREF=\"intro.html#%s\">%s</A>",btag,btag2);
+		}
+	}
+}
+
+function put_this() {
+	ntab=split(this,ta,"	");
+	for ( nta=1 ; nta <= ntab ; nta++ ) {
+		ata=ta[nta];
+		lata=length(ata);
+		aword="";
+		for ( iata=1 ; iata <=lata ; iata++ ) {
+			achar=substr(ata,iata,1);
+			if ( achar != " " ) { aword=aword""achar; }
+			else {
+				if ( aword != "" ) { atag=aword;
+					see_tag();
+					aword="";
+					printf(" "); }
+				else	{
+					printf(" ");
+					}
+			}
+		}
+		if ( aword != "" ) { atag=aword;
+					see_tag();
+					}
+		if ( nta != ntab ) { printf("	"); }
+	}
+}
+
+function if_already() {
+	already="no";
+	if  ( npipe < 2 ) { return; }
+	if  ( atag == ":au" && p[2] == ":autocmd" ) { already="yes";return; }
+	for ( npp=2 ; npp <= npipe ; npp=npp+2 ) {
+		if 	(  (  (index(p[npp],atag)) != 0 \
+			      && length(p[npp]) > length(atag) \
+			      && length(atag) >= 1  \
+			    ) \
+			    || (p[npp] == atag) \
+			) {
+		# printf("p=|%s|,tag=|%s| ",p[npp],atag);
+		already="yes"; return; }
+	}
+}
+
+function see_opt() {
+	done_opt="no";
+	stag=atag;
+	nfields = split(atag,tae,"=");
+	if ( nfields > 1 )  {
+		btag="'"tae[1]"'";
+		btag2=tae[1];
+	    find_tag3();
+		if (done == "yes") {
+			for ( ntae=2 ; ntae <= nfields ; ntae++ ) {
+				printf("=%s",tae[ntae]);
+			}
+			atag=stag;
+			done_opt="yes";
+			return;
+		}
+		btag=tae[1];
+		btag2=tae[1];
+	    find_tag3();
+		if ( done=="yes" ) {
+			for ( ntae=2 ; ntae <= nfields ; ntae++ ) {
+				printf("=%s",tae[ntae]);
+			}
+			atag=stag;
+			done_opt="yes";
+			return;
+		}
+	}
+	nfields = split(atag,tae,"&quot;");
+	if ( nfields > 1 )  {
+		btag="'"tae[1]"'";
+		btag2=tae[1];
+	   	find_tag3();
+		if (done == "yes") {
+			printf("&quot;");
+			atag=stag;
+			done_opt="yes";
+			return;
+		}
+		btag=tae[1];
+		btag2=tae[1];
+	    find_tag3();
+		if (done == "yes") {
+			printf("&quot;");
+			atag=stag;
+			done_opt="yes";
+			return;
+		}
+	}
+	btag="'"tae[1]"'";
+	btag2=tae[1];
+	find_tag3();
+	if (done == "yes") {
+		atag=stag;
+		done_opt="yes";
+		return;
+	}
+	btag=tae[1];
+	btag2=tae[1];
+	find_tag3();
+	if (done == "yes") {
+		atag=stag;
+		done_opt="yes";
+		return;
+	}
+	atag=stag;
+}
diff --git a/runtime/doc/maketags.awk b/runtime/doc/maketags.awk
new file mode 100644
index 0000000..c6b2cd9
--- /dev/null
+++ b/runtime/doc/maketags.awk
@@ -0,0 +1,42 @@
+BEGIN   { FS="	"; }
+
+NR == 1 { nf=split(FILENAME,f,".")
+	print "<HTML>";
+	print "<HEAD><TITLE>" f[1] "</TITLE></HEAD>";
+	print "<BODY BGCOLOR=\"#ffffff\">";
+	print "<H1>Vim Documentation: " f[1] "</H1>";
+	print "<A NAME=\"top\"></A>";
+	print "<HR>";
+	print "<PRE>";
+}
+
+{
+	#
+	# protect special chars
+	#
+	gsub(/&/,"\\&amp;");
+	gsub(/>/,"\\&gt;");
+	gsub(/</,"\\&lt;");
+	gsub(/"/,"\\&quot;");
+	gsub(/%/,"\\&#37;");
+
+	nf=split($0,tag,"	");
+	tagkey[t]=tag[1];tagref[t]=tag[2];tagnum[t]=NR;
+	print $1 "	" $2 "	line " NR >"tags.ref"
+	n=split($2,w,".");
+	printf ("|<A HREF=\"%s.html#%s\">%s</A>|	%s\n",w[1],$1,$1,$2);
+}
+
+END     {
+	topback();
+	print "</PRE>\n</BODY>\n\n\n</HTML>";
+	}
+
+#
+# as main we keep index.txt (by default)
+# other candidate, help.txt
+#
+function topback () {
+	printf("<A HREF=\"#top\">top</A> - ");
+	printf("<A HREF=\"help.html\">back to help</A>\n");
+}
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
new file mode 100644
index 0000000..8c05ddc
--- /dev/null
+++ b/runtime/doc/map.txt
@@ -0,0 +1,1094 @@
+*map.txt*       For Vim version 7.0aa.  Last change: 2004 May 21
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Key mapping, abbreviations and user-defined commands.
+
+This subject is introduced in sections |05.3|, |24.7| and |40.1| of the user
+manual.
+
+1. Key mapping			|key-mapping|
+2. Abbreviations		|abbreviations|
+3. Local mappings and functions	|script-local|
+4. User-defined commands	|user-commands|
+
+==============================================================================
+1. Key mapping				*key-mapping* *mapping* *macro*
+
+Key mapping is used to change the meaning of typed keys.  The most common use
+is to define a sequence commands for a function key.  Example: >
+
+	:map <F2> a<C-R>=strftime("%c")<CR><Esc>
+
+This appends the current date and time after the cursor. (in <> notation |<>|)
+
+There are commands to enter new mappings, remove mappings and list mappings.
+See |map-overview| for the various forms of "map" and their relationships with
+modes.
+
+{lhs}	means left-hand-side	*{lhs}*
+{rhs}	means right-hand-side	*{rhs}*
+
+:map	{lhs} {rhs}					*:map*
+:nm[ap]	{lhs} {rhs}					*:nm* *:nmap*
+:vm[ap]	{lhs} {rhs}					*:vm* *:vmap*
+:om[ap]	{lhs} {rhs}					*:om* *:omap*
+:map!	{lhs} {rhs}					*:map!*
+:im[ap]	{lhs} {rhs}					*:im* *:imap*
+:lm[ap]	{lhs} {rhs}					*:lm* *:lmap*
+:cm[ap]	{lhs} {rhs}					*:cm* *:cmap*
+			Map the key sequence {lhs} to {rhs} for the modes
+			where the map command applies.  The result, including
+			{rhs}, is then further scanned for mappings.  This
+			allows for nested and recursive use of mappings.
+
+
+:no[remap]  {lhs} {rhs}					*:no*  *:noremap*
+:nn[oremap] {lhs} {rhs}					*:nn*  *:nnoremap*
+:vn[oremap] {lhs} {rhs}					*:vn*  *:vnoremap*
+:ono[remap] {lhs} {rhs}					*:ono* *:onoremap*
+:no[remap]! {lhs} {rhs}					*:no!* *:noremap!*
+:ino[remap] {lhs} {rhs}					*:ino* *:inoremap*
+:ln[oremap] {lhs} {rhs}					*:ln*  *:lnoremap*
+:cno[remap] {lhs} {rhs}					*:cno* *:cnoremap*
+			Map the key sequence {lhs} to {rhs} for the modes
+			where the map command applies.  Disallow mapping of
+			{rhs}, to avoid nested and recursive mappings.  Often
+			used to redefine a command.  {not in Vi}
+
+
+:unm[ap]  {lhs}						*:unm*  *:unmap*
+:nun[map] {lhs}						*:nun*  *:nunmap*
+:vu[nmap] {lhs}						*:vu*   *:vunmap*
+:ou[nmap] {lhs}						*:ou*   *:ounmap*
+:unm[ap]! {lhs}						*:unm!* *:unmap!*
+:iu[nmap] {lhs}						*:iu*   *:iunmap*
+:lu[nmap] {lhs}						*:lu*   *:lunmap*
+:cu[nmap] {lhs}						*:cu*   *:cunmap*
+			Remove the mapping of {lhs} for the modes where the
+			map command applies.  The mapping may remain defined
+			for other modes where it applies.
+			Note: Trailing spaces are included in the {lhs}.  This
+			unmap does NOT work: >
+				:map @@ foo
+				:unmap @@ | print
+
+:mapc[lear]						*:mapc*   *:mapclear*
+:nmapc[lear]						*:nmapc*  *:nmapclear*
+:vmapc[lear]						*:vmapc*  *:vmapclear*
+:omapc[lear]						*:omapc*  *:omapclear*
+:mapc[lear]!						*:mapc!*  *:mapclear!*
+:imapc[lear]						*:imapc*  *:imapclear*
+:lmapc[lear]						*:lmapc*  *:lmapclear*
+:cmapc[lear]						*:cmapc*  *:cmapclear*
+			Remove ALL mappings for the modes where the map
+			command applies.  {not in Vi}
+			Warning: This also removes the default mappings.
+
+:map
+:nm[ap]
+:vm[ap]
+:om[ap]
+:map!
+:im[ap]
+:lm[ap]
+:cm[ap]
+			List all key mappings for the modes where the map
+			command applies.  Note that ":map" and ":map!" are
+			used most often, because they include the other modes.
+
+:map    {lhs}						*:map_l*
+:nm[ap] {lhs}						*:nmap_l*
+:vm[ap] {lhs}						*:vmap_l*
+:om[ap] {lhs}						*:omap_l*
+:map!   {lhs}						*:map_l!*
+:im[ap] {lhs}						*:imap_l*
+:lm[ap] {lhs}						*:lmap_l*
+:cm[ap] {lhs}						*:cmap_l*
+			List the key mappings for the key sequences starting
+			with {lhs} in the modes where the map command applies.
+			{not in Vi}
+
+These commands are used to map a key or key sequence to a string of
+characters.  You can use this to put command sequences under function keys,
+translate one key into another, etc.  See |:mkexrc| for how to save and
+restore the current mappings.
+
+				*:map-local* *:map-<buffer>* *E224* *E225*
+If the first argument to one of these commands is "<buffer>" it will apply to
+mappings locally to the current buffer only.  Example: >
+	:map <buffer>  ,w  /[.,;]<CR>
+Then you can map ",w" to something else in another buffer: >
+	:map <buffer>  ,w  /[#&!]<CR>
+The local buffer mappings are used before the global ones.
+The "<buffer>" argument can also be used to clear mappings: >
+	:unmap <buffer> ,w
+	:mapclear <buffer>
+Local mappings are also cleared when a buffer is deleted, but not when it is
+unloaded.  Just like local option values.
+
+						*:map-<silent>* *:map-silent*
+To define a mapping which will not be echoed on the command line, add
+"<silent>" as the first argument.  Example: >
+	:map <silent> ,h /Header<CR>
+The search string will not be echoed when using this mapping.  Messages from
+the executed command are still given though.  To shut them up too, add a
+":silent" in the executed command: >
+	:map <silent> ,h :exe ":silent normal /Header\r"<CR>
+Prompts will still be given, e.g., for inputdialog().
+Using "<silent>" for an abbreviation is possible, but will cause redrawing of
+the command line to fail.
+
+						*:map-<script>* *:map-script*
+If the first argument to one of these commands is "<script>" and it is used to
+define a new mapping or abbreviation, the mapping will only remap characters
+in the {rhs} using mappings that were defined local to a script, starting with
+"<SID>".  This can be used to avoid that mappings from outside a script
+interfere (e.g., when CTRL-V is remapped in mswin.vim), but do use other
+mappings defined in the script.
+Note: ":map <script>" and ":noremap <script>" do the same thing.  The
+"<script>" overrules the command name.  Using ":noremap <script>" is
+preferred, because it's clearer that remapping is (mostly) disabled.
+
+						*:map-<unique>* *E226* *E227*
+If the first argument to one of these commands is "<unique>" and it is used to
+define a new mapping or abbreviation, the command will fail if the mapping or
+abbreviation already exists.  Example: >
+	:map <unique> ,w  /[#&!]<CR>
+When defining a local mapping, there will also be a check if a global map
+already exists which is equal.
+Example of what will fail: >
+	:map ,w  /[#&!]<CR>
+	:map <buffer> <unique> ,w  /[.,;]<CR>
+
+"<buffer>", "<silent>", "<script>" and "<unique>" can be used in any order.
+They must appear right after the command, before any other arguments.
+
+
+MAPPING AND MODES
+
+There are five sets of mappings
+- For Normal mode: When typing commands.
+- For Visual mode: When typing commands while the Visual area is highlighted.
+- For Operator-pending mode: When an operator is pending (after "d", "y", "c",
+  etc.).  Example: ":omap { w" makes "y{" work like "yw" and "d{" like "dw".
+- For Insert mode. These are also used in Replace mode.
+- For Command-line mode: When entering a ":" or "/" command.
+
+There are no separate mappings for Select mode.  The same as for Visual mode
+are used |Select-mode-mapping|.
+
+Special case: While typing a count for a command in Normal mode, mapping zero
+is disabled.  This makes it possible to map zero without making it impossible
+to type a count with a zero.
+
+						*map-overview* *map-modes*
+Overview of which map command works in which mode:
+
+    commands:				      modes: ~
+					  Normal     Visual  Operator-pending ~
+:map   :noremap   :unmap   :mapclear	    yes	       yes	  yes
+:nmap  :nnoremap  :nunmap  :nmapclear	    yes		-	   -
+:vmap  :vnoremap  :vunmap  :vmapclear	     -	       yes	   -
+:omap  :onoremap  :ounmap  :omapclear	     -		-	  yes
+
+					  Insert  Command-line	Lang-Arg ~
+:map!  :noremap!  :unmap!  :mapclear!	    yes	       yes	   -
+:imap  :inoremap  :iunmap  :imapclear	    yes		-	   -
+:cmap  :cnoremap  :cunmap  :cmapclear	     -	       yes	   -
+:lmap  :lnoremap  :lunmap  :lmapclear	    yes*       yes*	  yes*
+
+The original Vi did not have separate mappings for
+Normal/Visual/Operator-pending mode and for Insert/Command-line mode.
+Therefore the ":map" and ":map!" commands enter and display mappings for
+several modes.  In Vim you can use the ":nmap", ":vmap", ":omap", ":cmap" and
+":imap" commands to enter mappings for each mode separately.
+
+To enter a mapping for Normal and Visual mode, but not Operator-pending mode,
+first define it for all three modes, then unmap it for Operator-pending mode:
+	:map    xx something-difficult
+	:ounmap xx
+Likewise for a mapping for Visual and Operator-pending mode or Normal and
+Operator-pending mode.
+
+						*language-mapping*
+":lmap" defines a mapping that applies to:
+- Insert mode
+- Command-line mode
+- when entering a search pattern
+- the argument of the commands that accept a text character, such as "r" and
+  "f"
+- for the input() line
+Generally: Whenever a character is to be typed that is part of the text in the
+buffer, not a Vim command character.  "Lang-Arg" isn't really another mode,
+it's just used here for this situation.
+   The simplest way to load a set of related language mappings is by using the
+'keymap' option.  See |45.5|.
+   In Insert mode and in Command-line mode the mappings can be disabled with
+the CTRL-^ command |i_CTRL-^| |c_CTRL-^|.  When starting to enter a normal
+command line (not a search pattern) the mappings are disabled until a CTRL-^
+is typed.  The state last used is remembered for Insert mode and Search
+patterns separately.  The state for Insert mode is also used when typing a
+character as an argument to command like "f" or "t".
+   When adding a ":lmap" mapping the use of these mappings in Insert mode and
+for Search patterns will be switched on.
+   Language mappings will never be applied to already mapped characters.  They
+are only used for typed characters.  This assumes that the language mapping
+was already done when typing the mapping.
+
+							*map-multibyte*
+It is possible to map multibyte characters, but only the whole character.  You
+cannot map the first byte only.  This was done to prevent problems in this
+scenario: >
+	:set encoding=latin1
+	:imap <M-C> foo
+	:set encoding=utf-8
+The mapping for <M-C> is defined with the latin1 encoding, resulting in a 0xc3
+byte.  If you type the character á (0xea <M-a>) in UTF-8 encoding this is the
+two bytes 0xc3 0xa1.  You don't want the 0xc3 byte to be mapped then,
+otherwise it would be impossible to type the á character.
+
+							*map-listing*
+When listing mappings the characters in the first two columns are:
+
+      CHAR	MODE	~
+     <Space>	Normal, Visual and Operator-pending
+	n	Normal
+	v	Visual
+	o	Operator-pending
+	!	Insert and Command-line
+	i	Insert
+	l	":lmap" mappings for Insert, Command-line and Lang-Arg
+	c	Command-line
+
+Just before the {rhs} a special character can appear:
+	*	indicates that it is not remappable
+	&	indicates that only script-local mappings are remappable
+	@	indicates a buffer-local mapping
+
+Everything from the first non-blank after {lhs} up to the end of the line
+(or '|') is considered to be part of {rhs}.  This allows the {rhs} to end
+with a space.
+
+Note: When using mappings for Visual mode, you can use the "'<" mark, which
+is the start of the last selected Visual area in the current buffer |'<|.
+
+							*map_backslash*
+Note that only CTRL-V is mentioned here as a special character for mappings
+and abbreviations.  When 'cpoptions' does not contain 'B', a backslash can
+also be used like CTRL-V.  The <> notation can be fully used then |<>|.  But
+you cannot use "<C-V>" like CTRL-V to escape the special meaning of what
+follows.
+
+To map a backslash, or use a backslash literally in the {rhs}, the special
+sequence "<Bslash>" can be used.  This avoids the need to double backslashes
+when using nested mappings.
+
+							*map-ambiguous*
+When two mappings start with the same sequence of characters, they are
+ambiguous.  Example: >
+	:imap aa foo
+	:imap aaa bar
+When Vim has read "aa", it will need to get another character to be able to
+decide if "aa" or "aaa" should be mapped.  This means that after typing "aa"
+that mapping won't get expanded yet, Vim is waiting for another character.
+If you type a space, then "foo" will get inserted, plus the space.  If you
+type "a", then "bar" will get inserted.
+{Vi does not allow ambiguous mappings}
+
+							*map_CTRL_C*
+It's not possible to use a CTRL-C in the {lhs}.  You just can't map CTRL-C.
+The reason is that CTRL-C must always be available to break a running command.
+Exception: When using the GUI version on MS-Windows CTRL-C can be mapped to
+allow a Copy command to the clipboard.  Use CTRL-Break to interrupt Vim.
+
+							*map_space_in_lhs*
+To include a space in {lhs} precede it with a CTRL-V (type two CTRL-Vs for
+each space).
+							*map_space_in_rhs*
+If you want a {rhs} that starts with a space, use "<Space>".  To be fully Vi
+compatible (but unreadable) don't use the |<>| notation, precede {rhs} with a
+single CTRL-V (you have to type CTRL-V two times).
+							*map_empty_rhs*
+You can create an empty {rhs} by typing nothing after a single CTRL-V (you
+have to type CTRL-V two times).  Unfortunately, you cannot do this in a vimrc
+file.
+							*<Nop>*
+A easier way to get a mapping that doesn't produce anything, is to use "<Nop>"
+for the {rhs}.  This only works when the |<>| notation is enabled.  For
+example, to make sure that function key 8 does nothing at all: >
+	:map  <F8>  <Nop>
+	:map! <F8>  <Nop>
+<
+					*<Leader>* *mapleader*
+To define a mapping which uses the "mapleader" variable, the special string
+"<Leader>" can be used.  It is replaced with the string value of "mapleader".
+If "mapleader" is not set or empty, a backslash is used instead.  Example: >
+	:map <Leader>A  oanother line<Esc>
+Works like: >
+	:map \A  oanother line<Esc>
+But after: >
+	:let mapleader = ","
+It works like: >
+	:map ,A  oanother line<Esc>
+
+Note that the value of "mapleader" is used at the moment the mapping is
+defined.  Changing "mapleader" after that has no effect for already defined
+mappings.
+
+					*<LocalLeader>* *maplocalleader*
+Just like <Leader>, except that it uses "maplocalleader" instead of
+"mapleader".  <LocalLeader> is to be used for mappings which are local to a
+buffer.  Example: >
+      :map <LocalLeader>q  \DoItNow
+<
+In a global plugin <Leader> should be used and in a filetype plugin
+<LocalLeader>.  "mapleader" and "maplocalleader" can be equal.  Although, if
+you make them different, there is a smaller chance of mappings from global
+plugins to clash with mappings for filetype plugins.  For example, you could
+keep "mapleader" at the default backslash, and set "maplocalleader" to an
+underscore.
+
+							*map-<SID>*
+In a script the special key name "<SID>" can be used to define a mapping
+that's local to the script.  See |<SID>| for details.
+
+							*<Plug>*
+The special key name "<Plug>" can be used for an internal mapping, which is
+not to be matched with any key sequence.  This is useful in plugins
+|using-<Plug>|.
+
+							*<Char>* *<Char->*
+To map a character by its decimal, octal or hexadecimal number the <Char>
+construct can be used:
+	<Char-123>	character 123
+	<Char-033>	character 27
+	<Char-0x7f>	character 127
+This is useful to specify a (multi-byte) character in a 'keymap' file.
+Upper and lowercase differences are ignored.
+
+							*map-comments*
+It is not possible to put a comment after these commands, because the '"'
+character is considered to be part of the {lhs} or {rhs}.
+
+							*map_bar*
+Since the '|' character is used to separate a map command from the next
+command, you will have to do something special to include  a '|' in {rhs}.
+There are three methods:
+   use	     works when			   example	~
+   <Bar>     '<' is not in 'cpoptions'	   :map _l :!ls <Bar> more^M
+   \|	     'b' is not in 'cpoptions'	   :map _l :!ls \| more^M
+   ^V|	     always, in Vim and Vi	   :map _l :!ls ^V| more^M
+
+(here ^V stands for CTRL-V; to get one CTRL-V you have to type it twice; you
+cannot use the <> notation "<C-V>" here).
+
+All three work when you use the default setting for 'cpoptions'.
+
+When 'b' is present in 'cpoptions', "\|" will be recognized as a mapping
+ending in a '\' and then another command.  This is Vi compatible, but
+illogical when compared to other commands.
+
+							*map_return*
+When you have a mapping that contains an Ex command, you need to put a line
+terminator after it to have it executed.  The use of <CR> is recommended for
+this (see |<>|).  Example: >
+   :map  _ls  :!ls -l %<CR>:echo "the end"<CR>
+
+To avoid mapping of the characters you type in insert or Command-line mode,
+type a CTRL-V first.  The mapping in Insert mode is disabled if the 'paste'
+option is on.
+
+Note that when an error is encountered (that causes an error message or beep)
+the rest of the mapping is not executed.  This is Vi-compatible.
+
+Note that the second character (argument) of the commands @zZtTfF[]rm'`"v
+and CTRL-X is not mapped.  This was done to be able to use all the named
+registers and marks, even when the command with the same name has been
+mapped.
+
+							*map-which-keys*
+If you are going to map something, you will need to choose which key(s) to use
+for the {lhs}.  You will have to avoid keys that are used for Vim commands,
+otherwise you would not be able to use those commands anymore.  Here are a few
+suggestions:
+- Function keys <F2>, <F3>, etc..  Also the shifted function keys <S-F1>,
+  <S-F2>, etc.  Note that <F1> is already used for the help command.
+- Meta-keys (with the ALT key pressed).
+- Use the '_' or ',' character and then any other character.  The "_" and ","
+  commands do exist in Vim (see |_| and |,|), but you probably never use them.
+- Use a key that is a synonym for another command.  For example: CTRL-P and
+  CTRL-N.  Use an extra character to allow more mappings.
+
+See the file "index" for keys that are not used and thus can be mapped without
+losing any builtin function.  You can also use ":help {key}^D" to find out if
+a key is used for some command.  ({key} is the specific key you want to find
+out about, ^D is CTRL-D).
+
+							*map-examples*
+A few examples (given as you type them, for "<CR>" you type four characters;
+the '<' flag must not be present in 'cpoptions' for this to work). >
+
+   :map <F3>  o#include
+   :map <M-g> /foo<CR>cwbar<Esc>
+   :map _x    d/END/e<CR>
+   :map! qq   quadrillion questions
+<
+							*map-typing*
+Vim will compare what you type with the start of a mapped sequence.  If there
+is an incomplete match, it will get more characters until there either is a
+complete match or until there is no match at all.  Example: If you map! "qq",
+the first 'q' will not appear on the screen until you type another
+character.  This is because Vim cannot know if the next character will be a
+'q' or not.  If the 'timeout' option is on (which is the default) Vim will
+only wait for one second (or as long as specified with the 'timeoutlen'
+option).  After that it assumes that the 'q' is to be interpreted as such.  If
+you type slowly, or your system is slow, reset the 'timeout' option.  Then you
+might want to set the 'ttimeout' option.
+
+							*map-keys-fails*
+There is one situation where key codes might not be recognized:
+- Vim can only read part of the key code.  Mostly this is only the first
+  character.  This happens on some Unix versions in an xterm.
+- The key code is after character(s) that are mapped.  E.g., "<F1><F1>" or
+  "g<F1>".
+The result is that the key code is not recognized in this situation, and the
+mapping fails.
+There are two actions needed to avoid this problem:
+- Remove the 'K' flag from 'cpoptions'.  This will make Vim wait for the rest
+  of the characters of the function key.
+- When using <F1> to <F4> the actual key code generated may correspond to
+  <xF1> to <xF4>.  There are mappings from <xF1> to <F1>, <xF2> to <F2>, etc.,
+  but these are not recognized after another half a mapping.  Make sure the
+  key codes for <F1> to <F4> are correct: >
+	:set <F1>=<type CTRL-V><type F1>
+< Type the <F1> as four characters.  The part after the "=" must be done with
+  the actual keys, not the literal text.
+Another solution is to use the actual key code in the mapping for the second
+special key: >
+	:map <F1><Esc>OP :echo "yes"<CR>
+Don't type a real <Esc>, Vim will recognize the key code and replace it with
+<F1> anyway.
+
+						*recursive_mapping*
+If you include the {lhs} in the {rhs} you have a recursive mapping.  When
+{lhs} is typed, it will be replaced with {rhs}.  When the {lhs} which is
+included in {rhs} is encountered it will be replaced with {rhs}, and so on.
+This makes it possible to repeat a command an infinite number of times.  The
+only problem is that the only way to stop this is by causing an error.  The
+macros to solve a maze uses this, look there for an example.  There is one
+exception: If the {rhs} starts with {lhs}, the first character is not mapped
+again (this is Vi compatible).
+For example: >
+   :map ab abcd
+will execute the "a" command and insert "bcd" in the text.  The "ab" in the
+{rhs} will not be mapped again.
+
+If you want to exchange the meaning of two keys you should use the :noremap
+command.  For example: >
+   :noremap k j
+   :noremap j k
+This will exchange the cursor up and down commands.
+
+With the normal :map command, when the 'remap' option is on, mapping takes
+place until the text is found not to be a part of a {lhs}.  For example, if
+you use: >
+   :map x y
+   :map y x
+Vim will replace x with y, and then y with x, etc.  When this has happened
+'maxmapdepth' times (default 1000), Vim will give the error message
+"recursive mapping".
+
+							*:map-undo*
+If you include an undo command inside a mapped sequence, this will bring the
+text back in the state before executing the macro.  This is compatible with
+the original Vi, as long as there is only one undo command in the mapped
+sequence (having two undo commands in a mapped sequence did not make sense
+in the original Vi, you would get back the text before the first undo).
+
+							*:map-special-keys*
+There are three ways to map a special key:
+1. The Vi-compatible method: Map the key code.  Often this is a sequence that
+   starts with <Esc>.  To enter a mapping like this you type ":map " and then
+   you have to type CTRL-V before hitting the function key.  Note that when
+   the key code for the key is in the termcap (the t_ options), it will
+   automatically be translated into the internal code and become the second
+   way of mapping (unless the 'k' flag is included in 'cpoptions').
+2. The second method is to use the internal code for the function key.  To
+   enter such a mapping type CTRL-K and then hit the function key, or use
+   the form "#1", "#2", .. "#9", "#0", "<Up>", "<S-Down>", "<S-F7>", etc.
+   (see table of keys |key-notation|, all keys from <Up> can be used).  The
+   first ten function keys can be defined in two ways: Just the number, like
+   "#2", and with "<F>", like "<F2>".  Both stand for function key 2.  "#0"
+   refers to function key 10, defined with option 't_f10', which may be
+   function key zero on some keyboards.  The <> form cannot be used when
+   'cpoptions' includes the '<' flag.
+3. Use the termcap entry, with the form <t_xx>, where "xx" is the name of the
+   termcap entry.  Any string entry can be used.  For example: >
+     :map <t_F3> G
+<  Maps function key 13 to "G".  This does not work if 'cpoptions' includes
+   the '<' flag.
+
+The advantage of the second and third method is that the mapping will work on
+different terminals without modification (the function key will be
+translated into the same internal code or the actual key code, no matter what
+terminal you are using.  The termcap must be correct for this to work, and you
+must use the same mappings).
+
+DETAIL: Vim first checks if a sequence from the keyboard is mapped.  If it
+isn't the terminal key codes are tried (see |terminal-options|).  If a
+terminal code is found it is replaced with the internal code.  Then the check
+for a mapping is done again (so you can map an internal code to something
+else).  What is written into the script file depends on what is recognized.
+If the terminal key code was recognized as a mapping the key code itself is
+written to the script file.  If it was recognized as a terminal code the
+internal code is written to the script file.
+
+==============================================================================
+2. Abbreviations			*abbreviations* *Abbreviations*
+
+Abbreviations are used in Insert mode, Replace mode and Command-line mode.
+If you enter a word that is an abbreviation, it is replaced with the word it
+stands for.  This can be used to save typing for often used long words.  And
+you can use it to automatically correct obvious spelling errors.
+Examples:
+
+	:iab ms MicroSoft
+	:iab tihs this
+
+There are three types of abbreviations:
+
+full-id	  The "full-id" type consists entirely of keyword characters (letters
+	  and characters from 'iskeyword' option).  This is the most common
+	  abbreviation.
+
+	  Examples: "foo", "g3", "-1"
+
+end-id	  The "end-id" type ends in a keyword character, but all the other
+	  characters are not keyword characters.
+
+	  Examples: "#i", "..f", "$/7"
+
+non-id	  The "non-id" type ends in a non-keyword character, the other
+	  characters may be of any type, excluding space and Tab.  {this type
+	  is not supported by Vi}
+
+	  Examples: "def#", "4/7$"
+
+Examples of strings that cannot be abbreviations: "a.b", "#def", "a b", "_$r"
+
+An abbreviation is only recognized when you type a non-keyword character.
+This can also be the <Esc> that ends insert mode or the <CR> that ends a
+command.  The non-keyword character which ends the abbreviation is inserted
+after the expanded abbreviation.  An exception to this is the character <C-]>,
+which is used to expand an abbreviation without inserting any extra
+characters.
+
+Example: >
+   :ab hh	hello
+<	    "hh<Space>" is expanded to "hello<Space>"
+	    "hh<C-]>" is expanded to "hello"
+
+The characters before the cursor must match the abbreviation.  Each type has
+an additional rule:
+
+full-id	  In front of the match is a non-keyword character, or this is where
+	  the line or insertion starts.  Exception: When the abbreviation is
+	  only one character, it is not recognized if there is a non-keyword
+	  character in front of it, other than a space or a <Tab>.
+
+end-id	  In front of the match is a keyword character, or a space or a <Tab>,
+	  or this is where the line or insertion starts.
+
+non-id	  In front of the match is a space, <Tab> or the start of the line or
+	  the insertion.
+
+Examples: ({CURSOR} is where you type a non-keyword character) >
+   :ab foo   four old otters
+<		" foo{CURSOR}"	  is expanded to " four old otters"
+		" foobar{CURSOR}" is not expanded
+		"barfoo{CURSOR}"  is not expanded
+>
+   :ab #i #include
+<		"#i{CURSOR}"	  is expanded to "#include"
+		">#i{CURSOR}"	  is not expanded
+>
+   :ab ;; <endofline>"
+<		"test;;"	  is not expanded
+		"test ;;"	  is expanded to "test <endofline>"
+
+To avoid the abbreviation in insert mode: Type part of the abbreviation, exit
+insert mode with <Esc>, re-enter insert mode with "a" and type the rest.  Or
+type CTRL-V before the character after the abbreviation.
+To avoid the abbreviation in Command-line mode: Type CTRL-V twice somewhere in
+the abbreviation to avoid it to be replaced.  A CTRL-V in front of a normal
+character is mostly ignored otherwise.
+
+It is possible to move the cursor after an abbreviation: >
+   :iab if if ()<Left>
+This does not work if 'cpoptions' includes the '<' flag. |<>|
+
+You can even do more complicated things.  For example, to consume the space
+typed after an abbreviation: >
+   func Eatchar(pat)
+      let c = nr2char(getchar())
+      return (c =~ a:pat) ? '' : c
+   endfunc
+   iabbr <silent> if if ()<Left><C-R>=Eatchar('\s')<CR>
+
+There are no default abbreviations.
+
+Abbreviations are never recursive.  You can use ":ab f f-o-o" without any
+problem.  But abbreviations can be mapped.  {some versions of Vi support
+recursive abbreviations, for no apparent reason}
+
+Abbreviations are disabled if the 'paste' option is on.
+
+				*:abbreviate-local* *:abbreviate-<buffer>*
+Just like mappings, abbreviations can be local to a buffer.  This is mostly
+used in a |filetype-plugin| file.  Example for a C plugin file: >
+	:abb <buffer> FF  for (i = 0; i < ; ++i)
+<
+						*:ab* *:abbreviate*
+:ab[breviate]		list all abbreviations.  The character in the first
+			column indicates the mode where the abbreviation is
+			used: 'i' for insert mode, 'c' for Command-line
+			mode, '!' for both.  These are the same as for
+			mappings, see |map-listing|.
+
+:ab[breviate] {lhs}	list the abbreviations that start with {lhs}
+			You may need to insert a CTRL-V (type it twice) to
+			avoid that a typed {lhs} is expanded, since
+			command-line abbreviations apply here.
+
+:ab[breviate] {lhs} {rhs}
+			add abbreviation for {lhs} to {rhs}.  If {lhs} already
+			existed it is replaced with the new {rhs}.  {rhs} may
+			contain spaces.
+
+						*:una* *:unabbreviate*
+:una[bbreviate] {lhs}	Remove abbreviation for {lhs} from the list.  If none
+			is found, remove abbreviations in which {lhs} matches
+			with the {rhs}.  This is done so that you can even
+			remove abbreviations after expansion.  To avoid
+			expansion insert a CTRL-V (type it twice).
+
+						*:norea* *:noreabbrev*
+:norea[bbrev] [lhs] [rhs]
+			same as ":ab", but no remapping for this {rhs} {not
+			in Vi}
+
+						*:ca* *:cabbrev*
+:ca[bbrev] [lhs] [rhs]	same as ":ab", but for Command-line mode only.  {not
+			in Vi}
+
+						*:cuna* *:cunabbrev*
+:cuna[bbrev] {lhs}	same as ":una", but for Command-line mode only.  {not
+			in Vi}
+
+						*:cnorea* *:cnoreabbrev*
+:cnorea[bbrev] [lhs] [rhs]
+			same as ":ab", but for Command-line mode only and no
+			remapping for this {rhs} {not in Vi}
+
+						*:ia* *:iabbrev*
+:ia[bbrev] [lhs] [rhs]	same as ":ab", but for Insert mode only.  {not in Vi}
+
+						*:iuna* *:iunabbrev*
+:iuna[bbrev] {lhs}	same as ":una", but for insert mode only.  {not in
+			Vi}
+
+						*:inorea* *:inoreabbrev*
+:inorea[bbrev] [lhs] [rhs]
+			same as ":ab", but for Insert mode only and no
+			remapping for this {rhs} {not in Vi}
+
+							*:abc* *:abclear*
+:abc[lear]		Remove all abbreviations.  {not in Vi}
+
+							*:iabc* *:iabclear*
+:iabc[lear]		Remove all abbreviations for Insert mode.  {not in Vi}
+
+							*:cabc* *:cabclear*
+:cabc[lear]		Remove all abbreviations for Command-line mode.  {not
+			in Vi}
+
+							*using_CTRL-V*
+It is possible to use special characters in the rhs of an abbreviation.
+CTRL-V has to be used to avoid the special meaning of most non printable
+characters.  How many CTRL-Vs need to be typed depends on how you enter the
+abbreviation.  This also applies to mappings.  Let's use an example here.
+
+Suppose you want to abbreviate "esc" to enter an <Esc> character.  When you
+type the ":ab" command in Vim, you have to enter this: (here ^V is a CTRL-V
+and ^[ is <Esc>)
+
+You type:   ab esc ^V^V^V^V^V^[
+
+	All keyboard input is subjected to ^V quote interpretation, so
+	the first, third, and fifth ^V  characters simply allow the second,
+	and fourth ^Vs, and the ^[, to be entered into the command-line.
+
+You see:    ab esc ^V^V^[
+
+	The command-line contains two actual ^Vs before the ^[.  This is
+	how it should appear in your .exrc file, if you choose to go that
+	route.  The first ^V is there to quote the second ^V; the :ab
+	command uses ^V as its own quote character, so you can include quoted
+	whitespace or the | character in the abbreviation.   The :ab command
+	doesn't do anything special with the ^[ character, so it doesn't need
+	to be quoted.  (Although quoting isn't harmful; that's why typing 7
+	[but not 8!] ^Vs works.)
+
+Stored as:  esc     ^V^[
+
+	After parsing, the abbreviation's short form ("esc") and long form
+	(the two characters "^V^[") are stored in the abbreviation table.
+	If you give the :ab command with no arguments, this is how the
+	abbreviation will be displayed.
+
+	Later, when the abbreviation is expanded because the user typed in
+	the word "esc", the long form is subjected to the same type of
+	^V interpretation as keyboard input.  So the ^V protects the ^[
+	character from being interpreted as the "exit input-mode" character.
+	Instead, the ^[ is inserted into the text.
+
+Expands to: ^[
+
+[example given by Steve Kirkendall]
+
+==============================================================================
+3. Local mappings and functions				*script-local*
+
+When using several Vim script files, there is the danger that mappings and
+functions used in one script use the same name as in other scripts.  To avoid
+this, they can be made local to the script.
+
+						*<SID>* *<SNR>* *E81*
+The string "<SID>" can be used in a mapping or menu.  This requires that the
+'<' flag is not present in 'cpoptions'.
+   When executing the map command, Vim will replace "<SID>" with the special
+key code <SNR>, followed by a number that's unique for the script, and an
+underscore.  Example: >
+	:map <SID>Add
+could define a mapping "<SNR>23_Add".
+
+When defining a function in a script, "s:" can be prepended to the name to
+make it local to the script.  But when a mapping is executed from outside of
+the script, it doesn't know in which script the function was defined.  To
+avoid this problem, use "<SID>" instead of "s:".  The same translation is done
+as for mappings.  This makes it possible to define a call to the function in
+mapping.
+
+When a local function is executed, it runs in the context of the script it was
+defined in.  This means that new functions and mappings it defines can also
+use "s:" or "<SID>" and it will use the same unique number as when the
+function itself was defined.  Also, the "s:var" local script variables can be
+used.
+
+When executing an autocommand or a user command, it will run in the context of
+the script it was defined in.  This makes it possible that the command calls a
+local function or uses a local mapping.
+
+Otherwise, using "<SID>" outside of a script context is an error.
+
+If you need to get the script number to use in a complicated script, you can
+use this trick: >
+	:map <SID>xx <SID>xx
+	:let s:sid = maparg("<SID>xx")
+	:unmap <SID>xx
+And remove the trailing "xx".
+
+The "<SNR>" will be shown when listing functions and mappings.  This is useful
+to find out what they are defined to.
+
+The |:scriptnames| command can be used to see which scripts have been sourced
+and what their <SNR> number is.
+
+This is all {not in Vi} and {not available when compiled without the +eval
+feature}.
+
+==============================================================================
+4. User-defined commands				*user-commands*
+
+It is possible to define your own Ex commands. A user-defined command can act
+just like a built-in command (it can have a range or arguments, arguments can
+be completed as filenames or buffer names, etc), except that when the command
+is executed, it is transformed into a normal ex command and then executed.
+
+For starters: See section |40.2| in the user manual.
+
+						*E183* *user-cmd-ambiguous*
+All user defined commands must start with an uppercase letter, to avoid
+confusion with builtin commands. (There are a few builtin commands, notably
+:Next, :Print and :X, which do start with an uppercase letter.  The builtin
+will always take precedence in these cases).  The other characters of the user
+command can be uppercase letters, lowercase letters or digits.  When using
+digits, note that other commands that take a numeric argument may become
+ambiguous.  For example, the command ":Cc2" could be the user command ":Cc2"
+without an argument, or the command ":Cc" with argument "2".  It is advised to
+put a space between the command name and the argument to avoid these problems.
+
+When using a user-defined command, the command can be abbreviated. However, if
+an abbreviation is not unique, an error will be issued. Furthermore, a
+built-in command will always take precedence.
+
+Example: >
+	:command Rename ...
+	:command Renumber ...
+	:Rena				" Means "Rename"
+	:Renu				" Means "Renumber"
+	:Ren				" Error - ambiguous
+	:command Paste ...
+	:P				" The built-in :Print
+
+It is recommended that full names for user-defined commands are used in
+scripts.
+
+:com[mand]						*:com* *:command*
+			List all user-defined commands. When listing commands,
+			the characters in the first two columns are
+			    !	Command has the -bang attribute
+			    "	Command has the -register attribute
+			    b	Command is local to current buffer
+			(see below for details on attributes)
+
+:com[mand] {cmd}	List the user-defined commands that start with {cmd}
+
+							*E174* *E182*
+:com[mand][!] [{attr}...] {cmd} {rep}
+			Define a user command.  The name of the command is
+			{cmd} and its replacement text is {rep}. The command's
+			attributes (see below) are {attr}. If the command
+			already exists, an error is reported, unless a ! is
+			specified, in which case the command is redefined.
+
+:delc[ommand] {cmd}				*:delc* *:delcommand* *E184*
+			Delete the user-defined command {cmd}.
+
+:comc[lear]						*:comc* *:comclear*
+			Delete all user-defined commands.
+
+Command attributes
+
+User-defined commands are treated by Vim just like any other ex commands. They
+can have arguments, or have a range specified. Arguments are subject to
+completion as filenames, buffers, etc. Exactly how this works depends upon the
+command's attributes, which are specified when the command is defined.
+
+There are a number of attributes, split into four categories: argument
+handling, completion behavior, range handling, and special cases. The
+attributes are described below, by category.
+
+Argument handling					*E175* *E176*
+
+By default, a user defined command will take no arguments (and an error is
+reported if any are supplied). However, it is possible to specify that the
+command can take arguments, using the -nargs attribute. Valid cases are:
+
+	-nargs=0    No arguments are allowed (the default)
+	-nargs=1    Exactly one argument is required
+	-nargs=*    Any number of arguments are allowed (0, 1, or many)
+	-nargs=?    0 or 1 arguments are allowed
+	-nargs=+    Arguments must be supplied, but any number are allowed
+
+Arguments are considered to be separated by (unescaped) spaces or Tabs in this
+context.
+
+Note that arguments are used as text, not as expressions.  Specifically,
+"s:var" will use the script-local variable in the script where the command was
+defined, not where it is invoked!  Example:
+    script1.vim: >
+	:let s:error = "None"
+	:command -nargs=1 Error echoerr <args>
+<   script2.vim: >
+	:source script1.vim
+	:let s:error = "Wrong!"
+	:Error s:error
+Executing script2.vim will result in "None" to be echoed.  Not what you
+intended!  Calling a function may be an alternative.
+
+Completion behavior				*:command-completion*
+							*E179* *E180* *E181*
+By default, the arguments of user defined commands do not undergo completion.
+However, by specifying one or the other of the following attributes, argument
+completion can be enabled:
+
+	-complete=augroup	autocmd groups
+	-complete=buffer	buffer names
+	-complete=command	Ex command (and arguments)
+	-complete=dir		directory names
+	-complete=environment	environment variable names
+	-complete=event		autocommand events
+	-complete=expression	Vim expression
+	-complete=file		file and directory names
+	-complete=function	function name
+	-complete=help		help subjects
+	-complete=highlight	highlight groups
+	-complete=mapping	mapping name
+	-complete=menu		menus
+	-complete=option	options
+	-complete=tag		tags
+	-complete=tag_listfiles	tags, file names are shown when CTRL-D is hit
+	-complete=var		user variables
+	-complete=custom,{func} custom completion, defined via {func}
+
+Custom completion			    *:command-completion-custom*
+							*E467* *E468*
+It is possible to define customized completion schemes via the "custom,{func}"
+completion argument.  The {func} part should be a function with the following
+prototype >
+
+	:function {func}(ArgLead, CmdLine, CursorPos)
+
+The function need not use all these arguments, but it should provide the
+completion candidates as the return value, one per line in a newline separated
+string.  The function arguments are:
+	ArgLead		the leading portion of the argument currently being
+			completed on
+	CmdLine		the entire command line
+	CursorPos	the cursor position in it
+The function may use these for determining context.  It is not necessary to
+filter candidates against the (implicit pattern in) ArgLead.  Vim will do
+filter the candidates with its regexp engine after function return, and this
+is probably more efficient in most cases.
+
+The following example lists user names to a Finger command >
+    :com -complete=custom,ListUsers -nargs=1 Finger !finger <args>
+    :fun ListUsers(A,L,P)
+    :    return system("cut -d: -f1 /etc/passwd")
+    :endfun
+
+Range handling						*E177* *E178*
+
+By default, user-defined commands do not accept a line number range. However,
+it is possible to specify that the command does take a range (the -range
+attribute), or that it takes an arbitrary count value, either in the line
+number position (-range=N, like the |:split| command) or as a "count"
+argument (-count=N, like the |:Next| command). Possible attributes are:
+
+	-range	    Range allowed, default is current line
+	-range=%    Range allowed, default is whole file (1,$)
+	-range=N    A count (default N) which is specified in the line
+		    number position (like |:split|)
+	-count=N    A count (default N) which is specified either in the line
+		    number position, or as an initial argument (like |:Next|)
+		    Specifying -count (without a default) acts like -count=0
+
+Note that -range=N and -count=N are mutually exclusive - only one should be
+specified.
+
+Special cases
+
+There are some special cases as well:
+
+	-bang	    The command can take a ! modifier (like :q or :w)
+	-bar	    The command can be followed by a "|" and another command.
+		    A "|" inside the command argument is not allowed then.
+		    Also checks for a " to start a comment.
+	-register   The first argument to the command can be an optional
+		    register name (like :del, :put, :yank).
+	-buffer	    The command will only be available in the current buffer.
+
+In the cases of the -count and -register attributes, if the optional argument
+is supplied, it is removed from the argument list and is available to the
+replacement text separately.
+
+Replacement text
+
+The replacement text for a user defined command is scanned for special escape
+sequences, using <...> notation. Escape sequences are replaced with values
+from the entered command line, and all other text is copied unchanged. The
+resulting string is executed as an Ex command. If the initial < of an escape
+sequence is preceded by a backslash, the sequence is copied unchanged.
+
+The valid escape sequences are
+
+						*<line1>*
+	<line1>	The starting line of the command range.
+						*<line2>*
+	<line2>	The final line of the command range.
+						*<count>*
+	<count>	Any count supplied (as described for the '-range'
+		and '-count' attributes).
+						*<bang>*
+	<bang>	(See the '-bang' attribute) Expands to a ! if the
+		command was executed with a ! modifier, otherwise
+		expands to nothing.
+						*<reg>* *<register>*
+	<reg>	(See the '-register' attribute) The optional register,
+		if specified. Otherwise, expands to nothing. <register>
+		is a synonym for this.
+						*<args>*
+	<args>	The command arguments, exactly as supplied (but as
+		noted above, any count or register can consume some
+		of the arguments, which are then not part of <args>).
+	<lt>	A single '<' (Less-Than) character.  This is needed if you
+		want to get a literal copy of one of these escape sequences
+		into the expansion - for example, to get <bang>, use
+		<lt>bang>.
+
+							*<q-args>*
+If the first two characters of an escape sequence are "q-" (for example,
+<q-args>) then the value is quoted in such a way as to make it a valid value
+for use in an expression.  This uses the argument as one single value.
+
+To allow commands to pass their arguments on to a user-defined function, there
+is a special form <f-args> ("function args"). This splits the command
+arguments at spaces and Tabs, quotes each argument individually, and the
+<f-args> sequence is replaced by the comma-separated list of quoted arguments.
+See the Mycmd example below.  When there is no argument, <f-args> also has no
+argument.
+
+Examples >
+
+   " Delete everything after here to the end
+   :com Ddel +,$d
+
+   " Rename the current buffer
+   :com -nargs=1 -bang -complete=file Ren f <args>|w<bang>
+
+   " Replace a range with the contents of a file
+   " (Enter this all as one line)
+   :com -range -nargs=1 -complete=file
+	 Replace <line1>-pu_|<line1>,<line2>d|r <args>|<line1>d
+
+   " Count the number of lines in the range
+   :com! -range -nargs=0 Lines :echo <line2> - <line1> + 1 "lines"
+
+   " Call a user function (example of <f-args>)
+   :com -nargs=* Mycmd call Myfunc(<f-args>)
+
+When executed as: >
+	:Mycmd arg1 arg2
+This will invoke: >
+	:call Myfunc("arg1","arg2")
+
+   :" A more substantial example
+   :function Allargs(command)
+   :	let i = 0
+   :	while i < argc()
+   :	   if filereadable(argv(i))
+   :	    execute "e " . argv(i)
+   :	     execute a:command
+   :      endif
+   :      let i = i + 1
+   :   endwhile
+   :endfunction
+   :command -nargs=+ -complete=command Allargs call Allargs(<q-args>)
+
+The command Allargs takes any Vim command(s) as argument and executes it on all
+files in the argument list.  Usage example (note use of the "e" flag to ignore
+errors and the "update" command to write modified buffers): >
+	:Allargs %s/foo/bar/ge|update
+This will invoke: >
+	:call Allargs("%s/foo/bar/ge|update")
+<
+When defining an user command in a script, it will be able to call functions
+local to the script and use mappings local to the script.  When the user
+invokes the user command, it will run in the context of the script it was
+defined in.  This matters if |<SID>| is used in a command.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt
new file mode 100644
index 0000000..52c3b24
--- /dev/null
+++ b/runtime/doc/mbyte.txt
@@ -0,0 +1,1368 @@
+*mbyte.txt*     For Vim version 7.0aa.  Last change: 2004 Jun 07
+
+
+		  VIM REFERENCE MANUAL	  by Bram Moolenaar et al.
+
+
+Multi-byte support				*multibyte* *multi-byte*
+						*Chinese* *Japanese* *Korean*
+This is about editing text in languages which have many characters that can
+not be represented using one byte (one octet).  Examples are Chinese, Japanese
+and Korean.  Unicode is also covered here.
+
+For an introduction to the most common features, see |usr_45.txt| in the user
+manual.
+For changing the language of messages and menus see |mlang.txt|.
+
+{not available when compiled without the +multi_byte feature}
+
+
+1.  Getting started			|mbyte-first|
+2.  Locale				|mbyte-locale|
+3.  Encoding				|mbyte-encoding|
+4.  Using a terminal			|mbyte-terminal|
+5.  Fonts on X11			|mbyte-fonts-X11|
+6.  Fonts on MS-Windows			|mbyte-fonts-MSwin|
+7.  Input on X11			|mbyte-XIM|
+8.  Input on MS-Windows			|mbyte-IME|
+9.  Input with a keymap			|mbyte-keymap|
+10. Using UTF-8				|mbyte-utf8|
+11. Overview of options			|mbyte-options|
+
+NOTE: This file contains UTF-8 characters.  These may show up as strange
+characters or boxes when using another encoding.
+
+==============================================================================
+1. Getting started					*mbyte-first*
+
+This is a summary of the multibyte features in Vim.  If you are lucky it works
+as described and you can start using Vim without much trouble.  If something
+doesn't work you will have to read the rest.  Don't be surprised if it takes
+quite a bit of work and experimenting to make Vim use all the multi-byte
+features.  Unfortunately, every system has its own way to deal with multibyte
+languages and it is quite complicated.
+
+
+COMPILING
+
+If you already have a compiled Vim program, check if the |+multi_byte| feature
+is included.  The |:version| command can be used for this.
+
+If +multi_byte is not included, you should compile Vim with "big" features.
+You can further tune what features are included.  See the INSTALL files in the
+source directory.
+
+
+LOCALE
+
+First of all, you must make sure your current locale is set correctly.  If
+your system has been installed to use the language, it probably works right
+away.  If not, you can often make it work by setting the $LANG environment
+variable in your shell: >
+
+	setenv LANG ja_JP.EUC
+
+Unfortunately, the name of the locale depends on your system.  Japanese might
+also be called "ja_JP.EUCjp" or just "ja".  To see what is currently used: >
+
+	:language
+
+To change the locale inside Vim use: >
+
+	:language ja_JP.EUC
+
+Vim will give an error message if this doesn't work.  This is a good way to
+experiment and find the locale name you want to use.  But it's always better
+to set the locale in the shell, so that it is used right from the start.
+
+See |mbyte-locale| for details.
+
+
+ENCODING
+
+If your locale works properly, Vim will try to set the 'encoding' option
+accordingly.  If this doesn't work you can overrule its value: >
+
+	:set encoding=utf-8
+
+See |encoding-values| for a list of acceptable values.
+
+The result is that all the text that is used inside Vim will be in this
+encoding.  Not only the text in the buffers, but also in registers, variables,
+etc.  This also means that changing the value of 'encoding' makes the existing
+text invalid!  The text doesn't change, but it will be displayed wrong.
+
+You can edit files in another encoding than what 'encoding' is set to.  Vim
+will convert the file when you read it and convert it back when you write it.
+See 'fileencoding', 'fileencodings' and |++enc|.
+
+
+DISPLAY AND FONTS
+
+If you are working in a terminal (emulator) you must make sure it accepts the
+same encoding as which Vim is working with.  If this is not the case, you can
+use the 'termencoding' option to make Vim convert text automatically.
+
+For the GUI you must select fonts that work with the current 'encoding'.  This
+is the difficult part.  It depends on the system you are using, the locale and
+a few other things.  See the chapters on fonts: |mbyte-fonts-X11| for
+X-Windows and |mbyte-fonts-MSwin| for MS-Windows.
+
+For GTK+ 2, you can skip most of this section.  The option 'guifontset' does
+no longer exist.  You only need to set 'guifont' and everything should "just
+work".  If your system comes with Xft2 and fontconfig and the current font
+does not contain a certain glyph, a different font will be used automatically
+if available.  The 'guifontwide' option is still supported but usually you do
+not need to set it.  It is only necessary if the automatic font selection does
+not suit your needs.
+
+For X11 you can set the 'guifontset' option to a list of fonts that together
+cover the characters that are used.  Example for Korean: >
+
+	:set guifontset=k12,r12
+
+Alternatively, you can set 'guifont' and 'guifontwide'.  'guifont' is used for
+the single-width characters, 'guifontwide' for the double-width characters.
+Thus the 'guifontwide' font must be exactly twice as wide as 'guifont'.
+Example for UTF-8: >
+
+	:set guifont=-misc-fixed-medium-r-normal-*-18-120-100-100-c-90-iso10646-1
+	:set guifontwide=-misc-fixed-medium-r-normal-*-18-120-100-100-c-180-iso10646-1
+
+You can also set 'guifont' alone, Vim will try to find a matching
+'guifontwide' for you.
+
+
+INPUT
+
+There are several ways to enter multi-byte characters:
+- For X11 XIM can be used.  See |XIM|.
+- For MS-Windows IME can be used.  See |IME|.
+- For all systems keymaps can be used.  See |mbyte-keymap|.
+
+The options 'iminsert', 'imsearch' and 'imcmdline' can be used to chose
+the different input medhods or disable them temporarily.
+
+==============================================================================
+2.  Locale						*mbyte-locale*
+
+The easiest setup is when your whole system uses the locale you want to work
+in.  But it's also possible to set the locale for one shell you are working
+in, or just use a certain locale inside Vim.
+
+
+WHAT IS A LOCALE?					*locale*
+
+There are many of languages in the world.  And there are different cultures
+and environments at least as much as the number of languages.	A linguistic
+environment corresponding to an area is called "locale".  This includes
+information about the used language, the charset, collating order for sorting,
+date format, currency format and so on.  For Vim only the language and charset
+really matter.
+
+You can only use a locale if your system has support for it.  Some systems
+have only a few locales, especially in the USA.  The language which you want
+to use may not be on your system.  In that case you might be able to install
+it as an extra package.  Check your system documentation for how to do that.
+
+The location in which the locales are installed varies from system to system.
+For example, "/usr/share/locale" or "/usr/lib/locale".  See your system's
+setlocale() man page.
+
+Looking in these directories will show you the exact name of each locale.
+Mostly upper/lowercase matters, thus "ja_JP.EUC" and "ja_jp.euc" are
+different.  Some systems have a locale.alias file, which allows translation
+from a short name like "nl" to the full name "nl_NL.ISO_8859-1".
+
+Note that X-windows has its own locale stuff.  And unfortunately uses locale
+names different from what is used elsewhere.  This is confusing!  For Vim it
+matters what the setlocale() function uses, which is generally NOT the
+X-windows stuff.  You might have to do some experiments to find out what
+really works.
+
+							*locale-name*
+The (simplified) format of |locale| name is:
+
+	language
+or	language_territory
+or	language_territory.codeset
+
+Territory means the country (or part of it), codeset means the |charset|.  For
+example, the locale name "ja_JP.eucJP" means:
+	ja	the language is Japanese
+	JP	the country is Japan
+	eucJP	the codeset is EUC-JP
+But it also could be "ja", "ja_JP.EUC", "ja_JP.ujis", etc.  And unfortunately,
+the locale name for a specific language, territory and codeset is not unified
+and depends on your system.
+
+Examples of locale name:
+    charset	    language		  locale name ~
+    GB2312	    Chinese (simplified)  zh_CN.EUC, zh_CN.GB2312
+    Big5	    Chinese (traditional) zh_TW.BIG5, zh_TW.Big5
+    CNS-11643	    Chinese (traditional) zh_TW
+    EUC-JP	    Japanese		  ja, ja_JP.EUC, ja_JP.ujis, ja_JP.eucJP
+    Shift_JIS	    Japanese		  ja_JP.SJIS, ja_JP.Shift_JIS
+    EUC-KR	    Korean		  ko, ko_KR.EUC
+
+
+USING A LOCALE
+
+To start using a locale for the whole system, see the documentation of your
+system.  Mostly you need to set it in a configuration file in "/etc".
+
+To use a locale in a shell, set the $LANG environment value.  When you want to
+use Korean and the |locale| name is "ko", do this:
+
+    sh:    export LANG=ko
+    csh:   setenv LANG ko
+
+You can put this in your ~/.profile or ~/.cshrc file to always use it.
+
+To use a locale in Vim only, use the |:language| command: >
+
+	:language ko
+
+Put this in your ~/.vimrc file to use it always.
+
+Or specify $LANG when starting Vim:
+
+   sh:    LANG=ko vim {vim-arguments}
+   csh:	  env LANG=ko vim {vim-arguments}
+
+You could make a small shell script for this.
+
+==============================================================================
+3.  Encoding				*mbyte-encoding*
+
+Vim uses the 'encoding' option to specify how characters identified and
+encoded when they are used inside Vim.  This applies to all the places where
+text is used, including buffers (files loaded into memory), registers and
+variables.
+
+							*charset* *codeset*
+Charset is another name for encoding.  There are subtle differences, but these
+don't matter when using Vim.  "codeset" is another similar name.
+
+Each character is encoded as one or more bytes.  When all characters are
+encoded with one byte, we call this a single-byte encoding.  The most often
+used one is called "latin1".  This limits the number of characters to 256.
+Some of these are control characters, thus even fewer can be used for text.
+
+When some characters use two or more bytes, we call this a multi-byte
+encoding.  This allows using much more than 256 characters, which is required
+for most East Asian languages.
+
+Most multi-byte encodings use one byte for the first 127 characters.  These
+are equal to ASCII, which makes it easy to exchange plain-ASCII text, no
+matter what language is used.  Thus you might see the right text even when the
+encoding was set wrong.
+
+							*encoding-names*
+Vim can use many different character encodings.  There are three major groups:
+
+1   8bit	Single-byte encodings, 256 different characters.  Mostly used
+		in USA and Europe.  Example: ISO-8859-1 (Latin1).  All
+		characters occupy one screen cell only.
+
+2   2byte	Double-byte encodings, over 10000 different characters.
+		Mostly used in Asian countries.  Example: euc-kr (Korean)
+		The number of screen cells is equal to the number of bytes
+		(except for euc-jp when the first byte is 0x8e).
+
+u   Unicode	Universal encoding, can replace all others.  ISO 10646.
+		Millions of different characters.  Example: UTF-8.  The
+		relation between bytes and screen cells is complex.
+
+Other encodings cannot be used by Vim internally.  But files in other
+encodings can be edited by using conversion, see 'fileencoding'.
+Note that all encodings must use ASCII for the characters up to 128 (except
+when compiled for EBCDIC).
+
+Supported 'encoding' values are:			*encoding-values*
+1   latin1	8-bit characters (ISO 8859-1)
+1   iso-8859-n	ISO_8859 variant (n = 2 to 15)
+1   koi8-r	Russian
+1   koi8-u	Ukrainian
+1   macroman    MacRoman (Macintosh encoding)
+1   8bit-{name} any 8-bit encoding (Vim specific name)
+1   cp{number}	MS-Windows: any installed single-byte codepage
+2   cp932	Japanese (Windows only)
+2   euc-jp	Japanese (Unix only)
+2   sjis	Japanese (Unix only)
+2   cp949	Korean (Unix and Windows)
+2   euc-kr	Korean (Unix only)
+2   cp936	simplified Chinese (Windows only)
+2   euc-cn	simplified Chinese (Unix only)
+2   cp950	traditional Chinese (on Unix alias for big5)
+2   big5	traditional Chinese (on Windows alias for cp950)
+2   euc-tw	traditional Chinese (Unix only)
+2   2byte-{name} Unix: any double-byte encoding (Vim specific name)
+2   cp{number}	MS-Windows: any installed double-byte codepage
+u   utf-8	32 bit UTF-8 encoded Unicode (ISO/IEC 10646-1)
+u   ucs-2	16 bit UCS-2 encoded Unicode (ISO/IEC 10646-1)
+u   ucs-2le	like ucs-2, little endian
+u   utf-16	ucs-2 extended with double-words for more characters
+u   utf-16le	like utf-16, little endian
+u   ucs-4	32 bit UCS-4 encoded Unicode (ISO/IEC 10646-1)
+u   ucs-4le	like ucs-4, little endian
+
+The {name} can be any encoding name that your system supports.  It is passed
+to iconv() to convert between the encoding of the file and the current locale.
+For MS-Windows "cp{number}" means using codepage {number}.
+Examples: >
+		:set encoding=8bit-cp1252
+		:set encoding=2byte-cp932
+<
+Several aliases can be used, they are translated to one of the names above.
+An incomplete list:
+
+1   ansi	same as latin1 (obsolete, for backward compatibility)
+2   japan	Japanese: on Unix "euc-jp", on MS-Windows cp932
+2   korea	Korean: on Unix "euc-kr", on MS-Windows cp949
+2   prc		simplified Chinese: on Unix "euc-cn", on MS-Windows cp936
+2   chinese     same as "prc"
+2   taiwan	traditional Chinese: on Unix "euc-tw", on MS-Windows cp950
+u   utf8	same as utf-8
+u   unicode	same as ucs-2
+u   ucs2be	same as ucs-2 (big endian)
+u   ucs-2be	same as ucs-2 (big endian)
+u   ucs-4be	same as ucs-4 (big endian)
+
+For the UCS codes the byte order matters.  This is tricky, use UTF-8 whenever
+you can.  The default is to use big-endian (most significant byte comes
+first):
+	    name	bytes		char ~
+	    ucs-2	      11 22	    1122
+	    ucs-2le	      22 11	    1122
+	    ucs-4	11 22 33 44	11223344
+	    ucs-4le	44 33 22 11	11223344
+
+On MS-Windows systems you often want to use "ucs-2le", because it uses little
+endian UCS-2.
+
+There are a few encodings which are similar, but not exactly the same.  Vim
+treats them as if they were different encodings, so that conversion will be
+done when needed.  You might want to use the similar name to avoid conversion
+or when conversion is not possible:
+
+	cp932, shift-jis, sjis
+	cp936, euc-cn
+
+							*encoding-table*
+Normally 'encoding' is equal to your current locale and 'termencoding' is
+empty.  This means that your keyboard and display work with characters encoded
+in your current locale, and Vim uses the same characters internally.
+
+You can make Vim use characters in a different encoding by setting the
+'encoding' option to a different value.  Since the keyboard and display still
+use the current locale, conversion needs to be done.  The 'termencoding' then
+takes over the value of the current locale, so Vim converts between 'encoding'
+and 'termencoding'.  Example: >
+	:let &termencoding = &encoding
+	:set encoding=utf-8
+
+However, not all combinations of values are possible.  The table below tells
+you how each of the nine combinations works.  This is further restricted by
+not all conversions being possible, iconv() being present, etc.  Since this
+depends on the system used, no detailed list can be given.
+
+('tenc' is the short name for 'termencoding' and 'enc' short for 'encoding')
+
+'tenc'	    'enc'	remark ~
+
+ 8bit	    8bit	Works.  When 'termencoding' is different from
+			'encoding' typing and displaying may be wrong for some
+			characters, Vim does NOT perform conversion (set
+			'encoding' to "utf-8" to get this).
+ 8bit      2byte	MS-Windows: works for all codepages installed on your
+			system; you can only type 8bit characters;
+			Other systems: does NOT work.
+ 8bit	   Unicode	Works, but you can only type 8bit characters; in a
+			terminal you can only see 8bit characters; the GUI can
+			show all characters that the 'guifont' supports.
+
+ 2byte	    8bit	Works, but typing non-ASCII characters might
+			be a problem.
+ 2byte	   2byte	MS-Windows: works for all codepages installed on your
+			system; typing characters might be a problem when
+			locale is different from 'encoding'.
+			Other systems: Only works when 'termencoding' is equal
+			to 'encoding', you might as well leave it empty.
+ 2byte	   Unicode	works, Vim will translate typed characters.
+
+ Unicode    8bit	works (unusual)
+ Unicode    2byte	does NOT work
+ Unicode   Unicode	works very well (leaving 'termencoding' empty works
+			the same way, because all Unicode is handled
+			internally as UTF-8)
+
+CONVERSION						*charset-conversion*
+
+Vim will automatically convert from one to another encoding in several places:
+- When reading a file and 'fileencoding' is different from 'encoding'
+- When writing a file and 'fileencoding' is different from 'encoding'
+- When displaying characters and 'termencoding' is different from 'encoding'
+- When reading input and 'termencoding' is different from 'encoding'
+- When displaying messages and the encoding used for LC_MESSAGES differs from
+  'encoding' (requires a gettext version that supports this).
+- When reading a Vim script where |:scriptencoding| is different from
+  'encoding'.
+- When reading or writing a |viminfo| file.
+Most of these require the |+iconv| feature.  Conversion for reading and
+writing files may also be specified with the 'charconvert' option.
+
+Useful utilities for converting the charset:
+    All:	    iconv
+	GNU iconv can convert most encodings.  Unicode is used as the
+	intermediate encoding, which allows conversion from and to all other
+	encodings.  See http://www.gnu.org/directory/libiconv.html.
+
+    Japanese:	    nkf
+	Nkf is "Network Kanji code conversion Filter".  One of the most unique
+	facility of nkf is the guess of the input Kanji code.  So, you don't
+	need to know what the inputting file's |charset| is.  When convert to
+	EUC-JP from ISO-2022-JP or Shift_JIS, simply do the following command
+	in Vim:
+	    :%!nkf -e
+	Nkf can be found at:
+	http://www.sfc.wide.ad.jp/~max/FreeBSD/ports/distfiles/nkf-1.62.tar.gz
+
+    Chinese:	    hc
+	Hc is "Hanzi Converter".  Hc convert a GB file to a Big5 file, or Big5
+	file to GB file.  Hc can be found at:
+	ftp://ftp.cuhk.hk/pub/chinese/ifcss/software/unix/convert/hc-30.tar.gz
+
+    Korean:	    hmconv
+	Hmconv is Korean code conversion utility especially for E-mail. It can
+	convert between EUC-KR and ISO-2022-KR.  Hmconv can be found at:
+	ftp://ftp.kaist.ac.kr/pub/hangul/code/hmconv/
+
+    Multilingual:   lv
+	Lv is a Powerful Multilingual File Viewer.  And it can be worked as
+	|charset| converter.  Supported |charset|: ISO-2022-CN, ISO-2022-JP,
+	ISO-2022-KR, EUC-CN, EUC-JP, EUC-KR, EUC-TW, UTF-7, UTF-8, ISO-8859
+	series, Shift_JIS, Big5 and HZ. Lv can be found at:
+	http://www.ff.iij4u.or.jp/~nrt/freeware/lv4495.tar.gz
+
+
+							*mbyte-conversion*
+When reading and writing files in an encoding different from 'encoding',
+conversion needs to be done.  These conversions are supported:
+- All conversions between Latin-1 (ISO-8859-1), UTF-8, UCS-2 and UCS-4 are
+  handled internally.
+- For MS-Windows, when 'encoding' is a Unicode encoding, conversion from and
+  to any codepage should work.
+- Conversion specified with 'charconvert'
+- Conversion with the iconv library, if it is available.
+	Old versions of GNU iconv() may cause the conversion to fail (they
+	request a very large buffer, more than Vim is willing to provide).
+	Try getting another iconv() implementation.
+
+==============================================================================
+4. Using a terminal					*mbyte-terminal*
+
+The GUI fully supports multi-byte characters.  It is also possible in a
+terminal, if the terminal supports the same encoding that Vim uses.  Thus this
+is less flexible.
+
+For example, you can run Vim in a xterm with added multi-byte support and/or
+|XIM|.  Examples are kterm (Kanji term) and hanterm (for Korean), Eterm
+(Enlightened terminal) and rxvt.
+
+If your terminal does not support the right encoding, you can set the
+'termencoding' option.  Vim will then convert the typed characters from
+'termencoding' to 'encoding'.  And displayed text will be converted from
+'encoding' to 'termencoding'.  If the encoding supported by the terminal
+doesn't include all the characters that Vim uses, this leads to lost
+characters.  This may mess up the display.  If you use a terminal that
+supports Unicode, such as the xterm mentioned below, it should work just fine,
+since nearly every character set can be converted to Unicode without loss of
+information.
+
+
+UTF-8 IN XFREE86 XTERM					*UTF8-xterm*
+
+This is a short explanation of how to use UTF-8 character encoding in the
+xterm that comes with XFree86 by Thomas Dickey (text by Markus Kuhn).
+
+Get the latest xterm version which has now UTF-8 support:
+
+	http://invisible-island.net/xterm/xterm.html
+
+Compile it with "./configure --enable-wide-chars ; make"
+
+Also get the ISO 10646-1 version of various fonts, which is available on
+
+	http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz
+
+and install the font as described in the README file.
+
+Now start xterm with >
+
+  xterm -u8 -fn -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
+or, for bigger character: >
+  xterm -u8 -fn -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1
+
+and you will have a working UTF-8 terminal emulator. Try both >
+
+   cat utf-8-demo.txt
+   vim utf-8-demo.txt
+
+with the demo text that comes with ucs-fonts.tar.gz in order to see
+whether there are any problems with UTF-8 in your xterm.
+
+For Vim you may need to set 'encoding' to "utf-8".
+
+==============================================================================
+5.  Fonts on X11					*mbyte-fonts-X11*
+
+Unfortunately, using fonts in X11 is complicated.  The name of a single-byte
+font is a long string.  For multi-byte fonts we need several of these...
+
+Note: Most of this is no longer relevant for GTK+ 2.  Selecting a font via
+its XLFD is not supported anymore; see 'guifont' for an example of how to
+set the font.  Do yourself a favor and ignore the |XLFD| and |xfontset|
+sections below.
+
+First of all, Vim only accepts fixed-width fonts for displaying text.  You
+cannot use proportionally spaced fonts.  This excludes many of the available
+(and nicer looking) fonts.  However, for menus and tooltips any font can be
+used.
+
+Note that Display and Input are independent.  It is possible to see your
+language even though you have no input method for it.
+
+You should get a default font for menus and tooltips that works, but it might
+be ugly.  Read the following to find out how to select a better font.
+
+
+X LOGICAL FONT DESCRIPTION (XLFD)
+							*XLFD*
+XLFD is the X font name and contains the information about the font size,
+charset, etc.  The name is in this format:
+
+FOUNDRY-FAMILY-WEIGHT-SLANT-WIDTH-STYLE-PIXEL-POINT-X-Y-SPACE-AVE-CR-CE
+
+Each field means:
+
+- FOUNDRY:  FOUNDRY field.  The company that created the font.
+- FAMILY:   FAMILY_NAME field.  Basic font family name.  (helvetica, gothic,
+	    times, etc)
+- WEIGHT:   WEIGHT_NAME field.  How thick the letters are.  (light, medium,
+	    bold, etc)
+- SLANT:    SLANT field.
+		r:  Roman (no slant)
+		i:  Italic
+		o:  Oblique
+		ri: Reverse Italic
+		ro: Reverse Oblique
+		ot: Other
+		number:	Scaled font
+- WIDTH:    SETWIDTH_NAME field.  Width of characters.  (normal, condensed,
+	    narrow, double wide)
+- STYLE:    ADD_STYLE_NAME field.  Extra info to describe font.  (Serif, Sans
+	    Serif, Informal, Decorated, etc)
+- PIXEL:    PIXEL_SIZE field.  Height, in pixels, of characters.
+- POINT:    POINT_SIZE field.  Ten times height of characters in points.
+- X:	    RESOLUTION_X field.  X resolution (dots per inch).
+- Y:	    RESOLUTION_Y field.  Y resolution (dots per inch).
+- SPACE:    SPACING field.
+		p:  Proportional
+		m:  Monospaced
+		c:  CharCell
+- AVE:	    AVERAGE_WIDTH field.  Ten times average width in pixels.
+- CR:	    CHARSET_REGISTRY field.  The name of the charset group.
+- CE:	    CHARSET_ENCODING field.  The rest of the charset name.  For some
+	    charsets, such as JIS X 0208, if this field is 0, code points has
+	    the same value as GL, and GR if 1.
+
+For example, in case of a 14 dots font corresponding to JIS X 0208, it is
+written like:
+    -misc-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1990-0
+
+
+X FONTSET
+						*fontset* *xfontset*
+A single-byte charset is typically associated with one font.  For multi-byte
+charsets a combination of fonts is often used.  This means that one group of
+characters are used from one font and another group from another font (which
+might be double wide).  This collection of fonts is called a fontset.
+
+Which fonts are required in a fontset depends on the current locale.  X
+windows maintains a table of which groups of characters are required for a
+locale.  You have to specify all the fonts that a locale requires in the
+'guifontset' option.
+
+NOTE: The fontset always uses the current locale, even though 'encoding' may
+be set to use a different charset.  In that situation you might want to use
+'guifont' and 'guifontwide' instead of 'guifontset'.
+
+Example:
+    |charset| language		    "groups of characters" ~
+    GB2312    Chinese (simplified)  ISO-8859-1 and GB 2312
+    Big5      Chinese (traditional) ISO-8859-1 and Big5
+    CNS-11643 Chinese (traditional) ISO-8859-1, CNS 11643-1 and CNS 11643-2
+    EUC-JP    Japanese		    JIS X 0201 and JIS X 0208
+    EUC-KR    Korean		    ISO-8859-1 and KS C 5601 (KS X 1001)
+
+You can search for fonts using the xlsfonts command.  For example, when you're
+searching for a font for KS C 5601: >
+    xlsfonts | grep ksc5601
+
+This is complicated and confusing.  You might want to consult the X-Windows
+documentation if there is something you don't understand.
+
+						*base_font_name_list*
+When you have found the names of the fonts you want to use, you need to set
+the 'guifontset' option.  You specify the list by concatenating the font names
+and putting a comma in between them.
+
+For example, when you use the ja_JP.eucJP locale, this requires JIS X 0201
+and JIS X 0208.  You could supply a list of fonts that explicitly specifies
+the charsets, like: >
+
+ :set guifontset=-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0,
+	\-misc-fixed-medium-r-normal--14-130-75-75-c-70-jisx0201.1976-0
+
+Alternatively, you can supply a base font name list that omits the charset
+name, letting X-Windows select font characters required for the locale.  For
+example: >
+
+ :set guifontset=-misc-fixed-medium-r-normal--14-130-75-75-c-140,
+	\-misc-fixed-medium-r-normal--14-130-75-75-c-70
+
+Alternatively, you can supply a single base font name that allows X-Windows to
+select from all available fonts.  For example: >
+
+ :set guifontset=-misc-fixed-medium-r-normal--14-*
+
+Alternatively, you can specify alias names.  See the fonts.alias file in the
+fonts directory (e.g., /usr/X11R6/lib/X11/fonts/).  For example: >
+
+ :set guifontset=k14,r14
+<
+							*E253*
+Note that in East Asian fonts, the standard character cell is square.  When
+mixing a Latin font and an East Asian font, the East Asian font width should
+be twice the Latin font width.
+
+If 'guifontset' is not empty, the "font" argument of the |:highlight| command
+is also interpreted as a fontset.  For example, you should use for
+highlighting: >
+	:hi Comment font=english_font,your_font
+If you use a wrong "font" argument you will get an error message.
+Also make sure that you set 'guifontset' before setting fonts for highlight
+groups.
+
+
+USING RESOURCE FILES
+
+Instead of specifying 'guifontset', you can set X11 resources and Vim will
+pick them up.  This is only for people who know how X resource files work.
+
+For Motif and Athena insert these three lines in your $HOME/.Xdefaults file:
+
+	Vim.font: |base_font_name_list|
+	Vim*fontSet: |base_font_name_list|
+	Vim*fontList: your_language_font
+
+Note: Vim.font is for text area.
+      Vim*fontSet is for menu.
+      Vim*fontList is for menu (for Motif GUI)
+
+For example, when you are using Japanese and a 14 dots font, >
+
+	Vim.font: -misc-fixed-medium-r-normal--14-*
+	Vim*fontSet: -misc-fixed-medium-r-normal--14-*
+	Vim*fontList: -misc-fixed-medium-r-normal--14-*
+<
+or: >
+
+	Vim*font: k14,r14
+	Vim*fontSet: k14,r14
+	Vim*fontList: k14,r14
+<
+To have them take effect immediately you will have to do >
+
+	xrdb -merge ~/.Xdefaults
+
+Otherwise you will have to stop and restart the X server before the changes
+take effect.
+
+
+The GTK+ version of GUI Vim does not use .Xdefaults, use ~/.gtkrc instead.
+The default mostly works OK.  But for the menus you might have to change
+it.  Example: >
+
+	style "default"
+	{
+		fontset="-*-*-medium-r-normal--14-*-*-*-c-*-*-*"
+	}
+	widget_class "*" style "default"
+
+==============================================================================
+6.  Fonts on MS-Windows				*mbyte-fonts-MSwin*
+
+The simplest is to use the font dialog to select fonts and try them out.  You
+can find this at the "Edit/Select Font..." menu.  Once you find a font name
+that works well you can use this command to see its name: >
+
+	:set guifont
+
+Then add a command to your |gvimrc| file to set 'guifont': >
+
+	:set guifont=courier_new:h12
+
+==============================================================================
+7.  Input on X11				*mbyte-XIM*
+
+X INPUT METHOD (XIM) BACKGROUND			*XIM* *xim* *x-input-method*
+
+XIM is an international input module for X.  There are two kind of structures,
+Xlib unit type and |IM-server| (Input-Method server) type.  |IM-server| type
+is suitable for complex input, such as CJK.
+
+- IM-server
+							*IM-server*
+  In |IM-server| type input structures, the input event is handled by either
+  of the two ways: FrontEnd system and BackEnd system.  In the FrontEnd
+  system, input events are snatched by the |IM-server| first, then |IM-server|
+  give the application the result of input.  On the other hand, the BackEnd
+  system works reverse order.  MS Windows adopt BackEnd system.  In X, most of
+  |IM-server|s adopt FrontEnd system.  The demerit of BackEnd system is the
+  large overhead in communication, but it provides safe synchronization with
+  no restrictions on applications.
+
+  For example, there are xwnmo and kinput2 Japanese |IM-server|, both are
+  FrontEnd system.  Xwnmo is distributed with Wnn (see below), kinput2 can be
+  found at: ftp://ftp.sra.co.jp/pub/x11/kinput2/
+
+  For Chinese, there's a great XIM server named "xcin", you can input both
+  Traditional and Simplified Chinese characters.  And it can accept other
+  locale if you make a correct input table.  Xcin can be found at:
+  http://xcin.linux.org.tw/
+
+- Conversion Server
+							*conversion-server*
+  Some system needs additional server: conversion server.  Most of Japanese
+  |IM-server|s need it, Kana-Kanji conversion server.  For Chinese inputting,
+  it depends on the method of inputting, in some methods, PinYin or ZhuYin to
+  HanZi conversion server is needed.  For Korean inputting, if you want to
+  input Hanja, Hangul-Hanja conversion server is needed.
+
+  For example, the Japanese inputting process is divided into 2 steps.  First
+  we pre-input Hira-gana, second Kana-Kanji conversion.  There are so many
+  Kanji characters (6349 Kanji characters are defined in JIS X 0208) and the
+  number of Hira-gana characters are 76.  So, first, we pre-input text as
+  pronounced in Hira-gana, second, we convert Hira-gana to Kanji or Kata-Kana,
+  if needed.  There are some Kana-Kanji conversion server: jserver
+  (distributed with Wnn, see below) and canna. Canna could be found at:
+  ftp://ftp.nec.co.jp/pub/Canna/ (no longer works).
+
+There is a good input system: Wnn4.2.  Wnn 4.2 contains,
+    xwnmo (|IM-server|)
+    jserver (Japanese Kana-Kanji conversion server)
+    cserver (Chinese PinYin or ZhuYin to simplified HanZi conversion server)
+    tserver (Chinese PinYin or ZhuYin to traditional HanZi conversion server)
+    kserver (Hangul-Hanja conversion server)
+Wnn 4.2 for several systems can be found at various places on the internet.
+Use the RPM or port for your system.
+
+
+- Input Style
+							*xim-input-style*
+  When inputting CJK, there are four areas:
+      1. The area to display of the input while it is being composed
+      2. The area to display the currently active input mode.
+      3. The area to display the next candidate for the selection.
+      4. The area to display other tools.
+
+  The third area is needed when converting.  For example, in Japanese
+  inputting, multiple Kanji characters could have the same pronunciation, so
+  a sequence of Hira-gana characters could map to a distinct sequence of Kanji
+  characters.
+
+  The first and second areas are defined in international input of X with the
+  names of "Preedit Area", "Status Area" respectively.  The third and fourth
+  areas are not defined and are left to be managed by the |IM-server|.  In the
+  international input, four input styles have been defined using combinations
+  of Preedit Area and Status Area: |OnTheSpot|, |OffTheSpot|, |OverTheSpot|
+  and |Root|.
+
+  Currently, GUI Vim support three style, |OverTheSpot|, |OffTheSpot| and
+  |Root|.
+
+*.  on-the-spot						*OnTheSpot*
+    Preedit Area and Status Area are performed by the client application in
+    the area of application.  The client application is directed by the
+    |IM-server| to display all pre-edit data at the location of text
+    insertion. The client registers callbacks invoked by the input method
+    during pre-editing.
+*.  over-the-spot					*OverTheSpot*
+    Status Area is created in a fixed position within the area of application,
+    in case of Vim, the position is the additional status line.  Preedit Area
+    is made at present input position of application.  The input method
+    displays pre-edit data in a window which it brings up directly over the
+    text insertion position.
+*.  off-the-spot					*OffTheSpot*
+    Preedit Area and Status Area are performed in the area of application, in
+    case of Vim, the area is additional status line.  The client application
+    provides display windows for the pre-edit data to the input method which
+    displays into them directly.
+*.  root-window						*Root*
+    Preedit Area and Status Area are outside of the application.  The input
+    method displays all pre-edit data in a separate area of the screen in a
+    window specific to the input method.
+
+
+USING XIM			*multibyte-input* *E284* *E286* *E287* *E288*
+				*E285* *E291* *E292* *E290* *E289*
+
+Note that Display and Input are independent.  It is possible to see your
+language even though you have no input method for it.  But when your Display
+method doesn't match your Input method, the text will be displayed wrong.
+
+	Note: You can not use IM unless you specify 'guifontset'.
+	      Therefore, Latin users, you have to also use 'guifontset'
+	      if you use IM.
+
+To input your language you should run the |IM-server| which supports your
+language and |conversion-server| if needed.
+
+The next 3 lines should be put in your ~/.Xdefaults file.  They are common for
+all X applications which uses |XIM|.  If you already use |XIM|, you can skip
+this. >
+
+	*international: True
+	*.inputMethod: your_input_server_name
+	*.preeditType: your_input_style
+<
+input_server_name	is your |IM-server| name (check your |IM-server|
+			manual).
+your_input_style	is one of |OverTheSpot|, |OffTheSpot|, |Root|.  See
+			also |xim-input-style|.
+
+*international may not necessary if you use X11R6.
+*.inputMethod and *.preeditType are optional if you use X11R6.
+
+For example, when you are using kinput2 as |IM-server|, >
+
+	*international: True
+	*.inputMethod: kinput2
+	*.preeditType: OverTheSpot
+<
+When using |OverTheSpot|, GUI Vim always connects to the IM Server even in
+Normal mode, so you can input your language with commands like "f" and "r".
+But when using one of the other two methods, GUI Vim connects to the IM Server
+only if it is not in Normal mode.
+
+If your IM Server does not support |OverTheSpot|, and if you want to use your
+language with some Normal mode command like "f" or "r", then you should use a
+localized xterm  or an xterm which supports |XIM|
+
+If needed, you can set the XMODIFIERS environment variable:
+
+	sh:  export XMODIFIERS="@im=input_server_name"
+	csh: setenv XMODIFIERS "@im=input_server_name"
+
+For example, when you are using kinput2 as |IM-server| and sh, >
+
+	export XMODIFIERS="@im=kinput2"
+<
+
+FULLY CONTROLLED XIM
+
+You can fully control XIM, like with IME of MS-Windows (see |multibyte-ime|).
+This is currently only available for the GTK GUI.
+
+Before using fully controlled XIM, one setting is required.  Set the
+'imactivatekey' option to the key that is used for the activation of the input
+method.  For example, when you are using kinput2 + canna as IM Server, the
+activation key is probably Shift+Space: >
+
+	:set imactivatekey=S-space
+
+See 'imactivatekey' for the format.
+
+==============================================================================
+8.  Input on MS-Windows					*mbyte-IME*
+
+(Windows IME support)				*multibyte-ime* *IME*
+
+{only works Windows GUI and compiled with the |+multi_byte_ime| feature}
+
+To input multibyte characters on Windows, you have to use Input Method Editor
+(IME).  In process of your editing text, you must switch status (on/off) of
+IME many many many times.  Because IME with status on is hooking all of your
+key inputs, you cannot input 'j', 'k', or almost all of keys to Vim directly.
+
+This |+multi_byte_ime| feature help this.  It reduce times of switch status of
+IME manually.  In normal mode, there are almost no need working IME, even
+editing multibyte text.  So exiting insert mode with ESC, Vim memorize last
+status of IME and force turn off IME.  When re-enter insert mode, Vim revert
+IME status to that memorized automatically.
+
+This works on not only insert-normal mode, but also search-command input and
+replace mode.
+The options 'iminsert', 'imsearch' and 'imcmdline' can be used to chose
+the different input medhods or disable them temporarily.
+
+WHAT IS IME
+    IME is a part of East asian version Windows.  That helps you to input
+    multibyte character.  English and other language version Windows does not
+    have any IME.  (Also there are no need usually.) But there is one that
+    called Microsoft Global IME.  Global IME is a part of Internet Explorer
+    4.0 or above.  You can get more information about Global IME, at below
+    URL.
+
+WHAT IS GLOBAL IME					*global-ime*
+    Global IME makes capability to input Chinese, Japanese, and Korean text
+    into Vim buffer on any language version of Windows 98, Windows 95, and
+    Windows NT 4.0.
+    On Windows 2000 and XP it should work as well (without downloading).  On
+    Windows 2000 Professional, Global IME is built in, and the Input Locales
+    can be added through Control Panel/Regional Options/Input Locales.
+    Please see below URL for detail of Global IME.  You can also find various
+    language version of Global IME at same place.
+
+    - Global IME detailed information.
+	http://www.microsoft.com/windows/ie/features/ime.asp
+
+    - Active Input Method Manager (Global IME)
+	http://msdn.microsoft.com/workshop/misc/AIMM/aimm.asp
+
+    Support Global IME is a experimental feature.
+
+NOTE: For IME to work you must make sure the input locales of your language
+are added to your system.  The exact location of this depends on the version
+of Windows you use.  For example, on my W2P box:
+1. Control Panel
+2. Regional Options
+3. Input Locales Tab
+4. Add Installed input locales -> Chinese(PRC)
+   The default is still English (United Stated)
+
+
+Cursor color when IME or XIM is on				*CursorIM*
+    There is a little cute feature for IME.  Cursor can indicate status of IME
+    by changing its color.  Usually status of IME was indicated by little icon
+    at a corner of desktop (or taskbar).  It is not easy to verify status of
+    IME.  But this feature help this.
+    This works in the same way when using XIM.
+
+    You can select cursor color when status is on by using highlight group
+    CursorIM.  For example, add these lines to your _gvimrc: >
+
+	if has('multi_byte_ime')
+	    highlight Cursor guifg=NONE guibg=Green
+	    highlight CursorIM guifg=NONE guibg=Purple
+	endif
+<
+    Cursor color with off IME is green.  And purple cursor indicates that
+    status is on.
+
+==============================================================================
+9. Input with a keymap					*mbyte-keymap*
+
+When the keyboard doesn't produce the characters you want to enter in your
+text, you can use the 'keymap' option.  This will translate one or more
+(English) characters to another (non-English) character.  This only happens
+when typing text, not when typing Vim commands.  This avoids having to switch
+between two keyboard settings.
+
+The value of the 'keymap' option specifies a keymap file to use.  The name of
+this file is one of these two:
+
+	keymap/{keymap}_{encoding}.vim
+	keymap/{keymap}.vim
+
+Here {keymap} is the value of the 'keymap' option and {encoding} of the
+'encoding' option.  The file name with the {encoding} included is tried first.
+
+'runtimepath' is used to find these files.  To see an overview of all
+available keymap files, use this: >
+	:echo globpath(&rtp, "keymap/*.vim")
+
+In Insert and Command-line mode you can use CTRL-^ to toggle between using the
+keyboard map or not. |i_CTRL-^| |c_CTRL-^|
+This flag is remembered for Insert mode with the 'iminsert' option.  When
+leaving and entering Insert mode the previous value is used.  The same value
+is also used for commands that take a single character argument, like |f| and
+|r|.
+For Command-line mode the flag is NOT remembered.  You are expected to type an
+Ex command first, which is ASCII.
+For typing search patterns the 'imsearch' option is used.  It can be set to
+use the same value as for 'iminsert'.
+
+It is possible to give the GUI cursor another color when the language mappings
+are being used.  This is disabled by default, to avoid that the cursor becomes
+invisible when you use a non-standard background color.  Here is an example to
+use a brightly colored cursor: >
+	:highlight Cursor guifg=NONE guibg=Green
+	:highlight lCursor guifg=NONE guibg=Cyan
+<
+			*keymap-file-format* *:loadk* *:loadkeymap* *E105*
+The keymap file looks something like this: >
+
+	" Maintainer:	name <email@address>
+	" Last Changed:	2001 Jan 1
+
+	let b:keymap_name = "short"
+
+	loadkeymap
+	a	A
+	b	B	comment
+
+The lines starting with a " are comments and will be ignored.  Blank lines are
+also ignored.  The lines with the mappings may have a comment after the useful
+text.
+
+The "b:keymap_name" can be set to a short name, which will be shown in the
+status line.  The idea is that this takes less room than the value of
+'keymap', which might be long to distinguish between different languages,
+keyboards and encodings.
+
+The actual mappings are in the lines below "loadkeymap".  In the example "a"
+is mapped to "A" and "b" to "B".  Thus the first item is mapped to the second
+item.  This is done for each line, until the end of the file.
+These items are exactly the same as what can be used in a |:lnoremap| command,
+using "<buffer>" to make the mappings local to the buffer..
+You can check the result with this command: >
+	:lmap
+The two items must be separated by white space.  You cannot include white
+space inside an item, use the special names "<Tab>" and "<Space>" instead.
+The length of the two items together must not exceed 200 bytes.
+
+It's possible to have more than one character in the first column.  This works
+like a dead key.  Example: >
+	'a	á
+Since Vim doesn't know if the next character after a quote is really an "a",
+it will wait for the next character.  To be able to insert a single quote,
+also add this line: >
+	''	'
+Since the mapping is defined with |:lnoremap| the resulting quote will not be
+used for the start of another character.
+
+Although it's possible to have more than one character in the second column,
+this is unusual.  But you can use various ways to specify the character: >
+	A	a		literal character
+	A	<char-97>	decimal value
+	A	<char-0x61>	hexadecimal value
+	A	<char-0141>	octal value
+	x	<Space>		special key name
+
+The characters are assumed to be encoded for the current value of 'encoding'.
+It's possible to use ":scriptencoding" when all characters are given
+literally.  That doesn't work when using the <char-> construct, because the
+conversion is done on the keymap file, not on the resulting character.
+
+The lines after "loadkeymap" are interpreted with 'cpoptions' set to "C".
+This means that continuation lines are not used and a backslash has a special
+meaning in the mappings.  Examples: >
+
+	" a comment line
+	\"	x	maps " to x
+	\\	y	maps \ to y
+
+If you write a keymap file that will be useful for others, consider submitting
+it to the Vim maintainer for inclusion in the distribution:
+<maintainer@vim.org>
+
+
+HEBREW KEYMAP						*keymap-hebrew*
+
+This file explains what characters are available in UTF-8 and CP1255 encodings,
+and what the keymaps are to get those characters:
+
+glyph   encoding	   keymap ~
+Char   utf-8 cp1255  hebrew  hebrewp  name ~
+א    0x5d0  0xe0     t	      a     'alef
+ב    0x5d1  0xe1     c	      b     bet
+ג    0x5d2  0xe2     d	      g     gimel
+ד    0x5d3  0xe3     s	      d     dalet
+ה    0x5d4  0xe4     v	      h     he
+ו    0x5d5  0xe5     u	      v     vav
+ז    0x5d6  0xe6     z	      z     zayin
+ח    0x5d7  0xe7     j	      j     het
+ט    0x5d8  0xe8     y	      T     tet
+י    0x5d9  0xe9     h	      y     yod
+ך    0x5da  0xea     l	      K     kaf sofit
+כ    0x5db  0xeb     f	      k     kaf
+ל    0x5dc  0xec     k	      l     lamed
+ם    0x5dd  0xed     o	      M     mem sofit
+מ    0x5de  0xee     n	      m     mem
+ן    0x5df  0xef     i	      N     nun sofit
+נ    0x5e0  0xf0     b	      n     nun
+ס    0x5e1  0xf1     x	      s     samech
+ע    0x5e2  0xf2     g	      u     `ayin
+ף    0x5e3  0xf3     ;	      P     pe sofit
+פ    0x5e4  0xf4     p	      p     pe
+ץ    0x5e5  0xf5     .	      X     tsadi sofit
+צ    0x5e6  0xf6     m	      x     tsadi
+ק    0x5e7  0xf7     e	      q     qof
+ר    0x5e8  0xf8     r	      r     resh
+ש    0x5e9  0xf9     a	      w     shin
+ת    0x5ea  0xfa     ,	      t     tav
+
+Vowel marks and special punctuation:
+הְ    0x5b0  0xc0     A:      A:   sheva
+הֱ    0x5b1  0xc1     HE      HE   hataf segol
+הֲ    0x5b2  0xc2     HA      HA   hataf patah
+הֳ    0x5b3  0xc3     HO      HO   hataf qamats
+הִ    0x5b4  0xc4     I       I    hiriq
+הֵ    0x5b5  0xc5     AY      AY   tsere
+הֶ    0x5b6  0xc6     E       E    segol
+הַ    0x5b7  0xc7     AA      AA   patah
+הָ    0x5b8  0xc8     AO      AO   qamats
+הֹ    0x5b9  0xc9     O       O    holam
+הֻ    0x5bb  0xcb     U       U    qubuts
+כּ    0x5bc  0xcc     D       D    dagesh
+הֽ    0x5bd  0xcd     ]T      ]T   meteg
+ה־   0x5be  0xce     ]Q      ]Q   maqaf
+בֿ    0x5bf  0xcf     ]R      ]R   rafe
+ב׀   0x5c0  0xd0     ]p      ]p   paseq
+שׁ    0x5c1  0xd1     SR      SR   shin-dot
+שׂ    0x5c2  0xd2     SL      SL   sin-dot
+׃    0x5c3  0xd3     ]P      ]P   sof-pasuq
+װ    0x5f0  0xd4     VV      VV   double-vav
+ױ    0x5f1  0xd5     VY      VY   vav-yod
+ײ    0x5f2  0xd6     YY      YY   yod-yod
+
+The following are only available in utf-8
+
+Cantillation marks:
+glyph
+Char utf-8 hebrew name
+ב֑    0x591   C:   etnahta
+ב֒    0x592   Cs   segol
+ב֓    0x593   CS   shalshelet
+ב֔    0x594   Cz   zaqef qatan
+ב֕    0x595   CZ   zaqef gadol
+ב֖    0x596   Ct   tipeha
+ב֗    0x597   Cr   revia
+ב֘    0x598   Cq   zarqa
+ב֙    0x599   Cp   pashta
+ב֚    0x59a   C!   yetiv
+ב֛    0x59b   Cv   tevir
+ב֜    0x59c   Cg   geresh
+ב֝    0x59d   C*   geresh qadim
+ב֞    0x59e   CG   gershayim
+ב֟    0x59f   CP   qarnei-parah
+ב֪    0x5aa   Cy   yerach-ben-yomo
+ב֫    0x5ab   Co   ole
+ב֬    0x5ac   Ci   iluy
+ב֭    0x5ad   Cd   dehi
+ב֮    0x5ae   Cn   zinor
+ב֯    0x5af   CC   masora circle
+
+Combining forms:
+ﬠ    0xfb20  X`   Alternative `ayin
+ﬡ    0xfb21  X'   Alternative 'alef
+ﬢ    0xfb22  X-d  Alternative dalet
+ﬣ    0xfb23  X-h  Alternative he
+ﬤ    0xfb24  X-k  Alternative kaf
+ﬥ    0xfb25  X-l  Alternative lamed
+ﬦ    0xfb26  X-m  Alternative mem-sofit
+ﬧ    0xfb27  X-r  Alternative resh
+ﬨ    0xfb28  X-t  Alternative tav
+﬩    0xfb29  X-+  Alternative plus
+שׁ    0xfb2a  XW   shin+shin-dot
+שׂ    0xfb2b  Xw   shin+sin-dot
+שּׁ    0xfb2c  X..W  shin+shin-dot+dagesh
+שּׂ    0xfb2d  X..w  shin+sin-dot+dagesh
+אַ    0xfb2e  XA   alef+patah
+אָ    0xfb2f  XO   alef+qamats
+אּ    0xfb30  XI   alef+hiriq (mapiq)
+בּ    0xfb31  X.b  bet+dagesh
+גּ    0xfb32  X.g  gimel+dagesh
+דּ    0xfb33  X.d  dalet+dagesh
+הּ    0xfb34  X.h  he+dagesh
+וּ    0xfb35  Xu  vav+dagesh
+זּ    0xfb36  X.z  zayin+dagesh
+טּ    0xfb38  X.T  tet+dagesh
+יּ    0xfb39  X.y  yud+dagesh
+ךּ    0xfb3a  X.K  kaf sofit+dagesh
+כּ    0xfb3b  X.k  kaf+dagesh
+לּ    0xfb3c  X.l  lamed+dagesh
+מּ    0xfb3e  X.m  mem+dagesh
+נּ    0xfb40  X.n  nun+dagesh
+סּ    0xfb41  X.s  samech+dagesh
+ףּ    0xfb43  X.P  pe sofit+dagesh
+פּ    0xfb44  X.p  pe+dagesh
+צּ    0xfb46  X.x  tsadi+dagesh
+קּ    0xfb47  X.q  qof+dagesh
+רּ    0xfb48  X.r  resh+dagesh
+שּ    0xfb49  X.w  shin+dagesh
+תּ    0xfb4a  X.t  tav+dagesh
+וֹ    0xfb4b  Xo   vav+holam
+בֿ    0xfb4c  XRb  bet+rafe
+כֿ    0xfb4d  XRk  kaf+rafe
+פֿ    0xfb4e  XRp  pe+rafe
+ﭏ    0xfb4f  Xal  alef-lamed
+
+==============================================================================
+10. Using UTF-8				*mbyte-utf8* *UTF-8* *utf-8* *utf8*
+							*Unicode* *unicode*
+The Unicode character set was designed to include all characters from other
+character sets.  Therefore it is possible to write text in any language using
+Unicode (with a few rarely used languages excluded).  And it's mostly possible
+to mix these languages in one file, which is impossible with other encodings.
+
+Unicode can be encoded in several ways.  The two most popular ones are UCS-2,
+which uses 16-bit words and UTF-8, which uses one or more bytes for each
+character.  Vim can support all of these encodings, but always uses UTF-8
+internally.
+
+Vim has comprehensive UTF-8 support.  It appears to work in:
+- xterm with utf-8 support enabled
+- Athena, Motif and GTK GUI
+- MS-Windows GUI
+
+Double-width characters are supported.  This works best with 'guifontwide' or
+'guifontset'.  When using only 'guifont' the wide characters are drawn in the
+normal width and a space to fill the gap.  Note that the 'guifontset' option
+is no longer relevant in the GTK+ 2 GUI.
+
+Up to two combining characters can be used.  The combining character is drawn
+on top of the preceding character.  When editing text a composing character is
+mostly considered part of the preceding character.  For example "x" will
+delete a character and its following composing characters by default. If the
+'delcombine' option is on, then pressing 'x' will delete the combining
+characters, one at a time, then the base character.  But when inserting, you
+type the first character and the following composing characters separately,
+after which they will be joined.  The "r" command will not allow you to type a
+combining character, because it doesn't know one is coming.  Use "R" instead.
+
+Bytes which are not part of a valid UTF-8 byte sequence are handled like a
+single character and displayed as <xx>, where "xx" is the hex value of the
+byte.
+
+Overlong sequences are not handled specially and displayed like a valid
+character.  However, search patterns may not match on an overlong sequence.
+(an overlong sequence is where more bytes are used than required for the
+character.)  An exception is NUL (zero) which is displayed as "<00>".
+
+In the file and buffer the full range of Unicode characters can be used (31
+bits).  However, displaying only works for 16 bit characters, and only for the
+characters present in the selected font.
+
+Useful commands:
+- "ga" shows the decimal, hexadecimal and octal value of the character under
+  the cursor.  If there are composing characters these are shown too. (if the
+  message is truncated, use ":messages").
+- "g8" shows the bytes used in a UTF-8 character, also the composing
+  characters, as hex numbers.
+- ":set encoding=utf-8 fileencodings=" forces using UTF-8 for all files.  The
+  default is to use the current locale for 'encoding' and set 'fileencodings'
+  to automatically the encoding of a file.
+
+
+STARTING VIM
+
+If your current locale is in an utf-8 encoding, Vim will automatically start
+in utf-8 mode.
+
+If you are using another locale: >
+
+	set encoding=utf-8
+
+You might also want to select the font used for the menus.  Unfortunately this
+doesn't always work.  See the system specific remarks below, and 'langmenu'.
+
+
+USING UTF-8 IN X-Windows				*utf-8-in-xwindows*
+
+Note: This section does not apply to the GTK+ 2 GUI.
+
+You need to specify a font to be used.  For double-wide characters another
+font is required, which is exactly twice as wide.  There are three ways to do
+this:
+
+1. Set 'guifont' and let Vim find a matching 'guifontwide'
+2. Set 'guifont' and 'guifontwide'
+3. Set 'guifontset'
+
+See the documentation for each option for details.  Example: >
+
+   :set guifont=-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1
+
+You might also want to set the font used for the menus.  This only works for
+Motif.  Use the ":hi Menu font={fontname}" command for this. |:highlight|
+
+
+TYPING UTF-8						*utf-8-typing*
+
+If you are using X-Windows, you should find an input method that supports
+utf-8.
+
+If your system does not provide support for typing utf-8, you can use the
+'keymap' feature.  This allows writing a keymap file, which defines a utf-8
+character as a sequence of ASCII characters.  See |mbyte-keymap|.
+
+Another method is to set the current locale to the language you want to use
+and for which you have a XIM available.  Then set 'termencoding' to that
+language and Vim will convert the typed characters to 'encoding' for you.
+
+If everything else fails, you can type any character as four hex bytes: >
+
+	CTRL-V u 1234
+
+"1234" is interpreted as a hex number.  You must type four characters, prepend
+a zero if necessary.
+
+
+COMMAND ARGUMENTS					*utf-8-char-arg*
+
+Commands like |f|, |F|, |t| and |r| take an argument of one character.  For
+UTF-8 this argument may include one or two composing characters.  These needs
+to be produced together with the base character, Vim doesn't wait for the next
+character to be typed to find out if it is a composing character or not.
+Using 'keymap' or |:lmap| is a nice way to type these characters.
+
+The commands that search for a character in a line handle composing characters
+as follows.  When searching for a character without a composing character,
+this will find matches in the text with or without composing characters.  When
+searching for a character with a composing character, this will only find
+matches with that composing character.  It was implemented this way, because
+not everybody is able to type a composing character.
+
+
+==============================================================================
+11. Overview of options					*mbyte-options*
+
+These options are relevant for editing multi-byte files.  Check the help in
+options.txt for detailed information.
+
+'encoding'	Encoding used for the keyboard and display.  It is also the
+		default encoding for files.
+
+'fileencoding'	Encoding of a file.  When it's different from 'encoding'
+		conversion is done when reading or writing the file.
+
+'fileencodings'	List of possible encodings of a file.  When opening a file
+		these will be tried and the first one that doesn't cause an
+		error is used for 'fileencoding'.
+
+'charconvert'	Expression used to convert files from one encoding to another.
+
+'formatoptions' The 'm' flag can be included to have formatting break a line
+		at a multibyte character of 256 or higher.  Thus is useful for
+		languages where a sequence of characters can be broken
+		anywhere.
+
+'guifontset'	The list of font names used for a multi-byte encoding.  When
+		this option is not empty, it replaces 'guifont'.
+
+'keymap'	Specify the name of a keyboard mapping.
+
+==============================================================================
+
+Contributions specifically for the multi-byte features by:
+	Chi-Deok Hwang <hwang@mizi.co.kr>
+	Nam SungHyun <namsh@lge.com>
+	K.Nagano <nagano@atese.advantest.co.jp>
+	Taro Muraoka  <koron@tka.att.ne.jp>
+	Yasuhiro Matsumoto <mattn@mail.goo.ne.jp>
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt
new file mode 100644
index 0000000..b5973b0
--- /dev/null
+++ b/runtime/doc/message.txt
@@ -0,0 +1,775 @@
+*message.txt*   For Vim version 7.0aa.  Last change: 2004 Jan 17
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+This file contains an alphabetical list of messages and error messages that
+Vim produces.  You can use this if you don't understand what the message
+means.  It is not complete though.
+
+1. Old messages		|:messages|
+2. Error messages	|error-messages|
+3. Messages		|messages|
+
+==============================================================================
+1. Old messages			*:messages* *:mes* *message-history*
+
+The ":messages" command can be used to view previously given messages.  This
+is especially useful when messages have been overwritten or truncated.  This
+depends on the 'shortmess' option.
+
+The number of remembered messages is fixed at 20.
+
+If you are using translated messages, the first printed line tells who
+maintains the messages or the translations.  You can use this to contact the
+maintainer when you spot a mistake.
+
+If you want to find help on a specific (error) message, use the ID at the
+start of the message.  For example, to get help on the message: >
+
+	E72: Close error on swap file
+
+or (translated): >
+
+	E72: Errore durante chiusura swap file
+
+Use: >
+
+	:help E72
+
+If you are lazy, it also works without the shift key: >
+
+	:help e72
+
+==============================================================================
+2. Error messages					*error-messages*
+
+When an error message is displayed, but it is removed before you could read
+it, you can see it again with: >
+  :echo errmsg
+or view a list of recent messages with: >
+  :messages
+
+
+LIST OF MESSAGES
+			*E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317*
+			*E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322*
+			*E323* *E341* *E473* *E570*  >
+  Add to read buffer
+  makemap: Illegal mode
+  Cannot create BalloonEval with both message and callback
+  Hangul automata ERROR
+  block was not locked
+  Didn't get block nr {N}?
+  ml_timestamp: Didn't get block 0??
+  pointer block id wrong {N}
+  Updated too many blocks?
+  get_varp ERROR
+  u_undo: line numbers wrong
+  undo list corrupt
+  undo line missing
+  ml_get: cannot find line {N}
+  cannot find line {N}
+  line number out of range: {N} past the end
+  line count wrong in block {N}
+  Internal error
+  fatal error in cs_manage_matches
+
+This is an internal error.  If you can reproduce it, please send in a bug
+report. |bugs|
+
+>
+  ATTENTION
+  Found a swap file by the name ...
+
+See |ATTENTION|.
+
+							*E92*  >
+  Buffer {N} not found
+
+The buffer you requested does not exist.  This can also happen when you have
+wiped out a buffer which contains a mark or is referenced in another way.
+|:bwipeout|
+
+							*E95*  >
+  Buffer with this name already exists
+
+You cannot have two buffers with the same name.
+
+							*E72*  >
+  Close error on swap file
+
+The |swap-file|, that is used to keep a copy of the edited text, could not be
+closed properly.  Mostly harmless.
+
+							*E169*  >
+  Command too recursive
+
+This happens when an Ex command executes an Ex command that executes an Ex
+command, etc.  This is only allowed 200 times.  When it's more there probably
+is an endless loop.  Probably a |:execute| or |:source| command is involved.
+
+							*E254*  >
+  Cannot allocate color {name}
+
+The color name {name} is unknown.  See |gui-colors| for a list of colors that
+are available on most systems.
+
+							*E458*  >
+  Cannot allocate colormap entry for "xxxx"
+  Cannot allocate colormap entry, some colors may be incorrect
+
+This means that there are not enough colors available for Vim.  It will still
+run, but some of the colors will not appear in the specified color.  Try
+stopping other applications that use many colors, or start them after starting
+gvim.
+Netscape is known to consume a lot of colors.  You can avoid this by telling
+it to use its own colormap: >
+	netscape -install
+Or tell it to limit to a certain number of colors (64 should work well): >
+	netscape -ncols 64
+This can also be done with a line in your Xdefaults file: >
+	Netscape*installColormap: Yes
+or >
+	Netscape*maxImageColors:  64
+<
+							*E79*  >
+  Cannot expand wildcards
+
+A filename contains a strange combination of characters, which causes Vim to
+attempt expanding wildcards but this fails.  This does NOT mean that no
+matching file names could be found, but that the pattern was illegal.
+
+							*E459*  >
+  Cannot go back to previous directory
+
+While expanding a file name, Vim failed to go back to the previously used
+directory.  All file names being used may be invalid now!  You need to have
+execute permission on the current directory.
+
+							*E190* *E212*  >
+  Cannot open "{filename}" for writing
+  Can't open file for writing
+
+For some reason the file you are writing to cannot be created or overwritten.
+The reason could be that you do not have permission to write in the directory
+or the file name is not valid.
+
+							*E166*  >
+  Can't open linked file for writing
+
+You are trying to write to a file which can't be overwritten, and the file is
+a link (either a hard link or a symbolic link).  Writing might still be
+possible if the directory that contains the link or the file is writable, but
+Vim now doesn't know if you want to delete the link and write the file in its
+place, or if you want to delete the file itself and write the new file in its
+place.  If you really want to write the file under this name, you have to
+manually delete the link or the file, or change the permissions so that Vim
+can overwrite.
+
+							*E46*  >
+  Cannot set read-only variable "{name}"
+
+You are trying to assign a value to an argument of a function |a:var| or a Vim
+internal variable |v:var| which is read-only.
+
+							*E90*  >
+  Cannot unload last buffer
+
+Vim always requires one buffer to be loaded, otherwise there would be nothing
+to display in the window.
+
+							*E40*  >
+  Can't open errorfile <filename>
+
+When using the ":make" or ":grep" commands: The file used to save the error
+messages or grep output cannot be opened.  This can have several causes:
+- 'shellredir' has a wrong value.
+- The shell changes directory, causing the error file to be written in another
+  directory.  This could be fixed by changing 'makeef', but then the make
+  command is still executed in the wrong directory.
+- 'makeef' has a wrong value.
+- The 'grepprg' or 'makeprg' could not be executed.  This cannot always be
+  detected (especially on MS-Windows).  Check your $PATH.
+
+ >
+  Can't open file C:\TEMP\VIoD243.TMP
+
+On MS-Windows, this message appears when the output of an external command was
+to be read, but the command didn't run successfully.  This can be caused by
+many things.  Check the 'shell', 'shellquote', 'shellxquote', 'shellslash' and
+related options.  It might also be that the external command was not found,
+there is no different error message for that.
+
+							*E12*  >
+  Command not allowed from exrc/vimrc in current dir or tag search
+
+Some commands are not allowed for security reasons.  These commands mostly
+come from a .exrc or .vimrc file in the current directory, or from a tags
+file.  Also see 'secure'.
+
+							*E74*  >
+  Command too complex
+
+A mapping resulted in a very long command string.  Could be caused by a
+mapping that indirectly calls itself.
+
+>
+  CONVERSION ERROR
+
+When writing a file and the text "CONVERSION ERROR" appears, this means that
+some bits were lost when converting text from the internally used UTF-8 to the
+format of the file.  The file will not be marked unmodified.  If you care
+about the loss of information, set the 'fileencoding' option to another value
+that can handle the characters in the buffer and write again.  If you don't
+care, you can abandon the buffer or reset the 'modified' option.
+
+							*E302*  >
+  Could not rename swap file
+
+When the file name changes, Vim tries to rename the |swap-file| as well.
+This failed and the old swap file is now still used.  Mostly harmless.
+
+							*E43* *E44*  >
+  Damaged match string
+  Corrupted regexp program
+
+Something inside Vim went wrong and resulted in a corrupted regexp.  If you
+know how to reproduce this problem, please report it. |bugs|
+
+							*E208* *E209* *E210*  >
+  Error writing to "{filename}"
+  Error closing "{filename}"
+  Error reading "{filename}"
+
+This occurs when Vim is trying to rename a file, but a simple change of file
+name doesn't work.  Then the file will be copied, but somehow this failed.
+The result may be that both the original file and the destination file exist
+and the destination file may be incomplete.
+
+>
+  Vim: Error reading input, exiting...
+
+This occurs when Vim cannot read typed characters while input is required.
+Vim got stuck, the only thing it can do is exit.  This can happen when both
+stdin and stderr are redirected and executing a script that doesn't exit Vim.
+
+							*E47*  >
+  Error while reading errorfile
+
+Reading the error file was not possible.  This is NOT caused by an error
+message that was not recognized.
+
+							*E80*  >
+  Error while writing
+
+Writing a file was not completed successfully.  The file is probably
+incomplete.
+
+							*E13* *E189*  >
+  File exists (use ! to override)
+  "{filename}" exists (use ! to override)
+
+You are protected from accidentally overwriting a file.  When you want to
+write anyway, use the same command, but add a "!" just after the command.
+Example: >
+	:w /tmp/test
+changes to: >
+	:w! /tmp/test
+<
+							*E139*  >
+  File is loaded in another buffer
+
+You are trying to write a file under a name which is also used in another
+buffer.  This would result in two versions of the same file.
+
+							*E142*  >
+  File not written: Writing is disabled by 'write' option
+
+The 'write' option is off.  This makes all commands that try to write a file
+generate this message.  This could be caused by a |-m| commandline argument.
+You can switch the 'write' option on with ":set write".
+
+							*E25*  >
+  GUI cannot be used: Not enabled at compile time
+
+You are running a version of Vim that doesn't include the GUI code.  Therefore
+"gvim" and ":gui" don't work.
+
+							*E49*  >
+  Invalid scroll size
+
+This is caused by setting an invalid value for the 'scroll', 'scrolljump' or
+'scrolloff' options.
+
+							*E17*  >
+  "{filename}" is a directory
+
+You tried to write a file with the name of a directory.  This is not possible.
+You probably need to append a file name.
+
+							*E19*  >
+  Mark has invalid line number
+
+You are using a mark that has a line number that doesn't exist.  This can
+happen when you have a mark in another file, and some other program has
+deleted lines from it.
+
+							*E219* *E220*  >
+  Missing {.
+  Missing }.
+
+Using a {} construct in a file name, but there is a { without a matching } or
+the other way around.  It should be used like this: {foo,bar}.  This matches
+"foo" and "bar".
+
+							*E315*  >
+  ml_get: invalid lnum:
+
+This is an internal Vim error.  Please try to find out how it can be
+reproduced, and submit a bug report |bugreport.vim|.
+
+							*E173*  >
+  {number} more files to edit
+
+You are trying to exit, while the last item in the argument list has not been
+edited.  This protects you from accidentally exiting when you still have more
+files to work on.  See |argument-list|.  If you do want to exit, just do it
+again and it will work.
+
+							*E23* *E194*  >
+  No alternate file
+  No alternate file name to substitute for '#'
+
+The alternate file is not defined yet.  See |alternate-file|.
+
+							*E32*  >
+  No file name
+
+The current buffer has no name.  To write it, use ":w fname".  Or give the
+buffer a name with ":file fname".
+
+							*E141*  >
+  No file name for buffer {number}
+
+One of the buffers that was changed does not have a file name.  Therefore it
+cannot be written.  You need to give the buffer a file name: >
+	:buffer {number}
+	:file {filename}
+<
+							*E33*  >
+  No previous substitute regular expression
+
+When using the '~' character in a pattern, it is replaced with the previously
+used pattern in a ":substitute" command.  This fails when no such command has
+been used yet.  See |/~|.
+
+							*E35*  >
+  No previous regular expression
+
+When using an empty search pattern, the previous search pattern is used.  But
+that is not possible if there was no previous search.
+
+							*E24*  >
+  No such abbreviation
+
+You have used an ":unabbreviate" command with an argument which is not an
+existing abbreviation.  All variations of this command give the same message:
+":cunabbrev", ":iunabbrev", etc.  Check for trailing white space.
+
+>
+  /dev/dsp: No such file or directory
+
+Only given for GTK GUI with Gnome support.  Gnome tries to use the audio
+device and it isn't present.  You can ignore this error.
+
+							*E31*  >
+  No such mapping
+
+You have used an ":unmap" command with an argument which is not an existing
+mapping.  All variations of this command give the same message: ":cunmap",
+":unmap!", etc.  Check for trailing white space.
+
+							*E37* *E89*  >
+  No write since last change (use ! to override)
+  No write since last change for buffer {N} (use ! to override)
+
+You are trying to |abandon| a file that has changes.  Vim protects you from
+losing your work.  You can either write the changed file with ":w", or, if you
+are sure, |abandon| it anyway, and lose all the changes.  This can be done by
+adding a '!' character just after the command you used.  Example: >
+	:e other_file
+changes to: >
+	:e! other_file
+<
+							*E162*  >
+  No write since last change for buffer "{name}"
+
+This appears when you try to exit Vim while some buffers are changed.  You
+will either have to write the changed buffer (with |:w|), or use a command to
+abandon the buffer forcefully, e.g., with ":qa!".  Careful, make sure you
+don't throw away changes you really want to keep.  You might have forgotten
+about a buffer, especially when 'hidden' is set.
+
+							*E38*  >
+  Null argument
+
+Something inside Vim went wrong and resulted in a NULL pointer.  If you know
+how to reproduce this problem, please report it. |bugs|
+
+							*E172*  >
+  Only one file name allowed
+
+The ":edit" command only accepts one file name.  When you want to specify
+several files for editing use ":next" |:next|.
+
+						*E41* *E82* *E83* *E342*  >
+  Out of memory!
+  Out of memory!  (allocating {number} bytes)
+  Cannot allocate any buffer, exiting...
+  Cannot allocate buffer, using other one...
+
+Oh, oh.  You must have been doing something complicated, or some other program
+is consuming your memory.  Be careful!  Vim is not completely prepared for an
+out-of-memory situation.  First make sure that any changes are saved.  Then
+try to solve the memory shortage.  To stay on the safe side, exit Vim and
+start again.  Also see |msdos-limitations|.
+
+							*E339*  >
+  Pattern too long
+
+This only happens on systems with 16 bit ints: The compiled regexp pattern is
+longer than about 65000 characters.  Try using a shorter pattern.
+
+							*E45*  >
+  'readonly' option is set (use ! to override)
+
+You are trying to write a file that was marked as read-only.  To write the
+file anyway, either reset the 'readonly' option, or add a '!' character just
+after the command you used.  Example: >
+	:w
+changes to: >
+	:w!
+<
+							*E294* *E295* *E301*  >
+  Read error in swap file
+  Seek error in swap file read
+  Oops, lost the swap file!!!
+
+Vim tried to read text from the |swap-file|, but something went wrong.  The
+text in the related buffer may now be corrupted!  Check carefully before you
+write a buffer.  You may want to write it in another file and check for
+differences.
+
+							*E192*  >
+  Recursive use of :normal too deep
+
+You are using a ":normal" command, whose argument again uses a ":normal"
+command in a recursive way.  This is restricted to 'maxmapdepth' levels.  This
+example illustrates how to get this message: >
+	:map gq :normal gq<CR>
+If you type "gq", it will execute this mapping, which will call "gq" again.
+
+							*E22*  >
+  Scripts nested too deep
+
+Scripts can be read with the "-s" command-line argument and with the ":source"
+command.  The script can then again read another script.  This can continue
+for about 14 levels.  When more nesting is done, Vim assumes that there is a
+recursive loop somewhere and stops with this error message.
+
+							*E319*  >
+  Sorry, the command is not available in this version
+
+You have used a command that is not present in the version of Vim you are
+using.  When compiling Vim, many different features can be enabled or
+disabled.  This depends on how big Vim has chosen to be and the operating
+system.  See |+feature-list| for when which feature is available.  The
+|:version| command shows which feature Vim was compiled with.
+
+							*E300*  >
+  Swap file already exists (symlink attack?)
+
+This message appears when Vim is trying to open a swap file and finds it
+already exists or finds a symbolic link in its place.  This shouldn't happen,
+because Vim already checked that the file doesn't exist.  Either someone else
+opened the same file at exactly the same moment (very unlikely) or someone is
+attempting a symlink attack (could happen when editing a file in /tmp or when
+'directory' starts with "/tmp", which is a bad choice).
+
+							*E432*  >
+  Tags file not sorted: {file name}
+
+Vim (and Vi) expect tags files to be sorted in ASCII order.  Binary searching
+can then be used, which is a lot faster than a linear search.  If your tags
+files are not properly sorted, reset the |'tagbsearch'| option.
+This message is only given when Vim detects a problem when searching for a
+tag.  Sometimes this message is not given, even thought the tags file is not
+properly sorted.
+
+							*E460*  >
+  The resource fork would be lost (add ! to override)
+
+On the Macintosh (classic), when writing a file, Vim attempts to preserve all
+info about a file, including its resource fork.  If this is not possible you
+get this error message.  Append "!" to the command name to write anyway (and
+lose the info).
+
+							*E424*  >
+  Too many different highlighting attributes in use
+
+Vim can only handle about 223 different kinds of highlighting.  If you run
+into this limit, you have used too many |:highlight| commands with different
+arguments.  A ":highlight link" is not counted.
+
+							*E77*  >
+  Too many file names
+
+When expanding file names, more than one match was found.  Only one match is
+allowed for the command that was used.
+
+							*E303*  >
+  Unable to open swap file for "{filename}", recovery impossible
+
+Vim was not able to create a swap file.  You can still edit the file, but if
+Vim unexpected exits the changes will be lost.  And Vim may consume a lot of
+memory when editing a big file.  You may want to change the 'directory' option
+to avoid this error.  See |swap-file|.
+
+							*E140*  >
+  Use ! to write partial buffer
+
+When using a range to write part of a buffer, it is unusual to overwrite the
+original file.  It is probably a mistake (e.g., when Visual mode was active
+when using ":w"), therefore Vim requires using a !  after the command, e.g.:
+":3,10w!".
+>
+
+  Warning: Cannot convert string "<Key>Escape,_Key_Cancel" to type
+  VirtualBinding
+
+Messages like this appear when starting up.  This is not a Vim problem, your
+X11 configuration is wrong.  You can find a hint on how to solve this here:
+http://groups.yahoo.com/group/solarisonintel/message/12179.
+
+							*W10*  >
+  Warning: Changing a readonly file
+
+The file is read-only and you are making a change to it anyway.  You can use
+the |FileChangedRO| autocommand event to avoid this message (the autocommand
+must reset the 'readonly' option).  See 'modifiable' to completely disallow
+making changes to a file.
+
+							*W13*  >
+  Warning: File "{filename}" has been created after editing started
+
+You are editing a file in Vim when it didn't exist, but it does exist now.
+You will have to decide if you want to keep the version in Vim or the newly
+created file.  This message is not given when 'buftype' is not empty.
+
+							*W11*  >
+  Warning: File "{filename}" has changed since editing started
+
+The file which you have started editing has got another timestamp and the
+contents changed (more precisely: When reading the file again with the current
+option settings and autocommands you would end up with different text).  This
+probably means that some other program changed the file.  You will have to
+find out what happened, and decide which version of the file you want to keep.
+Set the 'autoread' option if you want to do this automatically.
+This message is not given when 'buftype' is not empty.
+
+There is one situation where you get this message even though there is nothing
+wrong: If you save a file in Windows on the day the daylight saving time
+starts.  It can be fixed in one of these ways:
+- Add this line in your autoexec.bat: >
+	   SET TZ=-1
+< Adjust the "-1" for your time zone.
+- Disable "automatically adjust clock for daylight saving changes".
+- Just write the file again the next day.  Or set your clock to the next day,
+  write the file twice and set the clock back.
+
+							*W12*  >
+  Warning: File "{filename}" has changed and the buffer was changed in Vim as well
+
+Like the above, and the buffer for the file was changed in this Vim as well.
+You will have to decide if you want to keep the version in this Vim or the one
+on disk.  This message is not given when 'buftype' is not empty.
+
+							*W16*  >
+  Warning: Mode of file "{filename}" has changed since editing started
+
+When the timestamp for a buffer was changed and the contents are still the
+same but the mode (permissions) have changed.  This usually occurs when
+checking out a file from a version control system, which causes the read-only
+bit to be reset.  It should be safe to reload the file.  Set 'autoread' to
+automatically reload the file.
+
+							*E211*  >
+  Warning: File "{filename}" no longer available
+
+The file which you have started editing has disappeared, or is no longer
+accessible.  Make sure you write the buffer somewhere to avoid losing
+changes.  This message is not given when 'buftype' is not empty.
+
+							*W14*  >
+  Warning: List of file names overflow
+
+You must be using an awful lot of buffers.  It's now possible that two buffers
+have the same number, which causes various problems.  You might want to exit
+Vim and restart it.
+
+							*E296* *E297*  >
+  Seek error in swap file write
+  Write error in swap file
+
+This mostly happens when the disk is full.  Vim could not write text into the
+|swap-file|.  It's not directly harmful, but when Vim unexpectedly exits some
+text may be lost without recovery being possible.  Vim might run out of memory
+when this problem persists.
+
+						*connection-refused*  >
+  Xlib: connection to "<machine-name:0.0" refused by server
+
+This happens when Vim tries to connect to the X server, but the X server does
+not allow a connection.  The connection to the X server is needed to be able
+to restore the title and for the xterm clipboard support.  Unfortunately this
+error message cannot be avoided, except by disabling the |+xterm_clipboard|
+and |+X11| features.
+
+							*E10*  >
+  \\ should be followed by /, ? or &
+
+A command line started with a backslash or the range of a command contained a
+backslash in a wrong place.  This is often caused by command-line continuation
+being disabled.  Remove the 'C' flag from the 'cpoptions' option to enable it.
+
+							*E471*  >
+  Argument required
+
+This happens when an Ex command with mandatory argument(s) was executed, but
+no argument has been specified.
+
+							*E474* *E475*  >
+  Invalid argument
+
+An Ex command has been executed, but an invalid argument has been specified.
+
+							*E488*  >
+  Trailing characters
+
+An argument has been added to an Ex command that does not permit one.
+
+							*E477* *E478*  >
+  No ! allowed
+  Don't panic!
+
+You have added a "!" after an Ex command that doesn't permit one.
+
+							*E481*  >
+  No range allowed
+
+A range was specified for an Ex command that doesn't permit one.  See
+|cmdline-ranges|.
+
+							*E482* *E483*  >
+  Can't create file {filename}
+  Can't get temp file name
+
+Vim cannot create a temporary file.
+
+							*E484* *E485*  >
+  Can't open file %s"
+  Can't read file %s"
+
+Vim cannot read a temporary file.
+
+							*E464*  >
+  Ambiguous use of user-defined command
+
+There are two user-defined commands with a common name prefix, and you used
+Command-line completion to execute one of them. |user-cmd-ambiguous|
+Example: >
+	:command MyCommand1 echo "one"
+	:command MyCommand2 echo "two"
+	:MyCommand
+<
+							*E492*  >
+  Not an editor command
+
+You tried to execute a command that is neither an Ex command nor
+a user-defined command.
+
+==============================================================================
+3. Messages						*messages*
+
+This is an (incomplete) overview of various messages that Vim gives:
+
+		*hit-enter* *press-enter* *hit-return* *press-return*  >
+
+  Hit ENTER or type command to continue
+
+This message is given when there is something on the screen for you to read,
+and the screen is about to be redrawn:
+- After executing an external command (e.g., ":!ls" and "=").
+- Something is displayed on the status line that is longer than the width of
+  the window, or runs into the 'showcmd' or 'ruler' output.
+
+-> Hit <Enter> or <Space> to redraw the screen and continue, without that key
+   being used otherwise.
+-> Hit ":" or any other Normal mode command character to start that command.
+-> Hit <C-Y> to copy (yank) a modeless selection to the clipboard register.
+-> Use a menu.  The characters defined for Cmdline-mode are used.
+-> When 'mouse' contains the 'r' flag, clicking the left mouse button works
+   like pressing <Space>.  This makes it impossible to select text though.
+-> For the GUI clicking the left mouse button in the last line works like
+   pressing <Space>.
+{Vi: only ":" commands are interpreted}
+
+To reduce the number of hit-enter prompts:
+- Set 'cmdheight' to 2 or higher.
+- Add flags to 'shortmess'.
+- Reset 'showcmd' and/or 'ruler'.
+
+Also see 'mouse'.  The hit-enter message is highlighted with the |hl-Question|
+group.
+
+
+						*more-prompt* *pager*  >
+  -- More --
+  -- More -- (RET: line, SPACE: page, d: half page, q: quit)
+  -- More -- (RET/BS: line, SPACE/b: page, d/u: half page, q: quit)
+
+This message is given when the screen is filled with messages.  It is only
+given when the 'more' option is on.  It is highlighted with the |hl-MoreMsg|
+group.
+
+Type					effect ~
+     <CR> or <NL> or j or <Down>	one more line
+     <BS> or k or <Up>			one line back (*)
+     <Space> or <PageDown>		next page
+     b or <PageUp>			previous page (*)
+     d					down half a page
+     u					up half a page (*)
+     q, <Esc> or CTRL-C			stop the listing
+     :					stop the listing and enter a
+					     command-line
+    <C-Y>				yank (copy) a modeless selection to
+					the clipboard ("* and "+ registers)
+    {menu-entry}			what the menu is defined to in
+					Cmdline-mode.
+    <LeftMouse> (**)			next page
+
+Any other key causes the meaning of the keys to be displayed.
+
+(*) backwards scrolling is only supported for these commands: >
+    :clist
+(**) Clicking the left mouse button only works:
+     - For the GUI: in the last line of the screen.
+     - When 'r' is included in 'mouse' (but then selecting text won't work).
+
+
+Note: The typed key is directly obtained from the terminal, it is not mapped
+and typeahead is ignored.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/mlang.txt b/runtime/doc/mlang.txt
new file mode 100644
index 0000000..3045b46
--- /dev/null
+++ b/runtime/doc/mlang.txt
@@ -0,0 +1,205 @@
+*mlang.txt*     For Vim version 7.0aa.  Last change: 2004 Feb 24
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Multi-language features				*multilang* *multi-lang*
+
+This is about using messages and menus in various languages.  For editing
+multi-byte text see |multibyte|.
+
+The basics are explained in the user manual: |usr_45.txt|.
+
+1. Messages			|multilang-messages|
+2. Menus			|multilang-menus|
+3. Scripts			|multilang-scripts|
+
+Also see |help-translated| for multi-language help.
+
+{Vi does not have any of these features}
+{not available when compiled without the |+multi_lang| feature}
+
+==============================================================================
+1. Messages						*multilang-messages*
+
+Vim picks up the locale from the environment.  In most cases this means Vim
+will use the language that you prefer, unless it's not available.
+
+To see a list of supported locale names on your system, look in one of these
+directories (for Unix):
+	/usr/lib/locale ~
+	/usr/share/locale ~
+Unfortunately, upper/lowercase differences matter.  Also watch out for the
+use of "-" and "_".
+
+					    *:lan* *:lang* *:language* *E197*
+:lan[guage]
+:lan[guage] mes[sages]
+:lan[guage] cty[pe]
+:lan[guage] tim[e]
+			Print the current language (aka locale).
+			With the "messages" argument the language used for
+			messages is printed.  Technical: LC_MESSAGES.
+			With the "ctype" argument the language used for
+			character encoding is printed.  Technical: LC_CTYPE.
+			With the "time" argument the language used for
+			strftime() is printed.  Technical: LC_TIME.
+			Without argument all parts of the locale are printed
+			(this is system dependent).
+			The current language can also be obtained with the
+			|v:lang|, |v:ctype| and |v:lc_time| variables.
+
+:lan[guage] {name}
+:lan[guage] mes[sages] {name}
+:lan[guage] cty[pe] {name}
+:lan[guage] tim[e] {name}
+			Set the current language (aka locale) to {name}.
+			The locale {name} must be a valid locale on your
+			system.  Some systems accept aliases like "en" or
+			"en_US", but some only accept the full specification
+			like "en_US.ISO_8859-1".
+			With the "messages" argument the language used for
+			messages is set.  This can be different when you want,
+			for example, English messages while editing Japanese
+			text.  This sets $LC_MESSAGES.
+			With the "ctype" argument the language used for
+			character encoding is set.  This affects the libraries
+			that Vim was linked with.  It's unusual to set this to
+			a different value from 'encoding'.  This sets
+			$LC_CTYPE.
+			With the "time" argument the language used for time
+			and date messages is set.  This affects strftime().
+			This sets $LC_TIME.
+			Without an argument both are set, and additionally
+			$LANG is set.
+			This will make a difference for items that depend on
+			the language (some messages, time and date format).
+			Not fully supported on all systems
+			If this fails there will be an error message.  If it
+			succeeds there is no message.  Example: >
+				:language
+				Current language: C
+				:language de_DE.ISO_8859-1
+				:language mes
+				Current messages language: de_DE.ISO_8859-1
+				:lang mes en
+<
+
+MS-WINDOWS MESSAGE TRANSLATIONS				*win32-gettext*
+
+If you used the self-installing .exe file, message translations should work
+already.  Otherwise get the libintl.dll file if you don't have it yet:
+
+	http://sourceforge.net/projects/gettext
+
+This also contains tools xgettext, msgformat and others.
+
+libintl.dll should be placed in same directory with (g)vim.exe, or some
+place where PATH environment value describe.  Message files (vim.mo)
+have to be placed in "$VIMRUNTIME/lang/xx/LC_MESSAGES", where "xx" is the
+abbreviation of the language (mostly two letters).
+
+If you write your own translations you need to generate the .po file and
+convert it to a .mo file.  You need to get the source distribution and read
+the file "src/po/README.txt".
+
+To overrule the automatic choice of the language, set the $LANG variable to
+the language of your choice.  use "en" to disable translations. >
+
+  :let $LANG = 'ja'
+
+(text for Windows by Muraoka Taro)
+
+==============================================================================
+2. Menus						*multilang-menus*
+
+See |45.2| for the basics.
+
+Note that if changes have been made to the menus after the translation was
+done, some of the menus may be shown in English.  Please try contacting the
+maintainer of the translation and ask him to update it.  You can find the
+name and e-mail address of the translator in
+"$VIMRUNTIME/lang/menu_<lang>.vim".
+
+To set the font (or fontset) to use for the menus, use the |:highlight|
+command.  Example: >
+
+	:highlight Menu font=k12,r12
+
+
+ALIAS LOCALE NAMES
+
+Unfortunately, the locale names are different on various systems, even though
+they are for the same language and encoding.  If you do not get the menu
+translations you expected, check the output of this command: >
+
+	echo v:lang
+
+Now check the "$VIMRUNTIME/lang" directory for menu translation files that use
+a similar language.  A difference in a "-" being a "_" already causes a file
+not to be found!  Another common difference to watch out for is "iso8859-1"
+versus "iso_8859-1".  Fortunately Vim makes all names lowercase, thus you
+don't have to worry about case differences.  Spaces are changed to
+underscores, to avoid having to escape them.
+
+If you find a menu translation file for your language with a different name,
+create a file in your own runtime directory to load that one.  The name of
+that file could be: >
+
+	~/.vim/lang/menu_<v:lang>.vim
+
+Check the 'runtimepath' option for directories which are searched.  In that
+file put a command to load the menu file with the other name: >
+
+	runtime lang/menu_<other_lang>.vim
+
+
+TRANSLATING MENUS
+
+If you want to do your own translations, you can use the |:menutrans| command,
+explained below.  It is recommended to put the translations for one language
+in a Vim script.  For a language that has no translation yet, please consider
+becoming the maintainer and make your translations available to all Vim users.
+Send an e-mail to the Vim maintainer <maintainer@vim.org>.
+
+					*:menut* *:menutrans* *:menutranslate*
+:menut[ranslate] clear
+			Clear all menu translations.
+
+:menut[ranslate] {english} {mylang}
+			Translate menu name {english} to {mylang}.  All
+			special characters like "&" and "<Tab>" need to be
+			included.  Spaces and dots need to be escaped with a
+			backslash, just like in other |:menu| commands.
+
+See the $VIMRUNTIME/lang directory for examples.
+
+To try out your translations you first have to remove all menus.  This is how
+you can do it without restarting Vim: >
+	:source $VIMRUNTIME/delmenu.vim
+	:source <your-new-menu-file>
+	:source $VIMRUNTIME/menu.vim
+
+Each part of a menu path is translated separately.  The result is that when
+"Help" is translated to "Hilfe" and "Overview" to "Überblick" then
+"Help.Overview" will be translated to "Hilfe.Überblick".
+
+==============================================================================
+3. Scripts						*multilang-scripts*
+
+In Vim scripts you can use the |v:lang| variable to get the current language
+(locale).  The default value is "C" or comes from the $LANG environment
+variable.
+
+The following example shows how this variable is used in a simple way, to make
+a message adapt to language preferences of the user, >
+
+	:if v:lang =~ "de_DE"
+	:  echo "Guten Morgen"
+	:else
+	:  echo "Good morning"
+	:endif
+<
+
+ vim:tw=78:sw=4:ts=8:ft=help:norl:
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
new file mode 100644
index 0000000..b22413a
--- /dev/null
+++ b/runtime/doc/motion.txt
@@ -0,0 +1,1191 @@
+*motion.txt*    For Vim version 7.0aa.  Last change: 2004 May 13
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Cursor motions					*cursor-motions* *navigation*
+
+These commands move the cursor position.  If the new position is off of the
+screen, the screen is scrolled to show the cursor (see also 'scrolljump' and
+'scrolloff' options).
+
+1. Motions and operators	|operator|
+2. Left-right motions		|left-right-motions|
+3. Up-down motions		|up-down-motions|
+4. Word motions			|word-motions|
+5. Text object motions		|object-motions|
+6. Text object selection	|object-select|
+7. Marks			|mark-motions|
+8. Jumps			|jump-motions|
+9. Various motions		|various-motions|
+
+General remarks:
+
+If you want to know where you are in the file use the "CTRL-G" command
+|CTRL-G| or the "g CTRL-G" command |g_CTRL-G|.  If you set the 'ruler' option,
+the cursor position is continuously shown in the status line (which slows down
+Vim a little).
+
+Experienced users prefer the hjkl keys because they are always right under
+their fingers.  Beginners often prefer the arrow keys, because they do not
+know what the hjkl keys do.  The mnemonic value of hjkl is clear from looking
+at the keyboard.  Think of j as an arrow pointing downwards.
+
+The 'virtualedit' option can be set to make it possible to move the cursor to
+positions where there is no character or halfway a character.
+
+==============================================================================
+1. Motions and operators				*operator*
+
+The motion commands can be used after an operator command, to have the command
+operate on the text that was moved over.  That is the text between the cursor
+position before and after the motion.  Operators are generally used to delete
+or change text.  The following operators are available:
+
+	|c|	c	change
+	|d|	d	delete
+	|y|	y	yank into register (does not change the text)
+	|~|	~	swap case (only if 'tildeop' is set)
+	|g~|	g~	swap case
+	|gu|	gu	make lowercase
+	|gU|	gU	make uppercase
+	|!|	!	filter through an external program
+	|=|	=	filter through 'equalprg' or C-indenting if empty
+	|gq|	gq	text formatting
+	|g?|	g?	ROT13 encoding
+	|>|	>	shift right
+	|<|	<	shift left
+	|zf|	zf	define a fold
+
+If the motion includes a count and the operator also had a count before it,
+the two counts are multiplied.  For example: "2d3w" deletes six words.
+
+After applying the operator the cursor is mostly left at the start of the text
+that was operated upon.  For example, "yfe" doesn't move the cursor, but "yFe"
+moves the cursor leftwards to the "e" where the yank started.
+
+						*linewise* *characterwise*
+The operator either affects whole lines, or the characters between the start
+and end position.  Generally, motions that move between lines affect lines
+(are linewise), and motions that move within a line affect characters (are
+characterwise).  However, there are some exceptions.
+
+						*exclusive* *inclusive*
+A character motion is either inclusive or exclusive. When inclusive, the start
+and end position of the motion are included in the operation.  When exclusive,
+the last character towards the end of the buffer is not included.  Linewise
+motions always include the start and end position.
+
+Which motions are linewise, inclusive or exclusive is mentioned below.  There
+are however, two general exceptions:
+1. If the motion is exclusive and the end of the motion is in column 1, the
+   end of the motion is moved to the end of the previous line and the motion
+   becomes inclusive.  Example: "}" moves to the first line after a paragraph,
+   but "d}" will not include that line.
+2. If the motion is exclusive, the end of the motion is in column 1 and the
+   start of the motion was at or before the first non-blank in the line, the
+   motion becomes linewise.  Example: If a paragraph begins with some blanks
+   and you do "d}" while standing on the first non-blank, all the lines of
+   the paragraph are deleted, including the blanks.  If you do a put now, the
+   deleted lines will be inserted below the cursor position.
+
+Note that when the operator is pending (the operator command is typed, but the
+motion isn't yet), a special set of mappings can be used.  See |:omap|.
+
+Instead of first giving the operator and then a motion you can use Visual
+mode: mark the start of the text with "v", move the cursor to the end of the
+text that is to be affected and then hit the operator.  The text between the
+start and the cursor position is highlighted, so you can see what text will
+be operated upon.  This allows much more freedom, but requires more key
+strokes and has limited redo functionality.  See the chapter on Visual mode
+|Visual-mode|.
+
+You can use a ":" command for a motion.  For example "d:call FindEnd()".
+But this can't be redone with "." if the command is more than one line.
+This can be repeated: >
+	d:call search("f")<CR>
+This cannot be repeated: >
+	d:if 1<CR>
+	   call search("f")<CR>
+	endif<CR>
+
+
+FORCING A MOTION TO BE LINEWISE, CHARACTERWISE OR BLOCKWISE
+
+When a motion is not of the type you would like to use, you can force another
+type by using "v", "V" or CTRL-V just after the operator.
+Example: >
+	dj
+deletes two lines >
+	dvj
+deletes from the cursor position until the character below the cursor >
+	d<C-V>j
+deletes the character under the cursor and the character below the cursor. >
+
+Be careful with forcing a linewise movement to be used characterwise or
+blockwise, the column may not always be defined.
+
+							*o_v*
+v		When used after an operator, before the motion command: Force
+		the operator to work characterwise, also when the motion is
+		linewise.  If the motion was linewise, it will become
+		|exclusive|.
+		If the motion already was characterwise, toggle
+		inclusive/exclusive.  This can be used to make an exclusive
+		motion inclusive and an inclusive motion exclusive.
+
+							*o_V*
+V		When used after an operator, before the motion command: Force
+		the operator to work linewise, also when the motion is
+		characterwise.
+
+							*o_CTRL-V*
+CTRL-V		When used after an operator, before the motion command: Force
+		the operator to work blockwise.  This works like Visual block
+		mode selection, with the corners defined by the cursor
+		position before and after the motion.
+
+==============================================================================
+2. Left-right motions					*left-right-motions*
+
+h		or					*h*
+<Left>		or					*<Left>*
+CTRL-H		or					*CTRL-H* *<BS>*
+<BS>			[count] characters to the left.  |exclusive| motion.
+			Note: If you prefer <BS> to delete a character, use
+			the mapping:
+				:map CTRL-V<BS>		X
+			(to enter "CTRL-V<BS>" type the CTRL-V key, followed
+			by the <BS> key)
+			See |:fixdel| if the <BS> key does not do what you
+			want.
+
+l		or					*l*
+<Right>		or					*<Right>* *<Space>*
+<Space>			[count] characters to the right.  |exclusive| motion.
+
+							*0*
+0			To the first character of the line.  |exclusive|
+			motion.  When moving up or down, stay in same screen
+			column (if possible).
+
+							*<Home>* *<kHome>*
+<Home>			To the first character of the line.  |exclusive|
+			motion.  When moving up or down, stay in same text
+			column (if possible).  Works like "1|", which differs
+			from "0" when the line starts with a <Tab>.  {not in
+			Vi}
+
+							*^*
+^			To the first non-blank character of the line.
+			|exclusive| motion.
+
+							*$* *<End>* *<kEnd>*
+$  or <End>		To the end of the line.  When a count is given also go
+			[count - 1] lines downward |inclusive|.
+			In Visual mode the cursor goes to just after the last
+			character in the line.
+			When 'virtualedit' is active, "$" may move the cursor
+			back from past the end of the line to the last
+			character in the line.
+
+							*g_*
+g_			To the last non-blank character of the line and
+			[count - 1] lines downward |inclusive|. {not in Vi}
+
+							*g0* *g<Home>*
+g0 or g<Home>		When lines wrap ('wrap' on): To the first character of
+			the screen line.  |exclusive| motion.  Differs from
+			"0" when a line is wider than the screen.
+			When lines don't wrap ('wrap' off): To the leftmost
+			character of the current line that is on the screen.
+			Differs from "0" when the first character of the line
+			is not on the screen.  {not in Vi}
+
+							*g^*
+g^			When lines wrap ('wrap' on): To the first non-blank
+			character of the screen line.  |exclusive| motion.
+			Differs from "^" when a line is wider than the screen.
+			When lines don't wrap ('wrap' off): To the leftmost
+			non-blank character of the current line that is on the
+			screen.  Differs from "^" when the first non-blank
+			character of the line is not on the screen.  {not in
+			Vi}
+
+							*gm*
+gm			Like "g0", but half a screenwidth to the right (or as
+			much as possible). {not in Vi}
+
+							*g$* *g<End>*
+g$ or g<End>		When lines wrap ('wrap' on): To the last character of
+			the screen line and [count - 1] screen lines downward
+			|inclusive|.  Differs from "$" when a line is wider
+			than the screen.
+			When lines don't wrap ('wrap' off): To the rightmost
+			character of the current line that is visible on the
+			screen.  Differs from "$" when the last character of
+			the line is not on the screen or when a count is used.
+			Additionally, vertical movements keep the column,
+			instead of going to the end of the line.
+			{not in Vi}
+
+							*bar*
+|			To screen column [count] in the current line.
+			|exclusive| motion.
+
+							*f*
+f{char}			To [count]'th occurrence of {char} to the right.  The
+			cursor is placed on {char} |inclusive|.
+			{char} can be entered as a digraph |digraph-arg|.
+			When 'encoding' is set to Unicode, composing
+			characters may be used, see |utf-8-char-arg|.
+			|:lmap| mappings apply to {char}.  The CTRL-^ command
+			in Insert mode can be used to switch this on/off
+			|i_CTRL-^|.
+
+							*F*
+F{char}			To the [count]'th occurrence of {char} to the left.
+			The cursor is placed on {char} |inclusive|.
+			{char} can be entered like with the |f| command.
+
+							*t*
+t{char}			Till before [count]'th occurrence of {char} to the
+			right.  The cursor is placed on the character left of
+			{char} |inclusive|.
+			{char} can be entered like with the |f| command.
+
+							*T*
+T{char}			Till after [count]'th occurrence of {char} to the
+			left.  The cursor is placed on the character right of
+			{char} |inclusive|.
+			{char} can be entered like with the |f| command.
+
+							*;*
+;			Repeat latest f, t, F or T [count] times.
+
+							*,*
+,			Repeat latest f, t, F or T in opposite direction
+			[count] times.
+
+These commands move the cursor to the specified column in the current line.
+They stop at the first column and at the end of the line, except "$", which
+may move to one of the next lines.  See 'whichwrap' option to make some of the
+commands move across line boundaries.
+
+==============================================================================
+3. Up-down motions					*up-down-motions*
+
+k		or					*k*
+<Up>		or					*<Up>* *CTRL-P*
+CTRL-P			[count] lines upward |linewise|.
+
+j		or					*j*
+<Down>		or					*<Down>*
+CTRL-J		or					*CTRL-J*
+<NL>		or					*<NL>* *CTRL-N*
+CTRL-N			[count] lines downward |linewise|.
+
+gk		or					*gk* *g<Up>*
+g<Up>			[count] display lines upward.  |exclusive| motion.
+			Differs from 'k' when lines wrap, and when used with
+			an operator, because it's not linewise.  {not in Vi}
+
+gj		or					*gj* *g<Down>*
+g<Down>			[count] display lines downward.  |exclusive| motion.
+			Differs from 'j' when lines wrap, and when used with
+			an operator, because it's not linewise.  {not in Vi}
+
+							*-*
+-  <minus>		[count] lines upward, on the first non-blank
+			character |linewise|.
+
++		or					*+*
+CTRL-M		or					*CTRL-M* *<CR>*
+<CR>			[count] lines downward, on the first non-blank
+			character |linewise|.
+
+							*_*
+_  <underscore>		[count] - 1 lines downward, on the first non-blank
+			character |linewise|.
+
+							*G*
+G			Goto line [count], default last line, on the first
+			non-blank character |linewise|.  If 'startofline' not
+			set, keep the same column.
+
+							*<C-End>*
+<C-End>			Goto line [count], default last line, on the last
+			character |inclusive|. {not in Vi}
+
+<C-Home>	or					*gg* *<C-Home>*
+gg			Goto line [count], default first line, on the first
+			non-blank character |linewise|.  If 'startofline' not
+			set, keep the same column.
+
+:[range]		Set the cursor on the specified line number.  If
+			there are several numbers, the last one is used.
+
+							*N%*
+{count}%		Go to {count} percentage in the file, on the first
+			non-blank in the line |linewise|.  To compute the new
+			line number this formula is used:
+			    ({count} * number-of-lines + 99) / 100
+			See also 'startofline' option.  {not in Vi}
+
+:[range]go[to] [count]					*:go* *:goto* *go*
+[count]go		Go to {count} byte in the buffer.  Default [count] is
+			one, start of the file.  When giving [range], the
+			last number in it used as the byte count.  End-of-line
+			characters are counted depending on the current
+			'fileformat' setting.
+			{not in Vi}
+			{not available when compiled without the
+			|+byte_offset| feature}
+
+These commands move to the specified line.  They stop when reaching the first
+or the last line.  The first two commands put the cursor in the same column
+(if possible) as it was after the last command that changed the column,
+except after the "$" command, then the cursor will be put on the last
+character of the line.
+
+==============================================================================
+4. Word motions						*word-motions*
+
+<S-Right>	or					*<S-Right>* *w*
+w			[count] words forward.  |exclusive| motion.
+
+<C-Right>	or					*<C-Right>* *W*
+W			[count] WORDS forward.  |exclusive| motion.
+
+							*e*
+e			Forward to the end of word [count] |inclusive|.
+
+							*E*
+E			Forward to the end of WORD [count] |inclusive|.
+
+<S-Left>	or					*<S-Left>* *b*
+b			[count] words backward.  |exclusive| motion.
+
+<C-Left>	or					*<C-Left>* *B*
+B			[count] WORDS backward.  |exclusive| motion.
+
+							*ge*
+ge			Backward to the end of word [count] |inclusive|.
+
+							*gE*
+gE			Backward to the end of WORD [count] |inclusive|.
+
+These commands move over words or WORDS.
+							*word*
+A word consists of a sequence of letters, digits and underscores, or a
+sequence of other non-blank characters, separated with white space (spaces,
+tabs, <EOL>).  This can be changed with the 'iskeyword' option.
+							*WORD*
+A WORD consists of a sequence of non-blank characters, separated with white
+space.  An empty line is also considered to be a word and a WORD.
+
+A sequence of folded lines is counted for one word of a single character.
+"w" and "W", "e" and "E" move to the start/end of the first word or WORD after
+a range of folded lines.  "b" and "B" move to the start of the first word or
+WORD before the fold.
+
+Special case: "cw" and "cW" are treated like "ce" and "cE" if the cursor is
+on a non-blank.  This is because "cw" is interpreted as change-word, and a
+word does not include the following white space.  {Vi: "cw" when on a blank
+followed by other blanks changes only the first blank; this is probably a
+bug, because "dw" deletes all the blanks}
+
+Another special case: When using the "w" motion in combination with an
+operator and the last word moved over is at the end of a line, the end of
+that word becomes the end of the operated text, not the first word in the
+next line.
+
+The original Vi implementation of "e" is buggy.  For example, the "e" command
+will stop on the first character of a line if the previous line was empty.
+But when you use "2e" this does not happen.  In Vim "ee" and "2e" are the
+same, which is more logical.  However, this causes a small incompatibility
+between Vi and Vim.
+
+==============================================================================
+5. Text object motions					*object-motions*
+
+							*(*
+(			[count] sentences backward.  |exclusive| motion.
+
+							*)*
+)			[count] sentences forward.  |exclusive| motion.
+
+							*{*
+{			[count] paragraphs backward.  |exclusive| motion.
+
+							*}*
+}			[count] paragraphs forward.  |exclusive| motion.
+
+							*]]*
+]]			[count] sections forward or to the next '{' in the
+			first column.  When used after an operator, then the
+			'}' in the first column.  |linewise|
+
+							*][*
+][			[count] sections forward or to the next '}' in the
+			first column.  |linewise|
+
+							*[[*
+[[			[count] sections backward or to the previous '{' in
+			the first column.  |linewise|
+
+							*[]*
+[]			[count] sections backward or to the previous '}' in
+			the first column.  |linewise|
+
+These commands move over three kinds of text objects.
+
+							*sentence*
+A sentence is defined as ending at a '.', '!' or '?' followed by either the
+end of a line, or by a space or tab.  Any number of closing ')', ']', '"'
+and ''' characters may appear after the '.', '!' or '?' before the spaces,
+tabs or end of line.  A paragraph and section boundary is also a sentence
+boundary.
+If the 'J' flag is present in 'cpoptions', at least two spaces have to
+follow the punctuation mark; <Tab>s are not recognized as white space.
+The definition of a sentence cannot be changed.
+
+							*paragraph*
+A paragraph begins after each empty line, and also at each of a set of
+paragraph macros, specified by the pairs of characters in the 'paragraphs'
+option.  The default is "IPLPPPQPP LIpplpipbp", which corresponds to the
+macros ".IP", ".LP", etc.  (These are nroff macros, so the dot must be in the
+first column).  A section boundary is also a paragraph boundary.  Note that
+this does not include a '{' or '}' in the first column.  Also note that a
+blank line (only containing white space) is NOT a paragraph boundary.
+
+							*section*
+A section begins after a form-feed (<C-L>) in the first column and at each of
+a set of section macros, specified by the pairs of characters in the
+'sections' option.  The default is "SHNHH HUnhsh", which defines a section to
+start at the nroff macros ".SH", ".NH", ".H", ".HU", ".nh" and ".sh".
+
+The "]" and "[" commands stop at the '{' or '}' in the first column.  This is
+useful to find the start or end of a function in a C program.  Note that the
+first character of the command determines the search direction and the
+second character the type of brace found.
+
+If your '{' or '}' are not in the first column, and you would like to use "[["
+and "]]" anyway, try these mappings: >
+   :map [[ ?{<CR>w99[{
+   :map ][ /}<CR>b99]}
+   :map ]] j0[[%/{<CR>
+   :map [] k$][%?}<CR>
+[type these literally, see |<>|]
+
+==============================================================================
+6. Text object selection			*object-select* *text-objects*
+						*v_a* *v_i*
+
+This is a series of commands that can only be used while in Visual mode or
+after an operator.  The commands that start with "a" select "a"n object
+including white space, the commands starting with "i" select an "inner" object
+without white space, or just the white space.  Thus the "inner" commands
+always select less text than the "a" commands.
+
+These commands are {not in Vi}.
+These commands are not available when the |+textobjects| feature has been
+disabled at compile time.
+							*v_aw* *aw*
+aw			"a word", select [count] words (see |word|).
+			Leading or trailing white space is included, but not
+			counted.
+			When used in Visual linewise mode "aw" switches to
+			Visual characterwise mode.
+
+							*v_iw* *iw*
+iw			"inner word", select [count] words (see |word|).
+			White space between words is counted too.
+			When used in Visual linewise mode "iw" switches to
+			Visual characterwise mode.
+
+							*v_aW* *aW*
+aW			"a WORD", select [count] WORDs (see |WORD|).
+			Leading or trailing white space is included, but not
+			counted.
+			When used in Visual linewise mode "aW" switches to
+			Visual characterwise mode.
+
+							*v_iW* *iW*
+iW			"inner WORD", select [count] WORDs (see |WORD|).
+			White space between words is counted too.
+			When used in Visual linewise mode "iW" switches to
+			Visual characterwise mode.
+
+							*v_as* *as*
+as			"a sentence", select [count] sentences (see
+			|sentence|).
+			When used in Visual mode it is made characterwise.
+
+							*v_is* *is*
+is			"inner sentence", select [count] sentences (see
+			|sentence|).
+			When used in Visual mode it is made characterwise.
+
+							*v_ap* *ap*
+ap			"a paragraph", select [count] paragraphs (see
+			|paragraph|).
+			Exception: a blank line (only containing white space)
+			is also a paragraph boundary.
+			When used in Visual mode it is made linewise.
+
+							*v_ip* *ip*
+ip			"inner paragraph", select [count] paragraphs (see
+			|paragraph|).
+			Exception: a blank line (only containing white space)
+			is also a paragraph boundary.
+			When used in Visual mode it is made linewise.
+
+a]						*v_a]* *v_a[* *a]* *a[*
+a[			"a [] block", select [count] '[' ']' blocks.  This
+			goes backwards to the [count] unclosed '[', and finds
+			the matching ']'.  The enclosed text is selected,
+			including the '[' and ']'.
+			When used in Visual mode it is made characterwise.
+
+i]						*v_i]* *v_i[* *i]* *i[*
+i[			"inner [] block", select [count] '[' ']' blocks.  This
+			goes backwards to the [count] unclosed '[', and finds
+			the matching ']'.  The enclosed text is selected,
+			excluding the '[' and ']'.
+			When used in Visual mode it is made characterwise.
+
+a)							*v_a)* *a)* *a(*
+a(							*v_ab* *v_a(* *ab*
+ab			"a block", select [count] blocks, from "[count] [(" to
+			the matching ')', including the '(' and ')' (see
+			|[(|).  Does not include white space outside of the
+			parenthesis.
+			When used in Visual mode it is made characterwise.
+
+i)							*v_i)* *i)* *i(*
+i(							*v_ib* *v_i(* *ib*
+ib			"inner block", select [count] blocks, from "[count] [("
+			to the matching ')', excluding the '(' and ')' (see
+			|[(|).
+			When used in Visual mode it is made characterwise.
+
+a>						*v_a>* *v_a<* *a>* *a<*
+a<			"a <> block", select [count] <> blocks, from the
+			[count]'th unmatched '<' backwards to the matching
+			'>', including the '<' and '>'.
+			When used in Visual mode it is made characterwise.
+
+i>						*v_i>* *v_i<* *i>* *i<*
+i<			"inner <> block", select [count] <> blocks, from
+			the [count]'th unmatched '<' backwards to the matching
+			'>', excluding the '<' and '>'.
+			When used in Visual mode it is made characterwise.
+
+a}							*v_a}* *a}* *a{*
+a{							*v_aB* *v_a{* *aB*
+aB			"a Block", select [count] Blocks, from "[count] [{" to
+			the matching '}', including the '{' and '}' (see
+			|[{|).
+			When used in Visual mode it is made characterwise.
+
+i}							*v_i}* *i}* *i{*
+i{							*v_iB* *v_i{* *iB*
+iB			"inner Block", select [count] Blocks, from "[count] [{"
+			to the matching '}', excluding the '{' and '}' (see
+			|[{|).
+			When used in Visual mode it is made characterwise.
+
+When used after an operator:
+For non-block objects:
+	For the "a" commands: The operator applies to the object and the white
+	space after the object.  If there is no white space after the object
+	or when the cursor was in the white space before the object, the white
+	space before the object is included.
+	For the "inner" commands: If the cursor was on the object, the
+	operator applies to the object.  If the cursor was on white space, the
+	operator applies to the white space.
+For a block object:
+	The operator applies to the block where the cursor is in, or the block
+	on which the cursor is on one of the braces.  For the "inner" commands
+	the surrounding braces are excluded.  For the "a" commands, the braces
+	are included.
+
+When used in Visual mode:
+When start and end of the Visual area are the same (just after typing "v"):
+	One object is selected, the same as for using an operator.
+When start and end of the Visual area are not the same:
+	For non-block objects the area is extended by one object or the white
+	space up to the next object, or both for the "a" objects.  The
+	direction in which this happens depends on which side of the Visual
+	area the cursor is.  For the block objects the block is extended one
+	level outwards.
+
+For illustration, here is a list of delete commands, grouped from small to big
+objects.  Note that for a single character and a whole line the existing vi
+movement commands are used.
+	"dl"	delete character (alias: "x")		|dl|
+	"diw"	delete inner word			*diw*
+	"daw"	delete a word				*daw*
+	"diW"	delete inner WORD (see |WORD|)		*diW*
+	"daW"	delete a WORD (see |WORD|)		*daW*
+	"dd"	delete one line				|dd|
+	"dis"	delete inner sentence			*dis*
+	"das"	delete a sentence			*das*
+	"dib"	delete inner '(' ')' block		*dib*
+	"dab"	delete a '(' ')' block			*dab*
+	"dip"	delete inner paragraph			*dip*
+	"dap"	delete a paragraph			*dap*
+	"diB"	delete inner '{' '}' block		*diB*
+	"daB"	delete a '{' '}' block			*daB*
+
+Note the difference between using a movement command and an object.  The
+movement command operates from here (cursor position) to where the movement
+takes us.  When using an object the whole object is operated upon, no matter
+where on the object the cursor is.  For example, compare "dw" and "daw": "dw"
+deletes from the cursor position to the start of the next word, "daw" deletes
+the word under the cursor and the space after or before it.
+
+==============================================================================
+7. Marks					*mark-motions* *E20* *E78*
+
+Jumping to a mark can be done in two ways:
+1. With ` (backtick):	  The cursor is positioned at the specified location
+			  and the motion is |exclusive|.
+2. With ' (single quote): The cursor is positioned on the first non-blank
+			  character in the line of the specified location and
+			  the motion is linewise.
+
+						*m* *mark* *Mark*
+m{a-zA-Z}		Set mark {a-zA-Z} at cursor position (does not move
+			the cursor, this is not a motion command).
+
+						*m'* *m`*
+m'  or  m`		Set the previous context mark.  This can be jumped to
+			with the "''" or "``" command (does not move the
+			cursor, this is not a motion command).
+
+						*m[* *m]*
+m[  or  m]		Set the |'[| or |']| mark.  Useful when an operator is
+			to be simulated by multiple commands.  (does not move
+			the cursor, this is not a motion command).
+
+						*:ma* *:mark* *E191*
+:[range]ma[rk] {a-zA-Z}	Set mark {a-zA-Z} at last line number in [range],
+			column 0.  Default is cursor line.
+
+						*:k*
+:[range]k{a-zA-Z}	Same as :mark, but the space before the mark name can
+			be omitted.
+
+						*'* *'a* *`* *`a*
+'{a-z}  `{a-z}		Jump to the mark {a-z}.
+
+						*'A* *'0* *`A* *`0*
+'{A-Z0-9}  `{A-Z0-9}	To the mark {A-Z0-9} in the correct file (not a motion
+			command when in another file).  {not in Vi}
+
+						*g'* *g'a* *g`* *g`a*
+g'{mark}  g`{mark}
+			Jump to the {mark}, but don't change the jumplist when
+			jumping within the current buffer.  Example: >
+				g`"
+<			jumps to the last known position in a file.  See
+			$VIMRUNTIME/vimrc_example.vim.  {not in Vi}
+
+						*:marks*
+:marks			List all the current marks (not a motion command).
+			The |'(|, |')|, |'{| and |'}| marks are not listed.
+			{not in Vi}
+						*E283*
+:marks {arg}		List the marks that are mentioned in {arg} (not a
+			motion command).  For example: >
+				:marks aB
+<			to list marks 'a' and 'B'.  {not in Vi}
+
+A mark is not visible in any way.  It is just a position in the file that is
+remembered.  Do not confuse marks with named registers, they are totally
+unrelated.
+
+'a - 'z		lowercase marks, valid within one file
+'A - 'Z		uppercase marks, also called file marks, valid between files
+'0 - '9		numbered marks, set from .viminfo file
+
+Lowercase marks 'a to 'z are remembered as long as the file remains in the
+buffer list.  If you remove the file from the buffer list, all its marks are
+lost.  If you delete a line that contains a mark, that mark is erased.
+
+To delete a mark: Create a new line, position the mark there, delete the line.
+E.g.: "o<Esc>mxdd".  This does change the file though.  Using "u" won't work,
+it also restores marks.
+
+Lowercase marks can be used in combination with operators.  For example: "d't"
+deletes the lines from the cursor position to mark 't'.  Hint: Use mark 't' for
+Top, 'b' for Bottom, etc..  Lowercase marks are restored when using undo and
+redo.
+
+Uppercase marks 'A to 'Z include the file name.  {Vi: no uppercase marks} You
+can use them to jump from file to file.  You can only use an uppercase mark
+with an operator if the mark is in the current file.  The line number of the
+mark remains correct, even if you insert/delete lines or edit another file for
+a moment.  When the 'viminfo' option is not empty, uppercase marks are kept in
+the .viminfo file.  See |viminfo-file-marks|.
+
+Numbered marks '0 to '9 are quite different.  They can not be set directly.
+They are only present when using a viminfo file |viminfo-file|.  Basically '0
+is the location of the cursor when you last exited Vim, '1 the last but one
+time, etc.  Use the "r" flag in 'viminfo' to specify files for which no
+Numbered mark should be stored.  See |viminfo-file-marks|.
+
+
+							*'[* *`[*
+'[  `[			To the first character of the previously changed
+			or yanked text.  {not in Vi}
+
+							*']* *`]*
+']  `]			To the last character of the previously changed or
+			yanked text.  {not in Vi}
+
+After executing an operator the Cursor is put at the beginning of the text
+that was operated upon.  After a put command ("p" or "P") the cursor is
+sometimes placed at the first inserted line and sometimes on the last inserted
+character.  The four commands above put the cursor at either end.  Example:
+After yanking 10 lines you want to go to the last one of them: "10Y']".  After
+inserting several lines with the "p" command you want to jump to the lowest
+inserted line: "p']".  This also works for text that has been inserted.
+
+Note: After deleting text, the start and end positions are the same, except
+when using blockwise Visual mode.  These commands do not work when no change
+was made yet in the current file.
+
+							*'<* *`<*
+'<  `<			To the first character of the last selected Visual
+			area in the current buffer.  {not in Vi}.
+
+							*'>* *`>*
+'>  `>			To the last character of the last selected Visual
+			area in the current buffer.  {not in Vi}.
+
+							*''* *``*
+''  ``			To the position before latest jump, or where the last
+			"m'" or "m`" command was given.  Not set when the
+			|:keepjumps| command modifier was used.
+			Also see |restore-position|.
+
+							*'quote* *`quote*
+'"  `"			To the cursor position when last exiting the current
+			buffer.  Defaults to the first character of the first
+			line.  See |last-position-jump| for how to use this
+			for each opened file.
+			Only one position is remembered per buffer, not one
+			for each window.  As long as the buffer is visible in
+			a window the position won't be changed.
+			{not in Vi}.
+
+							*'^* *`^*
+'^  `^			To the position where the cursor was the last time
+			when Insert mode was stopped  This is used by the |gi|
+			command.  Not set when the |:keepjumps| command
+			modifier was used.  {not in Vi}
+
+							*'.* *`.*
+'.  `.			To the position where the last change was made.  The
+			position is at or near where the change started.
+			Sometimes a command is executed as several changes,
+			then the position can be near the end of what the
+			command changed.  For example when inserting a word,
+			the position will be on the last character.
+			{not in Vi}
+
+							*'(* *`(*
+'(  `(			To the start of the current sentence, like the |(|
+			command.  {not in Vi}
+
+							*')* *`)*
+')  `)			To the end of the current sentence, like the |)|
+			command.  {not in Vi}
+
+							*'{* *`{*
+'{  `{			To the start of the current paragraph, like the |{|
+			command.  {not in Vi}
+
+							*'}* *`}*
+'}  `}			To the end of the current paragraph, like the |}|
+			command.  {not in Vi}
+
+These commands are not marks themselves, but jump to a mark:
+
+							*]'*
+]'			[count] times to next line with a lowercase mark below
+			the cursor, on the first non-blank character in the
+			line. {not in Vi}
+
+							*]`*
+]`			[count] times to lowercase mark after the cursor. {not
+			in Vi}
+
+							*['*
+['			[count] times to previous line with a lowercase mark
+			before the cursor, on the first non-blank character in
+			the line. {not in Vi}
+
+							*[`*
+[`			[count] times to lowercase mark before the cursor.
+			{not in Vi}
+
+
+:loc[kmarks] {command}					*:loc* *:lockmarks*
+			Execute {command} without adjusting marks.  This is
+			useful when changing text in a way that the line count
+			will be the same when the change has completed.
+			WARNING: When the line count does change, marks below
+			the change will keep their line number, thus move to
+			another text line.
+			These items will not be adjusted for deleted/inserted
+			lines:
+			- lower case letter marks 'a - 'z
+			- upper case letter marks 'A - 'Z
+			- numbered marks '0 - '9
+			- last insert position '^
+			- last change position '.
+			- the Visual area '< and '>
+			- line numbers in placed signs
+			- line numbers in quickfix positions
+			- positions in the |jumplist|
+			- positions in the |tagstack|
+			These items will still be adjusted:
+			- previous context mark ''
+			- the cursor position
+			- the view of a window on a buffer
+			- folds
+			- diffs
+
+:kee[pmarks] {command}					*:kee* *:keepmarks*
+			Currently only has effect for the filter command
+			|:range!|:
+			- When the number of lines after filtering is equal to
+			  or larger than before, all marks are kept at the
+			  same line number.
+			- When the number of lines decreases, the marks in the
+			  ilnes that disappeared are deleted.
+			In any case the marks below the filtered text have
+			their line numbers adjusted, thus stick to the text,
+			as usual.
+			When the 'R' flag is missing from 'cpoptions' this has
+			the same effect as using ":keepmarks".
+
+							*:keepj* *:keepjumps*
+:keepj[umps] {command}
+			Do not change the |''|, |'.| and |'^| marks, the
+			|jumplist| or the |changelist|.  Useful when making a
+			change or inserting text automatically and the user
+			doesn't want to go to this position.  E.g., when
+			updating a "Last change" timestamp: >
+	autocmd BufWritePre,FileWritePre *.abc keepjumps call SetLastChange()
+
+==============================================================================
+8. Jumps					*jump-motions*
+
+A "jump" is one of the following commands: "'", "`", "G", "/", "?", "n",
+"N", "%", "(", ")", "[[", "]]", "{", "}", ":s", ":tag", "L", "M", "H" and
+the commands that start editing a new file.  If you make the cursor "jump"
+with one of these commands, the position of the cursor before the jump is
+remembered.  You can return to that position with the "''" and "``" command,
+unless the line containing that position was changed or deleted.
+
+							*CTRL-O*
+CTRL-O			Go to [count] Older cursor position in jump list
+			(not a motion command).  {not in Vi}
+			{not available without the +jumplist feature}
+
+<Tab>		or					*CTRL-I* *<Tab>*
+CTRL-I			Go to [count] newer cursor position in jump list
+			(not a motion command).
+			In a |quickfix-window| it takes you to the position of
+			the error under the cursor.
+			{not in Vi}
+			{not available without the +jumplist feature}
+
+							*:ju* *:jumps*
+:ju[mps]		Print the jump list (not a motion command).  {not in
+			Vi} {not available without the +jumplist feature}
+
+							*jumplist*
+Jumps are remembered in a jump list.  With the CTRL-O and CTRL-I command you
+can go to cursor positions before older jumps, and back again.  Thus you can
+move up and down the list.  There is a separate jump list for each window.
+The maximum number of entries is fixed at 100.
+{not available without the +jumplist feature}
+
+For example, after three jump commands you have this jump list:
+
+  jump line  col file/line ~
+    3	  1    0 some text ~
+    2	 70    0 another line ~
+    1  1154   23 end. ~
+ > ~
+
+The "file/line" column shows the file name, or the text at the jump if it is
+in the current file (an indent is removed and a long line is truncated to fit
+in the window).
+
+You are currently in line 1167.  If you then use the CTRL-O command, the
+cursor is put in line 1154.  This results in:
+
+  jump line  col file/line ~
+    2	  1    0 some text ~
+    1	 70    0 another line ~
+ >  0  1154   23 end. ~
+    1  1167    0 foo bar ~
+
+The pointer will be set at the last used jump position.  The next CTRL-O
+command will use the entry above it, the next CTRL-I command will use the
+entry below it.  If the pointer is below the last entry, this indicates that
+you did not use a CTRL-I or CTRL-O before.  In this case the CTRL-O command
+will cause the cursor position to be added to the jump list, so you can get
+back to the position before the CTRL-O.  In this case this is line 1167.
+
+With more CTRL-O commands you will go to lines 70 and 1.  If you use CTRL-I
+you can go back to 1154 and 1167 again.  Note that the number in the "jump"
+column indicates the count for the CTRL-O or CTRL-I command that takes you to
+this position.
+
+If you use a jump command, the current line number is inserted at the end of
+the jump list.  If the same line was already in the jump list, it is removed.
+The result is that when repeating CTRL-O you will get back to old positions
+only once.
+
+When the |:keepjumps| command modifier is used, jumps are not stored in the
+jumplist.
+
+After the CTRL-O command that got you into line 1154 you could give another
+jump command (e.g., "G").  The jump list would then become:
+
+  jump line  col file/line ~
+    4	  1    0 some text ~
+    3	 70    0 another line ~
+    2  1167    0 foo bar ~
+    1  1154   23 end. ~
+ > ~
+
+The line numbers will be adjusted for deleted and inserted lines.  This fails
+if you stop editing a file without writing, like with ":n!".
+
+When you split a window, the jumplist will be copied to the new window.
+
+If you have included the ' item in the 'viminfo' option the jumplist will be
+stored in the viminfo file and restored when starting Vim.
+
+
+CHANGE LIST JUMPS			*changelist* *change-list-jumps* *E664*
+
+When making a change the cursor position is remembered.  One position is
+remembered for every change that can be undone, unless it is close to a
+previous change.  Two commands can be used to jump to positions of changes,
+also those that have been undone:
+
+							*g;* *E662*
+g;			Go to [count] older position in change list.
+			If [count] is larger than the number of older change
+			positions go to the oldest change.
+			If there is no older change an error message is given.
+			(not a motion command)
+			{not in Vi}
+			{not available without the +jumplist feature}
+
+							*g,* *E663*
+g,			Go to [count] newer cursor position in change list.
+			Just like "g;| but in the opposite direction.
+			(not a motion command)
+			{not in Vi}
+			{not available without the +jumplist feature}
+
+When using a count you jump as far back or forward as possible.  Thus you can
+use "999g;" to go to the first change for which the position is still
+remembered.  The number of entries in the change list is fixed and is the same
+as for the |jumplist|.
+
+When two undo-able changes are in the same line and at a column position less
+than 'textwidth' apart only the last one is remembered.  This avoids that a
+sequence of small changes in a line, for example "xxxxx", adds many positions
+to the change list.  When 'textwidth' is zero 'wrapmargin' is used.  When that
+also isn't set a fixed number of 79 is used.  Detail: For the computations
+bytes are used, not characters, to avoid a speed penalty (this only matters
+for multi-byte encodings).
+
+Note that when text has been inserted or deleted the cursor position might be
+a bit different from the position of the change.  Especially when lines have
+been deleted.
+
+When the |:keepjumps| command modifier is used the position of a change is not
+remembered.
+
+							*:changes*
+:changes		Print the change list.  A ">" character indicates the
+			current position.  Just after a change it is below the
+			newest entry, indicating that "g;" takes you to the
+			newest entry position.  The first column indicates the
+			count needed to take you to this position.  Example:
+
+				change line  col text ~
+				    3     9    8 bla bla bla
+				    2    11   57 foo is a bar
+				    1    14   54 the latest changed line
+				>
+
+			The "3g;" command takes you to line 9.  Then the
+			output of ":changes is:
+
+				change line  col text ~
+				>   0     9    8 bla bla bla
+				    1    11   57 foo is a bar
+				    2    14   54 the latest changed line
+
+			Now you can use "g," to go to line 11 and "2g," to go
+			to line 14.
+
+==============================================================================
+9. Various motions				*various-motions*
+
+							*%*
+%			Find the next item in this line after or under the
+			cursor and jump to its match. |inclusive| motion.
+			Items can be:
+			([{}])		parenthesis or (curly/square) brackets
+					(this can be changed with the
+					'matchpairs' option)
+			/* */		start or end of C-style comment
+			#if, #ifdef, #else, #elif, #endif
+					C preprocessor conditionals (when the
+					cursor is on the # or no ([{
+					following)
+			For other items the matchit plugin can be used, see
+			|matchit-install|.
+
+			When 'cpoptions' contains "M" |cpo-M| backslashes
+			before parens and braces are ignored.  Without "M" the
+			number of backslashes matters: an even number doesn't
+			match with an odd number.  Thus in "( \) )" and "\( (
+			\)" the first and last parenthesis match.
+			When the '%' character is not present in 'cpoptions'
+			|cpo-%|, parens and braces inside double quotes are
+			ignored, unless the number of parens/braces in a line
+			is uneven and this line and the previous one does not
+			end in a backslash.  '(', '{', '[', ']', '}' and ')'
+			are also ignored (parens and braces inside single
+			quotes).  Note that this works fine for C, but not for
+			Perl, where single quotes are used for strings.
+			No count is allowed ({count}% jumps to a line {count}
+			percentage down the file |N%|).  Using '%' on
+			#if/#else/#endif makes the movement linewise.
+
+						*[(*
+[(			go to [count] previous unmatched '('.
+			|exclusive| motion. {not in Vi}
+
+						*[{*
+[{			go to [count] previous unmatched '{'.
+			|exclusive| motion. {not in Vi}
+
+						*])*
+])			go to [count] next unmatched ')'.
+			|exclusive| motion. {not in Vi}
+
+						*]}*
+]}			go to [count] next unmatched '}'.
+			|exclusive| motion. {not in Vi}
+
+The above four commands can be used to go to the start or end of the current
+code block.  It is like doing "%" on the '(', ')', '{' or '}' at the other
+end of the code block, but you can do this from anywhere in the code block.
+Very useful for C programs.  Example: When standing on "case x:", "[{" will
+bring you back to the switch statement.
+
+						*]m*
+]m			Go to [count] next start of a method (for Java or
+			similar structured language).  When not before the
+			start of a method, jump to the start or end of the
+			class.  When no '{' is found after the cursor, this is
+			an error.  |exclusive| motion. {not in Vi}
+						*]M*
+]M			Go to [count] next end of a method (for Java or
+			similar structured language).  When not before the end
+			of a method, jump to the start or end of the class.
+			When no '}' is found after the cursor, this is an
+			error. |exclusive| motion. {not in Vi}
+						*[m*
+[m			Go to [count] previous start of a method (for Java or
+			similar structured language).  When not after the
+			start of a method, jump to the start or end of the
+			class.  When no '{' is found before the cursor this is
+			an error. |exclusive| motion. {not in Vi}
+						*[M*
+[M			Go to [count] previous end of a method (for Java or
+			similar structured language).  When not after the
+			end of a method, jump to the start or end of the
+			class.  When no '}' is found before the cursor this is
+			an error. |exclusive| motion. {not in Vi}
+
+The above two commands assume that the file contains a class with methods.
+The class definition is surrounded in '{' and '}'.  Each method in the class
+is also surrounded with '{' and '}'.  This applies to the Java language.  The
+file looks like this: >
+
+	// comment
+	class foo {
+		int method_one() {
+			body_one();
+		}
+		int method_two() {
+			body_two();
+		}
+	}
+Starting with the cursor on "body_two()", using "[m" will jump to the '{' at
+the start of "method_two()" (obviously this is much more useful when the
+method is long!).  Using "2[m" will jump to the start of "method_one()".
+Using "3[m" will jump to the start of the class.
+
+						*[#*
+[#			go to [count] previous unmatched "#if" or "#else".
+			|exclusive| motion. {not in Vi}
+
+						*]#*
+]#			go to [count] next unmatched "#else" or "#endif".
+			|exclusive| motion. {not in Vi}
+
+These two commands work in C programs that contain #if/#else/#endif
+constructs.  It brings you to the start or end of the #if/#else/#endif where
+the current line is included.  You can then use "%" to go to the matching line.
+
+						*[star* *[/*
+[*  or  [/		go to [count] previous start of a C comment "/*".
+			|exclusive| motion. {not in Vi}
+
+						*]star* *]/*
+]*  or  ]/		go to [count] next end of a C comment "*/".
+			|exclusive| motion. {not in Vi}
+
+
+						*H*
+H			To line [count] from top (Home) of window (default:
+			first line on the window) on the first non-blank
+			character |linewise|.  See also 'startofline' option.
+			Cursor is adjusted for 'scrolloff' option.
+
+						*M*
+M			To Middle line of window, on the first non-blank
+			character |linewise|.  See also 'startofline' option.
+
+						*L*
+L			To line [count] from bottom of window (default: Last
+			line on the window) on the first non-blank character
+			|linewise|.  See also 'startofline' option.
+			Cursor is adjusted for 'scrolloff' option.
+
+<LeftMouse>		Moves to the position on the screen where the mouse
+			click is |inclusive|.  See also |<LeftMouse>|.  If the
+			position is in a status line, that window is made the
+			active window and the cursor is not moved.  {not in Vi}
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/netbeans.txt b/runtime/doc/netbeans.txt
new file mode 100644
index 0000000..55725e1
--- /dev/null
+++ b/runtime/doc/netbeans.txt
@@ -0,0 +1,735 @@
+*netbeans.txt*  For Vim version 7.0aa.  Last change: 2004 May 01
+
+
+		  VIM REFERENCE MANUAL    by Gordon Prieur
+
+
+NetBeans ExternalEditor Integration Features		*netbeans*
+							*netbeans-support*
+1.  Introduction				|netbeans-intro|
+2.  NetBeans Key Bindings			|netbeans-keybindings|
+3.  Configuring Vim for NetBeans		|netbeans-configure|
+4.  Downloading NetBeans			|netbeans-download|
+5.  Preparing NetBeans for Vim			|netbeans-preparation|
+6.  Obtaining the External Editor Module	|obtaining-exted|
+7.  Setting up NetBeans to run with Vim		|netbeans-setup|
+8.  Messages					|netbeans-messages|
+9.  Running Vim from NetBeans			|netbeans-run|
+10. NetBeans protocol				|netbeans-protocol|
+11. Known problems				|netbeans-problems|
+
+{Vi does not have any of these features}
+{only available when compiled with the |+netbeans_intg| feature}
+
+==============================================================================
+1. Introduction						*netbeans-intro*
+
+NetBeans is an open source Integrated Development Environment developed
+jointly by Sun Microsystems, Inc. and the netbeans.org developer community.
+Initially just a Java IDE, NetBeans has had C, C++, and Fortran support added
+in recent releases.
+
+For more information visit the main NetBeans web site http://www.netbeans.org
+or the NetBeans External Editor site at http://externaleditor.netbeans.org.
+
+Sun Microsystems, Inc. also ships NetBeans under the name Sun ONE Studio.
+Visit http://www.sun.com for more information regarding the Sun ONE Studio
+product line.
+
+Current releases of NetBeans provide full support for Java and limited support
+for C, C++, and Fortran. Current releases of Sun ONE Studio provide full
+support for Java, C, C++, and Fortran.
+
+The interface to NetBeans is also supported by Agide, the A-A-P GUI IDE.
+Agide is very different from NetBeans:
+- Based on Python instead of Java, much smaller footprint and fast startup.
+- Agide is a framework in which many different tools can work together.
+See the A-A-P website for information: http://www.A-A-P.org.
+
+==============================================================================
+2. NetBeans Key Bindings				*netbeans-keybindings*
+
+Vim understands a number of key bindings that execute NetBeans commands. These
+are typically all the Function key combinations. To execute a NetBeans command,
+the user must press the Pause key followed by a NetBeans key binding. For
+example, in order to compile a Java file, the NetBeans key binding is "F9". So,
+while in vim, press "Pause F9" to compile a java file. To toggle a breakpoint
+at the current line, press "Pause Shift F8".
+
+The Pause key is Function key 21.  If you don't have a working Pause key and
+want to use F8 instead, use: >
+
+	:map <F8> <F21>
+
+The External Editor module dynamically reads the NetBeans key bindings so vim
+should always have the latest key bindings, even when NetBeans changes them.
+
+==============================================================================
+3. Configuring Vim for NetBeans			*netbeans-configure*
+
+For more help installing vim, please read |usr_90.txt| in the Vim User Manual.
+
+
+On Unix
+
+When running configure without arguments the NetBeans interface should be
+included.  That is, if the configure check to find out if your system supports
+the required features succeeds.
+
+In case you do not want the NetBeans interface you can disable it by
+uncommenting a line with "--disable-netbeans" in the Makefile.
+
+Currently, only gvim is supported in this integration as NetBeans does not
+have means to supply a terminal emulator for the vim command. Furthermore,
+there is only GUI support for GTK, GNOME, and Motif.
+
+If Motif support is required the user must supply XPM libraries. See
+|workshop-xpm| for details on obtaining the latest version of XPM.
+
+
+On MS-Windows
+
+The Win32 support is now in beta stage.
+
+To use XPM signs on Win32 (e.g. when using with NetBeans) you can compile
+XPM by yourself or use precompiled libraries from http://iamphet.nm.ru/misc/
+(for MS Visual C++) or http://gnuwin32.sourceforge.net (for MinGW).
+
+==============================================================================
+4. Downloading NetBeans					*netbeans-download*
+
+The NetBeans IDE is available for download from netbeans.org. You can download
+a released version, download sources, or use CVS to download the current
+source tree. If you choose to download sources, follow directions from
+netbeans.org on building NetBeans.
+
+Depending on the version of NetBeans you download, you may need to do further
+work to get the required External Editor module. This is the module which lets
+NetBeans work with gvim (or xemacs :-). See http://externaleditor.netbeans.org
+for details on downloading this module if your NetBeans release does not have
+it.
+
+For C, C++, and Fortran support you will also need the cpp module. See
+http://cpp.netbeans.org for information regarding this module.
+
+You can also download Sun ONE Studio from Sun Microsystems, Inc for a 30 day
+free trial. See http://www.sun.com for further details.
+
+==============================================================================
+5. Preparing NetBeans for Vim				*netbeans-preparation*
+
+In order for NetBeans to work with vim, the NetBeans External Editor module
+must be loaded and enabled. If you have a Sun ONE Studio Enterprise Edition
+then this module should be loaded and enabled. If you have a NetBeans release
+you may need to find another way of obtaining this open source module.
+
+You can check if you have this module by opening the Tools->Options dialog
+and drilling down to the "Modules" list (IDE Configuration->System->Modules).
+If your Modules list has an entry for "External Editor" you must make sure
+it is enabled (the "Enabled" property should have the value "True"). If your
+Modules list has no External Editor see the next section on |obtaining-exted|.
+
+==============================================================================
+6. Obtaining the External Editor Module			    *obtaining-exted*
+
+There are 2 ways of obtaining the External Editor module. The easiest way
+is to use the NetBeans Update Center to download and install the module.
+Unfortunately, some versions do not have this module in their update
+center. If you cannot download via the update center you will need to
+download sources and build the module. I will try and get the module
+available from the NetBeans Update Center so building will be unnecessary.
+Also check http://externaleditor.netbeans.org for other availability options.
+
+To download the External Editor sources via CVS and build your own module,
+see http://externaleditor.netbeans.org and http://www.netbeans.org.
+Unfortunately, this is not a trivial procedure.
+
+==============================================================================
+7. Setting up NetBeans to run with Vim			    *netbeans-setup*
+
+Assuming you have loaded and enabled the NetBeans External Editor module
+as described in |netbeans-preparation| all you need to do is verify that
+the gvim command line is properly configured for your environment.
+
+Open the Tools->Options dialog and open the Editing category. Select the
+External Editor. The right hand pane should contain a Properties tab and
+an Expert tab. In the Properties tab make sure the "Editor Type" is set
+to "Vim". In the Expert tab make sure the "Vim Command" is correct.
+
+You should be careful if you change the "Vim Command". There are command
+line options there which must be there for the connection to be properly
+set up. You can change the command name but thats about it. If your gvim
+can be found by your $PATH then the VIM Command can start with "gvim". If
+you don't want gvim searched from your $PATH then hard code in the full
+Unix path name. At this point you should get a gvim for any source file
+you open in NetBeans.
+
+If some files come up in gvim and others (with different file suffixes) come
+up in the default NetBeans editor you should verify the MIME type in the
+Expert tab MIME Type property. NetBeans is MIME oriented and the External
+Editor will only open MIME types specified in this property.
+
+==============================================================================
+8. Messages						*netbeans-messages*
+
+These messages are specific for NetBeans:
+
+							*E463*
+Region is guarded, cannot modify
+		NetBeans defines guarded areas in the text, which you cannot
+		change.
+
+							*E656*
+NetBeans dissallows writes of unmodified buffers
+		NetBeans does not support writes of unmodified buffers that
+		were opened from NetBeans.
+
+							*E657*
+Partial writes disallowed for NetBeans buffers
+		NetBeans does not support partial writes for buffers that were
+		opened from NetBeans.
+
+							*E658*
+NetBeans connection lost for this buffer
+		NetBeans has become confused about the state of this file.
+		Rather than risc data corruption, NetBeans has severed the
+		connection for this file. Vim will take over responsibility
+		for saving changes to this file and NetBeans will no longer
+		know of these changes.
+
+==============================================================================
+9. Running Vim from NetBeans				*netbeans-run*
+
+NetBeans starts Vim with the |-nb| argument.  Three forms can be used, that
+differ in the way the information for the connection is specified:
+
+	-nb={fname}				from a file
+	-nb:{hostname}:{addr}:{password}	directly
+	-nb					from a file or environment
+
+							*E660* *E668*
+For security reasons, the best method is to write the information in a file
+readable only by the user.  The name of the file can be passed with the
+"-nb={fname}" argument or, when "-nb" is used without a parameter, the
+environment variable "__NETBEANS_CONINFO".  The file must contain these three
+lines, in any order:
+
+	host={hostname}
+	port={addr}
+	auth={password}
+
+Other lines are ignored.  The caller of Vim is responsible for deleting the
+file afterwards.
+
+{hostname} is the name of the machine where NetBeans is running.  When omitted
+the environment variable "__NETBEANS_HOST" is used or the default "localhost".
+
+{addr} is the port number for NetBeans.  When omitted the environment variable
+"__NETBEANS_SOCKET" is used or the default 3219.
+
+{password} is the password for connecting to NetBeans.  When omitted the
+environment variable "__NETBEANS_VIM_PASSWORD" is used or "changeme".
+
+==============================================================================
+10. NetBeans protocol					*netbeans-protocol*
+
+The communication between NetBeans and Vim uses plain text messages.  This
+protocol was first designed to work with the external editor module of
+NetBeans (see http://externaleditor.netbeans.org).  Later it was extended to
+work with Agide (A-A-P GUI IDE, see http://www.a-a-p.org).  The extensions are
+marked with "version 2.1".
+
+Version 2.2 of the protocol has several minor changes which should only
+affect NetBeans users (ie, not Agide users). However, a bug was fixed which
+could cause confusion. The netbeans_saved() function sent a "save" protocol
+command. In protocol version 2.1 and earlier this was incorrectly interpreted
+as a notification that a write had taken place. In reality, it told NetBeans
+to save the file so multiple writes were being done. This caused various
+problems and has been fixed in 2.2. To decrease the likelyhood of this
+confusion happening again, netbeans_saved() has been renamed to
+netbeans_save_buffer().
+
+The messages are currently sent over a socket.  Since the messages are in
+plain UTF-8 text this protocol could also be used with any other communication
+mechanism.
+
+10.1 Kinds of messages		|nb-messages|
+10.2 Terms			|nb-terms|
+10.3 Commands			|nb-commands|
+10.4 Functions and Replies	|nb-functions|
+10.5 Events			|nb-events|
+10.6 Special messages		|nb-special|
+
+*E627* *E628* *E629* *E630* *E631* *E632* *E633* *E634* *E635* *E636*
+*E637* *E638* *E639* *E640* *E641* *E642* *E643* *E644* *E645* *E646*
+*E647* *E648* *E649* *E650* *E651* *E652* *E653* *E654*
+These errors occur when a message violates the protocol.
+
+
+10.1 Kinds of messages					*nb-messages*
+
+There are four kinds of messages:
+
+kind		direction	comment ~
+Command		IDE -> editor	no reply necessary
+Function	IDE -> editor	editor must send back a reply
+Reply		editor -> IDE	only in response to a Function
+Event		editor -> IDE	no reply necessary
+
+The messages are sent as a single line with a terminating newline character.
+Arguments are separated by a single space.  The first item of the message
+depends on the kind of message:
+
+kind		first item		example ~
+Command		bufID:name!seqno	11:showBalloon!123 "text"
+Function	bufID:name/seqno	11:getLength/123
+Reply		seqno			123 5000
+Event		bufID:name=123		11:keyCommand=123 "S-F2"
+
+
+10.2 Terms						*nb-terms*
+
+bufID		Buffer number.  A message may be either for a specific buffer
+		or generic.  Generic messages use a bufID of zero.  NOTE: this
+		buffer ID is assigned by the IDE, it is not Vim's buffer
+		number.  The bufID must be a sequentially rising number,
+		starting at one.
+
+seqno		The IDE uses a sequence number for Commands and Functions.  A
+		Reply must use the sequence number of the Function that it is
+		associated with.  A zero sequence number can be used for
+		Events (the seqno of the last received Command or Function can
+		also be used).
+
+string		Argument in double quotes.  Text is in UTF-8 encoding.  This
+		means ASCII is passed as-is.  Special characters are
+		represented with a backslash:
+			\"	double quote
+			\n	newline
+			\r	carriage-return
+			\t	tab (optional, also works literally)
+			\\	backslash
+		NUL bytes are not allowed!
+
+boolean		Argument with two possible values:
+			T	true
+			F	false
+
+number		Argument with a decimal number.
+
+optnum		Argument with either a decimal number or "none" (without the
+		quotes).
+
+offset		A number argument that indicates a byte position in a buffer.
+		The first byte has offset zero.  Line breaks are counted for
+		how they appear in the file (CR/LF counts for two bytes).
+		Note that a multi-byte character is counted for the number of
+		bytes it takes.
+
+lnum/col	Argument with a line number and column number position.  The
+		line number starts with one, the column is the byte position,
+		starting with zero.  Note that a multi-byte character counts
+		for several columns.
+
+pathname	String argument: file name with full path.
+
+
+10.3 Commands						*nb-commands*
+
+actionMenuItem	Not implemented.
+
+actionSensitivity
+		Not implemented.
+
+addAnno serNum typeNum off len
+		Place an annotation in this buffer.
+		Arguments:
+		   serNum	number	serial number of this placed
+					annotation, used to be able to remove
+					it
+		   typeNum	number	sequence number of the annotation
+					defined with defineAnnoType for this
+					buffer
+		   off		number	offset where annotation is to be placed
+		   len		number	not used
+		In version 2.1 "lnum/col" can be used instead of "off".
+
+balloonResult text
+		Not implemented.
+
+close		Close the buffer.  This leaves us without current buffer, very
+		dangerous to use!
+
+create		Creates a buffer without a name.  Replaces the current buffer
+		(it's hidden when it was changed).
+		NetBeans uses this as the first command for a file that is
+		being opened.  The sequence of commands could be:
+			create
+			setCaretListener	(ignored)
+			setModified		(no effect)
+			setContentType		(ignored)
+			startDocumentListen
+			setTitle
+			setFullName
+
+defineAnnoType typeNum typeName tooltip glyphFile fg bg
+		Define a type of annotation for this buffer.
+		Arguments:
+		   typeNum	number	sequence number (not really used)
+		   typeName	string	name that identifies this annotation
+		   tooltip	string	not used
+		   glyphFile	string	name of icon file
+		   fg		optnum	foreground color for line highlighting
+		   bg		optnum	background color for line highlighting
+		Vim will define a sign for the annotation.
+		When both "fg" and "bg" are "none" no line highlighting is
+		used (new in version 2.1).
+		When "glyphFile" is empty, no text sign is used (new in
+		version 2.1).
+		When "glyphFile" is one or two characters long, a text sign is
+		defined (new in version 2.1).
+		Note: the annotations will be defined in sequence, and the
+		sequence number is later used with addAnno.
+
+editFile pathname
+		Set the name for the buffer and edit the file "pathname", a
+		string argument.
+		Normal way for the IDE to tell the editor to edit a file.  If
+		the IDE is going to pass the file text to the editor use these
+		commands instead:
+			setFullName
+			insert
+			initDone
+		New in version 2.1.
+
+enableBalloonEval
+		Not implemented.
+
+endAtomic	End an atomic operation.  The changes between "startAtomic"
+		and "endAtomic" can be undone as one operation.  But it's not
+		implemented yet.  Redraw when necessary.
+
+guard off len
+		Mark an area in the buffer as guarded.  This means it cannot
+		be edited.  "off" and "len" are numbers and specify the text
+		to be guarded.
+
+initDone	Mark the buffer as ready for use.  Implicitly makes the buffer
+		the current buffer.  Fires the BufReadPost autocommand event.
+
+moveAnnoToFront serNum
+		Not implemented.
+
+netbeansBuffer isNetbeansBuffer
+		If "isNetbeansBuffer" is "T" then this buffer is ``owned'' by
+		NetBeans.
+		New in version 2.2.
+
+putBufferNumber pathname
+		Associate a buffer number with the Vim buffer by the name
+		"pathname", a string argument.  To be used when the editor
+		reported editing another file to the IDE and the IDE needs to
+		tell the editor what buffer number it will use for this file.
+		Also marks the buffer as initialized.
+		New in version 2.1.
+
+raise		Bring the editor to the foreground.
+		New in version 2.1.
+
+removeAnno serNum
+		Remove a previously place annotation for this buffer.
+		"serNum" is the same number used in addAnno.
+
+save		Save the buffer when it was modified.  The other side of the
+		interface is expected to write the buffer and invoke
+		"setModified" to reset the "changed" flag of the buffer.
+		The writing is skipped when one of these conditions is true:
+		- 'write' is not set
+		- the buffer is read-only
+		- the buffer does not have a file name
+		- 'buftype' disallows writing
+		New in version 2.2.
+
+setAsUser	Not implemented.
+
+setBufferNumber pathname
+		Associate a buffer number with Vim buffer by the name
+		"pathname".  To be used when the editor reported editing
+		another file to the IDE and the IDE needs to tell the editor
+		what buffer number it will use for this file.
+		Has the side effect of making the buffer the current buffer.
+		See "putBufferNumber" for a more useful command.
+
+setContentType
+		Not implemented.
+
+setDot off	Make the buffer the current buffer and set the cursor at the
+		specified position.  If there are folds they are opened to
+		make the cursor line visible.
+		In version 2.1 "lnum/col" can be used instead of "off".
+
+setExitDelay seconds
+		Set the delay for exiting to "seconds", a number.
+		This delay is used to give the IDE a chance to handle things
+		before really exiting.  The default delay is two seconds.
+		New in version 2.1.
+
+setFullName pathname
+		Set the file name to be used for a buffer to "pathname", a
+		string argument.
+		Used when the IDE wants to edit a file under control of the
+		IDE.  This makes the buffer the current buffer, but does not
+		read the file.  "insert" commands will be used next to set the
+		contents.
+
+setLocAndSize	Not implemented.
+
+setMark		Not implemented.
+
+setModified modified
+		When the boolean argument "modified" is "T" mark the buffer as
+		modified, when it is "F" mark it as unmodified.
+
+setReadOnly	Not implemented.
+
+setStyle	Not implemented.
+
+setTitle name
+		Set the title for the buffer to "name", a string argument.
+		The title is only used for NetBeans functions, not by Vim.
+
+setVisible visible
+		When the boolean argument "visible" is "T", goto the buffer.
+		The "F" argument does nothing.
+
+showBalloon text
+		Show a balloon (popup window) at the mouse pointer position,
+		containing "text", a string argument.  The balloon should
+		disappear when the mouse is moved more than a few pixels.
+		New in version 2.1.
+
+specialKeys	Not implemented.
+
+startAtomic	Begin an atomic operation.  The screen will not be updated
+		until "endAtomic" is given.
+
+startCaretListen
+		Not implemented.
+
+startDocumentListen
+		Mark the buffer to report changes to the IDE with the
+		"insert" and "remove" events.  The default is to report
+		changes.
+
+stopCaretListen
+		Not implemented.
+
+stopDocumentListen
+		Mark the buffer to stop reporting changes to the IDE.
+		Opposite of startDocumentListen.
+
+unguard off len
+		Opposite of "guard", remove guarding for a text area.
+
+version		Not implemented.
+
+
+10.4 Functions and Replies				*nb-functions*
+
+getDot		Not implemented.
+
+getCursor	Return the current buffer and cursor position.
+		The reply is:
+			seqno bufID lnum col off
+		seqno = sequence number of the function
+		bufID = buffer ID of the current buffer (if this is unknown -1
+			is used)
+		lnum  = line number of the cursor (first line is one)
+		col   = column number of the cursor (in bytes, zero based)
+		off   = offset of the cursor in the buffer (in bytes)
+		New in version 2.1.
+
+getLength	Return the length of the buffer in bytes.
+		Reply example for a buffer with 5000 bytes:
+			123 5000
+		TODO: explain use of partial line.
+
+getMark		Not implemented.
+
+getModified	When a buffer is specified: Return zero if the buffer does not
+		have changes, one if it does have changes.
+		When no buffer is specified (buffer number zero): Return the
+		number of buffers with changes.  When the result is zero it's
+		safe to tell Vim to exit.
+		New in version 2.1.
+
+getText		Return the contents of the buffer as a string.
+		Reply example for a buffer with two lines
+			123 "first line\nsecond line\n"
+		NOTE: docs indicate an offset and length argument, but this is
+		not implemented.
+
+insert off text
+		Insert "text" before position "off".  "text" is a string
+		argument, "off" a number.
+		Possible replies:
+			123		no problem
+			123 !message	failed
+		Note that the message in the reply is not quoted.
+
+remove off length
+		Delete "length" bytes of text at position "off".  Both
+		arguments are numbers.
+		Possible replies:
+			123		no problem
+			123 !message	failed
+		Note that the message in the reply is not quoted.
+
+saveAndExit	Perform the equivalent of closing Vim: ":confirm qall".
+		If there are no changed files or the user does not cancel the
+		operation Vim exits and no result is sent back.  The IDE can
+		consider closing the connection as a successful result.
+		If the user cancels the operation the number of modified
+		buffers that remains is returned and Vim does not exit.
+		New in version 2.1.
+
+
+10.5 Events						*nb-events*
+
+balloonEval off len type
+		The mouse pointer rests on text for a short while.  When "len"
+		is zero, there is no selection and the pointer is at position
+		"off".  When "len" is non-zero the text from position "off" to
+		"off" + "len" is selected.
+		Only sent after "enableBalloonEval" was used for this buffer.
+		"type" is not yet defined.
+		Not implemented yet.
+
+balloonText text
+		Used when 'ballooneval' is set and the mouse pointer rests on
+		some text for a moment.  "text" is a string, the text under
+		the mouse pointer.
+		New in version 2.1.
+
+buttonRelease button lnum col
+		Report which button was pressed and the location of the cursor
+		at the time of the release.  Only for buffers that are owned
+		by NetBeans.  This event is not sent if the button was
+		released while the mouse was in the status line or in a
+		separator line. If col is less than 1 the button release was
+		in the sign area.
+		New in version 2.2.
+
+fileClosed	Not implemented.
+
+fileModified	Not implemented.
+
+fileOpened pathname open modified
+		A file was opened by the user.
+		Arguments:
+		   pathname	string	  name of the file
+		   open		boolean   always "T"
+		   modified	boolean   always "F"
+
+geometry cols rows x y
+		Report the size and position of the editor window.
+		Arguments:
+		   cols		number	  number of text columns
+		   rows		number	  number of text rows
+		   x		number	  pixel position on screen
+		   y		number	  pixel position on screen
+		Only works for Motif.
+
+insert off text
+		Text "text" has been inserted in Vim at position "off".
+		Only fired when enabled, see "startDocumentListen".
+
+invokeAction	Not implemented.
+
+keyCommand keyName
+		Reports a special key being pressed with name "keyName", which
+		is a string.
+		Supported key names:
+			F1		function key 1
+			F2		function key 2
+			...
+			F12		function key 12
+
+			' '		space (without the quotes)
+			!		exclamation mark
+			...		any other ASCII printable character
+			~		tilde
+
+			X		any unrecognized key
+
+		The key may be prepended by "C", "S" and/or "M" for Control,
+		Shift and Meta (Alt) modifiers.  If there is a modifier a dash
+		is used to separate it from the key name.  For example:
+		"C-F2".
+		ASCII characters are new in version 2.1.
+
+keyAtPos keyName lnum/col
+		Like "keyCommand" and also report the line number and column
+		of the cursor.
+		New in version 2.1.
+
+killed		A file was closed by the user.  Only for files that have been
+		assigned a number by the IDE.
+
+newDotAndMark off off
+		Reports the position of the cursor being at "off" bytes into
+		the buffer.  Only sent just before a "keyCommand" event.
+
+quit		Not implemented.
+
+remove off len
+		Text was deleted in Vim at position "off" with byte length
+		"len".
+		Only fired when enabled, see "startDocumentListen".
+
+revert		Not implemented.
+
+save		The buffer has been saved and is now unmodified.
+		Only fired when enabled, see "startDocumentListen".
+
+startupDone	The editor has finished its startup work and is ready for
+		editing files.
+		New in version 2.1.
+
+unmodified	The buffer is now unmodified.
+		Only fired when enabled, see "startDocumentListen".
+
+version vers	Report the version of the interface implementation.  Vim
+		reports "2.2" (including the quotes).
+
+
+10.6 Special messages					*nb-special*
+
+These messages do not follow the style of the messages above.  They are
+terminated by a newline character.
+
+ACCEPT		Not used.
+
+AUTH password	editor -> IDE: First message that the editor sends to the IDE.
+		Must contain the password for the socket server, as specified
+		with the |-nb| argument.  No quotes are used!
+
+DISCONNECT	IDE -> editor: break the connection.  The editor will exit.
+		The IDE must only send this message when there are no unsaved
+		changes!
+
+DETACH		IDE -> editor: break the connection without exiting the
+		editor.  Used when the IDE exits without bringing down the
+		editor as well.
+		New in version 2.1.
+
+REJECT		Not used.
+
+==============================================================================
+11. Known problems					*netbeans-problems*
+
+NUL bytes are not possible.  For editor -> IDE they will appear as NL
+characters.  For IDE -> editor they cannot be inserted.
+
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
new file mode 100644
index 0000000..5dfb582
--- /dev/null
+++ b/runtime/doc/options.txt
@@ -0,0 +1,6826 @@
+*options.txt*	For Vim version 7.0aa.  Last change: 2004 Jun 08
+
+
+		  VIM REFERENCE MANUAL	  by Bram Moolenaar
+
+
+Options							*options*
+
+1. Setting options			|set-option|
+2. Automatically setting options	|auto-setting|
+3. Options summary			|option-summary|
+
+For an overview of options see help.txt |option-list|.
+
+Vim has a number of internal variables and switches which can be set to
+achieve special effects.  These options come in three forms:
+	boolean		can only be on or off		*boolean* *toggle*
+	number		has a numeric value
+	string		has a string value
+
+==============================================================================
+1. Setting options					*set-option*
+
+							*:se* *:set*
+:se[t]			Show all options that differ from their default value.
+
+:se[t] all		Show all but terminal options.
+
+:se[t] termcap		Show all terminal options.  Note that in the GUI the
+			key codes are not shown, because they are generated
+			internally and can't be changed.  Changing the terminal
+			codes in the GUI is not useful either...
+
+								*E518* *E519*
+:se[t] {option}?	Show value of {option}.
+
+:se[t] {option}		Toggle option: set, switch it on.
+			Number option: show value.
+			String option: show value.
+
+:se[t] no{option}	Toggle option: Reset, switch it off.
+
+:se[t] {option}!   or
+:se[t] inv{option}	Toggle option: Invert value. {not in Vi}
+
+				*:set-default* *:set-&* *:set-&vi* *:set-&vim*
+:se[t] {option}&	Reset option to its default value.  May depend on the
+			current value of 'compatible'. {not in Vi}
+:se[t] {option}&vi	Reset option to its Vi default value. {not in Vi}
+:se[t] {option}&vim	Reset option to its Vim default value. {not in Vi}
+
+:se[t] all&		Set all options, except terminal options, to their
+			default value.	The values of 'term', 'lines' and
+			'columns' are not changed. {not in Vi}
+
+						*:set-args* *E487* *E521*
+:se[t] {option}={value}		or
+:se[t] {option}:{value}
+			Set string or number option to {value}.
+			For numeric options the value can be given in decimal,
+			hex (preceded with 0x) or octal (preceded with '0')
+			(hex and octal are only available for machines which
+			have the strtol() function).
+			The old value can be inserted by typing 'wildchar' (by
+			default this is a <Tab> or CTRL-E if 'compatible' is
+			set).  See |cmdline-completion|.
+			White space between {option} and '=' is allowed and
+			will be ignored.  White space between '=' and {value}
+			is not allowed.
+			See |option-backslash| for using white space and
+			backslashes in {value}.
+
+:se[t] {option}+={value}				*:set+=*
+			Add the {value} to a number option, or append the
+			{value} to a string option.  When the option is a
+			comma separated list, a comma is added, unless the
+			value was empty.
+			If the option is a list of flags, superfluous flags
+			are removed.  Otherwise there is no check for doubled
+			values.  You can avoid this by removing a value first.
+			Example: >
+				:set guioptions-=T guioptions+=T
+<			Also see |:set-args| above.
+			{not in Vi}
+
+:se[t] {option}^={value}				*:set^=*
+			Multiply the {value} to a number option, or prepend
+			the {value} to a string option.  When the option is a
+			comma separated list, a comma is added, unless the
+			value was empty.
+			Also see |:set-args| above.
+			{not in Vi}
+
+:se[t] {option}-={value}				*:set-=*
+			Subtract the {value} from a number option, or remove
+			the {value} from a string option, if it is there.
+			If the {value} is not found in a string option, there
+			is no error or warning.  When the option is a comma
+			separated list, a comma is deleted, unless the option
+			becomes empty.
+			When the option is a list of flags, {value} must be
+			exactly as they appear in the option.  Remove flags
+			one by one to avoid problems.
+			Also see |:set-args| above.
+			{not in Vi}
+
+The {option} arguments to ":set" may be repeated.  For example: >
+	:set ai nosi sw=3 ts=3
+If you make an error in one of the arguments, an error message will be given
+and the following arguments will be ignored.
+
+							*:set-verbose*
+When 'verbose' is non-zero, displaying an option value will also tell where it
+was last set.  Example: >
+	:verbose set shiftwidth cindent?
+	  shiftwidth=4
+		  Last set from modeline
+	  cindent
+		  Last set from /usr/local/share/vim/vim60/ftplugin/c.vim
+This is only done when specific option values are requested, not for ":set
+all" or ":set" without an argument.
+When the option was set by hand there is no "Last set" message.  There is only
+one value for all local options with the same name.  Thus the message applies
+to the option name, not necessarily its value.
+When the option was set while executing a function, user command or
+autocommand, the script in which it was defined is reported.
+Note that an option may also have been set as a side effect of setting
+'compatible'.
+{not available when compiled without the +eval feature}
+
+							*:set-termcap* *E522*
+For {option} the form "t_xx" may be used to set a termcap option.  This will
+override the value from the termcap.  You can then use it in a mapping.  If
+the "xx" part contains special characters, use the <t_xx> form: >
+	:set <t_#4>=^[Ot
+This can also be used to translate a special code for a normal key.  For
+example, if Alt-b produces <Esc>b, use this: >
+	:set <M-b>=^[b
+(the ^[ is a real <Esc> here, use CTRL-V <Esc> to enter it)
+The advantage over a mapping is that it works in all situations.
+
+The listing from ":set" looks different from Vi.  Long string options are put
+at the end of the list.  The number of options is quite large.	The output of
+"set all" probably does not fit on the screen, causing Vim to give the
+|more-prompt|.
+
+							*option-backslash*
+To include white space in a string option value it has to be preceded with a
+backslash.  To include a backslash you have to use two.  Effectively this
+means that the number of backslashes in an option value is halved (rounded
+down).
+A few examples: >
+   :set tags=tags\ /usr/tags	    results in "tags /usr/tags"
+   :set tags=tags\\,file	    results in "tags\,file"
+   :set tags=tags\\\ file	    results in "tags\ file"
+
+The "|" character separates a ":set" command from a following command.	To
+include the "|" in the option value, use "\|" instead.	This example sets the
+'titlestring' option to "hi|there": >
+   :set titlestring=hi\|there
+This sets the 'titlestring' option to "hi" and 'iconstring' to "there": >
+   :set titlestring=hi|set iconstring=there
+
+For MS-DOS and WIN32 backslashes in file names are mostly not removed.	More
+precise: For options that expect a file name (those where environment
+variables are expanded) a backslash before a normal file name character is not
+removed.  But a backslash before a special character (space, backslash, comma,
+etc.) is used like explained above.
+There is one special situation, when the value starts with "\\": >
+   :set dir=\\machine\path	    results in "\\machine\path"
+   :set dir=\\\\machine\\path	    results in "\\machine\path"
+   :set dir=\\path\\file	    results in "\\path\file" (wrong!)
+For the first one the start is kept, but for the second one the backslashes
+are halved.  This makes sure it works both when you expect backslashes to be
+halved and when you expect the backslashes to be kept.	The third gives a
+result which is probably not what you want.  Avoid it.
+
+				*add-option-flags* *remove-option-flags*
+				*E539* *E550* *E551* *E552*
+Some options are a list of flags.  When you want to add a flag to such an
+option, without changing the existing ones, you can do it like this: >
+   :set guioptions+=a
+Remove a flag from an option like this: >
+   :set guioptions-=a
+This removes the 'a' flag from 'guioptions'.
+Note that you should add or remove one flag at a time.	If 'guioptions' has
+the value "ab", using "set guioptions-=ba" won't work, because the string "ba"
+doesn't appear.
+
+			   *:set_env* *expand-env* *expand-environment-var*
+Environment variables in most string options will be expanded.	If the
+environment variable exists the '$' and the following environment variable
+name is replaced with its value.  If it does not exist the '$' and the name
+are not modified.  Any non-id character (not a letter, digit or '_') may
+follow the environment variable name.  That character and what follows is
+appended to the value of the environment variable.  Examples: >
+   :set term=$TERM.new
+   :set path=/usr/$INCLUDE,$HOME/include,.
+When adding or removing a string from an option with ":set opt-=val" or ":set
+opt+=val" the expansion is done before the adding or removing.
+
+
+Handling of local options			*local-options*
+
+Some of the options only apply to a window or buffer.  Each window or buffer
+has its own copy of this option, thus can each have their own value.  This
+allows you to set 'list' in one window but not in another.  And set
+'shiftwidth' to 3 in one buffer and 4 in another.
+
+The following explains what happens to these local options in specific
+situations.  You don't really need to know all of this, since Vim mostly uses
+the option values you would expect.  Unfortunately, doing what the user
+expects is a bit complicated...
+
+When splitting a window, the local options are copied to the new window.  Thus
+right after the split the contents of the two windows look the same.
+
+When editing a new buffer, its local option values must be initialized.  Since
+the local options of the current buffer might be specifically for that buffer,
+these are not used.  Instead, for each buffer-local option there also is a
+global value, which is used for new buffers.  With ":set" both the local and
+global value is changed.  With "setlocal" only the local value is changed,
+thus this value is not used when editing a new buffer.
+
+When editing a buffer that has been edited before, the last used window
+options are used again.  If this buffer has been edited in this window, the
+values from back then are used.  Otherwise the values from the window where
+the buffer was edited last are used.
+
+It's possible to set a local window option specifically for a type of buffer.
+When you edit another buffer in the same window, you don't want to keep
+using these local window options.  Therefore Vim keeps a global value of the
+local window options, which is used when editing another buffer.  Each window
+has its own copy of these values.  Thus these are local to the window, but
+global to all buffers in the window.  With this you can do: >
+	:e one
+	:set list
+	:e two
+Now the 'list' option will also be set in "two", since with the ":set list"
+command you have also set the global value. >
+	:set nolist
+	:e one
+	:setlocal list
+	:e two
+Now the 'list' option is not set, because ":set nolist" resets the global
+value, ":setlocal list" only changes the local value and ":e two" gets the
+global value.  Note that if you do this next: >
+	:e one
+You will not get back the 'list' value as it was the last time you edited
+"one".	The options local to a window are not remembered for each buffer.
+
+							*:setl* *:setlocal*
+:setl[ocal] ...		Like ":set" but set only the value local to the
+			current buffer or window.  Not all options have a
+			local value.  If the option does not have a local
+			value the global value is set.
+			With the "all" argument: display all local option's
+			local values.
+			Without argument: Display all local option's local
+			values which are different from the default.
+			When displaying a specific local option, show the
+			local value.  For a global option the global value is
+			shown (but that might change in the future).
+			{not in Vi}
+
+:setl[ocal] {option}<	Set the local value of {option} to its global value.
+			{not in Vi}
+
+							*:setg* *:setglobal*
+:setg[lobal] ...	Like ":set" but set only the global value for a local
+			option without changing the local value.
+			When displaying an option, the global value is shown.
+			With the "all" argument: display all local option's
+			global values.
+			Without argument: display all local option's global
+			values which are different from the default.
+			{not in Vi}
+
+For buffer-local and window-local options:
+	Command		 global value	    local value ~
+      :set option=value	     set		set
+ :setlocal option=value	      -			set
+:setglobal option=value	     set		 -
+      :set option?	      -		       display
+ :setlocal option?	      -		       display
+:setglobal option?	    display		 -
+
+
+Global options with a local value			*global-local*
+
+Options are global when you mostly use one value for all buffers.  For some
+global options it's useful to sometimes have a different local value.  You can
+set the local value with ":setlocal".  That buffer will then use the local
+value, while other buffers continue using the global value.
+
+For example, you have two windows, both on C source code.  They use the global
+'makeprg' option.  If you do this in one of the two windows: >
+	:set makeprg=gmake
+then the other window will switch to the same value.  There is no need to set
+the 'makeprg' option in the other C source window too.
+However, if you start editing a Perl file in a new window, you want to use
+another 'makeprog' for it, without changing the value used for the C source
+files.	You use this command: >
+	:setlocal makeprg=perlmake
+You can switch back to using the global value by making the local value empty: >
+	:setlocal makeprg=
+This only works for a string option.  For a boolean option you need to use the
+"<" flag, like this: >
+	:setlocal autoread<
+Note that for non-boolean options using "<" copies the global value to the
+local value, it doesn't switch back to using the global value (that matters
+when changing the global value later).
+Note: In the future more global options can be made global-local.  Using
+":setlocal" on a global option might work differently then.
+
+
+Setting the filetype
+
+:setf[iletype] {filetype}			*:setf* *:setfiletype*
+			Set the 'filetype' option to {filetype}, but only if
+			not done yet in a sequence of (nested) autocommands.
+			This is short for: >
+				:if !did_filetype()
+				:  setlocal filetype={filetype}
+				:endif
+<			This command is used in a filetype.vim file to avoid
+			setting the 'filetype' option twice, causing different
+			settings and syntax files to be loaded.
+			{not in Vi}
+
+:bro[wse] se[t]			*:set-browse* *:browse-set* *:opt* *:options*
+:opt[ions]		Open a window for viewing and setting all options.
+			Options are grouped by function.
+			Offers short help for each option.  Hit <CR> on the
+			short help to open a help window with more help for
+			the option.
+			Modify the value of the option and hit <CR> on the
+			"set" line to set the new value.  For window and
+			buffer specific options, the last accessed window is
+			used to set the option value in, unless this is a help
+			window, in which case the window below help window is
+			used (skipping the option-window).
+			{not available when compiled without the |+eval| or
+			|+autocmd| features}
+
+								*$HOME*
+Using "~" is like using "$HOME", but it is only recognized at the start of an
+option and after a space or comma.
+
+On Unix systems "~user" can be used too.  It is replaced by the home directory
+of user "user".  Example: >
+    :set path=~mool/include,/usr/include,.
+
+On Unix systems the form "${HOME}" can be used too.  The name between {} can
+contain non-id characters then.  Note that if you want to use this for the
+"gf" command, you need to add the '{' and '}' characters to 'isfname'.
+
+NOTE: expanding environment variables and "~/" is only done with the ":set"
+command, not when assigning a value to an option with ":let".
+
+
+Note the maximum length of an expanded option is limited.  How much depends on
+the system, mostly it is something like 256 or 1024 characters.
+
+							*:fix* *:fixdel*
+:fix[del]		Set the value of 't_kD':
+				't_kb' is     't_kD' becomes	~
+				  CTRL-?	CTRL-H
+				not CTRL-?	CTRL-?
+
+			(CTRL-? is 0177 octal, 0x7f hex) {not in Vi}
+
+			If your delete key terminal code is wrong, but the
+			code for backspace is alright, you can put this in
+			your .vimrc: >
+				:fixdel
+<			This works no matter what the actual code for
+			backspace is.
+
+			If the backspace key terminal code is wrong you can
+			use this: >
+				:if &term == "termname"
+				:  set t_kb=^V<BS>
+				:  fixdel
+				:endif
+<			Where "^V" is CTRL-V and "<BS>" is the backspace key
+			(don't type four characters!).	Replace "termname"
+			with your terminal name.
+
+			If your <Delete> key sends a strange key sequence (not
+			CTRL-? or CTRL-H) you cannot use ":fixdel".  Then use: >
+				:if &term == "termname"
+				:  set t_kD=^V<Delete>
+				:endif
+<			Where "^V" is CTRL-V and "<Delete>" is the delete key
+			(don't type eight characters!).  Replace "termname"
+			with your terminal name.
+
+							*Linux-backspace*
+			Note about Linux: By default the backspace key
+			produces CTRL-?, which is wrong.  You can fix it by
+			putting this line in your rc.local: >
+				echo "keycode 14 = BackSpace" | loadkeys
+<
+							*NetBSD-backspace*
+			Note about NetBSD: If your backspace doesn't produce
+			the right code, try this: >
+				xmodmap -e "keycode 22 = BackSpace"
+<			If this works, add this in your .Xmodmap file: >
+				keysym 22 = BackSpace
+<			You need to restart for this to take effect.
+
+==============================================================================
+2. Automatically setting options			*auto-setting*
+
+Besides changing options with the ":set" command, there are three alternatives
+to set options automatically for one or more files:
+
+1. When starting Vim initializations are read from various places.  See
+   |initialization|.  Most of them are performed for all editing sessions,
+   and some of them depend on the directory where Vim is started.
+   You can create an initialization file with |:mkvimrc|, |:mkview| and
+   |:mksession|.
+2. If you start editing a new file, the automatic commands are executed.
+   This can be used to set options for files matching a particular pattern and
+   many other things.  See |autocommand|.
+3. If you start editing a new file, and the 'modeline' option is on, a
+   number of lines at the beginning and end of the file are checked for
+   modelines.  This is explained here.
+
+					*modeline* *vim:* *vi:* *ex:* *E520*
+There are two forms of modelines.  The first form:
+	[text]{white}{vi:|vim:|ex:}[white]{options}
+
+[text]		any text or empty
+{white}		at least one blank character (<Space> or <Tab>)
+{vi:|vim:|ex:}	the string "vi:", "vim:" or "ex:"
+[white]		optional white space
+{options}	a list of option settings, separated with white space or ':',
+		where each part between ':' is the argument for a ":set"
+		command
+
+Example: >
+   vi:noai:sw=3 ts=6
+
+The second form (this is compatible with some versions of Vi):
+
+	[text]{white}{vi:|vim:|ex:}[white]se[t] {options}:[text]
+
+[text]		any text or empty
+{white}		at least one blank character (<Space> or <Tab>)
+{vi:|vim:|ex:}	the string "vi:", "vim:" or "ex:"
+[white]		optional white space
+se[t]		the string "set " or "se " (note the space)
+{options}	a list of options, separated with white space, which is the
+		argument for a ":set" command
+:		a colon
+[text]		any text or empty
+
+Example: >
+   /* vim: set ai tw=75: */
+
+The white space before {vi:|vim:|ex:} is required.  This minimizes the chance
+that a normal word like "lex:" is caught.  There is one exception: "vi:" and
+"vim:" can also be at the start of the line (for compatibility with version
+3.0).  Using "ex:" at the start of the line will be ignored (this could be
+short for "example:").
+
+							*modeline-local*
+The options are set like with ":setlocal": The new value only applies to the
+buffer that contains the window.  Although it's possible to set global options
+from a modeline, this is unusual.  If you have two windows open and the files
+in it set the same global option to a different value, the result depends on
+which one was opened last.
+
+							*modeline-version*
+If the modeline is only to be used for some versions of Vim, the version
+number can be specified where "vim:" is used:
+	vim{vers}:	version {vers} or later
+	vim<{vers}:	version before {vers}
+	vim={vers}:	version {vers}
+	vim>{vers}:	version after {vers}
+{vers} is 600 for Vim 6.0 (hundred times the major version plus minor).
+For example, to use a modeline only for Vim 6.0 and later: >
+	/* vim600: set foldmethod=marker: */
+To use a modeline for Vim before version 5.7: >
+	/* vim<570: set sw=4: */
+There can be no blanks between "vim" and the ":".
+
+
+The number of lines that are checked can be set with the 'modelines' option.
+If 'modeline' is off or 'modelines' is 0 no lines are checked.
+
+Note that for the first form all of the rest of the line is used, thus a line
+like: >
+   /* vi:ts=4: */
+will give an error message for the trailing "*/".  This line is OK: >
+   /* vi:set ts=4: */
+
+If an error is detected the rest of the line is skipped.
+
+If you want to include a ':' in a set command precede it with a '\'.  The
+backslash in front of the ':' will be removed.	Example: >
+   /* vi:set dir=c\:\tmp: */
+This sets the 'dir' option to "c:\tmp".  Only a single backslash before the
+':' is removed.  Thus to include "\:" you have to specify "\\:".
+
+No other commands than "set" are supported, for security reasons (somebody
+might create a Trojan horse text file with modelines).
+
+Hint: If you would like to do something else than setting an option, you could
+define an autocommand that checks the file for a specific string.  For
+example: >
+	au BufReadPost * if getline(1) =~ "VAR" | call SetVar() | endif
+And define a function SetVar() that does something with the line containing
+"VAR".
+
+==============================================================================
+3. Options summary					*option-summary*
+
+In the list below all the options are mentioned with their full name and with
+an abbreviation if there is one.  Both forms may be used.
+
+In this document when a boolean option is "set" that means that ":set option"
+is entered.  When an option is "reset", ":set nooption" is used.
+
+For some options there are two default values: The "Vim default", which is
+used when 'compatible' is not set, and the "Vi default", which is used when
+'compatible' is set.
+
+Most options are the same in all windows and buffers.  There are a few that
+are specific to how the text is presented in a window.	These can be set to a
+different value in each window.  For example the 'list' option can be set in
+one window and reset in another for the same text, giving both types of view
+at the same time.  There are a few options that are specific to a certain
+file.  These can have a different value for each file or buffer.  For example
+the 'textwidth' option can be 78 for a normal text file and 0 for a C
+program.
+
+	global			one option for all buffers and windows
+	local to window		each window has its own copy of this option
+	local to buffer		each buffer has its own copy of this option
+
+When creating a new window the option values from the currently active window
+are used as a default value for the window-specific options.  For the
+buffer-specific options this depends on the 's' and 'S' flags in the
+'cpoptions' option.  If 's' is included (which is the default) the values for
+buffer options are copied from the currently active buffer when a buffer is
+first entered.	If 'S' is present the options are copied each time the buffer
+is entered, this is almost like having global options.	If 's' and 'S' are not
+present, the options are copied from the currently active buffer when the
+buffer is created.
+
+Not all options are supported in all versions.	To test if option "foo" can be
+used with ":set" use "exists('&foo')".	This doesn't mean the value is
+actually remembered and works.	Some options are hidden, which means that you
+can set them but the value is not remembered.  To test if option "foo" is
+really supported use "exists('+foo')".
+
+							*E355*
+A jump table for the options with a short description can be found at |Q_op|.
+
+					*'aleph'* *'al'* *aleph* *Aleph*
+'aleph' 'al'		number	(default 128 for MS-DOS, 224 otherwise)
+			global
+			{not in Vi}
+			{only available when compiled with the |+rightleft|
+			feature}
+	The ASCII code for the first letter of the Hebrew alphabet.  The
+	routine that maps the keyboard in Hebrew mode, both in Insert mode
+	(when hkmap is set) and on the command-line (when hitting CTRL-_)
+	outputs the Hebrew characters in the range [aleph..aleph+26].
+	aleph=128 applies to PC code, and aleph=224 applies to ISO 8859-8.
+	See |rileft.txt|.
+
+			*'allowrevins'* *'ari'* *'noallowrevins'* *'noari'*
+'allowrevins' 'ari'	boolean	(default off)
+			global
+			{not in Vi}
+			{only available when compiled with the |+rightleft|
+			feature}
+	Allow CTRL-_ in Insert and Command-line mode.  This is default off, to
+	avoid that users that accidentally type CTRL-_ instead of SHIFT-_ get
+	into reverse Insert mode, and don't know how to get out.  See
+	'revins'.
+	NOTE: This option is reset when 'compatible' is set.
+
+			 *'altkeymap'* *'akm'* *'noaltkeymap'* *'noakm'*
+'altkeymap' 'akm'	boolean (default off)
+			global
+			{not in Vi}
+			{only available when compiled with the |+farsi|
+			feature}
+	When on, the second language is Farsi. In editing mode CTRL-_ toggles
+	the keyboard map between Farsi and English, when 'allowrevins' set.
+
+	When off, the keyboard map toggles between Hebrew and English. This
+	is useful to start the Vim in native mode i.e. English (left-to-right
+	mode) and have default second language Farsi or Hebrew (right-to-left
+	mode).	See |farsi.txt|.
+
+						*'ambiwidth'* *'ambw'*
+'ambiwidth' 'ambw'	string (default: "single")
+			global
+			{not in Vi}
+			{only available when compiled with the |+multi_byte|
+			feature}
+	Only effective when 'encoding' is "utf-8" or another Unicode encoding.
+	Tells Vim what to do with characters with East Asian Width Class
+	Ambiguous (such as Euro, Registered Sign, Copyright Sign, Greek
+	letters, Cyrillic letters).
+
+	There are currently two possible values:
+	"single":	Use the same width as characters in US-ASCII. This is
+			expected by most users.
+	"double":	Use twice the width of ASCII characters.
+
+	There are a number of CJK fonts for which the width of glyphs for
+	those characters are solely based on how many octets they take in
+	legacy/traditional CJK encodings.  In those encodings, Euro,
+	Registered sign, Greek/Cyrillic letters are represented by two octets,
+	therefore those fonts have "wide" glyphs for them. This is also
+	true of some line drawing characters used to make tables in text
+	file. Therefore, when a CJK font is used for GUI Vim or
+	Vim is running inside a terminal (emulators) that uses a CJK font
+	(or Vim is run inside an xterm invoked with "-cjkwidth" option.),
+	this option should be set to "double" to match the width perceived
+	by Vim with the width of glyphs in the font.  Perhaps it also has
+	to be set to "double" under CJK Windows 9x/ME or Windows 2k/XP
+	when the system locale is set to one of CJK locales.  See Unicode
+	Standard Annex #11 (http://www.unicode.org/reports/tr11).
+
+			*'antialias'* *'anti'* *'noantialias'* *'noanti'*
+'antialias' 'anti'	boolean (default: off)
+			global
+			{not in Vi}
+			{only available when compiled with GUI enabled
+			on Mac OS X}
+	This option only has an effect in the GUI version of Vim on Mac OS X
+	v10.2 or later.  When on, Vim will use smooth ("antialiased") fonts,
+	which can be easier to read at certain sizes on certain displays.
+	Setting this option can sometimes cause problems if 'guifont' is set
+	to its default (empty string).
+
+			*'autochdir'* *'acd'* *'noautochdir'* *'noacd'*
+'autochdir' 'acd'	boolean (default off)
+			global
+			{not in Vi}
+			{only available when compiled with the
+			|+netbeans_intg| or |+sun_workshop| feature}
+	When on, Vim will change its value for the current working directory
+	whenever you open a file, switch buffers, delete a buffer or
+	open/close a window. It will change to the directory containing the
+	file which was opened or selected.  This option is provided for
+	backward compatibility with the Vim released with Sun ONE Studio 4
+	Enterprise Edition.
+
+				*'arabic'* *'arab'* *'noarabic'* *'noarab'*
+'arabic' 'arab'		boolean (default off)
+			local to window
+			{not in Vi}
+			{only available when compiled with the |+arabic|
+			feature}
+	This option can be set to start editing Arabic text.
+	Setting this option will:
+	- Set the 'rightleft' option, unless 'termbidi' is set.
+	- Set the 'arabicshape' option, unless 'termbidi' is set.
+	- Set the 'keymap' option to "arabic"; in Insert mode CTRL-^ toggles
+	  between typing English and Arabic key mapping.
+	- Set the 'delcombine' option
+	Note that 'encoding' must be "utf-8" for working with Arabic text.
+
+	Resetting this option will:
+	- Reset the 'rightleft' option.
+	- Disable the use of 'keymap' (without changing its value).
+	Note that 'arabicshape' and 'delcombine' are not reset (it is a global
+	option.
+	Also see |arabic.txt|.
+
+					*'arabicshape'* *'arshape'*
+					*'noarabicshape'* *'noarshape'*
+'arabicshape' 'arshape'	boolean (default on)
+			global
+			{not in Vi}
+			{only available when compiled with the |+arabic|
+			feature}
+	When on and 'termbidi' is off, the required visual character
+	corrections that need to take place for displaying the Arabic language
+	take affect.  Shaping, in essence, gets enabled; the term is a broad
+	one which encompasses:
+	  a) the changing/morphing of characters based on their location
+	     within a word (initial, medial, final and stand-alone).
+	  b) the enabling of the ability to compose characters
+	  c) the enabling of the required combining of some characters
+	When disabled the character display reverts back to each character's
+	true stand-alone form.
+	Arabic is a complex language which requires other settings, for
+	further details see |arabic.txt|.
+
+			*'autoindent'* *'ai'* *'noautoindent'* *'noai'*
+'autoindent' 'ai'	boolean	(default off)
+			local to buffer
+	Copy indent from current line when starting a new line (typing <CR>
+	in Insert mode or when using the "o" or "O" command).  If you do not
+	type anything on the new line except <BS> or CTRL-D and then type
+	<Esc> or <CR>, the indent is deleted again.  When autoindent is on,
+	formatting (with the "gq" command or when you reach 'textwidth' in
+	Insert mode) uses the indentation of the first line.
+	When 'smartindent' or 'cindent' is on the indent is changed in
+	a different way.
+	The 'autoindent' option is reset when the 'paste' option is set.
+	{small difference from Vi: After the indent is deleted when typing
+	<Esc> or <CR>, the cursor position when moving up or down is after the
+	deleted indent; Vi puts the cursor somewhere in the deleted indent}.
+
+				 *'autoread'* *'ar'* *'noautoread'* *'noar'*
+'autoread' 'ar'		boolean	(default off)
+			global or local to buffer |global-local|
+			{not in Vi}
+	When a file has been detected to have been changed outside of Vim and
+	it has not been changed inside of Vim, automatically read it again.
+	When the file has been deleted this is not done.  |timestamp|
+	If this option has a local value, use this command to switch back to
+	using the global value: >
+		:set autoread<
+<
+				 *'autowrite'* *'aw'* *'noautowrite'* *'noaw'*
+'autowrite' 'aw'	boolean	(default off)
+			global
+	Write the contents of the file, if it has been modified, on each
+	:next, :rewind, :last, :first, :previous, :stop, :suspend, :tag, :!,
+	:make, CTRL-] and CTRL-^ command; and when a CTRL-O, CTRL-I,
+	'{A-Z0-9}, or `{A-Z0-9} command takes one to another file.
+	Note that for some commands the 'autowrite' option is not used, see
+	'autowriteall' for that.
+
+			 *'autowriteall'* *'awa'* *'noautowriteall'* *'noawa'*
+'autowriteall' 'awa'	boolean	(default off)
+			global
+			{not in Vi}
+	Like 'autowrite', but also used for commands ":edit", ":enew", ":quit",
+	":qall", ":exit", ":xit", ":recover" and closing the Vim window.
+	Setting this option also implies that Vim behaves like 'autowrite' has
+	been set.
+
+							*'background'* *'bg'*
+'background' 'bg'	string	(default "dark" or "light")
+			global
+			{not in Vi}
+	When set to "dark", Vim will try to use colors that look good on a
+	dark background.  When set to "light", Vim will try to use colors that
+	look good on a light background.  Any other value is illegal.
+	Vim tries to set the default value according to the terminal used.
+	This will not always be correct.
+	Setting this option does not change the background color, it tells Vim
+	what the background color looks like.  For changing the background
+	color, see |:hi-normal|.
+
+	When 'background' is set Vim will adjust the default color groups for
+	the new value.	But the colors used for syntax highlighting will not
+	change.
+	When a color scheme is loaded (the "colors_name" variable is set)
+	setting 'background' will cause the color scheme to be reloaded.  If
+	the color scheme adjusts to the value of 'background' this will work.
+	However, if the color scheme sets 'background' itself the effect may
+	be undone.  First delete the "colors_name" variable when needed.
+
+	When setting 'background' to the default value with: >
+		:set background&
+<	Vim will guess the value.  In the GUI this should work correctly,
+	in other cases Vim might not be able to guess the right value.
+
+	When starting the GUI, the default value for 'background' will be
+	"light".  When the value is not set in the .gvimrc, and Vim detects
+	that the background is actually quite dark, 'background' is set to
+	"dark".  But this happens only AFTER the .gvimrc file has been read
+	(because the window needs to be opened to find the actual background
+	color).  To get around this, force the GUI window to be opened by
+	putting a ":gui" command in the .gvimrc file, before where the value
+	of 'background' is used (e.g., before ":syntax on").
+	Normally this option would be set in the .vimrc file.  Possibly
+	depending on the terminal name.  Example: >
+		:if &term == "pcterm"
+		:  set background=dark
+		:endif
+<	When this option is set, the default settings for the highlight groups
+	will change.  To use other settings, place ":highlight" commands AFTER
+	the setting of the 'background' option.
+	This option is also used in the "$VIMRUNTIME/syntax/syntax.vim" file
+	to select the colors for syntax highlighting.  After changing this
+	option, you must load syntax.vim again to see the result.  This can be
+	done with ":syntax on".
+
+							*'backspace'* *'bs'*
+'backspace' 'bs'	string	(default "")
+			global
+			{not in Vi}
+	Influences the working of <BS>, <Del>, CTRL-W and CTRL-U in Insert
+	mode.  This is a list of items, separated by commas.  Each item allows
+	a way to backspace over something:
+	value	effect	~
+	indent	allow backspacing over autoindent
+	eol	allow backspacing over line breaks (join lines)
+	start	allow backspacing over the start of insert; CTRL-W and CTRL-U
+		stop once at the start of insert.
+
+	When the value is empty, Vi compatible backspacing is used.
+
+	For backwards compatibility with version 5.4 and earlier:
+	value	effect	~
+	  0	same as ":set backspace=" (Vi compatible)
+	  1	same as ":set backspace=indent,eol"
+	  2	same as ":set backspace=indent,eol,start"
+
+	See |:fixdel| if your <BS> or <Del> key does not do what you want.
+	NOTE: This option is set to "" when 'compatible' is set.
+
+				*'backup'* *'bk'* *'nobackup'* *'nobk'*
+'backup' 'bk'		boolean	(default off)
+			global
+			{not in Vi}
+	Make a backup before overwriting a file.  Leave it around after the
+	file has been successfully written.  If you do not want to keep the
+	backup file, but you do want a backup while the file is being
+	written, reset this option and set the 'writebackup' option (this is
+	the default).  If you do not want a backup file at all reset both
+	options (use this if your file system is almost full).	See the
+	|backup-table| for more explanations.
+	When the 'backupskip' pattern matches, a backup is not made anyway.
+	When 'patchmode' is set, the backup may be renamed to become the
+	oldest version of a file.
+	NOTE: This option is reset when 'compatible' is set.
+
+						*'backupcopy'* *'bkc'*
+'backupcopy' 'bkc'	string	(Vi default for Unix: "yes", otherwise: "auto")
+			global
+			{not in Vi}
+	When writing a file and a backup is made, this option tells how it's
+	done.  This is a comma separated list of words.
+
+	The main values are:
+	"yes"	make a copy of the file and overwrite the original one
+	"no"	rename the file and write a new one
+	"auto"	one of the previous, what works best
+
+	Extra values that can be combined with the ones above are:
+	"breaksymlink"	always break symlinks when writing
+	"breakhardlink"	always break hardlinks when writing
+
+	Making a copy and overwriting the original file:
+	- Takes extra time to copy the file.
+	+ When the file has special attributes, is a (hard/symbolic) link or
+	  has a resource fork, all this is preserved.
+	- When the file is a link the backup will have the name of the link,
+	  not of the real file.
+
+	Renaming the file and writing a new one:
+	+ It's fast.
+	- Sometimes not all attributes of the file can be copied to the new
+	  file.
+	- When the file is a link the new file will not be a link.
+
+	The "auto" value is the middle way: When Vim sees that renaming file
+	is possible without side effects (the attributes can be passed on and
+	and the file is not a link) that is used.  When problems are expected,
+	a copy will be made.
+
+	The "breaksymlink" and "breakhardlink" values can be used in
+	combination with any of "yes", "no" and "auto".  When included, they
+	force Vim to always break either symbolic or hard links by doing
+	exactly what the "no" option does, renaming the original file to
+	become the backup and writing a new file in its place.  This can be
+	useful for example in source trees where all the files are symbolic or
+	hard links and any changes should stay in the local source tree, not
+	be propagated back to the original source.
+							*crontab*
+	One situation where "no" and "auto" will cause problems: A program
+	that opens a file, invokes Vim to edit that file, and then tests if
+	the open file was changed (through the file descriptor) will check the
+	backup file instead of the newly created file.	"crontab -e" is an
+	example.
+
+	When a copy is made, the original file is truncated and then filled
+	with the new text.  This means that protection bits, owner and
+	symbolic links of the original file are unmodified.  The backup file
+	however, is a new file, owned by the user who edited the file.	The
+	group of the backup is set to the group of the original file.  If this
+	fails, the protection bits for the group are made the same as for
+	others.
+
+	When the file is renamed this is the other way around: The backup has
+	the same attributes of the original file, and the newly written file
+	is owned by the current user.  When the file was a (hard/symbolic)
+	link, the new file will not!  That's why the "auto" value doesn't
+	rename when the file is a link.  The owner and group of the newly
+	written file will be set to the same ones as the original file, but
+	the system may refuse to do this.  In that case the "auto" value will
+	again not rename the file.
+
+						*'backupdir'* *'bdir'*
+'backupdir' 'bdir'	string	(default for Amiga: ".,t:",
+				 for MS-DOS and Win32: ".,c:/tmp,c:/temp"
+				 for Unix: ".,~/tmp,~/")
+			global
+			{not in Vi}
+	List of directories for the backup file, separated with commas.
+	- The backup file will be created in the first directory in the list
+	  where this is possible.
+	- Empty means that no backup file will be created ('patchmode' is
+	  impossible!).  Writing may fail because of this.
+	- A directory "." means to put the backup file in the same directory
+	  as the edited file.
+	- A directory starting with "./" (or ".\" for MS-DOS et.al.) means to
+	  put the backup file relative to where the edited file is.  The
+	  leading "." is replaced with the path name of the edited file.
+	  ("." inside a directory name has no special meaning).
+	- Spaces after the comma are ignored, other spaces are considered part
+	  of the directory name.  To have a space at the start of a directory
+	  name, precede it with a backslash.
+	- To include a comma in a directory name precede it with a backslash.
+	- A directory name may end in an '/'.
+	- Environment variables are expanded |:set_env|.
+	- Careful with '\' characters, type one before a space, type two to
+	  get one in the option (see |option-backslash|), for example: >
+	    :set bdir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces
+<	- For backwards compatibility with Vim version 3.0 a '>' at the start
+	  of the option is removed.
+	See also 'backup' and 'writebackup' options.
+	If you want to hide your backup files on Unix, consider this value: >
+		:set backupdir=./.backup,~/.backup,.,/tmp
+<	You must create a ".backup" directory in each directory and in your
+	home directory for this to work properly.
+	The use of |:set+=| and |:set-=| is preferred when adding or removing
+	directories from the list.  This avoids problems when a future version
+	uses another default.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'backupext'* *'bex'* *E589*
+'backupext' 'bex'	string	(default "~", for VMS: "_")
+			global
+			{not in Vi}
+	String which is appended to a file name to make the name of the
+	backup file.  The default is quite unusual, because this avoids
+	accidentally overwriting existing files with a backup file.  You might
+	prefer using ".bak", but make sure that you don't have files with
+	".bak" that you want to keep.
+
+						*'backupskip'* *'bsk'*
+'backupskip' 'bsk'	string	(default: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*")
+			global
+			{not in Vi}
+			{not available when compiled without the |+wildignore|
+			feature}
+	A list of file patterns.  When one of the patterns matches with the
+	name of the file which is written, no backup file is created.  Both
+	the specified file name and the full path name of the file are used.
+	The pattern is used like with |:autocmd|, see |autocmd-patterns|.
+	Watch out for special characters, see |option-backslash|.
+	When $TMPDIR, $TMP or $TEMP is not defined, it is not used for the
+	default value. "/tmp/*" is only used for Unix.
+
+						*'balloondelay'* *'bdlay'*
+'balloondelay' 'bdlay'	number	(default: 600)
+			global
+			{not in Vi}
+			{only available when compiled with the |+balloon_eval|
+			feature}
+	Delay in milliseconds before a balloon may pop up.  See |balloon-eval|.
+
+		       *'ballooneval'* *'beval'* *'noballooneval'* *'nobeval'*
+'ballooneval' 'beval'	boolean	(default off)
+			global
+			{not in Vi}
+			{only available when compiled with the |+balloon_eval|
+			and |+sun_workshop| or |+netbeans_intg| features}
+	Switch on the |balloon-eval| functionality.
+
+				     *'binary'* *'bin'* *'nobinary'* *'nobin'*
+'binary' 'bin'		boolean	(default off)
+			local to buffer
+			{not in Vi}
+	This option should be set before editing a binary file.  You can also
+	use the |-b| Vim argument.  When this option is switched on a few
+	options will be changed (also when it already was on):
+		'textwidth'  will be set to 0
+		'wrapmargin' will be set to 0
+		'modeline'   will be off
+		'expandtab'  will be off
+	Also, 'fileformat' and 'fileformats' options will not be used, the
+	file is read and written like 'fileformat' was "unix" (a single <NL>
+	separates lines).
+	The 'fileencoding' and 'fileencodings' options will not be used, the
+	file is read without conversion.
+	NOTE: When you start editing a(nother) file while the 'bin' option is
+	on, settings from autocommands may change the settings again (e.g.,
+	'textwidth'), causing trouble when editing.  You might want to set
+	'bin' again when the file has been loaded.
+	The previous values of these options are remembered and restored when
+	'bin' is switched from on to off.  Each buffer has its own set of
+	saved option values.
+	To edit a file with 'binary' set you can use the |++bin| argument.
+	This avoids you have to do ":set bin", which would have effect for all
+	files you edit.
+	When writing a file the <EOL> for the last line is only written if
+	there was one in the original file (normally Vim appends an <EOL> to
+	the last line if there is none; this would make the file longer).  See
+	the 'endofline' option.
+
+			*'bioskey'* *'biosk'* *'nobioskey'* *'nobiosk'*
+'bioskey' 'biosk'	boolean	(default on)
+			global
+			{not in Vi}  {only for MS-DOS}
+	When on the bios is called to obtain a keyboard character.  This works
+	better to detect CTRL-C, but only works for the console.  When using a
+	terminal over a serial port reset this option.
+	Also see |'conskey'|.
+
+							*'bomb'* *'nobomb'*
+'bomb'			boolean	(default off)
+			local to buffer
+			{not in Vi}
+			{only available when compiled with the |+multi_byte|
+			feature}
+	When writing a file and the following conditions are met, a BOM (Byte
+	Order Mark) is prepended to the file:
+	- this option is on
+	- the 'binary' option is off
+	- 'fileencoding' is "utf-8", "ucs-2", "ucs-4" or one of the little/big
+	  endian variants.
+	Some applications use the BOM to recognize the encoding of the file.
+	Often used for UCS-2 files on MS-Windows.  For other applications it
+	causes trouble, for example: "cat file1 file2" makes the BOM of file2
+	appear halfway the resulting file.
+	When Vim reads a file and 'fileencodings' starts with "ucs-bom", a
+	check for the presence of the BOM is done and 'bomb' set accordingly.
+	Unless 'binary' is set, it is removed from the first line, so that you
+	don't see it when editing.  When you don't change the options, the BOM
+	will be restored when writing the file.
+
+						*'breakat'* *'brk'*
+'breakat' 'brk'		string	(default " ^I!@*-+;:,./?")
+			global
+			{not in Vi}
+			{not available when compiled without the  |+linebreak|
+			feature}
+	This option lets you choose which characters might cause a line
+	break if 'linebreak' is on.
+
+						*'browsedir'* *'bsdir'*
+'browsedir' 'bsdir'	string	(default for "last")
+			global
+			{not in Vi} {only for Motif and Win32 GUI}
+	Which directory to use for the file browser:
+	   last		Use same directory as with last file browser.
+	   buffer	Use the directory of the related buffer.
+	   current	Use the current directory.
+	   {path}	Use the specified directory
+
+						*'bufhidden'* *'bh'*
+'bufhidden' 'bh'	string (default: "")
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the |+quickfix|
+			feature}
+	This option specifies what happens when a buffer is no longer
+	displayed in a window:
+	  <empty>	follow the global 'hidden' option
+	  hide		hide the buffer (don't unload it), also when 'hidden'
+			is not set
+	  unload	unload the buffer, also when 'hidden' is set or using
+			|:hide|
+	  delete	delete the buffer from the buffer list, also when
+			'hidden' is set or using |:hide|, like using
+			|:bdelete|
+	  wipe		wipe out the buffer from the buffer list, also when
+			'hidden' is set or using |:hide|, like using
+			|:bwipeout|
+
+	This option is used together with 'buftype' and 'swapfile' to specify
+	special kinds of buffers.   See |special-buffers|.
+
+			*'buflisted'* *'bl'* *'nobuflisted'* *'nobl'* *E85*
+'buflisted' 'bl'	boolean (default: on)
+			local to buffer
+			{not in Vi}
+	When this option is set, the buffer shows up in the buffer list.  If
+	it is reset it is not used for ":bnext", "ls", the Buffers menu, etc.
+	This option is reset by Vim for buffers that are only used to remember
+	a file name or marks.  Vim sets it when starting to edit a buffer.
+	But not when moving to a buffer with ":buffer".
+
+						*'buftype'* *'bt'* *E382*
+'buftype' 'bt'		string (default: "")
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the |+quickfix|
+			feature}
+	The value of this option specifies the type of a buffer:
+	  <empty>	normal buffer
+	  nofile	buffer which is not related to a file and will not be
+			written
+	  nowrite	buffer which will not be written
+	  quickfix	quickfix buffer, contains list of errors |:cwindow|
+	  help		help buffer (you are not supposed to set this
+			manually)
+
+	This option is used together with 'bufhidden' and 'swapfile' to
+	specify special kinds of buffers.   See |special-buffers|.
+
+	Be careful with changing this option, it can have many side effects!
+
+	A "quickfix" buffer is only used for the error list.  This value is
+	set by the |:cwindow| command and you are not supposed to change it.
+
+	"nofile" and "nowrite" buffers are similar:
+	both:		The buffer is not to be written to disk, ":w" doesn't
+			work (":w filename" does work though).
+	both:		The buffer is never considered to be |'modified'|.
+			There is no warning when the changes will be lost, for
+			example when you quit Vim.
+	both:		A swap file is only created when using too much memory
+			(when 'swapfile' has been reset there is never a swap
+			file).
+	nofile only:	The buffer name is fixed, it is not handled like a
+			file name.  It is not modified in response to a |:cd|
+			command.
+
+						*'casemap'* *'cmp'*
+'casemap' 'cmp'		string	(default: "internal,keepascii")
+			global
+			{not in Vi}
+	Specifies details about changing the case of letters.  It may contain
+	these words, separated by a comma:
+	internal	Use internal case mapping functions, the current
+			locale does not change the case mapping.  This only
+			matters when 'encoding' is a Unicode encoding.	When
+			"internal" is omitted, the towupper() and towlower()
+			system library functions are used when available.
+	keepascii	For the ASCII characters (0x00 to 0x7f) use the US
+			case mapping, the current locale is not effective.
+			This probably only matters for Turkish.
+
+						*'cdpath'* *'cd'* *E344* *E346*
+'cdpath' 'cd'		string	(default: equivalent to $CDPATH or ",,")
+			global
+			{not in Vi}
+			{not available when compiled without the
+			|+file_in_path| feature}
+	This is a list of directories which will be searched when using the
+	|:cd| and |:lcd| commands, provided that the directory being searched
+	for has a relative path (not starting with "/", "./" or "../").
+	The 'cdpath' option's value has the same form and semantics as
+	|'path'|.  Also see |file-searching|.
+	The default value is taken from $CDPATH, with a "," prepended to look
+	in the current directory first.
+	If the default value taken from $CDPATH is not what you want, include
+	a modified version of the following command in your vimrc file to
+	override it: >
+	  :let &cdpath = ',' . substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g')
+<	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+	(parts of 'cdpath' can be passed to the shell to expand file names).
+
+						*'cedit'*
+'cedit'			string	(Vi default: "", Vim default: CTRL-F)
+			global
+			{not in Vi}
+			{not available when compiled without the |+vertsplit|
+			feature}
+	The key used in Command-line Mode to open the command-line window.
+	The default is CTRL-F when 'compatible' is off.
+	Only non-printable keys are allowed.
+	The key can be specified as a single character, but it is difficult to
+	type.  The preferred way is to use the <> notation.  Examples: >
+		:set cedit=<C-Y>
+		:set cedit=<Esc>
+<	|Nvi| also has this option, but it only uses the first character.
+	See |cmdwin|.
+
+				*'charconvert'* *'ccv'* *E202* *E214* *E513*
+'charconvert' 'ccv'	string (default "")
+			global
+			{only available when compiled with the |+multi_byte|
+			feature and the |+eval| feature}
+			{not in Vi}
+	An expression that is used for character encoding conversion.  It is
+	evaluated when a file that is to be read or has been written has a
+	different encoding from what is desired.
+	'charconvert' is not used when the internal iconv() function is
+	supported and is able to do the conversion.  Using iconv() is
+	preferred, because it is much faster.
+	'charconvert' is not used when reading stdin |--|, because there is no
+	file to convert from.  You will have to save the text in a file first.
+	The expression must return zero or an empty string for success,
+	non-zero for failure.
+	The possible encoding names encountered are in 'encoding'.
+	Additionally, names given in 'fileencodings' and 'fileencoding' are
+	used.
+	Conversion between "latin1", "unicode", "ucs-2", "ucs-4" and "utf-8"
+	is done internally by Vim, 'charconvert' is not used for this.
+	'charconvert' is also used to convert the viminfo file, if the 'c'
+	flag is present in 'viminfo'.  Also used for Unicode conversion.
+	Example: >
+		set charconvert=CharConvert()
+		fun CharConvert()
+		  system("recode "
+			\ . v:charconvert_from . ".." . v:charconvert_to
+			\ . " <" . v:fname_in . " >" v:fname_out)
+		  return v:shell_error
+		endfun
+<	The related Vim variables are:
+		v:charconvert_from	name of the current encoding
+		v:charconvert_to	name of the desired encoding
+		v:fname_in		name of the input file
+		v:fname_out		name of the output file
+	Note that v:fname_in and v:fname_out will never be the same.
+	Note that v:charconvert_from and v:charconvert_to may be different
+	from 'encoding'.  Vim internally uses UTF-8 instead of UCS-2 or UCS-4.
+	Encryption is not done by Vim when using 'charconvert'.  If you want
+	to encrypt the file after conversion, 'charconvert' should take care
+	of this.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+				   *'cindent'* *'cin'* *'nocindent'* *'nocin'*
+'cindent' 'cin'		boolean	(default off)
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the |+cindent|
+			feature}
+	Enables automatic C program indenting  See 'cinkeys' to set the keys
+	that trigger reindenting in insert mode and 'cinoptions' to set your
+	preferred indent style.
+	If 'indentexpr' is not empty, it overrules 'cindent'.
+	If 'lisp' is not on and both 'indentexpr' and 'equalprg' are empty,
+	the "=" operator indents using this algorithm rather than calling an
+	external program.
+	See |C-indenting|.
+	When you don't like the way 'cindent' works, try the 'smartindent'
+	option or 'indentexpr'.
+	This option is not used when 'paste' is set.
+	NOTE: This option is reset when 'compatible' is set.
+
+							*'cinkeys'* *'cink'*
+'cinkeys' 'cink'	string	(default "0{,0},0),:,0#,!^F,o,O,e")
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the |+cindent|
+			feature}
+	A list of keys that, when typed in Insert mode, cause reindenting of
+	the current line.  Only used if 'cindent' is on and 'indentexpr' is
+	empty.
+	For the format of this option see |cinkeys-format|.
+	See |C-indenting|.
+
+						*'cinoptions'* *'cino'*
+'cinoptions' 'cino'	string	(default "")
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the |+cindent|
+			feature}
+	The 'cinoptions' affect the way 'cindent' reindents lines in a C
+	program.  See |cinoptions-values| for the values of this option, and
+	|C-indenting| for info on C indenting in general.
+
+
+						*'cinwords'* *'cinw'*
+'cinwords' 'cinw'	string	(default "if,else,while,do,for,switch")
+			local to buffer
+			{not in Vi}
+			{not available when compiled without both the
+			|+cindent| and the |+smartindent| features}
+	These keywords start an extra indent in the next line when
+	'smartindent' or 'cindent' is set.  For 'cindent' this is only done at
+	an appropriate place (inside {}).
+	Note that 'ignorecase' isn't used for 'cinwords'.  If case doesn't
+	matter, include the keyword both the uppercase and lowercase:
+	"if,If,IF".
+
+						*'clipboard'* *'cb'*
+'clipboard' 'cb'	string	(default "autoselect,exclude:cons\|linux"
+						  for X-windows, "" otherwise)
+			global
+			{not in Vi}
+			{only in GUI versions or when the |+xterm_clipboard|
+			feature is included}
+	This option is a list of comma separated names.
+	These names are recognized:
+
+	unnamed		When included, Vim will use the clipboard register '*'
+			for all yank, delete, change and put operations which
+			would normally go to the unnamed register.  When a
+			register is explicitly specified, it will always be
+			used regardless of whether "unnamed" is in 'clipboard'
+			or not.  The clipboard register can always be
+			explicitly accessed using the "* notation.  Also see
+			|gui-clipboard|.
+
+	autoselect	Works like the 'a' flag in 'guioptions': If present,
+			then whenever Visual mode is started, or the Visual
+			area extended, Vim tries to become the owner of the
+			windowing system's global selection or put the
+			selected text on the clipboard used by the selection
+			register "*.  See |guioptions_a| and |quotestar| for
+			details.  When the GUI is active, the 'a' flag in
+			'guioptions' is used, when the GUI is not active, this
+			"autoselect" flag is used.
+			Also applies to the modeless selection.
+
+	autoselectml	Like "autoselect", but for the modeless selection
+			only.  Compare to the 'A' flag in 'guioptions'.
+
+	exclude:{pattern}
+			Defines a pattern that is matched against the name of
+			the terminal 'term'.  If there is a match, no
+			connection will be made to the X server.  This is
+			useful in this situation:
+			- Running Vim in a console.
+			- $DISPLAY is set to start applications on another
+			  display.
+			- You do not want to connect to the X server in the
+			  console, but do want this in a terminal emulator.
+			To never connect to the X server use: >
+				exclude:.*
+<			This has the same effect as using the |-X| argument.
+			Note that when there is no connection to the X server
+			the window title won't be restored and the clipboard
+			cannot be accessed.
+			The value of 'magic' is ignored, {pattern} is
+			interpreted as if 'magic' was on.
+			The rest of the option value will be used for
+			{pattern}, this must be the last entry.
+
+						*'cmdheight'* *'ch'*
+'cmdheight' 'ch'	number	(default 1)
+			global
+			{not in Vi}
+	Number of screen lines to use for the command-line.  Helps avoiding
+	|hit-enter| prompts.
+
+						*'cmdwinheight'* *'cwh'*
+'cmdwinheight' 'cwh'	number	(default 7)
+			global
+			{not in Vi}
+			{not available when compiled without the |+vertsplit|
+			feature}
+	Number of screen lines to use for the command-line window. |cmdwin|
+
+						*'columns'* *'co'* *E594*
+'columns' 'co'		number	(default 80 or terminal width)
+			global
+			{not in Vi}
+	Number of columns of the screen.  Normally this is set by the terminal
+	initialization and does not have to be set by hand.
+	When Vim is running in the GUI or in a resizable window, setting this
+	option will cause the window size to be changed.  When you only want
+	to use the size for the GUI, put the command in your |gvimrc| file.
+	When you set this option and Vim is unable to change the physical
+	number of columns of the display, the display may be messed up.
+
+					*'comments'* *'com'* *E524* *E525*
+'comments' 'com'	string	(default
+				"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-")
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the |+comments|
+			feature}
+	A comma separated list of strings that can start a comment line.  See
+	|format-comments|.  See |option-backslash| about using backslashes to
+	insert a space.
+
+					*'commentstring'* *'cms'* *E537*
+'commentstring' 'cms'	string	(default "/*%s*/")
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the |+folding|
+			feature}
+	A template for a comment.  The "%s" in the value is replaced with the
+	comment text.  Currently only used to add markers for folding, see
+	|fold-marker|.
+
+			*'compatible'* *'cp'* *'nocompatible'* *'nocp'*
+'compatible' 'cp'	boolean	(default on, off when a .vimrc file is found)
+			global
+			{not in Vi}
+	This option has the effect of making Vim either more Vi-compatible, or
+	make Vim behave in a more useful way.
+	This is a special kind of option, because when it's set or reset,
+	other options are also changed as a side effect.  CAREFUL: Setting or
+	resetting this option can have a lot of unexpected effects: Mappings
+	are interpreted in another way, undo behaves differently, etc.	If you
+	set this option in your vimrc file, you should probably put it at the
+	very start.
+	By default this option is on and the Vi defaults are used for the
+	options.  This default was chosen for those people who want to use Vim
+	just like Vi, and don't even (want to) know about the 'compatible'
+	option.
+	When a ".vimrc" file is found while Vim is starting up, this option is
+	switched off, and all options that have not been modified will be set
+	to the Vim defaults.  Effectively, this means that when a ".vimrc"
+	file exists, Vim will use the Vim defaults, otherwise it will use the
+	Vi defaults.  (Note: This doesn't happen for the system-wide vimrc
+	file).	Also see |compatible-default|.
+	You can also set this option with the "-C" argument, and reset it with
+	"-N".  See |-C| and |-N|.
+	Switching this option off makes the Vim defaults be used for options
+	that have a different Vi and Vim default value.  See the options
+	marked with a '+' below.  Other options are not modified.
+	At the moment this option is set, several other options will be set
+	or reset to make Vim as Vi-compatible as possible.  See the table
+	below.	This can be used if you want to revert to Vi compatible
+	editing.
+	See also 'cpoptions'.
+
+	option		+ set value	effect	~
+
+	'allowrevins'	  off		no CTRL-_ command
+	'backupcopy'	  Unix: "yes"	  backup file is a copy
+			  others: "auto"  copy or rename backup file
+	'backspace'	  ""		normal backspace
+	'backup'	  off		no backup file
+	'cindent'	  off		no C code indentation
+	'cedit'		+ ""		no key to open the |cmdwin|
+	'cpoptions'	+ (all flags)	Vi-compatible flags
+	'cscopetag'	  off		don't use cscope for ":tag"
+	'cscopetagorder'  0		see |cscopetagorder|
+	'cscopeverbose'	  off		see |cscopeverbose|
+	'digraph'	  off		no digraphs
+	'esckeys'	+ off		no <Esc>-keys in Insert mode
+	'expandtab'	  off		tabs not expanded to spaces
+	'fileformats'	+ ""		no automatic file format detection,
+			  "dos,unix"	except for DOS, Windows and OS/2
+	'formatoptions'	+ "vt"		Vi compatible formatting
+	'gdefault'	  off		no default 'g' flag for ":s"
+	'history'	+ 0		no commandline history
+	'hkmap'		  off		no Hebrew keyboard mapping
+	'hkmapp'	  off		no phonetic Hebrew keyboard mapping
+	'hlsearch'	  off		no highlighting of search matches
+	'incsearch'	  off		no incremental searching
+	'indentexpr'	  ""		no indenting by expression
+	'insertmode'	  off		do not start in Insert mode
+	'iskeyword'	+ "@,48-57,_"	keywords contain alphanumeric
+						characters and '_'
+	'joinspaces'	  on		insert 2 spaces after period
+	'modeline'	+ off		no modelines
+	'more'		+ off		no pauses in listings
+	'revins'	  off		no reverse insert
+	'ruler'		  off		no ruler
+	'scrolljump'	  1		no jump scroll
+	'scrolloff'	  0		no scroll offset
+	'shiftround'	  off		indent not rounded to shiftwidth
+	'shortmess'	+ ""		no shortening of messages
+	'showcmd'	+ off		command characters not shown
+	'showmode'	+ off		current mode not shown
+	'smartcase'	  off		no automatic ignore case switch
+	'smartindent'	  off		no smart indentation
+	'smarttab'	  off		no smart tab size
+	'softtabstop'	  0		tabs are always 'tabstop' positions
+	'startofline'	  on		goto startofline with some commands
+	'tagrelative'	+ off		tag file names are not relative
+	'textauto'	+ off		no automatic textmode detection
+	'textwidth'	  0		no automatic line wrap
+	'tildeop'	  off		tilde is not an operator
+	'ttimeout'	  off		no terminal timeout
+	'whichwrap'	+ ""		left-right movements don't wrap
+	'wildchar'	+ CTRL-E	only when the current value is <Tab>
+					use CTRL-E for cmdline completion
+	'writebackup'	  on or off	depends on +writebackup feature
+
+						*'complete'* *'cpt'* *E535*
+'complete' 'cpt'	string	(default: ".,w,b,u,t,i")
+			local to buffer
+			{not in Vi}
+	This option specifies how keyword completion |ins-completion| works
+	when CTRL-P or CTRL-N are used.  It is also used for whole-line
+	completion |i_CTRL-X_CTRL-L|.  It indicates the type of completion
+	and the places to scan.  It is a comma separated list of flags:
+	.	scan the current buffer ('wrapscan' is ignored)
+	w	scan buffers from other windows
+	b	scan other loaded buffers that are in the buffer list
+	u	scan the unloaded buffers that are in the buffer list
+	U	scan the buffers that are not in the buffer list
+	k	scan the files given with the 'dictionary' option
+	k{dict}	scan the file {dict}.  Several "k" flags can be given,
+		patterns are valid too.  For example: >
+			:set cpt=k/usr/dict/*,k~/spanish
+<	s	scan the files given with the 'thesaurus' option
+	s{tsr}	scan the file {tsr}.  Several "s" flags can be given, patterns
+		are valid too.
+	i	scan current and included files
+	d	scan current and included files for defined name or macro
+		|i_CTRL-X_CTRL-D|
+	]	tag completion
+	t	same as "]"
+
+	Unloaded buffers are not loaded, thus their autocmds |:autocmd| are
+	not executed, this may lead to unexpected completions from some files
+	(gzipped files for example).  Unloaded buffers are not scanned for
+	whole-line completion.
+
+	The default is ".,w,b,u,t,i", which means to scan:
+	   1. the current buffer
+	   2. buffers in other windows
+	   3. other loaded buffers
+	   4. unloaded buffers
+	   5. tags
+	   6. included files
+
+	As you can see, CTRL-N and CTRL-P can be used to do any 'iskeyword'-
+	based expansion (eg dictionary |i_CTRL-X_CTRL-K|, included patterns
+	|i_CTRL-X_CTRL-I|, tags |i_CTRL-X_CTRL-]| and normal expansions)
+
+				*'confirm'* *'cf'* *'noconfirm'* *'nocf'*
+'confirm' 'cf'		boolean (default off)
+			global
+			{not in Vi}
+	When 'confirm' is on, certain operations that would normally
+	fail because of unsaved changes to a buffer, e.g. ":q" and ":e",
+	instead raise a |dialog| asking if you wish to save the current
+	file(s).  You can still use a ! to unconditionally |abandon| a buffer.
+	If 'confirm' is off you can still activate confirmation for one
+	command only (this is most useful in mappings) with the |:confirm|
+	command.
+	Also see the |confirm()| function and the 'v' flag in 'guioptions'.
+
+			*'conskey'* *'consk'* *'noconskey'* *'noconsk'*
+'conskey' 'consk'	boolean	(default off)
+			global
+			{not in Vi}  {only for MS-DOS}
+	When on direct console I/O is used to obtain a keyboard character.
+	This should work in most cases.  Also see |'bioskey'|.	Together,
+	three methods of console input are available:
+	'conskey'   'bioskey'	    action ~
+	   on	     on or off	    direct console input
+	   off		on	    BIOS
+	   off		off	    STDIN
+
+			*'copyindent'* *'ci'* *'nocopyindent'* *'noci'*
+'copyindent' 'ci'	boolean	(default off)
+			local to buffer
+			{not in Vi}
+	Copy the structure of the existing lines indent when autoindenting a
+	new line.  Normally the new indent is reconstructed by a series of
+	tabs followed by spaces as required (unless |'expandtab'| is enabled,
+	in which case only spaces are used).  Enabling this option makes the
+	new line copy whatever characters were used for indenting on the
+	existing line.  If the new indent is greater than on the existing
+	line, the remaining space is filled in the normal manner.
+	NOTE: 'copyindent' is reset when 'compatible' is set.
+	Also see 'preserveindent'.
+
+						*'cpoptions'* *'cpo'*
+'cpoptions' 'cpo'	string	(Vim default: "aABceFs",
+				 Vi default:  all flags)
+			global
+			{not in Vi}
+	A sequence of single character flags.  When a character is present
+	this indicates vi-compatible behavior.	This is used for things where
+	not being vi-compatible is mostly or sometimes preferred.
+	'cpoptions' stands for "compatible-options".
+	Commas can be added for readability.
+	To avoid problems with flags that are added in the future, use the
+	"+=" and "-=" feature of ":set" |add-option-flags|.
+	NOTE: This option is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+	    contains	behavior	~
+								*cpo-a*
+		a	When included, a ":read" command with a file name
+			argument will set the alternate file name for the
+			current window.
+								*cpo-A*
+		A	When included, a ":write" command with a file name
+			argument will set the alternate file name for the
+			current window.
+								*cpo-b*
+		b	"\|" in a ":map" command is recognized as the end of
+			the map command.  The '\' is included in the mapping,
+			the text after the '|' is interpreted as the next
+			command.  Use a CTRL-V instead of a backslash to
+			include the '|' in the mapping.  Applies to all
+			mapping, abbreviation, menu and autocmd commands.
+			See also |map_bar|.
+								*cpo-B*
+		B	A backslash has no special meaning in mappings,
+			abbreviations and the "to" part of the menu commands.
+			Remove this flag to be able to use a backslash like a
+			CTRL-V.  For example, the command ":map X \<Esc>"
+			results in X being mapped to:
+				'B' included:	"\^["	 (^[ is a real <Esc>)
+				'B' excluded:	"<Esc>"  (5 characters)
+				('<' excluded in both cases)
+								*cpo-c*
+		c	Searching continues at the end of any match at the
+			cursor position, but not further than the start of the
+			next line.  When not present searching continues
+			one character from the cursor position.  With 'c'
+			"abababababab" only gets three matches when repeating
+			"/abab", without 'c' there are five matches.
+								*cpo-C*
+		C	Do not concatenate sourced lines that start with a
+			backslash.  See |line-continuation|.
+								*cpo-d*
+		d	Using "./" in the 'tags' option doesn't mean to use
+			the tags file relative to the current file, but the
+			tags file in the current directory.
+								*cpo-D*
+		D	Can't use CTRL-K to enter a digraph after Normal mode
+			commands with a character argument, like |r|, |f| and
+			|t|.
+								*cpo-e*
+		e	When executing a register with ":@r", always add a
+			<CR> to the last line, also when the register is not
+			linewise.  If this flag is not present, the register
+			is not linewise and the last line does not end in a
+			<CR>, then the last line is put on the command-line
+			and can be edited before hitting <CR>.
+								*cpo-E*
+		E	It is an error when using "y", "d", "c", "g~", "gu" or
+			"gU" on an Empty region.  The operators only work when
+			at least one character is to be operate on.  Example:
+			This makes "y0" fail in the first column.
+								*cpo-f*
+		f	When included, a ":read" command with a file name
+			argument will set the file name for the current buffer,
+			if the current buffer doesn't have a file name yet.
+								*cpo-F*
+		F	When included, a ":write" command with a file name
+			argument will set the file name for the current
+			buffer, if the current buffer doesn't have a file name
+			yet.
+								*cpo-g*
+		g	Goto line 1 when using ":edit" without argument.
+								*cpo-i*
+		i	When included, interrupting the reading of a file will
+			leave it modified.
+								*cpo-j*
+		j	When joining lines, only add two spaces after a '.',
+			not after '!' or '?'.  Also see 'joinspaces'.
+								*cpo-J*
+		J	A |sentence| has to be followed by two spaces after
+			the '.', '!' or '?'. A <Tab> is not recognized as
+			white space.
+								*cpo-k*
+		k	Disable the recognition of raw key codes in
+			mappings, abbreviations, and the "to" part of menu
+			commands.  For example, if <Key> sends ^[OA (where ^[
+			is <Esc>), the command ":map X ^[OA" results in X
+			being mapped to:
+				'k' included:	"^[OA"	 (3 characters)
+				'k' excluded:	"<Key>"  (one key code)
+			Also see the '<' flag below.
+								*cpo-K*
+		K	Don't wait for a key code to complete when it is
+			halfway a mapping.  This breaks mapping <F1><F1> when
+			only part of the second <F1> has been read.  It
+			enables cancelling the mapping by typing <F1><Esc>.
+								*cpo-l*
+		l	Backslash in a [] range in a search pattern is taken
+			literally, only "\]" is special  See |/[]|
+			   'l' included: "/[ \t]"  finds <Space>, '\' and 't'
+			   'l' excluded: "/[ \t]"  finds <Space> and <Tab>
+								*cpo-L*
+		L	When the 'list' option is set, 'wrapmargin',
+			'textwidth', 'softtabstop' and Virtual Replace mode
+			(see |gR|) count a <Tab> as two characters, instead of
+			the normal behavior of a <Tab>.
+								*cpo-m*
+		m	When included, a showmatch will always wait half a
+			second.  When not included, a showmatch will wait half
+			a second or until a character is typed.  |'showmatch'|
+								*cpo-M*
+		M	When excluded, "%" matching will take backslashes into
+			account.  Thus in "( \( )" and "\( ( \)" the outer
+			parenthesis match.  When included "%" ignores
+			backslashes, which is Vi compatible.
+								*cpo-n*
+		n	When included, the column used for 'number' will also
+			be used for text of wrapped lines.
+								*cpo-o*
+		o	Line offset to search command is not remembered for
+			next search.
+								*cpo-O*
+		O	Don't complain if a file is being overwritten, even
+			when it didn't exist when editing it.  This is a
+			protection against a file unexpectedly created by
+			someone else.  Vi didn't complain about this.
+								*cpo-p*
+		p	Vi compatible Lisp indenting.  When not present, a
+			slightly better algorithm is used.
+								*cpo-r*
+		r	Redo ("." command) uses "/" to repeat a search
+			command, instead of the actually used search string.
+								*cpo-R*
+		R	Remove marks from filtered lines.  Without this flag
+			marks are kept like |:keepmarks| was used.
+								*cpo-s*
+		s	Set buffer options when entering the buffer for the
+			first time.  This is like it is in Vim version 3.0.
+			And it is the default.	If not present the options are
+			set when the buffer is created.
+								*cpo-S*
+		S	Set buffer options always when entering a buffer
+			(except 'readonly', 'fileformat', 'filetype' and
+			'syntax').  This is the (most) Vi compatible setting.
+			The options are set to the values in the current
+			buffer.  When you change an option and go to another
+			buffer, the value is copied.  Effectively makes the
+			buffer options global to all buffers.
+
+			's'    'S'     copy buffer options
+			no     no      when buffer created
+			yes    no      when buffer first entered (default)
+			 X     yes     each time when buffer entered (vi comp.)
+								*cpo-t*
+		t	Search pattern for the tag command is remembered for
+			"n" command.  Otherwise Vim only puts the pattern in
+			the history for search pattern, but doesn't change the
+			last used search pattern.
+								*cpo-u*
+		u	Undo is Vi compatible.	See |undo-two-ways|.
+								*cpo-v*
+		v	Backspaced characters remain visible on the screen in
+			Insert mode.  Without this flag the characters are
+			erased from the screen right away.  With this flag the
+			screen newly typed text overwrites backspaced
+			characters.
+								*cpo-w*
+		w	When using "cw" on a blank character, only change one
+			character and not all blanks until the start of the
+			next word.
+								*cpo-W*
+		W	Don't overwrite a readonly file.  When omitted, ":w!"
+			overwrites a readonly file, if possible.
+								*cpo-x*
+		x	<Esc> on the command-line executes the command-line.
+			The default in Vim is to abandon the command-line,
+			because <Esc> normally aborts a command.  |c_<Esc>|
+								*cpo-y*
+		y	A yank command can be redone with ".".
+								*cpo-!*
+		!	When redoing a filter command, use the last used
+			external command, whatever it was.  Otherwise the last
+			used -filter- command is used.
+								*cpo-$*
+		$	When making a change to one line, don't redisplay the
+			line, but put a '$' at the end of the changed text.
+			The changed text will be overwritten when you type the
+			new text.  The line is redisplayed if you type any
+			command that moves the cursor from the insertion
+			point.
+								*cpo-%*
+		%	Vi-compatible matching is done for the "%" command.
+			Does not recognize "#if", "#endif", etc.
+			Does not recognize "/*" and "*/".
+			Parens inside single and double quotes are also
+			counted, causing a string that contains a paren to
+			disturb the matching.  For example, in a line like
+			"if (strcmp("foo(", s))" the first paren does not
+			match the last one.  When this flag is not included,
+			parens inside single and double quotes are treated
+			specially.  When matching a paren outside of quotes,
+			everything inside quotes is ignored.  When matching a
+			paren inside quotes, it will find the matching one (if
+			there is one).	This works very well for C programs.
+								*cpo-star*
+		*	Use ":*" in the same way as ":@".  When not included,
+			":*" is an alias for ":'<,'>", select the Visual area.
+								*cpo-<*
+		<	Disable the recognition of special key codes in |<>|
+			form in mappings, abbreviations, and the "to" part of
+			menu commands.	For example, the command
+			":map X <Tab>" results in X being mapped to:
+				'<' included:	"<Tab>"  (5 characters)
+				'<' excluded:	"^I"	 (^I is a real <Tab>)
+			Also see the 'k' flag above.
+
+						*'cscopepathcomp'* *'cspc'*
+'cscopepathcomp' 'cspc'	number	(default 0)
+			global
+			{not available when compiled without the |+cscope|
+			feature}
+			{not in Vi}
+	Determines how many components of the path to show in a list of tags.
+	See |cscopepathcomp|.
+
+						*'cscopeprg'* *'csprg'*
+'cscopeprg' 'csprg'	string	(default "cscope")
+			global
+			{not available when compiled without the |+cscope|
+			feature}
+			{not in Vi}
+	Specifies the command to execute cscope.  See |cscopeprg|.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'cscopequickfix'* *'csqf'*
+'cscopequickfix' 'csqf' string	(default "")
+			global
+			{not available when compiled without the |+cscope|
+			or |+quickfix| features}
+			{not in Vi}
+	Specifies whether to use quickfix window to show cscope results.
+	See |cscopequickfix|.
+
+				*'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'*
+'cscopetag' 'cst'	boolean (default off)
+			global
+			{not available when compiled without the |+cscope|
+			feature}
+			{not in Vi}
+	Use cscope for tag commands.  See |cscope-options|.
+	NOTE: This option is reset when 'compatible' is set.
+
+						*'cscopetagorder'* *'csto'*
+'cscopetagorder' 'csto'	number	(default 0)
+			global
+			{not available when compiled without the |+cscope|
+			feature}
+			{not in Vi}
+	Determines the order in which ":cstag" performs a search.  See
+	|cscopetagorder|.
+	NOTE: This option is set to 0 when 'compatible' is set.
+
+					*'cscopeverbose'* *'csverb'*
+					*'nocscopeverbose'* *'nocsverb'*
+'cscopeverbose' 'csverb' boolean (default off)
+			global
+			{not available when compiled without the |+cscope|
+			feature}
+			{not in Vi}
+	Give messages when adding a cscope database.  See |cscopeverbose|.
+	NOTE: This option is reset when 'compatible' is set.
+
+						*'debug'*
+'debug'			string	(default "")
+			global
+			{not in Vi}
+	When set to "msg", error messages that would otherwise be omitted will
+	be given anyway.  This is useful when debugging 'foldexpr' or
+	'indentexpr'.
+
+						*'define'* *'def'*
+'define' 'def'		string	(default "^\s*#\s*define")
+			global or local to buffer |global-local|
+			{not in Vi}
+	Pattern to be used to find a macro definition.	It is a search
+	pattern, just like for the "/" command.  This option is used for the
+	commands like "[i" and "[d" |include-search|.  The 'isident' option is
+	used to recognize the defined name after the match:
+		{match with 'define'}{non-ID chars}{defined name}{non-ID char}
+	See |option-backslash| about inserting backslashes to include a space
+	or backslash.
+	The default value is for C programs.  For C++ this value would be
+	useful, to include const type declarations: >
+		^\(#\s*define\|[a-z]*\s*const\s*[a-z]*\)
+<	When using the ":set" command, you need to double the backslashes!
+
+			*'delcombine'* *'deco'* *'nodelcombine'* *'nodeco'*
+'delcombine' 'deco'	boolean (default off)
+			global
+			{not in Vi}
+			{only available when compiled with the |+multi_byte|
+			feature}
+	If editing Unicode and this option is set, backspace and Normal mode
+	"x" delete each combining character on its own.  When it is off (the
+	default) the character along with its combining characters are
+	deleted.
+	Note: When 'delcombine' is set "xx" may work different from "2x"!
+
+	This is useful for Arabic, Hebrew and many other languages where one
+	may have combining characters overtop of base characters, and want
+	to remove only the combining ones.
+
+						*'dictionary'* *'dict'*
+'dictionary' 'dict'	string	(default "")
+			global or local to buffer |global-local|
+			{not in Vi}
+	List of file names, separated by commas, that are used to lookup words
+	for keyword completion commands |i_CTRL-X_CTRL-K|.  Each file should
+	contain a list of words.  This can be one word per line, or several
+	words per line, separated by non-keyword characters (white space is
+	preferred).  Maximum line length is 510 bytes.
+	To include a comma in a file name precede it with a backslash.	Spaces
+	after a comma are ignored, otherwise spaces are included in the file
+	name.  See |option-backslash| about using backslashes.
+	Where to find a list of words?
+	- On FreeBSD, there is the file "/usr/share/dict/words".
+	- In the Simtel archive, look in the "msdos/linguist" directory.
+	- In "miscfiles" of the GNU collection.
+	The use of |:set+=| and |:set-=| is preferred when adding or removing
+	directories from the list.  This avoids problems when a future version
+	uses another default.
+	Backticks cannot be used in this option for security reasons.
+
+							*'diff'* *'nodiff'*
+'diff'			boolean	(default off)
+			local to window
+			{not in Vi}
+			{not available when compiled without the |+diff|
+			feature}
+	Join the current window in the group of windows that shows differences
+	between files.	See |vimdiff|.
+
+						*'dex'* *'diffexpr'*
+'diffexpr' 'dex'	string	(default "")
+			global
+			{not in Vi}
+			{not available when compiled without the |+diff|
+			feature}
+	Expression which is evaluated to obtain an ed-style diff file from two
+	versions of a file.  See |diff-diffexpr|.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'dip'* *'diffopt'*
+'diffopt' 'dip'		string	(default "filler")
+			global
+			{not in Vi}
+			{not available when compiled without the |+diff|
+			feature}
+	Option settings for diff mode.	It can consist of the following items.
+	All are optional.  Items must be separated by a comma.
+
+		filler		Show filler lines, to keep the text
+				synchronized with a window that has inserted
+				lines at the same position.  Mostly useful
+				when windows are side-by-side and 'scrollbind'
+				is set.
+
+		context:{n}	Use a context of {n} lines between a change
+				and a fold that contains unchanged lines.
+				When omitted a context of six lines is used.
+				See |fold-diff|.
+
+		icase		Ignore changes in case of text.  "a" and "A"
+				are considered the same.  Adds the "-i" flag
+				to the "diff" command if 'diffexpr' is empty.
+
+		iwhite		Ignore changes in amount of white space.  Adds
+				the "-b" flag to the "diff" command if
+				'diffexpr' is empty.  Check the documentation
+				of the "diff" command for what this does
+				exactly.  It should ignore adding trailing
+				white space, but not leading white space.
+
+	Examples: >
+
+		:set diffopt=filler,context:4
+		:set diffopt=
+		:set diffopt=filler
+<
+				     *'digraph'* *'dg'* *'nodigraph'* *'nodg'*
+'digraph' 'dg'		boolean	(default off)
+			global
+			{not in Vi}
+			{not available when compiled without the |+digraphs|
+			feature}
+	Enable the entering of digraphs in Insert mode with {char1} <BS>
+	{char2}.  See |digraphs|.
+	NOTE: This option is reset when 'compatible' is set.
+
+						*'directory'* *'dir'*
+'directory' 'dir'	string	(default for Amiga: ".,t:",
+				 for MS-DOS and Win32: ".,c:\tmp,c:\temp"
+				 for Unix: ".,~/tmp,/var/tmp,/tmp")
+			global
+	List of directory names for the swap file, separated with commas.
+	- The swap file will be created in the first directory where this is
+	  possible.
+	- Empty means that no swap file will be used (recovery is
+	  impossible!).
+	- A directory "." means to put the swap file in the same directory as
+	  the edited file.  On Unix, a dot is prepended to the file name, so
+	  it doesn't show in a directory listing.  On MS-Windows the "hidden"
+	  attribute is set and a dot prepended if possible.
+	- A directory starting with "./" (or ".\" for MS-DOS et.al.) means to
+	  put the swap file relative to where the edited file is.  The leading
+	  "." is replaced with the path name of the edited file.
+	- For Unix and Win32, if a directory ends in two path separators, the
+	  swap file name will be built from the complete path to the file
+	  with all path separators substituted to percent '%' signs. This will
+	  ensure file name uniqueness in the preserve directory.
+	- Spaces after the comma are ignored, other spaces are considered part
+	  of the directory name.  To have a space at the start of a directory
+	  name, precede it with a backslash.
+	- To include a comma in a directory name precede it with a backslash.
+	- A directory name may end in an ':' or '/'.
+	- Environment variables are expanded |:set_env|.
+	- Careful with '\' characters, type one before a space, type two to
+	  get one in the option (see |option-backslash|), for example: >
+	    :set dir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces
+<	- For backwards compatibility with Vim version 3.0 a '>' at the start
+	  of the option is removed.
+	Using "." first in the list is recommended.  This means that editing
+	the same file twice will result in a warning.  Using "/tmp" on Unix is
+	discouraged: When the system crashes you lose the swap file.
+	"/var/tmp" is often not cleared when rebooting, thus is a better
+	choice than "/tmp".  But it can contain a lot of files, your swap
+	files get lost in the crowd.  That is why a "tmp" directory in your
+	home directory is tried first.
+	The use of |:set+=| and |:set-=| is preferred when adding or removing
+	directories from the list.  This avoids problems when a future version
+	uses another default.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+	{Vi: directory to put temp file in, defaults to "/tmp"}
+
+					*'display'* *'dy'*
+'display' 'dy'		string	(default "")
+			global
+			{not in Vi}
+	Change the way text is displayed.  This is comma separated list of
+	flags:
+	lastline	When included, as much as possible of the last line
+			in a window will be displayed.	When not included, a
+			last line that doesn't fit is replaced with "@" lines.
+	uhex		Show unprintable characters hexadecimal as <xx>
+			instead of using ^C and ~C.
+
+						*'eadirection'* *'ead'*
+'eadirection' 'ead'	string	(default "both")
+			global
+			{not in Vi}
+			{not available when compiled without the +vertsplit
+			feature}
+	Tells when the 'equalalways' option applies:
+		ver	vertically, width of windows is not affected
+		hor	horizontally, height of windows is not affected
+		both	width and height of windows is affected
+
+			   *'ed'* *'edcompatible'* *'noed'* *'noedcompatible'*
+'edcompatible' 'ed'	boolean	(default off)
+			global
+	Makes the 'g' and 'c' flags of the ":substitute" command to be
+	toggled each time the flag is given.  See |complex-change|.  See
+	also 'gdefault' option.
+	Switching this option on is discouraged!
+
+					*'encoding'* *'enc'* *E543*
+'encoding' 'enc'	string (default: "latin1" or value from $LANG)
+			global
+			{only available when compiled with the |+multi_byte|
+			feature}
+			{not in Vi}
+	Sets the character encoding used inside Vim.  It applies to text in
+	the buffers, registers, Strings in expressions, text stored in the
+	viminfo file, etc.  It sets the kind of characters which Vim can work
+	with.  See |encoding-names| for the possible values.
+
+	NOTE: Changing this option will not change the encoding of the
+	existing text in Vim.  It may cause multi-byte text to become invalid.
+	It should normally be kept at its default value, or set when Vim
+	starts up.  See |multibyte|.
+
+	NOTE: For GTK+ 2 it is highly recommended to set 'encoding' to
+	"utf-8".  Although care has been taken to allow different values of
+	'encoding', "utf-8" is the natural choice for the environment and
+	avoids unnecessary conversion overhead.  "utf-8" has not been made
+	the default to prevent different behaviour of the GUI and terminal
+	versions, and to avoid changing the encoding of newly created files
+	without your knowledge (in case 'fileencodings' is empty).
+
+	The character encoding of files can be different from 'encoding'.
+	This is specified with 'fileencoding'.	The conversion is done with
+	iconv() or as specified with 'charconvert'.
+
+	Normally 'encoding' will be equal to your current locale.  This will
+	be the default if Vim recognizes your environment settings.  If
+	'encoding' is not set to the current locale, 'termencoding' must be
+	set to convert typed and displayed text.  See |encoding-table|.
+
+	When you set this option, it fires the |EncodingChanged| autocommand
+	event so that you can set up fonts if necessary.
+
+	When the option is set, the value is converted to lowercase.  Thus
+	you can set it with uppercase values too.  Underscores are translated
+	to '-' signs.
+	When the encoding is recognized, it is changed to the standard name.
+	For example "Latin-1" becomes "latin1", "ISO_88592" becomes
+	"iso-8859-2" and "utf8" becomes "utf-8".
+
+	Note: "latin1" is also used when the encoding could not be detected.
+	This only works when editing files in the same encoding!  When the
+	actual character set is not latin1, make sure 'fileencoding' and
+	'fileencodings' are empty.  When conversion is needed, switch to using
+	utf-8.
+
+	When "unicode", "ucs-2" or "ucs-4" is used, Vim internally uses utf-8.
+	You don't notice this while editing, but it does matter for the
+	|viminfo-file|.  And Vim expects the terminal to use utf-8 too.  Thus
+	setting 'encoding' to one of these values instead of utf-8 only has
+	effect for encoding used for files when 'fileencoding' is empty.
+
+	 When 'encoding' is set to a Unicode encoding, and 'fileencodings' was
+	 not set yet, the default for 'fileencodings' is changed.
+
+			*'endofline'* *'eol'* *'noendofline'* *'noeol'*
+'endofline' 'eol'	boolean	(default on)
+			local to buffer
+			{not in Vi}
+	When writing a file and this option is off and the 'binary' option
+	is on, no <EOL> will be written for the last line in the file.	This
+	option is automatically set when starting to edit a new file, unless
+	the file does not have an <EOL> for the last line in the file, in
+	which case it is reset.  Normally you don't have to set or reset this
+	option.  When 'binary' is off the value is not used when writing the
+	file.  When 'binary' is on it is used to remember the presence of a
+	<EOL> for the last line in the file, so that when you write the file
+	the situation from the original file can be kept.  But you can change
+	it if you want to.
+
+			     *'equalalways'* *'ea'* *'noequalalways'* *'noea'*
+'equalalways' 'ea'	boolean	(default on)
+			global
+			{not in Vi}
+	When on, all the windows are automatically made the same size after
+	splitting or closing a window.	When off, splitting a window will
+	reduce the size of the current window and leave the other windows the
+	same.  When closing a window the extra lines are given to the window
+	next to it (depending on 'splitbelow' and 'splitright').
+	When mixing vertically and horizontally split windows, a minimal size
+	is computed and some windows may be larger if there is room.  The
+	'eadirection' option tells in which direction the size is affected.
+	Changing the height of a window can be avoided by setting
+	'winfixheight'.
+
+						*'equalprg'* *'ep'*
+'equalprg' 'ep'		string	(default "")
+			global or local to buffer |global-local|
+			{not in Vi}
+	External program to use for "=" command.  When this option is empty
+	the internal formatting functions are used ('lisp', 'cindent' or
+	'indentexpr').
+	Environment variables are expanded |:set_env|.	See |option-backslash|
+	about including spaces and backslashes.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+			*'errorbells'* *'eb'* *'noerrorbells'* *'noeb'*
+'errorbells' 'eb'	boolean	(default off)
+			global
+	Ring the bell (beep or screen flash) for error messages.  This only
+	makes a difference for error messages, the bell will be used always
+	for a lot of errors without a message (e.g., hitting <Esc> in Normal
+	mode).	See 'visualbell' on how to make the bell behave like a beep,
+	screen flash or do nothing.
+
+						*'errorfile'* *'ef'*
+'errorfile' 'ef'	string	(Amiga default: "AztecC.Err",
+					others: "errors.err")
+			global
+			{not in Vi}
+			{not available when compiled without the |+quickfix|
+			feature}
+	Name of the errorfile for the QuickFix mode (see |:cf|).
+	When the "-q" command-line argument is used, 'errorfile' is set to the
+	following argument.  See |-q|.
+	NOT used for the ":make" command.  See 'makeef' for that.
+	Environment variables are expanded |:set_env|.
+	See |option-backslash| about including spaces and backslashes.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'errorformat'* *'efm'*
+'errorformat' 'efm'	string	(default is very long)
+			global or local to buffer |global-local|
+			{not in Vi}
+			{not available when compiled without the |+quickfix|
+			feature}
+	Scanf-like description of the format for the lines in the error file
+	(see |errorformat|).
+
+				     *'esckeys'* *'ek'* *'noesckeys'* *'noek'*
+'esckeys' 'ek'		boolean	(Vim default: on, Vi default: off)
+			global
+			{not in Vi}
+	Function keys that start with an <Esc> are recognized in Insert
+	mode.  When this option is off, the cursor and function keys cannot be
+	used in Insert mode if they start with an <Esc>.  The advantage of
+	this is that the single <Esc> is recognized immediately, instead of
+	after one second.  Instead of resetting this option, you might want to
+	try changing the values for 'timeoutlen' and 'ttimeoutlen'.  Note that
+	when 'esckeys' is off, you can still map anything, but the cursor keys
+	won't work by default.
+	NOTE: This option is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+						*'eventignore'* *'ei'*
+'eventignore' 'ei'	string	(default "")
+			global
+			{not in Vi}
+			{not available when compiled without the |+autocmd|
+			feature}
+	A list of autocommand event names, which are to be ignored.
+	When set to "all", all autocommand events are ignored, autocommands
+	will not be executed.
+	Otherwise this is a comma separated list of event names.  Example: >
+	    :set ei=WinEnter,WinLeave
+<
+				 *'expandtab'* *'et'* *'noexpandtab'* *'noet'*
+'expandtab' 'et'	boolean	(default off)
+			local to buffer
+			{not in Vi}
+	In Insert mode: Use the appropriate number of spaces to insert a
+	<Tab>.	Spaces are used in indents with the '>' and '<' commands and
+	when 'autoindent' is on.  To insert a real tab when 'expandtab' is
+	on, use CTRL-V<Tab>.  See also |:retab| and |ins-expandtab|.
+	NOTE: This option is reset when 'compatible' is set.
+
+					*'exrc'* *'ex'* *'noexrc'* *'noex'*
+'exrc' 'ex'		boolean (default off)
+			global
+			{not in Vi}
+	Enables the reading of .vimrc, .exrc and .gvimrc in the current
+	directory.  If you switch this option on you should also consider
+	setting the 'secure' option (see |initialization|).  Using a local
+	.exrc, .vimrc or .gvimrc is a potential security leak, use with care!
+	also see |.vimrc| and |gui-init|.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+				*'fileencoding'* *'fenc'* *E213*
+'fileencoding' 'fenc'	string (default: "")
+			local to buffer
+			{only available when compiled with the |+multi_byte|
+			feature}
+			{not in Vi}
+	Sets the character encoding for the file of this buffer.
+	When 'fileencoding' is different from 'encoding', conversion will be
+	done when reading and writing the file.
+	When 'fileencoding' is empty, the same value as 'encoding' will be
+	used (no conversion when reading or writing a file).
+		WARNING: Conversion can cause loss of information!  When
+		'encoding' is "utf-8" conversion is most likely done in a way
+		that the reverse conversion results in the same text.  When
+		'encoding' is not "utf-8" some characters may be lost!
+	See 'encoding' for the possible values.  Additionally, values may be
+	specified that can be handled by the converter, see
+	|mbyte-conversion|.
+	When reading a file 'fileencoding' will be set from 'fileencodings'.
+	To read a file in a certain encoding it won't work by setting
+	'fileencoding', use the |++enc| argument.
+	Prepending "8bit-" and "2byte-" has no meaning here, they are ignored.
+	When the option is set, the value is converted to lowercase.  Thus
+	you can set it with uppercase values too.  '_' characters are
+	replaced with '-'.  If a name is recognized from the list for
+	'encoding', it is replaced by the standard name.  For example
+	"ISO8859-2" becomes "iso-8859-2".
+	When this option is set, after starting to edit a file, the 'modified'
+	option is set, because the file would be different when written.
+	If you do this in a modeline, you might want to set 'nomodified' to
+	avoid this.
+	This option can not be changed when 'modifiable' is off.
+
+							*'fe'*
+	NOTE: Before version 6.0 this option specified the encoding for the
+	whole of Vim, this was a mistake.  Now use 'encoding' instead.	The
+	old short name was 'fe', which is no longer used.
+
+					*'fileencodings'* *'fencs'*
+'fileencodings' 'fencs'	string (default: "ucs-bom", "ucs-bom,utf-8,latin1"
+				    when 'encoding' is set to a Unicode value)
+			global
+			{only available when compiled with the |+multi_byte|
+			feature}
+			{not in Vi}
+	This is a list of character encodings considered when starting to edit
+	an existing file.  When a file is read, Vim tries to use the first
+	mentioned character encoding.  If an error is detected, the next one
+	in the list is tried.  When an encoding is found that works,
+	'fileencoding' is set to it.	If all fail, 'fileencoding' is set to
+	an empty string, which means the value of 'encoding' is used.
+		WARNING: Conversion can cause loss of information!  When
+		'encoding' is "utf-8" (or one of the other Unicode variants)
+		conversion is most likely done in a way that the reverse
+		conversion results in the same text.  When 'encoding' is not
+		"utf-8" special characters may be lost!
+	For an empty file or a file with only ASCII characters most encodings
+	will work and the first entry of 'fileencodings' will be used (except
+	"ucs-bom", which requires the BOM to be present).  If you prefer
+	another encoding use an BufReadPost autocommand event to test if your
+	preferred encoding is to be used.  Example: >
+		au BufReadPost * if search('\S', 'w') == 0 |
+			\ set fenc=iso-2022-jp | endif
+<	This sets 'fileencoding' to "iso-2022-jp" if the file does not contain
+	non-blank characters.
+	Note that 'fileencodings' is not used for an new file, 'fileencoding'
+	is always empty then.  This means that a non-existing file may get a
+	different encoding than an empty file.
+	The special value "ucs-bom" can be used to check for a Unicode BOM
+	(Byte Order Mark) at the start of the file.  It must not be preceded
+	by "utf-8" or another Unicode encoding for this to work properly.
+	An entry for an 8-bit encoding (e.g., "latin1") should be the last,
+	because Vim cannot detect an error, thus the encoding is always
+	accepted.
+	WRONG VALUES:			WHAT'S WRONG:
+		latin1,utf-8		"latin1" will always be used
+		utf-8,ucs-bom,latin1	BOM won't be recognized in an utf-8
+					file
+		cp1250,latin1		"cp1250" will always be used
+	If 'fileencodings' is empty, 'fileencoding' is not modified.
+	See 'fileencoding' for the possible values.
+	Setting this option does not have an effect until the next time a file
+	is read.
+
+					*'fileformat'* *'ff'*
+'fileformat' 'ff'	string (MS-DOS, MS-Windows, OS/2 default: "dos",
+				Unix default: "unix",
+				Macintosh default: "mac")
+			local to buffer
+			{not in Vi}
+	This gives the <EOL> of the current buffer, which is used for
+	reading/writing the buffer from/to a file:
+	    dos	    <CR> <NL>
+	    unix    <NL>
+	    mac	    <CR>
+	When "dos" is used, CTRL-Z at the end of a file is ignored.
+	See |file-formats| and |file-read|.
+	For the character encoding of the file see 'fileencoding'.
+	When 'binary' is set, the value of 'fileformat' is ignored, file I/O
+	works like it was set to "unix'.
+	This option is set automatically when starting to edit a file and
+	'fileformats' is not empty and 'binary' is off.
+	When this option is set, after starting to edit a file, the 'modified'
+	option is set, because the file would be different when written.
+	This option can not be changed when 'modifiable' is off.
+	For backwards compatibility: When this option is set to "dos",
+	'textmode' is set, otherwise 'textmode' is reset.
+
+					*'fileformats'* *'ffs'*
+'fileformats' 'ffs'	string (default:
+				Vim+Vi	MS-DOS, MS-Windows OS/2: "dos,unix",
+				Vim	Unix: "unix,dos",
+				Vim	Mac: "mac,unix,dos",
+				Vi	Cygwin: "unix,dos",
+				Vi	others: "")
+			global
+			{not in Vi}
+	This gives the end-of-line (<EOL>) formats that will be tried when
+	starting to edit a new buffer and when reading a file into an existing
+	buffer:
+	- When empty, the format defined with 'fileformat' will be used
+	  always.  It is not set automatically.
+	- When set to one name, that format will be used whenever a new buffer
+	  is opened.  'fileformat' is set accordingly for that buffer.	The
+	  'fileformats' name will be used when a file is read into an existing
+	  buffer, no matter what 'fileformat' for that buffer is set to.
+	- When more than one name is present, separated by commas, automatic
+	  <EOL> detection will be done when reading a file.  When starting to
+	  edit a file, a check is done for the <EOL>:
+	  1. If all lines end in <CR><NL>, and 'fileformats' includes "dos",
+	     'fileformat' is set to "dos".
+	  2. If a <NL> is found and 'fileformats' includes "unix", 'fileformat'
+	     is set to "unix".	Note that when a <NL> is found without a
+	     preceding <CR>, "unix" is preferred over "dos".
+	  3. If 'fileformats' includes "mac", 'fileformat' is set to "mac".
+	     This means that "mac" is only chosen when "unix" is not present,
+	     or when no <NL> is found in the file, and when "dos" is not
+	     present, or no <CR><NL> is present in the file.
+	     Also if "unix" was first chosen, but the first <CR> is before
+	     the first <NL> and there appears to be more <CR>'s than <NL>'s in
+	     the file, then 'fileformat' is set to "mac".
+	  4. If 'fileformat' is still not set, the first name from
+	     'fileformats' is used.
+	  When reading a file into an existing buffer, the same is done, but
+	  this happens like 'fileformat' has been set appropriately for that
+	  file only, the option is not changed.
+	When 'binary' is set, the value of 'fileformats' is not used.
+
+	For systems with a Dos-like <EOL> (<CR><NL>), when reading files that
+	are ":source"ed and for vimrc files, automatic <EOL> detection may be
+	done:
+	- When 'fileformats' is empty, there is no automatic detection.  Dos
+	  format will be used.
+	- When 'fileformats' is set to one or more names, automatic detection
+	  is done.  This is based on the first <NL> in the file: If there is a
+	  <CR> in front of it, Dos format is used, otherwise Unix format is
+	  used.
+	Also see |file-formats|.
+	For backwards compatibility: When this option is set to an empty
+	string or one format (no comma is included), 'textauto' is reset,
+	otherwise 'textauto' is set.
+	NOTE: This option is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+					*'filetype'* *'ft'*
+'filetype' 'ft'		string (default: "")
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the |+autocmd|
+			feature}
+	When this option is set, the FileType autocommand event is triggered.
+	All autocommands that match with the value of this option will be
+	executed.  Thus the value of 'filetype' is used in place of the file
+	name.
+	Otherwise this option does not always reflect the current file type.
+	This option is normally set when the file type is detected.  To enable
+	this use the ":filetype on" command. |:filetype|
+	Setting this option to a different value is most useful in a modeline,
+	for a file for which the file type is not automatically recognized.
+	Example, for in an IDL file: >
+		/* vim: set filetype=idl : */
+<	|FileType| |filetypes|
+	Do not confuse this option with 'osfiletype', which is for the file
+	type that is actually stored with the file.
+	This option is not copied to another buffer, independent of the 's' or
+	'S' flag in 'cpoptions'.
+
+						*'fillchars'* *'fcs'*
+'fillchars' 'fcs'	string	(default "vert:|,fold:-")
+			global
+			{not in Vi}
+			{not available when compiled without the |+windows|
+			and |+folding| features}
+	Characters to fill the statuslines and vertical separators.
+	It is a comma separated list of items:
+
+	  item		default		Used for ~
+	  stl:c		' ' or '^'	statusline of the current window
+	  stlnc:c	' ' or '-'	statusline of the non-current windows
+	  vert:c	'|'		vertical separators |:vsplit|
+	  fold:c	'-'		filling 'foldtext'
+	  diff:c	'-'		deleted lines of the 'diff' option
+
+	Any one that is omitted will fall back to the default.	For "stl" and
+	"stlnc" the space will be used when there is highlighting, '^' or '-'
+	otherwise.
+
+	Example: >
+	    :set fillchars=stl:^,stlnc:-,vert:\|,fold:-,diff:-
+<	This is similar to the default, except that these characters will also
+	be used when there is highlighting.
+
+	The highlighting used for these items:
+	  item		highlight group ~
+	  stl:c		StatusLine		|hl-StatusLine|
+	  stlnc:c	StatusLineNC		|hl-StatusLineNC|
+	  vert:c	VertSplit		|hl-VertSplit|
+	  fold:c	Folded			|hl-Folded|
+	  diff:c	DiffDelete		|hl-DiffDelete|
+
+					*'fkmap'* *'fk'* *'nofkmap'* *'nofk'*
+'fkmap' 'fk'		boolean (default off)			*E198*
+			global
+			{not in Vi}
+			{only available when compiled with the |+rightleft|
+			feature}
+	When on, the keyboard is mapped for the Farsi character set.
+	Normally you would set 'allowrevins' and use CTRL-_ in insert mode to
+	toggle this option |i_CTRL-_|.	See |farsi.txt|.
+
+						*'foldclose'* *'fcl'*
+'foldclose' 'fcl'	string (default "")
+			global
+			{not in Vi}
+			{not available when compiled without the |+folding|
+			feature}
+	When set to "all", a fold is closed when the cursor isn't in it and
+	its level is higher than 'foldlevel'.  Useful if you want folds to
+	automatically close when moving out of them.
+
+						*'foldcolumn'* *'fdc'*
+'foldcolumn' 'fdc'	number (default 0)
+			local to window
+			{not in Vi}
+			{not available when compiled without the |+folding|
+			feature}
+	When non-zero, a column with the specified width is shown at the side
+	of the window which indicates open and closed folds.  The maximum
+	value is 12.
+	See |folding|.
+
+			*'foldenable'* *'fen'* *'nofoldenable'* *'nofen'*
+'foldenable' 'fen'	boolean (default on)
+			local to window
+			{not in Vi}
+			{not available when compiled without the |+folding|
+			feature}
+	When off, all folds are open.  This option can be used to quickly
+	switch between showing all text unfolded and viewing the text with
+	folds (including manually opened or closed folds).  It can be toggled
+	with the |zi| command.	The 'foldcolumn' will remain blank when
+	'foldenable' is off.
+	This option is set by commands that create a new fold or close a fold.
+	See |folding|.
+
+						*'foldexpr'* *'fde'*
+'foldexpr' 'fde'	string (default: "0")
+			local to window
+			{not in Vi}
+			{not available when compiled without the |+folding|
+			or |+eval| feature}
+	The expression used for when 'foldmethod' is "expr".  It is evaluated
+	for each line to obtain its fold level.  See |fold-expr|.  Also see
+	|eval-sandbox|.
+
+						*'foldignore'* *'fdi'*
+'foldignore' 'fdi'	string (default: "#")
+			local to window
+			{not in Vi}
+			{not available when compiled without the |+folding|
+			feature}
+	Used only when 'foldmethod' is "indent".  Lines starting with
+	characters in 'foldignore' will get their fold level from surrounding
+	lines.	White space is skipped before checking for this character.
+	The default "#" works well for C programs.  See |fold-indent|.
+
+						*'foldlevel'* *'fdl'*
+'foldlevel' 'fdl'	number (default: 0)
+			local to window
+			{not in Vi}
+			{not available when compiled without the |+folding|
+			feature}
+	Sets the fold level: Folds with a higher level will be closed.
+	Setting this option to zero will close all folds.  Higher numbers will
+	close fewer folds.
+	This option is set by commands like |zm|, |zM| and |zR|.
+	See |fold-foldlevel|.
+
+						*'foldlevelstart'* *'fdls'*
+'foldlevelstart' 'fdls'	number (default: -1)
+			global
+			{not in Vi}
+			{not available when compiled without the |+folding|
+			feature}
+	Sets 'foldlevel' when starting to edit another buffer in a window.
+	Useful to always start editing with all folds closed (value zero),
+	some folds closed (one) or no folds closed (99).
+	This is done before reading any modeline, thus a setting in a modeline
+	overrules this option.	Starting to edit a file for |diff-mode| also
+	ignores this option and closes all folds.
+	It is also done before BufReadPre autocommands, to allow an autocmd to
+	overrule the 'foldlevel' value for specific files.
+	When the value is negative, it is not used.
+
+						*'foldmarker'* *'fmr'* *E536*
+'foldmarker' 'fmr'	string (default: "{{{,}}}")
+			local to window
+			{not in Vi}
+			{not available when compiled without the |+folding|
+			feature}
+	The start and end marker used when 'foldmethod' is "marker".  There
+	must be one comma, which separates the start and end marker.  The
+	marker is a literal string (a regular expression would be too slow).
+	See |fold-marker|.
+
+						*'foldmethod'* *'fdm'*
+'foldmethod' 'fdm'	string (default: "manual")
+			local to window
+			{not in Vi}
+			{not available when compiled without the |+folding|
+			feature}
+	The kind of folding used for the current window.  Possible values:
+	|fold-manual|	manual	    Folds are created manually.
+	|fold-indent|	indent	    Lines with equal indent form a fold.
+	|fold-expr|	expr	    'foldexpr' gives the fold level of a line.
+	|fold-marker|	marker	    Markers are used to specify folds.
+	|fold-syntax|	syntax	    Syntax highlighting items specify folds.
+	|fold-diff|	diff	    Fold text that is not changed.
+
+						*'foldminlines'* *'fml'*
+'foldminlines' 'fml'	number (default: 1)
+			local to window
+			{not in Vi}
+			{not available when compiled without the |+folding|
+			feature}
+	Sets the minimum number of screen lines for a fold to be displayed
+	closed.  Also for manually closed folds.
+	Note that this only has an effect of what is displayed.  After using
+	"zc" to close a fold, which is displayed open because it's smaller
+	than 'foldminlines', a following "zc" may close a containing fold.
+
+						*'foldnestmax'* *'fdn'*
+'foldnestmax' 'fdn'	number (default: 20)
+			local to window
+			{not in Vi}
+			{not available when compiled without the |+folding|
+			feature}
+	Sets the maximum nesting of folds for the "indent" and "syntax"
+	methods.  This avoids that too many folds will be created.  Using more
+	than 20 doesn't work, because the internal limit is 20.
+
+						*'foldopen'* *'fdo'*
+'foldopen' 'fdo'	string (default: "block,hor,mark,percent,quickfix,
+							     search,tag,undo")
+			global
+			{not in Vi}
+			{not available when compiled without the |+folding|
+			feature}
+	Specifies for which type of commands folds will be opened, if the
+	command moves the cursor into a closed fold.  It is a comma separated
+	list of items.
+		item		commands ~
+		all		any
+		block		"(", "{", "[[", "[{", etc.
+		hor		horizontal movements: "l", "w", "fx", etc.
+		insert		any command in Insert mode
+		jump		far jumps: "G", "gg", etc.
+		mark		jumping to a mark: "'m", CTRL-O, etc.
+		percent		"%"
+		quickfix	":cn", ":crew", ":make", etc.
+		search		search for a pattern: "/", "n", "*", "gd", etc.
+				(not for a search pattern in a ":" command)
+		tag		jumping to a tag: ":ta", CTRL-T, etc.
+		undo		undo or redo: "u" and CTRL-R
+	When the command is part of a mapping this option is not used.	Add
+	the |zv| command to the mapping to get the same effect.
+	When a movement command is used for an operator (e.g., "dl" or "y%")
+	this option is not used.  This means the operator will include the
+	whole closed fold.
+	Note that vertical movements are not here, because it would make it
+	very difficult to move onto a closed fold.
+	In insert mode the folds containing the cursor will always be open
+	when text is inserted.
+	To close folds you can re-apply 'foldlevel' with the |zx| command or
+	set the 'foldclose' option to "all".
+
+						*'foldtext'* *'fdt'*
+'foldtext' 'fdt'	string (default: "foldtext()")
+			local to window
+			{not in Vi}
+			{not available when compiled without the |+folding|
+			feature}
+	An expression which is used to specify the text displayed for a closed
+	fold.  See |fold-foldtext|.
+
+					*'formatoptions'* *'fo'*
+'formatoptions' 'fo'	string (Vim default: "tcq", Vi default: "vt")
+			local to buffer
+			{not in Vi}
+	This is a sequence of letters which describes how automatic
+	formatting is to be done.  See |fo-table|.  When the 'paste' option is
+	on, no formatting is done (like 'formatoptions' is empty).  Commas can
+	be inserted for readability.
+	To avoid problems with flags that are added in the future, use the
+	"+=" and "-=" feature of ":set" |add-option-flags|.
+	NOTE: This option is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+						*'formatprg'* *'fp'*
+'formatprg' 'fp'	string (default "")
+			global
+			{not in Vi}
+	The name of an external program that will be used to format the lines
+	selected with the "gq" command.  The program must take the input on
+	stdin and produce the output on stdout.  The Unix program "fmt" is
+	such a program.  If this option is an empty string, the internal
+	format function will be used |C-indenting|.  Environment variables are
+	expanded |:set_env|.  See |option-backslash| about including spaces
+	and backslashes.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+				   *'gdefault'* *'gd'* *'nogdefault'* *'nogd'*
+'gdefault' 'gd'		boolean	(default off)
+			global
+			{not in Vi}
+	When on, the ":substitute" flag 'g' is default on.  This means that
+	all matches in a line are substituted instead of one.  When a 'g' flag
+	is given to a ":substitute" command, this will toggle the substitution
+	of all or one match.  See |complex-change|.
+
+		command		'gdefault' on	'gdefault' off	~
+		:s///		  subst. all	  subst. one
+		:s///g		  subst. one	  subst. all
+		:s///gg		  subst. all	  subst. one
+
+	NOTE: This option is reset when 'compatible' is set.
+
+						*'grepformat'* *'gfm'*
+'grepformat' 'gfm'	string	(default "%f:%l%m,%f  %l%m")
+			global
+			{not in Vi}
+	Format to recognize for the ":grep" command output.
+	This is a scanf-like string that uses the same format as the
+	'errorformat' option: see |errorformat|.
+
+						*'grepprg'* *'gp'*
+'grepprg' 'gp'		string	(default "grep -n ",
+					Unix: "grep -n $* /dev/null",
+					Win32: "findstr /n" or "grep -n",
+						      VMS: "SEARCH/NUMBERS ")
+			global or local to buffer |global-local|
+			{not in Vi}
+	Program to use for the ":grep" command. This option may contain '%'
+	and '#' characters, which are expanded like when used in a command-
+	line.  The placeholder "$*" is allowed to specify where the arguments
+	will be included.  Environment variables are expanded |:set_env|.  See
+	|option-backslash| about including spaces and backslashes.
+	When your "grep" accepts the "-H" argument, use this to make ":grep"
+	also work well with a single file: >
+		:set grepprg=grep\ -nH
+<	See also the section |:make_makeprg|, since most of the comments there
+	apply equally to 'grepprg'.
+	For Win32, the default is "findstr /n" if "findstr.exe" can be found,
+	otherwise it's "grep -n".
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+			*'guicursor'* *'gcr'* *E545* *E546* *E548* *E549*
+'guicursor' 'gcr'	string	(default "n-v-c:block-Cursor/lCursor,
+					ve:ver35-Cursor,
+					o:hor50-Cursor,
+					i-ci:ver25-Cursor/lCursor,
+					r-cr:hor20-Cursor/lCursor,
+					sm:block-Cursor
+					-blinkwait175-blinkoff150-blinkon175",
+				for MS-DOS and Win32 console:
+					"n-v-c:block,o:hor50,i-ci:hor15,
+					r-cr:hor30,sm:block")
+			global
+			{not in Vi}
+			{only available when compiled with GUI enabled, and
+			for MS-DOS and Win32 console}
+	This option tells Vim what the cursor should look like in different
+	modes.	It fully works in the GUI.  In an MSDOS or Win32 console, only
+	the height of the cursor can be changed.  This can be done by
+	specifying a block cursor, or a percentage for a vertical or
+	horizontal cursor.
+
+	The option is a comma separated list of parts.	Each part consist of a
+	mode-list and an argument-list:
+		mode-list:argument-list,mode-list:argument-list,..
+	The mode-list is a dash separated list of these modes:
+		n	Normal mode
+		v	Visual mode
+		ve	Visual mode with 'selection' "exclusive" (same as 'v',
+			if not specified)
+		o	Operator-pending mode
+		i	Insert mode
+		r	Replace mode
+		c	Command-line Normal (append) mode
+		ci	Command-line Insert mode
+		cr	Command-line Replace mode
+		sm	showmatch in Insert mode
+		a	all modes
+	The argument-list is a dash separated list of these arguments:
+		hor{N}	horizontal bar, {N} percent of the character height
+		ver{N}	vertical bar, {N} percent of the character width
+		block	block cursor, fills the whole character
+			[only one of the above three should be present]
+		blinkwait{N}				*cursor-blinking*
+		blinkon{N}
+		blinkoff{N}
+			blink times for cursor: blinkwait is the delay before
+			the cursor starts blinking, blinkon is the time that
+			the cursor is shown and blinkoff is the time that the
+			cursor is not shown.  The times are in msec.  When one
+			of the numbers is zero, there is no blinking.  The
+			default is: "blinkwait700-blinkon400-blinkoff250".
+			These numbers are used for a missing entry.  This
+			means that blinking is enabled by default.  To switch
+			blinking off you can use "blinkon0".  The cursor only
+			blinks when Vim is waiting for input, not while
+			executing a command.
+			To make the cursor blink in an xterm, see
+			|xterm-blink|.
+		{group-name}
+			a highlight group name, that sets the color and font
+			for the cursor
+		{group-name}/{group-name}
+			Two highlight group names, the first is used when
+			no language mappings are used, the other when they
+			are. |language-mapping|
+
+	Examples of parts:
+	   n-c-v:block-nCursor	in Normal, Command-line and Visual mode, use a
+				block cursor with colors from the "nCursor"
+				highlight group
+	   i-ci:ver30-iCursor-blinkwait300-blinkon200-blinkoff150
+				In Insert and Command-line Insert mode, use a
+				30% vertical bar cursor with colors from the
+				"iCursor" highlight group.  Blink a bit
+				faster.
+
+	The 'a' mode is different.  It will set the given argument-list for
+	all modes.  It does not reset anything to defaults.  This can be used
+	to do a common setting for all modes.  For example, to switch off
+	blinking: "a:blinkon0"
+
+	Examples of cursor highlighting: >
+	    :highlight Cursor gui=reverse guifg=NONE guibg=NONE
+	    :highlight Cursor gui=NONE guifg=bg guibg=fg
+<
+					*'guifont'* *'gfn'*
+						   *E235* *E596* *E610* *E611*
+'guifont' 'gfn'		string	(default "")
+			global
+			{not in Vi}
+			{only available when compiled with GUI enabled}
+	This is a list of fonts which will be used for the GUI version of Vim.
+	In its simplest form the value is just one font name.  When
+	the font cannot be found you will get an error message.  To try other
+	font names a list can be specified, font names separated with commas.
+	The first valid font is used.
+	When 'guifontset' is not empty, 'guifont' is not used.
+	Spaces after a comma are ignored.  To include a comma in a font name
+	precede it with a backslash.  Setting an option requires an extra
+	backslash before a space and a backslash.  See also
+	|option-backslash|.  For example: >
+	    :set guifont=Screen15,\ 7x13,font\\,with\\,commas
+<	will make vim try to use the font "Screen15" first, and if it fails it
+	will try to use "7x13" and then "font,with,commas" instead.
+	For the GTK+ 2 GUI the font name looks like this: >
+	    :set guifont=Andale\ Mono\ 11
+<	That's all.  XLFDs are no longer accepted.
+								*E236*
+	Note that the fonts must be mono-spaced (all characters have the same
+	width).
+	To preview a font on X11, you might be able to use the "xfontsel"
+	program.  The "xlsfonts" program gives a list of all available fonts.
+	For Win32, GTK and Photon only: >
+	    :set guifont=*
+<	will bring up a font requester, where you can pick the font you want.
+	If none of the fonts can be loaded, vim will keep the current setting.
+	If an empty font list is given, vim will try using other resource
+	settings (for X, it will use the Vim.font resource), and finally it
+	will try some builtin default which should always be there ("7x13" in
+	the case of X).  The font names given should be "normal" fonts.  Vim
+	will try to find the related bold and italic fonts.
+	For the Win32 GUI					*E244* *E245*
+	- takes these options in the font name:
+		hXX - height is XX (points, can be floating-point)
+		wXX - width is XX (points, can be floating-point)
+		b   - bold
+		i   - italic
+		u   - underline
+		s   - strikeout
+		cXX - character set XX. valid charsets are: ANSI, ARABIC,
+		      BALTIC, CHINESEBIG5, DEFAULT, EASTEUROPE, GB2312, GREEK,
+		      HANGEUL, HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS,
+		      SYMBOL, THAI, TURKISH, VIETNAMESE ANSI and BALTIC.
+
+	  Use a ':' to separate the options.
+	- A '_' can be used in the place of a space, so you don't need to use
+	  backslashes to escape the spaces.
+	- Examples: >
+	    :set guifont=courier_new:h12:w5:b:cRUSSIAN
+	    :set guifont=Andale_Mono:h7.5:w4.5
+<	See also |font-sizes|.
+
+					*'guifontset'* *'gfs'*
+					*E250* *E252* *E234* *E597* *E598*
+'guifontset' 'gfs'	string	(default "")
+			global
+			{not in Vi}
+			{only available when compiled with GUI enabled and
+			with the |+xfontset| feature}
+			{not available in the GTK+ 2 GUI}
+	When not empty, specifies two (or more) fonts to be used.  The first
+	one for normal English, the second one for your special language.  See
+	|xfontset|.
+	Setting this option also means that all font names will be handled as
+	a fontset name.  Also the ones used for the "font" argument of the
+	|:highlight| command.
+	The fonts must match with the current locale.  If fonts for the
+	character sets that the current locale uses are not included, setting
+	'guifontset' will fail.
+	Note the difference between 'guifont' and 'guifontset': In 'guifont'
+	the comma-separated names are alternative names, one of which will be
+	used.  In 'guifontset' the whole string is one fontset name,
+	including the commas.  It is not possible to specify alternative
+	fontset names.
+	This example works on many X11 systems: >
+		:set guifontset=-*-*-medium-r-normal--16-*-*-*-c-*-*-*
+<
+				*'guifontwide'* *'gfw'* *E231* *E533* *E534*
+'guifontwide' 'gfw'	string	(default "")
+			global
+			{not in Vi}
+			{only available when compiled with GUI enabled}
+	When not empty, specifies a comma-separated list of fonts to be used
+	for double-width characters.  The first font that can be loaded is
+	used.
+	Note: The size of these fonts must be exactly twice as wide as the one
+	specified with 'guifont' and the same height.
+
+	All GUI versions but GTK+ 2:
+
+	'guifontwide' is only used when 'encoding' is set to "utf-8" and
+	'guifontset' is empty or invalid.
+	When 'guifont' is set and a valid font is found in it and
+	'guifontwide' is empty Vim will attempt to find a matching
+	double-width font and set 'guifontwide' to it.
+
+	GTK+ 2 GUI only:			*guifontwide_gtk2*
+
+	If set and valid, 'guifontwide' is always used for double width
+	characters, even if 'encoding' is not set to "utf-8".
+	Vim does not attempt to find an appropriate value for 'guifontwide'
+	automatically.	If 'guifontwide' is empty Pango/Xft will choose the
+	font for characters not available in 'guifont'.  Thus you do not need
+	to set 'guifontwide' at all unless you want to override the choice
+	made by Pango/Xft.
+
+						*'guiheadroom'* *'ghr'*
+'guiheadroom' 'ghr'	number	(default 50)
+			global
+			{not in Vi} {only for GTK and X11 GUI}
+	The number of pixels subtracted from the screen height when fitting
+	the GUI window on the screen.  Set this before the GUI is started,
+	e.g., in your |gvimrc| file.  When zero, the whole screen height will
+	be used by the window.	When positive, the specified number of pixel
+	lines will be left for window decorations and other items on the
+	screen.  Set it to a negative value to allow windows taller than the
+	screen.
+
+						*'guioptions'* *'go'*
+'guioptions' 'go'	string	(default "gmrLtT"   (MS-Windows),
+					 "agimrLtT" (GTK, Motif and Athena)
+			global
+			{not in Vi}
+			{only available when compiled with GUI enabled}
+	This option only has an effect in the GUI version of vim.  It is a
+	sequence of letters which describes what components and options of the
+	GUI should be used.
+	To avoid problems with flags that are added in the future, use the
+	"+=" and "-=" feature of ":set" |add-option-flags|.
+
+	Valid letters are as follows:
+							*guioptions_a*
+	  'a'	Autoselect:  If present, then whenever VISUAL mode is started,
+		or the Visual area extended, Vim tries to become the owner of
+		the windowing system's global selection.  This means that the
+		Visually highlighted text is available for pasting into other
+		applications as well as into Vim itself.  When the Visual mode
+		ends, possibly due to an operation on the text, or when an
+		application wants to paste the selection, the highlighted text
+		is automatically yanked into the "* selection register.
+		Thus the selection is still available for pasting into other
+		applications after the VISUAL mode has ended.
+		    If not present, then Vim won't become the owner of the
+		windowing system's global selection unless explicitly told to
+		by a yank or delete operation for the "* register.
+		The same applies to the modeless selection.
+
+	  'A'	Autoselect for the modeless selection.	Like 'a', but only
+		applies to the modeless selection.
+
+		    'guioptions'   autoselect Visual  autoselect modeless ~
+			 ""		 -			 -
+			 "a"		yes			yes
+			 "A"		 -			yes
+			 "aA"		yes			yes
+
+	  'c'	Use console dialogs instead of popup dialogs for simple
+		choices.
+
+	  'f'	Foreground: Don't use fork() to detach the GUI from the shell
+		where it was started.  Use this for programs that wait for the
+		editor to finish (e.g., an e-mail program).  Alternatively you
+		can use "gvim -f" or ":gui -f" to start the GUI in the
+		foreground.  |gui-fork|
+		Note: Set this option in the vimrc file.  The forking may have
+		happened already when the gvimrc file is read.
+
+	  'i'	Use a Vim icon.  For GTK with KDE it is used in the left-upper
+		corner of the window.  It's black&white on non-GTK, because of
+		limitations of X11.  For a color icon, see |X11-icon|.
+
+	  'm'	Menu bar is present.
+	  'M'	The system menu "$VIMRUNTIME/menu.vim" is not sourced.	Note
+		that this flag must be added in the .vimrc file, before
+		switching on syntax or filetype recognition (when the .gvimrc
+		file is sourced the system menu has already been loaded; the
+		":syntax on" and ":filetype on" commands load the menu too).
+	  'g'	Grey menu items: Make menu items that are not active grey.  If
+		'g' is not included inactive menu items are not shown at all.
+		Exception: Athena will always use grey menu items.
+
+	  't'	Include tearoff menu items.  Currently only works for Win32,
+		GTK+, and Motif 1.2 GUI.
+	  'T'	Include Toolbar.  Currently only in Win32, GTK+, Motif, and
+		Athena GUIs.
+
+	  'r'	Right-hand scrollbar is always present.
+	  'R'	Right-hand scrollbar is present when there is a vertically
+		split window.
+	  'l'	Left-hand scrollbar is always present.
+	  'L'	Left-hand scrollbar is present when there is a vertically
+		split window.
+	  'b'	Bottom (horizontal) scrollbar is present.  Its size depends on
+		the longest visible line, or on the cursor line if the 'h'
+		flag is included. |gui-horiz-scroll|
+	  'h'	Limit horizontal scrollbar size to the length of the cursor
+		line.  Reduces computations. |gui-horiz-scroll|
+
+	And yes, you may even have scrollbars on the left AND the right if
+	you really want to :-).  See |gui-scrollbars| for more information.
+
+	  'v'	Use a vertical button layout for dialogs.  When not included,
+		a horizontal layout is preferred, but when it doesn't fit a
+		vertical layout is used anyway.
+	  'p'	Use Pointer callbacks for X11 GUI.  This is required for some
+		window managers.  If the cursor is not blinking or hollow at
+		the right moment, try adding this flag.  This must be done
+		before starting the GUI.  Set it in your gvimrc.  Adding or
+		removing it after the GUI has started has no effect.
+	  'F'	Add a footer.  Only for Motif.	See |gui-footer|.
+
+						*'guipty'* *'noguipty'*
+'guipty'		boolean	(default on)
+			global
+			{not in Vi}
+			{only available when compiled with GUI enabled}
+	Only in the GUI: If on, an attempt is made to open a pseudo-tty for
+	I/O to/from shell commands.  See |gui-pty|.
+
+						*'helpfile'* *'hf'*
+'helpfile' 'hf'		string	(default (MSDOS)  "$VIMRUNTIME\doc\help.txt"
+					 (others) "$VIMRUNTIME/doc/help.txt")
+			global
+			{not in Vi}
+	Name of the main help file.  All distributed help files should be
+	placed together in one directory.  Additionally, all "doc" directories
+	in 'runtimepath' will be used.
+	Environment variables are expanded |:set_env|.  For example:
+	"$VIMRUNTIME/doc/help.txt".  If $VIMRUNTIME is not set, $VIM is also
+	tried.	Also see |$VIMRUNTIME| and |option-backslash| about including
+	spaces and backslashes.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'helpheight'* *'hh'*
+'helpheight' 'hh'	number	(default 20)
+			global
+			{not in Vi}
+			{not available when compiled without the +windows
+			feature}
+	Minimal initial height of the help window when it is opened with the
+	":help" command.  The initial height of the help window is half of the
+	current window, or (when the 'ea' option is on) the same as other
+	windows.  When the height is less than 'helpheight', the height is
+	set to 'helpheight'.  Set to zero to disable.
+
+						*'helplang'* *'hlg'*
+'helplang' 'hlg'	string	(default: messages language or empty)
+			global
+			{only available when compiled with the |+multi_lang|
+			feature}
+			{not in Vi}
+	Comma separated list of languages.  Vim will use the first language
+	for which the desired help can be found.  The English help will always
+	be used as a last resort.  You can add "en" to prefer English over
+	another language, but that will only find tags that exist in that
+	language and not in the English help.
+	Example: >
+		:set helplang=de,it
+<	This will first search German, then Italian and finally English help
+	files.
+	When using |CTRL-]| and ":help!" in a non-English help file Vim will
+	try to find the tag in the current language before using this option.
+	See |help-translated|.
+
+				     *'hidden'* *'hid'* *'nohidden'* *'nohid'*
+'hidden' 'hid'		boolean	(default off)
+			global
+			{not in Vi}
+	When off a buffer is unloaded when it is |abandon|ed.  When on a
+	buffer becomes hidden when it is |abandon|ed.  If the buffer is still
+	displayed in another window, it does not become hidden, of course.
+	The commands that move through the buffer list sometimes make a buffer
+	hidden although the 'hidden' option is off: When the buffer is
+	modified, 'autowrite' is off or writing is not possible, and the '!'
+	flag was used.	See also |windows.txt|.
+	This option is set for one command with ":hide {command}" |:hide|.
+	WARNING: It's easy to forget that you have changes in hidden buffers.
+	Think twice when using ":q!" or ":qa!".
+
+						*'highlight'* *'hl'*
+'highlight' 'hl'	string	(default (as a single string):
+				     "8:SpecialKey,@:NonText,d:Directory,
+				     e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,
+				     M:ModeMsg,n:LineNr,r:Question,
+				     s:StatusLine,S:StatusLineNC,c:VertSplit
+				     t:Title,v:Visual,w:WarningMsg,W:WildMenu,
+				     f:Folded,F:FoldColumn,A:DiffAdd,
+				     C:DiffChange,D:DiffDelete,T:DiffText,
+				     >:SignColumn")
+			global
+			{not in Vi}
+	This option can be used to set highlighting mode for various
+	occasions.  It is a comma separated list of character pairs.  The
+	first character in a pair gives the occasion, the second the mode to
+	use for that occasion.	The occasions are:
+	|hl-SpecialKey|	 8  Meta and special keys listed with ":map"
+	|hl-NonText|	 @  '~' and '@' at the end of the window and
+			    characters from 'showbreak'
+	|hl-Directory|	 d  directories in CTRL-D listing and other special
+			    things in listings
+	|hl-ErrorMsg|	 e  error messages
+			 h  (obsolete, ignored)
+	|hl-IncSearch|	 i  'incsearch' highlighting
+	|hl-Search|	 l  last search pattern highlighting (see 'hlsearch')
+	|hl-MoreMsg|	 m  |more-prompt|
+	|hl-ModeMsg|	 M  Mode (e.g., "-- INSERT --")
+	|hl-LineNr|	 n  line number for ":number" and ":#" commands
+	|hl-Question|	 r  |hit-enter| prompt and yes/no questions
+	|hl-StatusLine|	 s  status line of current window |status-line|
+	|hl-StatusLineNC| S  status lines of not-current windows
+	|hl-Title|	 t  Titles for output from ":set all", ":autocmd" etc.
+	|hl-VertSplit|	 c  column used to separate vertically split windows
+	|hl-Visual|	 v  Visual mode
+	|hl-VisualNOS|	 V  Visual mode when Vim does is "Not Owning the
+			    Selection" Only X11 Gui's |gui-x11| and
+			    |xterm-clipboard|.
+	|hl-WarningMsg|	 w  warning messages
+	|hl-WildMenu|	 W  wildcard matches displayed for 'wildmenu'
+	|hl-Folded|	 f  line used for closed folds
+	|hl-FoldColumn|	 F  'foldcolumn'
+	|hl-SignColumn|	 >  column used for |signs|
+
+	The display modes are:
+		r	reverse		(termcap entry "mr" and "me")
+		i	italic		(termcap entry "ZH" and "ZR")
+		b	bold		(termcap entry "md" and "me")
+		s	standout	(termcap entry "so" and "se")
+		u	underline	(termcap entry "us" and "ue")
+		n	no highlighting
+		-	no highlighting
+		:	use a highlight group
+	The default is used for occasions that are not included.
+	If you want to change what the display modes do, see |dos-colors|
+	for an example.
+	When using the ':' display mode, this must be followed by the name of
+	a highlight group.  A highlight group can be used to define any type
+	of highlighting, including using color.  See |:highlight| on how to
+	define one.  The default uses a different group for each occasion.
+	See |highlight-default| for the default highlight groups.
+
+				 *'hlsearch'* *'hls'* *'nohlsearch'* *'nohls'*
+'hlsearch' 'hls'	boolean	(default off)
+			global
+			{not in Vi}
+			{not available when compiled without the
+			|+extra_search| feature}
+	When there is a previous search pattern, highlight all its matches.
+	The type of highlighting used can be set with the 'l' occasion in the
+	'highlight' option.  This uses the "Search" highlight group by
+	default.  Note that only the matching text is highlighted, any offsets
+	are not applied.
+	See also: 'incsearch' and |:match|.
+	When you get bored looking at the highlighted matches, you can turn it
+	off with |:nohlsearch|.  As soon as you use a search command, the
+	highlighting comes back.
+	When the search pattern can match an end-of-line, Vim will try to
+	highlight all of the matched text.  However, this depends on where the
+	search starts.	This will be the first line in the window or the first
+	line below a closed fold.  A match in a previous line which is not
+	drawn may not continue in an newly drawn line.
+	NOTE: This option is reset when 'compatible' is set.
+
+						*'history'* *'hi'*
+'history' 'hi'		number	(Vim default: 20, Vi default: 0)
+			global
+			{not in Vi}
+	A history of ":" commands, and a history of previous search patterns
+	are remembered.  This option decides how many entries may be stored in
+	each of these histories (see |cmdline-editing|).
+	NOTE: This option is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+					 *'hkmap'* *'hk'* *'nohkmap'* *'nohk'*
+'hkmap' 'hk'		boolean (default off)
+			global
+			{not in Vi}
+			{only available when compiled with the |+rightleft|
+			feature}
+	When on, the keyboard is mapped for the Hebrew character set.
+	Normally you would set 'allowrevins' and use CTRL-_ in insert mode to
+	toggle this option.  See |rileft.txt|.
+	NOTE: This option is reset when 'compatible' is set.
+
+				 *'hkmapp'* *'hkp'* *'nohkmapp'* *'nohkp'*
+'hkmapp' 'hkp'		boolean (default off)
+			global
+			{not in Vi}
+			{only available when compiled with the |+rightleft|
+			feature}
+	When on, phonetic keyboard mapping is used.  'hkmap' must also be on.
+	This is useful if you have a non-Hebrew keyboard.
+	See |rileft.txt|.
+	NOTE: This option is reset when 'compatible' is set.
+
+						*'icon'* *'noicon'*
+'icon'			boolean	(default off, on when title can be restored)
+			global
+			{not in Vi}
+			{not available when compiled without the |+title|
+			feature}
+	When on, the icon text of the window will be set to the value of
+	'iconstring' (if it is not empty), or to the name of the file
+	currently being edited.  Only the last part of the name is used.
+	Overridden by the 'iconstring' option.
+	Only works if the terminal supports setting window icons (currently
+	only X11 GUI and terminals with a non-empty 't_IS' option - these are
+	Unix xterm and iris-ansi by default, where 't_IS' is taken from the
+	builtin termcap).
+	When Vim was compiled with HAVE_X11 defined, the original icon will be
+	restored if possible |X11|. See |X11-icon| for changing the icon on
+	X11.
+
+						*'iconstring'*
+'iconstring'		string	(default "")
+			global
+			{not in Vi}
+			{not available when compiled without the |+title|
+			feature}
+	When this option is not empty, it will be used for the icon text of
+	the window.  This happens only when the 'icon' option is on.
+	Only works if the terminal supports setting window icon text
+	(currently only X11 GUI and terminals with a non-empty 't_IS' option).
+	Does not work for MS Windows.
+	When Vim was compiled with HAVE_X11 defined, the original icon will be
+	restored if possible |X11|.
+	When this option contains printf-style '%' items, they will be
+	expanded according to the rules used for 'statusline'.	See
+	'titlestring' for example settings.
+	{not available when compiled without the |+statusline| feature}
+
+			*'ignorecase'* *'ic'* *'noignorecase'* *'noic'*
+'ignorecase' 'ic'	boolean	(default off)
+			global
+	Ignore case in search patterns.  Also used when searching in the tags
+	file.
+	Also see 'smartcase'.
+	Can be overruled by using "\c" or "\C" in the pattern, see
+	|/ignorecase|.
+
+						*'imactivatekey'* *'imak'*
+'imactivatekey' 'imak'	string (default "")
+			global
+			{not in Vi}
+			{only available when compiled with |+xim| and
+			|+GUI_GTK|}
+	Specifies the key that your Input Method in X-Windows uses for
+	activation.  When this is specified correctly, vim can fully control
+	IM with 'imcmdline', 'iminsert' and 'imsearch'.
+	You can't use this option to change the activation key, the option
+	tells Vim what the key is.
+	Format:
+		[MODIFIER_FLAG-]KEY_STRING
+
+	These characters can be used for MODIFIER_FLAG (case is ignored):
+		S	    Shift key
+		L	    Lock key
+		C	    Control key
+		1	    Mod1 key
+		2	    Mod2 key
+		3	    Mod3 key
+		4	    Mod4 key
+		5	    Mod5 key
+	Combinations are allowed, for example "S-C-space" or "SC-space" are
+	both shift+ctrl+space.
+	See <X11/keysymdef.h> and XStringToKeysym for KEY_STRING.
+
+	Example: >
+		:set imactivatekey=S-space
+<	"S-space" means shift+space.  This is the activation key for kinput2 +
+	canna (Japanese), and ami (Korean).
+
+				*'imcmdline'* *'imc'* *'noimcmdline'* *'noimc'*
+'imcmdline' 'imc'	boolean (default off)
+			global
+			{not in Vi}
+			{only available when compiled with the |+xim|
+			|+multi_byte_ime| or |global-ime| feature}
+	When set the Input Method is always on when starting to edit a command
+	line, unless entering a search pattern (see 'imsearch' for that).
+	Setting this option is useful when your input method allows entering
+	English characters directly, e.g., when it's used to type accented
+	characters with dead keys.
+
+				*'imdisable'* *'imd'* *'nodisable'* *'noimd'*
+'imdisable' 'imd'	boolean (default off, on for some systems (SGI))
+			global
+			{not in Vi}
+			{only available when compiled with the |+xim|
+			|+multi_byte_ime| or |global-ime| feature}
+	When set the Input Method is never used.  This is useful to disable
+	the IM when it doesn't work properly.
+	Currently this option is on by default for SGI/IRIX machines.  This
+	may change in later releases.
+
+						*'iminsert'* *'imi'*
+'iminsert' 'imi'	number (default 0, 2 when an input method is supported)
+			local to buffer
+			{not in Vi}
+	Specifies whether :lmap or an Input Method (IM) is to be used in
+	Insert mode.  Valid values:
+		0	:lmap is off and IM is off
+		1	:lmap is ON and IM is off
+		2	:lmap is off and IM is ON
+	2 is available only when compiled with the |+multi_byte_ime|, |+xim|
+	or |global-ime|.
+	To always reset the option to zero when leaving Insert mode with <Esc>
+	this can be used: >
+		:inoremap <ESC> <ESC>:set iminsert=0<CR>
+<	This makes :lmap and IM turn off automatically when leaving Insert
+	mode.
+	Note that this option changes when using CTRL-^ in Insert mode
+	|i_CTRL-^|.
+	The value is set to 1 when setting 'keymap' to a valid keymap name.
+	It is also used for the argument of commands like "r" and "f".
+	The value 0 may not work correctly with Athena and Motif with some XIM
+	methods.  Use 'imdisable' to disable XIM then.
+
+						*'imsearch'* *'ims'*
+'imsearch' 'ims'	number (default 0, 2 when an input method is supported)
+			local to buffer
+			{not in Vi}
+	Specifies whether :lmap or an Input Method (IM) is to be used when
+	entering a search pattern.  Valid values:
+		-1	the value of 'iminsert' is used, makes it look like
+			'iminsert' is also used when typing a search pattern
+		0	:lmap is off and IM is off
+		1	:lmap is ON and IM is off
+		2	:lmap is off and IM is ON
+	Note that this option changes when using CTRL-^ in Command-line mode
+	|c_CTRL-^|.
+	The value is set to 1 when it is not -1 and setting the 'keymap'
+	option to a valid keymap name.
+	The value 0 may not work correctly with Athena and Motif with some XIM
+	methods.  Use 'imdisable' to disable XIM then.
+
+						*'include'* *'inc'*
+'include' 'inc'		string	(default "^\s*#\s*include")
+			global or local to buffer |global-local|
+			{not in Vi}
+			{not available when compiled without the
+			|+find_in_path| feature}
+	Pattern to be used to find an include command.	It is a search
+	pattern, just like for the "/" command (See |pattern|).  The default
+	value is for C programs.  This option is used for the commands "[i",
+	"]I", "[d", etc..  The 'isfname' option is used to recognize the file
+	name that comes after the matched pattern.  See |option-backslash|
+	about including spaces and backslashes.
+
+						*'includeexpr'* *'inex'*
+'includeexpr' 'inex'	string	(default "")
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the
+			|+find_in_path| or |+eval| feature}
+	Expression to be used to transform the string found with the 'include'
+	option to a file name.	Mostly useful to change "." to "/" for Java: >
+		:set includeexpr=substitute(v:fname,'\\.','/','g')
+<	The "v:fname" variable will be set to the file name that was detected.
+	Evaluated in the |sandbox|.
+	Also used for the |gf| command if an unmodified file name can't be
+	found.	Allows doing "gf" on the name after an 'include' statement.
+	Also used for |<cfile>|.
+
+				 *'incsearch'* *'is'* *'noincsearch'* *'nois'*
+'incsearch' 'is'	boolean	(default off)
+			global
+			{not in Vi}
+			{not available when compiled without the
+			|+extra_search| feature}
+	While typing a search command, show immediately where the so far
+	typed pattern matches.	The matched string is highlighted.  If the
+	pattern is invalid or not found, nothing is shown.  The screen will
+	be updated often, this is only useful on fast terminals.  Note that
+	the match will be shown, but the cursor is not actually positioned
+	there.	You still need to finish the search command with <CR> to move
+	the cursor.  The highlighting can be set with the 'i' flag in
+	'highlight'.  See also: 'hlsearch'.
+	NOTE: This option is reset when 'compatible' is set.
+
+						*'indentexpr'* *'inde'*
+'indentexpr' 'inde'	string	(default "")
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the |+cindent|
+			or |+eval| features}
+	Expression which is evaluated to obtain the proper indent for a line.
+	It is used when a new line is created, for the |=| operator and
+	in Insert mode as specified with the 'indentkeys' option.
+	When this option is not empty, it overrules the 'cindent' and
+	'smartindent' indenting.
+	When 'paste' is set this option is not used for indenting.
+	The expression is evaluated with |v:lnum| set to the line number for
+	which the indent is to be computed.  The cursor is also as this line
+	when the expression is evaluated (but it may be moved around).
+	The expression must return the number of spaces worth of indent.  It
+	can return "-1" to keep the current indent (this means 'autoindent' is
+	used for the indent).
+	Functions useful for computing the indent are |indent()|, |cindent()|
+	and |lispindent()|.
+	The evaluation of the expression must not have side effects!  It must
+	not change the text, jump to another window, etc.  Afterwards the
+	cursor position is always restored, thus the cursor may be moved.
+	Normally this option would be set to call a function: >
+		:set indentexpr=GetMyIndent()
+<	Error messages will be suppressed, unless the 'debug' option contains
+	"msg".
+	See |indent-expression|.  Also see |eval-sandbox|.
+	NOTE: This option is made empty when 'compatible' is set.
+
+						*'indentkeys'* *'indk'*
+'indentkeys' 'indk'	string	(default "0{,0},:,0#,!^F,o,O,e")
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the |+cindent|
+			feature}
+	A list of keys that, when typed in Insert mode, cause reindenting of
+	the current line.  Only happens if 'indentexpr' isn't empty.
+	The format is identical to 'cinkeys', see |indentkeys-format|.
+	See |C-indenting| and |indent-expression|.
+
+			*'infercase'* *'inf'* *'noinfercase'* *'noinf'*
+'infercase' 'inf'	boolean	(default off)
+			local to buffer
+			{not in Vi}
+	When doing keyword completion in insert mode |ins-completion|, and
+	'ignorecase' is also on, the case of the match is adjusted.  If the
+	typed text contains a lowercase letter where the match has an upper
+	case letter, the completed part is made lowercase.  If the typed text
+	has no lowercase letters and the match has a lowercase letter where
+	the typed text has an uppercase letter, and there is a letter before
+	it, the completed part is made uppercase.
+
+			*'insertmode'* *'im'* *'noinsertmode'* *'noim'*
+'insertmode' 'im'	boolean	(default off)
+			global
+			{not in Vi}
+	Makes Vim work in a way that Insert mode is the default mode.  Useful
+	if you want to use Vim as a modeless editor.  Used for |evim|.
+	These Insert mode commands will be useful:
+	- Use the cursor keys to move around.
+	- Use CTRL-O to execute one Normal mode command |i_CTRL-O|).  When
+	  this is a mapping, it is executed as if 'insertmode' was off.
+	  Normal mode remains active until the mapping is finished.
+								*i_CTRL-L*
+	- Use CTRL-L to execute a number of Normal mode commands, then use
+	  <Esc> to get back to Insert mode.
+
+	These items change when 'insertmode' is set:
+	- when starting to edit of a file, Vim goes to Insert mode.
+	- <Esc> in Insert mode is a no-op and beeps.
+	- <Esc> in Normal mode makes Vim go to Insert mode.
+	- CTRL-L in Insert mode is a command, it is not inserted.
+	- CTRL-Z in Insert mode suspends Vim, see |CTRL-Z|.	*i_CTRL-Z*
+	However, when <Esc> is used inside a mapping, it behaves like
+	'insertmode' was not set.  This was done to be able to use the same
+	mappings with 'insertmode' set or not set.
+	When executing commands with |:normal| 'insertmode' is not used.
+
+	NOTE: This option is reset when 'compatible' is set.
+
+						*'isfname'* *'isf'*
+'isfname' 'isf'		string	(default for MS-DOS, Win32 and OS/2:
+			     "@,48-57,/,\,.,-,_,+,,,#,$,%,{,},[,],:,@-@,!,~,="
+			    for AMIGA: "@,48-57,/,.,-,_,+,,,$,:"
+			    for VMS: "@,48-57,/,.,-,_,+,,,#,$,%,<,>,[,],:,;,~"
+			    for OS/390: "@,240-249,/,.,-,_,+,,,#,$,%,~,="
+			    otherwise: "@,48-57,/,.,-,_,+,,,#,$,%,~,=")
+			global
+			{not in Vi}
+	The characters specified by this option are included in file names and
+	path names.  Filenames are used for commands like "gf", "[i" and in
+	the tags file.	It is also used for "\f" in a |pattern|.
+	Multi-byte characters 256 and above are always included, only the
+	characters up to 255 are specified with this option.
+	For UTF-8 the characters 0xa0 to 0xff are included as well.
+
+	Note that on systems using a backslash as path separator, Vim tries to
+	do its best to make it work as you would expect.  That is a bit
+	tricky, since Vi originally used the backslash to escape special
+	characters.  Vim will not remove a backslash in front of a normal file
+	name character on these systems, but it will on Unix and alikes.  The
+	'&' and '^' are not included by default, because these are special for
+	cmd.exe.
+
+	The format of this option is a list of parts, separated with commas.
+	Each part can be a single character number or a range.	A range is two
+	character numbers with '-' in between.	A character number can be a
+	decimal number between 0 and 255 or the ASCII character itself (does
+	not work for digits).  Example:
+		"_,-,128-140,#-43"	(include '_' and '-' and the range
+					128 to 140 and '#' to 43)
+	If a part starts with '^', the following character number or range
+	will be excluded from the option.  The option is interpreted from left
+	to right.  Put the excluded character after the range where it is
+	included.  To include '^' itself use it as the last character of the
+	option or the end of a range.  Example:
+		"^a-z,#,^"	(exclude 'a' to 'z', include '#' and '^')
+	If the character is '@', all characters where isalpha() returns TRUE
+	are included.  Normally these are the characters a to z and A to Z,
+	plus accented characters.  To include '@' itself use "@-@".  Examples:
+		"@,^a-z"	All alphabetic characters, excluding lower
+				case letters.
+		"a-z,A-Z,@-@"	All letters plus the '@' character.
+	A comma can be included by using it where a character number is
+	expected.  Example:
+		"48-57,,,_"	Digits, comma and underscore.
+	A comma can be excluded by prepending a '^'.  Example:
+		" -~,^,,9"	All characters from space to '~', excluding
+				comma, plus <Tab>.
+	See |option-backslash| about including spaces and backslashes.
+
+						*'isident'* *'isi'*
+'isident' 'isi'		string	(default for MS-DOS, Win32 and OS/2:
+					   "@,48-57,_,128-167,224-235"
+				otherwise: "@,48-57,_,192-255")
+			global
+			{not in Vi}
+	The characters given by this option are included in identifiers.
+	Identifiers are used in recognizing environment variables and after a
+	match of the 'define' option.  It is also used for "\i" in a
+	|pattern|. See 'isfname' for a description of the format of this
+	option.
+	Careful: If you change this option, it might break expanding
+	environment variables.	E.g., when '/' is included and Vim tries to
+	expand "$HOME/.viminfo".  Maybe you should change 'iskeyword' instead.
+
+						*'iskeyword'* *'isk'*
+'iskeyword' 'isk'	string (Vim default for MS-DOS and Win32:
+					    "@,48-57,_,128-167,224-235"
+				   otherwise:  "@,48-57,_,192-255"
+				Vi default: "@,48-57,_")
+			local to buffer
+			{not in Vi}
+	Keywords are used in searching and recognizing with many commands:
+	"w", "*", "[i", etc.  It is also used for "\k" in a |pattern|.	See
+	'isfname' for a description of the format of this option.  For C
+	programs you could use "a-z,A-Z,48-57,_,.,-,>".
+	For a help file it is set to all non-blank printable characters except
+	'*', '"' and '|' (so that CTRL-] on a command finds the help for that
+	command).
+	When the 'lisp' option is on the '-' character is always included.
+	NOTE: This option is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+						*'isprint'* *'isp'*
+'isprint' 'isp'	string	(default for MS-DOS, Win32, OS/2 and Macintosh:
+				"@,~-255"; otherwise: "@,161-255")
+			global
+			{not in Vi}
+	The characters given by this option are displayed directly on the
+	screen.  It is also used for "\p" in a |pattern|.  The characters from
+	space (ASCII 32) to '~' (ASCII 126) are always displayed directly,
+	even when they are not included in 'isprint' or excluded.  See
+	'isfname' for a description of the format of this option.
+
+	Non-printable characters are displayed with two characters:
+		  0 -  31	"^@" - "^_"
+		 32 - 126	always single characters
+		   127		"^?"
+		128 - 159	"~@" - "~_"
+		160 - 254	"| " - "|~"
+		   255		"~?"
+	When 'encoding' is a Unicode one, illegal bytes from 128 to 255 are
+	displayed as <xx>, with the hexadecimal value of the byte.
+	When 'display' contains "uhex" all unprintable characters are
+	displayed as <xx>.
+	The NonText highlighting will be used for unprintable characters.
+	|hl-NonText|
+
+	Multi-byte characters 256 and above are always included, only the
+	characters up to 255 are specified with this option.  When a character
+	is printable but it is not available in the current font, a
+	replacement character will be shown.
+	Unprintable and zero-width Unicode characters are displayed as <xxxx>.
+	There is no option to specify these characters.
+
+			*'joinspaces'* *'js'* *'nojoinspaces'* *'nojs'*
+'joinspaces' 'js'	boolean	(default on)
+			global
+			{not in Vi}
+	Insert two spaces after a '.', '?' and '!' with a join command.
+	When 'cpoptions' includes the 'j' flag, only do this after a '.'.
+	Otherwise only one space is inserted.
+	NOTE: This option is set when 'compatible' is set.
+
+							*'key'*
+'key'			string	(default "")
+			local to buffer
+			{not in Vi}
+	The key that is used for encrypting and decrypting the current buffer.
+	See |encryption|.
+	Careful: Do not set the key value by hand, someone might see the typed
+	key.  Use the |:X| command.  But you can make 'key' empty: >
+		:set key=
+<	It is not possible to get the value of this option with ":set key" or
+	"echo &key".  This is to avoid showing it to someone who shouldn't
+	know.  It also means you cannot see it yourself once you have set it,
+	be careful not to make a typing error!
+
+					*'keymap'* *'kmp'* *E544*
+'keymap' 'kmp'		string	(default "")
+			local to buffer
+			{not in Vi}
+			{only available when compiled with the |+keymap|
+			feature}
+	Name of a keyboard mapping.  See |mbyte-keymap|.
+	Setting this option to a valid keymap name has the side effect of
+	setting 'iminsert' to one, so that the keymap becomes effective.
+	'imsearch' is also set to one, unless it was -1
+
+					*'keymodel'* *'km'*
+'keymodel' 'km'		string	(default "")
+			global
+			{not in Vi}
+	List of comma separated words, which enable special things that keys
+	can do.  These values can be used:
+	   startsel	Using a shifted special key starts selection (either
+			Select mode or Visual mode, depending on "key" being
+			present in 'selectmode').
+	   stopsel	Using a not-shifted special key stops selection.
+	Special keys in this context are the cursor keys, <End>, <Home>,
+	<PageUp> and <PageDown>.
+	The 'keymodel' option is set by the |:behave| command.
+
+					*'keywordprg'* *'kp'*
+'keywordprg' 'kp'	string	(default "man" or "man -s",  DOS: ":help",
+						OS/2: "view /", VMS: "help")
+			global or local to buffer |global-local|
+			{not in Vi}
+	Program to use for the |K| command.  Environment variables are
+	expanded |:set_env|.  ":help" may be used to access the Vim internal
+	help.  (Note that previously setting the global option to the empty
+	value did this, which is now deprecated.)
+	When "man" is used, Vim will automatically translate a count for the
+	"K" command to a section number.  Also for "man -s", in which case the
+	"-s" is removed when there is no count.
+	See |option-backslash| about including spaces and backslashes.
+	Example: >
+		:set keywordprg=man\ -s
+<	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+					*'langmap'* *'lmap'* *E357* *E358*
+'langmap' 'lmap'	string	(default "")
+			global
+			{not in Vi}
+			{only available when compiled with the |+langmap|
+			feature}
+	This option allows switching your keyboard into a special language
+	mode.	When you are typing text in Insert mode the characters are
+	inserted directly.  When in command mode the 'langmap' option takes
+	care of translating these special characters to the original meaning
+	of the key.  This means you don't have to change the keyboard mode to
+	be able to execute Normal mode commands.
+	This is the opposite of the 'keymap' option, where characters are
+	mapped in Insert mode.
+	This only works for 8-bit characters.  The value of 'langmap' may be
+	specified with multi-byte characters (e.g., UTF-8), but only the lower
+	8 bits of each character will be used.
+
+	Example (for Greek):					*greek*  >
+	    :set langmap=ÁA,ÂB,ØC,ÄD,ÅE,ÖF,ÃG,ÇH,ÉI,ÎJ,ÊK,ËL,ÌM,ÍN,ÏO,ÐP,QQ,ÑR,ÓS,ÔT,ÈU,ÙV,WW,×X,ÕY,ÆZ,áa,âb,øc,äd,åe,öf,ãg,çh,éi,îj,êk,ël,ìm,ín,ïo,ðp,qq,ñr,ós,ôt,èu,ùv,òw,÷x,õy,æz
+<	Example (exchanges meaning of z and y for commands): >
+	    :set langmap=zy,yz,ZY,YZ
+<
+	The 'langmap' option is a list of parts, separated with commas.  Each
+	part can be in one of two forms:
+	1.  A list of pairs.  Each pair is a "from" character immediately
+	    followed by the "to" character.  Examples: "aA", "aAbBcC".
+	2.  A list of "from" characters, a semi-colon and a list of "to"
+	    characters.  Example: "abc;ABC"
+	Example: "aA,fgh;FGH,cCdDeE"
+	Special characters need to be preceded with a backslash.  These are
+	";", ',' and backslash itself.
+
+	This will allow you to activate vim actions without having to switch
+	back and forth between the languages.  Your language characters will
+	be understood as normal vim English characters (according to the
+	langmap mappings) in the following cases:
+	 o Normal/Visual mode (commands, buffer/register names, user mappings)
+	 o Insert/Replace Mode: Register names after CTRL-R
+	 o Insert/Replace Mode: Mappings
+	Characters entered in Command-line mode will NOT be affected by
+	this option.   Note that this option can be changed at any time
+	allowing to switch between mappings for different languages/encodings.
+	Use a mapping to avoid having to type it each time!
+
+					*'langmenu'* *'lm'*
+'langmenu' 'lm'		string	(default "")
+			global
+			{not in Vi}
+			{only available when compiled with the |+menu| and
+			|+multi_lang| features}
+	Language to use for menu translation.  Tells which file is loaded
+	from the "lang" directory in 'runtimepath': >
+		"lang/menu_" . &langmenu . ".vim"
+<	(without the spaces).  For example, to always use the Dutch menus, no
+	matter what $LANG is set to: >
+		:set langmenu=nl_NL.ISO_8859-1
+<	When 'langmenu' is empty, |v:lang| is used.
+	If your $LANG is set to a non-English language but you do want to use
+	the English menus: >
+		:set langmenu=none
+<	This option must be set before loading menus, switching on filetype
+	detection or syntax highlighting.  Once the menus are defined setting
+	this option has no effect.  But you could do this: >
+		:source $VIMRUNTIME/delmenu.vim
+		:set langmenu=de_DE.ISO_8859-1
+		:source $VIMRUNTIME/menu.vim
+<	Warning: This deletes all menus that you defined yourself!
+
+					*'laststatus'* *'ls'*
+'laststatus' 'ls'	number	(default 1)
+			global
+			{not in Vi}
+	The value of this option influences when the last window will have a
+	status line:
+		0: never
+		1: only if there are at least two windows
+		2: always
+	The screen looks nicer with a status line if you have several
+	windows, but it takes another screen line. |status-line|
+
+			*'lazyredraw'* *'lz'* *'nolazyredraw'* *'nolz'*
+'lazyredraw' 'lz'	boolean	(default off)
+			global
+			{not in Vi}
+	When this option is set, the screen will not be redrawn while
+	executing macros, registers and other commands that have not been
+	typed.	Also, updating the window title is postponed.  To force an
+	update use |:redraw|.
+
+			*'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'*
+'linebreak' 'lbr'	boolean	(default off)
+			local to window
+			{not in Vi}
+			{not available when compiled without the  |+linebreak|
+			feature}
+	If on Vim will wrap long lines at a character in 'breakat' rather
+	than at the last character that fits on the screen.  Unlike
+	'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file,
+	it only affects the way the file is displayed, not its contents.  The
+	value of 'showbreak' is used to put in front of wrapped lines.
+	This option is not used when the 'wrap' option is off or 'list' is on.
+	Note that <Tab> characters after an <EOL> are mostly not displayed
+	with the right amount of white space.
+
+						*'lines'* *E593*
+'lines'			number	(default 24 or terminal height)
+			global
+	Number of lines of the Vim window.
+	Normally you don't need to set this.  It is done automatically by the
+	terminal initialization code.
+	When Vim is running in the GUI or in a resizable window, setting this
+	option will cause the window size to be changed.  When you only want
+	to use the size for the GUI, put the command in your |gvimrc| file.
+	Vim limits the number of lines to what fits on the screen.  You can
+	use this command to get the tallest window possible: >
+		:set lines=999
+<	If you get less lines than expected, check the 'guiheadroom' option.
+	When you set this option and Vim is unable to change the physical
+	number of lines of the display, the display may be messed up.
+
+						*'linespace'* *'lsp'*
+'linespace' 'lsp'	number	(default 0, 1 for Win32 GUI)
+			global
+			{not in Vi}
+			{only in the GUI}
+	Number of pixel lines inserted between characters.  Useful if the font
+	uses the full character cell height, making lines touch each other.
+	When non-zero there is room for underlining.
+
+						*'lisp'* *'nolisp'*
+'lisp'			boolean	(default off)
+			local to buffer
+			{not available when compiled without the |+lispindent|
+			feature}
+	Lisp mode: When <Enter> is typed in insert mode set the indent for
+	the next line to Lisp standards (well, sort of).  Also happens with
+	"cc" or "S".  'autoindent' must also be on for this to work.  The 'p'
+	flag in 'cpoptions' changes the method of indenting: Vi compatible or
+	better.  Also see 'lispwords'.
+	The '-' character is included in keyword characters.  Redefines the
+	"=" operator to use this same indentation algorithm rather than
+	calling an external program if 'equalprg' is empty.
+	This option is not used when 'paste' is set.
+	{Vi: Does it a little bit differently}
+
+						*'lispwords'* *'lw'*
+'lispwords' 'lw'	string	(default is very long)
+			global
+			{not in Vi}
+			{not available when compiled without the |+lispindent|
+			feature}
+	Comma separated list of words that influence the Lisp indenting.
+	|'lisp'|
+
+						*'list'* *'nolist'*
+'list'			boolean	(default off)
+			local to window
+	List mode: Show tabs as CTRL-I, show end of line with $.  Useful to
+	see the difference between tabs and spaces and for trailing blanks.
+	Note that this will also affect formatting (set with 'textwidth' or
+	'wrapmargin') when 'cpoptions' includes 'L'.  See 'listchars' for
+	changing the way tabs are displayed.
+
+						*'listchars'* *'lcs'*
+'listchars' 'lcs'	string	(default "eol:$")
+			global
+			{not in Vi}
+	Strings to use in 'list' mode.	It is a comma separated list of string
+	settings.
+	  eol:c		Character to show at the end of each line.  When
+			omitted, there is no extra character at the end of the
+			line.
+	  tab:xy	Two characters to be used to show a Tab.  The first
+			char is used once.  The second char is repeated to
+			fill the space that the Tab normally occupies.
+			"tab:>-" will show a Tab that takes four spaces as
+			">---".  When omitted, a Tab is show as ^I.
+	  trail:c	Character to show for trailing spaces.	When omitted,
+			trailing spaces are blank.
+	  extends:c	Character to show in the last column, when 'wrap' is
+			off and the line continues beyond the right of the
+			screen.
+	  precedes:c	Character to show in the first column, when 'wrap'
+			is off and there is text preceding the character
+			visible in the first column.
+
+	The characters ':' and ',' should not be used.	UTF-8 characters can
+	be used when 'encoding' is "utf-8", otherwise only printable
+	characters are allowed.
+
+	Examples: >
+	    :set lcs=tab:>-,trail:-
+	    :set lcs=tab:>-,eol:<
+	    :set lcs=extends:>,precedes:<
+<	The "NonText" highlighting will be used for "eol", "extends" and
+	"precedes".  "SpecialKey" for "tab" and "trail".
+
+			*'lpl'* *'nolpl'* *'loadplugins'* *'noloadplugins'*
+'loadplugins' 'lpl'	boolean	(default on)
+			global
+			{not in Vi}
+	When on the plugin scripts are loaded when starting up |load-plugins|.
+	This option can be reset in your |vimrc| file to disable the loading
+	of plugins.
+	Note that using the "-u NONE" and "--noplugin" command line arguments
+	reset this option. |-u| |--noplugin|
+
+						*'magic'* *'nomagic'*
+'magic'			boolean	(default on)
+			global
+	Changes the special characters that can be used in search patterns.
+	See |pattern|.
+	NOTE: To avoid portability problems with using patterns, always keep
+	this option at the default "on".  Only switch it off when working with
+	old Vi scripts.  In any other situation write patterns that work when
+	'magic' is on.
+
+						*'makeef'* *'mef'*
+'makeef' 'mef'		string	(default: "")
+			global
+			{not in Vi}
+			{not available when compiled without the |+quickfix|
+			feature}
+	Name of the errorfile for the |:make| command (see |:make_makeprg|)
+	and the |:grep| command.
+	When it is empty, an internally generated temp file will be used.
+	When "##" is included, it is replaced by a number to make the name
+	unique.  This makes sure that the ":make" command doesn't overwrite an
+	existing file.
+	NOT used for the ":cf" command.  See 'errorfile' for that.
+	Environment variables are expanded |:set_env|.
+	See |option-backslash| about including spaces and backslashes.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'makeprg'* *'mp'*
+'makeprg' 'mp'		string	(default "make", VMS: "MMS")
+			global or local to buffer |global-local|
+			{not in Vi}
+	Program to use for the ":make" command.  See |:make_makeprg|.  This
+	option may contain '%' and '#' characters, which are expanded like
+	when used in a command-line.  Environment variables are expanded
+	|:set_env|.  See |option-backslash| about including spaces and
+	backslashes.  Note that a '|' must be escaped twice: once for ":set"
+	and once for the interpretation of a command.  When you use a filter
+	called "myfilter" do it like this: >
+	    :set makeprg=gmake\ \\\|\ myfilter
+<	The placeholder "$*" can be given (even multiple times) to specify
+	where the arguments will be included, for example: >
+	    :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
+<	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'matchpairs'* *'mps'*
+'matchpairs' 'mps'	string	(default "(:),{:},[:]")
+			local to buffer
+			{not in Vi}
+	Characters that form pairs.  The |%| command jumps from one to the
+	other.	Currently only single character pairs are allowed, and they
+	must be different.  The characters must be separated by a colon.  The
+	pairs must be separated by a comma.  Example for including '<' and '>'
+	(HTML): >
+		:set mps+=<:>
+
+<	A more exotic example, to jump between the '=' and ';' in an
+	assignment, useful for languages like C and Java: >
+		:au FileType c,cpp,java set mps+==:;
+
+<	For a more advanced way of using "%", see the matchit.vim plugin in
+	the $VIMRUNTIME/macros directory. |add-local-help|
+
+						*'matchtime'* *'mat'*
+'matchtime' 'mat'	number	(default 5)
+			global
+			{not in Vi}{in Nvi}
+	Tenths of a second to show the matching paren, when 'showmatch' is
+	set.  Note that this is not in milliseconds, like other options that
+	set a time.  This is to be compatible with Nvi.
+
+						*'maxfuncdepth'* *'mfd'*
+'maxfuncdepth' 'mfd'	number	(default 100)
+			global
+			{not in Vi}
+	Maximum depth of function calls for user functions.  This normally
+	catches endless recursion.  When using a recursive function with
+	more depth, set 'maxfuncdepth' to a bigger number.  But this will use
+	more memory, there is the danger of failing when memory is exhausted.
+	See also |:function|.
+
+						*'maxmapdepth'* *'mmd'* *E223*
+'maxmapdepth' 'mmd'	number	(default 1000)
+			global
+			{not in Vi}
+	Maximum number of times a mapping is done without resulting in a
+	character to be used.  This normally catches endless mappings, like
+	":map x y" with ":map y x".  It still does not catch ":map g wg",
+	because the 'w' is used before the next mapping is done.  See also
+	|key-mapping|.
+
+						*'maxmem'* *'mm'*
+'maxmem' 'mm'		number	(default between 256 to 5120 (system
+				 dependent) or half the amount of memory
+				 available)
+			global
+			{not in Vi}
+	Maximum amount of memory (in Kbyte) to use for one buffer.  When this
+	limit is reached allocating extra memory for a buffer will cause
+	other memory to be freed.  Maximum value 2000000.  Use this to work
+	without a limit.  Also see 'maxmemtot'.
+
+						*'maxmemtot'* *'mmt'*
+'maxmemtot' 'mmt'	number	(default between 2048 and 10240 (system
+				 dependent) or half the amount of memory
+				 available)
+			global
+			{not in Vi}
+	Maximum amount of memory (in Kbyte) to use for all buffers together.
+	Maximum value 2000000.	Use this to work without a limit.  Also see
+	'maxmem'.
+
+						*'menuitems'* *'mis'*
+'menuitems' 'mis'	number	(default 25)
+			global
+			{not in Vi}
+			{not available when compiled without the |+menu|
+			feature}
+	Maximum number of items to use in a menu.  Used for menus that are
+	generated from a list of items, e.g., the Buffers menu.  Changing this
+	option has no direct effect, the menu must be refreshed first.
+
+				   *'modeline'* *'ml'* *'nomodeline'* *'noml'*
+'modeline' 'ml'		boolean	(Vim default: on, Vi default: off)
+			local to buffer
+						*'modelines'* *'mls'*
+'modelines' 'mls'	number	(default 5)
+			global
+			{not in Vi}
+	If 'modeline' is on 'modelines' gives the number of lines that is
+	checked for set commands.  If 'modeline' is off or 'modelines' is zero
+	no lines are checked.  See |modeline|.
+	NOTE: 'modeline' is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+				*'modifiable'* *'ma'* *'nomodifiable'* *'noma'*
+'modifiable' 'ma'	boolean	(default on)
+			local to buffer
+			{not in Vi}		*E21*
+	When off the buffer contents cannot be changed.  The 'fileformat' and
+	'fileencoding' options also can't be changed.
+	Can be reset with the |-M| command line argument.
+
+				*'modified'* *'mod'* *'nomodified'* *'nomod'*
+'modified' 'mod'	boolean	(default off)
+			local to buffer
+			{not in Vi}
+	When on, the buffer is considered to be modified.  This option is set
+	when:
+	1. A change was made to the text since it was last written.  Using the
+	   |undo| command to go back to the original text will reset the
+	   option.  But undoing changes that were made before writing the
+	   buffer will set the option again, since the text is different from
+	   when it was written.
+	2. 'fileformat' or 'fileencoding' is different from its original
+	   value.  The original value is set when the buffer is read or
+	   written.  A ":set nomodified" command also resets the original
+	   values to the current values and the 'modified' option will be
+	   reset.
+	When 'buftype' is "nowrite" or "nofile" this option may be set, but
+	will be ignored.
+
+						*'more'* *'nomore'*
+'more'			boolean	(Vim default: on, Vi default: off)
+			global
+			{not in Vi}
+	When on, listings pause when the whole screen is filled.  You will get
+	the |more-prompt|.  When this option is off there are no pauses, the
+	listing continues until finished.
+	NOTE: This option is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+						*'mouse'* *E538*
+'mouse'			string	(default "", "a" for GUI, MS-DOS and Win32)
+			global
+			{not in Vi}
+	Enable the use of the mouse.  Only works for certain terminals
+	(xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm, and Linux console
+	with gpm).  For using the mouse in the GUI, see |gui-mouse|.
+	The mouse can be enabled for different modes:
+		n	Normal mode
+		v	Visual mode
+		i	Insert mode
+		c	Command-line mode
+		h	all previous modes when editing a help file
+		a	all previous modes
+		r	for |hit-enter| and |more-prompt| prompt
+		A	auto-select in Visual mode
+	Normally you would enable the mouse in all four modes with: >
+		:set mouse=a
+<	When the mouse is not enabled, the GUI will still use the mouse for
+	modeless selection.  This doesn't move the text cursor.
+
+	See |mouse-using|.  Also see |'clipboard'|.
+
+	Note: When enabling the mouse in a terminal, copy/paste will use the
+	"* register if there is access to an X-server.	The xterm handling of
+	the mouse buttons can still be used by keeping the shift key pressed.
+	Also see the 'clipboard' option.
+
+			*'mousefocus'* *'mousef'* *'nomousefocus'* *'nomousef'*
+'mousefocus' 'mousef'	boolean	(default off)
+			global
+			{not in Vi}
+			{only works in the GUI}
+	The window that the mouse pointer is on is automatically activated.
+	When changing the window layout or window focus in another way, the
+	mouse pointer is moved to the window with keyboard focus.  Off is the
+	default because it makes using the pull down menus a little goofy, as
+	a pointer transit may activate a window unintentionally.
+
+			*'mousehide'* *'mh'* *'nomousehide'* *'nomh'*
+'mousehide' 'mh'	boolean	(default on)
+			global
+			{not in Vi}
+			{only works in the GUI}
+	When on, the mouse pointer is hidden when characters are typed.
+	The mouse pointer is restored when the mouse is moved.
+
+						*'mousemodel'* *'mousem'*
+'mousemodel' 'mousem'	string	(default "extend", "popup" for MS-DOS and Win32)
+			global
+			{not in Vi}
+	Sets the model to use for the mouse.  The name mostly specifies what
+	the right mouse button is used for:
+	   extend	Right mouse button extends a selection.  This works
+			like in an xterm.
+	   popup	Right mouse button pops up a menu.  The shifted left
+			mouse button extends a selection.  This works like
+			with Microsoft Windows
+	   popup_setpos Like "popup", but the cursor will be moved to the
+			position where the mouse was clicked, and thus the
+			selected operation will act upon the clicked object.
+			If clicking inside a selection, that selection will
+			be acted upon, ie. no cursor move.  This implies of
+			course, that right clicking outside a selection will
+			end Visual mode.
+	Overview of what button does what for each model:
+	mouse		    extend		popup(_setpos) ~
+	left click	    place cursor	place cursor
+	left drag	    start selection	start selection
+	shift-left	    search word		extend selection
+	right click	    extend selection	popup menu (place cursor)
+	right drag	    extend selection	-
+	middle click	    paste		paste
+
+	In the "popup" model the right mouse button produces a pop-up menu.
+	You need to define this first, see |popup-menu|.
+
+	Note that you can further refine the meaning of buttons with mappings.
+	See |gui-mouse-mapping|.  But mappings are NOT used for modeless
+	selection (because that's handled in the GUI code directly).
+
+	The 'mousemodel' option is set by the |:behave| command.
+
+					*'mouseshape'* *'mouses'* *E547*
+'mouseshape' 'mouses'	string	(default "i:beam,r:beam,s:updown,sd:cross,
+					m:no,ml:up-arrow,v:rightup-arrow"
+			global
+			{not in Vi}
+			{only available when compiled with the |+mouseshape|
+			feature}
+	This option tells Vim what the mouse pointer should look like in
+	different modes.  The option is a comma separated list of parts, much
+	like used for 'guicursor'.  Each part consist of a mode/location-list
+	and an argument-list:
+		mode-list:shape,mode-list:shape,..
+	The mode-list is a dash separated list of these modes/locations:
+			In a normal window: ~
+		n	Normal mode
+		v	Visual mode
+		ve	Visual mode with 'selection' "exclusive" (same as 'v',
+			if not specified)
+		o	Operator-pending mode
+		i	Insert mode
+		r	Replace mode
+
+			Others: ~
+		c	appending to the command-line
+		ci	inserting in the command-line
+		cr	replacing in the command-line
+		m	at the 'Hit ENTER' or 'More' prompts
+		ml	idem, but cursor in the last line
+		e	any mode, pointer below last window
+		s	any mode, pointer on a status line
+		sd	any mode, while dragging a status line
+		vs	any mode, pointer on a vertical separator line
+		vd	any mode, while dragging a vertical separator line
+		a	everywhere
+
+	The shape is one of the following:
+	avail	name		looks like ~
+	w x	arrow		Normal mouse pointer
+	w x	blank		no pointer at all (use with care!)
+	w x	beam		I-beam
+	w x	updown		up-down sizing arrows
+	w x	leftright	left-right sizing arrows
+	w x	busy		The system's usual busy pointer
+	w x	no		The system's usual 'no input' pointer
+	  x	udsizing	indicates up-down resizing
+	  x	lrsizing	indicates left-right resizing
+	  x	crosshair	like a big thin +
+	  x	hand1		black hand
+	  x	hand2		white hand
+	  x	pencil		what you write with
+	  x	question	big ?
+	  x	rightup-arrow	arrow pointing right-up
+	w x	up-arrow	arrow pointing up
+	  x	<number>	any X11 pointer number (see X11/cursorfont.h)
+
+	The "avail" column contains a 'w' if the shape is available for Win32,
+	x for X11.
+	Any modes not specified or shapes not available use the normal mouse
+	pointer.
+
+	Example: >
+		:set mouseshape=s:udsizing,m:no
+<	will make the mouse turn to a sizing arrow over the status lines and
+	indicate no input when the hit-enter prompt is displayed (since
+	clicking the mouse has no effect in this state.)
+
+						*'mousetime'* *'mouset'*
+'mousetime' 'mouset'	number	(default 500)
+			global
+			{not in Vi}
+	Only for GUI, MS-DOS, Win32 and Unix with xterm.  Defines the maximum
+	time in msec between two mouse clicks for the second click to be
+	recognized as a multi click.
+
+							*'nrformats'* *'nf'*
+'nrformats' 'nf'	string	(default "octal,hex")
+			local to buffer
+			{not in Vi}
+	This defines what bases Vim will consider for numbers when using the
+	CTRL-A and CTRL-X commands for adding to and subtracting from a number
+	respectively; see |CTRL-A| for more info on these commands.
+	alpha	if included, single alphabetical characters will be
+		incremented or decremented.  This is useful for a list with a
+		letter index a), b), etc.
+	octal	if included, numbers that start with a zero will be considered
+		to be octal.  Example: Using CTRL-A on "007" results in "010".
+	hex	if included, numbers starting with "0x" or "0X" will be
+		considered to be hexadecimal.  Example: Using CTRL-X on
+		"0x100" results in "0x0ff".
+	Numbers which simply begin with a digit in the range 1-9 are always
+	considered decimal.  This also happens for numbers that are not
+	recognized as octal or hex.
+
+				*'number'* *'nu'* *'nonumber'* *'nonu'*
+'number' 'nu'		boolean	(default off)
+			local to window
+	Print the line number in front of each line.  When the 'n' option is
+	excluded from 'cpoptions' a wrapped line will not use the column of
+	line numbers (this is the default when 'compatible' isn't set).
+	When a long, wrapped line doesn't start with the first character, '-'
+	characters are put before the number.
+	See |hl-LineNr| for the highlighting used for the number.
+
+					*'osfiletype'* *'oft'* *E366*
+'osfiletype' 'oft'	string (RISC-OS default: "Text",
+				others default: "")
+			local to buffer
+			{not in Vi}
+			{only available when compiled with the |+osfiletype|
+			feature}
+	Some operating systems store extra information about files besides
+	name, datestamp and permissions.  This option contains the extra
+	information, the nature of which will vary between systems.
+	The value of this option is usually set when the file is loaded, and
+	use to set the file type when file is written.
+	It can affect the pattern matching of the automatic commands.
+	|autocmd-osfiletypes|
+
+						*'paragraphs'* *'para'*
+'paragraphs' 'para'	string	(default "IPLPPPQPP LIpplpipbp")
+			global
+	Specifies the nroff macros that separate paragraphs.  These are pairs
+	of two letters (see |object-motions|).
+
+						*'paste'* *'nopaste'*
+'paste'			boolean	(default off)
+			global
+			{not in Vi}
+	Put Vim in Paste mode.	This is useful if you want to cut or copy
+	some text from one window and paste it in Vim.	This will avoid
+	unexpected effects.
+	Setting this option is useful when using Vim in a terminal, where Vim
+	cannot distinguish between typed text and pasted text.	In the GUI, Vim
+	knows about pasting and will mostly do the right thing without 'paste'
+	being set.  The same is true for a terminal where Vim handles the
+	mouse clicks itself.
+	When the 'paste' option is switched on (also when it was already on):
+		- mapping in Insert mode and Command-line mode is disabled
+		- abbreviations are disabled
+		- 'textwidth' is set to 0
+		- 'wrapmargin' is set to 0
+		- 'autoindent' is reset
+		- 'smartindent' is reset
+		- 'softtabstop' is set to 0
+		- 'revins' is reset
+		- 'ruler' is reset
+		- 'showmatch' is reset
+		- 'formatoptions' is used like it is empty
+	These options keep their value, but their effect is disabled:
+		- 'lisp'
+		- 'indentexpr'
+		- 'cindent'
+	NOTE: When you start editing another file while the 'paste' option is
+	on, settings from the modelines or autocommands may change the
+	settings again, causing trouble when pasting text.  You might want to
+	set the 'paste' option again.
+	When the 'paste' option is reset the mentioned options are restored to
+	the value before the moment 'paste' was switched from off to on.
+	Resetting 'paste' before ever setting it does not have any effect.
+	Since mapping doesn't work while 'paste' is active, you need to use
+	the 'pastetoggle' option to toggle the 'paste' option with some key.
+
+						*'pastetoggle'* *'pt'*
+'pastetoggle' 'pt'	string	(default "")
+			global
+			{not in Vi}
+	When non-empty, specifies the key sequence that toggles the 'paste'
+	option.  This is like specifying a mapping: >
+	    :map {keys} :set invpaste<CR>
+<	Where {keys} is the value of 'pastetoggle'.
+	The difference is that it will work even when 'paste' is set.
+	'pastetoggle' works in Insert mode and Normal mode, but not in
+	Command-line mode.
+	Mappings are checked first, thus overrule 'pastetoggle'.  However,
+	when 'paste' is on mappings are ignored in Insert mode, thus you can do
+	this: >
+	    :map <F10> :set paste<CR>
+	    :map <F11> :set nopaste<CR>
+	    :imap <F10> <C-O>:set paste<CR>
+	    :imap <F11> <nop>
+	    :set pastetoggle=<F11>
+<	This will make <F10> start paste mode and <F11> stop paste mode.
+	Note that typing <F10> in paste mode inserts "<F10>", since in paste
+	mode everything is inserted literally, except the 'pastetoggle' key
+	sequence.
+
+						*'pex'* *'patchexpr'*
+'patchexpr' 'pex'	string	(default "")
+			global
+			{not in Vi}
+			{not available when compiled without the |+diff|
+			feature}
+	Expression which is evaluated to apply a patch to a file and generate
+	the resulting new version of the file.	See |diff-patchexpr|.
+
+						*'patchmode'* *'pm'* *E206*
+'patchmode' 'pm'	string	(default "")
+			global
+			{not in Vi}
+	When non-empty the oldest version of a file is kept.  This can be used
+	to keep the original version of a file if you are changing files in a
+	source distribution.  Only the first time that a file is written a
+	copy of the original file will be kept.  The name of the copy is the
+	name of the original file with the string in the 'patchmode' option
+	appended.  This option should start with a dot.  Use a string like
+	".org".  'backupdir' must not be empty for this to work (Detail: The
+	backup file is renamed to the patchmode file after the new file has
+	been successfully written, that's why it must be possible to write a
+	backup file).  If there was no file to be backed up, an empty file is
+	created.
+	When the 'backupskip' pattern matches, a patchmode file is not made.
+	Using 'patchmode' for compressed files appends the extension at the
+	end (e.g., "file.gz.orig"), thus the resulting name isn't always
+	recognized as a compressed file.
+
+					*'path'* *'pa'* *E343* *E345* *E347*
+'path' 'pa'		string	(default on Unix: ".,/usr/include,,"
+				   on OS/2:	  ".,/emx/include,,"
+				   other systems: ".,,")
+			global or local to buffer |global-local|
+			{not in Vi}
+	This is a list of directories which will be searched when using the
+	|gf|, [f, ]f, ^Wf, |:find| and other commands, provided that the file
+	being searched for has a relative path (not starting with '/').  The
+	directories in the 'path' option may be relative or absolute.
+	- Use commas to separate directory names: >
+		:set path=.,/usr/local/include,/usr/include
+<	- Spaces can also be used to separate directory names (for backwards
+	  compatibility with version 3.0).  To have a space in a directory
+	  name, precede it with an extra backslash, and escape the space: >
+		:set path=.,/dir/with\\\ space
+<	- To include a comma in a directory name precede it with an extra
+	  backslash: >
+		:set path=.,/dir/with\\,comma
+<	- To search relative to the directory of the current file, use: >
+		:set path=.
+<	- To search in the current directory use an empty string between two
+	  commas: >
+		:set path=,,
+<	- A directory name may end in a ':' or '/'.
+	- Environment variables are expanded |:set_env|.
+	- When using |netrw.vim| URLs can be used.  For example, adding
+	  "http://www.vim.org" will make ":find index.html" work.
+	- Search upwards and downwards in a directory tree:
+	  1) "*" matches a sequence of characters, e.g.: >
+		:set path=/usr/include/*
+<	     means all subdirectories in /usr/include (but not /usr/include
+	     itself). >
+		:set path=/usr/*c
+<	     matches /usr/doc and /usr/src.
+	  2) "**" matches a subtree, up to 100 directories deep.  Example: >
+		:set path=/home/user_x/src/**
+<	     means search in the whole subtree under "/home/usr_x/src".
+	  3) If the path ends with a ';', this path is the startpoint
+	     for upward search.
+	  See |file-searching| for more info and exact syntax.
+	  {not available when compiled without the |+path_extra| feature}
+	- Careful with '\' characters, type two to get one in the option: >
+		:set path=.,c:\\include
+<	  Or just use '/' instead: >
+		:set path=.,c:/include
+<	Don't forget "." or files won't even be found in the same directory as
+	the file!
+	The maximum length is limited.	How much depends on the system, mostly
+	it is something like 256 or 1024 characters.
+	You can check if all the include files are found, using the value of
+	'path', see |:checkpath|.
+	The use of |:set+=| and |:set-=| is preferred when adding or removing
+	directories from the list.  This avoids problems when a future version
+	uses another default.  To remove the current directory use: >
+		:set path-=
+<	To add the current directory use: >
+		:set path+=
+<	To use an environment variable, you probably need to replace the
+	separator.  Here is an example to append $INCL, in which directory
+	names are separated with a semi-colon: >
+		:let &path = &path . "," . substitute($INCL, ';', ',', 'g')
+<	Replace the ';' with a ':' or whatever separator is used.  Note that
+	this doesn't work when $INCL contains a comma or white space.
+
+			*'preserveindent'* *'pi'* *'nopreserveindent'* *'nopi'*
+'preserveindent' 'pi'	boolean	(default off)
+			local to buffer
+			{not in Vi}
+	When changing the indent of the current line, preserve as much of the
+	indent structure as possible.  Normally the indent is replaced by a
+	series of tabs followed by spaces as required (unless |'expandtab'| is
+	enabled, in which case only spaces are used).  Enabling this option
+	means the indent will preserve as many existing characters as possible
+	for indenting, and only add additional tabs or spaces as required.
+	NOTE: When using ">>" multiple times the resulting indent is a mix of
+	tabs and spaces.  You might not like this.
+	NOTE: 'preserveindent' is reset when 'compatible' is set.
+	Also see 'copyindent'.
+	Use |:retab| to clean up white space.
+
+					*'previewheight'* *'pvh'*
+'previewheight' 'pvh'	number (default 12)
+			global
+			{not in Vi}
+			{not available when compiled without the |+windows| or
+			|+quickfix| feature}
+	Default height for a preview window.  Used for |:ptag| and associated
+	commands.  Used for |CTRL-W_}| when no count is given.
+
+					*'previewwindow'* *'nopreviewwindow'*
+					*'pvw'* *'nopvw'* *E590*
+'previewwindow' 'pvw'	boolean (default off)
+			local to window
+			{not in Vi}
+			{not available when compiled without the |+windows| or
+			|+quickfix| feature}
+	Identifies the preview window.	Only one window can have this option
+	set.  It's normally not set directly, but by using one of the commands
+	|:ptag|, |:pedit|, etc.
+
+						*'printdevice'* *'pdev'*
+'printdevice' 'pdev'	string	(default empty)
+			global
+			{not in Vi}
+			{only available when compiled with the |+printer|
+			feature}
+	This defines the name of the printer to be used when the |:hardcopy|
+	command is issued with a bang (!) to skip the printer selection
+	dialog.  On Win32, it should be the printer name exactly as it appears
+	in the standard printer dialog.
+	If the option is empty, then vim will use the system default printer
+	for ":hardcopy!"
+
+					*'printencoding'* *'penc'* *E620*
+'printencoding' 'penc'	String	(default empty, except for:
+					Windows, OS/2: cp1252,
+					Macintosh: mac-roman,
+					VMS: dec-mcs,
+					HPUX: hp-roman8,
+					EBCDIC: ebcdic-uk)
+			global
+			{not in Vi}
+			{only available when compiled with the |+printer|
+			and |+postscript| features}
+	Sets the character encoding used when printing.  This option tells VIM
+	which print character encoding file from the "print" directory in
+	'runtimepath' to use.
+
+	This option will accept any value from |encoding-names|.  Any
+	recognized names are converted to VIM standard names - see 'encoding'
+	for more details.  Names not recognized by VIM will just be converted
+	to lower case and underscores replaced with '-' signs.
+
+	If 'printencoding' is empty or VIM cannot find the file then it will
+	use 'encoding' (if VIM is compiled with |+multi_byte| and it is set an
+	8-bit encoding) to find the print character encoding file.  If VIM is
+	unable to find a character encoding file then it will use the "latin1"
+	print character encoding file.
+
+	When 'encoding' is set to a multi-byte encoding, VIM will try to
+	convert characters to the printing encoding for printing (if
+	'printencoding' is empty then the conversion will be to latin1).
+	Conversion to a printing encoding other than latin1 will require VIM
+	to be compiled with the |+iconv| feature.  If no conversion is
+	possible then printing will fail.  Any characters that cannot be
+	converted will be replaced with upside down question marks.
+
+	Four print character encoding files are provided to support default
+	Mac, VMS, HPUX, and EBCDIC character encodings and are used by default
+	on these platforms.  Code page 1252 print character encoding is used
+	by default on Windows and OS/2 platforms.
+
+
+						*'printexpr'* *'pexpr'*
+'printexpr' 'pexpr'	String	(default: see below)
+			global
+			{not in Vi}
+			{only available when compiled with the |+printer|
+			and |+postscript| features}
+	Expression that is evaluated to print the PostScript produced with
+	":hardcopy".
+	The file name to be printed is in |v:fname_in|.
+	The arguments to the ":hardcopy" command are in |v:cmdarg|.
+	The expression must take care of deleting the file after printing it.
+	When there is an error, the expression must return a non-zero number.
+	If there is no error, return zero or an empty string.
+	The default for non MS-Windows or VMS systems is to simply use "lpr"
+	to print the file: >
+
+	    system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice)
+		. ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error
+<
+	On MS-Windows machines the default is to copy the file to the
+	currently specified printdevice: >
+
+	    system('copy' . ' ' . v:fname_in . ' "' . &printdevice . '"')
+			. delete(v:fname_in)
+<
+	On VMS machines the default is to send the file to either the default
+	or currently specified printdevice: >
+
+	    system('print' . (&printdevice == '' ? '' : ' /queue=' .
+			&printdevice) . ' ' . v:fname_in) . delete(v:fname_in)
+<
+	If you change this option, using a function is an easy way to avoid
+	having to escape all the spaces.  Example: >
+
+		:set printexpr=PrintFile(v:fname_in)
+		:function PrintFile(fname)
+		:  call system("ghostview " . a:fname)
+		:  call delete(a:fname)
+		:  return v:shell_error
+		:endfunc
+
+<	Be aware that some print programs return control before they have read
+	the file.  If you delete the file too soon it will not be printed.
+	These programs usually offer an option to have them remove the file
+	when printing is done.
+								*E365*
+	If evaluating the expression fails or it results in a non-zero number,
+	you get an error message.  In that case Vim will delete the
+	file.  In the default value for non-MS-Windows a trick is used: Adding
+	"v:shell_error" will result in a non-zero number when the system()
+	call fails.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'printfont'* *'pfn'* *E613*
+'printfont' 'pfn'	string	(default "courier")
+			global
+			{not in Vi}
+			{only available when compiled with the |+printer|
+			feature}
+	This is the name of the font that will be used for the |:hardcopy|
+	command's output.  It has the same format as the 'guifont' option,
+	except that only one font may be named, and the special "guifont=*"
+	syntax is not available.
+	In the Win32 GUI version this specifies a font name with its extra
+	attributes, as with the 'guifont' option.
+	For other systems, only ":h11" is recognized, where "11" is the point
+	size of the font.  When omitted, the point size is 10.
+
+						*'printheader'* *'pheader'*
+'printheader' 'pheader'  string  (default "%<%f%h%m%=Page %N")
+			global
+			{not in Vi}
+			{only available when compiled with the |+printer|
+			feature}
+	This defines the format of the header produced in |:hardcopy| output.
+	The option is defined in the same way as the 'statusline' option.
+	If Vim has not been compiled with the |+statusline| feature, this
+	option has no effect and a simple default header is used, which shows
+	the page number.
+
+						*'printoptions'* *'popt'*
+'printoptions' 'popt' string (default "")
+			global
+			{not in Vi}
+			{only available when compiled with |+printer| feature}
+	This is a comma-separated list of items that control the format of
+	the output of |:hardcopy|:
+
+	  left:{spec}		left margin (default: 10pc)
+	  right:{spec}		right margin (default: 5pc)
+	  top:{spec}		top margin (default: 5pc)
+	  bottom:{spec}		bottom margin (default: 5pc)
+				{spec} is a number followed by "in" for
+				inches, "pt" for points (1 point is 1/72 of an
+				inch), "mm" for millimeters or "pc" for a
+				percentage of the media size.
+				Weird example:
+				    left:2in,top:30pt,right:16mm,bottom:3pc
+				If the unit is not recognized there is no
+				error and the default value is used.
+
+	  header:{nr}		Number of lines to reserve for the header.
+				Only the first line is actually filled, thus
+				when {nr} is 2 there is one empty line.  The
+				header is formatted according to
+				'printheader'.
+	  header:0		Do not print a header.
+	  header:2  (default)	Use two lines for the header
+
+	  syntax:n		Do not use syntax highlighting.  This is
+				faster and thus useful when printing large
+				files.
+	  syntax:y		Do syntax highlighting.
+	  syntax:a  (default)	Use syntax highlighting if the printer appears
+				to be able to print color or grey.
+
+	  number:y		Include line numbers in the printed output.
+	  number:n  (default)	No line numbers.
+
+	  wrap:y    (default)	Wrap long lines.
+	  wrap:n		Truncate long lines.
+
+	  duplex:off		Print on one side.
+	  duplex:long (default)	Print on both sides (when possible), bind on
+				long side.
+	  duplex:short		Print on both sides (when possible), bind on
+				short side.
+
+	  collate:y  (default)	Collating: 1 2 3, 1 2 3, 1 2 3
+	  collate:n		No collating: 1 1 1, 2 2 2, 3 3 3
+
+	  jobsplit:n (default)	Do all copies in one print job
+	  jobsplit:y		Do each copy as a separate print job.  Useful
+				when doing N-up postprocessing.
+
+	  portrait:y (default)	Orientation is portrait.
+	  portrait:n		Orientation is landscape.
+							*a4* *letter*
+	  paper:A4   (default)	Paper size: A4
+	  paper:{name}		Paper size from this table:
+				{name}	    size in cm	     size in inch ~
+				10x14	    25.4  x 35.57    10    x 14
+				A3	    29.7  x 42	     11.69 x 16.54
+				A4	    21	  x 29.7      8.27 x 11.69
+				A5	    14.8  x 21	      5.83 x  8.27
+				B4	    25	  x 35.3     10.12 x 14.33
+				B5	    17.6  x 25	      7.17 x 10.12
+				executive   18.42 x 26.67     7.25 x 10.5
+				folio	    21	  x 33	      8.27 x 13
+				ledger	    43.13 x 27.96    17    x 11
+				legal	    21.59 x 35.57     8.5  x 14
+				letter	    21.59 x 27.96     8.5  x 11
+				quarto	    21.59 x 27.5      8.5  x 10.83
+				statement   13.97 x 21.59     5.5  x  8.5
+				tabloid     27.96 x 43.13    11    x 17
+
+	  formfeed:n (default)	Treat form feed characters (0x0c) as a normal
+				print character.
+	  formfeed:y		When a form feed character is encountered,
+				continue printing of the current line at the
+				beginning of the first line on a new page.
+
+	The item indicated with (default) is used when the item is not
+	present.  The values are not always used, especially when using a
+	dialog to select the printer and options.
+	Example: >
+		:set printoptions=paper:letter,duplex:off
+<
+				   *'readonly'* *'ro'* *'noreadonly'* *'noro'*
+'readonly' 'ro'		boolean	(default off)
+			local to buffer
+	If on, writes fail unless you use a '!'.  Protects you from
+	accidentally overwriting a file.  Default on when Vim is started
+	in read-only mode ("vim -R") or when the executable is called "view".
+	{not in Vi:}  When using the ":view" command the 'readonly' option is
+	set for the newly edited buffer.  When using ":w!" the 'readonly'
+	option is reset for the current buffer.
+
+						*'remap'* *'noremap'*
+'remap'			boolean	(default on)
+			global
+	Allows for mappings to work recursively.  If you do not want this for
+	a single entry, use the :noremap[!] command.
+
+						*'report'*
+'report'		number	(default 2)
+			global
+	Threshold for reporting number of lines changed.  When the number of
+	changed lines is more than 'report' a message will be given for most
+	":" commands.  If you want it always, set 'report' to 0.
+	For the ":substitute" command the number of substitutions is used
+	instead of the number of lines.
+
+			 *'restorescreen'* *'rs'* *'norestorescreen'* *'nors'*
+'restorescreen' 'rs'	boolean	(default on)
+			global
+			{not in Vi}  {only in Windows 95/NT console version}
+	When set, the screen contents is restored when exiting Vim.  This also
+	happens when executing external commands.
+
+	For non-Windows Vim: You can set or reset the 't_ti' and 't_te'
+	options in your .vimrc.  To disable restoring:
+		set t_ti= t_te=
+	To enable restoring (for an xterm):
+		set t_ti=^[7^[[r^[[?47h t_te=^[[?47l^[8
+	(Where ^[ is an <Esc>, type CTRL-V <Esc> to insert it)
+
+				*'revins'* *'ri'* *'norevins'* *'nori'*
+'revins' 'ri'		boolean	(default off)
+			global
+			{not in Vi}
+			{only available when compiled with the |+rightleft|
+			feature}
+	Inserting characters in Insert mode will work backwards.  See "typing
+	backwards" |ins-reverse|.  This option can be toggled with the CTRL-_
+	command in Insert mode, when 'allowrevins' is set.
+	NOTE: This option is reset when 'compatible' or 'paste' is set.
+
+				 *'rightleft'* *'rl'* *'norightleft'* *'norl'*
+'rightleft' 'rl'	boolean	(default off)
+			local to window
+			{not in Vi}
+			{only available when compiled with the |+rightleft|
+			feature}
+	When on, display orientation becomes right-to-left, i.e., characters
+	that are stored in the file appear from the right to the left.
+	Using this option, it is possible to edit files for languages that
+	are written from the right to the left such as Hebrew and Arabic.
+	This option is per window, so it is possible to edit mixed files
+	simultaneously, or to view the same file in both ways (this is
+	useful whenever you have a mixed text file with both right-to-left
+	and left-to-right strings so that both sets are displayed properly
+	in different windows).  Also see |rileft.txt|.
+
+			*'rightleftcmd'* *'rlc'* *'norightleftcmd'* *'norlc'*
+'rightleftcmd' 'rlc'	string	(default "search")
+			local to window
+			{not in Vi}
+			{only available when compiled with the |+rightleft|
+			feature}
+	Each word in this option enables the command line editing to work in
+	right-to-left mode for a group of commands:
+
+		search		"/" and "?" commands
+
+	This is useful for languages such as Hebrew, Arabic and Farsi.
+	The 'rightleft' option must be set for 'rightleftcmd' to take effect.
+
+					 *'ruler'* *'ru'* *'noruler'* *'noru'*
+'ruler' 'ru'		boolean	(default off)
+			global
+			{not in Vi}
+			{not available when compiled without the
+			|+cmdline_info| feature}
+	Show the line and column number of the cursor position, separated by a
+	comma.	When there is room, the relative position of the displayed
+	text in the file is shown on the far right:
+		Top	first line is visible
+		Bot	last line is visible
+		All	first and last line are visible
+		45%	relative position in the file
+	If 'rulerformat' is set, it will determine the contents of the ruler.
+	Each window has its own ruler.	If a window has a status line, the
+	ruler is shown there.  Otherwise it is shown in the last line of the
+	screen.  If the statusline is given by 'statusline' (ie. not empty),
+	this option takes precedence over 'ruler' and 'rulerformat'
+	If the number of characters displayed is different from the number of
+	bytes in the text (e.g., for a TAB or a multi-byte character), both
+	the text column (byte number) and the screen column are shown,
+	separated with a dash.
+	For an empty line "0-1" is shown.
+	For an empty buffer the line number will also be zero: "0,0-1".
+	This option is reset when the 'paste' option is set.
+	If you don't want to see the ruler all the time but want to know where
+	you are, use "g CTRL-G" |g_CTRL-G|.
+	NOTE: This option is reset when 'compatible' is set.
+
+						*'rulerformat'* *'ruf'*
+'rulerformat' 'ruf'	string	(default empty)
+			global
+			{not in Vi}
+			{not available when compiled without the |+statusline|
+			feature}
+	When this option is not empty, it determines the content of the ruler
+	string, as displayed for the 'ruler' option.
+	The format of this option, is like that of 'statusline'.
+	The default ruler width is 17 characters.  To make the ruler 15
+	characters wide, put "%15(" at the start and "%)" at the end.
+	Example: >
+		:set rulerformat=%15(%c%V\ %p%%%)
+<
+				*'runtimepath'* *'rtp'* *vimfiles*
+'runtimepath' 'rtp'	string	(default:
+					Unix: "$HOME/.vim,
+						$VIM/vimfiles,
+						$VIMRUNTIME,
+						$VIM/vimfiles/after,
+						$HOME/.vim/after"
+					Amiga: "home:vimfiles,
+						$VIM/vimfiles,
+						$VIMRUNTIME,
+						$VIM/vimfiles/after,
+						home:vimfiles/after"
+					PC, OS/2: "$HOME/vimfiles,
+						$VIM/vimfiles,
+						$VIMRUNTIME,
+						$VIM/vimfiles/after,
+						$HOME/vimfiles/after"
+					Macintosh: "$VIM:vimfiles,
+						$VIMRUNTIME,
+						$VIM:vimfiles:after"
+					RISC-OS: "Choices:vimfiles,
+						$VIMRUNTIME,
+						Choices:vimfiles/after"
+					VMS: "sys$login:vimfiles,
+						$VIM/vimfiles,
+						$VIMRUNTIME,
+						$VIM/vimfiles/after,
+						sys$login:vimfiles/after"
+			global
+			{not in Vi}
+	This is a list of directories which will be searched for runtime
+	files:
+	  filetype.vim	filetypes by file name |new-filetype|
+	  scripts.vim	filetypes by file contents |new-filetype-scripts|
+	  colors/	color scheme files |:colorscheme|
+	  compiler/	compiler files |:compiler|
+	  doc/		documentation |write-local-help|
+	  ftplugin/	filetype plugins |write-filetype-plugin|
+	  indent/	indent scripts |indent-expression|
+	  keymap/	key mapping files |mbyte-keymap|
+	  lang/		menu translations |:menutrans|
+	  menu.vim	GUI menus |menu.vim|
+	  plugin/	plugin scripts |write-plugin|
+	  print/	files for printing |postscript-print-encoding|
+	  syntax/	syntax files |mysyntaxfile|
+	  tutor/	files for vimtutor |tutor|
+
+	And any other file searched for with the |:runtime| command.
+
+	The defaults for most systems are setup to search five locations:
+	1. In your home directory, for your personal preferences.
+	2. In a system-wide Vim directory, for preferences from the system
+	   administrator.
+	3. In $VIMRUNTIME, for files distributed with Vim.
+							*after-directory*
+	4. In the "after" directory in the system-wide Vim directory.  This is
+	   for the system administrator to overrule or add to the distributed
+	   defaults (rarely needed)
+	5. In the "after" directory in your home directory.  This is for
+	   personal preferences to overrule or add to the distributed defaults
+	   or system-wide settings (rarely needed).
+
+	Note that, unlike 'path', no wildcards like "**" are allowed.  Normal
+	wildcards are allowed, but can significantly slow down searching for
+	runtime files.	For speed, use as few items as possible and avoid
+	wildcards.
+	See |:runtime|.
+	Example: >
+		:set runtimepath=~/vimruntime,/mygroup/vim,$VIMRUNTIME
+<	This will use the directory "~/vimruntime" first (containing your
+	personal Vim runtime files), then "/mygroup/vim" (shared between a
+	group of people) and finally "$VIMRUNTIME" (the distributed runtime
+	files).
+	You probably should always include $VIMRUNTIME somewhere, to use the
+	distributed runtime files.  You can put a directory before $VIMRUNTIME
+	to find files which replace a distributed runtime files.  You can put
+	a directory after $VIMRUNTIME to find files which add to distributed
+	runtime files.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'scroll'* *'scr'*
+'scroll' 'scr'		number	(default: half the window height)
+			local to window
+	Number of lines to scroll with CTRL-U and CTRL-D commands.  Will be
+	set to half the number of lines in the window when the window size
+	changes.  If you give a count to the CTRL-U or CTRL-D command it will
+	be used as the new value for 'scroll'.	Reset to half the window
+	height with ":set scroll=0".   {Vi is a bit different: 'scroll' gives
+	the number of screen lines instead of file lines, makes a difference
+	when lines wrap}
+
+			*'scrollbind'* *'scb'* *'noscrollbind'* *'noscb'*
+'scrollbind' 'scb'	boolean  (default off)
+			local to window
+			{not in Vi}
+			{not available when compiled without the |+scrollbind|
+			feature}
+	See also |scroll-binding|.  When this option is set, the current
+	window scrolls as other scrollbind windows (windows that also have
+	this option set) scroll.  This option is useful for viewing the
+	differences between two versions of a file, see 'diff'.
+	See |'scrollopt'| for options that determine how this option should be
+	interpreted.
+	This option is mostly reset when splitting a window to edit another
+	file.  This means that ":split | edit file" results in two windows
+	with scroll-binding, but ":split file" does not.
+
+						*'scrolljump'* *'sj'*
+'scrolljump' 'sj'	number	(default 1)
+			global
+			{not in Vi}
+	Minimal number of lines to scroll when the cursor gets off the
+	screen (e.g., with "j").  Not used for scroll commands (e.g., CTRL-E,
+	CTRL-D).  Useful if your terminal scrolls very slowly.
+	NOTE: This option is set to 1 when 'compatible' is set.
+
+						*'scrolloff'* *'so'*
+'scrolloff' 'so'	number	(default 0)
+			global
+			{not in Vi}
+	Minimal number of screen lines to keep above and below the cursor.
+	This will make some context visible around where you are working.  If
+	you set it to a very large value (999) the cursor line will always be
+	in the middle of the window (except at the start or end of the file or
+	when long lines wrap).
+	For scrolling horizontally see 'sidescrolloff'.
+	NOTE: This option is set to 0 when 'compatible' is set.
+
+						*'scrollopt'* *'sbo'*
+'scrollopt' 'sbo'	string	(default "ver,jump")
+			global
+			{not available when compiled without the |+scrollbind|
+			feature}
+			{not in Vi}
+	This is a comma-separated list of words that specifies how
+	'scrollbind' windows should behave.
+	The following words are available:
+	    ver		Bind vertical scrolling for 'scrollbind' windows
+	    hor		Bind horizontal scrolling for 'scrollbind' windows
+	    jump	Applies to the offset between two windows for vertical
+			scrolling.  This offset is the difference in the first
+			displayed line of the bound windows.  When moving
+			around in a window, another 'scrollbind' window may
+			reach a position before the start or after the end of
+			the buffer.  The offset is not changed though, when
+			moving back the 'scrollbind' window will try to scroll
+			to the desired position when possible.
+			When now making that window the current one, two
+			things can be done with the relative offset:
+			1. When "jump" is not included, the relative offset is
+			   adjusted for the scroll position in the new current
+			   window.  When going back to the other window, the
+			   the new relative offset will be used.
+			2. When "jump" is included, the other windows are
+			   scrolled to keep the same relative offset.  When
+			   going back to the other window, it still uses the
+			   same relative offset.
+	Also see |scroll-binding|.
+
+						*'sections'* *'sect'*
+'sections' 'sect'	string	(default "SHNHH HUnhsh")
+			global
+	Specifies the nroff macros that separate sections.  These are pairs of
+	two letters (See |object-motions|).  The default makes a section start
+	at the nroff macros ".SH", ".NH", ".H", ".HU", ".nh" and ".sh".
+
+						*'secure'* *'nosecure'* *E523*
+'secure'		boolean	(default off)
+			global
+			{not in Vi}
+	When on, ":autocmd", shell and write commands are not allowed in
+	".vimrc" and ".exrc" in the current directory and map commands are
+	displayed.  Switch it off only if you know that you will not run into
+	problems, or when the 'exrc' option is off.  On Unix this option is
+	only used if the ".vimrc" or ".exrc" is not owned by you.  This can be
+	dangerous if the systems allows users to do a "chown".	You better set
+	'secure' at the end of your ~/.vimrc then.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'selection'* *'sel'*
+'selection' 'sel'	string	(default "inclusive")
+			global
+			{not in Vi}
+	This option defines the behavior of the selection.  It is only used
+	in Visual and Select mode.
+	Possible values:
+	   value	past line     inclusive ~
+	   old		   no		yes
+	   inclusive	   yes		yes
+	   exclusive	   yes		no
+	"past line" means that the cursor is allowed to be positioned one
+	character past the line.
+	"inclusive" means that the last character of the selection is included
+	in an operation.  For example, when "x" is used to delete the
+	selection.
+	Note that when "exclusive" is used and selecting from the end
+	backwards, you cannot include the last character of a line, when
+	starting in Normal mode and 'virtualedit' empty.
+
+	The 'selection' option is set by the |:behave| command.
+
+						*'selectmode'* *'slm'*
+'selectmode' 'slm'	string	(default "")
+			global
+			{not in Vi}
+	This is a comma separated list of words, which specifies when to start
+	Select mode instead of Visual mode, when a selection is started.
+	Possible values:
+	   mouse	when using the mouse
+	   key		when using shifted special keys
+	   cmd		when using "v", "V" or CTRL-V
+	See |Select-mode|.
+	The 'selectmode' option is set by the |:behave| command.
+
+						*'sessionoptions'* *'ssop'*
+'sessionoptions' 'ssop'	string	(default: "blank,buffers,curdir,folds,
+							help,options,winsize")
+			global
+			{not in Vi}
+			{not available when compiled without the +mksession
+			feature}
+	Changes the effect of the |:mksession| command.  It is a comma
+	separated list of words.  Each word enables saving and restoring
+	something:
+	   word		save and restore ~
+	   blank	empty windows
+	   buffers	hidden and unloaded buffers, not just those in windows
+	   curdir	the current directory
+	   folds	manually created folds, opened/closed folds and local
+			fold options
+	   globals	global variables that start with an uppercase letter
+			and contain at least one lowercase letter.
+	   help		the help window
+	   localoptions	options and mappings local to a window or buffer (not
+			global values for local options)
+	   options	all options and mappings (also global values for local
+			options)
+	   resize	size of the Vim window: 'lines' and 'columns'
+	   sesdir	the directory in which the session file is located
+			will become the current directory (useful with
+			projects accessed over a network from different
+			systems)
+	   slash	backslashes in file names replaced with forward
+			slashes
+	   unix		with Unix end-of-line format (single <NL>), even when
+			on Windows or DOS
+	   winpos	position of the whole Vim window
+	   winsize	window sizes
+
+	Don't include both "curdir" and "sesdir".
+	When "curdir" nor "sesdir" is included, file names are stored with
+	absolute paths.
+	"slash" and "unix" are useful on Windows when sharing session files
+	with Unix.  The Unix version of Vim cannot source dos format scripts,
+	but the Windows version of Vim can source unix format scripts.
+
+						*'shell'* *'sh'* *E91*
+'shell' 'sh'		string	(default $SHELL or "sh",
+					MS-DOS and Win32: "command.com" or
+					"cmd.exe", OS/2: "cmd")
+			global
+	Name of the shell to use for ! and :! commands.  When changing the
+	value also check these options: 'shelltype', 'shellpipe', 'shellslash'
+	'shellredir', 'shellquote', 'shellxquote' and 'shellcmdflag'.
+	It is allowed to give an argument to the command, e.g.	"csh -f".
+	See |option-backslash| about including spaces and backslashes.
+	Environment variables are expanded |:set_env|.
+	If the name of the shell contains a space, you might need to enclose
+	it in quotes.  Example: >
+		:set shell=\"c:\program\ files\unix\sh.exe\"\ -f
+<	Note the backslash before each quote (to avoid starting a comment) and
+	each space (to avoid ending the option value).	Also note that the
+	"-f" is not inside the quotes, because it is not part of the command
+	name.  And Vim automagically recognizes the backslashes that are path
+	separators.
+	For Dos 32 bits (DJGPP), you can set the $DJSYSFLAGS environment
+	variable to change the way external commands are executed.  See the
+	libc.inf file of DJGPP.
+	Under MS-Windows, when the executable ends in ".com" it must be
+	included.  Thus setting the shell to "command.com" or "4dos.com"
+	works, but "command" and "4dos" do not work for all commands (e.g.,
+	filtering).
+	For unknown reasons, when using "4dos.com" the current directory is
+	changed to "C:\".  To avoid this set 'shell' like this: >
+		:set shell=command.com\ /c\ 4dos
+<	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'shellcmdflag'* *'shcf'*
+'shellcmdflag' 'shcf'	string	(default: "-c", MS-DOS and Win32, when 'shell'
+					does not contain "sh" somewhere: "/c")
+			global
+			{not in Vi}
+	Flag passed to the shell to execute "!" and ":!" commands; e.g.,
+	"bash.exe -c ls" or "command.com /c dir".  For the MS-DOS-like
+	systems, the default is set according to the value of 'shell', to
+	reduce the need to set this option by the user.  It's not used for
+	OS/2 (EMX figures this out itself).  See |option-backslash| about
+	including spaces and backslashes.  See |dos-shell|.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'shellpipe'* *'sp'*
+'shellpipe' 'sp'	string	(default ">", "| tee", "|& tee" or "2>&1| tee")
+			global
+			{not in Vi}
+			{not available when compiled without the |+quickfix|
+			feature}
+	String to be used to put the output of the ":make" command in the
+	error file.  See also |:make_makeprg|.	See |option-backslash| about
+	including spaces and backslashes.
+	The name of the temporary file can be represented by "%s" if necessary
+	(the file name is appended automatically if no %s appears in the value
+	of this option).
+	For the Amiga and MS-DOS the default is ">".  The output is directly
+	saved in a file and not echoed to the screen.
+	For Unix the default it "| tee".  The stdout of the compiler is saved
+	in a file and echoed to the screen.  If the 'shell' option is "csh" or
+	"tcsh" after initializations, the default becomes "|& tee".  If the
+	'shell' option is "sh", "ksh", "zsh" or "bash" the default becomes
+	"2>&1| tee".  This means that stderr is also included.
+	The initialization of this option is done after reading the ".vimrc"
+	and the other initializations, so that when the 'shell' option is set
+	there, the 'shellpipe' option changes automatically, unless it was
+	explicitly set before.
+	When 'shellpipe' is set to an empty string, no redirection of the
+	":make" output will be done.  This is useful if you use a 'makeprg'
+	that writes to 'makeef' by itself.  If you want no piping, but do
+	want to include the 'makeef', set 'shellpipe' to a single space.
+	Don't forget to precede the space with a backslash: ":set sp=\ ".
+	In the future pipes may be used for filtering and this option will
+	become obsolete (at least for Unix).
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'shellquote'* *'shq'*
+'shellquote' 'shq'	string	(default: ""; MS-DOS and Win32, when 'shell'
+					contains "sh" somewhere: "\"")
+			global
+			{not in Vi}
+	Quoting character(s), put around the command passed to the shell, for
+	the "!" and ":!" commands.  The redirection is kept outside of the
+	quoting.  See 'shellxquote' to include the redirection.  It's
+	probably not useful to set both options.
+	This is an empty string by default.  Only known to be useful for
+	third-party shells on MS-DOS-like systems, such as the MKS Korn Shell
+	or bash, where it should be "\"".  The default is adjusted according
+	the value of 'shell', to reduce the need to set this option by the
+	user.  See |dos-shell|.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'shellredir'* *'srr'*
+'shellredir' 'srr'	string	(default ">", ">&" or ">%s 2>&1")
+			global
+			{not in Vi}
+	String to be used to put the output of a filter command in a temporary
+	file.  See also |:!|.  See |option-backslash| about including spaces
+	and backslashes.
+	The name of the temporary file can be represented by "%s" if necessary
+	(the file name is appended automatically if no %s appears in the value
+	of this option).
+	The default is ">".  For Unix, if the 'shell' option is "csh", "tcsh"
+	or "zsh" during initializations, the default becomes ">&".  If the
+	'shell' option is "sh", "ksh" or "bash" the default becomes
+	">%s 2>&1".  This means that stderr is also included.
+	For Win32, the Unix checks are done and additionally "cmd" is checked
+	for, which makes the default ">%s 2>&1".  Also, the same names with
+	".exe" appended are checked for.
+	The initialization of this option is done after reading the ".vimrc"
+	and the other initializations, so that when the 'shell' option is set
+	there, the 'shellredir' option changes automatically unless it was
+	explicitly set before.
+	In the future pipes may be used for filtering and this option will
+	become obsolete (at least for Unix).
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+			*'shellslash'* *'ssl'* *'noshellslash'* *'nossl'*
+'shellslash' 'ssl'	boolean	(default off)
+			global
+			{not in Vi} {only for MSDOS, MS-Windows and OS/2}
+	When set, a forward slash is used when expanding file names.  This is
+	useful when a Unix-like shell is used instead of command.com or
+	cmd.exe.  Backward slashes can still be typed, but they are changed to
+	forward slashes by Vim.
+	Note that setting or resetting this option has no effect for some
+	existing file names, thus this option needs to be set before opening
+	any file for best results.  This might change in the future.
+	'shellslash' only works when a backslash can be used as a path
+	separator.  To test if this is so use: >
+		if exists('+shellslash')
+<
+						*'shelltype'* *'st'*
+'shelltype' 'st'	number	(default 0)
+			global
+			{not in Vi} {only for the Amiga}
+	On the Amiga this option influences the way how the commands work
+	which use a shell.
+	0 and 1: always use the shell
+	2 and 3: use the shell only to filter lines
+	4 and 5: use shell only for ':sh' command
+	When not using the shell, the command is executed directly.
+
+	0 and 2: use "shell 'shellcmdflag' cmd" to start external commands
+	1 and 3: use "shell cmd" to start external commands
+
+						*'shellxquote'* *'sxq'*
+'shellxquote' 'sxq'	string	(default: "";
+					for Win32, when 'shell' contains "sh"
+					somewhere: "\""
+					for Unix, when using system(): "\"")
+			global
+			{not in Vi}
+	Quoting character(s), put around the command passed to the shell, for
+	the "!" and ":!" commands.  Includes the redirection.  See
+	'shellquote' to exclude the redirection.  It's probably not useful
+	to set both options.
+	This is an empty string by default.  Known to be useful for
+	third-party shells when using the Win32 version, such as the MKS Korn
+	Shell or bash, where it should be "\"".  The default is adjusted
+	according the value of 'shell', to reduce the need to set this option
+	by the user.  See |dos-shell|.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+			*'shiftround'* *'sr'* *'noshiftround'* *'nosr'*
+'shiftround' 'sr'	boolean	(default off)
+			global
+			{not in Vi}
+	Round indent to multiple of 'shiftwidth'.  Applies to > and <
+	commands.  CTRL-T and CTRL-D in Insert mode always round the indent to
+	a multiple of 'shiftwidth' (this is Vi compatible).
+	NOTE: This option is reset when 'compatible' is set.
+
+						*'shiftwidth'* *'sw'*
+'shiftwidth' 'sw'	number	(default 8)
+			local to buffer
+	Number of spaces to use for each step of (auto)indent.	Used for
+	|'cindent'|, |>>|, |<<|, etc.
+
+						*'shortmess'* *'shm'*
+'shortmess' 'shm'	string	(Vim default "filnxtToO", Vi default: "")
+			global
+			{not in Vi}
+	This option helps to avoid all the |hit-enter| prompts caused by file
+	messages, for example  with CTRL-G, and to avoid some other messages.
+	It is a list of flags:
+	 flag	meaning when present	~
+	  f	use "(3 of 5)" instead of "(file 3 of 5)"
+	  i	use "[noeol]" instead of "[Incomplete last line]"
+	  l	use "999L, 888C" instead of "999 lines, 888 characters"
+	  m	use "[+]" instead of "[Modified]"
+	  n	use "[New]" instead of "[New File]"
+	  r	use "[RO]" instead of "[readonly]"
+	  w	use "[w]" instead of "written" for file write message
+		and "[a]" instead of "appended" for ':w >> file' command
+	  x	use "[dos]" instead of "[dos format]", "[unix]" instead of
+		"[unix format]" and "[mac]" instead of "[mac format]".
+	  a	all of the above abbreviations
+
+	  o	overwrite message for writing a file with subsequent message
+		for reading a file (useful for ":wn" or when 'autowrite' on)
+	  O	message for reading a file overwrites any previous message.
+		Also for quickfix message (e.g., ":cn").
+	  s	don't give "search hit BOTTOM, continuing at TOP" or "search
+		hit TOP, continuing at BOTTOM" messages
+	  t	truncate file message at the start if it is too long to fit
+		on the command-line, "<" will appear in the left most column.
+		Ignored in Ex mode.
+	  T	truncate other messages in the middle if they are too long to
+		fit on the command line. "..." will appear in the middle.
+		Ignored in Ex mode.
+	  W	don't give "written" or "[w]" when writing a file
+	  A	don't give the "ATTENTION" message when an existing swap file
+		is found.
+	  I	don't give the intro message when starting Vim |:intro|.
+
+	This gives you the opportunity to avoid that a change between buffers
+	requires you to hit <Enter>, but still gives as useful a message as
+	possible for the space available.  To get the whole message that you
+	would have got with 'shm' empty, use ":file!"
+	Useful values:
+	    shm=	No abbreviation of message.
+	    shm=a	Abbreviation, but no loss of information.
+	    shm=at	Abbreviation, and truncate message when necessary.
+
+	NOTE: This option is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+				 *'shortname'* *'sn'* *'noshortname'* *'nosn'*
+'shortname' 'sn'	boolean	(default off)
+			local to buffer
+			{not in Vi, not in MS-DOS versions}
+	Filenames are assumed to be 8 characters plus one extension of 3
+	characters.  Multiple dots in file names are not allowed.  When this
+	option is on, dots in file names are replaced with underscores when
+	adding an extension (".~" or ".swp").  This option is not available
+	for MS-DOS, because then it would always be on.  This option is useful
+	when editing files on an MS-DOS compatible filesystem, e.g., messydos
+	or crossdos.  When running the Win32 GUI version under Win32s, this
+	option is always on by default.
+
+						*'showbreak'* *'sbr'* *E595*
+'showbreak' 'sbr'	string	(default "")
+			global
+			{not in Vi}
+			{not available when compiled without the  |+linebreak|
+			feature}
+	String to put at the start of lines that have been wrapped.  Useful
+	values are "> " or "+++ ".
+	Only printable single-cell characters are allowed, excluding <Tab> and
+	comma (in a future version the comma might be used to separate the
+	part that is shown at the end and at the start of a line).
+	The characters are highlighted according to the '@' flag in
+	'highlight'.
+	Note that tabs after the showbreak will be displayed differently.
+	If you want the 'showbreak' to appear in between line numbers, add the
+	"n" flag to 'cpoptions'.
+
+				     *'showcmd'* *'sc'* *'noshowcmd'* *'nosc'*
+'showcmd' 'sc'		boolean	(Vim default: on, off for Unix, Vi default:
+				 off)
+			global
+			{not in Vi}
+			{not available when compiled without the
+			|+cmdline_info| feature}
+	Show (partial) command in status line.	Set this option off if your
+	terminal is slow.
+	In Visual mode the size of the selected area is shown:
+	- When selecting characters within a line, the number of characters.
+	- When selecting more than one line, the number of lines.
+	- When selecting a block, the size in screen characters: linesxcolumns.
+	NOTE: This option is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+			*'showfulltag'* *'sft'* *'noshowfulltag'* *'nosft'*
+'showfulltag' 'sft'	boolean (default off)
+			global
+			{not in Vi}
+	When completing a word in insert mode (see |ins-completion|) from the
+	tags file, show both the tag name and a tidied-up form of the search
+	pattern (if there is one) as possible matches.	Thus, if you have
+	matched a C function, you can see a template for what arguments are
+	required (coding style permitting).
+
+				 *'showmatch'* *'sm'* *'noshowmatch'* *'nosm'*
+'showmatch' 'sm'	boolean	(default off)
+			global
+	When a bracket is inserted, briefly jump to the matching one.  The
+	jump is only done if the match can be seen on the screen.  The time to
+	show the match can be set with 'matchtime'.
+	A Beep is given if there is no match (no matter if the match can be
+	seen or not).  This option is reset when the 'paste' option is set.
+	When the 'm' flag is not included in 'cpoptions', typing a character
+	will immediately move the cursor back to where it belongs.
+	See the "sm" field in 'guicursor' for setting the cursor shape and
+	blinking when showing the match.
+	The 'matchpairs' option can be used to specify the characters to show
+	matches for.  'rightleft' and 'revins' are used to look for opposite
+	matches.
+	Note: For the use of the short form parental guidance is advised.
+
+				 *'showmode'* *'smd'* *'noshowmode'* *'nosmd'*
+'showmode' 'smd'	boolean	(Vim default: on, Vi default: off)
+			global
+	If in Insert, Replace or Visual mode put a message on the last line.
+	Use the 'M' flag in 'highlight' to set the type of highlighting for
+	this message.
+	When |XIM| may be used the message will include "XIM".	But this
+	doesn't mean XIM is really active, especially when 'imactivatekey' is
+	not set.
+	NOTE: This option is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+						*'sidescroll'* *'ss'*
+'sidescroll' 'ss'	number	(default 0)
+			global
+			{not in Vi}
+	The minimal number of columns to scroll horizontally.  Used only when
+	the 'wrap' option is off and the cursor is moved off of the screen.
+	When it is zero the cursor will be put in the middle of the screen.
+	When using a slow terminal set it to a large number or 0.  When using
+	a fast terminal use a small number or 1.  Not used for "zh" and "zl"
+	commands.
+
+						*'sidescrolloff'* *'siso'*
+'sidescrolloff' 'siso'	number (default 0)
+			global
+			{not in Vi}
+	The minimal number of screen columns to keep to the left and to the
+	right of the cursor if 'nowrap' is set. Setting this option to a value
+	greater than 0 while having |'sidescroll'| also at a non-zero value
+	makes some context visible in the line you are scrolling in
+	horizontally (except at the end and beginning of the line).  Setting
+	this option to a large value (like 999) has the effect of keeping the
+	cursor horizontally centered in the window, as long as one does not
+	come too close to the beginning or end of the line.
+	NOTE: This option is set to 0 when 'compatible' is set.
+
+	Example: Try this together with 'sidescroll' and 'listchars' as
+		 in the following example to never allow the cursor to move
+		 onto the "extends" character:
+
+		 :set nowrap sidescroll=1 listchars=extends:>,precedes:<
+		 :set sidescrolloff=1
+
+
+			*'smartcase'* *'scs'* *'nosmartcase'* *'noscs'*
+'smartcase' 'scs'	boolean	(default off)
+			global
+			{not in Vi}
+	Override the 'ignorecase' option if the search pattern contains upper
+	case characters.  Only used when the search pattern is typed and
+	'ignorecase' option is on.  Used for the commands "/", "?", "n", "N",
+	":g" and ":s".	Not used for "*", "#", "gd", tag search, etc..	After
+	"*" and "#" you can make 'smartcase' used by doing a "/" command,
+	recalling the search pattern from history and hitting <Enter>.
+	NOTE: This option is reset when 'compatible' is set.
+
+			     *'smartindent'* *'si'* *'nosmartindent'* *'nosi'*
+'smartindent' 'si'	boolean	(default off)
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the
+			|+smartindent| feature}
+	Do smart autoindenting when starting a new line.  Works for C-like
+	programs, but can also be used for other languages.  'cindent' does
+	something like this, works better in most cases, but is more strict,
+	see |C-indenting|.  When 'cindent' is on, setting 'si' has no effect.
+	'indentexpr' is a more advanced alternative.
+	Normally 'autoindent' should also be on when using 'smartindent'.
+	An indent is automatically inserted:
+	- After a line ending in '{'.
+	- After a line starting with a keyword from 'cinwords'.
+	- Before a line starting with '}' (only with the "O" command).
+	When typing '}' as the first character in a new line, that line is
+	given the same indent as the matching '{'.
+	When typing '#' as the first character in a new line, the indent for
+	that line is removed, the '#' is put in the first column.  The indent
+	is restored for the next line.	If you don't want this, use this
+	mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H.
+	When using the ">>" command, lines starting with '#' are not shifted
+	right.
+	NOTE: 'smartindent' is reset when 'compatible' is set.	When 'paste'
+	is set smart indenting is disabled.
+
+				 *'smarttab'* *'sta'* *'nosmarttab'* *'nosta'*
+'smarttab' 'sta'	boolean	(default off)
+			global
+			{not in Vi}
+	When on, a <Tab> in front of a line inserts blanks according to
+	'shiftwidth'.  'tabstop' is used in other places.  A <BS> will delete
+	a 'shiftwidth' worth of space at the start of the line.
+	When off a <Tab> always inserts blanks according to 'tabstop'.
+	'shiftwidth' is only used for shifting text left or right
+	|shift-left-right|.
+	What gets inserted (a Tab or spaces) depends on the 'expandtab'
+	option.  Also see |ins-expandtab|.  When 'expandtab' is not set, the
+	number of spaces minimized by using <Tab>s.
+	NOTE: This option is reset when 'compatible' is set.
+
+					*'softtabstop'* *'sts'*
+'softtabstop' 'sts'	number	(default 0)
+			local to buffer
+			{not in Vi}
+	Number of spaces that a <Tab> counts for while performing editing
+	operations, like inserting a <Tab> or using <BS>.  It "feels" like
+	<Tab>s are being inserted, while in fact a mix of spaces and <Tab>s is
+	used.  This is useful to keep the 'ts' setting at its standard value
+	of 8, while being able to edit like it is set to 'sts'.  However,
+	commands like "x" still work on the actual characters.
+	When 'sts' is zero, this feature is off.
+	'softtabstop' is set to 0 when the 'paste' option is set.
+	See also |ins-expandtab|.  When 'expandtab' is not set, the number of
+	spaces is minimized by using <Tab>s.
+	The 'L' flag in 'cpoptions' changes how tabs are used when 'list' is
+	set.
+	NOTE: This option is set to 0 when 'compatible' is set.
+
+			*'splitbelow'* *'sb'* *'nosplitbelow'* *'nosb'*
+'splitbelow' 'sb'	boolean	(default off)
+			global
+			{not in Vi}
+			{not available when compiled without the +windows
+			feature}
+	When on, splitting a window will put the new window below the current
+	one. |:split|
+
+			*'splitright'* *'spr'* *'nosplitright'* *'nospr'*
+'splitright' 'spr'	boolean	(default off)
+			global
+			{not in Vi}
+			{not available when compiled without the +vertsplit
+			feature}
+	When on, splitting a window will put the new window right of the
+	current one. |:vsplit|
+
+			   *'startofline'* *'sol'* *'nostartofline'* *'nosol'*
+'startofline' 'sol'	boolean	(default on)
+			global
+			{not in Vi}
+	When "on" the commands listed below move the cursor to the first
+	blank of the line.  When off the cursor is kept in the same column
+	(if possible).	This applies to the commands: CTRL-D, CTRL-U, CTRL-B,
+	CTRL-F, "G", "H", "M", "L", , and to the commands "d", "<<" and ">>"
+	with a linewise operator, with "%" with a count and to buffer changing
+	commands (CTRL-^, :bnext, :bNext, etc.).  Also for an Ex command that
+	only has a line number, e.g., ":25" or ":+".
+	In case of buffer changing commands the cursor is placed at the column
+	where it was the last time the buffer was edited.
+	NOTE: This option is set when 'compatible' is set.
+
+			   *'statusline'* *'stl'* *E540* *E541* *E542*
+'statusline' 'stl'	string	(default empty)
+			global
+			{not in Vi}
+			{not available when compiled without the |+statusline|
+			feature}
+	When nonempty, this option determines the content of the status line.
+	Also see |status-line|.
+
+	The option consists of printf style '%' items interspersed with
+	normal text.  Each status line item is of the form:
+	  %-0{minwid}.{maxwid}{item}
+	All fields except the {item} is optional.  A single percent sign can
+	be given as "%%".  Up to 80 items can be specified.
+
+	Note that the only effect of 'ruler' when this option is set (and
+	'laststatus' is 2) is controlling the output of |CTRL-G|.
+
+	field	    meaning ~
+	-	    Left justify the item. The default is right justified
+		    when minwid is larger than the length of the item.
+	0	    Leading zeroes in numeric items. Overridden by '-'.
+	minwid	    Minimum width of the item, padding as set by '-' & '0'.
+		    Value must be 50 or less.
+	maxwid	    Maximum width of the item.	Truncation occurs with a '<'
+		    on the left for text items.  Numeric items will be
+		    shifted down to maxwid-2 digits followed by '>'number
+		    where number is the amount of missing digits, much like
+		    an exponential notation.
+	item	    A one letter code as described below.
+
+	Following is a description of the possible statusline items.  The
+	second character in "item" is the type:
+		N for number
+		S for string
+		F for flags as described below
+		- not applicable
+
+	item  meaning ~
+	f S   Path to the file in the buffer, relative to current directory.
+	F S   Full path to the file in the buffer.
+	t S   File name (tail) of file in the buffer.
+	m F   Modified flag, text is " [+]"; " [-]" if 'modifiable' is off.
+	M F   Modified flag, text is ",+" or ",-".
+	r F   Readonly flag, text is " [RO]".
+	R F   Readonly flag, text is ",RO".
+	h F   Help buffer flag, text is " [help]".
+	H F   Help buffer flag, text is ",HLP".
+	w F   Preview window flag, text is " [Preview]".
+	W F   Preview window flag, text is ",PRV".
+	y F   Type of file in the buffer, e.g., " [vim]".  See 'filetype'.
+	Y F   Type of file in the buffer, e.g., ",VIM".  See 'filetype'.
+	      {not available when compiled without |+autocmd| feature}
+	k S   Value of "b:keymap_name" or 'keymap' when |:lmap| mappings are
+	      being used: "<keymap>"
+	n N   Buffer number.
+	b N   Value of byte under cursor.
+	B N   As above, in hexadecimal.
+	o N   Byte number in file of byte under cursor, first byte is 1.
+	      Mnemonic: Offset from start of file (with one added)
+	      {not available when compiled without |+byte_offset| feature}
+	O N   As above, in hexadecimal.
+	N N   Printer page number. (Only works in the 'printheader' option.)
+	l N   Line number.
+	L N   Number of lines in buffer.
+	c N   Column number.
+	v N   Virtual column number.
+	V N   Virtual column number as -{num}.	Not displayed if equal to 'c'.
+	p N   Percentage through file in lines as in |CTRL-G|.
+	P S   Percentage through file of displayed window.  This is like the
+	      percentage described for 'ruler'.  Always 3 in length.
+	a S   Argument list status as in default title. ({current} of {max})
+	      Empty if the argument file count is zero or one.
+	{ NF  Evaluate expression between '{' and '}' and substitute result.
+	( -   Start of item group.  Can be used for setting the width and
+	      alignment of a section.  Must be followed by %) somewhere.
+	) -   End of item group.  No width fields allowed.
+	< -   Where to truncate line if too long.  Default is at the start.
+	      No width fields allowed.
+	= -   Separation point between left and right aligned items.
+	      No width fields allowed.
+	* -   Set highlight group to User{N}, where {N} is taken from the
+	      minwid field. eg. %1*.  Restore normal highlight with %* or %0*.
+	      The difference between User{N} and StatusLine  will be applied
+	      to StatusLineNC for the statusline of non-current windows.
+	      The number N must be between 1 and 9.  See |hl-User1..9|
+
+	Display of flags are controlled by the following heuristic:
+	If a flag text starts with comma it is assumed that it wants to
+	separate itself from anything but preceding plaintext.	If it starts
+	with a space it is assumed that it wants to separate itself from
+	anything but other flags.  That is: A leading comma is removed if the
+	preceding character stems from plaintext.  A leading space is removed
+	if the preceding character stems from another active flag. This will
+	make a nice display when flags are used like in the examples below.
+
+	When all items in a group becomes an empty string (ie. flags that are
+	not set) and a minwid is not set for the group, the whole group will
+	become empty.  This will make a group like the following disappear
+	completely from the statusline when none of the flags are set. >
+		:set statusline=...%(\ [%M%R%H]%)...
+<
+	Beware that an expression is evaluated each and every time the status
+	line is displayed.  The current buffer and current window will be set
+	temporarily to that of the window (and buffer) whose statusline is
+	currently being drawn. The expression will evaluate in this context.
+	The variable "actual_curbuf" is set to the 'bufnr()' number of the
+	real current buffer.  The expression is evaluated in the |sandbox|.
+
+	If the statusline is not updated when you want it (e.g., after setting
+	a variable that's used in an expression), you can force an update by
+	setting an option without changing its value.  Example: >
+		:let &ro = &ro
+
+<	A result of all digits is regarded a number for display purposes.
+	Otherwise the result is taken as flag text and applied to the rules
+	described above.
+
+	Watch out for errors in expressions.  They may render Vim unusable !
+	If you are stuck, hold down ':' or 'Q' to get a prompt, then quit and
+	edit your .vimrc or whatever with "vim -u NONE" to get it right.
+
+	Examples:
+	Emulate standard status line with 'ruler' set >
+	  :set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P
+<	Similar, but add ASCII value of char under the cursor (like "ga") >
+	  :set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P
+<	Display byte count and byte value, modified flag in red. >
+	  :set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b'
+	  :hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red
+<	Display a ,GZ flag if a compressed file is loaded >
+	  :set statusline=...%r%{VarExists('b:gzflag','\ [GZ]')}%h...
+<	In the |:autocmd|'s: >
+	  :let b:gzflag = 1
+<	And: >
+	  :unlet b:gzflag
+<	And define this function: >
+	  :function VarExists(var, val)
+	  :    if exists(a:var) | return a:val | else | return '' | endif
+	  :endfunction
+<
+						*'suffixes'* *'su'*
+'suffixes' 'su'		string	(default ".bak,~,.o,.h,.info,.swp,.obj")
+			global
+			{not in Vi}
+	Files with these suffixes get a lower priority when multiple files
+	match a wildcard.  See |suffixes|.  Commas can be used to separate the
+	suffixes.  Spaces after the comma are ignored.	A dot is also seen as
+	the start of a suffix.	To avoid a dot or comma being recognized as a
+	separator, precede it with a backslash (see |option-backslash| about
+	including spaces and backslashes).
+	See 'wildignore' for completely ignoring files.
+	The use of |:set+=| and |:set-=| is preferred when adding or removing
+	suffixes from the list.  This avoids problems when a future version
+	uses another default.
+
+						*'suffixesadd'* *'sua'*
+'suffixesadd' 'sua'	string	(default "")
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the
+			|+file_in_path| feature}
+	Comma separated list of suffixes, which are used when searching for a
+	file for the "gf", "[I", etc. commands.  Example: >
+		:set suffixesadd=.java
+<
+				*'swapfile'* *'swf'* *'noswapfile'* *'noswf'*
+'swapfile' 'swf'	boolean (default on)
+			local to buffer
+			{not in Vi}
+	Use a swapfile for the buffer.	This option can be reset when a
+	swapfile is not wanted for a specific buffer.  For example, with
+	confidential information that even root must not be able to access.
+	Careful: All text will be in memory:
+		- Don't use this for big files.
+		- Recovery will be impossible!
+	A swapfile will only be present when |'updatecount'| is non-zero and
+	'swapfile' is set.
+	When 'swapfile' is reset, the swap file for the current buffer is
+	immediately deleted.  When 'swapfile' is set, and 'updatecount' is
+	non-zero, a swap file is immediately created.
+	Also see |swap-file| and |'swapsync'|.
+
+	This option is used together with 'bufhidden' and 'buftype' to
+	specify special kinds of buffers.   See |special-buffers|.
+
+						*'swapsync'* *'sws'*
+'swapsync' 'sws'	string	(default "fsync")
+			global
+			{not in Vi}
+	When this option is not empty a swap file is synced to disk after
+	writing to it.	This takes some time, especially on busy unix systems.
+	When this option is empty parts of the swap file may be in memory and
+	not written to disk.  When the system crashes you may lose more work.
+	On Unix the system does a sync now and then without Vim asking for it,
+	so the disadvantage of setting this option off is small.  On some
+	systems the swap file will not be written at all.  For a unix system
+	setting it to "sync" will use the sync() call instead of the default
+	fsync(), which may work better on some systems.
+
+						*'switchbuf'* *'swb'*
+'switchbuf' 'swb'	string	(default "")
+			global
+			{not in Vi}
+	This option controls the behavior when switching between buffers.
+	Possible values (comma separated list):
+	   useopen	If included, jump to the first open window that
+			contains the specified buffer (if there is one).
+			Otherwise: Do not examine other windows.
+			This setting is checked with |quickfix| commands, when
+			jumping to errors (":cc", ":cn", "cp", etc.).  It is
+			also used in all buffer related split commands, for
+			example ":sbuffer", ":sbnext", or ":sbrewind".
+	   split	If included, split the current window before loading
+			a buffer. Otherwise: do not split, use current window.
+			Supported in |quickfix| commands that display errors.
+
+						*'syntax'* *'syn'*
+'syntax' 'syn'		string	(default empty)
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the |+syntax|
+			feature}
+	When this option is set, the syntax with this name is loaded, unless
+	syntax highlighting has been switched off with ":syntax off".
+	Otherwise this option does not always reflect the current syntax (the
+	b:current_syntax variable does).
+	This option is most useful in a modeline, for a file which syntax is
+	not automatically recognized.  Example, for in an IDL file: >
+		/* vim: set syntax=idl : */
+<	To switch off syntax highlighting for the current file, use: >
+		:set syntax=OFF
+<	To switch syntax highlighting on according to the current value of the
+	'filetype' option: >
+		:set syntax=ON
+<	What actually happens when setting the 'syntax' option is that the
+	Syntax autocommand event is triggered with the value as argument.
+	This option is not copied to another buffer, independent of the 's' or
+	'S' flag in 'cpoptions'.
+
+					*'tabstop'* *'ts'*
+'tabstop' 'ts'		number	(default 8)
+			local to buffer
+	Number of spaces that a <Tab> in the file counts for.  Also see
+	|:retab| command, and 'softtabstop' option.
+
+	Note: Setting 'tabstop' to any other value than 8 can make your file
+	appear wrong in many places (e.g., when printing it).
+
+	There are four main ways to use tabs in Vim:
+	1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
+	   (or 3 or whatever you prefer) and use 'noexpandtab'.  Then Vim
+	   will use a mix of tabs and spaces, but typing Tab and BS will
+	   behave like a tab appears every 4 (or 3) characters.
+	2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
+	   'expandtab'.  This way you will always insert spaces.  The
+	   formatting will never be messed up when 'tabstop' is changed.
+	3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
+	   |modeline| to set these values when editing the file again.	Only
+	   works when using Vim to edit the file.
+	4. Always set 'tabstop' and 'shiftwidth' to the same value, and
+	   'noexpandtab'.  This should then work (for initial indents only)
+	   for any tabstop setting that people use.  It might be nice to have
+	   tabs after the first non-blank inserted as spaces if you do this
+	   though.  Otherwise aligned comments will be wrong when 'tabstop' is
+	   changed.
+
+			*'tagbsearch'* *'tbs'* *'notagbsearch'* *'notbs'*
+'tagbsearch' 'tbs'	boolean	(default on)
+			global
+			{not in Vi}
+	When searching for a tag (e.g., for the |:ta| command), Vim can either
+	use a binary search or a linear search in a tags file.	Binary
+	searching makes searching for a tag a LOT faster, but a linear search
+	will find more tags if the tags file wasn't properly sorted.
+	Vim normally assumes that your tags files are sorted, or indicate that
+	they are not sorted.  Only when this is not the case does the
+	'tagbsearch' option need to be switched off.
+
+	When 'tagbsearch' is on, binary searching is first used in the tags
+	files.	In certain situations, Vim will do a linear search instead for
+	certain files, or retry all files with a linear search.  When
+	'tagbsearch' is off, only a linear search is done.
+
+	Linear searching is done anyway, for one file, when Vim finds a line
+	at the start of the file indicating that it's not sorted: >
+   !_TAG_FILE_SORTED	0	/some command/
+<	[The whitespace before and after the '0' must be a single <Tab>]
+
+	When a binary search was done and no match was found in any of the
+	files listed in 'tags', and 'ignorecase' is set or a pattern is used
+	instead of a normal tag name, a retry is done with a linear search.
+	Tags in unsorted tags files, and matches with different case will only
+	be found in the retry.
+
+	If a tag file indicates that is is case-fold sorted, the second,
+	linear search can be avoided for the 'ignorecase' case.  Use a value
+	of '2' in the "!_TAG_FILE_SORTED" line for this.  A tag file can be
+	case-fold sorted with the -f switch to "sort" in most unices, as in
+	the command: "sort -f -o tags tags".  For "Exuberant ctags" version
+	5.3 or higher the -f or --fold-case-sort switch can be used for this
+	as well.  Note that case must be folded to uppercase for this to work.
+
+	When 'tagbsearch' is off, tags searching is slower when a full match
+	exists, but faster when no full match exists.  Tags in unsorted tags
+	files may only be found with 'tagbsearch' off.
+	When the tags file is not sorted, or sorted in a wrong way (not on
+	ASCII byte value), 'tagbsearch' should be off, or the line given above
+	must be included in the tags file.
+	This option doesn't affect commands that find all matching tags (e.g.,
+	command-line completion and ":help").
+	{Vi: always uses binary search in some versions}
+
+						*'taglength'* *'tl'*
+'taglength' 'tl'	number	(default 0)
+			global
+	If non-zero, tags are significant up to this number of characters.
+
+			*'tagrelative'* *'tr'* *'notagrelative'* *'notr'*
+'tagrelative' 'tr'	boolean	(Vim default: on, Vi default: off)
+			global
+			{not in Vi}
+	If on and using a tag file in another directory, file names in that
+	tag file are relative to the directory where the tag file is.
+	NOTE: This option is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+						*'tags'* *'tag'* *E433*
+'tags' 'tag'		string	(default "./tags,tags", when compiled with
+				|+emacs_tags|: "./tags,./TAGS,tags,TAGS")
+			global or local to buffer |global-local|
+	Filenames for the tag command, separated by spaces or commas.  To
+	include a space or comma in a file name, precede it with a backslash
+	(see |option-backslash| about including spaces and backslashes).
+	When a file name starts with "./", the '.' is replaced with the path
+	of the current file.  But only when the 'd' flag is not included in
+	'cpoptions'.  Environment variables are expanded |:set_env|.  Also see
+	|tags-option|.
+	"*", "**" and other wildcards can be used to search for tags files in
+	a directory tree.  See |file-searching|.  {not available when compiled
+	without the |+path_extra| feature}
+	If Vim was compiled with the |+emacs_tags| feature, Emacs-style tag
+	files are also supported.  They are automatically recognized.  The
+	default value becomes "./tags,./TAGS,tags,TAGS", unless case
+	differences are ignored (MS-Windows).  |emacs-tags|
+	The use of |:set+=| and |:set-=| is preferred when adding or removing
+	file names from the list.  This avoids problems when a future version
+	uses another default.
+	{Vi: default is "tags /usr/lib/tags"}
+
+				*'tagstack'* *'tgst'* *'notagstack'* *'notgst'*
+'tagstack' 'tgst'	boolean	(default on)
+			global
+			{not in all versions of Vi}
+	When on, the |tagstack| is used normally.  When off, a ":tag" or
+	":tselect" command with an argument will not push the tag onto the
+	tagstack.  A following ":tag" without an argument, a ":pop" command or
+	any other command that uses the tagstack will use the unmodified
+	tagstack, but does change the pointer to the active entry.
+	Resetting this option is useful when using a ":tag" command in a
+	mapping which should not change the tagstack.
+
+						*'term'* *E529* *E530* *E531*
+'term'			string	(default is $TERM, if that fails:
+				      in the GUI: "builtin_gui"
+					on Amiga: "amiga"
+					 on BeOS: "beos-ansi"
+					  on Mac: "mac-ansi"
+					 on MiNT: "vt52"
+				       on MS-DOS: "pcterm"
+					 on OS/2: "os2ansi"
+					 on Unix: "ansi"
+					  on VMS: "ansi"
+				       on Win 32: "win32")
+			global
+	Name of the terminal.  Used for choosing the terminal control
+	characters.  Environment variables are expanded |:set_env|.
+	For example: >
+		:set term=$TERM
+<	See |termcap|.
+
+						*'termbidi'* *'tbidi'*
+						*'notermbidi'* *'notbidi'*
+'termbidi' 'tbidi'	boolean (default off, on for "mlterm")
+			global
+			{not in Vi}
+			{only available when compiled with the |+arabic|
+			feature}
+	The terminal is in charge of Bi-directionality of text (as specified
+	by Unicode).  The terminal is also expected to do the required shaping
+	that some languages (such as Arabic) require.
+	Setting this option implies that 'rightleft' will not be set when
+	'arabic' is set and the value of 'arabicshape' will be ignored.
+	Note that setting 'termbidi' has the immediate effect that
+	'arabicshape' is ignored, but 'rightleft' isn't changed automatically.
+	This option is reset when the GUI is started.
+	For further details see |arabic.txt|.
+
+					*'termencoding'* *'tenc'*
+'termencoding' 'tenc'	string	(default ""; with GTK+ 2 GUI: "utf-8"; with
+						    Macintosh GUI: "macroman")
+			global
+			{only available when compiled with the |+multi_byte|
+			feature}
+			{not in Vi}
+	Encoding used for the terminal.  This specifies what character
+	encoding the keyboard produces and the display will understand.  For
+	the GUI it only applies to the keyboard ('encoding' is used for the
+	display).
+	In the Win32 console version the default value is the console codepage
+	when it differs from the ANSI codepage.
+								*E617*
+	Note: This does not apply to the GTK+ 2 GUI.  After the GUI has been
+	successfully initialized, 'termencoding' is forcibly set to "utf-8".
+	Any attempts to set a different value will be rejected, and an error
+	message is shown.
+	For the Win32 GUI 'termencoding' is not used for typed characters,
+	because the Win32 system always passes Unicode characters.
+	When empty, the same encoding is used as for the 'encoding' option.
+	This is the normal value.
+	Not all combinations for 'termencoding' and 'encoding' are valid.  See
+	|encoding-table|.
+	The value for this option must be supported by internal conversions or
+	iconv().  When this is not possible no conversion will be done and you
+	will probably experience problems with non-ASCII characters.
+	Example: You are working with the locale set to euc-jp (Japanese) and
+	want to edit a UTF-8 file: >
+		:let &termencoding = &encoding
+		:set encoding=utf-8
+<	You need to do this when your system has no locale support for UTF-8.
+
+						*'terse'* *'noterse'*
+'terse'			boolean	(default off)
+			global
+	When set: Add 's' flag to 'shortmess' option (this makes the message
+	for a search that hits the start or end of the file not being
+	displayed).  When reset: Remove 's' flag from 'shortmess' option.  {Vi
+	shortens a lot of messages}
+
+				   *'textauto'* *'ta'* *'notextauto'* *'nota'*
+'textauto' 'ta'		boolean	(Vim default: on, Vi default: off)
+			global
+			{not in Vi}
+	This option is obsolete.  Use 'fileformats'.
+	For backwards compatibility, when 'textauto' is set, 'fileformats' is
+	set to the default value for the current system.  When 'textauto' is
+	reset, 'fileformats' is made empty.
+	NOTE: This option is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+				   *'textmode'* *'tx'* *'notextmode'* *'notx'*
+'textmode' 'tx'		boolean	(MS-DOS, Win32 and OS/2: default on,
+				 others: default off)
+			local to buffer
+			{not in Vi}
+	This option is obsolete.  Use 'fileformat'.
+	For backwards compatibility, when 'textmode' is set, 'fileformat' is
+	set to "dos".  When 'textmode' is reset, 'fileformat' is set to
+	"unix".
+
+						*'textwidth'* *'tw'*
+'textwidth' 'tw'	number	(default 0)
+			local to buffer
+			{not in Vi}
+	Maximum width of text that is being inserted.  A longer line will be
+	broken after white space to get this width.  A zero value disables
+	this.  'textwidth' is set to 0 when the 'paste' option is set.	When
+	'textwidth' is zero, 'wrapmargin' may be used.	See also
+	'formatoptions' and |ins-textwidth|.
+	NOTE: This option is set to 0 when 'compatible' is set.
+
+						*'thesaurus'* *'tsr'*
+'thesaurus' 'tsr'	string	(default "")
+			global or local to buffer |global-local|
+			{not in Vi}
+	List of file names, separated by commas, that are used to lookup words
+	for thesaurus completion commands |i_CTRL-X_CTRL-T|.	Each line in
+	the file should contain words with similar meaning, separated by
+	non-keyword characters (white space is preferred).  Maximum line
+	length is 510 bytes.
+	To obtain a file to be used here, check out the wordlist FAQ at
+	http://www.hyphenologist.co.uk .
+	To include a comma in a file name precede it with a backslash.	Spaces
+	after a comma are ignored, otherwise spaces are included in the file
+	name.  See |option-backslash| about using backslashes.
+	The use of |:set+=| and |:set-=| is preferred when adding or removing
+	directories from the list.  This avoids problems when a future version
+	uses another default.
+	Backticks cannot be used in this option for security reasons.
+
+			     *'tildeop'* *'top'* *'notildeop'* *'notop'*
+'tildeop' 'top'		boolean	(default off)
+			global
+			{not in Vi}
+	When on: The tilde command "~" behaves like an operator.
+	NOTE: This option is reset when 'compatible' is set.
+
+				*'timeout'* *'to'* *'notimeout'* *'noto'*
+'timeout' 'to'		boolean (default on)
+			global
+						*'ttimeout'* *'nottimeout'*
+'ttimeout'		boolean (default off)
+			global
+			{not in Vi}
+	These two options together determine the behavior when part of a
+	mapped key sequence or keyboard code has been received:
+
+	'timeout'    'ttimeout'		action	~
+	   off		off		do not time out
+	   on		on or off	time out on :mappings and key codes
+	   off		on		time out on key codes
+
+	If both options are off, Vim will wait until either the complete
+	mapping or key sequence has been received, or it is clear that there
+	is no mapping or key sequence for the received characters.  For
+	example: if you have mapped "vl" and Vim has received 'v', the next
+	character is needed to see if the 'v' is followed by an 'l'.
+	When one of the options is on, Vim will wait for about 1 second for
+	the next character to arrive.  After that the already received
+	characters are interpreted as single characters.  The waiting time can
+	be changed with the 'timeoutlen' option.
+	On slow terminals or very busy systems timing out may cause
+	malfunctioning cursor keys.  If both options are off, Vim waits
+	forever after an entered <Esc> if there are key codes that start
+	with <Esc>.  You will have to type <Esc> twice.  If you do not have
+	problems with key codes, but would like to have :mapped key
+	sequences not timing out in 1 second, set the 'ttimeout' option and
+	reset the 'timeout' option.
+
+	NOTE: 'ttimeout' is reset when 'compatible' is set.
+
+						*'timeoutlen'* *'tm'*
+'timeoutlen' 'tm'	number	(default 1000)
+			global
+			{not in all versions of Vi}
+						*'ttimeoutlen'* *'ttm'*
+'ttimeoutlen' 'ttm'	number	(default -1)
+			global
+			{not in Vi}
+	The time in milliseconds that is waited for a key code or mapped key
+	sequence to complete.  Also used for CTRL-\ CTRL-N and CTRL-\ CTRL-G
+	when part of a command has been typed.
+	Normally only 'timeoutlen' is used and 'ttimeoutlen' is -1.  When a
+	different timeout value for key codes is desired set 'ttimeoutlen' to
+	a non-negative number.
+
+		ttimeoutlen	mapping delay	   key code delay	~
+		   < 0		'timeoutlen'	   'timeoutlen'
+		  >= 0		'timeoutlen'	   'ttimeoutlen'
+
+	The timeout only happens when the 'timeout' and 'ttimeout' options
+	tell so.  A useful setting would be >
+		:set timeout timeoutlen=3000 ttimeoutlen=100
+<	(time out on mapping after three seconds, time out on key codes after
+	a tenth of a second).
+
+						*'title'* *'notitle'*
+'title'			boolean	(default off, on when title can be restored)
+			global
+			{not in Vi}
+			{not available when compiled without the |+title|
+			feature}
+	When on, the title of the window will be set to the value of
+	'titlestring' (if it is not empty), or to:
+		filename [+=-] (path) - VIM
+	Where:
+		filename	the name of the file being edited
+		-		indicates the file cannot be modified, 'ma' off
+		+		indicates the file was modified
+		=		indicates the file is read-only
+		=+		indicates the file is read-only and modified
+		(path)		is the path of the file being edited
+		- VIM		the server name |v:servername| or "VIM"
+	Only works if the terminal supports setting window titles
+	(currently Amiga console, Win32 console, all GUI versions and
+	terminals with a non- empty 't_ts' option - these are Unix xterm and
+	iris-ansi by default, where 't_ts' is taken from the builtin termcap).
+								*X11*
+	When Vim was compiled with HAVE_X11 defined, the original title will
+	be restored if possible.  The output of ":version" will include "+X11"
+	when HAVE_X11 was defined, otherwise it will be "-X11".  This also
+	works for the icon name |'icon'|.
+	But: When Vim was started with the |-X| argument, restoring the title
+	will not work (except in the GUI).
+	If the title cannot be restored, it is set to the value of 'titleold'.
+	You might want to restore the title outside of Vim then.
+	When using an xterm from a remote machine you can use this command:
+	    rsh machine_name xterm -display $DISPLAY &
+	then the WINDOWID environment variable should be inherited and the
+	title of the window should change back to what it should be after
+	exiting Vim.
+
+								*'titlelen'*
+'titlelen'		number	(default 85)
+			global
+			{not in Vi}
+			{not available when compiled without the |+title|
+			feature}
+	Gives the percentage of 'columns' to use for the length of the window
+	title.	When the title is longer, only the end of the path name is
+	shown.	A '<' character before the path name is used to indicate this.
+	Using a percentage makes this adapt to the width of the window.  But
+	it won't work perfectly, because the actual number of characters
+	available also depends on the font used and other things in the title
+	bar.  When 'titlelen' is zero the full path is used.  Otherwise,
+	values from 1 to 30000 percent can be used.
+	'titlelen' is also used for the 'titlestring' option.
+
+						*'titleold'*
+'titleold'		string	(default "Thanks for flying Vim")
+			global
+			{not in Vi}
+			{only available when compiled with the |+title|
+			feature}
+	This option will be used for the window title when exiting Vim if the
+	original title cannot be restored.  Only happens if 'title' is on or
+	'titlestring' is not empty.
+						*'titlestring'*
+'titlestring'		string	(default "")
+			global
+			{not in Vi}
+			{not available when compiled without the |+title|
+			feature}
+	When this option is not empty, it will be used for the title of the
+	window.  This happens only when the 'title' option is on.
+	Only works if the terminal supports setting window titles (currently
+	Amiga console, Win32 console, all GUI versions and terminals with a
+	non-empty 't_ts' option).
+	When Vim was compiled with HAVE_X11 defined, the original title will
+	be restored if possible |X11|.
+	When this option contains printf-style '%' items, they will be
+	expanded according to the rules used for 'statusline'.
+	Example: >
+    :auto BufEnter * let &titlestring = hostname() . "/" . expand("%:p")
+    :set title titlestring=%<%F%=%l/%L-%P titlelen=70
+<	The value of 'titlelen' is used to align items in the middle or right
+	of the available space.
+	Some people prefer to have the file name first: >
+    :set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%)
+<	Note the use of "%{ }" and an expression to get the path of the file,
+	without the file name.	The "%( %)" constructs are used to add a
+	separating space only when needed.
+	NOTE: Use of special characters in 'titlestring' may cause the display
+	to be garbled (e.g., when it contains a CR or NL character).
+	{not available when compiled without the |+statusline| feature}
+
+				*'toolbar'* *'tb'*
+'toolbar' 'tb'		string	(default "icons,tooltips")
+			global
+			{only for |+GUI_GTK|, |+GUI_Athena|, |+GUI_Motif| and
+			|+GUI_Photon|}
+	The contents of this option controls various toolbar settings.	The
+	possible values are:
+		icons		Toolbar buttons are shown with icons.
+		text		Toolbar buttons shown with text.
+		horiz		Icon and text of a toolbar button are
+				horizontally arranged.	{only in GTK+ 2 GUI}
+		tooltips	Tooltips are active for toolbar buttons.
+	Tooltips refer to the popup help text which appears after the mouse
+	cursor is placed over a toolbar button for a brief moment.
+
+	If you want the toolbar to be shown with icons as well as text, do the
+	following: >
+		:set tb=icons,text
+<	Motif and Athena cannot display icons and text at the same time.  They
+	will show icons if both are requested.
+
+	If none of the strings specified in 'toolbar' are valid or if
+	'toolbar' is empty, this option is ignored.  If you want to disable
+	the toolbar, you need to set the 'guioptions' option.  For example: >
+		:set guioptions-=T
+<	Also see |gui-toolbar|.
+
+						*'toolbariconsize'* *'tbis'*
+'toolbariconsize' 'tbis'	string	(default "small")
+				global
+				{not in Vi}
+				{only in the GTK+ 2 GUI}
+	Controls the size of toolbar icons.  The possible values are:
+		tiny		Use tiny toolbar icons.
+		small		Use small toolbar icons (default).
+		medium		Use medium-sized toolbar icons.
+		large		Use large toolbar icons.
+	The exact dimensions in pixels of the various icon sizes depend on
+	the current theme.  Common dimensions are large=32x32, medium=24x24,
+	small=20x20 and tiny=16x16.
+
+	If 'toolbariconsize' is empty, the global default size as determined
+	by user preferences or the current theme is used.
+
+			     *'ttybuiltin'* *'tbi'* *'nottybuiltin'* *'notbi'*
+'ttybuiltin' 'tbi'	boolean	(default on)
+			global
+			{not in Vi}
+	When on, the builtin termcaps are searched before the external ones.
+	When off the builtin termcaps are searched after the external ones.
+	When this option is changed, you should set the 'term' option next for
+	the change to take effect, for example: >
+		:set notbi term=$TERM
+<	See also |termcap|.
+	Rationale: The default for this option is "on", because the builtin
+	termcap entries are generally better (many systems contain faulty
+	xterm entries...).
+
+				     *'ttyfast'* *'tf'* *'nottyfast'* *'notf'*
+'ttyfast' 'tf'		boolean	(default off, on when 'term' is xterm, hpterm,
+					sun-cmd, screen, rxvt, dtterm or
+					iris-ansi; also on when running Vim in
+					a DOS console)
+			global
+			{not in Vi}
+	Indicates a fast terminal connection.  More characters will be sent to
+	the screen for redrawing, instead of using insert/delete line
+	commands.  Improves smoothness of redrawing when there are multiple
+	windows and the terminal does not support a scrolling region.
+	Also enables the extra writing of characters at the end of each screen
+	line for lines that wrap.  This helps when using copy/paste with the
+	mouse in an xterm and other terminals.
+
+						*'ttymouse'* *'ttym'*
+'ttymouse' 'ttym'	string	(default depends on 'term')
+			global
+			{not in Vi}
+			{only in Unix and VMS, doesn't work in the GUI; not
+			available when compiled without |+mouse|}
+	Name of the terminal type for which mouse codes are to be recognized.
+	Currently these three strings are valid:
+							*xterm-mouse*
+	   xterm	xterm-like mouse handling.  The mouse generates
+			"<Esc>[Mscr", where "scr" is three bytes:
+				"s"  = button state
+				"c"  = column plus 33
+				"r"  = row plus 33
+	   xterm2	Works like "xterm", but with the xterm reporting the
+			mouse position while the mouse is dragged.  This works
+			much faster and more precise.  Your xterm must at
+			least at patchlevel 88	/ XFree 3.3.3 for this to
+			work.  See below for how Vim detects this
+			automatically.
+							*netterm-mouse*
+	   netterm	NetTerm mouse handling.  The mouse generates
+			"<Esc>}r,c<CR>", where "r,c" are two decimal numbers
+			for the row and column.
+							*dec-mouse*
+	   dec		DEC terminal mouse handling.  The mouse generates a
+			rather complex sequence, starting with "<Esc>[".
+							*jsbterm-mouse*
+	   jsbterm	JSB term mouse handling.
+							*pterm-mouse*
+	   pterm	QNX pterm mouse handling.
+
+	The mouse handling must be enabled at compile time |+mouse_xterm|
+	|+mouse_dec| |+mouse_netterm|.
+	Only "xterm"(2) is really recognized.  NetTerm mouse codes are always
+	recognized, if enabled at compile time.  DEC terminal mouse codes
+	are recognized if enabled at compile time, and 'ttymouse' is not
+	"xterm" (because the xterm and dec mouse codes conflict).
+	This option is automatically set to "xterm", when the 'term' option is
+	set to a name that starts with "xterm", and 'ttymouse' is not "xterm"
+	or "xterm2" already.  The main use of this option is to set it to
+	"xterm", when the terminal name doesn't start with "xterm", but it can
+	handle xterm mouse codes.
+	The "xterm2" value will be set if the xterm version is reported to be
+	95 of higher.  This only works when compiled with the |+termresponse|
+	feature and if |t_RV| is set to the escape sequence to request the
+	xterm version number.  Otherwise "xterm2" must be set explicitly.
+	If you do not want 'ttymouse' to be set to "xterm2" automatically, set
+	t_RV to an empty string: >
+		:set t_RV=
+<
+						*'ttyscroll'* *'tsl'*
+'ttyscroll' 'tsl'	number	(default 999)
+			global
+	Maximum number of lines to scroll the screen.  If there are more lines
+	to scroll the window is redrawn.  For terminals where scrolling is
+	very slow and redrawing is not slow this can be set to a small number,
+	e.g., 3, to speed up displaying.
+
+						*'ttytype'* *'tty'*
+'ttytype' 'tty'		string	(default from $TERM)
+			global
+	Alias for 'term', see above.
+
+						*'undolevels'* *'ul'*
+'undolevels' 'ul'	number	(default 100, 1000 for Unix, VMS,
+						Win32 and OS/2)
+			global
+			{not in Vi}
+	Maximum number of changes that can be undone.  Since undo information
+	is kept in memory, higher numbers will cause more memory to be used
+	(nevertheless, a single change can use an unlimited amount of memory).
+	Set to 0 for Vi compatibility: One level of undo and "u" undoes
+	itself: >
+		set ul=0
+<	But you can also get Vi compatibility by including the 'u' flag in
+	'cpoptions', and still be able to use CTRL-R to repeat undo.
+	Set to a negative number for no undo at all: >
+		set ul=-1
+<	This helps when you run out of memory for a single change.
+	Also see |undo-two-ways|.
+
+						*'updatecount'* *'uc'*
+'updatecount' 'uc'	number	(default: 200)
+			global
+			{not in Vi}
+	After typing this many characters the swap file will be written to
+	disk.  When zero, no swap file will be created at all (see chapter on
+	recovery |crash-recovery|).  'updatecount' is set to zero by starting
+	Vim with the "-n" option, see |startup|.  When editing in readonly
+	mode this option will be initialized to 10000.
+	The swapfile can be disabled per buffer with |'swapfile'|.
+	When 'updatecount' is set from zero to non-zero, swap files are
+	created for all buffers that have 'swapfile' set.  When 'updatecount'
+	is set to zero, existing swap files are not deleted.
+	Also see |'swapsync'|.
+	This option has no meaning in buffers where |'buftype'| is "nofile"
+	or "nowrite".
+
+						*'updatetime'* *'ut'*
+'updatetime' 'ut'	number	(default 4000)
+			global
+			{not in Vi}
+	If this many milliseconds nothing is typed the swap file will be
+	written to disk (see |crash-recovery|).  Also used for the
+	|CursorHold| autocommand event.
+
+						*'verbose'* *'vbs'*
+'verbose' 'vbs'		number	(default 0)
+			global
+			{not in Vi, although some versions have a boolean
+			verbose option}
+	When bigger than zero, Vim will give messages about what it is doing.
+	Currently, these messages are given:
+	>= 1	When the viminfo file is read or written.
+	>= 2	When a file is ":source"'ed.
+	>= 5	Every searched tags file.
+	>= 8	Files for which a group of autocommands is executed.
+	>= 9	Every executed autocommand.
+	>= 12	Every executed function.
+	>= 13	When an exception is thrown, caught, finished, or discarded.
+	>= 14	Anything pending in a ":finally" clause.
+	>= 15	Every executed Ex command (truncated at 200 characters).
+
+	This option can also be set with the "-V" argument.  See |-V|.
+	This option is also set by the |:verbose| command.
+
+						*'viewdir'* *'vdir'*
+'viewdir' 'vdir'	string	(default for Amiga, MS-DOS, OS/2 and Win32:
+							 "$VIM/vimfiles/view",
+				 for Unix: "~/.vim/view",
+				 for Macintosh: "$VIM:vimfiles:view"
+				 for VMS: "sys$login:vimfiles/view"
+				 for RiscOS: "Choices:vimfiles/view")
+			global
+			{not in Vi}
+			{not available when compiled without the +mksession
+			feature}
+	Name of the directory where to store files for |:mkview|.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+						*'viewoptions'* *'vop'*
+'viewoptions' 'vop'	string	(default: "folds,options,cursor")
+			global
+			{not in Vi}
+			{not available when compiled without the +mksession
+			feature}
+	Changes the effect of the |:mkview| command.  It is a comma separated
+	list of words.	Each word enables saving and restoring something:
+	   word		save and restore ~
+	   cursor	cursor position in file and in window
+	   folds	manually created folds, opened/closed folds and local
+			fold options
+	   options	options and mappings local to a window or buffer (not
+			global values for local options)
+	   slash	backslashes in file names replaced with forward
+			slashes
+	   unix		with Unix end-of-line format (single <NL>), even when
+			on Windows or DOS
+
+	"slash" and "unix" are useful on Windows when sharing view files
+	with Unix.  The Unix version of Vim cannot source dos format scripts,
+	but the Windows version of Vim can source unix format scripts.
+
+				*'viminfo'* *'vi'* *E526* *E527* *E528*
+'viminfo' 'vi'		string	(Vi default: "", Vim default for MS-DOS,
+				   Windows and OS/2: '20,<50,s10,h,rA:,rB:,
+				   for Amiga: '20,<50,s10,h,rdf0:,rdf1:,rdf2:
+				   for others: '20,<50,s10,h)
+			global
+			{not in Vi}
+			{not available when compiled without the  |+viminfo|
+			feature}
+	When non-empty, the viminfo file is read upon startup and written
+	when exiting Vim (see |viminfo-file|).	The string should be a comma
+	separated list of parameters, each consisting of a single character
+	identifying the particular parameter, followed by a number or string
+	which specifies the value of that parameter.  If a particular
+	character is left out, then the default value is used for that
+	parameter.  The following is a list of the identifying characters and
+	the effect of their value.
+	CHAR	VALUE	~
+	!	When included, save and restore global variables that start
+		with an uppercase letter, and don't contain a lowercase
+		letter.  Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis"
+		and "_K_L_M" are not.
+	"	Maximum number of lines saved for each register.  Old name of
+		the '<' item, with the disadvantage that you need to put a
+		backslash before the ", otherwise it will be recognized as the
+		start of a comment!
+	%	When included, save and restore the buffer list.  If Vim is
+		started with a file name argument, the buffer list is not
+		restored.  If Vim is started without a file name argument, the
+		buffer list is restored from the viminfo file.	Buffers
+		without a file name and buffers for help files are not written
+		to the viminfo file.
+	'	Maximum number of previously edited files for which the marks
+		are remembered.  This parameter must always be included when
+		'viminfo' is non-empty.
+		Including this item also means that the |jumplist| and the
+		|changelist| are stored in the viminfo file.
+	/	Maximum number of items in the search pattern history to be
+		saved.	If non-zero, then the previous search and substitute
+		patterns are also saved.  When not included, the value of
+		'history' is used.
+	:	Maximum number of items in the command-line history to be
+		saved.	When not included, the value of 'history' is used.
+	<	Maximum number of lines saved for each register.  If zero then
+		registers are not saved.  When not included, all lines are
+		saved.  '"' is the old name for this item.
+		Also see the 's' item below: limit specified in Kbyte.
+	@	Maximum number of items in the input-line history to be
+		saved.	When not included, the value of 'history' is used.
+	c	When included, convert the text in the viminfo file from the
+		'encoding' used when writing the file to the current
+		'encoding'. See |viminfo-encoding|.
+	f	Whether file marks need to be stored.  If zero, file marks ('0
+		to '9, 'A to 'Z) are not stored.  When not present or when
+		non-zero, they are all stored.	'0 is used for the current
+		cursor position (when exiting or when doing ":wviminfo").
+	h	Disable the effect of 'hlsearch' when loading the viminfo
+		file.  When not included, it depends on whether ":nohlsearch"
+		has been used since the last search command.
+	n	Name of the viminfo file.  The name must immediately follow
+		the 'n'.  Must be the last one!  If the "-i" argument was
+		given when starting Vim, that file name overrides the one
+		given here with 'viminfo'.  Environment variables are expanded
+		when opening the file, not when setting the option.
+	r	Removable media.  The argument is a string (up to the next
+		',').  This parameter can be given several times.  Each
+		specifies the start of a path for which no marks will be
+		stored.  This is to avoid removable media.  For MS-DOS you
+		could use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:".  You can
+		also use it for temp files, e.g., for Unix: "r/tmp".  Case is
+		ignored.  Maximum length of each 'r' argument is 50
+		characters.
+	s	Maximum size of an item in Kbyte.  If zero then registers are
+		not saved.  Currently only applies to registers.  The default
+		"s10" will exclude registers with more than 10 Kbyte of text.
+		Also see the '<' item above: line count limit.
+
+	Example: >
+	    :set viminfo='50,<1000,s100,:0,n~/vim/viminfo
+<
+	'50		Marks will be remembered for the last 50 files you
+			edited.
+	<1000		Contents of registers (up to 1000 lines each) will be
+			remembered.
+	s100		Registers with more than 100 Kbyte text are skipped.
+	:0		Command-line history will not be saved.
+	n~/vim/viminfo	The name of the file to use is "~/vim/viminfo".
+	no /		Since '/' is not specified, the default will be used,
+			that is, save all of the search history, and also the
+			previous search and substitute patterns.
+	no %		The buffer list will not be saved nor read back.
+	no h		'hlsearch' highlighting will be restored.
+
+	When setting 'viminfo' from an empty value you can use |:rviminfo| to
+	load the contents of the file, this is not done automatically.
+
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
+
+					    *'virtualedit'* *'ve'*
+'virtualedit' 've'	string	(default "")
+			global
+			{not in Vi}
+			{not available when compiled without the
+			|+virtualedit| feature}
+	A comma separated list of these words:
+	    block	Allow virtual editing in Visual block mode.
+	    insert	Allow virtual editing in Insert mode.
+	    all		Allow virtual editing in all modes.
+	Virtual editing means that the cursor can be positioned where there is
+	no actual character.  This can be halfway into a Tab or beyond the end
+	of the line.  Useful for selecting a rectangle in Visual mode and
+	editing a table.
+
+			*'visualbell'* *'vb'* *'novisualbell'* *'novb'* *beep*
+'visualbell' 'vb'	boolean	(default off)
+			global
+			{not in Vi}
+	Use visual bell instead of beeping.  The terminal code to display the
+	visual bell is given with 't_vb'.  When no beep or flash is wanted,
+	use ":set vb t_vb=".
+	Note: When the GUI starts, 't_vb' is reset to its default value.  You
+	might want to set it again in your |gvimrc|.
+	In the GUI, 't_vb' defaults to "<Esc>|f", which inverts the display
+	for 20 msec.  If you want to use a different time, use "<Esc>|40f",
+	where 40 is the time in msec.
+	Does not work on the Amiga, you always get a screen flash.
+	Also see 'errorbells'.
+
+						*'warn'* *'nowarn'*
+'warn'			boolean	(default on)
+			global
+	Give a warning message when a shell command is used while the buffer
+	has been changed.
+
+		     *'weirdinvert'* *'wiv'* *'noweirdinvert'* *'nowiv'*
+'weirdinvert' 'wiv'	boolean	(default off)
+			global
+			{not in Vi}
+	This option has the same effect as the 't_xs' termcap option.
+	It is provided for backwards compatibility with version 4.x.
+	Setting 'weirdinvert' has the effect of making 't_xs' non-empty, and
+	vice versa.  Has no effect when the GUI is running.
+
+						*'whichwrap'* *'ww'*
+'whichwrap' 'ww'	string	(Vim default: "b,s", Vi default: "")
+			global
+			{not in Vi}
+	Allow specified keys that move the cursor left/right to move to the
+	previous/next line when the cursor is on the first/last character in
+	the line.  Concatenate characters to allow this for these keys:
+		char   key	  mode	~
+		 b    <BS>	 Normal and Visual
+		 s    <Space>	 Normal and Visual
+		 h    "h"	 Normal and Visual
+		 l    "l"	 Normal and Visual
+		 <    <Left>	 Normal and Visual
+		 >    <Right>	 Normal and Visual
+		 ~    "~"	 Normal
+		 [    <Left>	 Insert and Replace
+		 ]    <Right>	 Insert and Replace
+	For example: >
+		:set ww=<,>,[,]
+<	allows wrap only when cursor keys are used.
+	When the movement keys are used in combination with a delete or change
+	operator, the <EOL> also counts for a character.  This makes "3h"
+	different from "3dh" when the cursor crosses the end of a line.  This
+	is also true for "x" and "X", because they do the same as "dl" and
+	"dh".  If you use this, you may also want to use the mapping
+	":map <BS> X" to make backspace delete the character in front of the
+	cursor.
+	When 'l' is included, you get a side effect: "yl" on an empty line
+	will include the <EOL>, so that "p" will insert a new line.
+	NOTE: This option is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+						*'wildchar'* *'wc'*
+'wildchar' 'wc'		number	(Vim default: <Tab>, Vi default: CTRL-E)
+			global
+			{not in Vi}
+	Character you have to type to start wildcard expansion in the
+	command-line, as specified with 'wildmode'.
+	The character is not recognized when used inside a macro.  See
+	'wildcharm' for that.
+	Although 'wc' is a number option, you can set it to a special key: >
+		:set wc=<Esc>
+<	NOTE: This option is set to the Vi default value when 'compatible' is
+	set and to the Vim default value when 'compatible' is reset.
+
+						*'wildcharm'* *'wcm'*
+'wildcharm' 'wcm'	number	(default: none (0))
+			global
+			{not in Vi}
+	'wildcharm' works exactly like 'wildchar', except that it is
+	recognized when used inside a macro. You can find "spare" command-line
+	keys suitable for this option by looking at |ex-edit-index|. Normally
+	you'll never actually type 'wildcharm', just use it in mappings that
+	automatically invoke completion mode, e.g.: >
+		:set wcm=<C-Z>
+		:cmap ss so $vim/sessions/*.vim<C-Z>
+<	Then after typing :ss you can use CTRL-P & CTRL-N.
+
+						*'wildignore'* *'wig'*
+'wildignore' 'wig'	string	(default "")
+			global
+			{not in Vi}
+			{not available when compiled without the |+wildignore|
+			feature}
+	A list of file patterns.  A file that matches with one of these
+	patterns is ignored when completing file or directory names.
+	The pattern is used like with |:autocmd|, see |autocmd-patterns|.
+	Also see 'suffixes'.
+	Example: >
+		:set wildignore=*.o,*.obj
+<	The use of |:set+=| and |:set-=| is preferred when adding or removing
+	a pattern from the list.  This avoids problems when a future version
+	uses another default.
+
+				*'wildmenu'* *'wmnu'* *'nowildmenu'* *'nowmnu'*
+'wildmenu' 'wmnu'	boolean	(default off)
+			global
+			{not in Vi}
+			{not available if compiled without the |+wildmenu|
+			feature}
+	When 'wildmenu' is on, command-line completion operates in an enhanced
+	mode.  On pressing 'wildchar' (usually <Tab>) to invoke completion,
+	the possible matches are shown just above the command line, with the
+	first match highlighted (overwriting the status line, if there is
+	one).  Keys that show the previous/next match, such as <Tab> or
+	CTRL-P/CTRL-N, cause the highlight to move to the appropriate match.
+	When 'wildmode' is used, "wildmenu" mode is used where "full" is
+	specified.  "longest" and "list" do not start "wildmenu" mode.
+	If there are more matches than can fit in the line, a ">" is shown on
+	the right and/or a "<" is shown on the left.  The status line scrolls
+	as needed.
+	The "wildmenu" mode is abandoned when a key is hit that is not used
+	for selecting a completion.
+	While the "wildmenu" is active the following keys have special
+	meanings:
+
+	<Left> <Right>	- select previous/next match (like CTRL-P/CTRL-N)
+	<Down>		- in filename/menu name completion: move into a
+			  subdirectory or submenu.
+	<CR>		- in menu completion, when the cursor is just after a
+			  dot: move into a submenu.
+	<Up>		- in filename/menu name completion: move up into
+			  parent directory or parent menu.
+
+	This makes the menus accessible from the console |console-menus|.
+
+	If you prefer the <Left> and <Right> keys to move the cursor instead
+	of selecting a different match, use this: >
+		:cnoremap <Left> <Space><BS><Left>
+		:cnoremap <Right> <Space><BS><Right>
+<
+	The "WildMenu" highlighting is used for displaying the current match
+	|hl-WildMenu|.
+
+						*'wildmode'* *'wim'*
+'wildmode' 'wim'	string	(Vim default: "full")
+			global
+			{not in Vi}
+	Completion mode that is used for the character specified with
+	'wildchar'.  It is a comma separated list of up to four parts.	Each
+	part specifies what to do for each consecutive use of 'wildchar.  The
+	first part specifies the behavior for the first use of 'wildchar',
+	The second part for the second use, etc.
+	These are the possible values for each part:
+	""		Complete only the first match.
+	"full"		Complete the next full match.  After the last match,
+			the original string is used and then the first match
+			again.
+	"longest"	Complete till longest common string.  If this doesn't
+			result in a longer string, use the next part.
+	"longest:full"	Like "longest", but also start 'wildmenu' if it is
+			enabled.
+	"list"		When more than one match, list all matches.
+	"list:full"	When more than one match, list all matches and
+			complete first match.
+	"list:longest"	When more than one match, list all matches and
+			complete till longest common string.
+	When there is only a single match, it is fully completed in all cases.
+
+	Examples: >
+		:set wildmode=full
+<	Complete first full match, next match, etc. (the default) >
+		:set wildmode=longest,full
+<	Complete longest common string, then each full match >
+		:set wildmode=list:full
+<	List all matches and complete each full match >
+		:set wildmode=list,full
+<	List all matches without completing, then each full match >
+		:set wildmode=longest,list
+<	Complete longest common string, then list alternatives.
+
+						*'winaltkeys'* *'wak'*
+'winaltkeys' 'wak'	string	(default "menu")
+			global
+			{not in Vi}
+			{only used in Win32, Motif, GTK and Photon GUI}
+	Some GUI versions allow the access to menu entries by using the ALT
+	key in combination with a character that appears underlined in the
+	menu.  This conflicts with the use of the ALT key for mappings and
+	entering special characters.  This option tells what to do:
+	  no	Don't use ALT keys for menus.  ALT key combinations can be
+		mapped, but there is no automatic handling.  This can then be
+		done with the |:simalt| command.
+	  yes	ALT key handling is done by the windowing system.  ALT key
+		combinations cannot be mapped.
+	  menu	Using ALT in combination with a character that is a menu
+		shortcut key, will be handled by the windowing system.	Other
+		keys can be mapped.
+	If the menu is disabled by excluding 'm' from 'guioptions', the ALT
+	key is never used for the menu.
+	In the Win32 version, the <F10> key is handled like this too, since
+	Windows uses it to select a menu.
+
+						*'winheight'* *'wh'* *E591*
+'winheight' 'wh'	number	(default 1)
+			global
+			{not in Vi}
+			{not available when compiled without the +windows
+			feature}
+	Minimal number of lines for the current window.  This is not a hard
+	minimum, Vim will use fewer lines if there is not enough room.	If the
+	current window is smaller, its size is increased, at the cost of the
+	height of other windows.  Set it to 999 to make the current window
+	always fill the screen (although this has the drawback that ":all"
+	will create only two windows).  Set it to a small number for normal
+	editing.
+	Minimum value is 1.
+	The height is not adjusted after one of the commands to change the
+	height of the current window.
+	'winheight' applies to the current window.  Use 'winminheight' to set
+	the minimal height for other windows.
+
+			*'winfixheight'* *'wfh'* *'nowinfixheight'* *'nowfh'*
+'winfixheight' 'wfh'	boolean	(default off)
+			local to window
+			{not in Vi}
+			{not available when compiled without the +windows
+			feature}
+	Keep the window height when windows are opened or closed and
+	'equalalways' is set.  Set by default for the |preview-window| and
+	|quickfix-window|.
+	The height may be changed anyway when running out of room.
+
+						*'winminheight'* *'wmh'*
+'winminheight' 'wmh'	number	(default 1)
+			global
+			{not in Vi}
+			{not available when compiled without the +windows
+			feature}
+	The minimal height of a window, when it's not the current window.
+	This is a hard minimum, windows will never become smaller.
+	When set to zero, windows may be "squashed" to zero lines (i.e. just a
+	status bar) if necessary.  They will return to at least one line when
+	they become active (since the cursor has to have somewhere to go.)
+	Use 'winheight' to set the minimal height of the current window.
+	This option is only checked when making a window smaller.  Don't use a
+	large number, it will cause errors when opening more than a few
+	windows.  A value of 0 to 3 is reasonable.
+
+						*'winminwidth'* *'wmw'*
+'winminwidth' 'wmw'	number	(default 1)
+			global
+			{not in Vi}
+			{not available when compiled without the +vertsplit
+			feature}
+	The minimal width of a window, when it's not the current window.
+	This is a hard minimum, windows will never become smaller.
+	When set to zero, windows may be "squashed" to zero columns (i.e. just
+	a vertical separator) if necessary.  They will return to at least one
+	line when they become active (since the cursor has to have somewhere
+	to go.)
+	Use 'winwidth' to set the minimal width of the current window.
+	This option is only checked when making a window smaller.  Don't use a
+	large number, it will cause errors when opening more than a few
+	windows.  A value of 0 to 12 is reasonable.
+
+						*'winwidth'* *'wiw'* *E592*
+'winwidth' 'wiw'	number	(default 20)
+			global
+			{not in Vi}
+			{not available when compiled without the +vertsplit
+			feature}
+	Minimal number of columns for the current window.  This is not a hard
+	minimum, Vim will use fewer columns if there is not enough room.  If
+	the current window is smaller, its size is increased, at the cost of
+	the width of other windows.  Set it to 999 to make the current window
+	always fill the screen.  Set it to a small number for normal editing.
+	The width is not adjusted after one of the commands to change the
+	width of the current window.
+	'winwidth' applies to the current window.  Use 'winminwidth' to set
+	the minimal width for other windows.
+
+						*'wrap'* *'nowrap'*
+'wrap'			boolean	(default on)
+			local to window
+			{not in Vi}
+	This option changes how text is displayed.  It doesn't change the text
+	in the buffer, see 'textwidth' for that.
+	When on, lines longer than the width of the window will wrap and
+	displaying continues on the next line.	When off lines will not wrap
+	and only part of long lines will be displayed.	When the cursor is
+	moved to a part that is not shown, the screen will scroll
+	horizontally.
+	The line will be broken in the middle of a word if necessary.  See
+	'linebreak' to get the break at a word boundary.
+	To make scrolling horizontally a bit more useful, try this: >
+		:set sidescroll=5
+		:set listchars+=precedes:<,extends:>
+<	See 'sidescroll', 'listchars' and |wrap-off|.
+
+						*'wrapmargin'* *'wm'*
+'wrapmargin' 'wm'	number	(default 0)
+			local to buffer
+	Number of characters from the right window border where wrapping
+	starts.  When typing text beyond this limit, an <EOL> will be inserted
+	and inserting continues on the next line.
+	Options that add a margin, such as 'number' and 'foldcolumn', cause
+	the text width to be further reduced.  This is Vi compatible.
+	When 'textwidth' is non-zero, this option is not used.
+	See also 'formatoptions' and |ins-textwidth|.  {Vi: works differently
+	and less usefully}
+
+				   *'wrapscan'* *'ws'* *'nowrapscan'* *'nows'*
+'wrapscan' 'ws'		boolean	(default on)			*E384* *E385*
+			global
+	Searches wrap around the end of the file.
+
+						   *'write'* *'nowrite'*
+'write'			boolean	(default on)
+			global
+			{not in Vi}
+	Allows writing files.  When not set, writing a file is not allowed.
+	Can be used for a view-only mode, where modifications to the text are
+	still allowed.	Can be reset with the |-m| or |-M| command line
+	argument.  Filtering text is still possible, even though this requires
+	writing a temporary file.
+
+				   *'writeany'* *'wa'* *'nowriteany'* *'nowa'*
+'writeany' 'wa'		boolean	(default off)
+			global
+	Allows writing to any file with no need for "!" override.
+
+			     *'writebackup'* *'wb'* *'nowritebackup'* *'nowb'*
+'writebackup' 'wb'	boolean	(default on with |+writebackup| feature, off
+					otherwise)
+			global
+			{not in Vi}
+	Make a backup before overwriting a file.  The backup is removed after
+	the file was successfully written, unless the 'backup' option is
+	also on.  Reset this option if your file system is almost full.  See
+	|backup-table| for another explanation.
+	When the 'backupskip' pattern matches, a backup is not made anyway.
+	NOTE: This option is set to the default value when 'compatible' is
+	set.
+
+						*'writedelay'* *'wd'*
+'writedelay' 'wd'	number	(default 0)
+			global
+			{not in Vi}
+	The number of microseconds to wait for each character sent to the
+	screen.  When non-zero, characters are sent to the terminal one by
+	one.  For MS-DOS pcterm this does not work.  For debugging purposes.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_390.txt b/runtime/doc/os_390.txt
new file mode 100644
index 0000000..4202606
--- /dev/null
+++ b/runtime/doc/os_390.txt
@@ -0,0 +1,340 @@
+*os_390.txt*    For Vim version 7.0aa.  Last change: 2003 Jun 03
+
+
+		  VIM REFERENCE MANUAL	  by Ralf Schandl
+
+					*zOS* *z/OS* *OS390* *os390* *MVS*
+This file contains the particulars for the z/OS UNIX version of Vim.
+
+1. Open source on z/OS UNIX		|zOS-open-source|
+2. Your feedback is needed		|zOS-feedback|
+3. Building VIM for z/OS UNIX		|zOS-building|
+4. ASCII/EBCDIC dependent scripts	|zOS-has-ebcdic|
+5. XTerm Problems			|zOS-xterm|
+6. Motif Problems			|zOS-Motif|
+7  Bugs					|zOS-Bugs|
+8. Known weaknesses			|zOS-weaknesses|
+9. Changes				|zOS-changes|
+
+DISCLAIMER: ~
+We are IBM employees, but IBM is not responsible for this port. This is our
+private fun, and is provided in the hopes that it may be useful to others.
+
+Please note that this software has NOT been submitted to any formal IBM
+testing and is published AS IS. Please do not contact IBM for support for this
+software, as it is not an official component of any IBM product. IT IS NOT
+SUPPORTED, GUARANTEED, OR RELATED WHATSOEVER TO IBM.
+
+Contributors: ~
+The port to z/OS UNIX was done by Ralf Schandl for the Redbook mentioned
+below.
+
+Changes, bug-reports, or both by:
+
+	David Moore
+	Anthony Giorgio <agiorgio@fastmail.fm>
+	and others
+
+This document was written by Ralf Schandl and revised by Anthony Giorgio.
+
+==============================================================================
+1. Open source on z/OS UNIX		*OS390-open-source* *zOS-open-source*
+
+If you are interested in other Open Source Software on z/OS UNIX, have a
+look at the following Redbook:
+
+    Mike MacIsaac et al
+    "Open Source Software for z/OS and OS/390 UNIX"
+    IBM Form Number: SG24-5944-01
+    ISBN: 0738424633
+
+You can find out more information, order a hard copy, or download a PDF
+version of these Redbooks at:
+
+	    http://www.redbooks.ibm.com
+
+==============================================================================
+2. Your feedback is needed		*OS390-feedback* *zOS-feedback*
+
+Vim should compile, link, and run right out of the box on a standard IBM z/OS
+UNIX mainframe.  I've personally run it on z/OS V1R2 and V1R3 machines without
+problems.
+
+Many changes had to be done to the code to port Vim to z/OS UNIX. As like
+most UNIX programs, Vim contained heavy ASCII dependencies. I might have
+missed an ASCII dependency, or it is possible that a new one has been added
+with a feature or bug fix. Most programmers are simply not aware of possible
+ASCII/EBCDIC conversion issues. If you hit a problem that seems related to
+this, feel free to contact us at the email addresses above.
+
+One indication of ASCII/EBCDIC conversion problems is screen corruption with
+"unprintable" characters.  For example, at one point the errorbell was broken
+in Vim. Any time Vim tried to ring the terminal bell an ASCII character 0x07
+would be printed. This works fine on most terminals, but is broken on an
+EBCDIC one. The correct solution was to define a different value for the bell
+character on EBCDIC systems.
+
+Remember, it's only possible to fix a bug if the community knows about it.
+Don't rely on someone else to report it! See the section |bug-reports|.
+
+==============================================================================
+3. Building VIM for z/OS UNIX		*OS390-building* *zOS-building*
+
+A word on debugging code first: ~
+
+The normal run of configure adds the flag '-g' to the compiler options,
+to include debugging information into the executable. This information
+are normally removed from the executable with the strip command during
+installation. On z/OS UNIX, it is not possible to remove this from
+the executable. The strip command exists on z/OS UNIX and is called
+during the installation, but it does nothing.  It is equivalent to the
+'touch' command. This is due to the way debug symbols are stored in the
+objects generated by the compiler.
+
+If you want to build Vim without debugging code, export the environment
+variable CFLAGS set to an empty string before you call the configure script.
+>
+	export CFLAGS=""
+
+
+Building without X11: ~
+
+Note: Use cc to build Vim. The c89 compiler has stricter syntax checking
+and will not compile Vim cleanly.
+
+If you build VIM without X11 support, compiling and building is
+straightforward. Don't forget to export _CC_CCMODE=1 before calling
+configure and make.
+>
+    $ export _CC_CCMODE=1
+    $./configure --with-features=big --without-x --enable-gui=no
+    $ make
+    $ make test
+<
+	Test notes:
+	Test 11 will fail if you do not have gzip installed.
+	Test 42 will fail, as VIM on z/OS UNIX doesn't support the multibyte
+	feature. (David Moore: "Doesn't work _yet_!  :-)  I'll see what I
+	can do.")
+>
+
+    $ make install
+
+
+Building with X11: ~
+
+There are two ways for building Vim with X11 support. You can link it
+statically with the X11 libraries or can bind it with the X11 DLLs. The
+statically linked version results in a huge executable (~13MB), while the
+dynamically linked executable is much smaller (~4.5MB).
+
+Here is what you do, if you want Motif:
+
+  a) Static link >
+	$ configure --with-features=big --enable-gui=motif
+	$ make
+<
+     VIM is now linked statically with the X11 libraries.
+
+  b) Dynamic link:
+     Make VIM as described for the static link. Then change the contents of
+     the 'auto/link.sed' file by appending: >
+	s%-lXm  *%/usr/lib/Xm.x %g
+	s%-lX11  *%/usr/lib/X11.x %g
+	s%-lSM  *%/usr/lib/SM.x %g
+	s%-lICE  *%/usr/lib/ICE.x %g
+<
+     Then do: >
+	$ rm vim
+	$ make
+<
+     Now Vim is linked with the X11-DLLs.
+
+See the Makefile and the file link.sh on how link.sed is used.
+
+==============================================================================
+4. ASCII/EBCDIC dependent scripts	*OS390-has-ebcdic* *zOS-has-ebcdic*
+
+For the internal script language the feature "ebcdic" was added. With this
+you can fix ASCII dependent scripts like this:
+>
+    if has("ebcdic")
+	let space = 64
+    else
+	let space = 32
+    endif
+<
+==============================================================================
+5. XTerm problems			*OS390-xterm* *zOS-xterm*
+
+Note: This problem was resolved in version 6.1b. ~
+
+I saw one problem with XTerm on z/OS UNIX.  The terminal code for moving the
+cursor to the left is wrong in the termlib database.  Perhaps not wrong, but
+it didn't work with VIM syntax highlighting and command line cursor movement.
+
+If the highlighting is messed up while you type, but is okay after you refreshed
+the screen with <C-L> or if you can't move to the left with the cursor key on
+the command line, try adding >
+	:set t_le=^H
+<
+to your .vimrc. Note: '^H' is one character, hit <C-V><C-H> to get it.
+
+==============================================================================
+6. Motif Problems			*OS390-Motif* *zOS-Motif*
+
+It seems that in porting the Motif library to z/OS, a translation from EBCDIC
+to ASCII for the accelerator characters of the pull-down menus was forgotten.
+Even after I tried to hand convert the menus, the accelerator keys continued
+to only work for the opening of menus (like <Alt-F> to open the file menu).
+They still do not work for the menu items themselves (like <Alt-F>O to open
+the file browser).
+
+There is no solution for this as of yet.
+
+==============================================================================
+7. Bugs					*OS390-bugs* *zOS-Bugs*
+
+- Vim will consistently hang when a large amount of text is selected in
+  visual block mode.  This may be due to a memory corruption issue.  Note that
+  this occurs in both the terminal and gui versions.
+
+==============================================================================
+8. Known weaknesses			*OS390-weaknesses* *zOS-weaknesses*
+
+- No binary search in tag files.
+  The program /bin/sort sorts by ASCII value by default. This program is
+  normally used by ctags to sort the tags. There might be a version of
+  ctags out there, that does it right, but we can't be sure. So this seems to
+  be a permanent restriction.
+
+- Multibyte support (utf-8) doesn't work, it's disabled at compile time.
+  (|multibyte|)
+
+- The cscope interface (|cscope|) doesn't work for the version of cscope
+  that we use on our mainframe.  We have a copy of version 15.0b12, and it
+  causes Vim to hang when using the "cscope add" command.  I'm guessing that
+  the binary format of the cscope database isn't quite what Vim is expecting.
+  I've tried to port the current version of cscope (15.3) to z/OS, without
+  much success.  If anyone is interested in trying, drop me a line if you
+  make any progress.
+
+- No glib/gtk support.  I have not been able to successfully compile glib on
+  z/OS UNIX.  This means you'll have to live without the pretty gtk toolbar.
+
+Never tested:
+    - Perl interface		(|perl|)
+    - Hangul input		(|hangul|)
+    - Encryption support	(|encryption|)
+    - Langmap			(|'langmap'|)
+    - Python support		(|Python|)
+    - Right-to-left mode	(|'rightleft'|)
+    - SNiFF+ interface		(|sniff|)
+    - TCL interface		(|tcl|)
+    ...
+
+If you try any of these features and they work, drop us a note!
+
+==============================================================================
+9. Changes				*OS390-changes*	*zOS-changes*
+
+This is a small reference of the changes made to the z/OS port of Vim.  It is
+not an exhaustive summary of all the modifications made to the code base.
+
+6.1b (beta):
+  Changed KS_LE in term.c to be "\b" instead of "\010"  This fixed the
+  screen corruption problems in gVim reported by Anthony Giorgio.
+
+  Anthony Giorgio updated this document:
+	- Changed OS/390 to z/OS where appropriate. IBM decided to rename
+		all of its servers and operating systems.  z/OS and OS/390
+		are the same product, but the version numbering system was
+		reset for the name change. (e.g. OS/390 V2R11 == z/OS V1R1)
+	- Added information about second edition of the Open Source Redbook.
+	- Moved Redbook information to a separate section.
+	- Various tweaks and changes.
+	- Updated testing section.
+
+6.0au:
+  Changed configure.in
+  Changed documentation.
+  Anthony Giorgio fixed the errorbell.
+
+  David Moore found some problems, which were fixed by Bram and/or David for
+  6.0au.
+
+6.0q (alpha):
+  Minor changes for nrformats=alpha (see |'nrformats'|).
+  Problem with hard-coded keycode for the English pound sign. Added a define in
+  ascii.h
+  Disabled multibyte for EBCDIC in feature.h
+
+6.0f (alpha):
+  First compile of Vim 6 on z/OS UNIX. Some minor changes were needed.
+
+  Finally found the reason why make from the top level didn't work (I must have
+  been blind before!). The Makefile contained a list of targets in one target
+  line. On all other UNIX's the macro $@ evaluates to the first target in this
+  list, only on z/OS UNIX it evaluates to the last one :-(.
+
+5.6-390d:
+  Cleaned up some hacks.
+
+5.6-390c:
+  I grepped through the source and examined every spot with a character
+  involved in a operation (+-). I hope I now found all EBCDIC/ASCII
+  stuff, but ....
+
+  Fixed:
+    - fixed warning message in do_fixdel()
+    - fixed translation from Ctrl-Char to symbolic name (like ^h to CTRL-H)
+	    for :help
+    - fixed yank/delete/... into register
+    - fixed :register command
+    - fixed viminfo register storing
+    - fixed quick-access table in findoptions()
+    - fixed 'g^H' select mode
+    - fixed tgetstr() 'get terminal capability string', ESC and
+	    Ctrl chars where wrong. (Not used on OS/390 UNIX)
+
+
+  ctags:
+    - added trigraphs support (used in prolog of system header files)
+	    (get.c)
+    - fixed sorting order with LC_COLLATE=S390 to force EBCDIC sorting.
+	    (sort.c)
+
+5.6-390b:
+  Changed:
+    - configure.in:
+	- added test for OS/390 UNIX
+	- added special compiler and linker options if building with X11
+    - configure:
+	- after created via autoconf hand-edited it to make the test for
+	  ICEConnectionNumber work. This is a autoconf problem. OS/390 UNIX
+	  needs -lX11 for this.
+    - Makefile
+	- Don't include the lib directories ('-L...') into the variable
+	  ALL_LIBS. Use own variable ALL_LIB_DIRS instead. A fully POSIX
+	  compliant compiler must not accept objects/libraries and options
+	  mixed. Now we can call the linker like this:
+
+	    $(CC) $(LDFLAGS) $(ALL_LIB_DIRS) $(OBJ) $(ALL_LIBS)
+
+  Fixed:
+    - Double quote couldn't be entered
+      Missed ASCII dependencies while setting up terminal
+      In ASCII 127 is the delete char, in EBCDIC codepage 1047 the value 127
+      is the double quote.
+    - fixed ':fixdel'
+
+5.6-390a:
+  first alpha release for OS/390 UNIX.
+
+  Addition:
+    - For the internal script language I added the feature "ebcdic".
+      This can be queried with the has()-function of the internal
+      script language.
+
+------------------------------------------------------------------------------
+ vim:tw=78:fo=tcq2:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_amiga.txt b/runtime/doc/os_amiga.txt
new file mode 100644
index 0000000..fd21583
--- /dev/null
+++ b/runtime/doc/os_amiga.txt
@@ -0,0 +1,139 @@
+*os_amiga.txt*  For Vim version 7.0aa.  Last change: 2004 Apr 25
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+							*Amiga*
+This file contains the particularities for the Amiga version of Vim.
+There is also a section specifically for |MorphOS| below.
+
+Installation on the Amiga:
+- Assign "VIM:" to the directory where the Vim "doc" directory is.  Vim will
+  look for the file "VIM:doc/help.txt" (for the help command).
+  Setting the environment variable $VIM also works.  And the other way around:
+  when $VIM used and it is not defined, "VIM:" is used.
+- With DOS 1.3 or earlier: Put "arp.library" in "libs:". Vim must have been
+  compiled with the |+ARP| feature enabled.  Make sure that newcli and run are
+  in "C:" (for executing external commands).
+- Put a shell that accepts a command with "-c" (e.g. "Csh" from Fish disk
+  624) in "c:" or in any other directory that is in your search path (for
+  executing external commands).
+
+If you have sufficient memory you can avoid startup delays by making Vim and
+csh resident with the command "rez csh vim". You will have to put
+"rezlib.library" in your "libs:" directory. Under 2.0 you will need rez
+version 0.5.
+
+If you do not use digraphs, you can save some memory by recompiling without
+the |+digraphs| feature. If you want to use Vim with other terminals you can
+recompile with the TERMCAP option. Vim compiles with Manx 5.x and SAS 6.x.
+See the makefiles and feature.h.
+
+If you want to use different colors set the termcap codes:
+	t_mr (for inverted text)
+	t_md (for bold text)
+	t_me (for normal text after t_mr and t_md)
+	t_so (for standout mode)
+	t_se (for normal text after t_so)
+	t_us (for underlined text)
+	t_ue (for normal text after t_us)
+	t_ZH (for italic text)
+	t_ZR (for normal text after t_ZH)
+
+Standard ANSI escape sequences are used. The codes are:
+30 grey char   40 grey cell   >0 grey background    0 all attributes off
+31 black char  41 black cell  >1 black background   1 boldface
+32 white char  42 white cell  >2 white background   2 faint
+33 blue char   43 blue cell   >3 blue background    3 italic
+34 grey char   44 grey cell   >4 grey background    4 underscore
+35 black char  45 black cell  >5 black background   7 reverse video
+36 white char  46 white cell  >6 white background   8 invisible
+37 blue char   47 blue cell   >7 blue background
+
+The codes with '>' must be the last. The cell and background color should be
+the same. The codes can be combined by separating them with a semicolon. For
+example to get white text on a blue background: >
+  :set t_me=^V<Esc>[0;32;43;>3m
+  :set t_se=^V<Esc>[0;32;43;>3m
+  :set t_ue=^V<Esc>[0;32;43;>3m
+  :set t_ZR=^V<Esc>[0;32;43;>3m
+  :set t_md=^V<Esc>[1;32;43;>3m
+  :set t_mr=^V<Esc>[7;32;43;>3m
+  :set t_so=^V<Esc>[0;31;43;>3m
+  :set t_us=^V<Esc>[4;32;43;>3m
+  :set t_ZH=^V<Esc>[3;32;43;>3m
+
+When using multiple commands with a filter command, e.g. >
+  :r! echo this; echo that
+Only the output of the last command is used. To fix this you have to group the
+commands. This depends on the shell you use (that is why it is not done
+automatically in Vim). Examples: >
+  :r! (echo this; echo that)
+  :r! {echo this; echo that}
+
+Commands that accept a single file name allow for embedded spaces in the file
+name. However, when using commands that accept several file names, embedded
+spaces need to be escaped with a backslash.
+
+------------------------------------------------------------------------------
+Vim for MorphOS							*MorphOS*
+
+[this section mostly by Ali Akcaagac]
+
+For the latest info about the MorphOS version:
+	http://www.akcaagac.com/index_vim.html
+
+
+Problems ~
+
+There are a couple of problems which are not MorphOS related but more Vim and
+UN*X related. When starting up Vim in ram: it complains with a nag requester
+from MorphOS please simply ignore it. Another problem is when running Vim as
+is some plugins will cause a few problems which you can ignore as well.
+Hopefully someone will be fixing it over the time.
+
+To pass all these problems for now you can either run:
+
+	vim <file to be edited>
+
+or if you want to run Vim plain and enjoy the motion of Helpfiles etc. it then
+would be better to enter:
+
+	vim --noplugins <of course you can add a file>
+
+
+Installation ~
+
+1) Please copy the binary 'VIM' file to c:
+2) Get the Vim runtime package from:
+
+	ftp://ftp.vim.org/pub/vim/amiga/vim62rt.tgz
+
+   and unpack it in your 'Apps' directory of the MorphOS installation. For me
+   this would create following directory hierarchy:
+
+	MorphOS:Apps/Vim/Vim62/...
+
+3) Add the following lines to your s:shell-startup (Important!).
+
+	;Begin VIM
+	Set VIM=MorphOS:Apps/Vim/Vim62
+	Assign HOME: ""
+	;End VIM
+
+4) Copy the '.vimrc' file to s:
+
+5) There is also a file named 'color-sequence' included in this archive. This
+   will set the MorphOS Shell to show ANSI colors. Please copy the file to s:
+   and change the s:shell-startup to:
+
+	;Begin VIM
+	Set VIM=MorphOS:Apps/Vim/Vim62
+	Assign HOME: ""
+	Execute S:Color-Sequence
+	Cls
+	;End VIM
+
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_beos.txt b/runtime/doc/os_beos.txt
new file mode 100644
index 0000000..d58966f
--- /dev/null
+++ b/runtime/doc/os_beos.txt
@@ -0,0 +1,348 @@
+*os_beos.txt*	For Vim version 7.0aa.  Last change: 2004 May 01
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+							*BeOS* *BeBox*
+This is a port of Vim 5.1 to the BeOS Preview Release 2 (also known as PR2)
+or later.
+
+This file contains the particularities for the BeBox/BeOS version of Vim.  For
+matters not discussed in this file, Vim behaves very much like the Unix
+|os_unix.txt| version.
+
+ 1. General			|beos-general|
+ 2. Compiling Vim		|beos-compiling|
+ 3. Timeout in the Terminal	|beos-timeout|
+ 4. Unicode vs. Latin1		|beos-unicode|
+ 5. The BeOS GUI		|beos-gui|
+ 6. The $VIM directory		|beos-vimdir|
+ 7. Drag & Drop			|beos-dragndrop|
+ 8. Single Launch vs. Multiple
+    Launch			|beos-launch|
+ 9. Fonts			|beos-fonts|
+10. The meta key modifier	|beos-meta|
+11. Mouse key mappings		|beos-mouse|
+12. Color names			|beos-colors|
+13. Compiling with Perl		|beos-perl|
+
+
+1. General						*beos-general*
+
+The default syntax highlighting mostly works with different foreground colors
+to highlight items. This works best if you set your Terminal window to a
+darkish background and light letters. Some middle-grey background (for
+instance (r,g,b)=(168,168,168)) with black letters also works nicely.  If you
+use the default light background and dark letters, it may look better to
+simply reverse the notion of foreground and background color settings. To do
+this, add this to your .vimrc file (where <Esc> may need to be replaced with
+the escape character): >
+
+  :if &term == "beos-ansi"
+  :    set t_AB=<Esc>[3%dm
+  :    set t_AF=<Esc>[4%dm
+  :endif
+
+
+2. Compiling Vim					*beos-compiling*
+
+From the Advanced Access Preview Release (AAPR) on, Vim can be configured with
+the standard configure script. To get the compiler and its flags right, use
+the following command-line in the shell (you can cut and paste it in one go):
+
+CC=$BE_C_COMPILER CFLAGS="$BE_DEFAULT_C_FLAGS -O7" \
+    ./configure --prefix=/boot/home/config
+
+$BE_C_COMPILER is usually "mwcc", $BE_DEFAULT_C_FLAGS is usually "-I- -I."
+
+When configure has run, and you wish to enable GUI support, you must edit the
+config.mk file so that the lines with GUI_xxx refer to $(BEOSGUI_xxx) instead
+of $(NONE_xxx).
+Alternatively you can make this change in the Makefile; it will have a
+more permanent effect. Search for "NONE_".
+
+After compilation you need to add the resources to the binary. Add the
+following few lines near the end (before the line with "exit $exit_value") of
+the link.sh script to do this automatically.
+
+    rmattr BEOS:TYPE vim
+    copyres os_beos.rsrc vim
+    mimeset vim
+
+Also, create a dummy file "strip":
+
+    #!/bin/sh
+    mimeset $1
+    exit 0
+
+You will need it when using "make install" to install Vim.
+
+Now type "make" to compile Vim, then "make install" to install it.
+
+If you want to install Vim by hand, you must copy Vim to $HOME/config/bin, and
+create a bunch of symlinks to it ({g,r,rg}{vim,ex,view}). Furthermore you must
+copy Vims configuration files to $HOME/config/share/vim:
+vim-5.0s/{*.vim,doc,syntax}.  For completeness, you should also copy the nroff
+manual pages to $HOME/config/man/man1. Don't forget ctags/ctags and xxd/xxd!
+
+Obviously, you need the unlimited linker to actually link Vim. See
+http://www.metrowerks.com for purchasing the CodeWarrior compiler for BeOS.
+There are currently no other linkers that can do the job.
+
+This won't be able to include the Perl or Python interfaces even if
+you have the appropriate files installed. |beos-perl|
+
+
+3. Timeout in the Terminal				*beos-timeout*
+
+Because some POSIX/UNIX features are still missing[1], there is no direct OS
+support for read-with-timeout in the Terminal. This would meat that you cannot
+use :mappings of more than one character, unless you also :set notimeout.
+|'timeout'|
+
+To circumvent this problem, I added a workaround to provide the necessary
+input with timeout by using an extra thread which reads ahead one character.
+As a side effect, it also makes Vim recognize when the Terminal window
+resizes.
+
+Function keys are not supported in the Terminal since they produce very
+indistinctive character sequences.
+
+These problems do not exist in the GUI.
+
+[1]: there is no select() on file descriptors; also the termios VMIN and VTIME
+settings do not seem to work properly. This has been the case since DR7 at
+least and still has not been fixed as of PR2.
+
+							*beos-unicode*
+4. Unicode vs. Latin1					*beos-utf8*
+
+BeOS uses Unicode and UTF-8 for text strings (16-bit characters encoded to
+8-bit characters). Vim assumes ISO-Latin1 or other 8-bit character codes.
+This does not produce the desired results for non-ASCII characters. Try the
+command :digraphs to see. If they look messed up, use :set isprint=@ to
+(slightly) improve the display of ISO-Latin1 characters 128-255.  This works
+better in the GUI, depending on which font you use (below).
+
+You may also use the /boot/bin/xtou command to convert UTF-8 files from (xtou
+-f iso1 filename) or to (xtou -t iso1 filename) ISO-Latin1 characters.
+
+
+5. The BeOS GUI						*beos-gui*
+
+Normally Vim starts with the GUI if you start it as gvim or vim -g.  The BeOS
+version tries to determine if it was started from the Tracker instead of the
+Terminal, and if so, use the GUI anyway. However, the current detection scheme
+is fooled if you use the command "vim - </dev/null" or "vim filename &". The
+latter can be called a feature but probably only works because there is no
+BSD-style job control.
+
+Stuff that does not work yet:
+
+- Running external commands from the GUI does not work 100% (again due to lack
+  of support for select()). There was a choice between seeing the command's
+  output, or being able to interrupt it. I chose for seeing the output. Even
+  now the command sometimes crashes mysteriously, apparently in Be's
+  malloc_internal() called from the putenv() function, after fork()ing. (data
+  access exception occurred, ec01b0ec:  90e80000 *stw r7, 0x0000 (r8))(:!ls
+  works usually, :r !ls usually doesn't). This has been reported as bug
+  # 971215-083826.
+- The window title.
+- Starting the GUI from the Terminal version with :gui always acts as if
+  :gui -f were used. There is no way to fix this that I can see.
+- There are some small display glitches here and there that I hope to clean up
+  later. Most of them occur when the window is partially obscured. Some of
+  them seem to be bugs in BeOS, because the Terminal has similar glitches.
+- Mouse up events are not generated when outside the window. This is a bug in
+  BeOS. You can notice this when selecting text and moving the cursor outside
+  the window, then letting go of the mouse button.  Another way is when you
+  drag the scrollbar and do the same thing.  Because Vim still thinks you are
+  still playing with the scrollbar it won't change it itself. I provided a
+  workaround which kicks in when the window is activated or deactivated (so it
+  works best with focus- follows-mouse (/boot/bin/ffm) turned on).
+- The cursor does not flash (very low priority; I'm not sure I even like it
+  when it flashes)
+
+
+The $VIM directory					*beos-vimdir*
+
+$VIM is the symbolic name for the place where Vims support files are stored.
+The default value for $VIM is set at compile time and can be determined with >
+
+  :version
+
+The normal value is /boot/home/config/share/vim. If you don't like it you can
+set the VIM environment variable to override this, or set 'helpfile' in your
+.vimrc: >
+
+  :if version >= 500
+  :    set helpfile=~/vim/vim54/doc/help.txt
+  :    syntax on
+  :endif
+
+
+7. Drag & Drop						*beos-dragndrop*
+
+You can drop files and directories on either the Vim icon (starts a new Vim
+session, unless you use the File Types application to set Vim to be "Single
+Launch") or on the Vim window (starts editing the files).  Dropping a folder
+sets Vim's current working directory. |:cd| |:pwd| If you drop files or
+folders with either SHIFT key pressed, Vim changes directory to the folder
+that contains the first item dropped. When starting Vim, there is no need to
+press shift: Vim behaves as if you do.
+
+Files dropped set the current argument list. |argument-list|
+
+
+8. Single Launch vs. Multiple Launch			*beos-launch*
+
+As distributed Vim's Application Flags (as seen in the FileTypes preference)
+are set to Multiple Launch. If you prefer, you can set them to Single Launch
+instead.  Attempts to start a second copy of Vim will cause the first Vim to
+open the files instead. This works from the Tracker but also from the command
+line. In the latter case, non-file (option) arguments are not supported.
+
+NB: Only the GUI version has a BApplication (and hence Application Flags).
+This section does not apply to the GUI-less version, should you compile one.
+
+
+9. Fonts						*beos-fonts*
+
+Set fonts with >
+
+  :set guifont=Courier10_BT/Roman/10
+
+where the first part is the font family, the second part the style, and the
+third part the size. You can use underscores instead of spaces in family and
+style.
+
+Best results are obtained with monospaced fonts (such as Courier). Vim
+attempts to use all fonts in B_FIXED_SPACING mode but apparently this does not
+work for proportional fonts (despite what the BeBook says).
+
+Vim also tries to use the B_ISO8859_1 encoding, also known as ISO Latin 1.
+This also does not work for all fonts. It does work for Courier, but not for
+ProFontISOLatin1/Regular (strangely enough). You can verify this by giving the >
+
+  :digraphs
+
+command, which lists a bunch of characters with their ISO Latin 1 encoding.
+If, for instance, there are "box" characters among them, or the last character
+isn't a dotted-y, then for this font the encoding does not work.
+
+If the font you specify is unavailable, you get the system fixed font.
+
+Standard fixed-width system fonts are:
+
+	      ProFontISOLatin1/Regular
+		  Courier10_BT/Roman
+		  Courier10_BT/Italic
+		  Courier10_BT/Bold
+		  Courier10_BT/Bold_Italic
+
+Standard proportional system fonts are:
+
+		    Swis721_BT/Roman
+		    Swis721_BT/Italic
+		    Swis721_BT/Bold
+		    Swis721_BT/Bold_Italic
+		Dutch801_Rm_BT/Roman
+		Dutch801_Rm_BT/Italic
+		Dutch801_Rm_BT/Bold
+		Dutch801_Rm_BT/Bold_Italic
+		   Baskerville/Roman
+		   Baskerville/Italic
+		   Baskerville/Bold
+		   Baskerville/Bold_Italic
+		 SymbolProp_BT/Regular
+
+Try some of them, just for fun.
+
+
+10. The meta key modifier				*beos-meta*
+
+The META key modifier is obtained by the left or right OPTION keys.  This is
+because the ALT (aka COMMAND) keys are not passed to applications.
+
+
+11. Mouse key mappings					*beos-mouse*
+
+Vim calls the various mouse buttons LeftMouse, MiddleMouse and RightMouse.  If
+you use the default Mouse preference settings these names indeed correspond to
+reality. Vim uses this mapping:
+
+    Button 1 -> LeftMouse,
+    Button 2 -> RightMouse,
+    Button 3 -> MiddleMouse.
+
+If your mouse has fewer than 3 buttons you can provide your own mapping from
+mouse clicks with modifier(s) to other mouse buttons. See the file
+vim-5.x/macros/swapmous.vim for an example.		|gui-mouse-mapping|
+
+
+12. Color names						*beos-colors*
+
+Vim has a number of color names built-in. Additional names are read from the
+file $VIMRUNTIME/rgb.txt, if present. This file is basically the color
+database from X. Names used from this file are cached for efficiency.
+
+
+13. Compiling with Perl					*beos-perl*
+
+Compiling with Perl support enabled is slightly tricky. The Metrowerks
+compiler has some strange ideas where to search for include files. Since
+several include files with Perl have the same names as some Vim header
+files, the wrong ones get included. To fix this, run the following Perl
+script while in the vim-5.0/src directory: >
+
+   preproc.pl > perl.h
+
+    #!/bin/env perl
+    # Simple #include expander, just good enough for the Perl header files.
+
+    use strict;
+    use IO::File;
+    use Config;
+
+    sub doinclude
+    {
+	my $filename = $_[0];
+	my $fh = new IO::File($filename, "r");
+	if (defined $fh) {
+	    print "/* Start of $filename */\n";
+
+	    while (<$fh>) {
+		if (/^#include "(.*)"/) {
+		    doinclude($1);
+		    print "/* Back in $filename */\n";
+		} else {
+		    print $_;
+		}
+	    }
+	    print "/* End of $filename */\n";
+
+	    undef $fh;
+	} else {
+	    print "/* Cannot open $filename */\n";
+	    print "#include \"$filename\"\n";
+	}
+    }
+
+    chdir     $Config{installarchlib}."/CORE";
+    doinclude "perl.h";
+
+It expands the "perl.h" header file, using only other Perl header files.
+
+Now you can configure & make Vim with the --enable-perlinterp option.
+Be warned though that this adds about 616 kilobytes to the size of Vim!
+Without Perl, Vim with default features and GUI is about 575K, with Perl
+it is about 1191K.
+
+-Olaf Seibert
+
+[Note: these addresses no longer work:]
+<rhialto@polder.ubc.kun.nl>
+http://polder.ubc.kun.nl/~rhialto/be
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_dos.txt b/runtime/doc/os_dos.txt
new file mode 100644
index 0000000..3c82f17
--- /dev/null
+++ b/runtime/doc/os_dos.txt
@@ -0,0 +1,295 @@
+*os_dos.txt*    For Vim version 7.0aa.  Last change: 2003 Dec 20
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+							*dos* *DOS*
+This file documents the common particularities of the MS-DOS and Win32
+versions of Vim.  Also see |os_win32.txt| and |os_msdos.txt|.
+
+1. File locations		|dos-locations|
+2. Using backslashes		|dos-backslash|
+3. Standard mappings		|dos-standard-mappings|
+4. Screen output and colors	|dos-colors|
+5. File formats			|dos-file-formats|
+6. :cd command			|dos-:cd|
+7. Interrupting			|dos-CTRL-Break|
+8. Temp files			|dos-temp-files|
+9. Shell option default		|dos-shell|
+
+==============================================================================
+1. File locations					*dos-locations*
+
+If you keep the Vim executable in the directory that contains the help and
+syntax subdirectories, there is no need to do anything special for Vim to
+work.  No registry entries or environment variables need to be set.  Just make
+sure that the directory is in your search path, or use a shortcut on the
+desktop.
+
+Your vimrc files ("_vimrc" and "_gvimrc") are normally located one directory
+up from the runtime files.  If you want to put them somewhere else, set the
+environment variable $VIM to the directory where you keep them.  Example: >
+	set VIM=C:\user\piet
+Will find "c:\user\piet\_vimrc".
+Note: This would only be needed when the computer is used by several people.
+Otherwise it's simpler to keep your _vimrc file in the default place.
+
+If you move the executable to another location, you also need to set the $VIM
+environment variable.  The runtime files will be found in "$VIM/vim{version}".
+Example: >
+	set VIM=E:\vim
+Will find the version 5.4 runtime files in "e:\vim\vim54".
+Note: This is _not_ recommended.  The preferred way is to keep the executable
+in the runtime directory.
+
+If you move your executable AND want to put your "_vimrc" and "_gvimrc" files
+somewhere else, you must set $VIM to where you vimrc files are, and set
+$VIMRUNTIME to the runtime files.  Example: >
+	set VIM=C:\usr\piet
+	set VIMRUNTIME=E:\vim\vim54
+Will find "c:\user\piet\_vimrc" and the runtime files in "e:\vim\vim54".
+
+See |$VIM| and |$VIMRUNTIME| for more information.
+
+Under Windows 95, you can set $VIM in your C:\autoexec.bat file.  For
+example: >
+  set VIM=D:\vim
+Under Windows NT, you can set environment variables for each user separately
+under "Start/Settings/Control Panel->System", or through the properties in the
+menu of "My Computer", under the Environment Tab.
+
+==============================================================================
+2. Using backslashes					*dos-backslash*
+
+Using backslashes in file names can be a problem.  Vi halves the number of
+backslashes for some commands.  Vim is a bit more tolerant and does not remove
+backslashes from a file name, so ":e c:\foo\bar" works as expected.  But when
+a backslash occurs before a special character (space, comma, backslash, etc.),
+Vim removes the backslash.  Use slashes to avoid problems: ":e c:/foo/bar"
+works fine.  Vim replaces the slashes with backslashes internally to avoid
+problems with some MS-DOS programs and Win32 programs.
+
+When you prefer to use forward slashes, set the 'shellslash' option.  Vim will
+then replace backslashes with forward slashes when expanding file names.  This
+is especially useful when using a Unix-like 'shell'.
+
+==============================================================================
+3. Standard mappings				*dos-standard-mappings*
+
+CTRL-PageUp	cursor to first screen line			*<C-PageUp>*
+CTRL-PageDown	cursor to last screen line, last character	*<C-PageDown>*
+
+These mappings accomplish this:
+
+key		key code     Normal/Visual mode	    Insert mode ~
+CTRL-PageUp	<M-N><M-C-D>	    H		    <C-O>H
+CTRL-PageDown	<M-N>v		    L$		    <C-O>L<C-O>$
+
+Additionally, these keys are available for copy/cut/paste.  In the Win32
+and DJGPP versions, they also use the clipboard.
+
+Shift-Insert	paste text (from clipboard)			*<S-Insert>*
+CTRL-Insert	copy Visual text (to clipboard)			*<C-Insert>*
+CTRL-Del	cut Visual text (to clipboard)			*<C-Del>*
+Shift-Del	cut Visual text (to clipboard)			*<S-Del>*
+
+These mappings accomplish this (Win32 and DJGPP versions of Vim):
+
+key		key code     Normal	Visual	    Insert ~
+Shift-Insert	<M-N><M-T>   "*P	"-d"*P      <C-R><C-O>*
+CTRL-Insert	<M-N><M-U>		"*y
+Shift-Del	<M-N><M-W>		"*d
+CTRL-Del	<M-N><M-X>		"*d
+
+Or these mappings (non-Win32 version of Vim):
+
+key		key code     Normal	Visual	    Insert ~
+Shift-Insert	<M-N><M-T>   P		"-dP	    <C-R><C-O>"
+CTRL-Insert	<M-N><M-U>		y
+Shift-Del	<M-N><M-W>		d
+CTRL-Del	<M-N><M-X>		d
+
+When the clipboard is supported, the "* register is used.
+
+==============================================================================
+4. Screen output and colors				*dos-colors*
+
+The default output method for the screen is to use bios calls.  This works
+right away on most systems.  You do not need ansi.sys.  You can use ":mode" to
+set the current screen mode.  See |:mode|.
+
+To change the screen colors that Vim uses, you can use the |:highlight|
+command.  The Normal highlight group specifies the colors Vim uses for normal
+text.  For example, to get grey text on a blue background: >
+	:hi Normal ctermbg=Blue ctermfg=grey
+See |highlight-groups| for other groups that are available.
+
+A DOS console does not support attributes like bold and underlining.  You can
+set the color used in five modes with nine termcap options.  Note that this is
+not necessary since you can set the color directly with the ":highlight"
+command; these options are for backward compatibility with older Vim versions.
+The |'highlight'| option specifies which of the five modes is used for which
+action. >
+
+	:set t_mr=^V^[\|xxm		start of invert mode
+	:set t_md=^V^[\|xxm		start of bold mode
+	:set t_me=^V^[\|xxm		back to normal text
+
+	:set t_so=^V^[\|xxm		start of standout mode
+	:set t_se=^V^[\|xxm		back to normal text
+
+	:set t_us=^V^[\|xxm		start of underline mode
+	:set t_ue=^V^[\|xxm		back to normal text
+
+	:set t_ZH=^V^[\|xxm		start of italics mode
+	:set t_ZR=^V^[\|xxm		back to normal text
+
+^V is CTRL-V
+^[ is <Esc>
+You must replace xx with a decimal code, which is the foreground color number
+and background color number added together:
+
+COLOR			FOREGROUND	BACKGROUND	~
+Black			    0		    0
+DarkBlue		    1		   16
+DarkGreen		    2		   32
+DarkCyan		    3		   48
+DarkRed			    4		   64
+DarkMagenta		    5		   80
+Brown, DarkYellow	    6		   96
+LightGray		    7		  112
+DarkGray		    8		  128 *
+Blue, LightBlue		    9		  144 *
+Green, LightGreen	   10		  160 *
+Cyan, LightCyan		   11		  176 *
+Red, LightRed		   12		  192 *
+Magenta, LightMagenta	   13		  208 *
+Yellow, LightYellow	   14		  224 *
+White			   15		  240 *
+
+* Depending on the display mode, the color codes above 128 may not be
+  available, and code 128 will make the text blink.
+
+When you use 0, the color is reset to the one used when you started Vim
+(usually 7, lightgray on black, but you can override this.  If you have
+overridden the default colors in a command prompt, you may need to adjust
+some of the highlight colors in your vimrc---see below).
+This is the default for t_me.
+
+The defaults for the various highlight modes are:
+	t_mr	112	 reverse mode: Black text (0) on LightGray (112)
+	t_md	 15	 bold mode: White text (15) on Black (0)
+	t_me	  0	 normal mode (revert to default)
+
+	t_so	 31	 standout mode: White (15) text on DarkBlue (16)
+	t_se	  0	 standout mode end (revert to default)
+
+	t_czh	225	 italic mode: DarkBlue text (1) on Yellow (224)
+	t_czr	  0	 italic mode end (revert to default)
+
+	t_us	 67	 underline mode: DarkCyan text (3) on DarkRed (64)
+	t_ue	  0	 underline mode end (revert to default)
+
+These colors were chosen because they also look good when using an inverted
+display, but you can change them to your liking.
+
+Example: >
+  :set t_mr=^V^[\|97m	" start of invert mode: DarkBlue (1) on Brown (96)
+  :set t_md=^V^[\|67m	" start of bold mode: DarkCyan (3) on DarkRed (64)
+  :set t_me=^V^[\|112m	" back to normal mode: Black (0) on LightGray (112)
+
+  :set t_so=^V^[\|37m	" start of standout mode: DarkMagenta (5) on DarkGreen
+									(32)
+  :set t_se=^V^[\|112m	" back to normal mode: Black (0) on LightGray (112)
+
+==============================================================================
+5. File formats						*dos-file-formats*
+
+If the 'fileformat' option is set to "dos" (which is the default), Vim accepts
+a single <NL> or a <CR><NL> pair for end-of-line (<EOL>).  When writing a
+file, Vim uses <CR><NL>.  Thus, if you edit a file and write it, Vim replaces
+<NL> with <CR><NL>.
+
+If the 'fileformat' option is set to "unix", Vim uses a single <NL> for <EOL>
+and shows <CR> as ^M.
+
+You can use Vim to replace <NL> with <CR><NL> by reading in any mode and
+writing in Dos mode (":se ff=dos").
+You can use Vim to replace <CR><NL> with <NL> by reading in Dos mode and
+writing in Unix mode (":se ff=unix").
+
+Vim sets 'fileformat' automatically when 'fileformats' is not empty (which is
+the default), so you don't really have to worry about what you are doing.
+					|'fileformat'| |'fileformats'|
+
+If you want to edit a script file or a binary file, you should set the
+'binary' option before loading the file.  Script files and binary files may
+contain single <NL> characters which Vim would replace with <CR><NL>.  You can
+set 'binary' automatically by starting Vim with the "-b" (binary) option.
+
+==============================================================================
+6. :cd command						*dos-:cd*
+
+The ":cd" command recognizes the drive specifier and changes the current
+drive.  Use ":cd c:" to make drive C the active drive.  Use ":cd d:\foo" to go
+to the directory "foo" in the root of drive D.  Vim also recognizes UNC names
+if the system supports them; e.g., ":cd \\server\share\dir".  |:cd|
+
+==============================================================================
+7. Interrupting						*dos-CTRL-Break*
+
+Use CTRL-Break instead of CTRL-C to interrupt searches.  Vim does not detect
+the CTRL-C until it tries to read a key.
+
+==============================================================================
+8. Temp files						*dos-temp-files*
+
+Only for the 16 bit and 32 bit DOS version:
+Vim puts temporary files (for filtering) in the first of these directories
+that exists and in which Vim can create a file:
+	$TMP
+	$TEMP
+	C:\TMP
+	C:\TEMP
+	current directory
+
+For the Win32 version (both console and GUI):
+Vim uses standard Windows functions to obtain a temporary file name (for
+filtering).  The first of these directories that exists and in which Vim can
+create a file is used:
+	$TMP
+	$TEMP
+	current directory
+
+==============================================================================
+9. Shell option default					*dos-shell*
+
+The default for the 'sh' ('shell') option is "command.com" on Windows 95 and
+"cmd.exe" on Windows NT.  If SHELL is defined, Vim uses SHELL instead, and if
+SHELL is not defined but COMSPEC is, Vim uses COMSPEC.  Vim starts external
+commands with "<shell> /c <command_name>".  Typing CTRL-Z starts a new command
+subshell.  Return to Vim with "exit".	|'shell'| |CTRL-Z|
+
+If you are running a third-party shell, you may need to set the
+|'shellcmdflag'| ('shcf') and |'shellquote'| ('shq') or |'shellxquote'|
+('sxq') options.  Unfortunately, this also depends on the version of Vim used.
+For example, with the MKS Korn shell or with bash, the values of the options
+should be:
+
+		DOS 16 bit	    DOS 32 bit		Win32  ~
+'shellcmdflag'	   -c			-c		 -c
+'shellquote'	   "
+'shellxquote'						 "
+
+For Dos 16 bit this starts the shell as:
+	<shell> -c "command name" >file
+For Win32 as:
+	<shell> -c "command name >file"
+For DOS 32 bit, DJGPP does this internally somehow.
+
+When starting up, Vim checks for the presence of "sh" anywhere in the 'shell'
+option.  If it is present, Vim sets the 'shellcmdflag' and 'shellquote' or
+'shellxquote' options will be set as described above.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_mac.txt b/runtime/doc/os_mac.txt
new file mode 100644
index 0000000..c2102bf
--- /dev/null
+++ b/runtime/doc/os_mac.txt
@@ -0,0 +1,98 @@
+*os_mac.txt*    For Vim version 7.0aa.  Last change: 2004 Apr 27
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar et al.
+
+
+					*mac* *Mac* *macintosh* *Macintosh*
+
+This file documents the particularities of the Macintosh version of Vim.
+
+NOTE: This file is a bit outdated.  You might find more useful info here:
+	http://macvim.swdev.org/
+
+1. Filename Convention		|mac-filename|
+2. .vimrc an .vim files		|mac-vimfile|
+3. FAQ				|mac-faq|
+4. Known Lack			|mac-lack|
+5. Mac Bug Report		|mac-bug|
+6. Compiling Vim		|mac-compile|
+
+There was a Mac port for version 3.0 of Vim.  Here are the first few lines
+from the old file:
+
+VIM Release Notes
+Initial Macintosh release, VIM version 3.0
+19 October 1994
+
+Eric Fischer
+<enf1@midway.uchicago.edu>, <eric@jcp.uchicago.edu>, <etaoin@uchicago.edu>
+5759 N. Guilford Ave
+Indianapolis IN 46220 USA
+
+==============================================================================
+1. Filename Convention					*mac-filename*
+
+You can use either the unix or mac path separator or a mix of both. In order
+to determine if the specified filename is relative to the current folder or
+absolute (i.e. relative to the "Desktop"), the following algorithm is used:
+
+	If the path start by a "/", the path is absolute
+	If the path start by a ":", the path is relative
+	If the path doesn't start by neither a "/" nor ":",
+	  and a ":" is found before a "/" then the path is absolute
+>
+		:e /HD/text
+		:e HD:text
+<	Edit the file "text" of the disk "HD" >
+		:e :src:main.c
+		:e src/main.c
+<	Edit the file "main.c" in the folder "src" in the current folder >
+		:e os_mac.c
+<	Edit the file "os_mac.c" in the current folder.
+
+You can use the |$VIM| and |$VIMRUNTIME|  variable. >
+
+		:so $VIMRUNTIME:syntax:syntax.vim
+
+==============================================================================
+2. .vimrc and .vim files				*mac-vimfile*
+
+On the Mac files starting with a dot "." are discouraged, thus the rc files
+are named "vimrc" or "_vimrc" and "gvimrc" or "_gvimrc". These files can be in
+any format (mac, dos or unix).  Vim can handle any file format when the
+|'nocompatible'| option is set, otherwise it will only handle mac format
+files.
+
+==============================================================================
+3. Mac FAQ						*mac-faq*
+
+Q: I can't enter non-ASCII character in Apple Terminal.
+A: Under Window Settings, Emulation, make sure that "Escape non-ASCII
+   characters" is not checked.
+
+==============================================================================
+4. Mac Lack						*mac-lack*
+
+-The filenames containing both ":" and "/" are sometimes misinterpreted.
+  (just re-execute the command)
+-Scrollbar are not scrolling live, and  when only the arrow or scroll area,
+   a limit of 32 line or page is scrolled.
+-Syntax highlighting works on 68k Macs but is _really_ slow.
+
+==============================================================================
+5. Mac Bug Report					*mac-bug*
+
+When reporting any Mac specific bug or feature change, please use the vim-mac
+maillist |vim-mac|.  However, you need to be subscribed.  An alternative is to
+send a message to the current MacVim maintainers:
+
+	mac@vim.org
+
+==============================================================================
+6. Compiling Vim					*mac-compile*
+
+See the file "src/INSTALLmac.txt" that comes with the source files.
+
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_mint.txt b/runtime/doc/os_mint.txt
new file mode 100644
index 0000000..979776e
--- /dev/null
+++ b/runtime/doc/os_mint.txt
@@ -0,0 +1,39 @@
+*os_mint.txt*   For Vim version 7.0aa.  Last change: 2001 Sep 03
+
+
+		  VIM REFERENCE MANUAL    by Jens M. Felderhoff
+
+
+							*MiNT* *Atari*
+This file contains the particularities for the Atari MiNT version of Vim.
+
+For compiling Vim on the Atari running MiNT see "INSTALL" and "Makefile"
+in the src directory.
+
+Vim for MiNT behaves almost exactly like the Unix version.
+The Unix behavior described in the documentation also refers to the
+MiNT version of Vim unless explicitly stated otherwise.
+
+For wildcard expansion of <~> (home directory) you need a shell that
+expands the tilde. The vanilla Bourne shell doesn't recognize it.
+With csh and ksh it should work OK.
+
+The MiNT version of vim needs the termcap file /etc/termcap with the
+terminal capabilities of your terminal. Builtin termcaps are
+supported for the vt52 terminal. Termcap entries for the TOSWIN window
+manager and the virtual console terminals have been appended to the
+termcap file that comes with the Vim distribution.
+
+If you should encounter problems with swapped <BS> and <Del> keys, see
+|:fixdel|.
+
+Because terminal updating under MiNT is often slow (e.g. serial line
+terminal), the 'showcmd' and 'ruler' options are default off.
+If you have a fast terminal, try setting them on.  You might
+also want to set 'ttyfast'.
+
+Send bug reports to
+
+	Jens M. Felderhoff, e-mail: <jmf@infko.uni-koblenz.de>
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_msdos.txt b/runtime/doc/os_msdos.txt
new file mode 100644
index 0000000..01290e9
--- /dev/null
+++ b/runtime/doc/os_msdos.txt
@@ -0,0 +1,270 @@
+*os_msdos.txt*  For Vim version 7.0aa.  Last change: 2001 Sep 03
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+					*msdos* *ms-dos* *MSDOS* *MS-DOS*
+This file contains the particularities for the MS-DOS version of Vim.
+
+1. Two versions for MS-DOS	|msdos-versions|
+2. Known problems		|msdos-problems|
+3. Long file names		|msdos-longfname|
+4. Termcap codes		|msdos-termcap|
+5. Shifted arrow keys		|msdos-arrows|
+6. Filename extensions		|msdos-fname-extensions|
+7. Memory usage and limitations	|msdos-limitations|
+8. Symbolically linked files	|msdos-linked-files|
+9. Copy/paste in a dos box	|msdos-copy-paste|
+
+Additionally, there are a number of common Win32 and DOS items:
+File locations			|dos-locations|
+Using backslashes		|dos-backslash|
+Standard mappings		|dos-standard-mappings|
+Screen output and colors	|dos-colors|
+File formats			|dos-file-formats|
+:cd command			|dos-:cd|
+Interrupting			|dos-CTRL-Break|
+Temp files			|dos-temp-files|
+Shell option default		|dos-shell|
+
+For compiling Vim see src/INSTALL.pc.			*msdos-compiling*
+
+==============================================================================
+1. Two versions for MS-DOS				*msdos-versions*
+
+There are two versions of Vim that can be used with MS-DOS machines:
+
+							*dos16*
+Dos16 version	Can be used on any MS-DOS system, only uses up to 640 Kbyte of
+		memory.  Also runs on OS/2, Windows 95, and NT.  Excludes some
+		Vim-specific features (autocommands, syntax highlighting,
+		etc.).  Recommended for use on pre-386 machines.
+							*dos32*
+Dos32 version	Requires 386 processor and a |DPMI| driver, uses all
+		available memory.  Supports long file names and the Windows
+		clipboard, but NOT on Windows NT.  Recommended for MS-DOS,
+		Windows 3.1 and Windows 95.
+
+There are also two versions that run under Windows:
+Win32 version   Requires Windows 95 or Windows NT, uses all available
+		memory, supports long file names, etc.  Has some problems on
+		Windows 95.  Recommended for Windows NT.  See |os_win32.txt|
+Win32 GUI	Requirements like the Win32 version, but runs in its own
+		window, instead of a console.  Has scrollbars, menu, etc.
+		Recommended for Windows 95 and Windows NT.  See |gui-w32|.
+
+It is recommended to use the Dos32 or Win32 version.  Although the Dos16
+version is able to edit very big files, it quickly runs out of memory when
+making big changes.  Disabling undo helps: ":set ul=-1".  The screen updating
+of the Dos16 version is the fastest of the three on DOS or Windows 95; on
+Windows NT, the Win32 version is just as fast.
+
+								*DPMI*
+For the Dos32 version, you may need a DPMI driver when running in MS-DOS.  If
+you are running Windows or installed a clever memory manager, it will probably
+work already.  If you get the message "No DPMI", you need to install a DPMI
+driver.  Such a driver is included with the executable in CSDPMI4B.ZIP.  Run
+"cwsdpmi" just before starting Vim each time.  Or you might want to include
+"cwsdpmi -p" in your autoexec.bat to make it resident.  The latest version of
+"CSDPMI*.ZIP" can be obtained from: "ftp.neosoft.com:pub/users/s/sandmann".
+
+							*minimal-features*
+The 16 bit DOS version has been compiled with minimal features.  Check the
+|+feature-list| which ones are included (marked with a "T").
+You can include more features by editing feature.h and recompiling.
+
+==============================================================================
+2. Known problems					*msdos-problems*
+
+When using smartdrive (MS-DOS 6.x) with write-behind caching, it is possible
+that Vim will try to create a swap file on a read-only file system (e.g.
+write protected floppy).  You will then be given the message >
+	A serious disk error has occurred .., Retry (r)?
+There is nothing you can do but unprotect the floppy or switch off the
+computer.  Even CTRL-ALT-DEL will not get you out of this.  This is really a
+problem of smartdrive, not Vim.  Smartdrive works fine otherwise.  If this
+bothers you, don't use the write-behind caching.
+
+Vim can't read swap files that have been opened already, unless the "share"
+command has been used.  If you see stray warnings for existing swap files,
+include the "share" command in your config.sys or autoexec.bat (see your MSDOS
+documentation).
+
+The Dos16 version can only have about 10 files open (in a window or hidden) at
+one time.  With more files you will get error messages when trying to read or
+write a file, and for filter commands.  Or Vim runs out of memory, and random
+problems may result.
+
+The Dos32 version cannot have an unlimited number of files open at any one
+time.  The limit depends on the setting of FILES in your CONFIG.SYS. This
+defaults to 15; if you need to edit a lot of files, you should increase this.
+If you do not set FILES high enough, you can get strange errors, and shell
+commands may cause a crash!
+
+The Dos32 version can work with long file names.  When doing file name
+completion, matches for the short file name will also be found.  But this will
+result in the corresponding long file name.  For example, if you have the long
+file name "this_is_a_test" with the short file name "this_i~1", the command
+":e *1" will start editing "this_is_a_test".
+
+When using the Dos32 version and you run into problems with DPMI support,
+check if there is a program in your config.sys that eats resources.  One
+program known to cause this problem is "netx", which says "NetWare v. 3.26
+Workstation shell".  Replace it with version 3.32 to fix the problem.
+
+The Dos32 version will parse its arguments to handle quotation.  This is good
+to edit a file with spaces in its name, for example: >
+	vim "program files\accessories\ppp.scp"
+A side effect is that single quotes are removed.  Insert a backslash to avoid
+that.  For example, to edit the file "fi'le.txt": >
+	vim fi\'le.txt
+
+==============================================================================
+3. Long file names					*msdos-longfname*
+
+If the Dos32 version is run on Windows 95, it can use long file names.  It
+will work by default.  If you want to disable this, use this setting:
+	set LFN=N
+You can put this in your autoexec.bat file.
+
+Note: If you have installed DJGPP on your machine, you probably have a
+"djgpp.env" file, which contains "LFN=n".  You need to use "LFN=Y" to switch
+on using long file names then.
+
+==============================================================================
+4. Termcap codes					*msdos-termcap*
+
+If you want to use another output method (e.g., when using a terminal on a COM
+port), set the terminal name to "pcansi".  You can change the termcap options
+when needed (see |terminal-options|).  Note that the
+normal IBM ansi.sys does not support all the codes of the builtin pcansi
+terminal.  If you use ansi.sys, you will need to delete the termcap entries
+t_al and t_dl with >
+   :set t_al= t_dl=
+Otherwise, the screen will not be updated correctly.  It is better to use
+nansi.sys, nnansi.sys, or the like instead of ansi.sys.
+
+If you want to use Vim on a terminal connected to a COM: port, reset the
+'bioskey' option.  Otherwise the commands will be read from the PC keyboard.
+CTRL-C and CTRL-P may not work correctly with 'bioskey' reset.
+
+==============================================================================
+5. Shifted arrow keys					*msdos-arrows*
+
+Use CTRL-arrow-left and CTRL-arrow-right instead of SHIFT-arrow-left and
+SHIFT-arrow-right.  The arrow-up and arrow-down cannot be used with SHIFT or
+CTRL.
+
+==============================================================================
+6. Filename extensions				*msdos-fname-extensions*
+
+MS-DOS allows for only one file name extension.  Therefore, when appending an
+extension, the '.' in the original file name is replaced with a '_', the name
+is truncated to 8 characters, and the new extension (e.g., ".swp") is
+appended.  Two examples: "test.c" becomes "test_c.bak", "thisisat.est"
+becomes "thisisat.bak".  To reduce these problems, the default for
+'backupext' is "~" instead of ".bak".  The backup file for "thisisat.est"
+then becomes "thisisat.es~".  The 'shortname' option is not available,
+because it would always be set.
+
+==============================================================================
+7. Memory usage and limitations			*msdos-limitations*
+
+A swap file is used to store most of the text.  You should be able to edit
+very large files.  However, memory is used for undo and other things.  If you
+delete a lot of text, you can still run out of memory in the Dos16 version.
+
+If Vim gives an "Out of memory" warning, you should stop editing.  The result
+of further editing actions is unpredictable.  Setting 'undolevels' to 0 saves
+some memory.  Running the maze macros on a big maze is guaranteed to run out
+of memory, because each change is remembered for undo.  In this case set
+'undolevels' to a negative number.  This will switch off undo completely.
+
+						*msdos-clipboard-limits*
+In the Dos32 version, extended memory is used to avoid these problems.
+However, if you are using the clipboard, you can still run into memory
+limitations because the Windows clipboard can only communicate with Vim using
+Dos memory.  This means that the largest amount of text that can be sent to
+or received from the Windows clipboard is limited by how much free Dos memory
+is available on your system.
+
+You can usually maximize the amount of available Dos memory by adding the
+following lines to Dos's "config.sys" file: >
+
+	DOS=HIGH,UMB
+	DEVICE=C:\WINDOWS\himem.sys
+	DEVICE=C:\WINDOWS\emm386.exe RAM
+
+Modifying config.sys in this way will also help to make more memory available
+for the Dos16 version, if you are using that.
+
+In the Dos16 version the line length is limited to about 32000 characters.
+When reading a file the lines are automatically split.  But editing a line
+in such a way that it becomes too long may give unexpected results.
+
+==============================================================================
+8. Symbolically linked files			*msdos-linked-files*
+
+When using Vim to edit a symbolically linked file on a unix NFS file server,
+you may run into problems.
+When writing the file, Vim does not "write through" the symlink.  Instead, it
+deletes the symbolic link and creates a new file in its place.
+   On Unix, Vim is prepared for links (symbolic or hard).  A backup copy of
+the original file is made and then the original file is overwritten.  This
+assures that all properties of the file remain the same.  On non-Unix systems,
+the original file is renamed and a new file is written.  Only the protection
+bits are set like the original file.  However, this doesn't work properly when
+working on an NFS-mounted file system where links and other things exist.  The
+only way to fix this in the current version is not making a backup file, by
+":set nobackup nowritebackup"	|'writebackup'|
+
+==============================================================================
+9. Copy/paste in a dos box			*msdos-copy-paste*
+
+					*E450* *E451* *E452* *E453* *E454*
+The 32 bit version can copy/paste from/to the Windows clipboard directly.  Use
+the "* register.  Large amounts of text can be copied this way, but it must be
+possible to allocate memory for it, see |msdos-clipboard-limits|.  When moving
+text from one Vim to another, the type of the selection
+(characterwise/linewise/blockwise) is passed on.
+
+In other versions, the following can be used.
+
+(posted to comp.editors by John Velman <velman@igate1.hac.com>)
+
+How to copy/paste text from/to vim in a dos box:
+
+1) to get VIM to run in a window, instead of full screen, press alt+enter.
+   This toggles back and forth between full screen and a dos window.
+   NOTE: In Windows 95 you must have the property "Fast Pasting" unchecked!
+   In the properties dialog box for the MS-DOS window, go to "MS-DOS
+   Prompt/Misc/Fast pasting" and make sure that it is NOT checked.
+   To make this permanent, change the properties for
+   "\windows\system\conagent.exe" (from Philip Nelson, unverified).
+
+2) To paste something _into_ Vim, put Vim in insert mode.
+
+3) put the text you want to paste on the windows clipboard.
+
+4) Click the control box in the upper left of the Vim window. (This looks
+   like a big minus sign). If you don't want to use the mouse, you can get
+   this with alt+spacebar.
+5) on the resulting dropdown menu choose "Edit"
+6) on the child dropdown menu choose "Paste"
+
+To copy something from the Vim window to the clipboard,
+
+1) select the control box to get the control drop down menu.
+2) select "Edit".
+3) select "Mark"
+4) using either the keys or the mouse, select the part of the Vim window that
+   you want to copy. To use the keys, use the arrow keys, and hold down shift
+   to extend the selection.
+5) when you've completed your selection, press 'enter.' The selection
+   is now in the windows clipboard. By the way, this can be any
+   rectangular selection, for example columns 4-25 in rows 7-10. It can
+   include anything in the VIM window: the output of a :!dir, for
+   example.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_os2.txt b/runtime/doc/os_os2.txt
new file mode 100644
index 0000000..3a4dd47
--- /dev/null
+++ b/runtime/doc/os_os2.txt
@@ -0,0 +1,220 @@
+*os_os2.txt*    For Vim version 7.0aa.  Last change: 2004 Jan 09
+
+
+		  VIM REFERENCE MANUAL    by Paul Slootman
+
+
+							*os2* *OS2* *OS/2*
+This file contains the particularities for the OS/2 version of Vim.
+
+At present there is no native PM version of the GUI version of Vim: The OS/2
+version is a console application.  However, there is now a Win32s-compatible
+GUI version, which should be usable by owners of Warp 4 (which supports
+Win32s) in a Win-OS/2 session.  The notes in this file refer to the native
+console version.
+
+
+NOTE
+
+This OS/2 port works well for me and a couple of other OS/2 users; however,
+since I haven't had much feedback, that either means no (OS/2-specific) bugs
+exist (besides the ones mentioned below), or no one has yet created a
+situation in which any bugs are apparent.  File I/O in Dos and Unix mode,
+binary mode, and FAT handling all seem to work well, which would seem to be
+the most likely places for trouble.
+
+A known problem is that files opened by Vim are inherited by other programs
+that are started via a shell escape from within Vim.  This specifically means
+that Vim won't be able to remove the swap file(s) associated with buffers open
+at the time the other program was started, until the other program is stopped.
+At that time, the swap file may be removed, but if Vim could not do that the
+first time, it won't be removed at all. You'll get warnings that some other
+Vim session may be editing the file when you start Vim up again on that file.
+This can be reproduced with ":!start epm". Now quit Vim, and start Vim again
+with the file that was in the buffer at the time epm was started.  I'm working
+on this!
+
+A second problem is that Vim doesn't understand the situation when using it
+when accessing the OS/2 system via the network, e.g. using telnet from a Unix
+system, and then starting Vim. The problem seems to be that OS/2 =sometimes=
+recognizes function / cursor keys, and tries to convert those to the
+corresponding OS/2 codes generated by the "normal" PC keyboard. I've been
+testing a workaround (mapping the OS/2 codes to the correct functions), but so
+far I can't say anything conclusive (this is on Warp 3, by the way). In the
+meantime any help will be appreciated.
+
+
+PREREQUISITES
+
+To run Vim, you need the emx runtime environment (at least rev. 0.9b).  This
+is generally available as (ask Archie about it):
+
+    emxrt.zip     emx runtime package
+
+I've included a copy of emx.dll, which should be copied to one of the
+directories listed in your LIBPATH. Emx is GPL'ed, but the emx.dll library is
+not (read COPYING.EMX to find out what that means to you).
+
+This emx.dll is from the emxfix04.zip package, which unfortunately has a bug,
+eh, I mean a POSIX feature, in select().  Versions of Vim before 3.27 will
+appear to hang when starting (actually, while processing vimrc). Hit <Enter> a
+couple of times until Vim starts working if this happens.  Next, get an up to
+date version of Vim!
+
+
+HELP AND VIMRC FILE
+
+If you unpack the archive that Vim came in and run Vim directly from where it
+was unpacked, Vim should be able to find the runtime files and your .vimrc
+without any settings.
+
+If you put the runtime files separately from the binary, the VIM environment
+variable is used to find the location of the help files and the system .vimrc.
+Place an entry such as this in CONFIG.SYS: >
+
+  SET VIM=c:/local/lib/vim
+
+Put your .vimrc and your other Vim files in this directory.  Copy the runtime
+directory to this directory.  Each version of Vim has its own runtime
+directory.  It will be called something like "c:/local/lib/vim/vim54".  Thus
+you get a tree of Vim files like this:
+	c:/local/lib/vim/.vimrc
+	c:/local/lib/vim/vim54/filetype.vim
+	c:/local/lib/vim/vim54/doc/help.txt
+	etc.
+
+Note: .vimrc may also be called _vimrc to accommodate those who have chosen to
+install OS/2 on a FAT file system. Vim first tries to find .vimrc and if that
+fails, looks for _vimrc in the same place.  The existence of a .vimrc or
+_vimrc file influences the 'compatible' options, which can have unexpected side
+effects.  See |'compatible'|.
+
+If you're using network drives with OS/2, then you can install Vim on a
+network drive (including .vimrc; this is then called the "system" vimrc file),
+and then use a personal copy of .vimrc (the "user" vimrc file). This should be
+located in a directory indicated by the HOME environment variable.
+
+
+ENVIRONMENT VARIABLES IN FILE NAMES
+
+This HOME environment variable is also used when using ~ in file names, so
+":e ~/textfile" will edit the file "textfile" in the directory referred to by
+HOME.  Additionally you can use other environment variables in file names, as
+as ":n $SRC/*.c".
+
+The HOME environment variable is also used to locate the .viminfo file
+(see |viminfo-file|).  There is no support yet for .viminfo on FAT file
+systems yet, sorry.  You could try the -i startup flag (as in "vim -i
+$HOME/_viminfo") however.
+
+If the HOME environment variable is not set, the value "C:/" is used as a
+default.
+
+
+BACKSLASHES
+
+Using slashes ('/') and backslashes ('\') can be a bit of a problem (see
+|dos-backslash| for more explanation), but in almost all cases Vim does "The
+Right Thing".  Vim itself uses backslashes in file names, but will happily
+accept forward slashes if they are entered (in fact, sometimes that works
+better!).
+
+
+TEMP FILES
+
+Temporary files (for filtering) are put in the first directory in the next
+list that exists and where a file can be created:
+	$TMP
+	$TEMP
+	C:\TMP
+	C:\TEMP
+	current directory
+
+
+TERMINAL SETTING
+
+							*os2ansi*
+Use "os2ansi" as the TERM environment variable (or don't set it at all, as the
+default is the correct value). You can set term to os2ansi in the .vimrc, in
+case you need TERM to be a different value for other applications.  The
+problem is that OS/2 ANSI emulation is quite limited (it doesn't have insert /
+delete line, for example).
+
+If you want to use a different value for TERM (because of other programs, for
+example), make sure that the termcap entry for that TERM value has the
+appropriate key mappings. The termcap.dat distributed with emx does not always
+have them.  Here are some suitable values to add to the termcap entry of your
+choice; these allow the cursor keys and the named function keys (such as
+pagedown) to work.
+
+	:ku=\316H:kd=\316P:kl=\316K:kr=\316M:%i=\316t:#4=\316s:\
+	:kD=\316S:kI=\316R:kN=\316Q:kP=\316I:kh=\316G:@7=\316O:\
+	:k1=\316;:k2=\316<:k3=\316=:k4=\316>:k5=\316?:k6=\316@:\
+	:k7=\316A:k8=\316B:k9=\316C:k;=\316D:
+
+
+Paul Slootman
+
+
+43 LINE WINDOW
+
+A suggestion from Steven Tryon, on how to run Vim in a bigger window:
+
+When I call Vim from an OS/2 WPS application such as PMMail it comes up
+in the default 25-line mode.  To get a more useful window size I make
+my external editor "vimbig.cmd" which in turn calls "vimbig2.cmd".
+Brute force and awkwardness, perhaps, but it works.
+
+vimbig.cmd: >
+   @echo off
+   start "Vi Improved" /f vimbig2.cmd %1 %2 %3 %4
+
+vimbig2.cmd: >
+   @echo off
+   mode 80,43
+   vim.exe %1 %2 %3 %4
+   exit
+<
+
+CLIPBOARD ACCESS (provided by Alexander Wagner)
+
+Vim for OS/2 has no direct access to the system clipboard.  To enable access
+anyway you need an additional tool which gives you access to the clipboard
+from within a vio application.  The freeware package clipbrd.zip by Stefan
+Gruendel can be used for this purpose.  You might download the package
+including precompiled binaries and all sources from:
+	http://www.stellarcom.org/vim/index.html
+
+Installation of this package is straight forward: just put the two executables
+that come with this package into a directory within your PATH for Vim should
+be able to call them from whatever directory you are working.
+
+To copy text from the clipboard to your Vim session you can use the :r
+command.  Simply call clipbrd.exe from within Vim in the following way: >
+
+	:r !clipbrd -r
+
+To copy text from Vim to the system clipboard just mark the text in the usual
+vim-manner and call: >
+
+	:!clipbrd -w
+
+which will write your selection right into OS/2's clipboard.
+
+For ease of use you might want to add some maps for this commands.  E.g. to
+use F11 to paste the clipboard into Vim and F12 to copy selected text to the
+clipboard you would use: >
+
+	if has("os2")
+	  imap <F11>     <ESC>:r !clipbrd -r<CR>i
+	  vmap <F12>     :!clipbrd -w<cr>
+	else
+	  imap <F11>     <ESC>"*p<CR>i
+	  vmap <F12>     "*y
+	endif
+
+This will ensure that only on OS/2 clipbrd is called whereas on other
+platforms vims build in mechanism is used. (To enable this functions on every
+load of Vim place the above lines in your .vimrc.)
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_qnx.txt b/runtime/doc/os_qnx.txt
new file mode 100644
index 0000000..c0d1a4b
--- /dev/null
+++ b/runtime/doc/os_qnx.txt
@@ -0,0 +1,138 @@
+*os_qnx.txt*    For Vim version 7.0aa.  Last change: 2004 Apr 23
+
+
+		  VIM REFERENCE MANUAL    by Julian Kinraid
+
+
+							*QNX* *qnx*
+
+1. General			|qnx-general|
+2. Compiling Vim		|qnx-compiling|
+3. Terminal support		|qnx-terminal|
+4. Photon GUI			|photon-gui|
+5. Photon fonts			|photon-fonts|
+6. Bugs & things To Do
+
+==============================================================================
+
+1. General						*qnx-general*
+
+Vim on QNX behaves much like other unix versions. |os_unix.txt|
+
+
+2. Compiling Vim					*qnx-compiling*
+
+Vim can be compiled using the standard configure/make approach. If you want to
+compile for X11, pass the --with-x option to configure.  Otherwise, running
+./configure without any arguments or passing --enable-gui=photon, will compile
+vim with the Photon gui support.  Run ./configure --help , to find out other
+features you can enable/disable.
+
+
+3. Terminal support					*qnx-terminal*
+
+Vim has support for the mouse and clipboard in a pterm, if those options
+are compiled in, which they are normally.
+
+The options that affect mouse support are |'mouse'| and |'ttymouse'|.  When
+using the mouse, only simple left and right mouse clicking/dragging is
+supported.  If you hold down shift, ctrl, or alt while using the mouse, pterm
+will handle the mouse itself.  It will make a selection, separate from what
+vim's doing.
+
+When the mouse is in use, you can press Alt-RightMouse to open the pterm menu.
+To turn the mouse off in vim, set the mouse option to nothing, set mouse=
+
+
+4. Photon GUI						*photon-gui*
+
+To start the gui for vim, you need to run either gvim or vim -g, otherwise
+the terminal version will run.  For more info - |gui-x11-start|
+
+Supported features:
+	:browse command					|:browse|
+	:confirm command				|:confirm|
+	Cursor blinking					|'guicursor'|
+	Menus, popup menus and menu priorities		|:menu|
+							|popup-menu|
+							|menu-priority|
+	Toolbar						|gui-toolbar|
+							|'toolbar'|
+	Font selector (:set guifont=*)			|photon-fonts|
+	Mouse focus					|'mousefocus'|
+	Mouse hide					|'mousehide'|
+	Mouse cursor shapes				|'mouseshape'|
+	Clipboard					|gui-clipboard|
+
+Unfinished features:
+	Various international support, such as Farsi & Hebrew support,
+	different encodings, etc.
+
+	This help file
+
+Unsupported features:
+	Find & Replace window				|:promptfind|
+	Tearoff menus
+
+	Other things which I can't think of so I can't list them
+
+
+5. Fonts						*photon-fonts*
+
+You set fonts in the gui with the guifont option >
+	:set guifont=Lucida\ Terminal
+<
+The font must be a monospace font, and any spaces in the font name must be
+escaped with a '\'.  The default font used is PC Terminal, size 8.  Using
+'*' as the font name will open a standard Photon font selector where you can
+select a font.
+
+Following the name, you can include optional settings to control the size and
+style of the font, each setting separated by a ':'.  Not all fonts support the
+various styles.
+
+The options are,
+    s{size}	Set the size of the font to {size}
+    b		Bold style
+    a		Use antialiasing
+    i		Italic style
+
+Examples:
+
+Set the font to monospace size 10 with antialiasing >
+	:set guifont=monospace:s10:a
+<
+Set the font to Courier size 12, with bold and italics >
+	:set guifont=Courier:s12:b:i
+<
+Select a font with the requester >
+	:set guifont=*
+<
+
+
+6. Bugs & things To Do
+
+Known problems:
+	- Vim hangs sometimes when running an external program.  Workaround:
+	  put this line in your |vimrc| file: >
+		set noguipty
+
+Bugs:
+	- Still a slight problem with menu highlighting
+	- When using phditto/phinows/etc., if you are using a font that
+	  doesn't support the bold attribute, when vim attempts to draw
+	  bold text it will be all messed up.
+	- The cursor can sometimes be hard to see.
+	- A number of minor problems that can fixed :)
+
+Todo:
+	- Improve multi-language support.
+	- Options for setting the fonts used in the menu and toolbar.
+	- Find & Replace dialog.
+	- The clientserver features.
+	- Maybe tearoff menus.
+
+	- Replace usage of fork() with spawn() when launching external
+	  programs.
+
+ vim:tw=78:sw=4:ts=8:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_risc.txt b/runtime/doc/os_risc.txt
new file mode 100644
index 0000000..04f9ba5
--- /dev/null
+++ b/runtime/doc/os_risc.txt
@@ -0,0 +1,323 @@
+*os_risc.txt*   For Vim version 7.0aa.  Last change: 2004 May 01
+
+
+		  VIM REFERENCE MANUAL    by Thomas Leonard
+
+
+						*riscos* *RISCOS* *RISC-OS*
+This file contains the particularities for the RISC OS version of Vim.
+
+The RISC OS port is a completely new port and is not based on the old `archi'
+port.
+
+1.  File locations		|riscos-locations|
+2.  Filename munging		|riscos-munging|
+3.  Command-line use		|riscos-commandline|
+4.  Desktop (GUI) use		|riscos-gui|
+5.  Remote use (telnet)		|riscos-remote|
+6.  Temporary files		|riscos-temp-files|
+7.  Interrupting		|riscos-interrupt|
+8.  Memory usage		|riscos-memory|
+9.  Filetypes			|riscos-filetypes|
+10. The shell			|riscos-shell|
+11. Porting new releases	|riscos-porting|
+
+If I've missed anything, email me and I'll try to fix it.  In fact, even if I
+haven't missed anything then email me anyway to give me some confidence that it
+actually works!
+
+Thomas Leonard <tal197@ecs.soton.ac.uk>
+
+	[these URLs no longer work...]
+ Port homepage:	http://www.ecs.soton.ac.uk/~tal197/
+	or try:	http://www.soton.ac.uk/~tal197/
+
+==============================================================================
+							*riscos-locations*
+1. File locations
+
+The Vim executable and shared resource files are all stored inside the !Vim
+application directory.
+
+When !Vim is first seen by the filer, it aliases the *vi and *ex commands to
+run the command-line versions of Vim (see |riscos-commandline|).
+
+!Vim.Resources and !Vim.Resources2 contain the files from the standard Vim
+distribution, but modified slightly to work within the limits of ADFS, plus
+some extra files such as the window templates.
+
+User choices are read from `Choices:*' and are saved to `<Choices$Write>.*'.
+If you have the new !Boot structure then these should be set up already. If
+not, set Choices$Path to a list of directories to search when looking for
+user configuration files. Set Choices$Write to the directory you want files
+to be saved into (so your search patterns and marks can be remembered between
+sessions).
+
+==============================================================================
+							*riscos-munging*
+2. Filename munging
+
+All pathname munging is disabled by default, so Vim should behave like a
+normal RISC OS application now. So, if you want to edit `doc/html' then you
+actually type `*vi doc/html'.
+
+The only times munging is done is when:
+
+- Searching included files from C programs, since these are always munged.
+  See |[I|.
+  Note: make sure you are in the right directory when you use this
+	command (ie the one with subdirectories 'c' and 'h').
+
+- Sourcing files using |:so|.
+  Paths starting `$VIM/' are munged like this:
+
+  $VIM/syntax/help.vim  ->  Vim:syntax.help
+
+  Also, files ending in `.vim' have their extensions removed, and slashes
+  replaced with dots.
+
+Some tag files and script files may have to be edited to work under this port.
+
+==============================================================================
+							*riscos-commandline*
+3. Command-line use
+
+To use Vim from the command-line use the `*vi' command (or '*ex' for
+|Ex-mode|).
+
+Type `*vi -h' for a list of options.
+
+Running the command-line version of Vim in a large high-color mode may cause
+the scrolling to be very slow. Either change to a mode with fewer colors or
+use the GUI version.
+
+Also, holding down Ctrl will slow it down even more, and Ctrl-Shift will
+freeze it, as usual for text programs.
+
+==============================================================================
+							*riscos-gui*
+4. Desktop use
+
+Limitations:
+
+- Left scrollbars don't work properly (right and bottom are fine).
+- Doesn't increase scroll speed if it gets behind.
+
+You can resize the window by dragging the lower-right corner, even though
+there is no icon shown there.
+
+You can use the --rows and --columns arguments to specify the initial size of
+the Vim window, like this: >
+
+  *Vi -g --rows 20 --columns 80
+
+The global clipboard is supported, so you can select some text and then
+paste it directly into another application (provided it supports the
+clipboard too).
+
+Clicking Menu now opens a menu like a normal RISC OS program. Hold down Shift
+when clicking Menu to paste (from the global clipboard).
+
+Dragging a file to the window replaces the CURRENT buffer (the one with the
+cursor, NOT the one you dragged to) with the file.
+
+Dragging with Ctrl held down causes a new Vim window to be opened for the
+file (see |:sp|).
+
+Dragging a file in with Shift held down in insert mode inserts the pathname of
+the file.
+
+:browse :w opens a standard RISC OS save box.
+:browse :e opens a directory viewer.
+
+For fonts, you have the choice of the system font, an outline font, the system
+font via ZapRedraw and any of the Zap fonts via ZapRedraw: >
+
+  :set guifont=
+<			To use the system font via the VDU drivers. Supports
+			bold and underline.
+>
+  :set guifont=Corpus.Medium
+<			Use the named outline font. You can use any font, but
+			only monospaced ones like Corpus look right.
+>
+  :set guifont=Corpus.Medium:w8:h12:b:i
+<			As before, but with size of 8 point by 12 point, and
+			in bold italic.
+			If only one of width and height is given then that
+			value is used for both. If neither is given then 10
+			point is used.
+
+Thanks to John Kortink, Vim can use the ZapRedraw module. Start the font name
+with '!' (or '!!' for double height), like this: >
+
+  :set guifont=!!
+<			Use the system font, but via ZapRedraw.  This gives a
+			faster redraw on StrongARM processors, but you can't
+			get bold or italic text. Double height.
+>
+  :set guifont=!script
+<			Uses the named Zap font (a directory in VimFont$Path).
+			The redraw is the same speed as for '!!', but you get
+			a nicer looking font.
+			Only the "man+" and "script" fonts are supplied
+			currently, but you can use any of the Zap fonts if
+			they are in VimFont$Path.
+			Vim will try to load font files '0', 'B', 'I' and 'IB'
+			from the named directory. Only '0' (normal style) MUST
+			be present. Link files are not currently supported.
+
+Note that when using ZapRedraw the edit bar is drawn in front of the character
+you are on rather than behind it. Also redraw is incorrect for screen modes
+with eigen values of 0. If the font includes control characters then you can
+get Vim to display them by changing the 'isprint' option.
+
+If you find the scrolling is too slow on your machine, try experimenting
+with the 'scrolljump' and 'ttyscroll' options.
+
+In particular, StrongARM users may find that: >
+
+  :set ttyscroll=0
+
+makes scrolling faster in high-color modes.
+
+=============================================================================
+							*riscos-remote*
+5. Remote use (telnet)
+
+I have included a built-in termcap entry, but you can edit the termcap file to
+allow other codes to be used if you want to use Vim from a remote terminal.
+
+Although I do not have an internet connection to my Acorn, I have managed to
+run Vim in a FreeTerm window using the loopback connection.
+
+It seems to work pretty well now, using '*vi -T ansi'.
+
+==============================================================================
+							*riscos-temp-files*
+6. Temporary files
+
+If Vim crashes then the swap and backup files (if any) will be in the
+directories set with the 'directory' and 'bdir' options.  By default the swap
+files are in <Wimp$ScrapDir> (ie inside !Scrap) and backups are in the
+directory you were saving to. Vim will allow you to try and recover the file
+when you next try to edit it.
+
+To see a list of swap files, press <F12> and type `*vi -r'.
+
+Vim no longer brings up ATTENTION warnings if you try to edit two files with
+the same name in different directories.
+
+However, it also no longer warns if you try to edit the same file twice (with
+two copies of Vim), though you will still be warned when you save that the
+datestamp has changed.
+
+==============================================================================
+							*riscos-interrupt*
+7. Interrupting
+
+To break out of a looping macro, or similar, hold down Escape in the
+command-line version, or press CTRL-C in the GUI version.
+
+==============================================================================
+							*riscos-memory*
+8. Memory usage
+
+Vim will use dynamic areas on RISC OS 3.5 or later. If you can use them on
+older machines then edit the !RunTxt and GVim files. I don't know what UnixLib
+does by default on these machines so I'm playing safe.
+
+It doesn't work at all well without dynamic areas, since it can't change its
+memory allocation once running. Hence you should edit `!Vim.GVim' and
+`!Vim.!RunTxt' to choose the best size for you. You probably need at least
+about 1400K.
+
+==============================================================================
+							*riscos-filetypes*
+9. Filetypes
+
+You can now specify that autocommands are only executed for files of certain
+types. The filetype is given in the form &xxx, when xxx is the filetype.
+
+Filetypes must be specified by number (eg &fff for Text).
+
+The system has changed from version 5.3. The new sequence of events is:
+
+- A file is loaded. |'osfiletype'| is set to the RISC OS filetype.
+- Based on the filetype and pathname, Vim will try to set |'filetype'| to the
+  Vim-type of the file.
+- Setting this option may load syntax files and perform other actions.
+- Saving the file will give it a filetype of |'osfiletype'|.
+
+Some examples may make this clearer:
+
+  Kind of file loaded	osfiletype	filetype ~
+  C code 'c.hellow'	Text (&fff)	C
+  LaTeX document	LaTeX (&2a8)	TeX
+  Draw document		DrawFile (&aff)	(not changed)
+
+==============================================================================
+							*riscos-shell*
+10. The shell
+
+- Bangs (!s) are only replaced if they are followed by a space or end-of-line,
+  since many pathnames contain them.
+
+- You can prefix the command with '~', which stops any output from being
+  displayed. This also means that you don't have to press <Enter> afterwards,
+  and stops the screen from being redrawn. {only in the GUI version}
+
+==============================================================================
+							*riscos-porting*
+11. Porting new releases to RISC OS
+
+Downloading everything you need:
+
+- Get the latest source distribution (see www.vim.org)
+- Get the runtime environment files (eg these help files)
+- Get the `extra' archive (contains the RISC OS specific bits)
+- Get the RISC OS binary distribution (if possible)
+
+
+Unarchiving:
+
+- Create a raFS disk and put the archives on it.
+- Un-gzip them
+- Un-tar them   (*tar xELf 50 archive/tar)
+
+
+Recompiling the sources:
+
+- Create c, s, and h directories.
+- Put all the header files in 'h'	     \
+- Put all the C files in `c'		     | And lose the extensions
+- Put the assembler file (`swis/s') in 's'   /
+- Rename all the files in `proto' to `h', like this:
+    raFS::VimSrc.source.proto.file/pro
+	  becomes
+    raFS::VimSrc.source.h.file_pro
+- In the files `h.proto' and `c.termlib', search and replace
+    .pro"
+       with
+    _pro.h"
+- Create a simple Makefile if desired and do '*make -k'
+  Use 'CC = gcc -DRISCOS -DUSE_GUI -O2 -x c' in the Makefile
+- Save the binary as !Vim.Vim in the binary distribution
+
+
+Updating the run-time environment:
+
+- Replace old or missing files inside !Vim.Resources with the
+  new files.
+- Remove files in `doc' not ending in `/txt', except for `tags'.
+- Lose the extensions from the files in `doc'.
+- Edit the `doc.tags' file. Remove extensions from the second column: >
+	:%s/^\(.[^\t]*\t.*\)\.txt\t/\1\t/
+- Remove extensions from the syntax files. Split them into two directories
+  to avoid the 77 entry limit on old ADFS filesystems.
+- Edit `Vim:FileType' to match `*.c.*' as well as `*/c' and so on.
+  Add filetype checking too.
+- Edit `Vim:Menu' and remove all the keys from the menus: >
+	:%s/<Tab>[^ \t]*//
+<
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_unix.txt b/runtime/doc/os_unix.txt
new file mode 100644
index 0000000..903a574
--- /dev/null
+++ b/runtime/doc/os_unix.txt
@@ -0,0 +1,60 @@
+*os_unix.txt*   For Vim version 7.0aa.  Last change: 2003 Mar 15
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+							*unix* *Unix*
+This file contains the particularities for the Unix version of Vim.
+
+For compiling Vim on Unix see "INSTALL" and "Makefile" in the src directory.
+
+The default help file name is "/usr/local/lib/vim/help.txt"
+The files "$HOME/.vimrc" and "$HOME/.exrc" are used instead of "s:.vimrc" and
+"s:.exrc". Additionally "/usr/local/etc/vimrc" is used first.
+If "/usr/local/share" exists it is used instead of "/usr/local/lib".
+
+Temporary files (for filtering) are put in "/tmp".  If you want to place them
+somewhere else, set the environment variable $TMPDIR to the directory you
+prefer.
+
+With wildcard expansion you can use '~' (home directory) and '$'
+(environment variable).
+
+							*fork* *spoon*
+For executing external commands fork()/exec() is used when possible, otherwise
+system() is used, which is a bit slower.  The output of ":version" includes
+|+fork| when fork()/exec() is used, |+system()| when system() is used.  This
+can be changed at compile time.
+(For forking of the GUI version see |gui-fork|).
+
+Because terminal updating under Unix is often slow (e.g. serial line
+terminal, shell window in suntools), the 'showcmd' and 'ruler' options
+are default off. If you have a fast terminal, try setting them on.  You might
+also want to set 'ttyfast'.
+
+When using Vim in an xterm the mouse clicks can be used by Vim by setting
+'mouse' to "a". If there is access to an X-server gui style copy/paste will
+be used and visual feedback will be provided while dragging with the mouse.
+If you then still want the xterm copy/paste with the mouse, press the shift
+key when using the mouse.  See |mouse-using|.  Visual feedback while dragging
+can also be achieved via the 'ttymouse' option if your xterm is new enough.
+
+							*terminal-colors*
+To use colors in Vim you can use the following example (if your terminal
+supports colors, but "T_Co" is empty or zero): >
+   :set t_me=^[[0;1;36m     " normal mode (undoes t_mr and t_md)
+   :set t_mr=^[[0;1;33;44m  " reverse (invert) mode
+   :set t_md=^[[1;33;41m    " bold mode
+   :set t_se=^[[1;36;40m    " standout end
+   :set t_so=^[[1;32;45m    " standout mode
+   :set t_ue=^[[0;1;36m     " underline end
+   :set t_us=^[[1;32m       " underline mode start
+[the ^[ is an <Esc>, type CTRL-V <Esc> to enter it]
+
+For real color terminals the ":highlight" command can be used.
+
+The file "tools/Vim132" is a shell script that can be used to put Vim in 132
+column mode on a vt100 and lookalikes.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_vms.txt b/runtime/doc/os_vms.txt
new file mode 100644
index 0000000..834b35b
--- /dev/null
+++ b/runtime/doc/os_vms.txt
@@ -0,0 +1,779 @@
+*os_vms.txt*    For Vim version 7.0aa.  Last change: 2004 May 16
+
+
+		  VIM REFERENCE MANUAL
+
+
+							*VMS* *vms*
+This file contains the particularities for the VMS version of Vim.
+You can reach this information file by typing :help VMS in Vim command
+prompt.
+
+ 1. Getting started	|vms-started|
+ 2. Download files	|vms-download|
+ 3. Compiling		|vms-compiling|
+ 4. Problems		|vms-problems|
+ 5. Deploy		|vms-deploy|
+ 6. Practical usage	|vms-usage|
+ 7. GUI mode questions	|vms-gui|
+ 8. Useful notes	|vms-notes|
+ 9. VMS related changes	|vms-changes|
+10. Authors		|vms-authors|
+
+==============================================================================
+
+1. Getting started					*vms-started*
+
+Vim (Vi IMproved) is a vi-compatible text editor that runs on nearly every
+operating system known to humanity.  Now use Vim on OpenVMS too, in character
+or X/Motif environment.  It is fully featured and absolutely compatible with
+Vim on other operating systems.
+
+==============================================================================
+
+2. Download files					*vms-download*
+
+You can download the Vim source code by ftp from the official Vim site:
+	ftp://ftp.vim.org/pub/vim/
+Or use one of the mirrors:
+	ftp://ftp.vim.org/pub/vim/MIRRORS
+
+You will need both the Unix and Extra archives to build vim.exe for VMS.
+For using Vim's full power you will need the runtime files as well.
+
+You can download precompiled executables from:
+	http://www.polarhome.com/vim/
+	ftp://ftp.polarhome.com/pub/vim/
+
+To use the precompiled binary version, you need one of these archives:
+
+  vim-XX-exe-alpha-gui.zip      Alpha GUI/Motif executables
+  vim-XX-exe-alpha-gtk.zip      Alpha GUI/GTK executables
+  vim-XX-exe-alpha-term.zip     Alpha console executables
+  vim-XX-exe-vax-gui.zip	VAX GUI executables
+  vim-XX-exe-vax-term.zip       VAX console executables
+
+and of course
+  vim-XX-runtime.zip		runtime files
+
+The binary archives contain: vim.exe, ctags.exe, xxd.exe, mms_vim.exe files.
+
+==============================================================================
+
+3. Compiling						*vms-compiling*
+
+See the file [.SRC]INSTALLVMS.TXT.
+
+==============================================================================
+
+4. Problems						*vms-problems*
+
+The code has been tested under Open VMS 6.2 - 7.3 on Alpha and VAX platforms
+with the DECC compiler. It should work without bigger problems.
+If it happened that your system does not have some include libraries you can
+tune up in OS_VMS_CONF.H file.
+
+If you decided to build Vim with +perl, +python, etc. options, first you need
+to download OpenVMS distributions of Perl and Python. Build and deploy the
+libraries and change adequate lines in MAKE_VMS.MMS file. There should not be
+problem from Vim side.
+
+Note: Under VAX it should work with DEC C compiler without problem. VAXC
+compiler is not fully ANSI C compatible in pre-processor directives
+semantics, therefore you have to use a converter program what will do the
+lion part of the job. For detailed instruction read file INSTALLvms.txt
+
+MMS_VIM.EXE is building together with VIM.EXE, but for XD.EXE you should
+change to subdirectory and build it separately.
+
+CTAGS is not part of Vim source distribution any more, however the OpenVMS
+specific source might contain CTAGS source files as it is described above.
+You can find more information about CTAGS on VMS at
+http://www.polarhome.com/ctags/
+
+Advanced users may try some acrobatics in FEATURE.H file also.
+
+It is possible to compile with +xfontset +xim options too, but then you have
+to set up GUI fonts etc. correctly. See. :help xim from Vim command prompt.
+
+You may want to use GUI with GTK icons, then you have to download and install
+GTK for OpenVMS or at least runtime shareable images - LIBGTK from
+polarhome.com
+
+For more advanced questions, please send your problem to Vim on VMS mailing
+list <vim-vms@polarhome.com>
+More about the vim-vms list can be found at:
+http://www.polarhome.com/mailman/listinfo/vim-vms
+
+==============================================================================
+
+5. Deploy						*vms-deploy*
+
+Vim uses a special directory structure to hold the document and runtime files:
+
+   vim (or wherever)
+    |- tmp
+    |- vim57
+    |----- doc
+    |----- syntax
+    |- vim60
+    |----- doc
+    |----- syntax
+    |- vim61
+    |----- doc
+    |----- syntax
+    vimrc    (system rc files)
+    gvimrc
+
+Use: >
+
+	define/nolog VIM	device:[path.vim]
+	define/nolog VIMRUNTIME device:[path.vim.vim60]
+	define/nolog TMP	device:[path.tmp]
+
+to get vim.exe to find its document, filetype, and syntax files, and to
+specify a directory where temporary files will be located. Copy the "runtime"
+subdirectory of the vim distribution to vimruntime.
+
+Logicals $VIMRUNTIME and $TMP are optional.
+
+If $VIMRUNTIME is not set, Vim will guess and try to set up automatically.
+Read more about at :help runtime
+
+If $TMP is not set, you will not be able to use some functions as CTAGS,
+XXD, printing etc. that use temporary directory for normal operation.
+$TMP directory should be readable and writable by the user(s).
+The easiest way to set up $TMP is to define logical: >
+
+	define/nolog TMP SYS$SCRATCH
+or as: >
+	define/nolog TMP SYS$LOGIN
+
+==============================================================================
+
+6. Practical usage					*vms-usage*
+
+Usually, you want to run just one version of Vim on your system, therefore
+it is enough to dedicate one directory for Vim.
+Copy all Vim runtime directory structure to the deployment position.
+Add the following lines to your LOGIN.COM (in SYS$LOGIN directory).
+Set up logical $VIM as: >
+
+	$ define VIM device:<path>
+
+Set up some symbols: >
+
+	$ ! vi starts Vim in chr. mode.
+	$ vi*m  :== mcr VIM:VIM.EXE
+
+	$ !gvi starts Vim in GUI mode.
+	$ gv*im :== spawn/nowait mcr VIM:VIM.EXE -g
+
+Please, check the notes for customization and configuration of symbols.
+
+You may want to create .vimrc and .gvimrc files in your home directory
+(SYS$LOGIN) to overwrite default settings.
+
+The easiest way is just rename example files. You may leave the menu file
+(MENU.VIM) and files vimrc and gvimrc in the original $VIM directory. It will
+be default setup for all users, and for users is enough just to have their
+own additions or resetting in home directory in files .vimrc and .gvimrc.
+It should work without problems.
+
+Note: Remember, system rc files (default for all users) does not have leading
+"." So, system rc files are: >
+
+	$VIM:vimrc
+	$VIM:gvimrc
+	$VIM:menu.vim
+
+and user's customized rc files are: >
+
+	sys$login:.vimrc
+	sys$login:.gvimrc
+
+You can check that everything is on the right place with the :version command.
+
+Example LOGIN.COM: >
+
+	$ define/nolog VIM RF10:[UTIL.VIM]
+	$ vi*m :== mcr VIM:VIM.EXE
+	$ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40
+	$ set disp/create/node=192.168.5.223/trans=tcpip
+
+Note: This set-up should be enough, if you are working on standalone server or
+clustered environment, but if you want to use Vim as internode editor in
+DECNET environment, it will satisfy you as well.
+You just have to define the "whole" path: >
+
+	$ define VIM "<server_name>[""user password""]::device:<path>"
+	$ vi*m :== "mcr VIM:VIM.EXE"
+
+as for example: >
+
+	$ define VIM "PLUTO::RF10:[UTIL.VIM]"
+	$ define VIM "PLUTO""ZAY mypass""::RF10:[UTIL.VIM]" ! if passwd required
+
+You can also use $VIMRUNTIME logical to point to proper version of Vim if you
+have installed more versions in the same time. If $VIMRUNTIME is not defined
+Vim will borrow value from $VIM logical. You can find more information about
+$VIMRUNTIME logical by typing :help runtime as a Vim command.
+
+System administrators might want to set up a system wide Vim installation,
+then add to the SYS$STARTUP:SYLOGICALS.COM >
+
+	$ define/nolog/sys VIM device:<path>
+	$ define/nolog/sys TMP SYS$SCRATCH
+
+and to the SYS$STARTUP:SYLOGIN.COM >
+
+	$ vi*m :== mcr VIM:VIM.EXE
+	$ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40
+
+
+It will set up normal Vim work environment for every user on the system.
+
+==============================================================================
+
+7. GUI mode questions					*vms-gui*
+
+OpenVMS in a real mainframe OS, therefore even if it has a GUI console, most of
+the users does not use a native X/Window environment during normal operation.
+It is not possible to start Vim in GUI mode "just like that". But anyhow it is
+not too complicate either.
+
+First of all: you will need an executable that is built with enabled GUI.
+
+Second: you need to have installed DECW/Motif on your VMS server, otherwise
+you will get errors that some shareable libraries are missing.
+
+Third: If you choose to run Vim with extra feature as GUI/GTK then you need
+GTK installation too or at least GTK runtime environment (LIBGTK etc.)
+
+1) If you are working on the VMS X/Motif console:
+   Start Vim with the command: >
+
+	$ mc device:<path>VIM.EXE -g
+<
+   or type :gui as a command to the Vim command prompt. For more info :help gui
+
+2) If you are working on other X/Window environment as Unix or some remote X
+   VMS console. Set up display to your host with: >
+
+	$ set disp/create/node=<your IP address>/trans=<transport-name>
+<
+   and start Vim as in point 1. You can find more help in VMS documentation or
+   type: help set disp in VMS prompt.
+   Examples: >
+
+	$ set disp/create/node=192.168.5.159		 ! default trans is DECnet
+	$ set disp/create/node=192.168.5.159/trans=tcpip ! TCP/IP network
+	$ set disp/create/node=192.168.5.159/trans=local ! display on the same node
+
+Note: you should define just one of these.
+For more information type $help set disp in VMS prompt.
+
+3) Another elegant solution is XDM if you have installed on OpenVMS box.
+   It is possible to work from XDM client as from GUI console.
+
+4) If you are working on MS Windows or other non X/Window environment
+   You need to set up one X server and run Vim as in point 2.
+   For MS Windows there are available free X servers as MIX , Omni X etc.
+   as well as excellent commercial products as eXcursion or ReflectionX with
+   buit in DEC support.
+
+Please note, that executables without GUI are slightly faster during startup
+then with enabled GUI in character mode. Therefore, if you do not use GUI
+features, it is worth to choose non GUI executables.
+
+==============================================================================
+
+8. Useful notes						*vms-notes*
+
+8.1 backspace/delete
+8.2 Filters
+8.3 VMS file version numbers
+8.4 Directory conversion
+8.5 Remote host invocation
+8.6 Terminal problems
+8.7 Hex-editing and other external tools
+8.8 Sourcing vimrc and gvimrc
+8.9 Printing from Vim
+8.10 Setting up the symbols
+8.11 diff and other GNU programs
+8.12 diff-mode
+8.13 Allow '$' in C keywords
+8.14 VIMTUTOR for beginners
+
+8.1 backspace/delete
+
+There are backspace/delete key inconsistencies with VMS.
+:fixdel doesn't do the trick, but the solution is: >
+
+	:inoremap ^? ^H		" for terminal mode
+	:inoremap <Del> ^H	" for gui mode
+
+Read more in ch: 8.6 (Terminal problems).
+(Bruce Hunsaker <BNHunsaker@chq.byu.edu> Vim 5.3)
+
+
+8.2 Filters
+
+Vim supports filters; ie. if you have a sort program that can handle
+input/output redirection like Unix (<infile >outfile), you could use >
+
+	:map \s 0!'aqsort<CR>
+
+(Charles E. Campbell, Jr. <cec@gryphon.gsfc.nasa.gov> Vim 5.4)
+
+
+8.3 VMS file version numbers
+
+Vim is saving files into a new file with the next higher file version
+number, try these settings. >
+
+	:set nobackup	     " does not create *.*_ backup files
+	:set nowritebackup   " does not have any purpose on VMS. It's default.
+
+Recovery is working perfect as well from the default swap file.
+Read more with :help swapfile
+
+(Claude Marinier <ClaudeMarinier@xwavesolutions.com> Vim 5.5, Zoltan Arpadffy
+Vim 5.6 )
+
+
+8.4 Directory conversion
+
+Vim will internally convert any unix-style paths and even mixed unix/VMS
+paths into VMS style paths. Some typical conversions resemble:
+
+	/abc/def/ghi		-> abc:[def]ghi.
+	/abc/def/ghi.j		-> abc:[def]ghi.j
+	/abc/def/ghi.j;2	-> abc:[def]ghi.j;2
+	/abc/def/ghi/jkl/mno	-> abc:[def.ghi.jkl]mno.
+	abc:[def.ghi]jkl/mno	-> abc:[def.ghi.jkl]mno.
+	  ./			-> current directory
+	  ../			-> relative parent directory
+	  [.def.ghi]		-> relative child directory
+	   ./def/ghi		-> relative child directory
+
+Note: You may use <,> brackets as well (device:<path>file.ext;version) as
+rf10:<user.zay.work>test.c;1
+
+(David Elins <delins@foliage.com>, Jerome Lauret
+<JLAURET@mail.chem.sunysb.edu> Vim 5.6 )
+
+
+8.5 Remote host invocation
+
+It is possible to use Vim as an internode editor.
+1. Edit some file from remote node: >
+
+	vi "<server>""username passwd""::<device>:<path><filename>;<version>"
+
+example: >
+	vi "pluto""zay passwd""::RF10:<USER.ZAY.WORK>TEST.C;1"
+
+Note: syntax is very important, otherwise VMS will recognize more parameters
+instead of one (resulting with: file not found)
+
+2.  Set up Vim as your internode editor. If Vim is not installed on your host,
+just set up your IP address, full Vim path including the server name and run
+the command procedure below: >
+
+	$ if (p1 .eqs. "") .OR. (p2 .eqs. "") then goto usage
+	$ set disp/create/node=<your_IP_here>/trans=tcpip
+	$ define "VIM "<vim_server>""''p1' ''p2'""::<device>:<vim_path>"
+	$  vi*m :== "mcr VIM:VIM.EXE"
+	$ gv*im :== "spawn/nowait mcr VIM:VIM.EXE -g"
+	$ goto end
+	$ usage:
+	$ write sys$output " Please enter username and password as a parameter."
+	$ write sys$output " Example: @SETVIM.COM username passwd"
+	$ end:
+
+Note: Never use it in clustered environment (you do not need it), and load could
+be very-very slow, but even faster then a local Emacs. :-)
+
+(Zoltan Arpadffy, Vim 5.6)
+
+
+8.6 Terminal problems
+
+If your terminal name is not known to Vim and it is trying to find the default
+one you will get the following message during start-up:
+---
+Terminal entry not found in termcap
+'unknown-terminal' not known. Available built-in terminals are:
+    builtin_gui
+    builtin_riscos
+    builtin_amiga
+    builtin_beos-ansi
+    builtin_ansi
+    builtin_vt320
+    builtin_vt52
+    builtin_pcansi
+    builtin_win32
+    builtin_xterm
+    builtin_iris-ansi
+    builtin_debug
+    builtin_dumb
+defaulting to 'vt320'
+---
+The solution is to define default terminal name: >
+
+	$ ! unknown terminal name. let us use vt320 or ansi instead.
+	$ ! Note: it's case sensitive
+	$ define term "vt320"
+
+Terminals from VT100 to VT320 (as V300, VT220, VT200 ) do not need any extra
+keyboard mappings. They should work perfect as they are, including arrows,
+Ins, Del buttons etc. Except Backspace in GUI mode. To solve it, add to
+.gvimrc: >
+
+	inoremap <Del> <BS>
+
+Vim will also recognize that they are fast terminals.
+
+If you have some annoying line jumping on the screen between windows add to
+your .vimrc file: >
+
+	set ttyfast	" set fast terminal
+
+Note: if you're using Vim on remote host or through very slow connection, it's
+recommended to avoid fast terminal option with: >
+
+	set nottyfast   " set terminal to slow mode
+
+(Zoltan Arpadffy, Vim 5.6)
+
+
+8.7 Hex-editing and other external tools
+
+A very important difference between OpenVMS and other systems is that VMS uses
+special commands to execute executables: >
+
+	RUN <path>filename
+	MCR <path>filename <parameters>
+
+OpenVMS users always have to be aware that the Vim command :! "just" drop them
+to DCL prompt. This feature is possible to use without any problem with all
+DCL commands, but if we want to execute some program as XXD, CTAGS, JTAGS etc.
+we're running into trouble if we following the Vim documentation (see: help
+xxd).
+
+Solution: Execute with the MC command and add the full path to the executable.
+Example: Instead of :%!xxd command use: >
+
+	:%!mc vim:xxd
+
+... or in general: >
+	:!mc <path>filename <parameters>
+
+Note: You can use XXD, and CTAGS from GUI menu.
+
+To customize ctags it is possible to define logical $CTAGS with standard
+parameters as: >
+
+	define/nolog CTAGS "--totals -o sys$login:tags"
+
+For additional information, please read :help tagsearch and CTAGS
+documentation at http://ctags.sourceforge.net/ctags.html.
+
+(Zoltan Arpadffy, Vim 5.6-70)
+
+
+8.8 Sourcing vimrc and gvimrc
+
+If you want to use your .vimrc and .gvimrc from other platforms (e.g. Windows)
+you can get in trouble if you ftp that file(s): VMS has different end-of-line
+indication.
+The symptom is that ViM is not sourcing your .vimrc/.gvimrc, even if you say:
+>
+	:so sys$login:.vimrc
+
+One trick is to compress (e.g. zip) the files on the other platform and
+uncompress it on VMS; if you have the same symptom, try to create the files
+with copy-paste (for this you need both op. systems reachable from one
+machine, e.g. an Xterm on Windows or telnet to Windows from VMS).
+
+(Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> Vim 6.0a)
+
+
+8.9 Printing from Vim
+
+To be able to print from Vim (running in GUI mode) under VMS you have to set
+up $TMP logical which should point to some temporary directory and logical
+SYS$PRINT to your default print queue.
+Example: >
+
+	$define SYS$PRINT HP5ANSI
+
+You can print out whole buffer or just the marked area.
+More info under :help hardcopy
+
+(Zoltan Arpadffy, Vim 6.0c)
+
+
+8.10 Setting up the symbols
+
+When I use GVIM this way and press CTRL-Y in the parent terminal, gvim exits.
+I now use a different symbol that seems to work OK and fixes the problem.
+I suggest this instead: >
+
+	$ GV*IM:==SPAWN/NOWAIT/INPUT=NLA0: MCR VIM:VIM.EXE -G -GEOMETRY 80X40
+
+The /INPUT=NLA0: separates the standard input of the gvim process from the
+parent terminal, to block signals from the parent window.
+Without the -GEOMETRY, the GVIM window size will be minimal and the menu
+will be confused after a window-resize.
+
+(Carlo Mekenkamp, Coen Engelbarts, Vim 6.0ac)
+
+
+8.11 diff and other GNU programs
+
+From 6.0 diff functionality has been implemented, but OpenVMS does not use
+GNU/Unix like diff therefore built in diff does not work.
+There is a simple solution to solve this anomaly. Install an Unix like diff
+and Vim will work perfect in diff mode too. You just have to redefine your
+diff program as: >
+
+	define /nolog diff <GNU_PATH>diff.exe
+
+Another, more sophisticated solution is described below (8.12 diff-mode)
+There are some other programs as patch, make etc that may cause same problems.
+At www.polarhome.com is possible to download an GNU package for Alpha and VAX
+boxes that is meant to solve GNU problems on OpenVMS.
+( Zoltan Arpadffy, Vim 6.1)
+
+
+8.12 diff-mode
+
+Vim 6.0 and higher supports vim diff-mode (See |new-diff-mode|, |diff-mode|
+and |08.7|). This uses the external program 'diff' and expects a Unix-like
+output format from diff. The standard VMS diff has a different output
+format. To use vim on VMS in diff-mode, you need to:
+    1 Install a Unix-like diff program, e.g. GNU diff
+    2 Tell vim to use the Unix-like diff for diff-mode.
+
+You can download GNU diff from the VIM-VMS website, it is one of the GNU
+tools in http://www.polarhome.com/vim/files/gnu_tools.zip. I suggest to
+unpack it in a separate directory "GNU" and create a logical GNU: that
+points to that directory. e.g: >
+
+   DEFINE GNU    <DISK>:[<DIRECTORY>.BIN.GNU]
+
+You may also want to define a symbol GDIFF, to use the GNU diff from the DCL
+prompt: >
+
+   GDIFF :==     $GNU:DIFF.EXE
+
+Now you need to tell vim to use the new diff program. Take the example
+settings from |diff-diffexpr| and change the call to the external diff
+program to the new diff on VMS. Add this to your .vimrc file: >
+
+     " Set up vimdiff options
+       if v:version >= 600
+	" Use GNU diff on VMS
+	set diffexpr=MyDiff()
+	function MyDiff()
+	   let opt = ""
+	   if &diffopt =~ "icase"
+	     let opt = opt . "-i "
+	   endif
+	   if &diffopt =~ "iwhite"
+	     let opt = opt . "-b "
+	   endif
+	   silent execute "!mc GNU:diff.exe -a " . opt . v:fname_in . " " .  v:fname_new .
+		\  " > " . v:fname_out
+	endfunction
+      endif
+
+You can now use vim in diff-mode, e.g. to compare two files in read-only
+mode: >
+
+    $ VIM -D/R <FILE1> <FILE2>
+
+You can also define new symbols for vimdiff, e.g.: >
+
+    $ VIMDIFF     :== 'VIM' -D/R
+    $ GVIMDIFF    :== 'GVIM' -D/R
+
+You can now compare files in 4 ways: >
+
+    1. VMS  diff:  $ DIFF     <FILE1> <FILE2>
+    2. GNU  diff:  $ GDIFF    <FILE1> <FILE2>
+    3. VIM  diff:  $ VIMDIFF  <FILE1> <FILE2>
+    4. GVIM diff:  $ GVIMDIFF <FILE1> <FILE2>
+
+( Coen Engelbarts, Vim 6.1)
+
+
+8.13 Allow '$' in C keywords
+
+DEC C uses many identifiers with '$' in them. This is not allowed in ANSI C,
+and vim recognises the '$' as the end of the identifier. You can change this
+with the |iskeyword|command.
+Add this command to your .vimrc file: >
+
+    autocmd FileType c,cpp,cs  set iskeyword+=$
+
+You can also create the file(s) $VIM/FTPLUGIN/C.VIM (and/or CPP.VIM and
+CS.VIM) and add this command: >
+
+	set iskeyword+=$
+
+Now word-based commands, e.g. the '*'-search-command and the CTRL-]
+tag-lookup, work on the whole identifier. (Ctags on VMS also supports '$' in
+C keywords since ctags version 5.1.)
+
+( Coen Engelbarts, Vim 6.1)
+
+8.14 VIMTUTOR for beginners
+
+It exits VIMTUTOR.COM DCL script that can help Vim beginners to learn/make
+first steps with Vim on OpenVMS. Depending of binary distribution you may start
+it with: >
+
+	@vim:vimtutor
+
+(Thomas.R.Wyant III, Vim 6.1)
+
+==============================================================================
+
+9. VMS related changes					*vms-changes*
+
+Version 6.3 (2004 May 10)
+- Improved vms_read function
+- CTAGS v5.5.4 included
+- Documentation corrected and updated
+
+Version 6.2 (2003 May 7)
+- Corrected VMS system call results
+- Low level character input is rewritten
+- Correction in tag and quickfix handling
+- First GTK build
+- Make file changes
+    - GTK feature added
+    - Define for OLD_VMS
+    - OpenVMS version 6.2 or older
+- Documentation updated with GTK features
+- CTAGS v5.5 included
+- VMS VIM tutor created
+
+Version 6.1 (2002 Mar 25)
+- TCL init_tcl() problem fixed
+- CTAGS v5.4 included
+- GNU tools binaries for OpenVMS
+- Make file changes
+    - PERL, PYTHON and TCL support improved
+    - InstallVMS.txt has a detailed description HOWTO build
+- VMS/Unix file handling rewritten
+- Minor casting and bug fixes
+
+Version 6.0 (2001 Sep 28)
+- Unix and VMS code has been merged
+	- separated "really" VMS related code
+	- included all possible Unix functionality
+	- simplified or deleted the configuration files
+	- makefile MAKE_VMS.MMS reviewed
+- menu changes (fixed printing, CTAGS and XXD usage)
+- fixed variable RMS record format handling anomaly
+- corrected syntax, ftplugin etc files load
+- changed expand_wildcards and expandpath functions to work more general
+- created OS_VMS_FILTER.COM - DECC->VAXC pre-processor directive convert
+  script.
+- Improved code's VAXC and new DECC compilers compatibility
+- changed quickfix parameters:
+	- errormessage format to suite DECC
+	- search, make and other commands to suite VMS system
+- updated and renamed MMS make files for Vim and CTAGS.
+- CTAGS has been removed from source distribution of Vim but it will remain
+  in OpenVMS binary distributions.
+- simplified build/configuration procedure
+- created INSTALLvms.txt - detailed compiling instructions under VMS.
+- updated test scripts.
+
+Version 5.8 (2001 Jun 1)
+- OS_VMS.TXT updated with new features.
+- other minor fixes.
+- documentation updated
+- this version had been tested much more than any other OpenVMS version
+  earlier
+
+Version 5.7 (2000 Jun 24)
+- New CTAGS v5.0 in distribution
+- Documentation updated
+
+Version 5.6 (2000 Jan 17)
+- VMS filename related changes:
+	- version handling (open everything, save to new version)
+	- correct file extension matching for syntax (version problem)
+	- handle <,> characters and passwords in directory definition
+	- handle internode/remote invocation and editing with passwords
+	- OpenVMS files will be treated case insensitive from now
+	- corrected response of expand("%:.") etc path related functions
+	(in one word: VMS directory handling internally)
+- version command
+	- corrected (+,-) information data
+	- added compiler and OS version
+	- added user and host information
+	- resolving $VIM and $VIMRUNTIME logicals
+- VMS port is in MAX_FEAT (maximum features) club with Unix, Win32 and OS/2.
+	- enabled farsi, rightleft etc. features
+	- undo level raised up to 1000
+- Updated OS_VMS.MMS file.
+	- maximum features ON is default
+	- Vim is compilable with +perl, +python and +tcl features.
+	- improved MMK compatibility
+- Created MAKEFILE_VMS.MMS, makefile for testing Vim during development.
+- Defined DEC terminal VT320
+	- compatibility for VT3*0, VT2*0 and VT1*0 - ANSI terminals
+	  backwards, but not VT340 and newer with colour capability.
+	- VT320 is default terminal for OpenVMS
+	- these new terminals are also fast ttys (default for OpenVMS).
+	- allowed dec_mouse ttym
+- Updated files vimrc and gvimrc with VMS specific suggestions.
+- OS_VMS.TXT updated with new features.
+
+Version 5.5 (1999 Dec 3)
+- Popup menu line crash corrected.
+- Handle full file names with version numbers.
+- Directory handling (CD command etc.)
+- Corrected file name conversion VMS to Unix and v.v.
+- Correct response of expand wildcards
+- Recovery is working from this version under VMS as well.
+- Improved terminal and signal handing.
+- Improved OS_VMS.TXT
+
+Version 5.4 (1999 Sep 9)
+- Cut and paste mismatch corrected.
+- Motif directories during open and save are corrected.
+
+Version 5.3 (1998 Oct 12)
+- Minor changes in the code
+- Standard distribution with +GUI option
+
+Version 5.1 (1998 Apr 21)
+- Syntax and DEC C changes in the code
+- Fixing problems with the /doc subdirectory
+- Improve OS_VMS.MMS
+
+Version 4.5 (1996 Dec 16)
+- First VMS port by Henk Elbers <henk@xs4all.nl>
+
+==============================================================================
+
+10. Authors						*vms-authors*
+
+OpenVMS documentation and executables are maintained by:
+Zoltan Arpadffy <arpadffy@polarhome.com>
+
+This document uses parts and remarks from earlier authors and contributors
+of OS_VMS.TXT:
+	Charles E. Campbell, Jr. <cec@gryphon.gsfc.nasa.gov>
+	Bruce Hunsaker <BNHunsaker@chq.byu.edu>
+	Sandor Kopanyi <sandor.kopanyi@mailbox.hu>
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_win32.txt b/runtime/doc/os_win32.txt
new file mode 100644
index 0000000..29d7096
--- /dev/null
+++ b/runtime/doc/os_win32.txt
@@ -0,0 +1,319 @@
+*os_win32.txt*  For Vim version 7.0aa.  Last change: 2004 May 01
+
+
+		  VIM REFERENCE MANUAL    by George Reilly
+
+
+						*win32* *Win32* *MS-Windows*
+This file documents the idiosyncrasies of the Win32 version of Vim.
+
+The Win32 version of Vim works on both Windows NT and Windows 95.  There are
+both console and GUI versions.  There is GUI version for use in the Win32s
+subsystem in Windows 3.1[1].  You can also use the 32-bit DOS version of Vim
+instead.  See |os_msdos.txt|.
+
+1. Known problems		|win32-problems|
+2. Startup			|win32-startup|
+3. Restore screen contents	|win32-restore|
+4. Using the mouse		|win32-mouse|
+5. Running under Windows 3.1	|win32-win3.1|
+6. Win32 mini FAQ		|win32-faq|
+
+Additionally, there are a number of common Win32 and DOS items:
+File locations			|dos-locations|
+Using backslashes		|dos-backslash|
+Standard mappings		|dos-standard-mappings|
+Screen output and colors	|dos-colors|
+File formats			|dos-file-formats|
+:cd command			|dos-:cd|
+Interrupting			|dos-CTRL-Break|
+Temp files			|dos-temp-files|
+Shell option default		|dos-shell|
+
+Win32 GUI			|gui-w32|
+
+Credits:
+The Win32 version was written by George V. Reilly <george@reilly.org>.
+The original Windows NT port was done by Roger Knobbe <RogerK@wonderware.com>.
+The GUI version was made by George V. Reilly and Robert Webb.
+
+For compiling see "src/INSTALL.pc".			*win32-compiling*
+
+==============================================================================
+1. Known problems				*windows95* *win32-problems*
+
+There are a few known problems with running in a console on Windows 95.  As
+far as we know, this is the same in Windows 98 and Windows ME.
+
+Comments from somebody working at Microsoft: "Win95 console support has always
+been and will always be flaky".
+1.  Dead key support doesn't work.
+2.  Resizing the window with ":set columns=nn lines=nn" works, but executing
+    external commands MAY CAUSE THE SYSTEM TO HANG OR CRASH.
+3.  Screen updating is slow, unless you change 'columns' or 'lines' to a
+    non-DOS value.  But then the second problem applies!
+
+If this bothers you, use the 32 bit MS-DOS version or the Win32 GUI version.
+
+When doing file name completion, Vim also finds matches for the short file
+name.  But Vim will still find and use the corresponding long file name.  For
+example, if you have the long file name "this_is_a_test" with the short file
+name "this_i~1", the command ":e *1" will start editing "this_is_a_test".
+
+==============================================================================
+2. Startup						*win32-startup*
+
+Current directory					*win32-curdir*
+
+If Vim is started with a single file name argument, and it has a full path
+(starts with "x:\"), Vim assumes it was started from the file explorer and
+will set the current directory to where that file is.  To avoid this when
+typing a command to start Vim, use a forward slash instead of a backslash.
+Example: >
+
+	vim c:\text\files\foo.txt
+
+Will change to the "C:\text\files" directory. >
+
+	vim c:/text\files\foo.txt
+
+Will use the current directory.
+
+
+Term option						*win32-term*
+
+The only kind of terminal type that the Win32 version of Vim understands is
+"win32", which is built-in.  If you set 'term' to anything else, you will
+probably get very strange behavior from Vim.  Therefore Vim does not obtain
+the default value of 'term' from the environment variable "TERM".
+
+==============================================================================
+3. Restore screen contents				*win32-restore*
+
+When 'restorescreen' is set (which is the default), Vim will restore the
+original contents of the console when exiting or when executing external
+commands.  If you don't want this, use ":set nors".	|'restorescreen'|
+
+==============================================================================
+4. Using the mouse					*win32-mouse*
+
+The Win32 version of Vim supports using the mouse.  If you have a two-button
+mouse, the middle button can be emulated by pressing both left and right
+buttons simultaneously - but note that in the Win32 GUI, if you have the right
+mouse button pop-up menu enabled (see 'mouse'), you should err on the side of
+pressing the left button first.				|mouse-using|
+
+When the mouse doesn't work, try disabling the "Quick Edit Mode" feature of
+the console.
+
+==============================================================================
+5. Running under Windows 3.1				*win32-win3.1*
+
+						*win32s* *windows-3.1*
+There is a special version of Gvim that runs under Windows 3.1 and 3.11.  You
+need the gvim.exe that was compiled with Visual C++ 4.1.
+
+To run the Win32 version under Windows 3.1, you need to install Win32s.  You
+might have it already from another Win32 application which you have installed.
+If Vim doesn't seem to be running properly, get the latest version: 1.30c.
+You can find it at:
+
+	http://support.microsoft.com/download/support/mslfiles/pw1118.exe
+
+(Microsoft moved it again, we don't know where it is now :-( ).
+
+The reason for having two versions of gvim.exe is that the Win32s version was
+compiled with VC++ 4.1.  This is the last version of VC++ that supports Win32s
+programs.  VC++ 5.0 is better, so that one was used for the Win32 version.
+Apart from that, there is no difference between the programs.  If you are in a
+mixed environment, you can use the gvim.exe for Win32s on both.
+
+The Win32s version works the same way as the Win32 version under 95/NT.  When
+running under Win32s the following differences apply:
+- You cannot use long file names, because Windows 3.1 doesn't support them!
+- When executing an external command, it doesn't return an exit code.  After
+  doing ":make" you have to do ":cn" yourself.
+
+==============================================================================
+6. Win32 mini FAQ					*win32-faq*
+
+Q. Why does the Win32 version of Vim update the screen so slowly on Windows 95?
+A. The support for Win32 console mode applications is very buggy in Win95.
+   For some unknown reason, the screen updates very slowly when Vim is run at
+   one of the standard resolutions (80x25, 80x43, or 80x50) and the 16-bit DOS
+   version updates the screen much more quickly than the Win32 version.
+   However, if the screen is set to some other resolution, such as by ":set
+   columns=100" or ":set lines=40", screen updating becomes about as fast as
+   it is with the 16-bit version.
+
+   WARNING: Changing 'columns' may make Windows 95 crash while updating the
+   window (complaints --> Microsoft).  Since this mostly works, this has not
+   been disabled, but be careful with changing 'columns'.
+
+   Changing the screen resolution makes updates faster, but it brings
+   additional problems.  External commands (e.g., ":!dir") can cause Vim to
+   freeze when the screen is set to a non-standard resolution, particularly
+   when 'columns' is not equal to 80.  It is not possible for Vim to reliably
+   set the screen resolution back to the value it had upon startup before
+   running external commands, so if you change the number of 'lines' or
+   'columns', be very, very careful.  In fact, Vim will not allow you to
+   execute external commands when 'columns' is not equal to 80, because it is
+   so likely to freeze up afterwards.
+
+   None of the above applies on Windows NT.  Screen updates are fast, no
+   matter how many 'lines' or 'columns' the window has, and external commands
+   do not cause Vim to freeze.
+
+Q. So if the Win32 version updates the screen so slowly on Windows 95 and the
+   16-bit DOS version updates the screen quickly, why would I want to run the
+   Win32 version?
+A. Firstly, the Win32 version isn't that slow, especially when the screen is
+   set to some non-standard number of 'lines' or 'columns'.  Secondly, the
+   16-bit DOS version has some severe limitations: It can't do big changes and
+   it doesn't know about long file names.  The Win32 version doesn't have these
+   limitations and it's faster overall (the same is true for the 32-bit DJGPP
+   DOS version of Vim).  The Win32 version is smarter about handling the
+   screen, the mouse, and the keyboard than the DJGPP version is.
+
+Q. And what about the 16-bit DOS version versus the Win32 version on NT?
+A. There are no good reasons to run the 16-bit DOS version on NT.  The Win32
+   version updates the screen just as fast as the 16-bit version does when
+   running on NT.  All of the above disadvantages apply.  Finally, DOS
+   applications can take a long time to start up and will run more slowly.  On
+   non-Intel NT platforms, the DOS version is almost unusably slow, because it
+   runs on top of an 80x86 emulator.
+
+Q. How do I change the font?
+A. In the GUI version, you can use the 'guifont' option.
+   In the console version, you need to set the font of the console itself.
+   You cannot do this from within Vim.
+
+Q. When I change the size of the console window with ':set lines=xx' or
+   similar, the font changes! (Win95)
+A. You have the console font set to 'Auto' in Vim's (or your MS-DOS prompt's)
+   properties. This makes W95 guess (badly!) what font is best. Set an explicit
+   font instead.
+
+Q. Why can't I paste into Vim when running Windows 95?
+A. In the properties dialog box for the MS-DOS window, go to "MS-DOS
+   Prompt/Misc/Fast pasting" and make sure that it is NOT checked.  You should
+   also do ":set paste" in Vim to avoid unexpected effects.	|'paste'|
+
+Q. How do I type dead keys on Windows 95, in the console version?
+   (A dead key is an accent key, such as acute, grave, or umlaut, that doesn't
+   produce a character by itself, but when followed by another key, produces
+   an accented character, such as a-acute, e-grave, u-umlaut, n-tilde, and so
+   on.  Very useful for most European languages.  English-language keyboard
+   layouts don't use dead keys, as far as we know.)
+A. You don't.  The console mode input routines simply do not work correctly in
+   Windows 95, and I have not been able to work around them.  In the words
+   of a senior developer at Microsoft:
+	Win95 console support has always been and will always be flaky.
+
+	The flakiness is unavoidable because we are stuck between the world of
+	MS-DOS keyboard TSRs like KEYB (which wants to cook the data;
+	important for international) and the world of Win32.
+
+	So keys that don't "exist" in MS-DOS land (like dead keys) have a
+	very tenuous existence in Win32 console land.  Keys that act
+	differently between MS-DOS land and Win32 console land (like
+	capslock) will act flaky.
+
+	Don't even _mention_ the problems with multiple language keyboard
+	layouts...
+
+   You may be able to fashion some sort of workaround with the digraphs
+   mechanism.							|digraphs|
+
+   The best solution is to use the Win32 GUI version gvim.exe.  Alternatively,
+   you can try one of the DOS versions of Vim where dead keys reportedly do
+   work.
+
+Q. How do I type dead keys on Windows NT?
+A. Dead keys work on NT 3.51.  Just type them as you would in any other
+   application.
+   On NT 4.0, you need to make sure that the default locale (set in the
+   Keyboard part of the Control Panel) is the same as the currently active
+   locale.  Otherwise the NT code will get confused and crash!  This is a NT
+   4.0 problem, not really a Vim problem.
+
+Q. I'm using Vim to edit a symbolically linked file on a Unix NFS file server.
+   When I write the file, Vim does not "write through" the symlink.  Instead,
+   it deletes the symbolic link and creates a new file in its place.  Why?
+A. On Unix, Vim is prepared for links (symbolic or hard).  A backup copy of
+   the original file is made and then the original file is overwritten.  This
+   assures that all properties of the file remain the same.  On non-Unix
+   systems, the original file is renamed and a new file is written.  Only the
+   protection bits are set like the original file.  However, this doesn't work
+   properly when working on an NFS-mounted file system where links and other
+   things exist.  The only way to fix this in the current version is not
+   making a backup file, by ":set nobackup nowritebackup"     |'writebackup'|
+
+Q. How do I get to see the output of ":make" while it's running?
+A. Basically what you need is to put a tee program that will copy its input
+   (the output from make) to both stdout and to the errorfile.  You can find a
+   copy of tee (and a number of other GNU tools tools) at
+   http://gnuwin32.sourceforge.net or http://unxutils.sourceforge.net
+   Alternatively, try the more recent Cygnus version of the GNU tools at
+   http://www.cygwin.com  Other Unix-style tools for Win32 are listed at
+   http://directory.google.com/Top/Computers/Software/Operating_Systems/Unix/Win32/
+   When you do get a copy of tee, you'll need to add >
+	:set shellpipe=\|\ tee
+<  to your _vimrc.
+
+Q. I'm storing files on a remote machine that works with VisionFS, and files
+   disappear!
+A. VisionFS can't handle certain dot (.) three letter extension file names.
+   SCO declares this behavior required for backwards compatibility with 16bit
+   DOS/Windows environments.  The two commands below demonstrate the behavior:
+>
+	echo Hello > file.bat~ 
+	dir > file.bat
+<
+   The result is that the "dir" command updates the "file.bat~" file, instead
+   of creating a new "file.bat" file. This same behavior is exhibited in Vim
+   when editing an existing file named "foo.bat" because the default behavior
+   of Vim is to create a temporary file with a '~' character appended to the
+   name.  When the file is written, it winds up being deleted.
+
+   Solution: Add this command to your _vimrc file: >
+	:set backupext=.temporary
+
+Q. How do I change the blink rate of the cursor?
+A. You can't!  This is a limitation of the NT console.  NT 5.0 is reported to
+   be able to set the blink rate for all console windows at the same time.
+
+							*:!start*
+Q. How can I run an external command or program asynchronously?
+A. When using :! to run an external command, you can run it with "start": >
+	:!start winfile.exe<CR>
+<  Using "start" stops Vim switching to another screen, opening a new console,
+   or waiting for the program to complete; it indicates that you are running a
+   program that does not effect the files you are editing.  Programs begun
+   with :!start do not get passed Vim's open file handles, which means they do
+   not have to be closed before Vim.
+   To avoid this special treatment, use ":! start".
+
+Q. I'm using Win32s, and when I try to run an external command like "make",
+   Vim doesn't wait for it to finish! Help!
+A. The problem is that a 32-bit application (Vim) can't get notification from
+   Windows that a 16-bit application (your DOS session) has finished. Vim
+   includes a work-around for this, but you must set up your DOS commands to
+   run in a window, not full-screen. Unfortunately the default when you
+   install Windows is full-screen. To change this:
+   1) Start PIF editor (in the Main program group)
+   2) Open the file "_DEFAULT.PIF" in your Windows directory.
+   3) Changes the display option from "Full Screen" to "Windowed".
+   4) Save and exit.
+
+   To test, start Vim and type >
+	:!dir C:\<CR>".
+<  You should see a DOS box window appear briefly with the directory listing.
+
+Q. I use Vim under Win32s and NT. In NT, I can define the console to default to
+   50 lines, so that I get a 80x50 shell when I ':sh'. Can I do the same in
+   W3.1x, or am I stuck with 80x25?
+A. Edit SYSTEM.INI and add 'ScreenLines=50' to the [NonWindowsApp] section. DOS
+   prompts and external DOS commands will now run in a 50-line window.
+
+ vim:tw=78:fo=tcq2:ts=8:ft=help:norl:
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
new file mode 100644
index 0000000..caa5a00
--- /dev/null
+++ b/runtime/doc/pattern.txt
@@ -0,0 +1,1146 @@
+*pattern.txt*   For Vim version 7.0aa.  Last change: 2004 May 09
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Patterns and search commands				*pattern-searches*
+
+The very basics can be found in section |03.9| of the user manual.  A few more
+explanations are in chapter 27 |usr_27.txt|.
+
+1. Search commands		|search-commands|
+2. The definition of a pattern	|search-pattern|
+3. Magic			|/magic|
+4. Overview of pattern items	|pattern-overview|
+5. Multi items			|pattern-multi-items|
+6. Ordinary atoms		|pattern-atoms|
+7. Ignoring case in a pattern	|/ignorecase|
+8. Compare with Perl patterns	|perl-patterns|
+9. Highlighting matches		|match-highlight|
+
+==============================================================================
+1. Search commands				*search-commands* *E486*
+
+							*/*
+/{pattern}[/]<CR>	Search forward for the [count]'th occurrence of
+			{pattern} |exclusive|.
+
+/{pattern}/{offset}<CR>	Search forward for the [count]'th occurrence of
+			{pattern} and go |{offset}| lines up or down.
+			|linewise|.
+
+							*/<CR>*
+/<CR>			Search forward for the [count]'th latest used
+			pattern |last-pattern| with latest used |{offset}|.
+
+//{offset}<CR>		Search forward for the [count]'th latest used
+			pattern |last-pattern| with new |{offset}|.  If
+			{offset} is empty no offset is used.
+
+							*?*
+?{pattern}[?]<CR>	Search backward for the [count]'th previous
+			occurrence of {pattern} |exclusive|.
+
+?{pattern}?{offset}<CR>	Search backward for the [count]'th previous
+			occurrence of {pattern} and go |{offset}| lines up or
+			down |linewise|.
+
+							*?<CR>*
+?<CR>			Search backward for the [count]'th latest used
+			pattern |last-pattern| with latest used |{offset}|.
+
+??{offset}<CR>		Search backward for the [count]'th latest used
+			pattern |last-pattern| with new |{offset}|.  If
+			{offset} is empty no offset is used.
+
+							*n*
+n			Repeat the latest "/" or "?" [count] times.
+			|last-pattern| {Vi: no count}
+
+							*N*
+N			Repeat the latest "/" or "?" [count] times in
+			opposite direction. |last-pattern| {Vi: no count}
+
+							*star* *E348* *E349*
+*			Search forward for the [count]'th occurrence of the
+			word nearest to the cursor.  The word used for the
+			search is the first of:
+				1. the keyword under the cursor |'iskeyword'|
+				2. the first keyword after the cursor, in the
+				   current line
+				3. the non-blank word under the cursor
+				4. the first non-blank word after the cursor,
+				   in the current line
+			Only whole keywords are searched for, like with the
+			command "/\<keyword\>".  |exclusive|  {not in Vi}
+			'ignorecase' is used, 'smartcase' is not.
+
+							*#*
+#			Same as "*", but search backward.  The pound sign
+			(character 163) also works.  If the "#" key works as
+			backspace, try using "stty erase <BS>" before starting
+			Vim (<BS> is CTRL-H or a real backspace).  {not in Vi}
+
+							*gstar*
+g*			Like "*", but don't put "\<" and "\>" around the word.
+			This makes the search also find matches that are not a
+			whole word.  {not in Vi}
+
+							*g#*
+g#			Like "#", but don't put "\<" and "\>" around the word.
+			This makes the search also find matches that are not a
+			whole word.  {not in Vi}
+
+							*gd*
+gd			Goto local Declaration.  When the cursor is on a local
+			variable, this command will jump to its declaration.
+			First Vim searches for the start of the current
+			function, just like "[[".  If it is not found the
+			search stops in line 1.  If it is found, Vim goes back
+			until a blank line is found.  From this position Vim
+			searches for the keyword under the cursor, like with
+			"*", but lines that look like a comment are ignored
+			(see 'comments' option).
+			Note that this is not guaranteed to work, Vim does not
+			really check the syntax, it only searches for a match
+			with the keyword.  If included files also need to be
+			searched use the commands listed in |include-search|.
+			After this command |n| searches forward for the next
+			match (not backward).
+			{not in Vi}
+
+							*gD*
+gD			Goto global Declaration.  When the cursor is on a
+			global variable that is defined in the file, this
+			command will jump to its declaration.  This works just
+			like "gd", except that the search for the keyword
+			always starts in line 1.  {not in Vi}
+
+							*CTRL-C*
+CTRL-C			Interrupt current (search) command.  Use CTRL-Break on
+			MS-DOS |dos-CTRL-Break|.
+			In Normal mode, any pending command is aborted.
+
+							*:noh* *:nohlsearch*
+:noh[lsearch]		Stop the highlighting for the 'hlsearch' option.  It
+			is automatically turned back on when using a search
+			command, or setting the 'hlsearch' option.
+			This command doesn't work in an autocommand, because
+			the highlighting state is saved and restored when
+			executing autocommands |autocmd-searchpat|.
+
+While typing the search pattern the current match will be shown if the
+'incsearch' option is on.  Remember that you still have to finish the search
+command with <CR> to actually position the cursor at the displayed match.  Or
+use <Esc> to abandon the search.
+
+All matches for the last used search pattern will be highlighted if you set
+the 'hlsearch' option.  This can be suspended with the |:nohlsearch| command.
+
+					*search-offset* *{offset}*
+These commands search for the specified pattern.  With "/" and "?" an
+additional offset may be given.  There are two types of offsets: line offsets
+and character offsets.  {the character offsets are not in Vi}
+
+The offset gives the cursor position relative to the found match:
+    [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)
+
+If a '-' or '+' is given but [num] is omitted, a count of one will be used.
+When including an offset with 'e', the search becomes inclusive (the
+character the cursor lands on is included in operations).
+
+Examples:
+
+pattern			cursor position	~
+/test/+1		one line below "test", in column 1
+/test/e			on the last t of "test"
+/test/s+2		on the 's' of "test"
+/test/b-3		three characters before "test"
+
+If one of these commands is used after an operator, the characters between
+the cursor position before and after the search is affected.  However, if a
+line offset is given, the whole lines between the two cursor positions are
+affected.
+
+An example of how to search for matches with a pattern and change the match
+with another word: >
+	/foo<CR>	find "foo"
+	c//e		change until end of match
+	bar<Esc>	type replacement
+	//<CR>		go to start of next match
+	c//e		change until end of match
+	beep<Esc>	type another replacement
+			etc.
+<
+							*//;* *E386*
+A very special offset is ';' followed by another search command.  For example: >
+
+   /test 1/;/test
+   /test.*/+1;?ing?
+
+The first one first finds the next occurrence of "test 1", and then the first
+occurrence of "test" after that.
+
+This is like executing two search commands after each other, except that:
+- It can be used as a single motion command after an operator.
+- The direction for a following "n" or "N" command comes from the first
+  search command.
+- When an error occurs the cursor is not moved at all.
+
+							*last-pattern*
+The last used pattern and offset are remembered.  They can be used to repeat
+the search, possibly in another direction or with another count.  Note that
+two patterns are remembered: One for 'normal' search commands and one for the
+substitute command ":s".  Each time an empty pattern is given, the previously
+used pattern is used.
+
+The 'magic' option sticks with the last used pattern.  If you change 'magic',
+this will not change how the last used pattern will be interpreted.
+The 'ignorecase' option does not do this.  When 'ignorecase' is changed, it
+will result in the pattern to match other text.
+
+All matches for the last used search pattern will be highlighted if you set
+the 'hlsearch' option.
+
+To clear the last used search pattern: >
+	:let @/ = ""
+This will not set the pattern to an empty string, because that would match
+everywhere.  The pattern is really cleared, like when starting Vim.
+
+The search usual skips matches that don't move the cursor.  Whether the next
+match is found at the next character or after the skipped match depends on the
+'c' flag in 'cpoptions'.  See |cpo-c|.
+	   with 'c' flag:   "/..." advances 1 to 3 characters
+	without 'c' flag:   "/..." advances 1 character
+The unpredictability with the 'c' flag is caused by starting the search in the
+first column, skipping matches until one is found past the cursor position.
+
+In Vi the ":tag" command sets the last search pattern when the tag is searched
+for.  In Vim this is not done, the previous search pattern is still remembered,
+unless the 't' flag is present in 'cpoptions'.  The search pattern is always
+put in the search history.
+
+If the 'wrapscan' option is on (which is the default), searches wrap around
+the end of the buffer.  If 'wrapscan' is not set, the backward search stops
+at the beginning and the forward search stops at the end of the buffer.  If
+'wrapscan' is set and the pattern was not found the error message "pattern
+not found" is given, and the cursor will not be moved.  If 'wrapscan' is not
+set the message becomes "search hit BOTTOM without match" when searching
+forward, or "search hit TOP without match" when searching backward.  If
+wrapscan is set and the search wraps around the end of the file the message
+"search hit TOP, continuing at BOTTOM" or "search hit BOTTOM, continuing at
+TOP" is given when searching backwards or forwards respectively.  This can be
+switched off by setting the 's' flag in the 'shortmess' option.  The highlight
+method 'w' is used for this message (default: standout).
+
+							*search-range*
+You cannot limit the search command "/" to a certain range of lines.  A trick
+to do this anyway is to use the ":substitute" command with the 'c' flag.
+Example: >
+   :.,300s/Pattern//gc
+This command will search from the cursor position until line 300 for
+"Pattern".  At the match, you will be asked to type a character.  Type 'q' to
+stop at this match, type 'n' to find the next match.
+
+The "*", "#", "g*" and "g#" commands look for a word near the cursor in this
+order, the first one that is found is used:
+- The keyword currently under the cursor.
+- The first keyword to the right of the cursor, in the same line.
+- The WORD currently under the cursor.
+- The first WORD to the right of the cursor, in the same line.
+The keyword may only contain letters and characters in 'iskeyword'.
+The WORD may contain any non-blanks (<Tab>s and/or <Space>s).
+Note that if you type with ten fingers, the characters are easy to remember:
+the "#" is under your left hand middle finger (search to the left and up) and
+the "*" is under your right hand middle finger (search to the right and down).
+(this depends on your keyboard layout though).
+
+==============================================================================
+2. The definition of a pattern		*search-pattern* *pattern* *[pattern]*
+					*regular-expression* *regexp* *Pattern*
+					*E76* *E361* *E363* *E383* *E476*
+
+For starters, read chapter 27 of the user manual |usr_27.txt|.
+
+						*/bar* */\bar* */pattern*
+1. A pattern is one or more branches, separated by "\|".  It matches anything
+   that matches one of the branches.  Example: "foo\|beep" matches "foo" and
+   matches "beep".  If more than one branch matches, the first one is used.
+
+   pattern ::=	    branch
+		or  branch \| branch
+		or  branch \| branch \| branch
+		etc.
+
+						*/branch* */\&*
+2. A branch is one or more concats, separated by "\&".  It matches the last
+   concat, but only if all the preceding concats also match at the same
+   position.  Examples:
+	"foobeep\&..." matches "foo" in "foobeep".
+	".*Peter\&.*Bob" matches in a line containing both "Peter" and "Bob"
+
+   branch ::=	    concat
+		or  concat \& concat
+		or  concat \& concat \& concat
+		etc.
+
+						*/concat*
+3. A concat is one or more pieces, concatenated.  It matches a match for the
+   first piece, followed by a match for the second piece, etc.  Example:
+   "f[0-9]b", first matches "f", then a digit and then "b".
+
+   concat  ::=	    piece
+		or  piece piece
+		or  piece piece piece
+		etc.
+
+						*/piece*
+4. A piece is an atom, possibly followed by a multi, an indication of how many
+   times the atom can be matched.  Example: "a*" matches any sequence of "a"
+   characters: "", "a", "aa", etc.  See |/multi|.
+
+   piece   ::=	    atom
+		or  atom  multi
+
+						*/atom*
+5. An atom can be one of a long list of items.  Many atoms match one character
+   in the text.  It is often an ordinary character or a character class.
+   Braces can be used to make a pattern into an atom.  The "\z(\)" construct
+   is only for syntax highlighting.
+
+   atom    ::=	    ordinary-atom		|/ordinary-atom|
+		or  \( pattern \)		|/\(|
+		or  \%( pattern \)		|/\%(|
+		or  \z( pattern \)		|/\z(|
+
+
+==============================================================================
+4. Overview of pattern items				*pattern-overview*
+
+Overview of multi items.				*/multi* *E61* *E62*
+More explanation and examples below, follow the links.			*E64*
+
+	  multi ~
+     'magic' 'nomagic'	matches of the preceding atom ~
+|/star|	*	\*	0 or more	as many as possible
+|/\+|	\+	\+	1 or more	as many as possible (*)
+|/\=|	\=	\=	0 or 1		as many as possible (*)
+|/\?|	\?	\?	0 or 1		as many as possible (*)
+
+|/\{|	\{n,m}	\{n,m}	n to m		as many as possible (*)
+	\{n}	\{n}	n		exactly (*)
+	\{n,}	\{n,}	at least n	as many as possible (*)
+	\{,m}	\{,m}	0 to m		as many as possible (*)
+	\{}	\{}	0 or more	as many as possible (same as *) (*)
+
+|/\{-|	\{-n,m}	\{-n,m}	n to m		as few as possible (*)
+	\{-n}	\{-n}	n		exactly (*)
+	\{-n,}	\{-n,}	at least n	as few as possible (*)
+	\{-,m}	\{-,m}	0 to m		as few as possible (*)
+	\{-}	\{-}	0 or more	as few as possible (*)
+
+							*E59*
+|/\@>|	\@>	\@>	1, like matching a whole pattern (*)
+|/\@=|	\@=	\@=	nothing, requires a match |/zero-width| (*)
+|/\@!|	\@!	\@!	nothing, requires NO match |/zero-width| (*)
+|/\@<=|	\@<=	\@<=	nothing, requires a match behind |/zero-width| (*)
+|/\@<!|	\@<!	\@<!	nothing, requires NO match behind |/zero-width| (*)
+
+(*) {not in Vi}
+
+
+Overview of ordinary atoms.				*/ordinary-atom*
+More explanation and examples below, follow the links.
+
+      ordinary atom ~
+      magic   nomagic	matches ~
+|/^|	^	^	start-of-line (at start of pattern) |/zero-width|
+|/\^|	\^	\^	literal '^'
+|/\_^|	\_^	\_^	start-of-line (used anywhere) |/zero-width|
+|/$|	$	$	end-of-line (at end of pattern) |/zero-width|
+|/\$|	\$	\$	literal '$'
+|/\_$|	\_$	\_$	end-of-line (used anywhere) |/zero-width|
+|/.|	.	\.	any single character (not an end-of-line)
+|/\_.|	\_.	\_.	any single character or end-of-line
+|/\<|	\<	\<	beginning of a word |/zero-width|
+|/\>|	\>	\>	end of a word |/zero-width|
+|/\zs|	\zs	\zs	anything, sets start of match
+|/\ze|	\ze	\ze	anything, sets end of match
+|/\%^|	\%^	\%^	beginning of file |/zero-width|		*E71*
+|/\%$|	\%$	\%$	end of file |/zero-width|
+|/\%#|	\%#	\%#	cursor position |/zero-width|
+|/\%l|	\%23l	\%23l	in line 23 |/zero-width|
+|/\%c|	\%23c	\%23c	in column 23 |/zero-width|
+|/\%v|	\%23v	\%23v	in virtual column 23 |/zero-width|
+
+Character classes {not in Vi}:
+|/\i|	\i	\i	identifier character (see 'isident' option)
+|/\I|	\I	\I	like "\i", but excluding digits
+|/\k|	\k	\k	keyword character (see 'iskeyword' option)
+|/\K|	\K	\K	like "\k", but excluding digits
+|/\f|	\f	\f	file name character (see 'isfname' option)
+|/\F|	\F	\F	like "\f", but excluding digits
+|/\p|	\p	\p	printable character (see 'isprint' option)
+|/\P|	\P	\P	like "\p", but excluding digits
+|/\s|	\s	\s	whitespace character: <Space> and <Tab>
+|/\S|	\S	\S	non-whitespace character; opposite of \s
+|/\d|	\d	\d	digit:				[0-9]
+|/\D|	\D	\D	non-digit:			[^0-9]
+|/\x|	\x	\x	hex digit:			[0-9A-Fa-f]
+|/\X|	\X	\X	non-hex digit:			[^0-9A-Fa-f]
+|/\o|	\o	\o	octal digit:			[0-7]
+|/\O|	\O	\O	non-octal digit:		[^0-7]
+|/\w|	\w	\w	word character:			[0-9A-Za-z_]
+|/\W|	\W	\W	non-word character:		[^0-9A-Za-z_]
+|/\h|	\h	\h	head of word character:		[A-Za-z_]
+|/\H|	\H	\H	non-head of word character:	[^A-Za-z_]
+|/\a|	\a	\a	alphabetic character:		[A-Za-z]
+|/\A|	\A	\A	non-alphabetic character:	[^A-Za-z]
+|/\l|	\l	\l	lowercase character:		[a-z]
+|/\L|	\L	\L	non-lowercase character:	[^a-z]
+|/\u|	\u	\u	uppercase character:		[A-Z]
+|/\U|	\U	\U	non-uppercase character		[^A-Z]
+|/\_|	\_x	\_x	where x is any of the characters above: character
+			class with end-of-line included
+(end of character classes)
+
+|/\e|	\e	\e	<Esc>
+|/\t|	\t	\t	<Tab>
+|/\r|	\r	\r	<CR>
+|/\b|	\b	\b	<BS>
+|/\n|	\n	\n	end-of-line
+|/~|	~	\~	last given substitute string
+|/\1|	\1	\1	same string as matched by first \(\) {not in Vi}
+|/\2|	\2	\2	Like "\1", but uses second \(\)
+	   ...
+|/\9|	\9	\9	Like "\1", but uses ninth \(\)
+								*E68*
+|/\z1|	\z1	\z1	only for syntax highlighting, see |:syn-ext-match|
+	   ...
+|/\z1|	\z9	\z9	only for syntax highlighting, see |:syn-ext-match|
+
+	x	x	a character with no special meaning matches itself
+
+|/[]|	[]	\[]	any character specified inside the []
+|/\%[]| \%[]	\%[]	a list of optionally matched atoms
+
+|/\c|	\c	\c	ignore case
+|/\C|	\C	\C	match case
+|/\m|	\m	\m	'magic' on for the following chars in the pattern
+|/\M|	\M	\M	'magic' off for the following chars in the pattern
+|/\v|	\v	\v	the following chars in the pattern are "very magic"
+|/\V|	\V	\V	the following chars in the pattern are "very nomagic"
+|/\Z|	\Z	\Z	ignore differences in Unicode "combining characters".
+			Useful when searching voweled Hebrew or Arabic text.
+
+
+Example			matches ~
+\<\I\i*		or
+\<\h\w*
+\<[a-zA-Z_][a-zA-Z0-9_]*
+			An identifier (e.g., in a C program).
+
+\(\.$\|\. \)		A period followed by <EOL> or a space.
+
+[.!?][])"']*\($\|[ ]\)	A search pattern that finds the end of a sentence,
+			with almost the same definition as the ")" command.
+
+cat\Z			Both "cat" and "càt" ("a" followed by 0x0300)
+			Does not match "càt" (character 0x00e0), even
+			though it may look the same.
+
+
+==============================================================================
+3. Magic							*/magic*
+
+Some characters in the pattern are taken literally.  They match with the same
+character in the text.  When preceded with a backslash however, these
+characters get a special meaning.
+
+Other characters have a special meaning without a backslash.  They need to be
+preceded with a backslash to match literally.
+
+If a character is taken literally or not depends on the 'magic' option and the
+items mentioned next.
+							*/\m* */\M*
+Use of "\m" makes the pattern after it be interpreted as if 'magic' is set,
+ignoring the actual value of the 'magic' option.
+Use of "\M" makes the pattern after it be interpreted as if 'nomagic' is used.
+							*/\v* */\V*
+Use of "\v" means that in the pattern after it all ASCII characters except
+'0'-'9', 'a'-'z', 'A'-'Z' and '_' have a special meaning.  "very magic"
+
+Use of "\V" means that in the pattern after it only the backslash has a
+special meaning.  "very nomagic"
+
+Examples:
+after:	  \v	   \m	    \M	     \V		matches ~
+		'magic' 'nomagic'
+	  $	   $	    $	     \$		matches end-of-line
+	  .	   .	    \.	     \.		matches any character
+	  *	   *	    \*	     \*		any number of the previous atom
+	  ()	   \(\)     \(\)     \(\)	grouping into an atom
+	  |	   \|	    \|	     \|		separating alternatives
+	  \a	   \a	    \a	     \a		alphabetic character
+	  \\	   \\	    \\	     \\		literal backslash
+	  \.	   \.	    .	     .		literal dot
+	  \{	   {	    {	     {		literal '{'
+	  a	   a	    a	     a		literal 'a'
+
+{only Vim supports \m, \M, \v and \V}
+
+It is recommended to always keep the 'magic' option at the default setting,
+which is 'magic'.  This avoids portability problems.  To make a pattern immune
+to the 'magic' option being set or not, put "\m" or "\M" at the start of the
+pattern.
+
+
+==============================================================================
+5. Multi items						*pattern-multi-items*
+
+An atom can be followed by an indication of how many times the atom can be
+matched and in what way.  This is called a multi.  See |/multi| for an
+overview.
+
+It is not possible to use a multi that can match more than one time after an
+atom that can match an empty string.  That's because this could result in an
+endless loop.  If you try it, you will get this error message: >
+	*, \+ or \{ operand could be empty
+<
+						*/star* */\star* *E56*
+*	(use \* when 'magic' is not set)
+	Matches 0 or more of the preceding atom, as many as possible.
+	Example  'nomagic'	matches ~
+	a*	   a\*		"", "a", "aa", "aaa", etc.
+	.*	   \.\*		anything, also an empty string, no end-of-line
+	\_.*	   \_.\*	everything up to the end of the buffer
+	\_.*END	   \_.\*END	everything up to and including the last "END"
+				in the buffer
+
+	Exception: When "*" is used at the start of the pattern or just after
+	"^" it matches the star character.
+
+	Be aware that repeating "\_." can match a lot of text and take a long
+	time.  For example, "\_.*END" matches all text from the current
+	position to the last occurrence of "END" in the file.  Since the "*"
+	will match as many as possible, this first skips over all lines until
+	the end of the file and then tries matching "END", backing up one
+	character at a time.
+
+							*/\+* *E57*
+\+	Matches 1 or more of the preceding atom, as many as possible. {not in
+	Vi}
+	Example		matches ~
+	^.\+$		any non-empty line
+	\s\+		white space of at least one character
+
+							*/\=*
+\=	Matches 0 or 1 of the preceding atom, as many as possible. {not in Vi}
+	Example		matches ~
+	foo\=		"fo" and "foo"
+
+							*/\?*
+\?	Just like \=.  Cannot be used when searching backwards with the "?"
+	command. {not in Vi}
+
+						*/\{* *E58* *E60* *E554*
+\{n,m}	Matches n to m of the preceding atom, as many as possible
+\{n}	Matches n of the preceding atom
+\{n,}	Matches at least n of the preceding atom, as many as possible
+\{,m}	Matches 0 to m of the preceding atom, as many as possible
+\{}	Matches 0 or more of the preceding atom, as many as possible (like *)
+							*/\{-*
+\{-n,m}	matches n to m of the preceding atom, as few as possible
+\{-n}	matches n of the preceding atom
+\{-n,}	matches at least n of the preceding atom, as few as possible
+\{-,m}	matches 0 to m of the preceding atom, as few as possible
+\{-}	matches 0 or more of the preceding atom, as few as possible
+	{Vi does not have any of these}
+
+	n and m are positive decimal numbers
+
+	If a "-" appears immediately after the "{", then a shortest match
+	first algorithm is used (see example below).  In particular, "\{-}" is
+	the same as "*" but uses the shortest match first algorithm.  BUT: A
+	match that starts earlier is preferred over a shorter match: "a\{-}b"
+	matches "aaab" in "xaaab".
+
+	Example			matches ~
+	ab\{2,3}c		"abbc" or "abbbc"
+	a\{5}			"aaaaa".
+	ab\{2,}c		"abbc", "abbbc", "abbbbc", etc
+	ab\{,3}c		"ac", "abc", "abbc" or "abbbc".
+	a[bc]\{3}d		"abbbd", "abbcd", "acbcd", "acccd", etc.
+	a\(bc\)\{1,2}d		"abcd" or "abcbcd"
+	a[bc]\{-}[cd]		"abc" in "abcd"
+	a[bc]*[cd]		"abcd" in "abcd"
+
+	The } may optionally be preceded with a backslash: \{n,m\}.
+
+							*/\@=*
+\@=	Matches the preceding atom with zero width. {not in Vi}
+	Like "(?=pattern)" in Perl.
+	Example			matches ~
+	foo\(bar\)\@=		"foo" in "foobar"
+	foo\(bar\)\@=foo	nothing
+							*/zero-width*
+	When using "\@=" (or "^", "$", "\<", "\>") no characters are included
+	in the match.  These items are only used to check if a match can be
+	made.  This can be tricky, because a match with following items will
+	be done in the same position.  The last example above will not match
+	"foobarfoo", because it tries match "foo" in the same position where
+	"bar" matched.
+
+	Note that using "\&" works the same as using "\@=": "foo\&.." is the
+	same as "\(foo\)\@=..".  But using "\&" is easier, you don't need the
+	braces.
+
+
+							*/\@!*
+\@!	Matches with zero width if the preceding atom does NOT match at the
+	current position. |/zero-width| {not in Vi}
+	Like '(?!pattern)" in Perl.
+	Example			matches ~
+	foo\(bar\)\@!		any "foo" not followed by "bar"
+	a.\{-}p\@!		"a", "ap", "app", etc. not followed by a "p"
+	if \(\(then\)\@!.\)*$	"if " not followed by "then"
+
+	Using "\@!" is tricky, because there are many places where a pattern
+	does not match.  "a.*p\@!" will match from an "a" to the end of the
+	line, because ".*" can match all characters in the line and the "p"
+	doesn't match at the end of the line.  "a.\{-}p\@!" will match any
+	"a", "ap", "aap", etc. that isn't followed by a "p", because the "."
+	can match a "p" and "p\@!" doesn't match after that.
+
+	You can't use "\@!" to look for a non-match before the matching
+	position: "\(foo\)\@!bar" will match "bar" in "foobar", because at the
+	position where "bar" matches, "foo" does not match.  To avoid matching
+	"foobar" you could use "\(foo\)\@!...bar", but that doesn't match a
+	bar at the start of a line. Use "\(foo\)\@<!bar".
+
+							*/\@<=*
+\@<=	Matches with zero width if the preceding atom matches just before what
+	follows. |/zero-width| {not in Vi}
+	Like '(?<=pattern)" in Perl, but Vim allows non-fixed-width patterns.
+	Example			matches ~
+	\(an\_s\+\)\@<=file	"file" after "an" and white space or an
+				end-of-line
+	For speed it's often much better to avoid this multi.  Try using "\zs"
+	instead |/\zs|.  To match the same as the above example:
+		an\_s\+\zsfile
+
+	"\@<=" and "\@<!" check for matches just before what follows.
+	Theoretically these matches could start anywhere before this position.
+	But to limit the time needed, only the line where what follows matches
+	is searched, and one line before that (if there is one).  This should
+	be sufficient to match most things and not be too slow.
+	The part of the pattern after "\@<=" and "\@<!" are checked for a
+	match first, thus things like "\1" don't work to reference \(\) inside
+	the preceding atom.  It does work the other way around:
+	Example			matches ~
+	\1\@<=,\([a-z]\+\)	",abc" in "abc,abc"
+
+							*/\@<!*
+\@<!	Matches with zero width if the preceding atom does NOT match just
+	before what follows.  Thus this matches if there is no position in the
+	current or previous line where the atom matches such that it ends just
+	before what follows.  |/zero-width| {not in Vi}
+	Like '(?<!pattern)" in Perl, but Vim allows non-fixed-width patterns.
+	The match with the preceding atom is made to end just before the match
+	with what follows, thus an atom that ends in ".*" will work.
+	Warning: This can be slow (because many positions need to be checked
+	for a match).
+	Example			matches ~
+	\(foo\)\@<!bar		any "bar" that's not in "foobar"
+	\(\/\/.*\)\@\<!in	"in" which is not after "//"
+
+							*/\@>*
+\@>	Matches the preceding atom like matching a whole pattern. {not in Vi}
+	Like '(?>pattern)" in Perl.
+	Example		matches ~
+	\(a*\)\@>a	nothing (the "a*" takes all the "a"'s, there can't be
+			another one following)
+
+	This matches the preceding atom as if it was a pattern by itself.  If
+	it doesn't match, there is no retry with shorter sub-matches or
+	anything.  Observe this difference: "a*b" and "a*ab" both match
+	"aaab", but in the second case the "a*" matches only the first two
+	"a"s.  "\(a*\)\@>ab" will not match "aaab", because the "a*" matches
+	the "aaa" (as many "a"s as possible), thus the "ab" can't match.
+
+
+==============================================================================
+6.  Ordinary atoms					*pattern-atoms*
+
+An ordinary atom can be:
+
+							*/^*
+^	At beginning of pattern or after "\|", "\(", "\%(" or "\n": matches
+	start-of-line; at other positions, matches literal '^'. |/zero-width|
+	Example		matches ~
+	^beep(		the start of the C function "beep" (probably).
+
+							*/\^*
+\^	Matches literal '^'.  Can be used at any position in the pattern.
+
+							*/\_^*
+\_^	Matches start-of-line. |/zero-width|  Can be used at any position in
+	the pattern.
+	Example		matches ~
+	\_s*\_^foo	white space and blank lines and then "foo" at
+			start-of-line
+
+							*/$*
+$	At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"):
+	matches end-of-line <EOL>; at other positions, matches literal '$'.
+	|/zero-width|
+
+							*/\$*
+\$	Matches literal '$'.  Can be used at any position in the pattern.
+
+							*/\_$*
+\_$	Matches end-of-line. |/zero-width|  Can be used at any position in the
+	pattern.  Note that "a\_$b" never matches, since "b" cannot match an
+	end-of-line.  Use "a\nb" instead |/\n|.
+	Example		matches ~
+	foo\_$\_s*	"foo" at end-of-line and following white space and
+			blank lines
+
+.	(with 'nomagic': \.)				*/.* */\.*
+	Matches any single character, but not an end-of-line.
+
+							*/\_.*
+\_.	Matches any single character or end-of-line.
+	Careful: "\_.*" matches all text to the end of the buffer!
+
+							*/\<*
+\<	Matches the beginning of a word: The next char is the first char of a
+	word.  The 'iskeyword' option specifies what is a word character.
+	|/zero-width|
+
+							*/\>*
+\>	Matches the end of a word: The previous char is the last char of a
+	word. The 'iskeyword' option specifies what is a word character.
+	|/zero-width|
+
+							*/\zs*
+\zs	Matches at any position, and sets the start of the match there: The
+	next char is the first char of the whole match. |/zero-width|
+	Example: >
+		/^\s*\zsif
+<	matches an "if" at the start of a line, ignoring white space.
+	Can be used multiple times, the last one encountered in a matching
+	branch is used. Example: >
+		/\(.\{-}\zsFab\)\{3}
+<	Finds the third occurrence of "Fab".
+	{not in Vi} {not available when compiled without the +syntax feature}
+							*/\ze*
+\ze	Matches at any position, and sets the end of the match there: The
+	previous char is the last char of the whole match. |/zero-width|
+	Can be used multiple times, the last one encountered in a matching
+	branch is used.
+	Example: "end\ze\(if\|for\)" matches the "end" in "endif" and
+	"endfor".
+	{not in Vi} {not available when compiled without the +syntax feature}
+
+						*/\%^* *start-of-file*
+\%^	Matches start of the file.  When matching with a string, matches the
+	start of the string. {not in Vi}
+	For example, to find the first "VIM" in a file: >
+		/\%^\_.\{-}\zsVIM
+<
+						*/\%$* *end-of-file*
+\%$	Matches end of the file.  When matching with a string, matches the
+	end of the string. {not in Vi}
+	Note that this does NOT find the last "VIM" in a file: >
+		/VIM\_.\{-}\%$
+<	It will find the next VIM, because the part after it will always
+	match.  This one will find the last "VIM" in the file: >
+		/VIM\ze\(\(VIM\)\@!\_.\)*\%$
+<	This uses |/\@!| to ascertain that "VIM" does NOT match in any
+	position after the first "VIM".
+	Searching from the end of the file backwards is easier!
+
+						*/\%#* *cursor-position*
+\%#	Matches with the cursor position.  Only works when matching in a
+	buffer displayed in a window. {not in Vi}
+	WARNING: When the cursor is moved after the pattern was used, the
+	result becomes invalid.  Vim doesn't automatically update the matches.
+	This is especially relevant for syntax highlighting and 'hlsearch'.
+	In other words: When the cursor moves the display isn't updated for
+	this change.  An update is done for lines which are changed (the whole
+	line is updated) or when using the |CTRL-L| command (the whole screen
+	is updated).  Example, to highlight the word under the cursor: >
+		/\k*\%#\k*
+<	When 'hlsearch' is set and you move the cursor around and make changes
+	this will clearly show when the match is updated or not.
+
+						*/\%l* */\%>l* */\%<l*
+\%23l	Matches in a specific line.
+\%<23l	Matches above a specific line.
+\%>23l	Matches below a specific line.
+	These three can be used to match specific lines in a buffer.  The "23"
+	can be any line number.  The first line is 1. {not in Vi}
+	WARNING: When inserting or deleting lines Vim does not automatically
+	update the matches.  This means Syntax highlighting quickly becomes
+	wrong.
+	Example, to highlight the line where the cursor currently is: >
+		:exe '/\%' . line(".") . 'l.*'
+<	When 'hlsearch' is set and you move the cursor around and make changes
+	this will clearly show when the match is updated or not.
+
+						*/\%c* */\%>c* */\%<c*
+\%23c	Matches in a specific column.
+\%<23c	Matches before a specific column.
+\%>23c	Matches after a specific column.
+	These three can be used to match specific columns in a buffer or
+	string.  The "23" can be any column number.  The first column is 1.
+	Actually, the column is the byte number (thus it's not exactly right
+	for multi-byte characters).  {not in Vi}
+	WARNING: When inserting or deleting text Vim does not automatically
+	update the matches.  This means Syntax highlighting quickly becomes
+	wrong.
+	Example, to highlight the column where the cursor currently is: >
+		:exe '/\%' . col(".") . 'c'
+<	When 'hlsearch' is set and you move the cursor around and make changes
+	this will clearly show when the match is updated or not.
+	Example for matching a single byte in column 44: >
+		/\%>43c.\%<46c
+<	Note that "\%<46c" matches in column 45 when the "." matches a byte in
+	column 44.
+						*/\%v* */\%>v* */\%<v*
+\%23v	Matches in a specific virtual column.
+\%<23v	Matches before a specific virtual column.
+\%>23v	Matches after a specific virtual column.
+	These three can be used to match specific virtual columns in a buffer
+	or string.  When not matching with a buffer in a window, the option
+	values of the current window are used (e.g., 'tabstop').
+	The "23" can be any column number.  The first column is 1.
+	Note that some virtual column positions will never match, because they
+	are halfway a Tab or other character that occupies more than one
+	screen character.  {not in Vi}
+	WARNING: When inserting or deleting text Vim does not automatically
+	update the matches.  This means Syntax highlighting quickly becomes
+	wrong.
+	Example, to highlight the all characters after virtual column 72: >
+		/\%>72v.*
+<	When 'hlsearch' is set and you move the cursor around and make changes
+	this will clearly show when the match is updated or not.
+	To match the text up to column 17: >
+		/.*\%17v
+<	Column 17 is not included, because that's where the "\%17v" matches,
+	and since this is a |/zero-width| match, column 17 isn't included in
+	the match.  This does the same: >
+		/.*\%<18v
+<
+
+Character classes: {not in Vi}
+\i	identifier character (see 'isident' option)	*/\i*
+\I	like "\i", but excluding digits			*/\I*
+\k	keyword character (see 'iskeyword' option)	*/\k*
+\K	like "\k", but excluding digits			*/\K*
+\f	file name character (see 'isfname' option)	*/\f*
+\F	like "\f", but excluding digits			*/\F*
+\p	printable character (see 'isprint' option)	*/\p*
+\P	like "\p", but excluding digits			*/\P*
+
+NOTE: the above also work for multi-byte characters.  The ones below only
+match ASCII characters, as indicated by the range.
+
+						*whitespace* *white-space*
+\s	whitespace character: <Space> and <Tab>		*/\s*
+\S	non-whitespace character; opposite of \s	*/\S*
+\d	digit:				[0-9]		*/\d*
+\D	non-digit:			[^0-9]		*/\D*
+\x	hex digit:			[0-9A-Fa-f]	*/\x*
+\X	non-hex digit:			[^0-9A-Fa-f]	*/\X*
+\o	octal digit:			[0-7]		*/\o*
+\O	non-octal digit:		[^0-7]		*/\O*
+\w	word character:			[0-9A-Za-z_]	*/\w*
+\W	non-word character:		[^0-9A-Za-z_]	*/\W*
+\h	head of word character:		[A-Za-z_]	*/\h*
+\H	non-head of word character:	[^A-Za-z_]	*/\H*
+\a	alphabetic character:		[A-Za-z]	*/\a*
+\A	non-alphabetic character:	[^A-Za-z]	*/\A*
+\l	lowercase character:		[a-z]		*/\l*
+\L	non-lowercase character:	[^a-z]		*/\L*
+\u	uppercase character:		[A-Z]		*/\u*
+\U	non-uppercase character		[^A-Z]		*/\U*
+
+	NOTE: Using the atom is faster than the [] form.
+
+	NOTE: 'ignorecase', "\c" and "\C" are not used by character classes.
+
+			*/\_* *E63* */\_i* */\_I* */\_k* */\_K* */\_f* */\_F*
+			*/\_p* */\_P* */\_s* */\_S* */\_d* */\_D* */\_x* */\_X*
+			*/\_o* */\_O* */\_w* */\_W* */\_h* */\_H* */\_a* */\_A*
+			*/\_l* */\_L* */\_u* */\_U*
+\_x	Where "x" is any of the characters above: The character class with
+	end-of-line added
+(end of character classes)
+
+\e	matches <Esc>					*/\e*
+\t	matches <Tab>					*/\t*
+\r	matches <CR>					*/\r*
+\b	matches <BS>					*/\b*
+\n	matches an end-of-line				*/\n*
+	When matching in a string instead of buffer text a literal newline
+	character is matched.
+
+~	matches the last given substitute string	*/~* */\~*
+
+\(\)	A pattern enclosed by escaped parentheses.	*/\(* */\(\)* */\)*
+	E.g., "\(^a\)" matches 'a' at the start of a line.  *E51* *E54* *E55*
+
+\1      Matches the same string that was matched by	*/\1* *E65*
+	the first sub-expression in \( and \). {not in Vi}
+	Example: "\([a-z]\).\1" matches "ata", "ehe", "tot", etc.
+\2      Like "\1", but uses second sub-expression,	*/\2*
+   ...							*/\3*
+\9      Like "\1", but uses ninth sub-expression.	*/\9*
+	Note: The numbering of groups is done based on which "\(" comes first
+	in the pattern (going left to right), NOT based on what is matched
+	first.
+
+\%(\)	A pattern enclosed by escaped parentheses.	*/\%(\)* */\%(* *E53*
+	Just like \(\), but without counting it as a sub-expression.  This
+	allows using more groups and it's a little bit faster.
+	{not in Vi}
+
+x	A single character, with no special meaning, matches itself
+
+							*/\* */\\*
+\x	A backslash followed by a single character, with no special meaning,
+	is reserved for future expansions
+
+[]	(with 'nomagic': \[])		*/[]* */\[]* */\_[]* */collection*
+\_[]
+	A collection. This is a sequence of characters enclosed in brackets.
+	It matches any single character in the collection.
+	Example		matches ~
+	[xyz]		any 'x', 'y' or 'z'
+	[a-zA-Z]$	any alphabetic character at the end of a line
+	\c[a-z]$	same
+
+	With "\_" prepended the collection also includes the end-of-line.
+	The same can be done by including "\n" in the collection.  The
+	end-of-line is also matched when the collection starts with "^"!  Thus
+	"\_[^ab]" matches the end-of-line and any character but "a" and "b".
+	This makes it Vi compatible: Without the "\_" or "\n" the collection
+	does not match an end-of-line.
+
+	If the sequence begins with "^", it matches any single character NOT
+	in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'.
+	- If two characters in the sequence are separated by '-', this is
+	  shorthand for the full list of ASCII characters between them.  E.g.,
+	  "[0-9]" matches any decimal digit.
+	- A character class expression is evaluated to the set of characters
+	  belonging to that character class.  The following character classes
+	  are supported:
+			  Name		Contents ~
+*[:alnum:]*		  [:alnum:]     letters and digits
+*[:alpha:]*		  [:alpha:]     letters
+*[:blank:]*		  [:blank:]     space and tab characters
+*[:cntrl:]*		  [:cntrl:]     control characters
+*[:digit:]*		  [:digit:]     decimal digits
+*[:graph:]*		  [:graph:]     printable characters excluding space
+*[:lower:]*		  [:lower:]     lowercase letters (all letters when
+					'ignorecase' is used)
+*[:print:]*		  [:print:]     printable characters including space
+*[:punct:]*		  [:punct:]     punctuation characters
+*[:space:]*		  [:space:]     whitespace characters
+*[:upper:]*		  [:upper:]     uppercase letters (all letters when
+					'ignorecase' is used)
+*[:xdigit:]*		  [:xdigit:]    hexadecimal digits
+*[:return:]*		  [:return:]	the <CR> character
+*[:tab:]*		  [:tab:]	the <Tab> character
+*[:escape:]*		  [:escape:]	the <Esc> character
+*[:backspace:]*		  [:backspace:]	the <BS> character
+	  The brackets in character class expressions are additional to the
+	  brackets delimiting a collection.  For example, the following is a
+	  plausible pattern for a UNIX filename: "[-./[:alnum:]_~]\+" That is,
+	  a list of at least one character, each of which is either '-', '.',
+	  '/', alphabetic, numeric, '_' or '~'.
+	  These items only work for 8-bit characters.
+							  */\]*
+	- To include a literal ']', '^', '-' or '\' in the collection, put a
+	  backslash before it: "[xyz\]]", "[\^xyz]", "[xy\-z]" and "[xyz\\]".
+	  (Note: POSIX does not support the use of a backslash this way).  For
+	  ']' you can also make it the first character (following a possible
+	  "^"):  "[]xyz]" or "[^]xyz]" {not in Vi}.
+	  For '-' you can also make it the first or last character: "[-xyz]",
+	  "[^-xyz]" or "[xyz-]".  For '\' you can also let it be followed by
+	  any character that's not in "^]-\bertn".  "[\xyz]" matches '\', 'x',
+	  'y' and 'z'.  It's better to use "\\" though, future expansions may
+	  use other characters after '\'.
+	- The following translations are accepted when the 'l' flag is not
+	  included in 'cpoptions' {not in Vi}:
+		\e	<Esc>
+		\t	<Tab>
+		\r	<CR>	(NOT end-of-line!)
+		\b	<BS>
+	  NOTE: The other backslash codes mentioned above do not work inside
+	  []!
+	- Matching with a collection can be slow, because each character in
+	  the text has to be compared with each character in the collection.
+	  Use one of the other atoms above when possible.  Example: "\d" is
+	  much faster than "[0-9]" and matches the same characters.
+
+						*/\%[]* *E69* *E70* *E369*
+\%[]	A list of optionally matched atoms.  This always matches.
+	It matches as much of the list of atoms it contains as possible.  Thus
+	it stops at the first atom that doesn't match.  For example: >
+		/r\%[ead]
+<	matches "r", "re", "rea" or "read".  The longest that matches is used.
+	To match the Ex command "function", where "fu" is required and
+	"nction" is optional, this would work: >
+		/\<fu\%[nction]\>
+<	The end-of-word atom "\>" is used to avoid matching "fu" in "full".
+	It gets more complicated when the atoms are not ordinary characters.
+	You don't often have to use it, but it is possible.  Example: >
+		/\<r\%[[eo]ad]\>
+<	Matches the words "r", "re", "ro", "rea", "roa", "read" and "road".
+	{not available when compiled without the +syntax feature}
+
+
+==============================================================================
+7. Ignoring case in a pattern					*/ignorecase*
+
+If the 'ignorecase' option is on, the case of normal letters is ignored.
+'smartcase' can be set to ignore case when the pattern contains lowercase
+letters only.
+							*/\c* */\C*
+When "\c" appears anywhere in the pattern, the whole pattern is handled like
+'ignorecase' is on.  The actual value of 'ignorecase' and 'smartcase' is
+ignored.  "\C" does the opposite: Force matching case for the whole pattern.
+{only Vim supports \c and \C}
+Note that 'ignorecase', "\c" and "\C" are not used for the character classes.
+
+Examples:
+      pattern	'ignorecase'  'smartcase'	matches ~
+	foo	  off		-		foo
+	foo	  on		-		foo Foo FOO
+	Foo	  on		off		foo Foo FOO
+	Foo	  on		on		    Foo
+	\cfoo	  -		-		foo Foo FOO
+	foo\C	  -		-		foo
+
+							*/\Z*
+When "\Z" appears anywhere in the pattern, composing characters are ignored.
+Thus only the base characters need to match, the composing characters may be
+different and the number of composing characters may differ.  Only relevant
+when 'encoding' is "utf-8".
+
+Technical detail:				*NL-used-for-Nul*
+<Nul> characters in the file are stored as <NL> in memory.  In the display
+they are shown as "^@".  The translation is done when reading and writing
+files.  To match a <Nul> with a search pattern you can just enter CTRL-@ or
+"CTRL-V 000".  This is probably just what you expect.  Internally the
+character is replaced with a <NL> in the search pattern.  What is unusual is
+that typing CTRL-V CTRL-J also inserts a <NL>, thus also searches for a <Nul>
+in the file.  {Vi cannot handle <Nul> characters in the file at all}
+
+						*CR-used-for-NL*
+When 'fileformat' is "mac", <NL> characters in the file are stored as <CR>
+characters internally.  In the display they are shown as "^M".  Otherwise this
+works similar to the usage of <NL> for a <Nul>.
+
+When working with expression evaluation, a <NL> character in the pattern
+matches a <NL> in the string.  The use of "\n" (backslash n) to match a <NL>
+doesn't work there, it only works to match text in the buffer.
+
+						*pattern-multi-byte*
+Patterns will also work with multi-byte characters, mostly as you would
+expect.  But invalid bytes may cause trouble, a pattern with an invalid byte
+will probably never match.
+
+==============================================================================
+8. Compare with Perl patterns				*perl-patterns*
+
+Vim's regexes are most similar to Perl's, in terms of what you can do.  The
+difference between them is mostly just notation;  here's a summary of where
+they differ:
+
+Capability			in Vimspeak	in Perlspeak ~
+----------------------------------------------------------------
+force case insensitivity	\c		(?i)
+force case sensitivity		\C		(?-i)
+backref-less grouping		\%(atom)	(?:atom)
+conservative quantifiers	\{-n,m}		*?, +?, ??, {}?
+0-width match			atom\@=		(?=atom)
+0-width non-match		atom\@!		(?!atom)
+0-width preceding match		atom\@<=	(?<=atom)
+0-width preceding non-match	atom\@<!	(?<!atom)
+match without retry		atom\@>		(?>atom)
+
+Vim and Perl handle newline characters inside a string a bit differently:
+
+In Perl, ^ and $ only match at the very beginning and end of the text,
+by default, but you can set the 'm' flag, which lets them match at
+embedded newlines as well.  You can also set the 's' flag, which causes
+a . to match newlines as well.  (Both these flags can be changed inside
+a pattern using the same syntax used for the i flag above, BTW.)
+
+On the other hand, Vim's ^ and $ always match at embedded newlines, and
+you get two separate atoms, \%^ and \%$, which only match at the very
+start and end of the text, respectively.  Vim solves the second problem
+by giving you the \_ "modifier":  put it in front of a . or a character
+class, and they will match newlines as well.
+
+Finally, these constructs are unique to Perl:
+- execution of arbitrary code in the regex:  (?{perl code})
+- conditional expressions:  (?(condition)true-expr|false-expr)
+
+...and these are unique to Vim:
+- changing the magic-ness of a pattern:  \v \V \m \M
+   (very useful for avoiding backslashitis)
+- sequence of optionally matching atoms:  \%[atoms]
+- \& (which is to \| what "and" is to "or";  it forces several branches
+   to match at one spot)
+- matching lines/columns by number:  \%5l \%5c \%5v
+- limiting the "return value" of a regex:  \zs \ze
+
+==============================================================================
+9. Highlighting matches					*match-highlight*
+
+							*:mat* *:match*
+:mat[ch] {group} /{pattern}/
+		Define a pattern to highlight in the current window.  It will
+		be highlighted with {group}.  Example: >
+			:highlight MyGroup ctermbg=green guibg=green
+			:match MyGroup /TODO/
+<		Instead of // any character can be used to mark the start and
+		end of the {pattern}.  Watch out for using special characters,
+		such as '"' and '|'.
+		{group} must exist at the moment this command is executed.
+		The match overrides the 'hlsearch' highlighting.
+		'ignorecase' does not apply, use |/\c| in the pattern to
+		ignore case.  Otherwise case is not ignored.
+		Note that highlighting the last used search pattern with
+		'hlsearch' is used in all windows, while the pattern defined
+		with ":match" only exists in the current window.  It is kept
+		when switching to another buffer.
+		Another example, which highlights all characters in virtual
+		column 72 and more: >
+			:highlight rightMargin term=bold ctermfg=blue guifg=blue
+			:match rightMargin /.\%>72v/
+<		To highlight all character that are in virtual column 7: >
+			:highlight col8 ctermbg=grey guibg=grey
+			:match col8 /\%<8v.\%>7v/
+<		Note the use of two items to also match a character that
+		occupies more than one virtual column, such as a TAB.
+
+:mat[ch]
+:mat[ch] none
+		Clear a previously defined match pattern.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/pi_expl.txt b/runtime/doc/pi_expl.txt
new file mode 100644
index 0000000..4c962ff
--- /dev/null
+++ b/runtime/doc/pi_expl.txt
@@ -0,0 +1,215 @@
+*pi_expl.txt*   For Vim version 7.0aa.  Last change: 2002 Nov 08
+
+
+		  VIM REFERENCE MANUAL    by M A Aziz Ahmed
+					  updated by Mark Waggoner
+
+
+						*file-explorer* *file-browser*
+Plugin for exploring (or browsing) directories and files
+
+1. Starting the file explorer		|expl-starting|
+
+The functionality mentioned here is a |standard-plugin|.
+This plugin is only available if 'compatible' is not set.
+You can avoid loading this plugin by setting the "loaded_explorer" variable: >
+	:let loaded_explorer = 1
+
+{Vi does not have any of this}
+
+==============================================================================
+1. Starting the file explorer				*expl-starting*
+
+This plugin is used to explore directories inside Vim. The file explorer is
+launched whenever the user tries to edit a directory.
+						*:Explore* *:Sexplore*
+To launch the explorer in the directory of the file currently edited: >
+	:Explore
+If the file has changes the window is split.  To always split the window: >
+	:Sexplore
+To launch the explorer in a specific directory: >
+	:Explore dirname
+	:Sexplore dirname
+
+From inside the explorer move your cursor to a line containing a file or
+directory name.  The following command keys are available:
+
+  <enter> will open the file in the window the explorer is currently
+      occupying.
+  'o' will split a new window and open the file in the new window.
+  'O' will open the file chosen using the window that the cursor was in just
+      before you started or entered the explorer window.  If the explorer is
+      the only window, it will first split a new window to use for the file to
+      be opened.
+  'p' will open (or use) the preview window showing the file
+  'x' will execute the file with the system tools.  Only when supported
+      (currently MS-Windows and KDE).
+
+When splitting off a new window, you can control where the split window will
+go relative to the explorer window using the variables g:explVertical,
+g:explSplitBelow and g:explSplitRight.
+
+							*g:explVertical*
+							*g:explSplitBelow*
+							*g:explSplitRight*
+							*g:explStartBelow*
+							*g:explStartRight*
+To control whether the split is made horizontally or vertically, use: >
+  let g:explVertical=1	" Split vertically
+  let g:explVertical=0	" Split horizontally (default)
+
+To control where the window goes relative to the explorer window when
+splitting horizontally, use the variable: >
+  let g:explSplitBelow=1    " Put new window below explorer window
+  let g:explSplitBelow=0    " Put new window above explorer window
+The default for this is the setting of splitbelow at the time the plugin is
+loaded.
+
+To control where the windows goes relative to the explorer window when
+splitting vertically, use the variable: >
+  let g:explSplitRight=1    " Put new window to the right of the explorer
+  let g:explSplitRight=0    " Put new window to the left of the explorer
+The default for this is the setting of splitright at the time the plugin is
+loaded.
+
+To use a different split method for the explorer window, use: >
+  let g:explStartRight=1    " Put new explorer window to the right of the
+			    " current window
+  let g:explStartRight=0    " Put new explorer window to the left of the
+			    " current window
+The default for this set to g:explSplitRight at the time the plugin is loaded.
+
+To use a different split method for the explorer window, use: >
+  let g:explStartBelow=1    " Put new explorer window below the
+			    " current window
+  let g:explStartBelow=0    " Put new explorer window above the
+			    " current window
+The default for this set to g:explSplitBelow at the time the plugin is loaded.
+
+The start splits allow for the explorer window to be placed in a file browser
+type arrangement, where the directories are shown on the left and the contents
+opened on the right.  The start split settings are only used when issuing
+the Sexplore command.
+
+Note that the window split is done a little bit differently than window splits
+are usually done.  Ordinarily, when splitting a window, the space occupied by
+the current window will be split to give space for the new window.  The
+explorer attempts to instead split from a window adjacent to the explorer
+window so that the explorer window will not change sizes.  If there is not an
+adjacent window in the direction you are splitting, the explorer window is
+split.
+
+							*g:explWinSize*
+After opening a file with the 'o' command, you might want to resize the
+explorer window. This can be done by setting the variable >
+  let g:explWinSize=N
+N is the number of rows (when the window is split horizontally) or the number
+of columns (when the window is split vertically).  If g:explWinSize is set to
+an empty string (""), resizing will not be done.  g:explWinSize defaults to
+15.
+
+							*g:explDetailedList*
+The file size (in bytes) and modification time can be displayed inside the
+file explorer window. By pressing 'i', you can toggle between the name only
+display and the more lengthy display.  If you want the size and date to show
+by default, use >
+  let g:explDetailedList=1
+Doing this may slightly slow down explorer. The difference may or may not be
+noticeable depending on your system and whether the directory is local or on
+the network and on the size of the directory.
+
+							*g:explDateFormat*
+The format of date displayed is configurable using the variable
+g:explDateFormat.  explorer uses this variable to pass to strftime() to fetch
+the date information. |strftime()|  The default is >
+  let g:explDateFormat="%d %b %Y %H:%M"
+
+Note that for sorting purposes, the date is always placed at the end of the
+line in its 'raw' form.  If you have syntax highlighting turned on, this raw
+date should be invisible.
+
+							*g:explHideFiles*
+You can hide some files by filling the variable g:explHidFiles with regular
+expressions. A filename that matches any of these regular expressions will not
+be shown. For example, >
+
+  let g:explHideFiles='^\.,\.gz$,\.exe$,\.zip$'
+
+will not show files that begin with "." and those that end in .gz, .exe or
+.zip. However, all directory names will always be shown. If while exploring,
+you'd like to see the hidden files as well, use the command "a".
+The explorer header will indicate if filtering is being done.
+
+							*g:explDetailedHelp*
+The help information spanning a few lines can be turned off (and just a single
+help message enabled) using the option >
+  let g:explDetailedHelp=0
+You can anytime switch to the detailed help format by pressing ?.
+
+							*explorer-delete*
+Pressing 'D' inside explorer deletes the file under the cursor. You can delete
+many files by visually selecting them and using 'D'. The deletion is
+interactive in the form y/n/a/q. Directory deletion is not supported (mainly
+because there is no way to delete a directory using a vim built-in function).
+
+							*explorer-rename*
+Pressing 'R' inside explorer will allow you to rename the file under the
+cursor.
+
+							*g:explSortBy*
+The display in the file explorer can be sorted in forward or reverse order by
+name, size, or modification date.  You can set the default sorting direction
+with the option >
+  let g:explSortBy='name'		" alphabetically
+  let g:explSortBy='reverse name'	" reverse alphabetically
+  let g:explSortBy='date'		" newest first
+  let g:explSortBy='reverse date'	" oldest first
+  let g:explSortBy='size'		" largest first
+  let g:explSortBy='reverse size'       " smallest first
+While in the explorer, you can rotate through the sort fields by pressing the
+'s' key and you can reverse the current sort order by pressing the 'r' key.
+Sorting on fields other than the name will be faster if the size and date are
+displayed (using 'i' or g:explDetailedList).
+The explorer heading will indicate the current sort order.
+
+							*g:explDirsFirst*
+To control the segregation of directories and files, you can set this option >
+  let g:explDirsFirst=1     " Directories at the top of the list (default)
+  let g:explDirsFirst=0     " Directories mixed in with files
+  let g:explDirsFirst=-1    " Directories at the bottom of the list
+
+							*g:explSuffixesLast*
+To control the segregation of files matching the suffixes option, you can set
+this option >
+  let g:explSuffixesLast=1     " Files matching suffixes sorted at the bottom
+			       " of the list (default)
+  let g:explSuffixesLast=0     " Files matching suffixes sorted normally
+  let g:explSuffixesLast=-1    " Files matching suffixes sorted at the top of
+			       " the list
+The heading will indicate if suffixes have been moved to the end (or start) of
+the list.
+
+							*g:explUseSeparators*
+Directories and files matching the suffixes list will be highlighted.  If you
+have the directories, files, and suffixes separated, and you would like a
+separator line between the groups, you can set the option >
+  let g:explUseSeparators=1    " Use separator lines
+  let g:explUseSeparators=0    " Don't use separator lines
+<
+							 *g:explFileHandler*
+If you set the "g:explFileHandler" variable to the name of a function, typing
+'x' will call this function.  The file or directory under the cursor will be
+passed as an argument to the function.  Suppose you have KDE, you could use
+this: >
+
+  function MyFileHandler(fn)
+    exec "silent! !kfmclient exec " . escape(a:fn,' \%#')
+  endfunction
+  let g:explFileHandler = 'MyFileHandler'
+
+For Win32 the variable is set by default to invoke the execute action. If you
+type 'x' on a HTML file, Microsoft Internet Explorer will start (or whatever
+application you have associated with HTML files).
+
+==============================================================================
+ vim:tw=78:noet:ts=8:ft=help:norl:
diff --git a/runtime/doc/pi_gzip.txt b/runtime/doc/pi_gzip.txt
new file mode 100644
index 0000000..19ecdc4
--- /dev/null
+++ b/runtime/doc/pi_gzip.txt
@@ -0,0 +1,39 @@
+*pi_gzip.txt*   For Vim version 7.0aa.  Last change: 2002 Oct 29
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Editing compressed files with Vim		*gzip* *bzip2* *compress*
+
+1. Autocommands			|gzip-autocmd|
+
+The functionality mentioned here is a |standard-plugin|.
+This plugin is only available if 'compatible' is not set.
+You can avoid loading this plugin by setting the "loaded_gzip" variable: >
+	:let loaded_gzip = 1
+
+{Vi does not have any of this}
+
+==============================================================================
+1. Autocommands						*gzip-autocmd*
+
+The plugin installs autocommands to intercept reading and writing of files
+with these extensions:
+
+	extension	compression ~
+	*.Z		compress (Lempel-Ziv)
+	*.gz		gzip
+	*.bz2		bzip2
+
+That's actually the only thing you need to know.  There are no options.
+
+After decompressing a file, the filetype will be detected again.  This will
+make a file like "foo.c.gz" get the "c" filetype.
+
+If you have 'patchmode' set, it will be appended after the extension for
+compression.  Thus editing the patchmode file will not give you the automatic
+decompression.  You have to rename the file if you want this.
+
+==============================================================================
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
new file mode 100644
index 0000000..abfa8ce
--- /dev/null
+++ b/runtime/doc/pi_netrw.txt
@@ -0,0 +1,543 @@
+*pi_netrw.txt*  For Vim version 7.0aa.  Last change: Apr 21, 2004
+
+
+		VIM REFERENCE MANUAL    by Charles E. Campbell, Jr.
+
+*dav*		*http*		*network*	*rcp*		*scp*
+*fetch*		*netrw*		*Nread*		*rsync*		*sftp*
+*ftp*		*netrw.vim*	*Nwrite*	*netrw-file*
+
+==============================================================================
+0. Contents						*netrw-contents*
+
+1.  Netrw Reference.....................................|netrw-ref|
+2.  Network-Oriented File Transfer......................|netrw-xfer|
+3.  Activation..........................................|netrw-activate|
+4.  Transparent File Transfer...........................|netrw-transparent|
+5.  Ex Commands.........................................|netrw-ex|
+6.  Variables and Options...............................|netrw-var|
+7.  Debugging...........................................|netrw-debug|
+8.  New Stuff...........................................|netrw-new|
+9.  Credits.............................................|netrw-credits|
+
+The functionality mentioned here is done via using |standard-plugin|
+techniques.  This plugin is only available if
+
+	set nocp		    " 'compatible' is not set
+	filetype plugin on	    " plugins are enabled
+
+You can avoid loading this plugin by setting the "loaded_netrw" variable
+in your <.vimrc> file: >
+
+	:let loaded_netrw = 1
+
+{Vi does not have any of this}
+
+==============================================================================
+1. Netrw Reference						*netrw-ref*
+
+    OPTIONS
+	let g:netrw_ftp =0 use ftp (default)		     (uid password)
+			=1 use alternate ftp method	(user uid password)
+	  If you're having trouble with ftp, try changing the value
+	  of this variable in your <.vimrc> to change methods
+
+	let g:netrw_ignorenetrc= 1
+	  If you have a <.netrc> file but it doesn't work and you
+	  want it ignored, then set this variable as shown.  Its mere
+	  existence is enough to cause <.netrc> to be ignored.
+
+	Controlling External Applications
+
+	 Protocol  Variable	       Default Value
+	 --------  ----------------    -------------
+	   dav:    g:netrw_dav_cmd   = "cadaver"
+	   fetch:  g:netrw_fetch_cmd = "fetch -o"
+	   ftp:    g:netrw_ftp_cmd   = "ftp"
+	   http:   g:netrw_http_cmd  = "fetch -o"   else if fetch is available
+	   http:   g:netrw_http_cmd  = "wget -q -O"    If wget is available
+	   rcp:    g:netrw_rcp_cmd   = "rcp"
+	   rsync:  g:netrw_rsync_cmd = "rsync -a"
+	   scp:    g:netrw_scp_cmd   = "scp -q"
+	   sftp:   g:netrw_sftp_cmd  = "sftp"
+
+    READING
+	:Nread ?					give help
+	:Nread "machine:file"				uses rcp
+	:Nread "machine file"				uses ftp   with <.netrc>
+	:Nread "machine id password file"		uses ftp
+	:Nread "dav://machine[:port]/file"		uses cadaver
+	:Nread "fetch://[user@]machine/file"		uses fetch
+	:Nread "ftp://[user@]machine[[:#]port]/file"	uses ftp   autodetects <.netrc>
+	:Nread "http://[user@]machine/file"		uses http  uses wget
+	:Nread "rcp://[user@]machine/file"		uses rcp
+	:Nread "rsync://[user@]machine[:port]/file"	uses rsync
+	:Nread "scp://[user@]machine[[:#]port]/file"	uses scp
+	:Nread "sftp://[user@]machine/file"		uses sftp
+
+    WRITING
+	:Nwrite ?					give help
+	:Nwrite "machine:file"				uses rcp
+	:Nwrite "machine file"				uses ftp   with <.netrc>
+	:Nwrite "machine id password file"		uses ftp
+	:Nwrite "dav://machine[:port]/file"		uses cadaver
+	:Nwrite "ftp://[user@]machine[[:#]port]/file"	uses ftp   autodetects <.netrc>
+	:Nwrite "rcp://[user@]machine/file"		uses rcp
+	:Nwrite "rsync://[user@]machine[:port]/file"	uses rsync
+	:Nwrite "scp://[user@]machine[[:#]port]/file"	uses scp
+	:Nwrite "sftp://[user@]machine/file"		uses sftp
+	http: not supported!
+
+    USER AND PASSWORD CHANGING
+	Attempts to use ftp will prompt you for a user-id and a password.
+	These will be saved in g:netrw_uid and g:netrw_passwd Subsequent uses
+	of ftp will re-use those.  If you need to use a different user id
+	and/or password, you'll want to call NetUserPass() first.
+
+	:NetUserPass [uid [password]]		-- prompts as needed
+	:call NetUserPass()			-- prompts for uid and password
+	:call NetUserPass("uid")		-- prompts for password
+	:call NetUserPass("uid","password")	-- sets global uid and password
+
+    VARIABLES
+	b:netrw_lastfile last file Network-read/written retained on
+			  a per-buffer basis		(supports plain :Nw )
+	s:netrw_line	  during Nw/NetWrite, holds current line   number
+	s:netrw_col	  during Nw/NetWrite, holds current column number
+			  s:netrw_line and s:netrw_col are used to
+			  restore the cursor position on writes
+	g:netrw_ftp	  if it doesn't exist, use default ftp
+			  =0 use default ftp		       (uid password)
+			  =1 use alternate ftp method	  (user uid password)
+	g:netrw_ftpmode   ="binary"				    (default)
+			  ="ascii"			     (or your choice)
+	g:netrw_uid	  (ftp) user-id,      retained on a per-session basis
+	g:netrw_passwd	  (ftp) password,     retained on a per-session basis
+	g:netrw_win95ftp  =0 use unix-style ftp even if win95/win98/winME
+			  =1 use default method to do ftp
+	g:netrw_cygwin	  =1 assume scp under windows is from cygwin
+							 (default if windows)
+			  =0 assume scp under windows accepts
+			    windows-style paths		 (default otherwise)
+	g:netrw_use_nt_rcp=0 don't use the rcp of WinNT, Win2000 and WinXP (default)
+			  =1 use the rcp of WinNT,... in binary mode
+
+
+==============================================================================
+2. Network-Oriented File Transfer				*netrw-xfer*
+
+Network-oriented file transfer under Vim is implemented by a VimL-based script
+(<netrw.vim>) using plugin techniques.  It currently supports both reading
+and writing across networks using rcp, scp, ftp or ftp+<.netrc>, scp, fetch,
+dav/cadaver, rsync, or sftp.
+
+http is currently supported read-only via use of wget or fetch.
+
+<netrw.vim> is a standard plugin which acts as glue between Vim and the
+various file transfer programs.  It uses autocommand events (BufReadCmd,
+FileReadCmd, BufWriteCmd) to intercept reads/writes with url-like filenames. >
+
+	ex. vim ftp://hostname/path/to/file
+<
+The characters preceding the colon specify the protocol to use;
+in the example, its ftp.  The <netrw.vim> script then formulates
+a command or a series of commands (typically ftp) which it issues
+to an external program (ftp, scp, etc) which does the actual file
+transfer/protocol.  Files are read from/written to a temporary file
+(under Unix/Linux, /tmp/...) which the <netrw.vim> script will
+clean up.
+
+One may modify any protocol's implementing external application
+by setting a variable (ex. scp uses the variable g:netrw_scp_cmd,
+which is defaulted to "scp -q").
+
+Ftp, an old protocol, seems to be blessed by numerous implementations.
+Unfortunately, some implementations are noisy (ie., add junk to the end
+of the file).  Thus, concerned users may decide to write a NetReadFixup()
+function that will clean up after reading with their ftp.  Some Unix systems
+(ie., FreeBSD) provide a utility called "fetch" which uses the ftp protocol
+but is not noisy and more convenient, actually, for <netrw.vim> to use.
+Consequently, if "fetch" is executable, it will be used to do reads for
+ftp://... (and http://...) .  See |netrw-var| for more about this.
+
+For rcp, scp, sftp, and http, one may use network-oriented file transfers
+transparently; ie.
+>
+	vim rcp://[user@]machine/path
+	vim scp://[user@]machine/path
+<
+If your ftp supports <.netrc>, then it too can be just as transparently used
+if the needed triad of machine name, user id, and password are present in
+that file.  Your ftp must be able to use the <.netrc> file on its own, however.
+>
+	vim ftp://[user@]machine[[:#]portnumber]/path
+<
+However, ftp will often need to query the user for the userid and password.
+The latter will be done "silently"; ie. asterisks will show up instead of
+the actually-typed-in password.  Netrw will retain the userid and password
+for subsequent read/writes from the most recent transfer so subsequent
+transfers (read/write) to or from that machine will take place without
+additional prompting.
+
+								*netrw-urls*
+  +=================================+============================+============+
+  |  Reading			    | Writing			 |  Uses      |
+  +=================================+============================+============+
+  | DAV:			    |				 |	      |
+  |  dav://host/path		    |				 | cadaver    |
+  |  :Nread dav://host/path	    | :Nwrite dav://host/path	 | cadaver    |
+  +---------------------------------+----------------------------+------------+
+  | FETCH:			    |				 |	      |
+  |  fetch://[user@]host/path	    |				 |	      |
+  |  fetch://[user@]host:http/path  |  Not Available		 | fetch      |
+  |  :Nread fetch://[user@]host/path|				 |	      |
+  +---------------------------------+----------------------------+------------+
+  | FILE:			    |				 |	      |
+  |  file:///*			    | file:///*			 |	      |
+  |  file://localhost/*		    | file://localhost/*	 |	      |
+  +---------------------------------+----------------------------+------------+
+  | FTP:	  (*3)		    |		   (*3)		 |	      |
+  |  ftp://[user@]host/path	    | ftp://[user@]host/path	 | ftp	(*2)  |
+  |  :Nread ftp://host/path	    | :Nwrite ftp://host/path	 | ftp+.netrc |
+  |  :Nread host path		    | :Nwrite host path		 | ftp+.netrc |
+  |  :Nread host uid pass path	    | :Nwrite host uid pass path | ftp	      |
+  +---------------------------------+----------------------------+------------+
+  | HTTP: wget is executable: (*4)  |				 |	      |
+  |  http://[user@]host/path	    |	     Not Available	 | wget       |
+  +---------------------------------+----------------------------+------------+
+  | HTTP: fetch is executable (*4)  |				 |	      |
+  |  http://[user@]host/path	    |	     Not Available	 | fetch      |
+  +---------------------------------+----------------------------+------------+
+  | RCP:			    |				 |	      |
+  |  rcp://[user@]host/path	    | rcp://[user@]host/path	 | rcp	      |
+  +---------------------------------+----------------------------+------------+
+  | RSYNC:			    |				 |	      |
+  |  rsync://[user@]host/path	    | rsync://[user@]host/path	 | rsync      |
+  |  :Nread rsync://host/path	    | :Nwrite rsync://host/path  | rsync      |
+  |  :Nread rcp://host/path	    | :Nwrite rcp://host/path	 | rcp	      |
+  +---------------------------------+----------------------------+------------+
+  | SCP:			    |				 |	      |
+  |  scp://[user@]host/path	    | scp://[user@]host/path	 | scp	      |
+  |  :Nread scp://host/path	    | :Nwrite scp://host/path	 | scp	(*1)  |
+  +---------------------------------+----------------------------+------------+
+  | SFTP:			    |				 |	      |
+  |  sftp://[user@]host/path	    | sftp://[user@]host/path	 | sftp       |
+  |  :Nread sftp://host/path	    | :Nwrite sftp://host/path	 | sftp  (*1) |
+  +=================================+============================+============+
+
+	(*1) For an absolute path use scp://machine//path.
+
+	(*2) if <.netrc> is present, it is assumed that it will
+	work with your ftp client.  Otherwise the script will
+	prompt for user-id and password.
+
+	(*3) for ftp, "machine" may be machine#port or machine:port
+	if a different port is needed than the standard ftp port
+
+	(*4) for http:..., if wget is available it will be used.  Otherwise,
+	if fetch is available it will be used.
+
+Both the :Nread and the :Nwrite ex-commands can accept multiple filenames.
+
+
+NETRC							*netrw-netrc*
+
+The typical syntax for lines in a <.netrc> file is given as shown below.
+Ftp under Unix usually support <.netrc>; Windows' ftp usually doesn't.
+>
+	machine {full machine name} login {user-id} password "{password}"
+	default login {user-id} password "{password}"
+
+Your ftp client must handle the use of <.netrc> on its own, but if the
+<.netrc> file exists, an ftp transfer will not ask for the user-id or
+password.
+
+	Note:
+	Since this file contains passwords, make very sure nobody else can
+	read this file!  Most programs will refuse to use a .netrc that is
+	readable for others.  Don't forget that the system administrator can
+	still read the file!
+
+
+PASSWORD						*netrw-passwd*
+
+The script attempts to get passwords for ftp invisibly using |inputsecret()|,
+a built-in Vim function.  See |netrw-uidpass| for how to change the password
+after one has set it.
+
+Unfortunately there doesn't appear to be a way for netrw to feed a password
+to scp.  Thus every transfer via scp will require re-entry of the password.
+
+
+==============================================================================
+3. Activation						*netrw-activate*
+
+Network-oriented file transfers are available by default whenever
+|'nocompatible'| mode is enabled.  The <netrw.vim> file resides in your
+system's vim-plugin directory and is sourced automatically whenever you
+bring up vim.
+
+
+==============================================================================
+4. Transparent File Transfer				*netrw-transparent*
+
+Transparent file transfers occur whenever a regular file read or write
+(invoked via an |:autocmd| for |BufReadCmd| or |BufWriteCmd| events) is made.
+Thus one may use files across networks as if they were local. >
+
+	vim ftp://[user@]machine/path
+	...
+	:wq
+
+
+==============================================================================
+5. Ex Commands						*netrw-ex*
+
+The usual read/write commands are supported.  There are also a couple of
+additional commands available.
+
+:[range]Nw	Write the specified lines to the current
+		file as specified in b:netrw_lastfile.
+
+:[range]Nw {netfile} [{netfile}]...
+		Write the specified lines to the {netfile}.
+
+:Nread
+		Read the specified lines into the current
+		buffer from the file specified in
+		b:netrw_lastfile.
+
+:Nread {netfile} {netfile}...
+		Read the {netfile} after the current line.
+
+									*netrw-uidpass*
+:call NetUserPass()
+		If b:netrw_uid and b:netrw_passwd don't exist,
+		this function query the user for them.
+
+:call NetUserPass("userid")
+		This call will set the b:netrw_uid and, if
+		the password doesn't exist, will query the user for it.
+
+:call NetUserPass("userid","passwd")
+		This call will set both the b:netrw_uid and b:netrw_passwd.
+		The user-id and password are used by ftp transfers.  One may
+		effectively remove the user-id and password by using ""
+		strings.
+
+
+==============================================================================
+6. Variables and Options			*netrw-options* *netrw-var*
+
+The script <netrw.vim> uses several variables which can affect <netrw.vim>'s
+behavior.  These variables typically may be set in the user's <.vimrc> file:
+
+	g:netrw_uid		Holds current user-id for ftp.
+	g:netrw_passwd		Holds current password for ftp.
+	b:netrw_lastfile	Holds latest method/machine/path.
+	b:netrw_line		Holds current line number     (during NetWrite)
+	b:netrw_col		Holds current cursor position (during NetWrite)
+	g:netrw_ftp		=0 use default ftp	      (uid password)
+				=1 use alternate ftp	      (user uid password)
+				(see |netrw-options|)
+	g:netrw_ftpmode		="binary"		      (default)
+				="ascii"		      (your choice)
+	g:netrw_ignorenetrc	=1			      (default)
+				   if you have a <.netrc> file but you don't
+				   want it used, then set this variable.  Its
+				   mere existence is enough to cause <.netrc>
+				   to be ignored.
+	g:netrw_win95ftp	=0 use unix-style ftp even if win95/98/ME/etc
+				=1 use default method to do ftp
+	g:netrw_cygwin		=1 assume scp under windows is from cygwin
+							      (default/windows)
+				=0 assume scp under windows accepts windows
+				   style paths		      (default/else)
+	g:netrw_use_nt_rcp	=0 don't use WinNT/2K/XP's rcp (default)
+				=1 use WinNT/2K/XP's rcp, binary mode
+
+
+The script will also make use of the following variables internally, albeit
+temporarily.
+
+	g:netrw_method		Index indicating rcp/ftp+.netrc/ftp
+	g:netrw_machine		Holds machine name parsed from input
+	g:netrw_fname		Holds filename being accessed
+
+								*netrw-protocol*
+>
+			   ------------------------
+			   Protocol Control Options
+			   ------------------------
+    Option	      Type	  Setting	  Meaning ~
+    ---------	      --------	  --------------  --------------------------- >
+    netrw_ftp	      variable	  =doesn't exist  userid set by "user userid"
+				  =0		  userid set by "user userid"
+				  =1		  userid set by "userid"
+    NetReadFixup      function	  =doesn't exist  no change
+				  =exists	  Allows user to have files
+						  read via ftp automatically
+						  transformed however they wish
+						  by NetReadFixup()
+    g:netrw_dav_cmd    variable   ="cadaver"
+    g:netrw_fetch_cmd  variable   ="fetch -o"
+    g:netrw_ftp_cmd    variable   ="ftp"
+    g:netrw_http_cmd   variable   ="fetch -o" else if fetch is executable
+    g:netrw_http_cmd   variable   ="wget -O"  if      wget  is executable
+    g:netrw_rcp_cmd    variable   ="rcp"
+    g:netrw_rsync_cmd  variable   ="rsync -a"
+    g:netrw_scp_cmd    variable   ="scp -q"
+    g:netrw_sftp_cmd   variable   ="sftp"
+<
+The first two options both help with certain ftp's that give trouble otherwise.
+In order to best understand how to use these options if ftp is giving you
+troubles, a bit of discussion follows on how netrw does ftp reads.
+
+The g:netrw_..._cmd variables specify the external program to use handle
+the associated protocol (rcp, ftp, etc), plus any options.
+
+Netrw typically builds up lines of one of the following formats in a
+temporary file:
+>
+  IF g:netrw_ftp !exists or is not 1     IF g:netrw_ftp exists and is 1
+  ----------------------------------     ------------------------------
+       open machine [port]		      open machine [port]
+       user userid password		      userid password
+       [g:netrw_ftpmode]		      password
+       get filename tempfile		      [g:netrw_ftpmode]
+					      get filename tempfile
+<
+Netrw then executes the lines above by use of a filter:
+>
+	:%! {g:netrw_ftp_cmd} -i [-n]
+<
+
+where
+	g:netrw_ftp_cmd is usually "ftp",
+	-i tells ftp not to be interactive
+	-n means don't use netrc and is used for Method #3 (ftp w/o <.netrc>)
+
+If <.netrc> exists it will be used to avoid having to query the user for
+userid and password).  The transferred file is put into a temporary file.
+The temporary file is then read into the main editing session window that
+requested it and the temporary file deleted.
+
+If your ftp doesn't accept the "user" command and immediately just demands
+a userid, then try putting "let netrw_ftp=1" in your <.vimrc>.
+
+								*netrw-fixup*
+If your ftp for whatever reason generates unwanted lines (such as AUTH
+messages) you may write a NetReadFixup(tmpfile) function:
+>
+    function! NetReadFixup(method,line1,line2)
+      " a:line1: first new line in current file
+      " a:line2: last  new line in current file
+      if     a:method == 1 "rcp
+      elseif a:method == 2 "ftp + <.netrc>
+      elseif a:method == 3 "ftp + machine,uid,password,filename
+      elseif a:method == 4 "scp
+      elseif a:method == 5 "http/wget
+      elseif a:method == 6 "dav/cadaver
+      elseif a:method == 7 "rsync
+      elseif a:method == 8 "fetch
+      elseif a:method == 9 "sftp
+      else		 " complain
+      endif
+    endfunction
+>
+The NetReadFixup() function will be called if it exists and thus allows
+you to customize your reading process.  As a further example, <netrw.vim>
+contains just such a function to handle Windows 95 ftp.  For whatever
+reason, Windows 95's ftp dumps four blank lines at the end of a transfer,
+and so it is desirable to automate their removal.  Here's some code taken
+from <netrw.vim> itself:
+>
+    if has("win95") && g:netrw_win95ftp
+     fu! NetReadFixup(method, line1, line2)
+       if method == 3   " ftp (no <.netrc>)
+	let fourblanklines= line2 - 3
+	silent fourblanklines.",".line2."g/^\s*/d"
+       endif
+     endfunction
+    endif
+>
+
+==============================================================================
+7. Debugging						*netrw-debug*
+
+The <netrw.vim> script is typically available as:
+
+	/usr/local/share/vim/vim6x/plugin/netrw.vim
+
+which is loaded automatically at startup (assuming :set nocp).
+
+	1. Get the <Decho.vim> script, available as:
+
+		http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_scripts
+		as "Decho, a vimL debugging aid"
+	   or
+		http://vim.sourceforge.net/scripts/script.php?script_id=120
+
+	   and put it into your local plugin directory
+
+	2. Edit the <netrw.vim> file as follows:
+
+		:DechoOn
+
+	   (to restore to normal, use  :DechoOff )
+
+	3. Then bring up vim and attempt a transfer.  A set of messages
+	   should appear concerning the steps that <netrw.vim> took in
+	   attempting to read/write your file over the network.  Please
+	   send that information to <netrw.vim>'s maintainer,
+
+		drchipNOSPAM at campbellfamily.biz - NOSPAM
+
+==============================================================================
+8. New Stuff						*netrw-new* *netrw-newstuff*
+
+       v43: * moved "Explanation" comments to <pi_netrw.txt> help file
+	      as "Network Reference" (|netrw-ref|)
+	    * <netrw.vim> now uses Dfunc() Decho() and Dret() for debugging
+	    * removed superfluous NetRestorePosn() calls
+       v42: * now does BufReadPre and BufReadPost events on file:///*
+	      and file://localhost/*
+       v41: * installed file:///* and file://localhost/* handling
+       v40: * prevents redraw when a protocol error occurs so that the
+	      user may see it
+       v39: * sftp support
+       v38: * Now uses NetRestorePosn() calls with Nread/Nwrite commands
+	    * Temporary files now removed via bwipe! instead of bwipe
+	      (thanks to Dave Roberts)
+       v37: * Claar's modifications which test if ftp is successful, otherwise
+	      give an error message
+	    * After a read, the alternate file was pointing to the temp file.
+	      The temp file buffer is now wiped out.
+	    * removed silent from transfer methods so user can see what's
+	      happening
+
+
+==============================================================================
+9. Credits						*netrw-credits*
+
+	Vim editor	by Bram Moolenaar (Thanks, Bram!)
+	dav		support by C Campbell
+	fetch		support by Bram Moolenaar and C Campbell
+	ftp		support by C Campbell <NdrOchip@ScampbellPfamily.AbizM> - NOSPAM
+	http		support by Bram Moolenaar <bram@moolenaar.net>
+	rcp
+	rsync		support by C Campbell (suggested by Erik Warendorph)
+	scp		support by raf <raf@comdyn.com.au>
+	sftp		support by C Campbell
+
+	inputsecret(), BufReadCmd, BufWriteCmd contributed by C Campbell
+
+	Jérôme Augé		-- also using new buffer method with ftp+.netrc
+	Bram Moolenaar		-- obviously vim itself, :e and v:cmdarg use, fetch,...
+	Yasuhiro Matsumoto	-- pointing out undo+0r problem and a solution
+	Erik Warendorph		-- for several suggestions (g:netrw_..._cmd
+				   variables, rsync etc)
+	Doug Claar		-- modifications to test for success with ftp operation
+
+==============================================================================
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/pi_spec.txt b/runtime/doc/pi_spec.txt
new file mode 100644
index 0000000..a52984a
--- /dev/null
+++ b/runtime/doc/pi_spec.txt
@@ -0,0 +1,111 @@
+*pi_spec.txt*   For Vim version 7.0aa.  Last change: 2002 Oct 29
+
+by Gustavo Niemeyer ~
+
+This is a filetype plugin to work with rpm spec files.
+
+Currently, this Vim plugin allows you to easily update the %changelog
+section in RPM spec files. It will even create a section for you if it
+doesn't exist yet. If you've already inserted an entry today, it will
+give you the opportunity to just add a new item in today's entry. If you
+don't provide a format string (|spec_chglog_format|), it'll ask you an
+email address and build a format string by itself.
+
+1. How to use it	|spec-how-to-use-it|
+2. Customizing		|spec-customizing|
+
+==============================================================================
+1. How to use it				*spec-how-to-use-it*
+
+The spec_chglog plugin provides a map like the following:
+
+	:map <buffer> <LocalLeader>c <Plug>SpecChangelog
+
+It means that you may run the plugin inside a spec file by pressing
+your maplocalleader key (default is '\') plus 'c'. If you do not have
+|spec_chglog_format| set, the plugin will ask you for an email address
+to use in this edit session.
+
+Everytime you run the plugin, it will check to see if the last entry
+in the changelog has been written today and by you. If it's the entry
+mathes, it will just insert a new changelog item, otherwise it will
+create a new changelog entry. If you are running with
+|spec_chglog_release_info| enabled, it will also check if the name, version
+and release matches. The plugin is smart enough to ask you if it should
+update the package release, if you have not done so.
+
+Setting a map					*spec-setting-a-map*
+-------------
+
+As you should know, you can easily set a map to access any Vim command (or
+anything, for that matter). If you don't like the default map of
+<LocalLeader>c, you may just set up your own key. The following line
+shows you how you could do this in your .vimrc file, mapping the plugin to
+the <F5> key:
+
+	au FileType spec map <buffer> <F5> <Plug>SpecChangelog
+
+Note: the plugin will respect your desire to change the default mapping
+      and won't set it.
+
+This command will add a map only in the spec file buffers.
+
+
+==============================================================================
+2. Customizing					*spec-customizing*
+
+The format string				*spec_chglog_format*
+-----------------
+
+You can easily customize how your spec file entry will look like. To do
+this just set the variable "spec_chglog_format" in your .vimrc file like
+this: >
+
+	let spec_chglog_format = "%a %b %d %Y My Name <my@email.com>"
+
+Note that "%a %b %d %Y" is the most used time format. If you don't provide
+a format string, when you run the SpecChangelog command for the first
+time, it will ask you an email address and build the |spec_chglog_format|
+variable for you. This way, you will only need to provide your email
+address once.
+
+To discover which format options you can use, take a look at the strftime()
+function man page.
+
+Where to insert new items			*spec_chglog_prepend*
+-------------------------
+
+The plugin will usually insert new %changelog entry items (note that it's
+not the entry itself) after the existing ones. If you set the
+spec_chglog_prepend variable >
+
+	let spec_chglog_prepend = 1
+
+it will insert new items before the existing ones.
+
+Inserting release info				*spec_chglog_release_info*
+----------------------
+
+If you want, the plugin may automatically insert release information
+on each changelog entry. One advantage of turning this feature on is
+that it may control if the release has been updated after the last
+change in the package or not. If you have not updated the package
+version or release, it will ask you if it should update the package
+release for you. To turn this feature on, just insert the following
+code in your .vimrc: >
+
+	let spec_chglog_release_info = 1
+
+Then, the first item in your changelog entry will be something like: >
+
+	+ name-1.0-1cl
+
+If you don't like the release updating feature and don't want to answer
+"No" each time it detects an old release, you may disable it with >
+
+	let spec_chglog_never_increase_release = 1
+
+
+Good luck!!
+
+vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt
new file mode 100644
index 0000000..1c35d68
--- /dev/null
+++ b/runtime/doc/quickfix.txt
@@ -0,0 +1,1010 @@
+*quickfix.txt*  For Vim version 7.0aa.  Last change: 2004 May 20
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+This subject is introduced in section |30.1| of the user manual.
+
+1. Using QuickFix commands		|quickfix|
+2. The error window			|quickfix-window|
+3. Using more than one list of errors	|quickfix-error-lists|
+4. Using :make				|:make_makeprg|
+5. Using :grep				|grep|
+6. Selecting a compiler			|compiler-select|
+7. The error format			|error-file-format|
+8. The directory stack			|quickfix-directory-stack|
+9. Specific error file formats		|errorformats|
+
+{Vi does not have any of these commands}
+
+The quickfix commands are not available when the |+quickfix| feature was
+disabled at compile time.
+
+=============================================================================
+1. Using QuickFix commands			*quickfix* *Quickfix* *E42*
+
+Vim has a special mode to speedup the edit-compile-edit cycle.  This is
+inspired by the quickfix option of the Manx's Aztec C compiler on the Amiga.
+The idea is to save the error messages from the compiler in a file and use Vim
+to jump to the errors one by one.  You can examine each problem and fix it,
+without having to remember all the error messages.
+
+If you are using Manx's Aztec C compiler on the Amiga look here for how to use
+it with Vim: |quickfix-manx|.  If you are using another compiler you should
+save the error messages in a file and start Vim with "vim -q filename".  An
+easy way to do this is with the |:make| command (see below).  The
+'errorformat' option should be set to match the error messages from your
+compiler (see |errorformat| below).
+
+The following quickfix commands can be used:
+
+							*:cc*
+:cc[!] [nr]		Display error [nr].  If [nr] is omitted, the same
+			error is displayed again.  Without [!] this doesn't
+			work when jumping to another buffer, the current buffer
+			has been changed, there is the only window for the
+			buffer and both 'hidden' and 'autowrite' are off.
+			When jumping to another buffer with [!] any changes to
+			the current buffer are lost, unless 'hidden' is set or
+			there is another window for this buffer.
+			The 'switchbuf' settings are respected when jumping
+			to a buffer.
+
+							*:cn* *:cnext* *E553*
+:[count]cn[ext][!]	Display the [count] next error in the list that
+			includes a file name.  If there are no file names at
+			all, go to the [count] next error.  See |:cc| for
+			[!] and 'switchbuf'.
+
+:[count]cN[ext][!]			*:cp* *:cprevious* *:cN* *:cNext*
+:[count]cp[revious][!]	Display the [count] previous error in the list that
+			includes a file name.  If there are no file names at
+			all, go to the [count] previous error.  See |:cc| for
+			[!] and 'switchbuf'.
+
+							*:cnf* *:cnfile*
+:[count]cnf[ile][!]	Display the first error in the [count] next file in
+			the list that includes a file name.  If there are no
+			file names at all or if there is no next file, go to
+			the [count] next error.  See |:cc| for [!] and
+			'switchbuf'.
+
+:[count]cNf[ile][!]			*:cpf* *:cpfile* *:cNf* *:cNfile*
+:[count]cpf[ile][!]	Display the last error in the [count] previous file in
+			the list that includes a file name.  If there are no
+			file names at all or if there is no next file, go to
+			the [count] previous error.  See |:cc| for [!] and
+			'switchbuf'.
+
+							*:crewind* *:cr*
+:cr[ewind][!] [nr]	Display error [nr].  If [nr] is omitted, the FIRST
+			error is displayed.  See |:cc|.
+
+							*:cfirst* *:cfir*
+:cfir[st][!] [nr]	Same as ":crewind".
+
+							*:clast* *:cla*
+:cla[st][!] [nr]	Display error [nr].  If [nr] is omitted, the LAST
+			error is displayed.  See |:cc|.
+
+							*:cq* *:cquit*
+:cq[uit]		Quit Vim with an error code, so that the compiler
+			will not compile the same file again.
+
+							*:cf* *:cfile*
+:cf[ile][!] [errorfile]	Read the error file and jump to the first error.
+			This is done automatically when Vim is started with
+			the -q option.  You can use this command when you
+			keep Vim running while compiling.  If you give the
+			name of the errorfile, the 'errorfile' option will
+			be set to [errorfile].  See |:cc| for [!].
+
+							*:cg* *:cgetfile*
+:cg[etfile][!] [errorfile]
+			Read the error file.  Just like ":cfile" but don't
+			jump to the first error.
+
+							*:cl* *:clist*
+:cl[ist] [from] [, [to]]
+			List all errors that are valid |quickfix-valid|.
+			If numbers [from] and/or [to] are given, the respective
+			range of errors is listed. A negative number counts
+			from the last error backwards, -1 being the last error.
+			The 'switchbuf' settings are respected when jumping
+			to a buffer.
+
+:cl[ist]! [from] [, [to]]
+			List all errors.
+
+If you insert or delete lines, mostly the correct error location is still
+found because hidden marks are used.  Sometimes, when the mark has been
+deleted for some reason, the message "line changed" is shown to warn you that
+the error location may not be correct.  If you quit Vim and start again the
+marks are lost and the error locations may not be correct anymore.
+
+=============================================================================
+2. The error window					*quickfix-window*
+
+							*:cope* *:copen*
+:cope[n] [height]	Open a window to show the current list of errors.
+			When [height] is given, the window becomes that high
+			(if there is room).  Otherwise the window is made ten
+			lines high.
+			The window will contain a special buffer, with
+			'buftype' equal to "quickfix".  Don't change this!
+			If there already is a quickfix window, it will be made
+			the current window.  It is not possible to open a
+			second quickfix window.
+
+							*:ccl* *:cclose*
+:ccl[ose]		Close the quickfix window.
+
+							*:cw* *:cwindow*
+:cw[indow] [height]	Open the quickfix window when there are recognized
+			errors.  If the window is already open and there are
+			no recognized errors, close the window.
+
+
+Normally the quickfix window is at the bottom of the screen.  If there are
+vertical splits, it's at the bottom of the rightmost column of windows.  To
+make it always occupy the full width: >
+	:botright cwindow
+You can move the window around with |window-moving| commands.
+For example, to move it to the top: CTRL-W K
+The 'winfixheight' option will be set, which means that the window will mostly
+keep its height, ignoring 'winheight' and 'equalalways'.  You can change the
+height manually (e.g., by dragging the status line above it with the mouse).
+
+In the quickfix window, each line is one error.  The line number is equal to
+the error number.  You can use ":.cc" to jump to the error under the cursor.
+Hitting the <CR> key or double-clicking the mouse on a line has the same
+effect.  The file containing the error is opened in the window above the
+quickfix window.  If there already is a window for that file, it is used
+instead.  If the buffer in the used window has changed, and the error is in
+another file, jumping to the error will fail.  You will first have to make
+sure the window contains a buffer which can be abandoned.
+
+When the quickfix window has been filled, two autocommand events are
+triggered.  First the 'filetype' option is set to "qf", which triggers the
+FileType event.  Then the BufReadPost event is triggered.  This can be used to
+perform some action on the listed errors.  Example: >
+	au BufReadPost quickfix  setlocal nomodifiable
+		\ | silent g/^/s//\=line(".")." "/
+		\ | setlocal modifiable
+This prepends the line number to each line.  Note the use of "\=" in the
+substitute string of the ":s" command, which is used to evaluate an
+expression.
+
+Note: Making changes in the quickfix window has no effect on the list of
+errors.  'modifiable' is off to avoid making changes.  If you delete or insert
+lines anyway, the relation between the text and the error number is messed up.
+If you really want to do this, you could write the contents of the quickfix
+window to a file and use ":cfile" to have it parsed and used as the new error
+list.
+
+=============================================================================
+3. Using more than one list of errors			*quickfix-error-lists*
+
+So far has been assumed that there is only one list of errors.  Actually the
+ten last used lists are remembered.  When starting a new list, the previous
+ones are automatically kept.  Two commands can be used to access older error
+lists.  They set one of the existing error lists as the current one.
+
+						*:colder* *:col* *E380*
+:col[der] [count]	Go to older error list.  When [count] is given, do
+			this [count] times.  When already at the oldest error
+			list, an error message is given.
+
+						*:cnewer* *:cnew* *E381*
+:cnew[er] [count]	Go to newer error list.  When [count] is given, do
+			this [count] times.  When already at the newest error
+			list, an error message is given.
+
+When adding a new error list, it becomes the current list.
+
+When ":colder" has been used and ":make" or ":grep" is used to add a new error
+list, one newer list is overwritten.  This is especially useful if you are
+browsing with ":grep" |grep|.  If you want to keep the more recent error
+lists, use ":cnewer 99" first.
+
+=============================================================================
+4. Using :make						*:make_makeprg*
+
+							*:mak* *:make*
+:mak[e][!] [arguments]	1. If the 'autowrite' option is on, write any changed
+			   buffers
+			2. An errorfile name is made from 'makeef'.  If
+			   'makeef' doesn't contain "##", and a file with this
+			   name already exists, it is deleted.
+			3. The program given with the 'makeprg' option is
+			   started (default "make") with the optional
+			   [arguments] and the output is saved in the
+			   errorfile (for Unix it is also echoed on the
+			   screen).
+			4. The errorfile is read using 'errorformat'.
+			5. If [!] is not given the first error is jumped to.
+			6. The errorfile is deleted.
+			7. You can now move through the errors with commands
+			   like |:cnext| and |:cprevious|, see above.
+			This command does not accept a comment, any "
+			characters are considered part of the arguments.
+
+The ":make" command executes the command given with the 'makeprg' option.
+This is done by passing the command to the shell given with the 'shell'
+option.  This works almost like typing
+
+	":!{makeprg} [arguments] {shellpipe} {errorfile}".
+
+{makeprg} is the string given with the 'makeprg' option.  Any command can be
+used, not just "make".  Characters '%' and '#' are expanded as usual on a
+command-line.  You can use "%<" to insert the current file name without
+extension, or "#<" to insert the alternate file name without extension, for
+example: >
+   :set makeprg=make\ #<.o
+
+[arguments] is anything that is typed after ":make".
+{shellpipe} is the 'shellpipe' option.
+{errorfile} is the 'makeef' option, with ## replaced to make it unique.
+
+The placeholder "$*" can be used for the argument list in {makeprog} if the
+command needs some additional characters after its arguments.  The $* is
+replaced then by all arguments.  Example: >
+   :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
+or simpler >
+   :let &mp = 'latex \\nonstopmode \\input\{$*}'
+"$*" can be given multiple times, for example: >
+   :set makeprg=gcc\ -o\ $*\ $*
+
+The 'shellpipe' option defaults to ">" for the Amiga, MS-DOS and Win32.  This
+means that the output of the compiler is saved in a file and not shown on the
+screen directly.  For Unix "| tee" is used.  The compiler output is shown on
+the screen and saved in a file the same time.  Depending on the shell used
+"|& tee" or "2>&1| tee" is the default, so stderr output will be included.
+
+If 'shellpipe' is empty, the {errorfile} part will be omitted.  This is useful
+for compilers that write to an errorfile themselves (e.g., Manx's Amiga C).
+
+==============================================================================
+5. Using :grep						*grep* *lid*
+
+Vim can interface with "grep" and grep-like programs (such as the GNU
+id-utils) in a similar way to its compiler integration (see |:make| above).
+
+[Unix trivia: The name for the Unix "grep" command comes from ":g/re/p", where
+"re" stands for Regular Expression.]
+
+							    *:gr* *:grep*
+:gr[ep][!] [arguments]	Just like ":make", but use 'grepprg' instead of
+			'makeprg' and 'grepformat' instead of 'errorformat'.
+							*:grepa* *:grepadd*
+:grepa[dd][!] [arguments]
+			Just like ":grep", but instead of making a new list of
+			errors the matches are appended to the current list.
+			Example: >
+				:grep nothing %
+				:bufdo grepadd! something %
+<			The first command makes a new error list which is
+			empty.  The second command executes "grepadd" for each
+			listed buffer.  Note the use of ! to avoid that
+			":grepadd" jumps to the first error, which is not
+			allowed with |:bufdo|.
+
+5.1 Setting up grep
+
+If you have a standard "grep" program installed, the :grep command may work
+well with the defaults. The syntax is very similar to the standard command: >
+
+	:grep foo *.c
+
+Will search all files with the .c extension for the substring "foo". The
+arguments to :grep are passed straight to the "grep" program, so you can use
+whatever options your "grep" supports.
+
+By default, :grep invokes grep with the -n option (show file and line
+numbers). You can change this with the 'grepprg' option. You will need to set
+'grepprg' if:
+
+a)	You are using a program that isn't called "grep"
+b)	You have to call grep with a full path
+c)	You want to pass other options automatically (e.g. case insensitive
+	search.)
+
+Once "grep" has executed, Vim parses the results using the 'grepformat'
+option.  This option works in the same way as the 'errorformat' option - see
+that for details.  You may need to change 'grepformat' from the default if
+your grep outputs in a non-standard format, or you are using some other
+program with a special format.
+
+Once the results are parsed, Vim loads the first file containing a match and
+jumps to the appropriate line, in the same way that it jumps to a compiler
+error in |quickfix| mode.  You can then use the |:cnext|, |:clist|, etc.
+commands to see the other matches.
+
+
+5.2 Using :grep with id-utils
+
+You can set up :grep to work with the GNU id-utils like this: >
+
+	:set grepprg=lid\ -Rgrep\ -s
+	:set grepformat=%f:%l:%m
+
+then >
+	:grep (regexp)
+
+works just as you'd expect.
+(provided you remembered to mkid first :)
+
+
+5.3 Browsing source code with :grep
+
+Using the stack of error lists that Vim keeps, you can browse your files to
+look for functions and the functions they call.  For example, suppose that you
+have to add an argument to the read_file() function.  You enter this command: >
+
+	:grep read_file *.c
+
+You use ":cn" to go along the list of matches and add the argument.  At one
+place you have to get the new argument from a higher level function msg(), and
+need to change that one too.  Thus you use: >
+
+	:grep msg *.c
+
+While changing the msg() functions, you find another function that needs to
+get the argument from a higher level.  You can again use ":grep" to find these
+functions.  Once you are finished with one function, you can use >
+
+	:colder
+
+to go back to the previous one.
+
+This works like browsing a tree: ":grep" goes one level deeper, creating a
+list of branches.  ":colder" goes back to the previous level.  You can mix
+this use of ":grep" and "colder" to browse all the locations in a tree-like
+way.  If you do this consistently, you will find all locations without the
+need to write down a "todo" list.
+
+=============================================================================
+6. Selecting a compiler					*compiler-select*
+
+						*:comp* *:compiler* *E666*
+:comp[iler][!] {name}		Set options to work with compiler {name}.
+				Without the "!" options are set for the
+				current buffer.  With "!" global options are
+				set.
+				If you use ":compiler foo" in "file.foo" and
+				then ":compiler! bar" in another buffer, Vim
+				will keep on using "foo" in "file.foo".
+				{not available when compiled without the
+				|+eval| feature}
+
+
+The Vim plugins in the "compiler" directory will set options to use the
+selected compiler.  For ":compiler" local options are set, for ":compiler!"
+global options.
+							*current_compiler*
+To support older Vim versions, the plugins always use "current_compiler" and
+not "b:current_compiler".  What the command actually does is the following:
+
+- Delete the "current_compiler" and "b:current_compiler" variables.
+- Define the "CompilerSet" user command.  With "!" it does ":set", without "!"
+  it does ":setlocal".
+- Execute ":runtime! compiler/{name}.vim".  The plugins are expected to set
+  options with "CompilerSet" and set the "current_compiler" variable to the
+  name of the compiler.
+- Delete the "CompilerSet user command.
+- Set "b:current_compiler" to the value of "current_compiler".
+- Without "!" the old value of "current_compiler" is restored.
+
+
+For writing a compiler plugin, see |write-compiler-plugin|.
+
+
+MANX AZTEC C				*quickfix-manx* *compiler-manx*
+
+To use Vim with Manx's Aztec C compiler on the Amiga you should do the
+following:
+- Set the CCEDIT environment variable with the command: >
+	mset "CCEDIT=vim -q"
+- Compile with the -qf option.  If the compiler finds any errors, Vim is
+  started and the cursor is positioned on the first error.  The error message
+  will be displayed on the last line.  You can go to other errors with the
+  commands mentioned above.  You can fix the errors and write the file(s).
+- If you exit Vim normally the compiler will re-compile the same file.  If you
+  exit with the :cq command, the compiler will terminate.  Do this if you
+  cannot fix the error, or if another file needs to be compiled first.
+
+There are some restrictions to the Quickfix mode on the Amiga.  The
+compiler only writes the first 25 errors to the errorfile (Manx's
+documentation does not say how to get more).  If you want to find the others,
+you will have to fix a few errors and exit the editor.  After recompiling,
+up to 25 remaining errors will be found.
+
+If Vim was started from the compiler, the :sh and some :!  commands will not
+work, because Vim is then running in the same process as the compiler and
+stdin (standard input) will not be interactive.
+
+
+PYUNIT COMPILER						*compiler-pyunit*
+
+This is not actually a compiler, but a unit testing framework for the
+Python language. It is included into standard Python distribution
+starting from version 2.0. For older versions, you can get it from
+http://pyunit.sourceforge.net.
+
+When you run your tests with the help of the framework, possible errors
+are parsed by Vim and presented for you in quick-fix mode.
+
+Unfortunately, there is no standard way to run the tests.
+The alltests.py script seems to be used quite often, that's all.
+Useful values for the 'makeprg' options therefore are:
+ setlocal makeprg=./alltests.py " Run a testsuite
+ setlocal makeprg=python %      " Run a single testcase
+
+Also see http://vim.sourceforge.net/tip_view.php?tip_id=280.
+
+
+TEX COMPILER						*compiler-tex*
+
+Included in the distribution compiler for TeX ($VIMRUNTIME/compiler/tex.vim)
+uses make command if possible. If the compiler finds a file named "Makefile"
+or "makefile" in the current directory, it supposes that you want to process
+your *TeX files with make, and the makefile does the right work. In this case
+compiler sets 'errorformat' for *TeX output and leaves 'makeprg' untouched. If
+neither "Makefile" nor "makefile" is found, the compiler will not use make.
+You can force the compiler to ignore makefiles by defining
+b:tex_ignore_makefile or g:tex_ignore_makefile variable (they are checked for
+existence only).
+
+If the compiler chose not to use make, it need to choose a right program for
+processing your input. If b:tex_flavor or g:tex_flavor (in this precedence)
+variable exists, it defines TeX flavor for :make (actually, this is the name
+of executed command), and if both variables do not exist, it defaults to
+"latex". For example, while editing chapter2.tex \input-ed from mypaper.tex
+written in AMS-TeX: >
+
+	:let b:tex_flavor = 'amstex'
+	:compiler tex
+<	[editing...] >
+	:make mypaper
+
+Note that you must specify a name of the file to process as an argument (to
+process the right file when editing \input-ed or \include-ed file; portable
+solution for substituting % for no arguments is welcome). This is not in the
+semantics of make, where you specify a target, not source, but you may specify
+filename without extension ".tex" and mean this as "make filename.dvi or
+filename.pdf or filename.some_result_extension according to compiler".
+
+Note: tex command line syntax is set to usable both for MikTeX (suggestion
+by Srinath Avadhanula) and teTeX (checked by Artem Chuprina). Suggestion
+from |errorformat-LaTeX| is too complex to keep it working for different
+shells and OSes and also does not allow to use other available TeX options,
+if any. If your TeX doesn't support "-interaction=nonstopmode", please
+report it with different means to express \nonstopmode from the command line.
+
+=============================================================================
+7. The error format					*error-file-format*
+
+					*errorformat* *E372* *E373* *E374*
+						*E375* *E376* *E377* *E378*
+The 'errorformat' option specifies a list of formats that are recognized.  The
+first format that matches with an error message is used.  You can add several
+formats for different messages your compiler produces, or even entries for
+multiple compilers.  See |efm-entries|.
+
+Each entry in 'errorformat' is a scanf-like string that describes the format.
+First, you need to know how scanf works.  Look in the documentation of your
+C compiler.  Below you find the % items that Vim understands.  Others are
+invalid.
+
+Special characters in 'errorformat' are comma and backslash.  See
+|efm-entries| for how to deal with them.  Note that a literal "%" is matched
+by "%%", thus it is not escaped with a backslash.
+
+Note: By default the difference between upper and lowercase is ignored.  If
+you want to match case, add "\C" to the pattern |/\C|.
+
+
+Basic items
+
+	%f		file name (finds a string)
+	%l		line number (finds a number)
+	%c		column number (finds a number representing character
+			column of the error, (1 <tab> == 1 character column))
+	%v		virtual column number (finds a number representing
+			screen column of the error (1 <tab> == 8 screen
+			columns)
+	%t		error type (finds a single character)
+	%n		error number (finds a number)
+	%m		error message (finds a string)
+	%r		matches the "rest" of a single-line file message %O/P/Q
+	%p		pointer line (finds a sequence of '-', '.' or ' ' and
+			uses the length for the column number)
+	%*{conv}	any scanf non-assignable conversion
+	%%		the single '%' character
+
+The "%f" conversion depends on the current 'isfname' setting.
+
+The "%f" and "%m" conversions have to detect the end of the string.  They
+should be followed by a character that cannot be in the string.  Everything
+up to that character is included in the string.  But when the next character
+is a '%' or a backslash, "%f" will look for any 'isfname' character and "%m"
+finds anything.  If the "%f" or "%m" is at the end, everything up to the end
+of the line is included.
+
+On MS-DOS, MS-Windows and OS/2 a leading "C:" will be included in "%f", even
+when using "%f:".  This means that a file name which is a single alphabetical
+letter will not be detected.
+
+The "%p" conversion is normally followed by a "^".  It's used for compilers
+that output a line like: >
+	    ^
+or >
+   ---------^
+to indicate the column of the error.  This is to be used in a multi-line error
+message.  See |errorformat-javac| for a  useful example.
+
+
+Changing directory
+
+The following uppercase conversion characters specify the type of special
+format strings.  At most one of them may be given as a prefix at the begin
+of a single comma-separated format pattern.
+Some compilers produce messages that consist of directory names that have to
+be prepended to each file name read by %f (example: GNU make). The following
+codes can be used to scan these directory names; they will be stored in an
+internal directory stack.					*E379*
+	%D		"enter directory" format string; expects a following
+			  %f that finds the directory name
+	%X		"leave directory" format string; expects following %f
+
+When defining an "enter directory" or "leave directory" format, the "%D" or
+"%X" has to be given at the start of that substring. Vim tracks the directory
+changes and prepends the current directory to each erroneous file found with a
+relative path.  See |quickfix-directory-stack| for details, tips and
+limitations.
+
+
+Multi-line messages				*errorformat-multi-line*
+
+It is possible to read the output of programs that produce multi-line
+messages, ie. error strings that consume more than one line.  Possible
+prefixes are:
+	%E		start of a multi-line error message
+	%W		start of a multi-line warning message
+	%I		start of a multi-line informational message
+	%A		start of a multi-line message (unspecified type)
+	%C		continuation of a multi-line message
+	%Z		end of a multi-line message
+These can be used with '+' and '-', see |efm-ignore| below.
+
+Example: Your compiler happens to write out errors in the following format
+(leading line numbers not being part of the actual output):
+
+     1	Error 275
+     2	line 42
+     3	column 3
+     4	' ' expected after '--'
+
+The appropriate error format string has to look like this: >
+   :set efm=%EError\ %n,%Cline\ %l,%Ccolumn\ %c,%Z%m
+
+And the |:clist| error message generated for this error is:
+
+ 1:42 col 3 error 275:  ' ' expected after '--'
+
+Another example: Think of a Python interpreter that produces the following
+error message (line numbers are not part of the actual output):
+
+     1	==============================================================
+     2	FAIL: testGetTypeIdCachesResult (dbfacadeTest.DjsDBFacadeTest)
+     3	--------------------------------------------------------------
+     4	Traceback (most recent call last):
+     5	  File "unittests/dbfacadeTest.py", line 89, in testFoo
+     6	    self.assertEquals(34, dtid)
+     7	  File "/usr/lib/python2.2/unittest.py", line 286, in
+     8	 failUnlessEqual
+     9	    raise self.failureException, \
+    10	AssertionError: 34 != 33
+    11
+    12	--------------------------------------------------------------
+    13	Ran 27 tests in 0.063s
+
+Say you want |:clist| write the relevant information of this message only,
+namely:
+ 5 unittests/dbfacadeTest.py:89:  AssertionError: 34 != 33
+
+Then the error format string could be defined as follows: >
+  :set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
+
+Note that the %C string is given before the %A here: since the expression
+' %.%#' (which stands for the regular expression ' .*') matches every line
+starting with a space, followed by any characters to the end of the line,
+it also hides line 7 which would trigger a separate error message otherwise.
+Error format strings are always parsed pattern by pattern until the first
+match occurs.
+
+
+Separate file name			*errorformat-separate-filename*
+
+These prefixes are useful if the file name is given once and multiple messages
+follow that refer to this file name.
+	%O		single-line file message: overread the matched part
+	%P		single-line file message: push file %f onto the stack
+	%Q		single-line file message: pop the last file from stack
+
+Example: Given a compiler that produces the following error logfile (without
+leading line numbers):
+
+     1	[a1.tt]
+     2	(1,17)  error: ';' missing
+     3	(21,2)  warning: variable 'z' not defined
+     4	(67,3)  error: end of file found before string ended
+     5
+     6	[a2.tt]
+     7
+     8	[a3.tt]
+     9	NEW compiler v1.1
+    10	(2,2)   warning: variable 'x' not defined
+    11	(67,3)  warning: 's' already defined
+
+This logfile lists several messages for each file enclosed in [...] which are
+properly parsed by an error format like this: >
+  :set efm=%+P[%f],(%l\\,%c)%*[\ ]%t%*[^:]:\ %m,%-Q
+
+A call of |:clist| writes them accordingly with their correct filenames:
+
+  2 a1.tt:1 col 17 error: ';' missing
+  3 a1.tt:21 col 2 warning: variable 'z' not defined
+  4 a1.tt:67 col 3 error: end of file found before string ended
+  8 a3.tt:2 col 2 warning: variable 'x' not defined
+  9 a3.tt:67 col 3 warning: 's' already defined
+
+Unlike the other prefixes that all match against whole lines, %P, %Q and %O
+can be used to match several patterns in the same line. Thus it is possible
+to parse even nested files like in the following line:
+  {"file1" {"file2" error1} error2 {"file3" error3 {"file4" error4 error5}}}
+The %O then parses over strings that do not contain any push/pop file name
+information.  See |errorformat-LaTeX| for an extended example.
+
+
+Ignoring and using whole messages			*efm-ignore*
+
+The codes '+' or '-' can be combined with the uppercase codes above; in that
+case they have to precede the letter, eg. '%+A' or '%-G':
+	%-		do not include the matching multi-line in any output
+	%+		include the whole matching line in the %m error string
+
+One prefix is only useful in combination with '+' or '-', namely %G. It parses
+over lines containing general information like compiler version strings or
+other headers that can be skipped.
+	%-G		ignore this message
+	%+G		general message
+
+
+Pattern matching
+
+The scanf()-like "%*[]" notation is supported for backward-compatibility
+with previous versions of Vim.  However, it is also possible to specify
+(nearly) any Vim supported regular expression in format strings.
+Since meta characters of the regular expression language can be part of
+ordinary matching strings or file names (and therefore internally have to
+be escaped), meta symbols have to be written with leading '%':
+	%\		the single '\' character. Note that this has to be
+			escaped ("%\\") in ":set errorformat=" definitions.
+	%.		the single '.' character.
+	%#		the single '*'(!) character.
+	%^		the single '^' character.
+	%$		the single '$' character.
+	%[		the single '[' character for a [] character range.
+	%~		the single '~' character.
+When using character classes in expressions (see |/\i| for an overview),
+terms containing the "\+" quantifier can be written in the scanf() "%*"
+notation. Example: "%\\d%\\+" ("\d\+", "any number") is equivalent to "%*\\d".
+Important note: The \(...\) grouping of sub-matches can not be used in format
+specifications because it is reserved for internal conversions.
+
+
+Multiple entries in 'errorformat'			*efm-entries*
+
+To be able to detect output from several compilers, several format patterns
+may be put in 'errorformat', separated by commas (note: blanks after the comma
+are ignored).  The first pattern that has a complete match is used.  If no
+match is found, matching parts from the last one will be used, although the
+file name is removed and the error message is set to the whole message.  If
+there is a pattern that may match output from several compilers (but not in a
+right way), put it after one that is more restrictive.
+
+To include a comma in a pattern precede it with a backslash (you have to type
+two in a ":set" command).  To include a backslash itself give two backslashes
+(you have to type four in a ":set" command).  You also need to put a backslash
+before a space for ":set".
+
+
+Valid matches						*quickfix-valid*
+
+If a line does not completely match one of the entries in 'errorformat', the
+whole line is put in the error message and the entry is marked "not valid"
+These lines are skipped with the ":cn" and ":cp" commands (unless there is
+no valid line at all).  You can use ":cl!" to display all the error messages.
+
+If the error format does not contain a file name Vim cannot switch to the
+correct file.  You will have to do this by hand.
+
+
+Examples
+
+The format of the file from the Amiga Aztec compiler is:
+
+	filename>linenumber:columnnumber:errortype:errornumber:errormessage
+
+	filename	name of the file in which the error was detected
+	linenumber	line number where the error was detected
+	columnnumber	column number where the error was detected
+	errortype	type of the error, normally a single 'E' or 'W'
+	errornumber	number of the error (for lookup in the manual)
+	errormessage	description of the error
+
+This can be matched with this 'errorformat' entry:
+	%f>%l:%c:%t:%n:%m
+
+Some examples for C compilers that produce single-line error outputs:
+%f:%l:\ %t%*[^0123456789]%n:\ %m	for Manx/Aztec C error messages
+					(scanf() doesn't understand [0-9])
+%f\ %l\ %t%*[^0-9]%n:\ %m		for SAS C
+\"%f\"\\,%*[^0-9]%l:\ %m		for generic C compilers
+%f:%l:\ %m				for GCC
+%f:%l:\ %m,%Dgmake[%*\\d]:\ Entering\ directory\ `%f',
+%Dgmake[%*\\d]:\ Leaving\ directory\ `%f'
+					for GCC with gmake (concat the lines!)
+%f(%l)\ :\ %*[^:]:\ %m			old SCO C compiler (pre-OS5)
+%f(%l)\ :\ %t%*[^0-9]%n:\ %m		idem, with error type and number
+%f:%l:\ %m,In\ file\ included\ from\ %f:%l:,\^I\^Ifrom\ %f:%l%m
+					for GCC, with some extras
+
+Extended examples for the handling of multi-line messages are given below,
+see |errorformat-Jikes| and |errorformat-LaTeX|.
+
+Note the backslash in front of a space and double quote.  It is required for
+the :set command.  There are two backslashes in front of a comma, one for the
+:set command and one to avoid recognizing the comma as a separator of error
+formats.
+
+
+Filtering messages
+
+If you have a compiler that produces error messages that do not fit in the
+format string, you could write a program that translates the error messages
+into this format.  You can use this program with the ":make" command by
+changing the 'makeprg' option.  For example: >
+   :set mp=make\ \\\|&\ error_filter
+The backslashes before the pipe character are required to avoid it to be
+recognized as a command separator.  The backslash before each space is
+required for the set command.
+
+=============================================================================
+8. The directory stack				*quickfix-directory-stack*
+
+Quickfix maintains a stack for saving all used directories parsed from the
+make output. For GNU-make this is rather simple, as it always prints the
+absolute path of all directories it enters and leaves. Regardless if this is
+done via a 'cd' command in the makefile or with the parameter "-C dir" (change
+to directory before reading the makefile). It may be useful to use the switch
+"-w" to force GNU-make to print out the working directory before and after
+processing.
+
+Maintaining the correct directory is more complicated if you don't use
+GNU-make. AIX-make for example doesn't print any information about its working
+directory. Then you need to enhance the makefile. In the makefile of lesstiff
+there is a command which echoes "Making {target} in {dir}". The special
+problem here is that it doesn't print informations on leaving the directory
+and that it doesn't print the absolute path.
+
+To solve the problem with relative paths and missing "leave directory"
+messages Vim uses following algorithm:
+
+1) Check if the given directory is a subdirectory of the current directory.
+   If this is true, store it as the current directory.
+2) If it is not a subdir of the current directory, try if this is a
+   subdirectory of one of the upper directories.
+3) If the directory still isn't found, it is assumed to be a subdirectory
+   of Vim's current directory.
+
+Additionally it is checked for every file, if it really exists in the
+identified directory.  If not, it is searched in all other directories of the
+directory stack (NOT the directory subtree!). If it is still not found, it is
+assumed that it is in Vim's current directory.
+
+There are limitation in this algorithm. This examples assume that make just
+prints information about entering a directory in the form "Making all in dir".
+
+1) Assume you have following directories and files:
+   ./dir1
+   ./dir1/file1.c
+   ./file1.c
+
+   If make processes the directory "./dir1" before the current directory and
+   there is an error in the file "./file1.c", you will end up with the file
+   "./dir1/file.c" loaded by Vim.
+
+   This can only be solved with a "leave directory" message.
+
+2) Assume you have following directories and files:
+   ./dir1
+   ./dir1/dir2
+   ./dir2
+
+   You get the following:
+
+   Make output			  Directory interpreted by Vim
+   ------------------------	  ----------------------------
+   Making all in dir1		  ./dir1
+   Making all in dir2		  ./dir1/dir2
+   Making all in dir2		  ./dir1/dir2
+
+   This can be solved by printing absolute directories in the "enter directory"
+   message or by printing "leave directory" messages..
+
+To avoid this problems, ensure to print absolute directory names and "leave
+directory" messages.
+
+Examples for Makefiles:
+
+Unix:
+    libs:
+	    for dn in $(LIBDIRS); do				\
+		(cd $$dn; echo "Entering dir '$$(pwd)'"; make); \
+		echo "Leaving dir";				\
+	    done
+
+Add
+    %DEntering\ dir\ '%f',%XLeaving\ dir
+to your 'errorformat' to handle the above output.
+
+Note that Vim doesn't check if the directory name in a "leave directory"
+messages is the current directory. This is why you could just use the message
+"Leaving dir".
+
+=============================================================================
+9. Specific error file formats			*errorformats*
+
+						*errorformat-Jikes*
+Jikes(TM), a source-to-bytecode Java compiler published by IBM Research,
+produces simple multi-line error messages.
+
+An 'errorformat' string matching the produced messages is shown below.
+The following lines can be placed in the user's |vimrc| to overwrite Vim's
+recognized default formats, or see |:set+=| how to install this format
+additionally to the default. >
+
+  :set efm=%A%f:%l:%c:%*\\d:%*\\d:,
+	\%C%*\\s%trror:%m,
+	\%+C%*[^:]%trror:%m,
+	\%C%*\\s%tarning:%m,
+	\%C%m
+<
+Jikes(TM) produces a single-line error message when invoked with the option
+"+E", and can be matched with the following: >
+
+  :set efm=%f:%l:%v:%*\\d:%*\\d:%*\\s%m
+<
+						*errorformat-javac*
+This 'errorformat' has been reported to work well for javac, which outputs a
+line with "^" to indicate the column of the error: >
+  :set efm=%A%f:%l:\ %m,%-Z%p^,%-C%.%#
+or: >
+  :set efm=%A%f:%l:\ %m,%+Z%p^,%+C%.%#,%-G%.%#
+<
+						*errorformat-ant*
+For ant (http://jakarta.apache.org/) the above errorformat has to be modified
+to honour the leading [javac] in front of each javac output line: >
+  :set efm=%A\ %#[javac]\ %f:%l:\ %m,%-Z\ %#[javac]\ %p^,%-C%.%#
+
+The 'errorformat' can also be configured to handle ant together with either
+javac or jikes.  If you're using jikes, you should tell ant to use jikes' +E
+command line switch which forces jikes to generate one-line error messages.
+This is what the second line (of a build.xml file) below does: >
+  <property name = "build.compiler"       value = "jikes"/>
+  <property name = "build.compiler.emacs" value = "true"/>
+
+The 'errorformat' which handles ant with both javac and jikes is: >
+  :set efm=\ %#[javac]\ %#%f:%l:%c:%*\\d:%*\\d:\ %t%[%^:]%#:%m,
+	   \%A\ %#[javac]\ %f:%l:\ %m,%-Z\ %#[javac]\ %p^,%-C%.%#
+<
+						*errorformat-jade*
+parsing jade (see http://www.jclark.com/) errors is simple: >
+  :set efm=jade:%f:%l:%c:%t:%m
+<
+						*errorformat-LaTeX*
+The following is an example how an 'errorformat' string can be specified
+for the (La)TeX typesetting system which displays error messages over
+multiple lines.  The output of ":clist" and ":cc" etc. commands displays
+multi-lines in a single line, leading white space is removed.
+It should be easy to adopt the above LaTeX errorformat to any compiler output
+consisting of multi-line errors.
+
+The commands can be placed in a |vimrc| file or some other Vim script file,
+eg. a script containing LaTeX related stuff which is loaded only when editing
+LaTeX sources.
+Make sure to copy all lines of the example (in the given order), afterwards
+remove the comment lines.  For the '\' notation at the start of some lines see
+|line-continuation|.
+
+		First prepare 'makeprg' such that LaTeX will report multiple
+		errors; do not stop when the first error has occurred: >
+ :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
+<
+		Start of multi-line error messages: >
+ :set efm=%E!\ LaTeX\ %trror:\ %m,
+	\%E!\ %m,
+<		Start of multi-line warning messages; the first two also
+		include the line number. Meaning of some regular expressions:
+		  - "%.%#"  (".*")   matches a (possibly empty) string
+		  - "%*\\d" ("\d\+") matches a number >
+	\%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#,
+	\%+W%.%#\ at\ lines\ %l--%*\\d,
+	\%WLaTeX\ %.%#Warning:\ %m,
+<		Possible continuations of error/warning messages; the first
+		one also includes the line number: >
+	\%Cl.%l\ %m,
+	\%+C\ \ %m.,
+	\%+C%.%#-%.%#,
+	\%+C%.%#[]%.%#,
+	\%+C[]%.%#,
+	\%+C%.%#%[{}\\]%.%#,
+	\%+C<%.%#>%.%#,
+	\%C\ \ %m,
+<		Lines that match the following patterns do not contain any
+		important information; do not include them in messages: >
+	\%-GSee\ the\ LaTeX%m,
+	\%-GType\ \ H\ <return>%m,
+	\%-G\ ...%.%#,
+	\%-G%.%#\ (C)\ %.%#,
+	\%-G(see\ the\ transcript%.%#),
+<		Generally exclude any empty or whitespace-only line from
+		being displayed: >
+	\%-G\\s%#,
+<		The LaTeX output log does not specify the names of erroneous
+		source files per line; rather they are given globally,
+		enclosed in parentheses.
+		The following patterns try to match these names and store
+		them in an internal stack.  The patterns possibly scan over
+		the same input line (one after another), the trailing "%r"
+		conversion indicates the "rest" of the line that will be
+		parsed in the next go until the end of line is reached.
+
+		Overread a file name enclosed in '('...')'; do not push it
+		on a stack since the file apparently does not contain any
+		error: >
+	\%+O(%f)%r,
+<		Push a file name onto the stack. The name is given after '(': >
+	\%+P(%f%r,
+	\%+P\ %\\=(%f%r,
+	\%+P%*[^()](%f%r,
+	\%+P[%\\d%[^()]%#(%f%r,
+<		Pop the last stored file name when a ')' is scanned: >
+	\%+Q)%r,
+	\%+Q%*[^()])%r,
+	\%+Q[%\\d%*[^()])%r
+
+Note that in some cases file names in the LaTeX output log cannot be parsed
+properly.  The parser might have been messed up by unbalanced parentheses
+then.  The above example tries to catch the most relevant cases only.
+You can customize the given setting to suit your own purposes, for example,
+all the annoying "Overfull ..." warnings could be excluded from being
+recognized as an error.
+Alternatively to filtering the LaTeX compiler output, it is also possible
+to directly read the *.log file that is produced by the [La]TeX compiler.
+This contains even more useful information about possible error causes.
+However, to properly parse such a complex file, an external filter should
+be used.  See the description further above how to make such a filter known
+by Vim.
+
+						*errorformat-Perl*
+In $VIMRUNTIME/tools you can find the efm_perl.pl script, which filters Perl
+error messages into a format that quickfix mode will understand.  See the
+start of the file about how to use it.
+
+
+
+ vim:tw=78:ts=8:ft=help:norl:
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:
diff --git a/runtime/doc/quotes.txt b/runtime/doc/quotes.txt
new file mode 100644
index 0000000..3c5c3a3
--- /dev/null
+++ b/runtime/doc/quotes.txt
@@ -0,0 +1,274 @@
+*quotes.txt*    For Vim version 7.0aa.  Last change: 2004 May 06
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+							*quotes*
+Here are some nice quotes about Vim that I collected from news and mail.
+
+
+vim (vim) noun - Ebullient vitality and energy.  [Latin, accusative of vis,
+strength]  (Dictionary)
+
+Vim is so much better than vi that a great many of my old vi :map's became
+immediately obsolete! (Tony Nugent, Australia)
+
+Coming with a very GUI mindset from Windows, I always thought of people using
+Vi as some kind of outer space alien in human clothes.  Once I tried I really
+got addicted by its power and now I found myself typing Vim keypresses in the
+oddest places! That's why I would like to see Vim embedded in every
+application which deals with text editing. (José Fonseca)
+
+I was a 12-year emacs user who switched to Vim about a year ago after finally
+giving up on the multiple incompatible versions, flaky contributed packages,
+disorganized keystrokes, etc.  And it was one of the best moves I ever made.
+(Joel Burton)
+
+Although all of the programs were used during the preparation of the new and
+revised material, most of the editing was done with Vim versions 4.5 and 5.0
+under GNU-Linux (Redhat 4.2).  (Arnold Robbins, Israel, author of "Learning
+the Vi editor")
+
+Out of all the open software i've ever seen and used, and i've seen a lot, Vim
+is the best, most useful and highest quality to work with, second only to the
+linux kernel itself. (Peter Jay Salzman)
+
+It's well worth noting that the _entirety_ of SourceForge was written using
+Vim and its nifty PHP syntax highlighting. I think the entire SF.net tech
+staff uses Vim and we're all excited to have you aboard! (Tim Perdue)
+
+Vim is one of a select bunch of tools for which I have no substitute.  It is
+a brilliant piece of work! (Biju Chacko)
+
+A previous girlfriend of mine switched to emacs.  Needless to say, the
+relationship went nowhere. (Geoffrey Mann)
+
+I rarely think about Vim, in the same way that I guess a fish rarely thinks
+about water.  It's the environment in which everything else happens.  I'm a
+fairly busy system administrator working on a lot of different platforms.  Vim
+is the only thing that's consistent across all my systems, and it's just about
+the only thing that doesn't break from time to time.  When a new system comes
+in the door without Vim, I install it right away.  Great to have a tool that's
+the same everywhere, that's completely reliable, so I can ignore it and think
+about other things. (Pete Schaeffer)
+
+Having recently succeeded in running Vim via telnet through a Nokia
+Communicator, I can now report that it works nicely on a Palm Pilot too.
+(Allan Kelly, Scotland)
+
+You've done a tremendous job with 'VIM', Bram!  The more I use it, the more
+impressed I get (I am an old 'vi' die hard who once started out with early
+versions of 'emacs' in the late 1970's and was relieved by finding 'vi' in the
+first UNIX I came across in 1983).  In my opinion, it's about time 'VIM'
+replace 'emacs' as the standard for top editors.  (Bo Thide', Sweden)
+
+I love and use VIM heavily too. (Larry Wall)
+
+Vi is like a Ferrari, if you're a beginner, it handles like a bitch, but once
+you get the hang of it, its small, powerful and FAST! (Unknown)
+VIM is like a new model Ferrari, and sounds like one too - "VIIIIIIMMM!"
+(Stephen Riehm, Germany)
+
+Schon bei Nutzung eines Bruchteils der VIM-Funktionen wird der Benutzer recht
+schnell die Vorzuege dieses Editors kennen- und schaetzenlernen.
+Translated: Even when only using a fraction of VIM-functions, the user will
+quickly get used to and appreciate the advantages of this editor.  (Garry
+Glendown, conclusion of an article on VIM in iX magazine 9/1998)
+
+I've recently acquired the O'Reilly book on VI (it also discusses VIM
+in-depth), and I'm amazed at just how powerful this application is. (Jeffrey
+Rankin)
+
+This guide was written using the Windows 9.x distribution of GVIM, which is
+quite possibly the greatest thing to come along since God created the naked
+girl. (Michael DiBernardo)
+
+Boy, I thought I knew almost everything about VIM, but every time I browse the
+online documentation, I hit upon a minor but cool aspect of a VIM feature that
+I didn't know before!  I must say the documentation is one the finest I've
+ever seen in a product -- even better than most commercial products.
+(Gautam Mudunuri)
+
+VIM 4.5 is really a fantastic editor.  It has sooooo many features and more
+importantly, the defaults are so well thought out that you really don't have
+to change anything!!  Words cannot express my amazement and gratitude to the
+creators of VIM.  Keep it up.  (Vikas, USA)
+
+I wonder how long it will be before people will refer to other Vi editors as
+VIM clones?  (Darren Hiebert)
+
+I read about [auto-positioning-in-file-based-on-the-errors-from-make] in one
+of those "Perfect Programmer's Editor" threads and was delighted to discover
+that VIM already supports it.  (Brendan Macmillan, Australia)
+
+I just discovered VIM (5.0) and I'm telling everyone I know about it!
+I tell them VIM stands for VI for the new (M)illenium. Thanks so much!
+(Matt F. Valentine)
+
+I think from now on "vi" should be called "Vim Imitation", not the other way
+around.  (Rungun Ramanathan)
+
+The Law of VIM:
+For each member b of the possible behaviour space B of program P, there exists
+a finite time t before which at least one user u in the total user space U of
+program P will request b becomes a member of the allowed behaviour space B'
+(B' <= B).
+In other words: Sooner or later everyone wants everything as an option.
+(Negri)
+
+Whenever I move to a new computing platform, the first thing I do is to port
+VIM.  Lately, I am simply stunned by its ease of compilation using the
+configure facility.  (A.M. Sabuncu, Turkey)
+
+The options are really excellent and very powerful. (Anish Maharaj)
+
+The Spring user-interface designs are in, and word from the boutiques is that
+80x24 text-only mode is back with a *vengeance! Vi editor clone VIM burst onto
+March desk-tops with a dazzling show of pastel syntax highlights for its 5.0
+look. Strident and customizable, VIM raises eyebrows with its interpretation
+of the classic Vi single-key macro collection.
+http://www.ntk.net/index.cgi?back=archive98/now0327.txt&line=179#l
+
+I just wanted to take this opportunity to let you know that VIM 5 ROCKS!
+Syntax highlighting: how did I survive without it?!  Thank you for creating
+mankind's best editor!  (Mun Johl, USA)
+
+Thanks again for VIM.  I use it every day on Linux. (Eric Foster-Johnson,
+author of the book "UNIX Programming Tools")
+
+The BEST EDITOR EVER (Stuart Woolford)
+
+I have used most of VIM's fancy features at least once, many frequently, and I
+can honestly say that I couldn't live with anything less anymore.  My
+productivity has easily doubled compared to what it was when I used vi.
+(Sitaram Chamarty)
+
+I luv VIM.  It is incredible.  I'm naming my first-born Vimberly.  (Jose
+Unpingco, USA)
+
+Hint:  "VIM" is "vi improved" - much better! (Sven Guckes, Germany)
+
+I use VIM every day.  I spend more time in VIM than in any other program...
+It's the best vi clone there is.  I think it's great.  (Craig Sanders,
+Australia)
+
+I strongly advise using VIM--its infinite undo/redo saved me much grief.
+(Terry Brown)
+
+Thanks very much for writing what in my opinion is the finest text editor on
+the planet.  If I were to get another cat, I would name it "Vim".
+(Bob Sheehan, USA)
+
+I typed :set all and the screen FILLED up with options.  A whole screen of
+things to be set and unset.  I saw some of my old friends like wrapmargin,
+modelines and showmode, but the screen was FILLED with new friends!   I love
+them all!   I love VIM!   I'm so happy that I've found this editor!  I feel
+like how I once felt when I started using vi after a couple of years of using
+ed.  I never thought I'd forsake my beloved ed, but vi ... oh god, vi was
+great.  And now, VIM.  (Peter Jay Salzman, USA)
+
+I am really happy with such a wonderful software package.  Much better than
+almost any expensive, off the shelf program.  (Jeff Walker)
+
+Whenever I reread the VIM documentation I'm overcome with excitement at the
+power of the editor. (William Edward Webber, Australia)
+
+Hurrah for VIM!! It is "at your fingertips" like vi, and has the extensions
+that vi sorely needs: highlighting for executing commands on blocks, an easily
+navigable and digestible help screen, and more. (Paul Pax)
+
+The reason WHY I don't have this amazingly useful macro any more, is that I
+now use VIM - and this is built in!! (Stephen Riehm, Germany)
+
+I am a user of VIM and I love it. I use it to do all my programming, C,
+C++, HTML what ever. (Tim Allwine)
+
+I discovered VIM after years of struggling with the original vi, and I just
+can't live without it any more.  (Emmanuel Mogenet, USA)
+
+Emacs has not a bit of chance to survive so long as VIM is around.  Besides,
+it also has the most detailed software documentation I have ever seen---much
+better than most commercial software!  (Leiming Qian)
+
+This version of VIM will just blow people apart when they discover just how
+fantastic it is! (Tony Nugent, Australia)
+
+I took your advice & finally got VIM & I'm really impressed. Instant convert.
+(Patrick Killelea, USA)
+
+VIM is by far my favorite piece of shareware and I have been particularly
+pleased with version 3.0.  This is really a solid piece of work. (Robert
+Colon, USA)
+
+VIM is a joy to use, it is so well thought and practical that I wonder why
+anybody would use visual development tools.  VIM is powerful and elegant, it
+looks deceptively simple but is almost as complex as a 747 (especially when I
+look at my growing .vimrc), keep up that wonderful job, VIM is a centerpiece
+of the free software world.  (Louis-David Mitterand, USA)
+
+I cannot believe how great it is to use VIM.  I think the guys at work are
+getting tired of hearing me bragging about it.  Others eyes are lighting up.
+(Rick Croote)
+
+Emacs takes way to much time to start up and run, it is to big and bulky for
+effective use and the interface is more confusing than it is of any help.  VIM
+however is short, it is fast, it is powerful, it has a good interface and it
+is all purpose.  (Paal Ditlefsen Ekran)
+
+From the first time I got VIM3.0, I was very enthusiastic.  It has almost no
+problems.  The swapfile handling and the backup possibilities are robust, also
+the protection against editing one file twice.  It is very compatible to the
+real VI (and that is a MUST, because my brain is trained over years in using
+it).  (Gert van Antwerpen, Holland)
+
+Visual mode in VIM is a very powerful thing! (Tony Nugent, Australia)
+
+I have to say that VIM is =THE= single greatest piece of source code to ever
+come across the net (Jim Battle, USA).
+
+In fact, if you do want to get a new vi I'd suggest VIM-3.0.  This is, by
+far, the best version of vi I've ever seen (Albert W. Schueller).
+
+I should mention that VIM is a very good editor and can compete with anything
+(Ilya Beloozerov).
+
+To tell the truth sometimes I used elvis, vile, xvi, calvin, etc.  And this is
+the reason that I can state that VIM is the best! (Ferenc Deak, Hungary)
+
+VIM is by far the best editor that I have used in a long time, and I have
+looked at just about every thing that is available for every platform that I
+use.  VIM is the best on all of them.  (Guy L. Oliver)
+
+VIM is the greatest editor since the stone chisel.  (Jose Unpingco, USA)
+
+I would like to say that with VIM I am finally making the 'emacs to vi'
+transition - as an Editor it is so much better in many ways: keyboard layout,
+memory usage, text alteration to name 3. (Mark Adam)
+
+In fact, now if I want to know what a particular setting does in vi, I fire up
+VIM and check out it's help!  (Nikhil Patel, USA)
+
+As a vi user, VIM has made working with text a far more pleasant task than
+before I encountered this program.  (Steinar Knutsen, Norway)
+
+I use VIM since version 3.0.  Since that time, it is the ONLY editor I use,
+with Solaris, Linux and OS/2 Warp.  I suggest all my friends to use VIM, they
+try, and they continue using it.  VIM is really the best software I have ever
+downloaded from the Internet, and the best editor I know of. (Marco
+Eccettuato, Italy)
+
+
+In summary:
+     __     ___		    _	    _	_  ___ _____
+     \ \   / (_)_ __ ___   (_)___  | | | |/ _ \_   _|
+      \ \ / /| | '_ ` _ \  | / __| | |_| | | | || |
+       \ V / | | | | | | | | \__ \ |  _  | |_| || |
+	\_/  |_|_| |_| |_| |_|___/ |_| |_|\___/ |_|
+	     ____ _____ _   _ _____ _____ _ _
+	    / ___|_   _| | | |	___|  ___| | |
+	    \___ \ | | | | | | |_  | |_  | | |
+	     ___) || | | |_| |	_| |  _| |_|_|
+	    |____/ |_|	\___/|_|   |_|	 (_|_)	      (Tony Nugent, Australia)
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/recover.txt b/runtime/doc/recover.txt
new file mode 100644
index 0000000..19cbe01
--- /dev/null
+++ b/runtime/doc/recover.txt
@@ -0,0 +1,165 @@
+*recover.txt*   For Vim version 7.0aa.  Last change: 2004 Apr 16
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Recovery after a crash					*crash-recovery*
+
+You have spent several hours typing in that text that has to be finished
+next morning, and then disaster strikes: Your computer crashes.
+
+			DON'T PANIC!
+
+You can recover most of your changes from the files that Vim uses to store
+the contents of the file.  Mostly you can recover your work with one command:
+	vim -r filename
+
+1. The swap file	|swap-file|
+2. Recovery		|recovery|
+
+==============================================================================
+1. The swap file					*swap-file*
+
+Vim stores the things you changed in a swap file.  Using the original file
+you started from plus the swap file you can mostly recover your work.
+
+You can see the name of the current swap file being used with the command:
+
+	:sw[apname]					*:sw* *:swapname*
+
+The name of the swap file is normally the same as the file you are editing,
+with the extension ".swp".
+- On Unix, a '.' is prepended to swap file names in the same directory as the
+  edited file.  This avoids that the swap file shows up in a directory
+  listing.
+- On MS-DOS machines and when the 'shortname' option is on, any '.' in the
+  original file name is replaced with '_'.
+- If this file already exists (e.g., when you are recovering from a crash) a
+  warning is given and another extension is used, ".swo", ".swn", etc.
+- An existing file will never be overwritten.
+- The swap file is deleted as soon as Vim stops editing the file.
+
+Technical: The replacement of '.' with '_' is done to avoid problems with
+	   MS-DOS compatible filesystems (e.g., crossdos, multidos).  If Vim
+	   is able to detect that the file is on an MS-DOS-like filesystem, a
+	   flag is set that has the same effect as the 'shortname' option.
+	   This flag is reset when you start editing another file.
+							*E326*
+	   If the ".swp" file name already exists, the last character is
+	   decremented until there is no file with that name or ".saa" is
+	   reached.  In the last case, no swap file is created.
+
+By setting the 'directory' option you can place the swap file in another place
+than where the edited file is.
+Advantages:
+- You will not pollute the directories with ".swp" files.
+- When the 'directory' is on another partition, reduce the risk of damaging
+  the file system where the file is (in a crash).
+Disadvantages:
+- You can get name collisions from files with the same name but in different
+  directories (although Vim tries to avoid that by comparing the path name).
+  This will result in bogus ATTENTION warning messages.
+- When you use your home directory, and somebody else tries to edit the same
+  file, he will not see your swap file and will not get the ATTENTION waring
+  message.
+On the Amiga you can also use a recoverable ram disk, but there is no 100%
+guarantee that this works.  Putting swap files in a normal ram disk (like RAM:
+on the Amiga) or in a place that is cleared when rebooting (like /tmp on Unix)
+makes no sense, you will lose the swap file in a crash.
+
+If you want to put swap files in a fixed place, put a command resembling the
+following ones in your .vimrc:
+	:set dir=dh2:tmp	(for Amiga)
+	:set dir=~/tmp		(for Unix)
+	:set dir=c:\\tmp	(for MS-DOS and Win32)
+This is also very handy when editing files on floppy.  Of course you will have
+to create that "tmp" directory for this to work!
+
+For read-only files, a swap file is not used.  Unless the file is big, causing
+the amount of memory used to be higher than given with 'maxmem' or
+'maxmemtot'.  And when making a change to a read-only file, the swap file is
+created anyway.
+
+The 'swapfile' option can be reset to avoid creating a swapfile.
+
+
+Detecting an existing swap file ~
+
+You can find this in the user manual, section |11.3|.
+
+
+Updating the swapfile ~
+
+The swap file is updated after typing 200 characters or when you have not
+typed anything for four seconds.  This only happens if the buffer was
+changed, not when you only moved around.  The reason why it is not kept up to
+date all the time is that this would slow down normal work too much.  You can
+change the 200 character count with the 'updatecount' option.  You can set
+the time with the 'updatetime' option.  The time is given in milliseconds.
+After writing to the swap file Vim syncs the file to disk.  This takes some
+time, especially on busy Unix systems.  If you don't want this you can set the
+'swapsync' option to an empty string.  The risk of losing work becomes bigger
+though.  On some non-Unix systems (MS-DOS, Amiga) the swap file won't be
+written at all.
+
+If the writing to the swap file is not wanted, it can be switched off by
+setting the 'updatecount' option to 0.  The same is done when starting Vim
+with the "-n" option.  Writing can be switched back on by setting the
+'updatecount' option to non-zero.  Swap files will be created for all buffers
+when doing this.  But when setting 'updatecount' to zero, the existing swap
+files will not be removed, it will only affect files that will be opened
+after this.
+
+If you want to make sure that your changes are in the swap file use this
+command:
+
+					*:pre* *:preserve* *E313* *E314*
+:pre[serve]		Write all text for all buffers into swap file.  The
+			original file is no longer needed for recovery.  {Vi:
+			emergency exit}
+
+A Vim swap file can be recognized by the first six characters: "b0VIM ".
+After that comes the version number, e.g., "3.0".
+
+==============================================================================
+2. Recovery					*recovery* *E308* *E311*
+
+Basic file recovery is explained in the user manual: |usr_11.txt|.
+
+Another way to do recovery is to start Vim and use the ":recover" command.
+This is easy when you start Vim to edit a file and you get the "ATTENTION:
+Found a swap file ..." message.  In this case the single command ":recover"
+will do the work.  You can also give the name of the file or the swap file to
+the recover command:
+					*:rec* *:recover* *E305* *E306* *E307*
+:rec[over] [file]	Try to recover [file] from the swap file.  If [file]
+			is not given use the file name for the current
+			buffer.  The current contents of the buffer are lost.
+			This command fails if the buffer was modified.
+
+:rec[over]! [file]	Like ":recover", but any changes in the current
+			buffer are lost.
+
+							*E312* *E309* *E310*
+Vim has some intelligence about what to do if the swap file is corrupt in
+some way.  If Vim has doubt about what it found, it will give an error
+message and insert lines with "???" in the text.  If you see an error message
+while recovering, search in the file for "???" to see what is wrong.  You may
+want to cut and paste to get the text you need.
+
+The most common remark is "???LINES MISSING".  This means that Vim cannot read
+the text from the original file.  This can happen if the system crashed and
+parts of the original file were not written to disk.
+
+Be sure that the recovery was successful before overwriting the original
+file or deleting the swap file.  It is good practice to write the recovered
+file elsewhere and run 'diff' to find out if the changes you want are in the
+recovered file.
+
+Once you are sure the recovery is ok delete the swap file.  Otherwise, you
+will continue to get warning messages that the ".swp" file already exists.
+
+{Vi: recovers in another way and sends mail if there is something to recover}
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/remote.txt b/runtime/doc/remote.txt
new file mode 100644
index 0000000..e3d3224
--- /dev/null
+++ b/runtime/doc/remote.txt
@@ -0,0 +1,188 @@
+*remote.txt*    For Vim version 7.0aa.  Last change: 2003 Nov 10
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Vim client-server communication				*client-server*
+
+1. Common functionality		|clientserver|
+2. X11 specific items		|x11-clientserver|
+3. MS-Windows specific items	|w32-clientserver|
+
+{Vi does not have any of these commands}
+
+==============================================================================
+1. Common functionality					*clientserver*
+
+When compiled with the |+clientserver| option, Vim can act as a command
+server.  It accepts messages from a client and executes them.  At the same
+time, Vim can function as a client and send commands to a Vim server.
+
+The following command line arguments are available:
+
+    argument			meaning	~
+
+   --remote [+{cmd}] {file} ...					*--remote*
+				Open the file list in a remote Vim.  When
+				there is no Vim server, execute locally.
+				There is one optional init command: +{cmd}.
+				This must be an Ex command that can be
+				followed by "|".
+				The rest of the command line is taken as the
+				file list.  Thus any non-file arguments must
+				come before this.
+				You cannot edit stdin this way |--|.
+				The remote Vim is raised.  If you don't want
+				this use >
+				 vim --remote-send "<C-\><C-N>:n filename<CR>"
+<  --remote-silent [+{cmd}] {file} ...			*--remote-silent*
+				As above, but don't complain if there is no
+				server and the file is edited locally.
+   --remote-wait [+{cmd}] {file} ...				*--remote-wait*
+				As --remote, but wait for files to complete
+				(unload) in remote Vim.
+   --remote-wait-silent [+{cmd}] {file} ...		*--remote-wait-silent*
+				As --remote-wait, but don't complain if there
+				is no server.
+								*--servername*
+   --servername {name}		Become the server {name}.  When used together
+				with one of the --remote commands: connect to
+				server {name} instead of the default (see
+				below).
+								*--remote-send*
+   --remote-send {keys}		Send {keys} to server and exit.
+								*--remote-expr*
+   --remote-expr {expr}		Evaluate {expr} in server and
+				print the result on stdout.
+								*--serverlist*
+   --serverlist			Output a list of server names.
+
+
+Examples ~
+
+Edit "file.txt" in an already running GVIM server: >
+    gvim --remote file.txt
+
+Edit "file.txt" in an already running server called FOOBAR: >
+    gvim --servername FOOBAR --remote file.txt
+
+Edit "file.txt" in server "FILES" if it exists, become server "FILES"
+otherwise: >
+    gvim --servername FILES --remote-silent file.txt
+
+This doesn't work, all arguments after --remote will be used as file names: >
+    gvim --remote --servername FOOBAR file.txt
+
+Edit file "+foo" in a remote server (note the use of "./" to avoid the special
+meaning of the leading plus): >
+    vim --remote ./+foo
+
+Tell the remote server "BLA" to write all files and exit: >
+    vim --servername BLA --remote-send '<C-\><C-N>:wqa<CR>'
+
+
+SERVER NAME
+
+By default Vim will try to register the name under which it was invoked (gvim,
+egvim ...).  This can be overridden with the --servername argument.  If the
+specified name is not available, a postfix is applied until a free name is
+encountered, ie. "gvim1" for the second invocation of gvim on a particular
+X-server.  The resulting name is available in the servername builtin variable
+|v:servername|.  The case of the server name is ignored, thus "gvim" and
+"GVIM" are considered equal.
+
+When Vim is invoked with --remote, --remote-wait or --remote-send it will try
+to locate the server name determined by the invocation name and --servername
+argument as described above.  If an exact match is not available, the first
+server with the number postfix will be used.  If a name with the number
+postfix is specified with the --servername argument, it must match exactly.
+
+If no server can be located and --remote or --remote-wait was used, Vim will
+start up according to the rest of the command line and do the editing by
+itself.  This way it is not necessary to know whether gvim is already started
+when sending command to it.
+
+The --serverlist argument will cause Vim to print a list of registered command
+servers on the standard output (stdout) and exit.
+
+Win32 Note: Making the Vim server go to the foreground doesn't always work,
+because MS-Windows doesn't allow it.  The client will move the server to the
+foreground when using the --remote or --remote-wait argument and the server
+name starts with "g".
+
+
+REMOTE EDITING
+
+The --remote argument will cause a |:drop| command to be constructed from the
+rest of the command line and sent as described above.
+The --remote-wait argument does the same thing and additionally sets up to
+wait for each of the files to have been edited.  This uses the BufUnload
+event, thus as soon as a file has been unloaded, Vim assumes you are done
+editing it.
+Note that the --remote and --remote-wait arguments will consume the rest of
+the command line.  Ie. all remaining arguments will be regarded as filenames.
+You can not put options there!
+
+
+FUNCTIONS
+								*E240* *E573*
+There are a number of Vim functions for scripting the command server.  See
+the description in |eval.txt| or use CTRL-] on the function name to jump to
+the full explanation.
+
+    synopsis				     explanation ~
+    remote_expr( server, string, idvar)      send expression
+    remote_send( server, string, idvar)      send key sequence
+    serverlist()			     get a list of available servers
+    remote_peek( serverid, retvar)	     check for reply string
+    remote_read( serverid)		     read reply string
+    server2client( serverid, string)	     send reply string
+    remote_foreground( server)		     bring server to the front
+
+See also the explanation of |CTRL-\_CTRL-N|.  Very useful as a leading key
+sequence.
+The {serverid} for server2client() can be obtained with expand("<client>")
+
+==============================================================================
+2. X11 specific items					*x11-clientserver*
+				    *E247* *E248* *E251* *E258* *E277*
+
+The communication between client and server goes through the X server.  The
+display of the Vim server must be specified.  The usual protection of the X
+server is used, you must be able to open a window on the X server for the
+communication to work.  It is possible to communicate between different
+systems.
+
+By default, a GUI Vim will register a name on the X-server by which it can be
+addressed for subsequent execution of injected strings.  Vim can also act as
+a client and send strings to other instances of Vim on the same X11 display.
+
+When an X11 GUI Vim (gvim) is started, it will try to register a send-server
+name on the 'VimRegistry' property on the root window.
+
+A non GUI Vim with access to the X11 display (|xterm-clipboard| enabled), can
+also act as a command server if a server name is explicitly given with the
+--servername argument.
+
+An empty --servername argument will cause the command server to be disabled.
+
+To send commands to a Vim server from another application, read the source
+file src/if_xcmdsrv.c, it contains some hints about the protocol used.
+
+==============================================================================
+3. Win32 specific items					*w32-clientserver*
+
+Every Win32 Vim can work as a server, also in the console.  You do not need a
+version compiled with OLE.  Windows messages are used, this works on any
+version of MS-Windows.  But only communication within one system is possible.
+
+Since MS-Windows messages are used, any other application should be able to
+communicate with a Vim server.  An alternative is using the OLE functionality
+|ole-interface|.
+
+When using gvim, the --remote-wait only works properly this way: >
+
+	start /w gvim --remote-wait file.txt
+<
+ vim:tw=78:sw=4:ts=8:ft=help:norl:
diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt
new file mode 100644
index 0000000..5aee401
--- /dev/null
+++ b/runtime/doc/repeat.txt
@@ -0,0 +1,529 @@
+*repeat.txt*    For Vim version 7.0aa.  Last change: 2004 Apr 02
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Repeating commands, Vim scripts and debugging			*repeating*
+
+Chapter 26 of the user manual introduces repeating |usr_26.txt|.
+
+1. Single repeats	|single-repeat|
+2. Multiple repeats	|multi-repeat|
+3. Complex repeats	|complex-repeat|
+4. Using Vim scripts	|using-scripts|
+5. Debugging scripts	|debug-scripts|
+
+==============================================================================
+1. Single repeats					*single-repeat*
+
+							*.*
+.			Repeat last change, with count replaced with [count].
+			Also repeat a yank command, when the 'y' flag is
+			included in 'cpoptions'.
+
+Simple changes can be repeated with the "." command.  Without a count, the
+count of the last change is used.  If you enter a count, it will replace the
+last one.  If the last change included a specification of a numbered register,
+the register number will be incremented.  See |redo-register| for an example
+how to use this.  Note that when repeating a command that used a Visual
+selection, the same SIZE of area is used, see |visual-repeat|.
+
+							*@:*
+@:			Repeat last command-line [count] times.
+			{not available when compiled without the
+			|+cmdline_hist| feature}
+
+
+==============================================================================
+2. Multiple repeats					*multi-repeat*
+
+						*:g* *:global* *E147* *E148*
+:[range]g[lobal]/{pattern}/[cmd]
+			Execute the Ex command [cmd] (default ":p") on the
+			lines within [range] where {pattern} matches.
+
+:[range]g[lobal]!/{pattern}/[cmd]
+			Execute the Ex command [cmd] (default ":p") on the
+			lines within [range] where {pattern} does NOT match.
+
+							*:v* *:vglobal*
+:[range]v[global]/{pattern}/[cmd]
+			Same as :g!.
+
+The global commands work by first scanning through the [range] lines and
+marking each line where a match occurs (for a multi-line pattern, only the
+start of the match matters).
+In a second scan the [cmd] is executed for each marked line with its line
+number prepended.  For ":v" and ":g!" the command is executed for each not
+marked line.  If a line is deleted its mark disappears.
+The default for [range] is the whole buffer (1,$).  Use "CTRL-C" to interrupt
+the command.  If an error message is given for a line, the command for that
+line is aborted and the global command continues with the next marked or
+unmarked line.
+
+To repeat a non-Ex command, you can use the ":normal" command: >
+	:g/pat/normal {commands}
+Make sure that {commands} ends with a whole command, otherwise Vim will wait
+for you to type the rest of the command for each match.  The screen will not
+have been updated, so you don't know what you are doing.  See |:normal|.
+
+The undo/redo command will undo/redo the whole global command at once.
+The previous context mark will only be set once (with "''" you go back to
+where the cursor was before the global command).
+
+The global command sets both the last used search pattern and the last used
+substitute pattern (this is vi compatible).  This makes it easy to globally
+replace a string:
+	:g/pat/s//PAT/g
+This replaces all occurrences of "pat" with "PAT".  The same can be done with:
+	:%s/pat/PAT/g
+Which is two characters shorter!
+
+==============================================================================
+3. Complex repeats					*complex-repeat*
+
+							*q* *recording*
+q{0-9a-zA-Z"}		Record typed characters into register {0-9a-zA-Z"}
+			(uppercase to append).  The 'q' command is disabled
+			while executing a register, and it doesn't work inside
+			a mapping.  {Vi: no recording}
+
+q			Stops recording.  (Implementation note: The 'q' that
+			stops recording is not stored in the register, unless
+			it was the result of a mapping)  {Vi: no recording}
+
+							*@*
+@{0-9a-z".=*}		Execute the contents of register {0-9a-z".=*} [count]
+			times.  Note that register '%' (name of the current
+			file) and '#' (name of the alternate file) cannot be
+			used.  For "@=" you are prompted to enter an
+			expression.  The result of the expression is then
+			executed.  See also |@:|.  {Vi: only named registers}
+
+							*@@*
+@@			Repeat the previous @{0-9a-z":*} [count] times.
+
+:[addr]*{0-9a-z".=}						*:@* *:star*
+:[addr]@{0-9a-z".=*}	Execute the contents of register {0-9a-z".=*} as an Ex
+			command.  First set cursor at line [addr] (default is
+			current line).  When the last line in the register does
+			not have a <CR> it will be added automatically when
+			the 'e' flag is present in 'cpoptions'.
+			Note that the ":*" command is only recognized when the
+			'*' flag is present in 'cpoptions'.  This is NOT the
+			default when 'nocompatible' is used.
+			For ":@=" the last used expression is used.  The
+			result of evaluating the expression is executed as an
+			Ex command.
+			Mappings are not recognized in these commands.
+			{Vi: only in some versions} Future: Will execute the
+			register for each line in the address range.
+
+							*:@:*
+:[addr]@:		Repeat last command-line.  First set cursor at line
+			[addr] (default is current line).  {not in Vi}
+
+							*:@@*
+:[addr]@@		Repeat the previous :@{0-9a-z"}.  First set cursor at
+			line [addr] (default is current line).  {Vi: only in
+			some versions}
+
+==============================================================================
+4. Using Vim scripts					*using-scripts*
+
+For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
+
+					*:so* *:source* *load-vim-script*
+:so[urce] {file}	Read Ex commands from {file}.  These are commands that
+			start with a ":".
+
+:so[urce]! {file}	Read Vim commands from {file}.  These are commands
+			that are executed from Normal mode, like you type
+			them.
+			When used after |:global|, |:argdo|, |:windo|,
+			|:bufdo|, in a loop or when another command follows
+			the display won't be updated while executing the
+			commands.
+			{not in Vi}
+
+							*:ru* *:runtime*
+:ru[ntime][!] {file} ..
+			Read Ex commands from {file} in each directory given
+			by 'runtimepath'.  There is no error for non-existing
+			files.  Example: >
+				:runtime syntax/c.vim
+
+<			There can be multiple {file} arguments, separated by
+			spaces.  Each {file} is searched for in the first
+			directory from 'runtimepath', then in the second
+			directory, etc.  Use a backslash to include a space
+			inside {file} (although it's better not to use spaces
+			in file names, it causes trouble).
+
+			When [!] is included, all found files are sourced.
+			When it is not included only the first found file is
+			sourced.
+
+			When {file} contains wildcards it is expanded to all
+			matching files.  Example: >
+				:runtime! plugin/*.vim
+<			This is what Vim uses to load the plugin files when
+			starting up. This similar command: >
+				:runtime plugin/*.vim
+<			would source the first file only.
+
+			When 'verbose' is one or higher, there is a message
+			when no file could be found.
+			When 'verbose' is two or higher, there is a message
+			about each searched file.
+			{not in Vi}
+
+:scripte[ncoding] [encoding]		*:scripte* *:scriptencoding* *E167*
+			Specify the character encoding used in the script.
+			The following lines will be converted from [encoding]
+			to the value of the 'encoding' option, if they are
+			different.  Examples: >
+				scriptencoding iso-8859-5
+				scriptencoding cp932
+<
+			When [encoding] is empty, no conversion is done.  This
+			can be used to restrict conversion to a sequence of
+			lines: >
+				scriptencoding euc-jp
+				... lines to be converted ...
+				scriptencoding
+				... not converted ...
+
+<			When conversion isn't supported by the system, there
+			is no error message and no conversion is done.
+
+			Don't use "ucs-2" or "ucs-4", scripts cannot be in
+			these encodings (they would contain NUL bytes).
+			When a sourced script starts with a BOM (Byte Order
+			Mark) in utf-8 format Vim will recognized it, no need
+			to use ":scriptencoding utf-8" then.
+
+			When compiled without the |+multi_byte| feature this
+			command is ignored.
+			{not in Vi}
+
+						*:scrip* *:scriptnames*
+:scrip[tnames]		List all sourced script names, in the order they were
+			first sourced.  The number is used for the script ID
+			|<SID>|.
+			{not in Vi} {not available when compiled without the
+			|+eval| feature}
+
+						*:fini* *:finish* *E168*
+:fini[sh]		Stop sourcing a script.  Can only be used in a Vim
+			script file.  This is a quick way to skip the rest of
+			the file.  If it is used after a |:try| but before the
+			matching |:finally| (if present), the commands
+			following the ":finally" up to the matching |:endtry|
+			are executed first.  This process applies to all
+			nested ":try"s in the script.  The outermost ":endtry"
+			then stops sourcing the script.  {not in Vi}
+
+All commands and command sequences can be repeated by putting them in a named
+register and then executing it.  There are two ways to get the commands in the
+register:
+- Use the record command "q".  You type the commands once, and while they are
+  being executed they are stored in a register.  Easy, because you can see
+  what you are doing.  If you make a mistake, "p"ut the register into the
+  file, edit the command sequence, and then delete it into the register
+  again.  You can continue recording by appending to the register (use an
+  uppercase letter).
+- Delete or yank the command sequence into the register.
+
+Often used command sequences can be put under a function key with the ':map'
+command.
+
+An alternative is to put the commands in a file, and execute them with the
+':source!' command.  Useful for long command sequences.  Can be combined with
+the ':map' command to put complicated commands under a function key.
+
+The ':source' command reads Ex commands from a file line by line.  You will
+have to type any needed keyboard input.  The ':source!' command reads from a
+script file character by character, interpreting each character as if you
+typed it.
+
+Example: When you give the ":!ls" command you get the |hit-enter| prompt.  If
+you ':source' a file with the line "!ls" in it, you will have to type the
+<Enter> yourself.  But if you ':source!' a file with the line ":!ls" in it,
+the next characters from that file are read until a <CR> is found.  You will
+not have to type <CR> yourself, unless ":!ls" was the last line in the file.
+
+It is possible to put ':source[!]' commands in the script file, so you can
+make a top-down hierarchy of script files.  The ':source' command can be
+nested as deep as the number of files that can be opened at one time (about
+15).  The ':source!' command can be nested up to 15 levels deep.
+
+You can use the "<sfile>" string (literally, this is not a special key) inside
+of the sourced file, in places where a file name is expected.  It will be
+replaced by the file name of the sourced file.  For example, if you have a
+"other.vimrc" file in the same directory as your ".vimrc" file, you can source
+it from your ".vimrc" file with this command: >
+	:source <sfile>:h/other.vimrc
+
+In script files terminal-dependent key codes are represented by
+terminal-independent two character codes.  This means that they can be used
+in the same way on different kinds of terminals.  The first character of a
+key code is 0x80 or 128, shown on the screen as "~@".  The second one can be
+found in the list |key-notation|.  Any of these codes can also be entered
+with CTRL-V followed by the three digit decimal code.  This does NOT work for
+the <t_xx> termcap codes, these can only be used in mappings.
+
+							*:source_crnl* *W15*
+MS-DOS, Win32 and OS/2: Files that are read with ":source" normally have
+<CR><NL> <EOL>s.  These always work.  If you are using a file with <NL> <EOL>s
+(for example, a file made on Unix), this will be recognized if 'fileformats'
+is not empty and the first line does not end in a <CR>.  This fails if the
+first line has something like ":map <F1> :help^M", where "^M" is a <CR>.  If
+the first line ends in a <CR>, but following ones don't, you will get an error
+message, because the <CR> from the first lines will be lost.
+
+Macintosh: Files that are read with ":source" normally have <CR> <EOL>s.
+These always work.  If you are using a file with <NL> <EOL>s (for example, a
+file made on Unix), this will be recognized if 'fileformats' is not empty and
+the first line does not end in a <CR>.  Be careful not to use a file with <NL>
+linebreaks which has a <CR> in first line.
+
+On other systems, Vim expects ":source"ed files to end in a <NL>.  These
+always work.  If you are using a file with <CR><NL> <EOL>s (for example, a
+file made on MS-DOS), all lines will have a trailing <CR>.  This may cause
+problems for some commands (e.g., mappings).  There is no automatic <EOL>
+detection, because it's common to start with a line that defines a mapping
+that ends in a <CR>, which will confuse the automaton.
+
+							*line-continuation*
+Long lines in a ":source"d Ex command script file can be split by inserting
+a line continuation symbol "\" (backslash) at the start of the next line.
+There can be white space before the backslash, which is ignored.
+
+Example: the lines >
+	:set comments=sr:/*,mb:*,el:*/,
+		     \://,
+		     \b:#,
+		     \:%,
+		     \n:>,
+		     \fb:-
+are interpreted as if they were given in one line:
+	:set comments=sr:/*,mb:*,el:*/,://,b:#,:%,n:>,fb:-
+
+All leading whitespace characters in the line before a backslash are ignored.
+Note however that trailing whitespace in the line before it cannot be
+inserted freely; it depends on the position where a command is split up
+whether additional whitespace is allowed or not.
+
+There is a problem with the ":append" and ":insert" commands: >
+   :1append
+   \asdf
+   .
+The backslash is seen as a line-continuation symbol, thus this results in the
+command: >
+   :1appendasdf
+   .
+To avoid this, add the 'C' flag to the 'cpoptions' option: >
+   :set cpo+=C
+   :1append
+   \asdf
+   .
+   :set cpo-=C
+
+Note that when the commands are inside a function, you need to add the 'C'
+flag when defining the function, it is not relevant when executing it. >
+   :set cpo+=C
+   :function Foo()
+   :1append
+   \asdf
+   .
+   :endfunction
+   :set cpo-=C
+
+Rationale:
+	Most programs work with a trailing backslash to indicate line
+	continuation.  Using this in Vim would cause incompatibility with Vi.
+	For example for this Vi mapping: >
+		:map xx  asdf\
+<	Therefore the unusual leading backslash is used.
+
+==============================================================================
+5. Debugging scripts					*debug-scripts*
+
+Besides the obvious messages that you can add to your scripts to find out what
+they are doing, Vim offers a debug mode.  This allows you to step through a
+sourced file or user function and set breakpoints.
+
+NOTE: The debugging mode is far from perfect.  Debugging will have side
+effects on how Vim works.  You cannot use it to debug everything.  For
+example, the display is messed up by the debugging messages.
+{Vi does not have a debug mode}
+
+An alternative to debug mode is setting the 'verbose' option.  With a bigger
+number it will give more verbose messages about what Vim is doing.
+
+
+STARTING DEBUG MODE						*debug-mode*
+
+To enter debugging mode use one of these methods:
+1. Start Vim with the |-D| argument: >
+	vim -D file.txt
+<  Debugging will start as soon as the first vimrc file is sourced.  This is
+   useful to find out what is happening when Vim is starting up.  A side
+   effect is that Vim will switch the terminal mode before initialisations
+   have finished, with unpredictable results.
+   For a GUI-only version (Windows, Macintosh) the debugging will start as
+   soon as the GUI window has been opened.  To make this happen early, add a
+   ":gui" command in the vimrc file.
+								*:debug*
+2. Run a command with ":debug" prepended.  Debugging will only be done while
+   this command executes.  Useful for debugging a specific script or user
+   function.  And for scripts and functions used by autocommands.  Example: >
+	:debug edit test.txt.gz
+
+3. Set a breakpoint in a sourced file or user function.  You could do this in
+   the command line: >
+	vim -c "breakadd file */explorer.vim" .
+<  This will run Vim and stop in the first line of the "explorer.vim" script.
+   Breakpoints can also be set while in debugging mode.
+
+In debugging mode every executed command is displayed before it is executed.
+Comment lines, empty lines and lines that are not executed are skipped.  When
+a line contains two commands, separated by "|", each command will be displayed
+separately.
+
+
+DEBUG MODE
+
+Once in debugging mode, the usual Ex commands can be used.  For example, to
+inspect the value of a variable: >
+	echo idx
+When inside a user function, this will print the value of the local variable
+"idx".  Prepend "g:" to get the value of a global variable: >
+	echo g:idx
+All commands are executed in the context of the current function or script.
+You can also set options, for example setting or resetting 'verbose' will show
+what happens, but you might want to set it just before executing the lines you
+are interested in: >
+	:set verbose=20
+
+Commands that require updating the screen should be avoided, because their
+effect won't be noticed until after leaving debug mode.  For example: >
+	:help
+won't be very helpful.
+
+There is a separate command-line history for debug mode.
+
+The line number for a function line is relative to the start of the function.
+If you have trouble figuring out where you are, edit the file that defines
+the function in another Vim, search for the start of the function and do
+"99j".  Replace "99" with the line number.
+
+Additionally, these commands can be used:
+							*>cont*
+	cont		Continue execution until the next breakpoint is hit.
+							*>quit*
+	quit		Abort execution.  This is like using CTRL-C, some
+			things might still be executed, doesn't abort
+			everything.  Still stops at the next breakpoint.
+							*>next*
+	next		Execute the command and come back to debug mode when
+			it's finished.  This steps over user function calls
+			and sourced files.
+							*>step*
+	step		Execute the command and come back to debug mode for
+			the next command.  This steps into called user
+			functions and sourced files.
+							*>interrupt*
+	interrupt	This is like using CTRL-C, but unlike ">quit" comes
+			back to debug mode for the next command that is
+			executed.  Useful for testing |:finally| and |:catch|
+			on interrupt exceptions.
+							*>finish*
+	finish		Finish the current script or user function and come
+			back to debug mode for the command after the one that
+			sourced or called it.
+
+About the additional commands in debug mode:
+- There is no command-line completion for them, you get the completion for the
+  normal Ex commands only.
+- You can shorten them, up to a single character: "c", "n", "s" and "f".
+- Hitting <CR> will repeat the previous one.  When doing another command, this
+  is reset (because it's not clear what you want to repeat).
+- When you want to use the Ex command with the same name, prepend a colon:
+  ":cont", ":next", ":finish" (or shorter).
+
+
+DEFINING BREAKPOINTS
+							*:breaka* *:breakadd*
+:breaka[dd] func [lnum] {name}
+		Set a breakpoint in a function.  Example: >
+			:breakadd func Explore
+<		Doesn't check for a valid function name, thus the breakpoint
+		can be set before the function is defined.
+
+:breaka[dd] file [lnum] {name}
+		Set a breakpoint in a sourced file.  Example: >
+			:breakadd file 43 .vimrc
+
+The [lnum] is the line number of the breakpoint.  Vim will stop at or after
+this line.  When omitted line 1 is used.
+
+{name} is a pattern that is matched with the file or function name.  The
+pattern is like what is used for autocommands.  There must be a full match (as
+if the pattern starts with "^" and ends in "$").  A "*" matches any sequence
+of characters.  'ignorecase' is not used, but "\c" can be used in the pattern
+to ignore case |/\c|.  Don't include the () for the function name!
+
+The match for sourced scripts is done against the full file name.  Examples: >
+	breakadd file explorer
+won't match, the path is missing. >
+	breakadd file *explorer.vim
+matches ".../plugin/explorer.vim" and ".../plugin/iexplorer.vim". >
+	breakadd file */explorer.vim
+matches ".../plugin/explorer.vim" only.
+
+The match for functions is done against the name as it's shown in the output
+of ":function".  For local functions this means that something like "<SNR>99_"
+is prepended.
+
+
+DELETING BREAKPOINTS
+						*:breakd* *:breakdel* *E161*
+:breakd[el] {nr}
+		Delete breakpoint {nr}.  Use |:breaklist| to see the number of
+		each breakpoint.
+
+:breakd[el] func [lnum] {name}
+		Delete a breakpoint in a function.
+
+:breakd[el] file [lnum] {name}
+		Delete a breakpoint in a sourced file.
+
+When [lnum] is omitted, the first breakpoint in the function or file is
+deleted.
+The {name} must be exactly the same as what was typed for the ":breakadd"
+command.  "explorer", "*explorer.vim" and "*explorer*" are different.
+
+
+LISTING BREAKPOINTS
+							*:breakl* *:breaklist*
+:breakl[ist]
+		List all breakpoints.
+
+
+OBSCURE
+
+						*:debugg* *:debuggreedy*
+:debugg[reedy]
+		Read debug mode commands from the normal input stream, instead
+		of getting them directly from the user.  Only useful for test
+		scripts.  Example: >
+		  echo 'q^Mq' | vim -e -s -c debuggreedy -c 'breakadd file script.vim' -S script.vim
+
+:0debugg[reedy]
+		Undo ":debuggreedy": get debug mode commands directly from the
+		user, don't use typeahead for debug commands.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/rileft.txt b/runtime/doc/rileft.txt
new file mode 100644
index 0000000..c7c53aa
--- /dev/null
+++ b/runtime/doc/rileft.txt
@@ -0,0 +1,125 @@
+*rileft.txt*    For Vim version 7.0aa.  Last change: 2003 May 07
+
+
+		  VIM REFERENCE MANUAL    by Avner Lottem
+					  updated by Nadim Shaikli
+
+
+Right to Left display mode for Vim				*rileft*
+
+
+These functions were originally created by Avner Lottem:
+   E-mail: alottem@iil.intel.com
+   Phone:  +972-4-8307322
+
+{Vi does not have any of these commands}
+
+								*E26*
+This feature is only available when the |+rightleft| feature was enabled
+at compile time.
+
+
+Introduction
+------------
+Some languages such as Arabic, Farsi, Hebrew (among others) require the
+ability to display their text from right-to-left.  Files in those languages
+are stored conventionally and the right-to-left requirement is only a
+function of the display engine (per the Unicode specification).  In
+right-to-left oriented files the characters appear on the screen from
+right to left.
+
+Bidirectionality (or bidi for short) is what Unicode offers as a full
+solution to these languages.  Bidi offers the user the ability to view
+both right-to-left as well as left-to-right text properly at the same time
+within the same window.  Vim currently, due to simplicity, does not offer
+bidi and is merely opting to present a functional means to display/enter/use
+right-to-left languages.  An older hybrid solution in which direction is
+encoded for every character (or group of characters) are not supported either
+as this kind of support is out of the scope of a simple addition to an
+existing editor (and its not sanctioned by Unicode either).
+
+
+Highlights
+----------
+o  Editing left-to-right files as in the original Vim, no change.
+
+o  Viewing and editing files in right-to-left windows.  File orientation
+   is per window, so it is possible to view the same file in right-to-left
+   and left-to-right modes, simultaneously.  (Useful for editing mixed files
+   in which both right-to-left and left-to-right text exist).
+
+o  Compatibility to the original Vim.  Almost all features work in
+   right-to-left mode (see Bugs below).
+
+o  Backing from reverse insert mode to the correct place in the file
+   (if possible).
+
+o  No special terminal with right-to-left capabilities is required.  The
+   right-to-left changes are completely hardware independent.
+
+o  Many languages use and require right-to-left support.  These languages
+   can quite easily be supported given the inclusion of their required
+   keyboard mappings and some possible minor code change.  Some of the
+   current supported languages include - |arabic.txt|, |farsi.txt| and
+   |hebrew.txt|.
+
+
+Of Interest...
+--------------
+
+o  Invocations
+   -----------
+   + 'rightleft' ('rl') sets window orientation to right-to-left.
+   + 'delcombine' ('deco'), boolean, if editing UTF-8 encoded languages,
+     allows one to remove a composing character which gets superimposed
+     on those that proceeded them (some languages require this).
+   + 'rightleftcmd' ('rlc') sets the command-line within certain modes
+     (such as search) to be utilized in right-to-left orientation as well.
+
+o  Typing backwards					*ins-reverse*
+   ----------------
+   In lieu of using full-fledged the 'rightleft' option, one can opt for
+   reverse insertion.  When the 'revins' (reverse insert) option is set,
+   inserting happens backwards.  This can be used to type right-to-left
+   text.  When inserting characters the cursor is not moved and the text
+   moves rightwards.  A <BS> deletes the character under the cursor.
+   CTRL-W and CTRL-U also work in the opposite direction.  <BS>, CTRL-W
+   and CTRL-U do not stop at the start of insert or end of line, no matter
+   how the 'backspace' option is set.
+
+   There is no reverse replace mode (yet).
+
+   If the 'showmode' option is set, "-- REVERSE INSERT --" will be shown
+   in the status line when reverse Insert mode is active.
+
+o  Pasting when in a rightleft window
+   ----------------------------------
+   When cutting text with the mouse and pasting it in a rightleft window
+   the text will be reversed, because the characters come from the cut buffer
+   from the left to the right, while inserted in the file from the right to
+   the left.   In order to avoid it, toggle 'revins' before pasting.
+
+
+Bugs
+----
+o  Does not handle CTRL-A and CTRL-X commands (add and subtract) correctly
+   when in rightleft window.
+
+o  Does not support reverse insert and rightleft modes on the command-line.
+   However, functionality of the editor is not reduced, because it is
+   possible to enter mappings, abbreviations and searches typed from the
+   left to the right on the command-line.
+
+o  Somewhat slower in right-to-left mode, because right-to-left motion is
+   emulated inside Vim, not by the controlling terminal.
+
+o  When the Athena GUI is used, the bottom scrollbar works in the wrong
+   direction.  This is difficult to fix.
+
+o  When both 'rightleft' and 'revins' are on: 'textwidth' does not work.
+   Lines do not wrap at all; you just get a single, long line.
+
+o  There is no full bidirectionality (bidi) support.
+
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/russian.txt b/runtime/doc/russian.txt
new file mode 100644
index 0000000..868f5c8
--- /dev/null
+++ b/runtime/doc/russian.txt
@@ -0,0 +1,83 @@
+*russian.txt*   For Vim version 7.0aa.  Last change: 2004 Jun 09
+
+
+		  VIM REFERENCE MANUAL    by Vassily Ragosin
+
+
+Russian language localization and support in Vim	   *russian* *Russian*
+
+1. Introduction				  |russian-intro|
+2. Russian keymaps			  |russian-keymap|
+3. Localization				  |russian-l18n|
+4. Known issues				  |russian-issues|
+
+===============================================================================
+1. Introduction							*russian-intro*
+
+Russian language is supported perfectly well in Vim. You can type and view
+Russian text just as any other, without the need to tweak the settings.
+
+===============================================================================
+2. Russian keymaps					       *russian-keymap*
+
+To switch between languages you can use your system native keyboard switcher,
+or use one of the Russian keymaps, included in the Vim distribution.  For
+example,
+>
+    :set keymap=russian-jcukenwin
+<
+In the latter case, you can switch between languages even if you do not have
+system Russian keyboard or independently from a system-wide keyboard settings.
+See 'keymap'. You can also map a key to switch between keyboards, if you
+choose the latter option. See |:map|.
+
+For your convenience, to avoid switching between keyboards, when you need to
+enter Normal mode command, you can also set 'langmap' option:
+>
+    :set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ;ABCDEFGHIJKLMNOPQRSTUVWXYZ,
+    фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz
+
+This is in utf-8, you cannot read this if your 'encoding' is not utf-8.
+You have to type this command in one line, it is wrapped for the sake of
+readability.
+
+===============================================================================
+3. Localization							 *russian-l18n*
+
+If you wish to use messages, help files, menus and other items translated to
+Russian, you will need to install the RuVim Language Pack, available in
+different codepages from
+
+    http://www.sourceforge.net/projects/ruvim/
+
+Make sure that your Vim is at least 6.2.506 and use ruvim 0.5 or later for
+automatic installs. Vim also needs to be compiled with |+gettext| feature for
+user interface items translations to work.
+
+After downloading an archive from RuVim project, unpack it into your
+$VIMRUNTIME directory. We recommend using UTF-8 archive, if your version of
+Vim is compiled with |+multi_byte| feature enabled.
+
+In order to use the Russian documentation, make sure you have set the
+'helplang' option to "ru".
+
+===============================================================================
+4. Known issues						       *russian-issues*
+
+-- If you are using Russian message translations in Win32 console, then
+   you may see the output produced by "vim --help", "vim --version" commands
+   and Win32 console window title appearing in a wrong codepage. This problem
+   is related to a bug in GNU gettext library and may be fixed in the future
+   releases of gettext.
+
+-- When using the Win32 console version of Vim you may experience a problem
+   with many Cyrillic glyphs being replaced by whitespaces for some unknown
+   reason.  Sergey Khorev suggested a registry hack to avoid this:
+
+   REGEDIT4
+
+   [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
+   "1252"="c_1251.nls"
+
+===============================================================================
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/scroll.txt b/runtime/doc/scroll.txt
new file mode 100644
index 0000000..288552d
--- /dev/null
+++ b/runtime/doc/scroll.txt
@@ -0,0 +1,303 @@
+*scroll.txt*    For Vim version 7.0aa.  Last change: 2004 Jun 08
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Scrolling						*scrolling*
+
+These commands move the contents of the window.  If the cursor position is
+moved off of the window, the cursor is moved onto the window (with
+'scrolloff' screen lines around it).  A page is the number of lines in the
+window minus two.  The mnemonics for these commands may be a bit confusing.
+Remember that the commands refer to moving the window (the part of the buffer
+that you see) upwards or downwards in the buffer.  When the window moves
+upwards in the buffer, the text in the window moves downwards on your screen.
+
+See section |03.7| of the user manual for an introduction.
+
+1. Scrolling downwards		|scroll-down|
+2. Scrolling upwards		|scroll-up|
+3. Scrolling relative to cursor	|scroll-cursor|
+4. Scrolling horizontally	|scroll-horizontal|
+5. Scrolling synchronously	|scroll-binding|
+6. Scrolling with a mouse wheel |scroll-mouse-wheel|
+
+==============================================================================
+1. Scrolling downwards					*scroll-down*
+
+The following commands move the edit window (the part of the buffer that you
+see) downwards (this means that more lines downwards in the text buffer can be
+seen):
+
+							*CTRL-E*
+CTRL-E			Scroll window [count] lines downwards in the buffer.
+			Mnemonic: Extra lines.
+
+							*CTRL-D*
+CTRL-D			Scroll window Downwards in the buffer.  The number of
+			lines comes from the 'scroll' option (default: half a
+			screen).  If [count] given, first set 'scroll' option
+			to [count].  The cursor is moved the same number of
+			lines down in the file (if possible; when lines wrap
+			and when hitting the end of the file there may be a
+			difference).  When the cursor is on the last line of
+			the buffer nothing happens and a beep is produced.
+			See also 'startofline' option.
+			{difference from vi: Vim scrolls 'scroll' screen
+			lines, instead of file lines; makes a difference when
+			lines wrap}
+
+<S-Down>	or				*<S-Down>* *<kPageDown>*
+<PageDown>	or				*<PageDown>* *CTRL-F*
+CTRL-F			Scroll window [count] pages Forwards (downwards) in
+			the buffer.  See also 'startofline' option.
+
+							*z+*
+z+			Without [count]: Redraw with the line just below the
+			window at the top of the window.  Put the cursor in
+			that line, at the first non-blank in the line.
+			With [count]: just like "z<CR>".
+
+==============================================================================
+2. Scrolling upwards					*scroll-up*
+
+The following commands move the edit window (the part of the buffer that you
+see) upwards (this means that more lines upwards in the text buffer can be
+seen):
+
+							*CTRL-Y*
+CTRL-Y			Scroll window [count] lines upwards in the buffer.
+			Note: When using the MS-Windows key bindings CTRL-Y is
+			remapped to redo.
+
+							*CTRL-U*
+CTRL-U			Scroll window Upwards in the buffer.  The number of
+			lines comes from the 'scroll' option (default: half a
+			screen).  If [count] given, first set the 'scroll'
+			option to [count].  The cursor is moved the same
+			number of lines up in the file (if possible; when
+			lines wrap and when hitting the end of the file there
+			may be a difference).  When the cursor is on the first
+			line of the buffer nothing happens and a beep is
+			produced.  See also 'startofline' option.
+			{difference from vi: Vim scrolls 'scroll' screen
+			lines, instead of file lines; makes a difference when
+			lines wrap}
+
+<S-Up>		or					*<S-Up>* *<kPageUp>*
+<PageUp>	or					*<PageUp>* *CTRL-B*
+CTRL-B			Scroll window [count] pages Backwards (upwards) in the
+			buffer.  See also 'startofline' option.
+
+							*z^*
+z^			Without [count]: Redraw with the line just above the
+			window at the bottom of the window.  Put the cursor in
+			that line, at the first non-blank in the line.
+			With [count]: First scroll the text to put the [count]
+			line at the bottom of the window, then redraw with the
+			line which is now at the top of the window at the
+			bottom of the window.  Put the cursor in that line, at
+			the first non-blank in the line.
+
+==============================================================================
+3. Scrolling relative to cursor				*scroll-cursor*
+
+The following commands reposition the edit window (the part of the buffer that
+you see) while keeping the cursor on the same line:
+
+							*z<CR>*
+z<CR>			Redraw, line [count] at top of window (default
+			cursor line).  Put cursor at first non-blank in the
+			line.
+
+							*zt*
+zt			Like "z<CR>", but leave the cursor in the same
+			column.  {not in Vi}
+
+							*zN<CR>*
+z{height}<CR>		Redraw, make window {height} lines tall.  This is
+			useful to make the number of lines small when screen
+			updating is very slow.  Cannot make the height more
+			than the physical screen height.
+
+							*z.*
+z.			Redraw, line [count] at center of window (default
+			cursor line).  Put cursor at first non-blank in the
+			line.
+
+							*zz*
+zz			Like "z.", but leave the cursor in the same column.
+			Careful: If caps-lock is on, this commands becomes
+			"ZZ": write buffer and exit!  {not in Vi}
+
+							*z-*
+z-			Redraw, line [count] at bottom of window (default
+			cursor line).  Put cursor at first non-blank in the
+			line.
+
+							*zb*
+zb			Like "z-", but leave the cursor in the same column.
+			{not in Vi}
+
+==============================================================================
+4. Scrolling horizontally				*scroll-horizontal*
+
+For the following four commands the cursor follows the screen.  If the
+character that the cursor is on is moved off the screen, the cursor is moved
+to the closest character that is on the screen.  The value of 'sidescroll' is
+not used.
+
+z<Right>    or						*zl* *z<Right>*
+zl			Scroll the screen [count] characters to the left.
+			This only works when 'wrap' is off.  {not in Vi}
+
+z<Left>      or						*zh* *z<Left>*
+zh			Scroll the screen [count] characters to the right.
+			This only works when 'wrap' is off.  {not in Vi}
+
+							*zL*
+zL			Scroll the screen half a screenwidth to the left.
+			This only works when 'wrap' is off.  {not in Vi}
+
+							*zH*
+zH			Scroll the screen half a screenwidth to the right.
+			This only works when 'wrap' is off.  {not in Vi}
+
+For the following two commands the cursor is not moved in the text, only the
+text scrolls on the screen.
+
+							*zs*
+zs			Scroll the screen horizontally to position the cursor
+			at the start (left side) of the screen.  This only
+			works when 'wrap' is off.  {not in Vi}
+
+							*ze*
+ze			Scroll the screen horizontally to position the cursor
+			at the end (right side) of the screen.  This only
+			works when 'wrap' is off.  {not in Vi}
+
+==============================================================================
+5. Scrolling synchronously				*scroll-binding*
+
+Occasionally, it is desirable to bind two or more windows together such that
+when one window is scrolled, the other windows are scrolled also.  In Vim,
+windows can be given this behavior by setting the (window-specific)
+'scrollbind' option.  When a window that has 'scrollbind' set is scrolled, all
+other 'scrollbind' windows are scrolled the same amount, if possible.  The
+behavior of 'scrollbind' can be modified by the 'scrollopt' option.
+
+When using the scrollbars, the binding only happens when scrolling the window
+with focus (where the cursor is).  You can use this to avoid scroll-binding
+for a moment without resetting options.
+
+When a window also has the 'diff' option set, the scroll-binding uses the
+differences between the two buffers to synchronize the position precisely.
+Otherwise the following method is used.
+
+							*scrollbind-relative*
+Each 'scrollbind' window keeps track of its "relative offset," which can be
+thought of as the difference between the current window's vertical scroll
+position and the other window's vertical scroll position.  When one of the
+'scrollbind' windows is asked to vertically scroll past the beginning or end
+limit of its text, the window no longer scrolls, but remembers how far past
+the limit it wishes to be.  The window keeps this information so that it can
+maintain the same relative offset, regardless of its being asked to scroll
+past its buffer's limits.
+
+However, if a 'scrollbind' window that has a relative offset that is past its
+buffer's limits is given the cursor focus, the other 'scrollbind' windows must
+jump to a location where the current window's relative offset is valid.  This
+behavior can be changed by clearing the 'jump' flag from the 'scrollopt'
+option.
+
+							*syncbind* *:syncbind*
+:syncbind		Force all 'scrollbind' windows to have the same
+			relative offset.  I.e., when any of the 'scrollbind'
+			windows is scrolled to the top of its buffer, all of
+			the 'scrollbind' windows will also be at the top of
+			their buffers.
+
+							*scrollbind-quickadj*
+The 'scrollbind' flag is meaningful when using keyboard commands to vertically
+scroll a window, and also meaningful when using the vertical scrollbar of the
+window which has the cursor focus.  However, when using the vertical scrollbar
+of a window which doesn't have the cursor focus, 'scrollbind' is ignored.
+This allows quick adjustment of the relative offset of 'scrollbind' windows.
+
+==============================================================================
+6. Scrolling with a mouse wheel				*scroll-mouse-wheel*
+
+When your mouse has a scroll wheel, it should work with Vim in the GUI.  How
+it works depends on your system.  It might also work in an xterm
+|xterm-mouse-wheel|.
+
+For the Win32 GUI the scroll action is hard coded.  It works just like
+dragging the scrollbar of the current window.  How many lines are scrolled
+depends on your mouse driver.  If the scroll action causes input focus
+problems, see |intellimouse-wheel-problems|.
+
+For the X11 GUIs (Motif, Athena and GTK) scrolling the wheel generates key
+presses <MouseDown> and <MouseUp>.  The default action for these keys are:
+    <MouseDown>		scroll three lines down.	*<MouseDown>*
+    <S-MouseDown>	scroll a full page down.	*<S-MouseDown>*
+    <C-MouseDown>	scroll a full page down.	*<C-MouseDown>*
+    <MouseUp>		scroll three lines up.		*<MouseUp>*
+    <S-MouseUp>		scroll a full page up.		*<S-MouseUp>*
+    <C-MouseUp>		scroll a full page up.		*<C-MouseUp>*
+This should work in all modes, except when editing the command line.
+
+Note that <MouseDown> is used for scrolling the text down, this happens when
+you turn the mouse wheel up!
+
+You can modify this behavior by mapping the keys.  For example, to make the
+scroll wheel move one line or half a page in Normal mode: >
+   :map <MouseDown> <C-Y>
+   :map <S-MouseDown> <C-U>
+   :map <MouseUp> <C-E>
+   :map <S-MouseUp> <C-D>
+You can also use Alt and Ctrl modifiers.
+
+This only works when Vim gets the scroll wheel events, of course.  You can
+check if this works with the "xev" program.
+
+When using Xfree86, the /etc/XF86Config file should have the correct entry for
+your mouse.  For FreeBSD, this entry works for a Logitech scrollmouse: >
+    Protocol     "MouseMan"
+    Device       "/dev/psm0"
+    ZAxisMapping 4 5
+See the Xfree86 documentation for information.
+
+							*xterm-mouse-wheel*
+To use the mouse wheel in a new xterm you only have to make the scroll wheel
+work in your Xserver, as mentioned above.
+
+To use the mouse wheel in an older xterm you must do this:
+1. Make it work in your Xserver, as mentioned above.
+2. Add translations for the xterm, so that the xterm will pass a scroll event
+   to Vim as an escape sequence.
+3. Add mappings in Vim, to interpret the escape sequences as <MouseUp> or
+   <MouseDown> keys.
+
+You can do the translations by adding this to your ~.Xdefaults file (or other
+file where your X resources are kept): >
+
+  XTerm*VT100.Translations:		#override \n\
+		s<Btn4Down>: string("0x9b") string("[64~") \n\
+		s<Btn5Down>: string("0x9b") string("[65~") \n\
+		<Btn4Down>: string("0x9b") string("[62~") \n\
+		<Btn5Down>: string("0x9b") string("[63~") \n\
+		<Btn4Up>: \n\
+		<Btn5Up>:
+
+Add these mappings to your vimrc file: >
+	:map <M-Esc>[62~ <MouseDown>
+	:map! <M-Esc>[62~ <MouseDown>
+	:map <M-Esc>[63~ <MouseUp>
+	:map! <M-Esc>[63~ <MouseUp>
+	:map <M-Esc>[64~ <S-MouseDown>
+	:map! <M-Esc>[64~ <S-MouseDown>
+	:map <M-Esc>[65~ <S-MouseUp>
+	:map! <M-Esc>[65~ <S-MouseUp>
+<
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/sign.txt b/runtime/doc/sign.txt
new file mode 100644
index 0000000..b65b4e1
--- /dev/null
+++ b/runtime/doc/sign.txt
@@ -0,0 +1,191 @@
+*sign.txt*      For Vim version 7.0aa.  Last change: 2004 May 22
+
+
+		  VIM REFERENCE MANUAL    by Gordon Prieur
+					  and Bram Moolenaar
+
+
+Sign Support Features				*sign-support*
+
+1. Introduction				|sign-intro|
+2. Commands				|sign-commands|
+
+{Vi does not have any of these features}
+{only available when compiled with the |+signs| feature}
+
+==============================================================================
+1. Introduction					*sign-intro* *signs*
+
+When a debugger or other IDE tool is driving an editor it needs to be able
+to give specific highlights which quickly tell the user useful information
+about the file. One example of this would be a debugger which had an icon
+in the left-hand column denoting a breakpoint. Another example might be an
+arrow representing the Program Counter (PC). The sign features allow both
+placement of a sign, or icon, in the left-hand side of the window and
+definition of a highlight which will be applied to that line. Displaying the
+sign as an image is most likely only feasible in gvim (although Sun
+Microsystem's dtterm does support this its the only terminal emulator I know
+of which does).  A text sign and the highlight should be feasible in any color
+terminal emulator.
+
+Signs and highlights are not useful just for debuggers. Sun's Visual
+WorkShop uses signs and highlights to mark build errors and SourceBrowser
+hits. Additionally, the debugger supports 8 to 10 different signs and
+highlight colors. |workshop|  Same for Netbeans |netbeans|.
+
+There are two steps in using signs:
+
+1. Define the sign.  This specifies the image, text and highlighting.  For
+   example, you can define a "break" sign with an image of a stop roadsign and
+   text "!!".
+
+2. Place the sign.  This specifies the file and line number where the sign is
+   displayed.  A defined sign can be placed several times in different lines
+   and files.
+
+When signs are defined for a file, Vim will automatically add a column of two
+characters to display them in.  When the last sign is unplaced the column
+disappears again.  The color of the column is set with the SignColumn group
+|hl-SignColumn|.  Example to set the color: >
+
+	:highlight SignColumn guibg=darkgrey
+
+==============================================================================
+2. Commands					*sign-commands* *:sig* *:sign*
+
+Here is an example that places a sign piet, displayed with the text ">>", in
+line 23 of the current file: >
+	:sign define piet text=>> texthl=Search
+	:exe ":sign place 2 line=23 name=piet file=" . expand("%:p")
+
+And here is the command to delete it again: >
+	:sign unplace 2
+
+Note that the ":sign" command cannot be followed by another command or a
+comment.  If you do need that, use the |:execute| command.
+
+
+DEFINING A SIGN.			*:sign-define* *E255* *E160* *E612*
+
+:sign define {name} {argument}...
+		Define a new sign or set attributes for an existing sign.
+		The {name} can either be a number (all digits) or a name
+		starting with a non-digit.
+		About 120 different signs can be defined.
+
+		Accepted arguments:
+
+	icon={pixmap}
+		Define the file name where the bitmap can be found.  Should be
+		a full path.  The bitmap should fit in the place of two
+		characters.  This is not checked.  If the bitmap is too big it
+		will cause redraw problems.  Only GTK 2 can scale the bitmap
+		to fit the space available.
+			toolkit		supports ~
+			GTK 1		pixmap (.xpm)
+			GTK 2		many
+			Motif		pixmap (.xpm)
+
+	linehl={group}
+		Highlighting group used for the whole line the sign is placed
+		in.  Most useful is defining a background color.
+
+	text={text}						*E239*
+		Define the text that is displayed when there is no icon or the
+		GUI is not being used.  Only printable characters are allowed
+		and they must occupy one or two display cells.
+
+	texthl={group}
+		Highlighting group used for the text item.
+
+
+DELETING A SIGN						*:sign-undefine* *E155*
+
+:sign undefine {name}
+		Deletes a previously defined sign.  If signs with this {name}
+		are still placed this will cause trouble.
+
+
+LISTING SIGNS						*:sign-list* *E156*
+
+:sign list	Lists all defined signs and their attributes.
+
+:sign list {name}
+		Lists one defined sign and its attributes.
+
+
+PLACING SIGNS						*:sign-place* *E158*
+
+:sign place {id} line={lnum} name={name} file={fname}
+		Place sign defined as {name} at line {lnum} in file {fname}.
+							*:sign-fname*
+		The file {fname} must already be loaded in a buffer.  The
+		exact file name must be used, wildcards, $ENV and ~ are not
+		expanded, white space must not be escaped.  Trailing white
+		space is ignored.
+
+		The sign is remembered under {id}, this can be used for
+		further manipulation.  {id} must be a number.
+		It's up to the user to make sure the {id} is used only once in
+		each file (if it's used several times unplacing will also have
+		to be done several times and making changes may not work as
+		expected).
+
+:sign place {id} line={lnum} name={name} buffer={nr}
+		Same, but use buffer {nr}.
+
+:sign place {id} name={name} file={fname}
+		Change the placed sign {id} in file {fname} to use the defined
+		sign {name}.  See remark above about {fname} |:sign-fname|.
+		This can be used to change the displayed sign without moving
+		it (e.g., when the debugger has stopped at a breakpoint).
+
+:sign place {id} name={name} buffer={nr}
+		Same, but use buffer {nr}.
+
+
+REMOVING SIGNS						*:sign-unplace* *E159*
+
+:sign unplace {id} file={fname}
+		Remove the previously placed sign {id} from file {fname}.
+		See remark above about {fname} |:sign-fname|.
+
+:sign unplace {id} buffer={nr}
+		Same, but use buffer {nr}.
+
+:sign unplace {id}
+		Remove the previously placed sign {id} from all files it
+		appears in.
+
+:sign unplace *
+		Remove all placed signs.
+
+:sign unplace
+		Remove the placed sign at the cursor position.
+
+
+LISTING PLACED SIGNS
+
+:sign place file={fname}
+		List signs placed in file {fname}.
+		See remark above about {fname} |:sign-fname|.
+
+:sign place buffer={nr}
+		List signs placed in buffer {nr}.
+
+:sign place	List placed signs in all files.
+
+
+JUMPING TO A SIGN					*:sign-jump* *E157*
+
+:sign jump {id} file={fname}
+		Open the file {fname} or jump to the window that contains
+		{fname} and position the cursor at sign {id}.
+		See remark above about {fname} |:sign-fname|.
+		If the file isn't displayed in window and the current file can
+		not be |abandon|ed this fails.
+
+:sign jump {id} buffer={nr}
+		Same, but use buffer {nr}.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/sponsor.txt b/runtime/doc/sponsor.txt
new file mode 100644
index 0000000..34abc46
--- /dev/null
+++ b/runtime/doc/sponsor.txt
@@ -0,0 +1,229 @@
+*sponsor.txt*   For Vim version 7.0aa.  Last change: 2004 Apr 23
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+
+SPONSOR VIM DEVELOPMENT						*sponsor*
+
+Fixing bugs and adding new features takes a lot of effort.  For a few years
+Bram has attempted to do this next to a full-time job.  During that time the
+todo list kept getting longer and longer.
+
+In order for Bram to support Vim properly he needs your support.  Through your
+donations Bram will be able to have a part-time job and spend more time on
+fixing bugs and adding new features.
+
+For the most recent information about sponsoring look on the Vim web site:
+
+	http://www.vim.org/sponsor/
+
+More explanations can be found in the |sponsor-faq|.
+
+
+REGISTERED VIM USER						*register*
+
+You can become a registered Vim user by sending at least 10 euro.  This works
+similar to sponsoring Vim, see |sponsor| above.  Registration was made
+possible for the situation where your boss or bookkeeper may be willing to
+register software, but does not like the terms "sponsoring" and "donation".
+
+More explanations can be found in the |register-faq|.
+
+
+VOTE FOR FEATURES					*vote-for-features*
+
+To give registered Vim users and sponsors an advantage over lurkers they can
+vote for the items Bram should work on.  How does this voting work?
+
+1.  You send at least 10 euro.  See below for ways to transfer money
+    |send-money|.
+
+2.  You will be e-mailed a registration key.  Enter this key on your account
+    page on the Vim website.  You can easily create an account if you don't
+    have one yet.
+
+3.  You can enter your votes on the voting page.  There is a link to that page
+    on your account page after entering a registration key.  Your votes will
+    be counted for two years.
+
+4.  The voting results appear on the results page, which is visible for
+    everybody:  http://www.vim.org/sponsor/vote_results.php
+
+Additionally, once you have send 100 euro or more in total, your name appears
+in the "Vim hall of honour":   http://www.vim.org/sponsor/hall_of_honour.php
+But only if you enable this on your account page.
+
+
+HOW TO SEND MONEY						*send-money*
+
+Creditcard	Through PayPal, see the PayPal site for information:
+			https://www.paypal.com
+		The e-mail address for sending sponsorship money is:
+			donate@vim.org
+		The e-mail address for Vim registration is:
+			register@vim.org
+		Using Euro is preferred, other currencies are also accepted.
+		In Euro countries a bank transfer is preferred, this has lower
+		costs.
+
+Bank transfer	Transfer to Bram's account at the Postbank: 1644503.  For
+		international transfers you can use these numbers:
+			IBAN:       NL79 PSTB 0001 6445 03
+			SWIFT/BIC:  PSTBNL21
+		This is the address of the bank:
+			ING Bank Amsterdam, Foreign Operations
+			PO Box 1800
+			1000 BV Amsterdam
+			The Netherlands
+		Include "Vim sponsor" or "Vim registration" in the comment of
+		your money transfer.  Send me an e-mail that mentions the
+		amount you transferred if you want to vote for features and
+		show others you are a registered Vim user or sponsor.
+
+Cash		Small amounts can be send with ordinary mail.  Put something
+		around the money, so that it's not noticable from the outside.
+		Mention your e-mail address if you want to vote for features
+		and show others you are a registered Vim user or sponsor.
+
+This is Bram's address: Bram Moolenaar
+			Clematisstraat 30
+			5925 BE Venlo
+			The Netherlands
+
+
+ALTERNATIVE
+
+If you don't care about sponsoring Vim Development or becoming a registered
+Vim user, but do care about helping needy children, consider giving to the
+ICCF Holland foundation.  This is the charity recommended by Vim's author.
+The money is used for a children centre in the south of Uganda, where AIDS has
+caused many victims.  See |uganda|.
+
+
+QUESTIONS AND ANSWERS				*sponsor-faq* *register-faq*
+
+Why should I give money?
+
+Bram has tried to work on Vim next to a full-time job.  The list of known bugs
+and ideas for new features has constantly been growing during this time.  Bram
+simply can't spend enough time on Vim development when he has a full-time job.
+Your contribution will make it possible for Bram to have a part-time job and
+spend much more time on Vim development.  Bugs will be fixed quicker and new
+Vim releases will become available more often.
+
+
+How much money should I send?
+
+That is up to you.  The more you give, the more time Bram can work on Vim.  An
+indication for individuals that use Vim at home: 10 Euro per year.  For
+professional use: 30 Euro per year per person.  Send at least 10 euro to be
+able to vote for features.
+
+
+What do I get in return?
+
+Each registered Vim user and sponsor who donates at least 10 euro will be able
+to vote for new features.  These votes will give priority to the work on Vim.
+The votes are valid for two years.  The more money you send the more your
+votes count |votes-counted|.
+
+If you send 100 Euro or more in total you will be mentioned on the "Vim hall
+of honour" page on the Vim web site.  But only if you enable this on your
+account page.  You can also select whether the amount will be visible.
+
+
+How do I become a Vim sponsor or registered Vim user?
+
+Send money, as explained above |send-money| and include your e-mail address.
+When the money has been received you will receive a unique registration key.
+This key can be used on the Vim website to activate voting on your Vim
+account.  You will then get an extra page where you can vote for features and
+choose whether others will be able to see that you donated.  There is a link
+to this page on your "My Account" page.
+
+
+What is the difference between sponsoring and registering?
+
+It has a different name.  Use the term "registration" if your boss doesn't
+like "sponsoring" or "donation".  The benefits are the same.
+
+
+How can I send money?
+
+See |send-money|.  Check the web site for the most recent information:
+http://www.vim.org/sponsor/
+
+
+Why don't you use the SourceForge donation system?
+
+SourceForge takes 5% of the donations for themselves.  If you want to support
+SourceForge you can send money to them directly.
+
+
+I cannot afford to send money, may I still use Vim?
+
+Yes.
+
+
+I did not register Vim, can I use all available features?
+
+Yes.
+
+
+I noticed a bug, do I need to register before I can report it?
+
+No, suggestions for improving Vim can always be given.  For improvements use
+the developer |maillist|, for reporting bugs see |bugs|.
+
+
+How are my votes counted?				*votes-counted*
+
+You may vote when you send 10 euro or more.  You can enter up to ten votes.
+You can select the same item several times to give it more points.  You can
+also enter three counter votes, these count as negative points.
+
+When you send 30 euro or more the points are doubled.  Above 100 euro they
+count four times, above 300 euro they count six times, above 1000 euro ten
+times.
+
+
+Can I change my votes?
+
+You can change your votes any time you like, up to two years after you
+sent money.  The points will be counted right away.
+
+
+How about Charityware?
+
+You have to decide yourself whether you want to sponsor Vim development, help
+the poor children in Uganda (see |uganda|) or both.  Bram will certainly keep
+on supporting the project in Uganda.  In the (unlikely) situation that Bram
+gets more donations for Vim development than he needs, he will send the money
+to Uganda.
+
+
+I donated $$$, now please add feature XYZ!
+
+There is no direct relation between your donation and the work Bram does.
+Otherwise you would be paying for work and Bram has to pay income tax over the
+donation.  If you want to hire Bram for specific work, contact him directly,
+don't use the donation system.
+
+
+Are the donations tax deductable?
+
+No.  Setting up a system for this is complex and imposes too many restrictions.
+The donations to help the children in |Uganda| are tax deductable in Holland,
+Germany, Canada and probably also in the USA.
+
+
+Can you send me a bill?
+
+Sending a bill would mean Bram does something in return for your contribution.
+That is work and would mean Bram has to pay income tax over the amount.  It is
+possible, but the net amount will be lower.
+
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
new file mode 100644
index 0000000..160bcb9
--- /dev/null
+++ b/runtime/doc/starting.txt
@@ -0,0 +1,1418 @@
+*starting.txt*  For Vim version 7.0aa.  Last change: 2004 May 28
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Starting Vim						*starting*
+
+1. Vim arguments		|vim-arguments|
+2. Vim on the Amiga		|starting-amiga|
+3. Running eVim			|evim-keys|
+4. Initialization		|initialization|
+5. $VIM and $VIMRUNTIME		|$VIM|
+6. Suspending			|suspend|
+7. Saving settings		|save-settings|
+8. Views and Sessions		|views-sessions|
+9. The viminfo file		|viminfo-file|
+
+==============================================================================
+1. Vim arguments					*vim-arguments*
+
+Most often, Vim is started to edit a single file with the command
+
+	vim filename					*-vim*
+
+More generally, Vim is started with:
+
+	vim [option | filename] ..
+
+Option arguments and file name arguments can be mixed, and any number of them
+can be given.  However, watch out for options that take an argument.
+
+For compatibility with various Vi versions, see	|cmdline-arguments|.
+
+Exactly one out of the following five items may be used to choose how to
+start editing:
+
+							*-file* *---*
+filename	One or more file names.  The first one will be the current
+		file and read into the buffer.  The cursor will be positioned
+		on the first line of the buffer.
+		To avoid a file name starting with a '-' being interpreted as
+		an option, precede the arglist with "--", e.g.: >
+			vim -- -filename
+<		All arguments after the "--" will be interpreted as file names,
+		no other options or "+command" argument can follow.
+
+							*--*
+-		This argument can mean two things, depending on whether Ex
+		mode is to be used.
+
+		Starting in Normal mode: >
+			vim -
+			ex -v -
+<		Start editing a new buffer, which is filled with text
+		that is read from stdin.  The commands that would normally be
+		read from stdin will now be read from stderr.  Example: >
+			find . -name "*.c" -print | vim -
+<		The buffer will be marked modified, because it contains text
+		that needs to be saved.  Except when in readonly mode, then
+		the buffer is not marked modified.  Example: >
+			ls | view -
+<
+		Starting in Ex mode: >
+			ex -
+			vim -e -
+			exim -
+			vim -E
+<		Start editing in silent mode.  See |-s-ex|.
+
+							*-t* *-tag*
+-t {tag}	A tag.  "tag" is looked up in the tags file, the associated
+		file becomes the current file, and the associated command is
+		executed.  Mostly this is used for C programs, in which case
+		"tag" often is a function name.  The effect is that the file
+		containing that function becomes the current file and the
+		cursor is positioned on the start of the function (see
+		|tags|).
+
+							*-q* *-qf*
+-q [errorfile]	QuickFix mode.  The file with the name [errorfile] is read
+		and the first error is displayed.  See |quickfix|.
+		If [errorfile] is not given, the 'errorfile' option is used
+		for the file name.  See 'errorfile' for the default value.
+		{not in Vi}
+
+(nothing)	Without one of the four items above, Vim will start editing a
+		new buffer.  It's empty and doesn't have a file name.
+
+
+The startup mode can be changed by using another name instead of "vim", which
+is equal to giving options:
+ex	vim -e	    Start in Ex mode (see |Ex-mode|).		    *ex*
+exim	vim -E	    Start in improved Ex mode (see |Ex-mode|).	    *exim*
+			(normally not installed)
+view	vim -R	    Start in read-only mode (see |-R|).		    *view*
+gvim	vim -g	    Start the GUI (see |gui|).			    *gvim*
+gex	vim -eg	    Start the GUI in Ex mode.			    *gex*
+gview	vim -Rg	    Start the GUI in read-only mode.		    *gview*
+rvim	vim -Z	    Like "vim", but in restricted mode (see |-Z|)   *rvim*
+rview	vim -RZ	    Like "view", but in restricted mode.	    *rview*
+rgvim	vim -gZ	    Like "gvim", but in restricted mode.	    *rgvim*
+rgview	vim -RgZ    Like "gview", but in restricted mode.	    *rgview*
+evim    vim -y      Easy Vim: set 'insertmode' (see |-y|)	    *evim*
+eview   vim -yR     Like "evim" in read-only mode		    *eview*
+vimdiff vim -d	    Start in diff mode |diff-mode|
+gvimdiff vim -gd    Start in diff mode |diff-mode|
+
+Additional characters may follow, they are ignored.  For example, you can have
+"gvim-5" to start the GUI.  You must have an executable by that name then, of
+course.
+
+On Unix, you would normally have one executable called Vim, and links from the
+different startup-names to that executable.  If your system does not support
+links and you do not want to have several copies of the executable, you could
+use an alias instead.  For example: >
+	alias view   vim -R
+	alias gvim   vim -g
+<
+							*startup-options*
+The option arguments may be given in any order.  Single-letter options can be
+combined after one dash.  There can be no option arguments after the "--"
+argument.
+
+On VMS all option arguments are assumed to be lowercase, unless preceded with
+a slash.  Thus "-R" means recovery and "-/R" readonly.
+
+--help							*-h* *--help*
+-h		Give usage (help) message and exit.  {not in Vi}
+		See |info-message| about capturing the text.
+
+							*--version*
+--version	Print version information and exit.  Same output as for
+		|:version| command.  {not in Vi}
+		See |info-message| about capturing the text.
+
+							*--noplugin*
+--noplugin	Skip loading plugins.  Resets the 'loadplugins' option.
+		{not in Vi}
+		Note that the |-u| argument may also disable loading plugins:
+			argument	load vimrc files	load plugins ~
+			(nothing)		yes		    yes
+			-u NONE			no		    no
+			-u NORC			no		    yes
+			--noplugin		yes		    no
+
+							*--literal*
+--literal	Take file names literally, don't expand wildcards.  Not needed
+		for Unix, because Vim always takes file names literally (the
+		shell expands wildcards).
+		Applies to all the names, also the ones that come before this
+		argument.
+
+							*-+*
++[num]		The cursor will be positioned on line "num" for the first
+		file being edited.  If "num" is missing, the cursor will be
+		positioned on the last line.
+
+							*-+/*
++/{pat}		The cursor will be positioned on the first line containing
+		"pat" in the first file being edited (see |pattern| for the
+		available search patterns).
+
++{command}						*-+c* *-c*
+-c {command}	{command} will be executed after the first file has been
+		read (and after autocommands and modelines for that file have
+		been processed).  "command" is interpreted as an Ex command.
+		If the "command" contains spaces, it must be enclosed in
+		double quotes (this depends on the shell that is used).
+		Example: >
+			vim  "+set si"  main.c
+			vim  "+find stdio.h"
+			vim  -c "set ff=dos"  -c wq  mine.mak
+<
+		Note: You can use up to 10 "+" or "-c" arguments in a Vim
+		command.  They are executed in the order given.  A "-S"
+		argument counts as a "-c" argument as well.
+		{Vi only allows one command}
+
+--cmd {command}						*--cmd*
+		{command} will be executed before processing any vimrc file.
+		Otherwise it acts like -c {command}.  You can use up to 10 of
+		these commands, independently from "-c" commands.
+		{not in Vi}
+
+							*-S*
+-S {file}	The {file} will be sourced after the first file has been read.
+		This is an easy way to do the equivalent of: >
+			-c "source {file}"
+<		It can be mixed with "-c" arguments and repeated like "-c".
+		The limit of 10 "-c" arguments applies here as well.
+		{file} cannot start with a "-".
+		{not in Vi}
+
+-S		Works like "-S Session.vim".  Only when used as the last
+		argument or when another "-" option follows.
+
+							*-r*
+-r		Recovery mode.  Without a file name argument, a list of
+		existing swap files is given.  With a file name, a swap file
+		is read to recover a crashed editing session.  See
+		|crash-recovery|.
+
+							*-L*
+-L		Same as -r.  {only in some versions of Vi: "List recoverable
+		edit sessions"}
+
+							*-R*
+-R		Readonly mode.  The 'readonly' option will be set for all the
+		files being edited.  You can still edit the buffer, but will
+		be prevented from accidentally overwriting a file.  If you
+		forgot that you are in View mode and did make some changes,
+		you can overwrite a file by adding an exclamation mark to
+		the Ex command, as in ":w!".  The 'readonly' option can be
+		reset with ":set noro" (see the options chapter, |options|).
+		Subsequent edits will not be done in readonly mode.  Calling
+		the executable "view" has the same effect as the -R argument.
+		The 'updatecount' option will be set to 10000, meaning that
+		the swap file will not be updated automatically very often.
+
+							*-m*
+-m		Modifications not allowed to be written.  The 'write' option
+		will be reset, so that writing files is disabled.  However,
+		the 'write' option can be set to enable writing again.
+		{not in Vi}
+
+							*-M*
+-M		Modifications not allowed.  The 'modifiable' option will be
+		reset, so that changes are not allowed.  The 'write' option
+		will be reset, so that writing files is disabled.  However,
+		the 'modifiable' and 'write' options can be set to enable
+		changes and writing.
+		{not in Vi}
+
+						*-Z* *restricted-mode* *E145*
+-Z		Restricted mode.  All commands that make use of an external
+		shell are disabled.  This includes suspending with CTRL-Z,
+		":sh", filtering, the system() function, backtick expansion,
+		etc.
+		{not in Vi}
+
+							*-g*
+-g		Start Vim in GUI mode.  See |gui|.  {not in Vi}
+
+							*-v*
+-v		Start Ex in Vi mode.  Only makes a difference when the
+		executable is called "ex" or "gvim".  For gvim the GUI is not
+		started if possible.
+
+							*-e*
+-e		Start Vim in Ex mode |Q|.  Only makes a difference when the
+		executable is not called "ex".
+
+							*-E*
+-E		Start Vim in improved Ex mode |gQ|.  Only makes a difference
+		when the executable is not called "exim".
+		{not in Vi}
+
+							*-s-ex*
+-s		Silent or batch mode.  Only when Vim was started as "ex" or
+		when preceded with the "-e" argument.  Otherwise see |-s|,
+		which does take an argument while this use of "-s" doesn't.
+		To be used when Vim is used to execute Ex commands from a file
+		instead of a terminal.  Switches off most prompts and
+		informative messages.  Also warnings and error messages.
+		But ":print" output is displayed.  And when 'verbose' is
+		non-zero messages are printed (for debugging).
+		If Vim appears to be stuck try typing "qa!<Enter>".  You don't
+		get a prompt thus you can't see Vim is waiting for you to type
+		something.
+		Initializations are skipped (except the ones given with the
+		"-u" argument).
+		Example: >
+			vim -e -s  < thefilter  thefile
+<
+							*-b*
+-b		Binary mode.  File I/O will only recognize <NL> to separate
+		lines. The 'expandtab' option will be reset.  The 'textwidth'
+		option is set to 0.  'modeline' is reset.  The 'binary' option
+		is set.  This is done after reading the vimrc/exrc files but
+		before reading any file in the arglist.  See also
+		|edit-binary|.  {not in Vi}
+
+							*-l*
+-l		Lisp mode.  Sets the 'lisp' and 'showmatch' options on.
+
+							*-A*
+-A		Arabic mode.  Sets the 'arabic' option on.  (Only when
+		compiled with the |+arabic| features (which include
+		|+rightleft|), otherwise Vim gives an error message
+		and exits.  {not in Vi}
+
+							*-F*
+-F		Farsi mode.  Sets the 'fkmap' and 'rightleft' options on.
+		(Only when compiled with |+rightleft| and |+farsi| features,
+		otherwise Vim gives an error message and exits).  {not in Vi}
+
+							*-H*
+-H		Hebrew mode.  Sets the 'hkmap' and 'rightleft' options on.
+		(Only when compiled with the |+rightleft| feature, otherwise
+		Vim gives an error message and exits).  {not in Vi}
+
+							*-V* *verbose*
+-V[N]		Verbose.  Sets the 'verbose' option to [N] (default: 10).
+		Messages will be given for each file that is ":source"d and
+		for reading or writing a viminfo file.  Can be used to find
+		out what is happening upon startup and exit.  {not in Vi}
+
+							*-D*
+-D		Debugging.  Go to debugging mode when executing the first
+		command from a script. |debug-mode|
+		{not available when compiled without the |+eval| feature}
+		{not in Vi}
+
+							*-C*
+-C		Compatible mode.  Sets the 'compatible' option.  You can use
+		this to get 'compatible', even though a .vimrc file exists.
+		But the command ":set nocompatible" overrules it anyway.
+		Also see |compatible-default|.  {not in Vi}
+
+							*-N*
+-N		Not compatible mode.  Resets the 'compatible' option.  You can
+		use this to get 'nocompatible', when there is no .vimrc file.
+		Also see |compatible-default|.  {not in Vi}
+
+							*-y* *easy*
+-y		Easy mode.  Implied for |evim| and |eview|.  Starts with
+		'insertmode' set and behaves like a click-and-type editor.
+		This sources the script $VIMRUNTIME/evim.vim.  Mappings are
+		set up to work like most click-and-type editors, see
+		|evim-keys|.  The GUI is started when available.
+		{not in Vi}
+
+							*-n*
+-n		No swap file will be used.  Recovery after a crash will be
+		impossible.  Handy if you want to view or edit a file on a
+		very slow medium (e.g., a floppy).
+		Can also be done with ":set updatecount=0".  You can switch it
+		on again by setting the 'updatecount' option to some value,
+		e.g., ":set uc=100".
+		'updatecount' is set to 0 AFTER executing commands from a
+		vimrc file, but before the GUI initializations.  Thus it
+		overrides a setting for 'updatecount' in a vimrc file, but not
+		in a gvimrc file.  See |startup|.
+		When you want to reduce accesses to the disk (e.g., for a
+		laptop), don't use "-n", but set 'updatetime' and
+		'updatecount' to very big numbers, and type ":preserve" when
+		you want to save your work.  This way you keep the possibility
+		for crash recovery.
+		{not in Vi}
+
+							*-o*
+-o[N]		Open N windows, split horizontally.  If [N] is not given,
+		one window is opened for every file given as argument.  If
+		there is not enough room, only the first few files get a
+		window.  If there are more windows than arguments, the last
+		few windows will be editing an empty file.
+		{not in Vi}
+
+							*-O*
+-O[N]		Open N windows, split vertically.  Otherwise it's like -o.
+		If both the -o and the -O option are given, the last one on
+		the command line determines how the windows will be split.
+		{not in Vi}
+
+							*-T*
+-T {terminal}	Set the terminal type to "terminal".  This influences the
+		codes that Vim will send to your terminal.  This is normally
+		not needed, because Vim will be able to find out what type
+		of terminal you are using (See |terminal-info|).  {not in Vi}
+
+							*-d*
+-d		Start in diff mode, like |vimdiff|.
+		{not in Vi} {not available when compiled without the |+diff|
+		feature}
+
+-d {device}	Only on the Amiga and when not compiled with the |+diff|
+		feature.  Works like "-dev".
+							*-dev*
+-dev {device}	Only on the Amiga: The {device} is opened to be used for
+		editing.
+		Normally you would use this to set the window position and
+		size: "-d con:x/y/width/height", e.g.,
+		"-d con:30/10/600/150".  But you can also use it to start
+		editing on another device, e.g., AUX:.  {not in Vi}
+							*-f*
+-f		Amiga: Do not restart Vim to open a new window.  This
+		option should be used when Vim is started by a program that
+		will wait for the edit session to finish (e.g., mail or
+		readnews).  See |amiga-window|.
+
+		GUI: Do not disconnect from the program that started Vim.
+		'f' stands for "foreground".  If omitted, the GUI forks a new
+		process and exits the current one.  "-f" should be used when
+		gvim is started by a program that will wait for the edit
+		session to finish (e.g., mail or readnews).  If you want gvim
+		never to fork, include 'f' in 'guioptions' in your .gvimrc.
+		Careful: You can use "-gf" to start the GUI in the foreground,
+		but "-fg" is used to specify the foreground color.  |gui-fork|
+		{not in Vi}
+
+							*--nofork*
+--nofork	GUI: Do not fork.  Same as |-f|.
+							*-u* *E282*
+-u {vimrc}	The file {vimrc} is read for initializations.  Most other
+		initializations are skipped; see |initialization|.  This can
+		be used to start Vim in a special mode, with special
+		mappings and settings.  A shell alias can be used to make
+		this easy to use.  For example: >
+			alias vimc vim -u ~/.c_vimrc !*
+<		Also consider using autocommands; see |autocommand|.
+		When {vimrc} is equal to "NONE" (all uppercase), all
+		initializations from files and environment variables are
+		skipped, including reading the .gvimrc file when the GUI
+		starts.  Loading plugins is also skipped.
+		When {vimrc} is equal to "NORC" (all uppercase), this has the
+		same effect as "NONE", but loading plugins is not skipped.
+		Using the "-u" argument has the side effect that the
+		'compatible' option will be on by default.  This can have
+		unexpected effects.  See |'compatible'|.
+		{not in Vi}
+
+							*-U* *E230*
+-U {gvimrc}	The file "gvimrc" is read for initializations when the GUI
+		starts.  Other GUI initializations are skipped. When {gvimrc}
+		is equal to "NONE", no file is read for initializations at
+		all.
+		Exception: Reading the system-wide menu file is always done.
+		{not in Vi}
+
+							*-i*
+-i {viminfo}	The file "viminfo" is used instead of the default viminfo
+		file.  If the name "NONE" is used (all uppercase), no viminfo
+		file is read or written, even if 'viminfo' is set or when
+		":rv" or ":wv" are used.  See also |viminfo-file|.
+		{not in Vi}
+
+							*-x*
+-x		Use encryption to read/write files.  Will prompt for a key,
+		which is then stored in the 'key' option.  All writes will
+		then use this key to encrypt the text.  The '-x' argument is
+		not needed when reading a file, because there is a check if
+		the file that is being read has been encrypted, and Vim asks
+		for a key automatically. |encryption|
+
+							*-X*
+-X		Do not try connecting to the X server to get the current
+		window title and copy/paste using the X clipboard.  This
+		avoids a long startup time when running Vim in a terminal
+		emulator and the connection to the X server is slow.
+		Only makes a difference on Unix or VMS, when compiled with the
+		|+X11| feature.  Otherwise it's ignored.
+		To disable the connection only for specific terminals, see the
+		'clipboard' option.
+		When the X11 Session Management Protocol (XSMP) handler has
+		been built in, the -X option also disables that connection as
+		it, too, may have undesirable delays.
+		When the connection is desired later anyway (e.g., for
+		client-server messages), call the |serverlist()| function.
+		This does not enable the XSMP handler though.
+		{not in Vi}
+
+							*-s*
+-s {scriptin}	The script file "scriptin" is read.  The characters in the
+		file are interpreted as if you had typed them.  The same can
+		be done with the command ":source! {scriptin}".  If the end
+		of the file is reached before the editor exits, further
+		characters are read from the keyboard.  Only works when not
+		started in Ex mode, see |-s-ex|.  See also |complex-repeat|.
+		{not in Vi}
+
+							*-w*
+-w {scriptout}	All the characters that you type are recorded in the file
+		"scriptout", until you exit Vim.  This is useful if you want
+		to create a script file to be used with "vim -s" or
+		":source!".  When the "scriptout" file already exists, new
+		characters are appended.  See also |complex-repeat|.
+		{not in Vi}
+
+							*-W*
+-W {scriptout}	Like -w, but do not append, overwrite an existing file.
+		{not in Vi}
+
+							*-w_nr*
+-w{number}	Does nothing.  This was included for Vi-compatibility.  In Vi
+		it sets the 'window' option, which is not implemented in Vim.
+
+--remote [+{cmd}] {file} ...
+		Open the {file} in another Vim that functions as a server.
+		Any non-file arguments must come before this.
+		See |--remote|. {not in Vi}
+
+--remote-silent [+{cmd}] {file} ...
+		Like --remote, but don't complain if there is no server.
+		See |--remote-silent|. {not in Vi}
+
+--remote-wait [+{cmd}] {file} ...
+		Like --remote, but wait for the server to finish editing the
+		file(s).
+		See |--remote-wait|. {not in Vi}
+
+--remote-wait-silent [+{cmd}] {file} ...
+		Like --remote-wait, but don't complain if there is no server.
+		See |--remote-wait-silent|. {not in Vi}
+
+--servername {name}
+		Specify the name of the Vim server to send to or to become.
+		See |--servername|. {not in Vi}
+
+--remote-send {keys}
+		Send {keys} to a Vim server and exit.
+		See |--remote-send|. {not in Vi}
+
+--remote-expr {expr}
+		Evaluate {expr} in another Vim that functions as a server.
+		The result is printed on stdout.
+		See |--remote-expr|. {not in Vi}
+
+--serverlist	Output a list of Vim server names and exit.  See
+		See |--serverlist|. {not in Vi}
+
+--socketid {id}						*--socketid*
+		GTK+ GUI Vim only.  Make gvim try to use GtkPlug mechanism, so
+		that it runs inside another window.  See |gui-gtk-socketid|
+		for details. {not in Vi}
+
+--echo-wid						*--echo-wid*
+		GTK+ GUI Vim only.  Make gvim echo the Window ID on stdout,
+		which can be used to run gvim in a kpart widget.  The format
+		of the output is: >
+			WID: 12345\n
+<		{not in Vi}
+
+--role {role}						*--role*
+		GTK+ 2 GUI only.  Set the role of the main window to {role}.
+		The window role can be used by a window manager to uniquely
+		identify a window, in order to restore window placement and
+		such.  The --role argument is passed automatically when
+		restoring the session on login.  See |gui-gnome-session|
+		{not in Vi}
+
+-P {parent-title}				*-P* *MDI* *E671* *E672*
+		Win32 only: Specify the title of the parent application.  When
+		possible, Vim will run in an MDI window inside the
+		application.
+		{parent-title} must appear in the window title of the parent
+		application.  Make sure that it is specific enough.
+		Note that the implementation is still primitive.  It won't
+		work with all applications and the menu doesn't work.
+
+-nb							*-nb*
+-nb={fname}
+-nb:{hostname}:{addr}:{password}
+		Attempt connecting to Netbeans and become an editor server for
+		it.  The second form specifies a file to read connection info
+		from.  The third form specifies the hostname, address and
+		password for connecting to Netbeans. |netbeans-run|
+
+Example for using a script file to change a name in several files:
+	Create a file "subs.vi" containing substitute commands and a :wq
+	command: >
+		:%s/Jones/Smith/g
+		:%s/Allen/Peter/g
+		:wq
+<
+	Execute Vim on all files you want to change: >
+
+		foreach i ( *.let ) vim -s subs.vi $i
+
+If the executable is called "view", Vim will start in Readonly mode.  This is
+useful if you can make a hard or symbolic link from "view" to "vim".
+Starting in Readonly mode can also be done with "vim -R".
+
+If the executable is called "ex", Vim will start in "Ex" mode.  This means it
+will accept only ":" commands.  But when the "-v" argument is given, Vim will
+start in Normal mode anyway.
+
+Additional arguments are available on unix like systems when compiled with
+X11 GUI support.  See |gui-resources|.
+
+==============================================================================
+2. Vim on the Amiga					*starting-amiga*
+
+Starting Vim from the Workbench				*workbench*
+-------------------------------
+
+Vim can be started from the Workbench by clicking on its icon twice.  It will
+then start with an empty buffer.
+
+Vim can be started to edit one or more files by using a "Project" icon.  The
+"Default Tool" of the icon must be the full pathname of the Vim executable.
+The name of the ".info" file must be the same as the name of the text file.
+By clicking on this icon twice, Vim will be started with the file name as
+current file name, which will be read into the buffer (if it exists).  You can
+edit multiple files by pressing the shift key while clicking on icons, and
+clicking twice on the last one.  The "Default Tool" for all these icons must
+be the same.
+
+It is not possible to give arguments to Vim, other than file names, from the
+workbench.
+
+Vim window						*amiga-window*
+----------
+
+Vim will run in the CLI window where it was started.  If Vim was started with
+the "run" or "runback" command, or if Vim was started from the workbench, it
+will open a window of its own.
+
+Technical detail:
+	To open the new window a little trick is used.  As soon as Vim
+	recognizes that it does not run in a normal CLI window, it will
+	create a script file in "t:".  This script file contains the same
+	command as the one Vim was started with, and an "endcli" command.
+	This script file is then executed with a "newcli" command (the "c:run"
+	and "c:newcli" commands are required for this to work).  The script
+	file will hang around until reboot, or until you delete it.  This
+	method is required to get the ":sh" and ":!" commands to work
+	correctly.  But when Vim was started with the -f option (foreground
+	mode), this method is not used.  The reason for this is that
+	when a program starts Vim with the -f option it will wait for Vim to
+	exit.  With the script trick, the calling program does not know when
+	Vim exits.  The -f option can be used when Vim is started by a mail
+	program which also waits for the edit session to finish.  As a
+	consequence, the ":sh" and ":!" commands are not available when the
+	-f option is used.
+
+Vim will automatically recognize the window size and react to window
+resizing.  Under Amiga DOS 1.3, it is advised to use the fastfonts program,
+"FF", to speed up display redrawing.
+
+==============================================================================
+3. Running eVim							*evim-keys*
+
+EVim runs Vim as click-and-type editor.  This is very unlike the original Vi
+idea.  But it helps for people that don't use Vim often enough to learn the
+commands.  Hopefully they will find out that learning to use Normal mode
+commands will make their editing much more effective.
+
+In Evim these options are changed from their default value:
+
+	:set nocompatible	Use Vim improvements
+	:set insertmode		Remain in Insert mode most of the time
+	:set hidden		Keep invisible buffers loaded
+	:set backup		Keep backup files (not for VMS)
+	:set backspace=2	Backspace over everything
+	:set autoindent		auto-indent new lines
+	:set history=50		keep 50 lines of Ex commands
+	:set ruler		show the cursor position
+	:set incsearch		show matches halfway typing a pattern
+	:set mouse=a		use the mouse in all modes
+	:set hlsearch		highlight all matches for a search pattern
+	:set whichwrap+=<,>,[,]  <Left> and <Right> wrap around line breaks
+	:set guioptions-=a	non-Unix only: don't do auto-select
+
+Key mappings:
+	<Down>		moves by screen lines rather than file lines
+	<Up>		idem
+	Q		does "gq", formatting, instead of Ex mode
+	<BS>		in Visual mode: deletes the selection
+	CTRL-X		in Visual mode: Cut to clipboard
+	<S-Del>		idem
+	CTRL-C		in Visual mode: Copy to clipboard
+	<C-Insert>	idem
+	CTRL-V		Pastes from the clipboard (in any mode)
+	<S-Insert>	idem
+	CTRL-Q		do what CTRL-V used to do
+	CTRL-Z		undo
+	CTRL-Y		redo
+	<M-Space>	system menu
+	CTRL-A		select all
+	<C-Tab>		next window, CTRL-W w
+	<C-F4>		close window, CTRL-W c
+
+Additionally:
+- ":behave mswin" is used |:behave|
+- syntax highlighting is enabled
+- filetype detection is enabled, filetype plugins and indenting is enabled
+- in a text file 'textwidth' is set to 78
+
+One hint: If you want to go to Normal mode to be able to type a sequence of
+commands, use CTRL-L. |i_CTRL-L|
+
+==============================================================================
+4. Initialization				*initialization* *startup*
+
+This section is about the non-GUI version of Vim.  See |gui-fork| for
+additional initialization when starting the GUI.
+
+At startup, Vim checks environment variables and files and sets values
+accordingly.  Vim proceeds in this order:
+
+1. Set the 'shell' and 'term' option		*SHELL* *COMSPEC* *TERM*
+	The environment variable SHELL, if it exists, is used to set the
+	'shell' option.  On MS-DOS and Win32, the COMSPEC variable is used
+	if SHELL is not set.
+	The environment variable TERM, if it exists, is used to set the 'term'
+	option.
+
+2. Process the arguments
+	The options and file names from the command that start Vim are
+	inspected.  Buffers are created for all files (but not loaded yet).
+
+3. Execute Ex commands, from environment variables and/or files
+	An environment variable is read as one Ex command line, where multiple
+	commands must be separated with '|' or "<NL>".
+								*vimrc* *exrc*
+	A file that contains initialization commands is called a "vimrc" file.
+	Each line in a vimrc file is executed as an Ex command line.  It is
+	sometimes also referred to as "exrc" file.  They are the same type of
+	file, but "exrc" is what Vi always used, "vimrc" is a Vim specific
+	name.  Also see |vimrc-intro|.
+
+	Recommended place for your personal initializations:
+		Unix		    $HOME/.vimrc
+		OS/2		    $HOME/.vimrc or $VIM/.vimrc (or _vimrc)
+		MS-DOS and Win32    $HOME/_vimrc or $VIM/_vimrc
+		Amiga		    s:.vimrc or $VIM/.vimrc
+
+	If Vim was started with "-u filename", the file "filename" is used.
+	All following initializations until 4. are skipped.
+	"vim -u NORC" can be used to skip these initializations without
+	reading a file.  "vim -u NONE" also skips loading plugins.  |-u|
+
+	If Vim was started in Ex mode with the "-s" argument, all following
+	initializations until 4. are skipped.  Only the "-u" option is
+	interpreted.
+							*evim.vim*
+     a. If vim was started as |evim| or |eview| or with the |-y| argument, the
+	script $VIMRUNTIME/evim.vim will be loaded.
+							*system-vimrc*
+     b. For Unix, MS-DOS, MS-Windows, OS/2, VMS, Macintosh, RISC-OS and Amiga
+	the system vimrc file is read for initializations.  The path of this
+	file is shown with the ":version" command.  Mostly it's "$VIM/vimrc".
+	Note that this file is ALWAYS read in 'compatible' mode, since the
+	automatic resetting of 'compatible' is only done later.  Add a ":set
+	nocp" command if you like.
+
+			  *VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc*
+     c. Four places are searched for initializations.  The first that exists
+	is used, the others are ignored.
+	-  The environment variable VIMINIT (see also |compatible-default|) (*)
+	   The value of $VIMINIT is used as an Ex command line.
+	-  The user vimrc file(s):
+		    "$HOME/.vimrc"	(for Unix and OS/2) (*)
+		    "s:.vimrc"		(for Amiga) (*)
+		    "home:.vimrc"	(for Amiga) (*)
+		    "$VIM/.vimrc"	(for OS/2 and Amiga) (*)
+		    "$HOME/_vimrc"	(for MS-DOS and Win32) (*)
+		    "$VIM\_vimrc"	(for MS-DOS and Win32) (*)
+		Note: For Unix, OS/2 and Amiga, when ".vimrc" does not exist,
+		"_vimrc" is also tried, in case an MS-DOS compatible file
+		system is used.  For MS-DOS and Win32 ".vimrc" is checked
+		after "_vimrc", in case long file names are used.
+		Note: For MS-DOS and Win32, "$HOME" is checked first.  If no
+		"_vimrc" or ".vimrc" is found there, "$VIM" is tried.
+		See |$VIM| for when $VIM is not set.
+	-  The environment variable EXINIT.
+	   The value of $EXINIT is used as an Ex command line.
+	-  The user exrc file(s).  Same as for the user vimrc file, but with
+	   "vimrc" replaced by "exrc".  But without the (*)!
+
+     d. If the 'exrc' option is on (which is not the default), the current
+	directory is searched for four files.  The first that exists is used,
+	the others are ignored.
+	-  The file ".vimrc" (for Unix, Amiga and OS/2) (*)
+		    "_vimrc" (for MS-DOS and Win32) (*)
+	-  The file "_vimrc" (for Unix, Amiga and OS/2) (*)
+		    ".vimrc" (for MS-DOS and Win32) (*)
+	-  The file ".exrc"  (for Unix, Amiga and OS/2)
+		    "_exrc"  (for MS-DOS and Win32)
+	-  The file "_exrc"  (for Unix, Amiga and OS/2)
+		    ".exrc"  (for MS-DOS and Win32)
+
+     (*) Using this file or environment variable will cause 'compatible' to be
+	 off by default.  See |compatible-default|.
+
+4. Load the plugin scripts.					*load-plugins*
+	This does the same as the command: >
+		:runtime! plugin/*.vim
+<	The result is that all directories in the 'runtimepath' option will be
+	searched for the "plugin" sub-directory and all files ending in ".vim"
+	will be sourced (in alphabetical order per directory).
+	Loading plugins won't be done when:
+	- The 'loadplugins' option was reset in a vimrc file.
+	- The |--noplugin| command line argument is used.
+	- The "-u NONE" command line argument is used |-u|.
+	- When Vim was compiled without the |+eval| feature.
+	Note that using "-c set noloadplugins" doesn't work, because the
+	commands from the command line have not been executed yet.
+
+5. Set 'shellpipe' and 'shellredir'
+	The 'shellpipe' and 'shellredir' options are set according to the
+	value of the 'shell' option, unless they have been set before.
+	This means that Vim will figure out the values of 'shellpipe' and
+	'shellredir' for you, unless you have set them yourself.
+
+6. Set 'updatecount' to zero, if "-n" command argument used
+
+7. Set binary options
+	If the "-b" flag was given to Vim, the options for binary editing will
+	be set now.  See |-b|.
+
+8. Perform GUI initializations
+	Only when starting "gvim", the GUI initializations will be done.  See
+	|gui-init|.
+
+9. Read the viminfo file
+	If the 'viminfo' option is not empty, the viminfo file is read.  See
+	|viminfo-file|.
+
+10. Read the quickfix file
+	If the "-q" flag was given to Vim, the quickfix file is read.  If this
+	fails, Vim exits.
+
+11. Open all windows
+	When the |-o| flag was given, windows will be opened (but not
+	displayed yet).
+	When switching screens, it happens now.  Redrawing starts.
+	If the "-q" flag was given to Vim, the first error is jumped to.
+	Buffers for all windows will be loaded.
+
+12. Execute startup commands
+	If a "-t" flag was given to Vim, the tag is jumped to.
+	The commands given with the |-c| and |+cmd| arguments are executed.
+	If the 'insertmode' option is set, Insert mode is entered.
+	The |VimEnter| autocommands are executed.
+
+Some hints on using initializations:
+
+Standard setup:
+Create a vimrc file to set the default settings and mappings for all your edit
+sessions.  Put it in a place so that it will be found by 3b:
+	~/.vimrc	(Unix and OS/2)
+	s:.vimrc	(Amiga)
+	$VIM\_vimrc	(MS-DOS and Win32)
+Note that creating a vimrc file will cause the 'compatible' option to be off
+by default.  See |compatible-default|.
+
+Local setup:
+Put all commands that you need for editing a specific directory only into a
+vimrc file and place it in that directory under the name ".vimrc" ("_vimrc"
+for MS-DOS and Win32).  NOTE: To make Vim look for these special files you
+have to turn on the option 'exrc'.  See |trojan-horse| too.
+
+System setup:
+This only applies if you are managing a Unix system with several users and
+want to set the defaults for all users.  Create a vimrc file with commands
+for default settings and mappings and put it in the place that is given with
+the ":version" command.
+
+Saving the current state of Vim to a file:
+Whenever you have changed values of options or when you have created a
+mapping, then you may want to save them in a vimrc file for later use.  See
+|save-settings| about saving the current state of settings to a file.
+
+Avoiding setup problems for Vi users:
+Vi uses the variable EXINIT and the file "~/.exrc".  So if you do not want to
+interfere with Vi, then use the variable VIMINIT and the file "vimrc" instead.
+
+Amiga environment variables:
+On the Amiga, two types of environment variables exist.  The ones set with the
+DOS 1.3 (or later) setenv command are recognized.  See the AmigaDos 1.3
+manual.  The environment variables set with the old Manx Set command (before
+version 5.0) are not recognized.
+
+MS-DOS line separators:
+On MS-DOS-like systems (MS-DOS itself, Win32, and OS/2), Vim assumes that all
+the vimrc files have <CR> <NL> pairs as line separators.  This will give
+problems if you have a file with only <NL>s and have a line like
+":map xx yy^M".  The trailing ^M will be ignored.
+
+						     *compatible-default*
+When Vim starts, the 'compatible' option is on.  This will be used when Vim
+starts its initializations.  But as soon as a user vimrc file is found, or a
+vimrc file in the current directory, or the "VIMINIT" environment variable is
+set, it will be set to 'nocompatible'.  This has the side effect of setting or
+resetting other options (see 'compatible').  But only the options that have
+not been set or reset will be changed.  This has the same effect like the
+value of 'compatible' had this value when starting Vim.  Note that this
+doesn't happen for the system-wide vimrc file.
+
+But there is a side effect of setting or resetting 'compatible' at the moment
+a .vimrc file is found: Mappings are interpreted the moment they are
+encountered.  This makes a difference when using things like "<CR>".  If the
+mappings depend on a certain value of 'compatible', set or reset it before
+giving the mapping.
+
+The above behavior can be overridden in these ways:
+- If the "-N" command line argument is given, 'nocompatible' will be used,
+  even when no vimrc file exists.
+- If the "-C" command line argument is given, 'compatible' will be used, even
+  when a vimrc file exists.
+- If the "-u {vimrc}" argument is used, 'compatible' will be used.
+- When the name of the executable ends in "ex", then this works like the "-C"
+  argument was given: 'compatible' will be used, even when a vimrc file
+  exists.  This has been done to make Vim behave like "ex", when it is started
+  as "ex".
+
+Avoiding trojan horses:					*trojan-horse*
+While reading the "vimrc" or the "exrc" file in the current directory, some
+commands can be disabled for security reasons by setting the 'secure' option.
+This is always done when executing the command from a tags file.  Otherwise it
+would be possible that you accidentally use a vimrc or tags file that somebody
+else created and contains nasty commands.  The disabled commands are the ones
+that start a shell, the ones that write to a file, and ":autocmd".  The ":map"
+commands are echoed, so you can see which keys are being mapped.
+	If you want Vim to execute all commands in a local vimrc file, you
+can reset the 'secure' option in the EXINIT or VIMINIT environment variable or
+in the global "exrc" or "vimrc" file.  This is not possible in "vimrc" or
+"exrc" in the current directory, for obvious reasons.
+	On Unix systems, this only happens if you are not the owner of the
+vimrc file.  Warning: If you unpack an archive that contains a vimrc or exrc
+file, it will be owned by you.  You won't have the security protection.  Check
+the vimrc file before you start Vim in that directory, or reset the 'exrc'
+option.  Some Unix systems allow a user to do "chown" on a file.  This makes
+it possible for another user to create a nasty vimrc and make you the owner.
+Be careful!
+	When using tag search commands, executing the search command (the last
+part of the line in the tags file) is always done in secure mode.  This works
+just like executing a command from a vimrc/exrc in the current directory.
+
+							*slow-start*
+If Vim takes a long time to start up, there may be a few causes:
+- If the Unix version was compiled with the GUI and/or X11 (check the output
+  of ":version" for "+GUI" and "+X11"), it may need to load shared libraries
+  and connect to the X11 server.  Try compiling a version with GUI and X11
+  disabled.  This also should make the executable smaller.
+  Use the |-X| command line argument to avoid connecting to the X server when
+  running in a terminal.
+- If you have "viminfo" enabled, the loading of the viminfo file may take a
+  while.  You can find out if this is the problem by disabling viminfo for a
+  moment (use the Vim argument "-i NONE", |-i|).  Try reducing the number of
+  lines stored in a register with ":set viminfo='20,<50,s10".  |viminfo-file|.
+
+							*:intro*
+When Vim starts without a file name, an introductory message is displayed (for
+those who don't know what Vim is).  It is removed as soon as the display is
+redrawn in any way.  To see the message again, use the ":intro" command (if
+there is not enough room, you will see only part of it).
+   To avoid the intro message on startup, add the 'I' flag to 'shortmess'.
+
+							*info-message*
+The |--help| and |--version| arguments cause Vim to print a message and then
+exit.  Normally the message is send to stdout, thus can be redirected to a
+file with: >
+
+	vim --help >file
+
+From inside Vim: >
+
+	:read !vim --help
+
+When using gvim, it detects that it might have been started from the desktop,
+without a terminal to show messages on.  This is detected when both stdout and
+stderr are not a tty.  This breaks the ":read" command, as used in the example
+above.  To make it work again, set 'shellredir' to ">" instead of the default
+">&": >
+
+	:set shellredir=>
+	:read !gvim --help
+
+This still won't work for systems where gvim does not use stdout at all
+though.
+
+==============================================================================
+5. $VIM and $VIMRUNTIME
+								*$VIM*
+The environment variable "$VIM" is used to locate various user files for Vim,
+such as the user startup script ".vimrc".  This depends on the system, see
+|startup|.
+
+To avoid the need for every user to set the $VIM environment variable, Vim
+will try to get the value for $VIM in this order:
+1. The value defined by the $VIM environment variable.  You can use this to
+   make Vim look in a specific directory for its support files.  Example: >
+	setenv VIM /home/paul/vim
+2. The path from 'helpfile' is used, unless it contains some environment
+   variable too (the default is "$VIMRUNTIME/doc/help.txt": chicken-egg
+   problem).  The file name ("help.txt" or any other) is removed.  Then
+   trailing directory names are removed, in this order: "doc", "runtime" and
+   "vim{version}" (e.g., "vim54").
+3. For MSDOS, Win32 and OS/2 Vim tries to use the directory name of the
+   executable.  If it ends in "/src", this is removed.  This is useful if you
+   unpacked the .zip file in some directory, and adjusted the search path to
+   find the vim executable.  Trailing directory names are removed, in this
+   order: "runtime" and "vim{version}" (e.g., "vim54").
+4. For Unix the compile-time defined installation directory is used (see the
+   output of ":version").
+
+Once Vim has done this once, it will set the $VIM environment variable.  To
+change it later, use a ":let" command like this: >
+	:let $VIM = "/home/paul/vim/"
+<
+								*$VIMRUNTIME*
+The environment variable "$VIMRUNTIME" is used to locate various support
+files, such as the on-line documentation and files used for syntax
+highlighting.  For example, the main help file is normally
+"$VIMRUNTIME/doc/help.txt".
+You don't normally set $VIMRUNTIME yourself, but let Vim figure it out.  This
+is the order used to find the value of $VIMRUNTIME:
+1. If the environment variable $VIMRUNTIME is set, it is used.  You can use
+   this when the runtime files are in an unusual location.
+2. If "$VIM/vim{version}" exists, it is used.  {version} is the version
+   number of Vim, without any '-' or '.'.  For example: "$VIM/vim54".  This is
+   the normal value for $VIMRUNTIME.
+3. If "$VIM/runtime" exists, it is used.
+4. The value of $VIM is used.  This is for backwards compatibility with older
+   versions.
+5. When the 'helpfile' option is set and doesn't contain a '$', its value is
+   used, with "doc/help.txt" removed from the end.
+
+For Unix, when there is a compiled-in default for $VIMRUNTIME (check the
+output of ":version"), steps 2, 3 and 4 are skipped, and the compiled-in
+default is used after step 5.  This means that the compiled-in default
+overrules the value of $VIM.  This is useful if $VIM is "/etc" and the runtime
+files are in "/usr/share/vim/vim54".
+
+Once Vim has done this once, it will set the $VIMRUNTIME environment variable.
+To change it later, use a ":let" command like this: >
+	:let $VIMRUNTIME = "/home/piet/vim/vim54"
+
+==============================================================================
+6. Suspending						*suspend*
+
+					*iconize* *iconise* *CTRL-Z* *v_CTRL-Z*
+CTRL-Z			Suspend Vim, like ":stop".
+			Works in Normal and in Visual mode.  In Insert and
+			Command-line mode, the CTRL-Z is inserted as a normal
+			character.  In Visual mode Vim goes back to Normal
+			mode.
+
+
+:sus[pend][!]	or			*:sus* *:suspend* *:st* *:stop*
+:st[op][!]		Suspend Vim.
+			If the '!' is not given and 'autowrite' is set, every
+			buffer with changes and a file name is written out.
+			If the '!' is given or 'autowrite' is not set, changed
+			buffers are not written, don't forget to bring Vim
+			back to the foreground later!
+
+In the GUI, suspending is implemented as iconising gvim.  In Windows 95/NT,
+gvim is minimized.
+
+On many Unix systems, it is possible to suspend Vim with CTRL-Z.  This is only
+possible in Normal and Visual mode (see next chapter, |vim-modes|).  Vim will
+continue if you make it the foreground job again.  On other systems, CTRL-Z
+will start a new shell.  This is the same as the ":sh" command.  Vim will
+continue if you exit from the shell.
+
+In X-windows the selection is disowned when Vim suspends.  this means you
+can't paste it in another application (since Vim is going to sleep an attempt
+to get the selection would make the program hang).
+
+==============================================================================
+7. Saving settings					*save-settings*
+
+Mostly you will edit your vimrc files manually.  This gives you the greatest
+flexibility.  There are a few commands to generate a vimrc file automatically.
+You can use these files as they are, or copy/paste lines to include in another
+vimrc file.
+
+							*:mk* *:mkexrc*
+:mk[exrc] [file]	Write current key mappings and changed options to
+			[file] (default ".exrc" in the current directory),
+			unless it already exists.  {not in Vi}
+
+:mk[exrc]! [file]	Always write current key mappings and changed
+			options to [file] (default ".exrc" in the current
+			directory).  {not in Vi}
+
+							*:mkv* *:mkvimrc*
+:mkv[imrc][!] [file]	Like ":mkexrc", but the default is ".vimrc" in the
+			current directory.  The ":version" command is also
+			written to the file.  {not in Vi}
+
+These commands will write ":map" and ":set" commands to a file, in such a way
+that when these commands are executed, the current key mappings and options
+will be set to the same values.  The options 'columns', 'endofline',
+'fileformat', 'key', 'lines', 'modified', 'scroll', 'term', 'textmode',
+'ttyfast' and 'ttymouse' are not included, because these are terminal or file
+dependent.  Note that the options 'binary', 'paste' and 'readonly' are
+included, this might not always be what you want.
+
+When special keys are used in mappings, The 'cpoptions' option will be
+temporarily set to its Vim default, to avoid the mappings to be
+misinterpreted.  This makes the file incompatible with Vi, but makes sure it
+can be used with different terminals.
+
+Only global mappings are stored, not mappings local to a buffer.
+
+A common method is to use a default ".vimrc" file, make some modifications
+with ":map" and ":set" commands and write the modified file.  First read the
+default ".vimrc" in with a command like ":source ~piet/.vimrc.Cprogs", change
+the settings and then save them in the current directory with ":mkvimrc!".  If
+you want to make this file your default .vimrc, move it to your home directory
+(on Unix), s: (Amiga) or $VIM directory (MS-DOS).  You could also use
+autocommands |autocommand| and/or modelines |modeline|.
+
+If you only want to add a single option setting to your vimrc, you can use
+these steps:
+1. Edit your vimrc file with Vim.
+2. Play with the option until it's right.  E.g., try out different values for
+   'guifont'.
+3. Append a line to set the value of the option, using the expression register
+   '=' to enter the value.  E.g., for the 'guifont' option: >
+   o:set guifont=<C-R>=&guifont<CR><Esc>
+<  [<C-R> is a CTRL-R, <CR> is a return, <Esc> is the escape key]
+
+Note that when you create a .vimrc file, this can influence the 'compatible'
+option, which has several side effects.  See |'compatible'|.
+":mkvimrc", ":mkexrc" and ":mksession" write the command to set or reset the
+'compatible' option to the output file first, because of these side effects.
+
+==============================================================================
+8. Views and Sessions					*views-sessions*
+
+This is introduced in sections |21.4| and |21.5| of the user manual.
+
+						*View* *view-file*
+A View is a collection of settings that apply to one window.  You can save a
+View and when you restore it later, the text is displayed in the same way.
+The options and mappings in this window will also be restored, so that you can
+continue editing like when the View was saved.
+
+						*Session* *session-file*
+A Session keeps the Views for all windows, plus the global settings.  You can
+save a Session and when you restore it later the window layout looks the same.
+You can use a Session to quickly switch between different projects,
+automatically loading the files you were last working on in that project.
+
+Views and Sessions are a nice addition to viminfo-files, which are used to
+remember information for all Views and Sessions together |viminfo-file|.
+
+You can quickly start editing with a previously saved View or Session with the
+|-S| argument: >
+	vim -S Session.vim
+<
+All this is {not in Vi} and {not available when compiled without the
+|+mksession| feature}.
+
+							*:mks* *:mksession*
+:mks[ession][!] [file]	Write a Vim script that restores the current editing
+			session.
+			When [!] is included an existing file is overwritten.
+			When [file] is omitted "Session.vim" is used.
+
+The output of ":mksession" is like ":mkvimrc", but additional commands are
+added to the file.  Which ones depends on the 'sessionoptions' option.  The
+resulting file, when executed with a ":source" command:
+1. Restores global mappings and options, if 'sessionoptions' contains
+   "options".  Script-local mappings will not be written.
+2. Restores global variables that start with an uppercase letter and contain
+   at least one lowercase letter, if 'sessionoptions' contains "globals".
+3. Unloads all currently loaded buffers.
+4. Restores the current directory if 'sessionoptions' contains "curdir", or
+   sets the current directory to where the Session file is if 'sessionoptions'
+   contains "sesdir".
+5. Restores GUI Vim window position, if 'sessionoptions' contains "winpos".
+6. Restores screen size, if 'sessionoptions' contains "resize".
+7. Reloads the buffer list, with the last cursor positions.  If
+   'sessionoptions' contains "buffers" then all buffers are restored,
+   including hidden and unloaded buffers.  Otherwise only buffers in windows
+   are restored.
+8. Restores all windows with the same layout.  If 'sessionoptions' contains
+   contains "help", help windows are restored.  If 'sessionoptions' contains
+   "blank", windows editing a buffer without a name will be restored.
+   If 'sessionoptions' contains "winsize" and no (help/blank) windows were
+   left out, the window sizes are restored (relative to the screen size).
+   Otherwise, the windows are just given sensible sizes.
+9. Restores the Views for all the windows, as with |:mkview|.  But
+   'sessionoptions' is used instead of 'viewoptions'.
+10. If a file exists with the same name as the Session file, but ending in
+   "x.vim" (for eXtra), executes that as well.  You can use *x.vim files to
+   specify additional settings and actions associated with a given Session,
+   such as creating menu items in the GUI version.
+
+After restoring the Session, the full filename of your current Session is
+available in the internal variable "v:this_session" |this_session-variable|.
+An example mapping: >
+  :nmap <F2> :wa<Bar>exe "mksession! " . v:this_session<CR>:so ~/sessions/
+This saves the current Session, and starts off the command to load another.
+
+							*:mkvie* *:mkview*
+:mkvie[w][!] [file]	Write a Vim script that restores the contents of the
+			current window.
+			When [!] is included an existing file is overwritten.
+			When [file] is omitted or is a number from 1 to 9, a
+			name is generated and 'viewdir' prepended.  When last
+			directory name in 'viewdir' does not exist, this
+			directory is created.
+			An existing file is always overwritten then.  Use
+			|:loadview| to load this view again.
+			When [file] is the name of a file ('viewdir' is not
+			used), a command to edit the file is added to the
+			generated file.
+
+The output of ":mkview" contains these items:
+1. The argument list used in the window.  When the global argument list is
+   used it is reset to the global list.
+   The index in the argument list is also restored.
+2. The file being edited in the window.  If there is no file, the window is
+   made empty.
+3. Restore mappings, abbreviations and options local to the window if
+   'viewoptions' contains "options" or "localoptions".  For the options it
+   restores only values that are local to the current buffer and values local
+   to the window.
+   When storing the view as part of a session and "options" is in
+   'sessionoptions', global values for local options will be stored too.
+4. Restore folds when using manual folding and 'viewoptions' contains
+   "folds".  Restore manually opened and closed folds.
+5. The scroll position and the cursor position in the file.  Doesn't work very
+   well when there are closed folds.
+6. The local current directory, if it is different from the global current
+   directory.
+
+Note that Views and Sessions are not perfect:
+- They don't restore everything.  For example, defined functions, autocommands
+  and ":syntax on" are not included.  Things like register contents and
+  command line history are in viminfo, not in Sessions or Views.
+- Global option values are only set when the differ from the default value.
+  When the current value is not the default value, loading a Session will not
+  set it back to the default value.  Local options will be set back to the
+  default value though.
+- Existing mappings will be overwritten without warning.  An existing mapping
+  may cause an error for ambiguity.
+- When storing manual folds and when storing manually opened/closed folds,
+  changes in the file between saving and loading the view will mess it up.
+- The Vim script is not very efficient.  But still faster than typing the
+  commands yourself!
+
+							*:lo* *:loadview*
+:lo[adview] [nr]	Load the view for the current file.  When [nr] is
+			omitted, the view stored with ":mkview" is loaded.
+			When [nr] is specified, the view stored with ":mkview
+			[nr]" is loaded.
+
+The combination of ":mkview" and ":loadview" can be used to store up to ten
+different views of a file.  These are remembered in the directory specified
+with the 'viewdir' option.  The views are stored using the file name.  If a
+file is renamed or accessed through a (symbolic) link the view will not be
+found.
+
+You might want to clean up your 'viewdir' directory now and then.
+
+To automatically save and restore views for *.c files: >
+	au BufWinLeave *.c mkview
+	au BufWinEnter *.c silent loadview
+
+==============================================================================
+9. The viminfo file				*viminfo* *viminfo-file* *E136*
+						*E575* *E576* *E577*
+If you exit Vim and later start it again, you would normally lose a lot of
+information.  The viminfo file can be used to remember that information, which
+enables you to continue where you left off.
+
+This is introduced in section |21.3| of the user manual.
+
+The viminfo file is used to store:
+- The command line history.
+- The search string history.
+- The input-line history.
+- Contents of registers.
+- Marks for several files.
+- File marks, pointing to locations in files.
+- Last search/substitute pattern (for 'n' and '&').
+- The buffer list.
+- Global variables.
+
+The viminfo file is not supported when the |+viminfo| feature has been
+disabled at compile time.
+
+You could also use a Session file.  The difference is that the viminfo file
+does not depend on what you are working on.  There normally is only one
+viminfo file.  Session files are used to save the state of a specific editing
+Session.  You could have several Session files, one for each project you are
+working on.  Viminfo and Session files together can be used to effectively
+enter Vim and directly start working in your desired setup. |session-file|
+
+							*viminfo-read*
+When Vim is started and the 'viminfo' option is non-empty, the contents of
+the viminfo file are read and the info can be used in the appropriate places.
+The marks are not read in at startup (but file marks are).  See
+|initialization| for how to set the 'viminfo' option upon startup.
+
+							*viminfo-write*
+When Vim exits and 'viminfo' is non-empty, the info is stored in the viminfo
+file (it's actually merged with the existing one, if one exists).  The
+'viminfo' option is a string containing information about what info should be
+stored, and contains limits on how much should be stored (see 'viminfo').
+
+Notes for Unix:
+- The file protection for the viminfo file will be set to prevent other users
+  from being able to read it, because it may contain any text or commands that
+  you have worked with.
+- If you want to share the viminfo file with other users (e.g. when you "su"
+  to another user), you can make the file writable for the group or everybody.
+  Vim will preserve this when writing new viminfo files.  Be careful, don't
+  allow just anybody to read and write your viminfo file!
+- Vim will not overwrite a viminfo file that is not writable by the current
+  "real" user.  This helps for when you did "su" to become root, but your
+  $HOME is still set to a normal user's home directory.  Otherwise Vim would
+  create a viminfo file owned by root that nobody else can read.
+
+Marks are stored for each file separately.  When a file is read and 'viminfo'
+is non-empty, the marks for that file are read from the viminfo file.  NOTE:
+The marks are only written when exiting Vim, which is fine because marks are
+remembered for all the files you have opened in the current editing session,
+unless ":bdel" is used.  If you want to save the marks for a file that you are
+about to abandon with ":bdel", use ":wv".  The '[' and ']' marks are not
+stored, but the '"' mark is.  The '"' mark is very useful for jumping to the
+cursor position when the file was last exited.  No marks are saved for files
+that start with any string given with the "r" flag in 'viminfo'.  This can be
+used to avoid saving marks for files on removable media (for MS-DOS you would
+use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:").
+
+							*viminfo-file-marks*
+Uppercase marks ('A to 'Z) are stored when writing the viminfo file.  The
+numbered marks ('0 to '9) are a bit special.  When the viminfo file is written
+(when exiting or with the ":wviminfo" command), '0 is set to the current cursor
+position and file.  The old '0 is moved to '1, '1 to '2, etc.  This
+resembles what happens with the "1 to "9 delete registers.  If the current
+cursor position is already present in '0 to '9, it is moved to '0, to avoid
+having the same position twice.  The result is that with "'0", you can jump
+back to the file and line where you exited Vim.  To do that right away, try
+using this command: >
+
+	vim -c "normal '0"
+
+In a shell you could make an alias for it: >
+
+	alias lvim vim -c '"'normal "'"0'"'
+
+Use the "r" flag in 'viminfo' to specify for which files no marks should be
+remembered.
+
+
+VIMINFO FILE NAME					*viminfo-file-name*
+
+- The default name of the viminfo file is "$HOME/.viminfo" for Unix and OS/2,
+  "s:.viminfo" for Amiga, "$HOME\_viminfo" for MS-DOS and Win32.  For the last
+  two, when $HOME is not set, "$VIM\_viminfo" is used.  When $VIM is also not
+  set, "c:\_viminfo" is used.  For OS/2 "$VIM/.viminfo" is used when $HOME is
+  not set and $VIM is set.
+- The 'n' flag in the 'viminfo' option can be used to specify another viminfo
+  file name |'viminfo'|.
+- The "-i" Vim argument can be used to set another file name, |-i|.  When the
+  file name given is "NONE" (all uppercase), no viminfo file is ever read or
+  written.  Also not for the commands below!
+- For the commands below, another file name can be given, overriding the
+  default and the name given with 'viminfo' or "-i" (unless it's NONE).
+
+
+CHARACTER ENCODING					*viminfo-encoding*
+
+The text in the viminfo file is encoded as specified with the 'encoding'
+option.  Normally you will always work with the same 'encoding' value, and
+this works just fine.  However, if you read the viminfo file with another
+value for 'encoding' than what it was written with, some of the text
+(non-ASCII characters) may be invalid.  If this is unacceptable, add the 'c'
+flag to the 'viminfo' option: >
+	:set viminfo+=c
+Vim will then attempt to convert the text in the viminfo file from the
+'encoding' value it was written with to the current 'encoding' value.  This
+requires Vim to be compiled with the |+iconv| feature.  Filenames are not
+converted.
+
+
+MANUALLY READING AND WRITING
+
+Two commands can be used to read and write the viminfo file manually.  This
+can be used to exchange registers between two running Vim programs: First
+type ":wv" in one and then ":rv" in the other.  Note that if the register
+already contained something, then ":rv!" would be required.  Also note
+however that this means everything will be overwritten with information from
+the first Vim, including the command line history, etc.
+
+The viminfo file itself can be edited by hand too, although we suggest you
+start with an existing one to get the format right.  It is reasonably
+self-explanatory once you're in there.  This can be useful in order to
+create a second file, say "~/.my_viminfo" which could contain certain
+settings that you always want when you first start Vim.  For example, you
+can preload registers with particular data, or put certain commands in the
+command line history.  A line in your .vimrc file like >
+	:rviminfo! ~/.my_viminfo
+can be used to load this information.  You could even have different viminfos
+for different types of files (e.g., C code) and load them based on the file
+name, using the ":autocmd" command (see |:autocmd|).
+
+							*viminfo-errors*
+When Vim detects an error while reading a viminfo file, it will not overwrite
+that file.  If there are more than 10 errors, Vim stops reading the viminfo
+file.  This was done to avoid accidentally destroying a file when the file
+name of the viminfo file is wrong.  This could happen when accidentally typing
+"vim -i file" when you wanted "vim -R file" (yes, somebody accidentally did
+that!).  If you want to overwrite a viminfo file with an error in it, you will
+either have to fix the error, or delete the file (while Vim is running, so
+most of the information will be restored).
+
+						   *:rv* *:rviminfo* *E195*
+:rv[iminfo][!] [file]	Read from viminfo file [file] (default: see above).
+			If [!] is given, then any information that is
+			already set (registers, marks, etc.) will be
+			overwritten.  {not in Vi}
+
+					*:wv* *:wviminfo* *E137* *E138* *E574*
+:wv[iminfo][!] [file]	Write to viminfo file [file] (default: see above).
+			The information in the file is first read in to make
+			a merge between old and new info.  When [!] is used,
+			the old information is not read first, only the
+			internal info is written.  If 'viminfo' is empty, marks
+			for up to 100 files will be written.
+			When you get error "E138: Can't write viminfo file"
+			check that no old temp files were left behind (e.g.
+			~/.viminf*) and that you can write in the directory of
+			the .viminfo file.
+			{not in Vi}
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
new file mode 100644
index 0000000..db32235
--- /dev/null
+++ b/runtime/doc/syntax.txt
@@ -0,0 +1,4161 @@
+*syntax.txt*	For Vim version 7.0aa.  Last change: 2004 Jun 09
+
+
+		  VIM REFERENCE MANUAL	  by Bram Moolenaar
+
+
+Syntax highlighting		*syntax* *syntax-highlighting* *coloring*
+
+Syntax highlighting enables Vim to show parts of the text in another font or
+color.	Those parts can be specific keywords or text matching a pattern.  Vim
+doesn't parse the whole file (to keep it fast), so the highlighting has its
+limitations.  Lexical highlighting might be a better name, but since everybody
+calls it syntax highlighting we'll stick with that.
+
+Vim supports syntax highlighting on all terminals.  But since most ordinary
+terminals have very limited highlighting possibilities, it works best in the
+GUI version, gvim.
+
+In the User Manual:
+|usr_06.txt| introduces syntax highlighting.
+|usr_44.txt| introduces writing a syntax file.
+
+1.  Quick start			|:syn-qstart|
+2.  Syntax files		|:syn-files|
+3.  Syntax loading procedure	|syntax-loading|
+4.  Syntax file remarks		|:syn-file-remarks|
+5.  Defining a syntax		|:syn-define|
+6.  :syntax arguments		|:syn-arguments|
+7.  Syntax patterns		|:syn-pattern|
+8.  Syntax clusters		|:syn-cluster|
+9.  Including syntax files	|:syn-include|
+10. Synchronizing		|:syn-sync|
+11. Listing syntax items	|:syntax|
+12. Highlight command		|:highlight|
+13. Linking groups		|:highlight-link|
+14. Cleaning up			|:syn-clear|
+15. Highlighting tags		|tag-highlight|
+16. Color xterms		|xterm-color|
+
+{Vi does not have any of these commands}
+
+Syntax highlighting is not available when the |+syntax| feature has been
+disabled at compile time.
+
+==============================================================================
+1. Quick start						*:syn-qstart*
+
+						*:syn-enable* *:syntax-enable*
+This command switches on syntax highlighting: >
+
+	:syntax enable
+
+What this command actually does is to execute the command >
+	:source $VIMRUNTIME/syntax/syntax.vim
+
+If the VIM environment variable is not set, Vim will try to find
+the path in another way (see |$VIMRUNTIME|).  Usually this works just
+fine.  If it doesn't, try setting the VIM environment variable to the
+directory where the Vim stuff is located.  For example, if your syntax files
+are in the "/usr/vim/vim50/syntax" directory, set $VIMRUNTIME to
+"/usr/vim/vim50".  You must do this in the shell, before starting Vim.
+
+							*:syn-on* *:syntax-on*
+The ":syntax enable" command will keep your current color settings.  This
+allows using ":highlight" commands to set your preferred colors before or
+after using this command.  If you want Vim to overrule your settings with the
+defaults, use: >
+	:syntax on
+<
+					*:hi-normal* *:highlight-normal*
+If you are running in the GUI, you can get white text on a black background
+with: >
+	:highlight Normal guibg=Black guifg=White
+For a color terminal see |:hi-normal-cterm|.
+For setting up your own colors syntax highlighting see |syncolor|.
+
+NOTE: The syntax files on MS-DOS and Windows have lines that end in <CR><NL>.
+The files for Unix end in <NL>.  This means you should use the right type of
+file for your system.  Although on MS-DOS and Windows the right format is
+automatically selected if the 'fileformats' option is not empty.
+
+NOTE: When using reverse video ("gvim -fg white -bg black"), the default value
+of 'background' will not be set until the GUI window is opened, which is after
+reading the .gvimrc.  This will cause the wrong default highlighting to be
+used.  To set the default value of 'background' before switching on
+highlighting, include the ":gui" command in the .gvimrc: >
+
+   :gui		" open window and set default for 'background'
+   :syntax on	" start highlighting, use 'background' to set colors
+
+NOTE: Using ":gui" in the .gvimrc means that "gvim -f" won't start in the
+foreground!  Use ":gui -f" then.
+
+
+You can toggle the syntax on/off with this command >
+   :if exists("syntax_on") | syntax off | else | syntax enable | endif
+
+To put this into a mapping, you can use: >
+   :map <F7> :if exists("syntax_on") <Bar>
+	\   syntax off <Bar>
+	\ else <Bar>
+	\   syntax enable <Bar>
+	\ endif <CR>
+[using the |<>| notation, type this literally]
+
+Details
+The ":syntax" commands are implemented by sourcing a file.  To see exactly how
+this works, look in the file:
+    command		file ~
+    :syntax enable	$VIMRUNTIME/syntax/syntax.vim
+    :syntax on		$VIMRUNTIME/syntax/syntax.vim
+    :syntax manual	$VIMRUNTIME/syntax/manual.vim
+    :syntax off		$VIMRUNTIME/syntax/nosyntax.vim
+Also see |syntax-loading|.
+
+==============================================================================
+2. Syntax files						*:syn-files*
+
+The syntax and highlighting commands for one language are normally stored in
+a syntax file.	The name convention is: "{name}.vim".  Where {name} is the
+name of the language, or an abbreviation (to fit the name in 8.3 characters,
+a requirement in case the file is used on a DOS filesystem).
+Examples:
+	c.vim		perl.vim	java.vim	html.vim
+	cpp.vim		sh.vim		csh.vim
+
+The syntax file can contain any Ex commands, just like a vimrc file.  But
+the idea is that only commands for a specific language are included.  When a
+language is a superset of another language, it may include the other one,
+for example, the cpp.vim file could include the c.vim file: >
+   :so $VIMRUNTIME/syntax/c.vim
+
+The .vim files are normally loaded with an autocommand.  For example: >
+   :au Syntax c	    runtime! syntax/c.vim
+   :au Syntax cpp   runtime! syntax/cpp.vim
+These commands are normally in the file $VIMRUNTIME/syntax/synload.vim.
+
+
+MAKING YOUR OWN SYNTAX FILES				*mysyntaxfile*
+
+When you create your own syntax files, and you want to have Vim use these
+automatically with ":syntax enable", do this:
+
+1. Create your user runtime directory.	You would normally use the first item
+   of the 'runtimepath' option.  Example for Unix: >
+	mkdir ~/.vim
+
+2. Create a directory in there called "syntax".  For Unix: >
+	mkdir ~/.vim/syntax
+
+3. Write the Vim syntax file.  Or download one from the internet.  Then write
+   it in your syntax directory.  For example, for the "mine" syntax: >
+	:w ~/.vim/syntax/mine.vim
+
+Now you can start using your syntax file manually: >
+	:set syntax=mine
+You don't have to exit Vim to use this.
+
+If you also want Vim to detect the type of file, see |new-filetype|.
+
+If you are setting up a system with many users and you don't want each user
+to add the same syntax file, you can use another directory from 'runtimepath'.
+
+
+ADDING TO AN EXISTING SYNTAX FILE		*mysyntaxfile-add*
+
+If you are mostly satisfied with an existing syntax file, but would like to
+add a few items or change the highlighting, follow these steps:
+
+1. Create your user directory from 'runtimepath', see above.
+
+2. Create a directory in there called "after/syntax".  For Unix: >
+	mkdir ~/.vim/after
+	mkdir ~/.vim/after/syntax
+
+3. Write a Vim script that contains the commands you want to use.  For
+   example, to change the colors for the C syntax: >
+	highlight cComment ctermfg=Green guifg=Green
+
+4. Write that file in the "after/syntax" directory.  Use the name of the
+   syntax, with ".vim" added.  For our C syntax: >
+	:w ~/.vim/after/syntax/c.vim
+
+That's it.  The next time you edit a C file the Comment color will be
+different.  You don't even have to restart Vim.
+
+
+REPLACING AN EXISTING SYNTAX FILE			*mysyntaxfile-replace*
+
+If you don't like a distributed syntax file, or you have downloaded a new
+version, follow the same steps as for |mysyntaxfile| above.  Just make sure
+that you write the syntax file in a directory that is early in 'runtimepath'.
+Vim will only load the first syntax file found.
+
+
+NAMING CONVENTIONS
+				    *group-name* *{group-name}* *E669* *W18*
+The name for a highlight or syntax group must consist of ASCII letters, digits
+and the underscore.  As a regexp: "[a-zA-Z0-9_]*"
+
+To be able to allow each user to pick his favorite set of colors, there must
+be preferred names for highlight groups that are common for many languages.
+These are the suggested group names (if syntax highlighting works properly
+you can see the actual color, except for "Ignore"):
+
+	*Comment	any comment
+
+	*Constant	any constant
+	 String		a string constant: "this is a string"
+	 Character	a character constant: 'c', '\n'
+	 Number		a number constant: 234, 0xff
+	 Boolean	a boolean constant: TRUE, false
+	 Float		a floating point constant: 2.3e10
+
+	*Identifier	any variable name
+	 Function	function name (also: methods for classes)
+
+	*Statement	any statement
+	 Conditional	if, then, else, endif, switch, etc.
+	 Repeat		for, do, while, etc.
+	 Label		case, default, etc.
+	 Operator	"sizeof", "+", "*", etc.
+	 Keyword	any other keyword
+	 Exception	try, catch, throw
+
+	*PreProc	generic Preprocessor
+	 Include	preprocessor #include
+	 Define		preprocessor #define
+	 Macro		same as Define
+	 PreCondit	preprocessor #if, #else, #endif, etc.
+
+	*Type		int, long, char, etc.
+	 StorageClass	static, register, volatile, etc.
+	 Structure	struct, union, enum, etc.
+	 Typedef	A typedef
+
+	*Special	any special symbol
+	 SpecialChar	special character in a constant
+	 Tag		you can use CTRL-] on this
+	 Delimiter	character that needs attention
+	 SpecialComment	special things inside a comment
+	 Debug		debugging statements
+
+	*Underlined	text that stands out, HTML links
+
+	*Ignore		left blank, hidden
+
+	*Error		any erroneous construct
+
+	*Todo		anything that needs extra attention; mostly the
+			keywords TODO FIXME and XXX
+
+The names marked with * are the preferred groups; the others are minor groups.
+For the preferred groups, the "syntax.vim" file contains default highlighting.
+The minor groups are linked to the preferred groups, so they get the same
+highlighting.  You can override these defaults by using ":highlight" commands
+after sourcing the "syntax.vim" file.
+
+Note that highlight group names are not case sensitive.  "String" and "string"
+can be used for the same group.
+
+The following names are reserved and cannot be used as a group name:
+	NONE   ALL   ALLBUT   contains	 contained
+
+==============================================================================
+3. Syntax loading procedure				*syntax-loading*
+
+This explains the details that happen when the command ":syntax enable" is
+issued.  When Vim initializes itself, it finds out where the runtime files are
+located.  This is used here as the variable |$VIMRUNTIME|.
+
+":syntax enable" and ":syntax on" do the following:
+
+    Source $VIMRUNTIME/syntax/syntax.vim
+    |
+    +-	Clear out any old syntax by sourcing $VIMRUNTIME/syntax/nosyntax.vim
+    |
+    +-	Source first syntax/synload.vim in 'runtimepath'
+    |	|
+    |	+-  Setup the colors for syntax highlighting.  If a color scheme is
+    |	|   defined it is loaded again with ":colors {name}".  Otherwise
+    |	|   ":runtime! syntax/syncolor.vim" is used.  ":syntax on" overrules
+    |	|   existing colors, ":syntax enable" only sets groups that weren't
+    |	|   set yet.
+    |	|
+    |	+-  Set up syntax autocmds to load the appropriate syntax file when
+    |	|   the 'syntax' option is set. *synload-1*
+    |	|
+    |	+-  Source the user's optional file, from the |mysyntaxfile| variable.
+    |	    This is for backwards compatibility with Vim 5.x only. *synload-2*
+    |
+    +-	Do ":filetype on", which does ":runtime! filetype.vim".  It loads any
+    |	filetype.vim files found.  It should always Source
+    |	$VIMRUNTIME/filetype.vim, which does the following.
+    |	|
+    |	+-  Install autocmds based on suffix to set the 'filetype' option
+    |	|   This is where the connection between file name and file type is
+    |	|   made for known file types. *synload-3*
+    |	|
+    |	+-  Source the user's optional file, from the *myfiletypefile*
+    |	|   variable.  This is for backwards compatibility with Vim 5.x only.
+    |	|   *synload-4*
+    |	|
+    |	+-  Install one autocommand which sources scripts.vim when no file
+    |	|   type was detected yet. *synload-5*
+    |	|
+    |	+-  Source $VIMRUNTIME/menu.vim, to setup the Syntax menu. |menu.vim|
+    |
+    +-	Install a FileType autocommand to set the 'syntax' option when a file
+    |	type has been detected. *synload-6*
+    |
+    +-	Execute syntax autocommands to start syntax highlighting for each
+	already loaded buffer.
+
+
+Upon loading a file, Vim finds the relevant syntax file as follows:
+
+    Loading the file triggers the BufReadPost autocommands.
+    |
+    +-	If there is a match with one of the autocommands from |synload-3|
+    |	(known file types) or |synload-4| (user's file types), the 'filetype'
+    |	option is set to the file type.
+    |
+    +-	The autocommand at |synload-5| is triggered.  If the file type was not
+    |	found yet, then scripts.vim is searched for in 'runtimepath'.  This
+    |	should always load $VIMRUNTIME/scripts.vim, which does the following.
+    |	|
+    |	+-  Source the user's optional file, from the *myscriptsfile*
+    |	|   variable.  This is for backwards compatibility with Vim 5.x only.
+    |	|
+    |	+-  If the file type is still unknown, check the contents of the file,
+    |	    again with checks like "getline(1) =~ pattern" as to whether the
+    |	    file type can be recognized, and set 'filetype'.
+    |
+    +-	When the file type was determined and 'filetype' was set, this
+    |	triggers the FileType autocommand |synload-6| above.  It sets
+    |	'syntax' to the determined file type.
+    |
+    +-	When the 'syntax' option was set above, this triggers an autocommand
+    |	from |synload-1| (and |synload-2|).  This find the main syntax file in
+    |	'runtimepath', with this command:
+    |		runtime! syntax/<name>.vim
+    |
+    +-	Any other user installed FileType or Syntax autocommands are
+	triggered.  This can be used to change the highlighting for a specific
+	syntax.
+
+==============================================================================
+4. Syntax file remarks					*:syn-file-remarks*
+
+						*b:current_syntax-variable*
+Vim stores the name of the syntax that has been loaded in the
+"b:current_syntax" variable.  You can use this if you want to load other
+settings, depending on which syntax is active.	Example: >
+   :au BufReadPost * if b:current_syntax == "csh"
+   :au BufReadPost *   do-some-things
+   :au BufReadPost * endif
+
+
+2HTML						*2html.vim* *convert-to-HTML*
+
+This is not a syntax file itself, but a script that converts the current
+window into HTML.  Vim opens a new window in which it builds the HTML file.
+
+You are not supposed to set the 'filetype' or 'syntax' option to "2html"!
+Source the script to convert the current file: >
+
+	:runtime! syntax/2html.vim
+<
+Warning: This is slow!
+							*:TOhtml*
+Or use the ":TOhtml" user command.  It is defined in a standard plugin.
+":TOhtml" also works with a range and in a Visual area: >
+
+	:10,40TOhtml
+
+After you save the resulting file, you can view it with any HTML viewer, such
+as Netscape.  The colors should be exactly the same as you see them in Vim.
+
+To restrict the conversion to a range of lines set "html_start_line" and
+"html_end_line" to the first and last line to be converted.  Example, using
+the last set Visual area: >
+
+	:let html_start_line = line("'<")
+	:let html_end_line = line("'>")
+
+The lines are numbered according to 'number' option and the Number
+highlighting.  You can force lines to be numbered in the HTML output by
+setting "html_number_lines" to non-zero value: >
+   :let html_number_lines = 1
+Force to omit the line numbers by using a zero value: >
+   :let html_number_lines = 0
+Go back to the default to use 'number' by deleting the variable: >
+   :unlet html_number_lines
+
+By default, HTML optimized for old browsers is generated.  If you prefer using
+cascading style sheets (CSS1) for the attributes (resulting in considerably
+shorter and valid HTML 4 file), use: >
+   :let html_use_css = 1
+
+By default "<pre>" and "</pre>" is used around the text.  This makes it show
+up as you see it in Vim, but without wrapping.	If you prefer wrapping, at the
+risk of making some things look a bit different, use: >
+   :let html_no_pre = 1
+This will use <br> at the end of each line and use "&nbsp;" for repeated
+spaces.
+
+The current value of 'encoding' is used to specify the charset of the HTML
+file.  This only works for those values of 'encoding' that have an equivalent
+HTML charset name.  To overrule this set g:html_use_encoding to the name of
+the charset to be used: >
+   :let html_use_encoding = "foobar"
+To omit the line that specifies the charset, set g:html_use_encoding to an
+empty string: >
+   :let html_use_encoding = ""
+To go back to the automatic mechanism, delete the g:html_use_encoding
+variable: >
+   :unlet html_use_encoding
+<
+					    *convert-to-XML* *convert-to-XHTML*
+An alternative is to have the script generate XHTML (XML compliant HTML).  To
+do this set the "use_xhtml" variable: >
+    :let use_xhtml = 1
+To disable it again delete the variable: >
+    :unlet use_xhtml
+The generated XHTML file can be used in DocBook XML documents.  See:
+	http://people.mech.kuleuven.ac.be/~pissaris/howto/src2db.html
+
+Remarks:
+- This only works in a version with GUI support.  If the GUI is not actually
+  running (possible for X11) it still works, but not very well (the colors
+  may be wrong).
+- Older browsers will not show the background colors.
+- From most browsers you can also print the file (in color)!
+
+Here is an example how to run the script over all .c and .h files from a
+Unix shell: >
+   for f in *.[ch]; do gvim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" $f; done
+<
+
+ABEL							*abel.vim* *abel-syntax*
+
+ABEL highlighting provides some user-defined options.  To enable them, assign
+any value to the respective variable.  Example: >
+	:let abel_obsolete_ok=1
+To disable them use ":unlet".  Example: >
+	:unlet abel_obsolete_ok
+
+Variable			Highlight ~
+abel_obsolete_ok		obsolete keywords are statements, not errors
+abel_cpp_comments_illegal	do not interpret '//' as inline comment leader
+
+
+ADA							*ada.vim* *ada-syntax*
+
+This mode is designed for the 1995 edition of Ada ("Ada95"), which
+includes support for objected-programming, protected types, and so on.
+It handles code written for the original Ada language
+("Ada83" or "Ada87") as well, though Ada83 code which uses Ada95-only
+keywords will be wrongly colored (such code should be fixed anyway).
+For more information about Ada, see http://www.adapower.com.
+
+The Ada mode handles a number of situations cleanly.
+For example, it knows that the "-" in "-5" is a number, but the same
+character in "A-5" is an operator.  Normally, a "with" or "use" clause
+referencing another compilation unit is colored the same way as C's
+"#include" is colored.	If you have "Conditional" or "Repeat"
+groups colored differently, then "end if" and "end loop" will be
+colored as part of those respective groups.
+You can set these to different colors using vim's "highlight" command
+(e.g., to change how loops are displayed, enter the command
+":hi Repeat" followed by the color specification; on simple terminals
+the color specification ctermfg=White often shows well).
+
+There are several options you can select in this Ada mode.
+To enable them, assign a value to the option.  For example, to turn one on:
+   let ada_standard_types = 1
+To disable them use ":unlet".  Example:
+   unlet ada_standard_types = 1
+You can just use ":" and type these into the command line to set these
+temporarily before loading an Ada file.  You can make these option settings
+permanent by adding the "let" command(s), without a colon,
+to your "~/.vimrc" file.
+
+Here are the Ada mode options:
+
+Variable		 Action	~
+ada_standard_types	 Highlight types in package Standard (e.g., "Float")
+ada_space_errors	 Highlight extraneous errors in spaces...
+ada_no_trail_space_error   but ignore trailing spaces at the end of a line
+ada_no_tab_space_error	   but ignore tabs after spaces
+ada_withuse_ordinary	 Show "with" and "use" as ordinary keywords
+			   (when used to reference other compilation units
+			   they're normally highlighted specially).
+ada_begin_preproc	 Show all begin-like keywords using the coloring
+			   of C preprocessor commands.
+
+Even on a slow (90Mhz) PC this mode works quickly, but if you find
+the performance unacceptable, turn on ada_withuse_ordinary.
+
+
+ANT						*ant.vim* *ant-syntax*
+
+The ant syntax file provides syntax highlighting for javascript and python
+by default. Syntax highlighting for other script languages can be installed
+by the function AntSyntaxScript(), which takes the tag name as first argument
+and the script syntax file name as second argument. Example: >
+
+	:call AntSyntaxScript('perl', 'perl.vim')
+
+will install syntax perl highlighting for the following ant code >
+
+	<script language = 'perl'><![CDATA[
+	    # everything inside is highlighted as perl
+	]]></script>
+
+See |mysyntaxfile-add| for installing script languages permanently.
+
+
+APACHE						*apache.vim* *apache-syntax*
+
+The apache syntax file provides syntax highlighting depending on Apache HTTP
+server version, by default for 1.3.x.  Set "apache_version" to Apache version
+(as a string) to get highlighting for another version.	Example: >
+
+	:let apache_version = "2.0"
+<
+
+		*asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k*
+ASSEMBLY	*asm-syntax* *asmh8300-syntax* *nasm-syntax* *masm-syntax*
+		*asm68k-syntax* *fasm.vim*
+
+Files matching "*.i" could be Progress or Assembly.  If the automatic detection
+doesn't work for you, or you don't edit Progress at all, use this in your
+startup vimrc: >
+   :let filetype_i = "asm"
+Replace "asm" with the type of assembly you use.
+
+There are many types of assembly languages that all use the same file name
+extensions.  Therefore you will have to select the type yourself, or add a
+line in the assembly file that Vim will recognize.  Currently these syntax
+files are included:
+	asm		GNU assembly (the default)
+	asm68k		Motorola 680x0 assembly
+	asmh8300	Hitachi H-8300 version of GNU assembly
+	ia64		Intel Itanium 64
+	fasm		Flat assembly (http://flatassembler.net)
+	masm		Microsoft assembly (probably works for any 80x86)
+	nasm		Netwide assembly
+	tasm		Turbo Assembly (with opcodes 80x86 up to Pentium, and
+			MMX)
+	pic		PIC assembly (currently for PIC16F84)
+
+The most flexible is to add a line in your assembly file containing: >
+	:asmsyntax=nasm
+Replace "nasm" with the name of the real assembly syntax.  This line must be
+one of the first five lines in the file.
+
+The syntax type can always be overruled for a specific buffer by setting the
+b:asmsyntax variable: >
+	:let b:asmsyntax=nasm
+
+If b:asmsyntax is not set, either automatically or by hand, then the value of
+the global variable asmsyntax is used.	This can be seen as a default assembly
+language: >
+	:let asmsyntax=nasm
+
+As a last resort, if nothing is defined, the "asm" syntax is used.
+
+
+Netwide assembler (nasm.vim) optional highlighting ~
+
+To enable a feature: >
+	:let   {variable}=1|set syntax=nasm
+To disable a feature: >
+	:unlet {variable}  |set syntax=nasm
+
+Variable		Highlight ~
+nasm_loose_syntax	unofficial parser allowed syntax not as Error
+			  (parser dependent; not recommended)
+nasm_ctx_outside_macro	contexts outside macro not as Error
+nasm_no_warn		potentially risky syntax not as ToDo
+
+
+ASPPERL and ASPVBS			*aspperl-syntax* *aspvbs-syntax*
+
+*.asp and *.asa files could be either Perl or Visual Basic script.  Since it's
+hard to detect this you can set two global variables to tell Vim what you are
+using.	For Perl script use: >
+	:let g:filetype_asa = "aspperl"
+	:let g:filetype_asp = "aspperl"
+For Visual Basic use: >
+	:let g:filetype_asa = "aspvbs"
+	:let g:filetype_asp = "aspvbs"
+
+
+BASIC				*basic.vim* *vb.vim* *basic-syntax* *vb-syntax*
+
+Both Visual Basic and "normal" basic use the extension ".bas".	To detect
+which one should be used, Vim checks for the string "VB_Name" in the first
+five lines of the file.  If it is not found, filetype will be "basic",
+otherwise "vb".  Files with the ".frm" extension will always be seen as Visual
+Basic.
+
+
+C							*c.vim* *c-syntax*
+
+A few things in C highlighting are optional.  To enable them assign any value
+to the respective variable.  Example: >
+	:let c_comment_strings=1
+To disable them use ":unlet".  Example: >
+	:unlet c_comment_strings
+
+Variable		Highlight ~
+c_gnu			GNU gcc specific items
+c_comment_strings	strings and numbers inside a comment
+c_space_errors		trailing white space and spaces before a <Tab>
+c_no_trail_space_error	 ... but no trailing spaces
+c_no_tab_space_error	 ... but no spaces before a <Tab>
+c_no_bracket_error	don't highlight {}; inside [] as errors
+c_no_ansi		don't do standard ANSI types and constants
+c_ansi_typedefs		 ... but do standard ANSI types
+c_ansi_constants	 ... but do standard ANSI constants
+c_no_utf		don't highlight \u and \U in strings
+c_syntax_for_h		use C syntax for *.h files, instead of C++
+c_no_if0		don't highlight "#if 0" blocks as comments
+c_no_cformat		don't highlight %-formats in strings
+c_no_c99		don't highlight C99 standard items
+
+If you notice highlighting errors while scrolling backwards, which are fixed
+when redrawing with CTRL-L, try setting the "c_minlines" internal variable
+to a larger number: >
+	:let c_minlines = 100
+This will make the syntax synchronization start 100 lines before the first
+displayed line.  The default value is 50 (15 when c_no_if0 is set).  The
+disadvantage of using a larger number is that redrawing can become slow.
+
+When using the "#if 0" / "#endif" comment highlighting, notice that this only
+works when the "#if 0" is within "c_minlines" from the top of the window.  If
+you have a long "#if 0" construct it will not be highlighted correctly.
+
+To match extra items in comments, use the cCommentGroup cluster.
+Example: >
+   :au Syntax c call MyCadd()
+   :function MyCadd()
+   :  syn keyword cMyItem contained Ni
+   :  syn cluster cCommentGroup add=cMyItem
+   :  hi link cMyItem Title
+   :endfun
+
+ANSI constants will be highlighted with the "cConstant" group.	This includes
+"NULL", "SIG_IGN" and others.  But not "TRUE", for example, because this is
+not in the ANSI standard.  If you find this confusing, remove the cConstant
+highlighting: >
+	:hi link cConstant NONE
+
+If you see '{' and '}' highlighted as an error where they are OK, reset the
+highlighting for cErrInParen and cErrInBracket.
+
+If you want to use folding in your C files, you can add these lines in a file
+an the "after" directory in 'runtimepath'.  For Unix this would be
+~/.vim/after/syntax/c.vim. >
+    syn region myFold start="{" end="}" transparent fold
+    syn sync fromstart
+    set foldmethod=syntax
+
+
+CHILL						*chill.vim* *chill-syntax*
+
+Chill syntax highlighting is similar to C.  See |c.vim| for all the settings
+that are available.  Additionally there is:
+
+chill_syntax_for_h	use Ch syntax for *.h files, instead of C or C++
+chill_space_errors	like c_space_errors
+chill_comment_string	like c_comment_strings
+chill_minlines		like c_minlines
+
+
+CHANGELOG				*changelog.vim* *changelog-syntax*
+
+ChangeLog supports highlighting spaces at the start of a line.
+If you do not like this, add following line to your .vimrc: >
+	let g:changelog_spacing_errors = 0
+This works the next time you edit a changelog file.  You can also use
+"b:changelog_spacing_errors" to set this per buffer (before loading the syntax
+file).
+
+You can change the highlighting used, e.g., to flag the spaces as an error: >
+	:hi link ChangelogError Error
+Or to avoid the highlighting: >
+	:hi link ChangelogError NONE
+This works immediately.
+
+
+COBOL						*cobol.vim* *cobol-syntax*
+
+COBOL highlighting has different needs for legacy code than it does for fresh
+development.  This is due to differences in what is being done (maintenance
+versus development) and other factors.	To enable legacy code highlighting,
+add this line to your .vimrc: >
+	:let cobol_legacy_code = 1
+To disable it again, use this: >
+	:unlet cobol_legacy_code
+
+
+COLD FUSION				*coldfusion.vim* *coldfusion-syntax*
+
+The ColdFusion has its own version of HTML comments. To turn on ColdFusion
+comment highlighting, add the following line to your startup file: >
+
+	:let html_wrong_comments = 1
+
+The ColdFusion syntax file is based on the HTML syntax file.
+
+
+CSH						*csh.vim* *csh-syntax*
+
+This covers the shell named "csh".  Note that on some systems tcsh is actually
+used.
+
+Detecting whether a file is csh or tcsh is notoriously hard.  Some systems
+symlink /bin/csh to /bin/tcsh, making it almost impossible to distinguish
+between csh and tcsh.  In case VIM guesses wrong you can set the
+"filetype_csh" variable.  For using csh: >
+
+	:let filetype_csh = "csh"
+
+For using tcsh: >
+
+	:let filetype_csh = "tcsh"
+
+Any script with a tcsh extension or a standard tcsh filename (.tcshrc,
+tcsh.tcshrc, tcsh.login) will have filetype tcsh.  All other tcsh/csh scripts
+will be classified as tcsh, UNLESS the "filetype_csh" variable exists. If the
+"filetype_csh" variable exists, the filetype will be set to the value of the
+variable.
+
+
+CYNLIB						*cynlib.vim* *cynlib-syntax*
+
+Cynlib files are C++ files that use the Cynlib class library to enable
+hardware modeling and simulation using C++. Typically Cynlib files have a .cc
+or a .cpp extension, which makes it very difficult to distinguish them from a
+normal C++ file. Thus, to enable Cynlib highlighting for .cc files, add this
+line to your .vimrc file: >
+
+	:let cynlib_cyntax_for_cc=1
+
+Similarly for cpp files (this extension is only usually used in Windows) >
+
+	:let cynlib_cyntax_for_cpp=1
+
+To disable these again, use this: >
+
+	:unlet cynlib_cyntax_for_cc
+	:unlet cynlib_cyntax_for_cpp
+<
+
+CWEB						*cweb.vim* *cweb-syntax*
+
+Files matching "*.w" could be Progress or cweb.  If the automatic detection
+doesn't work for you, or you don't edit Progress at all, use this in your
+startup vimrc: >
+   :let filetype_w = "cweb"
+
+
+DESKTOP					   *desktop.vim* *desktop-syntax*
+
+Primary goal of this syntax file is to highlight .desktop and .directory files
+according to freedesktop.org standard: http://pdx.freedesktop.org/Standards/
+But actually almost none implements this standard fully.  Thus it will
+highlight all Unix ini files. But you can force strict highlighting according
+to standard by placing this in your vimrc file: >
+	:let enforce_freedesktop_standard = 1
+
+
+DIRCOLORS			       *dircolors.vim* *dircolors-syntax*
+
+The dircolors utility highlighting definition has one option.  It exists to
+provide compatibility with the Slackware GNU/Linux distributions version of
+the command.  It adds a few keywords that are generally ignored by most
+versions.  On Slackware systems, however, the utility accepts the keywords and
+uses them for processing.  To enable the Slackware keywords add the following
+line to your startup file: >
+	let dircolors_is_slackware = 1
+
+
+DOCBOOK					*docbk.vim* *docbk-syntax* *docbook*
+DOCBOOK	XML				*docbkxml.vim* *docbkxml-syntax*
+DOCBOOK	SGML				*docbksgml.vim* *docbksgml-syntax*
+
+There are two types of DocBook files: SGML and XML.  To specify what type you
+are using the "b:docbk_type" variable should be set.  Vim does this for you
+automatically if it can recognize the type.  When Vim can't guess it the type
+defaults to XML.
+You can set the type manually: >
+	:let docbk_type = "sgml"
+or: >
+	:let docbk_type = "xml"
+You need to do this before loading the syntax file, which is complicated.
+Simpler is setting the filetype to "docbkxml" or "docbksgml": >
+	:set filetype=docbksgml
+or: >
+	:set filetype=docbkxml
+
+
+DOSBATCH				*dosbatch.vim* *dosbatch-syntax*
+
+There is one option with highlighting DOS batch files.	This covers new
+extensions to the Command Interpreter introduced with Windows 2000 and
+is controlled by the variable dosbatch_cmdextversion.  For Windows NT
+this should have the value 1, and for Windows 2000 it should be 2.
+Select the version you want with the following line: >
+
+  :let dosbatch_cmdextversion = 1
+
+If this variable is not defined it defaults to a value of 2 to support
+Windows 2000.
+
+
+DTD						*dtd.vim* *dtd-syntax*
+
+The DTD syntax highlighting is case sensitive by default. To disable
+case-sensitive highlighting, add the following line to your startup file: >
+
+	:let dtd_ignore_case=1
+
+The DTD syntax file will highlight unknown tags as errors. If
+this is annoying, it can be turned off by setting: >
+
+	:let dtd_no_tag_errors=1
+
+before sourcing the dtd.vim syntax file.
+Parameter entity names are highlighted in the definition using the
+'Type' highlighting group and 'Comment' for punctuation and '%'.
+Parameter entity instances are highlighted using the 'Constant'
+highlighting group and the 'Type' highlighting group for the
+delimiters % and ;. This can be turned off by setting: >
+
+	:let dtd_no_param_entities=1
+
+The DTD syntax file is also included by xml.vim to highlight included dtd's.
+
+
+EIFFEL						*eiffel.vim* *eiffel-syntax*
+
+While Eiffel is not case-sensitive, its style guidelines are, and the
+syntax highlighting file encourages their use. This also allows to
+highlight class names differently. If you want to disable case-sensitive
+highlighting, add the following line to your startup file: >
+
+	:let eiffel_ignore_case=1
+
+Case still matters for class names and TODO marks in comments.
+
+Conversely, for even stricter checks, add one of the following lines: >
+
+	:let eiffel_strict=1
+	:let eiffel_pedantic=1
+
+Setting eiffel_strict will only catch improper capitalization for the
+five predefined words "Current", "Void", "Result", "Precursor", and
+"NONE", to warn against their accidental use as feature or class names.
+
+Setting eiffel_pedantic will enforce adherence to the Eiffel style
+guidelines fairly rigorously (like arbitrary mixes of upper- and
+lowercase letters as well as outdated ways to capitalize keywords).
+
+If you want to use the lower-case version of "Current", "Void",
+"Result", and "Precursor", you can use >
+
+	:let eiffel_lower_case_predef=1
+
+instead of completely turning case-sensitive highlighting off.
+
+Support for ISE's proposed new creation syntax that is already
+experimentally handled by some compilers can be enabled by: >
+
+	:let eiffel_ise=1
+
+Finally, some vendors support hexadecimal constants. To handle them, add >
+
+	:let eiffel_hex_constants=1
+
+to your startup file.
+
+
+ERLANG						*erlang.vim* *erlang-syntax*
+
+The erlang highlighting supports Erlang (ERicsson LANGuage).
+Erlang is case sensitive and default extension is ".erl".
+
+If you want to disable keywords highlighting, put in your .vimrc: >
+	:let erlang_keywords = 1
+If you want to disable built-in-functions highlighting, put in your
+.vimrc file: >
+	:let erlang_functions = 1
+If you want to disable special characters highlighting, put in
+your .vimrc: >
+	:let erlang_characters = 1
+
+
+FORM						*form.vim* *form-syntax*
+
+The coloring scheme for syntax elements in the FORM file uses the default
+modes Conditional, Number, Statement, Comment, PreProc, Type, and String,
+following the language specifications in 'Symbolic Manipulation with FORM'' by
+J.A.M. Vermaseren, CAN, Netherlands, 1991.
+
+If you want include your own changes to the default colors, you have to
+redefine the following syntax groups:
+
+    - formConditional
+    - formNumber
+    - formStatement
+    - formHeaderStatement
+    - formComment
+    - formPreProc
+    - formDirective
+    - formType
+    - formString
+
+Note that the form.vim syntax file implements FORM preprocessor commands and
+directives per default in the same syntax group.
+
+A predefined enhanced color mode for FORM is available to distinguish between
+header statements and statements in the body of a FORM program. To activate
+this mode define the following variable in your vimrc file >
+
+	:let form_enhanced_color=1
+
+The enhanced mode also takes advantage of additional color features for a dark
+gvim display. Here, statements are colored LightYellow instead of Yellow, and
+conditionals are LightBlue for better distinction.
+
+
+FORTRAN					*fortran.vim* *fortran-syntax*
+
+Default highlighting and dialect ~
+Highlighting appropriate for f95 (Fortran 95) is used by default. This choice
+should be appropriate for most users most of the time because Fortran 95 is a
+superset of Fortran 90 and almost a superset of Fortran 77.
+
+Fortran source code form ~
+Fortran 9x code can be in either fixed or free source form. Note that the
+syntax highlighting will not be correct if the form is incorrectly set.
+
+When you create a new fortran file, the syntax script assumes fixed source
+form. If you always use free source form, then >
+    :let fortran_free_source=1
+in your .vimrc prior to the :syntax on command. If you always use fixed source
+form, then >
+    :let fortran_fixed_source=1
+in your .vimrc prior to the :syntax on command.
+
+If the form of the source code depends upon the file extension, then it is
+most convenient to set fortran_free_source in a ftplugin file. For more
+information on ftplugin files, see |ftplugin|. For example, if all your
+fortran files with an .f90 extension are written in free source form and the
+rest in fixed source form, add the following code to your ftplugin file >
+    let s:extfname = expand("%:e")
+    if s:extfname ==? "f90"
+	let fortran_free_source=1
+	unlet! fortran_fixed_source
+    else
+	let fortran_fixed_source=1
+	unlet! fortran_free_source
+    endif
+Note that this will work only if the "filetype plugin indent on" command
+precedes the "syntax on" command in your .vimrc file.
+
+When you edit an existing fortran file, the syntax script will assume free
+source form if the fortran_free_source variable has been set, and assumes
+fixed source form if the fortran_fixed_source variable has been set. If
+neither of these variables have been set, the syntax script attempts to
+determine which source form has been used by examining the first five columns
+of the first 25 lines of your file. If no signs of free source form are
+detected, then the file is assumed to be in fixed source form. The algorithm
+should work in the vast majority of cases. In some cases, such as a file that
+begins with 25 or more full-line comments, the script may incorrectly decide
+that the fortran code is in fixed form. If that happens, just add a
+non-comment statement beginning anywhere in the first five columns of the
+first twenty five lines, save (:w) and then reload (:e!) the file.
+
+Tabs in fortran files ~
+Tabs are not recognized by the Fortran standards. Tabs are not a good idea in
+fixed format fortran source code which requires fixed column boundaries.
+Therefore, tabs are marked as errors. Nevertheless, some programmers like
+using tabs. If your fortran files contain tabs, then you should set the
+variable fortran_have_tabs in your .vimrc with a command such as >
+    :let fortran_have_tabs=1
+placed prior to the :syntax on command. Unfortunately, the use of tabs will
+mean that the syntax file will not be able to detect incorrect margins.
+
+Syntax folding of fortran files ~
+If you wish to use foldmethod=syntax, then you must first set the variable
+fortran_fold with a command such as >
+    :let fortran_fold=1
+to instruct the syntax script to define fold regions for program units, that
+is main programs starting with a program statement, subroutines, function
+subprograms, block data subprograms, interface blocks, and modules. If you
+also set the variable fortran_fold_conditionals with a command such as >
+    :let fortran_fold_conditionals=1
+then fold regions will also be defined for do loops, if blocks, and select
+case constructs. If you also set the variable
+fortran_fold_multilinecomments with a command such as >
+    :let fortran_fold_multilinecomments=1
+then fold regions will also be defined for three or more consecutive comment
+lines. Note that defining fold regions can be slow for large files.
+
+If fortran_fold, and possibly fortran_fold_conditionals and/or
+fortran_fold_multilinecomments, have been set, then vim will fold your file if
+you set foldmethod=syntax. Comments or blank lines placed between two program
+units are not folded because they are seen as not belonging to any program
+unit.
+
+More precise fortran syntax ~
+If you set the variable fortran_more_precise with a command such as >
+    :let fortran_more_precise=1
+then the syntax coloring will be more precise but slower. In particular,
+statement labels used in do, goto and arithmetic if statements will be
+recognized, as will construct names at the end of a do, if, select or forall
+construct.
+
+Non-default fortran dialects ~
+The syntax script supports five Fortran dialects: f95, f90, f77, the Lahey
+subset elf90, and the Imagine1 subset F.
+
+If you use f77 with extensions, even common ones like do/enddo loops, do/while
+loops and free source form that are supported by most f77 compilers including
+g77 (GNU Fortran), then you will probably find the default highlighting
+satisfactory. However, if you use strict f77 with no extensions, not even free
+source form or the MIL STD 1753 extensions, then the advantages of setting the
+dialect to f77 are that names such as SUM are recognized as user variable
+names and not highlighted as f9x intrinsic functions, that obsolete constructs
+such as ASSIGN statements are not highlighted as todo items, and that fixed
+source form will be assumed.
+
+If you use elf90 or F, the advantage of setting the dialect appropriately is
+that f90 features excluded from these dialects will be highlighted as todo
+items and that free source form will be assumed as required for these
+dialects.
+
+The dialect can be selected by setting the variable fortran_dialect. The
+permissible values of fortran_dialect are case-sensitive and must be "f95",
+"f90", "f77", "elf" or "F". Invalid values of fortran_dialect are ignored.
+
+If all your fortran files use the same dialect, set fortran_dialect in your
+.vimrc prior to your syntax on statement. If the dialect depends upon the file
+extension, then it is most convenient to set it in a ftplugin file. For more
+information on ftplugin files, see |ftplugin|. For example, if all your
+fortran files with an .f90 extension are written in the elf subset, your
+ftplugin file should contain the code >
+    let s:extfname = expand("%:e")
+    if s:extfname ==? "f90"
+	let fortran_dialect="elf"
+    else
+	unlet! fortran_dialect
+    endif
+Note that this will work only if the "filetype plugin indent on" command
+precedes the "syntax on" command in your .vimrc file.
+
+Finer control is necessary if the file extension does not uniquely identify
+the dialect. You can override the default dialect, on a file-by-file basis, by
+including a comment with the directive "fortran_dialect=xx" (where xx=f77 or
+elf or F or f90 or f95) in one of the first three lines in your file. For
+example, your older .f files may be written in extended f77 but your newer
+ones may be F codes, and you would identify the latter by including in the
+first three lines of those files a Fortran comment of the form >
+  ! fortran_dialect=F
+F overrides elf if both directives are present.
+
+Limitations ~
+Parenthesis checking does not catch too few closing parentheses. Hollerith
+strings are not recognized. Some keywords may be highlighted incorrectly
+because Fortran90 has no reserved words.
+
+For further information related to fortran, see |fortran-indent| and
+|fortran-plugin|.
+
+
+FVWM CONFIGURATION FILES			*fvwm.vim* *fvwm-syntax*
+
+In order for Vim to recognize Fvwm configuration files that do not match
+the patterns *fvwmrc* or *fvwm2rc* , you must put additional patterns
+appropriate to your system in your myfiletypes.vim file.  For these
+patterns, you must set the variable "b:fvwm_version" to the major version
+number of Fvwm, and the 'filetype' option to fvwm.
+
+For example, to make Vim identify all files in /etc/X11/fvwm2/
+as Fvwm2 configuration files, add the following: >
+
+  :au! BufNewFile,BufRead /etc/X11/fvwm2/*  let b:fvwm_version = 2 |
+					 \ set filetype=fvwm
+
+If you'd like Vim to highlight all valid color names, tell it where to
+find the color database (rgb.txt) on your system.  Do this by setting
+"rgb_file" to its location.  Assuming your color database is located
+in /usr/X11/lib/X11/, you should add the line >
+
+	:let rgb_file = "/usr/X11/lib/X11/rgb.txt"
+
+to your .vimrc file.
+
+
+GSP							*gsp.vim*
+
+The default coloring style for GSP pages is defined by |html.vim|, and
+the coloring for java code (within java tags or inline between backticks)
+is defined by |java.vim|.  The following HTML groups defined in |html.vim|
+are redefined to incorporate and highlight inline java code:
+
+    htmlString
+    htmlValue
+    htmlEndTag
+    htmlTag
+    htmlTagN
+
+Highlighting should look fine most of the places where you'd see inline
+java code, but in some special cases it may not.  To add another HTML
+group where you will have inline java code where it does not highlight
+correctly, just copy the line you want from |html.vim| and add gspJava
+to the contains clause.
+
+The backticks for inline java are highlighted according to the htmlError
+group to make them easier to see.
+
+
+GROFF						*groff.vim* *groff-syntax*
+
+The groff syntax file is a wrapper for |nroff.vim|, see the notes
+under that heading for examples of use and configuration. The purpose
+of this wrapper is to set up groff syntax extensions by setting the
+filetype from a |modeline| or in a personal filetype definitions file
+(see |filetype.txt|).
+
+
+HASKELL			     *haskell.vim* *lhaskell.vim* *haskell-syntax*
+
+The Haskell syntax files support plain Haskell code as well as literate
+Haskell code, the latter in both Bird style and TeX style. The Haskell
+syntax highlighting will also highlight C preprocessor directives.
+
+If you want to highlight delimiter characters (useful if you have a
+light-coloured background), add to your .vimrc: >
+	:let hs_highlight_delimiters = 1
+To treat True and False as keywords as opposed to ordinary identifiers,
+add: >
+	:let hs_highlight_boolean = 1
+To also treat the names of primitive types as keywords: >
+	:let hs_highlight_types = 1
+And to treat the names of even more relatively common types as keywords: >
+	:let hs_highlight_more_types = 1
+If you want to highlight the names of debugging functions, put in
+your .vimrc: >
+	:let hs_highlight_debug = 1
+
+The Haskell syntax highlighting also highlights C preprocessor
+directives, and flags lines that start with # but are not valid
+directives as erroneous. This interferes with Haskell's syntax for
+operators, as they may start with #. If you want to highlight those
+as operators as opposed to errors, put in your .vimrc: >
+	:let hs_allow_hash_operator = 1
+
+The syntax highlighting for literate Haskell code will try to
+automatically guess whether your literate Haskell code contains
+TeX markup or not, and correspondingly highlight TeX constructs
+or nothing at all. You can override this globally by putting
+in your .vimrc >
+	:let lhs_markup = none
+for no highlighting at all, or >
+	:let lhs_markup = tex
+to force the highlighting to always try to highlight TeX markup.
+For more flexibility, you may also use buffer local versions of
+this variable, so e.g. >
+	:let b:lhs_markup = tex
+will force TeX highlighting for a particular buffer. It has to be
+set before turning syntax highlighting on for the buffer or
+loading a file.
+
+
+HTML						*html.vim* *html-syntax*
+
+The coloring scheme for tags in the HTML file works as follows.
+
+The  <> of opening tags are colored differently than the </> of a closing tag.
+This is on purpose! For opening tags the 'Function' color is used, while for
+closing tags the 'Type' color is used (See syntax.vim to check how those are
+defined for you)
+
+Known tag names are colored the same way as statements in C.  Unknown tag
+names are colored with the same color as the <> or </> respectively which
+makes it easy to spot errors
+
+Note that the same is true for argument (or attribute) names. Known attribute
+names are colored differently than unknown ones.
+
+Some HTML tags are used to change the rendering of text. The following tags
+are recognized by the html.vim syntax coloring file and change the way normal
+text is shown: <B> <I> <U> <EM> <STRONG> (<EM> is used as an alias for <I>,
+while <STRONG> as an alias for <B>), <H1> - <H6>, <HEAD>, <TITLE> and <A>, but
+only if used as a link that is, it must include a href as in
+<A href="somfile.html">).
+
+If you want to change how such text is rendered, you must redefine the
+following syntax groups:
+
+    - htmlBold
+    - htmlBoldUnderline
+    - htmlBoldUnderlineItalic
+    - htmlUnderline
+    - htmlUnderlineItalic
+    - htmlItalic
+    - htmlTitle for titles
+    - htmlH1 - htmlH6 for headings
+
+To make this redefinition work you must redefine them all with the exception
+of the last two (htmlTitle and htmlH[1-6], which are optional) and define the
+following variable in your vimrc (this is due to the order in which the files
+are read during initialization) >
+	:let html_my_rendering=1
+
+If you'd like to see an example download mysyntax.vim at
+http://www.fleiner.com/vim/download.html
+
+You can also disable this rendering by adding the following line to your
+vimrc file: >
+	:let html_no_rendering=1
+
+HTML comments are rather special (see an HTML reference document for the
+details), and the syntax coloring scheme will highlight all errors.
+However, if you prefer to use the wrong style (starts with <!-- and
+ends with --!>) you can define >
+	:let html_wrong_comments=1
+
+JavaScript and Visual Basic embedded inside HTML documents are highlighted as
+'Special' with statements, comments, strings and so on colored as in standard
+programming languages. Note that only JavaScript and Visual Basic are currently
+supported, no other scripting language has been added yet.
+
+Embedded and inlined cascading style sheets (CSS) are highlighted too.
+
+There are several html preprocessor languages out there. html.vim has been
+written such that it should be trivial to include it. To do so add the
+following two lines to the syntax coloring file for that language
+(the example comes from the asp.vim file):
+
+    runtime! syntax/html.vim
+    syn cluster htmlPreproc add=asp
+
+Now you just need to make sure that you add all regions that contain
+the preprocessor language to the cluster htmlPreproc.
+
+
+HTML/OS (by Aestiva)				*htmlos.vim* *htmlos-syntax*
+
+The coloring scheme for HTML/OS works as follows:
+
+Functions and variable names are the same color by default, because VIM
+doesn't specify different colors for Functions and Identifiers.  To change
+this (which is recommended if you want function names to be recognizable in a
+different color) you need to add the following line to either your ~/.vimrc: >
+  :hi Function term=underline cterm=bold ctermfg=LightGray
+
+Of course, the ctermfg can be a different color if you choose.
+
+Another issues that HTML/OS runs into is that there is no special filetype to
+signify that it is a file with HTML/OS coding.	You can change this by opening
+a file and turning on HTML/OS syntax by doing the following: >
+  :set syntax=htmlos
+
+Lastly, it should be noted that the opening and closing characters to begin a
+block of HTML/OS code can either be << or [[ and >> or ]], respectively.
+
+
+IA64				*ia64.vim* *intel-itanium* *ia64-syntax*
+
+Highlighting for the Intel Itanium 64 assembly language.  See |asm.vim| for
+how to recognize this filetype.
+
+To have *.inc files be recognized as IA64, add this to your .vimrc file: >
+	:let g:filetype_inc = "ia64"
+
+
+INFORM						*inform.vim* *inform-syntax*
+
+Inform highlighting includes symbols provided by the Inform Library, as
+most programs make extensive use of it.  If do not wish Library symbols
+to be highlighted add this to your vim startup: >
+	:let inform_highlight_simple=1
+
+By default it is assumed that Inform programs are Z-machine targeted,
+and highlights Z-machine assembly language symbols appropriately.  If
+you intend your program to be targeted to a Glulx/Glk environment you
+need to add this to your startup sequence: >
+	:let inform_highlight_glulx=1
+
+This will highlight Glulx opcodes instead, and also adds glk() to the
+set of highlighted system functions.
+
+The Inform compiler will flag certain obsolete keywords as errors when
+it encounters them.  These keywords are normally highlighted as errors
+by Vim.  To prevent such error highlighting, you must add this to your
+startup sequence: >
+	:let inform_suppress_obsolete=1
+
+By default, the language features highlighted conform to Compiler
+version 6.30 and Library version 6.11.  If you are using an older
+Inform development environment, you may with to add this to your
+startup sequence: >
+	:let inform_highlight_old=1
+
+
+JAVA						*java.vim* *java-syntax*
+
+The java.vim syntax highlighting file offers several options:
+
+In Java 1.0.2 it was never possible to have braces inside parens, so this was
+flagged as an error.  Since Java 1.1 this is possible (with anonymous
+classes), and therefore is no longer marked as an error. If you prefer the old
+way, put the following line into your vim startup file: >
+	:let java_mark_braces_in_parens_as_errors=1
+
+All identifiers in java.lang.* are always visible in all classes.  To
+highlight them use: >
+	:let java_highlight_java_lang_ids=1
+
+You can also highlight identifiers of most standard java packages if you
+download the javaid.vim script at http://www.fleiner.com/vim/download.html.
+If you prefer to only highlight identifiers of a certain package, say java.io
+use the following: >
+	:let java_highlight_java_io=1
+Check the javaid.vim file for a list of all the packages that are supported.
+
+Function names are not highlighted, as the way to find functions depends on
+how you write java code.  The syntax file knows two possible ways to highlight
+functions:
+
+If you write function declarations that are always indented by either
+a tab, 8 spaces or 2 spaces you may want to set >
+	:let java_highlight_functions="indent"
+However, if you follow the Java guidelines about how functions and classes are
+supposed to be named (with respect to upper and lowercase), use >
+	:let java_highlight_functions="style"
+If both options do not work for you, but you would still want function
+declarations to be highlighted create your own definitions by changing the
+definitions in java.vim or by creating your own java.vim which includes the
+original one and then adds the code to highlight functions.
+
+In java 1.1 the functions System.out.println() and System.err.println() should
+only be used for debugging. Therefor it is possible to highlight debugging
+statements differently. To do this you must add the following definition in
+your startup file: >
+	:let java_highlight_debug=1
+The result will be that those statements are highlighted as 'Special'
+characters. If you prefer to have them highlighted differently you must define
+new highlightings for the following groups.:
+    Debug, DebugSpecial, DebugString, DebugBoolean, DebugType
+which are used for the statement itself, special characters used in debug
+strings, strings, boolean constants and types (this, super) respectively. I
+have opted to chose another background for those statements.
+
+In order to help you to write code that can be easily ported between
+java and C++, all C++ keywords are marked as error in a java program.
+However, if you use them regularly, you may want to define the following
+variable in your .vimrc file: >
+	:let java_allow_cpp_keywords=1
+
+Javadoc is a program that takes special comments out of java program files and
+creates HTML pages. The standard configuration will highlight this HTML code
+similarly to HTML files (see |html.vim|). You can even add javascript
+and CSS inside this code (see below). There are four differences however:
+  1. The title (all characters up to the first '.' which is followed by
+     some white space or up to the first '@') is colored differently (to change
+     the color change the group CommentTitle).
+  2. The text is colored as 'Comment'.
+  3. HTML comments are colored as 'Special'
+  4. The special javadoc tags (@see, @param, ...) are highlighted as specials
+     and the argument (for @see, @param, @exception) as Function.
+To turn this feature off add the following line to your startup file: >
+	:let java_ignore_javadoc=1
+
+If you use the special javadoc comment highlighting described above you
+can also turn on special highlighting for javascript, visual basic
+scripts and embedded CSS (stylesheets). This makes only sense if you
+actually have javadoc comments that include either javascript or embedded
+CSS. The options to use are >
+	:let java_javascript=1
+	:let java_css=1
+	:let java_vb=1
+
+In order to highlight nested parens with different colors define colors
+for javaParen, javaParen1 and javaParen2, for example with >
+	:hi link javaParen Comment
+or >
+	:hi javaParen ctermfg=blue guifg=#0000ff
+
+If you notice highlighting errors while scrolling backwards, which are fixed
+when redrawing with CTRL-L, try setting the "java_minlines" internal variable
+to a larger number: >
+	:let java_minlines = 50
+This will make the syntax synchronization start 50 lines before the first
+displayed line.  The default value is 10.  The disadvantage of using a larger
+number is that redrawing can become slow.
+
+
+LACE						*lace.vim* *lace-syntax*
+
+Lace (Language for Assembly of Classes in Eiffel) is case insensitive, but the
+style guide lines are not.  If you prefer case insensitive highlighting, just
+define the vim variable 'lace_case_insensitive' in your startup file: >
+	:let lace_case_insensitive=1
+
+
+LEX						*lex.vim* *lex-syntax*
+
+Lex uses brute-force synchronizing as the "^%%$" section delimiter
+gives no clue as to what section follows.  Consequently, the value for >
+	:syn sync minlines=300
+may be changed by the user if s/he is experiencing synchronization
+difficulties (such as may happen with large lex files).
+
+
+LITE						*lite.vim* *lite-syntax*
+
+There are two options for the lite syntax highlighting.
+
+If you like SQL syntax highlighting inside Strings, use this: >
+
+	:let lite_sql_query = 1
+
+For syncing, minlines defaults to 100.	If you prefer another value, you can
+set "lite_minlines" to the value you desire.  Example: >
+
+	:let lite_minlines = 200
+
+
+LPC						*lpc.vim* *lpc-syntax*
+
+LPC stands for a simple, memory-efficient language: Lars Pensj| C. The
+file name of LPC is usually *.c.  Recognizing these files as LPC would bother
+users writing only C programs.	If you want to use LPC syntax in Vim, you
+should set a variable in your .vimrc file: >
+
+	:let lpc_syntax_for_c = 1
+
+If it doesn't work properly for some particular C or LPC files, use a
+modeline.  For a LPC file:
+
+	// vim:set ft=lpc:
+
+For a C file that is recognized as LPC:
+
+	// vim:set ft=c:
+
+If you don't want to set the variable, use the modeline in EVERY LPC file.
+
+There are several implementations for LPC, we intend to support most widely
+used ones. Here the default LPC syntax is for MudOS series, for MudOS v22
+and before, you should turn off the sensible modifiers, and this will also
+asserts the new efuns after v22 to be invalid, don't set this variable when
+you are using the latest version of MudOS: >
+
+	:let lpc_pre_v22 = 1
+
+For LpMud 3.2 series of LPC: >
+
+	:let lpc_compat_32 = 1
+
+For LPC4 series of LPC: >
+
+	:let lpc_use_lpc4_syntax = 1
+
+For uLPC series of LPC:
+uLPC has been developed to Pike, so you should use Pike syntax
+instead, and the name of your source file should be *.pike
+
+
+LUA						*lua.vim* *lua-syntax*
+
+This syntax file may be used for Lua 4.0 and Lua 5.0 (default). If you are
+programming in Lua 4.0, use this: >
+
+	:let lua_version = 4
+
+If lua_version variable doesn't exist, it is set to 5.
+
+
+MAIL								*mail.vim*
+
+Vim highlights all the standard elements of an email (headers, signatures,
+quoted text and URLs / email addresses). In keeping with standard conventions,
+signatures begin in a line containing only "--" followed optionally by
+whitespaces and end with a newline.
+
+Vim treats lines beginning with ']', '}', '|', '>' or a word followed by '>'
+as quoted text. However Vim highlights headers and signatures in quoted text
+only if the text is quoted with '>' (optionally followed by one space).
+
+By default mail.vim synchronises syntax to 100 lines before the first
+displayed line. If you have a slow machine, and generally deal with emails
+with short headers, you can change this to a smaller value: >
+
+    :let mail_minlines = 30
+
+
+MAKE						*make.vim* *make-syntax*
+
+In makefiles, commands are usually highlighted to make it easy for you to spot
+errors.  However, this may be too much coloring for you.  You can turn this
+feature off by using: >
+
+	:let make_no_commands = 1
+
+
+MAPLE						*maple.vim* *maple-syntax*
+
+Maple V, by Waterloo Maple Inc, supports symbolic algebra.  The language
+supports many packages of functions which are selectively loaded by the user.
+The standard set of packages' functions as supplied in Maple V release 4 may be
+highlighted at the user's discretion.  Users may place in their .vimrc file: >
+
+	:let mvpkg_all= 1
+
+to get all package functions highlighted, or users may select any subset by
+choosing a variable/package from the table below and setting that variable to
+1, also in their .vimrc file (prior to sourcing
+$VIMRUNTIME/syntax/syntax.vim).
+
+	Table of Maple V Package Function Selectors >
+  mv_DEtools	 mv_genfunc	mv_networks	mv_process
+  mv_Galois	 mv_geometry	mv_numapprox	mv_simplex
+  mv_GaussInt	 mv_grobner	mv_numtheory	mv_stats
+  mv_LREtools	 mv_group	mv_orthopoly	mv_student
+  mv_combinat	 mv_inttrans	mv_padic	mv_sumtools
+  mv_combstruct mv_liesymm	mv_plots	mv_tensor
+  mv_difforms	 mv_linalg	mv_plottools	mv_totorder
+  mv_finance	 mv_logic	mv_powseries
+
+
+MOO						*moo.vim* *moo-syntax*
+
+If you use C-style comments inside expressions and find it mangles your
+highlighting, you may want to use extended (slow!) matches for C-style
+comments: >
+
+	:let moo_extended_cstyle_comments = 1
+
+To disable highlighting of pronoun substitution patterns inside strings: >
+
+	:let moo_no_pronoun_sub = 1
+
+To disable highlighting of the regular expression operator '%|', and matching
+'%(' and '%)' inside strings: >
+
+	:let moo_no_regexp = 1
+
+Unmatched double quotes can be recognized and highlighted as errors: >
+
+	:let moo_unmatched_quotes = 1
+
+To highlight builtin properties (.name, .location, .programmer etc.): >
+
+	:let moo_builtin_properties = 1
+
+Unknown builtin functions can be recognized and highlighted as errors. If you
+use this option, add your own extensions to the mooKnownBuiltinFunction group.
+To enable this option: >
+
+	:let moo_unknown_builtin_functions = 1
+
+An example of adding sprintf() to the list of known builtin functions: >
+
+	:syn keyword mooKnownBuiltinFunction sprintf contained
+
+
+MSQL						*msql.vim* *msql-syntax*
+
+There are two options for the msql syntax highlighting.
+
+If you like SQL syntax highlighting inside Strings, use this: >
+
+	:let msql_sql_query = 1
+
+For syncing, minlines defaults to 100.	If you prefer another value, you can
+set "msql_minlines" to the value you desire.  Example: >
+
+	:let msql_minlines = 200
+
+
+NCF						*ncf.vim* *ncf-syntax*
+
+There is one option for NCF syntax highlighting.
+
+If you want to have unrecognized (by ncf.vim) statements highlighted as
+errors, use this: >
+
+	:let ncf_highlight_unknowns = 1
+
+If you don't want to highlight these errors, leave it unset.
+
+
+NROFF						*nroff.vim* *nroff-syntax*
+
+The nroff syntax file works with AT&T n/troff out of the box.  You need to
+activate the GNU groff extra features included in the syntax file before you
+can use them.
+
+For example, Linux and BSD distributions use groff as their default text
+processing package. In order to activate the extra syntax highlighting
+features for groff, add the following option to your start-up files: >
+
+  :let b:nroff_is_groff = 1
+
+Groff is different from the old AT&T n/troff that you may still find in
+Solaris.  Groff macro and request names can be longer than 2 characters and
+there are extensions to the language primitives.  For example, in AT&T troff
+you access the year as a 2-digit number with the request \(yr. In groff you
+can use the same request, recognized for compatibility, or you can use groff's
+native syntax, \[yr].  Furthermore, you can use a 4-digit year directly:
+\[year].  Macro requests can be longer than 2 characters, for example, GNU mm
+accepts the requests ".VERBON" and ".VERBOFF" for creating verbatim
+environments.
+
+In order to obtain the best formatted output g/troff can give you, you should
+follow a few simple rules about spacing and punctuation.
+
+1. Do not leave empty spaces at the end of lines.
+
+2. Leave one space and one space only after an end-of-sentence period,
+   exclamation mark, etc.
+
+3. For reasons stated below, it is best to follow all period marks with a
+   carriage return.
+
+The reason behind these unusual tips is that g/n/troff have a line breaking
+algorithm that can be easily upset if you don't follow the rules given above.
+
+Unlike TeX, troff fills text line-by-line, not paragraph-by-paragraph and,
+furthermore, it does not have a concept of glue or stretch, all horizontal and
+vertical space input will be output as is.
+
+Therefore, you should be careful about not using more space between sentences
+than you intend to have in your final document.  For this reason, the common
+practice is to insert a carriage return immediately after all punctuation
+marks. If you want to have "even" text in your final processed output, you
+need to maintaining regular spacing in the input text.  To mark both trailing
+spaces and two or more spaces after a punctuation as an error, use: >
+
+  :let nroff_space_errors = 1
+
+Another technique to detect extra spacing and other errors that will interfere
+with the correct typesetting of your file, is to define an eye-catching
+highlighting definition for the syntax groups "nroffDefinition" and
+"nroffDefSpecial" in your configuration files. For example: >
+
+  hi def nroffDefinition term=italic cterm=italic gui=reverse
+  hi def nroffDefSpecial term=italic,bold cterm=italic,bold
+			 \ gui=reverse,bold
+
+If you want to navigate preprocessor entries in your source file as easily as
+with section markers, you can activate the following option in your .vimrc
+file: >
+
+	let b:preprocs_as_sections = 1
+
+As well, the syntax file adds an extra paragraph marker for the exdented
+paragraph macro (.XP) in the ms package.
+
+Finally, there is a |groff.vim| syntax file that can be used for enabling
+groff syntax highlighting either on a file basis or globally by default.
+
+
+OCAML						*ocaml.vim* *ocaml-syntax*
+
+The OCaml syntax file handles files having the following prefixes: .ml,
+.mli, .mll and .mly.  By setting the following variable >
+
+	:let ocaml_revised = 1
+
+you can switch from standard OCaml-syntax to revised syntax as supported
+by the camlp4 preprocessor.  Setting the variable >
+
+	:let ocaml_noend_error = 1
+
+prevents highlighting of "end" as error, which is useful when sources
+contain very long structures that Vim does not synchronize anymore.
+
+
+PAPP						*papp.vim* *papp-syntax*
+
+The PApp syntax file handles .papp files and, to a lesser extend, .pxml
+and .pxsl files which are all a mixture of perl/xml/html/other using xml
+as the top-level file format. By default everything inside phtml or pxml
+sections is treated as a string with embedded preprocessor commands. If
+you set the variable: >
+
+	:let papp_include_html=1
+
+in your startup file it will try to syntax-hilight html code inside phtml
+sections, but this is relatively slow and much too colourful to be able to
+edit sensibly ;)
+
+The newest version of the papp.vim syntax file can usually be found at
+http://papp.plan9.de.
+
+
+PASCAL						*pascal.vim* *pascal-syntax*
+
+Files matching "*.p" could be Progress or Pascal.  If the automatic detection
+doesn't work for you, or you don't edit Progress at all, use this in your
+startup vimrc: >
+
+   :let filetype_p = "pascal"
+
+The Pascal syntax file has been extended to take into account some extensions
+provided by Turbo Pascal, Free Pascal Compiler and GNU Pascal Compiler.
+Delphi keywords are also supported. By default, Turbo Pascal 7.0 features are
+enabled.  If you prefer to stick with the standard Pascal keywords, add the
+following line to your startup file: >
+
+   :let pascal_traditional=1
+
+To switch on Delphi specific constructions (such as one-line comments,
+keywords, etc): >
+
+   :let pascal_delphi=1
+
+
+The option pascal_symbol_operator controls whether symbol operators such as +,
+*, .., etc. are displayed using the Operator color or not.  To colorize symbol
+operators, add the following line to your startup file: >
+
+   :let pascal_symbol_operator=1
+
+Some functions are highlighted by default.  To switch it off: >
+
+   :let pascal_no_functions=1
+
+Furthermore, there are specific variable for some compiler.  Besides
+pascal_delphi, there are pascal_gpc and pascal_fpc.  Default extensions try to
+match Turbo Pascal. >
+
+   :let pascal_gpc=1
+
+or >
+
+   :let pascal_fpc=1
+
+To ensure that strings are defined on a single line, you can define the
+pascal_one_line_string variable. >
+
+   :let pascal_one_line_string=1
+
+If you dislike <Tab> chars, you can set the pascal_no_tabs variable.  Tabs
+will be highlighted as Error. >
+
+   :let pascal_no_tabs=1
+
+
+
+PERL						*perl.vim* *perl-syntax*
+
+There are a number of possible options to the perl syntax highlighting.
+
+If you use POD files or POD segments, you might: >
+
+	:let perl_include_pod = 1
+
+To handle package references in variable and function names differently from
+the rest of the name (like 'PkgName::' in '$PkgName::VarName'): >
+
+	:let perl_want_scope_in_variables = 1
+
+If you want complex things like '@{${"foo"}}' to be parsed: >
+
+	:let perl_extended_vars = 1
+
+The coloring strings can be changed. By default strings and qq friends will be
+highlighted like the first line. If you set the variable
+perl_string_as_statement, it will be highlighted as in the second line.
+
+   "hello world!"; qq|hello world|;
+   ^^^^^^^^^^^^^^NN^^^^^^^^^^^^^^^N	  (unlet perl_string_as_statement)
+   S^^^^^^^^^^^^SNNSSS^^^^^^^^^^^SN	  (let perl_string_as_statement)
+
+(^ = perlString, S = perlStatement, N = None at all)
+
+The syncing has 3 options. The first two switch off some triggering of
+synchronization and should only be needed in case it fails to work properly.
+If while scrolling all of a sudden the whole screen changes color completely
+then you should try and switch off one of those. Let me know if you can figure
+out the line that causes the mistake.
+
+One triggers on "^\s*sub\s*" and the other on "^[$@%]" more or less. >
+
+	:let perl_no_sync_on_sub
+	:let perl_no_sync_on_global_var
+
+Below you can set the maximum distance VIM should look for starting points for
+its attempts in syntax highlighting. >
+
+	:let perl_sync_dist = 100
+
+If you want to use folding with perl, set perl_fold: >
+
+       :let perl_fold = 1
+
+
+PHP3 and PHP4		*php.vim* *php3.vim* *php-syntax* *php3-syntax*
+
+[note: previously this was called "php3", but since it now also supports php4
+it has been renamed to "php"]
+
+There are the following options for the php syntax highlighting.
+
+If you like SQL syntax highlighting inside Strings: >
+
+  let php_sql_query = 1
+
+For highlighting the Baselib methods: >
+
+  let php_baselib = 1
+
+Enable HTML syntax highlighting inside strings: >
+
+  let php_htmlInStrings = 1
+
+Using the old colorstyle: >
+
+  let php_oldStyle = 1
+
+Enable highlighting ASP-style short tags: >
+
+  let php_asp_tags = 1
+
+Disable short tags: >
+
+  let php_noShortTags = 1
+
+For highlighting parent error ] or ): >
+
+  let php_parent_error_close = 1
+
+For skipping an php end tag, if there exists an open ( or [ without a closing
+one: >
+
+  let php_parent_error_open = 1
+
+Enable folding for classes and functions: >
+
+  let php_folding = 1
+
+Selecting syncing method: >
+
+  let php_sync_method = x
+
+x = -1 to sync by search (default),
+x > 0 to sync at least x lines backwards,
+x = 0 to sync from start.
+
+
+PPWIZARD					*ppwiz.vim* *ppwiz-syntax*
+
+PPWizard is a preprocessor for HTML and OS/2 INF files
+
+This syntax file has the options:
+
+- ppwiz_highlight_defs : determines highlighting mode for PPWizard's
+  definitions. Possible values are
+
+  ppwiz_highlight_defs = 1 : PPWizard #define statements retain the
+    colors of their contents (e. g. PPWizard macros and variables)
+
+  ppwiz_highlight_defs = 2 : preprocessor #define and #evaluate
+    statements are shown in a single color with the exception of line
+    continuation symbols
+
+  The default setting for ppwiz_highlight_defs is 1.
+
+- ppwiz_with_html : If the value is 1 (the default), highlight literal
+  HTML code; if 0, treat HTML code like ordinary text.
+
+
+PHTML						*phtml.vim* *phtml-syntax*
+
+There are two options for the phtml syntax highlighting.
+
+If you like SQL syntax highlighting inside Strings, use this: >
+
+	:let phtml_sql_query = 1
+
+For syncing, minlines defaults to 100.	If you prefer another value, you can
+set "phtml_minlines" to the value you desire.  Example: >
+
+	:let phtml_minlines = 200
+
+
+POSTSCRIPT					*postscr.vim* *postscr-syntax*
+
+There are several options when it comes to highlighting PostScript.
+
+First which version of the PostScript language to highlight.  There are
+currently three defined language versions, or levels.  Level 1 is the original
+and base version, and includes all extensions prior to the release of level 2.
+Level 2 is the most common version around, and includes its own set of
+extensions prior to the release of level 3.  Level 3 is currently the highest
+level supported.  You select which level of the PostScript language you want
+highlighted by defining the postscr_level variable as follows: >
+
+	:let postscr_level=2
+
+If this variable is not defined it defaults to 2 (level 2) since this is
+the most prevalent version currently.
+
+Note, not all PS interpreters will support all language features for a
+particular language level.  In particular the %!PS-Adobe-3.0 at the start of
+PS files does NOT mean the PostScript present is level 3 PostScript!
+
+If you are working with Display PostScript, you can include highlighting of
+Display PS language features by defining the postscr_display variable as
+follows: >
+
+	:let postscr_display=1
+
+If you are working with Ghostscript, you can include highlighting of
+Ghostscript specific language features by defining the variable
+postscr_ghostscript as follows: >
+
+	:let postscr_ghostscript=1
+
+PostScript is a large language, with many predefined elements.	While it
+useful to have all these elements highlighted, on slower machines this can
+cause Vim to slow down.  In an attempt to be machine friendly font names and
+character encodings are not highlighted by default.  Unless you are working
+explicitly with either of these this should be ok.  If you want them to be
+highlighted you should set one or both of the following variables: >
+
+	:let postscr_fonts=1
+	:let postscr_encodings=1
+
+There is a stylistic option to the highlighting of and, or, and not.  In
+PostScript the function of these operators depends on the types of their
+operands - if the operands are booleans then they are the logical operators,
+if they are integers then they are binary operators.  As binary and logical
+operators can be highlighted differently they have to be highlighted one way
+or the other.  By default they are treated as logical operators.  They can be
+highlighted as binary operators by defining the variable
+postscr_andornot_binary as follows: >
+
+	:let postscr_andornot_binary=1
+<
+
+			*ptcap.vim*
+PRINTCAP + TERMCAP	*ptcap-syntax* *termcap-syntax* *printcap-syntax*
+
+This syntax file applies to the printcap and termcap databases.
+
+In order for Vim to recognize printcap/termcap files that do not match
+the patterns *printcap*, or *termcap*, you must put additional patterns
+appropriate to your system in your |myfiletypefile| file.  For these
+patterns, you must set the variable "b:ptcap_type" to either "print" or
+"term", and then the 'filetype' option to ptcap.
+
+For example, to make Vim identify all files in /etc/termcaps/ as termcap
+files, add the following: >
+
+   :au BufNewFile,BufRead /etc/termcaps/* let b:ptcap_type = "term" |
+				       \ set filetype=ptcap
+
+If you notice highlighting errors while scrolling backwards, which
+are fixed when redrawing with CTRL-L, try setting the "ptcap_minlines"
+internal variable to a larger number: >
+
+   :let ptcap_minlines = 50
+
+(The default is 20 lines.)
+
+
+PROGRESS				*progress.vim* *progress-syntax*
+
+Files matching "*.w" could be Progress or cweb.  If the automatic detection
+doesn't work for you, or you don't edit cweb at all, use this in your
+startup vimrc: >
+   :let filetype_w = "progress"
+The same happens for "*.i", which could be assembly, and "*.p", which could be
+Pascal.  Use this if you don't use assembly and Pascal: >
+   :let filetype_i = "progress"
+   :let filetype_p = "progress"
+
+
+PYTHON						*python.vim* *python-syntax*
+
+There are four options to control Python syntax highlighting.
+
+For highlighted numbers: >
+	:let python_highlight_numbers = 1
+
+For highlighted builtin functions: >
+	:let python_highlight_builtins = 1
+
+For highlighted standard exceptions: >
+	:let python_highlight_exceptions = 1
+
+For highlighted trailing whitespace and mix of spaces and tabs:
+	:let python_highlight_space_errors = 1
+
+If you want all possible Python highlighting (the same as setting the
+preceding three options): >
+	:let python_highlight_all = 1
+
+
+QUAKE						*quake.vim* *quake-syntax*
+
+The Quake syntax definition should work for most any FPS (First Person
+Shooter) based on one of the Quake engines. However, the command names vary
+a bit between the three games (Quake, Quake 2, and Quake 3 Arena) so the
+syntax definition checks for the existence of three global variables to allow
+users to specify what commands are legal in their files. The three variables
+can be set for the following effects:
+
+set to highlight commands only available in Quake: >
+	:let quake_is_quake1 = 1
+
+set to highlight commands only available in Quake 2: >
+	:let quake_is_quake2 = 1
+
+set to highlight commands only available in Quake 3 Arena: >
+	:let quake_is_quake3 = 1
+
+Any combination of these three variables is legal, but might highlight more
+commands than are actually available to you by the game.
+
+
+READLINE				*readline.vim* *readline-syntax*
+
+The readline library is primarily used by the BASH shell, which adds quite a
+few commands and options to the ones already available. To highlight these
+items as well you can add the following to your |vimrc| or just type it in the
+command line before loading a file with the readline syntax: >
+	let readline_has_bash = 1
+
+This will add highlighting for the commands that BASH (version 2.05a and
+later, and part earlier) adds.
+
+
+REXX						*rexx.vim* *rexx-syntax*
+
+If you notice highlighting errors while scrolling backwards, which are fixed
+when redrawing with CTRL-L, try setting the "rexx_minlines" internal variable
+to a larger number: >
+	:let rexx_minlines = 50
+This will make the syntax synchronization start 50 lines before the first
+displayed line.  The default value is 10.  The disadvantage of using a larger
+number is that redrawing can become slow.
+
+
+RUBY						*ruby.vim* *ruby-syntax*
+
+There are a few options to the Ruby syntax highlighting.
+
+By default, the "end" keyword is colorized according to the opening statement
+of the block it closes. While useful, this feature can be expensive: if you
+experience slow redrawing (or you are on a terminal with poor color support)
+you may want to turn it off by defining the "ruby_no_expensive" variable: >
+	:let ruby_no_expensive = 1
+In this case the same color will be used for all control keywords.
+
+If you do want this feature enabled, but notice highlighting errors while
+scrolling backwards, which are fixed when redrawing with CTRL-L, try setting
+the "ruby_minlines" variable to a value larger than 50: >
+	:let ruby_minlines = 100
+Ideally, this value should be a number of lines large enough to embrace your
+largest class or module.
+
+Finally, if you do not like to see too many color items around, you can define
+"ruby_no_identifiers": >
+	:let ruby_no_identifiers = 1
+This will prevent highlighting of special identifiers like "ConstantName",
+"$global_var", "@instance_var", "| iterator |", and ":symbol".
+
+
+SDL						*sdl.vim* *sdl-syntax*
+
+The SDL highlighting probably misses a few keywords, but SDL has so many
+of them it's almost impossibly to cope.
+
+The new standard, SDL-2000, specifies that all identifiers are
+case-sensitive (which was not so before), and that all keywords can be
+used either completely lowercase or completely uppercase. To have the
+highlighting reflect this, you can set the following variable: >
+	:let sdl_2000=1
+
+This also sets many new keywords. If you want to disable the old
+keywords, which is probably a good idea, use: >
+	:let SDL_no_96=1
+
+
+The indentation is probably also incomplete, but right now I am very
+satisfied with it for my own projects.
+
+
+SED						*sed.vim* *sed-syntax*
+
+To make tabs stand out from regular blanks (accomplished by using Todo
+highlighting on the tabs), define "highlight_sedtabs" by putting >
+
+	:let highlight_sedtabs = 1
+
+in the vimrc file.  (This special highlighting only applies for tabs
+inside search patterns, replacement texts, addresses or text included
+by an Append/Change/Insert command.)  If you enable this option, it is
+also a good idea to set the tab width to one character; by doing that,
+you can easily count the number of tabs in a string.
+
+Bugs:
+
+  The transform command (y) is treated exactly like the substitute
+  command.  This means that, as far as this syntax file is concerned,
+  transform accepts the same flags as substitute, which is wrong.
+  (Transform accepts no flags.)  I tolerate this bug because the
+  involved commands need very complex treatment (95 patterns, one for
+  each plausible pattern delimiter).
+
+
+SGML						*sgml.vim* *sgml-syntax*
+
+The coloring scheme for tags in the SGML file works as follows.
+
+The <> of opening tags are colored differently than the </> of a closing tag.
+This is on purpose! For opening tags the 'Function' color is used, while for
+closing tags the 'Type' color is used (See syntax.vim to check how those are
+defined for you)
+
+Known tag names are colored the same way as statements in C.  Unknown tag
+names are not colored which makes it easy to spot errors.
+
+Note that the same is true for argument (or attribute) names. Known attribute
+names are colored differently than unknown ones.
+
+Some SGML tags are used to change the rendering of text. The following tags
+are recognized by the sgml.vim syntax coloring file and change the way normal
+text is shown: <varname> <emphasis> <command> <function> <literal>
+<replaceable> <ulink> and <link>.
+
+If you want to change how such text is rendered, you must redefine the
+following syntax groups:
+
+    - sgmlBold
+    - sgmlBoldItalic
+    - sgmlUnderline
+    - sgmlItalic
+    - sgmlLink for links
+
+To make this redefinition work you must redefine them all and define the
+following variable in your vimrc (this is due to the order in which the files
+are read during initialization) >
+   let sgml_my_rendering=1
+
+You can also disable this rendering by adding the following line to your
+vimrc file: >
+   let sgml_no_rendering=1
+
+(Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>)
+
+
+SH						*sh.vim* *sh-syntax*
+
+This covers the "normal" Unix (Bourne) sh, bash and the Korn shell.
+
+Vim attempts to determine which shell type is in use by specifying that
+various filenames are of specific types: >
+
+    ksh : .kshrc* *.ksh
+    bash: .bashrc* bashrc bash.bashrc .bash_profile* *.bash
+<
+If none of these cases pertain, then the first line of the file is examined
+(ex. /bin/sh  /bin/ksh	/bin/bash).  If the first line specifies a shelltype,
+then that shelltype is used.  However some files (ex. .profile) are known to
+be shell files but the type is not apparent.  Furthermore, on many systems
+sh is symbolically linked to "bash" (linux) or "ksh" (posix).
+
+One may specify a global default by instantiating one of the following three
+variables in your <.vimrc>:
+
+    ksh: >
+	let is_kornshell = 1
+<   bash: >
+	let is_bash	 = 1
+<   sh: >
+	let is_sh	 = 1
+
+If, in your <.vimrc>, you set >
+	let g:sh_fold_enabled= 1
+>
+then various syntax items (HereDocuments and function bodies) become
+syntax-foldable (see |:syn-fold|).
+
+If you notice highlighting errors while scrolling backwards, which are fixed
+when redrawing with CTRL-L, try setting the "sh_minlines" internal variable
+to a larger number.  Example: >
+
+	let sh_minlines = 500
+
+This will make syntax synchronization start 500 lines before the first
+displayed line.  The default value is 200.  The disadvantage of using a larger
+number is that redrawing can become slow.
+
+If you don't have much to synchronize on, displaying can be very slow.	To
+reduce this, the "sh_maxlines" internal variable can be set.  Example: >
+
+	let sh_maxlines = 100
+<
+The default is to use the twice sh_minlines.  Set it to a smaller number to
+speed up displaying.  The disadvantage is that highlight errors may appear.
+
+
+SPEEDUP (AspenTech plant simulator)		*spup.vim* *spup-syntax*
+
+The Speedup syntax file has some options:
+
+- strict_subsections : If this variable is defined, only keywords for
+  sections and subsections will be highlighted as statements but not
+  other keywords (like WITHIN in the OPERATION section).
+
+- highlight_types : Definition of this variable causes stream types
+  like temperature or pressure to be highlighted as Type, not as a
+  plain Identifier. Included are the types that are usually found in
+  the DECLARE section; if you defined own types, you have to include
+  them in the syntax file.
+
+- oneline_comments : this value ranges from 1 to 3 and determines the
+  highlighting of # style comments.
+
+  oneline_comments = 1 : allow normal Speedup code after an even
+  number of #s.
+
+  oneline_comments = 2 : show code starting with the second # as
+  error. This is the default setting.
+
+  oneline_comments = 3 : show the whole line as error if it contains
+  more than one #.
+
+Since especially OPERATION sections tend to become very large due to
+PRESETting variables, syncing may be critical. If your computer is
+fast enough, you can increase minlines and/or maxlines near the end of
+the syntax file.
+
+
+TCSH						*tcsh.vim* *tcsh-syntax*
+
+This covers the shell named "tcsh".  It is a superset of csh.  See |csh.vim|
+for how the filetype is detected.
+
+Tcsh does not allow \" in strings unless the "backslash_quote" shell variable
+is set. If you want VIM to assume that no backslash quote constructs exist add
+this line to your .vimrc: >
+
+	:let tcsh_backslash_quote = 0
+
+If you notice highlighting errors while scrolling backwards, which are fixed
+when redrawing with CTRL-L, try setting the "tcsh_minlines" internal variable
+to a larger number: >
+
+	:let tcsh_minlines = 100
+
+This will make the syntax synchronization start 100 lines before the first
+displayed line. The default value is 15. The disadvantage of using a larger
+number is that redrawing can become slow.
+
+
+TEX						*tex.vim* *tex-syntax*
+
+Run-on Comments/Math? ~
+
+The tex highlighting supports TeX, LaTeX, and some AmsTeX.  The
+highlighting supports three primary zones: normal, texZone, and texMathZone.
+Although a considerable effort has been made to have these zones terminate
+properly, zones delineated by $..$ and $$..$$ cannot be synchronized as
+there's no difference between start and end patterns.  Consequently, a
+special "TeX comment" has been provided >
+	%stopzone
+which will forcibly terminate the highlighting of either a texZone or a
+texMathZone.
+
+Slow Syntax Highlighting? ~
+
+If you have a slow computer, you may wish to reduce the values for >
+	:syn sync maxlines=200
+	:syn sync minlines=50
+(especially the latter).  If your computer is fast, you may wish to
+increase them.	This primarily affects synchronizing (ie. just what group,
+if any, is the text at the top of the screen supposed to be in?).
+
+Excessive Error Highlighting? ~
+
+The <tex.vim> supports lexical error checking of various sorts.  Thus,
+although the error checking is ofttimes very useful, it can indicate
+errors where none actually are.  If this proves to be a problem for you,
+you may put in your <.vimrc> the following statement: >
+	let tex_no_error=1
+and all error checking by <tex.vim> will be suppressed.
+
+Need a new Math Group? ~
+
+If you want to include a new math group in your LaTeX, the following
+code shows you an example as to how you might do so: >
+
+    syn cluster texMathZones add=texMathZoneLOCAL
+    syn region texMathZoneLOCAL start="\\begin\s*{\s*LOCALMATH\s*}"
+       \ end="\\end\s*{\s*LOCALMATH\s*}" keepend
+       \ contains=@texMathZoneGroup
+    if !exists("tex_no_math")
+     syn sync match texSyncMathZoneLOCAL grouphere texMathZoneLOCAL
+       \ "\\begin\s*{\s*LOCALMATH\*\s*}"
+     syn sync match texSyncMathZoneLOCAL groupthere NONE
+       \ "\\end\s*{\s*LOCALMATH\*\s*}"
+    endif
+    hi link texMathZoneLOCAL texMath
+<
+You'll need to change LOCALMATH to the name of your new math group,
+and then to put it into .vim/after/syntax/tex.vim.
+
+Starting a New Style? ~
+
+One may use "\makeatletter" in *.tex files, thereby making the use of "@" in
+commands available.  However, since the *.tex file doesn't have one of the
+following suffices: sty cls clo dtx ltx, the syntax highlighting will flag
+such use of @ as an error.  To solve this: >
+
+	:let b:tex_stylish = 1
+	:set ft=tex
+
+Putting "let g:tex_stylish=1" into your <.vimrc> will make <syntax/tex.vim>
+always accept such use of @.
+
+
+TF						*tf.vim* *tf-syntax*
+
+There is one option for the tf syntax highlighting.
+
+For syncing, minlines defaults to 100.	If you prefer another value, you can
+set "tf_minlines" to the value you desire.  Example: >
+
+	:let tf_minlines = your choice
+
+
+VIM						*vim.vim* *vim-syntax*
+
+There is a tradeoff between more accurate syntax highlighting versus
+screen updating speed.  To improve accuracy, you may wish to increase
+the g:vim_minlines variable.  The g:vim_maxlines variable may be used
+to improve screen updating rates (see |:syn-sync| for more on this).
+
+	g:vim_minlines : used to set synchronization minlines
+	g:vim_maxlines : used to set synchronization maxlines
+
+The g:vimembedscript option allows for somewhat faster loading of syntax
+highlighting for vim scripts at the expense of supporting syntax highlighting
+for external scripting languages (currently perl, python, ruby, and tcl).
+
+	g:vimembedscript == 1 (default)  <vim.vim> will allow highlighting
+	g:vimembedscript doesn't exist	 of supported embedded scripting
+					 languages: perl, python, ruby and
+					 tcl.
+
+	g:vimembedscript == 0		 Syntax highlighting for embedded
+					 scripting languages will not be
+					 loaded.
+
+
+XF86CONFIG				*xf86conf.vim* *xf86conf-syntax*
+
+The syntax of XF86Config file differs in XFree86 v3.x and v4.x.  Both
+variants are supported.  Automatic detection is used, but is far from perfect.
+You may need to specify the version manually.  Set the variable
+xf86conf_xfree86_version to 3 or 4 according to your XFree86 version in
+your .vimrc.  Example: >
+	:let xf86conf_xfree86_version=3
+When using a mix of versions, set the b:xf86conf_xfree86_version variable.
+
+Note that spaces and underscores in option names are not supported.  Use
+"SyncOnGreen" instead of "__s yn con gr_e_e_n" if you want the option name
+highlighted.
+
+
+XML						*xml.vim* *xml-syntax*
+
+Xml namespaces are highlighted by default. This can be inhibited by
+setting a global variable: >
+
+	:let g:xml_namespace_transparent=1
+<
+							*xml-folding*
+The xml syntax file provides syntax |folding| (see |:syn-fold|) between
+start and end tags. This can be turned on by >
+
+	:let g:xml_syntax_folding = 1
+	:set foldmethod=syntax
+
+Note: syntax folding might slow down syntax highlighting significantly,
+especially for large files.
+
+
+X Pixmaps (XPM)					*xpm.vim* *xpm-syntax*
+
+xpm.vim creates its syntax items dynamically based upon the contents of the
+XPM file.  Thus if you make changes e.g. in the color specification strings,
+you have to source it again e.g. with ":set syn=xpm".
+
+To copy a pixel with one of the colors, yank a "pixel" with "yl" and insert it
+somewhere else with "P".
+
+Do you want to draw with the mouse?  Try the following: >
+   :function! GetPixel()
+   :   let c = getline(line("."))[col(".") - 1]
+   :   echo c
+   :   exe "noremap <LeftMouse> <LeftMouse>r".c
+   :   exe "noremap <LeftDrag>	<LeftMouse>r".c
+   :endfunction
+   :noremap <RightMouse> <LeftMouse>:call GetPixel()<CR>
+   :set guicursor=n:hor20	   " to see the color beneath the cursor
+This turns the right button into a pipette and the left button into a pen.
+It will work with XPM files that have one character per pixel only and you
+must not click outside of the pixel strings, but feel free to improve it.
+
+It will look much better with a font in a quadratic cell size, e.g. for X: >
+	:set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-*
+
+==============================================================================
+5. Defining a syntax					*:syn-define* *E410*
+
+Vim understands three types of syntax items:
+
+1. Keyword.
+   It can only contain keyword characters, according to the 'iskeyword'
+   option.  It cannot contain other syntax items.  It will only match with a
+   complete word (there are no keyword characters before or after the match).
+   The keyword "if" would match in "if(a=b)", but not in "ifdef x", because
+   "(" is not a keyword character and "d" is.
+
+2. Match.
+   This is a match with a single regexp pattern.
+
+3. Region.
+   This starts at a match of the "start" regexp pattern and ends with a match
+   with the "end" regexp pattern.  Any other text can appear in between.  A
+   "skip" regexp pattern can be used to avoid matching the "end" pattern.
+
+Several syntax ITEMs can be put into one syntax GROUP.	For a syntax group
+you can give highlighting attributes.  For example, you could have an item
+to define a "/* .. */" comment and another one that defines a "// .." comment,
+and put them both in the "Comment" group.  You can then specify that a
+"Comment" will be in bold font and have a blue color.  You are free to make
+one highlight group for one syntax item, or put all items into one group.
+This depends on how you want to specify your highlighting attributes.  Putting
+each item in its own group results in having to specify the highlighting
+for a lot of groups.
+
+Note that a syntax group and a highlight group are similar.  For a highlight
+group you will have given highlight attributes.  These attributes will be used
+for the syntax group with the same name.
+
+In case more than one item matches at the same position, the one that was
+defined LAST wins.  Thus you can override previously defined syntax items by
+using an item that matches the same text.  But a keyword always goes before a
+match or region.  And a keyword with matching case always goes before a
+keyword with ignoring case.
+
+
+PRIORITY						*:syn-priority*
+
+When several syntax items may match, these rules are used:
+
+1. When multiple Match or Region items start in the same position, the item
+   defined last has priority.
+2. A Keyword has priority over Match and Region items.
+3. An item that starts in an earlier position has priority over items that
+   start in later positions.
+
+
+DEFINING CASE						*:syn-case* *E390*
+
+:sy[ntax] case [match|ignore]
+	This defines if the following ":syntax" commands will work with
+	matching case, when using "match", or with ignoring case, when using
+	"ignore".  Note that any items before this are not affected, and all
+	items until the next ":syntax case" command are affected.
+
+
+DEFINING KEYWORDS					*:syn-keyword*
+
+:sy[ntax] keyword {group-name} [{options}] {keyword} .. [{options}]
+
+	This defines a number of keywords.
+
+	{group-name}	Is a syntax group name such as "Comment".
+	[{options}]	See |:syn-arguments| below.
+	{keyword} ..	Is a list of keywords which are part of this group.
+
+	Example: >
+  :syntax keyword   Type   int long char
+<
+	The {options} can be given anywhere in the line.  They will apply to
+	all keywords given, also for options that come after a keyword.
+	These examples do exactly the same: >
+  :syntax keyword   Type   contained int long char
+  :syntax keyword   Type   int long contained char
+  :syntax keyword   Type   int long char contained
+<
+	When you have a keyword with an optional tail, like Ex commands in
+	Vim, you can put the optional characters inside [], to define all the
+	variations at once: >
+  :syntax keyword   vimCommand	 ab[breviate] n[ext]
+<
+	Don't forget that a keyword can only be recognized if all the
+	characters are included in the 'iskeyword' option.  If one character
+	isn't, the keyword will never be recognized.
+	Multi-byte characters can also be used.  These do not have to be in
+	'iskeyword'.
+
+	A keyword always has higher priority than a match or region, the
+	keyword is used if more than one item matches.	Keywords do not nest
+	and a keyword can't contain anything else.
+
+	Note that when you have a keyword that is the same as an option (even
+	one that isn't allowed here), you can not use it.  Use a match
+	instead.
+
+	The maximum length of a keyword is 80 characters.
+
+	The same keyword can be defined multiple times, when its containment
+	differs.  For example, you can define the keyword once not contained
+	and use one highlight group, and once contained, and use a different
+	highlight group. Example: >
+  :syn keyword vimCommand tag
+  :syn keyword vimSetting contained tag
+<	When finding "tag" outside of any syntax item, the "vimCommand"
+	highlight group is used.  When finding "tag" in a syntax item that
+	contains "vimSetting", the "vimSetting" group is used.
+
+
+DEFINING MATCHES					*:syn-match*
+
+:sy[ntax] match {group-name} [{options}] [excludenl] {pattern} [{options}]
+
+	This defines one match.
+
+	{group-name}		A syntax group name such as "Comment".
+	[{options}]		See |:syn-arguments| below.
+	[excludenl]		Don't make a pattern with the end-of-line "$"
+				extend a containing match or region.  Must be
+				given before the pattern. |:syn-excludenl|
+	{pattern}		The search pattern that defines the match.
+				See |:syn-pattern| below.
+				Note that the pattern may match more than one
+				line, which makes the match depend on where
+				Vim starts searching for the pattern.  You
+				need to make sure syncing takes care of this.
+
+	Example (match a character constant): >
+  :syntax match Character /'.'/hs=s+1,he=e-1
+<
+
+DEFINING REGIONS	*:syn-region* *:syn-start* *:syn-skip* *:syn-end*
+							*E398* *E399*
+:sy[ntax] region {group-name} [{options}]
+		[matchgroup={group-name}]
+		[keepend]
+		[extend]
+		[excludenl]
+		start={start_pattern} ..
+		[skip={skip_pattern}]
+		end={end_pattern} ..
+		[{options}]
+
+	This defines one region.  It may span several lines.
+
+	{group-name}		A syntax group name such as "Comment".
+	[{options}]		See |:syn-arguments| below.
+	[matchgroup={group-name}]  The syntax group to use for the following
+				start or end pattern matches only.  Not used
+				for the text in between the matched start and
+				end patterns.  Use NONE to reset to not using
+				a different group for the start or end match.
+				See |:syn-matchgroup|.
+	keepend			Don't allow contained matches to go past a
+				match with the end pattern.  See
+				|:syn-keepend|.
+	extend			Override a "keepend" for an item this region
+				is contained in. See |:syn-extend|.
+	excludenl		Don't make a pattern with the end-of-line "$"
+				extend a containing match or item.  Only
+				useful for end patterns.  Must be given before
+				the patterns it applies to. |:syn-excludenl|
+	start={start_pattern}	The search pattern that defines the start of
+				the region.  See |:syn-pattern| below.
+	skip={skip_pattern}	The search pattern that defines text inside
+				the region where not to look for the end
+				pattern.  See |:syn-pattern| below.
+	end={end_pattern}	The search pattern that defines the end of
+				the region.  See |:syn-pattern| below.
+
+	Example: >
+  :syntax region String   start=+"+  skip=+\\"+  end=+"+
+<
+	The start/skip/end patterns and the options can be given in any order.
+	There can be zero or one skip pattern.	There must be one or more
+	start and end patterns.  This means that you can omit the skip
+	pattern, but you must give at least one start and one end pattern.  It
+	is allowed to have white space before and after the equal sign
+	(although it mostly looks better without white space).
+
+	When more than one start pattern is given, a match with one of these
+	is sufficient.	This means there is an OR relation between the start
+	patterns.  The last one that matches is used.  The same is true for
+	the end patterns.
+
+	The search for the end pattern starts right after the start pattern.
+	Offsets are not used for this.	This implies that the match for the
+	end pattern will never overlap with the start pattern.
+
+	The skip and end pattern can match across line breaks, but since the
+	search for the pattern can start in any line it often does not do what
+	you want.  The skip pattern doesn't avoid a match of an end pattern in
+	the next line.	Use single-line patterns to avoid trouble.
+
+	Note: The decision to start a region is only based on a matching start
+	pattern.  There is no check for a matching end pattern.  This does NOT
+	work: >
+		:syn region First  start="("  end=":"
+		:syn region Second start="("  end=";"
+<	The Second always matches before the First (last defined pattern has
+	higher priority).  The Second region then continues until the next
+	';', no matter if there is a ':' before it.  Using a match does work: >
+		:syn match First  "(\_.\{-}:"
+		:syn match Second "(\_.\{-};"
+<	This pattern matches any character or line break with "\_." and
+	repeats that with "\{-}" (repeat as few as possible).
+
+							*:syn-keepend*
+	By default, a contained match can obscure a match for the end pattern.
+	This is useful for nesting.  For example, a region that starts with
+	"{" and ends with "}", can contain another region.  An encountered "}"
+	will then end the contained region, but not the outer region:
+	    {		starts outer "{}" region
+		{	starts contained "{}" region
+		}	ends contained "{}" region
+	    }		ends outer "{} region
+	If you don't want this, the "keepend" argument will make the matching
+	of an end pattern of the outer region also end any contained item.
+	This makes it impossible to nest the same region, but allows for
+	contained items to highlight parts of the end pattern, without causing
+	that to skip the match with the end pattern.  Example: >
+  :syn match  vimComment +"[^"]\+$+
+  :syn region vimCommand start="set" end="$" contains=vimComment keepend
+<	The "keepend" makes the vimCommand always end at the end of the line,
+	even though the contained vimComment includes a match with the <EOL>.
+
+	When "keepend" is not used, a match with an end pattern is retried
+	after each contained match.  When "keepend" is included, the first
+	encountered match with an end pattern is used, truncating any
+	contained matches.
+							*:syn-extend*
+	The "keepend" behavior can be changed by using the "extend" argument.
+	When an item with "extend" is contained in an item that uses
+	"keepend", the "keepend" is ignored and the containing region will be
+	extended.
+	This can be used to have some contained items extend a region while
+	others don't.  Example: >
+
+   :syn region htmlRef start=+<a>+ end=+</a>+ keepend contains=htmlItem,htmlScript
+   :syn match htmlItem +<[^>]*>+ contained
+   :syn region htmlScript start=+<script+ end=+</script[^>]*>+ contained extend
+
+<	Here the htmlItem item does not make the htmlRef item continue
+	further, it is only used to highlight the <> items.  The htmlScript
+	item does extend the htmlRef item.
+
+	Another example: >
+   :syn region xmlFold start="<a>" end="</a>" fold transparent keepend extend
+<	This defines a region with "keepend", so that its end cannot be
+	changed by contained items, like when the "</a>" is matched to
+	highlight it differently.  But when the xmlFold region is nested (it
+	includes itself), the "extend" applies, so that the "</a>" of a nested
+	region only ends that region, and not the one it is contained in.
+
+							*:syn-excludenl*
+	When a pattern for a match or end pattern of a region includes a '$'
+	to match the end-of-line, it will make a region item that it is
+	contained in continue on the next line.  For example, a match with
+	"\\$" (backslash at the end of the line) can make a region continue
+	that would normally stop at the end of the line.  This is the default
+	behavior.  If this is not wanted, there are two ways to avoid it:
+	1. Use "keepend" for the containing item.  This will keep all
+	   contained matches from extending the match or region.  It can be
+	   used when all contained items must not extend the containing item.
+	2. Use "excludenl" in the contained item.  This will keep that match
+	   from extending the containing match or region.  It can be used if
+	   only some contained items must not extend the containing item.
+	   "excludenl" must be given before the pattern it applies to.
+
+							*:syn-matchgroup*
+	"matchgroup" can be used to highlight the start and/or end pattern
+	differently than the body of the region.  Example: >
+  :syntax region String matchgroup=Quote start=+"+  skip=+\\"+	end=+"+
+<	This will highlight the quotes with the "Quote" group, and the text in
+	between with the "String" group.
+	The "matchgroup" is used for all start and end patterns that follow,
+	until the next "matchgroup".  Use "matchgroup=NONE" to go back to not
+	using a matchgroup.
+
+	In a start or end pattern that is highlighted with "matchgroup" the
+	contained items of the region are not used.  This can be used to avoid
+	that a contained item matches in the start or end pattern match.  When
+	using "transparent", this does not apply to a start or end pattern
+	match that is highlighted with "matchgroup".
+
+	Here is an example, which highlights three levels of parentheses in
+	different colors: >
+   :sy region par1 matchgroup=par1 start=/(/ end=/)/ contains=par2
+   :sy region par2 matchgroup=par2 start=/(/ end=/)/ contains=par3 contained
+   :sy region par3 matchgroup=par3 start=/(/ end=/)/ contains=par1 contained
+   :hi par1 ctermfg=red guifg=red
+   :hi par2 ctermfg=blue guifg=blue
+   :hi par3 ctermfg=darkgreen guifg=darkgreen
+
+==============================================================================
+6. :syntax arguments					*:syn-arguments*
+
+The :syntax commands that define syntax items take a number of arguments.
+The common ones are explained here.  The arguments may be given in any order
+and may be mixed with patterns.
+
+Not all commands accept all arguments.	This table shows which arguments
+can not be used for all commands:
+							*E395* *E396*
+		    contains  oneline	fold  display  extend ~
+:syntax keyword		 -	 -	 -	 -	 -
+:syntax match		yes	 -	yes	yes	yes
+:syntax region		yes	yes	yes	yes	yes
+
+These arguments can be used for all three commands:
+	contained
+	containedin
+	nextgroup
+	transparent
+	skipwhite
+	skipnl
+	skipempty
+
+
+contained						*:syn-contained*
+
+When the "contained" argument is given, this item will not be recognized at
+the top level, but only when it is mentioned in the "contains" field of
+another match.	Example: >
+   :syntax keyword Todo    TODO    contained
+   :syntax match   Comment "//.*"  contains=Todo
+
+
+display							*:syn-display*
+
+If the "display" argument is given, this item will be skipped when the
+detected highlighting will not be displayed.  This will speed up highlighting,
+by skipping this item when only finding the syntax state for the text that is
+to be displayed.
+
+Generally, you can use "display" for match and region items that meet these
+conditions:
+- The item does not continue past the end of a line.  Example for C: A region
+  for a "/*" comment can't contain "display", because it continues on the next
+  line.
+- The item does not contain items that continue past the end of the line or
+  make it continue on the next line.
+- The item does not change the size of any item it is contained in.  Example
+  for C: A match with "\\$" in a preprocessor match can't have "display",
+  because it may make that preprocessor match shorter.
+- The item does not allow other items to match that didn't match otherwise,
+  and that item may extend the match too far.  Example for C: A match for a
+  "//" comment can't use "display", because a "/*" inside that comment would
+  match then and start a comment which extends past the end of the line.
+
+Examples, for the C language, where "display" can be used:
+- match with a number
+- match with a label
+
+
+transparent						*:syn-transparent*
+
+If the "transparent" argument is given, this item will not be highlighted
+itself, but will take the highlighting of the item it is contained in.	This
+is useful for syntax items that don't need any highlighting but are used
+only to skip over a part of the text.
+
+The "contains=" argument is also inherited from the item it is contained in,
+unless a "contains" argument is given for the transparent item itself.	To
+avoid that unwanted items are contained, use "contains=NONE".  Example, which
+highlights words in strings, but makes an exception for "vim": >
+	:syn match myString /'[^']*'/ contains=myWord,myVim
+	:syn match myWord   /\<[a-z]*\>/ contained
+	:syn match myVim    /\<vim\>/ transparent contained contains=NONE
+	:hi link myString String
+	:hi link myWord   Comment
+Since the "myVim" match comes after "myWord" it is the preferred match (last
+match in the same position overrules an earlier one).  The "transparent"
+argument makes the "myVim" match use the same highlighting as "myString".  But
+it does not contain anything.  If the "contains=NONE" argument would be left
+out, then "myVim" would use the contains argument from myString and allow
+"myWord" to be contained, which will be highlighted as a Constant.  This
+happens because a contained match doesn't match inside itself in the same
+position, thus the "myVim" match doesn't overrule the "myWord" match here.
+
+When you look at the colored text, it is like looking at layers of contained
+items.	The contained item is on top of the item it is contained in, thus you
+see the contained item.  When a contained item is transparent, you can look
+through, thus you see the item it is contained in.  In a picture:
+
+		look from here
+
+	    |	|   |	|   |	|
+	    V	V   V	V   V	V
+
+	       xxxx	  yyy		more contained items
+	    ....................	contained item (transparent)
+	=============================	first item
+
+The 'x', 'y' and '=' represent a highlighted syntax item.  The '.' represent a
+transparent group.
+
+What you see is:
+
+	=======xxxx=======yyy========
+
+Thus you look through the transparent "....".
+
+
+oneline							*:syn-oneline*
+
+The "oneline" argument indicates that the region does not cross a line
+boundary.  It must match completely in the current line.  However, when the
+region has a contained item that does cross a line boundary, it continues on
+the next line anyway.  A contained item can be used to recognize a line
+continuation pattern.  But the "end" pattern must still match in the first
+line, otherwise the region doesn't even start.
+
+When the start pattern includes a "\n" to match an end-of-line, the end
+pattern must be found in the same line as where the start pattern ends.  The
+end pattern may also include an end-of-line.  Thus the "oneline" argument
+means that the end of the start pattern and the start of the end pattern must
+be within one line.  This can't be changed by a skip pattern that matches a
+line break.
+
+
+fold							*:syn-fold*
+
+The "fold" argument makes the fold level increased by one for this item.
+Example: >
+   :syn region myFold start="{" end="}" transparent fold
+   :syn sync fromstart
+   :set foldmethod=syntax
+This will make each {} block form one fold.
+
+The fold will start on the line where the item starts, and end where the item
+ends.  If the start and end are within the same line, there is no fold.
+The 'foldnestmax' option limits the nesting of syntax folds.
+{not available when Vim was compiled without |+folding| feature}
+
+
+			*:syn-contains* *E405* *E406* *E407* *E408* *E409*
+contains={groupname},..
+
+The "contains" argument is followed by a list of syntax group names.  These
+groups will be allowed to begin inside the item (they may extend past the
+containing group's end).  This allows for recursive nesting of matches and
+regions.  If there is no "contains" argument, no groups will be contained in
+this item.  The group names do not need to be defined before they can be used
+here.
+
+contains=ALL
+		If the only item in the contains list is "ALL", then all
+		groups will be accepted inside the item.
+
+contains=ALLBUT,{group-name},..
+		If the first item in the contains list is "ALLBUT", then all
+		groups will be accepted inside the item, except the ones that
+		are listed.  Example: >
+  :syntax region Block start="{" end="}" ... contains=ALLBUT,Function
+
+contains=TOP
+		If the first item in the contains list is "TOP", then all
+		groups will be accepted that don't have the "contained"
+		argument.
+contains=TOP,{group-name},..
+		Like "TOP", but excluding the groups that are listed.
+
+contains=CONTAINED
+		If the first item in the contains list is "CONTAINED", then
+		all groups will be accepted that have the "contained"
+		argument.
+contains=CONTAINED,{group-name},..
+		Like "CONTAINED", but excluding the groups that are
+		listed.
+
+
+The {group-name} in the "contains" list can be a pattern.  All group names
+that match the pattern will be included (or excluded, if "ALLBUT" is used).
+The pattern cannot contain white space or a ','.  Example: >
+   ... contains=Comment.*,Keyw[0-3]
+The matching will be done at moment the syntax command is executed.  Groups
+that are defined later will not be matched.  Also, if the current syntax
+command defines a new group, it is not matched.  Be careful: When putting
+syntax commands in a file you can't rely on groups NOT being defined, because
+the file may have been sourced before, and ":syn clear" doesn't remove the
+group names.
+
+The contained groups will also match in the start and end patterns of a
+region.  If this is not wanted, the "matchgroup" argument can be used
+|:syn-matchgroup|.  The "ms=" and "me=" offsets can be used to change the
+region where contained items do match.	Note that this may also limit the
+area that is highlighted
+
+
+containedin={groupname}...				*:syn-containedin*
+
+The "containedin" argument is followed by a list of syntax group names.  The
+item will be allowed to begin inside these groups.  This works as if the
+containing item has a "contains=" argument that includes this item.
+
+The {groupname}... can be used just like for "contains", as explained above.
+
+This is useful when adding a syntax item afterwards.  An item can be told to
+be included inside an already existing item, without changing the definition
+of that item.  For example, to highlight a word in a C comment after loading
+the C syntax: >
+	:syn keyword myword HELP containedin=cComment contained
+Note that "contained" is also used, to avoid that the item matches at the top
+level.
+
+Matches for "containedin" are added to the other places where the item can
+appear.  A "contains" argument may also be added as usual.  Don't forget that
+keywords never contain another item, thus adding them to "containedin" won't
+work.
+
+
+nextgroup={groupname},..				*:syn-nextgroup*
+
+The "nextgroup" argument is followed by a list of syntax group names,
+separated by commas (just like with "contains", so you can also use patterns).
+
+If the "nextgroup" argument is given, the mentioned syntax groups will be
+tried for a match, after the match or region ends.  If none of the groups have
+a match, highlighting continues normally.  If there is a match, this group
+will be used, even when it is not mentioned in the "contains" field of the
+current group.	This is like giving the mentioned group priority over all
+other groups.  Example: >
+   :syntax match  ccFoobar  "Foo.\{-}Bar"  contains=ccFoo
+   :syntax match  ccFoo     "Foo"	    contained nextgroup=ccFiller
+   :syntax region ccFiller  start="."  matchgroup=ccBar  end="Bar"  contained
+
+This will highlight "Foo" and "Bar" differently, and only when there is a
+"Bar" after "Foo".  In the text line below, "f" shows where ccFoo is used for
+highlighting, and "bbb" where ccBar is used. >
+
+   Foo asdfasd Bar asdf Foo asdf Bar asdf
+   fff	       bbb	fff	 bbb
+
+Note the use of ".\{-}" to skip as little as possible until the next Bar.
+when ".*" would be used, the "asdf" in between "Bar" and "Foo" would be
+highlighted according to the "ccFoobar" group, because the ccFooBar match
+would include the first "Foo" and the last "Bar" in the line (see |pattern|).
+
+
+skipwhite						*:syn-skipwhite*
+skipnl							*:syn-skipnl*
+skipempty						*:syn-skipempty*
+
+These arguments are only used in combination with "nextgroup".	They can be
+used to allow the next group to match after skipping some text:
+	skipwhite	skip over space and Tab characters
+	skipnl		skip over the end of a line
+	skipempty	skip over empty lines (implies a "skipnl")
+
+When "skipwhite" is present, the white space is only skipped if there is no
+next group that matches the white space.
+
+When "skipnl" is present, the match with nextgroup may be found in the next
+line.  This only happens when the current item ends at the end of the current
+line!  When "skipnl" is not present, the nextgroup will only be found after
+the current item in the same line.
+
+When skipping text while looking for a next group, the matches for other
+groups are ignored.  Only when no next group matches, other items are tried
+for a match again.  This means that matching a next group and skipping white
+space and <EOL>s has a higher priority than other items.
+
+Example: >
+  :syn match ifstart "\<if.*"	  nextgroup=ifline skipwhite skipempty
+  :syn match ifline  "[^ \t].*" nextgroup=ifline skipwhite skipempty contained
+  :syn match ifline  "endif"	contained
+Note that the "[^ \t].*" match matches all non-white text.  Thus it would also
+match "endif".	Therefore the "endif" match is put last, so that it takes
+precedence.
+Note that this example doesn't work for nested "if"s.  You need to add
+"contains" arguments to make that work (omitted for simplicity of the
+example).
+
+==============================================================================
+7. Syntax patterns				*:syn-pattern* *E401* *E402*
+
+In the syntax commands, a pattern must be surrounded by two identical
+characters.  This is like it works for the ":s" command.  The most common to
+use is the double quote.  But if the pattern contains a double quote, you can
+use another character that is not used in the pattern.	Examples: >
+  :syntax region Comment  start="/\*"  end="\*/"
+  :syntax region String   start=+"+    end=+"+	 skip=+\\"+
+
+See |pattern| for the explanation of what a pattern is.  Syntax patterns are
+always interpreted like the 'magic' options is set, no matter what the actual
+value of 'magic' is.  And the patterns are interpreted like the 'l' flag is
+not included in 'cpoptions'.  This was done to make syntax files portable and
+independent of 'compatible' and 'magic' settings.
+
+Try to avoid patterns that can match an empty string, such as "[a-z]*".
+This slows down the highlighting a lot, because it matches everywhere.
+
+						*:syn-pattern-offset*
+The pattern can be followed by a character offset.  This can be used to
+change the highlighted part, and to change the text area included in the
+match or region (which only matters when trying to match other items).	Both
+are relative to the matched pattern.  The character offset for a skip
+pattern can be used to tell where to continue looking for an end pattern.
+
+The offset takes the form of "{what}={offset}"
+The {what} can be one of seven strings:
+
+ms	Match Start	offset for the start of the matched text
+me	Match End	offset for the end of the matched text
+hs	Highlight Start	offset for where the highlighting starts
+he	Highlight End	offset for where the highlighting ends
+rs	Region Start	offset for where the body of a region starts
+re	Region End	offset for where the body of a region ends
+lc	Leading Context	offset past "leading context" of pattern
+
+The {offset} can be:
+
+s	start of the matched pattern
+s+{nr}	start of the matched pattern plus {nr} chars to the right
+s-{nr}	start of the matched pattern plus {nr} chars to the left
+e	end of the matched pattern
+e+{nr}	end of the matched pattern plus {nr} chars to the right
+e-{nr}	end of the matched pattern plus {nr} chars to the left
+{nr}	(for "lc" only): start matching {nr} chars to the left
+
+Examples: "ms=s+1", "hs=e-2", "lc=3".
+
+Although all offsets are accepted after any pattern, they are not always
+meaningful.  This table shows which offsets are actually used:
+
+		    ms	 me   hs   he	rs   re	  lc ~
+match item	    yes  yes  yes  yes	-    -	  yes
+region item start   yes  -    yes  -	yes  -	  yes
+region item skip    -	 yes  -    -	-    -	  yes
+region item end     -	 yes  -    yes	-    yes  yes
+
+Offsets can be concatenated, with a ',' in between.  Example: >
+  :syn match String  /"[^"]*"/hs=s+1,he=e-1
+<
+    some "string" text
+	  ^^^^^^		highlighted
+
+Notes:
+- There must be no white space between the pattern and the character
+  offset(s).
+- The highlighted area will never be outside of the matched text.
+- A negative offset for an end pattern may not always work, because the end
+  pattern may be detected when the highlighting should already have stopped.
+- The start of a match cannot be in a line other than where the pattern
+  matched.  This doesn't work: "a\nb"ms=e.  You can make the highlighting
+  start in another line, this does work: "a\nb"hs=e.
+
+Example (match a comment but don't highlight the /* and */): >
+  :syntax region Comment start="/\*"hs=e+1 end="\*/"he=s-1
+<
+	/* this is a comment */
+	  ^^^^^^^^^^^^^^^^^^^	  highlighted
+
+A more complicated Example: >
+  :syn region Exa matchgroup=Foo start="foo"hs=s+2,rs=e+2 matchgroup=Bar end="bar"me=e-1,he=e-1,re=s-1
+<
+	 abcfoostringbarabc
+	    mmmmmmmmmmm	    match
+	      ssrrrreee	    highlight start/region/end ("Foo", "Exa" and "Bar")
+
+Leading context			*:syn-lc* *:syn-leading* *:syn-context*
+
+Note: This is an obsolete feature, only included for backwards compatibility
+with previous Vim versions.  It's now recommended to use the |/\@<=| construct
+in the pattern.
+
+The "lc" offset specifies leading context -- a part of the pattern that must
+be present, but is not considered part of the match.  An offset of "lc=n" will
+cause Vim to step back n columns before attempting the pattern match, allowing
+characters which have already been matched in previous patterns to also be
+used as leading context for this match.  This can be used, for instance, to
+specify that an "escaping" character must not precede the match: >
+
+  :syn match ZNoBackslash "[^\\]z"ms=s+1
+  :syn match WNoBackslash "[^\\]w"lc=1
+  :syn match Underline "_\+"
+<
+	  ___zzzz ___wwww
+	  ^^^	  ^^^	  matches Underline
+	      ^ ^	  matches ZNoBackslash
+		     ^^^^ matches WNoBackslash
+
+The "ms" offset is automatically set to the same value as the "lc" offset,
+unless you set "ms" explicitly.
+
+
+Multi-line patterns					*:syn-multi-line*
+
+The patterns can include "\n" to match an end-of-line.	Mostly this works as
+expected, but there are a few exceptions.
+
+When using a start pattern with an offset, the start of the match is not
+allowed to start in a following line.  The highlighting can start in a
+following line though.
+
+The skip pattern can include the "\n", but the search for an end pattern will
+continue in the first character of the next line, also when that character is
+matched by the skip pattern.  This is because redrawing may start in any line
+halfway a region and there is no check if the skip pattern started in a
+previous line.	For example, if the skip pattern is "a\nb" and an end pattern
+is "b", the end pattern does match in the second line of this: >
+	 x x a
+	 b x x
+Generally this means that the skip pattern should not match any characters
+after the "\n".
+
+
+External matches					*:syn-ext-match*
+
+These extra regular expression items are available in region patterns:
+
+						*/\z(* */\z(\)* *E50* *E52*
+    \z(\)	Marks the sub-expression as "external", meaning that it is can
+		be accessed from another pattern match.  Currently only usable
+		in defining a syntax region start pattern.
+
+					*/\z1* */\z2* */\z3* */\z4* */\z5*
+    \z1  ...  \z9			*/\z6* */\z7* */\z8* */\z9* *E66* *E67*
+		Matches the same string that was matched by the corresponding
+		sub-expression in a previous start pattern match.
+
+Sometimes the start and end patterns of a region need to share a common
+sub-expression.  A common example is the "here" document in Perl and many Unix
+shells.  This effect can be achieved with the "\z" special regular expression
+items, which marks a sub-expression as "external", in the sense that it can be
+referenced from outside the pattern in which it is defined.  The here-document
+example, for instance, can be done like this: >
+  :syn region hereDoc start="<<\z(\I\i*\)" end="^\z1$"
+
+As can be seen here, the \z actually does double duty.	In the start pattern,
+it marks the "\(\I\i*\)" sub-expression as external; in the end pattern, it
+changes the \1 back-reference into an external reference referring to the
+first external sub-expression in the start pattern.  External references can
+also be used in skip patterns: >
+  :syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1"
+
+Note that normal and external sub-expressions are completely orthogonal and
+indexed separately; for instance, if the pattern "\z(..\)\(..\)" is applied
+to the string "aabb", then \1 will refer to "bb" and \z1 will refer to "aa".
+Note also that external sub-expressions cannot be accessed as back-references
+within the same pattern like normal sub-expressions.  If you want to use one
+sub-expression as both a normal and an external sub-expression, you can nest
+the two, as in "\(\z(...\)\)".
+
+Note that only matches within a single line can be used.  Multi-line matches
+cannot be referred to.
+
+==============================================================================
+8. Syntax clusters					*:syn-cluster* *E400*
+
+:sy[ntax] cluster {cluster-name} [contains={group-name}..]
+				 [add={group-name}..]
+				 [remove={group-name}..]
+
+This command allows you to cluster a list of syntax groups together under a
+single name.
+
+	contains={group-name}..
+		The cluster is set to the specified list of groups.
+	add={group-name}..
+		The specified groups are added to the cluster.
+	remove={group-name}..
+		The specified groups are removed from the cluster.
+
+A cluster so defined may be referred to in a contains=.., nextgroup=.., add=..
+or remove=.. list with a "@" prefix.  You can also use this notation to
+implicitly declare a cluster before specifying its contents.
+
+Example: >
+   :syntax match Thing "# [^#]\+ #" contains=@ThingMembers
+   :syntax cluster ThingMembers contains=ThingMember1,ThingMember2
+
+As the previous example suggests, modifications to a cluster are effectively
+retroactive; the membership of the cluster is checked at the last minute, so
+to speak: >
+   :syntax keyword A aaa
+   :syntax keyword B bbb
+   :syntax cluster AandB contains=A
+   :syntax match Stuff "( aaa bbb )" contains=@AandB
+   :syntax cluster AandB add=B	  " now both keywords are matched in Stuff
+
+This also has implications for nested clusters: >
+   :syntax keyword A aaa
+   :syntax keyword B bbb
+   :syntax cluster SmallGroup contains=B
+   :syntax cluster BigGroup contains=A,@SmallGroup
+   :syntax match Stuff "( aaa bbb )" contains=@BigGroup
+   :syntax cluster BigGroup remove=B	" no effect, since B isn't in BigGroup
+   :syntax cluster SmallGroup remove=B	" now bbb isn't matched within Stuff
+
+==============================================================================
+9. Including syntax files				*:syn-include* *E397*
+
+It is often useful for one language's syntax file to include a syntax file for
+a related language.  Depending on the exact relationship, this can be done in
+two different ways:
+
+	- If top-level syntax items in the included syntax file are to be
+	  allowed at the top level in the including syntax, you can simply use
+	  the |:runtime| command: >
+
+  " In cpp.vim:
+  :runtime! syntax/c.vim
+  :unlet b:current_syntax
+
+<	- If top-level syntax items in the included syntax file are to be
+	  contained within a region in the including syntax, you can use the
+	  ":syntax include" command:
+
+:sy[ntax] include [@{grouplist-name}] {file-name}
+
+	  All syntax items declared in the included file will have the
+	  "contained" flag added.  In addition, if a group list is specified,
+	  all top-level syntax items in the included file will be added to
+	  that list. >
+
+   " In perl.vim:
+   :syntax include @Pod <sfile>:p:h/pod.vim
+   :syntax region perlPOD start="^=head" end="^=cut" contains=@Pod
+<
+	  When {file-name} is an absolute path (starts with "/", "c:", "$VAR"
+	  or "<sfile>") that file is sourced.  When it is a relative path
+	  (e.g., "syntax/pod.vim") the file is searched for in 'runtimepath'.
+	  All matching files are loaded.  Using a relative path is
+	  recommended, because it allows a user to replace the included file
+	  with his own version, without replacing the file that does the ":syn
+	  include".
+
+==============================================================================
+10. Synchronizing				*:syn-sync* *E403* *E404*
+
+Vim wants to be able to start redrawing in any position in the document.  To
+make this possible it needs to know the syntax state at the position where
+redrawing starts.
+
+:sy[ntax] sync [ccomment [group-name] | minlines={N} | ...]
+
+There are four ways to synchronize:
+1. Always parse from the start of the file.
+   |:syn-sync-first|
+2. Based on C-style comments.  Vim understands how C-comments work and can
+   figure out if the current line starts inside or outside a comment.
+   |:syn-sync-second|
+3. Jumping back a certain number of lines and start parsing there.
+   |:syn-sync-third|
+4. Searching backwards in the text for a pattern to sync on.
+   |:syn-sync-fourth|
+
+				*:syn-sync-maxlines* *:syn-sync-minlines*
+For the last three methods, the line range where the parsing can start is
+limited by "minlines" and "maxlines".
+
+If the "minlines={N}" argument is given, the parsing always starts at least
+that many lines backwards.  This can be used if the parsing may take a few
+lines before it's correct, or when it's not possible to use syncing.
+
+If the "maxlines={N}" argument is given, the number of lines that are searched
+for a comment or syncing pattern is restricted to N lines backwards (after
+adding "minlines").  This is useful if you have few things to sync on and a
+slow machine.  Example: >
+   :syntax sync ccomment maxlines=500
+<
+						*:syn-sync-linebreaks*
+When using a pattern that matches multiple lines, a change in one line may
+cause a pattern to no longer match in a previous line.	This means has to
+start above where the change was made.	How many lines can be specified with
+the "linebreaks" argument.  For example, when a pattern may include one line
+break use this: >
+   :syntax sync linebreaks=1
+The result is that redrawing always starts at least one line before where a
+change was made.  The default value for "linebreaks" is zero.  Usually the
+value for "minlines" is bigger than "linebreaks".
+
+
+First syncing method:			*:syn-sync-first*
+>
+   :syntax sync fromstart
+
+The file will be parsed from the start.  This makes syntax highlighting
+accurate, but can be slow for long files.  Vim caches previously parsed text,
+so that it's only slow when parsing the text for the first time.  However,
+when making changes some part of the next needs to be parsed again (worst
+case: to the end of the file).
+
+Using "fromstart" is equivalent to using "minlines" with a very large number.
+
+
+Second syncing method:			*:syn-sync-second* *:syn-sync-ccomment*
+
+For the second method, only the "ccomment" argument needs to be given.
+Example: >
+   :syntax sync ccomment
+
+When Vim finds that the line where displaying starts is inside a C-style
+comment, the last region syntax item with the group-name "Comment" will be
+used.  This requires that there is a region with the group-name "Comment"!
+An alternate group name can be specified, for example: >
+   :syntax sync ccomment javaComment
+This means that the last item specified with "syn region javaComment" will be
+used for the detected C comment region.  This only works properly if that
+region does have a start pattern "\/*" and an end pattern "*\/".
+
+The "maxlines" argument can be used to restrict the search to a number of
+lines.	The "minlines" argument can be used to at least start a number of
+lines back (e.g., for when there is some construct that only takes a few
+lines, but it hard to sync on).
+
+Note: Syncing on a C comment doesn't work properly when strings are used
+that cross a line and contain a "*/".  Since letting strings cross a line
+is a bad programming habit (many compilers give a warning message), and the
+chance of a "*/" appearing inside a comment is very small, this restriction
+is hardly ever noticed.
+
+
+Third syncing method:				*:syn-sync-third*
+
+For the third method, only the "minlines={N}" argument needs to be given.
+Vim will subtract {N} from the line number and start parsing there.  This
+means {N} extra lines need to be parsed, which makes this method a bit slower.
+Example: >
+   :syntax sync minlines=50
+
+"lines" is equivalent to "minlines" (used by older versions).
+
+
+Fourth syncing method:				*:syn-sync-fourth*
+
+The idea is to synchronize on the end of a few specific regions, called a
+sync pattern.  Only regions can cross lines, so when we find the end of some
+region, we might be able to know in which syntax item we are.  The search
+starts in the line just above the one where redrawing starts.  From there
+the search continues backwards in the file.
+
+This works just like the non-syncing syntax items.  You can use contained
+matches, nextgroup, etc.  But there are a few differences:
+- Keywords cannot be used.
+- The syntax items with the "sync" keyword form a completely separated group
+  of syntax items.  You can't mix syncing groups and non-syncing groups.
+- The matching works backwards in the buffer (line by line), instead of
+  forwards.
+- A line continuation pattern can be given.  It is used to decide which group
+  of lines need to be searched like they were one line.  This means that the
+  search for a match with the specified items starts in the first of the
+  consecutive that contain the continuation pattern.
+- When using "nextgroup" or "contains", this only works within one line (or
+  group of continued lines).
+- When using a region, it must start and end in the same line (or group of
+  continued lines).  Otherwise the end is assumed to be at the end of the
+  line (or group of continued lines).
+- When a match with a sync pattern is found, the rest of the line (or group of
+  continued lines) is searched for another match.  The last match is used.
+  This is used when a line can contain both the start end the end of a region
+  (e.g., in a C-comment like /* this */, the last "*/" is used).
+
+There are two ways how a match with a sync pattern can be used:
+1. Parsing for highlighting starts where redrawing starts (and where the
+   search for the sync pattern started).  The syntax group that is expected
+   to be valid there must be specified.  This works well when the regions
+   that cross lines cannot contain other regions.
+2. Parsing for highlighting continues just after the match.  The syntax group
+   that is expected to be present just after the match must be specified.
+   This can be used when the previous method doesn't work well.  It's much
+   slower, because more text needs to be parsed.
+Both types of sync patterns can be used at the same time.
+
+Besides the sync patterns, other matches and regions can be specified, to
+avoid finding unwanted matches.
+
+[The reason that the sync patterns are given separately, is that mostly the
+search for the sync point can be much simpler than figuring out the
+highlighting.  The reduced number of patterns means it will go (much)
+faster.]
+
+					    *syn-sync-grouphere* *E393* *E394*
+    :syntax sync match {sync-group-name} grouphere {group-name} "pattern" ..
+
+	Define a match that is used for syncing.  {group-name} is the
+	name of a syntax group that follows just after the match.  Parsing
+	of the text for highlighting starts just after the match.  A region
+	must exist for this {group-name}.  The first one defined will be used.
+	"NONE" can be used for when there is no syntax group after the match.
+
+						*syn-sync-groupthere*
+    :syntax sync match {sync-group-name} groupthere {group-name} "pattern" ..
+
+	Like "grouphere", but {group-name} is the name of a syntax group that
+	is to be used at the start of the line where searching for the sync
+	point started.	The text between the match and the start of the sync
+	pattern searching is assumed not to change the syntax highlighting.
+	For example, in C you could search backwards for "/*" and "*/".  If
+	"/*" is found first, you know that you are inside a comment, so the
+	"groupthere" is "cComment".  If "*/" is found first, you know that you
+	are not in a comment, so the "groupthere" is "NONE".  (in practice
+	it's a bit more complicated, because the "/*" and "*/" could appear
+	inside a string.  That's left as an exercise to the reader...).
+
+    :syntax sync match ..
+    :syntax sync region ..
+
+	Without a "groupthere" argument.  Define a region or match that is
+	skipped while searching for a sync point.
+
+    :syntax sync linecont {pattern}
+
+	When {pattern} matches in a line, it is considered to continue in
+	the next line.	This means that the search for a sync point will
+	consider the lines to be concatenated.
+
+If the "maxlines={N}" argument is given too, the number of lines that are
+searched for a match is restricted to N.  This is useful if you have very
+few things to sync on and a slow machine.  Example: >
+   :syntax sync maxlines=100
+
+You can clear all sync settings with: >
+   :syntax sync clear
+
+You can clear specific sync patterns with: >
+   :syntax sync clear {sync-group-name} ..
+
+==============================================================================
+11. Listing syntax items		*:syntax* *:sy* *:syn* *:syn-list*
+
+This commands lists all the syntax items: >
+
+    :sy[ntax] [list]
+
+To show the syntax items for one syntax group: >
+
+    :sy[ntax] list {group-name}
+
+To list the syntax groups in one cluster:			*E392*	>
+
+    :sy[ntax] list @{cluster-name}
+
+See above for other arguments for the ":syntax" command.
+
+Note that the ":syntax" command can be abbreviated to ":sy", although ":syn"
+is mostly used, because it looks better.
+
+==============================================================================
+12. Highlight command			*:highlight* *:hi* *E28* *E411* *E415*
+
+There are three types of highlight groups:
+- The ones used for specific languages.  For these the name starts with the
+  name of the language.  Many of these don't have any attributes, but are
+  linked to a group of the second type.
+- The ones used for all syntax languages.
+- The ones used for the 'highlight' option.
+							*hitest.vim*
+You can see all the groups currently active with this command: >
+    :so $VIMRUNTIME/syntax/hitest.vim
+This will open a new window containing all highlight group names, displayed
+in their own color.
+
+						*:colo* *:colorscheme* *E185*
+:colo[rscheme] {name}	Load color scheme {name}.  This searches 'runtimepath'
+			for the file "colors/{name}.vim.  The first one that
+			is found is loaded.
+			To see the name of the currently active color scheme
+			(if there is one): >
+				:echo g:colors_name
+<			Doesn't work recursively, thus you can't use
+			":colorscheme" in a color scheme script.
+
+:hi[ghlight]		List all the current highlight groups that have
+			attributes set.
+
+:hi[ghlight] {group-name}
+			List one highlight group.
+
+:hi[ghlight] clear	Reset all highlighting to the defaults.  Removes all
+			highlighting for groups added by the user!
+			Uses the current value of 'background' to decide which
+			default colors to use.
+
+:hi[ghlight] clear {group-name}
+:hi[ghlight] {group-name} NONE
+			Disable the highlighting for one highlight group.  It
+			is _not_ set back to the default colors.
+
+:hi[ghlight] [default] {group-name} {key}={arg} ..
+			Add a highlight group, or change the highlighting for
+			an existing group.
+			See |highlight-args| for the {key}={arg} arguments.
+			See |:highlight-default| for the optional [default]
+			argument.
+
+Normally a highlight group is added once when starting up.  This sets the
+default values for the highlighting.  After that, you can use additional
+highlight commands to change the arguments that you want to set to non-default
+values.  The value "NONE" can be used to switch the value off or go back to
+the default value.
+
+A simple way to change colors is with the |:colorscheme| command.  This loads
+a file with ":highlight" commands such as this: >
+
+   :hi Comment	gui=bold
+
+Note that all settings that are not included remain the same, only the
+specified field is used, and settings are merged with previous ones.  So, the
+result is like this single command has been used: >
+   :hi Comment	term=bold ctermfg=Cyan guifg=#80a0ff gui=bold
+<
+					*highlight-args* *E416* *E417* *E423*
+There are three types of terminals for highlighting:
+term	a normal terminal (vt100, xterm)
+cterm	a color terminal (MS-DOS console, color-xterm, these have the "Co"
+	termcap entry)
+gui	the GUI
+
+For each type the highlighting can be given.  This makes it possible to use
+the same syntax file on all terminals, and use the optimal highlighting.
+
+1. highlight arguments for normal terminals
+
+term={attr-list}			*attr-list* *highlight-term* *E418*
+	attr-list is a comma separated list (without spaces) of the
+	following items (in any order):
+		bold
+		underline
+		reverse
+		inverse		same as reverse
+		italic
+		standout
+		NONE		no attributes used (used to reset it)
+
+	Note that "bold" can be used here and by using a bold font.  They
+	have the same effect.
+
+start={term-list}				*highlight-start* *E422*
+stop={term-list}				*term-list* *highlight-stop*
+	These lists of terminal codes can be used to get
+	non-standard attributes on a terminal.
+
+	The escape sequence specified with the "start" argument
+	is written before the characters in the highlighted
+	area.  It can be anything that you want to send to the
+	terminal to highlight this area.  The escape sequence
+	specified with the "stop" argument is written after the
+	highlighted area.  This should undo the "start" argument.
+	Otherwise the screen will look messed up.
+
+	The {term-list} can have two forms:
+
+	1. A string with escape sequences.
+	   This is any string of characters, except that it can't start with
+	   "t_" and blanks are not allowed.  The <> notation is recognized
+	   here, so you can use things like "<Esc>" and "<Space>".  Example:
+		start=<Esc>[27h;<Esc>[<Space>r;
+
+	2. A list of terminal codes.
+	   Each terminal code has the form "t_xx", where "xx" is the name of
+	   the termcap entry.  The codes have to be separated with commas.
+	   White space is not allowed.	Example:
+		start=t_C1,t_BL
+	   The terminal codes must exist for this to work.
+
+
+2. highlight arguments for color terminals
+
+cterm={attr-list}					*highlight-cterm*
+	See above for the description of {attr-list} |attr-list|.
+	The "cterm" argument is likely to be different from "term", when
+	colors are used.  For example, in a normal terminal comments could
+	be underlined, in a color terminal they can be made Blue.
+	Note: Many terminals (e.g., DOS console) can't mix these attributes
+	with coloring.	Use only one of "cterm=" OR "ctermfg=" OR "ctermbg=".
+
+ctermfg={color-nr}				*highlight-ctermfg* *E421*
+ctermbg={color-nr}				*highlight-ctermbg*
+	The {color-nr} argument is a color number.  Its range is zero to
+	(not including) the number given by the termcap entry "Co".
+	The actual color with this number depends on the type of terminal
+	and its settings.  Sometimes the color also depends on the settings of
+	"cterm".  For example, on some systems "cterm=bold ctermfg=3" gives
+	another color, on others you just get color 3.
+
+	For an xterm this depends on your resources, and is a bit
+	unpredictable.	See your xterm documentation for the defaults.	The
+	colors for a color-xterm can be changed from the .Xdefaults file.
+	Unfortunately this means that it's not possible to get the same colors
+	for each user.	See |xterm-color| for info about color xterms.
+
+	The MSDOS standard colors are fixed (in a console window), so these
+	have been used for the names.  But the meaning of color names in X11
+	are fixed, so these color settings have been used, to make the
+	highlighting settings portable (complicated, isn't it?).  The
+	following names are recognized, with the color number used:
+
+							*cterm-colors*
+	    NR-16   NR-8    COLOR NAME ~
+	    0	    0	    Black
+	    1	    4	    DarkBlue
+	    2	    2	    DarkGreen
+	    3	    6	    DarkCyan
+	    4	    1	    DarkRed
+	    5	    5	    DarkMagenta
+	    6	    3	    Brown, DarkYellow
+	    7	    7	    LightGray, LightGrey, Gray, Grey
+	    8	    0*	    DarkGray, DarkGrey
+	    9	    4*	    Blue, LightBlue
+	    10	    2*	    Green, LightGreen
+	    11	    6*	    Cyan, LightCyan
+	    12	    1*	    Red, LightRed
+	    13	    5*	    Magenta, LightMagenta
+	    14	    3*	    Yellow, LightYellow
+	    15	    7*	    White
+
+	The number under "NR-16" is used for 16-color terminals ('t_Co'
+	greater than or equal to 16).  The number under "NR-8" is used for
+	8-color terminals ('t_Co' less than 16).  The '*' indicates that the
+	bold attribute is set for ctermfg.  In many 8-color terminals (e.g.,
+	"linux"), this causes the bright colors to appear.  This doesn't work
+	for background colors!	Without the '*' the bold attribute is removed.
+	If you want to set the bold attribute in a different way, put a
+	"cterm=" argument AFTER the "ctermfg=" or "ctermbg=" argument.	Or use
+	a number instead of a color name.
+
+	The case of the color names is ignored.
+	Note that for 16 color ansi style terminals (including xterms), the
+	numbers in the NR-8 column is used. Here '*' means 'add 8' so that Blue
+	is 12, DarkGray is 8 etc.
+
+	Note that for some color terminals these names may result in the wrong
+	colors!
+
+							*:hi-normal-cterm*
+	When setting the "ctermfg" or "ctermbg" colors for the Normal group,
+	these will become the colors used for the non-highlighted text.
+	Example: >
+		:highlight Normal ctermfg=grey ctermbg=darkblue
+<	When setting the "ctermbg" color for the Normal group, the
+	'background' option will be adjusted automatically.  This causes the
+	highlight groups that depend on 'background' to change!  This means
+	you should set the colors for Normal first, before setting other
+	colors.
+	When a colorscheme is being used, changing 'background' causes it to
+	be reloaded, which may reset all colors (including Normal).  First
+	delete the "colors_name" variable when you don't want this.
+
+	When you have set "ctermfg" or "ctermbg" for the Normal group, Vim
+	needs to reset the color when exiting.	This is done with the "op"
+	termcap entry |t_op|.  If this doesn't work correctly, try setting the
+	't_op' option in your .vimrc.
+							*E419* *E420*
+	When Vim knows the normal foreground and background colors, "fg" and
+	"bg" can be used as color names.  This only works after setting the
+	colors for the Normal group and for the MS-DOS console.  Example, for
+	reverse video: >
+	    :highlight Visual ctermfg=bg ctermbg=fg
+<	Note that the colors are used that are valid at the moment this
+	command are given.  If the Normal group colors are changed later, the
+	"fg" and "bg" colors will not be adjusted.
+
+
+3. highlight arguments for the GUI
+
+gui={attr-list}						*highlight-gui*
+	These give the attributes to use in the GUI mode.
+	See |attr-list| for a description.
+	Note that "bold" can be used here and by using a bold font.  They
+	have the same effect.
+	Note that the attributes are ignored for the "Normal" group.
+
+font={font-name}					*highlight-font*
+	font-name is the name of a font, as it is used on the system Vim
+	runs on.  For X11 this is a complicated name, for example: >
+   font=-misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1
+<
+	The font-name "NONE" can be used to revert to the default font.
+	When setting the font for the "Normal" group, this becomes the default
+	font (until the 'guifont' option is changed; the last one set is
+	used).
+	The following only works with Motif and Athena, not with other GUIs:
+	When setting the font for the "Menu" group, the menus will be changed.
+	When setting the font for the "Tooltip" group, the tooltips will be
+	changed.
+	All fonts used, except for Menu and Tooltip, should be of the same
+	character size as the default font!  Otherwise redrawing problems will
+	occur.
+
+guifg={color-name}					*highlight-guifg*
+guibg={color-name}					*highlight-guibg*
+	These give the foreground (guifg) and background (guibg) color to
+	use in the GUI.  There are a few special names:
+		NONE		no color (transparent)
+		bg		use normal background color
+		background	use normal background color
+		fg		use normal foreground color
+		foreground	use normal foreground color
+	To use a color name with an embedded space or other special character,
+	put it in single quotes.  The single quote cannot be used then.
+	Example: >
+	    :hi comment guifg='salmon pink'
+<
+							*gui-colors*
+	Suggested color names (these are available on most systems):
+	    Red		LightRed	DarkRed
+	    Green	LightGreen	DarkGreen	SeaGreen
+	    Blue	LightBlue	DarkBlue	SlateBlue
+	    Cyan	LightCyan	DarkCyan
+	    Magenta	LightMagenta	DarkMagenta
+	    Yellow	LightYellow	Brown		DarkYellow
+	    Gray	LightGray	DarkGray
+	    Black	White
+	    Orange	Purple		Violet
+
+	In the Win32 GUI version, additional system colors are available.  See
+	|win32-colors|.
+
+	You can also specify a color by its Red, Green and Blue values.
+	The format is "#rrggbb", where
+		"rr"	is the Red value
+		"bb"	is the Blue value
+		"gg"	is the Green value
+	All values are hexadecimal, range from "00" to "ff".  Examples: >
+  :highlight Comment guifg=#11f0c3 guibg=#ff00ff
+<
+					*highlight-groups* *highlight-default*
+These are the default highlighting groups.  These groups are used by the
+'highlight' option default.  Note that the highlighting depends on the value
+of 'background'.  You can see the current settings with the ":highlight"
+command.
+							*hl-Cursor*
+Cursor		the character under the cursor
+							*hl-CursorIM*
+CursorIM	like Cursor, but used when in IME mode |CursorIM|
+							*hl-Directory*
+Directory	directory names (and other special names in listings)
+							*hl-DiffAdd*
+DiffAdd		diff mode: Added line |diff.txt|
+							*hl-DiffChange*
+DiffChange	diff mode: Changed line |diff.txt|
+							*hl-DiffDelete*
+DiffDelete	diff mode: Deleted line |diff.txt|
+							*hl-DiffText*
+DiffText	diff mode: Changed text within a changed line |diff.txt|
+							*hl-ErrorMsg*
+ErrorMsg	error messages on the command line
+							*hl-VertSplit*
+VertSplit	the column separating vertically split windows
+							*hl-Folded*
+Folded		line used for closed folds
+							*hl-FoldColumn*
+FoldColumn	'foldcolumn'
+							*hl-SignColumn*
+SignColumn	column where |signs| are displayed
+							*hl-IncSearch*
+IncSearch	'incsearch' highlighting; also used for the text replaced with
+		":s///c"
+							*hl-LineNr*
+LineNr		line number for ":number" and ":#" commands, and when 'number'
+		option is set.
+							*hl-ModeMsg*
+ModeMsg		'showmode' message (e.g., "-- INSERT --")
+							*hl-MoreMsg*
+MoreMsg		|more-prompt|
+							*hl-NonText*
+NonText		'~' and '@' at the end of the window, characters from
+		'showbreak' and other characters that do not really exist in
+		the text (e.g., ">" displayed when a double-wide character
+		doesn't fit at the end of the line).
+							*hl-Normal*
+Normal		normal text
+							*hl-Question*
+Question	|hit-enter| prompt and yes/no questions
+							*hl-Search*
+Search		Last search pattern highlighting (see 'hlsearch').
+		Also used for highlighting the current line in the quickfix
+		window and similar items that need to stand out.
+							*hl-SpecialKey*
+SpecialKey	Meta and special keys listed with ":map", also for text used
+		to show unprintable characters in the text, 'listchars'.
+		Generally: text that is displayed differently from what it
+		really is.
+							*hl-StatusLine*
+StatusLine	status line of current window
+							*hl-StatusLineNC*
+StatusLineNC	status lines of not-current windows
+		Note: if this is equal to "StatusLine" Vim will use "^^^" in
+		the status line of the current window.
+							*hl-Title*
+Title		titles for output from ":set all", ":autocmd" etc.
+							*hl-Visual*
+Visual		Visual mode selection
+							*hl-VisualNOS*
+VisualNOS	Visual mode selection when vim is "Not Owning the Selection".
+		Only X11 Gui's |gui-x11| and |xterm-clipboard| supports this.
+							*hl-WarningMsg*
+WarningMsg	warning messages
+							*hl-WildMenu*
+WildMenu	current match in 'wildmenu' completion
+
+						*hl-User1* *hl-User1..9*
+The 'statusline' syntax allows the use of 9 different highlights in the
+statusline and ruler (via 'rulerformat'). The names are User1 to User9.
+
+For the GUI you can use these groups to set the colors for the menu,
+scrollbars and tooltips.  They don't have defaults.  This doesn't work for the
+Win32 GUI.  Only three highlight arguments have any effect here: font, guibg,
+and guifg.
+
+							*hl-Menu*
+Menu		Current font, background and foreground colors of the menus.
+		Also used for the toolbar.
+		Applicable highlight arguments: font, guibg, guifg.
+
+		NOTE: For Motif and Athena the font argument actually
+		specifies a fontset at all times, no matter if 'guifontset' is
+		empty, and as such it is tied to the current |:language| when
+		set.
+
+							*hl-Scrollbar*
+Scrollbar	Current background and foreground of the main window's
+		scrollbars.
+		Applicable highlight arguments: guibg, guifg.
+
+							*hl-Tooltip*
+Tooltip		Current font, background and foreground of the tooltips.
+		Applicable highlight arguments: font, guibg, guifg.
+
+		NOTE: For Motif and Athena the font argument actually
+		specifies a fontset at all times, no matter if 'guifontset' is
+		empty, and as such it is tied to the current |:language| when
+		set.
+
+==============================================================================
+13. Linking groups		*:hi-link* *:highlight-link* *E412* *E413*
+
+When you want to use the same highlighting for several syntax groups, you
+can do this more easily by linking the groups into one common highlight
+group, and give the color attributes only for that group.
+
+To set a link:
+
+    :hi[ghlight][!] [default] link {from-group} {to-group}
+
+To remove a link:
+
+    :hi[ghlight][!] [default] link {from-group} NONE
+
+Notes:							*E414*
+- If the {from-group} and/or {to-group} doesn't exist, it is created.  You
+  don't get an error message for a non-existing group.
+- As soon as you use a ":highlight" command for a linked group, the link is
+  removed.
+- If there are already highlight settings for the {from-group}, the link is
+  not made, unless the '!' is given.  For a ":highlight link" command in a
+  sourced file, you don't get an error message.  This can be used to skip
+  links for groups that already have settings.
+
+					*:hi-default* *:highlight-default*
+The [default] argument is used for setting the default highlighting for a
+group.	If highlighting has already been specified for the group the command
+will be ignored.  Also when there is an existing link.
+
+Using [default] is especially useful to overrule the highlighting of a
+specific syntax file.  For example, the C syntax file contains: >
+	:highlight default link cComment Comment
+If you like Question highlighting for C comments, put this in your vimrc file: >
+	:highlight link cComment Question
+Without the "default" in the C syntax file, the highlighting would be
+overruled when the syntax file is loaded.
+
+==============================================================================
+14. Cleaning up						*:syn-clear* *E391*
+
+If you want to clear the syntax stuff for the current buffer, you can use this
+command: >
+  :syntax clear
+
+This command should be used when you want to switch off syntax highlighting,
+or when you want to switch to using another syntax.  It's normally not needed
+in a syntax file itself, because syntax is cleared by the autocommands that
+load the syntax file.
+The command also deletes the "b:current_syntax" variable, since no syntax is
+loaded after this command.
+
+If you want to disable syntax highlighting for all buffers, you need to remove
+the autocommands that load the syntax files: >
+  :syntax off
+
+What this command actually does, is executing the command >
+  :source $VIMRUNTIME/syntax/nosyntax.vim
+See the "nosyntax.vim" file for details.  Note that for this to work
+$VIMRUNTIME must be valid.  See |$VIMRUNTIME|.
+
+To clean up specific syntax groups for the current buffer: >
+  :syntax clear {group-name} ..
+This removes all patterns and keywords for {group-name}.
+
+To clean up specific syntax group lists for the current buffer: >
+  :syntax clear @{grouplist-name} ..
+This sets {grouplist-name}'s contents to an empty list.
+
+						*:syntax-reset* *:syn-reset*
+If you have changed the colors and messed them up, use this command to get the
+defaults back: >
+
+  :syntax reset
+
+This doesn't change the colors for the 'highlight' option.
+
+Note that the syntax colors that you set in your vimrc file will also be reset
+back to their Vim default.
+Note that if you are using a color scheme, the colors defined by the color
+scheme for syntax highlighting will be lost.
+
+What this actually does is: >
+
+	let g:syntax_cmd = "reset"
+	runtime! syntax/syncolor.vim
+
+Note that this uses the 'runtimepath' option.
+
+							*syncolor*
+If you want to use different colors for syntax highlighting, you can add a Vim
+script file to set these colors.  Put this file in a directory in
+'runtimepath' which comes after $VIMRUNTIME, so that your settings overrule
+the default colors.  This way these colors will be used after the ":syntax
+reset" command.
+
+For Unix you can use the file ~/.vim/after/syntax/syncolor.vim.  Example: >
+
+	if &background == "light"
+	  highlight comment ctermfg=darkgreen guifg=darkgreen
+	else
+	  highlight comment ctermfg=green guifg=green
+	endif
+
+Note that when a color scheme is used, there might be some confusion whether
+your defined colors are to be used or the colors from the scheme.  This
+depends on the color scheme file.  See |:colorscheme|.
+
+							*syntax_cmd*
+The "syntax_cmd" variable is set to one of these values when the
+syntax/syncolor.vim files are loaded:
+   "on"		":syntax on" command.  Highlight colors are overruled but
+		links are kept
+   "enable"	":syntax enable" command.  Only define colors for groups that
+		don't have highlighting yet.  Use ":syntax default".
+   "reset"	":syntax reset" command or loading a color scheme.  Define all
+		the colors.
+   "skip"	Don't define colors.  Used to skip the default settings when a
+		syncolor.vim file earlier in 'runtimepath' has already set
+		them.
+
+==============================================================================
+15. Highlighting tags					*tag-highlight*
+
+If you want to highlight all the tags in your file, you can use the following
+mappings.
+
+	<F11>	-- Generate tags.vim file, and highlight tags.
+	<F12>	-- Just highlight tags based on existing tags.vim file.
+>
+  :map <F11>  :sp tags<CR>:%s/^\([^	:]*:\)\=\([^	]*\).*/syntax keyword Tag \2/<CR>:wq! tags.vim<CR>/^<CR><F12>
+  :map <F12>  :so tags.vim<CR>
+
+WARNING: The longer the tags file, the slower this will be, and the more
+memory Vim will consume.
+
+Only highlighting typedefs, unions and structs can be done too.  For this you
+must use Exuberant ctags (found at http://ctags.sf.net).
+
+Put these lines in your Makefile:
+
+# Make a highlight file for types.  Requires Exuberant ctags and awk
+types: types.vim
+types.vim: *.[ch]
+	ctags -i=gstuS -o- *.[ch] |\
+		awk 'BEGIN{printf("syntax keyword Type\t")}\
+			{printf("%s ", $$1)}END{print ""}' > $@
+
+And put these lines in your .vimrc: >
+
+   " load the types.vim highlighting file, if it exists
+   autocmd BufRead,BufNewFile *.[ch] let fname = expand('<afile>:p:h') . '/types.vim'
+   autocmd BufRead,BufNewFile *.[ch] if filereadable(fname)
+   autocmd BufRead,BufNewFile *.[ch]   exe 'so ' . fname
+   autocmd BufRead,BufNewFile *.[ch] endif
+
+==============================================================================
+16. Color xterms				*xterm-color* *color-xterm*
+
+Most color xterms have only eight colors.  If you don't get colors with the
+default setup, it should work with these lines in your .vimrc: >
+   :if &term =~ "xterm"
+   :  if has("terminfo")
+   :	set t_Co=8
+   :	set t_Sf=<Esc>[3%p1%dm
+   :	set t_Sb=<Esc>[4%p1%dm
+   :  else
+   :	set t_Co=8
+   :	set t_Sf=<Esc>[3%dm
+   :	set t_Sb=<Esc>[4%dm
+   :  endif
+   :endif
+<	[<Esc> is a real escape, type CTRL-V <Esc>]
+
+You might want to change the first "if" to match the name of your terminal,
+e.g. "dtterm" instead of "xterm".
+
+Note: Do these settings BEFORE doing ":syntax on".  Otherwise the colors may
+be wrong.
+							*xiterm* *rxvt*
+The above settings have been mentioned to work for xiterm and rxvt too.
+But for using 16 colors in an rxvt these should work with terminfo: >
+	:set t_AB=<Esc>[%?%p1%{8}%<%t25;%p1%{40}%+%e5;%p1%{32}%+%;%dm
+	:set t_AF=<Esc>[%?%p1%{8}%<%t22;%p1%{30}%+%e1;%p1%{22}%+%;%dm
+<
+							*colortest.vim*
+To test your color setup, a file has been included in the Vim distribution.
+To use it, execute these commands: >
+   :e $VIMRUNTIME/syntax/colortest.vim
+   :so %
+
+Some versions of xterm (and other terminals, like the linux console) can
+output lighter foreground colors, even though the number of colors is defined
+at 8.  Therefore Vim sets the "cterm=bold" attribute for light foreground
+colors, when 't_Co' is 8.
+
+							*xfree-xterm*
+To get 16 colors or more, get the newest xterm version (which should be
+included with Xfree86 3.3 and later).  You can also find the latest version
+at: >
+	http://invisible-island.net/xterm/xterm.html
+Here is a good way to configure it.  This uses 88 colors and enables the
+termcap-query feature, which allows Vim to ask the xterm how many colors it
+supports. >
+	./configure --disable-bold-color --enable-88-color --enable-tcap-query
+If you only get 8 colors, check the xterm compilation settings.
+(Also see |UTF8-xterm| for using this xterm with UTF-8 character encoding).
+
+This xterm should work with these lines in your .vimrc (for 16 colors): >
+   :if has("terminfo")
+   :  set t_Co=16
+   :  set t_AB=<Esc>[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm
+   :  set t_AF=<Esc>[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm
+   :else
+   :  set t_Co=16
+   :  set t_Sf=<Esc>[3%dm
+   :  set t_Sb=<Esc>[4%dm
+   :endif
+<	[<Esc> is a real escape, type CTRL-V <Esc>]
+
+Without |+terminfo|, Vim will recognize these settings, and automatically
+translate cterm colors of 8 and above to "<Esc>[9%dm" and "<Esc>[10%dm".
+Colors above 16 are also translated automatically.
+
+For 256 colors this has been reported to work: >
+
+   :set t_AB=<Esc>[48;5;%dm
+   :set t_AF=<Esc>[38;5;%dm
+
+Or just set the TERM environment variable to "xterm-color" or "xterm-16color"
+and try if that works.
+
+You probably want to use these X resources (in your ~/.Xdefaults file):
+	XTerm*color0:			#000000
+	XTerm*color1:			#c00000
+	XTerm*color2:			#008000
+	XTerm*color3:			#808000
+	XTerm*color4:			#0000c0
+	XTerm*color5:			#c000c0
+	XTerm*color6:			#008080
+	XTerm*color7:			#c0c0c0
+	XTerm*color8:			#808080
+	XTerm*color9:			#ff6060
+	XTerm*color10:			#00ff00
+	XTerm*color11:			#ffff00
+	XTerm*color12:			#8080ff
+	XTerm*color13:			#ff40ff
+	XTerm*color14:			#00ffff
+	XTerm*color15:			#ffffff
+	Xterm*cursorColor:		Black
+
+[Note: The cursorColor is required to work around a bug, which changes the
+cursor color to the color of the last drawn text.  This has been fixed by a
+newer version of xterm, but not everybody is it using yet.]
+
+To get these right away, reload the .Xdefaults file to the X Option database
+Manager (you only need to do this when you just changed the .Xdefaults file): >
+  xrdb -merge ~/.Xdefaults
+<
+					*xterm-blink* *xterm-blinking-cursor*
+To make the cursor blink in an xterm, see tools/blink.c.  Or use Thomas
+Dickey's xterm above patchlevel 107 (see above for where to get it), with
+these resources:
+	XTerm*cursorBlink:	on
+	XTerm*cursorOnTime:	400
+	XTerm*cursorOffTime:	250
+	XTerm*cursorColor:	White
+
+							*hpterm-color*
+These settings work (more or less) for a hpterm, which only supports 8
+foreground colors: >
+   :if has("terminfo")
+   :  set t_Co=8
+   :  set t_Sf=<Esc>[&v%p1%dS
+   :  set t_Sb=<Esc>[&v7S
+   :else
+   :  set t_Co=8
+   :  set t_Sf=<Esc>[&v%dS
+   :  set t_Sb=<Esc>[&v7S
+   :endif
+<	[<Esc> is a real escape, type CTRL-V <Esc>]
+
+						*Eterm* *enlightened-terminal*
+These settings have been reported to work for the Enlightened terminal
+emulator, or Eterm.  They might work for all xterm-like terminals that use the
+bold attribute to get bright colors.  Add an ":if" like above when needed. >
+       :set t_Co=16
+       :set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m
+       :set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m
+<
+						*TTpro-telnet*
+These settings should work for TTpro telnet.  Tera Term Pro is a freeware /
+open-source program for MS-Windows. >
+	set t_Co=16
+	set t_AB=^[[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{32}%+5;%;%dm
+	set t_AF=^[[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{22}%+1;%;%dm
+Also make sure TTpro's Setup / Window / Full Color is enabled, and make sure
+that Setup / Font / Enable Bold is NOT enabled.
+(info provided by John Love-Jensen <eljay@Adobe.COM>)
+
+ vim:tw=78:sw=4:ts=8:ft=help:norl:
diff --git a/runtime/doc/tags b/runtime/doc/tags
new file mode 100644
index 0000000..9a77ade
--- /dev/null
+++ b/runtime/doc/tags
@@ -0,0 +1,6649 @@
+!	change.txt	/*!*
+!!	change.txt	/*!!*
+#	pattern.txt	/*#*
+$	motion.txt	/*$*
+$HOME	options.txt	/*$HOME*
+$HOME-use	version5.txt	/*$HOME-use*
+$VIM	starting.txt	/*$VIM*
+$VIM-use	version5.txt	/*$VIM-use*
+$VIMRUNTIME	starting.txt	/*$VIMRUNTIME*
+%	motion.txt	/*%*
+&	change.txt	/*&*
+'	motion.txt	/*'*
+''	motion.txt	/*''*
+'(	motion.txt	/*'(*
+')	motion.txt	/*')*
+'.	motion.txt	/*'.*
+'0	motion.txt	/*'0*
+'<	motion.txt	/*'<*
+'>	motion.txt	/*'>*
+'A	motion.txt	/*'A*
+'[	motion.txt	/*'[*
+']	motion.txt	/*']*
+'^	motion.txt	/*'^*
+'a	motion.txt	/*'a*
+'acd'	options.txt	/*'acd'*
+'ai'	options.txt	/*'ai'*
+'akm'	options.txt	/*'akm'*
+'al'	options.txt	/*'al'*
+'aleph'	options.txt	/*'aleph'*
+'allowrevins'	options.txt	/*'allowrevins'*
+'altkeymap'	options.txt	/*'altkeymap'*
+'ambiwidth'	options.txt	/*'ambiwidth'*
+'ambw'	options.txt	/*'ambw'*
+'anti'	options.txt	/*'anti'*
+'antialias'	options.txt	/*'antialias'*
+'ap'	vi_diff.txt	/*'ap'*
+'ar'	options.txt	/*'ar'*
+'arab'	options.txt	/*'arab'*
+'arabic'	options.txt	/*'arabic'*
+'arabicshape'	options.txt	/*'arabicshape'*
+'ari'	options.txt	/*'ari'*
+'arshape'	options.txt	/*'arshape'*
+'as'	todo.txt	/*'as'*
+'autochdir'	options.txt	/*'autochdir'*
+'autoindent'	options.txt	/*'autoindent'*
+'autoprint'	vi_diff.txt	/*'autoprint'*
+'autoread'	options.txt	/*'autoread'*
+'autosave'	todo.txt	/*'autosave'*
+'autowrite'	options.txt	/*'autowrite'*
+'autowriteall'	options.txt	/*'autowriteall'*
+'aw'	options.txt	/*'aw'*
+'awa'	options.txt	/*'awa'*
+'background'	options.txt	/*'background'*
+'backspace'	options.txt	/*'backspace'*
+'backup'	options.txt	/*'backup'*
+'backupcopy'	options.txt	/*'backupcopy'*
+'backupdir'	options.txt	/*'backupdir'*
+'backupext'	options.txt	/*'backupext'*
+'backupskip'	options.txt	/*'backupskip'*
+'balloondelay'	options.txt	/*'balloondelay'*
+'ballooneval'	options.txt	/*'ballooneval'*
+'bdir'	options.txt	/*'bdir'*
+'bdlay'	options.txt	/*'bdlay'*
+'beautify'	vi_diff.txt	/*'beautify'*
+'beval'	options.txt	/*'beval'*
+'bex'	options.txt	/*'bex'*
+'bf'	vi_diff.txt	/*'bf'*
+'bg'	options.txt	/*'bg'*
+'bh'	options.txt	/*'bh'*
+'bin'	options.txt	/*'bin'*
+'binary'	options.txt	/*'binary'*
+'biosk'	options.txt	/*'biosk'*
+'bioskey'	options.txt	/*'bioskey'*
+'bk'	options.txt	/*'bk'*
+'bkc'	options.txt	/*'bkc'*
+'bl'	options.txt	/*'bl'*
+'bomb'	options.txt	/*'bomb'*
+'breakat'	options.txt	/*'breakat'*
+'brk'	options.txt	/*'brk'*
+'browsedir'	options.txt	/*'browsedir'*
+'bs'	options.txt	/*'bs'*
+'bsdir'	options.txt	/*'bsdir'*
+'bsk'	options.txt	/*'bsk'*
+'bt'	options.txt	/*'bt'*
+'bufhidden'	options.txt	/*'bufhidden'*
+'buflisted'	options.txt	/*'buflisted'*
+'buftype'	options.txt	/*'buftype'*
+'casemap'	options.txt	/*'casemap'*
+'cb'	options.txt	/*'cb'*
+'ccv'	options.txt	/*'ccv'*
+'cd'	options.txt	/*'cd'*
+'cdpath'	options.txt	/*'cdpath'*
+'cedit'	options.txt	/*'cedit'*
+'cf'	options.txt	/*'cf'*
+'ch'	options.txt	/*'ch'*
+'character'	intro.txt	/*'character'*
+'charconvert'	options.txt	/*'charconvert'*
+'ci'	options.txt	/*'ci'*
+'cin'	options.txt	/*'cin'*
+'cindent'	options.txt	/*'cindent'*
+'cink'	options.txt	/*'cink'*
+'cinkeys'	options.txt	/*'cinkeys'*
+'cino'	options.txt	/*'cino'*
+'cinoptions'	options.txt	/*'cinoptions'*
+'cinw'	options.txt	/*'cinw'*
+'cinwords'	options.txt	/*'cinwords'*
+'clipboard'	options.txt	/*'clipboard'*
+'cmdheight'	options.txt	/*'cmdheight'*
+'cmdwinheight'	options.txt	/*'cmdwinheight'*
+'cmp'	options.txt	/*'cmp'*
+'cms'	options.txt	/*'cms'*
+'co'	options.txt	/*'co'*
+'columns'	options.txt	/*'columns'*
+'com'	options.txt	/*'com'*
+'comments'	options.txt	/*'comments'*
+'commentstring'	options.txt	/*'commentstring'*
+'compatible'	options.txt	/*'compatible'*
+'complete'	options.txt	/*'complete'*
+'confirm'	options.txt	/*'confirm'*
+'consk'	options.txt	/*'consk'*
+'conskey'	options.txt	/*'conskey'*
+'copyindent'	options.txt	/*'copyindent'*
+'cp'	options.txt	/*'cp'*
+'cpo'	options.txt	/*'cpo'*
+'cpoptions'	options.txt	/*'cpoptions'*
+'cpt'	options.txt	/*'cpt'*
+'cscopepathcomp'	options.txt	/*'cscopepathcomp'*
+'cscopeprg'	options.txt	/*'cscopeprg'*
+'cscopequickfix'	options.txt	/*'cscopequickfix'*
+'cscopetag'	options.txt	/*'cscopetag'*
+'cscopetagorder'	options.txt	/*'cscopetagorder'*
+'cscopeverbose'	options.txt	/*'cscopeverbose'*
+'cspc'	options.txt	/*'cspc'*
+'csprg'	options.txt	/*'csprg'*
+'csqf'	options.txt	/*'csqf'*
+'cst'	options.txt	/*'cst'*
+'csto'	options.txt	/*'csto'*
+'csverb'	options.txt	/*'csverb'*
+'cwh'	options.txt	/*'cwh'*
+'debug'	options.txt	/*'debug'*
+'deco'	options.txt	/*'deco'*
+'def'	options.txt	/*'def'*
+'define'	options.txt	/*'define'*
+'delcombine'	options.txt	/*'delcombine'*
+'dex'	options.txt	/*'dex'*
+'dg'	options.txt	/*'dg'*
+'dict'	options.txt	/*'dict'*
+'dictionary'	options.txt	/*'dictionary'*
+'diff'	options.txt	/*'diff'*
+'diffexpr'	options.txt	/*'diffexpr'*
+'diffopt'	options.txt	/*'diffopt'*
+'digraph'	options.txt	/*'digraph'*
+'dip'	options.txt	/*'dip'*
+'dir'	options.txt	/*'dir'*
+'directory'	options.txt	/*'directory'*
+'display'	options.txt	/*'display'*
+'dy'	options.txt	/*'dy'*
+'ea'	options.txt	/*'ea'*
+'ead'	options.txt	/*'ead'*
+'eadirection'	options.txt	/*'eadirection'*
+'eb'	options.txt	/*'eb'*
+'ed'	options.txt	/*'ed'*
+'edcompatible'	options.txt	/*'edcompatible'*
+'ef'	options.txt	/*'ef'*
+'efm'	options.txt	/*'efm'*
+'ei'	options.txt	/*'ei'*
+'ek'	options.txt	/*'ek'*
+'enc'	options.txt	/*'enc'*
+'encoding'	options.txt	/*'encoding'*
+'endofline'	options.txt	/*'endofline'*
+'eol'	options.txt	/*'eol'*
+'ep'	options.txt	/*'ep'*
+'equalalways'	options.txt	/*'equalalways'*
+'equalprg'	options.txt	/*'equalprg'*
+'errorbells'	options.txt	/*'errorbells'*
+'errorfile'	options.txt	/*'errorfile'*
+'errorformat'	options.txt	/*'errorformat'*
+'esckeys'	options.txt	/*'esckeys'*
+'et'	options.txt	/*'et'*
+'eventignore'	options.txt	/*'eventignore'*
+'ex'	options.txt	/*'ex'*
+'expandtab'	options.txt	/*'expandtab'*
+'exrc'	options.txt	/*'exrc'*
+'fcl'	options.txt	/*'fcl'*
+'fcs'	options.txt	/*'fcs'*
+'fdc'	options.txt	/*'fdc'*
+'fde'	options.txt	/*'fde'*
+'fdi'	options.txt	/*'fdi'*
+'fdl'	options.txt	/*'fdl'*
+'fdls'	options.txt	/*'fdls'*
+'fdm'	options.txt	/*'fdm'*
+'fdn'	options.txt	/*'fdn'*
+'fdo'	options.txt	/*'fdo'*
+'fdt'	options.txt	/*'fdt'*
+'fe'	options.txt	/*'fe'*
+'fen'	options.txt	/*'fen'*
+'fenc'	options.txt	/*'fenc'*
+'fencs'	options.txt	/*'fencs'*
+'ff'	options.txt	/*'ff'*
+'ffs'	options.txt	/*'ffs'*
+'fileencoding'	options.txt	/*'fileencoding'*
+'fileencodings'	options.txt	/*'fileencodings'*
+'fileformat'	options.txt	/*'fileformat'*
+'fileformats'	options.txt	/*'fileformats'*
+'filetype'	options.txt	/*'filetype'*
+'fillchars'	options.txt	/*'fillchars'*
+'fk'	options.txt	/*'fk'*
+'fkmap'	options.txt	/*'fkmap'*
+'fl'	vi_diff.txt	/*'fl'*
+'flash'	vi_diff.txt	/*'flash'*
+'fml'	options.txt	/*'fml'*
+'fmr'	options.txt	/*'fmr'*
+'fo'	options.txt	/*'fo'*
+'foldclose'	options.txt	/*'foldclose'*
+'foldcolumn'	options.txt	/*'foldcolumn'*
+'foldenable'	options.txt	/*'foldenable'*
+'foldexpr'	options.txt	/*'foldexpr'*
+'foldignore'	options.txt	/*'foldignore'*
+'foldlevel'	options.txt	/*'foldlevel'*
+'foldlevelstart'	options.txt	/*'foldlevelstart'*
+'foldmarker'	options.txt	/*'foldmarker'*
+'foldmethod'	options.txt	/*'foldmethod'*
+'foldminlines'	options.txt	/*'foldminlines'*
+'foldnestmax'	options.txt	/*'foldnestmax'*
+'foldopen'	options.txt	/*'foldopen'*
+'foldtext'	options.txt	/*'foldtext'*
+'formatoptions'	options.txt	/*'formatoptions'*
+'formatprg'	options.txt	/*'formatprg'*
+'fp'	options.txt	/*'fp'*
+'ft'	options.txt	/*'ft'*
+'gcr'	options.txt	/*'gcr'*
+'gd'	options.txt	/*'gd'*
+'gdefault'	options.txt	/*'gdefault'*
+'gfm'	options.txt	/*'gfm'*
+'gfn'	options.txt	/*'gfn'*
+'gfs'	options.txt	/*'gfs'*
+'gfw'	options.txt	/*'gfw'*
+'ghr'	options.txt	/*'ghr'*
+'go'	options.txt	/*'go'*
+'gp'	options.txt	/*'gp'*
+'gr'	vi_diff.txt	/*'gr'*
+'graphic'	vi_diff.txt	/*'graphic'*
+'grepformat'	options.txt	/*'grepformat'*
+'grepprg'	options.txt	/*'grepprg'*
+'guicursor'	options.txt	/*'guicursor'*
+'guifont'	options.txt	/*'guifont'*
+'guifontset'	options.txt	/*'guifontset'*
+'guifontwide'	options.txt	/*'guifontwide'*
+'guiheadroom'	options.txt	/*'guiheadroom'*
+'guioptions'	options.txt	/*'guioptions'*
+'guipty'	options.txt	/*'guipty'*
+'hardtabs'	vi_diff.txt	/*'hardtabs'*
+'helpfile'	options.txt	/*'helpfile'*
+'helpheight'	options.txt	/*'helpheight'*
+'helplang'	options.txt	/*'helplang'*
+'hf'	options.txt	/*'hf'*
+'hh'	options.txt	/*'hh'*
+'hi'	options.txt	/*'hi'*
+'hid'	options.txt	/*'hid'*
+'hidden'	options.txt	/*'hidden'*
+'highlight'	options.txt	/*'highlight'*
+'history'	options.txt	/*'history'*
+'hk'	options.txt	/*'hk'*
+'hkmap'	options.txt	/*'hkmap'*
+'hkmapp'	options.txt	/*'hkmapp'*
+'hkp'	options.txt	/*'hkp'*
+'hl'	options.txt	/*'hl'*
+'hlg'	options.txt	/*'hlg'*
+'hls'	options.txt	/*'hls'*
+'hlsearch'	options.txt	/*'hlsearch'*
+'ht'	vi_diff.txt	/*'ht'*
+'ic'	options.txt	/*'ic'*
+'icon'	options.txt	/*'icon'*
+'iconstring'	options.txt	/*'iconstring'*
+'ignorecase'	options.txt	/*'ignorecase'*
+'im'	options.txt	/*'im'*
+'imactivatekey'	options.txt	/*'imactivatekey'*
+'imak'	options.txt	/*'imak'*
+'imc'	options.txt	/*'imc'*
+'imcmdline'	options.txt	/*'imcmdline'*
+'imd'	options.txt	/*'imd'*
+'imdisable'	options.txt	/*'imdisable'*
+'imi'	options.txt	/*'imi'*
+'iminsert'	options.txt	/*'iminsert'*
+'ims'	options.txt	/*'ims'*
+'imsearch'	options.txt	/*'imsearch'*
+'inc'	options.txt	/*'inc'*
+'include'	options.txt	/*'include'*
+'includeexpr'	options.txt	/*'includeexpr'*
+'incsearch'	options.txt	/*'incsearch'*
+'inde'	options.txt	/*'inde'*
+'indentexpr'	options.txt	/*'indentexpr'*
+'indentkeys'	options.txt	/*'indentkeys'*
+'indk'	options.txt	/*'indk'*
+'inex'	options.txt	/*'inex'*
+'inf'	options.txt	/*'inf'*
+'infercase'	options.txt	/*'infercase'*
+'insertmode'	options.txt	/*'insertmode'*
+'is'	options.txt	/*'is'*
+'isf'	options.txt	/*'isf'*
+'isfname'	options.txt	/*'isfname'*
+'isi'	options.txt	/*'isi'*
+'isident'	options.txt	/*'isident'*
+'isk'	options.txt	/*'isk'*
+'iskeyword'	options.txt	/*'iskeyword'*
+'isp'	options.txt	/*'isp'*
+'isprint'	options.txt	/*'isprint'*
+'joinspaces'	options.txt	/*'joinspaces'*
+'js'	options.txt	/*'js'*
+'key'	options.txt	/*'key'*
+'keymap'	options.txt	/*'keymap'*
+'keymodel'	options.txt	/*'keymodel'*
+'keywordprg'	options.txt	/*'keywordprg'*
+'km'	options.txt	/*'km'*
+'kmp'	options.txt	/*'kmp'*
+'kp'	options.txt	/*'kp'*
+'langmap'	options.txt	/*'langmap'*
+'langmenu'	options.txt	/*'langmenu'*
+'laststatus'	options.txt	/*'laststatus'*
+'lazyredraw'	options.txt	/*'lazyredraw'*
+'lbr'	options.txt	/*'lbr'*
+'lcs'	options.txt	/*'lcs'*
+'linebreak'	options.txt	/*'linebreak'*
+'lines'	options.txt	/*'lines'*
+'linespace'	options.txt	/*'linespace'*
+'lisp'	options.txt	/*'lisp'*
+'lispwords'	options.txt	/*'lispwords'*
+'list'	options.txt	/*'list'*
+'listchars'	options.txt	/*'listchars'*
+'lm'	options.txt	/*'lm'*
+'lmap'	options.txt	/*'lmap'*
+'loadplugins'	options.txt	/*'loadplugins'*
+'lpl'	options.txt	/*'lpl'*
+'ls'	options.txt	/*'ls'*
+'lsp'	options.txt	/*'lsp'*
+'lw'	options.txt	/*'lw'*
+'lz'	options.txt	/*'lz'*
+'ma'	options.txt	/*'ma'*
+'magic'	options.txt	/*'magic'*
+'makeef'	options.txt	/*'makeef'*
+'makeprg'	options.txt	/*'makeprg'*
+'mat'	options.txt	/*'mat'*
+'matchpairs'	options.txt	/*'matchpairs'*
+'matchtime'	options.txt	/*'matchtime'*
+'maxfuncdepth'	options.txt	/*'maxfuncdepth'*
+'maxmapdepth'	options.txt	/*'maxmapdepth'*
+'maxmem'	options.txt	/*'maxmem'*
+'maxmemtot'	options.txt	/*'maxmemtot'*
+'mef'	options.txt	/*'mef'*
+'menuitems'	options.txt	/*'menuitems'*
+'mesg'	vi_diff.txt	/*'mesg'*
+'mfd'	options.txt	/*'mfd'*
+'mh'	options.txt	/*'mh'*
+'mis'	options.txt	/*'mis'*
+'ml'	options.txt	/*'ml'*
+'mls'	options.txt	/*'mls'*
+'mm'	options.txt	/*'mm'*
+'mmd'	options.txt	/*'mmd'*
+'mmt'	options.txt	/*'mmt'*
+'mod'	options.txt	/*'mod'*
+'modeline'	options.txt	/*'modeline'*
+'modelines'	options.txt	/*'modelines'*
+'modifiable'	options.txt	/*'modifiable'*
+'modified'	options.txt	/*'modified'*
+'more'	options.txt	/*'more'*
+'mouse'	options.txt	/*'mouse'*
+'mousef'	options.txt	/*'mousef'*
+'mousefocus'	options.txt	/*'mousefocus'*
+'mousehide'	options.txt	/*'mousehide'*
+'mousem'	options.txt	/*'mousem'*
+'mousemodel'	options.txt	/*'mousemodel'*
+'mouses'	options.txt	/*'mouses'*
+'mouseshape'	options.txt	/*'mouseshape'*
+'mouset'	options.txt	/*'mouset'*
+'mousetime'	options.txt	/*'mousetime'*
+'mp'	options.txt	/*'mp'*
+'mps'	options.txt	/*'mps'*
+'nf'	options.txt	/*'nf'*
+'noacd'	options.txt	/*'noacd'*
+'noai'	options.txt	/*'noai'*
+'noakm'	options.txt	/*'noakm'*
+'noallowrevins'	options.txt	/*'noallowrevins'*
+'noaltkeymap'	options.txt	/*'noaltkeymap'*
+'noanti'	options.txt	/*'noanti'*
+'noantialias'	options.txt	/*'noantialias'*
+'noar'	options.txt	/*'noar'*
+'noarab'	options.txt	/*'noarab'*
+'noarabic'	options.txt	/*'noarabic'*
+'noarabicshape'	options.txt	/*'noarabicshape'*
+'noari'	options.txt	/*'noari'*
+'noarshape'	options.txt	/*'noarshape'*
+'noas'	todo.txt	/*'noas'*
+'noautochdir'	options.txt	/*'noautochdir'*
+'noautoindent'	options.txt	/*'noautoindent'*
+'noautoread'	options.txt	/*'noautoread'*
+'noautosave'	todo.txt	/*'noautosave'*
+'noautowrite'	options.txt	/*'noautowrite'*
+'noautowriteall'	options.txt	/*'noautowriteall'*
+'noaw'	options.txt	/*'noaw'*
+'noawa'	options.txt	/*'noawa'*
+'nobackup'	options.txt	/*'nobackup'*
+'noballooneval'	options.txt	/*'noballooneval'*
+'nobeval'	options.txt	/*'nobeval'*
+'nobin'	options.txt	/*'nobin'*
+'nobinary'	options.txt	/*'nobinary'*
+'nobiosk'	options.txt	/*'nobiosk'*
+'nobioskey'	options.txt	/*'nobioskey'*
+'nobk'	options.txt	/*'nobk'*
+'nobl'	options.txt	/*'nobl'*
+'nobomb'	options.txt	/*'nobomb'*
+'nobuflisted'	options.txt	/*'nobuflisted'*
+'nocf'	options.txt	/*'nocf'*
+'noci'	options.txt	/*'noci'*
+'nocin'	options.txt	/*'nocin'*
+'nocindent'	options.txt	/*'nocindent'*
+'nocompatible'	options.txt	/*'nocompatible'*
+'noconfirm'	options.txt	/*'noconfirm'*
+'noconsk'	options.txt	/*'noconsk'*
+'noconskey'	options.txt	/*'noconskey'*
+'nocopyindent'	options.txt	/*'nocopyindent'*
+'nocp'	options.txt	/*'nocp'*
+'nocscopetag'	options.txt	/*'nocscopetag'*
+'nocscopeverbose'	options.txt	/*'nocscopeverbose'*
+'nocst'	options.txt	/*'nocst'*
+'nocsverb'	options.txt	/*'nocsverb'*
+'nodeco'	options.txt	/*'nodeco'*
+'nodelcombine'	options.txt	/*'nodelcombine'*
+'nodg'	options.txt	/*'nodg'*
+'nodiff'	options.txt	/*'nodiff'*
+'nodigraph'	options.txt	/*'nodigraph'*
+'nodisable'	options.txt	/*'nodisable'*
+'noea'	options.txt	/*'noea'*
+'noeb'	options.txt	/*'noeb'*
+'noed'	options.txt	/*'noed'*
+'noedcompatible'	options.txt	/*'noedcompatible'*
+'noek'	options.txt	/*'noek'*
+'noendofline'	options.txt	/*'noendofline'*
+'noeol'	options.txt	/*'noeol'*
+'noequalalways'	options.txt	/*'noequalalways'*
+'noerrorbells'	options.txt	/*'noerrorbells'*
+'noesckeys'	options.txt	/*'noesckeys'*
+'noet'	options.txt	/*'noet'*
+'noex'	options.txt	/*'noex'*
+'noexpandtab'	options.txt	/*'noexpandtab'*
+'noexrc'	options.txt	/*'noexrc'*
+'nofen'	options.txt	/*'nofen'*
+'nofk'	options.txt	/*'nofk'*
+'nofkmap'	options.txt	/*'nofkmap'*
+'nofoldenable'	options.txt	/*'nofoldenable'*
+'nogd'	options.txt	/*'nogd'*
+'nogdefault'	options.txt	/*'nogdefault'*
+'noguipty'	options.txt	/*'noguipty'*
+'nohid'	options.txt	/*'nohid'*
+'nohidden'	options.txt	/*'nohidden'*
+'nohk'	options.txt	/*'nohk'*
+'nohkmap'	options.txt	/*'nohkmap'*
+'nohkmapp'	options.txt	/*'nohkmapp'*
+'nohkp'	options.txt	/*'nohkp'*
+'nohls'	options.txt	/*'nohls'*
+'nohlsearch'	options.txt	/*'nohlsearch'*
+'noic'	options.txt	/*'noic'*
+'noicon'	options.txt	/*'noicon'*
+'noignorecase'	options.txt	/*'noignorecase'*
+'noim'	options.txt	/*'noim'*
+'noimc'	options.txt	/*'noimc'*
+'noimcmdline'	options.txt	/*'noimcmdline'*
+'noimd'	options.txt	/*'noimd'*
+'noincsearch'	options.txt	/*'noincsearch'*
+'noinf'	options.txt	/*'noinf'*
+'noinfercase'	options.txt	/*'noinfercase'*
+'noinsertmode'	options.txt	/*'noinsertmode'*
+'nois'	options.txt	/*'nois'*
+'nojoinspaces'	options.txt	/*'nojoinspaces'*
+'nojs'	options.txt	/*'nojs'*
+'nolazyredraw'	options.txt	/*'nolazyredraw'*
+'nolbr'	options.txt	/*'nolbr'*
+'nolinebreak'	options.txt	/*'nolinebreak'*
+'nolisp'	options.txt	/*'nolisp'*
+'nolist'	options.txt	/*'nolist'*
+'noloadplugins'	options.txt	/*'noloadplugins'*
+'nolpl'	options.txt	/*'nolpl'*
+'nolz'	options.txt	/*'nolz'*
+'noma'	options.txt	/*'noma'*
+'nomagic'	options.txt	/*'nomagic'*
+'nomh'	options.txt	/*'nomh'*
+'noml'	options.txt	/*'noml'*
+'nomod'	options.txt	/*'nomod'*
+'nomodeline'	options.txt	/*'nomodeline'*
+'nomodifiable'	options.txt	/*'nomodifiable'*
+'nomodified'	options.txt	/*'nomodified'*
+'nomore'	options.txt	/*'nomore'*
+'nomousef'	options.txt	/*'nomousef'*
+'nomousefocus'	options.txt	/*'nomousefocus'*
+'nomousehide'	options.txt	/*'nomousehide'*
+'nonu'	options.txt	/*'nonu'*
+'nonumber'	options.txt	/*'nonumber'*
+'nopaste'	options.txt	/*'nopaste'*
+'nopi'	options.txt	/*'nopi'*
+'nopreserveindent'	options.txt	/*'nopreserveindent'*
+'nopreviewwindow'	options.txt	/*'nopreviewwindow'*
+'nopvw'	options.txt	/*'nopvw'*
+'noreadonly'	options.txt	/*'noreadonly'*
+'noremap'	options.txt	/*'noremap'*
+'norestorescreen'	options.txt	/*'norestorescreen'*
+'norevins'	options.txt	/*'norevins'*
+'nori'	options.txt	/*'nori'*
+'norightleft'	options.txt	/*'norightleft'*
+'norightleftcmd'	options.txt	/*'norightleftcmd'*
+'norl'	options.txt	/*'norl'*
+'norlc'	options.txt	/*'norlc'*
+'noro'	options.txt	/*'noro'*
+'nors'	options.txt	/*'nors'*
+'noru'	options.txt	/*'noru'*
+'noruler'	options.txt	/*'noruler'*
+'nosb'	options.txt	/*'nosb'*
+'nosc'	options.txt	/*'nosc'*
+'noscb'	options.txt	/*'noscb'*
+'noscrollbind'	options.txt	/*'noscrollbind'*
+'noscs'	options.txt	/*'noscs'*
+'nosecure'	options.txt	/*'nosecure'*
+'nosft'	options.txt	/*'nosft'*
+'noshellslash'	options.txt	/*'noshellslash'*
+'noshiftround'	options.txt	/*'noshiftround'*
+'noshortname'	options.txt	/*'noshortname'*
+'noshowcmd'	options.txt	/*'noshowcmd'*
+'noshowfulltag'	options.txt	/*'noshowfulltag'*
+'noshowmatch'	options.txt	/*'noshowmatch'*
+'noshowmode'	options.txt	/*'noshowmode'*
+'nosi'	options.txt	/*'nosi'*
+'nosm'	options.txt	/*'nosm'*
+'nosmartcase'	options.txt	/*'nosmartcase'*
+'nosmartindent'	options.txt	/*'nosmartindent'*
+'nosmarttab'	options.txt	/*'nosmarttab'*
+'nosmd'	options.txt	/*'nosmd'*
+'nosn'	options.txt	/*'nosn'*
+'nosol'	options.txt	/*'nosol'*
+'nosplitbelow'	options.txt	/*'nosplitbelow'*
+'nosplitright'	options.txt	/*'nosplitright'*
+'nospr'	options.txt	/*'nospr'*
+'nosr'	options.txt	/*'nosr'*
+'nossl'	options.txt	/*'nossl'*
+'nosta'	options.txt	/*'nosta'*
+'nostartofline'	options.txt	/*'nostartofline'*
+'noswapfile'	options.txt	/*'noswapfile'*
+'noswf'	options.txt	/*'noswf'*
+'nota'	options.txt	/*'nota'*
+'notagbsearch'	options.txt	/*'notagbsearch'*
+'notagrelative'	options.txt	/*'notagrelative'*
+'notagstack'	options.txt	/*'notagstack'*
+'notbi'	options.txt	/*'notbi'*
+'notbidi'	options.txt	/*'notbidi'*
+'notbs'	options.txt	/*'notbs'*
+'notermbidi'	options.txt	/*'notermbidi'*
+'noterse'	options.txt	/*'noterse'*
+'notextauto'	options.txt	/*'notextauto'*
+'notextmode'	options.txt	/*'notextmode'*
+'notf'	options.txt	/*'notf'*
+'notgst'	options.txt	/*'notgst'*
+'notildeop'	options.txt	/*'notildeop'*
+'notimeout'	options.txt	/*'notimeout'*
+'notitle'	options.txt	/*'notitle'*
+'noto'	options.txt	/*'noto'*
+'notop'	options.txt	/*'notop'*
+'notr'	options.txt	/*'notr'*
+'nottimeout'	options.txt	/*'nottimeout'*
+'nottybuiltin'	options.txt	/*'nottybuiltin'*
+'nottyfast'	options.txt	/*'nottyfast'*
+'notx'	options.txt	/*'notx'*
+'novb'	options.txt	/*'novb'*
+'novice'	vi_diff.txt	/*'novice'*
+'novisualbell'	options.txt	/*'novisualbell'*
+'nowa'	options.txt	/*'nowa'*
+'nowarn'	options.txt	/*'nowarn'*
+'nowb'	options.txt	/*'nowb'*
+'noweirdinvert'	options.txt	/*'noweirdinvert'*
+'nowfh'	options.txt	/*'nowfh'*
+'nowildmenu'	options.txt	/*'nowildmenu'*
+'nowinfixheight'	options.txt	/*'nowinfixheight'*
+'nowiv'	options.txt	/*'nowiv'*
+'nowmnu'	options.txt	/*'nowmnu'*
+'nowrap'	options.txt	/*'nowrap'*
+'nowrapscan'	options.txt	/*'nowrapscan'*
+'nowrite'	options.txt	/*'nowrite'*
+'nowriteany'	options.txt	/*'nowriteany'*
+'nowritebackup'	options.txt	/*'nowritebackup'*
+'nows'	options.txt	/*'nows'*
+'nrformats'	options.txt	/*'nrformats'*
+'nu'	options.txt	/*'nu'*
+'number'	options.txt	/*'number'*
+'oft'	options.txt	/*'oft'*
+'op'	vi_diff.txt	/*'op'*
+'open'	vi_diff.txt	/*'open'*
+'optimize'	vi_diff.txt	/*'optimize'*
+'option'	intro.txt	/*'option'*
+'osfiletype'	options.txt	/*'osfiletype'*
+'pa'	options.txt	/*'pa'*
+'para'	options.txt	/*'para'*
+'paragraphs'	options.txt	/*'paragraphs'*
+'paste'	options.txt	/*'paste'*
+'pastetoggle'	options.txt	/*'pastetoggle'*
+'patchexpr'	options.txt	/*'patchexpr'*
+'patchmode'	options.txt	/*'patchmode'*
+'path'	options.txt	/*'path'*
+'pdev'	options.txt	/*'pdev'*
+'penc'	options.txt	/*'penc'*
+'pex'	options.txt	/*'pex'*
+'pexpr'	options.txt	/*'pexpr'*
+'pfn'	options.txt	/*'pfn'*
+'pheader'	options.txt	/*'pheader'*
+'pi'	options.txt	/*'pi'*
+'pm'	options.txt	/*'pm'*
+'popt'	options.txt	/*'popt'*
+'preserveindent'	options.txt	/*'preserveindent'*
+'previewheight'	options.txt	/*'previewheight'*
+'previewwindow'	options.txt	/*'previewwindow'*
+'printdevice'	options.txt	/*'printdevice'*
+'printencoding'	options.txt	/*'printencoding'*
+'printexpr'	options.txt	/*'printexpr'*
+'printfont'	options.txt	/*'printfont'*
+'printheader'	options.txt	/*'printheader'*
+'printoptions'	options.txt	/*'printoptions'*
+'prompt'	vi_diff.txt	/*'prompt'*
+'pt'	options.txt	/*'pt'*
+'pvh'	options.txt	/*'pvh'*
+'pvw'	options.txt	/*'pvw'*
+'quote	motion.txt	/*'quote*
+'readonly'	options.txt	/*'readonly'*
+'redraw'	vi_diff.txt	/*'redraw'*
+'remap'	options.txt	/*'remap'*
+'report'	options.txt	/*'report'*
+'restorescreen'	options.txt	/*'restorescreen'*
+'revins'	options.txt	/*'revins'*
+'ri'	options.txt	/*'ri'*
+'rightleft'	options.txt	/*'rightleft'*
+'rightleftcmd'	options.txt	/*'rightleftcmd'*
+'rl'	options.txt	/*'rl'*
+'rlc'	options.txt	/*'rlc'*
+'ro'	options.txt	/*'ro'*
+'rs'	options.txt	/*'rs'*
+'rtp'	options.txt	/*'rtp'*
+'ru'	options.txt	/*'ru'*
+'ruf'	options.txt	/*'ruf'*
+'ruler'	options.txt	/*'ruler'*
+'rulerformat'	options.txt	/*'rulerformat'*
+'runtimepath'	options.txt	/*'runtimepath'*
+'sb'	options.txt	/*'sb'*
+'sbo'	options.txt	/*'sbo'*
+'sbr'	options.txt	/*'sbr'*
+'sc'	options.txt	/*'sc'*
+'scb'	options.txt	/*'scb'*
+'scr'	options.txt	/*'scr'*
+'scroll'	options.txt	/*'scroll'*
+'scrollbind'	options.txt	/*'scrollbind'*
+'scrolljump'	options.txt	/*'scrolljump'*
+'scrolloff'	options.txt	/*'scrolloff'*
+'scrollopt'	options.txt	/*'scrollopt'*
+'scs'	options.txt	/*'scs'*
+'sect'	options.txt	/*'sect'*
+'sections'	options.txt	/*'sections'*
+'secure'	options.txt	/*'secure'*
+'sel'	options.txt	/*'sel'*
+'selection'	options.txt	/*'selection'*
+'selectmode'	options.txt	/*'selectmode'*
+'sessionoptions'	options.txt	/*'sessionoptions'*
+'sft'	options.txt	/*'sft'*
+'sh'	options.txt	/*'sh'*
+'shcf'	options.txt	/*'shcf'*
+'shell'	options.txt	/*'shell'*
+'shellcmdflag'	options.txt	/*'shellcmdflag'*
+'shellpipe'	options.txt	/*'shellpipe'*
+'shellquote'	options.txt	/*'shellquote'*
+'shellredir'	options.txt	/*'shellredir'*
+'shellslash'	options.txt	/*'shellslash'*
+'shelltype'	options.txt	/*'shelltype'*
+'shellxquote'	options.txt	/*'shellxquote'*
+'shiftround'	options.txt	/*'shiftround'*
+'shiftwidth'	options.txt	/*'shiftwidth'*
+'shm'	options.txt	/*'shm'*
+'shortmess'	options.txt	/*'shortmess'*
+'shortname'	options.txt	/*'shortname'*
+'showbreak'	options.txt	/*'showbreak'*
+'showcmd'	options.txt	/*'showcmd'*
+'showfulltag'	options.txt	/*'showfulltag'*
+'showmatch'	options.txt	/*'showmatch'*
+'showmode'	options.txt	/*'showmode'*
+'shq'	options.txt	/*'shq'*
+'si'	options.txt	/*'si'*
+'sidescroll'	options.txt	/*'sidescroll'*
+'sidescrolloff'	options.txt	/*'sidescrolloff'*
+'siso'	options.txt	/*'siso'*
+'sj'	options.txt	/*'sj'*
+'slm'	options.txt	/*'slm'*
+'slow'	vi_diff.txt	/*'slow'*
+'slowopen'	vi_diff.txt	/*'slowopen'*
+'sm'	options.txt	/*'sm'*
+'smartcase'	options.txt	/*'smartcase'*
+'smartindent'	options.txt	/*'smartindent'*
+'smarttab'	options.txt	/*'smarttab'*
+'smd'	options.txt	/*'smd'*
+'sn'	options.txt	/*'sn'*
+'so'	options.txt	/*'so'*
+'softtabstop'	options.txt	/*'softtabstop'*
+'sol'	options.txt	/*'sol'*
+'sourceany'	vi_diff.txt	/*'sourceany'*
+'sp'	options.txt	/*'sp'*
+'splitbelow'	options.txt	/*'splitbelow'*
+'splitright'	options.txt	/*'splitright'*
+'spr'	options.txt	/*'spr'*
+'sr'	options.txt	/*'sr'*
+'srr'	options.txt	/*'srr'*
+'ss'	options.txt	/*'ss'*
+'ssl'	options.txt	/*'ssl'*
+'ssop'	options.txt	/*'ssop'*
+'st'	options.txt	/*'st'*
+'sta'	options.txt	/*'sta'*
+'startofline'	options.txt	/*'startofline'*
+'statusline'	options.txt	/*'statusline'*
+'stl'	options.txt	/*'stl'*
+'sts'	options.txt	/*'sts'*
+'su'	options.txt	/*'su'*
+'sua'	options.txt	/*'sua'*
+'suffixes'	options.txt	/*'suffixes'*
+'suffixesadd'	options.txt	/*'suffixesadd'*
+'sw'	options.txt	/*'sw'*
+'swapfile'	options.txt	/*'swapfile'*
+'swapsync'	options.txt	/*'swapsync'*
+'swb'	options.txt	/*'swb'*
+'swf'	options.txt	/*'swf'*
+'switchbuf'	options.txt	/*'switchbuf'*
+'sws'	options.txt	/*'sws'*
+'sxq'	options.txt	/*'sxq'*
+'syn'	options.txt	/*'syn'*
+'syntax'	options.txt	/*'syntax'*
+'t_#2'	term.txt	/*'t_#2'*
+'t_#4'	term.txt	/*'t_#4'*
+'t_%1'	term.txt	/*'t_%1'*
+'t_%i'	term.txt	/*'t_%i'*
+'t_&8'	term.txt	/*'t_&8'*
+'t_@7'	term.txt	/*'t_@7'*
+'t_AB'	term.txt	/*'t_AB'*
+'t_AF'	term.txt	/*'t_AF'*
+'t_AL'	term.txt	/*'t_AL'*
+'t_CS'	term.txt	/*'t_CS'*
+'t_CV'	term.txt	/*'t_CV'*
+'t_Co'	term.txt	/*'t_Co'*
+'t_DL'	term.txt	/*'t_DL'*
+'t_F1'	term.txt	/*'t_F1'*
+'t_F2'	term.txt	/*'t_F2'*
+'t_F3'	term.txt	/*'t_F3'*
+'t_F4'	term.txt	/*'t_F4'*
+'t_F5'	term.txt	/*'t_F5'*
+'t_F6'	term.txt	/*'t_F6'*
+'t_F7'	term.txt	/*'t_F7'*
+'t_F8'	term.txt	/*'t_F8'*
+'t_F9'	term.txt	/*'t_F9'*
+'t_IE'	term.txt	/*'t_IE'*
+'t_IS'	term.txt	/*'t_IS'*
+'t_K1'	term.txt	/*'t_K1'*
+'t_K3'	term.txt	/*'t_K3'*
+'t_K4'	term.txt	/*'t_K4'*
+'t_K5'	term.txt	/*'t_K5'*
+'t_K6'	term.txt	/*'t_K6'*
+'t_K7'	term.txt	/*'t_K7'*
+'t_K8'	term.txt	/*'t_K8'*
+'t_K9'	term.txt	/*'t_K9'*
+'t_KA'	term.txt	/*'t_KA'*
+'t_KB'	term.txt	/*'t_KB'*
+'t_KC'	term.txt	/*'t_KC'*
+'t_KD'	term.txt	/*'t_KD'*
+'t_KE'	term.txt	/*'t_KE'*
+'t_KF'	term.txt	/*'t_KF'*
+'t_KG'	term.txt	/*'t_KG'*
+'t_KH'	term.txt	/*'t_KH'*
+'t_KI'	term.txt	/*'t_KI'*
+'t_KJ'	term.txt	/*'t_KJ'*
+'t_KK'	term.txt	/*'t_KK'*
+'t_KL'	term.txt	/*'t_KL'*
+'t_RI'	term.txt	/*'t_RI'*
+'t_RV'	term.txt	/*'t_RV'*
+'t_Sb'	term.txt	/*'t_Sb'*
+'t_Sf'	term.txt	/*'t_Sf'*
+'t_WP'	term.txt	/*'t_WP'*
+'t_WS'	term.txt	/*'t_WS'*
+'t_ZH'	term.txt	/*'t_ZH'*
+'t_ZR'	term.txt	/*'t_ZR'*
+'t_al'	term.txt	/*'t_al'*
+'t_bc'	term.txt	/*'t_bc'*
+'t_cd'	term.txt	/*'t_cd'*
+'t_ce'	term.txt	/*'t_ce'*
+'t_cl'	term.txt	/*'t_cl'*
+'t_cm'	term.txt	/*'t_cm'*
+'t_cs'	term.txt	/*'t_cs'*
+'t_da'	term.txt	/*'t_da'*
+'t_db'	term.txt	/*'t_db'*
+'t_dl'	term.txt	/*'t_dl'*
+'t_fs'	term.txt	/*'t_fs'*
+'t_k1'	term.txt	/*'t_k1'*
+'t_k2'	term.txt	/*'t_k2'*
+'t_k3'	term.txt	/*'t_k3'*
+'t_k4'	term.txt	/*'t_k4'*
+'t_k5'	term.txt	/*'t_k5'*
+'t_k6'	term.txt	/*'t_k6'*
+'t_k7'	term.txt	/*'t_k7'*
+'t_k8'	term.txt	/*'t_k8'*
+'t_k9'	term.txt	/*'t_k9'*
+'t_k;'	term.txt	/*'t_k;'*
+'t_kB'	term.txt	/*'t_kB'*
+'t_kD'	term.txt	/*'t_kD'*
+'t_kI'	term.txt	/*'t_kI'*
+'t_kN'	term.txt	/*'t_kN'*
+'t_kP'	term.txt	/*'t_kP'*
+'t_kb'	term.txt	/*'t_kb'*
+'t_kd'	term.txt	/*'t_kd'*
+'t_ke'	term.txt	/*'t_ke'*
+'t_kh'	term.txt	/*'t_kh'*
+'t_kl'	term.txt	/*'t_kl'*
+'t_kr'	term.txt	/*'t_kr'*
+'t_ks'	term.txt	/*'t_ks'*
+'t_ku'	term.txt	/*'t_ku'*
+'t_le'	term.txt	/*'t_le'*
+'t_mb'	term.txt	/*'t_mb'*
+'t_md'	term.txt	/*'t_md'*
+'t_me'	term.txt	/*'t_me'*
+'t_mr'	term.txt	/*'t_mr'*
+'t_ms'	term.txt	/*'t_ms'*
+'t_nd'	term.txt	/*'t_nd'*
+'t_op'	term.txt	/*'t_op'*
+'t_se'	term.txt	/*'t_se'*
+'t_so'	term.txt	/*'t_so'*
+'t_sr'	term.txt	/*'t_sr'*
+'t_star7'	term.txt	/*'t_star7'*
+'t_te'	term.txt	/*'t_te'*
+'t_ti'	term.txt	/*'t_ti'*
+'t_ts'	term.txt	/*'t_ts'*
+'t_ue'	term.txt	/*'t_ue'*
+'t_us'	term.txt	/*'t_us'*
+'t_ut'	term.txt	/*'t_ut'*
+'t_vb'	term.txt	/*'t_vb'*
+'t_ve'	term.txt	/*'t_ve'*
+'t_vi'	term.txt	/*'t_vi'*
+'t_vs'	term.txt	/*'t_vs'*
+'t_xs'	term.txt	/*'t_xs'*
+'ta'	options.txt	/*'ta'*
+'tabstop'	options.txt	/*'tabstop'*
+'tag'	options.txt	/*'tag'*
+'tagbsearch'	options.txt	/*'tagbsearch'*
+'taglength'	options.txt	/*'taglength'*
+'tagrelative'	options.txt	/*'tagrelative'*
+'tags'	options.txt	/*'tags'*
+'tagstack'	options.txt	/*'tagstack'*
+'tb'	options.txt	/*'tb'*
+'tbi'	options.txt	/*'tbi'*
+'tbidi'	options.txt	/*'tbidi'*
+'tbis'	options.txt	/*'tbis'*
+'tbs'	options.txt	/*'tbs'*
+'tenc'	options.txt	/*'tenc'*
+'term'	options.txt	/*'term'*
+'termbidi'	options.txt	/*'termbidi'*
+'termencoding'	options.txt	/*'termencoding'*
+'terse'	options.txt	/*'terse'*
+'textauto'	options.txt	/*'textauto'*
+'textmode'	options.txt	/*'textmode'*
+'textwidth'	options.txt	/*'textwidth'*
+'tf'	options.txt	/*'tf'*
+'tgst'	options.txt	/*'tgst'*
+'thesaurus'	options.txt	/*'thesaurus'*
+'tildeop'	options.txt	/*'tildeop'*
+'timeout'	options.txt	/*'timeout'*
+'timeoutlen'	options.txt	/*'timeoutlen'*
+'title'	options.txt	/*'title'*
+'titlelen'	options.txt	/*'titlelen'*
+'titleold'	options.txt	/*'titleold'*
+'titlestring'	options.txt	/*'titlestring'*
+'tl'	options.txt	/*'tl'*
+'tm'	options.txt	/*'tm'*
+'to'	options.txt	/*'to'*
+'toolbar'	options.txt	/*'toolbar'*
+'toolbariconsize'	options.txt	/*'toolbariconsize'*
+'top'	options.txt	/*'top'*
+'tr'	options.txt	/*'tr'*
+'ts'	options.txt	/*'ts'*
+'tsl'	options.txt	/*'tsl'*
+'tsr'	options.txt	/*'tsr'*
+'ttimeout'	options.txt	/*'ttimeout'*
+'ttimeoutlen'	options.txt	/*'ttimeoutlen'*
+'ttm'	options.txt	/*'ttm'*
+'tty'	options.txt	/*'tty'*
+'ttybuiltin'	options.txt	/*'ttybuiltin'*
+'ttyfast'	options.txt	/*'ttyfast'*
+'ttym'	options.txt	/*'ttym'*
+'ttymouse'	options.txt	/*'ttymouse'*
+'ttyscroll'	options.txt	/*'ttyscroll'*
+'ttytype'	options.txt	/*'ttytype'*
+'tw'	options.txt	/*'tw'*
+'tx'	options.txt	/*'tx'*
+'uc'	options.txt	/*'uc'*
+'ul'	options.txt	/*'ul'*
+'undolevels'	options.txt	/*'undolevels'*
+'updatecount'	options.txt	/*'updatecount'*
+'updatetime'	options.txt	/*'updatetime'*
+'ut'	options.txt	/*'ut'*
+'vb'	options.txt	/*'vb'*
+'vbs'	options.txt	/*'vbs'*
+'vdir'	options.txt	/*'vdir'*
+'ve'	options.txt	/*'ve'*
+'verbose'	options.txt	/*'verbose'*
+'vi'	options.txt	/*'vi'*
+'viewdir'	options.txt	/*'viewdir'*
+'viewoptions'	options.txt	/*'viewoptions'*
+'viminfo'	options.txt	/*'viminfo'*
+'virtualedit'	options.txt	/*'virtualedit'*
+'visualbell'	options.txt	/*'visualbell'*
+'vop'	options.txt	/*'vop'*
+'w1200'	vi_diff.txt	/*'w1200'*
+'w300'	vi_diff.txt	/*'w300'*
+'w9600'	vi_diff.txt	/*'w9600'*
+'wa'	options.txt	/*'wa'*
+'wak'	options.txt	/*'wak'*
+'warn'	options.txt	/*'warn'*
+'wb'	options.txt	/*'wb'*
+'wc'	options.txt	/*'wc'*
+'wcm'	options.txt	/*'wcm'*
+'wd'	options.txt	/*'wd'*
+'weirdinvert'	options.txt	/*'weirdinvert'*
+'wfh'	options.txt	/*'wfh'*
+'wh'	options.txt	/*'wh'*
+'whichwrap'	options.txt	/*'whichwrap'*
+'wi'	vi_diff.txt	/*'wi'*
+'wig'	options.txt	/*'wig'*
+'wildchar'	options.txt	/*'wildchar'*
+'wildcharm'	options.txt	/*'wildcharm'*
+'wildignore'	options.txt	/*'wildignore'*
+'wildmenu'	options.txt	/*'wildmenu'*
+'wildmode'	options.txt	/*'wildmode'*
+'wim'	options.txt	/*'wim'*
+'winaltkeys'	options.txt	/*'winaltkeys'*
+'window'	vi_diff.txt	/*'window'*
+'winfixheight'	options.txt	/*'winfixheight'*
+'winheight'	options.txt	/*'winheight'*
+'winminheight'	options.txt	/*'winminheight'*
+'winminwidth'	options.txt	/*'winminwidth'*
+'winwidth'	options.txt	/*'winwidth'*
+'wiv'	options.txt	/*'wiv'*
+'wiw'	options.txt	/*'wiw'*
+'wm'	options.txt	/*'wm'*
+'wmh'	options.txt	/*'wmh'*
+'wmnu'	options.txt	/*'wmnu'*
+'wmw'	options.txt	/*'wmw'*
+'wrap'	options.txt	/*'wrap'*
+'wrapmargin'	options.txt	/*'wrapmargin'*
+'wrapscan'	options.txt	/*'wrapscan'*
+'write'	options.txt	/*'write'*
+'writeany'	options.txt	/*'writeany'*
+'writebackup'	options.txt	/*'writebackup'*
+'writedelay'	options.txt	/*'writedelay'*
+'ws'	options.txt	/*'ws'*
+'ww'	options.txt	/*'ww'*
+'{	motion.txt	/*'{*
+'}	motion.txt	/*'}*
+(	motion.txt	/*(*
+)	motion.txt	/*)*
++	motion.txt	/*+*
+++bin	editing.txt	/*++bin*
+++builtin_terms	various.txt	/*++builtin_terms*
+++enc	editing.txt	/*++enc*
+++ff	editing.txt	/*++ff*
+++nobin	editing.txt	/*++nobin*
+++opt	editing.txt	/*++opt*
++ARP	various.txt	/*+ARP*
++GUI_Athena	various.txt	/*+GUI_Athena*
++GUI_BeOS	various.txt	/*+GUI_BeOS*
++GUI_GTK	various.txt	/*+GUI_GTK*
++GUI_Motif	various.txt	/*+GUI_Motif*
++GUI_Photon	various.txt	/*+GUI_Photon*
++GUI_neXtaw	various.txt	/*+GUI_neXtaw*
++X11	various.txt	/*+X11*
++arabic	various.txt	/*+arabic*
++autocmd	various.txt	/*+autocmd*
++balloon_eval	various.txt	/*+balloon_eval*
++browse	various.txt	/*+browse*
++builtin_terms	various.txt	/*+builtin_terms*
++byte_offset	various.txt	/*+byte_offset*
++cindent	various.txt	/*+cindent*
++clientserver	various.txt	/*+clientserver*
++clipboard	various.txt	/*+clipboard*
++cmd	editing.txt	/*+cmd*
++cmdline_compl	various.txt	/*+cmdline_compl*
++cmdline_hist	various.txt	/*+cmdline_hist*
++cmdline_info	various.txt	/*+cmdline_info*
++comments	various.txt	/*+comments*
++cryptv	various.txt	/*+cryptv*
++cscope	various.txt	/*+cscope*
++dialog_con	various.txt	/*+dialog_con*
++dialog_con_gui	various.txt	/*+dialog_con_gui*
++dialog_gui	various.txt	/*+dialog_gui*
++diff	various.txt	/*+diff*
++digraphs	various.txt	/*+digraphs*
++dnd	various.txt	/*+dnd*
++emacs_tags	various.txt	/*+emacs_tags*
++eval	various.txt	/*+eval*
++ex_extra	various.txt	/*+ex_extra*
++extra_search	various.txt	/*+extra_search*
++farsi	various.txt	/*+farsi*
++feature-list	various.txt	/*+feature-list*
++file_in_path	various.txt	/*+file_in_path*
++find_in_path	various.txt	/*+find_in_path*
++folding	various.txt	/*+folding*
++footer	various.txt	/*+footer*
++fork	various.txt	/*+fork*
++gettext	various.txt	/*+gettext*
++hangul_input	various.txt	/*+hangul_input*
++iconv	various.txt	/*+iconv*
++insert_expand	various.txt	/*+insert_expand*
++jumplist	various.txt	/*+jumplist*
++keymap	various.txt	/*+keymap*
++langmap	various.txt	/*+langmap*
++libcall	various.txt	/*+libcall*
++linebreak	various.txt	/*+linebreak*
++lispindent	various.txt	/*+lispindent*
++listcmds	various.txt	/*+listcmds*
++localmap	various.txt	/*+localmap*
++menu	various.txt	/*+menu*
++mksession	various.txt	/*+mksession*
++modify_fname	various.txt	/*+modify_fname*
++mouse	various.txt	/*+mouse*
++mouse_dec	various.txt	/*+mouse_dec*
++mouse_gpm	various.txt	/*+mouse_gpm*
++mouse_netterm	various.txt	/*+mouse_netterm*
++mouse_pterm	various.txt	/*+mouse_pterm*
++mouse_xterm	various.txt	/*+mouse_xterm*
++mouseshape	various.txt	/*+mouseshape*
++multi_byte	various.txt	/*+multi_byte*
++multi_byte_ime	various.txt	/*+multi_byte_ime*
++multi_lang	various.txt	/*+multi_lang*
++netbeans_intg	various.txt	/*+netbeans_intg*
++ole	various.txt	/*+ole*
++osfiletype	various.txt	/*+osfiletype*
++path_extra	various.txt	/*+path_extra*
++perl	various.txt	/*+perl*
++postscript	various.txt	/*+postscript*
++printer	various.txt	/*+printer*
++python	various.txt	/*+python*
++quickfix	various.txt	/*+quickfix*
++rightleft	various.txt	/*+rightleft*
++ruby	various.txt	/*+ruby*
++scrollbind	various.txt	/*+scrollbind*
++signs	various.txt	/*+signs*
++smartindent	various.txt	/*+smartindent*
++sniff	various.txt	/*+sniff*
++statusline	various.txt	/*+statusline*
++sun_workshop	various.txt	/*+sun_workshop*
++syntax	various.txt	/*+syntax*
++system()	various.txt	/*+system()*
++tag_any_white	various.txt	/*+tag_any_white*
++tag_binary	various.txt	/*+tag_binary*
++tag_old_static	various.txt	/*+tag_old_static*
++tcl	various.txt	/*+tcl*
++terminfo	various.txt	/*+terminfo*
++termresponse	various.txt	/*+termresponse*
++textobjects	various.txt	/*+textobjects*
++tgetent	various.txt	/*+tgetent*
++title	various.txt	/*+title*
++toolbar	various.txt	/*+toolbar*
++user_commands	various.txt	/*+user_commands*
++vertsplit	various.txt	/*+vertsplit*
++viminfo	various.txt	/*+viminfo*
++virtualedit	various.txt	/*+virtualedit*
++visual	various.txt	/*+visual*
++visualextra	various.txt	/*+visualextra*
++vreplace	various.txt	/*+vreplace*
++wildignore	various.txt	/*+wildignore*
++wildmenu	various.txt	/*+wildmenu*
++windows	various.txt	/*+windows*
++writebackup	various.txt	/*+writebackup*
++xfontset	various.txt	/*+xfontset*
++xim	various.txt	/*+xim*
++xsmp	various.txt	/*+xsmp*
++xsmp_interact	various.txt	/*+xsmp_interact*
++xterm_clipboard	various.txt	/*+xterm_clipboard*
++xterm_save	various.txt	/*+xterm_save*
+,	motion.txt	/*,*
+-	motion.txt	/*-*
+-+	starting.txt	/*-+*
+-+/	starting.txt	/*-+\/*
+-+c	starting.txt	/*-+c*
+-+reverse	gui_x11.txt	/*-+reverse*
+-+rv	gui_x11.txt	/*-+rv*
+--	starting.txt	/*--*
+---	starting.txt	/*---*
+--cmd	starting.txt	/*--cmd*
+--echo-wid	starting.txt	/*--echo-wid*
+--help	starting.txt	/*--help*
+--literal	starting.txt	/*--literal*
+--nofork	starting.txt	/*--nofork*
+--noplugin	starting.txt	/*--noplugin*
+--remote	remote.txt	/*--remote*
+--remote-expr	remote.txt	/*--remote-expr*
+--remote-send	remote.txt	/*--remote-send*
+--remote-silent	remote.txt	/*--remote-silent*
+--remote-wait	remote.txt	/*--remote-wait*
+--remote-wait-silent	remote.txt	/*--remote-wait-silent*
+--role	starting.txt	/*--role*
+--serverlist	remote.txt	/*--serverlist*
+--servername	remote.txt	/*--servername*
+--socketid	starting.txt	/*--socketid*
+--version	starting.txt	/*--version*
+-A	starting.txt	/*-A*
+-C	starting.txt	/*-C*
+-D	starting.txt	/*-D*
+-E	starting.txt	/*-E*
+-F	starting.txt	/*-F*
+-H	starting.txt	/*-H*
+-L	starting.txt	/*-L*
+-M	starting.txt	/*-M*
+-N	starting.txt	/*-N*
+-O	starting.txt	/*-O*
+-P	starting.txt	/*-P*
+-R	starting.txt	/*-R*
+-S	starting.txt	/*-S*
+-T	starting.txt	/*-T*
+-U	starting.txt	/*-U*
+-V	starting.txt	/*-V*
+-W	starting.txt	/*-W*
+-X	starting.txt	/*-X*
+-Z	starting.txt	/*-Z*
+-b	starting.txt	/*-b*
+-background	gui_x11.txt	/*-background*
+-bg	gui_x11.txt	/*-bg*
+-boldfont	gui_x11.txt	/*-boldfont*
+-borderwidth	gui_x11.txt	/*-borderwidth*
+-bw	gui_x11.txt	/*-bw*
+-c	starting.txt	/*-c*
+-d	starting.txt	/*-d*
+-dev	starting.txt	/*-dev*
+-display	gui_x11.txt	/*-display*
+-e	starting.txt	/*-e*
+-f	starting.txt	/*-f*
+-fg	gui_x11.txt	/*-fg*
+-file	starting.txt	/*-file*
+-fn	gui_x11.txt	/*-fn*
+-font	gui_x11.txt	/*-font*
+-foreground	gui_x11.txt	/*-foreground*
+-g	starting.txt	/*-g*
+-geom	gui_x11.txt	/*-geom*
+-geometry	gui_x11.txt	/*-geometry*
+-geometry-example	gui_x11.txt	/*-geometry-example*
+-gui	gui_x11.txt	/*-gui*
+-h	starting.txt	/*-h*
+-i	starting.txt	/*-i*
+-iconic	gui_x11.txt	/*-iconic*
+-italicfont	gui_x11.txt	/*-italicfont*
+-l	starting.txt	/*-l*
+-m	starting.txt	/*-m*
+-menufont	gui_x11.txt	/*-menufont*
+-menufontset	gui_x11.txt	/*-menufontset*
+-menuheight	gui_x11.txt	/*-menuheight*
+-mf	gui_x11.txt	/*-mf*
+-mh	gui_x11.txt	/*-mh*
+-n	starting.txt	/*-n*
+-nb	starting.txt	/*-nb*
+-o	starting.txt	/*-o*
+-q	starting.txt	/*-q*
+-qf	starting.txt	/*-qf*
+-r	starting.txt	/*-r*
+-register	if_ole.txt	/*-register*
+-reverse	gui_x11.txt	/*-reverse*
+-rv	gui_x11.txt	/*-rv*
+-s	starting.txt	/*-s*
+-s-ex	starting.txt	/*-s-ex*
+-scrollbarwidth	gui_x11.txt	/*-scrollbarwidth*
+-silent	if_ole.txt	/*-silent*
+-sw	gui_x11.txt	/*-sw*
+-t	starting.txt	/*-t*
+-tag	starting.txt	/*-tag*
+-u	starting.txt	/*-u*
+-ul	gui_x11.txt	/*-ul*
+-unregister	if_ole.txt	/*-unregister*
+-v	starting.txt	/*-v*
+-vim	starting.txt	/*-vim*
+-w	starting.txt	/*-w*
+-w_nr	starting.txt	/*-w_nr*
+-x	starting.txt	/*-x*
+-xrm	gui_x11.txt	/*-xrm*
+-y	starting.txt	/*-y*
+.	repeat.txt	/*.*
+.Xdefaults	gui_x11.txt	/*.Xdefaults*
+.exrc	starting.txt	/*.exrc*
+.gvimrc	gui.txt	/*.gvimrc*
+.vimrc	starting.txt	/*.vimrc*
+/	pattern.txt	/*\/*
+/$	pattern.txt	/*\/$*
+/.	pattern.txt	/*\/.*
+//;	pattern.txt	/*\/\/;*
+/<CR>	pattern.txt	/*\/<CR>*
+/[]	pattern.txt	/*\/[]*
+/\	pattern.txt	/*\/\\*
+/\$	pattern.txt	/*\/\\$*
+/\%#	pattern.txt	/*\/\\%#*
+/\%$	pattern.txt	/*\/\\%$*
+/\%(	pattern.txt	/*\/\\%(*
+/\%(\)	pattern.txt	/*\/\\%(\\)*
+/\%<c	pattern.txt	/*\/\\%<c*
+/\%<l	pattern.txt	/*\/\\%<l*
+/\%<v	pattern.txt	/*\/\\%<v*
+/\%>c	pattern.txt	/*\/\\%>c*
+/\%>l	pattern.txt	/*\/\\%>l*
+/\%>v	pattern.txt	/*\/\\%>v*
+/\%[]	pattern.txt	/*\/\\%[]*
+/\%^	pattern.txt	/*\/\\%^*
+/\%c	pattern.txt	/*\/\\%c*
+/\%l	pattern.txt	/*\/\\%l*
+/\%v	pattern.txt	/*\/\\%v*
+/\&	pattern.txt	/*\/\\&*
+/\(	pattern.txt	/*\/\\(*
+/\(\)	pattern.txt	/*\/\\(\\)*
+/\)	pattern.txt	/*\/\\)*
+/\+	pattern.txt	/*\/\\+*
+/\.	pattern.txt	/*\/\\.*
+/\1	pattern.txt	/*\/\\1*
+/\2	pattern.txt	/*\/\\2*
+/\3	pattern.txt	/*\/\\3*
+/\9	pattern.txt	/*\/\\9*
+/\<	pattern.txt	/*\/\\<*
+/\=	pattern.txt	/*\/\\=*
+/\>	pattern.txt	/*\/\\>*
+/\?	pattern.txt	/*\/\\?*
+/\@!	pattern.txt	/*\/\\@!*
+/\@<!	pattern.txt	/*\/\\@<!*
+/\@<=	pattern.txt	/*\/\\@<=*
+/\@=	pattern.txt	/*\/\\@=*
+/\@>	pattern.txt	/*\/\\@>*
+/\A	pattern.txt	/*\/\\A*
+/\C	pattern.txt	/*\/\\C*
+/\D	pattern.txt	/*\/\\D*
+/\F	pattern.txt	/*\/\\F*
+/\H	pattern.txt	/*\/\\H*
+/\I	pattern.txt	/*\/\\I*
+/\K	pattern.txt	/*\/\\K*
+/\L	pattern.txt	/*\/\\L*
+/\M	pattern.txt	/*\/\\M*
+/\O	pattern.txt	/*\/\\O*
+/\P	pattern.txt	/*\/\\P*
+/\S	pattern.txt	/*\/\\S*
+/\U	pattern.txt	/*\/\\U*
+/\V	pattern.txt	/*\/\\V*
+/\W	pattern.txt	/*\/\\W*
+/\X	pattern.txt	/*\/\\X*
+/\Z	pattern.txt	/*\/\\Z*
+/\[]	pattern.txt	/*\/\\[]*
+/\\	pattern.txt	/*\/\\\\*
+/\]	pattern.txt	/*\/\\]*
+/\^	pattern.txt	/*\/\\^*
+/\_	pattern.txt	/*\/\\_*
+/\_$	pattern.txt	/*\/\\_$*
+/\_.	pattern.txt	/*\/\\_.*
+/\_A	pattern.txt	/*\/\\_A*
+/\_D	pattern.txt	/*\/\\_D*
+/\_F	pattern.txt	/*\/\\_F*
+/\_H	pattern.txt	/*\/\\_H*
+/\_I	pattern.txt	/*\/\\_I*
+/\_K	pattern.txt	/*\/\\_K*
+/\_L	pattern.txt	/*\/\\_L*
+/\_O	pattern.txt	/*\/\\_O*
+/\_P	pattern.txt	/*\/\\_P*
+/\_S	pattern.txt	/*\/\\_S*
+/\_U	pattern.txt	/*\/\\_U*
+/\_W	pattern.txt	/*\/\\_W*
+/\_X	pattern.txt	/*\/\\_X*
+/\_[]	pattern.txt	/*\/\\_[]*
+/\_^	pattern.txt	/*\/\\_^*
+/\_a	pattern.txt	/*\/\\_a*
+/\_d	pattern.txt	/*\/\\_d*
+/\_f	pattern.txt	/*\/\\_f*
+/\_h	pattern.txt	/*\/\\_h*
+/\_i	pattern.txt	/*\/\\_i*
+/\_k	pattern.txt	/*\/\\_k*
+/\_l	pattern.txt	/*\/\\_l*
+/\_o	pattern.txt	/*\/\\_o*
+/\_p	pattern.txt	/*\/\\_p*
+/\_s	pattern.txt	/*\/\\_s*
+/\_u	pattern.txt	/*\/\\_u*
+/\_w	pattern.txt	/*\/\\_w*
+/\_x	pattern.txt	/*\/\\_x*
+/\a	pattern.txt	/*\/\\a*
+/\b	pattern.txt	/*\/\\b*
+/\bar	pattern.txt	/*\/\\bar*
+/\c	pattern.txt	/*\/\\c*
+/\d	pattern.txt	/*\/\\d*
+/\e	pattern.txt	/*\/\\e*
+/\f	pattern.txt	/*\/\\f*
+/\h	pattern.txt	/*\/\\h*
+/\i	pattern.txt	/*\/\\i*
+/\k	pattern.txt	/*\/\\k*
+/\l	pattern.txt	/*\/\\l*
+/\m	pattern.txt	/*\/\\m*
+/\n	pattern.txt	/*\/\\n*
+/\o	pattern.txt	/*\/\\o*
+/\p	pattern.txt	/*\/\\p*
+/\r	pattern.txt	/*\/\\r*
+/\s	pattern.txt	/*\/\\s*
+/\star	pattern.txt	/*\/\\star*
+/\t	pattern.txt	/*\/\\t*
+/\u	pattern.txt	/*\/\\u*
+/\v	pattern.txt	/*\/\\v*
+/\w	pattern.txt	/*\/\\w*
+/\x	pattern.txt	/*\/\\x*
+/\z(	syntax.txt	/*\/\\z(*
+/\z(\)	syntax.txt	/*\/\\z(\\)*
+/\z1	syntax.txt	/*\/\\z1*
+/\z2	syntax.txt	/*\/\\z2*
+/\z3	syntax.txt	/*\/\\z3*
+/\z4	syntax.txt	/*\/\\z4*
+/\z5	syntax.txt	/*\/\\z5*
+/\z6	syntax.txt	/*\/\\z6*
+/\z7	syntax.txt	/*\/\\z7*
+/\z8	syntax.txt	/*\/\\z8*
+/\z9	syntax.txt	/*\/\\z9*
+/\ze	pattern.txt	/*\/\\ze*
+/\zs	pattern.txt	/*\/\\zs*
+/\{	pattern.txt	/*\/\\{*
+/\{-	pattern.txt	/*\/\\{-*
+/\~	pattern.txt	/*\/\\~*
+/^	pattern.txt	/*\/^*
+/atom	pattern.txt	/*\/atom*
+/bar	pattern.txt	/*\/bar*
+/branch	pattern.txt	/*\/branch*
+/collection	pattern.txt	/*\/collection*
+/concat	pattern.txt	/*\/concat*
+/dyn	various.txt	/*\/dyn*
+/ignorecase	pattern.txt	/*\/ignorecase*
+/magic	pattern.txt	/*\/magic*
+/multi	pattern.txt	/*\/multi*
+/ordinary-atom	pattern.txt	/*\/ordinary-atom*
+/pattern	pattern.txt	/*\/pattern*
+/piece	pattern.txt	/*\/piece*
+/star	pattern.txt	/*\/star*
+/zero-width	pattern.txt	/*\/zero-width*
+/~	pattern.txt	/*\/~*
+0	motion.txt	/*0*
+01.1	usr_01.txt	/*01.1*
+01.2	usr_01.txt	/*01.2*
+01.3	usr_01.txt	/*01.3*
+01.4	usr_01.txt	/*01.4*
+02.1	usr_02.txt	/*02.1*
+02.2	usr_02.txt	/*02.2*
+02.3	usr_02.txt	/*02.3*
+02.4	usr_02.txt	/*02.4*
+02.5	usr_02.txt	/*02.5*
+02.6	usr_02.txt	/*02.6*
+02.7	usr_02.txt	/*02.7*
+02.8	usr_02.txt	/*02.8*
+03.1	usr_03.txt	/*03.1*
+03.10	usr_03.txt	/*03.10*
+03.2	usr_03.txt	/*03.2*
+03.3	usr_03.txt	/*03.3*
+03.4	usr_03.txt	/*03.4*
+03.5	usr_03.txt	/*03.5*
+03.6	usr_03.txt	/*03.6*
+03.7	usr_03.txt	/*03.7*
+03.8	usr_03.txt	/*03.8*
+03.9	usr_03.txt	/*03.9*
+04.1	usr_04.txt	/*04.1*
+04.10	usr_04.txt	/*04.10*
+04.2	usr_04.txt	/*04.2*
+04.3	usr_04.txt	/*04.3*
+04.4	usr_04.txt	/*04.4*
+04.5	usr_04.txt	/*04.5*
+04.6	usr_04.txt	/*04.6*
+04.7	usr_04.txt	/*04.7*
+04.8	usr_04.txt	/*04.8*
+04.9	usr_04.txt	/*04.9*
+05.1	usr_05.txt	/*05.1*
+05.2	usr_05.txt	/*05.2*
+05.3	usr_05.txt	/*05.3*
+05.4	usr_05.txt	/*05.4*
+05.5	usr_05.txt	/*05.5*
+05.6	usr_05.txt	/*05.6*
+05.7	usr_05.txt	/*05.7*
+06.1	usr_06.txt	/*06.1*
+06.2	usr_06.txt	/*06.2*
+06.3	usr_06.txt	/*06.3*
+06.4	usr_06.txt	/*06.4*
+06.5	usr_06.txt	/*06.5*
+06.6	usr_06.txt	/*06.6*
+07.1	usr_07.txt	/*07.1*
+07.2	usr_07.txt	/*07.2*
+07.3	usr_07.txt	/*07.3*
+07.4	usr_07.txt	/*07.4*
+07.5	usr_07.txt	/*07.5*
+07.6	usr_07.txt	/*07.6*
+07.7	usr_07.txt	/*07.7*
+08.1	usr_08.txt	/*08.1*
+08.2	usr_08.txt	/*08.2*
+08.3	usr_08.txt	/*08.3*
+08.4	usr_08.txt	/*08.4*
+08.5	usr_08.txt	/*08.5*
+08.6	usr_08.txt	/*08.6*
+08.7	usr_08.txt	/*08.7*
+08.8	usr_08.txt	/*08.8*
+09.1	usr_09.txt	/*09.1*
+09.2	usr_09.txt	/*09.2*
+09.3	usr_09.txt	/*09.3*
+09.4	usr_09.txt	/*09.4*
+10.1	usr_10.txt	/*10.1*
+10.2	usr_10.txt	/*10.2*
+10.3	usr_10.txt	/*10.3*
+10.4	usr_10.txt	/*10.4*
+10.5	usr_10.txt	/*10.5*
+10.6	usr_10.txt	/*10.6*
+10.7	usr_10.txt	/*10.7*
+10.8	usr_10.txt	/*10.8*
+10.9	usr_10.txt	/*10.9*
+11.1	usr_11.txt	/*11.1*
+11.2	usr_11.txt	/*11.2*
+11.3	usr_11.txt	/*11.3*
+11.4	usr_11.txt	/*11.4*
+12.1	usr_12.txt	/*12.1*
+12.2	usr_12.txt	/*12.2*
+12.3	usr_12.txt	/*12.3*
+12.4	usr_12.txt	/*12.4*
+12.5	usr_12.txt	/*12.5*
+12.6	usr_12.txt	/*12.6*
+12.7	usr_12.txt	/*12.7*
+12.8	usr_12.txt	/*12.8*
+20.1	usr_20.txt	/*20.1*
+20.2	usr_20.txt	/*20.2*
+20.3	usr_20.txt	/*20.3*
+20.4	usr_20.txt	/*20.4*
+20.5	usr_20.txt	/*20.5*
+21.1	usr_21.txt	/*21.1*
+21.2	usr_21.txt	/*21.2*
+21.3	usr_21.txt	/*21.3*
+21.4	usr_21.txt	/*21.4*
+21.5	usr_21.txt	/*21.5*
+21.6	usr_21.txt	/*21.6*
+22.1	usr_22.txt	/*22.1*
+22.2	usr_22.txt	/*22.2*
+22.3	usr_22.txt	/*22.3*
+22.4	usr_22.txt	/*22.4*
+23.1	usr_23.txt	/*23.1*
+23.2	usr_23.txt	/*23.2*
+23.3	usr_23.txt	/*23.3*
+23.4	usr_23.txt	/*23.4*
+23.5	usr_23.txt	/*23.5*
+24.1	usr_24.txt	/*24.1*
+24.10	usr_24.txt	/*24.10*
+24.2	usr_24.txt	/*24.2*
+24.3	usr_24.txt	/*24.3*
+24.4	usr_24.txt	/*24.4*
+24.5	usr_24.txt	/*24.5*
+24.6	usr_24.txt	/*24.6*
+24.7	usr_24.txt	/*24.7*
+24.8	usr_24.txt	/*24.8*
+24.9	usr_24.txt	/*24.9*
+25.1	usr_25.txt	/*25.1*
+25.2	usr_25.txt	/*25.2*
+25.3	usr_25.txt	/*25.3*
+25.4	usr_25.txt	/*25.4*
+25.5	usr_25.txt	/*25.5*
+26.1	usr_26.txt	/*26.1*
+26.2	usr_26.txt	/*26.2*
+26.3	usr_26.txt	/*26.3*
+26.4	usr_26.txt	/*26.4*
+27.1	usr_27.txt	/*27.1*
+27.2	usr_27.txt	/*27.2*
+27.3	usr_27.txt	/*27.3*
+27.4	usr_27.txt	/*27.4*
+27.5	usr_27.txt	/*27.5*
+27.6	usr_27.txt	/*27.6*
+27.7	usr_27.txt	/*27.7*
+27.8	usr_27.txt	/*27.8*
+27.9	usr_27.txt	/*27.9*
+28.1	usr_28.txt	/*28.1*
+28.10	usr_28.txt	/*28.10*
+28.2	usr_28.txt	/*28.2*
+28.3	usr_28.txt	/*28.3*
+28.4	usr_28.txt	/*28.4*
+28.5	usr_28.txt	/*28.5*
+28.6	usr_28.txt	/*28.6*
+28.7	usr_28.txt	/*28.7*
+28.8	usr_28.txt	/*28.8*
+28.9	usr_28.txt	/*28.9*
+29.1	usr_29.txt	/*29.1*
+29.2	usr_29.txt	/*29.2*
+29.3	usr_29.txt	/*29.3*
+29.4	usr_29.txt	/*29.4*
+29.5	usr_29.txt	/*29.5*
+2html.vim	syntax.txt	/*2html.vim*
+30.1	usr_30.txt	/*30.1*
+30.2	usr_30.txt	/*30.2*
+30.3	usr_30.txt	/*30.3*
+30.4	usr_30.txt	/*30.4*
+30.5	usr_30.txt	/*30.5*
+30.6	usr_30.txt	/*30.6*
+31.1	usr_31.txt	/*31.1*
+31.2	usr_31.txt	/*31.2*
+31.3	usr_31.txt	/*31.3*
+31.4	usr_31.txt	/*31.4*
+31.5	usr_31.txt	/*31.5*
+40.1	usr_40.txt	/*40.1*
+40.2	usr_40.txt	/*40.2*
+40.3	usr_40.txt	/*40.3*
+41.1	usr_41.txt	/*41.1*
+41.10	usr_41.txt	/*41.10*
+41.11	usr_41.txt	/*41.11*
+41.12	usr_41.txt	/*41.12*
+41.2	usr_41.txt	/*41.2*
+41.3	usr_41.txt	/*41.3*
+41.4	usr_41.txt	/*41.4*
+41.5	usr_41.txt	/*41.5*
+41.6	usr_41.txt	/*41.6*
+41.7	usr_41.txt	/*41.7*
+41.8	usr_41.txt	/*41.8*
+41.9	usr_41.txt	/*41.9*
+42	usr_42.txt	/*42*
+42.1	usr_42.txt	/*42.1*
+42.2	usr_42.txt	/*42.2*
+42.3	usr_42.txt	/*42.3*
+42.4	usr_42.txt	/*42.4*
+43.1	usr_43.txt	/*43.1*
+43.2	usr_43.txt	/*43.2*
+44.1	usr_44.txt	/*44.1*
+44.10	usr_44.txt	/*44.10*
+44.11	usr_44.txt	/*44.11*
+44.12	usr_44.txt	/*44.12*
+44.2	usr_44.txt	/*44.2*
+44.3	usr_44.txt	/*44.3*
+44.4	usr_44.txt	/*44.4*
+44.5	usr_44.txt	/*44.5*
+44.6	usr_44.txt	/*44.6*
+44.7	usr_44.txt	/*44.7*
+44.8	usr_44.txt	/*44.8*
+44.9	usr_44.txt	/*44.9*
+45.1	usr_45.txt	/*45.1*
+45.2	usr_45.txt	/*45.2*
+45.3	usr_45.txt	/*45.3*
+45.4	usr_45.txt	/*45.4*
+45.5	usr_45.txt	/*45.5*
+90.1	usr_90.txt	/*90.1*
+90.2	usr_90.txt	/*90.2*
+90.3	usr_90.txt	/*90.3*
+90.4	usr_90.txt	/*90.4*
+90.5	usr_90.txt	/*90.5*
+:	cmdline.txt	/*:*
+:!	various.txt	/*:!*
+:!!	various.txt	/*:!!*
+:!cmd	various.txt	/*:!cmd*
+:!start	os_win32.txt	/*:!start*
+:#	various.txt	/*:#*
+:$	cmdline.txt	/*:$*
+:%	cmdline.txt	/*:%*
+:&	change.txt	/*:&*
+:'	cmdline.txt	/*:'*
+:,	cmdline.txt	/*:,*
+:.	cmdline.txt	/*:.*
+:/	cmdline.txt	/*:\/*
+::.	cmdline.txt	/*::.*
+::8	cmdline.txt	/*::8*
+::e	cmdline.txt	/*::e*
+::gs	cmdline.txt	/*::gs*
+::h	cmdline.txt	/*::h*
+::p	cmdline.txt	/*::p*
+::r	cmdline.txt	/*::r*
+::s	cmdline.txt	/*::s*
+::t	cmdline.txt	/*::t*
+::~	cmdline.txt	/*::~*
+:;	cmdline.txt	/*:;*
+:<	change.txt	/*:<*
+:<abuf>	cmdline.txt	/*:<abuf>*
+:<afile>	cmdline.txt	/*:<afile>*
+:<amatch>	cmdline.txt	/*:<amatch>*
+:<cWORD>	cmdline.txt	/*:<cWORD>*
+:<cfile>	cmdline.txt	/*:<cfile>*
+:<cword>	cmdline.txt	/*:<cword>*
+:<sfile>	cmdline.txt	/*:<sfile>*
+:=	various.txt	/*:=*
+:>	change.txt	/*:>*
+:?	cmdline.txt	/*:?*
+:@	repeat.txt	/*:@*
+:@:	repeat.txt	/*:@:*
+:@@	repeat.txt	/*:@@*
+:Explore	pi_expl.txt	/*:Explore*
+:Man	filetype.txt	/*:Man*
+:N	editing.txt	/*:N*
+:Next	editing.txt	/*:Next*
+:P	various.txt	/*:P*
+:Print	various.txt	/*:Print*
+:Sexplore	pi_expl.txt	/*:Sexplore*
+:TOhtml	syntax.txt	/*:TOhtml*
+:X	editing.txt	/*:X*
+:\bar	cmdline.txt	/*:\\bar*
+:_!	cmdline.txt	/*:_!*
+:_#	cmdline.txt	/*:_#*
+:_##	cmdline.txt	/*:_##*
+:_%	cmdline.txt	/*:_%*
+:_%:	cmdline.txt	/*:_%:*
+:_%<	cmdline.txt	/*:_%<*
+:a	insert.txt	/*:a*
+:ab	map.txt	/*:ab*
+:abbreviate	map.txt	/*:abbreviate*
+:abbreviate-<buffer>	map.txt	/*:abbreviate-<buffer>*
+:abbreviate-local	map.txt	/*:abbreviate-local*
+:abc	map.txt	/*:abc*
+:abclear	map.txt	/*:abclear*
+:abo	windows.txt	/*:abo*
+:aboveleft	windows.txt	/*:aboveleft*
+:al	windows.txt	/*:al*
+:all	windows.txt	/*:all*
+:am	gui.txt	/*:am*
+:amenu	gui.txt	/*:amenu*
+:an	gui.txt	/*:an*
+:anoremenu	gui.txt	/*:anoremenu*
+:append	insert.txt	/*:append*
+:ar	editing.txt	/*:ar*
+:arga	editing.txt	/*:arga*
+:argadd	editing.txt	/*:argadd*
+:argd	editing.txt	/*:argd*
+:argdelete	editing.txt	/*:argdelete*
+:argdo	editing.txt	/*:argdo*
+:arge	editing.txt	/*:arge*
+:argedit	editing.txt	/*:argedit*
+:argglobal	editing.txt	/*:argglobal*
+:arglocal	editing.txt	/*:arglocal*
+:args	editing.txt	/*:args*
+:args_f	editing.txt	/*:args_f*
+:args_f!	editing.txt	/*:args_f!*
+:argu	editing.txt	/*:argu*
+:argument	editing.txt	/*:argument*
+:as	various.txt	/*:as*
+:ascii	various.txt	/*:ascii*
+:au	autocmd.txt	/*:au*
+:aug	autocmd.txt	/*:aug*
+:augroup	autocmd.txt	/*:augroup*
+:augroup-delete	autocmd.txt	/*:augroup-delete*
+:aun	gui.txt	/*:aun*
+:aunmenu	gui.txt	/*:aunmenu*
+:autocmd	autocmd.txt	/*:autocmd*
+:b	windows.txt	/*:b*
+:bN	windows.txt	/*:bN*
+:bNext	windows.txt	/*:bNext*
+:ba	windows.txt	/*:ba*
+:bad	windows.txt	/*:bad*
+:badd	windows.txt	/*:badd*
+:ball	windows.txt	/*:ball*
+:bar	cmdline.txt	/*:bar*
+:bd	windows.txt	/*:bd*
+:bdel	windows.txt	/*:bdel*
+:bdelete	windows.txt	/*:bdelete*
+:be	gui.txt	/*:be*
+:behave	gui.txt	/*:behave*
+:bel	windows.txt	/*:bel*
+:belowright	windows.txt	/*:belowright*
+:bf	windows.txt	/*:bf*
+:bfirst	windows.txt	/*:bfirst*
+:bl	windows.txt	/*:bl*
+:blast	windows.txt	/*:blast*
+:bm	windows.txt	/*:bm*
+:bmodified	windows.txt	/*:bmodified*
+:bn	windows.txt	/*:bn*
+:bnext	windows.txt	/*:bnext*
+:botright	windows.txt	/*:botright*
+:bp	windows.txt	/*:bp*
+:bprevious	windows.txt	/*:bprevious*
+:br	windows.txt	/*:br*
+:brea	eval.txt	/*:brea*
+:break	eval.txt	/*:break*
+:breaka	repeat.txt	/*:breaka*
+:breakadd	repeat.txt	/*:breakadd*
+:breakd	repeat.txt	/*:breakd*
+:breakdel	repeat.txt	/*:breakdel*
+:breakl	repeat.txt	/*:breakl*
+:breaklist	repeat.txt	/*:breaklist*
+:brewind	windows.txt	/*:brewind*
+:bro	editing.txt	/*:bro*
+:browse	editing.txt	/*:browse*
+:browse-set	options.txt	/*:browse-set*
+:bu	windows.txt	/*:bu*
+:buf	windows.txt	/*:buf*
+:bufdo	windows.txt	/*:bufdo*
+:buffer	windows.txt	/*:buffer*
+:buffer-!	windows.txt	/*:buffer-!*
+:buffers	windows.txt	/*:buffers*
+:bun	windows.txt	/*:bun*
+:bunload	windows.txt	/*:bunload*
+:bw	windows.txt	/*:bw*
+:bwipe	windows.txt	/*:bwipe*
+:bwipeout	windows.txt	/*:bwipeout*
+:c	change.txt	/*:c*
+:cN	quickfix.txt	/*:cN*
+:cNext	quickfix.txt	/*:cNext*
+:cNf	quickfix.txt	/*:cNf*
+:cNfile	quickfix.txt	/*:cNfile*
+:ca	map.txt	/*:ca*
+:cabbrev	map.txt	/*:cabbrev*
+:cabc	map.txt	/*:cabc*
+:cabclear	map.txt	/*:cabclear*
+:cal	eval.txt	/*:cal*
+:call	eval.txt	/*:call*
+:cat	eval.txt	/*:cat*
+:catch	eval.txt	/*:catch*
+:cc	quickfix.txt	/*:cc*
+:ccl	quickfix.txt	/*:ccl*
+:cclose	quickfix.txt	/*:cclose*
+:cd	editing.txt	/*:cd*
+:cd-	editing.txt	/*:cd-*
+:ce	change.txt	/*:ce*
+:center	change.txt	/*:center*
+:cf	quickfix.txt	/*:cf*
+:cfile	quickfix.txt	/*:cfile*
+:cfir	quickfix.txt	/*:cfir*
+:cfirst	quickfix.txt	/*:cfirst*
+:cg	quickfix.txt	/*:cg*
+:cgetfile	quickfix.txt	/*:cgetfile*
+:ch	change.txt	/*:ch*
+:change	change.txt	/*:change*
+:changes	motion.txt	/*:changes*
+:chd	editing.txt	/*:chd*
+:chdir	editing.txt	/*:chdir*
+:che	tagsrch.txt	/*:che*
+:checkpath	tagsrch.txt	/*:checkpath*
+:checkt	editing.txt	/*:checkt*
+:checktime	editing.txt	/*:checktime*
+:cl	quickfix.txt	/*:cl*
+:cla	quickfix.txt	/*:cla*
+:clast	quickfix.txt	/*:clast*
+:clist	quickfix.txt	/*:clist*
+:clo	windows.txt	/*:clo*
+:close	windows.txt	/*:close*
+:cm	map.txt	/*:cm*
+:cmap	map.txt	/*:cmap*
+:cmap_l	map.txt	/*:cmap_l*
+:cmapc	map.txt	/*:cmapc*
+:cmapclear	map.txt	/*:cmapclear*
+:cme	gui.txt	/*:cme*
+:cmenu	gui.txt	/*:cmenu*
+:cn	quickfix.txt	/*:cn*
+:cnew	quickfix.txt	/*:cnew*
+:cnewer	quickfix.txt	/*:cnewer*
+:cnext	quickfix.txt	/*:cnext*
+:cnf	quickfix.txt	/*:cnf*
+:cnfile	quickfix.txt	/*:cnfile*
+:cno	map.txt	/*:cno*
+:cnorea	map.txt	/*:cnorea*
+:cnoreabbrev	map.txt	/*:cnoreabbrev*
+:cnoremap	map.txt	/*:cnoremap*
+:cnoreme	gui.txt	/*:cnoreme*
+:cnoremenu	gui.txt	/*:cnoremenu*
+:co	change.txt	/*:co*
+:col	quickfix.txt	/*:col*
+:colder	quickfix.txt	/*:colder*
+:colo	syntax.txt	/*:colo*
+:colorscheme	syntax.txt	/*:colorscheme*
+:com	map.txt	/*:com*
+:comc	map.txt	/*:comc*
+:comclear	map.txt	/*:comclear*
+:command	map.txt	/*:command*
+:command-completion	map.txt	/*:command-completion*
+:command-completion-custom	map.txt	/*:command-completion-custom*
+:comment	eval.txt	/*:comment*
+:comp	quickfix.txt	/*:comp*
+:compiler	quickfix.txt	/*:compiler*
+:con	eval.txt	/*:con*
+:conf	editing.txt	/*:conf*
+:confirm	editing.txt	/*:confirm*
+:continue	eval.txt	/*:continue*
+:cope	quickfix.txt	/*:cope*
+:copen	quickfix.txt	/*:copen*
+:copy	change.txt	/*:copy*
+:cp	quickfix.txt	/*:cp*
+:cpf	quickfix.txt	/*:cpf*
+:cpfile	quickfix.txt	/*:cpfile*
+:cprevious	quickfix.txt	/*:cprevious*
+:cq	quickfix.txt	/*:cq*
+:cquit	quickfix.txt	/*:cquit*
+:cr	quickfix.txt	/*:cr*
+:crewind	quickfix.txt	/*:crewind*
+:cs	if_cscop.txt	/*:cs*
+:cscope	if_cscop.txt	/*:cscope*
+:cstag	if_cscop.txt	/*:cstag*
+:cu	map.txt	/*:cu*
+:cuna	map.txt	/*:cuna*
+:cunabbrev	map.txt	/*:cunabbrev*
+:cunmap	map.txt	/*:cunmap*
+:cunme	gui.txt	/*:cunme*
+:cunmenu	gui.txt	/*:cunmenu*
+:cw	quickfix.txt	/*:cw*
+:cwindow	quickfix.txt	/*:cwindow*
+:d	change.txt	/*:d*
+:de	change.txt	/*:de*
+:debug	repeat.txt	/*:debug*
+:debugg	repeat.txt	/*:debugg*
+:debuggreedy	repeat.txt	/*:debuggreedy*
+:del	change.txt	/*:del*
+:delc	map.txt	/*:delc*
+:delcommand	map.txt	/*:delcommand*
+:delcr	todo.txt	/*:delcr*
+:delete	change.txt	/*:delete*
+:delf	eval.txt	/*:delf*
+:delfunction	eval.txt	/*:delfunction*
+:di	change.txt	/*:di*
+:diffg	diff.txt	/*:diffg*
+:diffget	diff.txt	/*:diffget*
+:diffp	diff.txt	/*:diffp*
+:diffpatch	diff.txt	/*:diffpatch*
+:diffpu	diff.txt	/*:diffpu*
+:diffput	diff.txt	/*:diffput*
+:diffs	diff.txt	/*:diffs*
+:diffsplit	diff.txt	/*:diffsplit*
+:difft	diff.txt	/*:difft*
+:diffthis	diff.txt	/*:diffthis*
+:diffu	diff.txt	/*:diffu*
+:diffupdate	diff.txt	/*:diffupdate*
+:dig	digraph.txt	/*:dig*
+:digraphs	digraph.txt	/*:digraphs*
+:display	change.txt	/*:display*
+:dj	tagsrch.txt	/*:dj*
+:djump	tagsrch.txt	/*:djump*
+:dl	tagsrch.txt	/*:dl*
+:dlist	tagsrch.txt	/*:dlist*
+:do	autocmd.txt	/*:do*
+:doau	autocmd.txt	/*:doau*
+:doautoa	autocmd.txt	/*:doautoa*
+:doautoall	autocmd.txt	/*:doautoall*
+:doautocmd	autocmd.txt	/*:doautocmd*
+:dr	windows.txt	/*:dr*
+:drop	windows.txt	/*:drop*
+:ds	tagsrch.txt	/*:ds*
+:dsearch	tagsrch.txt	/*:dsearch*
+:dsp	tagsrch.txt	/*:dsp*
+:dsplit	tagsrch.txt	/*:dsplit*
+:e	editing.txt	/*:e*
+:ec	eval.txt	/*:ec*
+:echo	eval.txt	/*:echo*
+:echoe	eval.txt	/*:echoe*
+:echoerr	eval.txt	/*:echoerr*
+:echoh	eval.txt	/*:echoh*
+:echohl	eval.txt	/*:echohl*
+:echom	eval.txt	/*:echom*
+:echomsg	eval.txt	/*:echomsg*
+:echon	eval.txt	/*:echon*
+:edit	editing.txt	/*:edit*
+:edit!	editing.txt	/*:edit!*
+:edit!_f	editing.txt	/*:edit!_f*
+:edit_f	editing.txt	/*:edit_f*
+:el	eval.txt	/*:el*
+:else	eval.txt	/*:else*
+:elsei	eval.txt	/*:elsei*
+:elseif	eval.txt	/*:elseif*
+:em	gui.txt	/*:em*
+:emenu	gui.txt	/*:emenu*
+:en	eval.txt	/*:en*
+:endf	eval.txt	/*:endf*
+:endfunction	eval.txt	/*:endfunction*
+:endif	eval.txt	/*:endif*
+:endt	eval.txt	/*:endt*
+:endtry	eval.txt	/*:endtry*
+:endw	eval.txt	/*:endw*
+:endwhile	eval.txt	/*:endwhile*
+:ene	editing.txt	/*:ene*
+:ene!	editing.txt	/*:ene!*
+:enew	editing.txt	/*:enew*
+:enew!	editing.txt	/*:enew!*
+:ex	editing.txt	/*:ex*
+:exe	eval.txt	/*:exe*
+:execute	eval.txt	/*:execute*
+:exi	editing.txt	/*:exi*
+:exit	editing.txt	/*:exit*
+:f	editing.txt	/*:f*
+:fi	editing.txt	/*:fi*
+:file	editing.txt	/*:file*
+:file_f	editing.txt	/*:file_f*
+:filename	editing.txt	/*:filename*
+:files	windows.txt	/*:files*
+:filet	filetype.txt	/*:filet*
+:filetype	filetype.txt	/*:filetype*
+:filetype-indent-off	filetype.txt	/*:filetype-indent-off*
+:filetype-indent-on	filetype.txt	/*:filetype-indent-on*
+:filetype-off	filetype.txt	/*:filetype-off*
+:filetype-overview	filetype.txt	/*:filetype-overview*
+:filetype-plugin-off	filetype.txt	/*:filetype-plugin-off*
+:filetype-plugin-on	filetype.txt	/*:filetype-plugin-on*
+:fin	editing.txt	/*:fin*
+:fina	eval.txt	/*:fina*
+:finally	eval.txt	/*:finally*
+:find	editing.txt	/*:find*
+:fini	repeat.txt	/*:fini*
+:finish	repeat.txt	/*:finish*
+:fir	editing.txt	/*:fir*
+:first	editing.txt	/*:first*
+:fix	options.txt	/*:fix*
+:fixdel	options.txt	/*:fixdel*
+:fo	fold.txt	/*:fo*
+:fold	fold.txt	/*:fold*
+:foldc	fold.txt	/*:foldc*
+:foldclose	fold.txt	/*:foldclose*
+:foldd	fold.txt	/*:foldd*
+:folddoc	fold.txt	/*:folddoc*
+:folddoclosed	fold.txt	/*:folddoclosed*
+:folddoopen	fold.txt	/*:folddoopen*
+:foldo	fold.txt	/*:foldo*
+:foldopen	fold.txt	/*:foldopen*
+:fu	eval.txt	/*:fu*
+:function	eval.txt	/*:function*
+:g	repeat.txt	/*:g*
+:global	repeat.txt	/*:global*
+:go	motion.txt	/*:go*
+:goto	motion.txt	/*:goto*
+:gr	quickfix.txt	/*:gr*
+:grep	quickfix.txt	/*:grep*
+:grepa	quickfix.txt	/*:grepa*
+:grepadd	quickfix.txt	/*:grepadd*
+:gu	gui_x11.txt	/*:gu*
+:gui	gui_x11.txt	/*:gui*
+:gv	gui_x11.txt	/*:gv*
+:gvim	gui_x11.txt	/*:gvim*
+:h	various.txt	/*:h*
+:ha	various.txt	/*:ha*
+:hardcopy	various.txt	/*:hardcopy*
+:help	various.txt	/*:help*
+:helpf	various.txt	/*:helpf*
+:helpfind	various.txt	/*:helpfind*
+:helpg	various.txt	/*:helpg*
+:helpgrep	various.txt	/*:helpgrep*
+:helpt	various.txt	/*:helpt*
+:helptags	various.txt	/*:helptags*
+:hi	syntax.txt	/*:hi*
+:hi-default	syntax.txt	/*:hi-default*
+:hi-link	syntax.txt	/*:hi-link*
+:hi-normal	syntax.txt	/*:hi-normal*
+:hi-normal-cterm	syntax.txt	/*:hi-normal-cterm*
+:hide	windows.txt	/*:hide*
+:highlight	syntax.txt	/*:highlight*
+:highlight-default	syntax.txt	/*:highlight-default*
+:highlight-link	syntax.txt	/*:highlight-link*
+:highlight-normal	syntax.txt	/*:highlight-normal*
+:history	cmdline.txt	/*:history*
+:history-indexing	cmdline.txt	/*:history-indexing*
+:i	insert.txt	/*:i*
+:ia	map.txt	/*:ia*
+:iabbrev	map.txt	/*:iabbrev*
+:iabc	map.txt	/*:iabc*
+:iabclear	map.txt	/*:iabclear*
+:if	eval.txt	/*:if*
+:ij	tagsrch.txt	/*:ij*
+:ijump	tagsrch.txt	/*:ijump*
+:il	tagsrch.txt	/*:il*
+:ilist	tagsrch.txt	/*:ilist*
+:im	map.txt	/*:im*
+:imap	map.txt	/*:imap*
+:imap_l	map.txt	/*:imap_l*
+:imapc	map.txt	/*:imapc*
+:imapclear	map.txt	/*:imapclear*
+:ime	gui.txt	/*:ime*
+:imenu	gui.txt	/*:imenu*
+:in	insert.txt	/*:in*
+:index	index.txt	/*:index*
+:ino	map.txt	/*:ino*
+:inorea	map.txt	/*:inorea*
+:inoreabbrev	map.txt	/*:inoreabbrev*
+:inoremap	map.txt	/*:inoremap*
+:inoreme	gui.txt	/*:inoreme*
+:inoremenu	gui.txt	/*:inoremenu*
+:insert	insert.txt	/*:insert*
+:intro	starting.txt	/*:intro*
+:is	tagsrch.txt	/*:is*
+:isearch	tagsrch.txt	/*:isearch*
+:isp	tagsrch.txt	/*:isp*
+:isplit	tagsrch.txt	/*:isplit*
+:iu	map.txt	/*:iu*
+:iuna	map.txt	/*:iuna*
+:iunabbrev	map.txt	/*:iunabbrev*
+:iunmap	map.txt	/*:iunmap*
+:iunme	gui.txt	/*:iunme*
+:iunmenu	gui.txt	/*:iunmenu*
+:j	change.txt	/*:j*
+:join	change.txt	/*:join*
+:ju	motion.txt	/*:ju*
+:jumps	motion.txt	/*:jumps*
+:k	motion.txt	/*:k*
+:kee	motion.txt	/*:kee*
+:keepj	motion.txt	/*:keepj*
+:keepjumps	motion.txt	/*:keepjumps*
+:keepmarks	motion.txt	/*:keepmarks*
+:l	various.txt	/*:l*
+:la	editing.txt	/*:la*
+:lan	mlang.txt	/*:lan*
+:lang	mlang.txt	/*:lang*
+:language	mlang.txt	/*:language*
+:last	editing.txt	/*:last*
+:lc	editing.txt	/*:lc*
+:lcd	editing.txt	/*:lcd*
+:lch	editing.txt	/*:lch*
+:lchdir	editing.txt	/*:lchdir*
+:le	change.txt	/*:le*
+:left	change.txt	/*:left*
+:lefta	windows.txt	/*:lefta*
+:leftabove	windows.txt	/*:leftabove*
+:let	eval.txt	/*:let*
+:let-$	eval.txt	/*:let-$*
+:let-@	eval.txt	/*:let-@*
+:let-environment	eval.txt	/*:let-environment*
+:let-option	eval.txt	/*:let-option*
+:let-register	eval.txt	/*:let-register*
+:let-star	eval.txt	/*:let-star*
+:list	various.txt	/*:list*
+:lm	map.txt	/*:lm*
+:lmap	map.txt	/*:lmap*
+:lmap_l	map.txt	/*:lmap_l*
+:lmapc	map.txt	/*:lmapc*
+:lmapclear	map.txt	/*:lmapclear*
+:ln	map.txt	/*:ln*
+:lnoremap	map.txt	/*:lnoremap*
+:lo	starting.txt	/*:lo*
+:loadk	mbyte.txt	/*:loadk*
+:loadkeymap	mbyte.txt	/*:loadkeymap*
+:loadview	starting.txt	/*:loadview*
+:loc	motion.txt	/*:loc*
+:lockmarks	motion.txt	/*:lockmarks*
+:ls	windows.txt	/*:ls*
+:lu	map.txt	/*:lu*
+:lunmap	map.txt	/*:lunmap*
+:m	change.txt	/*:m*
+:ma	motion.txt	/*:ma*
+:mak	quickfix.txt	/*:mak*
+:make	quickfix.txt	/*:make*
+:make_makeprg	quickfix.txt	/*:make_makeprg*
+:map	map.txt	/*:map*
+:map!	map.txt	/*:map!*
+:map-<buffer>	map.txt	/*:map-<buffer>*
+:map-<script>	map.txt	/*:map-<script>*
+:map-<silent>	map.txt	/*:map-<silent>*
+:map-<unique>	map.txt	/*:map-<unique>*
+:map-local	map.txt	/*:map-local*
+:map-script	map.txt	/*:map-script*
+:map-silent	map.txt	/*:map-silent*
+:map-special-keys	map.txt	/*:map-special-keys*
+:map-undo	map.txt	/*:map-undo*
+:map_l	map.txt	/*:map_l*
+:map_l!	map.txt	/*:map_l!*
+:mapc	map.txt	/*:mapc*
+:mapc!	map.txt	/*:mapc!*
+:mapclear	map.txt	/*:mapclear*
+:mapclear!	map.txt	/*:mapclear!*
+:mark	motion.txt	/*:mark*
+:marks	motion.txt	/*:marks*
+:mat	pattern.txt	/*:mat*
+:match	pattern.txt	/*:match*
+:me	gui.txt	/*:me*
+:menu	gui.txt	/*:menu*
+:menu-<script>	gui.txt	/*:menu-<script>*
+:menu-<silent>	gui.txt	/*:menu-<silent>*
+:menu-disable	gui.txt	/*:menu-disable*
+:menu-enable	gui.txt	/*:menu-enable*
+:menu-script	gui.txt	/*:menu-script*
+:menu-silent	gui.txt	/*:menu-silent*
+:menut	mlang.txt	/*:menut*
+:menutrans	mlang.txt	/*:menutrans*
+:menutranslate	mlang.txt	/*:menutranslate*
+:mes	message.txt	/*:mes*
+:messages	message.txt	/*:messages*
+:mk	starting.txt	/*:mk*
+:mkexrc	starting.txt	/*:mkexrc*
+:mks	starting.txt	/*:mks*
+:mksession	starting.txt	/*:mksession*
+:mkv	starting.txt	/*:mkv*
+:mkvie	starting.txt	/*:mkvie*
+:mkview	starting.txt	/*:mkview*
+:mkvimrc	starting.txt	/*:mkvimrc*
+:mo	change.txt	/*:mo*
+:mod	term.txt	/*:mod*
+:mode	term.txt	/*:mode*
+:move	change.txt	/*:move*
+:n	editing.txt	/*:n*
+:ne	editing.txt	/*:ne*
+:new	windows.txt	/*:new*
+:next	editing.txt	/*:next*
+:next_f	editing.txt	/*:next_f*
+:nm	map.txt	/*:nm*
+:nmap	map.txt	/*:nmap*
+:nmap_l	map.txt	/*:nmap_l*
+:nmapc	map.txt	/*:nmapc*
+:nmapclear	map.txt	/*:nmapclear*
+:nme	gui.txt	/*:nme*
+:nmenu	gui.txt	/*:nmenu*
+:nn	map.txt	/*:nn*
+:nnoremap	map.txt	/*:nnoremap*
+:nnoreme	gui.txt	/*:nnoreme*
+:nnoremenu	gui.txt	/*:nnoremenu*
+:no	map.txt	/*:no*
+:no!	map.txt	/*:no!*
+:noh	pattern.txt	/*:noh*
+:nohlsearch	pattern.txt	/*:nohlsearch*
+:norea	map.txt	/*:norea*
+:noreabbrev	map.txt	/*:noreabbrev*
+:noremap	map.txt	/*:noremap*
+:noremap!	map.txt	/*:noremap!*
+:noreme	gui.txt	/*:noreme*
+:noremenu	gui.txt	/*:noremenu*
+:norm	various.txt	/*:norm*
+:normal	various.txt	/*:normal*
+:normal-range	various.txt	/*:normal-range*
+:nu	various.txt	/*:nu*
+:number	various.txt	/*:number*
+:nun	map.txt	/*:nun*
+:nunmap	map.txt	/*:nunmap*
+:nunme	gui.txt	/*:nunme*
+:nunmenu	gui.txt	/*:nunmenu*
+:o	vi_diff.txt	/*:o*
+:om	map.txt	/*:om*
+:omap	map.txt	/*:omap*
+:omap_l	map.txt	/*:omap_l*
+:omapc	map.txt	/*:omapc*
+:omapclear	map.txt	/*:omapclear*
+:ome	gui.txt	/*:ome*
+:omenu	gui.txt	/*:omenu*
+:on	windows.txt	/*:on*
+:only	windows.txt	/*:only*
+:ono	map.txt	/*:ono*
+:onoremap	map.txt	/*:onoremap*
+:onoreme	gui.txt	/*:onoreme*
+:onoremenu	gui.txt	/*:onoremenu*
+:op	vi_diff.txt	/*:op*
+:open	vi_diff.txt	/*:open*
+:opt	options.txt	/*:opt*
+:options	options.txt	/*:options*
+:ou	map.txt	/*:ou*
+:ounmap	map.txt	/*:ounmap*
+:ounme	gui.txt	/*:ounme*
+:ounmenu	gui.txt	/*:ounmenu*
+:p	various.txt	/*:p*
+:pc	windows.txt	/*:pc*
+:pclose	windows.txt	/*:pclose*
+:pe	if_perl.txt	/*:pe*
+:ped	windows.txt	/*:ped*
+:pedit	windows.txt	/*:pedit*
+:perl	if_perl.txt	/*:perl*
+:perld	if_perl.txt	/*:perld*
+:perldo	if_perl.txt	/*:perldo*
+:po	tagsrch.txt	/*:po*
+:pop	tagsrch.txt	/*:pop*
+:popu	gui.txt	/*:popu*
+:popup	gui.txt	/*:popup*
+:pp	windows.txt	/*:pp*
+:ppop	windows.txt	/*:ppop*
+:pr	various.txt	/*:pr*
+:pre	recover.txt	/*:pre*
+:preserve	recover.txt	/*:preserve*
+:prev	editing.txt	/*:prev*
+:previous	editing.txt	/*:previous*
+:print	various.txt	/*:print*
+:pro	change.txt	/*:pro*
+:promptfind	change.txt	/*:promptfind*
+:promptr	change.txt	/*:promptr*
+:promptrepl	change.txt	/*:promptrepl*
+:ps	windows.txt	/*:ps*
+:psearch	windows.txt	/*:psearch*
+:ptN	tagsrch.txt	/*:ptN*
+:ptNext	tagsrch.txt	/*:ptNext*
+:pta	windows.txt	/*:pta*
+:ptag	windows.txt	/*:ptag*
+:ptf	tagsrch.txt	/*:ptf*
+:ptfirst	tagsrch.txt	/*:ptfirst*
+:ptj	tagsrch.txt	/*:ptj*
+:ptjump	tagsrch.txt	/*:ptjump*
+:ptl	tagsrch.txt	/*:ptl*
+:ptlast	tagsrch.txt	/*:ptlast*
+:ptn	tagsrch.txt	/*:ptn*
+:ptnext	tagsrch.txt	/*:ptnext*
+:ptp	tagsrch.txt	/*:ptp*
+:ptprevious	tagsrch.txt	/*:ptprevious*
+:ptr	tagsrch.txt	/*:ptr*
+:ptrewind	tagsrch.txt	/*:ptrewind*
+:pts	tagsrch.txt	/*:pts*
+:ptselect	tagsrch.txt	/*:ptselect*
+:pu	change.txt	/*:pu*
+:put	change.txt	/*:put*
+:pw	editing.txt	/*:pw*
+:pwd	editing.txt	/*:pwd*
+:py	if_pyth.txt	/*:py*
+:pyf	if_pyth.txt	/*:pyf*
+:pyfile	if_pyth.txt	/*:pyfile*
+:python	if_pyth.txt	/*:python*
+:q	editing.txt	/*:q*
+:qa	editing.txt	/*:qa*
+:qall	editing.txt	/*:qall*
+:quit	editing.txt	/*:quit*
+:quita	editing.txt	/*:quita*
+:quitall	editing.txt	/*:quitall*
+:quote	cmdline.txt	/*:quote*
+:r	insert.txt	/*:r*
+:r!	insert.txt	/*:r!*
+:range	cmdline.txt	/*:range*
+:range!	change.txt	/*:range!*
+:re	insert.txt	/*:re*
+:read	insert.txt	/*:read*
+:read!	insert.txt	/*:read!*
+:rec	recover.txt	/*:rec*
+:recover	recover.txt	/*:recover*
+:red	undo.txt	/*:red*
+:redi	various.txt	/*:redi*
+:redir	various.txt	/*:redir*
+:redo	undo.txt	/*:redo*
+:redr	various.txt	/*:redr*
+:redraw	various.txt	/*:redraw*
+:redraws	various.txt	/*:redraws*
+:redrawstatus	various.txt	/*:redrawstatus*
+:reg	change.txt	/*:reg*
+:registers	change.txt	/*:registers*
+:res	windows.txt	/*:res*
+:resize	windows.txt	/*:resize*
+:ret	change.txt	/*:ret*
+:retab	change.txt	/*:retab*
+:retu	eval.txt	/*:retu*
+:return	eval.txt	/*:return*
+:rew	editing.txt	/*:rew*
+:rewind	editing.txt	/*:rewind*
+:ri	change.txt	/*:ri*
+:right	change.txt	/*:right*
+:rightb	windows.txt	/*:rightb*
+:rightbelow	windows.txt	/*:rightbelow*
+:ru	repeat.txt	/*:ru*
+:rub	if_ruby.txt	/*:rub*
+:ruby	if_ruby.txt	/*:ruby*
+:rubyd	if_ruby.txt	/*:rubyd*
+:rubydo	if_ruby.txt	/*:rubydo*
+:rubyf	if_ruby.txt	/*:rubyf*
+:rubyfile	if_ruby.txt	/*:rubyfile*
+:runtime	repeat.txt	/*:runtime*
+:rv	starting.txt	/*:rv*
+:rviminfo	starting.txt	/*:rviminfo*
+:s	change.txt	/*:s*
+:sN	windows.txt	/*:sN*
+:sNext	windows.txt	/*:sNext*
+:s\=	change.txt	/*:s\\=*
+:s_c	change.txt	/*:s_c*
+:s_flags	change.txt	/*:s_flags*
+:sa	windows.txt	/*:sa*
+:sal	windows.txt	/*:sal*
+:sall	windows.txt	/*:sall*
+:sargument	windows.txt	/*:sargument*
+:sav	editing.txt	/*:sav*
+:saveas	editing.txt	/*:saveas*
+:sb	windows.txt	/*:sb*
+:sbN	windows.txt	/*:sbN*
+:sbNext	windows.txt	/*:sbNext*
+:sba	windows.txt	/*:sba*
+:sball	windows.txt	/*:sball*
+:sbf	windows.txt	/*:sbf*
+:sbfirst	windows.txt	/*:sbfirst*
+:sbl	windows.txt	/*:sbl*
+:sblast	windows.txt	/*:sblast*
+:sbm	windows.txt	/*:sbm*
+:sbmodified	windows.txt	/*:sbmodified*
+:sbn	windows.txt	/*:sbn*
+:sbnext	windows.txt	/*:sbnext*
+:sbp	windows.txt	/*:sbp*
+:sbprevious	windows.txt	/*:sbprevious*
+:sbr	windows.txt	/*:sbr*
+:sbrewind	windows.txt	/*:sbrewind*
+:sbuffer	windows.txt	/*:sbuffer*
+:scrip	repeat.txt	/*:scrip*
+:scripte	repeat.txt	/*:scripte*
+:scriptencoding	repeat.txt	/*:scriptencoding*
+:scriptnames	repeat.txt	/*:scriptnames*
+:scs	if_cscop.txt	/*:scs*
+:scscope	if_cscop.txt	/*:scscope*
+:se	options.txt	/*:se*
+:search-args	tagsrch.txt	/*:search-args*
+:set	options.txt	/*:set*
+:set+=	options.txt	/*:set+=*
+:set-&	options.txt	/*:set-&*
+:set-&vi	options.txt	/*:set-&vi*
+:set-&vim	options.txt	/*:set-&vim*
+:set-=	options.txt	/*:set-=*
+:set-args	options.txt	/*:set-args*
+:set-browse	options.txt	/*:set-browse*
+:set-default	options.txt	/*:set-default*
+:set-termcap	options.txt	/*:set-termcap*
+:set-verbose	options.txt	/*:set-verbose*
+:set^=	options.txt	/*:set^=*
+:set_env	options.txt	/*:set_env*
+:setf	options.txt	/*:setf*
+:setfiletype	options.txt	/*:setfiletype*
+:setg	options.txt	/*:setg*
+:setglobal	options.txt	/*:setglobal*
+:setl	options.txt	/*:setl*
+:setlocal	options.txt	/*:setlocal*
+:sf	windows.txt	/*:sf*
+:sfind	windows.txt	/*:sfind*
+:sfir	windows.txt	/*:sfir*
+:sfirst	windows.txt	/*:sfirst*
+:sh	various.txt	/*:sh*
+:shell	various.txt	/*:shell*
+:si	gui_w32.txt	/*:si*
+:sig	sign.txt	/*:sig*
+:sign	sign.txt	/*:sign*
+:sign-define	sign.txt	/*:sign-define*
+:sign-fname	sign.txt	/*:sign-fname*
+:sign-jump	sign.txt	/*:sign-jump*
+:sign-list	sign.txt	/*:sign-list*
+:sign-place	sign.txt	/*:sign-place*
+:sign-undefine	sign.txt	/*:sign-undefine*
+:sign-unplace	sign.txt	/*:sign-unplace*
+:sil	various.txt	/*:sil*
+:silent	various.txt	/*:silent*
+:simalt	gui_w32.txt	/*:simalt*
+:sl	various.txt	/*:sl*
+:sla	windows.txt	/*:sla*
+:slast	windows.txt	/*:slast*
+:sleep	various.txt	/*:sleep*
+:sm	change.txt	/*:sm*
+:smagic	change.txt	/*:smagic*
+:sn	windows.txt	/*:sn*
+:snext	windows.txt	/*:snext*
+:sni	if_sniff.txt	/*:sni*
+:sniff	if_sniff.txt	/*:sniff*
+:sno	change.txt	/*:sno*
+:snomagic	change.txt	/*:snomagic*
+:so	repeat.txt	/*:so*
+:source	repeat.txt	/*:source*
+:source_crnl	repeat.txt	/*:source_crnl*
+:sp	windows.txt	/*:sp*
+:split	windows.txt	/*:split*
+:split_f	windows.txt	/*:split_f*
+:spr	windows.txt	/*:spr*
+:sprevious	windows.txt	/*:sprevious*
+:sre	windows.txt	/*:sre*
+:srewind	windows.txt	/*:srewind*
+:st	starting.txt	/*:st*
+:sta	windows.txt	/*:sta*
+:stag	windows.txt	/*:stag*
+:star	repeat.txt	/*:star*
+:start	insert.txt	/*:start*
+:startinsert	insert.txt	/*:startinsert*
+:stj	tagsrch.txt	/*:stj*
+:stjump	tagsrch.txt	/*:stjump*
+:stop	starting.txt	/*:stop*
+:stopi	insert.txt	/*:stopi*
+:stopinsert	insert.txt	/*:stopinsert*
+:sts	tagsrch.txt	/*:sts*
+:stselect	tagsrch.txt	/*:stselect*
+:su	change.txt	/*:su*
+:substitute	change.txt	/*:substitute*
+:sun	windows.txt	/*:sun*
+:sunhide	windows.txt	/*:sunhide*
+:sus	starting.txt	/*:sus*
+:suspend	starting.txt	/*:suspend*
+:sv	windows.txt	/*:sv*
+:sview	windows.txt	/*:sview*
+:sw	recover.txt	/*:sw*
+:swapname	recover.txt	/*:swapname*
+:sy	syntax.txt	/*:sy*
+:syn	syntax.txt	/*:syn*
+:syn-arguments	syntax.txt	/*:syn-arguments*
+:syn-case	syntax.txt	/*:syn-case*
+:syn-clear	syntax.txt	/*:syn-clear*
+:syn-cluster	syntax.txt	/*:syn-cluster*
+:syn-contained	syntax.txt	/*:syn-contained*
+:syn-containedin	syntax.txt	/*:syn-containedin*
+:syn-contains	syntax.txt	/*:syn-contains*
+:syn-context	syntax.txt	/*:syn-context*
+:syn-default-override	usr_06.txt	/*:syn-default-override*
+:syn-define	syntax.txt	/*:syn-define*
+:syn-display	syntax.txt	/*:syn-display*
+:syn-enable	syntax.txt	/*:syn-enable*
+:syn-end	syntax.txt	/*:syn-end*
+:syn-excludenl	syntax.txt	/*:syn-excludenl*
+:syn-ext-match	syntax.txt	/*:syn-ext-match*
+:syn-extend	syntax.txt	/*:syn-extend*
+:syn-file-remarks	syntax.txt	/*:syn-file-remarks*
+:syn-files	syntax.txt	/*:syn-files*
+:syn-fold	syntax.txt	/*:syn-fold*
+:syn-include	syntax.txt	/*:syn-include*
+:syn-keepend	syntax.txt	/*:syn-keepend*
+:syn-keyword	syntax.txt	/*:syn-keyword*
+:syn-lc	syntax.txt	/*:syn-lc*
+:syn-leading	syntax.txt	/*:syn-leading*
+:syn-list	syntax.txt	/*:syn-list*
+:syn-manual	usr_06.txt	/*:syn-manual*
+:syn-match	syntax.txt	/*:syn-match*
+:syn-matchgroup	syntax.txt	/*:syn-matchgroup*
+:syn-multi-line	syntax.txt	/*:syn-multi-line*
+:syn-nextgroup	syntax.txt	/*:syn-nextgroup*
+:syn-off	usr_06.txt	/*:syn-off*
+:syn-on	syntax.txt	/*:syn-on*
+:syn-oneline	syntax.txt	/*:syn-oneline*
+:syn-pattern	syntax.txt	/*:syn-pattern*
+:syn-pattern-offset	syntax.txt	/*:syn-pattern-offset*
+:syn-priority	syntax.txt	/*:syn-priority*
+:syn-qstart	syntax.txt	/*:syn-qstart*
+:syn-region	syntax.txt	/*:syn-region*
+:syn-reset	syntax.txt	/*:syn-reset*
+:syn-skip	syntax.txt	/*:syn-skip*
+:syn-skipempty	syntax.txt	/*:syn-skipempty*
+:syn-skipnl	syntax.txt	/*:syn-skipnl*
+:syn-skipwhite	syntax.txt	/*:syn-skipwhite*
+:syn-start	syntax.txt	/*:syn-start*
+:syn-sync	syntax.txt	/*:syn-sync*
+:syn-sync-ccomment	syntax.txt	/*:syn-sync-ccomment*
+:syn-sync-first	syntax.txt	/*:syn-sync-first*
+:syn-sync-fourth	syntax.txt	/*:syn-sync-fourth*
+:syn-sync-linebreaks	syntax.txt	/*:syn-sync-linebreaks*
+:syn-sync-maxlines	syntax.txt	/*:syn-sync-maxlines*
+:syn-sync-minlines	syntax.txt	/*:syn-sync-minlines*
+:syn-sync-second	syntax.txt	/*:syn-sync-second*
+:syn-sync-third	syntax.txt	/*:syn-sync-third*
+:syn-transparent	syntax.txt	/*:syn-transparent*
+:syncbind	scroll.txt	/*:syncbind*
+:syntax	syntax.txt	/*:syntax*
+:syntax-enable	syntax.txt	/*:syntax-enable*
+:syntax-on	syntax.txt	/*:syntax-on*
+:syntax-reset	syntax.txt	/*:syntax-reset*
+:t	change.txt	/*:t*
+:tN	tagsrch.txt	/*:tN*
+:tNext	tagsrch.txt	/*:tNext*
+:ta	tagsrch.txt	/*:ta*
+:tag	tagsrch.txt	/*:tag*
+:tags	tagsrch.txt	/*:tags*
+:tc	if_tcl.txt	/*:tc*
+:tcl	if_tcl.txt	/*:tcl*
+:tcld	if_tcl.txt	/*:tcld*
+:tcldo	if_tcl.txt	/*:tcldo*
+:tclf	if_tcl.txt	/*:tclf*
+:tclfile	if_tcl.txt	/*:tclfile*
+:te	gui_w32.txt	/*:te*
+:tearoff	gui_w32.txt	/*:tearoff*
+:tf	tagsrch.txt	/*:tf*
+:tfirst	tagsrch.txt	/*:tfirst*
+:th	eval.txt	/*:th*
+:throw	eval.txt	/*:throw*
+:tj	tagsrch.txt	/*:tj*
+:tjump	tagsrch.txt	/*:tjump*
+:tl	tagsrch.txt	/*:tl*
+:tlast	tagsrch.txt	/*:tlast*
+:tm	gui.txt	/*:tm*
+:tmenu	gui.txt	/*:tmenu*
+:tn	tagsrch.txt	/*:tn*
+:tnext	tagsrch.txt	/*:tnext*
+:topleft	windows.txt	/*:topleft*
+:tp	tagsrch.txt	/*:tp*
+:tprevious	tagsrch.txt	/*:tprevious*
+:tr	tagsrch.txt	/*:tr*
+:trewind	tagsrch.txt	/*:trewind*
+:try	eval.txt	/*:try*
+:ts	tagsrch.txt	/*:ts*
+:tselect	tagsrch.txt	/*:tselect*
+:tu	gui.txt	/*:tu*
+:tunmenu	gui.txt	/*:tunmenu*
+:u	undo.txt	/*:u*
+:un	undo.txt	/*:un*
+:una	map.txt	/*:una*
+:unabbreviate	map.txt	/*:unabbreviate*
+:undo	undo.txt	/*:undo*
+:unh	windows.txt	/*:unh*
+:unhide	windows.txt	/*:unhide*
+:unl	eval.txt	/*:unl*
+:unlet	eval.txt	/*:unlet*
+:unm	map.txt	/*:unm*
+:unm!	map.txt	/*:unm!*
+:unmap	map.txt	/*:unmap*
+:unmap!	map.txt	/*:unmap!*
+:unme	gui.txt	/*:unme*
+:unmenu	gui.txt	/*:unmenu*
+:unmenu-all	gui.txt	/*:unmenu-all*
+:up	editing.txt	/*:up*
+:update	editing.txt	/*:update*
+:v	repeat.txt	/*:v*
+:ve	various.txt	/*:ve*
+:verb	various.txt	/*:verb*
+:verbose	various.txt	/*:verbose*
+:version	various.txt	/*:version*
+:vert	windows.txt	/*:vert*
+:vertical	windows.txt	/*:vertical*
+:vertical-resize	windows.txt	/*:vertical-resize*
+:vglobal	repeat.txt	/*:vglobal*
+:vi	editing.txt	/*:vi*
+:vie	editing.txt	/*:vie*
+:view	editing.txt	/*:view*
+:visual	editing.txt	/*:visual*
+:visual_example	visual.txt	/*:visual_example*
+:vm	map.txt	/*:vm*
+:vmap	map.txt	/*:vmap*
+:vmap_l	map.txt	/*:vmap_l*
+:vmapc	map.txt	/*:vmapc*
+:vmapclear	map.txt	/*:vmapclear*
+:vme	gui.txt	/*:vme*
+:vmenu	gui.txt	/*:vmenu*
+:vn	map.txt	/*:vn*
+:vne	windows.txt	/*:vne*
+:vnew	windows.txt	/*:vnew*
+:vnoremap	map.txt	/*:vnoremap*
+:vnoreme	gui.txt	/*:vnoreme*
+:vnoremenu	gui.txt	/*:vnoremenu*
+:vs	windows.txt	/*:vs*
+:vsplit	windows.txt	/*:vsplit*
+:vu	map.txt	/*:vu*
+:vunmap	map.txt	/*:vunmap*
+:vunme	gui.txt	/*:vunme*
+:vunmenu	gui.txt	/*:vunmenu*
+:w	editing.txt	/*:w*
+:w!	editing.txt	/*:w!*
+:wN	editing.txt	/*:wN*
+:wNext	editing.txt	/*:wNext*
+:w_a	editing.txt	/*:w_a*
+:w_c	editing.txt	/*:w_c*
+:w_f	editing.txt	/*:w_f*
+:wa	editing.txt	/*:wa*
+:wall	editing.txt	/*:wall*
+:wh	eval.txt	/*:wh*
+:while	eval.txt	/*:while*
+:win	gui.txt	/*:win*
+:winc	windows.txt	/*:winc*
+:wincmd	windows.txt	/*:wincmd*
+:windo	windows.txt	/*:windo*
+:winp	gui.txt	/*:winp*
+:winpos	gui.txt	/*:winpos*
+:winsize	gui.txt	/*:winsize*
+:wn	editing.txt	/*:wn*
+:wnext	editing.txt	/*:wnext*
+:wp	editing.txt	/*:wp*
+:wprevious	editing.txt	/*:wprevious*
+:wq	editing.txt	/*:wq*
+:wqa	editing.txt	/*:wqa*
+:wqall	editing.txt	/*:wqall*
+:write	editing.txt	/*:write*
+:write_a	editing.txt	/*:write_a*
+:write_c	editing.txt	/*:write_c*
+:write_f	editing.txt	/*:write_f*
+:ws	workshop.txt	/*:ws*
+:wsverb	workshop.txt	/*:wsverb*
+:wv	starting.txt	/*:wv*
+:wviminfo	starting.txt	/*:wviminfo*
+:x	editing.txt	/*:x*
+:xa	editing.txt	/*:xa*
+:xall	editing.txt	/*:xall*
+:xit	editing.txt	/*:xit*
+:y	change.txt	/*:y*
+:yank	change.txt	/*:yank*
+:z	various.txt	/*:z*
+:z#	various.txt	/*:z#*
+:~	change.txt	/*:~*
+;	motion.txt	/*;*
+<	change.txt	/*<*
+<2-LeftMouse>	term.txt	/*<2-LeftMouse>*
+<3-LeftMouse>	term.txt	/*<3-LeftMouse>*
+<4-LeftMouse>	term.txt	/*<4-LeftMouse>*
+<<	change.txt	/*<<*
+<>	intro.txt	/*<>*
+<A-	intro.txt	/*<A-*
+<BS>	motion.txt	/*<BS>*
+<Bar>	intro.txt	/*<Bar>*
+<Bslash>	intro.txt	/*<Bslash>*
+<C-	intro.txt	/*<C-*
+<C-Del>	os_dos.txt	/*<C-Del>*
+<C-End>	motion.txt	/*<C-End>*
+<C-Home>	motion.txt	/*<C-Home>*
+<C-Insert>	os_dos.txt	/*<C-Insert>*
+<C-Left>	motion.txt	/*<C-Left>*
+<C-LeftMouse>	tagsrch.txt	/*<C-LeftMouse>*
+<C-MouseDown>	scroll.txt	/*<C-MouseDown>*
+<C-MouseUp>	scroll.txt	/*<C-MouseUp>*
+<C-PageDown>	os_dos.txt	/*<C-PageDown>*
+<C-PageUp>	os_dos.txt	/*<C-PageUp>*
+<C-Right>	motion.txt	/*<C-Right>*
+<C-RightMouse>	tagsrch.txt	/*<C-RightMouse>*
+<CR>	motion.txt	/*<CR>*
+<CSI>	intro.txt	/*<CSI>*
+<Char->	map.txt	/*<Char->*
+<Char>	map.txt	/*<Char>*
+<D-	intro.txt	/*<D-*
+<Del>	change.txt	/*<Del>*
+<Down>	motion.txt	/*<Down>*
+<Drop>	change.txt	/*<Drop>*
+<EOL>	intro.txt	/*<EOL>*
+<End>	motion.txt	/*<End>*
+<Enter>	intro.txt	/*<Enter>*
+<Esc>	intro.txt	/*<Esc>*
+<F10>	term.txt	/*<F10>*
+<F11>	term.txt	/*<F11>*
+<F12>	term.txt	/*<F12>*
+<F13>	term.txt	/*<F13>*
+<F14>	term.txt	/*<F14>*
+<F15>	term.txt	/*<F15>*
+<F16>	term.txt	/*<F16>*
+<F17>	term.txt	/*<F17>*
+<F18>	term.txt	/*<F18>*
+<F19>	term.txt	/*<F19>*
+<F1>	various.txt	/*<F1>*
+<F2>	term.txt	/*<F2>*
+<F3>	term.txt	/*<F3>*
+<F4>	term.txt	/*<F4>*
+<F5>	term.txt	/*<F5>*
+<F6>	term.txt	/*<F6>*
+<F7>	term.txt	/*<F7>*
+<F8>	term.txt	/*<F8>*
+<F9>	term.txt	/*<F9>*
+<Help>	various.txt	/*<Help>*
+<Home>	motion.txt	/*<Home>*
+<Insert>	insert.txt	/*<Insert>*
+<Leader>	map.txt	/*<Leader>*
+<Left>	motion.txt	/*<Left>*
+<LeftDrag>	term.txt	/*<LeftDrag>*
+<LeftMouse>	visual.txt	/*<LeftMouse>*
+<LeftRelease>	visual.txt	/*<LeftRelease>*
+<LocalLeader>	map.txt	/*<LocalLeader>*
+<M-	intro.txt	/*<M-*
+<MiddleDrag>	term.txt	/*<MiddleDrag>*
+<MiddleMouse>	change.txt	/*<MiddleMouse>*
+<MiddleRelease>	term.txt	/*<MiddleRelease>*
+<Mouse>	term.txt	/*<Mouse>*
+<MouseDown>	scroll.txt	/*<MouseDown>*
+<MouseUp>	scroll.txt	/*<MouseUp>*
+<NL>	motion.txt	/*<NL>*
+<Nop>	map.txt	/*<Nop>*
+<Nul>	intro.txt	/*<Nul>*
+<PageDown>	scroll.txt	/*<PageDown>*
+<PageUp>	scroll.txt	/*<PageUp>*
+<Plug>	map.txt	/*<Plug>*
+<Return>	intro.txt	/*<Return>*
+<Right>	motion.txt	/*<Right>*
+<RightDrag>	term.txt	/*<RightDrag>*
+<RightMouse>	visual.txt	/*<RightMouse>*
+<RightRelease>	term.txt	/*<RightRelease>*
+<S-	intro.txt	/*<S-*
+<S-Del>	os_dos.txt	/*<S-Del>*
+<S-Down>	scroll.txt	/*<S-Down>*
+<S-End>	term.txt	/*<S-End>*
+<S-F10>	term.txt	/*<S-F10>*
+<S-F11>	term.txt	/*<S-F11>*
+<S-F12>	term.txt	/*<S-F12>*
+<S-F1>	intro.txt	/*<S-F1>*
+<S-F2>	term.txt	/*<S-F2>*
+<S-F3>	term.txt	/*<S-F3>*
+<S-F4>	term.txt	/*<S-F4>*
+<S-F5>	term.txt	/*<S-F5>*
+<S-F6>	term.txt	/*<S-F6>*
+<S-F7>	term.txt	/*<S-F7>*
+<S-F8>	term.txt	/*<S-F8>*
+<S-F9>	term.txt	/*<S-F9>*
+<S-Home>	term.txt	/*<S-Home>*
+<S-Insert>	os_dos.txt	/*<S-Insert>*
+<S-Left>	motion.txt	/*<S-Left>*
+<S-LeftMouse>	term.txt	/*<S-LeftMouse>*
+<S-MouseDown>	scroll.txt	/*<S-MouseDown>*
+<S-MouseUp>	scroll.txt	/*<S-MouseUp>*
+<S-Right>	motion.txt	/*<S-Right>*
+<S-RightMouse>	term.txt	/*<S-RightMouse>*
+<S-Tab>	term.txt	/*<S-Tab>*
+<S-Up>	scroll.txt	/*<S-Up>*
+<S-xF1>	term.txt	/*<S-xF1>*
+<S-xF2>	term.txt	/*<S-xF2>*
+<S-xF3>	term.txt	/*<S-xF3>*
+<S-xF4>	term.txt	/*<S-xF4>*
+<SID>	map.txt	/*<SID>*
+<SNR>	map.txt	/*<SNR>*
+<Space>	motion.txt	/*<Space>*
+<Tab>	motion.txt	/*<Tab>*
+<Undo>	undo.txt	/*<Undo>*
+<Up>	motion.txt	/*<Up>*
+<abuf>	cmdline.txt	/*<abuf>*
+<afile>	cmdline.txt	/*<afile>*
+<amatch>	cmdline.txt	/*<amatch>*
+<args>	map.txt	/*<args>*
+<bang>	map.txt	/*<bang>*
+<cfile>	cmdline.txt	/*<cfile>*
+<character>	intro.txt	/*<character>*
+<count>	map.txt	/*<count>*
+<k0>	term.txt	/*<k0>*
+<k1>	term.txt	/*<k1>*
+<k2>	term.txt	/*<k2>*
+<k3>	term.txt	/*<k3>*
+<k4>	term.txt	/*<k4>*
+<k5>	term.txt	/*<k5>*
+<k6>	term.txt	/*<k6>*
+<k7>	term.txt	/*<k7>*
+<k8>	term.txt	/*<k8>*
+<k9>	term.txt	/*<k9>*
+<kDivide>	term.txt	/*<kDivide>*
+<kEnd>	motion.txt	/*<kEnd>*
+<kEnter>	term.txt	/*<kEnter>*
+<kHome>	motion.txt	/*<kHome>*
+<kMinus>	term.txt	/*<kMinus>*
+<kMultiply>	term.txt	/*<kMultiply>*
+<kPageDown>	scroll.txt	/*<kPageDown>*
+<kPageUp>	scroll.txt	/*<kPageUp>*
+<kPlus>	term.txt	/*<kPlus>*
+<kPoint>	term.txt	/*<kPoint>*
+<line1>	map.txt	/*<line1>*
+<line2>	map.txt	/*<line2>*
+<lt>	intro.txt	/*<lt>*
+<q-args>	map.txt	/*<q-args>*
+<reg>	map.txt	/*<reg>*
+<register>	map.txt	/*<register>*
+<sfile>	cmdline.txt	/*<sfile>*
+<xCSI>	intro.txt	/*<xCSI>*
+<xEnd>	term.txt	/*<xEnd>*
+<xEnd>-xterm	term.txt	/*<xEnd>-xterm*
+<xF1>	term.txt	/*<xF1>*
+<xF1>-xterm	term.txt	/*<xF1>-xterm*
+<xF2>	term.txt	/*<xF2>*
+<xF2>-xterm	term.txt	/*<xF2>-xterm*
+<xF3>	term.txt	/*<xF3>*
+<xF3>-xterm	term.txt	/*<xF3>-xterm*
+<xF4>	term.txt	/*<xF4>*
+<xF4>-xterm	term.txt	/*<xF4>-xterm*
+<xHome>	term.txt	/*<xHome>*
+<xHome>-xterm	term.txt	/*<xHome>-xterm*
+=	change.txt	/*=*
+==	change.txt	/*==*
+>	change.txt	/*>*
+>>	change.txt	/*>>*
+>cont	repeat.txt	/*>cont*
+>finish	repeat.txt	/*>finish*
+>interrupt	repeat.txt	/*>interrupt*
+>next	repeat.txt	/*>next*
+>quit	repeat.txt	/*>quit*
+>step	repeat.txt	/*>step*
+?	pattern.txt	/*?*
+?<CR>	pattern.txt	/*?<CR>*
+@	repeat.txt	/*@*
+@/	change.txt	/*@\/*
+@:	repeat.txt	/*@:*
+@@	repeat.txt	/*@@*
+A	insert.txt	/*A*
+ACL	editing.txt	/*ACL*
+ATTENTION	usr_11.txt	/*ATTENTION*
+Abbreviations	map.txt	/*Abbreviations*
+Aleph	options.txt	/*Aleph*
+Amiga	os_amiga.txt	/*Amiga*
+Arabic	arabic.txt	/*Arabic*
+Atari	os_mint.txt	/*Atari*
+Athena	gui_x11.txt	/*Athena*
+B	motion.txt	/*B*
+BeBox	os_beos.txt	/*BeBox*
+BeOS	os_beos.txt	/*BeOS*
+BufAdd	autocmd.txt	/*BufAdd*
+BufCreate	autocmd.txt	/*BufCreate*
+BufDelete	autocmd.txt	/*BufDelete*
+BufEnter	autocmd.txt	/*BufEnter*
+BufFilePost	autocmd.txt	/*BufFilePost*
+BufFilePre	autocmd.txt	/*BufFilePre*
+BufHidden	autocmd.txt	/*BufHidden*
+BufLeave	autocmd.txt	/*BufLeave*
+BufNew	autocmd.txt	/*BufNew*
+BufNewFile	autocmd.txt	/*BufNewFile*
+BufRead	autocmd.txt	/*BufRead*
+BufReadCmd	autocmd.txt	/*BufReadCmd*
+BufReadPost	autocmd.txt	/*BufReadPost*
+BufReadPre	autocmd.txt	/*BufReadPre*
+BufUnload	autocmd.txt	/*BufUnload*
+BufWinEnter	autocmd.txt	/*BufWinEnter*
+BufWinLeave	autocmd.txt	/*BufWinLeave*
+BufWipeout	autocmd.txt	/*BufWipeout*
+BufWrite	autocmd.txt	/*BufWrite*
+BufWriteCmd	autocmd.txt	/*BufWriteCmd*
+BufWritePost	autocmd.txt	/*BufWritePost*
+BufWritePre	autocmd.txt	/*BufWritePre*
+C	change.txt	/*C*
+C-editing	tips.txt	/*C-editing*
+C-indenting	indent.txt	/*C-indenting*
+COMSPEC	starting.txt	/*COMSPEC*
+CR-used-for-NL	pattern.txt	/*CR-used-for-NL*
+CTRL-6	editing.txt	/*CTRL-6*
+CTRL-A	change.txt	/*CTRL-A*
+CTRL-B	scroll.txt	/*CTRL-B*
+CTRL-C	pattern.txt	/*CTRL-C*
+CTRL-D	scroll.txt	/*CTRL-D*
+CTRL-E	scroll.txt	/*CTRL-E*
+CTRL-F	scroll.txt	/*CTRL-F*
+CTRL-G	editing.txt	/*CTRL-G*
+CTRL-H	motion.txt	/*CTRL-H*
+CTRL-I	motion.txt	/*CTRL-I*
+CTRL-J	motion.txt	/*CTRL-J*
+CTRL-L	various.txt	/*CTRL-L*
+CTRL-M	motion.txt	/*CTRL-M*
+CTRL-N	motion.txt	/*CTRL-N*
+CTRL-O	motion.txt	/*CTRL-O*
+CTRL-P	motion.txt	/*CTRL-P*
+CTRL-R	undo.txt	/*CTRL-R*
+CTRL-T	tagsrch.txt	/*CTRL-T*
+CTRL-U	scroll.txt	/*CTRL-U*
+CTRL-U-changed	version6.txt	/*CTRL-U-changed*
+CTRL-V	visual.txt	/*CTRL-V*
+CTRL-V-alternative	gui_w32.txt	/*CTRL-V-alternative*
+CTRL-W	index.txt	/*CTRL-W*
+CTRL-W_+	windows.txt	/*CTRL-W_+*
+CTRL-W_-	windows.txt	/*CTRL-W_-*
+CTRL-W_<	windows.txt	/*CTRL-W_<*
+CTRL-W_<BS>	windows.txt	/*CTRL-W_<BS>*
+CTRL-W_<Down>	windows.txt	/*CTRL-W_<Down>*
+CTRL-W_<Left>	windows.txt	/*CTRL-W_<Left>*
+CTRL-W_<Right>	windows.txt	/*CTRL-W_<Right>*
+CTRL-W_<Up>	windows.txt	/*CTRL-W_<Up>*
+CTRL-W_=	windows.txt	/*CTRL-W_=*
+CTRL-W_>	windows.txt	/*CTRL-W_>*
+CTRL-W_CTRL-B	windows.txt	/*CTRL-W_CTRL-B*
+CTRL-W_CTRL-C	windows.txt	/*CTRL-W_CTRL-C*
+CTRL-W_CTRL-D	tagsrch.txt	/*CTRL-W_CTRL-D*
+CTRL-W_CTRL-F	windows.txt	/*CTRL-W_CTRL-F*
+CTRL-W_CTRL-H	windows.txt	/*CTRL-W_CTRL-H*
+CTRL-W_CTRL-I	tagsrch.txt	/*CTRL-W_CTRL-I*
+CTRL-W_CTRL-J	windows.txt	/*CTRL-W_CTRL-J*
+CTRL-W_CTRL-K	windows.txt	/*CTRL-W_CTRL-K*
+CTRL-W_CTRL-L	windows.txt	/*CTRL-W_CTRL-L*
+CTRL-W_CTRL-N	windows.txt	/*CTRL-W_CTRL-N*
+CTRL-W_CTRL-O	windows.txt	/*CTRL-W_CTRL-O*
+CTRL-W_CTRL-P	windows.txt	/*CTRL-W_CTRL-P*
+CTRL-W_CTRL-Q	windows.txt	/*CTRL-W_CTRL-Q*
+CTRL-W_CTRL-R	windows.txt	/*CTRL-W_CTRL-R*
+CTRL-W_CTRL-S	windows.txt	/*CTRL-W_CTRL-S*
+CTRL-W_CTRL-T	windows.txt	/*CTRL-W_CTRL-T*
+CTRL-W_CTRL-V	windows.txt	/*CTRL-W_CTRL-V*
+CTRL-W_CTRL-W	windows.txt	/*CTRL-W_CTRL-W*
+CTRL-W_CTRL-X	windows.txt	/*CTRL-W_CTRL-X*
+CTRL-W_CTRL-Z	windows.txt	/*CTRL-W_CTRL-Z*
+CTRL-W_CTRL-]	windows.txt	/*CTRL-W_CTRL-]*
+CTRL-W_CTRL-^	windows.txt	/*CTRL-W_CTRL-^*
+CTRL-W_CTRL-_	windows.txt	/*CTRL-W_CTRL-_*
+CTRL-W_H	windows.txt	/*CTRL-W_H*
+CTRL-W_J	windows.txt	/*CTRL-W_J*
+CTRL-W_K	windows.txt	/*CTRL-W_K*
+CTRL-W_L	windows.txt	/*CTRL-W_L*
+CTRL-W_P	windows.txt	/*CTRL-W_P*
+CTRL-W_R	windows.txt	/*CTRL-W_R*
+CTRL-W_S	windows.txt	/*CTRL-W_S*
+CTRL-W_W	windows.txt	/*CTRL-W_W*
+CTRL-W_]	windows.txt	/*CTRL-W_]*
+CTRL-W_^	windows.txt	/*CTRL-W_^*
+CTRL-W__	windows.txt	/*CTRL-W__*
+CTRL-W_b	windows.txt	/*CTRL-W_b*
+CTRL-W_bar	windows.txt	/*CTRL-W_bar*
+CTRL-W_c	windows.txt	/*CTRL-W_c*
+CTRL-W_d	tagsrch.txt	/*CTRL-W_d*
+CTRL-W_f	windows.txt	/*CTRL-W_f*
+CTRL-W_g]	windows.txt	/*CTRL-W_g]*
+CTRL-W_g_CTRL-]	windows.txt	/*CTRL-W_g_CTRL-]*
+CTRL-W_g}	windows.txt	/*CTRL-W_g}*
+CTRL-W_h	windows.txt	/*CTRL-W_h*
+CTRL-W_i	tagsrch.txt	/*CTRL-W_i*
+CTRL-W_j	windows.txt	/*CTRL-W_j*
+CTRL-W_k	windows.txt	/*CTRL-W_k*
+CTRL-W_l	windows.txt	/*CTRL-W_l*
+CTRL-W_n	windows.txt	/*CTRL-W_n*
+CTRL-W_o	windows.txt	/*CTRL-W_o*
+CTRL-W_p	windows.txt	/*CTRL-W_p*
+CTRL-W_q	windows.txt	/*CTRL-W_q*
+CTRL-W_r	windows.txt	/*CTRL-W_r*
+CTRL-W_s	windows.txt	/*CTRL-W_s*
+CTRL-W_t	windows.txt	/*CTRL-W_t*
+CTRL-W_v	windows.txt	/*CTRL-W_v*
+CTRL-W_w	windows.txt	/*CTRL-W_w*
+CTRL-W_x	windows.txt	/*CTRL-W_x*
+CTRL-W_z	windows.txt	/*CTRL-W_z*
+CTRL-W_}	windows.txt	/*CTRL-W_}*
+CTRL-X	change.txt	/*CTRL-X*
+CTRL-Y	scroll.txt	/*CTRL-Y*
+CTRL-Z	starting.txt	/*CTRL-Z*
+CTRL-\_CTRL-G	intro.txt	/*CTRL-\\_CTRL-G*
+CTRL-\_CTRL-N	intro.txt	/*CTRL-\\_CTRL-N*
+CTRL-]	tagsrch.txt	/*CTRL-]*
+CTRL-^	editing.txt	/*CTRL-^*
+CTRL-{char}	intro.txt	/*CTRL-{char}*
+Chinese	mbyte.txt	/*Chinese*
+Cmd-event	autocmd.txt	/*Cmd-event*
+Cmdline	cmdline.txt	/*Cmdline*
+Cmdline-mode	cmdline.txt	/*Cmdline-mode*
+CmdwinEnter	autocmd.txt	/*CmdwinEnter*
+CmdwinLeave	autocmd.txt	/*CmdwinLeave*
+Command-line	cmdline.txt	/*Command-line*
+Command-line-mode	cmdline.txt	/*Command-line-mode*
+Contents	quickref.txt	/*Contents*
+Cscope	if_cscop.txt	/*Cscope*
+CursorHold	autocmd.txt	/*CursorHold*
+CursorHold-example	windows.txt	/*CursorHold-example*
+CursorIM	mbyte.txt	/*CursorIM*
+D	change.txt	/*D*
+DOS	os_dos.txt	/*DOS*
+DOS-format	editing.txt	/*DOS-format*
+DOS-format-write	editing.txt	/*DOS-format-write*
+DPMI	os_msdos.txt	/*DPMI*
+Digraphs	digraph.txt	/*Digraphs*
+E	motion.txt	/*E*
+E10	message.txt	/*E10*
+E100	diff.txt	/*E100*
+E101	diff.txt	/*E101*
+E102	diff.txt	/*E102*
+E103	diff.txt	/*E103*
+E104	digraph.txt	/*E104*
+E105	mbyte.txt	/*E105*
+E106	eval.txt	/*E106*
+E107	eval.txt	/*E107*
+E108	eval.txt	/*E108*
+E109	eval.txt	/*E109*
+E11	cmdline.txt	/*E11*
+E110	eval.txt	/*E110*
+E111	eval.txt	/*E111*
+E112	eval.txt	/*E112*
+E113	eval.txt	/*E113*
+E114	eval.txt	/*E114*
+E115	eval.txt	/*E115*
+E116	eval.txt	/*E116*
+E117	eval.txt	/*E117*
+E118	eval.txt	/*E118*
+E119	eval.txt	/*E119*
+E12	message.txt	/*E12*
+E120	eval.txt	/*E120*
+E121	eval.txt	/*E121*
+E122	eval.txt	/*E122*
+E123	eval.txt	/*E123*
+E124	eval.txt	/*E124*
+E125	eval.txt	/*E125*
+E126	eval.txt	/*E126*
+E127	eval.txt	/*E127*
+E128	eval.txt	/*E128*
+E129	eval.txt	/*E129*
+E13	message.txt	/*E13*
+E130	eval.txt	/*E130*
+E131	eval.txt	/*E131*
+E132	eval.txt	/*E132*
+E133	eval.txt	/*E133*
+E134	change.txt	/*E134*
+E135	autocmd.txt	/*E135*
+E136	starting.txt	/*E136*
+E137	starting.txt	/*E137*
+E138	starting.txt	/*E138*
+E139	message.txt	/*E139*
+E14	cmdline.txt	/*E14*
+E140	message.txt	/*E140*
+E141	message.txt	/*E141*
+E142	message.txt	/*E142*
+E143	autocmd.txt	/*E143*
+E144	various.txt	/*E144*
+E145	starting.txt	/*E145*
+E146	change.txt	/*E146*
+E147	repeat.txt	/*E147*
+E148	repeat.txt	/*E148*
+E149	various.txt	/*E149*
+E15	eval.txt	/*E15*
+E150	various.txt	/*E150*
+E151	various.txt	/*E151*
+E152	various.txt	/*E152*
+E153	various.txt	/*E153*
+E154	various.txt	/*E154*
+E155	sign.txt	/*E155*
+E156	sign.txt	/*E156*
+E157	sign.txt	/*E157*
+E158	sign.txt	/*E158*
+E159	sign.txt	/*E159*
+E16	cmdline.txt	/*E16*
+E160	sign.txt	/*E160*
+E161	repeat.txt	/*E161*
+E162	message.txt	/*E162*
+E163	editing.txt	/*E163*
+E164	editing.txt	/*E164*
+E165	editing.txt	/*E165*
+E166	message.txt	/*E166*
+E167	repeat.txt	/*E167*
+E168	repeat.txt	/*E168*
+E169	message.txt	/*E169*
+E17	message.txt	/*E17*
+E170	eval.txt	/*E170*
+E171	eval.txt	/*E171*
+E172	message.txt	/*E172*
+E173	message.txt	/*E173*
+E174	map.txt	/*E174*
+E175	map.txt	/*E175*
+E176	map.txt	/*E176*
+E177	map.txt	/*E177*
+E178	map.txt	/*E178*
+E179	map.txt	/*E179*
+E18	eval.txt	/*E18*
+E180	map.txt	/*E180*
+E181	map.txt	/*E181*
+E182	map.txt	/*E182*
+E183	map.txt	/*E183*
+E184	map.txt	/*E184*
+E185	syntax.txt	/*E185*
+E186	editing.txt	/*E186*
+E187	editing.txt	/*E187*
+E188	gui.txt	/*E188*
+E189	message.txt	/*E189*
+E19	message.txt	/*E19*
+E190	message.txt	/*E190*
+E191	motion.txt	/*E191*
+E192	message.txt	/*E192*
+E193	eval.txt	/*E193*
+E194	message.txt	/*E194*
+E195	starting.txt	/*E195*
+E196	various.txt	/*E196*
+E197	mlang.txt	/*E197*
+E198	options.txt	/*E198*
+E199	cmdline.txt	/*E199*
+E20	motion.txt	/*E20*
+E200	autocmd.txt	/*E200*
+E201	autocmd.txt	/*E201*
+E202	options.txt	/*E202*
+E203	autocmd.txt	/*E203*
+E204	autocmd.txt	/*E204*
+E205	if_pyth.txt	/*E205*
+E206	options.txt	/*E206*
+E207	editing.txt	/*E207*
+E208	message.txt	/*E208*
+E209	message.txt	/*E209*
+E21	options.txt	/*E21*
+E210	message.txt	/*E210*
+E211	message.txt	/*E211*
+E212	message.txt	/*E212*
+E213	options.txt	/*E213*
+E214	options.txt	/*E214*
+E215	autocmd.txt	/*E215*
+E216	autocmd.txt	/*E216*
+E217	autocmd.txt	/*E217*
+E218	autocmd.txt	/*E218*
+E219	message.txt	/*E219*
+E22	message.txt	/*E22*
+E220	message.txt	/*E220*
+E222	message.txt	/*E222*
+E223	options.txt	/*E223*
+E224	map.txt	/*E224*
+E225	map.txt	/*E225*
+E226	map.txt	/*E226*
+E227	map.txt	/*E227*
+E228	message.txt	/*E228*
+E229	gui.txt	/*E229*
+E23	message.txt	/*E23*
+E230	starting.txt	/*E230*
+E231	options.txt	/*E231*
+E232	message.txt	/*E232*
+E233	gui.txt	/*E233*
+E234	options.txt	/*E234*
+E235	options.txt	/*E235*
+E236	options.txt	/*E236*
+E237	various.txt	/*E237*
+E238	various.txt	/*E238*
+E239	sign.txt	/*E239*
+E24	message.txt	/*E24*
+E240	remote.txt	/*E240*
+E241	eval.txt	/*E241*
+E243	if_ole.txt	/*E243*
+E244	options.txt	/*E244*
+E245	options.txt	/*E245*
+E246	autocmd.txt	/*E246*
+E247	remote.txt	/*E247*
+E248	remote.txt	/*E248*
+E25	message.txt	/*E25*
+E250	options.txt	/*E250*
+E251	remote.txt	/*E251*
+E252	options.txt	/*E252*
+E253	mbyte.txt	/*E253*
+E254	message.txt	/*E254*
+E255	sign.txt	/*E255*
+E256	message.txt	/*E256*
+E257	if_cscop.txt	/*E257*
+E258	remote.txt	/*E258*
+E259	if_cscop.txt	/*E259*
+E26	rileft.txt	/*E26*
+E260	if_cscop.txt	/*E260*
+E261	if_cscop.txt	/*E261*
+E262	if_cscop.txt	/*E262*
+E263	if_pyth.txt	/*E263*
+E264	if_pyth.txt	/*E264*
+E265	if_ruby.txt	/*E265*
+E266	if_ruby.txt	/*E266*
+E267	if_ruby.txt	/*E267*
+E268	if_ruby.txt	/*E268*
+E269	if_ruby.txt	/*E269*
+E27	farsi.txt	/*E27*
+E270	if_ruby.txt	/*E270*
+E271	if_ruby.txt	/*E271*
+E272	if_ruby.txt	/*E272*
+E273	if_ruby.txt	/*E273*
+E274	if_sniff.txt	/*E274*
+E275	if_sniff.txt	/*E275*
+E276	if_sniff.txt	/*E276*
+E277	remote.txt	/*E277*
+E278	if_sniff.txt	/*E278*
+E279	if_sniff.txt	/*E279*
+E28	syntax.txt	/*E28*
+E280	if_tcl.txt	/*E280*
+E281	if_tcl.txt	/*E281*
+E282	starting.txt	/*E282*
+E283	motion.txt	/*E283*
+E284	mbyte.txt	/*E284*
+E285	mbyte.txt	/*E285*
+E286	mbyte.txt	/*E286*
+E287	mbyte.txt	/*E287*
+E288	mbyte.txt	/*E288*
+E289	mbyte.txt	/*E289*
+E29	change.txt	/*E29*
+E290	mbyte.txt	/*E290*
+E291	mbyte.txt	/*E291*
+E292	mbyte.txt	/*E292*
+E293	message.txt	/*E293*
+E294	message.txt	/*E294*
+E295	message.txt	/*E295*
+E296	message.txt	/*E296*
+E297	message.txt	/*E297*
+E298	message.txt	/*E298*
+E299	if_perl.txt	/*E299*
+E30	change.txt	/*E30*
+E300	message.txt	/*E300*
+E301	message.txt	/*E301*
+E302	message.txt	/*E302*
+E303	message.txt	/*E303*
+E304	message.txt	/*E304*
+E305	recover.txt	/*E305*
+E306	recover.txt	/*E306*
+E307	recover.txt	/*E307*
+E308	recover.txt	/*E308*
+E309	recover.txt	/*E309*
+E31	message.txt	/*E31*
+E310	recover.txt	/*E310*
+E311	recover.txt	/*E311*
+E312	recover.txt	/*E312*
+E313	recover.txt	/*E313*
+E314	recover.txt	/*E314*
+E315	message.txt	/*E315*
+E316	message.txt	/*E316*
+E317	message.txt	/*E317*
+E318	message.txt	/*E318*
+E319	message.txt	/*E319*
+E32	message.txt	/*E32*
+E320	message.txt	/*E320*
+E321	editing.txt	/*E321*
+E322	message.txt	/*E322*
+E323	message.txt	/*E323*
+E324	various.txt	/*E324*
+E325	usr_11.txt	/*E325*
+E326	recover.txt	/*E326*
+E327	gui.txt	/*E327*
+E328	gui.txt	/*E328*
+E329	gui.txt	/*E329*
+E33	message.txt	/*E33*
+E330	gui.txt	/*E330*
+E331	gui.txt	/*E331*
+E332	gui.txt	/*E332*
+E333	gui.txt	/*E333*
+E334	gui.txt	/*E334*
+E335	gui.txt	/*E335*
+E336	gui.txt	/*E336*
+E337	gui.txt	/*E337*
+E338	editing.txt	/*E338*
+E339	message.txt	/*E339*
+E34	various.txt	/*E34*
+E340	vi_diff.txt	/*E340*
+E341	message.txt	/*E341*
+E342	message.txt	/*E342*
+E343	options.txt	/*E343*
+E344	options.txt	/*E344*
+E345	options.txt	/*E345*
+E346	options.txt	/*E346*
+E347	options.txt	/*E347*
+E348	pattern.txt	/*E348*
+E349	pattern.txt	/*E349*
+E35	message.txt	/*E35*
+E350	fold.txt	/*E350*
+E351	fold.txt	/*E351*
+E352	fold.txt	/*E352*
+E353	change.txt	/*E353*
+E354	change.txt	/*E354*
+E355	options.txt	/*E355*
+E356	message.txt	/*E356*
+E357	options.txt	/*E357*
+E358	options.txt	/*E358*
+E359	term.txt	/*E359*
+E36	windows.txt	/*E36*
+E360	various.txt	/*E360*
+E361	pattern.txt	/*E361*
+E362	term.txt	/*E362*
+E363	pattern.txt	/*E363*
+E364	eval.txt	/*E364*
+E365	options.txt	/*E365*
+E366	options.txt	/*E366*
+E367	autocmd.txt	/*E367*
+E368	eval.txt	/*E368*
+E369	pattern.txt	/*E369*
+E37	message.txt	/*E37*
+E370	various.txt	/*E370*
+E371	various.txt	/*E371*
+E372	quickfix.txt	/*E372*
+E373	quickfix.txt	/*E373*
+E374	quickfix.txt	/*E374*
+E375	quickfix.txt	/*E375*
+E376	quickfix.txt	/*E376*
+E377	quickfix.txt	/*E377*
+E378	quickfix.txt	/*E378*
+E379	quickfix.txt	/*E379*
+E38	message.txt	/*E38*
+E380	quickfix.txt	/*E380*
+E381	quickfix.txt	/*E381*
+E382	options.txt	/*E382*
+E383	pattern.txt	/*E383*
+E384	options.txt	/*E384*
+E385	options.txt	/*E385*
+E386	pattern.txt	/*E386*
+E387	tagsrch.txt	/*E387*
+E388	tagsrch.txt	/*E388*
+E389	tagsrch.txt	/*E389*
+E39	digraph.txt	/*E39*
+E390	syntax.txt	/*E390*
+E391	syntax.txt	/*E391*
+E392	syntax.txt	/*E392*
+E393	syntax.txt	/*E393*
+E394	syntax.txt	/*E394*
+E395	syntax.txt	/*E395*
+E396	syntax.txt	/*E396*
+E397	syntax.txt	/*E397*
+E398	syntax.txt	/*E398*
+E399	syntax.txt	/*E399*
+E40	message.txt	/*E40*
+E400	syntax.txt	/*E400*
+E401	syntax.txt	/*E401*
+E402	syntax.txt	/*E402*
+E403	syntax.txt	/*E403*
+E404	syntax.txt	/*E404*
+E405	syntax.txt	/*E405*
+E406	syntax.txt	/*E406*
+E407	syntax.txt	/*E407*
+E408	syntax.txt	/*E408*
+E409	syntax.txt	/*E409*
+E41	message.txt	/*E41*
+E410	syntax.txt	/*E410*
+E411	syntax.txt	/*E411*
+E412	syntax.txt	/*E412*
+E413	syntax.txt	/*E413*
+E414	syntax.txt	/*E414*
+E415	syntax.txt	/*E415*
+E416	syntax.txt	/*E416*
+E417	syntax.txt	/*E417*
+E418	syntax.txt	/*E418*
+E419	syntax.txt	/*E419*
+E42	quickfix.txt	/*E42*
+E420	syntax.txt	/*E420*
+E421	syntax.txt	/*E421*
+E422	syntax.txt	/*E422*
+E423	syntax.txt	/*E423*
+E424	message.txt	/*E424*
+E425	tagsrch.txt	/*E425*
+E426	tagsrch.txt	/*E426*
+E427	tagsrch.txt	/*E427*
+E428	tagsrch.txt	/*E428*
+E429	tagsrch.txt	/*E429*
+E43	message.txt	/*E43*
+E430	tagsrch.txt	/*E430*
+E431	tagsrch.txt	/*E431*
+E432	message.txt	/*E432*
+E433	options.txt	/*E433*
+E434	tagsrch.txt	/*E434*
+E435	tagsrch.txt	/*E435*
+E436	term.txt	/*E436*
+E437	term.txt	/*E437*
+E438	message.txt	/*E438*
+E439	message.txt	/*E439*
+E44	message.txt	/*E44*
+E440	message.txt	/*E440*
+E441	windows.txt	/*E441*
+E442	windows.txt	/*E442*
+E443	windows.txt	/*E443*
+E444	windows.txt	/*E444*
+E445	windows.txt	/*E445*
+E446	editing.txt	/*E446*
+E447	editing.txt	/*E447*
+E448	various.txt	/*E448*
+E449	eval.txt	/*E449*
+E45	message.txt	/*E45*
+E450	os_msdos.txt	/*E450*
+E451	os_msdos.txt	/*E451*
+E452	os_msdos.txt	/*E452*
+E453	os_msdos.txt	/*E453*
+E454	os_msdos.txt	/*E454*
+E455	various.txt	/*E455*
+E456	various.txt	/*E456*
+E457	various.txt	/*E457*
+E458	message.txt	/*E458*
+E459	message.txt	/*E459*
+E46	message.txt	/*E46*
+E460	message.txt	/*E460*
+E461	eval.txt	/*E461*
+E462	editing.txt	/*E462*
+E463	netbeans.txt	/*E463*
+E464	message.txt	/*E464*
+E465	gui.txt	/*E465*
+E466	gui.txt	/*E466*
+E467	map.txt	/*E467*
+E468	map.txt	/*E468*
+E469	if_cscop.txt	/*E469*
+E47	message.txt	/*E47*
+E470	change.txt	/*E470*
+E471	message.txt	/*E471*
+E472	editing.txt	/*E472*
+E473	message.txt	/*E473*
+E474	message.txt	/*E474*
+E475	message.txt	/*E475*
+E476	pattern.txt	/*E476*
+E477	message.txt	/*E477*
+E478	message.txt	/*E478*
+E479	editing.txt	/*E479*
+E48	eval.txt	/*E48*
+E480	editing.txt	/*E480*
+E481	message.txt	/*E481*
+E482	message.txt	/*E482*
+E483	message.txt	/*E483*
+E484	message.txt	/*E484*
+E485	message.txt	/*E485*
+E486	pattern.txt	/*E486*
+E487	options.txt	/*E487*
+E488	message.txt	/*E488*
+E489	intro.txt	/*E489*
+E49	message.txt	/*E49*
+E490	fold.txt	/*E490*
+E492	message.txt	/*E492*
+E493	cmdline.txt	/*E493*
+E494	editing.txt	/*E494*
+E495	cmdline.txt	/*E495*
+E496	cmdline.txt	/*E496*
+E497	cmdline.txt	/*E497*
+E498	cmdline.txt	/*E498*
+E499	cmdline.txt	/*E499*
+E50	syntax.txt	/*E50*
+E500	cmdline.txt	/*E500*
+E501	intro.txt	/*E501*
+E502	editing.txt	/*E502*
+E503	editing.txt	/*E503*
+E504	editing.txt	/*E504*
+E505	editing.txt	/*E505*
+E506	editing.txt	/*E506*
+E507	editing.txt	/*E507*
+E508	editing.txt	/*E508*
+E509	editing.txt	/*E509*
+E51	pattern.txt	/*E51*
+E510	editing.txt	/*E510*
+E512	editing.txt	/*E512*
+E513	options.txt	/*E513*
+E514	editing.txt	/*E514*
+E515	windows.txt	/*E515*
+E516	windows.txt	/*E516*
+E517	windows.txt	/*E517*
+E518	options.txt	/*E518*
+E519	options.txt	/*E519*
+E52	syntax.txt	/*E52*
+E520	options.txt	/*E520*
+E521	options.txt	/*E521*
+E522	options.txt	/*E522*
+E523	options.txt	/*E523*
+E524	options.txt	/*E524*
+E525	options.txt	/*E525*
+E526	options.txt	/*E526*
+E527	options.txt	/*E527*
+E528	options.txt	/*E528*
+E529	options.txt	/*E529*
+E53	pattern.txt	/*E53*
+E530	options.txt	/*E530*
+E531	options.txt	/*E531*
+E533	options.txt	/*E533*
+E534	options.txt	/*E534*
+E535	options.txt	/*E535*
+E536	options.txt	/*E536*
+E537	options.txt	/*E537*
+E538	options.txt	/*E538*
+E539	options.txt	/*E539*
+E54	pattern.txt	/*E54*
+E540	options.txt	/*E540*
+E541	options.txt	/*E541*
+E542	options.txt	/*E542*
+E543	options.txt	/*E543*
+E544	options.txt	/*E544*
+E545	options.txt	/*E545*
+E546	options.txt	/*E546*
+E547	options.txt	/*E547*
+E548	options.txt	/*E548*
+E549	options.txt	/*E549*
+E55	pattern.txt	/*E55*
+E550	options.txt	/*E550*
+E551	options.txt	/*E551*
+E552	options.txt	/*E552*
+E553	quickfix.txt	/*E553*
+E554	pattern.txt	/*E554*
+E555	tagsrch.txt	/*E555*
+E556	tagsrch.txt	/*E556*
+E557	term.txt	/*E557*
+E558	term.txt	/*E558*
+E559	term.txt	/*E559*
+E56	pattern.txt	/*E56*
+E560	if_cscop.txt	/*E560*
+E561	if_cscop.txt	/*E561*
+E562	if_cscop.txt	/*E562*
+E563	if_cscop.txt	/*E563*
+E564	if_cscop.txt	/*E564*
+E565	if_cscop.txt	/*E565*
+E566	if_cscop.txt	/*E566*
+E567	if_cscop.txt	/*E567*
+E568	if_cscop.txt	/*E568*
+E569	if_cscop.txt	/*E569*
+E57	pattern.txt	/*E57*
+E570	message.txt	/*E570*
+E571	if_tcl.txt	/*E571*
+E572	if_tcl.txt	/*E572*
+E573	remote.txt	/*E573*
+E574	starting.txt	/*E574*
+E575	starting.txt	/*E575*
+E576	starting.txt	/*E576*
+E577	starting.txt	/*E577*
+E578	editing.txt	/*E578*
+E579	eval.txt	/*E579*
+E58	pattern.txt	/*E58*
+E580	eval.txt	/*E580*
+E581	eval.txt	/*E581*
+E582	eval.txt	/*E582*
+E583	eval.txt	/*E583*
+E584	eval.txt	/*E584*
+E585	eval.txt	/*E585*
+E586	eval.txt	/*E586*
+E587	eval.txt	/*E587*
+E588	eval.txt	/*E588*
+E589	options.txt	/*E589*
+E59	pattern.txt	/*E59*
+E590	options.txt	/*E590*
+E591	options.txt	/*E591*
+E592	options.txt	/*E592*
+E593	options.txt	/*E593*
+E594	options.txt	/*E594*
+E595	options.txt	/*E595*
+E596	options.txt	/*E596*
+E597	options.txt	/*E597*
+E598	options.txt	/*E598*
+E60	pattern.txt	/*E60*
+E600	eval.txt	/*E600*
+E601	eval.txt	/*E601*
+E602	eval.txt	/*E602*
+E603	eval.txt	/*E603*
+E604	eval.txt	/*E604*
+E605	eval.txt	/*E605*
+E606	eval.txt	/*E606*
+E607	eval.txt	/*E607*
+E608	eval.txt	/*E608*
+E609	if_cscop.txt	/*E609*
+E61	pattern.txt	/*E61*
+E610	options.txt	/*E610*
+E611	options.txt	/*E611*
+E612	sign.txt	/*E612*
+E613	options.txt	/*E613*
+E614	editing.txt	/*E614*
+E615	editing.txt	/*E615*
+E616	editing.txt	/*E616*
+E617	options.txt	/*E617*
+E618	various.txt	/*E618*
+E619	various.txt	/*E619*
+E62	pattern.txt	/*E62*
+E620	options.txt	/*E620*
+E621	various.txt	/*E621*
+E622	if_cscop.txt	/*E622*
+E623	if_cscop.txt	/*E623*
+E624	various.txt	/*E624*
+E625	if_cscop.txt	/*E625*
+E626	if_cscop.txt	/*E626*
+E627	netbeans.txt	/*E627*
+E628	netbeans.txt	/*E628*
+E629	netbeans.txt	/*E629*
+E63	pattern.txt	/*E63*
+E630	netbeans.txt	/*E630*
+E631	netbeans.txt	/*E631*
+E632	netbeans.txt	/*E632*
+E633	netbeans.txt	/*E633*
+E634	netbeans.txt	/*E634*
+E635	netbeans.txt	/*E635*
+E636	netbeans.txt	/*E636*
+E637	netbeans.txt	/*E637*
+E638	netbeans.txt	/*E638*
+E639	netbeans.txt	/*E639*
+E64	pattern.txt	/*E64*
+E640	netbeans.txt	/*E640*
+E641	netbeans.txt	/*E641*
+E642	netbeans.txt	/*E642*
+E643	netbeans.txt	/*E643*
+E644	netbeans.txt	/*E644*
+E645	netbeans.txt	/*E645*
+E646	netbeans.txt	/*E646*
+E647	netbeans.txt	/*E647*
+E648	netbeans.txt	/*E648*
+E649	netbeans.txt	/*E649*
+E65	pattern.txt	/*E65*
+E650	netbeans.txt	/*E650*
+E651	netbeans.txt	/*E651*
+E652	netbeans.txt	/*E652*
+E653	netbeans.txt	/*E653*
+E654	netbeans.txt	/*E654*
+E655	eval.txt	/*E655*
+E656	netbeans.txt	/*E656*
+E657	netbeans.txt	/*E657*
+E658	netbeans.txt	/*E658*
+E659	if_pyth.txt	/*E659*
+E66	syntax.txt	/*E66*
+E660	netbeans.txt	/*E660*
+E661	various.txt	/*E661*
+E662	motion.txt	/*E662*
+E663	motion.txt	/*E663*
+E664	motion.txt	/*E664*
+E665	gui_x11.txt	/*E665*
+E666	quickfix.txt	/*E666*
+E667	editing.txt	/*E667*
+E668	netbeans.txt	/*E668*
+E669	syntax.txt	/*E669*
+E67	syntax.txt	/*E67*
+E670	various.txt	/*E670*
+E671	starting.txt	/*E671*
+E672	starting.txt	/*E672*
+E68	pattern.txt	/*E68*
+E69	pattern.txt	/*E69*
+E70	pattern.txt	/*E70*
+E71	pattern.txt	/*E71*
+E72	message.txt	/*E72*
+E73	tagsrch.txt	/*E73*
+E74	message.txt	/*E74*
+E75	vi_diff.txt	/*E75*
+E76	pattern.txt	/*E76*
+E77	message.txt	/*E77*
+E78	motion.txt	/*E78*
+E79	message.txt	/*E79*
+E80	message.txt	/*E80*
+E800	arabic.txt	/*E800*
+E81	map.txt	/*E81*
+E82	message.txt	/*E82*
+E83	message.txt	/*E83*
+E84	windows.txt	/*E84*
+E85	options.txt	/*E85*
+E86	windows.txt	/*E86*
+E87	windows.txt	/*E87*
+E88	windows.txt	/*E88*
+E89	message.txt	/*E89*
+E90	message.txt	/*E90*
+E91	options.txt	/*E91*
+E92	message.txt	/*E92*
+E93	windows.txt	/*E93*
+E94	windows.txt	/*E94*
+E95	message.txt	/*E95*
+E96	diff.txt	/*E96*
+E97	diff.txt	/*E97*
+E98	diff.txt	/*E98*
+E99	diff.txt	/*E99*
+EX	intro.txt	/*EX*
+EXINIT	starting.txt	/*EXINIT*
+Elvis	intro.txt	/*Elvis*
+EncodingChanged	autocmd.txt	/*EncodingChanged*
+Eterm	syntax.txt	/*Eterm*
+Ex	intro.txt	/*Ex*
+Ex-mode	intro.txt	/*Ex-mode*
+F	motion.txt	/*F*
+FAQ	intro.txt	/*FAQ*
+Farsi	farsi.txt	/*Farsi*
+FileAppendCmd	autocmd.txt	/*FileAppendCmd*
+FileAppendPost	autocmd.txt	/*FileAppendPost*
+FileAppendPre	autocmd.txt	/*FileAppendPre*
+FileChangedRO	autocmd.txt	/*FileChangedRO*
+FileChangedShell	autocmd.txt	/*FileChangedShell*
+FileEncoding	autocmd.txt	/*FileEncoding*
+FileReadCmd	autocmd.txt	/*FileReadCmd*
+FileReadPost	autocmd.txt	/*FileReadPost*
+FileReadPre	autocmd.txt	/*FileReadPre*
+FileType	autocmd.txt	/*FileType*
+FileWriteCmd	autocmd.txt	/*FileWriteCmd*
+FileWritePost	autocmd.txt	/*FileWritePost*
+FileWritePre	autocmd.txt	/*FileWritePre*
+FilterReadPost	autocmd.txt	/*FilterReadPost*
+FilterReadPre	autocmd.txt	/*FilterReadPre*
+FilterWritePost	autocmd.txt	/*FilterWritePost*
+FilterWritePre	autocmd.txt	/*FilterWritePre*
+FocusGained	autocmd.txt	/*FocusGained*
+FocusLost	autocmd.txt	/*FocusLost*
+Folding	fold.txt	/*Folding*
+FuncUndefined	autocmd.txt	/*FuncUndefined*
+G	motion.txt	/*G*
+GNOME	gui_x11.txt	/*GNOME*
+GTK	gui_x11.txt	/*GTK*
+GTK+	gui_x11.txt	/*GTK+*
+GUI	gui.txt	/*GUI*
+GUI-X11	gui_x11.txt	/*GUI-X11*
+GUIEnter	autocmd.txt	/*GUIEnter*
+Gnome	gui_x11.txt	/*Gnome*
+H	motion.txt	/*H*
+I	insert.txt	/*I*
+ICCF	uganda.txt	/*ICCF*
+IM-server	mbyte.txt	/*IM-server*
+IME	mbyte.txt	/*IME*
+Insert	insert.txt	/*Insert*
+Insert-mode	insert.txt	/*Insert-mode*
+J	change.txt	/*J*
+Japanese	mbyte.txt	/*Japanese*
+K	various.txt	/*K*
+Korean	mbyte.txt	/*Korean*
+L	motion.txt	/*L*
+Linux-backspace	options.txt	/*Linux-backspace*
+M	motion.txt	/*M*
+MDI	starting.txt	/*MDI*
+MS-DOS	os_msdos.txt	/*MS-DOS*
+MS-Windows	os_win32.txt	/*MS-Windows*
+MSDOS	os_msdos.txt	/*MSDOS*
+MSVisualStudio	if_ole.txt	/*MSVisualStudio*
+MVS	os_390.txt	/*MVS*
+Mac	os_mac.txt	/*Mac*
+Mac-format	editing.txt	/*Mac-format*
+Mac-format-write	editing.txt	/*Mac-format-write*
+Macintosh	os_mac.txt	/*Macintosh*
+Mark	motion.txt	/*Mark*
+MiNT	os_mint.txt	/*MiNT*
+MorphOS	os_amiga.txt	/*MorphOS*
+Motif	gui_x11.txt	/*Motif*
+N	pattern.txt	/*N*
+N%	motion.txt	/*N%*
+N:	cmdline.txt	/*N:*
+N<Del>	various.txt	/*N<Del>*
+NL-used-for-Nul	pattern.txt	/*NL-used-for-Nul*
+NetBSD-backspace	options.txt	/*NetBSD-backspace*
+Normal	intro.txt	/*Normal*
+Normal-mode	intro.txt	/*Normal-mode*
+Nread	pi_netrw.txt	/*Nread*
+Nvi	intro.txt	/*Nvi*
+Nwrite	pi_netrw.txt	/*Nwrite*
+O	insert.txt	/*O*
+OS/2	os_os2.txt	/*OS\/2*
+OS2	os_os2.txt	/*OS2*
+OS390	os_390.txt	/*OS390*
+OS390-Motif	os_390.txt	/*OS390-Motif*
+OS390-bugs	os_390.txt	/*OS390-bugs*
+OS390-building	os_390.txt	/*OS390-building*
+OS390-changes	os_390.txt	/*OS390-changes*
+OS390-feedback	os_390.txt	/*OS390-feedback*
+OS390-has-ebcdic	os_390.txt	/*OS390-has-ebcdic*
+OS390-open-source	os_390.txt	/*OS390-open-source*
+OS390-weaknesses	os_390.txt	/*OS390-weaknesses*
+OS390-xterm	os_390.txt	/*OS390-xterm*
+OffTheSpot	mbyte.txt	/*OffTheSpot*
+OnTheSpot	mbyte.txt	/*OnTheSpot*
+Operator-pending	intro.txt	/*Operator-pending*
+Operator-pending-mode	intro.txt	/*Operator-pending-mode*
+OverTheSpot	mbyte.txt	/*OverTheSpot*
+P	change.txt	/*P*
+Pattern	pattern.txt	/*Pattern*
+Perl	if_perl.txt	/*Perl*
+Posix	intro.txt	/*Posix*
+Python	if_pyth.txt	/*Python*
+Q	intro.txt	/*Q*
+Q-command-changed	version5.txt	/*Q-command-changed*
+QNX	os_qnx.txt	/*QNX*
+Q_ab	quickref.txt	/*Q_ab*
+Q_ac	quickref.txt	/*Q_ac*
+Q_ai	quickref.txt	/*Q_ai*
+Q_bu	quickref.txt	/*Q_bu*
+Q_ce	quickref.txt	/*Q_ce*
+Q_ch	quickref.txt	/*Q_ch*
+Q_cm	quickref.txt	/*Q_cm*
+Q_co	quickref.txt	/*Q_co*
+Q_ct	help.txt	/*Q_ct*
+Q_de	quickref.txt	/*Q_de*
+Q_di	quickref.txt	/*Q_di*
+Q_ed	quickref.txt	/*Q_ed*
+Q_et	quickref.txt	/*Q_et*
+Q_ex	quickref.txt	/*Q_ex*
+Q_fl	quickref.txt	/*Q_fl*
+Q_fo	quickref.txt	/*Q_fo*
+Q_gu	quickref.txt	/*Q_gu*
+Q_in	quickref.txt	/*Q_in*
+Q_km	quickref.txt	/*Q_km*
+Q_lr	quickref.txt	/*Q_lr*
+Q_ma	quickref.txt	/*Q_ma*
+Q_op	quickref.txt	/*Q_op*
+Q_pa	quickref.txt	/*Q_pa*
+Q_qf	quickref.txt	/*Q_qf*
+Q_ra	quickref.txt	/*Q_ra*
+Q_re	quickref.txt	/*Q_re*
+Q_sc	quickref.txt	/*Q_sc*
+Q_si	quickref.txt	/*Q_si*
+Q_ss	quickref.txt	/*Q_ss*
+Q_st	quickref.txt	/*Q_st*
+Q_sy	quickref.txt	/*Q_sy*
+Q_ta	quickref.txt	/*Q_ta*
+Q_tm	quickref.txt	/*Q_tm*
+Q_to	quickref.txt	/*Q_to*
+Q_ud	quickref.txt	/*Q_ud*
+Q_ur	quickref.txt	/*Q_ur*
+Q_vc	quickref.txt	/*Q_vc*
+Q_vi	quickref.txt	/*Q_vi*
+Q_vm	quickref.txt	/*Q_vm*
+Q_wi	quickref.txt	/*Q_wi*
+Q_wq	quickref.txt	/*Q_wq*
+Quickfix	quickfix.txt	/*Quickfix*
+R	change.txt	/*R*
+RISC-OS	os_risc.txt	/*RISC-OS*
+RISCOS	os_risc.txt	/*RISCOS*
+RemoteReply	autocmd.txt	/*RemoteReply*
+Replace	insert.txt	/*Replace*
+Replace-mode	insert.txt	/*Replace-mode*
+Root	mbyte.txt	/*Root*
+Ruby	if_ruby.txt	/*Ruby*
+Russian	russian.txt	/*Russian*
+S	change.txt	/*S*
+SHELL	starting.txt	/*SHELL*
+Select	visual.txt	/*Select*
+Select-mode	visual.txt	/*Select-mode*
+Select-mode-mapping	visual.txt	/*Select-mode-mapping*
+Session	starting.txt	/*Session*
+StdinReadPost	autocmd.txt	/*StdinReadPost*
+StdinReadPre	autocmd.txt	/*StdinReadPre*
+Syntax	autocmd.txt	/*Syntax*
+T	motion.txt	/*T*
+TCL	if_tcl.txt	/*TCL*
+TERM	starting.txt	/*TERM*
+TTpro-telnet	syntax.txt	/*TTpro-telnet*
+Tab	intro.txt	/*Tab*
+Tcl	if_tcl.txt	/*Tcl*
+TermChanged	autocmd.txt	/*TermChanged*
+TermResponse	autocmd.txt	/*TermResponse*
+U	undo.txt	/*U*
+UTF-8	mbyte.txt	/*UTF-8*
+UTF8-xterm	mbyte.txt	/*UTF8-xterm*
+Uganda	uganda.txt	/*Uganda*
+Unicode	mbyte.txt	/*Unicode*
+Unix	os_unix.txt	/*Unix*
+Unix-format	editing.txt	/*Unix-format*
+Unix-format-write	editing.txt	/*Unix-format-write*
+User	autocmd.txt	/*User*
+UserGettingBored	autocmd.txt	/*UserGettingBored*
+V	visual.txt	/*V*
+VIMINIT	starting.txt	/*VIMINIT*
+VMS	os_vms.txt	/*VMS*
+Vi	intro.txt	/*Vi*
+View	starting.txt	/*View*
+VimEnter	autocmd.txt	/*VimEnter*
+VimLeave	autocmd.txt	/*VimLeave*
+VimLeavePre	autocmd.txt	/*VimLeavePre*
+Virtual-Replace-mode	insert.txt	/*Virtual-Replace-mode*
+VisVim	if_ole.txt	/*VisVim*
+Visual	visual.txt	/*Visual*
+Visual-mode	visual.txt	/*Visual-mode*
+W	motion.txt	/*W*
+W10	message.txt	/*W10*
+W11	message.txt	/*W11*
+W12	message.txt	/*W12*
+W13	message.txt	/*W13*
+W14	message.txt	/*W14*
+W15	repeat.txt	/*W15*
+W16	message.txt	/*W16*
+W17	arabic.txt	/*W17*
+W18	syntax.txt	/*W18*
+WORD	motion.txt	/*WORD*
+Win32	os_win32.txt	/*Win32*
+WinEnter	autocmd.txt	/*WinEnter*
+WinLeave	autocmd.txt	/*WinLeave*
+X	change.txt	/*X*
+X11	options.txt	/*X11*
+X11-icon	gui_x11.txt	/*X11-icon*
+X11_mouse_shapes	gui_x11.txt	/*X11_mouse_shapes*
+X1Drag	term.txt	/*X1Drag*
+X1Mouse	term.txt	/*X1Mouse*
+X1Release	term.txt	/*X1Release*
+X2Drag	term.txt	/*X2Drag*
+X2Mouse	term.txt	/*X2Mouse*
+X2Release	term.txt	/*X2Release*
+XIM	mbyte.txt	/*XIM*
+XLFD	mbyte.txt	/*XLFD*
+Y	change.txt	/*Y*
+Y2K	intro.txt	/*Y2K*
+ZQ	editing.txt	/*ZQ*
+ZZ	editing.txt	/*ZZ*
+[	index.txt	/*[*
+[#	motion.txt	/*[#*
+['	motion.txt	/*['*
+[(	motion.txt	/*[(*
+[++opt]	editing.txt	/*[++opt]*
+[+cmd]	editing.txt	/*[+cmd]*
+[/	motion.txt	/*[\/*
+[:alnum:]	pattern.txt	/*[:alnum:]*
+[:alpha:]	pattern.txt	/*[:alpha:]*
+[:backspace:]	pattern.txt	/*[:backspace:]*
+[:blank:]	pattern.txt	/*[:blank:]*
+[:cntrl:]	pattern.txt	/*[:cntrl:]*
+[:digit:]	pattern.txt	/*[:digit:]*
+[:escape:]	pattern.txt	/*[:escape:]*
+[:graph:]	pattern.txt	/*[:graph:]*
+[:lower:]	pattern.txt	/*[:lower:]*
+[:print:]	pattern.txt	/*[:print:]*
+[:punct:]	pattern.txt	/*[:punct:]*
+[:return:]	pattern.txt	/*[:return:]*
+[:space:]	pattern.txt	/*[:space:]*
+[:tab:]	pattern.txt	/*[:tab:]*
+[:upper:]	pattern.txt	/*[:upper:]*
+[:xdigit:]	pattern.txt	/*[:xdigit:]*
+[<MiddleMouse>	change.txt	/*[<MiddleMouse>*
+[D	tagsrch.txt	/*[D*
+[I	tagsrch.txt	/*[I*
+[M	motion.txt	/*[M*
+[P	change.txt	/*[P*
+[[	motion.txt	/*[[*
+[]	motion.txt	/*[]*
+[_CTRL-D	tagsrch.txt	/*[_CTRL-D*
+[_CTRL-I	tagsrch.txt	/*[_CTRL-I*
+[`	motion.txt	/*[`*
+[c	diff.txt	/*[c*
+[count]	intro.txt	/*[count]*
+[d	tagsrch.txt	/*[d*
+[f	editing.txt	/*[f*
+[i	tagsrch.txt	/*[i*
+[m	motion.txt	/*[m*
+[p	change.txt	/*[p*
+[pattern]	pattern.txt	/*[pattern]*
+[quotex]	intro.txt	/*[quotex]*
+[range]	cmdline.txt	/*[range]*
+[star	motion.txt	/*[star*
+[z	fold.txt	/*[z*
+[{	motion.txt	/*[{*
+\0	change.txt	/*\\0*
+]	index.txt	/*]*
+]#	motion.txt	/*]#*
+]'	motion.txt	/*]'*
+])	motion.txt	/*])*
+]/	motion.txt	/*]\/*
+]<MiddleMouse>	change.txt	/*]<MiddleMouse>*
+]D	tagsrch.txt	/*]D*
+]I	tagsrch.txt	/*]I*
+]M	motion.txt	/*]M*
+]P	change.txt	/*]P*
+][	motion.txt	/*][*
+]]	motion.txt	/*]]*
+]_CTRL-D	tagsrch.txt	/*]_CTRL-D*
+]_CTRL-I	tagsrch.txt	/*]_CTRL-I*
+]`	motion.txt	/*]`*
+]c	diff.txt	/*]c*
+]d	tagsrch.txt	/*]d*
+]f	editing.txt	/*]f*
+]i	tagsrch.txt	/*]i*
+]m	motion.txt	/*]m*
+]p	change.txt	/*]p*
+]star	motion.txt	/*]star*
+]z	fold.txt	/*]z*
+]}	motion.txt	/*]}*
+^	motion.txt	/*^*
+_	motion.txt	/*_*
+_exrc	starting.txt	/*_exrc*
+_gvimrc	gui.txt	/*_gvimrc*
+_vimrc	starting.txt	/*_vimrc*
+`	motion.txt	/*`*
+`(	motion.txt	/*`(*
+`)	motion.txt	/*`)*
+`-expansion	editing.txt	/*`-expansion*
+`.	motion.txt	/*`.*
+`0	motion.txt	/*`0*
+`<	motion.txt	/*`<*
+`>	motion.txt	/*`>*
+`A	motion.txt	/*`A*
+`[	motion.txt	/*`[*
+`]	motion.txt	/*`]*
+`^	motion.txt	/*`^*
+``	motion.txt	/*``*
+`a	motion.txt	/*`a*
+`quote	motion.txt	/*`quote*
+`{	motion.txt	/*`{*
+`}	motion.txt	/*`}*
+a	insert.txt	/*a*
+a(	motion.txt	/*a(*
+a)	motion.txt	/*a)*
+a4	options.txt	/*a4*
+a:firstline	eval.txt	/*a:firstline*
+a:lastline	eval.txt	/*a:lastline*
+a:var	eval.txt	/*a:var*
+a<	motion.txt	/*a<*
+a>	motion.txt	/*a>*
+aB	motion.txt	/*aB*
+aW	motion.txt	/*aW*
+a[	motion.txt	/*a[*
+a]	motion.txt	/*a]*
+ab	motion.txt	/*ab*
+abandon	editing.txt	/*abandon*
+abbreviations	map.txt	/*abbreviations*
+abel-syntax	syntax.txt	/*abel-syntax*
+abel.vim	syntax.txt	/*abel.vim*
+active-buffer	windows.txt	/*active-buffer*
+ada-syntax	syntax.txt	/*ada-syntax*
+ada.vim	syntax.txt	/*ada.vim*
+add-filetype-plugin	usr_05.txt	/*add-filetype-plugin*
+add-global-plugin	usr_05.txt	/*add-global-plugin*
+add-local-help	usr_05.txt	/*add-local-help*
+add-option-flags	options.txt	/*add-option-flags*
+add-plugin	usr_05.txt	/*add-plugin*
+added-5.1	version5.txt	/*added-5.1*
+added-5.2	version5.txt	/*added-5.2*
+added-5.3	version5.txt	/*added-5.3*
+added-5.4	version5.txt	/*added-5.4*
+added-5.5	version5.txt	/*added-5.5*
+added-5.6	version5.txt	/*added-5.6*
+added-5.7	version5.txt	/*added-5.7*
+added-5.8	version5.txt	/*added-5.8*
+added-6.1	version6.txt	/*added-6.1*
+added-6.2	version6.txt	/*added-6.2*
+added-6.3	version6.txt	/*added-6.3*
+added-BeOS	version5.txt	/*added-BeOS*
+added-Mac	version5.txt	/*added-Mac*
+added-VMS	version5.txt	/*added-VMS*
+added-cmdline-args	version5.txt	/*added-cmdline-args*
+added-options	version5.txt	/*added-options*
+added-regexp	version5.txt	/*added-regexp*
+added-various	version5.txt	/*added-various*
+added-win32-GUI	version5.txt	/*added-win32-GUI*
+after-directory	options.txt	/*after-directory*
+aleph	options.txt	/*aleph*
+alt	intro.txt	/*alt*
+alt-input	debugger.txt	/*alt-input*
+alternate-file	editing.txt	/*alternate-file*
+amiga-window	starting.txt	/*amiga-window*
+ant-syntax	syntax.txt	/*ant-syntax*
+ant.vim	syntax.txt	/*ant.vim*
+ap	motion.txt	/*ap*
+apache-syntax	syntax.txt	/*apache-syntax*
+apache.vim	syntax.txt	/*apache.vim*
+append()	eval.txt	/*append()*
+arabic.txt	arabic.txt	/*arabic.txt*
+arabicfonts	arabic.txt	/*arabicfonts*
+arabickeymap	arabic.txt	/*arabickeymap*
+argc()	eval.txt	/*argc()*
+argidx()	eval.txt	/*argidx()*
+arglist	editing.txt	/*arglist*
+arglist-position	editing.txt	/*arglist-position*
+arglist-quit	usr_07.txt	/*arglist-quit*
+argument-list	editing.txt	/*argument-list*
+argv()	eval.txt	/*argv()*
+as	motion.txt	/*as*
+asm-syntax	syntax.txt	/*asm-syntax*
+asm.vim	syntax.txt	/*asm.vim*
+asm68k	syntax.txt	/*asm68k*
+asm68k-syntax	syntax.txt	/*asm68k-syntax*
+asmh8300-syntax	syntax.txt	/*asmh8300-syntax*
+asmh8300.vim	syntax.txt	/*asmh8300.vim*
+aspperl-syntax	syntax.txt	/*aspperl-syntax*
+aspvbs-syntax	syntax.txt	/*aspvbs-syntax*
+athena-intellimouse	gui.txt	/*athena-intellimouse*
+attr-list	syntax.txt	/*attr-list*
+author	intro.txt	/*author*
+auto-format	change.txt	/*auto-format*
+auto-setting	options.txt	/*auto-setting*
+auto-shortname	editing.txt	/*auto-shortname*
+autocmd-<>	tips.txt	/*autocmd-<>*
+autocmd-define	autocmd.txt	/*autocmd-define*
+autocmd-events	autocmd.txt	/*autocmd-events*
+autocmd-execute	autocmd.txt	/*autocmd-execute*
+autocmd-groups	autocmd.txt	/*autocmd-groups*
+autocmd-intro	autocmd.txt	/*autocmd-intro*
+autocmd-list	autocmd.txt	/*autocmd-list*
+autocmd-nested	autocmd.txt	/*autocmd-nested*
+autocmd-osfiletypes	filetype.txt	/*autocmd-osfiletypes*
+autocmd-patterns	autocmd.txt	/*autocmd-patterns*
+autocmd-remove	autocmd.txt	/*autocmd-remove*
+autocmd-searchpat	autocmd.txt	/*autocmd-searchpat*
+autocmd-use	autocmd.txt	/*autocmd-use*
+autocmd.txt	autocmd.txt	/*autocmd.txt*
+autocmds-kept	version5.txt	/*autocmds-kept*
+autocommand	autocmd.txt	/*autocommand*
+autocommand-events	autocmd.txt	/*autocommand-events*
+autocommand-pattern	autocmd.txt	/*autocommand-pattern*
+autoload-functions	eval.txt	/*autoload-functions*
+avoid-hit-enter	version5.txt	/*avoid-hit-enter*
+aw	motion.txt	/*aw*
+a{	motion.txt	/*a{*
+a}	motion.txt	/*a}*
+b	motion.txt	/*b*
+b:changedtick-variable	eval.txt	/*b:changedtick-variable*
+b:current_syntax-variable	syntax.txt	/*b:current_syntax-variable*
+b:var	eval.txt	/*b:var*
+backslash	intro.txt	/*backslash*
+backspace	intro.txt	/*backspace*
+backspace-delete	version4.txt	/*backspace-delete*
+backtick-expansion	editing.txt	/*backtick-expansion*
+backup	editing.txt	/*backup*
+backup-changed	version4.txt	/*backup-changed*
+backup-extension	version4.txt	/*backup-extension*
+backup-table	editing.txt	/*backup-table*
+balloon-eval	debugger.txt	/*balloon-eval*
+bar	motion.txt	/*bar*
+bars	help.txt	/*bars*
+base_font_name_list	mbyte.txt	/*base_font_name_list*
+basic-syntax	syntax.txt	/*basic-syntax*
+basic.vim	syntax.txt	/*basic.vim*
+beep	options.txt	/*beep*
+beos-colors	os_beos.txt	/*beos-colors*
+beos-compiling	os_beos.txt	/*beos-compiling*
+beos-dragndrop	os_beos.txt	/*beos-dragndrop*
+beos-fonts	os_beos.txt	/*beos-fonts*
+beos-general	os_beos.txt	/*beos-general*
+beos-gui	os_beos.txt	/*beos-gui*
+beos-launch	os_beos.txt	/*beos-launch*
+beos-meta	os_beos.txt	/*beos-meta*
+beos-mouse	os_beos.txt	/*beos-mouse*
+beos-perl	os_beos.txt	/*beos-perl*
+beos-timeout	os_beos.txt	/*beos-timeout*
+beos-unicode	os_beos.txt	/*beos-unicode*
+beos-utf8	os_beos.txt	/*beos-utf8*
+beos-vimdir	os_beos.txt	/*beos-vimdir*
+blockwise-examples	visual.txt	/*blockwise-examples*
+blockwise-operators	visual.txt	/*blockwise-operators*
+blockwise-register	change.txt	/*blockwise-register*
+blockwise-visual	visual.txt	/*blockwise-visual*
+book	intro.txt	/*book*
+boolean	options.txt	/*boolean*
+break-finally	eval.txt	/*break-finally*
+browse()	eval.txt	/*browse()*
+browsefilter	editing.txt	/*browsefilter*
+bufexists()	eval.txt	/*bufexists()*
+buffer-hidden	windows.txt	/*buffer-hidden*
+buffer-list	windows.txt	/*buffer-list*
+buffer-variable	eval.txt	/*buffer-variable*
+buffer-write	editing.txt	/*buffer-write*
+buffer_exists()	eval.txt	/*buffer_exists()*
+buffer_name()	eval.txt	/*buffer_name()*
+buffer_number()	eval.txt	/*buffer_number()*
+buffers	windows.txt	/*buffers*
+buffers-menu	gui.txt	/*buffers-menu*
+buflisted()	eval.txt	/*buflisted()*
+bufloaded()	eval.txt	/*bufloaded()*
+bufname()	eval.txt	/*bufname()*
+bufnr()	eval.txt	/*bufnr()*
+bufwinnr()	eval.txt	/*bufwinnr()*
+bug-fixes-5	version5.txt	/*bug-fixes-5*
+bug-fixes-6	version6.txt	/*bug-fixes-6*
+bug-reports	intro.txt	/*bug-reports*
+bugreport.vim	intro.txt	/*bugreport.vim*
+bugs	intro.txt	/*bugs*
+builtin-terms	term.txt	/*builtin-terms*
+builtin-tools	gui.txt	/*builtin-tools*
+builtin_terms	term.txt	/*builtin_terms*
+byte-count	editing.txt	/*byte-count*
+byte2line()	eval.txt	/*byte2line()*
+bzip2	pi_gzip.txt	/*bzip2*
+c	change.txt	/*c*
+c-syntax	syntax.txt	/*c-syntax*
+c.vim	syntax.txt	/*c.vim*
+cW	change.txt	/*cW*
+c_<BS>	cmdline.txt	/*c_<BS>*
+c_<C-Left>	cmdline.txt	/*c_<C-Left>*
+c_<C-R>	cmdline.txt	/*c_<C-R>*
+c_<C-R>_<C-A>	cmdline.txt	/*c_<C-R>_<C-A>*
+c_<C-R>_<C-F>	cmdline.txt	/*c_<C-R>_<C-F>*
+c_<C-R>_<C-O>	cmdline.txt	/*c_<C-R>_<C-O>*
+c_<C-R>_<C-P>	cmdline.txt	/*c_<C-R>_<C-P>*
+c_<C-R>_<C-R>	cmdline.txt	/*c_<C-R>_<C-R>*
+c_<C-R>_<C-W>	cmdline.txt	/*c_<C-R>_<C-W>*
+c_<C-Right>	cmdline.txt	/*c_<C-Right>*
+c_<CR>	cmdline.txt	/*c_<CR>*
+c_<Del>	cmdline.txt	/*c_<Del>*
+c_<Down>	cmdline.txt	/*c_<Down>*
+c_<End>	cmdline.txt	/*c_<End>*
+c_<Esc>	cmdline.txt	/*c_<Esc>*
+c_<Home>	cmdline.txt	/*c_<Home>*
+c_<Insert>	cmdline.txt	/*c_<Insert>*
+c_<Left>	cmdline.txt	/*c_<Left>*
+c_<LeftMouse>	cmdline.txt	/*c_<LeftMouse>*
+c_<NL>	cmdline.txt	/*c_<NL>*
+c_<PageDown>	cmdline.txt	/*c_<PageDown>*
+c_<PageUp>	cmdline.txt	/*c_<PageUp>*
+c_<Right>	cmdline.txt	/*c_<Right>*
+c_<S-Down>	cmdline.txt	/*c_<S-Down>*
+c_<S-Left>	cmdline.txt	/*c_<S-Left>*
+c_<S-Right>	cmdline.txt	/*c_<S-Right>*
+c_<S-Tab>	cmdline.txt	/*c_<S-Tab>*
+c_<S-Up>	cmdline.txt	/*c_<S-Up>*
+c_<Tab>	cmdline.txt	/*c_<Tab>*
+c_<Up>	cmdline.txt	/*c_<Up>*
+c_CTRL-A	cmdline.txt	/*c_CTRL-A*
+c_CTRL-B	cmdline.txt	/*c_CTRL-B*
+c_CTRL-C	cmdline.txt	/*c_CTRL-C*
+c_CTRL-D	cmdline.txt	/*c_CTRL-D*
+c_CTRL-E	cmdline.txt	/*c_CTRL-E*
+c_CTRL-H	cmdline.txt	/*c_CTRL-H*
+c_CTRL-I	cmdline.txt	/*c_CTRL-I*
+c_CTRL-J	cmdline.txt	/*c_CTRL-J*
+c_CTRL-K	cmdline.txt	/*c_CTRL-K*
+c_CTRL-L	cmdline.txt	/*c_CTRL-L*
+c_CTRL-N	cmdline.txt	/*c_CTRL-N*
+c_CTRL-P	cmdline.txt	/*c_CTRL-P*
+c_CTRL-Q	cmdline.txt	/*c_CTRL-Q*
+c_CTRL-R	cmdline.txt	/*c_CTRL-R*
+c_CTRL-R_=	cmdline.txt	/*c_CTRL-R_=*
+c_CTRL-R_CTRL-A	cmdline.txt	/*c_CTRL-R_CTRL-A*
+c_CTRL-R_CTRL-F	cmdline.txt	/*c_CTRL-R_CTRL-F*
+c_CTRL-R_CTRL-O	cmdline.txt	/*c_CTRL-R_CTRL-O*
+c_CTRL-R_CTRL-P	cmdline.txt	/*c_CTRL-R_CTRL-P*
+c_CTRL-R_CTRL-R	cmdline.txt	/*c_CTRL-R_CTRL-R*
+c_CTRL-R_CTRL-W	cmdline.txt	/*c_CTRL-R_CTRL-W*
+c_CTRL-U	cmdline.txt	/*c_CTRL-U*
+c_CTRL-V	cmdline.txt	/*c_CTRL-V*
+c_CTRL-W	cmdline.txt	/*c_CTRL-W*
+c_CTRL-Y	cmdline.txt	/*c_CTRL-Y*
+c_CTRL-\_CTRL-G	intro.txt	/*c_CTRL-\\_CTRL-G*
+c_CTRL-\_CTRL-N	intro.txt	/*c_CTRL-\\_CTRL-N*
+c_CTRL-\_e	cmdline.txt	/*c_CTRL-\\_e*
+c_CTRL-^	cmdline.txt	/*c_CTRL-^*
+c_CTRL-_	cmdline.txt	/*c_CTRL-_*
+c_digraph	cmdline.txt	/*c_digraph*
+c_wildchar	cmdline.txt	/*c_wildchar*
+carriage-return	intro.txt	/*carriage-return*
+case	change.txt	/*case*
+catch-all	eval.txt	/*catch-all*
+catch-errors	eval.txt	/*catch-errors*
+catch-interrupt	eval.txt	/*catch-interrupt*
+catch-order	eval.txt	/*catch-order*
+catch-text	eval.txt	/*catch-text*
+cc	change.txt	/*cc*
+change-list-jumps	motion.txt	/*change-list-jumps*
+change.txt	change.txt	/*change.txt*
+changed-5.1	version5.txt	/*changed-5.1*
+changed-5.2	version5.txt	/*changed-5.2*
+changed-5.3	version5.txt	/*changed-5.3*
+changed-5.4	version5.txt	/*changed-5.4*
+changed-5.5	version5.txt	/*changed-5.5*
+changed-5.6	version5.txt	/*changed-5.6*
+changed-5.7	version5.txt	/*changed-5.7*
+changed-5.8	version5.txt	/*changed-5.8*
+changed-6.1	version6.txt	/*changed-6.1*
+changed-6.2	version6.txt	/*changed-6.2*
+changed-6.3	version6.txt	/*changed-6.3*
+changelist	motion.txt	/*changelist*
+changelog-plugin	filetype.txt	/*changelog-plugin*
+changelog-syntax	syntax.txt	/*changelog-syntax*
+changelog.vim	syntax.txt	/*changelog.vim*
+changetick	eval.txt	/*changetick*
+changing	change.txt	/*changing*
+char2nr()	eval.txt	/*char2nr()*
+characterwise	motion.txt	/*characterwise*
+characterwise-register	change.txt	/*characterwise-register*
+characterwise-visual	visual.txt	/*characterwise-visual*
+charconvert_from-variable	eval.txt	/*charconvert_from-variable*
+charconvert_to-variable	eval.txt	/*charconvert_to-variable*
+charset	mbyte.txt	/*charset*
+charset-conversion	mbyte.txt	/*charset-conversion*
+chill-syntax	syntax.txt	/*chill-syntax*
+chill.vim	syntax.txt	/*chill.vim*
+cindent()	eval.txt	/*cindent()*
+cinkeys-format	indent.txt	/*cinkeys-format*
+cinoptions-values	indent.txt	/*cinoptions-values*
+client-server	remote.txt	/*client-server*
+clientserver	remote.txt	/*clientserver*
+clipboard	gui.txt	/*clipboard*
+cmdarg-variable	eval.txt	/*cmdarg-variable*
+cmdbang-variable	eval.txt	/*cmdbang-variable*
+cmdline-arguments	vi_diff.txt	/*cmdline-arguments*
+cmdline-changed	version5.txt	/*cmdline-changed*
+cmdline-completion	cmdline.txt	/*cmdline-completion*
+cmdline-editing	cmdline.txt	/*cmdline-editing*
+cmdline-history	cmdline.txt	/*cmdline-history*
+cmdline-lines	cmdline.txt	/*cmdline-lines*
+cmdline-ranges	cmdline.txt	/*cmdline-ranges*
+cmdline-special	cmdline.txt	/*cmdline-special*
+cmdline-too-long	cmdline.txt	/*cmdline-too-long*
+cmdline-window	cmdline.txt	/*cmdline-window*
+cmdline.txt	cmdline.txt	/*cmdline.txt*
+cmdwin	cmdline.txt	/*cmdwin*
+cmdwin-char	cmdline.txt	/*cmdwin-char*
+cobol-syntax	syntax.txt	/*cobol-syntax*
+cobol.vim	syntax.txt	/*cobol.vim*
+codeset	mbyte.txt	/*codeset*
+coding-style	develop.txt	/*coding-style*
+col()	eval.txt	/*col()*
+coldfusion-syntax	syntax.txt	/*coldfusion-syntax*
+coldfusion.vim	syntax.txt	/*coldfusion.vim*
+collapse	tips.txt	/*collapse*
+color-xterm	syntax.txt	/*color-xterm*
+coloring	syntax.txt	/*coloring*
+colortest.vim	syntax.txt	/*colortest.vim*
+command-mode	intro.txt	/*command-mode*
+compatible-default	starting.txt	/*compatible-default*
+compile-changes-5	version5.txt	/*compile-changes-5*
+compile-changes-6	version6.txt	/*compile-changes-6*
+compiler-manx	quickfix.txt	/*compiler-manx*
+compiler-pyunit	quickfix.txt	/*compiler-pyunit*
+compiler-select	quickfix.txt	/*compiler-select*
+compiler-tex	quickfix.txt	/*compiler-tex*
+compl-current	insert.txt	/*compl-current*
+compl-define	insert.txt	/*compl-define*
+compl-dictionary	insert.txt	/*compl-dictionary*
+compl-filename	insert.txt	/*compl-filename*
+compl-generic	insert.txt	/*compl-generic*
+compl-keyword	insert.txt	/*compl-keyword*
+compl-tag	insert.txt	/*compl-tag*
+compl-vim	insert.txt	/*compl-vim*
+compl-whole-line	insert.txt	/*compl-whole-line*
+complex-change	change.txt	/*complex-change*
+complex-repeat	repeat.txt	/*complex-repeat*
+compress	pi_gzip.txt	/*compress*
+confirm()	eval.txt	/*confirm()*
+connection-refused	message.txt	/*connection-refused*
+console-menus	gui.txt	/*console-menus*
+control	intro.txt	/*control*
+conversion-server	mbyte.txt	/*conversion-server*
+convert-to-HTML	syntax.txt	/*convert-to-HTML*
+convert-to-XHTML	syntax.txt	/*convert-to-XHTML*
+convert-to-XML	syntax.txt	/*convert-to-XML*
+copy-diffs	diff.txt	/*copy-diffs*
+copy-move	change.txt	/*copy-move*
+copying	uganda.txt	/*copying*
+copyright	uganda.txt	/*copyright*
+count	intro.txt	/*count*
+count-bytes	tips.txt	/*count-bytes*
+count-items	tips.txt	/*count-items*
+count-variable	eval.txt	/*count-variable*
+count1-variable	eval.txt	/*count1-variable*
+cp-default	version5.txt	/*cp-default*
+cpo-!	options.txt	/*cpo-!*
+cpo-$	options.txt	/*cpo-$*
+cpo-%	options.txt	/*cpo-%*
+cpo-<	options.txt	/*cpo-<*
+cpo-A	options.txt	/*cpo-A*
+cpo-B	options.txt	/*cpo-B*
+cpo-C	options.txt	/*cpo-C*
+cpo-D	options.txt	/*cpo-D*
+cpo-E	options.txt	/*cpo-E*
+cpo-F	options.txt	/*cpo-F*
+cpo-J	options.txt	/*cpo-J*
+cpo-K	options.txt	/*cpo-K*
+cpo-L	options.txt	/*cpo-L*
+cpo-M	options.txt	/*cpo-M*
+cpo-O	options.txt	/*cpo-O*
+cpo-R	options.txt	/*cpo-R*
+cpo-S	options.txt	/*cpo-S*
+cpo-W	options.txt	/*cpo-W*
+cpo-a	options.txt	/*cpo-a*
+cpo-b	options.txt	/*cpo-b*
+cpo-c	options.txt	/*cpo-c*
+cpo-d	options.txt	/*cpo-d*
+cpo-e	options.txt	/*cpo-e*
+cpo-f	options.txt	/*cpo-f*
+cpo-g	options.txt	/*cpo-g*
+cpo-i	options.txt	/*cpo-i*
+cpo-j	options.txt	/*cpo-j*
+cpo-k	options.txt	/*cpo-k*
+cpo-l	options.txt	/*cpo-l*
+cpo-m	options.txt	/*cpo-m*
+cpo-n	options.txt	/*cpo-n*
+cpo-o	options.txt	/*cpo-o*
+cpo-p	options.txt	/*cpo-p*
+cpo-r	options.txt	/*cpo-r*
+cpo-s	options.txt	/*cpo-s*
+cpo-star	options.txt	/*cpo-star*
+cpo-t	options.txt	/*cpo-t*
+cpo-u	options.txt	/*cpo-u*
+cpo-v	options.txt	/*cpo-v*
+cpo-w	options.txt	/*cpo-w*
+cpo-x	options.txt	/*cpo-x*
+cpo-y	options.txt	/*cpo-y*
+crash-recovery	recover.txt	/*crash-recovery*
+creating-menus	gui.txt	/*creating-menus*
+credits	intro.txt	/*credits*
+crontab	options.txt	/*crontab*
+cs-find	if_cscop.txt	/*cs-find*
+cs7-problem	term.txt	/*cs7-problem*
+cscope	if_cscop.txt	/*cscope*
+cscope-commands	if_cscop.txt	/*cscope-commands*
+cscope-find	if_cscop.txt	/*cscope-find*
+cscope-howtouse	if_cscop.txt	/*cscope-howtouse*
+cscope-info	if_cscop.txt	/*cscope-info*
+cscope-intro	if_cscop.txt	/*cscope-intro*
+cscope-limitations	if_cscop.txt	/*cscope-limitations*
+cscope-options	if_cscop.txt	/*cscope-options*
+cscope-suggestions	if_cscop.txt	/*cscope-suggestions*
+cscope-win32	if_cscop.txt	/*cscope-win32*
+cscope_connection()	eval.txt	/*cscope_connection()*
+cscopepathcomp	if_cscop.txt	/*cscopepathcomp*
+cscopeprg	if_cscop.txt	/*cscopeprg*
+cscopequickfix	if_cscop.txt	/*cscopequickfix*
+cscopetag	if_cscop.txt	/*cscopetag*
+cscopetagorder	if_cscop.txt	/*cscopetagorder*
+cscopeverbose	if_cscop.txt	/*cscopeverbose*
+csh-syntax	syntax.txt	/*csh-syntax*
+csh.vim	syntax.txt	/*csh.vim*
+cspc	if_cscop.txt	/*cspc*
+csprg	if_cscop.txt	/*csprg*
+csqf	if_cscop.txt	/*csqf*
+cst	if_cscop.txt	/*cst*
+csto	if_cscop.txt	/*csto*
+csverb	if_cscop.txt	/*csverb*
+ctags	tagsrch.txt	/*ctags*
+ctags-gone	version6.txt	/*ctags-gone*
+cterm-colors	syntax.txt	/*cterm-colors*
+ctrl	intro.txt	/*ctrl*
+ctype-variable	eval.txt	/*ctype-variable*
+curly-braces-function-names	eval.txt	/*curly-braces-function-names*
+curly-braces-names	eval.txt	/*curly-braces-names*
+curpos-visual	version6.txt	/*curpos-visual*
+current-directory	editing.txt	/*current-directory*
+current-file	editing.txt	/*current-file*
+current_compiler	quickfix.txt	/*current_compiler*
+cursor()	eval.txt	/*cursor()*
+cursor-blinking	options.txt	/*cursor-blinking*
+cursor-down	intro.txt	/*cursor-down*
+cursor-left	intro.txt	/*cursor-left*
+cursor-motions	motion.txt	/*cursor-motions*
+cursor-position	pattern.txt	/*cursor-position*
+cursor-right	intro.txt	/*cursor-right*
+cursor-up	intro.txt	/*cursor-up*
+cursor_down	intro.txt	/*cursor_down*
+cursor_left	intro.txt	/*cursor_left*
+cursor_right	intro.txt	/*cursor_right*
+cursor_up	intro.txt	/*cursor_up*
+cw	change.txt	/*cw*
+cweb-syntax	syntax.txt	/*cweb-syntax*
+cweb.vim	syntax.txt	/*cweb.vim*
+cynlib-syntax	syntax.txt	/*cynlib-syntax*
+cynlib.vim	syntax.txt	/*cynlib.vim*
+d	change.txt	/*d*
+daB	motion.txt	/*daB*
+daW	motion.txt	/*daW*
+dab	motion.txt	/*dab*
+dap	motion.txt	/*dap*
+das	motion.txt	/*das*
+dav	pi_netrw.txt	/*dav*
+daw	motion.txt	/*daw*
+dd	change.txt	/*dd*
+debug-highlight	debugger.txt	/*debug-highlight*
+debug-mode	repeat.txt	/*debug-mode*
+debug-scripts	repeat.txt	/*debug-scripts*
+debug-signs	debugger.txt	/*debug-signs*
+debug-vim	intro.txt	/*debug-vim*
+debugger-compilation	debugger.txt	/*debugger-compilation*
+debugger-features	debugger.txt	/*debugger-features*
+debugger-integration	debugger.txt	/*debugger-integration*
+debugger-support	debugger.txt	/*debugger-support*
+debugger.txt	debugger.txt	/*debugger.txt*
+dec-mouse	options.txt	/*dec-mouse*
+definition-search	tagsrch.txt	/*definition-search*
+definitions	intro.txt	/*definitions*
+delete()	eval.txt	/*delete()*
+delete-insert	change.txt	/*delete-insert*
+delete-menus	gui.txt	/*delete-menus*
+deleting	change.txt	/*deleting*
+design-assumptions	develop.txt	/*design-assumptions*
+design-compatible	develop.txt	/*design-compatible*
+design-decisions	develop.txt	/*design-decisions*
+design-documented	develop.txt	/*design-documented*
+design-flexible	develop.txt	/*design-flexible*
+design-goals	develop.txt	/*design-goals*
+design-improved	develop.txt	/*design-improved*
+design-maintain	develop.txt	/*design-maintain*
+design-multi-platform	develop.txt	/*design-multi-platform*
+design-not	develop.txt	/*design-not*
+design-speed-size	develop.txt	/*design-speed-size*
+desktop-syntax	syntax.txt	/*desktop-syntax*
+desktop.vim	syntax.txt	/*desktop.vim*
+develop.txt	develop.txt	/*develop.txt*
+development	develop.txt	/*development*
+dh	change.txt	/*dh*
+diB	motion.txt	/*diB*
+diW	motion.txt	/*diW*
+dialog	gui_w32.txt	/*dialog*
+dialogs-added	version5.txt	/*dialogs-added*
+dib	motion.txt	/*dib*
+did_filetype()	eval.txt	/*did_filetype()*
+diff	diff.txt	/*diff*
+diff-diffexpr	diff.txt	/*diff-diffexpr*
+diff-mode	diff.txt	/*diff-mode*
+diff-options	diff.txt	/*diff-options*
+diff-patchexpr	diff.txt	/*diff-patchexpr*
+diff.txt	diff.txt	/*diff.txt*
+digraph-arg	change.txt	/*digraph-arg*
+digraph-table	digraph.txt	/*digraph-table*
+digraph.txt	digraph.txt	/*digraph.txt*
+digraphs	digraph.txt	/*digraphs*
+digraphs-changed	version6.txt	/*digraphs-changed*
+digraphs-default	digraph.txt	/*digraphs-default*
+digraphs-define	digraph.txt	/*digraphs-define*
+digraphs-use	digraph.txt	/*digraphs-use*
+dip	motion.txt	/*dip*
+dircolors-syntax	syntax.txt	/*dircolors-syntax*
+dircolors.vim	syntax.txt	/*dircolors.vim*
+dis	motion.txt	/*dis*
+disable-menus	gui.txt	/*disable-menus*
+distribution	intro.txt	/*distribution*
+diw	motion.txt	/*diw*
+dl	change.txt	/*dl*
+do	diff.txt	/*do*
+doc-file-list	help.txt	/*doc-file-list*
+docbk-syntax	syntax.txt	/*docbk-syntax*
+docbk.vim	syntax.txt	/*docbk.vim*
+docbksgml-syntax	syntax.txt	/*docbksgml-syntax*
+docbksgml.vim	syntax.txt	/*docbksgml.vim*
+docbkxml-syntax	syntax.txt	/*docbkxml-syntax*
+docbkxml.vim	syntax.txt	/*docbkxml.vim*
+docbook	syntax.txt	/*docbook*
+documentation-6	version6.txt	/*documentation-6*
+dos	os_dos.txt	/*dos*
+dos-:cd	os_dos.txt	/*dos-:cd*
+dos-CTRL-Break	os_dos.txt	/*dos-CTRL-Break*
+dos-backslash	os_dos.txt	/*dos-backslash*
+dos-colors	os_dos.txt	/*dos-colors*
+dos-file-formats	os_dos.txt	/*dos-file-formats*
+dos-locations	os_dos.txt	/*dos-locations*
+dos-shell	os_dos.txt	/*dos-shell*
+dos-standard-mappings	os_dos.txt	/*dos-standard-mappings*
+dos-temp-files	os_dos.txt	/*dos-temp-files*
+dos16	os_msdos.txt	/*dos16*
+dos32	os_msdos.txt	/*dos32*
+dosbatch-syntax	syntax.txt	/*dosbatch-syntax*
+dosbatch.vim	syntax.txt	/*dosbatch.vim*
+double-click	term.txt	/*double-click*
+download	intro.txt	/*download*
+dp	diff.txt	/*dp*
+drag-n-drop	gui.txt	/*drag-n-drop*
+drag-n-drop-win32	gui_w32.txt	/*drag-n-drop-win32*
+drag-status-line	term.txt	/*drag-status-line*
+dtd-syntax	syntax.txt	/*dtd-syntax*
+dtd.vim	syntax.txt	/*dtd.vim*
+dying-variable	eval.txt	/*dying-variable*
+e	motion.txt	/*e*
+easy	starting.txt	/*easy*
+edit-a-file	editing.txt	/*edit-a-file*
+edit-binary	editing.txt	/*edit-binary*
+edit-dialogs	editing.txt	/*edit-dialogs*
+edit-files	editing.txt	/*edit-files*
+edit-intro	editing.txt	/*edit-intro*
+edit-no-break	usr_25.txt	/*edit-no-break*
+editing.txt	editing.txt	/*editing.txt*
+efm-entries	quickfix.txt	/*efm-entries*
+efm-ignore	quickfix.txt	/*efm-ignore*
+eiffel-syntax	syntax.txt	/*eiffel-syntax*
+eiffel.vim	syntax.txt	/*eiffel.vim*
+emacs-keys	tips.txt	/*emacs-keys*
+emacs-tags	tagsrch.txt	/*emacs-tags*
+emacs_tags	tagsrch.txt	/*emacs_tags*
+encoding-names	mbyte.txt	/*encoding-names*
+encoding-table	mbyte.txt	/*encoding-table*
+encoding-values	mbyte.txt	/*encoding-values*
+encryption	editing.txt	/*encryption*
+end	intro.txt	/*end*
+end-of-file	pattern.txt	/*end-of-file*
+enlightened-terminal	syntax.txt	/*enlightened-terminal*
+erlang-syntax	syntax.txt	/*erlang-syntax*
+erlang.vim	syntax.txt	/*erlang.vim*
+errmsg-variable	eval.txt	/*errmsg-variable*
+error-file-format	quickfix.txt	/*error-file-format*
+error-messages	message.txt	/*error-messages*
+errorformat	quickfix.txt	/*errorformat*
+errorformat-Jikes	quickfix.txt	/*errorformat-Jikes*
+errorformat-LaTeX	quickfix.txt	/*errorformat-LaTeX*
+errorformat-Perl	quickfix.txt	/*errorformat-Perl*
+errorformat-ant	quickfix.txt	/*errorformat-ant*
+errorformat-changed	version4.txt	/*errorformat-changed*
+errorformat-jade	quickfix.txt	/*errorformat-jade*
+errorformat-javac	quickfix.txt	/*errorformat-javac*
+errorformat-multi-line	quickfix.txt	/*errorformat-multi-line*
+errorformat-separate-filename	quickfix.txt	/*errorformat-separate-filename*
+errorformats	quickfix.txt	/*errorformats*
+escape	intro.txt	/*escape*
+escape()	eval.txt	/*escape()*
+escape-bar	version4.txt	/*escape-bar*
+eval	eval.txt	/*eval*
+eval-examples	eval.txt	/*eval-examples*
+eval-sandbox	eval.txt	/*eval-sandbox*
+eval.txt	eval.txt	/*eval.txt*
+eventhandler()	eval.txt	/*eventhandler()*
+eview	starting.txt	/*eview*
+evim	starting.txt	/*evim*
+evim-keys	starting.txt	/*evim-keys*
+evim.vim	starting.txt	/*evim.vim*
+ex	starting.txt	/*ex*
+ex-cmd-index	index.txt	/*ex-cmd-index*
+ex-edit-index	index.txt	/*ex-edit-index*
+ex:	options.txt	/*ex:*
+except-autocmd	eval.txt	/*except-autocmd*
+except-autocmd-Cmd	eval.txt	/*except-autocmd-Cmd*
+except-autocmd-Post	eval.txt	/*except-autocmd-Post*
+except-autocmd-Pre	eval.txt	/*except-autocmd-Pre*
+except-autocmd-ill	eval.txt	/*except-autocmd-ill*
+except-compat	eval.txt	/*except-compat*
+except-examine	eval.txt	/*except-examine*
+except-from-finally	eval.txt	/*except-from-finally*
+except-hier-param	eval.txt	/*except-hier-param*
+except-several-errors	eval.txt	/*except-several-errors*
+except-single-line	eval.txt	/*except-single-line*
+except-syntax-err	eval.txt	/*except-syntax-err*
+except-syntax-error	eval.txt	/*except-syntax-error*
+exception-handling	eval.txt	/*exception-handling*
+exception-variable	eval.txt	/*exception-variable*
+exclusive	motion.txt	/*exclusive*
+executable()	eval.txt	/*executable()*
+execute-menus	gui.txt	/*execute-menus*
+exim	starting.txt	/*exim*
+exists()	eval.txt	/*exists()*
+expand()	eval.txt	/*expand()*
+expand-env	options.txt	/*expand-env*
+expand-environment-var	options.txt	/*expand-environment-var*
+expl-starting	pi_expl.txt	/*expl-starting*
+explorer-delete	pi_expl.txt	/*explorer-delete*
+explorer-rename	pi_expl.txt	/*explorer-rename*
+expr	eval.txt	/*expr*
+expr-!	eval.txt	/*expr-!*
+expr-!=	eval.txt	/*expr-!=*
+expr-!=#	eval.txt	/*expr-!=#*
+expr-!=?	eval.txt	/*expr-!=?*
+expr-!~	eval.txt	/*expr-!~*
+expr-!~#	eval.txt	/*expr-!~#*
+expr-!~?	eval.txt	/*expr-!~?*
+expr-%	eval.txt	/*expr-%*
+expr-&&	eval.txt	/*expr-&&*
+expr-'	eval.txt	/*expr-'*
+expr-+	eval.txt	/*expr-+*
+expr--	eval.txt	/*expr--*
+expr-.	eval.txt	/*expr-.*
+expr-/	eval.txt	/*expr-\/*
+expr-<	eval.txt	/*expr-<*
+expr-<#	eval.txt	/*expr-<#*
+expr-<=	eval.txt	/*expr-<=*
+expr-<=#	eval.txt	/*expr-<=#*
+expr-<=?	eval.txt	/*expr-<=?*
+expr-<?	eval.txt	/*expr-<?*
+expr-==	eval.txt	/*expr-==*
+expr-==#	eval.txt	/*expr-==#*
+expr-==?	eval.txt	/*expr-==?*
+expr-=~	eval.txt	/*expr-=~*
+expr-=~#	eval.txt	/*expr-=~#*
+expr-=~?	eval.txt	/*expr-=~?*
+expr->	eval.txt	/*expr->*
+expr->#	eval.txt	/*expr->#*
+expr->=	eval.txt	/*expr->=*
+expr->=#	eval.txt	/*expr->=#*
+expr->=?	eval.txt	/*expr->=?*
+expr->?	eval.txt	/*expr->?*
+expr-[]	eval.txt	/*expr-[]*
+expr-barbar	eval.txt	/*expr-barbar*
+expr-env	eval.txt	/*expr-env*
+expr-env-expand	eval.txt	/*expr-env-expand*
+expr-function	eval.txt	/*expr-function*
+expr-nesting	eval.txt	/*expr-nesting*
+expr-number	eval.txt	/*expr-number*
+expr-option	eval.txt	/*expr-option*
+expr-quote	eval.txt	/*expr-quote*
+expr-register	eval.txt	/*expr-register*
+expr-star	eval.txt	/*expr-star*
+expr-string	eval.txt	/*expr-string*
+expr-unary-+	eval.txt	/*expr-unary-+*
+expr-unary--	eval.txt	/*expr-unary--*
+expr-variable	eval.txt	/*expr-variable*
+expr1	eval.txt	/*expr1*
+expr2	eval.txt	/*expr2*
+expr3	eval.txt	/*expr3*
+expr4	eval.txt	/*expr4*
+expr5	eval.txt	/*expr5*
+expr6	eval.txt	/*expr6*
+expr7	eval.txt	/*expr7*
+expr8	eval.txt	/*expr8*
+expr9	eval.txt	/*expr9*
+expression	eval.txt	/*expression*
+expression-commands	eval.txt	/*expression-commands*
+expression-syntax	eval.txt	/*expression-syntax*
+exrc	starting.txt	/*exrc*
+extension-removal	cmdline.txt	/*extension-removal*
+extensions-improvements	todo.txt	/*extensions-improvements*
+f	motion.txt	/*f*
+faq	intro.txt	/*faq*
+farsi	farsi.txt	/*farsi*
+farsi.txt	farsi.txt	/*farsi.txt*
+fasm.vim	syntax.txt	/*fasm.vim*
+feature-list	eval.txt	/*feature-list*
+fetch	pi_netrw.txt	/*fetch*
+file-browser	pi_expl.txt	/*file-browser*
+file-browser-5.2	version5.txt	/*file-browser-5.2*
+file-explorer	pi_expl.txt	/*file-explorer*
+file-formats	editing.txt	/*file-formats*
+file-pattern	autocmd.txt	/*file-pattern*
+file-read	insert.txt	/*file-read*
+file-searching	editing.txt	/*file-searching*
+file-type	filetype.txt	/*file-type*
+file-types	filetype.txt	/*file-types*
+file_readable()	eval.txt	/*file_readable()*
+fileencoding-changed	version6.txt	/*fileencoding-changed*
+filename-backslash	cmdline.txt	/*filename-backslash*
+filename-modifiers	cmdline.txt	/*filename-modifiers*
+filereadable()	eval.txt	/*filereadable()*
+filetype	filetype.txt	/*filetype*
+filetype-detect	filetype.txt	/*filetype-detect*
+filetype-ignore	filetype.txt	/*filetype-ignore*
+filetype-overrule	filetype.txt	/*filetype-overrule*
+filetype-plugin	usr_43.txt	/*filetype-plugin*
+filetype-plugins	filetype.txt	/*filetype-plugins*
+filetype.txt	filetype.txt	/*filetype.txt*
+filetypedetect-changed	version6.txt	/*filetypedetect-changed*
+filetypes	filetype.txt	/*filetypes*
+filewritable()	eval.txt	/*filewritable()*
+filter	change.txt	/*filter*
+find-manpage	usr_12.txt	/*find-manpage*
+find-replace	usr_10.txt	/*find-replace*
+fixed-5.1	version5.txt	/*fixed-5.1*
+fixed-5.2	version5.txt	/*fixed-5.2*
+fixed-5.3	version5.txt	/*fixed-5.3*
+fixed-5.4	version5.txt	/*fixed-5.4*
+fixed-5.5	version5.txt	/*fixed-5.5*
+fixed-5.6	version5.txt	/*fixed-5.6*
+fixed-5.7	version5.txt	/*fixed-5.7*
+fixed-5.8	version5.txt	/*fixed-5.8*
+fixed-6.1	version6.txt	/*fixed-6.1*
+fixed-6.2	version6.txt	/*fixed-6.2*
+fixed-6.3	version6.txt	/*fixed-6.3*
+fname_diff-variable	eval.txt	/*fname_diff-variable*
+fname_in-variable	eval.txt	/*fname_in-variable*
+fname_new-variable	eval.txt	/*fname_new-variable*
+fname_out-variable	eval.txt	/*fname_out-variable*
+fnamemodify()	eval.txt	/*fnamemodify()*
+fo-table	change.txt	/*fo-table*
+fold-behavior	fold.txt	/*fold-behavior*
+fold-colors	fold.txt	/*fold-colors*
+fold-commands	fold.txt	/*fold-commands*
+fold-create-marker	fold.txt	/*fold-create-marker*
+fold-delete-marker	fold.txt	/*fold-delete-marker*
+fold-diff	fold.txt	/*fold-diff*
+fold-expr	fold.txt	/*fold-expr*
+fold-foldcolumn	fold.txt	/*fold-foldcolumn*
+fold-foldlevel	fold.txt	/*fold-foldlevel*
+fold-foldtext	fold.txt	/*fold-foldtext*
+fold-indent	fold.txt	/*fold-indent*
+fold-manual	fold.txt	/*fold-manual*
+fold-marker	fold.txt	/*fold-marker*
+fold-methods	fold.txt	/*fold-methods*
+fold-options	fold.txt	/*fold-options*
+fold-syntax	fold.txt	/*fold-syntax*
+fold.txt	fold.txt	/*fold.txt*
+foldclosed()	eval.txt	/*foldclosed()*
+foldclosedend()	eval.txt	/*foldclosedend()*
+folddashes-variable	eval.txt	/*folddashes-variable*
+foldend-variable	eval.txt	/*foldend-variable*
+folding	fold.txt	/*folding*
+foldlevel()	eval.txt	/*foldlevel()*
+foldlevel-variable	eval.txt	/*foldlevel-variable*
+foldstart-variable	eval.txt	/*foldstart-variable*
+foldtext()	eval.txt	/*foldtext()*
+font-sizes	gui_x11.txt	/*font-sizes*
+fontset	mbyte.txt	/*fontset*
+foreground()	eval.txt	/*foreground()*
+fork	os_unix.txt	/*fork*
+form-syntax	syntax.txt	/*form-syntax*
+form.vim	syntax.txt	/*form.vim*
+format-bullet-list	tips.txt	/*format-bullet-list*
+format-comments	change.txt	/*format-comments*
+formatting	change.txt	/*formatting*
+formfeed	intro.txt	/*formfeed*
+fortran-indent	indent.txt	/*fortran-indent*
+fortran-plugin	filetype.txt	/*fortran-plugin*
+fortran-syntax	syntax.txt	/*fortran-syntax*
+fortran.vim	syntax.txt	/*fortran.vim*
+french-maillist	intro.txt	/*french-maillist*
+frombook	usr_01.txt	/*frombook*
+ftp	pi_netrw.txt	/*ftp*
+ftplugin	usr_41.txt	/*ftplugin*
+ftplugin-docs	filetype.txt	/*ftplugin-docs*
+ftplugin-name	usr_05.txt	/*ftplugin-name*
+ftplugin-overrule	filetype.txt	/*ftplugin-overrule*
+ftplugin-special	usr_41.txt	/*ftplugin-special*
+ftplugins	usr_05.txt	/*ftplugins*
+function-argument	eval.txt	/*function-argument*
+function-key	intro.txt	/*function-key*
+function-list	usr_41.txt	/*function-list*
+function-range-example	eval.txt	/*function-range-example*
+function_key	intro.txt	/*function_key*
+functions	eval.txt	/*functions*
+fvwm-syntax	syntax.txt	/*fvwm-syntax*
+fvwm.vim	syntax.txt	/*fvwm.vim*
+fvwm2rc	syntax.txt	/*fvwm2rc*
+fvwmrc	syntax.txt	/*fvwmrc*
+g	index.txt	/*g*
+g#	pattern.txt	/*g#*
+g$	motion.txt	/*g$*
+g&	change.txt	/*g&*
+g'	motion.txt	/*g'*
+g'a	motion.txt	/*g'a*
+g,	motion.txt	/*g,*
+g0	motion.txt	/*g0*
+g8	various.txt	/*g8*
+g:explDateFormat	pi_expl.txt	/*g:explDateFormat*
+g:explDetailedHelp	pi_expl.txt	/*g:explDetailedHelp*
+g:explDetailedList	pi_expl.txt	/*g:explDetailedList*
+g:explDirsFirst	pi_expl.txt	/*g:explDirsFirst*
+g:explFileHandler	pi_expl.txt	/*g:explFileHandler*
+g:explHideFiles	pi_expl.txt	/*g:explHideFiles*
+g:explSortBy	pi_expl.txt	/*g:explSortBy*
+g:explSplitBelow	pi_expl.txt	/*g:explSplitBelow*
+g:explSplitRight	pi_expl.txt	/*g:explSplitRight*
+g:explStartBelow	pi_expl.txt	/*g:explStartBelow*
+g:explStartRight	pi_expl.txt	/*g:explStartRight*
+g:explSuffixesLast	pi_expl.txt	/*g:explSuffixesLast*
+g:explUseSeparators	pi_expl.txt	/*g:explUseSeparators*
+g:explVertical	pi_expl.txt	/*g:explVertical*
+g:explWinSize	pi_expl.txt	/*g:explWinSize*
+g:var	eval.txt	/*g:var*
+g;	motion.txt	/*g;*
+g<Down>	motion.txt	/*g<Down>*
+g<End>	motion.txt	/*g<End>*
+g<Home>	motion.txt	/*g<Home>*
+g<LeftMouse>	tagsrch.txt	/*g<LeftMouse>*
+g<RightMouse>	tagsrch.txt	/*g<RightMouse>*
+g<Up>	motion.txt	/*g<Up>*
+g?	change.txt	/*g?*
+g??	change.txt	/*g??*
+g?g?	change.txt	/*g?g?*
+gD	pattern.txt	/*gD*
+gE	motion.txt	/*gE*
+gH	visual.txt	/*gH*
+gI	insert.txt	/*gI*
+gJ	change.txt	/*gJ*
+gP	change.txt	/*gP*
+gQ	intro.txt	/*gQ*
+gR	change.txt	/*gR*
+gU	change.txt	/*gU*
+gUU	change.txt	/*gUU*
+gUgU	change.txt	/*gUgU*
+gV	visual.txt	/*gV*
+g]	tagsrch.txt	/*g]*
+g^	motion.txt	/*g^*
+g_	motion.txt	/*g_*
+g_CTRL-A	various.txt	/*g_CTRL-A*
+g_CTRL-G	editing.txt	/*g_CTRL-G*
+g_CTRL-H	visual.txt	/*g_CTRL-H*
+g_CTRL-]	tagsrch.txt	/*g_CTRL-]*
+g`	motion.txt	/*g`*
+g`a	motion.txt	/*g`a*
+ga	various.txt	/*ga*
+gd	pattern.txt	/*gd*
+ge	motion.txt	/*ge*
+getbufvar()	eval.txt	/*getbufvar()*
+getchar()	eval.txt	/*getchar()*
+getcharmod()	eval.txt	/*getcharmod()*
+getcmdline()	eval.txt	/*getcmdline()*
+getcmdpos()	eval.txt	/*getcmdpos()*
+getcwd()	eval.txt	/*getcwd()*
+getfsize()	eval.txt	/*getfsize()*
+getftime()	eval.txt	/*getftime()*
+getline()	eval.txt	/*getline()*
+getreg()	eval.txt	/*getreg()*
+getregtype()	eval.txt	/*getregtype()*
+getwinposx()	eval.txt	/*getwinposx()*
+getwinposy()	eval.txt	/*getwinposy()*
+getwinvar()	eval.txt	/*getwinvar()*
+gex	starting.txt	/*gex*
+gf	editing.txt	/*gf*
+gg	motion.txt	/*gg*
+gh	visual.txt	/*gh*
+gi	insert.txt	/*gi*
+gj	motion.txt	/*gj*
+gk	motion.txt	/*gk*
+glob()	eval.txt	/*glob()*
+global-ime	mbyte.txt	/*global-ime*
+global-local	options.txt	/*global-local*
+global-variable	eval.txt	/*global-variable*
+globpath()	eval.txt	/*globpath()*
+gm	motion.txt	/*gm*
+gnome-session	gui_x11.txt	/*gnome-session*
+go	motion.txt	/*go*
+gp	change.txt	/*gp*
+gpm-mouse	term.txt	/*gpm-mouse*
+gq	change.txt	/*gq*
+gqap	change.txt	/*gqap*
+gqgq	change.txt	/*gqgq*
+gqq	change.txt	/*gqq*
+gr	change.txt	/*gr*
+graphic-option-gone	version4.txt	/*graphic-option-gone*
+greek	options.txt	/*greek*
+grep	quickfix.txt	/*grep*
+groff-syntax	syntax.txt	/*groff-syntax*
+groff.vim	syntax.txt	/*groff.vim*
+group-name	syntax.txt	/*group-name*
+gs	various.txt	/*gs*
+gsp.vim	syntax.txt	/*gsp.vim*
+gstar	pattern.txt	/*gstar*
+gtk-tooltip-colors	gui_x11.txt	/*gtk-tooltip-colors*
+gu	change.txt	/*gu*
+gugu	change.txt	/*gugu*
+gui	gui.txt	/*gui*
+gui-clipboard	gui_w32.txt	/*gui-clipboard*
+gui-colors	syntax.txt	/*gui-colors*
+gui-extras	gui.txt	/*gui-extras*
+gui-footer	debugger.txt	/*gui-footer*
+gui-fork	gui_x11.txt	/*gui-fork*
+gui-gnome	gui_x11.txt	/*gui-gnome*
+gui-gnome-session	gui_x11.txt	/*gui-gnome-session*
+gui-gtk	gui_x11.txt	/*gui-gtk*
+gui-gtk-socketid	gui_x11.txt	/*gui-gtk-socketid*
+gui-horiz-scroll	gui.txt	/*gui-horiz-scroll*
+gui-init	gui.txt	/*gui-init*
+gui-mouse	gui.txt	/*gui-mouse*
+gui-mouse-focus	gui.txt	/*gui-mouse-focus*
+gui-mouse-mapping	gui.txt	/*gui-mouse-mapping*
+gui-mouse-modeless	gui.txt	/*gui-mouse-modeless*
+gui-mouse-move	gui.txt	/*gui-mouse-move*
+gui-mouse-select	gui.txt	/*gui-mouse-select*
+gui-mouse-status	gui.txt	/*gui-mouse-status*
+gui-mouse-various	gui.txt	/*gui-mouse-various*
+gui-pty	gui_x11.txt	/*gui-pty*
+gui-pty-erase	gui_x11.txt	/*gui-pty-erase*
+gui-resources	gui_x11.txt	/*gui-resources*
+gui-scrollbars	gui.txt	/*gui-scrollbars*
+gui-selections	gui.txt	/*gui-selections*
+gui-shell	gui.txt	/*gui-shell*
+gui-shell-win32	gui_w32.txt	/*gui-shell-win32*
+gui-start	gui.txt	/*gui-start*
+gui-toolbar	gui.txt	/*gui-toolbar*
+gui-vert-scroll	gui.txt	/*gui-vert-scroll*
+gui-w16	gui_w16.txt	/*gui-w16*
+gui-w32	gui_w32.txt	/*gui-w32*
+gui-w32-cmdargs	gui_w32.txt	/*gui-w32-cmdargs*
+gui-w32-dialogs	gui_w32.txt	/*gui-w32-dialogs*
+gui-w32-printing	gui_w32.txt	/*gui-w32-printing*
+gui-w32-start	gui_w32.txt	/*gui-w32-start*
+gui-w32-various	gui_w32.txt	/*gui-w32-various*
+gui-w32s	gui_w32.txt	/*gui-w32s*
+gui-win32-maximized	gui_w32.txt	/*gui-win32-maximized*
+gui-x11	gui_x11.txt	/*gui-x11*
+gui-x11-athena	gui_x11.txt	/*gui-x11-athena*
+gui-x11-compiling	gui_x11.txt	/*gui-x11-compiling*
+gui-x11-gtk	gui_x11.txt	/*gui-x11-gtk*
+gui-x11-misc	gui_x11.txt	/*gui-x11-misc*
+gui-x11-motif	gui_x11.txt	/*gui-x11-motif*
+gui-x11-neXtaw	gui_x11.txt	/*gui-x11-neXtaw*
+gui-x11-printing	gui_x11.txt	/*gui-x11-printing*
+gui-x11-start	gui_x11.txt	/*gui-x11-start*
+gui-x11-various	gui_x11.txt	/*gui-x11-various*
+gui.txt	gui.txt	/*gui.txt*
+gui_w16.txt	gui_w16.txt	/*gui_w16.txt*
+gui_w32.txt	gui_w32.txt	/*gui_w32.txt*
+gui_x11.txt	gui_x11.txt	/*gui_x11.txt*
+guifontwide_gtk2	options.txt	/*guifontwide_gtk2*
+guioptions_a	options.txt	/*guioptions_a*
+guu	change.txt	/*guu*
+gv	visual.txt	/*gv*
+gview	starting.txt	/*gview*
+gvim	starting.txt	/*gvim*
+gvimdiff	diff.txt	/*gvimdiff*
+gvimrc	gui.txt	/*gvimrc*
+gw	change.txt	/*gw*
+gzip	pi_gzip.txt	/*gzip*
+gzip-autocmd	pi_gzip.txt	/*gzip-autocmd*
+gzip-example	autocmd.txt	/*gzip-example*
+gzip-helpfile	tips.txt	/*gzip-helpfile*
+g~	change.txt	/*g~*
+g~g~	change.txt	/*g~g~*
+g~~	change.txt	/*g~~*
+h	motion.txt	/*h*
+hangul	hangulin.txt	/*hangul*
+hangulin.txt	hangulin.txt	/*hangulin.txt*
+has()	eval.txt	/*has()*
+has-patch	eval.txt	/*has-patch*
+haskell-syntax	syntax.txt	/*haskell-syntax*
+haskell.vim	syntax.txt	/*haskell.vim*
+hasmapto()	eval.txt	/*hasmapto()*
+hebrew	hebrew.txt	/*hebrew*
+hebrew.txt	hebrew.txt	/*hebrew.txt*
+help	various.txt	/*help*
+help-context	help.txt	/*help-context*
+help-tags	tags	1
+help-translated	various.txt	/*help-translated*
+help-xterm-window	various.txt	/*help-xterm-window*
+help.txt	help.txt	/*help.txt*
+hex-editing	tips.txt	/*hex-editing*
+hidden-buffer	windows.txt	/*hidden-buffer*
+hidden-changed	version5.txt	/*hidden-changed*
+hidden-menus	gui.txt	/*hidden-menus*
+hidden-quit	windows.txt	/*hidden-quit*
+highlight-args	syntax.txt	/*highlight-args*
+highlight-changed	version4.txt	/*highlight-changed*
+highlight-cterm	syntax.txt	/*highlight-cterm*
+highlight-ctermbg	syntax.txt	/*highlight-ctermbg*
+highlight-ctermfg	syntax.txt	/*highlight-ctermfg*
+highlight-default	syntax.txt	/*highlight-default*
+highlight-font	syntax.txt	/*highlight-font*
+highlight-groups	syntax.txt	/*highlight-groups*
+highlight-gui	syntax.txt	/*highlight-gui*
+highlight-guibg	syntax.txt	/*highlight-guibg*
+highlight-guifg	syntax.txt	/*highlight-guifg*
+highlight-start	syntax.txt	/*highlight-start*
+highlight-stop	syntax.txt	/*highlight-stop*
+highlight-term	syntax.txt	/*highlight-term*
+highlightID()	eval.txt	/*highlightID()*
+highlight_exists()	eval.txt	/*highlight_exists()*
+his	cmdline.txt	/*his*
+hist-names	eval.txt	/*hist-names*
+histadd()	eval.txt	/*histadd()*
+histdel()	eval.txt	/*histdel()*
+histget()	eval.txt	/*histget()*
+histnr()	eval.txt	/*histnr()*
+history	cmdline.txt	/*history*
+hit-enter	message.txt	/*hit-enter*
+hit-return	message.txt	/*hit-return*
+hitest.vim	syntax.txt	/*hitest.vim*
+hjkl	usr_02.txt	/*hjkl*
+hl-Cursor	syntax.txt	/*hl-Cursor*
+hl-CursorIM	syntax.txt	/*hl-CursorIM*
+hl-DiffAdd	syntax.txt	/*hl-DiffAdd*
+hl-DiffChange	syntax.txt	/*hl-DiffChange*
+hl-DiffDelete	syntax.txt	/*hl-DiffDelete*
+hl-DiffText	syntax.txt	/*hl-DiffText*
+hl-Directory	syntax.txt	/*hl-Directory*
+hl-ErrorMsg	syntax.txt	/*hl-ErrorMsg*
+hl-FoldColumn	syntax.txt	/*hl-FoldColumn*
+hl-Folded	syntax.txt	/*hl-Folded*
+hl-IncSearch	syntax.txt	/*hl-IncSearch*
+hl-LineNr	syntax.txt	/*hl-LineNr*
+hl-Menu	syntax.txt	/*hl-Menu*
+hl-ModeMsg	syntax.txt	/*hl-ModeMsg*
+hl-MoreMsg	syntax.txt	/*hl-MoreMsg*
+hl-NonText	syntax.txt	/*hl-NonText*
+hl-Normal	syntax.txt	/*hl-Normal*
+hl-Question	syntax.txt	/*hl-Question*
+hl-Scrollbar	syntax.txt	/*hl-Scrollbar*
+hl-Search	syntax.txt	/*hl-Search*
+hl-SignColumn	syntax.txt	/*hl-SignColumn*
+hl-SpecialKey	syntax.txt	/*hl-SpecialKey*
+hl-StatusLine	syntax.txt	/*hl-StatusLine*
+hl-StatusLineNC	syntax.txt	/*hl-StatusLineNC*
+hl-Title	syntax.txt	/*hl-Title*
+hl-Tooltip	syntax.txt	/*hl-Tooltip*
+hl-User1	syntax.txt	/*hl-User1*
+hl-User1..9	syntax.txt	/*hl-User1..9*
+hl-VertSplit	syntax.txt	/*hl-VertSplit*
+hl-Visual	syntax.txt	/*hl-Visual*
+hl-VisualNOS	syntax.txt	/*hl-VisualNOS*
+hl-WarningMsg	syntax.txt	/*hl-WarningMsg*
+hl-WildMenu	syntax.txt	/*hl-WildMenu*
+hlID()	eval.txt	/*hlID()*
+hlexists()	eval.txt	/*hlexists()*
+holy-grail	index.txt	/*holy-grail*
+home	intro.txt	/*home*
+home-replace	editing.txt	/*home-replace*
+hostname()	eval.txt	/*hostname()*
+how-do-i	howto.txt	/*how-do-i*
+how-to	howto.txt	/*how-to*
+howdoi	howto.txt	/*howdoi*
+howto	howto.txt	/*howto*
+howto.txt	howto.txt	/*howto.txt*
+hpterm	term.txt	/*hpterm*
+hpterm-color	syntax.txt	/*hpterm-color*
+html-syntax	syntax.txt	/*html-syntax*
+html.vim	syntax.txt	/*html.vim*
+htmlos-syntax	syntax.txt	/*htmlos-syntax*
+htmlos.vim	syntax.txt	/*htmlos.vim*
+http	pi_netrw.txt	/*http*
+i	insert.txt	/*i*
+i(	motion.txt	/*i(*
+i)	motion.txt	/*i)*
+i<	motion.txt	/*i<*
+i>	motion.txt	/*i>*
+iB	motion.txt	/*iB*
+iW	motion.txt	/*iW*
+i[	motion.txt	/*i[*
+i]	motion.txt	/*i]*
+i_0_CTRL-D	insert.txt	/*i_0_CTRL-D*
+i_<BS>	insert.txt	/*i_<BS>*
+i_<C-End>	insert.txt	/*i_<C-End>*
+i_<C-Home>	insert.txt	/*i_<C-Home>*
+i_<C-Left>	insert.txt	/*i_<C-Left>*
+i_<C-Right>	insert.txt	/*i_<C-Right>*
+i_<CR>	insert.txt	/*i_<CR>*
+i_<Del>	insert.txt	/*i_<Del>*
+i_<Down>	insert.txt	/*i_<Down>*
+i_<End>	insert.txt	/*i_<End>*
+i_<Esc>	insert.txt	/*i_<Esc>*
+i_<F1>	various.txt	/*i_<F1>*
+i_<Help>	various.txt	/*i_<Help>*
+i_<Home>	insert.txt	/*i_<Home>*
+i_<Insert>	insert.txt	/*i_<Insert>*
+i_<Left>	insert.txt	/*i_<Left>*
+i_<LeftMouse>	insert.txt	/*i_<LeftMouse>*
+i_<MouseDown>	insert.txt	/*i_<MouseDown>*
+i_<MouseUp>	insert.txt	/*i_<MouseUp>*
+i_<NL>	insert.txt	/*i_<NL>*
+i_<PageDown>	insert.txt	/*i_<PageDown>*
+i_<PageUp>	insert.txt	/*i_<PageUp>*
+i_<Right>	insert.txt	/*i_<Right>*
+i_<S-Down>	insert.txt	/*i_<S-Down>*
+i_<S-Left>	insert.txt	/*i_<S-Left>*
+i_<S-MouseDown>	insert.txt	/*i_<S-MouseDown>*
+i_<S-MouseUp>	insert.txt	/*i_<S-MouseUp>*
+i_<S-Right>	insert.txt	/*i_<S-Right>*
+i_<S-Up>	insert.txt	/*i_<S-Up>*
+i_<Tab>	insert.txt	/*i_<Tab>*
+i_<Up>	insert.txt	/*i_<Up>*
+i_BS	insert.txt	/*i_BS*
+i_CTRL-@	insert.txt	/*i_CTRL-@*
+i_CTRL-A	insert.txt	/*i_CTRL-A*
+i_CTRL-B-gone	version5.txt	/*i_CTRL-B-gone*
+i_CTRL-C	insert.txt	/*i_CTRL-C*
+i_CTRL-D	insert.txt	/*i_CTRL-D*
+i_CTRL-E	insert.txt	/*i_CTRL-E*
+i_CTRL-G_<Down>	insert.txt	/*i_CTRL-G_<Down>*
+i_CTRL-G_<Up>	insert.txt	/*i_CTRL-G_<Up>*
+i_CTRL-G_CTRL-J	insert.txt	/*i_CTRL-G_CTRL-J*
+i_CTRL-G_CTRL-K	insert.txt	/*i_CTRL-G_CTRL-K*
+i_CTRL-G_j	insert.txt	/*i_CTRL-G_j*
+i_CTRL-G_k	insert.txt	/*i_CTRL-G_k*
+i_CTRL-G_u	insert.txt	/*i_CTRL-G_u*
+i_CTRL-H	insert.txt	/*i_CTRL-H*
+i_CTRL-I	insert.txt	/*i_CTRL-I*
+i_CTRL-J	insert.txt	/*i_CTRL-J*
+i_CTRL-K	insert.txt	/*i_CTRL-K*
+i_CTRL-L	options.txt	/*i_CTRL-L*
+i_CTRL-M	insert.txt	/*i_CTRL-M*
+i_CTRL-N	insert.txt	/*i_CTRL-N*
+i_CTRL-O	insert.txt	/*i_CTRL-O*
+i_CTRL-P	insert.txt	/*i_CTRL-P*
+i_CTRL-Q	insert.txt	/*i_CTRL-Q*
+i_CTRL-R	insert.txt	/*i_CTRL-R*
+i_CTRL-R_CTRL-O	insert.txt	/*i_CTRL-R_CTRL-O*
+i_CTRL-R_CTRL-P	insert.txt	/*i_CTRL-R_CTRL-P*
+i_CTRL-R_CTRL-R	insert.txt	/*i_CTRL-R_CTRL-R*
+i_CTRL-T	insert.txt	/*i_CTRL-T*
+i_CTRL-U	insert.txt	/*i_CTRL-U*
+i_CTRL-V	insert.txt	/*i_CTRL-V*
+i_CTRL-V_digit	insert.txt	/*i_CTRL-V_digit*
+i_CTRL-W	insert.txt	/*i_CTRL-W*
+i_CTRL-X	insert.txt	/*i_CTRL-X*
+i_CTRL-X_CTRL-D	insert.txt	/*i_CTRL-X_CTRL-D*
+i_CTRL-X_CTRL-E	insert.txt	/*i_CTRL-X_CTRL-E*
+i_CTRL-X_CTRL-F	insert.txt	/*i_CTRL-X_CTRL-F*
+i_CTRL-X_CTRL-I	insert.txt	/*i_CTRL-X_CTRL-I*
+i_CTRL-X_CTRL-K	insert.txt	/*i_CTRL-X_CTRL-K*
+i_CTRL-X_CTRL-L	insert.txt	/*i_CTRL-X_CTRL-L*
+i_CTRL-X_CTRL-N	insert.txt	/*i_CTRL-X_CTRL-N*
+i_CTRL-X_CTRL-P	insert.txt	/*i_CTRL-X_CTRL-P*
+i_CTRL-X_CTRL-T	insert.txt	/*i_CTRL-X_CTRL-T*
+i_CTRL-X_CTRL-V	insert.txt	/*i_CTRL-X_CTRL-V*
+i_CTRL-X_CTRL-Y	insert.txt	/*i_CTRL-X_CTRL-Y*
+i_CTRL-X_CTRL-]	insert.txt	/*i_CTRL-X_CTRL-]*
+i_CTRL-Y	insert.txt	/*i_CTRL-Y*
+i_CTRL-Z	options.txt	/*i_CTRL-Z*
+i_CTRL-[	insert.txt	/*i_CTRL-[*
+i_CTRL-\_CTRL-G	intro.txt	/*i_CTRL-\\_CTRL-G*
+i_CTRL-\_CTRL-N	intro.txt	/*i_CTRL-\\_CTRL-N*
+i_CTRL-]	insert.txt	/*i_CTRL-]*
+i_CTRL-^	insert.txt	/*i_CTRL-^*
+i_CTRL-_	insert.txt	/*i_CTRL-_*
+i_DEL	insert.txt	/*i_DEL*
+i_Tab	insert.txt	/*i_Tab*
+i_^_CTRL-D	insert.txt	/*i_^_CTRL-D*
+i_backspacing	insert.txt	/*i_backspacing*
+i_digraph	digraph.txt	/*i_digraph*
+i_esc	intro.txt	/*i_esc*
+ia64-syntax	syntax.txt	/*ia64-syntax*
+ia64.vim	syntax.txt	/*ia64.vim*
+ib	motion.txt	/*ib*
+iccf	uganda.txt	/*iccf*
+icon-changed	version4.txt	/*icon-changed*
+iconise	starting.txt	/*iconise*
+iconize	starting.txt	/*iconize*
+iconv()	eval.txt	/*iconv()*
+ident-search	tips.txt	/*ident-search*
+if_cscop.txt	if_cscop.txt	/*if_cscop.txt*
+if_ole.txt	if_ole.txt	/*if_ole.txt*
+if_perl.txt	if_perl.txt	/*if_perl.txt*
+if_pyth.txt	if_pyth.txt	/*if_pyth.txt*
+if_ruby.txt	if_ruby.txt	/*if_ruby.txt*
+if_sniff.txt	if_sniff.txt	/*if_sniff.txt*
+if_tcl.txt	if_tcl.txt	/*if_tcl.txt*
+ignore-errors	eval.txt	/*ignore-errors*
+improved-autocmds-5.4	version5.txt	/*improved-autocmds-5.4*
+improved-quickfix	version5.txt	/*improved-quickfix*
+improved-sessions	version5.txt	/*improved-sessions*
+improved-viminfo	version5.txt	/*improved-viminfo*
+improvements-5	version5.txt	/*improvements-5*
+improvements-6	version6.txt	/*improvements-6*
+inactive-buffer	windows.txt	/*inactive-buffer*
+include-search	tagsrch.txt	/*include-search*
+inclusive	motion.txt	/*inclusive*
+incomp-small-6	version6.txt	/*incomp-small-6*
+incompatible-5	version5.txt	/*incompatible-5*
+incompatible-6	version6.txt	/*incompatible-6*
+indent()	eval.txt	/*indent()*
+indent-expression	indent.txt	/*indent-expression*
+indent.txt	indent.txt	/*indent.txt*
+indentkeys-format	indent.txt	/*indentkeys-format*
+index	index.txt	/*index*
+index.txt	index.txt	/*index.txt*
+info-message	starting.txt	/*info-message*
+inform-syntax	syntax.txt	/*inform-syntax*
+inform.vim	syntax.txt	/*inform.vim*
+initialization	starting.txt	/*initialization*
+input()	eval.txt	/*input()*
+inputdialog()	eval.txt	/*inputdialog()*
+inputrestore()	eval.txt	/*inputrestore()*
+inputsave()	eval.txt	/*inputsave()*
+inputsecret()	eval.txt	/*inputsecret()*
+ins-completion	insert.txt	/*ins-completion*
+ins-expandtab	insert.txt	/*ins-expandtab*
+ins-reverse	rileft.txt	/*ins-reverse*
+ins-smarttab	insert.txt	/*ins-smarttab*
+ins-softtabstop	insert.txt	/*ins-softtabstop*
+ins-special-keys	insert.txt	/*ins-special-keys*
+ins-special-special	insert.txt	/*ins-special-special*
+ins-textwidth	insert.txt	/*ins-textwidth*
+insert	insert.txt	/*insert*
+insert-index	index.txt	/*insert-index*
+insert.txt	insert.txt	/*insert.txt*
+insert_expand	insert.txt	/*insert_expand*
+inserting	insert.txt	/*inserting*
+inserting-ex	insert.txt	/*inserting-ex*
+inserting-file	insert.txt	/*inserting-file*
+install	usr_90.txt	/*install*
+install-home	usr_90.txt	/*install-home*
+install-registry	gui_w32.txt	/*install-registry*
+intel-itanium	syntax.txt	/*intel-itanium*
+intellimouse-wheel-problems	gui_w32.txt	/*intellimouse-wheel-problems*
+interfaces-5.2	version5.txt	/*interfaces-5.2*
+internal-variables	eval.txt	/*internal-variables*
+internet	intro.txt	/*internet*
+intro	intro.txt	/*intro*
+intro.txt	intro.txt	/*intro.txt*
+ip	motion.txt	/*ip*
+is	motion.txt	/*is*
+isdirectory()	eval.txt	/*isdirectory()*
+iw	motion.txt	/*iw*
+i{	motion.txt	/*i{*
+i}	motion.txt	/*i}*
+j	motion.txt	/*j*
+java-cinoptions	indent.txt	/*java-cinoptions*
+java-indenting	indent.txt	/*java-indenting*
+java-syntax	syntax.txt	/*java-syntax*
+java.vim	syntax.txt	/*java.vim*
+jsbterm-mouse	options.txt	/*jsbterm-mouse*
+jtags	tagsrch.txt	/*jtags*
+jump-motions	motion.txt	/*jump-motions*
+jumplist	motion.txt	/*jumplist*
+jumpto-diffs	diff.txt	/*jumpto-diffs*
+k	motion.txt	/*k*
+kcc	uganda.txt	/*kcc*
+key-codes	intro.txt	/*key-codes*
+key-codes-changed	version4.txt	/*key-codes-changed*
+key-mapping	map.txt	/*key-mapping*
+key-notation	intro.txt	/*key-notation*
+keycodes	intro.txt	/*keycodes*
+keymap-file-format	mbyte.txt	/*keymap-file-format*
+keymap-hebrew	mbyte.txt	/*keymap-hebrew*
+keypad-0	intro.txt	/*keypad-0*
+keypad-9	intro.txt	/*keypad-9*
+keypad-divide	intro.txt	/*keypad-divide*
+keypad-end	intro.txt	/*keypad-end*
+keypad-enter	intro.txt	/*keypad-enter*
+keypad-home	intro.txt	/*keypad-home*
+keypad-minus	intro.txt	/*keypad-minus*
+keypad-multiply	intro.txt	/*keypad-multiply*
+keypad-page-down	intro.txt	/*keypad-page-down*
+keypad-page-up	intro.txt	/*keypad-page-up*
+keypad-plus	intro.txt	/*keypad-plus*
+keypad-point	intro.txt	/*keypad-point*
+known-bugs	todo.txt	/*known-bugs*
+l	motion.txt	/*l*
+l:var	eval.txt	/*l:var*
+lace-syntax	syntax.txt	/*lace-syntax*
+lace.vim	syntax.txt	/*lace.vim*
+lang-variable	eval.txt	/*lang-variable*
+language-mapping	map.txt	/*language-mapping*
+last-pattern	pattern.txt	/*last-pattern*
+last-position-jump	eval.txt	/*last-position-jump*
+last_buffer_nr()	eval.txt	/*last_buffer_nr()*
+lc_time-variable	eval.txt	/*lc_time-variable*
+left-right-motions	motion.txt	/*left-right-motions*
+less	various.txt	/*less*
+letter	options.txt	/*letter*
+lex-syntax	syntax.txt	/*lex-syntax*
+lex.vim	syntax.txt	/*lex.vim*
+lhaskell.vim	syntax.txt	/*lhaskell.vim*
+libcall()	eval.txt	/*libcall()*
+libcallnr()	eval.txt	/*libcallnr()*
+license	uganda.txt	/*license*
+lid	quickfix.txt	/*lid*
+limits	vi_diff.txt	/*limits*
+line()	eval.txt	/*line()*
+line-continuation	repeat.txt	/*line-continuation*
+line2byte()	eval.txt	/*line2byte()*
+linefeed	intro.txt	/*linefeed*
+linewise	motion.txt	/*linewise*
+linewise-register	change.txt	/*linewise-register*
+linewise-visual	visual.txt	/*linewise-visual*
+lispindent()	eval.txt	/*lispindent()*
+list-repeat	windows.txt	/*list-repeat*
+lite-syntax	syntax.txt	/*lite-syntax*
+lite.vim	syntax.txt	/*lite.vim*
+literal-string	eval.txt	/*literal-string*
+lnum-variable	eval.txt	/*lnum-variable*
+load-plugins	starting.txt	/*load-plugins*
+load-vim-script	repeat.txt	/*load-vim-script*
+local-additions	help.txt	/*local-additions*
+local-function	eval.txt	/*local-function*
+local-options	options.txt	/*local-options*
+local-variable	eval.txt	/*local-variable*
+locale	mbyte.txt	/*locale*
+locale-name	mbyte.txt	/*locale-name*
+localtime()	eval.txt	/*localtime()*
+long-lines	version5.txt	/*long-lines*
+lowercase	change.txt	/*lowercase*
+lpc-syntax	syntax.txt	/*lpc-syntax*
+lpc.vim	syntax.txt	/*lpc.vim*
+lua-syntax	syntax.txt	/*lua-syntax*
+lua.vim	syntax.txt	/*lua.vim*
+m	motion.txt	/*m*
+m'	motion.txt	/*m'*
+m[	motion.txt	/*m[*
+m]	motion.txt	/*m]*
+m`	motion.txt	/*m`*
+mac	os_mac.txt	/*mac*
+mac-bug	os_mac.txt	/*mac-bug*
+mac-compile	os_mac.txt	/*mac-compile*
+mac-faq	os_mac.txt	/*mac-faq*
+mac-filename	os_mac.txt	/*mac-filename*
+mac-lack	os_mac.txt	/*mac-lack*
+mac-vimfile	os_mac.txt	/*mac-vimfile*
+macintosh	os_mac.txt	/*macintosh*
+macro	map.txt	/*macro*
+mail-list	intro.txt	/*mail-list*
+mail-plugin	filetype.txt	/*mail-plugin*
+mail.vim	syntax.txt	/*mail.vim*
+maillist	intro.txt	/*maillist*
+maillist-archive	intro.txt	/*maillist-archive*
+make-syntax	syntax.txt	/*make-syntax*
+make.vim	syntax.txt	/*make.vim*
+man-plugin	filetype.txt	/*man-plugin*
+manual-copyright	usr_01.txt	/*manual-copyright*
+map-<SID>	map.txt	/*map-<SID>*
+map-ambiguous	map.txt	/*map-ambiguous*
+map-backtick	tips.txt	/*map-backtick*
+map-comments	map.txt	/*map-comments*
+map-examples	map.txt	/*map-examples*
+map-keys-fails	map.txt	/*map-keys-fails*
+map-listing	map.txt	/*map-listing*
+map-modes	map.txt	/*map-modes*
+map-multibyte	map.txt	/*map-multibyte*
+map-overview	map.txt	/*map-overview*
+map-self-destroy	tips.txt	/*map-self-destroy*
+map-typing	map.txt	/*map-typing*
+map-which-keys	map.txt	/*map-which-keys*
+map.txt	map.txt	/*map.txt*
+map_CTRL_C	map.txt	/*map_CTRL_C*
+map_backslash	map.txt	/*map_backslash*
+map_bar	map.txt	/*map_bar*
+map_empty_rhs	map.txt	/*map_empty_rhs*
+map_return	map.txt	/*map_return*
+map_space_in_lhs	map.txt	/*map_space_in_lhs*
+map_space_in_rhs	map.txt	/*map_space_in_rhs*
+maparg()	eval.txt	/*maparg()*
+mapcheck()	eval.txt	/*mapcheck()*
+maple-syntax	syntax.txt	/*maple-syntax*
+maple.vim	syntax.txt	/*maple.vim*
+mapleader	map.txt	/*mapleader*
+maplocalleader	map.txt	/*maplocalleader*
+mapping	map.txt	/*mapping*
+mark	motion.txt	/*mark*
+mark-motions	motion.txt	/*mark-motions*
+masm-syntax	syntax.txt	/*masm-syntax*
+masm.vim	syntax.txt	/*masm.vim*
+match()	eval.txt	/*match()*
+match-highlight	pattern.txt	/*match-highlight*
+matchend()	eval.txt	/*matchend()*
+matchit-install	usr_05.txt	/*matchit-install*
+matchstr()	eval.txt	/*matchstr()*
+mbyte-IME	mbyte.txt	/*mbyte-IME*
+mbyte-XIM	mbyte.txt	/*mbyte-XIM*
+mbyte-conversion	mbyte.txt	/*mbyte-conversion*
+mbyte-encoding	mbyte.txt	/*mbyte-encoding*
+mbyte-first	mbyte.txt	/*mbyte-first*
+mbyte-fonts-MSwin	mbyte.txt	/*mbyte-fonts-MSwin*
+mbyte-fonts-X11	mbyte.txt	/*mbyte-fonts-X11*
+mbyte-keymap	mbyte.txt	/*mbyte-keymap*
+mbyte-locale	mbyte.txt	/*mbyte-locale*
+mbyte-options	mbyte.txt	/*mbyte-options*
+mbyte-terminal	mbyte.txt	/*mbyte-terminal*
+mbyte-utf8	mbyte.txt	/*mbyte-utf8*
+mbyte.txt	mbyte.txt	/*mbyte.txt*
+menu-changes-5.4	version5.txt	/*menu-changes-5.4*
+menu-examples	gui.txt	/*menu-examples*
+menu-priority	gui.txt	/*menu-priority*
+menu-separator	gui.txt	/*menu-separator*
+menu.vim	gui.txt	/*menu.vim*
+menus	gui.txt	/*menus*
+message-history	message.txt	/*message-history*
+message.txt	message.txt	/*message.txt*
+messages	message.txt	/*messages*
+meta	intro.txt	/*meta*
+minimal-features	os_msdos.txt	/*minimal-features*
+missing-commands	vi_diff.txt	/*missing-commands*
+missing-options	vi_diff.txt	/*missing-options*
+mlang.txt	mlang.txt	/*mlang.txt*
+mode()	eval.txt	/*mode()*
+mode-Ex	intro.txt	/*mode-Ex*
+mode-cmdline	cmdline.txt	/*mode-cmdline*
+mode-ins-repl	insert.txt	/*mode-ins-repl*
+mode-replace	insert.txt	/*mode-replace*
+mode-switching	intro.txt	/*mode-switching*
+modeless-and-clipboard	version6.txt	/*modeless-and-clipboard*
+modeless-selection	gui.txt	/*modeless-selection*
+modeline	options.txt	/*modeline*
+modeline-local	options.txt	/*modeline-local*
+modeline-version	options.txt	/*modeline-version*
+moo-syntax	syntax.txt	/*moo-syntax*
+moo.vim	syntax.txt	/*moo.vim*
+more-compatible	version5.txt	/*more-compatible*
+more-prompt	message.txt	/*more-prompt*
+motion.txt	motion.txt	/*motion.txt*
+mouse-mode-table	term.txt	/*mouse-mode-table*
+mouse-overview	term.txt	/*mouse-overview*
+mouse-swap-buttons	term.txt	/*mouse-swap-buttons*
+mouse-using	term.txt	/*mouse-using*
+ms-dos	os_msdos.txt	/*ms-dos*
+msdos	os_msdos.txt	/*msdos*
+msdos-arrows	os_msdos.txt	/*msdos-arrows*
+msdos-clipboard-limits	os_msdos.txt	/*msdos-clipboard-limits*
+msdos-compiling	os_msdos.txt	/*msdos-compiling*
+msdos-copy-paste	os_msdos.txt	/*msdos-copy-paste*
+msdos-fname-extensions	os_msdos.txt	/*msdos-fname-extensions*
+msdos-limitations	os_msdos.txt	/*msdos-limitations*
+msdos-linked-files	os_msdos.txt	/*msdos-linked-files*
+msdos-longfname	os_msdos.txt	/*msdos-longfname*
+msdos-mode	gui_w32.txt	/*msdos-mode*
+msdos-problems	os_msdos.txt	/*msdos-problems*
+msdos-termcap	os_msdos.txt	/*msdos-termcap*
+msdos-versions	os_msdos.txt	/*msdos-versions*
+msql-syntax	syntax.txt	/*msql-syntax*
+msql.vim	syntax.txt	/*msql.vim*
+mswin.vim	gui_w32.txt	/*mswin.vim*
+multi-byte	mbyte.txt	/*multi-byte*
+multi-lang	mlang.txt	/*multi-lang*
+multi-repeat	repeat.txt	/*multi-repeat*
+multibyte	mbyte.txt	/*multibyte*
+multibyte-ime	mbyte.txt	/*multibyte-ime*
+multibyte-input	mbyte.txt	/*multibyte-input*
+multilang	mlang.txt	/*multilang*
+multilang-menus	mlang.txt	/*multilang-menus*
+multilang-messages	mlang.txt	/*multilang-messages*
+multilang-scripts	mlang.txt	/*multilang-scripts*
+myfiletypefile	syntax.txt	/*myfiletypefile*
+myscriptsfile	syntax.txt	/*myscriptsfile*
+mysyntaxfile	syntax.txt	/*mysyntaxfile*
+mysyntaxfile-add	syntax.txt	/*mysyntaxfile-add*
+mysyntaxfile-replace	syntax.txt	/*mysyntaxfile-replace*
+n	pattern.txt	/*n*
+nasm-syntax	syntax.txt	/*nasm-syntax*
+nasm.vim	syntax.txt	/*nasm.vim*
+navigation	motion.txt	/*navigation*
+nb-commands	netbeans.txt	/*nb-commands*
+nb-events	netbeans.txt	/*nb-events*
+nb-functions	netbeans.txt	/*nb-functions*
+nb-messages	netbeans.txt	/*nb-messages*
+nb-special	netbeans.txt	/*nb-special*
+nb-terms	netbeans.txt	/*nb-terms*
+ncf-syntax	syntax.txt	/*ncf-syntax*
+ncf.vim	syntax.txt	/*ncf.vim*
+netbeans	netbeans.txt	/*netbeans*
+netbeans-configure	netbeans.txt	/*netbeans-configure*
+netbeans-download	netbeans.txt	/*netbeans-download*
+netbeans-intro	netbeans.txt	/*netbeans-intro*
+netbeans-keybindings	netbeans.txt	/*netbeans-keybindings*
+netbeans-messages	netbeans.txt	/*netbeans-messages*
+netbeans-preparation	netbeans.txt	/*netbeans-preparation*
+netbeans-problems	netbeans.txt	/*netbeans-problems*
+netbeans-protocol	netbeans.txt	/*netbeans-protocol*
+netbeans-run	netbeans.txt	/*netbeans-run*
+netbeans-setup	netbeans.txt	/*netbeans-setup*
+netbeans-support	netbeans.txt	/*netbeans-support*
+netbeans.txt	netbeans.txt	/*netbeans.txt*
+netrw	pi_netrw.txt	/*netrw*
+netrw-activate	pi_netrw.txt	/*netrw-activate*
+netrw-contents	pi_netrw.txt	/*netrw-contents*
+netrw-credits	pi_netrw.txt	/*netrw-credits*
+netrw-debug	pi_netrw.txt	/*netrw-debug*
+netrw-ex	pi_netrw.txt	/*netrw-ex*
+netrw-file	pi_netrw.txt	/*netrw-file*
+netrw-fixup	pi_netrw.txt	/*netrw-fixup*
+netrw-netrc	pi_netrw.txt	/*netrw-netrc*
+netrw-new	pi_netrw.txt	/*netrw-new*
+netrw-newstuff	pi_netrw.txt	/*netrw-newstuff*
+netrw-options	pi_netrw.txt	/*netrw-options*
+netrw-passwd	pi_netrw.txt	/*netrw-passwd*
+netrw-protocol	pi_netrw.txt	/*netrw-protocol*
+netrw-ref	pi_netrw.txt	/*netrw-ref*
+netrw-transparent	pi_netrw.txt	/*netrw-transparent*
+netrw-uidpass	pi_netrw.txt	/*netrw-uidpass*
+netrw-urls	pi_netrw.txt	/*netrw-urls*
+netrw-var	pi_netrw.txt	/*netrw-var*
+netrw-xfer	pi_netrw.txt	/*netrw-xfer*
+netrw.vim	pi_netrw.txt	/*netrw.vim*
+netterm-mouse	options.txt	/*netterm-mouse*
+network	pi_netrw.txt	/*network*
+new-5	version5.txt	/*new-5*
+new-6	version6.txt	/*new-6*
+new-GTK-GUI	version5.txt	/*new-GTK-GUI*
+new-Select-mode	version5.txt	/*new-Select-mode*
+new-View	version6.txt	/*new-View*
+new-argument-list	version6.txt	/*new-argument-list*
+new-buftype	version6.txt	/*new-buftype*
+new-cmdwin	version6.txt	/*new-cmdwin*
+new-color-schemes	version6.txt	/*new-color-schemes*
+new-commands	version5.txt	/*new-commands*
+new-commands-5.4	version5.txt	/*new-commands-5.4*
+new-debug-itf	version6.txt	/*new-debug-itf*
+new-debug-mode	version6.txt	/*new-debug-mode*
+new-diff-mode	version6.txt	/*new-diff-mode*
+new-encryption	version5.txt	/*new-encryption*
+new-evim	version6.txt	/*new-evim*
+new-ex-commands-5.2	version5.txt	/*new-ex-commands-5.2*
+new-file-browser	version6.txt	/*new-file-browser*
+new-file-writing	version6.txt	/*new-file-writing*
+new-filetype	filetype.txt	/*new-filetype*
+new-filetype-5.4	version5.txt	/*new-filetype-5.4*
+new-filetype-plugins	version6.txt	/*new-filetype-plugins*
+new-filetype-scripts	filetype.txt	/*new-filetype-scripts*
+new-folding	version6.txt	/*new-folding*
+new-functions-5.2	version5.txt	/*new-functions-5.2*
+new-global-values	version6.txt	/*new-global-values*
+new-highlighting	version5.txt	/*new-highlighting*
+new-indent-flex	version6.txt	/*new-indent-flex*
+new-items-6	version6.txt	/*new-items-6*
+new-line-continuation	version5.txt	/*new-line-continuation*
+new-multi-byte	version5.txt	/*new-multi-byte*
+new-multi-lang	version6.txt	/*new-multi-lang*
+new-network-files	version6.txt	/*new-network-files*
+new-operator-mod	version6.txt	/*new-operator-mod*
+new-options-5.2	version5.txt	/*new-options-5.2*
+new-options-5.4	version5.txt	/*new-options-5.4*
+new-perl-python	version5.txt	/*new-perl-python*
+new-plugins	version6.txt	/*new-plugins*
+new-printing	version6.txt	/*new-printing*
+new-runtime-dir	version5.txt	/*new-runtime-dir*
+new-script	version5.txt	/*new-script*
+new-script-5.4	version5.txt	/*new-script-5.4*
+new-search-path	version6.txt	/*new-search-path*
+new-searchpat	version6.txt	/*new-searchpat*
+new-session-files	version5.txt	/*new-session-files*
+new-unlisted-buffers	version6.txt	/*new-unlisted-buffers*
+new-user-defined	version5.txt	/*new-user-defined*
+new-user-manual	version6.txt	/*new-user-manual*
+new-utf-8	version6.txt	/*new-utf-8*
+new-vertsplit	version6.txt	/*new-vertsplit*
+new-vim-server	version6.txt	/*new-vim-server*
+new-virtedit	version6.txt	/*new-virtedit*
+news	intro.txt	/*news*
+nextnonblank()	eval.txt	/*nextnonblank()*
+no-eval-feature	eval.txt	/*no-eval-feature*
+no_buffers_menu	gui.txt	/*no_buffers_menu*
+normal-index	index.txt	/*normal-index*
+not-compatible	usr_01.txt	/*not-compatible*
+not-edited	editing.txt	/*not-edited*
+notation	intro.txt	/*notation*
+notepad	gui_w32.txt	/*notepad*
+nr2char()	eval.txt	/*nr2char()*
+nroff-syntax	syntax.txt	/*nroff-syntax*
+nroff.vim	syntax.txt	/*nroff.vim*
+o	insert.txt	/*o*
+o_CTRL-V	motion.txt	/*o_CTRL-V*
+o_V	motion.txt	/*o_V*
+o_v	motion.txt	/*o_v*
+object-motions	motion.txt	/*object-motions*
+object-select	motion.txt	/*object-select*
+objects	index.txt	/*objects*
+obtaining-exted	netbeans.txt	/*obtaining-exted*
+ocaml-syntax	syntax.txt	/*ocaml-syntax*
+ocaml.vim	syntax.txt	/*ocaml.vim*
+ole-activation	if_ole.txt	/*ole-activation*
+ole-eval	if_ole.txt	/*ole-eval*
+ole-gethwnd	if_ole.txt	/*ole-gethwnd*
+ole-interface	if_ole.txt	/*ole-interface*
+ole-methods	if_ole.txt	/*ole-methods*
+ole-normal	if_ole.txt	/*ole-normal*
+ole-registration	if_ole.txt	/*ole-registration*
+ole-sendkeys	if_ole.txt	/*ole-sendkeys*
+ole-setforeground	if_ole.txt	/*ole-setforeground*
+online-help	various.txt	/*online-help*
+opening-window	windows.txt	/*opening-window*
+operator	motion.txt	/*operator*
+option-backslash	options.txt	/*option-backslash*
+option-list	quickref.txt	/*option-list*
+option-summary	options.txt	/*option-summary*
+options	options.txt	/*options*
+options-changed	version5.txt	/*options-changed*
+options.txt	options.txt	/*options.txt*
+os2	os_os2.txt	/*os2*
+os2ansi	os_os2.txt	/*os2ansi*
+os390	os_390.txt	/*os390*
+os_390.txt	os_390.txt	/*os_390.txt*
+os_amiga.txt	os_amiga.txt	/*os_amiga.txt*
+os_beos.txt	os_beos.txt	/*os_beos.txt*
+os_dos.txt	os_dos.txt	/*os_dos.txt*
+os_mac.txt	os_mac.txt	/*os_mac.txt*
+os_mint.txt	os_mint.txt	/*os_mint.txt*
+os_msdos.txt	os_msdos.txt	/*os_msdos.txt*
+os_os2.txt	os_os2.txt	/*os_os2.txt*
+os_qnx.txt	os_qnx.txt	/*os_qnx.txt*
+os_risc.txt	os_risc.txt	/*os_risc.txt*
+os_unix.txt	os_unix.txt	/*os_unix.txt*
+os_vms.txt	os_vms.txt	/*os_vms.txt*
+os_win32.txt	os_win32.txt	/*os_win32.txt*
+other-features	vi_diff.txt	/*other-features*
+p	change.txt	/*p*
+page-down	intro.txt	/*page-down*
+page-up	intro.txt	/*page-up*
+page_down	intro.txt	/*page_down*
+page_up	intro.txt	/*page_up*
+pager	message.txt	/*pager*
+papp-syntax	syntax.txt	/*papp-syntax*
+papp.vim	syntax.txt	/*papp.vim*
+paragraph	motion.txt	/*paragraph*
+pascal-syntax	syntax.txt	/*pascal-syntax*
+pascal.vim	syntax.txt	/*pascal.vim*
+pattern	pattern.txt	/*pattern*
+pattern-atoms	pattern.txt	/*pattern-atoms*
+pattern-multi-byte	pattern.txt	/*pattern-multi-byte*
+pattern-multi-items	pattern.txt	/*pattern-multi-items*
+pattern-overview	pattern.txt	/*pattern-overview*
+pattern-searches	pattern.txt	/*pattern-searches*
+pattern.txt	pattern.txt	/*pattern.txt*
+perl	if_perl.txt	/*perl*
+perl-Append	if_perl.txt	/*perl-Append*
+perl-Buffer	if_perl.txt	/*perl-Buffer*
+perl-Buffers	if_perl.txt	/*perl-Buffers*
+perl-Count	if_perl.txt	/*perl-Count*
+perl-Delete	if_perl.txt	/*perl-Delete*
+perl-DoCommand	if_perl.txt	/*perl-DoCommand*
+perl-Eval	if_perl.txt	/*perl-Eval*
+perl-Get	if_perl.txt	/*perl-Get*
+perl-GetCursor	if_perl.txt	/*perl-GetCursor*
+perl-Msg	if_perl.txt	/*perl-Msg*
+perl-Name	if_perl.txt	/*perl-Name*
+perl-Number	if_perl.txt	/*perl-Number*
+perl-Set	if_perl.txt	/*perl-Set*
+perl-SetHeight	if_perl.txt	/*perl-SetHeight*
+perl-SetOption	if_perl.txt	/*perl-SetOption*
+perl-Windows	if_perl.txt	/*perl-Windows*
+perl-compiling	if_perl.txt	/*perl-compiling*
+perl-editing	if_perl.txt	/*perl-editing*
+perl-overview	if_perl.txt	/*perl-overview*
+perl-patterns	pattern.txt	/*perl-patterns*
+perl-syntax	syntax.txt	/*perl-syntax*
+perl-using	if_perl.txt	/*perl-using*
+perl.vim	syntax.txt	/*perl.vim*
+photon-fonts	os_qnx.txt	/*photon-fonts*
+photon-gui	os_qnx.txt	/*photon-gui*
+php-syntax	syntax.txt	/*php-syntax*
+php.vim	syntax.txt	/*php.vim*
+php3-syntax	syntax.txt	/*php3-syntax*
+php3.vim	syntax.txt	/*php3.vim*
+phtml-syntax	syntax.txt	/*phtml-syntax*
+phtml.vim	syntax.txt	/*phtml.vim*
+pi_expl.txt	pi_expl.txt	/*pi_expl.txt*
+pi_gzip.txt	pi_gzip.txt	/*pi_gzip.txt*
+pi_netrw.txt	pi_netrw.txt	/*pi_netrw.txt*
+pi_spec.txt	pi_spec.txt	/*pi_spec.txt*
+plugin	usr_05.txt	/*plugin*
+plugin-details	filetype.txt	/*plugin-details*
+plugin-filetype	usr_41.txt	/*plugin-filetype*
+plugin-special	usr_41.txt	/*plugin-special*
+popup-menu	gui.txt	/*popup-menu*
+popup-menu-added	version5.txt	/*popup-menu-added*
+ports-5.2	version5.txt	/*ports-5.2*
+ports-6	version6.txt	/*ports-6*
+postscr-syntax	syntax.txt	/*postscr-syntax*
+postscr.vim	syntax.txt	/*postscr.vim*
+postscript-print-encoding	various.txt	/*postscript-print-encoding*
+postscript-print-trouble	various.txt	/*postscript-print-trouble*
+postscript-print-util	various.txt	/*postscript-print-util*
+postscript-printing	various.txt	/*postscript-printing*
+ppwiz-syntax	syntax.txt	/*ppwiz-syntax*
+ppwiz.vim	syntax.txt	/*ppwiz.vim*
+press-enter	message.txt	/*press-enter*
+press-return	message.txt	/*press-return*
+prevcount-variable	eval.txt	/*prevcount-variable*
+preview-window	windows.txt	/*preview-window*
+prevnonblank()	eval.txt	/*prevnonblank()*
+printcap-syntax	syntax.txt	/*printcap-syntax*
+printing	various.txt	/*printing*
+printing-formfeed	various.txt	/*printing-formfeed*
+progname-variable	eval.txt	/*progname-variable*
+progress-syntax	syntax.txt	/*progress-syntax*
+progress.vim	syntax.txt	/*progress.vim*
+ptcap-syntax	syntax.txt	/*ptcap-syntax*
+ptcap.vim	syntax.txt	/*ptcap.vim*
+pterm-mouse	options.txt	/*pterm-mouse*
+put	change.txt	/*put*
+put-Visual-mode	change.txt	/*put-Visual-mode*
+python	if_pyth.txt	/*python*
+python-buffer	if_pyth.txt	/*python-buffer*
+python-buffers	if_pyth.txt	/*python-buffers*
+python-command	if_pyth.txt	/*python-command*
+python-commands	if_pyth.txt	/*python-commands*
+python-current	if_pyth.txt	/*python-current*
+python-error	if_pyth.txt	/*python-error*
+python-eval	if_pyth.txt	/*python-eval*
+python-examples	if_pyth.txt	/*python-examples*
+python-input	if_pyth.txt	/*python-input*
+python-output	if_pyth.txt	/*python-output*
+python-range	if_pyth.txt	/*python-range*
+python-syntax	syntax.txt	/*python-syntax*
+python-vim	if_pyth.txt	/*python-vim*
+python-window	if_pyth.txt	/*python-window*
+python-windows	if_pyth.txt	/*python-windows*
+python.vim	syntax.txt	/*python.vim*
+q	repeat.txt	/*q*
+q/	cmdline.txt	/*q\/*
+q:	cmdline.txt	/*q:*
+q?	cmdline.txt	/*q?*
+qnx	os_qnx.txt	/*qnx*
+qnx-compiling	os_qnx.txt	/*qnx-compiling*
+qnx-general	os_qnx.txt	/*qnx-general*
+qnx-terminal	os_qnx.txt	/*qnx-terminal*
+quake-syntax	syntax.txt	/*quake-syntax*
+quake.vim	syntax.txt	/*quake.vim*
+quickfix	quickfix.txt	/*quickfix*
+quickfix-6	version6.txt	/*quickfix-6*
+quickfix-directory-stack	quickfix.txt	/*quickfix-directory-stack*
+quickfix-error-lists	quickfix.txt	/*quickfix-error-lists*
+quickfix-manx	quickfix.txt	/*quickfix-manx*
+quickfix-valid	quickfix.txt	/*quickfix-valid*
+quickfix-window	quickfix.txt	/*quickfix-window*
+quickfix.txt	quickfix.txt	/*quickfix.txt*
+quickref	quickref.txt	/*quickref*
+quickref.txt	quickref.txt	/*quickref.txt*
+quote	change.txt	/*quote*
+quote#	change.txt	/*quote#*
+quote%	change.txt	/*quote%*
+quote+	gui_x11.txt	/*quote+*
+quote-	change.txt	/*quote-*
+quote.	change.txt	/*quote.*
+quote/	change.txt	/*quote\/*
+quote0	change.txt	/*quote0*
+quote1	change.txt	/*quote1*
+quote2	change.txt	/*quote2*
+quote3	change.txt	/*quote3*
+quote4	change.txt	/*quote4*
+quote9	change.txt	/*quote9*
+quote:	change.txt	/*quote:*
+quote=	change.txt	/*quote=*
+quote_	change.txt	/*quote_*
+quote_#	change.txt	/*quote_#*
+quote_%	change.txt	/*quote_%*
+quote_-	change.txt	/*quote_-*
+quote_.	change.txt	/*quote_.*
+quote_/	change.txt	/*quote_\/*
+quote_:	change.txt	/*quote_:*
+quote_=	change.txt	/*quote_=*
+quote_alpha	change.txt	/*quote_alpha*
+quote_number	change.txt	/*quote_number*
+quote_quote	change.txt	/*quote_quote*
+quote_~	change.txt	/*quote_~*
+quotea	change.txt	/*quotea*
+quotecommandquote	intro.txt	/*quotecommandquote*
+quoteplus	gui_x11.txt	/*quoteplus*
+quotequote	change.txt	/*quotequote*
+quotes	quotes.txt	/*quotes*
+quotes.txt	quotes.txt	/*quotes.txt*
+quotestar	gui.txt	/*quotestar*
+quote~	change.txt	/*quote~*
+r	change.txt	/*r*
+raw-terminal-mode	term.txt	/*raw-terminal-mode*
+rcp	pi_netrw.txt	/*rcp*
+read-messages	insert.txt	/*read-messages*
+read-only-share	editing.txt	/*read-only-share*
+read-stdin	version5.txt	/*read-stdin*
+readline-syntax	syntax.txt	/*readline-syntax*
+readline.vim	syntax.txt	/*readline.vim*
+recording	repeat.txt	/*recording*
+recover.txt	recover.txt	/*recover.txt*
+recovery	recover.txt	/*recovery*
+recursive_mapping	map.txt	/*recursive_mapping*
+redo	undo.txt	/*redo*
+redo-register	undo.txt	/*redo-register*
+ref	intro.txt	/*ref*
+reference	intro.txt	/*reference*
+regexp	pattern.txt	/*regexp*
+regexp-changes-5.4	version5.txt	/*regexp-changes-5.4*
+register	sponsor.txt	/*register*
+register-faq	sponsor.txt	/*register-faq*
+register-variable	eval.txt	/*register-variable*
+registers	change.txt	/*registers*
+regular-expression	pattern.txt	/*regular-expression*
+remote.txt	remote.txt	/*remote.txt*
+remote_expr()	eval.txt	/*remote_expr()*
+remote_foreground()	eval.txt	/*remote_foreground()*
+remote_peek()	eval.txt	/*remote_peek()*
+remote_read()	eval.txt	/*remote_read()*
+remote_send()	eval.txt	/*remote_send()*
+remove-filetype	filetype.txt	/*remove-filetype*
+remove-option-flags	options.txt	/*remove-option-flags*
+rename()	eval.txt	/*rename()*
+rename-files	tips.txt	/*rename-files*
+repeat.txt	repeat.txt	/*repeat.txt*
+repeating	repeat.txt	/*repeating*
+replacing	change.txt	/*replacing*
+resolve()	eval.txt	/*resolve()*
+restore-position	tips.txt	/*restore-position*
+restricted-mode	starting.txt	/*restricted-mode*
+retab-example	change.txt	/*retab-example*
+rethrow	eval.txt	/*rethrow*
+rexx-syntax	syntax.txt	/*rexx-syntax*
+rexx.vim	syntax.txt	/*rexx.vim*
+rgb.txt	gui_w32.txt	/*rgb.txt*
+rgview	starting.txt	/*rgview*
+rgvim	starting.txt	/*rgvim*
+right-justify	change.txt	/*right-justify*
+rileft	rileft.txt	/*rileft*
+rileft.txt	rileft.txt	/*rileft.txt*
+riscos	os_risc.txt	/*riscos*
+riscos-commandline	os_risc.txt	/*riscos-commandline*
+riscos-filetypes	os_risc.txt	/*riscos-filetypes*
+riscos-gui	os_risc.txt	/*riscos-gui*
+riscos-interrupt	os_risc.txt	/*riscos-interrupt*
+riscos-locations	os_risc.txt	/*riscos-locations*
+riscos-memory	os_risc.txt	/*riscos-memory*
+riscos-munging	os_risc.txt	/*riscos-munging*
+riscos-porting	os_risc.txt	/*riscos-porting*
+riscos-remote	os_risc.txt	/*riscos-remote*
+riscos-shell	os_risc.txt	/*riscos-shell*
+riscos-temp-files	os_risc.txt	/*riscos-temp-files*
+rot13	change.txt	/*rot13*
+rsync	pi_netrw.txt	/*rsync*
+ruby	if_ruby.txt	/*ruby*
+ruby-buffer	if_ruby.txt	/*ruby-buffer*
+ruby-command	if_ruby.txt	/*ruby-command*
+ruby-commands	if_ruby.txt	/*ruby-commands*
+ruby-evaluate	if_ruby.txt	/*ruby-evaluate*
+ruby-globals	if_ruby.txt	/*ruby-globals*
+ruby-message	if_ruby.txt	/*ruby-message*
+ruby-set_option	if_ruby.txt	/*ruby-set_option*
+ruby-syntax	syntax.txt	/*ruby-syntax*
+ruby-vim	if_ruby.txt	/*ruby-vim*
+ruby-window	if_ruby.txt	/*ruby-window*
+ruby.vim	syntax.txt	/*ruby.vim*
+russian	russian.txt	/*russian*
+russian-intro	russian.txt	/*russian-intro*
+russian-issues	russian.txt	/*russian-issues*
+russian-keymap	russian.txt	/*russian-keymap*
+russian-l18n	russian.txt	/*russian-l18n*
+russian.txt	russian.txt	/*russian.txt*
+rview	starting.txt	/*rview*
+rvim	starting.txt	/*rvim*
+rxvt	syntax.txt	/*rxvt*
+s	change.txt	/*s*
+s/\&	change.txt	/*s\/\\&*
+s/\0	change.txt	/*s\/\\0*
+s/\1	change.txt	/*s\/\\1*
+s/\2	change.txt	/*s\/\\2*
+s/\3	change.txt	/*s\/\\3*
+s/\9	change.txt	/*s\/\\9*
+s/\<CR>	change.txt	/*s\/\\<CR>*
+s/\E	change.txt	/*s\/\\E*
+s/\L	change.txt	/*s\/\\L*
+s/\U	change.txt	/*s\/\\U*
+s/\\	change.txt	/*s\/\\\\*
+s/\b	change.txt	/*s\/\\b*
+s/\e	change.txt	/*s\/\\e*
+s/\l	change.txt	/*s\/\\l*
+s/\n	change.txt	/*s\/\\n*
+s/\r	change.txt	/*s\/\\r*
+s/\t	change.txt	/*s\/\\t*
+s/\u	change.txt	/*s\/\\u*
+s/\~	change.txt	/*s\/\\~*
+s:var	eval.txt	/*s:var*
+s<CR>	change.txt	/*s<CR>*
+sandbox	eval.txt	/*sandbox*
+save-file	editing.txt	/*save-file*
+save-settings	starting.txt	/*save-settings*
+scp	pi_netrw.txt	/*scp*
+script-here	if_perl.txt	/*script-here*
+script-local	map.txt	/*script-local*
+script-variable	eval.txt	/*script-variable*
+scriptout-changed	version4.txt	/*scriptout-changed*
+scroll-binding	scroll.txt	/*scroll-binding*
+scroll-cursor	scroll.txt	/*scroll-cursor*
+scroll-down	scroll.txt	/*scroll-down*
+scroll-horizontal	scroll.txt	/*scroll-horizontal*
+scroll-insert	tips.txt	/*scroll-insert*
+scroll-mouse-wheel	scroll.txt	/*scroll-mouse-wheel*
+scroll-region	term.txt	/*scroll-region*
+scroll-smooth	tips.txt	/*scroll-smooth*
+scroll-up	scroll.txt	/*scroll-up*
+scroll.txt	scroll.txt	/*scroll.txt*
+scrollbind-quickadj	scroll.txt	/*scrollbind-quickadj*
+scrollbind-relative	scroll.txt	/*scrollbind-relative*
+scrolling	scroll.txt	/*scrolling*
+sdl-syntax	syntax.txt	/*sdl-syntax*
+sdl.vim	syntax.txt	/*sdl.vim*
+search()	eval.txt	/*search()*
+search-commands	pattern.txt	/*search-commands*
+search-offset	pattern.txt	/*search-offset*
+search-pattern	pattern.txt	/*search-pattern*
+search-range	pattern.txt	/*search-range*
+searchpair()	eval.txt	/*searchpair()*
+section	motion.txt	/*section*
+sed-syntax	syntax.txt	/*sed-syntax*
+sed.vim	syntax.txt	/*sed.vim*
+send-money	sponsor.txt	/*send-money*
+send-to-menu	gui_w32.txt	/*send-to-menu*
+sendto	gui_w32.txt	/*sendto*
+sentence	motion.txt	/*sentence*
+server2client()	eval.txt	/*server2client()*
+serverlist()	eval.txt	/*serverlist()*
+servername-variable	eval.txt	/*servername-variable*
+session-file	starting.txt	/*session-file*
+set-option	options.txt	/*set-option*
+setbufvar()	eval.txt	/*setbufvar()*
+setcmdpos()	eval.txt	/*setcmdpos()*
+setline()	eval.txt	/*setline()*
+setreg()	eval.txt	/*setreg()*
+setwinvar()	eval.txt	/*setwinvar()*
+sftp	pi_netrw.txt	/*sftp*
+sgml-syntax	syntax.txt	/*sgml-syntax*
+sgml.vim	syntax.txt	/*sgml.vim*
+sh-syntax	syntax.txt	/*sh-syntax*
+sh.vim	syntax.txt	/*sh.vim*
+shell-window	tips.txt	/*shell-window*
+shell_error-variable	eval.txt	/*shell_error-variable*
+shift	intro.txt	/*shift*
+shift-left-right	change.txt	/*shift-left-right*
+short-name-changed	version4.txt	/*short-name-changed*
+showing-menus	gui.txt	/*showing-menus*
+sign-commands	sign.txt	/*sign-commands*
+sign-intro	sign.txt	/*sign-intro*
+sign-support	sign.txt	/*sign-support*
+sign.txt	sign.txt	/*sign.txt*
+signs	sign.txt	/*signs*
+simple-change	change.txt	/*simple-change*
+simplify()	eval.txt	/*simplify()*
+single-repeat	repeat.txt	/*single-repeat*
+skeleton	autocmd.txt	/*skeleton*
+slow-fast-terminal	term.txt	/*slow-fast-terminal*
+slow-start	starting.txt	/*slow-start*
+slow-terminal	term.txt	/*slow-terminal*
+sniff	if_sniff.txt	/*sniff*
+sniff-commands	if_sniff.txt	/*sniff-commands*
+sniff-compiling	if_sniff.txt	/*sniff-compiling*
+sniff-intro	if_sniff.txt	/*sniff-intro*
+space	intro.txt	/*space*
+spec-customizing	pi_spec.txt	/*spec-customizing*
+spec-how-to-use-it	pi_spec.txt	/*spec-how-to-use-it*
+spec-plugin	filetype.txt	/*spec-plugin*
+spec-setting-a-map	pi_spec.txt	/*spec-setting-a-map*
+spec_chglog_format	pi_spec.txt	/*spec_chglog_format*
+spec_chglog_prepend	pi_spec.txt	/*spec_chglog_prepend*
+spec_chglog_release_info	pi_spec.txt	/*spec_chglog_release_info*
+special-buffers	windows.txt	/*special-buffers*
+speed-up	tips.txt	/*speed-up*
+splitfind	windows.txt	/*splitfind*
+splitview	windows.txt	/*splitview*
+sponsor	sponsor.txt	/*sponsor*
+sponsor-faq	sponsor.txt	/*sponsor-faq*
+sponsor.txt	sponsor.txt	/*sponsor.txt*
+spoon	os_unix.txt	/*spoon*
+spup-syntax	syntax.txt	/*spup-syntax*
+spup.vim	syntax.txt	/*spup.vim*
+sscanf	eval.txt	/*sscanf*
+standard-plugin	usr_05.txt	/*standard-plugin*
+standard-plugin-list	help.txt	/*standard-plugin-list*
+star	pattern.txt	/*star*
+start-of-file	pattern.txt	/*start-of-file*
+starting	starting.txt	/*starting*
+starting-amiga	starting.txt	/*starting-amiga*
+starting.txt	starting.txt	/*starting.txt*
+startup	starting.txt	/*startup*
+startup-options	starting.txt	/*startup-options*
+startup-terminal	term.txt	/*startup-terminal*
+static-tag	tagsrch.txt	/*static-tag*
+status-line	windows.txt	/*status-line*
+statusmsg-variable	eval.txt	/*statusmsg-variable*
+strftime()	eval.txt	/*strftime()*
+stridx()	eval.txt	/*stridx()*
+string-match	eval.txt	/*string-match*
+strlen()	eval.txt	/*strlen()*
+strpart()	eval.txt	/*strpart()*
+strridx()	eval.txt	/*strridx()*
+strtrans()	eval.txt	/*strtrans()*
+style-changes	develop.txt	/*style-changes*
+style-examples	develop.txt	/*style-examples*
+style-functions	develop.txt	/*style-functions*
+style-names	develop.txt	/*style-names*
+style-spaces	develop.txt	/*style-spaces*
+style-various	develop.txt	/*style-various*
+sub-menu-priority	gui.txt	/*sub-menu-priority*
+sub-replace-expression	change.txt	/*sub-replace-expression*
+sub-replace-special	change.txt	/*sub-replace-special*
+submatch()	eval.txt	/*submatch()*
+subscribe-maillist	intro.txt	/*subscribe-maillist*
+substitute()	eval.txt	/*substitute()*
+substitute-CR	version6.txt	/*substitute-CR*
+suffixes	cmdline.txt	/*suffixes*
+suspend	starting.txt	/*suspend*
+swap-file	recover.txt	/*swap-file*
+swapfile-changed	version4.txt	/*swapfile-changed*
+syn-sync-grouphere	syntax.txt	/*syn-sync-grouphere*
+syn-sync-groupthere	syntax.txt	/*syn-sync-groupthere*
+synID()	eval.txt	/*synID()*
+synIDattr()	eval.txt	/*synIDattr()*
+synIDtrans()	eval.txt	/*synIDtrans()*
+syncbind	scroll.txt	/*syncbind*
+syncolor	syntax.txt	/*syncolor*
+synload-1	syntax.txt	/*synload-1*
+synload-2	syntax.txt	/*synload-2*
+synload-3	syntax.txt	/*synload-3*
+synload-4	syntax.txt	/*synload-4*
+synload-5	syntax.txt	/*synload-5*
+synload-6	syntax.txt	/*synload-6*
+syntax	syntax.txt	/*syntax*
+syntax-highlighting	syntax.txt	/*syntax-highlighting*
+syntax-loading	syntax.txt	/*syntax-loading*
+syntax-printing	usr_06.txt	/*syntax-printing*
+syntax.txt	syntax.txt	/*syntax.txt*
+syntax_cmd	syntax.txt	/*syntax_cmd*
+sys-file-list	help.txt	/*sys-file-list*
+system()	eval.txt	/*system()*
+system-vimrc	starting.txt	/*system-vimrc*
+s~	change.txt	/*s~*
+t	motion.txt	/*t*
+t_#2	term.txt	/*t_#2*
+t_#4	term.txt	/*t_#4*
+t_%1	term.txt	/*t_%1*
+t_%i	term.txt	/*t_%i*
+t_&8	term.txt	/*t_&8*
+t_@7	term.txt	/*t_@7*
+t_AB	term.txt	/*t_AB*
+t_AF	term.txt	/*t_AF*
+t_AL	term.txt	/*t_AL*
+t_CS	term.txt	/*t_CS*
+t_CV	term.txt	/*t_CV*
+t_Co	term.txt	/*t_Co*
+t_DL	term.txt	/*t_DL*
+t_F1	term.txt	/*t_F1*
+t_F2	term.txt	/*t_F2*
+t_F3	term.txt	/*t_F3*
+t_F4	term.txt	/*t_F4*
+t_F5	term.txt	/*t_F5*
+t_F6	term.txt	/*t_F6*
+t_F7	term.txt	/*t_F7*
+t_F8	term.txt	/*t_F8*
+t_F9	term.txt	/*t_F9*
+t_IE	term.txt	/*t_IE*
+t_IS	term.txt	/*t_IS*
+t_K1	term.txt	/*t_K1*
+t_K3	term.txt	/*t_K3*
+t_K4	term.txt	/*t_K4*
+t_K5	term.txt	/*t_K5*
+t_K6	term.txt	/*t_K6*
+t_K7	term.txt	/*t_K7*
+t_K8	term.txt	/*t_K8*
+t_K9	term.txt	/*t_K9*
+t_KA	term.txt	/*t_KA*
+t_KB	term.txt	/*t_KB*
+t_KC	term.txt	/*t_KC*
+t_KD	term.txt	/*t_KD*
+t_KE	term.txt	/*t_KE*
+t_KF	term.txt	/*t_KF*
+t_KG	term.txt	/*t_KG*
+t_KH	term.txt	/*t_KH*
+t_KI	term.txt	/*t_KI*
+t_KJ	term.txt	/*t_KJ*
+t_KK	term.txt	/*t_KK*
+t_KL	term.txt	/*t_KL*
+t_RI	term.txt	/*t_RI*
+t_RV	term.txt	/*t_RV*
+t_Sb	term.txt	/*t_Sb*
+t_Sf	term.txt	/*t_Sf*
+t_WP	term.txt	/*t_WP*
+t_WS	term.txt	/*t_WS*
+t_ZH	term.txt	/*t_ZH*
+t_ZR	term.txt	/*t_ZR*
+t_al	term.txt	/*t_al*
+t_bc	term.txt	/*t_bc*
+t_cd	term.txt	/*t_cd*
+t_cdl	version4.txt	/*t_cdl*
+t_ce	term.txt	/*t_ce*
+t_ci	version4.txt	/*t_ci*
+t_cil	version4.txt	/*t_cil*
+t_cl	term.txt	/*t_cl*
+t_cm	term.txt	/*t_cm*
+t_cri	version4.txt	/*t_cri*
+t_cs	term.txt	/*t_cs*
+t_csc	version4.txt	/*t_csc*
+t_cv	version4.txt	/*t_cv*
+t_cvv	version4.txt	/*t_cvv*
+t_da	term.txt	/*t_da*
+t_db	term.txt	/*t_db*
+t_dl	term.txt	/*t_dl*
+t_ed	version4.txt	/*t_ed*
+t_el	version4.txt	/*t_el*
+t_f1	version4.txt	/*t_f1*
+t_f10	version4.txt	/*t_f10*
+t_f2	version4.txt	/*t_f2*
+t_f3	version4.txt	/*t_f3*
+t_f4	version4.txt	/*t_f4*
+t_f5	version4.txt	/*t_f5*
+t_f6	version4.txt	/*t_f6*
+t_f7	version4.txt	/*t_f7*
+t_f8	version4.txt	/*t_f8*
+t_f9	version4.txt	/*t_f9*
+t_fs	term.txt	/*t_fs*
+t_help	version4.txt	/*t_help*
+t_il	version4.txt	/*t_il*
+t_k1	term.txt	/*t_k1*
+t_k2	term.txt	/*t_k2*
+t_k3	term.txt	/*t_k3*
+t_k4	term.txt	/*t_k4*
+t_k5	term.txt	/*t_k5*
+t_k6	term.txt	/*t_k6*
+t_k7	term.txt	/*t_k7*
+t_k8	term.txt	/*t_k8*
+t_k9	term.txt	/*t_k9*
+t_k;	term.txt	/*t_k;*
+t_kB	term.txt	/*t_kB*
+t_kD	term.txt	/*t_kD*
+t_kI	term.txt	/*t_kI*
+t_kN	term.txt	/*t_kN*
+t_kP	term.txt	/*t_kP*
+t_kb	term.txt	/*t_kb*
+t_kd	term.txt	/*t_kd*
+t_ke	term.txt	/*t_ke*
+t_kh	term.txt	/*t_kh*
+t_kl	term.txt	/*t_kl*
+t_kr	term.txt	/*t_kr*
+t_ks	term.txt	/*t_ks*
+t_ku	term.txt	/*t_ku*
+t_le	term.txt	/*t_le*
+t_mb	term.txt	/*t_mb*
+t_md	term.txt	/*t_md*
+t_me	term.txt	/*t_me*
+t_mr	term.txt	/*t_mr*
+t_ms	term.txt	/*t_ms*
+t_nd	term.txt	/*t_nd*
+t_op	term.txt	/*t_op*
+t_se	term.txt	/*t_se*
+t_sf1	version4.txt	/*t_sf1*
+t_sf10	version4.txt	/*t_sf10*
+t_sf2	version4.txt	/*t_sf2*
+t_sf3	version4.txt	/*t_sf3*
+t_sf4	version4.txt	/*t_sf4*
+t_sf5	version4.txt	/*t_sf5*
+t_sf6	version4.txt	/*t_sf6*
+t_sf7	version4.txt	/*t_sf7*
+t_sf8	version4.txt	/*t_sf8*
+t_sf9	version4.txt	/*t_sf9*
+t_skd	version4.txt	/*t_skd*
+t_skl	version4.txt	/*t_skl*
+t_skr	version4.txt	/*t_skr*
+t_sku	version4.txt	/*t_sku*
+t_so	term.txt	/*t_so*
+t_sr	term.txt	/*t_sr*
+t_star7	term.txt	/*t_star7*
+t_tb	version4.txt	/*t_tb*
+t_te	term.txt	/*t_te*
+t_ti	term.txt	/*t_ti*
+t_tp	version4.txt	/*t_tp*
+t_ts	term.txt	/*t_ts*
+t_ts_old	version4.txt	/*t_ts_old*
+t_ue	term.txt	/*t_ue*
+t_undo	version4.txt	/*t_undo*
+t_us	term.txt	/*t_us*
+t_ut	term.txt	/*t_ut*
+t_vb	term.txt	/*t_vb*
+t_ve	term.txt	/*t_ve*
+t_vi	term.txt	/*t_vi*
+t_vs	term.txt	/*t_vs*
+t_xs	term.txt	/*t_xs*
+tab	intro.txt	/*tab*
+tag	tagsrch.txt	/*tag*
+tag-!	tagsrch.txt	/*tag-!*
+tag-any-white	tagsrch.txt	/*tag-any-white*
+tag-binary-search	tagsrch.txt	/*tag-binary-search*
+tag-commands	tagsrch.txt	/*tag-commands*
+tag-details	tagsrch.txt	/*tag-details*
+tag-highlight	syntax.txt	/*tag-highlight*
+tag-matchlist	tagsrch.txt	/*tag-matchlist*
+tag-old-static	tagsrch.txt	/*tag-old-static*
+tag-overloaded	version5.txt	/*tag-overloaded*
+tag-priority	tagsrch.txt	/*tag-priority*
+tag-regexp	tagsrch.txt	/*tag-regexp*
+tag-search	tagsrch.txt	/*tag-search*
+tag-security	tagsrch.txt	/*tag-security*
+tag-skip-file	tagsrch.txt	/*tag-skip-file*
+tag-stack	tagsrch.txt	/*tag-stack*
+tags	tagsrch.txt	/*tags*
+tags-and-searches	tagsrch.txt	/*tags-and-searches*
+tags-file-changed	version5.txt	/*tags-file-changed*
+tags-file-format	tagsrch.txt	/*tags-file-format*
+tags-option	tagsrch.txt	/*tags-option*
+tagsrch.txt	tagsrch.txt	/*tagsrch.txt*
+tagstack	tagsrch.txt	/*tagstack*
+tcl	if_tcl.txt	/*tcl*
+tcl-beep	if_tcl.txt	/*tcl-beep*
+tcl-buffer	if_tcl.txt	/*tcl-buffer*
+tcl-buffer-append	if_tcl.txt	/*tcl-buffer-append*
+tcl-buffer-cmds	if_tcl.txt	/*tcl-buffer-cmds*
+tcl-buffer-command	if_tcl.txt	/*tcl-buffer-command*
+tcl-buffer-count	if_tcl.txt	/*tcl-buffer-count*
+tcl-buffer-delcmd	if_tcl.txt	/*tcl-buffer-delcmd*
+tcl-buffer-delete	if_tcl.txt	/*tcl-buffer-delete*
+tcl-buffer-expr	if_tcl.txt	/*tcl-buffer-expr*
+tcl-buffer-get	if_tcl.txt	/*tcl-buffer-get*
+tcl-buffer-insert	if_tcl.txt	/*tcl-buffer-insert*
+tcl-buffer-last	if_tcl.txt	/*tcl-buffer-last*
+tcl-buffer-mark	if_tcl.txt	/*tcl-buffer-mark*
+tcl-buffer-option	if_tcl.txt	/*tcl-buffer-option*
+tcl-buffer-set	if_tcl.txt	/*tcl-buffer-set*
+tcl-buffer-windows	if_tcl.txt	/*tcl-buffer-windows*
+tcl-bugs	if_tcl.txt	/*tcl-bugs*
+tcl-command	if_tcl.txt	/*tcl-command*
+tcl-commands	if_tcl.txt	/*tcl-commands*
+tcl-ex-commands	if_tcl.txt	/*tcl-ex-commands*
+tcl-examples	if_tcl.txt	/*tcl-examples*
+tcl-expr	if_tcl.txt	/*tcl-expr*
+tcl-linenumbers	if_tcl.txt	/*tcl-linenumbers*
+tcl-misc	if_tcl.txt	/*tcl-misc*
+tcl-option	if_tcl.txt	/*tcl-option*
+tcl-output	if_tcl.txt	/*tcl-output*
+tcl-var-current	if_tcl.txt	/*tcl-var-current*
+tcl-var-lbase	if_tcl.txt	/*tcl-var-lbase*
+tcl-var-line	if_tcl.txt	/*tcl-var-line*
+tcl-var-lnum	if_tcl.txt	/*tcl-var-lnum*
+tcl-var-range	if_tcl.txt	/*tcl-var-range*
+tcl-variables	if_tcl.txt	/*tcl-variables*
+tcl-window	if_tcl.txt	/*tcl-window*
+tcl-window-buffer	if_tcl.txt	/*tcl-window-buffer*
+tcl-window-cmds	if_tcl.txt	/*tcl-window-cmds*
+tcl-window-command	if_tcl.txt	/*tcl-window-command*
+tcl-window-cursor	if_tcl.txt	/*tcl-window-cursor*
+tcl-window-delcmd	if_tcl.txt	/*tcl-window-delcmd*
+tcl-window-expr	if_tcl.txt	/*tcl-window-expr*
+tcl-window-height	if_tcl.txt	/*tcl-window-height*
+tcl-window-option	if_tcl.txt	/*tcl-window-option*
+tcsh-style	cmdline.txt	/*tcsh-style*
+tcsh-syntax	syntax.txt	/*tcsh-syntax*
+tcsh.vim	syntax.txt	/*tcsh.vim*
+tear-off-menus	gui.txt	/*tear-off-menus*
+telnet-CTRL-]	tagsrch.txt	/*telnet-CTRL-]*
+temp-file-name	eval.txt	/*temp-file-name*
+template	autocmd.txt	/*template*
+tempname()	eval.txt	/*tempname()*
+term-dependent-settings	term.txt	/*term-dependent-settings*
+term-list	syntax.txt	/*term-list*
+term.txt	term.txt	/*term.txt*
+termcap	term.txt	/*termcap*
+termcap-changed	version4.txt	/*termcap-changed*
+termcap-colors	term.txt	/*termcap-colors*
+termcap-syntax	syntax.txt	/*termcap-syntax*
+termcap-title	term.txt	/*termcap-title*
+terminal-colors	os_unix.txt	/*terminal-colors*
+terminal-info	term.txt	/*terminal-info*
+terminal-options	term.txt	/*terminal-options*
+terminfo	term.txt	/*terminfo*
+termresponse-variable	eval.txt	/*termresponse-variable*
+tex-syntax	syntax.txt	/*tex-syntax*
+tex.vim	syntax.txt	/*tex.vim*
+text-objects	motion.txt	/*text-objects*
+text-objects-changed	version5.txt	/*text-objects-changed*
+tf-syntax	syntax.txt	/*tf-syntax*
+tf.vim	syntax.txt	/*tf.vim*
+this_session-variable	eval.txt	/*this_session-variable*
+throw-catch	eval.txt	/*throw-catch*
+throw-expression	eval.txt	/*throw-expression*
+throw-from-catch	eval.txt	/*throw-from-catch*
+throw-variables	eval.txt	/*throw-variables*
+throwpoint-variable	eval.txt	/*throwpoint-variable*
+timestamp	editing.txt	/*timestamp*
+timestamps	editing.txt	/*timestamps*
+tips	tips.txt	/*tips*
+tips.txt	tips.txt	/*tips.txt*
+todo	todo.txt	/*todo*
+todo.txt	todo.txt	/*todo.txt*
+toggle	options.txt	/*toggle*
+toggle-revins	version4.txt	/*toggle-revins*
+tolower()	eval.txt	/*tolower()*
+toolbar-icon	gui.txt	/*toolbar-icon*
+toupper()	eval.txt	/*toupper()*
+trojan-horse	starting.txt	/*trojan-horse*
+try-conditionals	eval.txt	/*try-conditionals*
+try-echoerr	eval.txt	/*try-echoerr*
+try-finally	eval.txt	/*try-finally*
+try-nested	eval.txt	/*try-nested*
+try-nesting	eval.txt	/*try-nesting*
+tutor	usr_01.txt	/*tutor*
+twice	if_cscop.txt	/*twice*
+type()	eval.txt	/*type()*
+type-mistakes	tips.txt	/*type-mistakes*
+typecorr-settings	usr_41.txt	/*typecorr-settings*
+typecorr.txt	usr_41.txt	/*typecorr.txt*
+u	undo.txt	/*u*
+uganda	uganda.txt	/*uganda*
+uganda.txt	uganda.txt	/*uganda.txt*
+undo	undo.txt	/*undo*
+undo-commands	undo.txt	/*undo-commands*
+undo-redo	undo.txt	/*undo-redo*
+undo-remarks	undo.txt	/*undo-remarks*
+undo-two-ways	undo.txt	/*undo-two-ways*
+undo.txt	undo.txt	/*undo.txt*
+undo_ftplugin	usr_41.txt	/*undo_ftplugin*
+unicode	mbyte.txt	/*unicode*
+unix	os_unix.txt	/*unix*
+unlisted-buffer	windows.txt	/*unlisted-buffer*
+up-down-motions	motion.txt	/*up-down-motions*
+uppercase	change.txt	/*uppercase*
+use-cpo-save	usr_41.txt	/*use-cpo-save*
+use-visual-cmds	version4.txt	/*use-visual-cmds*
+useful-mappings	tips.txt	/*useful-mappings*
+usenet	intro.txt	/*usenet*
+user-cmd-ambiguous	map.txt	/*user-cmd-ambiguous*
+user-commands	map.txt	/*user-commands*
+user-functions	eval.txt	/*user-functions*
+user-manual	usr_toc.txt	/*user-manual*
+using-<Plug>	usr_41.txt	/*using-<Plug>*
+using-menus	gui.txt	/*using-menus*
+using-scripts	repeat.txt	/*using-scripts*
+using-xxd	tips.txt	/*using-xxd*
+using_CTRL-V	map.txt	/*using_CTRL-V*
+usr_01.txt	usr_01.txt	/*usr_01.txt*
+usr_02.txt	usr_02.txt	/*usr_02.txt*
+usr_03.txt	usr_03.txt	/*usr_03.txt*
+usr_04.txt	usr_04.txt	/*usr_04.txt*
+usr_05.txt	usr_05.txt	/*usr_05.txt*
+usr_06.txt	usr_06.txt	/*usr_06.txt*
+usr_07.txt	usr_07.txt	/*usr_07.txt*
+usr_08.txt	usr_08.txt	/*usr_08.txt*
+usr_09.txt	usr_09.txt	/*usr_09.txt*
+usr_10.txt	usr_10.txt	/*usr_10.txt*
+usr_11.txt	usr_11.txt	/*usr_11.txt*
+usr_12.txt	usr_12.txt	/*usr_12.txt*
+usr_20.txt	usr_20.txt	/*usr_20.txt*
+usr_21.txt	usr_21.txt	/*usr_21.txt*
+usr_22.txt	usr_22.txt	/*usr_22.txt*
+usr_23.txt	usr_23.txt	/*usr_23.txt*
+usr_24.txt	usr_24.txt	/*usr_24.txt*
+usr_25.txt	usr_25.txt	/*usr_25.txt*
+usr_26.txt	usr_26.txt	/*usr_26.txt*
+usr_27.txt	usr_27.txt	/*usr_27.txt*
+usr_28.txt	usr_28.txt	/*usr_28.txt*
+usr_29.txt	usr_29.txt	/*usr_29.txt*
+usr_30.txt	usr_30.txt	/*usr_30.txt*
+usr_31.txt	usr_31.txt	/*usr_31.txt*
+usr_40.txt	usr_40.txt	/*usr_40.txt*
+usr_41.txt	usr_41.txt	/*usr_41.txt*
+usr_42.txt	usr_42.txt	/*usr_42.txt*
+usr_43.txt	usr_43.txt	/*usr_43.txt*
+usr_44.txt	usr_44.txt	/*usr_44.txt*
+usr_45.txt	usr_45.txt	/*usr_45.txt*
+usr_90.txt	usr_90.txt	/*usr_90.txt*
+usr_toc.txt	usr_toc.txt	/*usr_toc.txt*
+utf-8	mbyte.txt	/*utf-8*
+utf-8-char-arg	mbyte.txt	/*utf-8-char-arg*
+utf-8-in-xwindows	mbyte.txt	/*utf-8-in-xwindows*
+utf-8-typing	mbyte.txt	/*utf-8-typing*
+utf8	mbyte.txt	/*utf8*
+v	visual.txt	/*v*
+v:charconvert_from	eval.txt	/*v:charconvert_from*
+v:charconvert_to	eval.txt	/*v:charconvert_to*
+v:cmdarg	eval.txt	/*v:cmdarg*
+v:cmdbang	eval.txt	/*v:cmdbang*
+v:count	eval.txt	/*v:count*
+v:count1	eval.txt	/*v:count1*
+v:ctype	eval.txt	/*v:ctype*
+v:dying	eval.txt	/*v:dying*
+v:errmsg	eval.txt	/*v:errmsg*
+v:exception	eval.txt	/*v:exception*
+v:fname_diff	eval.txt	/*v:fname_diff*
+v:fname_in	eval.txt	/*v:fname_in*
+v:fname_new	eval.txt	/*v:fname_new*
+v:fname_out	eval.txt	/*v:fname_out*
+v:folddashes	eval.txt	/*v:folddashes*
+v:foldend	eval.txt	/*v:foldend*
+v:foldlevel	eval.txt	/*v:foldlevel*
+v:foldstart	eval.txt	/*v:foldstart*
+v:lang	eval.txt	/*v:lang*
+v:lc_time	eval.txt	/*v:lc_time*
+v:lnum	eval.txt	/*v:lnum*
+v:prevcount	eval.txt	/*v:prevcount*
+v:progname	eval.txt	/*v:progname*
+v:register	eval.txt	/*v:register*
+v:servername	eval.txt	/*v:servername*
+v:shell_error	eval.txt	/*v:shell_error*
+v:statusmsg	eval.txt	/*v:statusmsg*
+v:termresponse	eval.txt	/*v:termresponse*
+v:this_session	eval.txt	/*v:this_session*
+v:throwpoint	eval.txt	/*v:throwpoint*
+v:var	eval.txt	/*v:var*
+v:version	eval.txt	/*v:version*
+v:warningmsg	eval.txt	/*v:warningmsg*
+v_!	change.txt	/*v_!*
+v_$	visual.txt	/*v_$*
+v_:	cmdline.txt	/*v_:*
+v_<	change.txt	/*v_<*
+v_<BS>	change.txt	/*v_<BS>*
+v_<Del>	change.txt	/*v_<Del>*
+v_=	change.txt	/*v_=*
+v_>	change.txt	/*v_>*
+v_C	change.txt	/*v_C*
+v_CTRL-C	visual.txt	/*v_CTRL-C*
+v_CTRL-G	visual.txt	/*v_CTRL-G*
+v_CTRL-H	change.txt	/*v_CTRL-H*
+v_CTRL-O	visual.txt	/*v_CTRL-O*
+v_CTRL-V	visual.txt	/*v_CTRL-V*
+v_CTRL-Z	starting.txt	/*v_CTRL-Z*
+v_CTRL-\_CTRL-G	intro.txt	/*v_CTRL-\\_CTRL-G*
+v_CTRL-\_CTRL-N	intro.txt	/*v_CTRL-\\_CTRL-N*
+v_CTRL-]	tagsrch.txt	/*v_CTRL-]*
+v_D	change.txt	/*v_D*
+v_J	change.txt	/*v_J*
+v_K	various.txt	/*v_K*
+v_O	visual.txt	/*v_O*
+v_P	change.txt	/*v_P*
+v_R	change.txt	/*v_R*
+v_S	change.txt	/*v_S*
+v_U	change.txt	/*v_U*
+v_V	visual.txt	/*v_V*
+v_X	change.txt	/*v_X*
+v_Y	change.txt	/*v_Y*
+v_a	motion.txt	/*v_a*
+v_a(	motion.txt	/*v_a(*
+v_a)	motion.txt	/*v_a)*
+v_a<	motion.txt	/*v_a<*
+v_a>	motion.txt	/*v_a>*
+v_aB	motion.txt	/*v_aB*
+v_aW	motion.txt	/*v_aW*
+v_a[	motion.txt	/*v_a[*
+v_a]	motion.txt	/*v_a]*
+v_ab	motion.txt	/*v_ab*
+v_ap	motion.txt	/*v_ap*
+v_as	motion.txt	/*v_as*
+v_aw	motion.txt	/*v_aw*
+v_a{	motion.txt	/*v_a{*
+v_a}	motion.txt	/*v_a}*
+v_b_<	visual.txt	/*v_b_<*
+v_b_<_example	visual.txt	/*v_b_<_example*
+v_b_>	visual.txt	/*v_b_>*
+v_b_>_example	visual.txt	/*v_b_>_example*
+v_b_A	visual.txt	/*v_b_A*
+v_b_A_example	visual.txt	/*v_b_A_example*
+v_b_C	visual.txt	/*v_b_C*
+v_b_D	change.txt	/*v_b_D*
+v_b_I	visual.txt	/*v_b_I*
+v_b_I_example	visual.txt	/*v_b_I_example*
+v_b_c	visual.txt	/*v_b_c*
+v_b_r	visual.txt	/*v_b_r*
+v_b_r_example	visual.txt	/*v_b_r_example*
+v_c	change.txt	/*v_c*
+v_d	change.txt	/*v_d*
+v_g?	change.txt	/*v_g?*
+v_gJ	change.txt	/*v_gJ*
+v_gV	visual.txt	/*v_gV*
+v_g]	tagsrch.txt	/*v_g]*
+v_g_CTRL-G	editing.txt	/*v_g_CTRL-G*
+v_g_CTRL-]	tagsrch.txt	/*v_g_CTRL-]*
+v_gf	editing.txt	/*v_gf*
+v_gq	change.txt	/*v_gq*
+v_gv	visual.txt	/*v_gv*
+v_i	motion.txt	/*v_i*
+v_i(	motion.txt	/*v_i(*
+v_i)	motion.txt	/*v_i)*
+v_i<	motion.txt	/*v_i<*
+v_i>	motion.txt	/*v_i>*
+v_iB	motion.txt	/*v_iB*
+v_iW	motion.txt	/*v_iW*
+v_i[	motion.txt	/*v_i[*
+v_i]	motion.txt	/*v_i]*
+v_ib	motion.txt	/*v_ib*
+v_ip	motion.txt	/*v_ip*
+v_is	motion.txt	/*v_is*
+v_iw	motion.txt	/*v_iw*
+v_i{	motion.txt	/*v_i{*
+v_i}	motion.txt	/*v_i}*
+v_o	visual.txt	/*v_o*
+v_p	change.txt	/*v_p*
+v_r	change.txt	/*v_r*
+v_s	change.txt	/*v_s*
+v_u	change.txt	/*v_u*
+v_v	visual.txt	/*v_v*
+v_x	change.txt	/*v_x*
+v_y	change.txt	/*v_y*
+v_~	change.txt	/*v_~*
+variables	eval.txt	/*variables*
+various	various.txt	/*various*
+various-cmds	various.txt	/*various-cmds*
+various-motions	motion.txt	/*various-motions*
+various.txt	various.txt	/*various.txt*
+vb-syntax	syntax.txt	/*vb-syntax*
+vb.vim	syntax.txt	/*vb.vim*
+verbose	starting.txt	/*verbose*
+verilog-indent	indent.txt	/*verilog-indent*
+version-5.1	version5.txt	/*version-5.1*
+version-5.2	version5.txt	/*version-5.2*
+version-5.3	version5.txt	/*version-5.3*
+version-5.4	version5.txt	/*version-5.4*
+version-5.5	version5.txt	/*version-5.5*
+version-5.6	version5.txt	/*version-5.6*
+version-5.7	version5.txt	/*version-5.7*
+version-5.8	version5.txt	/*version-5.8*
+version-6.1	version6.txt	/*version-6.1*
+version-6.2	version6.txt	/*version-6.2*
+version-6.3	version6.txt	/*version-6.3*
+version-variable	eval.txt	/*version-variable*
+version4.txt	version4.txt	/*version4.txt*
+version5.txt	version5.txt	/*version5.txt*
+version6.txt	version6.txt	/*version6.txt*
+vi-differences	vi_diff.txt	/*vi-differences*
+vi:	options.txt	/*vi:*
+vi_diff.txt	vi_diff.txt	/*vi_diff.txt*
+view	starting.txt	/*view*
+view-diffs	diff.txt	/*view-diffs*
+view-file	starting.txt	/*view-file*
+views-sessions	starting.txt	/*views-sessions*
+vim-additions	vi_diff.txt	/*vim-additions*
+vim-announce	intro.txt	/*vim-announce*
+vim-arguments	starting.txt	/*vim-arguments*
+vim-default-editor	gui_w32.txt	/*vim-default-editor*
+vim-dev	intro.txt	/*vim-dev*
+vim-mac	intro.txt	/*vim-mac*
+vim-modes	intro.txt	/*vim-modes*
+vim-modes-intro	intro.txt	/*vim-modes-intro*
+vim-multibyte	intro.txt	/*vim-multibyte*
+vim-script-intro	usr_41.txt	/*vim-script-intro*
+vim-syntax	syntax.txt	/*vim-syntax*
+vim-variable	eval.txt	/*vim-variable*
+vim.vim	syntax.txt	/*vim.vim*
+vim:	options.txt	/*vim:*
+vimdev	intro.txt	/*vimdev*
+vimdiff	diff.txt	/*vimdiff*
+vimfiles	options.txt	/*vimfiles*
+viminfo	starting.txt	/*viminfo*
+viminfo-encoding	starting.txt	/*viminfo-encoding*
+viminfo-errors	starting.txt	/*viminfo-errors*
+viminfo-file	starting.txt	/*viminfo-file*
+viminfo-file-marks	starting.txt	/*viminfo-file-marks*
+viminfo-file-name	starting.txt	/*viminfo-file-name*
+viminfo-read	starting.txt	/*viminfo-read*
+viminfo-write	starting.txt	/*viminfo-write*
+vimrc	starting.txt	/*vimrc*
+vimrc-filetype	usr_05.txt	/*vimrc-filetype*
+vimrc-intro	usr_05.txt	/*vimrc-intro*
+vimrc_example.vim	usr_05.txt	/*vimrc_example.vim*
+vimtutor	usr_01.txt	/*vimtutor*
+virtcol()	eval.txt	/*virtcol()*
+visual-block	visual.txt	/*visual-block*
+visual-change	visual.txt	/*visual-change*
+visual-examples	visual.txt	/*visual-examples*
+visual-index	index.txt	/*visual-index*
+visual-mode	visual.txt	/*visual-mode*
+visual-operators	visual.txt	/*visual-operators*
+visual-repeat	visual.txt	/*visual-repeat*
+visual-search	visual.txt	/*visual-search*
+visual-start	visual.txt	/*visual-start*
+visual-use	visual.txt	/*visual-use*
+visual.txt	visual.txt	/*visual.txt*
+visualmode()	eval.txt	/*visualmode()*
+vms	os_vms.txt	/*vms*
+vms-authors	os_vms.txt	/*vms-authors*
+vms-changes	os_vms.txt	/*vms-changes*
+vms-compiling	os_vms.txt	/*vms-compiling*
+vms-deploy	os_vms.txt	/*vms-deploy*
+vms-download	os_vms.txt	/*vms-download*
+vms-gui	os_vms.txt	/*vms-gui*
+vms-notes	os_vms.txt	/*vms-notes*
+vms-problems	os_vms.txt	/*vms-problems*
+vms-started	os_vms.txt	/*vms-started*
+vms-usage	os_vms.txt	/*vms-usage*
+vote-for-features	sponsor.txt	/*vote-for-features*
+votes-counted	sponsor.txt	/*votes-counted*
+votes-for-changes	todo.txt	/*votes-for-changes*
+vreplace-mode	insert.txt	/*vreplace-mode*
+vt100-cursor-keys	term.txt	/*vt100-cursor-keys*
+vt100-function-keys	term.txt	/*vt100-function-keys*
+w	motion.txt	/*w*
+w32-clientserver	remote.txt	/*w32-clientserver*
+w:var	eval.txt	/*w:var*
+warningmsg-variable	eval.txt	/*warningmsg-variable*
+white-space	pattern.txt	/*white-space*
+whitespace	pattern.txt	/*whitespace*
+win16-!start	gui_w16.txt	/*win16-!start*
+win16-clipboard	gui_w16.txt	/*win16-clipboard*
+win16-colors	gui_w16.txt	/*win16-colors*
+win16-default-editor	gui_w16.txt	/*win16-default-editor*
+win16-dialogs	gui_w16.txt	/*win16-dialogs*
+win16-drag-n-drop	gui_w16.txt	/*win16-drag-n-drop*
+win16-gui	gui_w16.txt	/*win16-gui*
+win16-maximized	gui_w16.txt	/*win16-maximized*
+win16-printing	gui_w16.txt	/*win16-printing*
+win16-shell	gui_w16.txt	/*win16-shell*
+win16-start	gui_w16.txt	/*win16-start*
+win16-truetype	gui_w16.txt	/*win16-truetype*
+win16-various	gui_w16.txt	/*win16-various*
+win32	os_win32.txt	/*win32*
+win32-!start	gui_w32.txt	/*win32-!start*
+win32-colors	gui_w32.txt	/*win32-colors*
+win32-compiling	os_win32.txt	/*win32-compiling*
+win32-curdir	os_win32.txt	/*win32-curdir*
+win32-faq	os_win32.txt	/*win32-faq*
+win32-gettext	mlang.txt	/*win32-gettext*
+win32-gui	gui_w32.txt	/*win32-gui*
+win32-hidden-menus	gui.txt	/*win32-hidden-menus*
+win32-mouse	os_win32.txt	/*win32-mouse*
+win32-open-with-menu	gui_w32.txt	/*win32-open-with-menu*
+win32-popup-menu	gui_w32.txt	/*win32-popup-menu*
+win32-problems	os_win32.txt	/*win32-problems*
+win32-restore	os_win32.txt	/*win32-restore*
+win32-startup	os_win32.txt	/*win32-startup*
+win32-term	os_win32.txt	/*win32-term*
+win32-vimrun	gui_w32.txt	/*win32-vimrun*
+win32-win3.1	os_win32.txt	/*win32-win3.1*
+win32s	os_win32.txt	/*win32s*
+winbufnr()	eval.txt	/*winbufnr()*
+wincol()	eval.txt	/*wincol()*
+window-contents	intro.txt	/*window-contents*
+window-exit	editing.txt	/*window-exit*
+window-move-cursor	windows.txt	/*window-move-cursor*
+window-moving	windows.txt	/*window-moving*
+window-resize	windows.txt	/*window-resize*
+window-size	term.txt	/*window-size*
+window-tag	windows.txt	/*window-tag*
+window-variable	eval.txt	/*window-variable*
+windows	windows.txt	/*windows*
+windows-3.1	os_win32.txt	/*windows-3.1*
+windows-intro	windows.txt	/*windows-intro*
+windows-starting	windows.txt	/*windows-starting*
+windows.txt	windows.txt	/*windows.txt*
+windows95	os_win32.txt	/*windows95*
+winheight()	eval.txt	/*winheight()*
+winline()	eval.txt	/*winline()*
+winnr()	eval.txt	/*winnr()*
+winrestcmd()	eval.txt	/*winrestcmd()*
+winwidth()	eval.txt	/*winwidth()*
+word	motion.txt	/*word*
+word-count	editing.txt	/*word-count*
+word-motions	motion.txt	/*word-motions*
+workbench	starting.txt	/*workbench*
+workshop	workshop.txt	/*workshop*
+workshop-commands	workshop.txt	/*workshop-commands*
+workshop-compiling	workshop.txt	/*workshop-compiling*
+workshop-configure	workshop.txt	/*workshop-configure*
+workshop-intro	workshop.txt	/*workshop-intro*
+workshop-support	workshop.txt	/*workshop-support*
+workshop-xpm	workshop.txt	/*workshop-xpm*
+workshop.txt	workshop.txt	/*workshop.txt*
+wrap-off	intro.txt	/*wrap-off*
+write-compiler-plugin	usr_41.txt	/*write-compiler-plugin*
+write-device	editing.txt	/*write-device*
+write-fail	editing.txt	/*write-fail*
+write-filetype-plugin	usr_41.txt	/*write-filetype-plugin*
+write-local-help	usr_41.txt	/*write-local-help*
+write-plugin	usr_41.txt	/*write-plugin*
+write-quit	editing.txt	/*write-quit*
+write-readonly	editing.txt	/*write-readonly*
+writing	editing.txt	/*writing*
+www	intro.txt	/*www*
+x	change.txt	/*x*
+x-input-method	mbyte.txt	/*x-input-method*
+x-resources	version5.txt	/*x-resources*
+x11-clientserver	remote.txt	/*x11-clientserver*
+x11-cut-buffer	gui_x11.txt	/*x11-cut-buffer*
+x11-selection	gui_x11.txt	/*x11-selection*
+xf86conf-syntax	syntax.txt	/*xf86conf-syntax*
+xf86conf.vim	syntax.txt	/*xf86conf.vim*
+xfontset	mbyte.txt	/*xfontset*
+xfree-xterm	syntax.txt	/*xfree-xterm*
+xim	mbyte.txt	/*xim*
+xim-input-style	mbyte.txt	/*xim-input-style*
+xiterm	syntax.txt	/*xiterm*
+xml-folding	syntax.txt	/*xml-folding*
+xml-syntax	syntax.txt	/*xml-syntax*
+xml.vim	syntax.txt	/*xml.vim*
+xpm-syntax	syntax.txt	/*xpm-syntax*
+xpm.vim	syntax.txt	/*xpm.vim*
+xterm-8-bit	term.txt	/*xterm-8-bit*
+xterm-8bit	term.txt	/*xterm-8bit*
+xterm-blink	syntax.txt	/*xterm-blink*
+xterm-blinking-cursor	syntax.txt	/*xterm-blinking-cursor*
+xterm-clipboard	term.txt	/*xterm-clipboard*
+xterm-codes	term.txt	/*xterm-codes*
+xterm-color	syntax.txt	/*xterm-color*
+xterm-command-server	term.txt	/*xterm-command-server*
+xterm-copy-paste	term.txt	/*xterm-copy-paste*
+xterm-cursor-keys	term.txt	/*xterm-cursor-keys*
+xterm-end-home-keys	term.txt	/*xterm-end-home-keys*
+xterm-function-keys	term.txt	/*xterm-function-keys*
+xterm-mouse	options.txt	/*xterm-mouse*
+xterm-mouse-wheel	scroll.txt	/*xterm-mouse-wheel*
+xterm-save-screen	tips.txt	/*xterm-save-screen*
+xterm-screens	tips.txt	/*xterm-screens*
+xterm-scroll-region	term.txt	/*xterm-scroll-region*
+xterm-shifted-keys	term.txt	/*xterm-shifted-keys*
+y	change.txt	/*y*
+yank	change.txt	/*yank*
+ye-option-gone	version4.txt	/*ye-option-gone*
+year-2000	intro.txt	/*year-2000*
+your-runtime-dir	usr_43.txt	/*your-runtime-dir*
+yy	change.txt	/*yy*
+z	index.txt	/*z*
+z+	scroll.txt	/*z+*
+z-	scroll.txt	/*z-*
+z.	scroll.txt	/*z.*
+z/OS	os_390.txt	/*z\/OS*
+z<CR>	scroll.txt	/*z<CR>*
+z<Left>	scroll.txt	/*z<Left>*
+z<Right>	scroll.txt	/*z<Right>*
+zA	fold.txt	/*zA*
+zC	fold.txt	/*zC*
+zD	fold.txt	/*zD*
+zE	fold.txt	/*zE*
+zF	fold.txt	/*zF*
+zH	scroll.txt	/*zH*
+zL	scroll.txt	/*zL*
+zM	fold.txt	/*zM*
+zN	fold.txt	/*zN*
+zN<CR>	scroll.txt	/*zN<CR>*
+zO	fold.txt	/*zO*
+zOS	os_390.txt	/*zOS*
+zOS-Bugs	os_390.txt	/*zOS-Bugs*
+zOS-Motif	os_390.txt	/*zOS-Motif*
+zOS-building	os_390.txt	/*zOS-building*
+zOS-changes	os_390.txt	/*zOS-changes*
+zOS-feedback	os_390.txt	/*zOS-feedback*
+zOS-has-ebcdic	os_390.txt	/*zOS-has-ebcdic*
+zOS-open-source	os_390.txt	/*zOS-open-source*
+zOS-weaknesses	os_390.txt	/*zOS-weaknesses*
+zOS-xterm	os_390.txt	/*zOS-xterm*
+zR	fold.txt	/*zR*
+zX	fold.txt	/*zX*
+z^	scroll.txt	/*z^*
+za	fold.txt	/*za*
+zb	scroll.txt	/*zb*
+zc	fold.txt	/*zc*
+zd	fold.txt	/*zd*
+ze	scroll.txt	/*ze*
+zf	fold.txt	/*zf*
+zh	scroll.txt	/*zh*
+zi	fold.txt	/*zi*
+zj	fold.txt	/*zj*
+zk	fold.txt	/*zk*
+zl	scroll.txt	/*zl*
+zm	fold.txt	/*zm*
+zn	fold.txt	/*zn*
+zo	fold.txt	/*zo*
+zr	fold.txt	/*zr*
+zs	scroll.txt	/*zs*
+zt	scroll.txt	/*zt*
+zv	fold.txt	/*zv*
+zx	fold.txt	/*zx*
+zz	scroll.txt	/*zz*
+{	motion.txt	/*{*
+{Visual}	intro.txt	/*{Visual}*
+{address}	cmdline.txt	/*{address}*
+{char1-char2}	intro.txt	/*{char1-char2}*
+{event}	autocmd.txt	/*{event}*
+{file}	editing.txt	/*{file}*
+{group-name}	syntax.txt	/*{group-name}*
+{lhs}	map.txt	/*{lhs}*
+{motion}	intro.txt	/*{motion}*
+{move-around}	visual.txt	/*{move-around}*
+{offset}	pattern.txt	/*{offset}*
+{pat}	autocmd.txt	/*{pat}*
+{rhs}	map.txt	/*{rhs}*
+{subject}	various.txt	/*{subject}*
+{}	intro.txt	/*{}*
+}	motion.txt	/*}*
+~	change.txt	/*~*
diff --git a/runtime/doc/tagsrch.txt b/runtime/doc/tagsrch.txt
new file mode 100644
index 0000000..7787e0e
--- /dev/null
+++ b/runtime/doc/tagsrch.txt
@@ -0,0 +1,809 @@
+*tagsrch.txt*   For Vim version 7.0aa.  Last change: 2004 Apr 29
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Tags and special searches				*tags-and-searches*
+
+See section |29.1| of the user manual for an introduction.
+
+1. Jump to a tag		|tag-commands|
+2. Tag stack			|tag-stack|
+3. Tag match list		|tag-matchlist|
+4. Tags details			|tag-details|
+5. Tags file format		|tags-file-format|
+6. Include file searches	|include-search|
+
+==============================================================================
+1. Jump to a tag					*tag-commands*
+
+							*tag* *tags*
+A tag is an identifier that appears in a "tags" file.  It is a sort of label
+that can be jumped to.  For example: In C programs each function name can be
+used as a tag.  The "tags" file has to be generated by a program like ctags,
+before the tag commands can be used.
+
+With the ":tag" command the cursor will be positioned on the tag.  With the
+CTRL-] command, the keyword on which the cursor is standing is used as the
+tag.  If the cursor is not on a keyword, the first keyword to the right of the
+cursor is used.
+
+The ":tag" command works very well for C programs.  If you see a call to a
+function and wonder what that function does, position the cursor inside of the
+function name and hit CTRL-].  This will bring you to the function definition.
+An easy way back is with the CTRL-T command.  Also read about the tag stack
+below.
+
+						*:ta* *:tag* *E426* *E429*
+:ta[g][!] {ident}	Jump to the definition of {ident}, using the
+			information in the tags file(s).  Put {ident} in the
+			tag stack.  See |tag-!| for [!].
+			{ident} can be a regexp pattern, see |tag-regexp|.
+			When there are several matching tags for {ident}, the
+			first one is jumped to. |:tnext|.
+
+g<LeftMouse>						*g<LeftMouse>*
+<C-LeftMouse>					*<C-LeftMouse>* *CTRL-]*
+CTRL-]			Jump to the definition of the keyword under the
+			cursor.  Same as ":tag {ident}", where {ident} is the
+			keyword under or after cursor.  {Vi: identifier after
+			the cursor}
+
+							*v_CTRL-]*
+{Visual}CTRL-]		Same as ":tag {ident}", where {ident} is the text that
+			is highlighted.  {not in Vi}
+
+							*telnet-CTRL-]*
+CTRL-] is the default telnet escape key.  When you type CTRL-] to jump to a
+tag, you will get the telnet prompt instead.  Most versions of telnet allow
+changing or disabling the default escape key.  See the telnet man page.  You
+can 'telnet -E {Hostname}' to disable the escape character, or 'telnet -e
+{EscapeCharacter} {Hostname}' to specify another escape character.  If
+possible, try to use "rsh" instead of "telnet" to avoid this problem.
+
+							*tag-priority*
+When there are multiple matches for a tag, this priority is used:
+1. "FSC"  A full matching static tag for the current file.
+2. "F C"  A full matching global tag for the current file.
+3. "F  "  A full matching global tag for another file.
+4. "FS "  A full matching static tag for another file.
+5. " SC"  An ignore-case matching static tag for the current file.
+6. "  C"  An ignore-case matching global tag for the current file.
+7. "   "  An ignore-case matching global tag for another file.
+8. " S "  An ignore-case matching static tag for another file.
+
+Note that when the current file changes, the priority list is mostly not
+changed, to avoid confusion when using ":tnext".  It is changed when using
+":tag {ident}".
+
+The ignore-case matches are not found for a ":tag" command when the
+'ignorecase' option is off.  They are found when a pattern is used (starting
+with a "/") and for ":tselect", also when 'ignorecase' is off.  Note that
+using ignore-case tag searching disables binary searching in the tags file,
+which causes a slowdown.  This can be avoided by fold-case sorting the tag
+file.  See the 'tagbsearch' option for an explanation.
+
+==============================================================================
+2. Tag stack				*tag-stack* *tagstack* *E425*
+
+On the tag stack is remembered which tags you jumped to, and from where.
+Tags are only pushed onto the stack when the 'tagstack' option is set.
+
+g<RightMouse>						*g<RightMouse>*
+<C-RightMouse>					*<C-RightMouse>* *CTRL-T*
+CTRL-T			Jump to [count] older entry in the tag stack
+			(default 1).  {not in Vi}
+
+						*:po* *:pop* *E555* *E556*
+:[count]po[p][!]	Jump to [count] older entry in tag stack (default 1).
+			See |tag-!| for [!].  {not in Vi}
+
+:[count]ta[g][!]	Jump to [count] newer entry in tag stack (default 1).
+			See |tag-!| for [!].  {not in Vi}
+
+							*:tags*
+:tags			Show the contents of the tag stack.  The active
+			entry is marked with a '>'.  {not in Vi}
+
+The output of ":tags" looks like this:
+
+   # TO tag      FROM line in file/line
+   1  1 main		 1  harddisk2:text/vim/test
+ > 2  2 FuncA		58  i = FuncA(10);
+   3  1 FuncC	       357  harddisk2:text/vim/src/amiga.c
+
+This list shows the tags that you jumped to and the cursor position before
+that jump.  The older tags are at the top, the newer at the bottom.
+
+The '>' points to the active entry.  This is the tag that will be used by the
+next ":tag" command.  The CTRL-T and ":pop" command will use the position
+above the active entry.
+
+Below the "TO" is the number of the current match in the match list.  Note
+that this doesn't change when using ":pop" or ":tag".
+
+The line number and file name are remembered to be able to get back to where
+you were before the tag command.  The line number will be correct, also when
+deleting/inserting lines, unless this was done by another program (e.g.
+another instance of Vim).
+
+For the current file, the "file/line" column shows the text at the position.
+An indent is removed and a long line is truncated to fit in the window.
+
+You can jump to previously used tags with several commands.  Some examples:
+
+	":pop" or CTRL-T	to position before previous tag
+	{count}CTRL-T		to position before {count} older tag
+	":tag"			to newer tag
+	":0tag"			to last used tag
+
+The most obvious way to use this is while browsing through the call graph of
+a program.  Consider the following call graph:
+
+	main  --->  FuncA  --->  FuncC
+	      --->  FuncB
+
+(Explanation: main calls FuncA and FuncB; FuncA calls FuncC).
+You can get from main to FuncA by using CTRL-] on the call to FuncA.  Then
+you can CTRL-] to get to FuncC.  If you now want to go back to main you can
+use CTRL-T twice.  Then you can CTRL-] to FuncB.
+
+If you issue a ":ta {ident}" or CTRL-] command, this tag is inserted at the
+current position in the stack.  If the stack was full (it can hold up to 20
+entries), the oldest entry is deleted and the older entries shift one
+position up (their index number is decremented by one).  If the last used
+entry was not at the bottom, the entries below the last used one are
+deleted.  This means that an old branch in the call graph is lost.  After the
+commands explained above the tag stack will look like this:
+
+   # TO tag	FROM line in file
+   1 main	       1  harddisk2:text/vim/test
+   2 FuncB	      59  harddisk2:text/vim/src/main.c
+
+							*E73*
+When you try to use the tag stack while it doesn't contain anything you will
+get an error message.
+
+==============================================================================
+3. Tag match list				*tag-matchlist* *E427* *E428*
+
+When there are several matching tags, these commands can be used to jump
+between them.  Note that these command don't change the tag stack, they keep
+the same entry.
+
+							*:ts* *:tselect*
+:ts[elect][!] [ident]	List the tags that match [ident], using the
+			information in the tags file(s).
+			When [ident] is not given, the last tag name from the
+			tag stack is used.
+			With a '>' in the first column is indicated which is
+			the current position in the list (if there is one).
+			[ident] can be a regexp pattern, see |tag-regexp|.
+			See |tag-priority| for the priorities used in the
+			listing.  {not in Vi}
+			Example output:
+
+>
+	 nr pri kind tag		file
+	  1 F	f    mch_delay		os_amiga.c
+			mch_delay(msec, ignoreinput)
+	> 2 F	f    mch_delay		os_msdos.c
+			mch_delay(msec, ignoreinput)
+	  3 F	f    mch_delay		os_unix.c
+			mch_delay(msec, ignoreinput)
+	Enter nr of choice (<CR> to abort):
+<
+			See |tag-priority| for the "pri" column.  Note that
+			this depends on the current file, thus using
+			":tselect xxx" can produce different results.
+			The "kind" column gives the kind of tag, if this was
+			included in the tags file.
+			The "info" column shows information that could be
+			found in the tags file.  It depends on the program
+			that produced the tags file.
+			When the list is long, you may get the |more-prompt|.
+			If you already see the tag you want to use, you can
+			type 'q' and enter the number.
+
+							*:sts* *:stselect*
+:sts[elect][!] [ident]	Does ":tselect[!] [ident]" and splits the window for
+			the selected tag.  {not in Vi}
+
+							*g]*
+g]			Like CTRL-], but use ":tselect" instead of ":tag".
+			{not in Vi}
+
+							*v_g]*
+{Visual}g]		Same as "g]", but use the highlighted text as the
+			identifier.  {not in Vi}
+
+							*:tj* *:tjump*
+:tj[ump][!] [ident]	Like ":tselect", but jump to the tag directly when
+			there is only one match.  {not in Vi}
+
+							*:stj* *:stjump*
+:stj[ump][!] [ident]	Does ":tjump[!] [ident]" and splits the window for the
+			selected tag.  {not in Vi}
+
+							*g_CTRL-]*
+g CTRL-]		Like CTRL-], but use ":tjump" instead of ":tag".
+			{not in Vi}
+
+							*v_g_CTRL-]*
+{Visual}g CTRL-]	Same as "g CTRL-]", but use the highlighted text as
+			the identifier.  {not in Vi}
+
+							*:tn* *:tnext*
+:[count]tn[ext][!]	Jump to [count] next matching tag (default 1).  See
+			|tag-!| for [!].  {not in Vi}
+
+							*:tp* *:tprevious*
+:[count]tp[revious][!]	Jump to [count] previous matching tag (default 1).
+			See |tag-!| for [!].  {not in Vi}
+
+							*:tN* *:tNext*
+:[count]tN[ext][!]	Same as ":tprevious".  {not in Vi}
+
+							*:tr* *:trewind*
+:[count]tr[ewind][!]	Jump to first matching tag.  If [count] is given, jump
+			to [count]th matching tag.  See |tag-!| for [!].  {not
+			in Vi}
+
+							*:tf* *:tfirst*
+:[count]tf[irst][!]	Same as ":trewind". {not in Vi}
+
+							*:tl* *:tlast*
+:tl[ast][!]		Jump to last matching tag.  See |tag-!| for [!].  {not
+			in Vi}
+
+
+When there is no other message, Vim shows which matching tag has been jumped
+to, and the number of matching tags: >
+	tag 1 of 3 or more
+The " or more" is used to indicate that Vim didn't try all the tags files yet.
+When using ":tnext" a few times, or with ":tlast", more matches may be found.
+
+When you didn't see this message because of some other message, or you just
+want to know where you are, this command will show it again (and jump to the
+same tag as last time): >
+	:0tn
+<
+							*tag-skip-file*
+When a matching tag is found for which the file doesn't exist, this match is
+skipped and the next matching tag is used.  Vim reports this, to notify you of
+missing files.  When the end of the list of matches has been reached, an error
+message is given.
+
+The tag match list can also be used in the preview window.  The commands are
+the same as above, with a "p" prepended.
+{not available when compiled without the |+quickfix| feature}
+
+							*:pts* *:ptselect*
+:pts[elect][!] [ident]	Does ":tselect[!] [ident]" and shows the new tag in a
+			"Preview" window. See |:ptag| for more info.
+			{not in Vi}
+
+							*:ptj* *:ptjump*
+:ptj[ump][!] [ident]	Does ":tjump[!] [ident]" and shows the new tag in a
+			"Preview" window. See |:ptag| for more info.
+			{not in Vi}
+
+							*:ptn* *:ptnext*
+:[count]ptn[ext][!]	":tnext" in the preview window.  See |:ptag|.
+			{not in Vi}
+
+							*:ptp* *:ptprevious*
+:[count]ptp[revious][!]	":tprevious" in the preview window.  See |:ptag|.
+			{not in Vi}
+
+							*:ptN* *:ptNext*
+:[count]ptN[ext][!]	Same as ":ptprevious".  {not in Vi}
+
+							*:ptr* *:ptrewind*
+:[count]ptr[ewind][!]	":trewind" in the preview window.  See |:ptag|.
+			{not in Vi}
+
+							*:ptf* *:ptfirst*
+:[count]ptf[irst][!]	Same as ":ptrewind". {not in Vi}
+
+							*:ptl* *:ptlast*
+:ptl[ast][!]		":tlast" in the preview window.  See |:ptag|.
+			{not in Vi}
+
+==============================================================================
+4. Tags details						*tag-details*
+
+							*static-tag*
+A static tag is a tag that is defined for a specific file.  In a C program
+this could be a static function.
+
+In Vi jumping to a tag sets the current search pattern.  This means that
+the "n" command after jumping to a tag does not search for the same pattern
+that it did before jumping to the tag.  Vim does not do this as we consider it
+to be a bug.  You can still find the tag search pattern in the search history.
+If you really want the old Vi behavior, set the 't' flag in 'cpoptions'.
+
+							*tag-binary-search*
+Vim uses binary searching in the tags file to find the desired tag quickly
+(when enabled at compile time |+tag_binary|).  But this only works if the
+tags file was sorted on ASCII byte value.  Therefore, if no match was found,
+another try is done with a linear search.  If you only want the linear search,
+reset the 'tagbsearch' option.  Or better: Sort the tags file!
+
+Note that the binary searching is disabled when not looking for a tag with a
+specific name.  This happens when ignoring case and when a regular expression
+is used that doesn't start with a fixed string.  Tag searching can be a lot
+slower then.  The former can be avoided by case-fold sorting the tags file.
+See 'tagbsearch' for details.
+
+							*tag-regexp*
+The ":tag" and "tselect" commands accept a regular expression argument.  See
+|pattern| for the special characters that can be used.
+When the argument starts with '/', it is used as a pattern.  If the argument
+does not start with '/', it is taken literally, as a full tag name.
+Examples: >
+    :tag main
+<	jumps to the tag "main" that has the highest priority. >
+    :tag /^get
+<	jumps to the tag that starts with "get" and has the highest priority. >
+    :tag /norm
+<	lists all the tags that contain "norm", including "id_norm".
+When the argument both exists literally, and match when used as a regexp, a
+literal match has a higher priority.  For example, ":tag /open" matches "open"
+before "open_file" and "file_open".
+
+							*tag-!*
+If the tag is in the current file this will always work.  Otherwise the
+performed actions depend on whether the current file was changed, whether a !
+is added to the command and on the 'autowrite' option:
+
+  tag in       file	   autowrite			~
+current file  changed	!   option	  action	~
+-----------------------------------------------------------------------------
+    yes		 x	x     x	  goto tag
+    no		 no	x     x	  read other file, goto tag
+    no		yes    yes    x   abandon current file, read other file, goto
+				  tag
+    no		yes	no    on  write current file, read other file, goto
+				  tag
+    no		yes	no   off  fail
+-----------------------------------------------------------------------------
+
+- If the tag is in the current file, the command will always work.
+- If the tag is in another file and the current file was not changed, the
+  other file will be made the current file and read into the buffer.
+- If the tag is in another file, the current file was changed and a ! is
+  added to the command, the changes to the current file are lost, the other
+  file will be made the current file and read into the buffer.
+- If the tag is in another file, the current file was changed and the
+  'autowrite' option is on, the current file will be written, the other
+  file will be made the current file and read into the buffer.
+- If the tag is in another file, the current file was changed and the
+  'autowrite' option is off, the command will fail.  If you want to save
+  the changes, use the ":w" command and then use ":tag" without an argument.
+  This works because the tag is put on the stack anyway.  If you want to lose
+  the changes you can use the ":tag!" command.
+
+							*tag-security*
+Note that Vim forbids some commands, for security reasons.  This works like
+using the 'secure' option for exrc/vimrc files in the current directory.  See
+|trojan-horse| and |sandbox|.
+When the {tagaddress} changes a buffer, you will get a warning message:
+	"WARNING: tag command changed a buffer!!!"
+In a future version changing the buffer will be impossible.  All this for
+security reasons: Somebody might hide a nasty command in the tags file, which
+would otherwise go unnoticed.  Example: >
+	:$d|/tag-function-name/
+{this security prevention is not present in Vi}.
+
+In Vi the ":tag" command sets the last search pattern when the tag is searched
+for.  In Vim this is not done, the previous search pattern is still remembered,
+unless the 't' flag is present in 'cpoptions'.  The search pattern is always
+put in the search history, so you can modify it if searching fails.
+
+					*emacs-tags* *emacs_tags* *E430*
+Emacs style tag files are only supported if Vim was compiled with the
+|+emacs_tags| feature enabled.  Sorry, there is no explanation about Emacs tag
+files here, it is only supported for backwards compatibility :-).
+
+							*tags-option*
+The 'tags' option is a list of file names.  Each of these files is searched
+for the tag.  This can be used to use a different tags file than the default
+file "tags".  It can also be used to access a common tags file.
+
+The next file in the list is not used when:
+- A matching static tag for the current buffer has been found.
+- A matching global tag has been found.
+This also depends on the 'ignorecase' option.  If it is off, and the tags file
+only has a match without matching case, the next tags file is searched for a
+match with matching case.  If no tag with matching case is found, the first
+match without matching case is used.  If 'ignorecase' is on, and a matching
+global tag with or without matching case is found, this one is used, no
+further tags files are searched.
+
+When a tag file name starts with "./", the '.' is replaced with the path of
+the current file.  This makes it possible to use a tags file in the directory
+where the current file is (no matter what the current directory is).  The idea
+of using "./" is that you can define which tag file is searched first: In the
+current directory ("tags,./tags") or in the directory of the current file
+("./tags,tags").
+
+For example: >
+	:set tags=./tags,tags,/home/user/commontags
+
+In this example the tag will first be searched for in the file "tags" in the
+directory where the current file is.  Next the "tags" file in the current
+directory.  If it is not found there, then the file "/home/user/commontags"
+will be searched for the tag.
+
+This can be switched off by including the 'd' flag in 'cpoptions', to make
+it Vi compatible.  "./tags" will than be the tags file in the current
+directory, instead of the tags file in the directory where the current file
+is.
+
+Instead of the comma a space may be used.  Then a backslash is required for
+the space to be included in the string option: >
+	:set tags=tags\ /home/user/commontags
+
+To include a space in a file name use three backslashes.  To include a comma
+in a file name use two backslashes.  For example, use: >
+	:set tags=tag\\\ file,/home/user/common\\,tags
+
+for the files "tag file" and "/home/user/common,tags".  The 'tags' option will
+have the value "tag\ file,/home/user/common\,tags".
+
+If the 'tagrelative' option is on (which is the default) and using a tag file
+in another directory, file names in that tag file are relative to the
+directory where the tag file is.
+
+==============================================================================
+5. Tags file format				*tags-file-format* *E431*
+
+						*ctags* *jtags*
+A tags file can be created with an external command, for example "ctags".  It
+will contain a tag for each function.  Some versions of "ctags" will also make
+a tag for each "#defined" macro, typedefs, enums, etc.
+
+Some programs that generate tags files:
+ctags			As found on most Unix systems.  Only supports C.  Only
+			does the basic work.
+exuberant ctags		This a very good one.  It works for C, C++, Java,
+			Fortran, Eiffel and others.  It can generate tags for
+			many items.  See http://ctags.sourceforge.net.
+etags			Connected to Emacs.  Supports many languages.
+JTags			For Java, in Java.  It can be found at
+			http://www.fleiner.com/jtags/.
+ptags.py		For Python, in Python.  Found in your Python source
+			directory at Tools/scripts/ptags.py.
+ptags			For Perl, in Perl.  It can be found at
+			http://www.eleves.ens.fr:8080/home/nthiery/Tags/.
+gnatxref		For Ada.  See http://www.gnuada.org/.  gnatxref is
+			part of the gnat package.
+
+
+The lines in the tags file must have one of these three formats:
+
+1.  {tagname}		{TAB} {tagfile} {TAB} {tagaddress}
+2.  {tagfile}:{tagname} {TAB} {tagfile} {TAB} {tagaddress}
+3.  {tagname}		{TAB} {tagfile} {TAB} {tagaddress} {term} {field} ..
+
+The first is a normal tag, which is completely compatible with Vi.  It is the
+only format produced by traditional ctags implementations.  This is often used
+for functions that are global, also referenced in other files.
+
+The lines in the tags file can end in <LF> or <CR><LF>.  On the Macintosh <CR>
+also works.  The <CR> and <NL> characters can never appear inside a line.
+
+							*tag-old-static*
+The second format is for a static tag only.  It is obsolete now, replaced by
+the third format.  It is only supported by Elvis 1.x and Vim and a few
+versions of ctags.  A static tag is often used for functions that are local,
+only referenced in the file {tagfile}.  Note that for the static tag, the two
+occurrences of {tagfile} must be exactly the same.  Also see |tags-option|
+below, for how static tags are used.
+
+The third format is new.  It includes additional information in optional
+fields at the end of each line.  It is backwards compatible with Vi.  It is
+only supported by new versions of ctags (such as Exuberant ctags).
+
+{tagname}	The identifier.  Normally the name of a function, but it can
+		be any identifier.  It cannot contain a <Tab>.
+{TAB}		One <Tab> character.  Note: previous versions allowed any
+		white space here.  This has been abandoned to allow spaces in
+		{tagfile}.  It can be re-enabled by including the
+		|+tag_any_white| feature at compile time. *tag-any-white*
+{tagfile}	The file that contains the definition of {tagname}.  It can
+		have an absolute or relative path.  It may contain environment
+		variables and wildcards (although the use of wildcards is
+		doubtful).  It cannot contain a <Tab>.
+{tagaddress}	The Ex command that positions the cursor on the tag.  It can
+		be any Ex command, although restrictions apply (see
+		|tag-security|).  Posix only allows line numbers and search
+		commands, which are mostly used.
+{term}		;" The two characters semicolon and double quote.  This is
+		interpreted by Vi as the start of a comment, which makes the
+		following be ignored.  This is for backwards compatibility
+		with Vi, it ignores the following fields.
+{field} ..	A list of optional fields.  Each field has the form:
+
+			<Tab>{fieldname}:{value}
+
+		The {fieldname} identifies the field, and can only contain
+		alphabetical characters [a-zA-Z].
+		The {value} is any string, but cannot contain a <Tab>.
+		These characters are special:
+			"\t" stands for a <Tab>
+			"\r" stands for a <CR>
+			"\n" stands for a <NL>
+			"\\" stands for a single '\' character
+
+		There is one field that doesn't have a ':'.  This is the kind
+		of the tag.  It is handled like it was preceded with "kind:".
+		See the documentation of ctags for the kinds it produces.
+
+		The only other field currently recognized by Vim is "file:"
+		(with an empty value).  It is used for a static tag.
+
+The first lines in the tags file can contain lines that start with
+	!_TAG_
+These are sorted to the first lines, only rare tags that start with "!" can
+sort to before them.  Vim recognizes two items.  The first one is the line
+that indicates if the file was sorted.  When this line is found, Vim uses
+binary searching for the tags file:
+	!_TAG_FILE_SORTED<Tab>1<Tab>{anything} ~
+
+A tag file may be case-fold sorted to avoid a linear search when 'ignorecase'
+is on.  See 'tagbsearch' for details.  The value '2' should be used then:
+	!_TAG_FILE_SORTED<Tab>2<Tab>{anything} ~
+
+The other tag that Vim recognizes, but only when compiled with the
+|+multi_byte| feature, is the encoding of the tags file:
+	!_TAG_FILE_ENCODING<Tab>utf-8<Tab>{anything} ~
+Here "utf-8" is the encoding used for the tags.  Vim will then convert the tag
+being searched for from 'encoding' to the encoding of the tags file.  And when
+listing tags the reverse happens.  When the conversion fails the unconverted
+tag is used.
+
+							*tag-search*
+The command can be any Ex command, but often it is a search command.
+Examples:
+	tag1	file1	/^main(argc, argv)/ ~
+	tag2	file2	108 ~
+
+The command is always executed with 'magic' not set.  The only special
+characters in a search pattern are "^" (begin-of-line) and "$" (<EOL>).
+See |pattern|.  Note that you must put a backslash before each backslash in
+the search text.  This is for backwards compatibility with Vi.
+
+							*E434* *E435*
+If the command is a normal search command (it starts and ends with "/" or
+"?"), some special handling is done:
+- Searching starts on line 1 of the file.
+  The direction of the search is forward for "/", backward for "?".
+  Note that 'wrapscan' does not matter, the whole file is always searched. {Vi
+  does use 'wrapscan', which caused tags sometimes not be found).  {Vi starts
+  searching in line 2 of another file.  It does not find a tag in line 1 of
+  another file when 'wrapscan' is not set}
+- If the search fails, another try is done ignoring case.  If that fails too,
+  a search is done for:
+	"^tagname[ \t]*("
+  (the tag with '^' prepended and "[ \t]*(" appended).  When using function
+  names, this will find the function name when it is in column 0.  This will
+  help when the arguments to the function have changed since the tags file was
+  made.  If this search also fails another search is done with:
+	"^[#a-zA-Z_].*\<tagname[ \t]*("
+  This means: A line starting with '#' or an identifier and containing the tag
+  followed by white space and a '('.  This will find macro names and function
+  names with a type prepended.  {the extra searches are not in Vi}.
+
+==============================================================================
+6. Include file searches		*include-search* *definition-search*
+							*E387* *E388* *E389*
+
+These commands look for a string in the current file and in all encountered
+included files (recursively).  This can be used to find the definition of a
+variable, function or macro.  If you only want to search in the current
+buffer, use the commands listed at |pattern-searches|.
+
+These commands are not available when the |+find_in_path| feature was disabled
+at compile time.
+
+When a line is encountered that includes another file, that file is searched
+before continuing in the current buffer.  Files included by included files are
+also searched.  When an include file could not be found it is silently
+ignored.  Use the |:checkpath| command to discover which files could not be
+found, possibly your 'path' option is not set up correctly.  Note: the
+included file is searched, not a buffer that may be editing that file.  Only
+for the current file the lines in the buffer are used.
+
+The string can be any keyword or a defined macro.  For the keyword any match
+will be found.  For defined macros only lines that match with the 'define'
+option will be found.  The default is "^#\s*define", which is for C programs.
+For other languages you probably want to change this.  See 'define' for an
+example for C++.  The string cannot contain an end-of-line, only matches
+within a line are found.
+
+When a match is found for a defined macro, the displaying of lines continues
+with the next line when a line ends in a backslash.
+
+The commands that start with "[" start searching from the start of the current
+file.  The commands that start with "]" start at the current cursor position.
+
+The 'include' option is used to define a line that includes another file.  The
+default is "\^#\s*include", which is for C programs.  Note: Vim does not
+recognize C syntax, if the 'include' option matches a line inside
+"#ifdef/#endif" or inside a comment, it is searched anyway.  The 'isfname'
+option is used to recognize the file name that comes after the matched
+pattern.
+
+The 'path' option is used to find the directory for the include files that
+do not have an absolute path.
+
+The 'comments' option is used for the commands that display a single line or
+jump to a line.  It defines patterns that may start a comment.  Those lines
+are ignored for the search, unless [!] is used.  One exception: When the line
+matches the pattern "^# *define" it is not considered to be a comment.
+
+If you want to list matches, and then select one to jump to, you could use a
+mapping to do that for you.  Here is an example: >
+
+  :map <F4> [I:let nr = input("Which one: ")<Bar>exe "normal " . nr ."[\t"<CR>
+<
+							*[i*
+[i			Display the first line that contains the keyword
+			under the cursor.  The search starts at the beginning
+			of the file.  Lines that look like a comment are
+			ignored (see 'comments' option).  If a count is given,
+			the count'th matching line is displayed, and comment
+			lines are not ignored.  {not in Vi}
+
+							*]i*
+]i			like "[i", but start at the current cursor position.
+			{not in Vi}
+
+							*:is* *:isearch*
+:[range]is[earch][!] [count] [/]pattern[/]
+			Like "[i"  and "]i", but search in [range] lines
+			(default: whole file).
+			See |:search-args| for [/] and [!].  {not in Vi}
+
+							*[I*
+[I			Display all lines that contain the keyword under the
+			cursor.  Filenames and line numbers are displayed
+			for the found lines.  The search starts at the
+			beginning of the file.  {not in Vi}
+
+							*]I*
+]I			like "[I", but start at the current cursor position.
+			{not in Vi}
+
+							*:il* *:ilist*
+:[range]il[ist][!] [/]pattern[/]
+			Like "[I" and "]I", but search in [range] lines
+			(default: whole file).
+			See |:search-args| for [/] and [!].  {not in Vi}
+
+							*[_CTRL-I*
+[ CTRL-I		Jump to the first line that contains the keyword
+			under the cursor.  The search starts at the beginning
+			of the file.  Lines that look like a comment are
+			ignored (see 'comments' option).  If a count is given,
+			the count'th matching line is jumped to, and comment
+			lines are not ignored.  {not in Vi}
+
+							*]_CTRL-I*
+] CTRL-I		like "[ CTRL-I", but start at the current cursor
+			position.  {not in Vi}
+
+							*:ij* *:ijump*
+:[range]ij[ump][!] [count] [/]pattern[/]
+			Like "[ CTRL-I"  and "] CTRL-I", but search in
+			[range] lines (default: whole file).
+			See |:search-args| for [/] and [!].  {not in Vi}
+
+CTRL-W CTRL-I					*CTRL-W_CTRL-I* *CTRL-W_i*
+CTRL-W i		Open a new window, with the cursor on the first line
+			that contains the keyword under the cursor.  The
+			search starts at the beginning of the file.  Lines
+			that look like a comment line are ignored (see
+			'comments' option).  If a count is given, the count'th
+			matching line is jumped to, and comment lines are not
+			ignored.  {not in Vi}
+
+							*:isp* *:isplit*
+:[range]isp[lit][!] [count] [/]pattern[/]
+			Like "CTRL-W i"  and "CTRL-W i", but search in
+			[range] lines (default: whole file).
+			See |:search-args| for [/] and [!].  {not in Vi}
+
+							*[d*
+[d			Display the first macro definition that contains the
+			macro under the cursor.  The search starts from the
+			beginning of the file.  If a count is given, the
+			count'th matching line is displayed.  {not in Vi}
+
+							*]d*
+]d			like "[d", but start at the current cursor position.
+			{not in Vi}
+
+							*:ds* *:dsearch*
+:[range]ds[earch][!] [count] [/]string[/]
+			Like "[d"  and "]d", but search in [range] lines
+			(default: whole file).
+			See |:search-args| for [/] and [!].  {not in Vi}
+
+							*[D*
+[D			Display all macro definitions that contain the macro
+			under the cursor.  Filenames and line numbers are
+			displayed for the found lines.  The search starts
+			from the beginning of the file.  {not in Vi}
+
+							*]D*
+]D			like "[D", but start at the current cursor position.
+			{not in Vi}
+
+							*:dl* *:dlist*
+:[range]dl[ist][!] [/]string[/]
+			Like "[D"  and "]D", but search in [range] lines
+			(default: whole file).
+			See |:search-args| for [/] and [!].  {not in Vi}
+
+							*[_CTRL-D*
+[ CTRL-D		Jump to the first macro definition that contains the
+			keyword under the cursor.  The search starts from
+			the beginning of the file.  If a count is given, the
+			count'th matching line is jumped to.  {not in Vi}
+
+							*]_CTRL-D*
+] CTRL-D		like "[ CTRL-D", but start at the current cursor
+			position.  {not in Vi}
+
+							*:dj* *:djump*
+:[range]dj[ump][!] [count] [/]string[/]
+			Like "[ CTRL-D"  and "] CTRL-D", but search  in
+			[range] lines (default: whole file).
+			See |:search-args| for [/] and [!].  {not in Vi}
+
+CTRL-W CTRL-D					*CTRL-W_CTRL-D* *CTRL-W_d*
+CTRL-W d		Open a new window, with the cursor on the first
+			macro definition line that contains the keyword
+			under the cursor.  The search starts from the
+			beginning of the file.  If a count is given, the
+			count'th matching line is jumped to.  {not in Vi}
+
+							*:dsp* *:dsplit*
+:[range]dsp[lit][!] [count] [/]string[/]
+			Like "CTRL-W d", but search in [range] lines
+			(default: whole file).
+			See |:search-args| for [/] and [!].  {not in Vi}
+
+							*:che* *:checkpath*
+:che[ckpath]		List all the included files that could not be found.
+			{not in Vi}
+
+:che[ckpath]!		List all the included files.  {not in Vi}
+
+								*:search-args*
+Common arguments for the commands above:
+[!]   When included, find matches in lines that are recognized as comments.
+      When excluded, a match is ignored when the line is recognized as a
+      comment (according to 'comments'), or the match is in a C comment (after
+      "//" or inside /* */).  Note that a match may be missed if a line is
+      recognized as a comment, but the comment ends halfway the line.
+      And  if the line is a comment, but it is not recognized (according to
+      'comments') a match may be found in it anyway.  Example: >
+		/* comment
+		   foobar */
+<     A match for "foobar" is found, because this line is not recognized as a
+      comment (even though syntax highlighting does recognize it).
+      Note: Since a macro definition mostly doesn't look like a comment, the
+      [!] makes no difference for ":dlist", ":dsearch" and ":djump".
+[/]   A pattern can be surrounded by '/'.  Without '/' only whole words are
+      matched, using the pattern "\<pattern\>".  Only after the second '/' a
+      next command can be appended with '|'.  Example: >
+	:isearch /string/ | echo "the last one"
+<     For a ":djump", ":dsplit", ":dlist" and ":dsearch" command the pattern
+      is used as a literal string, not as a search pattern.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt
new file mode 100644
index 0000000..4ddd63e
--- /dev/null
+++ b/runtime/doc/term.txt
@@ -0,0 +1,808 @@
+*term.txt*      For Vim version 7.0aa.  Last change: 2004 Jan 09
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Terminal information					*terminal-info*
+
+Vim uses information about the terminal you are using to fill the screen and
+recognize what keys you hit.  If this information is not correct, the screen
+may be messed up or keys may not be recognized.  The actions which have to be
+performed on the screen are accomplished by outputting a string of
+characters.  Special keys produce a string of characters.  These strings are
+stored in the terminal options, see |terminal-options|.
+
+NOTE: Most of this is not used when running the |GUI|.
+
+1. Startup			|startup-terminal|
+2. Terminal options		|terminal-options|
+3. Window size			|window-size|
+4. Slow and fast terminals	|slow-fast-terminal|
+5. Using the mouse		|mouse-using|
+
+==============================================================================
+1. Startup						*startup-terminal*
+
+When Vim is started a default terminal type is assumed.  For the Amiga this is
+a standard CLI window, for MS-DOS the pc terminal, for Unix an ansi terminal.
+A few other terminal types are always available, see below |builtin-terms|.
+
+You can give the terminal name with the '-T' Vim argument.  If it is not given
+Vim will try to get the name from the TERM environment variable.
+
+				*termcap* *terminfo* *E557* *E558* *E559*
+On Unix the terminfo database or termcap file is used.  This is referred to as
+"termcap" in all the documentation.  At compile time, when running configure,
+the choice whether to use terminfo or termcap is done automatically.  When
+running Vim the output of ":version" will show |+terminfo| if terminfo is
+used.  Also see |xterm-screens|.
+
+On non-Unix systems a termcap is only available if Vim was compiled with
+TERMCAP defined.
+
+					*builtin-terms* *builtin_terms*
+Which builtin terminals are available depends on a few defines in feature.h,
+which need to be set at compile time:
+    define		output of ":version"	terminals builtin	~
+NO_BUILTIN_TCAPS	-builtin_terms		none
+SOME_BUILTIN_TCAPS	+builtin_terms		most common ones (default)
+ALL_BUILTIN_TCAPS	++builtin_terms		all available
+
+You can see a list of available builtin terminals with ":set term=xxx" (when
+not running the GUI).  Also see |+builtin_terms|.
+
+If the termcap code is included Vim will try to get the strings for the
+terminal you are using from the termcap file and the builtin termcaps.  Both
+are always used, if an entry for the terminal you are using is present.  Which
+one is used first depends on the 'ttybuiltin' option:
+
+'ttybuiltin' on		1: builtin termcap	2: external termcap
+'ttybuiltin' off	1: external termcap	2: builtin termcap
+
+If an option is missing in one of them, it will be obtained from the other
+one.  If an option is present in both, the one first encountered is used.
+
+Which external termcap file is used varies from system to system and may
+depend on the environment variables "TERMCAP" and "TERMPATH".  See "man
+tgetent".
+
+Settings depending on terminal			*term-dependent-settings*
+
+If you want to set options or mappings, depending on the terminal name, you
+can do this best in your .vimrc.  Example: >
+
+   if &term == "xterm"
+     ... xterm maps and settings ...
+   elseif &term =~ "vt10."
+     ... vt100, vt102 maps and settings ...
+   endif
+<
+						*raw-terminal-mode*
+For normal editing the terminal will be put into "raw" mode.  The strings
+defined with 't_ti' and 't_ks' will be sent to the terminal.  Normally this
+puts the terminal in a state where the termcap codes are valid and activates
+the cursor and function keys.  When Vim exits the terminal will be put back
+into the mode it was before Vim started.  The strings defined with 't_te' and
+'t_ke' will be sent to the terminal.  On the Amiga, with commands that execute
+an external command (e.g., "!!"), the terminal will be put into Normal mode
+for a moment.  This means that you can stop the output to the screen by
+hitting a printing key.  Output resumes when you hit <BS>.
+
+							*cs7-problem*
+Note: If the terminal settings are changed after running Vim, you might have
+an illegal combination of settings.  This has been reported on Solaris 2.5
+with "stty cs8 parenb", which is restored as "stty cs7 parenb".  Use
+"stty cs8 -parenb -istrip" instead, this is restored correctly.
+
+Some termcap entries are wrong in the sense that after sending 't_ks' the
+cursor keys send codes different from the codes defined in the termcap.  To
+avoid this you can set 't_ks' (and 't_ke') to empty strings.  This must be
+done during initialization (see |initialization|), otherwise it's too late.
+
+Some termcap entries assume that the highest bit is always reset.  For
+example: The cursor-up entry for the Amiga could be ":ku=\E[A:".  But the
+Amiga really sends "\233A".  This works fine if the highest bit is reset,
+e.g., when using an Amiga over a serial line.  If the cursor keys don't work,
+try the entry ":ku=\233A:".
+
+Some termcap entries have the entry ":ku=\E[A:".  But the Amiga really sends
+"\233A".  On output "\E[" and "\233" are often equivalent, on input they
+aren't.  You will have to change the termcap entry, or change the key code with
+the :set command to fix this.
+
+Many cursor key codes start with an <Esc>.  Vim must find out if this is a
+single hit of the <Esc> key or the start of a cursor key sequence.  It waits
+for a next character to arrive.  If it does not arrive within one second a
+single <Esc> is assumed.  On very slow systems this may fail, causing cursor
+keys not to work sometimes.  If you discover this problem reset the 'timeout'
+option.  Vim will wait for the next character to arrive after an <Esc>.  If
+you want to enter a single <Esc> you must type it twice.  Resetting the
+'esckeys' option avoids this problem in Insert mode, but you lose the
+possibility to use cursor and function keys in Insert mode.
+
+On the Amiga the recognition of window resizing is activated only when the
+terminal name is "amiga" or "builtin_amiga".
+
+Some terminals have confusing codes for the cursor keys.  The televideo 925 is
+such a terminal.  It sends a CTRL-H for cursor-left.  This would make it
+impossible to distinguish a backspace and cursor-left.  To avoid this problem
+CTRL-H is never recognized as cursor-left.
+
+					*vt100-cursor-keys* *xterm-cursor-keys*
+Other terminals (e.g., vt100 and xterm) have cursor keys that send <Esc>OA,
+<Esc>OB, etc.  Unfortunately these are valid commands in insert mode: Stop
+insert, Open a new line above the new one, start inserting 'A', 'B', etc.
+Instead of performing these commands Vim will erroneously recognize this typed
+key sequence as a cursor key movement.  To avoid this and make Vim do what you
+want in either case you could use these settings: >
+	:set notimeout		" don't timeout on mappings
+	:set ttimeout		" do timeout on terminal key codes
+	:set timeoutlen=100	" timeout after 100 msec
+This requires the key-codes to be sent within 100msec in order to recognize
+them as a cursor key.  When you type you normally are not that fast, so they
+are recognized as individual typed commands, even though Vim receives the same
+sequence of bytes.
+
+				*vt100-function-keys* *xterm-function-keys*
+An xterm can send function keys F1 to F4 in two modes: vt100 compatible or
+not.  Because Vim cannot know what the xterm is sending, both types of keys
+are recognized.  The same happens for the <Home> and <End> keys.
+			normal			vt100 ~
+	<F1>	t_k1	<Esc>[11~	<xF1>	<Esc>OP	    *<xF1>-xterm*
+	<F2>	t_k2	<Esc>[12~	<xF2>	<Esc>OQ	    *<xF2>-xterm*
+	<F3>	t_k3	<Esc>[13~	<xF3>	<Esc>OR	    *<xF3>-xterm*
+	<F4>	t_k4	<Esc>[14~	<xF4>	<Esc>OS	    *<xF4>-xterm*
+	<Home>	t_kh	<Esc>[7~	<xHome>	<Esc>OH	    *<xHome>-xterm*
+	<End>	t_@7	<Esc>[4~	<xEnd>	<Esc>OF	    *<xEnd>-xterm*
+
+When Vim starts, <xF1> is mapped to <F1>, <xF2> to <F2> etc.  This means that
+by default both codes do the same thing.  If you make a mapping for <xF2>,
+because your terminal does have two keys, the default mapping is overwritten,
+thus you can use the <F2> and <xF2> keys for something different.
+
+							*xterm-shifted-keys*
+Newer versions of xterm support shifted function keys and special keys.  Vim
+recognizes most of them.  Use ":set termcap" to check which are supported and
+what the codes are.  Mostly these are not in a termcap, they are only
+supported by the builtin_xterm termcap.
+
+							*xterm-scroll-region*
+The default termcap entry for xterm on Sun and other platforms does not
+contain the entry for scroll regions.  Add ":cs=\E[%i%d;%dr:" to the xterm
+entry in /etc/termcap and everything should work.
+
+							*xterm-end-home-keys*
+On some systems (at least on FreeBSD with XFree86 3.1.2) the codes that the
+<End> and <Home> keys send contain a <Nul> character.  To make these keys send
+the proper key code, add these lines to your ~/.Xdefaults file:
+
+*VT100.Translations:		#override \n\
+		<Key>Home: string("0x1b") string("[7~") \n\
+		<Key>End: string("0x1b") string("[8~")
+
+						*xterm-8bit* *xterm-8-bit*
+Xterm can be run in a mode where it uses 8-bit escape sequences.  The CSI code
+is used instead of <Esc>[.  The advantage is that an <Esc> can quickly be
+recognized in Insert mode, because it can't be confused with the start of a
+special key.
+For the builtin termcap entries, Vim checks if the 'term' option contains
+"8bit" anywhere.  It then uses 8-bit characters for the termcap entries, the
+mouse and a few other things.  You would normally set $TERM in your shell to
+"xterm-8bit" and Vim picks this up and adjusts to the 8-bit setting
+automatically.
+When Vim receives a response to the |t_RV| (request version) sequence and it
+starts with CSI, it assumes that the terminal is in 8-bit mode and will
+convert all key sequences to their 8-bit variants.
+
+==============================================================================
+2. Terminal options				*terminal-options* *E436*
+
+The terminal options can be set just like normal options.  But they are not
+shown with the ":set all" command.  Instead use ":set termcap".
+
+It is always possible to change individual strings by setting the
+appropriate option.  For example: >
+	:set t_ce=^V^[[K	(CTRL-V, <Esc>, [, K)
+
+{Vi: no terminal options.  You have to exit Vi, edit the termcap entry and
+try again}
+
+The options are listed below.  The associated termcap code is always equal to
+the last two characters of the option name.  Only one termcap code is
+required: Cursor motion, 't_cm'.
+
+The options 't_da', 't_db', 't_ms', 't_xs' represent flags in the termcap.
+When the termcap flag is present, the option will be set to "y".  But any
+non-empty string means that the flag is set.  An empty string means that the
+flag is not set.  't_CS' works like this too, but it isn't a termcap flag.
+
+OUTPUT CODES
+	option	meaning	~
+
+	t_AB	set background color (ANSI)			*t_AB* *'t_AB'*
+	t_AF	set foreground color (ANSI)			*t_AF* *'t_AF'*
+	t_AL	add number of blank lines			*t_AL* *'t_AL'*
+	t_al	add new blank line				*t_al* *'t_al'*
+	t_bc	backspace character				*t_bc* *'t_bc'*
+	t_cd	clear to end of screen				*t_cd* *'t_cd'*
+	t_ce	clear to end of line				*t_ce* *'t_ce'*
+	t_cl	clear screen					*t_cl* *'t_cl'*
+	t_cm	cursor motion (required!)		  *E437* *t_cm* *'t_cm'*
+	t_Co	number of colors				*t_Co* *'t_Co'*
+	t_CS	if non-empty, cursor relative to scroll region	*t_CS* *'t_CS'*
+	t_cs	define scrolling region				*t_cs* *'t_cs'*
+	t_CV	define vertical scrolling region		*t_CV* *'t_CV'*
+	t_da	if non-empty, lines from above scroll down	*t_da* *'t_da'*
+	t_db	if non-empty, lines from below scroll up	*t_db* *'t_db'*
+	t_DL	delete number of lines				*t_DL* *'t_DL'*
+	t_dl	delete line					*t_dl* *'t_dl'*
+	t_fs	set window title end (from status line)		*t_fs* *'t_fs'*
+	t_ke	exit "keypad transmit" mode			*t_ke* *'t_ke'*
+	t_ks	start "keypad transmit" mode			*t_ks* *'t_ks'*
+	t_le	move cursor one char left			*t_le* *'t_le'*
+	t_mb	blinking mode					*t_mb* *'t_mb'*
+	t_md	bold mode					*t_md* *'t_md'*
+	t_me	Normal mode (undoes t_mr, t_mb, t_md and color)	*t_me* *'t_me'*
+	t_mr	reverse (invert) mode				*t_mr* *'t_mr'*
+								*t_ms* *'t_ms'*
+	t_ms	if non-empty, cursor can be moved in standout/inverse mode
+	t_nd	non destructive space character			*t_nd* *'t_nd'*
+	t_op	reset to original color pair			*t_op* *'t_op'*
+	t_RI	cursor number of chars right			*t_RI* *'t_RI'*
+	t_Sb	set background color				*t_Sb* *'t_Sb'*
+	t_Sf	set foreground color				*t_Sf* *'t_Sf'*
+	t_se	standout end					*t_se* *'t_se'*
+	t_so	standout mode					*t_so* *'t_so'*
+	t_sr	scroll reverse (backward)			*t_sr* *'t_sr'*
+	t_te	out of "termcap" mode				*t_te* *'t_te'*
+	t_ti	put terminal in "termcap" mode			*t_ti* *'t_ti'*
+	t_ts	set window title start (to status line)		*t_ts* *'t_ts'*
+	t_ue	underline end					*t_ue* *'t_ue'*
+	t_us	underline mode					*t_us* *'t_us'*
+	t_ut	clearing uses the current background color	*t_ut* *'t_ut'*
+	t_vb	visual bell					*t_vb* *'t_vb'*
+	t_ve	cursor visible					*t_ve* *'t_ve'*
+	t_vi	cursor invisible				*t_vi* *'t_vi'*
+	t_vs	cursor very visible				*t_vs* *'t_vs'*
+								*t_xs* *'t_xs'*
+	t_xs	if non-empty, standout not erased by overwriting (hpterm)
+	t_ZH	italics mode					*t_ZH* *'t_ZH'*
+	t_ZR	italics end					*t_ZR* *'t_ZR'*
+
+Added by Vim (there are no standard codes for these):
+	t_IS	set icon text start				*t_IS* *'t_IS'*
+	t_IE	set icon text end				*t_IE* *'t_IE'*
+	t_WP	set window position (Y, X) in pixels		*t_WP* *'t_WP'*
+	t_WS	set window size (height, width) in characters	*t_WS* *'t_WS'*
+	t_RV	request terminal version string (for xterm)	*t_RV* *'t_RV'*
+		|xterm-8bit| |v:termresponse| |'ttymouse'| |xterm-codes|
+
+KEY CODES
+Note: Use the <> form if possible
+
+	option	name		meaning	~
+
+	t_ku	<Up>		arrow up			*t_ku* *'t_ku'*
+	t_kd	<Down>		arrow down			*t_kd* *'t_kd'*
+	t_kr	<Right>		arrow right			*t_kr* *'t_kr'*
+	t_kl	<Left>		arrow left			*t_kl* *'t_kl'*
+		<S-Up>		shift arrow up
+		<S-Down>	shift arrow down
+	t_%i	<S-Right>	shift arrow right		*t_%i* *'t_%i'*
+	t_#4	<S-Left>	shift arrow left		*t_#4* *'t_#4'*
+	t_k1	<F1>		function key 1			*t_k1* *'t_k1'*
+		<xF1>		alternate F1			*<xF1>*
+	t_k2	<F2>		function key 2		*<F2>*	*t_k2* *'t_k2'*
+		<xF2>		alternate F2			*<xF2>*
+	t_k3	<F3>		function key 3		*<F3>*	*t_k3* *'t_k3'*
+		<xF3>		alternate F3			*<xF3>*
+	t_k4	<F4>		function key 4		*<F4>*	*t_k4* *'t_k4'*
+		<xF4>		alternate F4			*<xF4>*
+	t_k5	<F5>		function key 5		*<F5>*	*t_k5* *'t_k5'*
+	t_k6	<F6>		function key 6		*<F6>*	*t_k6* *'t_k6'*
+	t_k7	<F7>		function key 7		*<F7>*	*t_k7* *'t_k7'*
+	t_k8	<F8>		function key 8		*<F8>*	*t_k8* *'t_k8'*
+	t_k9	<F9>		function key 9		*<F9>*	*t_k9* *'t_k9'*
+	t_k;	<F10>		function key 10		*<F10>*	*t_k;* *'t_k;'*
+	t_F1	<F11>		function key 11		*<F11>* *t_F1* *'t_F1'*
+	t_F2	<F12>		function key 12		*<F12>*	*t_F2* *'t_F2'*
+	t_F3	<F13>		function key 13		*<F13>*	*t_F3* *'t_F3'*
+	t_F4	<F14>		function key 14		*<F14>*	*t_F4* *'t_F4'*
+	t_F5	<F15>		function key 15		*<F15>*	*t_F5* *'t_F5'*
+	t_F6	<F16>		function key 16		*<F16>*	*t_F6* *'t_F6'*
+	t_F7	<F17>		function key 17		*<F17>*	*t_F7* *'t_F7'*
+	t_F8	<F18>		function key 18		*<F18>*	*t_F8* *'t_F8'*
+	t_F9	<F19>		function key 19		*<F19>*	*t_F9* *'t_F9'*
+		<S-F1>		shifted function key 1
+		<S-xF1>		alternate <S-F1>		*<S-xF1>*
+		<S-F2>		shifted function key 2		*<S-F2>*
+		<S-xF2>		alternate <S-F2>		*<S-xF2>*
+		<S-F3>		shifted function key 3		*<S-F3>*
+		<S-xF3>		alternate <S-F3>		*<S-xF3>*
+		<S-F4>		shifted function key 4		*<S-F4>*
+		<S-xF4>		alternate <S-F4>		*<S-xF4>*
+		<S-F5>		shifted function key 5		*<S-F5>*
+		<S-F6>		shifted function key 6		*<S-F6>*
+		<S-F7>		shifted function key 7		*<S-F7>*
+		<S-F8>		shifted function key 8		*<S-F8>*
+		<S-F9>		shifted function key 9		*<S-F9>*
+		<S-F10>		shifted function key 10		*<S-F10>*
+		<S-F11>		shifted function key 11		*<S-F11>*
+		<S-F12>		shifted function key 12		*<S-F12>*
+	t_%1	<Help>		help key			*t_%1* *'t_%1'*
+	t_&8	<Undo>		undo key			*t_&8* *'t_&8'*
+	t_kI	<Insert>	insert key			*t_kI* *'t_kI'*
+	t_kD	<Del>		delete key			*t_kD* *'t_kD'*
+	t_kb	<BS>		backspace key			*t_kb* *'t_kb'*
+	t_kB	<S-Tab>		back-tab (shift-tab)  *<S-Tab>* *t_kB* *'t_kB'*
+	t_kh	<Home>		home key			*t_kh* *'t_kh'*
+	t_#2	<S-Home>	shifted home key     *<S-Home>* *t_#2* *'t_#2'*
+		<xHome>		alternate home key		*<xHome>*
+	t_@7	<End>		end key				*t_@7* *'t_@7'*
+	t_*7	<S-End>		shifted end key	*<S-End>* *t_star7* *'t_star7'*
+		<xEnd>		alternate end key		*<xEnd>*
+	t_kP	<PageUp>	page-up key			*t_kP* *'t_kP'*
+	t_kN	<PageDown>	page-down key			*t_kN* *'t_kN'*
+	t_K1	<kHome>		keypad home key			*t_K1* *'t_K1'*
+	t_K4	<kEnd>		keypad end key			*t_K4* *'t_K4'*
+	t_K3	<kPageUp>	keypad page-up key		*t_K3* *'t_K3'*
+	t_K5	<kPageDown>	keypad page-down key		*t_K5* *'t_K5'*
+	t_K6	<kPlus>		keypad plus key	      *<kPlus>*	*t_K6* *'t_K6'*
+	t_K7	<kMinus>	keypad minus key     *<kMinus>*	*t_K7* *'t_K7'*
+	t_K8	<kDivide>	keypad divide	    *<kDivide>* *t_K8* *'t_K8'*
+	t_K9	<kMultiply>	keypad multiply   *<kMultiply>* *t_K9* *'t_K9'*
+	t_KA	<kEnter>	keypad enter key     *<kEnter>*	*t_KA* *'t_KA'*
+	t_KB	<kPoint>	keypad decimal point *<kPoint>*	*t_KB* *'t_KB'*
+	t_KC	<k0>		keypad 0		 *<k0>*	*t_KC* *'t_KC'*
+	t_KD	<k1>		keypad 1		 *<k1>*	*t_KD* *'t_KD'*
+	t_KE	<k2>		keypad 2		 *<k2>*	*t_KE* *'t_KE'*
+	t_KF	<k3>		keypad 3		 *<k3>*	*t_KF* *'t_KF'*
+	t_KG	<k4>		keypad 4		 *<k4>*	*t_KG* *'t_KG'*
+	t_KH	<k5>		keypad 5		 *<k5>*	*t_KH* *'t_KH'*
+	t_KI	<k6>		keypad 6		 *<k6>*	*t_KI* *'t_KI'*
+	t_KJ	<k7>		keypad 7		 *<k7>*	*t_KJ* *'t_KJ'*
+	t_KK	<k8>		keypad 8		 *<k8>*	*t_KK* *'t_KK'*
+	t_KL	<k9>		keypad 9		 *<k9>*	*t_KL* *'t_KL'*
+		<Mouse>		leader of mouse code		*<Mouse>*
+
+Note about t_so and t_mr: When the termcap entry "so" is not present the
+entry for "mr" is used.  And vice versa.  The same is done for "se" and "me".
+If your terminal supports both inversion and standout mode, you can see two
+different modes.  If your terminal supports only one of the modes, both will
+look the same.
+
+The keypad keys, when they are not mapped, behave like the equivalent normal
+key.
+							*xterm-codes*
+There is a special trick to obtain the key codes which currently only works
+for xterm.  When |t_RV| is defined and a response is received which indicates
+an xterm with patchlevel 141 or higher, Vim uses special escape sequences to
+request the key codes directly from the xterm.  The responses are used to
+adjust the various t_ codes.  This avoids the problem that the xterm can
+produce different codes, depending on the mode it is in (8-bit, VT102,
+VT220, etc.).  The result is that codes like <xF1> are no longer needed.
+Note: This is only done on startup.  If the xterm options are changed after
+Vim has started, the escape sequences may not be recognized any more.
+
+							*termcap-colors*
+Note about colors: The 't_Co' option tells Vim the number of colors available.
+When it is non-zero, the 't_AB' and 't_AF' options are used to set the color.
+If one of these is not available, 't_Sb' and 't_Sf' are used.  't_me' is used
+to reset to the default colors.
+
+							*termcap-title*
+The 't_ts' and 't_fs' options are used to set the window title if the terminal
+allows title setting via sending strings.  They are sent before and after the
+title string, respectively.  Similar 't_IS' and 't_IE'  are used to set the
+icon text.  These are Vim-internal extensions of the Unix termcap, so they
+cannot be obtained from an external termcap.  However, the builtin termcap
+contains suitable entries for xterm and iris-ansi, so you don't need to set
+them here.
+							*hpterm*
+If inversion or other highlighting does not work correctly, try setting the
+'t_xs' option to a non-empty string.  This makes the 't_ce' code be used to
+remove highlighting from a line.  This is required for "hpterm".  Setting the
+'weirdinvert' option has the same effect as making 't_xs' non-empty, and vice
+versa.
+
+							*scroll-region*
+Some termcaps do not include an entry for 'cs' (scroll region), although the
+terminal does support it.  For example: xterm on a Sun.  You can use the
+builtin_xterm or define t_cs yourself.  For example: >
+	:set t_cs=^V^[[%i%d;%dr
+Where ^V is CTRL-V and ^[ is <Esc>.
+
+The vertical scroll region t_CV is not a standard termcap code.  Vim uses it
+internally in the GUI.  But it can also be defined for a terminal, if you can
+find one that supports it.  The two arguments are the left and right column of
+the region which to restrict the scrolling to.  Just like t_cs defines the top
+and bottom lines.  Defining t_CV will make scrolling in vertically split
+windows a lot faster.  Don't set t_CV when t_da or t_db is set (text isn't
+cleared when scrolling).
+
+Unfortunately it is not possible to deduce from the termcap how cursor
+positioning should be done when using a scrolling region: Relative to the
+beginning of the screen or relative to the beginning of the scrolling region.
+Most terminals use the first method.  A known exception is the MS-DOS console
+(pcterm).  The 't_CS' option should be set to any string when cursor
+positioning is relative to the start of the scrolling region.  It should be
+set to an empty string otherwise.  It defaults to "yes" when 'term' is
+"pcterm".
+
+Note for xterm users: The shifted cursor keys normally don't work.  You can
+	make them work with the xmodmap command and some mappings in Vim.
+
+	Give these commands in the xterm:
+		xmodmap -e "keysym Up = Up F13"
+		xmodmap -e "keysym Down = Down F16"
+		xmodmap -e "keysym Left = Left F18"
+		xmodmap -e "keysym Right = Right F19"
+
+	And use these mappings in Vim:
+		:map <t_F3> <S-Up>
+		:map! <t_F3> <S-Up>
+		:map <t_F6> <S-Down>
+		:map! <t_F6> <S-Down>
+		:map <t_F8> <S-Left>
+		:map! <t_F8> <S-Left>
+		:map <t_F9> <S-Right>
+		:map! <t_F9> <S-Right>
+
+Instead of, say, <S-Up> you can use any other command that you want to use the
+shift-cursor-up key for.  (Note: To help people that have a Sun keyboard with
+left side keys F14 is not used because it is confused with the undo key; F15
+is not used, because it does a window-to-front; F17 is not used, because it
+closes the window.  On other systems you can probably use them.)
+
+==============================================================================
+3. Window size						*window-size*
+
+[This is about the size of the whole window Vim is using, not a window that is
+created with the ":split" command.]
+
+If you are running Vim on an Amiga and the terminal name is "amiga" or
+"builtin_amiga", the amiga-specific window resizing will be enabled.  On Unix
+systems three methods are tried to get the window size:
+
+- an ioctl call (TIOCGSIZE or TIOCGWINSZ, depends on your system)
+- the environment variables "LINES" and "COLUMNS"
+- from the termcap entries "li" and "co"
+
+If everything fails a default size of 24 lines and 80 columns is assumed.  If
+a window-resize signal is received the size will be set again.  If the window
+size is wrong you can use the 'lines' and 'columns' options to set the
+correct values.
+
+One command can be used to set the screen size:
+
+						*:mod* *:mode* *E359* *E362*
+:mod[e] [mode]
+
+Without argument this only detects the screen size and redraws the screen.
+With MS-DOS it is possible to switch screen mode.  [mode] can be one of these
+values:
+	"bw40"		40 columns black&white
+	"c40"		40 columns color
+	"bw80"		80 columns black&white
+	"c80"		80 columns color (most people use this)
+	"mono"		80 columns monochrome
+	"c4350"		43 or 50 lines EGA/VGA mode
+	number		mode number to use, depends on your video card
+
+==============================================================================
+4. Slow and fast terminals			*slow-fast-terminal*
+						*slow-terminal*
+
+If you have a fast terminal you may like to set the 'ruler' option.  The
+cursor position is shown in the status line.  If you are using horizontal
+scrolling ('wrap' option off) consider setting 'sidescroll' to a small
+number.
+
+If you have a slow terminal you may want to reset the 'showcmd' option.
+The command characters will not be shown in the status line.  If the terminal
+scrolls very slowly, set the 'scrolljump' to 5 or so.  If the cursor is moved
+off the screen (e.g., with "j") Vim will scroll 5 lines at a time.  Another
+possibility is to reduce the number of lines that Vim uses with the command
+"z{height}<CR>".
+
+If the characters from the terminal are arriving with more than 1 second
+between them you might want to set the 'timeout' and/or 'ttimeout' option.
+See the "Options" chapter |options|.
+
+If your terminal does not support a scrolling region, but it does support
+insert/delete line commands, scrolling with multiple windows may make the
+lines jump up and down.  If you don't want this set the 'ttyfast' option.
+This will redraw the window instead of scroll it.
+
+If your terminal scrolls very slowly, but redrawing is not slow, set the
+'ttyscroll' option to a small number, e.g., 3.  This will make Vim redraw the
+screen instead of scrolling, when there are more than 3 lines to be scrolled.
+
+If you are using a color terminal that is slow, use this command: >
+	hi NonText cterm=NONE ctermfg=NONE
+This avoids that spaces are sent when they have different attributes.  On most
+terminals you can't see this anyway.
+
+If you are using Vim over a slow serial line, you might want to try running
+Vim inside the "screen" program.  Screen will optimize the terminal I/O quite
+a bit.
+
+If you are testing termcap options, but you cannot see what is happening,
+you might want to set the 'writedelay' option.  When non-zero, one character
+is sent to the terminal at a time (does not work for MS-DOS).  This makes the
+screen updating a lot slower, making it possible to see what is happening.
+
+==============================================================================
+5. Using the mouse					*mouse-using*
+
+This section is about using the mouse on a terminal or a terminal window.  How
+to use the mouse in a GUI window is explained in |gui-mouse|.  For scrolling
+with a mouse wheel see |scroll-mouse-wheel|.
+
+Don't forget to enable the mouse with this commands: >
+	:set mouse=a
+Otherwise Vim won't recognize the mouse in all modes (See 'mouse').
+
+Currently the mouse is supported for Unix in an xterm window, in a Linux
+console (with GPM |gpm-mouse|), for MS-DOS and in a Windows console.
+Mouse clicks can be used to position the cursor, select an area and paste.
+
+These characters in the 'mouse' option tell in which situations the mouse will
+be used by Vim:
+		n	Normal mode
+		v	Visual mode
+		i	Insert mode
+		c	Command-line mode
+		h	all previous modes when in a help file
+		a	all previous modes
+		r	for |hit-enter| prompt
+		A	auto-select in Visual mode
+
+The default for 'mouse' is empty, the mouse is not used.  Normally you would
+do: >
+	:set mouse=a
+to start using the mouse (this is equivalent to setting 'mouse' to "nvich").
+If you only want to use the mouse in a few modes or also want to use it for
+the two questions you will have to concatenate the letters for those modes.
+For example: >
+	:set mouse=nv
+Will make the mouse work in Normal mode and Visual mode. >
+	:set mouse=h
+Will make the mouse work in help files only (so you can use "g<LeftMouse>" to
+jump to tags).
+
+Whether the selection that is started with the mouse is in Visual mode or
+Select mode depends on whether "mouse" is included in the 'selectmode'
+option.
+
+In an xterm, with the currently active mode included in the 'mouse' option,
+normal mouse clicks are used by Vim, mouse clicks with the shift or ctrl key
+pressed go to the xterm.  With the currently active mode not included in
+'mouse' all mouse clicks go to the xterm.
+
+							*xterm-clipboard*
+In the Athena and Motif GUI versions, when running in a terminal and there is
+access to the X-server (DISPLAY is set), the copy and paste will behave like
+in the GUI.  If not, the middle mouse button will insert the unnamed register.
+In that case, here is how you copy and paste a piece of text:
+
+Copy/paste with the mouse and Visual mode ('mouse' option must be set, see
+above):
+1. Press left mouse button on first letter of text, move mouse pointer to last
+   letter of the text and release the button.  This will start Visual mode and
+   highlight the selected area.
+2. Press "y" to yank the Visual text in the unnamed register.
+3. Click the left mouse button at the insert position.
+4. Click the middle mouse button.
+
+Shortcut: If the insert position is on the screen at the same time as the
+Visual text, you can do 2, 3 and 4 all in one: Click the middle mouse button
+at the insert position.
+
+Note: When the |-X| command line argument is used, Vim will not connect to the
+X server and copy/paste to the X clipboard (selection) will not work.  Use the
+shift key with the mouse buttons to let the xterm do the selection.
+
+							*xterm-command-server*
+When the X-server clipboard is available, the command server described in
+|x11-clientserver| can be enabled with the --servername command line argument.
+
+							*xterm-copy-paste*
+NOTE: In some (older) xterms, it's not possible to move the cursor past column
+95.  This is an xterm problem, not Vim's.  Get a newer xterm |color-xterm|.
+
+Copy/paste in xterm with (current mode NOT included in 'mouse'):
+1. Press left mouse button on first letter of text, move mouse pointer to last
+   letter of the text and release the button.
+2. Use normal Vim commands to put the cursor at the insert position.
+3. Press "a" to start Insert mode.
+4. Click the middle mouse button.
+5. Press ESC to end Insert mode.
+(The same can be done with anything in 'mouse' if you keep the shift key
+pressed while using the mouse.)
+
+Note: if you lose the 8th bit when pasting (special characters are translated
+into other characters), you may have to do "stty cs8 -istrip -parenb" in your
+shell before starting Vim.
+
+Thus in an xterm the shift and ctrl keys cannot be used with the mouse.  Mouse
+commands requiring the CTRL modifier can be simulated by typing the "g" key
+before using the mouse:
+	"g<LeftMouse>"	is "<C-LeftMouse>	(jump to tag under mouse click)
+	"g<RightMouse>" is "<C-RightMouse>	("CTRL-T")
+
+					*mouse-mode-table* *mouse-overview*
+A short overview of what the mouse buttons do, when 'mousemodel' is "extend":
+
+Normal Mode:
+event	      position	   selection	  change  action	~
+	       cursor			  window		~
+<LeftMouse>     yes	     end	    yes
+<C-LeftMouse>   yes	     end	    yes	   "CTRL-]" (2)
+<S-LeftMouse>   yes	  no change	    yes	   "*" (2)    *<S-LeftMouse>*
+<LeftDrag>      yes	start or extend (1) no		      *<LeftDrag>*
+<LeftRelease>   yes	start or extend (1) no
+<MiddleMouse>   yes	  if not active     no	   put
+<MiddleMouse>   yes	  if active	    no	   yank and put
+<RightMouse>    yes	start or extend     yes
+<S-RightMouse>  yes	   no change	    yes	   "#" (2)    *<S-RightMouse>*
+<C-RightMouse>  no	   no change	    no	   "CTRL-T"
+<RightDrag>     yes	    extend	    no		      *<RightDrag>*
+<RightRelease>  yes	    extend	    no		      *<RightRelease>*
+
+Insert or Replace Mode:
+event	      position	   selection	  change  action	~
+	       cursor			  window		~
+<LeftMouse>     yes     (cannot be active)  yes
+<C-LeftMouse>   yes     (cannot be active)  yes	   "CTRL-O^]" (2)
+<S-LeftMouse>   yes     (cannot be active)  yes	   "CTRL-O*" (2)
+<LeftDrag>      yes     start or extend (1) no	   like CTRL-O (1)
+<LeftRelease>   yes     start or extend (1) no	   like CTRL-O (1)
+<MiddleMouse>   no      (cannot be active)  no	   put register
+<RightMouse>    yes     start or extend	    yes	   like CTRL-O
+<S-RightMouse>  yes     (cannot be active)  yes	   "CTRL-O#" (2)
+<C-RightMouse>  no	(cannot be active)  no	   "CTRL-O CTRL-T"
+
+In a help window:
+event	      position	   selection	  change  action	~
+	       cursor			  window		~
+<2-LeftMouse>   yes     (cannot be active)  no	   "^]" (jump to help tag)
+
+When 'mousemodel' is "popup", these are different:
+
+Normal Mode:
+event	      position	   selection	  change  action	~
+	       cursor			  window		~
+<S-LeftMouse>	yes	start or extend (1) no
+<RightMouse>	no	popup menu	    no
+
+Insert or Replace Mode:
+event	      position	   selection	  change  action	~
+	       cursor			  window		~
+<S-LeftMouse>   yes     start or extend (1) no	   like CTRL-O (1)
+<RightMouse>    no	popup menu	    no
+
+(1) only if mouse pointer moved since press
+(2) only if click is in same buffer
+
+Clicking the left mouse button causes the cursor to be positioned.  If the
+click is in another window that window is made the active window.  When
+editing the command-line the cursor can only be positioned on the
+command-line.  When in Insert mode Vim remains in Insert mode.  If 'scrolloff'
+is set, and the cursor is positioned within 'scrolloff' lines from the window
+border, the text is scrolled.
+
+A selection can be started by pressing the left mouse button on the first
+character, moving the mouse to the last character, then releasing the mouse
+button.  You will not always see the selection until you release the button,
+only in some versions (GUI, MS-DOS, WIN32) will the dragging be shown
+immediately.  Note that you can make the text scroll by moving the mouse at
+least one character in the first/last line in the window when 'scrolloff' is
+non-zero.
+
+In Normal, Visual and Select mode clicking the right mouse button causes the
+Visual area to be extended.  When 'mousemodel' is "popup", the left button has
+to be used while keeping the shift key pressed.  When clicking in a window
+which is editing another buffer, the Visual or Select mode is stopped.
+
+							*double-click*
+Double, triple and quadruple clicks are supported when the GUI is active,
+for MS-DOS and Win32, and for an xterm (if the gettimeofday() function is
+available).  For selecting text, extra clicks extend the selection:
+	click		select ~
+	double		word or % match		*<2-LeftMouse>*
+	triple		line			*<3-LeftMouse>*
+	quadruple	rectangular block	*<4-LeftMouse>*
+Exception: In a Help window a double click jumps to help for the word that is
+clicked on.
+A double click on a word selects that word.  'iskeyword' is used to specify
+which characters are included in a word.  A double click on a character
+that has a match selects until that match (like using "v%").  If the match is
+an #if/#else/#endif block, the selection becomes linewise.
+For MS-DOS and xterm the time for double clicking can be set with the
+'mousetime' option.  For the other systems this time is defined outside of
+Vim.
+An example, for using a double click to jump to the tag under the cursor: >
+	:map <2-LeftMouse> :exe "tag ". expand("<cword>")<CR>
+
+Dragging the mouse with a double click (button-down, button-up, button-down
+and then drag) will result in whole words to be selected.  This continues
+until the button is released, at which point the selection is per character
+again.
+
+							*gpm-mouse*
+The GPM mouse is only supported when the |+mouse_gpm| feature was enabled at
+compile time.  The GPM mouse driver (Linux console) does not support quadruple
+clicks.
+
+In Insert mode, when a selection is started, Vim goes into Normal mode
+temporarily.  When Visual or Select mode ends, it returns to Insert mode.
+This is like using CTRL-O in Insert mode.  Select mode is used when the
+'selectmode' option contains "mouse".
+
+							*drag-status-line*
+When working with several windows, the size of the windows can be changed by
+dragging the status line with the mouse.  Point the mouse at a status line,
+press the left button, move the mouse to the new position of the status line,
+release the button.  Just clicking the mouse in a status line makes that window
+the current window, without moving the cursor.  If by selecting a window it
+will change position or size, the dragging of the status line will look
+confusing, but it will work (just try it).
+
+					*<MiddleRelease>* *<MiddleDrag>*
+Mouse clicks can be mapped.  The codes for mouse clicks are:
+     code	    mouse button	      normal action	~
+ <LeftMouse>	 left pressed		    set cursor position
+ <LeftDrag>	 left moved while pressed   extend selection
+ <LeftRelease>	 left released		    set selection end
+ <MiddleMouse>	 middle pressed		    paste text at cursor position
+ <MiddleDrag>	 middle moved while pressed -
+ <MiddleRelease> middle released	    -
+ <RightMouse>	 right pressed		    extend selection
+ <RightDrag>	 right moved while pressed  extend selection
+ <RightRelease>  right released		    set selection end
+ <X1Mouse>	 X1 button pressed	    -			*X1Mouse*
+ <X1Drag>	 X1 moved while pressed	    -			*X1Drag*
+ <X1Release>	 X1 button release	    -			*X1Release*
+ <X2Mouse>	 X2 button pressed	    -			*X2Mouse*
+ <X2Drag>	 X2 moved while pressed     -			*X2Drag*
+ <X2Release>	 X2 button release	    -			*X2Release*
+
+The X1 and X2 buttons refer to the extra buttons found on some mice.  The
+'Microsoft Explorer' mouse has these buttons available to the right thumb.
+Currently X1 and X2 only work on Win32 environments.
+
+Examples: >
+	:noremap <MiddleMouse> <LeftMouse><MiddleMouse>
+Paste at the position of the middle mouse button click (otherwise the paste
+would be done at the cursor position). >
+
+	:noremap <LeftRelease> <LeftRelease>y
+Immediately yank the selection, when using Visual mode.
+
+Note the use of ":noremap" instead of "map" to avoid a recursive mapping.
+>
+	:map <X1Mouse> <C-O>
+	:map <X2Mouse> <C-I>
+Map the X1 and X2 buttons to go forwards and backwards in the jump list, see
+|CTRL-O| and |CTRL-I|.
+
+						*mouse-swap-buttons*
+To swap the meaning of the left and right mouse buttons: >
+	:noremap	<LeftMouse>	<RightMouse>
+	:noremap	<LeftDrag>	<RightDrag>
+	:noremap	<LeftRelease>	<RightRelease>
+	:noremap	<RightMouse>	<LeftMouse>
+	:noremap	<RightDrag>	<LeftDrag>
+	:noremap	<RightRelease>	<LeftRelease>
+	:noremap	g<LeftMouse>	<C-RightMouse>
+	:noremap	g<RightMouse>	<C-LeftMouse>
+	:noremap!	<LeftMouse>	<RightMouse>
+	:noremap!	<LeftDrag>	<RightDrag>
+	:noremap!	<LeftRelease>	<RightRelease>
+	:noremap!	<RightMouse>	<LeftMouse>
+	:noremap!	<RightDrag>	<LeftDrag>
+	:noremap!	<RightRelease>	<LeftRelease>
+<
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/tips.txt b/runtime/doc/tips.txt
new file mode 100644
index 0000000..7074779
--- /dev/null
+++ b/runtime/doc/tips.txt
@@ -0,0 +1,445 @@
+*tips.txt*      For Vim version 7.0aa.  Last change: 2004 Feb 17
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Tips and ideas for using Vim				*tips*
+
+Don't forget to browse the user manual, it also contains lots of useful tips
+|usr_toc.txt|.
+
+Editing C programs				|C-editing|
+Finding where identifiers are used		|ident-search|
+Switching screens in an xterm			|xterm-screens|
+Scrolling in Insert mode			|scroll-insert|
+Smooth scrolling				|scroll-smooth|
+Correcting common typing mistakes		|type-mistakes|
+Counting words, lines, etc.			|count-items|
+Restoring the cursor position			|restore-position|
+Renaming files					|rename-files|
+Speeding up external commands			|speed-up|
+Useful mappings					|useful-mappings|
+Compressing the help files			|gzip-helpfile|
+Hex editing					|hex-editing|
+Executing shell commands in a window		|shell-window|
+Using <> notation in autocommands		|autocmd-<>|
+
+==============================================================================
+Editing C programs					*C-editing*
+
+There are quite a few features in Vim to help you edit C program files.  Here
+is an overview with tags to jump to:
+
+|usr_29.txt|		Moving through programs chapter in the user manual.
+|usr_30.txt|		Editing programs chapter in the user manual.
+|C-indenting|		Automatically set the indent of a line while typing
+			text.
+|=|			Re-indent a few lines.
+|format-comments|	Format comments.
+
+|:checkpath|		Show all recursively included files.
+|[i|			Search for identifier under cursor in current and
+			included files.
+|[_CTRL-I|		Jump to match for "[i"
+|[I|			List all lines in current and included files where
+			identifier under the cursor matches.
+|[d|			Search for define under cursor in current and included
+			files.
+
+|CTRL-]|		Jump to tag under cursor (e.g., definition of a
+			function).
+|CTRL-T|		Jump back to before a CTRL-] command.
+|:tselect|		Select one tag out of a list of matching tags.
+
+|gd|			Go to Declaration of local variable under cursor.
+|gD|			Go to Declaration of global variable under cursor.
+
+|gf|			Go to file name under the cursor.
+
+|%|			Go to matching (), {}, [], /* */, #if, #else, #endif.
+|[/|			Go to previous start of comment.
+|]/|			Go to next end of comment.
+|[#|			Go back to unclosed #if, #ifdef, or #else.
+|]#|			Go forward to unclosed #else or #endif.
+|[(|			Go back to unclosed '('
+|])|			Go forward to unclosed ')'
+|[{|			Go back to unclosed '{'
+|]}|			Go forward to unclosed '}'
+
+|v_ab|			Select "a block" from "[(" to "])", including braces
+|v_ib|			Select "inner block" from "[(" to "])"
+|v_aB|			Select "a block" from "[{" to "]}", including brackets
+|v_iB|			Select "inner block" from "[{" to "]}"
+
+==============================================================================
+Finding where identifiers are used			*ident-search*
+
+You probably already know that |tags| can be used to jump to the place where a
+function or variable is defined.  But sometimes you wish you could jump to all
+the places where a function or variable is being used.  This is possible in
+two ways:
+1. Using the |:grep| command.  This should work on most Unix systems,
+   but can be slow (it reads all files) and only searches in one directory.
+2. Using ID utils.  This is fast and works in multiple directories.  It uses a
+   database to store locations.  You will need some additional programs for
+   this to work.  And you need to keep the database up to date.
+
+Using the GNU id-tools:
+
+What you need:
+- The GNU id-tools installed (mkid is needed to create ID and lid is needed to
+  use the macros).
+- An identifier database file called "ID" in the current directory.  You can
+  create it with the shell command "mkid file1 file2 ..".
+
+Put this in your .vimrc: >
+	map _u :call ID_search()<Bar>execute "/\\<" . g:word . "\\>"<CR>
+	map _n :n<Bar>execute "/\\<" . g:word . "\\>"<CR>
+
+	function! ID_search()
+	  let g:word = expand("<cword>")
+	  let x = system("lid --key=none ". g:word)
+	  let x = substitute(x, "\n", " ", "g")
+	  execute "next " . x
+	endfun
+
+To use it, place the cursor on a word, type "_u" and vim will load the file
+that contains the word.  Search for the next occurrence of the word in the
+same file with "n".  Go to the next file with "_n".
+
+This has been tested with id-utils-3.2 (which is the name of the id-tools
+archive file on your closest gnu-ftp-mirror).
+
+[the idea for this comes from Andreas Kutschera]
+
+==============================================================================
+Switching screens in an xterm		*xterm-screens* *xterm-save-screen*
+
+(From comp.editors, by Juergen Weigert, in reply to a question)
+
+:> Another question is that after exiting vim, the screen is left as it
+:> was, i.e. the contents of the file I was viewing (editing) was left on
+:> the screen. The output from my previous like "ls" were lost,
+:> ie. no longer in the scrolling buffer. I know that there is a way to
+:> restore the screen after exiting vim or other vi like editors,
+:> I just don't know how. Helps are appreciated. Thanks.
+:
+:I imagine someone else can answer this.  I assume though that vim and vi do
+:the same thing as each other for a given xterm setup.
+
+They not necessarily do the same thing, as this may be a termcap vs.
+terminfo problem. You should be aware that there are two databases for
+describing attributes of a particular type of terminal: termcap and
+terminfo. This can cause differences when the entries differ AND when of
+the programs in question one uses terminfo and the other uses termcap
+(also see |+terminfo|).
+
+In your particular problem, you are looking for the control sequences
+^[[?47h and ^[[?47l. These switch between xterms alternate and main screen
+buffer. As a quick workaround a command sequence like >
+	echo -n "^[[?47h"; vim ... ; echo -n "^[[?47l"
+may do what you want. (My notation ^[ means the ESC character, further down
+you'll see that the databases use \E instead).
+
+On startup, vim echoes the value of the termcap variable ti (terminfo:
+smcup) to the terminal. When exiting, it echoes te (terminfo: rmcup). Thus
+these two variables are the correct place where the above mentioned control
+sequences should go.
+
+Compare your xterm termcap entry (found in /etc/termcap) with your xterm
+terminfo entry (retrieved with /usr/5bin/infocmp -C xterm). Both should
+contain entries similar to: >
+	:te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:
+
+PS: If you find any difference, someone (your sysadmin?) should better check
+    the complete termcap and terminfo database for consistency.
+
+NOTE 1: If you recompile Vim with FEAT_XTERM_SAVE defined in feature.h, the
+builtin xterm will include the mentioned "te" and "ti" entries.
+
+NOTE 2: If you want to disable the screen switching, and you don't want to
+change your termcap, you can add these lines to your .vimrc: >
+	:set t_ti= t_te=
+
+==============================================================================
+Scrolling in Insert mode				*scroll-insert*
+
+If you are in insert mode and you want to see something that is just off the
+screen, you can use CTRL-X CTRL-E and CTRL-X CTRL-Y to scroll the screen.
+						|i_CTRL-X_CTRL-E|
+
+To make this easier, you could use these mappings: >
+	:inoremap <C-E> <C-X><C-E>
+	:inoremap <C-Y> <C-X><C-Y>
+(Type this literally, make sure the '<' flag is not in 'cpoptions').
+You then lose the ability to copy text from the line above/below the cursor
+|i_CTRL-E|.
+
+Also consider setting 'scrolloff' to a larger value, so that you can always see
+some context around the cursor.  If 'scrolloff' is bigger than half the window
+height, the cursor will always be in the middle and the text is scrolled when
+the cursor is moved up/down.
+
+==============================================================================
+Smooth scrolling					*scroll-smooth*
+
+If you like the scrolling to go a bit smoother, you can use these mappings: >
+	:map <C-U> <C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y>
+	:map <C-D> <C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E>
+
+(Type this literally, make sure the '<' flag is not in 'cpoptions').
+
+==============================================================================
+Correcting common typing mistakes			*type-mistakes*
+
+When there are a few words that you keep on typing in the wrong way, make
+abbreviations that correct them.  For example: >
+	:ab teh the
+	:ab fro for
+
+==============================================================================
+Counting words, lines, etc.				*count-items*
+
+To count how often any pattern occurs in a buffer, set 'report' to 0, and use
+the substitute command to replace the pattern with itself.  The reported
+number of substitutions is the number of items.  Examples: >
+
+	:set report=0
+	:%s/./&/g		characters
+	:%s/\i\+/&/g		words
+	:%s/^			lines
+	:%s/the/&/g		"the" anywhere
+	:%s/\<the\>/&/g		"the" as a word
+
+You might want to reset 'hlsearch' or do ":nohlsearch".
+
+This does not work if the 'modifiable' option is off.  An alternative is using
+|v_g_CTRL-G| in Visual mode.
+
+							*count-bytes*
+If you want to count bytes, you can use this:
+
+	Visually select the characters (block is also possible)
+	Use "y" to yank the characters
+	Use the strlen() function: >
+		:echo strlen(@")
+A line break is counted for one byte.
+
+==============================================================================
+Restoring the cursor position				*restore-position*
+
+Sometimes you want to write a mapping that makes a change somewhere in the
+file and restores the cursor position, without scrolling the text.  For
+example, to change the date mark in a file: >
+   :map <F2> msHmtgg/Last [cC]hange:\s*/e+1<CR>"_D"=strftime("%Y %b %d")<CR>p'tzt`s
+
+Breaking up saving the position:
+	ms	store cursor position in the 's' mark
+	H	go to the first line in the window
+	mt	store this position in the 't' mark
+
+Breaking up restoring the position:
+	't	go to the line previously at the top of the window
+	zt	scroll to move this line to the top of the window
+	`s	jump to the original position of the cursor
+
+==============================================================================
+Renaming files						*rename-files*
+
+Say I have a directory with the following files in them (directory picked at
+random :-):
+
+buffer.c
+charset.c
+digraph.c
+...
+
+and I want to rename *.c *.bla.  I'd do it like this: >
+
+	$ vim
+	:r! ls *.c
+	:%s/\(.*\).c/mv & \1.bla
+	:w !sh
+	:q!
+
+==============================================================================
+Speeding up external commands				*speed-up*
+
+In some situations, execution of an external command can be very slow.  This
+can also slow down wildcard expansion on Unix.  Here are a few suggestions to
+increase the speed.
+
+If your .cshrc (or other file, depending on the shell used) is very long, you
+should separate it into a section for interactive use and a section for
+non-interactive use (often called secondary shells).  When you execute a
+command from Vim like ":!ls", you do not need the interactive things (for
+example, setting the prompt).  Put the stuff that is not needed after these
+lines: >
+
+	if ($?prompt == 0) then
+		exit 0
+	endif
+
+Another way is to include the "-f" flag in the 'shell' option, e.g.: >
+
+	:set shell=csh\ -f
+
+(the backslash is needed to include the space in the option).
+This will make csh completely skip the use of the .cshrc file.  This may cause
+some things to stop working though.
+
+==============================================================================
+Useful mappings						*useful-mappings*
+
+Here are a few mappings that some people like to use.
+
+							*map-backtick*  >
+	:map ' `
+Make the single quote work like a backtick.  Puts the cursor on the column of
+a mark, instead of going to the first non-blank character in the line.
+
+							*emacs-keys*
+For Emacs-style editing on the command-line: >
+	" start of line
+	:cnoremap <C-A>		<Home>
+	" back one character
+	:cnoremap <C-B>		<Left>
+	" delete character under cursor
+	:cnoremap <C-D>		<Del>
+	" end of line
+	:cnoremap <C-E>		<End>
+	" forward one character
+	:cnoremap <C-F>		<Right>
+	" recall newer command-line
+	:cnoremap <C-N>		<Down>
+	" recall previous (older) command-line
+	:cnoremap <C-P>		<Up>
+	" back one word
+	:cnoremap <Esc><C-B>	<S-Left>
+	" forward one word
+	:cnoremap <Esc><C-F>	<S-Right>
+
+NOTE: This requires that the '<' flag is excluded from 'cpoptions'. |<>|
+
+							*format-bullet-list*
+This mapping will format any bullet list.  It requires that there is an empty
+line above and below each list entry.  The expression commands are used to
+be able to give comments to the parts of the mapping. >
+
+	:let m =     ":map _f  :set ai<CR>"    " need 'autoindent' set
+	:let m = m . "{O<Esc>"		      " add empty line above item
+	:let m = m . "}{)^W"		      " move to text after bullet
+	:let m = m . "i     <CR>     <Esc>"    " add space for indent
+	:let m = m . "gq}"		      " format text after the bullet
+	:let m = m . "{dd"		      " remove the empty line
+	:let m = m . "5lDJ"		      " put text after bullet
+	:execute m			      |" define the mapping
+
+(<> notation |<>|.  Note that this is all typed literally.  ^W is "^" "W", not
+CTRL-W.  You can copy/paste this into Vim if '<' is not included in
+'cpoptions')
+
+Note that the last comment starts with |", because the ":execute" command
+doesn't accept a comment directly.
+
+You also need to set 'textwidth' to a non-zero value, e.g., >
+	:set tw=70
+
+A mapping that does about the same, but takes the indent for the list from the
+first line (Note: this mapping is a single long line with a lot of spaces): >
+	:map _f :set ai<CR>}{a                                                          <Esc>WWmmkD`mi<CR><Esc>kkddpJgq}'mJO<Esc>j
+<
+							*collapse*
+These two mappings reduce a sequence of empty (;b) or blank (;n) lines into a
+single line >
+    :map ;b   GoZ<Esc>:g/^$/.,/./-j<CR>Gdd
+    :map ;n   GoZ<Esc>:g/^[ <Tab>]*$/.,/[^ <Tab>]/-j<CR>Gdd
+
+==============================================================================
+Compressing the help files				*gzip-helpfile*
+
+For those of you who are really short on disk space, you can compress the help
+files and still be able to view them with Vim.  This makes accessing the help
+files a bit slower and requires the "gzip" program.
+
+(1) Compress all the help files: "gzip doc/*.txt".
+
+(2) Edit "doc/tags" and change the ".txt" to ".txt.gz": >
+	:%s=\(\t.*\.txt\)\t=\1.gz\t=
+
+(3) Add this line to your vimrc: >
+	set helpfile={dirname}/help.txt.gz
+
+Where {dirname} is the directory where the help files are.  The |gzip| plugin
+will take care of decompressing the files.
+You must make sure that $VIMRUNTIME is set to where the other Vim files are,
+when they are not in the same location as the compressed "doc" directory.  See
+|$VIMRUNTIME|.
+
+==============================================================================
+Executing shell commands in a window			*shell-window*
+
+There have been questions for the possibility to execute a shell in a window
+inside Vim.  The answer: you can't!  Including this would add a lot of code to
+Vim, which is a good reason not to do this.  After all, Vim is an editor, it
+is not supposed to do non-editing tasks.  However, to get something like this,
+you might try splitting your terminal screen or display window with the
+"splitvt" program.  You can probably find it on some ftp server.  The person
+that knows more about this is Sam Lantinga <slouken@cs.ucdavis.edu>.
+An alternative is the "window" command, found on BSD Unix systems, which
+supports multiple overlapped windows.  Or the "screen" program, found at
+www.uni-erlangen.de, which supports a stack of windows.
+
+==============================================================================
+Hex editing					*hex-editing* *using-xxd*
+
+See section |23.4| of the user manual.
+
+If one has a particular extension that one uses for binary files (such as exe,
+bin, etc), you may find it helpful to automate the process with the following
+bit of autocmds for your <.vimrc>.  Change that "*.bin" to whatever
+comma-separated list of extension(s) you find yourself wanting to edit: >
+
+	" vim -b : edit binary using xxd-format!
+	augroup Binary
+	  au!
+	  au BufReadPre  *.bin let &bin=1
+	  au BufReadPost *.bin if &bin | %!xxd
+	  au BufReadPost *.bin set ft=xxd | endif
+	  au BufWritePre *.bin if &bin | %!xxd -r
+	  au BufWritePre *.bin endif
+	  au BufWritePost *.bin if &bin | %!xxd
+	  au BufWritePost *.bin set nomod | endif
+	augroup END
+
+==============================================================================
+Using <> notation in autocommands			*autocmd-<>*
+
+The <> notation is not recognized in the argument of an :autocmd.  To avoid
+having to use special characters, you could use a self-destroying mapping to
+get the <> notation and then call the mapping from the autocmd.  Example:
+
+						*map-self-destroy*  >
+ " This is for automatically adding the name of the file to the menu list.
+ " It uses a self-destroying mapping!
+ " 1. use a line in the buffer to convert the 'dots' in the file name to \.
+ " 2. store that in register '"'
+ " 3. add that name to the Buffers menu list
+ " WARNING: this does have some side effects, like overwriting the
+ " current register contents and removing any mapping for the "i" command.
+ "
+ autocmd BufNewFile,BufReadPre * nmap i :nunmap i<CR>O<C-R>%<Esc>:.g/\./s/\./\\./g<CR>0"9y$u:menu Buffers.<C-R>9 :buffer <C-R>%<C-V><CR><CR>
+ autocmd BufNewFile,BufReadPre * normal i
+
+Another method, perhaps better, is to use the ":execute" command.  In the
+string you can use the <> notation by preceding it with a backslash.  Don't
+forget to double the number of existing backslashes and put a backslash before
+'"'.
+>
+  autocmd BufNewFile,BufReadPre * exe "normal O\<C-R>%\<Esc>:.g/\\./s/\\./\\\\./g\<CR>0\"9y$u:menu Buffers.\<C-R>9 :buffer \<C-R>%\<C-V>\<CR>\<CR>"
+
+For a real buffer menu, user functions should be used (see |:function|), but
+then the <> notation isn't used, which defeats using it as an example here.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
new file mode 100644
index 0000000..c8b9576
--- /dev/null
+++ b/runtime/doc/todo.txt
@@ -0,0 +1,3441 @@
+*todo.txt*      For Vim version 7.0aa.  Last change: 2004 Jun 13
+
+
+		  VIM REFERENCE MANUAL	  by Bram Moolenaar
+
+
+			      TODO list for Vim		*todo*
+
+This is a veeeery long list of known bugs, current work and desired
+improvements.  To make it a little bit accessible, the items are grouped by
+subject.  In the first column of the line a classification is used to be able
+to look for "the next thing to do":
+
+Priority classification:
+9   next point release
+8   next release
+7   as soon as possible
+6   soon
+5   should be included
+4   nice to have
+3   consider including
+2   maybe not
+1   probably not
+-   unclassified
+
+						    *votes-for-changes*
+See |develop.txt| for development plans.  You can vote for which items should
+be worked on, but only if you sponsor Vim development.  See |sponsor|.
+
+							*known-bugs*
+-------------------- Known bugs and current work -----------------------
+
+GTK2: font dialog uses font size zero when 'guifont' is "Courier".  Patch from
+Yasuhiro Matsumoto, 2004 June 8.
+
+Python indent: # aser: still adds extra indent.
+
+
+For version 7.0:
+-   Include many PATCHES:
+    -   Include the kvim patch. http://freenux.org/vim/ (Mickael Marchand)
+	Do not add Qtopia yet, it doesn't work very well.
+-   new DATA TYPES: lists, dictionaries and function references.
+    Add type checking?  See ~/vim/ideas.txt.
+-   Add SPELLCHECKER, with easy to add support for many languages.
+-   REFACTORING: The main() function is very long.  Move parts to separate
+    functions, especially loops.  Ideas from Walter Briscoe (2003 Apr 3, 2004
+    Feb 9).
+-   Store messages to allow SCROLLING BACK for all commands.  And other "less"
+    like commands.
+-   "INTELLISENSE".  First cleanup the Insert-mode completion.
+	http://www.vim.org/scripts/script.php?script_id=747
+	http://sourceforge.net/projects/insenvim
+-   PERSISTENT UNDO: store undo in a file.
+    Support multiple threads.  Show the list of changes in a window to be able
+    to select a version.
+7   SWAP FILE CHANGE: When a dos format file was edited with ":e ++ff=unix",
+    Vim is killed and trying to recover the file, 'ff' will be dos.  Same for
+    non-default fileencoding.  (Miroslaw Dobrzanski-Neumann, Jul 17)
+    Should store the values in block 0 of the swap file, but that is an
+    incompatible change.
+7   Support WINDOW TABS.  Works like several pages, each with their own
+    split windows.  Patch for GTK 1.2 from Christian Michon, 2004 Jan 6.
+    Also for the console!
+-   EMBEDDING: Make it possible to run Vim inside a window of another program.
+    For Xwindows this can be done with XReparentWindow().
+    For GTK Neil Bird has a patch to use Vim like a widget.
+-   Add COLUMN NUMBERS to ":" commands ":line1,line2[col1,col2]cmd".  Block
+    can be selected with CTRL-V.  Allow '$' (end of line) for col2.
+-   Add DEBUGGER INTERFACE.  Implementation for gdb by Xavier de Gaye,
+    assisted by Mikolaj Machowski.  Should work like an IDE.  Try to keep it
+    generic.  Also found here: http://skawina.eu.org/mikolaj/vimgdb
+    To be able to start the debugger from inside Vim: For GUI run a program
+    with a netbeans connection; for console: start a program that splits the
+    terminal, runs the debugger in one window and reconnect Vim I/O to the
+    other window.
+    Wishes for NetBeans commands:
+    - make it possible to have 'defineAnnoType' also handle terminal colors.
+    - send 'balloonText' events for the cursor position (using CursorHold ?)
+      in terminal mode.
+-   STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is.
+    Especially when using the scrollbar.  Typing a cursor-movement command
+    scrolls back to where the cursor is.
+
+
+Vi incompatibility:
+8   With undo/redo only marks in the changed lines should be changed.  Other
+    marks should be kept.  Vi keeps each mark at the same text, even when it
+    is deleted or restored. (Webb)
+    Also: A mark is lost after: make change, undo, redo and undo.
+    Example: "{d''" then "u" then "d''": deletes an extra line, because the ''
+    position is one line down. (Veselinovic)
+8   ":change" in a single-line file adds an empty line. When the file used to
+    be longer a "~" line is displayed, but there really is an empty line.
+    (Haakon Riiser, 2003 Dec 3 and Dec 16)
+8   ":append" and ":insert" in an empty file add an extra empty line. (Haakon
+    Riiser, 2003 Dec 3)  Test for ML_EMPTY.
+8   When stdin is not a tty, and Vim reads commands from it, an error should
+    make Vim exit.
+7   Unix Vim (not gvim): Typing CTRL-C in Ex mode should finish the line
+    (currently you can continue typing, but it's truncated later anyway).
+    Requires a way to make CTRL-C interrupt select() when in cooked input.
+8   When loading a file in the .exrc, Vi loads the argument anyway.  Vim skips
+    loading the argument if there is a file already.  When no file argument
+    given, Vi starts with an empty buffer, Vim keeps the loaded file. (Bearded)
+6   In Insert mode, when using <BS> or <Del>, don't wipe out the text, but
+    only move back the cursor.	Behaves like '$' in 'cpoptions'.  Use a flag
+    in 'cpoptions' to switch this on/off.
+8   When editing a file which is a symbolic link, and then opening another
+    symbolic link on the same file, Vim uses the name of the first one.
+    Adjust the file name in the buffer to the last one used?  Use several file
+    names in one buffer???
+    Also: When first editing file "test", which is symlink to "test2", and
+    then editing "test2", you end up editing buffer "test" again.  It's not
+    logical that the name that was first used sticks with the buffer.
+7   The ":undo" command works differently in Ex mode.  Edit a file, make some
+    changes, "Q", "undo" and _all_ changes are undone, like the ":visual"
+    command was one command.
+7   The ":map" command output overwrites the command.  Perhaps it should keep
+    the ":map" when it's used without arguments?
+7   CTRL-L is not the end of a section?  It is for Posix!  Make it an option.
+7   Implement 'prompt' option.	Init to off when stdin is not a tty.
+7   CTRL-T in Insert mode inserts 'shiftwidth' of spaces at the cursor.  Add a
+    flag in 'cpoptions' for this.
+7   Add a way to send an email for a crashed edit session.  Create a file when
+    making changes (containing name of the swap file), delete it when writing
+    the file.  Supply a program that can check for crashed sessions (either
+    all, for a system startup, or for one user, for in a .login file).
+7   Vi doesn't do autoindenting when input is not from a tty (in Ex mode).
+7   "z3<CR>" should still use the whole window, but only redisplay 3 lines.
+7   ":tag xx" should move the cursor to the first non-blank.  Or should it go
+    to the match with the tag?	Option?
+7   Implement 'autoprint'/'ap' option.
+7   Add flag in 'cpoptions' that makes <BS> after a count work like <Del>
+    (Sayre).
+7   Add flag in 'cpoptions' that makes operator (yank, filter) not move the
+    cursor, at least when cancelled. (default Vi compatible).
+7   Make "5dd" on last-but-one-line not delete anything (Vi compatible).
+    Add flag in 'cpoptions' for this.  When not present, "2dd" in the last
+    line should delete the last line.  Patch from greenx 2002 Apr 11.
+7   This Vi-trick doesn't work: "Q" to go to Ex mode, then "g/pattern/visual".
+    In Vi you can edit in visual mode, and when doing "Q" you jump to the next
+    match.  Nvi can do it too.
+7   Support '\' for line continuation in Ex mode for these commands: (Luebking)
+	g/./a\		    g/pattern1/ s/pattern2/rep1\\
+	line 1\		    line 2\\
+	line 2\		    line 3\\
+	.		    line4/
+6   ":e /tmp/$tty" doesn't work.  ":e $uid" does.  Is $tty not set because of
+    the way the shell is started?
+6   Vi compatibility (optional): make "ia<CR><ESC>10." do the same strange
+    thing.  (only repeat insert for the first line).
+
+
+GTK+ 1 (OK in GTK 2):
+8   When menus are disabled, 'm' removed from 'guioptions', Alt-F still pops
+    up the File menu.  Cannot reproduce this: gives a warning for a NULL
+    pointer if the menu was never displayed.
+8   When using "gvim -geom 40x30" or setting 'columns' in .gvimrc or with a
+    GUIEnter autocommand, the width is still set to fit the toolbar.  Also
+    happens when changing the font.  How to avoid that the toolbar specifies
+    the minimal window width?
+8   When using a theme with different scrollbars (gtkstep), the scrollbars can
+    be too narrow. (Drazen Kacar)
+8   Font "7x14" has a bold version "7x14bold".  Try to find the bold font by
+    appending "bold" when there are not 14 dashes.
+
+GTK+ GUI known bugs:
+8   GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj
+    Machowski)  They are displayed as separate characters.  Problem in
+    creating a label?
+9   Can't paste a Visual selection from GTK-gvim to vim in xterm or Motif gvim
+    when it is longer than 4000 characters.  Works OK from gvim to gvim and
+    vim to vim.  Pasting through xterm (using the shift key) also works.
+    It starts working after GTK gvim loses the selection and gains it again.
+7   DND doesn't work with KDE (also with GTK 1).
+
+
+Win32 GUI known bugs:
+8   On Windows 98 the unicows library is needed to support functions with UCS2
+    file names.  Can we load unicows.dll dynamically?
+8   The -P argument doesn't work very well with many MDI applications.
+    The last argument of CreateWindowEx() should be used, see MSDN docs.
+    Tutorial: http://win32assembly.online.fr/tut32.html
+8   In eval.c, io.h is included when MSWIN32 is defined.  Shouldn't this be
+    WIN32?  Or can including io.h be moved to vim.h? (Dan Sharp)
+7   Windows XP: When using "ClearType" for text smoothing, a column of yellow
+    pixels remains when typing spaces in front of a "D" ('guifont' set to
+    "lucida_console:h8").
+6   Win32 GUI: With "-u NONE -U NONE" and doing "CTRL-W v" "CTRL-W o", the ":"
+    of ":only" is highlighted like the cursor.  (Lipelis)
+7   When font smoothing is enabled, redrawing can become very slow.  The reason
+    appears to be drawing with a transparent background.  Would it be possible
+    to use an opaque background in most places?
+8   Use another default for 'termencoding': the active codepage.  Means that
+    when 'encoding' is changed typing characters still works properly.
+    Alternative: use the Unicode functions to obtain typed characters.
+8   Win32: Multi-byte characters are not displayed, even though the same font
+    in Notepad can display them. (Srinath Avadhanula)  Try with the
+    UTF-8-demo.txt page with Andale Mono.
+7   The cursor color indicating IME mode doesn't work properly. (Shizhu Pan,
+    2004 May 9)
+8   Win32: When clicking on the gvim title bar, which gives it focus, produces
+    a file-changed dialog, after clicking on a button in that dialog the gvim
+    window follows the mouse.  The button-up event is lost.  Only with
+    MS-Windows 98?
+    Try this: ":set sw ts", get enter-prompt, then change the file in a
+    console, go back to Vim and click "reload" in the dialog for the changed
+    file: Window moves with the cursor!
+    Put focus event in input buffer and let generic Vim code handle it?
+8   When activating the Vim window with mouse click, don't move cursor to
+    mouse position.  Catch WM_MOUSEACTIVATE. (Luevelsmeyer)
+9   The print dialog uses a font which doesn't display multi-byte messages.
+    Include patch from Vipin Aravind?  Update from Yasuhiro Matsumoto.
+8   Win32: When mouse is hidden and in the toolbar, moving it won't make it
+    appear. (Sami Salonen)
+8   Windows NT: writing to aux.* makes Vim hang. (Acevedo)
+8   Win32 GUI: With maximized window, ":set go-=r" doesn't use the space that
+    comes available. (Poucet)  It works OK on Win 98 but doesn't work on Win
+    NT 4.0.  Leaves a grey area where the scrollbar was.  ":set go+=r" also
+    doesn't work properly.
+8   When Vim is minimized and when maximizing it a file-changed dialog pops
+    up, Vim isn't maximized.  It should be done before the dialog, so that it
+    appears in the right position. (Webb)
+9   When selecting at the more-prompt or hit-enter-prompt, the right mouse
+    button doesn't give popup menu.
+    At the hit-enter prompt CTRL-Y doesn't work to copy the modeless
+    selection.
+    On the command line, don't get a popup menu for the right mouse button.
+    Let the middle button paste selected text (not the clipboard but the
+    non-Visual selection)?  Otherwise CTRL-Y has to be used to copy the text.
+8   When 'grepprg' doesn't execute, the error only flashes by, the
+    user can hardly see what is wrong. (Moore)
+    Could use vimrun with an "-nowait" argument to only wait when an error
+    occurs, but "command.com" doesn't return an error code.
+8   When the 'shell' cannot be executed, should give an appropriate error msg.
+    Esp. for a filter command, currently it only complains the file could not
+    be read.
+8   MessageBox used for error messages can be too big.	There is no way to
+    scroll it, or even hit the OK button (but you can hit return).
+    Use a scrollable window.
+7   Add an option to add one pixel column to the character width?  Lucida
+    Console italic is wider than the normal font ("d" overlaps with next char).
+    Opposite of 'linespace': 'columnspace'.
+7   At the hit-enter prompt scrolling now no longer works.  Need to use the
+    keyboard to get around this.  Pretend <CR> was hit when the user tries to
+    scroll?  Need to be able to get out of hit-enter prompt with the mouse
+    anyway.
+7   Scrollbar width doesn't change when selecting other windows appearance.
+    Also background color of Toolbar and rectangle below vert. scrollbar.
+7   "!start /min cmd" should run in a minimized window, instead of using
+    "/min" as the command name. (Rogall)
+6   Drawing text transparently doesn't seem to work (when drawing part cursor).
+8   CTRL key doesn't always work in combination with ALT key.  It does work
+    for function keys, not for alphabetic characters.  Perhaps this is because
+    CTRL-ALT is used by Windows as AltGr?
+8   CTRL-- doesn't work for AZERTY, because it's CTRL-[ for QWERTY.  How do we
+    know which keyboard is being used?
+7   When scrolling, and a background color is dithered, the dither pattern
+    doesn't always join correctly between the scrolled area and the new drawn
+    area (Koloseike).
+8   When gui_init_font() is called with "*", p_guifont is freed while it might
+    still be used somewhere.  This is too tricky, do the font selection first,
+    then set the new font by name (requires putting all logfont parameters in
+    the font name).
+
+
+Athena and Motif:
+9   Can configure be changed to disable netbeans if the Xpm library is
+    required and it's missing?
+8   When using the resource "Vim*borderwidth 2" the widgets are positioned
+    wrong.
+9   XIM is disabled by default for SGI/IRIX.  Fix XIM so that 'imdisable' can
+    be off by default.
+9   XIM doesn't work properly for Athena/Motif. (Yasuhiro Matsumoto) For now,
+    keep XIM active at all times when the input method has the preediting
+    flag.
+8   X11: A menu that contains an umlaut is truncated at that character.
+    Happens when the locale is "C", which uses ASCII instead of IS0-8859-1.
+    Is there a way to use latin1 by default?  Gnome_init() seems to do this.
+8   Perhaps use fontsets for everything?
+6   When starting in English and switching the language to Japanese, setting
+    the locale with ":lang", 'guifontset' and "hi menu font=", deleting all
+    menus and setting them again, the menus don't use the new font.  Most of
+    the tooltips work though...
+7   Motif: when using a file selection dialog, the specified file name is not
+    always used (when specifying a filter or another directory).
+8   When 'encoding' is different from the current locale (e.g., utf-8) the
+    menu strings don't work.  Requires conversion from 'encoding' to the
+    current locale.  Workaround: set 'langmenu'.
+
+
+Athena GUI:
+9   When dragging the scrollbar thumb very fast, focus is only obtained in
+    the scrollbar itself.  And the thumb is no longer updated when moving
+    through files.
+7   The file selector is not resizable.  With a big font it is difficult to
+    read long file names. (Schroeder)
+4   Re-write the widget attachments and code so that we will not have to go
+    through and calculate the absolute position of every widget every time the
+    window is refreshed/changes size.  This will help the "flashing-widgets"
+    problem during a refresh.
+5   When starting gvim with all the default colors and then typing
+    ":hi Menu guibg=cyan", the menus change color but the background of the
+    pullright pixmap doesn't change colors.
+    If you type ":hi Menu guibg=cyan font=anyfont", then the pixmap changes
+    colors as it should.
+    Allocating a new pixmap and setting the resource doesn't change the
+    pullright pixmap's colors.  Why?  Possible Athena bug?
+
+
+Motif GUI:
+8   Popup menu ordering is wrong.
+8   Accelerators don't work in a dialog.  Include patch from Martin Dalecki
+    (Jan 3, tested by David Harrison).  Should work with Alt-o then.
+7   Use accelerators for the Motif file selection dialog.  Patch from Martin
+    Dalecki 2002 Jan 11.
+7   Use XmStringCreateLocalized() instead of XmStringCreateSimple()?
+    David Harrison says it's OK (it exists in Motif 1.2).
+8   The texts in the find/replace dialog don't use the right font.
+8   Lesstif: When deleting a menu that's torn off, the torn off menu becomes
+    very small instead of disappearing.  When closing it, Vim crashes.
+    (Phillipps)
+
+
+GUI:
+9   On Solaris, creating the popup menu causes the right mouse button no
+    longer to work for extending the selection. (Halevy)
+9   When running an external program, it can't always be killed with CTRL-C.
+    e.g. on Solaris 5.5, when using "K" (Keech).  Other 'guipty' problems on
+    Solaris 2.6. (Marley)
+9   On Solaris: Using a "-geometry" argument, bigger than the window where Vim
+    is started from, causes empty lines below the cmdline. (raf)
+8   X11 GUI: When menu is disabled by excluding 'm' from 'guioptions', ALT key
+    should not be used to trigger a menu (like the Win32 version).
+8   When setting 'langmenu', it should be effective immediately.  Store both
+    the English and the translated text in the menu structure.  Re-generate
+    the translation when 'langmenu' has changed.
+8   Basic flaw in the GUI code: NextScreen is updated before calling
+    gui_write(), but the GUI code relies on NextScreen to represent the state
+    of where it is processing the output.
+    Need better separation of Vim core and GUI code.
+8   When fontset support is enabled, setting 'guifont' to a single font
+    doesn't work.
+8   Menu priority for sub-menus for: Amiga, BeOS.
+8   Add menu separators for Amiga, RISCOS.
+8   Add a few more command names.  Patch from Jiri Brezina (28 feb 2002).
+8   Add way to specify the file filter for the browse dialog.  At least for
+    browse().
+8   Add dialog for search/replace to other GUIs?  Tk has something for this,
+    use that code?  Or use console dialog.
+8   When selecting a font with the font dialog and the font is invalid, the
+    error message disappears too quick.
+8   gui_check_colors() is not called at the right moment.  Do it much later,
+    to avoid problems.
+8   gui_update_cursor() is called for a cursor shape change, even when there
+    are mappings to be processed.  Only do something when going to wait for
+    input.  Or maybe every 100 ms?
+8   X11: When the window size is reduced to fit on screen, there are blank
+    lines below the text and bottom scrollbar.  "gvim -geometry 80x78+0+0".
+    When the "+0+0" is omitted it works.
+8   When starting an external command, and 'guipty' set, BS and DEL are mixed
+    up.  Set erase character somehow?
+8   A dead circumflex followed by a space should give the '^' character
+    (Rommel).  Look how xterm does this.
+    Also: Bednar has some code for dead key handling.
+    Also: Nedit 5.0.2 with USE_XMIM does it right. (Gaya)
+8   The compose key doesn't work properly (Cepas).  Both for Win32 and X11.
+7   The cursor in an inactive window should be hollow.  Currently it's not
+    visible.
+7   GUI on Solaris 2.5.1, using /usr/dt/..: When gvim starts, cursor is
+    hollow, after window lowered/raised it's OK. (Godfrey)
+7   When starting GUI with ":gui", and window is made smaller because it
+    doesn't fit on the screen, there is an extra redraw.
+8   When setting font with .Xdefaults, there is an extra empty line at the
+    bottom, which disappears when using ":set guifont=<Tab>". (Chadzelek)
+8   When font shape changes, but not the size, doing ":set font=" does not
+    redraw the screen with the new font.  Also for Win32.
+    When the size changes, on Solaris 2.5 there isn't a redraw for the
+    remaining part of the window (Phillipps).
+-   Flashes really badly in certain cases when running remotely from a Sun.
+4   Re-write the code so that the highlighting isn't changed multiple times
+    when doing a ":hi clear".  The color changes happen three or more times
+    currently.  This is very obvious on a 66Mhz 486.
+
+
+MSDOS/DJGPP:
+9   Pressing CTRL-C often crashes the console Vim runs in. (Ken Liao)
+    When 'bioskey' isn't set it doesn't happen.  Could be a problem with the
+    BIOS emulation of the console.  Version 5.6 already had this problem.
+8   DJGPP: "cd c:" can take us to a directory that no longer exists.
+    change_drive() doesn't check this.  How to check for this error?
+9   The 16 bit version runs out of memory very quickly.  Should find unused
+    code and reduce static data.
+9   Crash when running on Windows 98 in a console window and pressing CTRL-C.
+    Happens now and then.  When debugging Vim in gdb this also happens.  Since
+    the console crashes, might be a bug in the DOS console.  Resetting
+    'bioskey' avoids it, but then CTRL-C doesn't work.
+9   DOS: Make CTRL-Fx and ALT-Fx work.
+    CTRL-F1 = CE-5E, CTRL-F2 = CE-5F, .., CTRL-F10 = CE-67
+    ALT-F1 = CE-68, ALT-F2 = CE-69, .., ALT-F10 = CE-71
+    Shifted cursor keys produce same codes as unshifted keys.  Use bioskey(2)
+    to get modifier mask for <S-C-M-Fx>.
+    Use K_SPECIAL/KS_MODIFIER codes to insert modifier mask in input stream?
+    Make this work like in Win32 console.
+    Mapping things like <M-A> doesn't work, because it generates an extended
+    key code.  Use a translation table?
+9   Can't read an opened swap file when the "share" command has not been used.
+    At least ignore the swap files that Vim has opened itself.
+8   Use DJGPP 2.03.
+8   The Dos32 version (DJGPP) can't use long file names on Windows NT.
+    Check if new package can be used (v2misc/ntlfn08[bs].zip).
+8   setlocale() is bogus.
+8   Vim busy waits for new characters or mouse clicks.	Should put in some
+    sort of sleep, to avoid eating 50% of the CPU time.  Test on an unpatched
+    Windows 95 system!
+8   DJGPP: when shell is bash, make fails. (Donahoe)
+7   Hitting CTRL-P twice quickly (e.g. in keyword completion) on a 8088
+    machine, starts printer echo! (John Mullin).
+7   MSDOS 16 bit version can't work with COMSPEC that has an argument, e.g.:
+    COMSPEC=C:\WINDOWS\COMMAND.COM /E:4096    (Bradley)
+    Caused by BCC system() function (Borland "make" has the same problem).
+8   Mouse: handle left&right button pressed as middle button pressed.  Add
+    modifier keys shift, ctrl and alt.
+7   When too many files are open (depends on FILES), strange things happen.
+    The Dos16 version runs out of memory, in the Dos32 version "!ls" causes a
+    crash.  Another symptom: .swp files are not deleted, existing files are
+    "[New file]".
+7   DJGPP version doesn't work with graphics display mode.  Switch to a mode
+    that is supported?
+8   DJGPP: ":mode" doesn't work for many modes.  Disable them.
+8   DJGPP: When starting in Ex mode, shouldn't clear the screen. (Walter
+    Briscoe)
+
+
+MSDOS, OS/2 and Win32:
+8   OS/2: Add backtick expansion.  Undefine NO_EXPANDPATH and use
+    gen_expand_wildcards().
+8   OS/2: Add clipboard support?  See example clipbrd.exe from Alexander
+    Wagner.
+8   OS/2: Add Extended Attributes support and define HAVE_ACL.
+8   OS/2: When editing a file name "foo.txt" that is actually called FOO.txt,
+    writing uses "foo.txt".  Should obtain the real file name.
+8   Should $USERPROFILE be used instead of $HOMEDRIVE/$HOMEPATH?
+8   Win32 console: <M-Up> and <M-Down> don't work. (Geddes)  We don't have
+    special keys for these.  Should use modifier + key.
+8   Win32 console: caps-lock makes non-alpha keys work like with shift.
+    Should work like in the GUI version.
+8   Environment variables in DOS are not case sensitive.  Make a define for
+    STRCMP_ENV(), and use it when comparing environment var names.
+8   Setting 'shellslash' has no immediate effect.  Change all file names when
+    it is set/reset?  Or only use it when actually executing a shell command?
+8   When editing a file on a Samba server, case might matter.  ":e file"
+    followed by ":e FILE" will edit "file" again, even though "FILE" might be
+    another one.  Set last used name in buflist_new()?  Fix do_ecmd(), etc.
+8   ":mksession" generates a "cd" command where "aa\#bb" means directory "#bb"
+    in "aa", but it's used as "aa#bb". (Ronald Hoellwarth)
+8   When a buffer is editing a file like "ftp://mach/file", which is not going
+    to be used like a normal file name, don't change the slashes to
+    backslashes. (Ronald Hoellwarth)
+
+
+Windows 95:
+8   Editing a file by it's short file name and writing it, makes the long file
+    name disappear.  Setting 'backupcopy' helps.
+    Use FindFirstFile()->cAlternateFileName in fname_case() (George Reilly).
+8   Doing wildcard expansion, will match the short filename, but result in the
+    long filename (both DJGPP and Win32).
+
+
+Win32 console:
+9   When editing a file by its short file name, it should be expanded into its
+    long file name, to avoid problems like these: (Mccollister)
+     1) Create a file called ".bashrc" using some other editor.
+     2) Drag that file onto a shortcut or the actual executable.
+     3) Note that the file name is something like BASHRC~1
+     4) Go to File->Save As menu item and type ".bashrc" as the file name.
+     5) Press "Yes" to indicate that I want to overwrite the file.
+     6) Note that the message "File exists (add ! to override)" is displayed
+	and the file is not saved.
+    Use FindFirstFile() to expand a file name and directory in the path to its
+    long name.
+8   Also implement 'conskey' option for the Win32 console version?  Look at
+    how Xvi does console I/O under Windows NT.
+7   Re-install the use of $TERM and support the use of different terminals,
+    besides the console.
+8   Use of <altgr> modifier doesn't work?  5.3 was OK. (Garcia-Suarez/Guckes)
+9   Mapping <C-S-Tab> doesn't work correctly.  How to see the difference with
+    <C-S-i>?
+9   tmpnam() uses file in root of file system: "\asdf".  That doesn't work on
+    a Netware network drive.  Use same function as for Win32 GUI?
+8   In os_win32.h, HAVE_STRICMP and HAVE_STRNICMP are defined only if __GNUC__
+    is not defined.  Shouldn't that be the other way around?
+8   ":winpos" doesn't work.  Patch from Vipin Aravind.
+7   Use SetConsoleCP() and SetConsoleOutputCP() to implement 'termencoding'?
+    Avoids that input and output work differently.  Need to be restored when
+    exiting.
+
+
+Amiga:
+8   In mch_inchar() should use convert_input_safe() to handle incomplete byte
+    sequences.
+9   In mch_expandpath() a "*" is to be expanded, but "\*" isn't.  Remove
+    backslashes in result.
+8   Executing a shell, only one option for 'shell' is separated.  Should do
+    all options, using white space separation.
+
+
+Macintosh:
+9   Mac: The motion type is not stored on the clipboard.  Using ":set
+    clipboard=unnamed" makes "yyp" work characterwise. (Michael DeMoney)
+7   Loading the Perl library only works on OS/X 10.2 or 10.3, never on both.
+    Load the Perl library dynamically see Python sources file dynload_mac
+    (Jack)
+    dynamic linking: http://developer.apple.com/technotes/tn2002/tn2064.html
+8   Inputting Unicode characters does not work in the terminal.  They appear
+    to arrive as upper and lower bytes. (David Brown, 2004 April 17)
+8   Typing Unicode characters doesn't work at all in the GUI.
+8   Patch to add 'transparency' option.  Disadvantage: it's slow. (Eckehard
+    Berns, 2004 May 9) http://ecki.to/vim-icns/TransBack.diff
+8   Patches from "Rain Dog" Cucka:
+    - guifont selector (2002 Dec 15)
+    - scrollbar (2002 Dec 8)
+    - Quartz fonts (2002 Dec 8)
+9   Problems in Carbon version for OS X: (Benji Fisher)
+    - keyboard shortcuts in the menus get lost.
+8   The Vim/About menu doesn't work.
+8   ":gui" doesn't fork.  Enabling the code in gui.c to fork causes a SEGV.
+8   Define vim_mkdir() for Macintosh.
+8   Define mch_writable() for Macintosh.
+9   When DiskLock is running, using a swap file causes a crash.  Appears to be
+    a problem with writing a file that starts with a dot. (Giacalone)
+9   On G3 Mac, OS version 8, control strip causes characters messed up when
+    scrolling (CTRL-L cleans it up). (Benji Fisher)
+9   On G3 Mac, OS version 8, variable-speed scrolling doesn't work, after two
+    seconds of scrolling the screen freezes. (Benji Fisher)
+9   In mac_expandpath() check that handling of backslashes is done properly.
+8   Standard Mac shortcuts are missing.  (Amerige)
+8   Handling of non-fixed width fonts is wrong. (Amerige)
+
+
+"Small" problems:
+8   When an ":edit" is inside a try command and the ATTENTION prompt is used,
+    the :catch commands are always executed, also when the file is edited
+    normally.  Should reset did_emsg and undo side effects.  Also make sure
+    the ATTENTION message shows up.
+9   When using ":e ++enc=foo file" and the file is already loaded with
+    'fileencoding' set to "bar", then do_ecmd() uses that buffer, even though
+    the fileencoding differs.  Reload the buffer in this situation?  Need to
+    check for the buffer to be unmodified.
+8   ":g//" gives "Pattern not found error" with E486.  Should not use the
+    error number, it's not a regular error message.
+7   Vimtutor leaves escape sequence in terminal. This is the xterm response to
+    requesting the version number.  (Yasuhiro Matsumoto)
+8   When redirecting and using ":silent" the current column for displaying and
+    redirection can be different.  Use a separate variable to hold the column
+    for redirection.
+7   There is no way to change directory and go back without changing the local
+    and/or global directory.  Add a way to find out if the current window uses
+    a local directory.  Add cdcmd() that returns ":cd" or ":lcd"?
+7   After running "make test" the window title is sometimes not restored.
+    Mostly sticks at "test3.in", but not always.  Appears to happen more often
+    when compiled with Python (threading).
+7   The messages for "vim --help" and "vim --version" don't use
+    'termencoding'.
+7   ATTENTION dialog choices are more logical when "Delete it' appears before
+    "Quit".  Patch by Robert Webb, 2004 May 3.
+8   When 'scrollbind' is set, a window won't scroll horizontally if the cursor
+    line is too short.  Add a word in 'scrollopt' to allow moving the cursor
+    to longer line that is visible.  A similar thing is done for the GUI when
+    using the horizontal scrollbar.
+7   VisVim can only open one file.  Hard to solve: each opened file is passed
+    with a separate invocation, would need to use timestamps to know the
+    invocations belong together.
+8   When giving a ":bwipeout" command a file-changed dialog may popup for this
+    buffer, which is pointless.  (Mike Williams)
+8   On MS-Windows ":make" doesn't show output while it is working.  Use the
+    tee.exe from  http://unxutils.sourceforge.net/ ?  About 16 Kbyte in the
+    UnxUtils.zip archive.
+    Alternate one: http://www.pramodx.20m.com/tee_for_win32.htm, but Walter
+    Briscoe says it's not as good.
+8   'fillchars' doesn't work for multi-byte characters.
+9   Editing a XML file with a long line is extremely slow.  Example file from
+    Randy Parker (Dec 13).  Editing the dictionaries for engspchk plugin with
+    syntax highlighting is also very slow.
+    Limit the searching for items to a few hundred characters?
+8   Command line completion: buffers "foo.txt" and "../b/foo.txt", completing
+    ":buf foo<Tab>" doesn't find the second one. (George V. Reilly)
+7   Output for ":scriptnames" and ":breaklist" should shorten the file names:
+    use "~/" when possible.
+8   After using diff mode, ":set nodiff" doesn't restore the old foldmethod.
+    (Thomas S. Urban)
+7   mb_off2cells() doesn't work correctly on the tail byte of a double-byte
+    character. (Yasuhiro Matsumoto)  It should return 1 when used on a tail
+    byte, like for utf-8.  Store second byte of double-byte in ScreenLines2[]
+    (like for DBCS_JPNU) and put a zero in the second byte (like for UTF-8).
+8   'backupdir' and 'directory' should use $TMPDIR, $TMP and/or $TEMP when
+    defined.
+7   Inside a function with "perl <<EOF" a line with "$i++" is recognized as an
+    ":insert" command, causing the following "endfunction" not to be found.
+    Add skipping this perl construction inside function definitions.
+7   When 'ttimeoutlen' is 10 and 'timeoutlen' is 1000, there is a keycode
+    "<Esc>a" and a mapping <Esc>x", when typing "<Esc>a" with half a second
+    delay should not be interpreted as a keycode. (Hans Ginzel)
+7   ":botright 1 new" twice causes all window heights to be changed.  Make the
+    bottom window only bigger as much as needed.
+7   "[p" doesn't work in Visual mode. (David Brown)
+7   The Cygwin and MingW makefiles define "PC", but it's not used anywhere.
+    Remove? (Dan Sharp)
+9   The argument <f-args> of a user command doesn't handle backslashes
+    properly. "Cmd \ e" is one argument, "Cmd \\ e" still is one argument.
+    "Cmd \  e" is two arguments, first one ending in space. (Kontra Gergely)
+9   User commands use the context of the script they were defined in.  This
+    causes a "s:var" argument to unexpectedly use a variable in the defining
+    script, not the calling script.  Add an argument to ":command":
+    "-keepcontext".  Do replace <SID>, so that a function in the defining
+    script can be called.
+8   The Japanese message translations for MS-Windows are called ja.sjis.po,
+    but they use encoding cp932.  Rename the file and check that it still
+    works.
+9   When a syntax region does not use "keepend" and a contained item does use
+    "extend", this makes the outer region stop at the end of the contained
+    region. (Lutz Eymers)  Another example Nov 14 2002.
+8   A very long message in confirm() can't be quit.  Make this possible with
+    CTRL-C.
+7   clip_x11_own_selection() uses CurrentTime, that is not allowed.  VNC X
+    server has a problem with this.  (Mark Waggoner) Remembering the timestamp
+    of events isn't always possible.  We don't get them in an xterm.  GTK
+    doesn't obtain the selection again when the timestamp differs, thus it
+    won't work for GTK anyway.
+8   When the clipboard isn't supported: ":yank*" gives a confusing error
+    message.  Specifically mention that the register name is invalid.
+8   "gf" always excludes trailing punctuation characters. file_name_in_line()
+    is currently fixed to use ".,:;!".  Add an option to make this
+    configurable?
+8   'hkmap' should probably be global-local.
+9   When "$" is in 'cpoptions' and folding is active, a "C" command changes
+    the folds and resets w_lines_valid.  The display updating doesn't work
+    then. (Pritesh Mistry)
+8   ":s!from!to!" works, but ":smagic!from!to!" doesn't.  It sees the "!" as a
+    flag to to the command.  Same for ":snomagic". (Johan Spetz)
+8   Using ":s" in a function changes the previous replacement string.  Save
+    "old_sub" in save_search_patterns()?
+8   When appending to a file and 'patchmode' isn't empty, a backup file is
+    always written, even when the original file already exists.
+7   When using "daw" on the last word in a file and this is a single letter,
+    nothing is deleted.  Should delete the letter and preceding white space.
+9   When getting focus while writing a large file, could warn for this file
+    being changed outside of Vim.  Avoid checking this while the file is being
+    written.
+9   The "Error detected while processing modelines" message should have an
+    error number.
+7   The message in bt_dontwrite_msg() could be clearer.
+8   Unix: When libcall() fails there is no clear error message.  Johannes
+    Zellner has a patch for this.
+8   The script ID that is stored with an option and displayed with ":verbose
+    set" isn't reset when the option is set internally.  For example when
+    'foldlevel' is set from 'foldlevelstart'.
+8   In the fileformat dialog, "Cancel" isn't translated.  Add a global
+    variable for this. (Eduardo Fernandez)
+9   When editing a file with 'readonly' set, there is no check for an existing
+    swap file.  Then using ":write" (without making any changes) doesn't give
+    a warning either.  Should check for an existing swap file without creating
+    one.
+7   On MS-DOS or MS-Windows, when editing the same file over a network, the
+    drive letter is different, thus an existing swap file doesn't generate a
+    warning.  Use some flag to indicate the swap file is in the same directory
+    as the original file?  Could make b0_fname[] start with a special
+    character like ">".
+7   When 'showbreak' is set, the amount of space a Tab occupies changes.
+    Should work like 'showbreak' is inserted without changing the Tabs.
+7   When there is a "help.txt" window in a session file, restoring that
+    session will not get the "LOCAL ADDITIONS" back.
+7   When 'mousefocus' is set and switching to another window with a typed
+    command, the mouse pointer may be moved to a part of the window that's
+    covered by another window and we lose focus.  Only move in the y
+    direction, not horizontally?
+8   When using CTRL-D after ":help", restrict the number of matches to a
+    thousand, otherwise using CTRL-D without an argument takes too long.
+8   ":hardcopy":
+    - Patch to append CTRL-D to PostScript output (Mike Williams, 2004 Jun 11)
+    - Using the cterm_color[] table is wrong when t_colors is > 16.
+    - Need to handle unprintable characters.
+    - Win32: On a B&W printer syntax highlighting isn't visible.  Perform
+      dithering to make grey text?
+    - support printing multi-byte characters.  Patch from Motonobu Ichimura.
+      New (better) patch from Mike Williams (2004 Jan 20)
+    - Add a flag in 'printoptions' to add an empty page to make the total
+      number even.  "addempty"? (Mike Williams)
+    - Should interpreted CTRL-L as a page break.
+    - Grey line numbers are not always readable.  Add field in 'printoptions'.
+      Default to black when no syntax highlighting.
+    - Be able to print a window in diff mode.
+    - Be able to specify a colorscheme to use for printing.  And a separate
+      one for B&W printing (if that can be detected).
+8   In Visual block mode with 'lbr' set, a change command doesn't insert the
+    text in following lines where the linebreak changes.
+9   dosinst.c: The DJGPP version can't uninstall the Uninstall registry key on
+    Windows NT.  How to install a .inf file on Windows NT and how to detect
+    that Windows NT is being used?
+8   When opening the same file on Unix and on MS-Windows, there is no
+    ATTENTION message, because the path in the swap file is different.  Using
+    a relative path name will cause no ATTENTION for Vim 5.8.
+    Somehow add a flag that the swap file is in the same dir as the file?
+8   When 'virtualedit' is "block,insert" and encoding is "utf-8", selecting a
+    block of one double-wide character, then "d" deletes only half of it.
+8   When 'virtualedit' is set, should "I" in blockwise visual mode also insert
+    in lines that don't extend into the block?
+8   With 'virtualedit' set, in Insert mode just after the end of line, CTRL-O
+    yh does not yank the last character of the line. (Pavel Papushev)
+    Doing "hl" first appears to make it work.
+8   With 'virtualedit' set it's possible to move into the blank area from
+    'linebreak'.
+8   With 'virtualedit' set and 'selection' "exclusive", a Visual selection
+    that ends in or after a tab, "d" doesn't delete (part of) the tab.
+    (Helmut Stiegler)
+8   With 'virtualedit' set, a blockwise Visual selection that starts and ends
+    in a tab, "<" shifts too much. (Helmut Stiegler)
+9   When jumping to a tag, the search pattern is put in the history.  When
+    'magic' is on, the pattern may not work.  Translate the pattern depending
+    on p_magic when putting it in the history?  Alternative: Store value of
+    'magic' in history.  (Margo)
+9   optwin.vim: Restoring a mapping for <Space> or <CR> is not correct for
+    ":noremap".  Add "mapcmd({string}, {mode})?  Use code from ":mkexrc".
+9   incsearch is incorrect for "/that/<Return>/this/;//" (last search pattern
+    isn't updated).
+9   term_console is used before it is set (msdos, Amiga).
+9   Get out-of-memory for ":g/^/,$s//@/" on 1000 lines, this is not handled
+    correctly.  Get many error messages while redrawing the screen, which
+    cause another redraw, etc.
+8   [<C-I> doesn't work when '*' is in 'iskeyword'.  find_pattern_in_path()
+    must escape special characters in the pattern.
+8   Vim can overwrite a read-only file with ":w!".  ":w" can't overwrite an
+    existing file, "w!" can, but perhaps not a read-only file?  Then use
+    ":w!!" for that.
+    Or ask for permission to overwrite it (if file can be made writable) and
+    restore file to readonly afterwards.
+7   When compiled with "xterm_clipboard", startup can be slower and might get
+    error message for invalid $DISPLAY.  Try connecting to the X server in the
+    background (forked), so that Vim starts up quicker?  Connect as soon as
+    the clipboard is to be used (Visual select mode starts, paste from
+    clipboard)
+7   X11: Some people prefer to use CLIPBOARD instead of PRIMARY for the normal
+    selection.  Add an "xclipboard" argument to the 'clipboard' option? (Mark
+    Waggoner)
+8   For xterm need to open a connection to the X server to get the window
+    title, which can be slow.  Can also get the title with "<Esc>[21t", no
+    need to use X11 calls.  This returns "<Esc>]l{title}<Esc>\".
+8   When the builtin xterm termcap contains codes that are not wanted, need a
+    way to avoid using the builtin termcap.
+8   Xterm sends ^[[H for <Home> and ^[[F for <End> in some mode.  Also
+    recognize these keys?  Mostly useful for xterm simulators, like gnometerm.
+    See http://dickey.his.com/xterm/xterm.faq.html#xterm_pc_style.
+8   '[ and '] should be set to start/end of line when using a linewise operator
+    (e.g., ":w").
+8   CTRL-A can't handle big "long" numbers, they become negative.  Check for
+    "-" character, if not present, use unsigned long.
+8   Make it possible to disable the special meaning of "#" in the first column
+    for ">>".
+8   Add suspending with CTRL-Z at the "more" prompt, and when executing a long
+    script in do_cmdline().
+8   When using 'hidden', many swap files will be open.  When Vim runs into the
+    maximum number of open files, error messages will appear.  Detect that
+    this problem is present, and close any hidden files that don't have
+    changes.
+8   With 'viminfo' set such that the ".viminfo" file is written on a FAT
+    filesystem, an illegal file name may be created: ".vim".
+8   For each buffer that is opened, the viminfo file is opened and read to
+    check for file marks.  This can be slow.
+7   In xterm, recognize both vt100 and vt220 cursor keys.  Change
+    add_termcode() to not remove an existing entry for a name, when it's
+    needed.
+    Need a generic solution to recognize different codes for the same key.
+8   Core dump within signal function: gdb doesn't show stack backtrace!  Option
+    to skip catch_signals()?
+9   Repeating a "cw" with "." doesn't work if the text was pasted from the
+    clipboard. (Thomas Jones)  It's because the menu/toolbar item exits Insert
+    mode and uses "gP".  How to fix this without breaking inserting a block of
+    text?
+8   In Replace mode pasting from the clipboard (using menu or toolbar) inserts
+    all the text.  Add ":rmenu"?
+8   Pasting with the mouse in Replace mode inserts the text, instead of
+    overwriting, when it is more than one line.  Same for using <C-R>.
+9   CTRL-E and CTRL-Y don't work in small window when 'so' is 4 and lines are
+    wrapping (Acevedo/in.226).  E.g., when using CTRL-E, window height 7,
+    window might actually scroll down when last line of buffer is displayed.
+    --> Remember if the previous command was "cursor follows screen" or
+    "screen follow cursor" and use this in cursupdate().
+7   tilde_replace() can only handle "~/", should also do "~user/".
+    Get the list of home directories (from /etc/passwd?  Use getpwent()) and
+    use some clever algorithm to match a path with that.  Find common strings
+    in the list?
+8   When dragging status line with mouse, sometimes a jump when first clicking
+    on the status line (caused by 'winheight').  Select window on button up,
+    instead of on button down.
+8   Dragging the status line doesn't scroll but redraw.
+9   Evaluating 'statusline' in build_stl_str_hl() does not properly check for
+    reaching the end of the available buffer.
+8   When performing incremental search, should abort searching as soon as a
+    character is typed.
+8   When the value of $MAKE contains a path, configure can't handle this.
+    It's an autoconf bug.  Remove the path from $MAKE to work around it.
+8   How to set VIMRC_FILE to \"something\" for configure?  Why does this not
+    work: CFLAGS='-DVIMRC_FILE=\"/mydir/myfile\"' ./configure
+8   The temporary file is sometimes not writable.  Check for this, and use an
+    alternate name when it isn't.  Or add the 'temptemplate' option: template
+    for the temp file name ":set temptemplate=/usr/tmp/?????.tmp".
+    Also: Win32 version uses Windows temp directory, which might not work for
+    cygwin bash.
+7   Get error "*, \+ or \( operand could be empty" for pattern "\(.\)\1\{3}".
+    Remember flags for backreferences.
+7   When switching to Daylight Saving Time, Vim complains that a file has been
+    changed since last read.  Can we use a function that uses GMT?
+7   When completing an environment variable after a '$', check for file names
+    that contain a '$' after all have been found.
+8   When "cm" termcap entry is missing, starting gvim shouldn't complain about
+    it. (Lohner)  Try out with "vt100" entry, cm replaced with cX.
+7   When an include file starts with "../", the check for already visiting
+    this file doesn't work.  Need to simplify the file name.
+8   On Sinix SYS_NMLN isn't defined.  Include patch from Cristiano De Michele.
+7   The names and comments for the arguments of do_browse() are confusing.
+    "dflt" isn't the default file name when "initdir" is not NULL and
+    "initdir" is the default path to be used.
+7   When 'scrolloff' is exactly half the window height, "j" causes a scroll of
+    two lines at a time.  "k" doesn't do this. (Cory T. Echols)
+8   When write_viminfo() is used while there are many orphaned viminfo
+    tempfiles writing the viminfo file fails.  Give a clear error message so
+    that the user knows he has to delete the files.
+7   It's possible to redefine a script-local function with ":func
+    <SNR>123_Test()". (Krishna)  Disallow this.
+7   After ":%d" an undo reports the number of lines added as if there still
+    was one line.
+
+
+I can't reproduce these (if you can, let me know how!):
+9   NT 4.0 on NTFS file system: Editing ".bashrc" (drag and drop), file
+    disappears.  Editing ".xyz" is OK.  Also, drag&drop only works for three
+    files. (McCollister)
+8   Motif: Tear-off menu item crashes Vim on some machines.  (Netherton)  It
+    works fine for me, maybe it's a Motif problem.
+
+
+Problems that will (probably) not be solved:
+-   In a terminal with 'mouse' set such that the mouse is active when entering
+    a command line, after executing a shell command that scrolls up the
+    display and then pressing ":": Selecting text with the mouse works like
+    the display wasn't scrolled.  Vim doesn't know how much the external
+    command scrolled up the display.  Use Shift to select text.
+-   X windows: When $DISPLAY points to a X server where there is no access
+    permission, trying to connect to the X server causes an error message.
+    XtOpenDisplay() prints this directly, there is no way to avoid it.
+-   X windows: Setting 'guifontset' to an illegal value sometimes crashes Vim.
+    This is caused by a fault in a X library function, can't be solved in Vim.
+-   Motif: When adding a menu item "Find this &Symbol", the "s" in "this" will
+    be underlined, instead of in "Symbol".  Motif doesn't let us specify which
+    character gets the highlighting.
+-   Moving the cursor removes color in color-xterm.  This is a color-xterm
+    problem!  color-xterm ver. 6.1 beta 3 and later work properly.
+-   In zsh, "gvim&" changes the terminal settings.  This is a zsh problem.
+    (Jennings)
+-   Problem with HPterm under X: old contents of window is lost (Cosentino).
+-   Amiga: When using quickfix with the Manx compiler we only get the first 25
+    errors.  How do we get the rest?
+-   Amiga: The ":cq" command does not always abort the Manx compiler.  Why?
+-   Linux: A file with protection r--rw-rw- is seen readonly for others. The
+    access() function in GNU libc is probably wrong.
+-   MSDOS: When using smartdrive with write-back buffering, writing to a
+    readonly floppy will cause problems.  How to test for a writable floppy
+    first?
+-   MSDOS: Both 16 and 32 bit versions: File name expansion doesn't work for
+    names that start with a dot.  These used to be illegal file names.
+-   When doing a CTRL-Z and typing a command for the shell, while Vim is busy
+    (e.g. writing a file), the command for the shell is sometimes eaten by Vim,
+    because the terminal mode is changed from RAW to CBREAK.
+-   An old version of GNU tgoto can't handle the terminfo code for "AF".  The
+    "%p1" is interpreted as "%p" and "1", causing color not to be working.
+    Fix: Change the "%p1" in the "AF" and "AB" terminfo entries to "%p".
+    (Benzinger).
+-   When running an external command from the GUI, typeahead is going to that
+    program, not to Vim.  It looks like the shell eats the characters, Vim
+    can't get back what the external command didn't use.
+-   Win32 GUI: Error code from external command not returned in shell_error.
+    It appears that cmd.exe and command.com don't return an error code.
+-   Win32 GUI: The Toolbar is a bit too high when the flat style is being
+    used.  We don't have control over the height of the Toolbar.
+-   Win32: All files created on the day of switching from winter to summer
+    time cause "changed since editing started" messages.  It goes away when
+    the file is written again the next day, or the timezone is adjusted.
+    DJGPP version is OK. (Zaimi)  Looks like a problem with the Win32 library.
+    Rebooting doesn't help.  Time stamps look OK in directory. (Penn)
+    Is this on FAT (stores wall clock time) or NTFS (stores UTS)?
+-   Win32, MS-Windows XP: $HOME uses the wrong drive when the user profiles
+    are not on the boot disk.  This is caused by a wrong value of $HOMEDRIVE.
+    This is a bug in XP, see MSKB article 818134.
+-   SunOS 5.5.1 with Motif: The file open dialog does not have a horizontal
+    scroll bar for the "files" selection.  This is a problem in the Motif
+    libraries, get a patch from Sun.
+-   Solaris 2.6 with GTK and Perl: gvim crashes when started.  Problem with X
+    input method called from GDK code.  Without Perl it doesn't crash.
+-   VMS: Vimdiff doesn't work with the VMS diff, because the output looks
+    different.  This makes test 47 fail.  Install a Unix-compatible diff.
+-   VMS v7.1 and older: Tests 21 and 32 fail.  From VMS v7.1-2 and newer Vim
+    does not have this behavior. (Zoltan Arpadffy)
+-   Win32 GUI: mouse wheel always scrolls rightmost window.  The events arrive
+    in Vim as if the rightmost scrollbar was used.
+-   GTK with Gnome: Produces an error message when starting up:
+	Gdk-WARNING **: locale not supported by C library
+    This is caused by the gnome library gnome_init() setting $LC_CTYPE to
+    "en_US".  Not all systems support this locale name, thus causing the
+    error.  Hopefully a newer version of GTK/Gnome fixes this problem.
+-   GTK 2: With this mapping the hit-enter prompt is _sometimes_ below the
+    screen, at other times there is a grey area below the command line:
+	:nmap <F11> :if &guioptions=~'m' \| set guioptions-=m \| else \| set guioptions+=m \| endif<cr>
+-   GTK: When pasting a selection from Vim to xclipboard gvim crashes with a
+    ABRT signal.  Probably an error in the file gdkselection.c, the assert
+    always fails when XmbTextListToTextProperty() fails. (Tom Allard)
+-   When using an xterm that supports the termresponse feature, and the 't_Co'
+    termcap option was wrong when Vim started, it will be corrected when the
+    termresponse is received.  Since the number of colors changes, the
+    highlighting needs to be initialized again.  This may cause colors defined
+    in the vimrc file to be lost.
+-   On Windows NT 4.0 the number of files passed to Vim with drag&drop and
+    "Edit with Vim" is limited.  The maximum command line length is 255 chars.
+
+---------------------  extensions and improvements ----------------------
+						    *extensions-improvements*
+
+Documentation:
+8   Extend usr_27.txt a bit. (Adam Seyfarth)
+9   Merge in ideas from ~/vim/patches/tutor.txt (Gabriel Zachmann)
+7   Add a section on debugging scripts in the user manual.
+9   Make the Reference Manual more precise.  For each command mention:
+    - change to cursor position and curswant
+    - if it can be undone (u/CTRL-R) and redone (.)
+    - how it works for folded lines
+    - how it works with multi-byte characters
+9   In change.txt, remark about Javadoc isn't right.  Right alignment would
+    work too.
+8   Spread the windows commands over the other files.  For example, ":stag"
+    should be with ":tag".  Cross-link with tags to avoid too much double
+    text.
+8   Add tags for all features, e.g. "gui_running".
+7   MS-Windows: When a wrong command is typed with an ALT key, give a hint to
+    look at the help for 'winaltkeys'.
+7   Add a help.vim plugin that maps <Tab> to jump to the next tag in || and
+    <C-Tab> (and <S-Tab>) to the previous tag.
+-   Check text editor compendium for vi and Vim remarks.
+
+
+Help:
+-   First try using the ":help" argument literally, before using it as a
+    pattern.  And then match it as part of a tag.
+-   When a help item has multiple matches make it possible to use ":tn" to go
+    to the other matches.
+-   Support a way to view (and edit) .info files.
+-   Default mapping for help files: <Tab> to position cursor on next |:tag|.
+-   Implement a "sticky" help window, some help text lines that are always
+    displayed in a window with fixed height. (Guckes)  Use "~/.vimhelp" file,
+    user can edit it to insert his favorite commands, new account can contain a
+    default contents.
+-   Make 'winminheight' a local option, so that the user can set a minimal
+    height for the help window (and other windows).
+-   ":help :s^I" should expand to ":help :substitute".
+-   Make the help key (<F1>) context sensitive?
+-   Learn mode: show short help while typing commands.
+
+
+User Friendlier:
+8   Windows install with install.exe: Use .exe instead of .bat files for
+    links, so that command line arguments are passed on unmodified? (Walter
+    Briscoe)
+8   Windows install: Be able to associate Vim with a selection of file types?
+8   Windows uninstall: Have uninstal.c delete the vimfiles directories that
+    dosinst.c creates.  List the contents of the directory (recursively) if
+    the user asks for it.  Requires an implementation of "rm -rf".
+8   Remember the name of the vimrc file that was used (~/.vimrc, $VIM/_vimrc,
+    $HOME/_vimrc, etc.) and add "edit vimrc" to the File menu.
+-   Add a way to save local settings and mappings into a new plugin file.
+    ":mkplugin <file>"?
+8   Add ":plugininstall" command.  Can be used to install a plugin file that
+    includes documentation.  Let the user select a directory from
+    'runtimepath'.
+	" Vim plugin
+	<main plugin code>
+	" >>> plugin help start <<<
+	<plugin docs>
+-   Add mappings local to a window: ":map <window> ..."?
+9   Add buffer-local menu.  Should offer a choice between removing the menu or
+    disabling it.  Be careful that tear-offs don't disappear (keep one empty
+    item?).
+    Alternative: use BufEnter and BufLeave autocommands.
+8   Add file locking.  Lock a file when starting to edit it with flock() or
+    fcntl().  This patch has advisory file locking while reading/writing the
+    file: ~/vim/patches/kahn_file_locking .
+8   make a vimtutor script for Amiga and other systems.
+7   Add the arguments for configure to the ":version" output?
+
+
+Diff mode:
+8   Add a command to stop diff mode: ":set nodiff fdc = 0 noscrollbind"
+8   Use diff mode to show the changes made in a buffer (compared to the file).
+    Use an unnamed buffer, like doing:
+	new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
+7   Add cursor-binding: when moving the cursor in one diff'ed buffer, also
+    move it in other diff'ed buffers, so that CTRL-W commands go to the same
+    location.
+
+
+Folding:
+    (commands still available: zg zG zI zJ zK zp zP zq zQ zV zw zW zy zY;
+    secondary: zB zS zT zZ)
+8   Add different highlighting for a fold line depending on the fold level.
+    (Noel Henson)
+8   When a closed fold is displayed open because of 'foldminlines', the
+    behavior of commands is still like the fold is closed.  How to make the
+    user aware of this?
+8   Add an option 'foldskip' with values like 'foldopen' that specifies which
+    commands skip over a closed fold.
+8   "H" and "L" count buffer lines instead of window lines. (Servatius Brandt)
+8   Add a way to add fold-plugins.  Johannes Zellner has one for VB.
+7   When using 2html.vim, also reproduce folds as you can see them.  When
+    someone doesn't want the folds he can disable them before converting.
+    First attempt by Carl Osterwisch, 2004 May 10.
+7   When using manual folding, the undo command should also restore folds.
+-   Allow completely hiding a closed fold.  Require showing a character in
+    'foldcolumn' to avoid the missing line goes unnoticed.
+-   When pressing the down arrow of a scrollbar, a closed fold doesn't scroll
+    until after a long time.  How to make scrolling with closed folds
+    smoother?
+-   When creating a session, also store folds for buffers in the buffer list,
+    using the wininfo in wi_folds.
+-   'foldmethod' "textobject": fold on sections and paragraph text objects.
+-   Add 'hidecomment' option: don't display comments in /* */ and after //.
+-   "zu": undo change in manual fold. "zU" redo change in manual fold.  How to
+    implement this?
+-   "zJ" command: add the line or fold below the fold in the fold under the
+    cursor.
+-   'foldmethod' "syntax": "fold=3": set fold level for a region.
+-   Can set 'foldtext' to empty string: don't display any line.  How to
+    implement this?
+-   Apply a new foldlevel to a range of lines. (Steve Litt)
+-   Have some way to restrict commands to not folded text.  Also commands like
+    searches.
+
+
+Multi-byte characters:
+9   When the tail byte of a double-byte character is illegal (e.g., a CR), the
+    display is messed up (Yasuhiro Matsumoto).  Should check for illegal
+    double-byte characters and display them differently (display each single
+    byte).
+8   Add an item in 'fileencodings' to check the first lines of a file for
+    the encoding.  See Python PEP: http://www.python.org/peps/pep-0263.html.
+    To avoid getting a wrong encoding only accept something Emacs-like:
+    "-*- coding: enc-na_me.foo -*-" and "-*- coding= enc-na_me.foo -*-"
+    Match with "-\*-\s*coding[:=]\s*\([::word::-_.]\+\)\s*-\*-" and use first
+    item.
+8   Add an item in 'fileencodings' to check the first line of an XML file for
+    the encoding. <?xml version="1.0" encoding="UTF-8"?>  Or "charset=UTF-8"?
+8   The quickfix file is read without conversion, thus in 'encoding'.  Add an
+    option to specify the encoding of the errorfile and convert it.  Also for
+    ":grep".
+8   When a file was converted from 'fileencoding' to 'encoding', a tag search
+    should also do this on the search pattern. (Andrzej M. Ostruszka)
+7   When converting a file fails, mention which byte could not be converted,
+    so that the user can fix the problem.
+8   Add configure option to be able to disable using the iconv library. (Udo
+    Schweigert)
+8   Add patch from Muraoka Taro (Mar 16) to support input method on Mac?
+9   'aleph' should be set to 1488 for Unicode. (Zvi Har'El)
+8   Should add test for using various commands with multi-byte characters.
+-   Include flipcase patch: ~/vim/patches/wall.flipcase2 ?  Make it work for
+    multi-byte characters.
+8   'infercase' doesn't work with multi-byte characters.
+8   toupper() function doesn't handle byte count changes.
+8   Support four composing characters, needed for Hebrew. (Ron Aaron)
+8   "ga" should show all composing characters, also if there are more than 2.
+7   When searching, should order of composing characters be ignored?
+8   Should implement 'delcombine' for command line editing.
+8   Detect overlong UTF-8 sequences and handle them like illegal bytes.
+8   ":s/x/\u\1/" doesn't work, making uppercase isn't done for multi-byte
+    characters.
+8   UTF-8: "r" in Visual mode doesn't take composing characters.
+8   UTF-8: When there is a precomposed character in the font, use it instead
+    of a character and a composing character.  See xterm for an example.
+7   When a character can't be displayed, display its digraph instead.
+    'display' option to specify this.
+7   Use ideas for nl_langinfo() from Markus Kuhn in enc_default():
+    (www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c)
+-   GTK and Win32: Allow selecting fonts for 'guifontset' with the
+    fontselector somehow.
+-   GTK and Win32: make it possible to set the font for the menu to make it
+    possible to have 'encoding' different from the current locale.
+-   dbcs_class() only works for Japanese and Korean.  Implement this for
+    other encodings.  The "euc-jp" and "euc-kr" choices might be wrong.
+-   Find some way to automatically select the right GUI font or fontset,
+    depending on the default value of 'encoding'.
+    Irrelevant in the GTK+ 2 GUI so long as UTF-8 is used.
+    For Windows, the charset_pairs[] table could be used.  But how do we know
+    if a font exists?
+-   Do keyboard conversion from 'termencoding' to 'encoding' with
+    convert_input() for Mac GUI, RiscOS GUI, BeOS GUI.
+-   Add mnemonics from RFC1345 longer than two characters.
+    Support CTRL-K _{mnemonic}_
+7   In "-- INSERT (lang) --" show the name of the keymap used instead of
+    "lang". (Ilya Dogolazky)
+-   Make 'langmap' accept multi-byte characters.
+-   Do we need the reverse of 'keymap', like 'langmap' but with files and
+    multi-byte characters?  E.g., when using a Russian keyboard.
+-   Add the possibility to enter mappings which are used whenever normal text
+    could be entered.  E.g., for "f" command.  But not in Normal mode.  Sort
+    of opposite of 'langmap'.  Use ":tmap" command?
+-   When breaking a line, take properties of multi-byte characters into
+    account.  The "linebreak" program from Bruno Haible can do it:
+    ftp://ftp.ilog.fr/pub/Users/haible/gnu/linebreak-0.1.tar.gz
+    But it's very complicated...
+
+
+Printing:
+-   Add "page width" to wrap long lines.
+-   Win32: use a font dialog for setting 'printfont'.  Can reuse the code for
+    the 'guifont' dialog, put the common code in a separate function.
+-   Win32: when 'printfont' is empty use 'guifont'.
+-   Unix: Use some dialog box to do the obvious settings (paper size, printer
+    name, portrait/landscape, etc).
+-   Win32: add options to print dialog.  Patch from Vipin Aravind.
+-   PostScript: only works for 7-bit ASCII and EBCDIC.  Should support
+    different 'encoding' values somehow.
+-   Allow specifying the paper size, instead of using a standard size.  Same
+    units as for the margins.
+-   Support right-to-left text?
+8   Make the foreground color darkening function preserve the hue of the
+    color.
+
+
+Syntax highlighting:
+-   Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5)
+    use the patch that keeps using HLF_8 if HLF_WS has not
+    been given values.
+    Add section in help files for these highlight groups?
+8   Make ":syn off" use 'runtimepath' instead of $VIMRUNTIME. (Gary Johnson)
+    Should do the same for ":syn on" and ":syn manual".
+8   Support "containedin" argument for ":syn include", so that the defined
+    cluster can be added to existing syntax items.
+8   C syntax: Don't highlight {} as errors inside () when used like this:
+    "({ something })", often used in GCC code.
+8   When editing a new file without a name and giving it a name (by writing
+    it) and 'filetype' is not set, detect the filetype.  Avoid doing it for
+    ":wq file".
+8   Make conversion to HTML faster (Write it in C or pre-compile the script).
+9   There is still a redraw bug somewhere.  Probably because a cached state is
+    used in a wrong way.  I can't reproduce it...
+7   Make syntax keyword table configurable.  Set number of bits used with
+    ":syn clear [hashbits]", so that we don't need to reallocate the table.
+    minimal 4 bits, maximal 16. (Campbell)
+7   Be able to change only the background highlighting.  Useful for Diff* and
+    Search highlighting.
+8   Allow the user to add items to the Syntax menu sorted, without having to
+    change this for each release.
+8   Add a "matchcontains" for regions: items contained in the start or end
+    pattern, but not in the body.
+8   Add a "keepend-contained" argument: Don't change the end of an item this
+    one is contained in.  Like "keepend" but specified on the contained item,
+    instead of the containing item.
+8   For keywords, allow to define the size of the hash table with ":syn
+    clear".  Change KHASH_ defines into variables stored in buffer struct.
+    Use something else than linear linked list from the hash table. (Campbell)
+8   cpp.vim: In C++ it's allowed to use {} inside ().
+8   Some syntax files set 'iskeyword'.  When switching to another filetype
+    this isn't reset.  Add a special keyword definition for the syntax rules?
+    When this is done, use vim.vim syntax highlighting for help file examples,
+    but without ":" in 'iskeyword' for syntax.
+8   Add specific syntax item to match with parens/braces that don't have a
+    "%" match.  :syntax nomatch cMatchError (,{,[,),},] [contained]
+8   Highlight the text between two matching parens (e.g., with a grey
+    background) when on one of the parens or in between them.
+    Or highlight the matching paren when the cursor is on one.
+8   Add a command to jump to the next character highlighted with "Error".
+8   When using a cterm, and no ctermfg or ctermbg are defined, use start/stop
+    sequences.	Add remark in docs that :if 'term' == "term-name" should be
+    used.
+8   Add @spell cluster to String and Comment groups for many languages.  Will
+    allow spell checking. (Fleiner)
+8   When listing syntax items, try to sort the keywords alphabetically.  And
+    re-insert the [] if possible.
+8   Make it possible to use color of text for Visual highlight group (like for
+    the Cursor).
+8   "fg" and "bg" don't work in an xterm.  Get default colors from xterm with
+    an ESC sequence.  Ideas in: ~/vim/patches/vikas.xtermcolors .
+8   Make it possible to only highlight a sub-expression of a match.  Like
+    using "\1" in a ":s" command.
+8   Support for deleting syntax items:
+    :syn keyword cTodo remove this
+    :syn match cTodo remove "pattern"
+    :syn region cString remove start="this" end="that"
+8   Add possibility to sync on something else, when the syncing in one way
+    doesn't find match.  For HTML: When no {script} is found, try looking for
+    a '<'.  (Fleiner)
+7   Replace the synchronizing method with a state machine specification?
+    Should be able to start at any line in the file, search forwards or
+    backwards, and use the result of matching a pattern.
+7   Use parsing like awk, so that e.g., a ( without a matching ) can be
+    detected.
+8   Make it possible to use "inverted" highlighting, invert the original
+    character.  For Visual mode. (xterm-selection already does this).
+8   Highlight non-printable characters with "SpecialChar", linked to
+    "Special".  Display them with the digraph characters, if possible.
+7   Add "DefaultFG" and "DefaultBG" for the colors of the menu. (Martin
+    Dalecki has a patch for Motif)
+8   Highlight the clipboard-selection with a highlight group.
+8   Be able to reset highlighting to its original (default) values.
+7   Be able to write current highlighting to a file as commands, similar to
+    ":mkvimrc".
+8   Improve c.vim:
+    - Add check for unterminated strings, with a variable to switch it on:
+      "c_strict_ansi".
+    - Detect unbalanced "#endif".  Requires looking back a long way...
+8   Add an option to restrict the updating of syntax highlighting to the
+    current line while in Insert mode.
+8   When guessing value of 'background', the syntax file has already been
+    loaded (from the .gvimrc).	After changing 'background', load it again?
+8   Add ":syn resync" command, to re-parse the whole file until the current
+    display position.
+8   Should support "me" offset for a region start pattern.  To be used to
+    allow searching for the end pattern inside the match of the end pattern.
+    Example: syn region pikeXX start="([^{]" end=")" should work on "()".
+8   When using a regexp for "contains=", should delay matching with it until
+    redrawing happens.  Set a flag when a group is added, check this flag when
+    highlighting starts.
+7   Add "semitrans": Add highlighting.  E.g., make the text bold, but keep the
+    colors.  And add colors, so that Green+Red becomes Yellow.
+    E.g. for this html:
+	<B> bold text <I> italic+bold text </B> italic text </I>
+7   Wild idea: Not only set highlighting, but also change what is displayed
+    (e.g., remove characters, so that "<B>bold</B>" can be shown as "bold"):
+	:syn region boldstuff start="<B>" display="" end="</B>" display=""
+7   CTRL-] checks the highlight group for finding out what the tag is.
+7   Add an explanation how a list of words can be used to highlight misspelled
+    words.
+8   Add spell checking.  Use "ispell -a" somehow.
+    ~/vim/patches/wm_vim-5_4d.zip  can be used as an example (includes ispell
+    inside Vim).  Gautam Iyer has an example with "aspell".  "engspchk" from
+    Charles Campbell is a good way.  Support for approximate-regexps will help
+    (agrep http://www.tgries.de/agrep/).
+7   Command line completion for ":find" should search in 'path'.
+8   Add more command line completion for :syntax.
+8   Add more command line completion for :highlight.
+8   Add more command line completion for :sign.
+7   Should find a better way to parse the :syntax and :highlight commands.
+    Use tables or lists that can be shared by parsing for execution and
+    completion?
+8   Add ColorSchemePost autocommand event, so that scripts can set up their
+    highlighting. (Salman Halim)
+7   Add a few sets of colors (e.g. Borland Turbo C one).  With a menu to
+    select one of the sets.
+8   Add offsets to sub-matches: "\(a*\) *"he=e1-1
+    'e' is end of match 'e1' is end of sub-match 1, 's2' is start of submatch
+    2, etc.
+8   In Insert mode, when there are typeahead characters, postpone the
+    highlighting (for "." command).
+8   Syncing on comments isn't 100% correct when / / lines mix with / * and * /.
+    For example: What about a line that starts with / / and contains * /?
+8   Ignore / * and  * / inside strings, when syncing.
+7   Build a few more syntax files from the file "/usr/share/misc/vgrindefs":
+    ISP, LDL, Icon, ratfor.  And check "nedit/source/highlight.c".
+6   Add possibility to have background color continue until the right edge of
+    the window.  Useful for comment blocks and function headings. (Rogall)
+-   Make it possible to add "contains" items for all items in a group.	Useful
+    when extending an already existing syntax file.
+-   Add line-continuation pattern for non-syncing items too?
+-   Add possibility to highlight specific columns (for Fortran).  Or put a
+    line in between columns (e.g. for 'textwidth').
+    Patch to add 'hlcolumn' from Vit Stradal, 2004 May 20.
+-   Add possibility to highlight the whole line, including the right margin
+    (for comment blocks).
+-   Add 'hlmatch' option: List of flags:
+    'c': highlight match for character under the cursor.
+    'b': highlight the previous (, and its match.
+    'a': highlight all text from the previous ( until its match.
+	 Also for {}, <>, etc.?
+    'e': highlight all braces without a match (slow?)
+    OR: add an argument "cursor" to the syntax command, which means that the
+    region/match/keyword is only highlighted when the cursor is on it.
+    (Campbell)
+    Or do it like Elvis: define text objects and how to highlight them around
+    the cursor. (Iain Truskett)
+7   Make it possible to use all words in the tags files as Keyword.
+    Can also be done with a script (but it's slow).
+7   Make it possible to call a ":" command when a match is found.  Should
+    allow for adding keywords from the text (e.g. variables that are set).
+    And allows for sections with different highlighting.
+7   Add highlight group for commandline: "Commandline".  Make sure it
+    highlights the command line while typing a command, and any output from
+    messages.  And external commands?
+8   Make a version that works like less, but with highlighting: read stdin for
+    text, exit at end of file, don't allow editing, etc.  moreim?  lessim?
+7   SpecialKey highlighting overrules syntax highlighting.  Can't give an
+    unprintable char another color.  Would be useful for ^M at end of line.
+
+
+Built-in script language:
+8   Add referring to key options with "&t_xx".  Both for "echo &t_xx" and
+    ":let &t_xx =".  Useful for making portable mappings.
+8   Allow range for ":exec".  Pass it on to the executed command. (Webb)
+8   exists("&&option") tests if 'option' is actually implemented.  Useful for
+    'shellslash', for example.
+7   Be able to call a function while passing on a variable number of
+    arguments:
+	:function Foo(abc, ...)
+	:  call Bar(a:abc, a:*)
+    Charles Campbell has a patch for this
+8   Have a look at VSEL.  Would it be useful to include? (Bigham)
+8   Add ":fungroup" command, to group function definitions together.  When
+    encountered, all functions in the group are removed.  Suggest using an
+    obscure name to avoid name clashes.  Require a ":fungroup END" in the same
+    sourced file?  Assume the group ends at the end of the file.  Handle
+    nested packages?
+    Alternative: Support packages.  {package-name}:{function-name}().
+    Packages are loaded automatically when first used, from
+    $VIMRUNTIME/packages (or use a search path).
+7   Make globpath() also work with "**" and upwards search. (Brian Medley)
+7   Pre-parse or compile Vim scripts into a bytecode.
+    1. Put the bytecode with the original script, with an ":if
+       has('bytecode')" around it, so that it's only used with a Vim that
+       supports it.  Update the code with a command, can be used in an
+       autocommand.
+    2. Use a ".vic" file (like Python use .pyc).  Create it when writing a
+       .vim file.  Problem: distribution.
+    3. Use a cache directory for each user.  How to recognize which cached
+       file belongs to a sourced script?
+7   Add "n" flag to search() function, just like searchpair(). (Alexey
+    Marinichev)
+8   Add ":n" to fnamemodify(): normalize path, remove "../" when possible.
+    Aric Blumer has a patch for this.
+7   Add argument to winwidth() to subtract the space taken by 'foldcolumn',
+    signs and/or 'number'.
+8   Add functions:
+	multibyteidx(string, idx) Byte index in multi-byte character.
+				Patch by Ilya Sher, 2004 Feb 25
+	menuprop({name}, {idx}, {what})
+				Get menu property of menu {name} item {idx}.
+				menuprop("", 1, "name") returns "File".
+				menuprop("File", 1, "n") returns "nmenu
+				File.Open..." argument.
+				Patch by Ilya Sher, 2004 Apr 22
+	mapname({idx}, mode)	return the name of the idx'th mapping.
+				Patch by Ilya Sher, 2004 Mar 4.
+	match({pat}, {string} [,start] [,count]) get index of count'th match
+				Patch by Ilya Sher, 2004 Mar 31
+	sprintf(format, arg, ..) How to prevent a crash???
+	mousex() mousey()	get position of mouse pointer (patch by Ross
+				Presser)
+	attributes()		return file protection flags "drwxrwxrwx"
+	mkdir(dir)		Create directory
+	copy(from, to)		Copy a file
+	perl(cmd)		call Perl and return string
+	shorten(fname)		shorten a file name, like home_replace()
+	input(prompt, complete)	like input() but do specified completion
+	inputrl()		like input() but right-to-left
+	virtualmode()		add argument to obtain whether "$" was used in
+				Visual block mode.
+	tagtype(tag)		get type of tag (also checks if it exists)
+	getacp()		Win32: get codepage (Glenn Maynard)
+	tr(expr, from, to)	translate chars (Patch from Ron Aaron, Apr 8
+				2004)
+	find()			find file in 'path' (patch from Johannes
+				Zellner 2001 Dec 20)
+	realname()		Get user name (first, last, full)
+				user_fullname() patch by Nikolai Weibull, Nov
+				3 2002)
+	getfperm()		file permissions, in form "rwxrwxrwx"
+				(patch from Nikolai Weibull 2003 Jan 13)
+	getftype()		"file", "dir", "link", "other"?
+				(patch from Nikolai Weibull 2003 Jan 13)
+	setbufline()		set line in any buffer (patch from Yegappan
+				Lakshmanan, 2003 Jan 21)
+	getbufline()		get line from any buffer
+	deletebufline()		delete line in any buffer
+	appendbufline()		append line in any buffer
+	winnr("$")		Get number of windows.  (patch from Nikolai
+				Weibull 2003 Jan 13) (another patch from
+				Yegappan Lakshmanan, 2003 Aug 31)
+	search()		Add optional offset argument.
+				Add 'n' flag.  (patch from Nikolai Weibull
+				2003 Jan 13)
+	sort()			Sort a newline-separated string.  Also:
+				":sort".
+	libcall()		Allow more than one argument.
+	libcallext()		Like libcall(), but using a callback function
+				to allow the library to execute a command or
+				evaluate an expression.
+	confirm()		add "flags" argument, with 'v' for vertical
+				layout and 'c' for console dialog. (Haegg)
+				Flemming Madsen has a patch for the 'c' flag
+				(2003 May 13)
+	system({cmd}, {expr})	Filter {expr} through the shell command
+				{cmd} and return the result.
+				(Patch from Yegappan Lakshmanan)
+	raisewin()		raise gvim window (see HierAssist patch for
+				Tcl implementation ~/vim/HierAssist/ )
+	gettext()		Translate a message.  (Patch from Yasuhiro
+				Matsumoto) How to get the messages into the
+				.po files?
+	strrep()		Repeat a string (patch from Christophe Poucet,
+				2003 Sep 12, also contains XX)
+	char2hex()		convert char string to hex string.  XX
+	hex2char()		convert hex string to char string. XX
+7   Make bufname("'0") return the buffer name from mark '0.  How to get the
+    column and line number?  col("'0") currently returns zero.
+8   argc() returns 0 when using "vim -t tag".  How to detect that no file was
+    specified in any way?  To be able to jump to the last edited file.
+8   Pass the executable name to the Vim scripts in some way.  As v:argv0?
+8   Add command arguments with three dashes, passed on to Vim scripts.
+8   When starting to source a vim script, delete all functions that it has
+    previously defined?  Avoids using ":fun!" all the time.
+7   Add optional arguments to user functions:
+	:func myFunc(arg1, arg2, arg3 = "blah", arg4 = 17)
+6   User functions: Functions local to buffer "b:func()"?
+8   Add ":let var[{expr}] = {expr}".  When past the end of "var" just ignore.
+8   The "= register should be writable, if followed by the name of a variable,
+    option or environment variable.
+8   ":let &option" should list the value of the option.
+7   Add synIDlist(), making the whole list of syntax items on the
+    stack available (separated with '\n').
+8   Add autocommand-event for when a variable is changed:
+	:au VarChanged {varname} {commands}
+8   Add "has("gui_capable")", to check if the GUI can be started.
+8   Add possibility to use variables like registers: characterwise (default),
+    linewise (when ending in '\n'), blockwise (when ending in '\001').	reg0,
+    rega, reg%, etc.  Add functions linewise({expr}), blockwise({expr}) and
+    charwise({expr}).
+7   Make it possible to do any command on a string variable (make a buffer
+    with one line, containing the string).  Maybe add an (invisible) scratch
+    buffer for this?
+	result = scratch(string, command)
+	result = apply(string, command)
+	result = execute(string, command)
+    "command" would use <> notation.
+    Does scratch buffer have a number?  Or re-use same number?
+7   Add function to generate unique number (date in milliseconds).
+7   Automatically load a function from a file when it is called.  Need an
+    option for the search path. (Sekera)
+7   Persistent variables: "p:var"; stored in viminfo file and sessions files.
+7   Include support for arrays?  Patch from Robert Webb.
+    This is restricted to fixed-size arrays indexed by number.  Better: Use
+    associative arrays: a[5] = 3, a["some"] = 'x'. Implement by translating
+    into ordinary variables: a[5] is "-a-5", a["some"] is "a-some", a[5][6] is
+    "a-5-6".  But how to do array assignment and concatenation?
+    Alternative: use dictionaries, like Python.
+
+
+Robustness:
+8   This pattern in syntax/java.vim causes a recursive call of regmatch():
+	syn match   javaStringError      +"\([^"\\]\|\\.\)*$+
+    A long line with a " in it can cause a crash when it runs out of stack
+    space (on systems where this isn't caught).  How can we catch this for
+    more systems?
+
+
+Performance:
+8   Loading plugins takes startup time.  Only load the part that is used to
+    trigger the rest, and load the rest when it's needed?
+8   Turn b_syn_ic and b_syn_containedin into b_syn_flags.
+9   Loading menu.vim still takes quite a bit of time.  How to make it faster?
+8   in_id_list() takes much time for syntax highlighting.  Cache the result?
+7   setpcmark() shifts the jumplist, this takes quite a bit of time when
+    jumping around.  Instead use an index for the start?
+8   When displaying a space with only foreground highlighting, it's the same
+    as a space without attributes.  Avoid displaying spaces for the "~" lines
+    when starting up in a color terminal.
+8   Avoid alloc() for scratch buffer use, esp. in syntax.c.  It's very slow on
+    Win16.
+9   Setting GUI options in the console (e.g., 'guifont') should not cause a
+    redraw.
+8   Profiling shows that in_id_list() is used very often for C code.  Can this
+    function be improved?
+8   For an existing file, the page size of the swap file is always the
+    default, instead of using the block size of the device, because the swap
+    file is created only after setting the block size in mf_open().  How can
+    this be improved?
+8   Set default for 'ttyscroll' to half a screen height?  Should speed up
+    MS-DOS version. (Negri)
+7   C syntax highlighting gets a lot slower when adding a region for folding
+    from { to }. (Charles Campbell)  Inserting a "{" is very slow. (dman)
+7   HTML syntax highlighting is slow for long lines.  Try displaying
+    http://www.theregister.co.uk/content/4/22908.html. (Andre Pang)
+7   Check how performance of loading the wordlist can be improved (adding a
+    lot of abbreviations).
+7   DOS console: Add t_DL support, to make scrolling faster.
+7   Compile Ex commands to byte codes.  Store byte codes in a vim script file
+    at the end, after "compiled:.  Make it look like a single comment line
+    for old Vim versions.  Insert first line "Vim script compiled <timestamp>.
+    Only used compiled code when timestamp matches the file stat.
+    Add command to compile a vim script and add it to the file in-place.
+    Split Ex command executing into a parsing and executing phase.
+    Use compiled code for functions, while loops, etc.
+8   When editing a file with extremely long lines (e.g., an executable), the
+    "linerest" in readfile() is allocated twice to be able to copy what was
+    read so far.  Use realloc() instead?  Or split the line when allocating
+    memory fails and "linerest" is big (> 100000)?
+8   When defining autocommands (e.g., from $VIMRUNTIME/filetype.vim), need to
+    compare each pattern with all existing patterns.  Use a hash code to avoid
+    using strcmp() too often?
+7   Include turbo_loader patches, speeding up reading a file?
+    Speed up reading a file by reading it into a fixed-size buffer, creating
+    the list of indexes in another buffer, and then copying the result into a
+    memfile block with two copies.  Then read the next block into another
+    fixed-size buffer, create the second list of indexes and copy text from
+    the two blocks to the memfile block.
+7   do_cmdline(): Avoid that the command line is copied to allocated memory
+    and freed again later all the time.  For while loops, and for when called
+    with an argument that can be messed with.
+    Generic solution: Make a struct that contains a pointer and a flag that
+    indicates if the pointer should be freed when replaced.
+7   Check that the file size is not more than "sizeof(long)".
+-   Further improve finding mappings in maphash[] in vgetorpeek()
+8   Syntax highlighting is slow when deleting lines.  Try in
+    $VIMRUNTIME/filetype.vim.
+-   "out of memory" after deleting (1,$d) and changing (:%s/^/> /) a lot of
+    lines (27000) a few times.  Memory fragmentation?
+-   Have a look at how pdksh does memory allocation (alloc.c). (Dalecki)
+-   Do profiling on:
+    - :g/pat/normal cmd
+    - 1000ii<Esc>
+    - deleting 10Mbyte worth of lines (netscape binary)
+    - "[i" and "[d" (Yegappan Lakshmanan)
+    - ":g/^/m0" on a 450Kbyte file.  And the "u".
+    - highlighting "~/vim/test/longline.tex", "~/vim/test/scwoop.tcl" and
+      "~/vim/test/lockup.pl".
+    - loading a syntax file to highlight all words not from a dictionary.
+    - editing a vim script with syntax highlighting on (loading vim.vim).
+7   Screen updating can be further improved by only redrawing lines that were
+    changed (and lines after them, when syntax highlighting was used, and it
+    changed).
+    - On each change, remember start and end of the change.
+    - When inserting/deleting lines, remember begin, end, and line count.
+-   Use macros/duarte/capicua for profiling.  Nvi 1.71 is the fastest!
+-   When using a file with one long line (1Mbyte), then do "$hhhh", is still
+    very slow.  Avoid calling getvcol() for each "h"?
+-   Executing a register, e.g. "10000@@" is slow, because ins_typebuf has to
+    move the previous commands forward each time.  Pass count from
+    normal_cmd() down to do_execreg().
+-   Repeating insert "1000i-<Esc>" displays --INSERT-- all the time, because of
+    the <Esc> at the end.  Make this work faster (disable redrawing).
+-   Avoid calls to plines() for cursor line, use w_cline_height.
+-   After ":set nowrap" remove superfluous redraw with wrong hor. offset if
+    cursor is right of the screen.
+8   Make CTRL-C on Unix generate a signal, avoid using select() to check for a
+    CTRL-C (it's slow).
+
+
+Code size:
+8   GUI: When NO_CONSOLE is defined, more code can be excluded.
+-   Put getline() and cookie in a struct, so only one argument has to be
+    passed to do_cmdline() and other functions.
+8   Make a GUI-only version for Unix?
+8   In buf_write _() isn't needed when setting errmsg, do it once when using
+    it.
+7   When compiling with a GUI-only version, the code for cterm colors can be
+    left out.
+8   When compiled with a GUI-only version, the termcap entries for terminals
+    can be removed.
+8   Can the check for libelf in configure.in be removed?
+
+
+Messages:
+8   When using ":q" in a changed file, the error says to "add !".  Add the
+    command so that beginners understand it: "use :q!".
+8   For 'verbose' level 12 prints commands from source'ed files.  How to skip
+    lines that aren't executed?  Perhaps move the echoing to do_cmdline()?
+8   Use 'report' for ":bdel"?  (Krishna)  To avoid these messages when using a
+    script.
+8   "vim --version" output goes to stderr, should be stdout.  Can all output
+    from messages using printf() go to stdout?
+-   Delete message after new command has been entered and have waited for key.
+    Perhaps after ten seconds?
+-   Make message history available in "msg" variables: msg1, msg2, .. msg9.
+9   Check handling of overwriting of messages and delays:
+    Very wrong: errors while redrawing cause endless loop.
+    When switching to another file and screen scrolls because of the long
+    message and return must be typed, don't scroll the screen back before
+    redrawing.
+7   Add an option, which is a regexp, that disables warning messages which
+    match that regexp (Tsirkin).
+8   When address range is wrong you only get "Invalid range".  Be a bit more
+    specific: Negative, beyond last line, reverse range?  Include the text.
+8   Make it possible to ignore errors for a moment ('errorignore'?).  Another
+    option to switch off giving error messages ('errorquiet'?).  Also an option
+    not to give any messages ('quiet')?  Or ":quiet on", ":quiet off".
+    Careful: For a severe error (out of memory), and when the user starts
+    typing, error messages must be switched back on.
+    Also a flag to ignore error messages for shell commands (for mappings).
+-   Option to set time for emsg() sleep. Interrupt sleep when key is typed?
+    sleep before second message?
+8   In Ex silent mode or when reading commands from a file, what exactly is
+    not printed and what is?  Check ":print", ":set all", ":args", ":vers",
+    etc.  At least there should be no prompt. (Smulders)  And don't clear the
+    screen when reading commands from stdin. (Kendall)
+    --> Make a difference between informative messages, prompts, etc. and
+	error messages, printing text, etc.
+8   Window should be redrawn when resizing at the hit-enter prompt.
+    Also at the ":tselect" prompt.  Find a generic solution for redrawing when
+    a prompt is present (with a callback function?).
+
+
+Screen updating:
+7   Add a string to the 'display' option to make CTRL-E and CTRL-Y scroll one
+    screen line, also if this means the first line doesn't start with the
+    first character (like what happens with a single line that doesn't fit).
+-   screen_line():
+    - insert/delete character stuff.
+    - improve delete rest of line (spaces at end of line).
+-   When moving or resizing window, try to avoid a complete redraw (esp. when
+    dragging the status line with the mouse).
+-   When 'lazyredraw' set, don't echo :ex commands?  Need a flag to redraw when
+    waiting for a character.
+8   Add a ":refresh [winnr]" command, to force updating a window.  Useful from
+    an event handler where ":normal" can't be used.  Also useful when
+    'lazyredraw' is set in a mapping.
+7   Make 'list' and 'linebreak' work together.
+7   Add "nbsp" in 'listchars'?  Patch from David Blanchet, 2003 Jul 28.
+
+
+Scrolling:
+8   Add "zm" command: scroll horizontally to put the cursor in the middle.
+6   Add option to set the overlap for CTRL-F and CTRL-B. (Garhi)
+-   extend 'scrollbind' option: 'scrollopt' words "search", "relative", etc..
+    Also 'e'xecute some commands (search, vertical movements) in all bound
+    windows.
+7   Add 'scrollbind' feature to make the offset of one window with the next
+    one equal to the window height.  When editing one file in both windows it
+    looks like each window displays a page of the buffer.
+-   Allow scrolling by dragging with the mouse (grab a character and move it
+    up/down).  Like the "hand" in Acrobat reader.  Use Alt-LeftMouse for this?
+    (Goldfarb)
+-   Add command to execute some commands (search, vertical movements) in all
+    bound windows.
+-   Add 'search' option to 'scrollopt' to allow 'scrollbind' windows to
+    be bound by regexp searches
+-   Add "z>" and "z<": scroll sideways one screenfull. (Campbell)
+-   Add option to set the number of lines when not to scroll, instead of the
+    fixed number used now (for terminals that scroll slow with a large number
+    of lines but not with a single line).
+
+
+Autoconf:
+8   Should use acconfig.h to define prototypes that are used by autoheader.
+8   Some compilers don't give an error for "-OPT:Olimit" but a warning. (Webb)
+    Add a check for the warning, so that "Olimit" can be added automatically?
+-   Autoconf: Use @datadir@ for the system independent files.  Make sure the
+    system dependent and system independent files are separated. (Leitner).
+-   Add autoconf check for waitpid()/wait4().
+-   Remove fcntl() from autoconf, all systems have it?
+-   Set default for 'dictionary', add search for dictionary to autoconf.
+
+
+Perl interface:
+8   Rename typemap file to something else?
+7   Add patch from Benoit Cerrina to integrate Vim and Perl functions better.
+    Now also works for Ruby (2001 Nov 10)
+7   Make buffers accessed as Perl arrays. (Clark)
+7   Make it possible to compile with non-ANSI C?
+6   Tcl/Tk has the "load" command: load a shared library (.so or .dll).
+
+
+Shared libraries:
+6   Add support for loading shared libraries, and calling functions in it.
+	:libload internal-name libname
+	:libunload internal-name
+	:liblist
+	:libcall internal-name function(arg1, arg2, ...)
+	:libcall function(arg1, arg2, ...)
+    libcall() can have only one integer or String argument at the moment.
+6   Have a look on how Perl handles loading dynamic libraries.
+
+
+Tags:
+8   Add a command to jump to a certain kind of tag.  Allow the user to specify
+    values for the optional fields.  E.g., ":tag size type=m".
+8   Add a function that returns the line in the tags file for a matching tag.
+    Can be used to extract more info (class name, inheritance, etc.) (Rico
+    Hendriks)
+7   Count before CTRL-]: jump to N'th match
+8   Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis.
+8   When output of ":tselect" is long, getting the more-prompt, should be able
+    to type the tag number directly.
+7   Add a tag-select window.  Works like ":cwindow".  (Michal Malecki)
+7   Add the possibility to use the "-t {tag}" argument multiple times.  Open a
+    window for each tag.
+7   Make output of ":tselect" a bit nicer.  Use highlighting?
+7   Highlight the "tag 1 of >2" message.  New highlight group, or same as "hit
+    bottom" search message.
+7   When using ":tag" at the top of the tag stack, should add another entry,
+    so CTRL-T can bring you back to where you are now AND to where you were
+    before the previous ":tag" command. (Webb)
+7   When using CTRL-] on someClass::someMethod, separate class from method and
+    use ":ta class:someClass someMethod".
+    Include C++ tags changes (Bertin).	Change "class::func" tag into "func"
+    with "class=class"?  Docs in oldmail/bertin/in.xxx.
+7   Add ":tagargs", to set values for fields:
+	:tagargs class:someclass file:version.c
+	:tagargs clear
+    These are then the default values (changes the order of priority in tag
+    matching).
+7   Support for "gtags" and "global"?  With ":rtag" command?
+    There is an example for how to do this in Nvi.
+    Or do it like Elvis: 'tagprg' and 'tagprgonce' options. (Yamaguchi)
+    The Elvis method is far more flexible, do it that way.
+7   Support "col:99" extra field, to position the cursor in that column.  With
+    a flag in 'cpoptions' to switch it off again.
+7   Better support for jumping to where a function or variable is used.  Use
+    the id-utils, with a connection to "gid" (Emacs can do it too).  Add
+    ":idselect", which uses an "ID" database (made by "mkid") like "tselect".
+7   Add 'taglistfiles' option, show file name and type when listing matching
+    tags name with CTRL-D completion.  Patch from Yegappan Lakshmanan.
+
+
+Security:
+-   nothing at the moment
+
+
+Win32 GUI:
+8   Make debug mode work while starting up (vim -D).  Open console window for
+    the message and input?
+7   The Python interface only works with one version of Python, selected at
+    compile time.  Can this be made to work with version 2.1 and 2.2
+    dynamically?
+7   GvimExt: when there are several existing Vims, move the list to a submenu.
+    (Mike McCollister)
+8   When using "Edit with Vim" for one file it changes directory, when several
+    files are selected and using "Edit with single Vim" the directory isn't
+    changed.  At least change directory when the path is the same for all
+    files.  Perhaps just use the path of the first file or use the longest
+    common part of the path.
+8   Add font argument to set the lfCharSet. (Bobcik)
+8   Somehow automatically detect the system language and set $LANG, so that
+    gettext and menus work.
+8   Could keep console open to run multiple commands, to avoid the need to hit
+    return in every console.
+    Also: Look at how Emacs does runs external commands:
+	http://www.cs.washington.edu/homes/voelker/ntemacs.html.
+8   Need a separate PopUp menu for modeless selection.  Need two new commands:
+    Copy selection to clipboard, Paste selection (as typed text).
+8   Support copy/paste for other file formats.  At least HTML, perhaps RTF.
+    Add "copy special" and "paste special" commands?
+7   Use different default colors, to match the current Windows color scheme.
+    Sys_WindowText, Sys_Window, etc. (Lionel Schaffhauser)
+7   Use <C-Tab> to cycle through open windows (e.g., the find dialog).
+7   <Esc> should close a dialog.
+7   Keep the console for external commands open.  Don't wait for a key to be
+    hit.  Re-open it when the user has closed it anyway.  Or use a prepended
+    command: ":nowait {cmd}", or ":quiet", which executes {cmd} without any
+    prompts.
+7   Should be able to set an option so that when you double click a file that
+    is associated with Vim, you can either get a new instance of Vim, or have
+    the file added into an already running Vim.
+7   The "-P" argument only works for the current codepage.  Use wide
+    functions to find the window title.
+
+
+GUI:
+8   Add GTK 2.3 file dialog support.  Patch by Grahame Bowland, 2004 Mar 15,
+    but it doesn't use "initdir" or "dflt".
+8   Make inputdialog() work for Photon, Amiga, RiscOS.
+-   <C--> cannot be mapped.  Should be possible to recognize this as a
+    normal "-" with the Ctrl modifier.
+7   Implement ":popup" for other systems than Windows.
+8   Implement ":tearoff" for other systems than Win32 GUI.
+6   Implement ":untearoff": hide a torn-off menu.
+8   When using the scrollbar to scroll, don't move the cursor position.  When
+    moving the cursor: scroll to the cursor position.
+9   Make <S-Insert> paste from the clipboard by default. (Kunze)
+7   Menu local to a buffer, like mappings.  Or local to a filetype?
+8   In Buffers menu, add a choice whether selecting a buffer opens it in the
+    current window, splits the window or uses ":hide".
+8   Dragging the mouse pointer outside of a Vim Window should make the text
+    scroll.  Return a value from gui_send_mouse_event() to the machine
+    specific code to indicate the time in which the event should be repeated.
+8   Make it possible to ignore a mouse click when it's used to give Vim (gvim)
+    window focus.  Also when a mouse click is used to bring a window to front.
+8   Make the split into system independent code and system specific code more
+    explicit.  There are too many #ifdefs in gui.c.
+    If possible, separate the Vim code completely from the GUI code, to allow
+    running them in separate processes.
+8   Support a background bitmap.  Useful for marking a column.  Patch from
+    Heather Downs (GTK) and Vince Negri (Win32).
+7   X11: Support cursorColor resource and "-cr" argument.
+8   X11 (and others): CTRL-; is not different from ';'.  Set the modifier mask
+    to include CTRL for keys where CTRL produces the same ASCII code.
+7   Add some code to handle proportional fonts?  Need to draw each character
+    separately (like xterm).  Also for when a double-width font is not exactly
+    double-width. (Maeda)
+8   Should take font from xterm where gvim was started (if no other default).
+8   Selecting font names in X11 is difficult, make a script or something to
+    select one.  Martin Dalecki has a font selector for Motif, but it needs a
+    bit more work.
+7   Motif: use the menu font consistently.  Patch from Martin Dalecki 2002 Jan
+    11.
+8   Visual highlighting should keep the same font (bold, italic, etc.).
+8   Add flag to 'guioptions' to not put anything in the clipboard at all?
+8   Should support a way to use keys that we don't recognize yet.  Add a
+    command that adds entries to special_keys somehow.	How do we make this
+    portable (X11, Win32, ..)?
+7   Add a flag to 'guioptions' that tells not to remove inactive menu items.
+    For systems where greying-out or removing menu items is very slow.  The
+    menu items would remain visibly normally, but not do anything.
+7   Add ":minimize" and ":maximize", which iconize the window and back.
+    Useful when using gvim to run a script (e.g. 2html.vim).
+7   X11: Is it possible to free allocated colors, so that other programs can
+    use them again?  Otherwise, allow disabling allocating the default colors.
+    Or allocate an own colormap (check UAE).  With an option to use it.  For
+    the commandline, "-install" is mostly used for X11 programs.
+7   Add command line argument for "gvim" not to start the GUI.  Sort of the
+    inverse of "vim -g". (Vikas)
+7   Should support multi-column menus.
+-   Should add option for where to put the "Help" menu: like Motif at the far
+    right, or with the other menus (but still at the right).
+-   Add menu item to "Keep Insert mode".
+8   ":mkgvimrc" command, that includes menus.
+6   Big change: Move GUI to separate program "vimgui", to make startup of vim a
+    lot faster, but still be able to do "vim -g" or ":gui".
+7   More explicit mouse button binding instead of 'mousemodel'?
+7   Add option to set the position of the window on the screen.  'windowpos',
+    which has a value of "123,456": <x>,<y>.
+    Or add a command, like ":winsize"?
+7   Add toolbar for more GUIs.
+8   Make it possible to use "amenu icon=BuiltIn##", so that the toolbar item
+    name can be chosen free.
+7   Make it possible to put the toolbar on top, left, right and/or bottom of
+    the window?  Allows for softkey-like use.
+6   Separate the part of Vim that does the editing from the part that runs the
+    GUI.  Communicate through a pseudo-tty.  Vim starts up, creates a
+    pty that is connected to the terminal.  When the GUI starts, the pty is
+    reconnected to the GUI process.  When the GUI stops, it is connected to
+    the terminal again.  Also use the pty for external processes, it looks
+    like a vt100 terminal to them.  Vim uses extra commands to communicate GUI
+    things.
+7   Motif: For a confirm() dialog <Enter> should be ignored when no default
+    button selected, <Esc> should close the dialog.
+-   Motif steals <F10> from us, to pop up menus with the keyboard.  How do we
+    get it back if we want it?
+-   Motif: add 3D shading for the menu entries?  Patch from Martin Dalecki.
+-   Paste in Insert mode should not do autowrap etc.  Or maybe this should be
+    changeable with an option?
+-   Put a nice picture in the icon (but how do we do that?).
+7   When using a pseudo-tty Vim should behave like some terminal (vt52 looks
+    simple enough). Terminal codes to/from shell should be translated.
+-   Would it be useful to be able to quit the GUI and go back to the terminal
+    where it was started from?
+7   Support "-visual <type>" command line argument.
+
+
+VMS:
+-   Improvement: rewrite term/TTY handling.
+-   Improvement: create VMS GTK runtime libraries on OpenVMS 7.1-2 (today GTK
+    works just on 7.3).
+
+
+Autocommands:
+9   Make sure that side effects of autocommands are handled correctly.  Don't
+    execute autocommands when a buffer or window is halfway some changes.
+    Move all apply_autocmds() calls to a higher level where needed.
+8   Add ScriptReadCmd event: used to load remote Vim scripts, e.g.
+    "vim -u http://mach/path/vimrc".
+8   Use another option than 'updatetime' for the CursorHold event.  The two
+    things are unrelated for the user (but the implementation is more
+    difficult).
+8   Also trigger CursorHold in Insert mode?
+7   Add autocommand event for when a buffer cannot be abandoned.  So that user
+    can define the action taking (autowrite, dialog, fail) based on the kind
+    of file. (Yakov Lerner)  Or is BufLeave sufficient?
+8   Can't use ":normal" in CursorHold autocommands.  Make the CursorHold event
+    insert a special key code, and call the autocommand functions from a
+    higher level, so that vgetc() isn't used recursively.
+8   Autocommands should not change registers.  And marks?  And the jumplist?
+    And anything else?
+8   Autocommand for when modified files have been found, when getting input
+    focus again (e.g., FileChangedFocus).
+    Check when: getting focus, jumping to another buffer, ...
+8   Add autocommands, user functions and user commands to ":mkvimrc".
+8   Add "TagJumpFile" autocommand: When jumping to another file for a tag.
+    Can be used to open "main.c.gz" when "main.c" isn't found.
+6   Add KeymapChanged event, so that the effects of a different keymap can be
+    handled (e.g., other font) (Ron Aaron)
+7   Add a way to skip an autocommand if going from one *.c file to another *.c
+    file.
+7   When trying to open a directory, don't load the file but trigger an
+    autocommand event OpenDirectory.
+7   Add file type in front of file pattern: <d> for directory, <l> for link,
+    <x> for executable, etc.  <&xxx> for Risc OS.  With commas to separate
+    alternatives.  The autocommand is only executed when both the file type
+    AND the file pattern match. (Leonard)
+5   Add option that specifies extensions which are to be discarded from the
+    file name.  E.g. 'ausuffix', with ".gz,.orig".  Such that file.c.gz will
+    trigger the "*.c" autocommands.  (Belabas)
+7   Add something to break the autocommands for the current event, and for
+    what follows.  Useful for a "BufWritePre" that wants to avoid writing the
+    file.
+8   When editing "tt.gz", which is in DOS format, 'fileformat' stays at
+    "unix", thus writing the file changes it.  Somehow detect that the read
+    command used dos fileformat.  Same for 'fileencoding'.
+8   Add buffer-local autocommands?  Reduces overhead for autocommands that
+    trigger often (inserting a character, switching mode).
+	:au Event <buffer> do-something
+    E.g.:
+	:au BufEnter <buffer> menu enable ...
+	:au BufLeave <buffer> menu disable ...
+    Patch from Yakov Lerner, including test (2004 Jan 7).
+-   Add events to autocommands:
+    Error	    - When an error happens
+    NormalEnter	    - Entering Normal mode
+    InsertEnter	    - Entering Insert mode
+    ReplaceEnter    - Entering Replace mode
+    CmdEnter	    - Entering Cmdline mode
+    VisualEnter	    - Entering Visual mode
+    CmdUndefined    - Like FuncUndefined but for user commands.
+    *Leave	    - Leaving the mode
+    SearchPost	    - After doing a search command (e.g. to do "M")
+    PreDirChanged/PostDirChanged
+		    - Before/after ":cd" has been used (for changing the
+		      window title)
+    BufReadAction   - replaces reading a file
+    BufWriteAction  - replaces writing a file
+    ShutDown	    - when the system is about to shut down
+    InsertCharPre   - user typed character Insert mode, before inserting the
+		      char.  Pattern is matched with text before the cursor.
+		      Set v:char to the character, can be changed.
+		      (not triggered when 'paste' is set).
+    InsertCharPost  - user typed a character in Insert mode, after inserting
+		      the char.
+    BufModified	    - When a buffer becomes modified, or unmodified (for
+		      putting a [+] in the window title or checking out the
+		      file from CVS).
+    BufFirstChange  - When making a change, when 'modified' is set.  Can be
+		      used to do a :preserve for remote files.
+    BufChange	    - after a change was made.  Set some variables to indicate
+		      the position and number of inserted/deleted lines, so
+		      that marks can be updated.  HierAssist has patch to add
+		      BufChangePre, BufChangePost and RevertBuf. (Shah)
+    WinResized	    - When a window has been resized
+    VimResized	    - When the Vim window has been resized (SIGWINCH)
+		      patch from Yakov Lerner, 2003 July 24.
+-   Add autocommand to be executed every so many seconds?  For writing the
+    file now and then ('autosave').
+				  *'autosave'* *'as'* *'noautosave'* *'noas'*
+    'autosave' 'aw' number  (default 0)
+	    Automatically write the current buffer to file N seconds after the
+	    last change has been made and when |'modified'| is still set.
+	    Default: 0 = do not autosave the buffer.
+    Alternative: have 'autosave' use 'updatetime' and 'updatecount' but make
+    them save the file itself besides the swapfile.
+
+
+Insert mode completion/expansion:
+8   When there is no word before the cursor but something like "sys." complete
+    with "sys.".  Works well for C and similar languages.
+9   ^X^L completion doesn't repeat correctly.  It uses the first match with
+    the last added line, instead of continuing where the last match ended.
+    (Webb)
+8   The code has become too complex.  Redesign it, or at least add proper
+    comments.
+8   Add option to set different behavior for Insert mode completion:
+    - ignore/match case
+    - different characters than 'iskeyword'
+8   Add expression-expansion, so that the user can define his own kind of
+    completion.  Patch from Taro Muraoka, 2003 Aug 26.
+8   Add a command to undo the completion, go back to the original text.
+8   Use the class information in the tags file to do context-sensitive
+    completion.  After "foo." complete all member functions/variables of
+    "foo".  Need to search backwards for the class definition of foo.
+    Should work for C++ and Java.
+    Even more context would be nice: "import java.^N" -> "io", "lang", etc.
+7   When expanding $HOME/dir with ^X^F keep the $HOME (with an option?).
+7   Add CTRL-X command in Insert mode like CTRL-X CTRL-N, that completes WORDS
+    instead of words.
+8   Add CTRL-X CTRL-R: complete words from register contents.
+8   Add completion of previously inserted texts (like what CTRL-A does).
+    Requires remembering a number of insertions.
+8   Add 'f' flag to 'complete': Expand file names.
+    Also apply 'complete' to whole line completion.
+-   Make it possible to search include files in several places.  Use the
+    'path' option?  Can this be done with the dictionary completion (use
+    wildcards in the file name)?
+-   Make CTRL-X CTRL-K do a binary search in the dictionary (if it's sorted).
+-   Speed up CTRL-X CTRL-K dictionary searching (don't use a regexp?).
+-   Set a mark at the position where the match was found (file mark, could
+    be in another file).
+-   Add CTRL-A command in CTRL-X mode: show all matches.
+-   Make CTRL-X CTRL-L use the 'complete' option?
+-   Add command in CTRL-X mode to add following words to the completed string
+    (e.g. to complete "Pointer->element" with CTRL-X CTRL-P CTRL-W CTRL-W)
+-   CTRL-X CTRL-F: Use 'path' to find completions.
+-   CTRL-X CTRL-F: Option to use forward slashes on MS-Windows?
+-   CTRL-X CTRL-F: Don't replace "$VIM" with the actual value. (Kelly)
+8   Add option 'isexpand', containing characters when doing expansion (so that
+    "." and "\" can be included, without changing 'iskeyword'). (Goldfarb)
+    Also: 'istagword': characters used for CTRL-].
+    When 'isexpand' or 'istagword' are empty, use 'iskeyword'.
+-   Allow listing all matches in some way (and picking one from the list).
+
+
+Command line editing:
+7   Add commands (keys) to delete from the cursor to the end of the command
+    line.
+8   Custom completion of user commands can't use the standard completion
+    functions.  Add a hook to invoke a user function that returns the type of
+    completion to be done: "file", "tag", "custom", etc.
+-   Add flags to 'whichwrap' for command line editing (cursor right at end of
+    lines wraps to start of line).
+-   Make editing the command line work like Insert mode in a single-line view
+    on a buffer that contains the command line history.  But this has many
+    disadvantages, only implement it when these can be solved.  Elvis has run
+    into these, see remarks from Steve (~/Mail/oldmail/kirkendall/in.00012).
+    - Going back in history and editing a line there would change the history.
+      Would still need to keep a copy of the history elsewhere.  Like the
+      cmdwin does now already.
+    - Use CTRL-O to execute one Normal mode command.  How to switch to normal
+      mode for more commands?  <Esc> should cancel the command line.  CTRL-T?
+    - To allow "/" and "= need to recursively call getcmdline(), overwrite the
+      cmdline.  But then we are editing a command-line again.  How to avoid
+      that the user gets confused by the stack of command lines?
+    - Use edit() for normal cmdline editing?  Would have to integrate
+      getcmdline() into edit().  Need to solve conflicts between Insert mode
+      and Command-line mode commands.  Make it work like Korn shell and tcsh.
+      Problems:
+	- Insert: completion with 'wildchar'
+	- Insert: use cmdline abbreviations
+	- Insert: CTRL-D deletes indent instead of listing matches
+	- Normal: no CTRL-W commands
+	- Normal: no ":" commands?
+	- Normal: allow Visual mode only within one line.
+    - where to show insert/normal mode message?  Change highlighting of
+      character in first column?
+    - Implementation ideas:
+      - Set "curwin" and "curbuf" to the command line window and buffer.
+      - curwin->w_topline is always equal to curwin->w_cursor.lnum.
+      - never set 'number', no folding, etc.  No status line.
+      - sync undo after entering a command line?
+      - use NV_NOCL flag for commands that are not allowed in Command-line
+	Mode.
+
+
+Command line completion:
+8   Change expand_interactively into a flag that is passed as an argument.
+8   With command line completion after '%' and '#', expand current/alternate
+    file name, so it can be edited.  Also with modifiers, such as "%:h".
+8   When completing command names, either sort them on the long name, or list
+    them with the optional part inside [].
+7   Completion of network shares, patch by Yasuhiro Matsumoto.
+7   Completion of ":map x ": fill in the current mapping, so that it can be
+    edited. (Sven Guckes)
+7   Add completion for when entering an expression after CTRL-R= and "=.
+    (Servatius Brandt)
+-   For 'wildmenu': Simplify "../bar" when possible.
+-   When using <Up> in wildmenu mode for a submenu, should go back to the
+    current menu, not the first one.  E.g., ":emenu File.Save<Up>".
+8   For ":find" and ":sfind" expand files found in 'path'.
+8   Add cmdline completion for the ":debug" command.
+8   When using backtick expansion, the external command may write a greeting
+    message.  Add an option or commands to remove lines that match a regexp?
+7   When listing matches of files, display the common path separately from the
+    file names, if this makes the listing shorter. (Webb)
+-   Add command line completion for ":ilist" and friends, show matching
+    identifiers (Webb).
+8   Add command line completion for "old value" of a command.  ":args <key>"
+    would result in the current list of arguments, which you can then edit.
+7   Add command line completion with CTRL-X, just like Insert mode completion.
+    Useful for ":s/word/xx/".
+-   Add command to go back to the text as it was before completion started.
+    Also to be used for <Up> in the command line.
+-   Add 'wildlongest' option: Key to use to find longest common match for
+    command line completion (default CTRL-L), like 'wildchar'. (Cregut)
+    Also: when there are several matches, show them line a CTRL-D.
+-   Add completion for Environment variables: ":echo $SH<Tab>" -> "$SHELL".
+
+
+Command line history:
+-   Add "KeyWasTyped" flag: It's reset before each command and set when a
+    character from the keyboard is consumed. Value is used to decide to put a
+    command line in history or not. Put line in history if it didn't
+    completely resulted from one mapping.
+-   When using ":browse", also put the resulting edit command in the history,
+    so that it can be repeated. (Demirel)
+
+
+Insert mode:
+9   When 'autoindent' is set, hitting <CR> twice, while there is text after
+    the cursor, doesn't delete the autoindent in the resulting blank line.
+    (Rich Wales) This is Vi compatible, but it looks like a bug.  Rich has a
+    suggestion for a patch to fix this.
+8   When using CTRL-O in Insert mode, then executing an insert command
+    "a" or "i", should we return to Insert mode after <Esc>? (Eggink)
+    Perhaps it can be allowed a single time, to be able to do
+    "<C-O>10axyz<Esc>".  Nesting this further is confusing.
+    ":map <F2> 5aabc<Esc>" works only once from Insert mode.
+7   Use CTRL-G <count> to repeat what follows.  Useful for inserting a
+    character multiple times or repeating CTRL-Y.
+7   Make ":startinsert" command work directly for functions and scripts?
+    Also make it possible to append (it's difficult at end of line).
+    And add ":startreplace" (patch by Charles Campbell, 2004 Jan 9,
+    http://www.erols.com/astronaut/vim/index.html#Patch)
+7   Use 'matchpairs' for 'showmatch': When inserting a character check if it
+    appears in the rhs of 'matchpairs'.
+-   In Insert mode (and command line editing?): Allow undo of the last typed
+    character.	This is useful for CTRL-U, CTRL-W, delete and backspace, and
+    also for characters that wrap to the next line.
+    Also: be able to undo CTRL-R (insert register).
+    Possibly use 'backspace'="whole" for a mode where at least a <CR> that
+    inserts autoindent is undone by a single <BS>.
+-   Use CTRL-G in Insert mode for an extra range of commands, like "g" in
+    Normal mode.
+-   Make 'paste' work without resetting other options, but override their
+    value.  Avoids problems when changing files and modelines or autocommands
+    are used.
+-   When typing CTRL-V and a digit higher than 2, only expect two digits.
+-   Insert binary numbers with CTRL-V b.
+-   Make it possible to undo <BS>, <C-W> and <C-U>.  Bash uses CTRL-Y.
+
+
+'cindent', 'smartindent':
+8   Wrong indent for ":" after a method with line break in arguments:
+	Foo::Foo (int one,
+		    int two)
+	: something(4)
+	{}
+8   Wrong indent for ":" after a method with multiple lines:
+	Foo::Foo (int one, int two)
+		: something(4),
+	somethingelse(3)
+	{}
+9   Too much indent for "lulu": (Uwe Zeisberger)
+       int main ()
+       {
+	 if (lala)
+	   do
+	     ++(*lolo);
+	   while (lili
+		  && lele);
+	   lulu;
+       }
+9   Function gets extra indent: (Jamax)
+	void function(int param) {
+	     if (false)
+		 return;
+	}
+9   brace not indented correctly:
+	case 'c':   if (cond)
+			{
+    Should align with "if" in case statement.
+7   Allow aligning a closing ")" with the line above, instead of the matching
+    "(": (Riehm) if (asdfasdf &&
+			asdf
+			)
+8   Java: Inside an anonymous class, after an "else" or "try" the indent is
+    too small. (Vincent Bergbauer)
+8   In C++ it's possible to have {} inside (): (Kirshna)
+		func(
+			new String[] {
+			    "asdf",
+			    "asdf"
+			}
+		    );
+7   Separate "(0" option into inside/outside a function (Zellner):
+	func(
+	   int x)	// indent like "(4"
+	{
+	   if (a
+	       && b)	// indent like "(0"
+8   Strange problem with this code, "hello" is indented wrong: (Gary Holloway)
+    main() { char	foo[] = "/*";
+	 /* This is a comment; the indentation of C
+	  * source below this comment gets messed up due to the string above.
+	  */
+	  hello
+9   Using "{" in a comment: (Helmut Stiegler)
+    if (a)
+    {
+	    if (b)
+	    {
+		    // {
+	    }
+	    } <-- this is indented incorrect
+9   Wrong indent for cino=(4, removing the (void) fixes it: (Zellner)
+	(void) MyFancyFunction(
+			       argument);
+-   Make smartindenting configurable. Add 'sioptions', e.g. '#' setting the
+    indent to 0 should be switched on/off.
+7   Support ANSI style function header, with each argument on its own line.
+-   "[p" and "]p" should use 'cindent' code if it's on (only for the first
+    line).
+-   Add option to 'cindent' to set indent for comments outside of {}?
+-   Make a command to line up a comment after a code line with a previous
+    comment after a code line.	Can 'cindent' do this automatically?
+7   Add 'j' flag to 'formatoptions': Remove comment leader when joining lines.
+-   When 'cindent'ing a '}', showmatch is done before fixing the indent.  It
+    looks better when the indent is fixed before the showmatch. (Webb)
+-   Add option to make indenting work in comments too (for commented-out
+    code), unless the line starts with "*".
+-   Don't use 'cindent' when doing formatting with "gq"?
+-   When formatting a comment after some text, insert the '*' for the new line
+    (indent is correct if 'cindent' is set, but '*' doesn't get inserted).
+8   When 'comments' has both "s1:/*,mb:*,ex:*/" and "s1:(*,mb:*,ex:*)", the
+    'x' flag always uses the first match.  Need to continue looking for more
+    matches of "*" and remember all characters that could end the comment.
+-   For smartindent: When typing 'else' line it up with matching 'if'.
+-   'smartindent': allow patterns in 'cinwords', for e.g. TeX files, where
+    lines start with "\item".
+-   Support this style of comments (with an option): (Brown)
+	/* here is a comment that
+	is just autoindented, and
+	nothing else */
+-   Add words to 'cinwords' to reduce the indent, e.g., "end" or "fi".
+7   Use Tabs for the indent of starting lines, pad with spaces for
+    continuation lines.  Allows changing 'tabstop' without messing up the
+    indents.
+    And/or: Add option to copy indent as-is, without changing spaces to tabs.
+    also for 'autoindent'.  'keeptabs': when set don't change the tabs and
+    spaces used for indent, when the indent remains the same or increases.
+
+
+Java:
+8   Can have {} constructs inside parens.  Include changes from Steve
+    Odendahl?
+8   Recognize "import java.util.Vector" and use $CLASSPATH to find files for
+    "[i" commands and friends.
+-   For files found with 'include': handle "*" in included name, for Java.
+    (Jason)
+-   How to make a "package java.util" cause all classes in the package to be
+    searched?  Also for "import java.util.*". (Mark Brophy)
+
+
+'comments':
+8   When formatting C comments that are after code, the "*" isn't repeated
+    like it's done when there is no code.  And there is no automatic wrapping.
+    Recognize comments that come after code.  Should insert the comment leader
+    when it's "#" or "//".
+7   When using "comments=fg:--", Vim inserts three spaces for a new line.
+    When hitting a TAB, these spaces could be removed.
+7   The 'n'esting flag doesn't do the indenting of the last (rightmost) item.
+6   Make strings in 'comments' option a RE, to be able to match more
+    complicated things. (Phillipps)  Use a special flag to indicate that a
+    regexp is used.
+8   Make the 'comments' option with "/* * */" lines only repeat the "*" line
+    when there is a "/*" before it?  Or include this in 'cindent'?
+
+
+Virtual edit:
+8   Make the horizontal scrollbar work to move the text further left.
+7   Add a mode where the cursor is only allowed to go one character after the
+    end of the line?
+7   Allow specifying it separately for Tabs and beyond end-of-line?
+
+
+Text objects:
+8   Add test script for text object commands "aw", "iW", etc.
+7   Add text object for current search pattern: "a/" and "i/".  Makes it
+    possible to turn text highlighted for 'hlsearch' into a Visual area.
+8   Add "gp" and "gP" commands: insert text and make sure there is a single
+    space before it, unless at the start of the line, and after it, unless at
+    the end of the line or before a ".".
+7   Add objects with backwards extension?  Use "I" and "A".  Thus "2dAs"
+    deletes the current and previous sentence. (Jens Paulus)
+7   Add "g{" and "g}" to move to the first/last character of a paragraph
+    (instead of the line just before/after a paragraph as with "{" and "}").
+8   Add "a'" and 'a"': a single or double quoted string. (Tim Chase)
+    Patch from Taro Muraoka (2003 Dec 16).
+6   Ignore comment leaders for objects.  Make "das" work in reply-email.
+5   Make it possible to use syntax group matches as a text object.  For
+    example, define a "ccItem" group, then do "da<ccItem>" to delete one.
+    Or, maybe just define "dai", delete-an-item, to delete the syntax item the
+    cursor is on.
+
+
+Select mode:
+8   In blockwise mode, typed characters are inserted in front of the block,
+    backspace deletes a column before the block. (Steve Hall)
+7   Alt-leftmouse starts block mode selection in MS Word.
+    See http://www.vim.org/tips/tip.php?tip_id=743
+7   Add Cmdline-select mode.  Like Select mode, but used on the command line.
+    - Change gui_send_mouse_event() to pass on mouse events when 'mouse'
+      contains 'C' or 'A'.
+    - Catch mouse events in ex_getln.c.  Also shift-cursor, etc., like in
+      normal_cmd().
+    - remember start and end of selection in cmdline_info.
+    - Typing text replaces the selection.
+
+
+Visual mode:
+-   When dragging the Visual selection with the mouse and 'scrolloff' is zero,
+    behave like 'scrolloff' is one, so that the text scrolls when the pointer
+    is in the top line.
+8   When using "I" or "A" in Visual block mode, short lines do not get the new
+    text.  make it possible to add the text to short lines too, with padding
+    where needed.
+7   With a Visual block selected, "2x" deletes a block of double the width,
+    "3y" yanks a block of triple width, etc.
+7   When selecting linewise, using "itext" should insert "text" at the start
+    of each selected line.
+8   What is "R" supposed to do in Visual mode?
+8   Make Visual mode local to the buffer.  Allow changing to another buffer.
+    When starting a new Visual selection, remove the Visual selection in any
+    other buffer. (Ron Aaron)
+8   Support dragging the Visual area to drop it somewhere else. (Ron Aaron,
+    Ben Godfrey)
+7   Support dragging the Visual area to drop it in another program, and
+    receive dropped text from another program. (Ben Godfrey)
+7   With blockwise Visual mode and "c", "C", "I", "A", etc., allow the use of
+    a <CR>.  The entered lines are repeated over the Visual area.
+7   CTRL-V :s should substitute only in the block, not to whole lines. (David
+    Young is working on this)
+7   Filtering a block should only apply to the block, not to the whole lines.
+    When the number of lines is increased, add lines. When decreased, padd with
+    spaces or delete? Use ":`<,`>" on the command line.
+8   After filtering the Visual area, make "gv" select the filtered text?
+    Currently "gv" only selects a single line, not useful.
+7   Don't move the cursor when scrolling?  Needed when the selection should
+    stay the same.  Scroll to the cursor at any movement command.  With an
+    option!
+7   In Visual block mode, need to be able to define a corner on a position
+    that doesn't have text?  Also: when using the mouse, be able to select
+    part of a TAB.  Even more: Add a mode where the cursor can be on a screen
+    position where there is no text.  When typing, add spaces to fill the gap.
+    Other solution: Always use curswant, so that you can move the cursor to
+    the right column, and then use up/down movements to select the line,
+    without changing the column.
+6   ":left" and ":right" should work in Visual block mode.
+7   For Visual mode: Command to do a search for the string in the marked area.
+    Only when fewer than two lines. Use "g/" and "gb".  Patch from Yegappan
+    Lakshmanan.
+7   CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the
+    current buffer.
+7   CTRL-A and CTRL-X should increase/decrease all numbers in the Visual area.
+6   In non-Block mode, "I" should insert the same text in front of each line,
+    before the first non-blank, "gI" in column 1.
+6   In non-Block mode, "A" should append the same text after each line.
+6   ":'<,'>source" should read the selected lines and ":source" them.
+6   When in blockwise visual selection (CTRL-V), allow cursor to be placed
+    right of the line. Could also allow cursor to be placed anywhere on a TAB
+    or other special character.
+6   Add commands to move selected text, without deselecting.
+
+
+More advanced repeating commands:
+-   Add "." command for visual mode: redo last visual command (e.g. ":fmt").
+7   Repeating "d:{cmd}" with "." doesn't work. (Benji Fisher) Somehow remember
+    the command line so that it can be repeated?
+-   Add "." command after operator: repeat last command of same operator. E.g.
+    "c." will repeat last change, also when "x" used since then (Webb).
+    "y." will repeat last yank.
+    "c2." will repeat the last but one change?
+    Also: keep history of Normal mode commands, add command to list the history
+    and/or pick an older command.
+-   History stack for . command?  Use "g." command.
+
+
+Mappings and Abbreviations:
+8   Let ":verbose map xx" report where the mapping was set, just like with
+    ":verbose set".
+8   When "0" is mapped (it is a movement command) this mapping should not be
+    used after typing another number, e.g. "20l". (Charles Campbell)
+    Is this possible without disabling the mapping of the following command?
+8   Should mapping <C-A> and <C-S-A> both work?
+7   ":abbr b byte", append "b " to an existing word still expands to "byte".
+    This is Vi compatible, but can we avoid it anyway?
+8   ":verbose map" could show the script where the mapping was defined.
+    m_script_ID can be used.
+8   To make a mapping work with a prepended "x to select a register, store the
+    last _typed_ register name and access it with "&.
+8   Add ":amap", like ":amenu".
+8   Add ":cab!", abbreviations that only apply to Command-line mode and not to
+    entering search strings.
+8   Add a flag to ":abbrev" to eat the character that triggers the
+    abbreviation.  Thus "abb ab xxx" and typing "ab<Space>" inserts "xxx" and
+    not the <Space>.
+8   Allow mapping of CTRL-@ (anywhere in the LHS).
+8   Give a warning when using CTRL-C in the lhs of a mapping.  It will never
+    (?) work.
+7   ":verbose map" should display where a mapping was defined, like ":verbose
+    set".
+8   Add a way to save a current mapping and restore it later.  Use a function
+    that returns the mapping command to restore it: mapcmd()?  mapcheck() is
+    not fool proof.  How to handle ambiguous mappings?
+7   Add <0x8f> (hex), <033> (octal) and <123> (decimal) to <> notation?
+7   Allow mapping "Q" and "Q}" at the same time.  Need to put a flag with "Q",
+    that it needs an extra character before it can match. See Vile 'maplonger'
+    option.
+7   When someone tries to unmap with a trailing space, and it fails, try
+    unmapping without the trailing space.  Helps for ":unmap xx | unmap yy".
+7   Make it possible to map 'wildchar', but only when it's a special character
+    (like CTRL-E).  Currently it's only recognized when typed.  Useful for
+    mapping a key to do something and then completion.
+7   Add a mapping that works always, for remapping the keyboard.
+6   Context-sensitive abbreviations: Specify syntax group(s) in which the
+    abbreviations are to be used.
+-   Add mappings that take arguments.  Could work like the ":s" command.  For
+    example, for a mouse escape sequence:
+	:mapexp  <Esc>{\([0-9]*\),\([0-9]*\);	H\1j\2l
+-   Make it possible to include a <Nul> in the lhs and rhs of a mapping.
+-   Add command to repeat a whole mapping ("." only repeats the last change in
+    a mapping).  Also: Repeat a whole insert command, including any mappings
+    that it included.  Sort-of automatic recording?
+-   Make it possible to undo all the commands from a mapping, including a
+    trailing unfinished command, e.g. for ":map K iX^[r".
+-   Add an option to ":map" that makes it display the special keys in
+    <> notation (e.g. <CR> instead of ^M).  Or just always do this?
+-   Include an option (or flag to 'cpoptions') that makes errors in mappings
+    not flush the rest of the mapping (like nvi does).
+-   Use context sensitiveness of completion to switch abbreviations and
+    mappings off for :unab and :unmap.
+6   When using mappings in Insert mode, insert characters for incomplete
+    mappings first, then remove them again when a mapping matches.  Avoids
+    that characters that are the start of some mapping are not shown until you
+    hit another character.
+-   Add optional <Number> argument for mappings:
+    :map <Number>q	     ^W^W<Number>G
+    :map <Number>q<Number>t  ^W^W<Number1-1>G<Number2>l
+    :map q<Char>	    :s/<Char>/\u\0/g
+    Or implicit:
+    :map q			<Register>d<Number>$
+-   Add mappings for replace mode: ":rmap".  How do we then enter mappings for
+    non-replace Insert mode?
+-   Add separate mappings for Visual-character/block/line mode?
+6   Alias for Normal mode commands, works like :substitute?  Would allow
+    mappings with arguments.
+-   Add 'mapstop' command, to stop recursive mappings.
+-   List mappings that have a raw escape sequence both with the name of the key
+    for that escape sequence (if there is one) and the sequence itself.
+-   List mappings: Once with special keys listed as <>, once with meta chars as
+    <M-a>, once with the byte values (octal?). Sort of "spell mapping" command?
+-   When entering mappings: Add the possibility to enter meta keys like they
+    are displayed, within <>: <M-a>, <~@> or <|a>.
+-   Allow multiple arguments to :unmap.
+-   Command to show keys that are not used and available for mapping
+    ":freekeys".
+-   Allow any character except white space in abbreviations lhs (Riehm).
+
+
+Incsearch:
+-   Add a limit to the number of lines that are searched for 'incsearch'?
+-   When no match is found and the user types more, the screen is redrawn
+    anyway.  Could skip that.  Esp. if the line wraps and the text is scrolled
+    up every time.
+-   Temporarily open folds to show where the search ends up.  Restore the
+    folds when going to another line.
+-   When incsearch used and hitting return, no need to search again in many
+    cases, saves a lot of time in big files. (Slootman wants to work on this?)
+    When not using special characters, can continue search from the last match
+    (or not at all, when there was no match).  See oldmail/webb/in.872.
+-   With incsearch, use CTRL-N/CTRL-P to go to next/previous match, some other
+    key to copy matched word to search pattern (Alexander Schmid).
+
+
+Searching:
+8   Add a mechanism for recursiveness: "\(([^()]*\@@[^()]*)\)\@r".  \@@ stands
+    for "go recursive here" and \@r marks the recursive atom.
+item stack to allow matching ().  One side is "push X on
+    the stack if previous atom matched".  Other side is "match with top of
+    stack, pop it when it matches".  Use "\@pX" and "\@m"?
+	Example: \((\@p).\{-}\@m\)*
+7   Add an option to accept a match at the cursor position.  Also for
+    search(). (Brett)
+7   Add pattern item to use properties of Unicode characters.  In Perl it's
+    "\p{L}" for a letter.  See Regular Expression Pocket Reference.
+7   When 'rightleft' is set, the search pattern should be displayed right to
+    left as well?  See patch of Dec 26. (Nadim Shaikli)
+8   Would it be possible to allow ":23,45/pat/flags" to search for "pat" in
+    lines 23 to 45?  Or does this conflict with Ex range syntax?
+8   Allow identical pairs in 'matchpairs'.  Restrict the search to the current
+    line.
+7   Allow longer pairs in 'matchpairs'.  Use ~/vim/macros/matchit.vim as an
+    example.
+8   Make it possible to define the character that "%" checks for in
+    #if/#endif.  For nmake it's !if/!endif.
+-   For "%" command: set hierarchy for which things include other things that
+    should be ignored (like "*/" or "#endif" inside /* */).
+    Also: use "%" to jump from start to end of syntax region and back.
+    Alternative: use matchit.vim
+8   "/:/e+1" gets stuck on a match at the end of the line.  Do we care?
+8   A pattern like "\([^a]\+\)\+" takes an awful long time.  Recognize that
+    the recursive "\+" is meaningless and optimize for it.
+    This one is also very slow on "/* some comment */": "^\/\*\(.*[^/]\)*$".
+7   Recognize "[a-z]", "[0-9]", etc. and replace them with the faster "\l" and
+    "\d".
+7   Add a way to specify characters as hex, octal or <C-M> form.  Could be
+    \%1ax, \%200o and \%<C-M>.  Also \%1234u for multi-byte chars.
+8   Flags that apply to the whole pattern.
+    This works for all places where a regexp is used.
+    Add "\q" to not store this pattern as the last search pattern?
+8   Add an argument after ":s/pat/str/" for a range of matches.  For example,
+    ":s/pat/str/#3-4" to replace only the third and fourth "pat" in a line.
+8   Add an option not to use 'hlsearch' highlighting for ":s" and ":g"
+    commands. (Kahn)  It would work like ":noh" is used after that command.
+    Also: An extra flag to do this once, and a flag to keep the existing
+    search pattern.
+-   Add \%h{group-name}; to search for a specific highlight group.
+    Add \%s{syntax-group}; to search for a specific syntax group.
+-   Support Perl regexp.  Use PCRE (Perl Compatible RE) package. (Shade)
+    Or translate the pattern to a Vim one.
+    Don't switch on with an option for typed commands/mappings/functions, it's
+    too confusing.  Use "\@@" in the pattern, to avoid incompatibilities.
+7   Add POSIX regexp, like Nvi, with 'extended' option?  It's like very-magic.
+-   Remember flags for backreferenced items, so that "*" can be used after it.
+    Check with "\(\S\)\1\{3}". (Hemmerling)
+-   Add flags to search command (also for ":s"?):
+    i	ignore case
+    I	use case
+    p	use Perl regexp syntax (or POSIX?)
+    v	use Vi regexp syntax
+    f	forget pattern, don't keep it for "n" command
+    F   remember pattern, keep it for "n" command
+    Perl uses these too:
+    e	evaluate the right side as an expression (Perl only)
+    m	multiple line expression (we don't need it)
+    o	compile only once (Perl only)
+    s	single line expression (we don't need it)
+    x	extended regexp (we don't need it)
+    When used after ":g" command, backslash needed to avoid confusion with the
+    following command.
+    Add 'searchflags' for default flags (replaces 'gdefault').
+-   Add command to display the last used substitute pattern and last used
+    pattern. (Margo)  Maybe make it accessible through a register (like "/
+    for search string)?
+7   Use T-search algorithm, to speed up searching for strings without special
+    characters.  See C't article, August 1997.
+-   Add 'fuzzycase' option, so that case doesn't matter, and '-' and '_' are
+    equivalent (for Unix filenames).
+-   Add 'v' flag to search command: enter Visual mode, with the matching text
+    as Visual area. (variation on idea from Bertin)
+-   Searching: "/this//that/" should find "that" after "this".
+-   Add global search commands: Instead of wrapping at the end of the buffer,
+    they continue in another buffer. Use flag after search pattern:
+    a	for the next file in the argument list
+    f	for file in the buffer list
+    w	for file edited in a window.
+    e.g. "/pat/f". Then "n" and "N" work through files too. "f" flag also for
+    ":s/pat/foo/f"??? Then when 'autowrite' and 'hidden' are both not set, ask
+    before saving files: "Save modified buffer "/path/file"? (Yes/Hide/No
+    Save-all/hide-All/Quit) ".
+-   ":s/pat/foo/3": find 3rd match of "pat", like sed. (Thomas Koehler)
+-   Special characters in patterns:
+    Inside []:
+    \012  octal character
+    \0x1a hex character
+    \0<BS> \0<Esc>: special character
+7   When searching with 'n' give message when getting back where the search
+    first started. Remember start of search in '/ mark.
+7   Add option that scrolls screen to put cursor in middle of screen after
+    search always/when off-screen/never.  And after a ":tag" command.  Maybe
+    specify how many lines below the screen causes a redraw with the cursor in
+    the middle (default would be half a screen, zero means always).
+6   Support multiple search buffers, so macros can be made without side
+    effects.
+7   From xvim: Allow a newline in search patterns (also for :s, can delete
+    newline).  Add BOW, EOW, NEWL, NLORANY, NLBUTANY, magic 'n' and 'r', etc.
+    [not in xvim:] Add option to switch on matches crossing ONE line boundary.
+7   Add ":iselect", a combination of ":ilist" and ":tselect". (Aaron)
+    Also ":dselect".
+
+
+Undo:
+-   When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not
+    possible, even when typing <Esc> immediately. (Grahn)  Also for "i", "a",
+    etc.  Postpone saving for undo until something is really inserted?
+8   When Inserting a lot of text, it can only be undone as a whole.  Make undo
+    sync points at every line or word.  Could recognize the start of a new
+    word (white space and then non-white space) and backspacing.
+    Can already use CTRL-G u, but that requires remapping a lot of things.
+8   Make undo more memory-efficient: Compare text before and after change,
+    only remember the lines that really changed.
+7   Add undo for a range of lines.  Can change these back to a previous
+    version without changing the rest of the file.  Stop doing this when a
+    change includes only some of these lines and changes the line count.  Need
+    to store these undo actions as a separate change that can be undone.
+7   Add an undo tree: When making a change, instead of clearing any future
+    undo (thus redo) info, make a new branch.  How to navigate through the
+    undo tree?
+-   For u_save() include the column number. This can be used to set '[ and '].
+    And in the future the undo can be made more efficient (Webb).
+-   In out-of-memory situations: Free allocated space in undo, and reduce the
+    number of undo levels (with confirmation).
+-   Instead of [+], give the number of changes since the last write: [+123].
+    When undoing to before the last write, change this to a negative number:
+    [-99].
+-   With undo with simple line delete/insert: optimize screen updating.
+-   When executing macro's: Save each line for undo only once.
+-   Store undo info in a file that survives until the next edit.  Then it's
+    possible to undo to before the current editing session.  Combined with
+    viminfo?
+-   When doing a global substitute, causing almost all lines to be changed,
+    undo info becomes very big.  Put undo info in swap file??
+
+
+Buffer list:
+8   Add patch from Charles Campbell to have ":0file!" remove the name of the
+    current buffer. (2003 June 17)
+7   Command to execute a command in another buffer: ":inbuf {bufname} {cmd}".
+    Also for other windows: ":inwin {winnr} {cmd}".  How to make sure that
+    this works properly for all commands, and still be able to return to the
+    current buffer/window?  E.g.: ":inbuf xxx only".
+8   Add File.{recent_files} menu entries: Recently edited files.
+    Ron Aaron has a plugin for this: mru.vim.
+8   Unix: Check all uses of fnamecmp() and fnamencmp() if they should check
+    inode too.
+7   Add another number for a buffer, which is visible for the user.  When
+    creating a new buffer, use the lowest number not in use. (or the highest
+    number in use plus one?)
+7   Offer some buffer selection from the command line?  Like using ":ls" and
+    asking for a buffer number. (Zachmann)
+-   When starting to edit a file that is already in the buffer list, use the
+    file name argument for the new short file name. (Webb)
+-   Add an option to make ":bnext" and ":bprev" wrap around the end of the
+    buffer list.  Also for ":next" and ":prev"?
+7   Add argument to ":ls" which is a pattern for buffers to list.
+    E.g. ":ls *.c". (Thompson)
+7   Add expansion of buffer names, so that "*.c" is expanded to all buffer
+    names.  Needed for ":bdel *.c", ":bunload *.c", etc.
+8   Support for <afile> where a buffer name is expected.
+8   Some commands don't use line numbers, but buffer numbers. '$'
+    should then mean the number of the last buffer.  E.g.: "4,$bdel".
+7   Add an option to mostly use slashes in file names.  Separately for
+    internal use and for when executing an external program?
+
+
+Swap (.swp) files:
+8   If writing to the swap file fails, should try to open one in another
+    directory from 'dir'.  Useful in case the file system is full and when
+    there are short file name problems.
+8   Also use the code to try using a short file name for the backup and swap
+    file for the Win32 and Dos 32 bit versions.
+8   When a file is edited by root, add $LOGNAME to know who did su.
+8   When the edited file is a symlink, try to put the swap file in the same
+    dir as the actual file. Adjust FullName().	Avoids editing the same file
+    twice (e.g. when using quickfix).  Also try to make the name of the backup
+    file the same as the actual file?
+    Use the code for resolve()?
+7   Store the options 'fileencoding', 'fileformat', etc. in the swapfile,
+    because they change what will be written to the file.  Requires adding
+    another block to the swapfile.
+7   When using 64 bit inode numbers, also store the top 32 bits.  Add another
+    field for this, using part of bo_fname[], to keep it compatible.
+7   When editing a file on removable media, should put swap file somewhere
+    else.  Use something like 'r' flag in 'viminfo'. 'diravoid'?
+    Also: Be able to specify minimum disk space, skip directory when not
+    enough room.
+7   Add a configure check for which directory should be used: /tmp, /var/tmp
+    or /var/preserve.
+-   Add an option to create a swap file only when making the first change to
+    the buffer.  (Liang)  Or only when the buffer is not read-only.
+-   Add option to set "umask" for backup files and swap files (Antwerpen).
+    'backupumask' and 'swapumask'?  Or 'umaskback' and 'umaskswap'?
+-   When editing a readonly file, don't use a swap file but read parts from the
+    original file.  Also do this when the file is huge (>'maxmem').  We do
+    need to load the file once to count the number of lines?  Perhaps keep a
+    cached list of which line is where.
+
+
+Viminfo:
+7   Can probably remove the code that checks for a writable viminfo file,
+    because we now do the chown() for root, and others can't overwrite someone
+    else's viminfo file.
+8   Add argument to keep the list of buffers when Vim is started with a file
+    name. (Schild)
+8   Keep the last used directory of the file browser (File/Open menu).
+8   Remember the last used register for "@@".
+8   Remember a list of last accessed files.  To be used in the
+    "File.Open Recent" menu.  Default is to remember 10 files or so.
+    Also remember which files have been read and written.  How to display
+    this?
+7   Also store the ". register (last inserted text).
+7   Make it possible to store buffer names in viminfo file relative to some
+    directory, to make them portable over a network. (Aaron)
+6   Store a snapshot of the currently opened windows.  So that when quitting
+    Vim, and then starting again (without a file name argument), you see the
+    same files in the windows.  Use ":mksession" code?
+-   Make marks present in .viminfo usable as file marks: Display a list of
+    "last visited files" and select one to jump to.
+
+
+Modelines:
+8   Before trying to execute a modeline, check that it looks like one (valid
+    option names).  If it's very wrong, silently ignore it.
+    Ignore a line that starts with "Subject: ".
+-   When an option value is coming from a modeline, do not carry it over to
+    another edited file?  Would need to remember the value from before the
+    modeline setting.
+-   Allow setting a variable from a modeline?  Only allow using fixed strings,
+    no function calls, to avoid a security problem.
+-   Allow ":doauto BufRead x.cpp" in modelines, to execute autocommands for
+    .cpp files.
+-   Support the "abbreviate" command in modelines (Kearns).  Careful for
+    characters after <Esc>, that is a security leak.
+-   Add option setting to ask user if he wants to have the modelines executed
+    or not.  Same for .exrc in local dir.
+
+
+Options:
+8   Make ":mksession" store buffer-specific options for the specific buffer.
+8   With ":mksession" always store the 'sessionoptions' option, even when
+    "options" isn't in it. (St-Amant)
+7   Setting an option always sets "w_set_curswant", while this is only
+    required for a few options.  Only do it for those options to avoid the
+    side effect.
+8   When using ":mksession", also store a command to reset all options to
+    their default value, before setting the options that are not at their
+    default value.
+8   Should ":mksession" restore the current directory when writing the
+    session, or the directory where the session file is?  Probably need a word
+    in 'sessionoptions' to make a choice:
+    "curdir" (cd to current directory when session file was generated)
+    "sessiondir" (cd to directory of session file)
+    "nodir" (don't cd at all)
+8   Make "old" number options that really give a number of effects into string
+    options that are a comma separated list.  The old number values should
+    also be supported.
+8   Add commands to save and restore an option, which also preserves the flag
+    that marks if the option was set.  Useful to keep the effect of setting
+    'compatible' after ":syntax on" has been used.
+7   There is 'titleold', why is there no 'iconold'? (Chazelas)
+7   Make 'scrolloff' a global-local option, so that it can be different in the
+    quickfix window, for example. (Gary Holloway)
+7   Add plugins for formatting.  Should be able to make a choice depending on
+    the language of a file (English/Korean/Japanese/etc.).
+
+
+External commands:
+8   When filtering text, redirect stderr so that it can't mess up the screen
+    and Vim doesn't need to redraw it.  Also for ":r !cmd".
+4   Set separate shell for ":sh", piping "range!filter", reading text "r !ls"
+    and writing text "w !wc". (Deutsche)  Allow arguments for fast start (e.g.
+    -f).
+4   Allow direct execution, without using a shell.
+4   Run an external command in the background.  But how about I/O in the GUI?
+    Careful: don't turn Vim into a shell!
+4   Add feature to disable using a shell or external commands.
+
+
+Multiple Windows:
+7   "vim -oO file ..." use both horizontal and vertical splits.
+8   Add CTRL-W T: go to the top window in the column of the current window.
+    And CTRL-W B: go to bottom window.
+7   Use CTRL-W <Tab>, like alt-tab, to switch between buffers.  Repeat <Tab>
+    to select another buffer (only loaded ones?), <BS> to go back, <Enter> to
+    select buffer, <Esc> to go back to original buffer.
+7   Add a 'winfixwidth' option, similar to 'winfixheight'.
+6   Add an option to resize the shell when splitting and/or closing a window.
+    ":vsp" would make the shell wider by as many columns as needed for the new
+    window.  Specify a maximum size (or use the screen size). ":close" would
+    shrink the shell by as many columns as come available. (Demirel)
+7   When starting Vim several times, instantiate a Vim server, that allows
+    communication between the different Vims.  Feels like one Vim running with
+    multiple top-level windows.  Esp. useful when Vim is started from an IDE
+    too.  Requires some form of inter process communication.
+-   Support a connection to an external viewer.  Could call the viewer
+    automatically after some seconds of non-activity, or with a command.
+    Allow some way of reporting scrolling and cursor positioning in the viewer
+    to Vim, so that the link between the viewed and edited text can be made.
+
+
+Marks:
+8   When cursor is first moved because of scrolling, set a mark at this
+    position.  (Rimon Barr)  Use '-.
+8   Add a command to jump to a mark and make the motion inclusive. g'm and g`m?
+8   The '" mark is set to the first line, even when doing ":next" a few times.
+    Only set the '" mark when the cursor was really moved in a file.
+8   Make `` and '', which would position the new cursor position in the middle
+    of the window, restore the old topline (or relative position) from when
+    the mark was set.
+7   Make a list of file marks in a separate window.  For listing all buffers,
+    matching tags, errors, etc.  Normal commands to move around.  Add commands
+    to jump to the mark (in current window or new window).  Start it with
+    ":browse marks"?
+6   Add a menu that lists the Marks like ":marks". (Amerige)
+8   Make it possible to delete marks.  Charles Campbell has a patch that does
+    this with the markclear() function (2004 Jan 9).  And the ":delmark"
+    command (2004 Feb 9)
+7   For ":jumps", ":tags" and ":marks", for not loaded buffers, remember the
+    text at the mark.  Highlight the column with the mark.
+7   Highlight each mark in some way (With "Mark" highlight group).
+    Or display marks in a separate column, like 'number' does.
+7   Use d"m to delete rectangular area from cursor to mark m (like Vile's \m
+    command).
+7   Try to keep marks in the same position when:
+    - replacing with a line break, like in ":s/pat/^M/", move marks after the
+      line break column to the next line. (Acevedo)
+    - inserting/deleting characters in a line.
+5   Include marks for start/end of the current word and section.  Useful in
+    mappings.
+6   Add "unnamed mark" feature: Like marks for the ":g" command, but place and
+    unplace them with commands before doing something with the lines.
+    Highlight the marked lines somehow.
+
+
+Digraphs:
+7   Make "ga" show the digraph for a character, if it exists.
+    Also the keymap?
+-   Make it possible to enter "r<C-E>" and "r<C-Y>" (get character from line
+    below/above).
+-   Use digraph table to tell Vim about the collating sequence of special
+    characters?
+8   Add command to remove (all) digraphs. (Brown)
+7   Support different sets of digraphs (depending on the character set?).  At
+    least Latin1/Unicode, Latin-2, MS-DOS (esp. for Win32).
+
+
+Writing files:
+-   In vim_rename(), should lock "from" file when deleting "to" file for
+    systems other than Amiga.  Avoids problems with unexpected longname to
+    shortname conversion.
+8   write mch_isdevice() for Amiga, Mac, VMS, etc.
+8   When appending to a file, Vim should also make a backup and a 'patchmode'
+    file.
+8   'backupskip' doesn't write a backup file at all, a bit dangerous for some
+    applications.  Add 'backupelsewhere' to write a backup file in another
+    directory?  Or add a flag to 'backupdir'?
+7   The 'directory' option supports changing path separators to "%" to make
+    file names unique, also support this for 'backupdir'. (Mikolaj Machowski)
+6   Add an option to write a new, numbered, backup file each time.  Like
+    'patchmode', e.g., 'backupmode'.
+6   Make it possible to write 'patchmode' files to a different directory.
+    E.g., ":set patchmode=~/backups/*.orig". (Thomas)
+6   Add an option to prepend something to the backup file name.  E.g., "#".
+    Or maybe allow a function to modify the backup file name?
+8   Only make a backup when overwriting a file for the first time. Avoids
+    losing the original when writing twice. (Slootman)
+7   On non-Unix machines, also overwrite the original file in some situations
+    (file system full, it's a link on an NFS partition).
+7   When editing a file, check that it has been change outside of Vim more
+    often, not only when writing over it.  E.g., at the time the swap file is
+    flushed.  Or every ten seconds or so (use the time of day, check it before
+    waiting for a character to be typed).
+8   When a file was changed since editing started, show this in the status
+    line of the window, like "[time]".
+    Make it easier to reload all outdated files that don't have changes.
+    Automatic and/or with a command.
+
+
+Substitute:
+8   Make it easier to replace in all files in the argument list. E.g.:
+    ":argsub/oldword/newword/".  Works like ":argdo %s/oldword/newword/g|w".
+-   :s///p prints the line after a substitution.
+-   With :s///c replace \&, ~, etc. when showing the replacement pattern.
+8   With :s///c allow scrolling horizontally when 'nowrap' is effective.
+    Also allow a count before the scrolling keys.
+-   Add number option to ":s//2": replace second occurrence of string? Or:
+    :s///N substitutes N times.
+-   Add answers to ":substitute" with 'c' flag, used in a ":global", e.g.:
+    ":g/pat1/s/pat2/pat3/cg": 'A' do all remaining replacements, 'Q' don't do
+    any replacements, 'u' undo last substitution.
+7   Substitute in a block of text.  Use {line}.{column} notation in an Ex
+    range, e.g.: ":1.3,$.5s" means to substitute from line 1 column 3 to the
+    last line column 5.
+5   Add commands to bookmark lines, display bookmarks, remove bookmarks,
+    operate on lines with bookmarks, etc.  Like ":global" but with the
+    possibility to keep the bookmarks and use them with several commands.
+    (Stanislav Sitar)
+
+
+Mouse support:
+7   Win32: Add patch for 5-button mouse. (Michael Geddes 2001 Nov 26)
+8   Add 'o' flag to 'mouse'?
+7   Be able to set a 'mouseshape' for the popup menu.
+8   Add 'mouse' flag, which sets a behavior like Visual mode, but automatic
+    yanking at the button-up event.  Or like Select mode, but typing gets you
+    out of Select mode, instead of replacing the text. (Bhaskar)
+7   Checkout sysmouse() for FreeBSD console mouse support.
+-   Implement mouse support for the Amiga console.
+-   Using right mouse button to extend a blockwise selection should attach to
+    the nearest corner of the rectangle (four possible corners).
+-   Precede mouse click by a number to simulate double clicks?!?
+-   When mouse click after 'r' command, get character that was pointed to.
+
+
+Crypt and security:
+8   Also crypt the swapfile, each block separately.  Change mf_write() and
+    mf_read().  How to get b_p_key to these functions?
+7   Support a stronger encryption.  Jason Holt implemented AES (May 6 2003).
+8   Lock all used memory so that it doesn't get swapped to disk (uncrypted).
+    Patch by Jason Holt, 2003 May 23.
+
+
+Argument list:
+6   Add command to put all filenames from the tag files in the argument list.
+    When given an argument, only use the files where that argument matches
+    (like `grep -l ident`) and jump to the first match.
+6   Add command to form an args list from all the buffers?
+
+
+Registers:
+8   Don't display empty registers with ":display". (Etienne)
+8   Make the # register writable, so that it can be restored after jumping
+    around in windows.
+8   Add put command that overwrites existing text.  Should also work for
+    blocks.  Useful to move text around in a table.  Works like using "R ^R r"
+    for every line.
+6   When yanking into the unnamed registers several times, somehow make the
+    previous contents also available (like it's done for deleting).  What
+    register names to use?  g"1, g"2, etc.?
+-   When appending to a register, also report the total resulting number of
+    lines.  Or just say "99 more lines yanked", add the "more".
+-   When inserting a register in Insert mode with CTRL-R, don't insert comment
+    leader when line wraps?
+-   The ":@r" commands should take a range and execute the register for each
+    line in the range.
+-   Add "P" command to insert contents of unnamed register, move selected text
+	to position of previous deleted (to swap foo and bar in " + foo")
+8   Should be able to yank and delete into the "/ register.
+    How to take care of the flags (offset, magic)?
+7   Add ! register, for shell commands. (patch from Grenie)
+
+Debug mode:
+7   Add something to enable debugging when a remote message is received.
+8   Add breakpoints for setting an option
+8   Add breakpoits for assigning to a variable.
+7   Add a watchpoint in the debug mode: An expression that breaks execution
+    when evaluating to non-zero.
+7   Store the history from debug mode in viminfo.
+7   Make the debug mode history available with histget() et al.
+
+
+Various improvements:
+8   Add ":rename" command: rename the file of the current buffer and rename
+    the buffer.  Buffer may be modified.
+7   Add the MzScheme interface.  Patch on http://iamphet.nm.ru/scheme/
+    (Sergey Khorev)
+6   In the quickfix window statusline add the command used to get the list of
+    errors, e.g. ":make foo", ":grep something *.c".
+6   Python interface: add vim.message() function. (Michal Vitecek, 2002 Nov 5)
+7   Support using ":vert" with User commands.  Add expandable items <vert>.
+    Do the same for ":browse" and ":confirm"?
+    For ":silent" and ":debug" apply to the whole user command.
+7   Allow a window not to have a statusline.  Makes it possible to use a
+    window as a buffer-tab selection.
+7   Add an invisible buffer which can be edited.  For use in scripts that want
+    to manipulate text without changing the window layout.
+8   Add a command to revert to the saved version of file; undo or redo until
+    all changes are gone.
+8   Make 'statusline' local, so that each window can have a different value.
+    But should it also be local to a buffer? (Yegappan Lakshmanan has a patch,
+    2002 feb 15)
+7   Add a ":cpfile", go in the other direction as ":cnfile".
+6   "vim -q -" should read the list of errors from stdin. (Gautam Mudunuri)
+8   In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc.  Like it's
+    done for filetype detection.  Patch from Walter Briscoe, 2003 Jul 1.
+8   Add "--remote-fail": When contacting the server fails, exit Vim.
+    Add "--remote-self": When contacting the server fails, do it in this Vim.
+    Overrules the default of "--remote-send" to fail and "--remote" to do it
+    in this Vim.
+8   When Vim was started without a server, make it possible to start one, as
+    if the "--servername" argument was given. ":startserver <name>"?
+8   No address range can be used before the command modifiers.  This makes
+    them difficult to use in a menu for Visual mode.  Accept the range and
+    have it apply to the following command.
+8   Add the possibility to set 'fileformats' to force a format and strip other
+    CR characters.  For example, for "dos" files remove CR characters at the
+    end of the line, so that a file with mixed line endings is cleaned up.
+    To just not display the CR characters: Add a flag to 'display'?
+7   Add a "-@ filelist" argument: read file names from a file. (David Kotchan
+    has a patch for it)
+7   Some compilers give error messages in which the file name does not have a
+    path.  Be able to specify that 'path' is used for these files.
+8   Add term entries for function keys on xterm with alt and ctrl (new in pl
+    94).  E.g., Control adds ";5" in "<Esc>[20;5~".  Find a generic way to
+    prepend a modifier in console mode, to avoid having to specify each
+    individual modified key.
+    Steve Wall has a patch (2002 Mar 12) for adding function keys up to 37,
+    with modifiers.
+7   Xterm sends <Esc>O3F for <M-End>.  Similarly for other <M-Home>, <M-Left>,
+    etc.  Combinations of Alt, Ctrl and Shift are also possible.  Recognize
+    these to avoid inserting the raw byte sequence, handle like the key
+    without modifier (unless mapped).
+8   Add ":breakdel *": delete all breakpoints.
+7   Support ":browse edit" in console, using explorer.vim?
+6   Add "gG": like what "gj" is to "j": go to the N'th window line.
+8   Add command like ":normal" that accepts <Key> notation like ":map".
+9   Support ACLs on more systems.
+7   Add ModeMsgVisual, ModeMsgInsert, etc. so that each mode message can be
+    highlighted differently.
+8   Allow using "**" as a wildcard in commands like ":next" and ":args".
+8   Provide a way to avoid wildcard expansion.  Use double quotes, like in the
+    shell?  :edit "my[file].txt"  (currently works if there is no "myf.txt")
+7   Add a message area for the user.  Set some option to reserve space (above
+    the command line?).  Use an ":echouser" command to display the message
+    (truncated to fit in the space).
+7   Add %s to 'keywordprg': replace with word under the cursor. (Zellner)
+8   Support printing on Unix.  Can use "lpansi.c" as an example. (Bookout)
+8   Add put command that replaces the text under it.  Esp. for blockwise
+    Visual mode.
+7   Enhance termreponse stuff: Add t_CV(?): pattern of term response, use
+    regexp: "\e\[[>?][0-9;]*c", but only check just after sending t_RV.
+7   Add "g|" command: move to N'th column from the left margin (after wrapping
+    and applying 'leftcol').  Works as "|" like what "g0" is to "0".
+7   Add patch from Wall for this one ( ~/Mail/oldmail/wall/in.00019 ):
+    'flipcase' variable: upper/lowercase pairs.
+    Insert comma's between pairs and allow a range, make it look like
+    'isfname'.  E.g. ":set flipcase=a-zA-Z,xX,23-33:143-153".  The colon to
+    separate the from and to part is optional.
+7   Support setting 'equalprg' to a user function name.
+9   Add cursor-column highlighting.  Enable it with 'cursorcolumn' option, set
+    highlighting with "CursorColumn" group.  Useful for aligning text.
+    Also cursor-row highlighting.
+    Patch from Yasuhiro Matsumoto for underlining the cursor line, 2004 Mar 24.
+    Alternatie: when 'number' is set highlight the number of the current line.
+7   Highlight the characters after the end-of-line differently.
+7   When 'whichwrap' contains "l", "$dl" should join lines?
+8   Include a connection to an external program through a pipe?  See patches
+    from Felbinger for a mathematica interface.
+    Or use emacs server kind of thing?
+8   Add an argument to configure to use $CFLAGS and not modify it? (Mooney)
+8   Enabling features is a mix of configure arguments and defines in
+    feature.h.  How to make this consistent?  Feature.h is required for
+    non-unix systems.  Perhaps let configure define CONF_XXX, and use #ifdef
+    CONF_XXX in feature.h?  Then what should min-features and max-features do?
+8   Add "g^E" and "g^Y", to scroll a screen-full line up and down.
+6   Add ":timer" command, to set a command to be executed at a certain
+    interval, or once after some time has elapsed. (Aaron)
+8   Add ":confirm" handling in open_exfile(), for when file already exists.
+8   Use confirm/dialog stuff to ask the user, when a file has changed outside
+    of Vim, if he wants to reload it.  Triggered when focus gained, after
+    shell command, when entering another buffer, etc..
+    Also do this when editing a new file, and another application creates
+    the file before doing ":w" in Vim.
+    Also check if the file protection has changed.  When checking a file into
+    RCS it is made read-only, when checking out it is made read-write.
+8   When quitting with changed files, make the dialog list the changed file
+    and allow "write all", "discard all", "write some".  The last one would
+    then ask "write" or "discard" for each changed file.  Patch in HierAssist
+    does something like this. (Shah)
+7   Use growarray for replace stack.
+7   Have a look at viH (Hellenic or Greek version of Vim).  But a solution
+    outside of Vim might be satisfactory (Haritsis).
+3   Make "2d%" work like "d%d%" instead of "d2%"?
+8   Make "more" prompt accept command characters, like "hit-enter" prompt?
+    Or extend it with more commands, like "less": 'b' for back, 'j' for one
+    line down, etc.
+8   For the "--more--" prompt, support the 'b'ack command for more commands.
+    Possible implementation: Do it at a very low level, caching the lines that
+    are on the screen (with highlight attributes).  Avoids that changes have
+    to be made for all functions that list something.
+7   "g CTRL-O" jumps back to last used buffer.	Skip CTRL-O jumps in the same
+    buffer.  Make jumplist remember the last ten accessed buffers?
+-   Keep a list of most recently used files for each window, use "[o" to go
+    back (older file) and "]n" to go forward (newer file) (like ^O and ^I for
+    jumps) (Webb). Use ":files" and ":ls" to list the files in history order.
+7   Add a history of recently accessed buffer.	Maybe make "2 CTRL-^" jump to
+    the 2nd previously visited buffer, "3 CTRL-^" to the third, etc.  Or use
+    "3 g CTRL-^" for this?
+7   Add an option to set the width of the 'number' column.  Eight positions is
+    often more than needed.  Or adjust the width to the length of the file?
+    Add patch that adds 'numberlen' option. (James Harvey)
+    Other patch with min and max from Emmanuel Renieris (2002 Jul 24)
+    Other patch without an option by Gilles Roy (2002 Jul 25)
+-   Add code to disable the CAPS key when going from Insert to Normal mode.
+-   Set date/protection/etc. of the patchfile the same as the original file.
+-   Use growarray for termcodes[] in term.c
+-   Add <window-99>, like <cword> but use filename of 99'th window.
+7   Add a way to change an operator to always work characterwise-inclusive
+    (like "v" makes the operator characterwise-exclusive).  "x" could be used.
+-   Make a set of operations on list of names: expand wildcards, replace home
+    dir, append a string, delete a string, etc.
+-   Remove mktemp() and use tmpname() only?  Ctags does this.
+-   When replacing environment variables, and there is one that is not set,
+    turn it into an empty string?  Only when expanding options? (Hiebert)
+-   Option to set command to be executed instead of producing a beep (e.g. to
+    call "play newbeep.au").
+-   Add option to show the current function name in the status line.  More or
+    less what you find with "[[k", like how 'cindent' recognizes a function.
+    (Bhatt).
+-   "[r" and "]r": like "p" and "P", but replace instead of insert (esp. for
+    blockwise registers).
+-   Add 'timecheck' option, on by default.  Makes it possible to switch off the
+    timestamp warning and question. (Dodt).
+-   Add an option to set the time after which Vim should check the timestamps
+    of the files.  Only check when an event occurs (e.g., character typed,
+    mouse moved).  Useful for non-GUI versions where keyboard focus isn't
+    noticeable.
+9   When using ":w <fname>" it's possible that this file is loaded in another
+    buffer.  Give a warning right away, don't wait for a shell command.
+-   Make 'smartcase' work even though 'ic' isn't set (Webb).
+7   Add ":justify" command.  Patch from Vit Stradal 2002 Nov 25.
+7   When formatting text, allow to break the line at a number of characters.
+    Use an option for this: 'breakchars'?  Useful for formatting Fortran code.
+-   Add flag to 'formatoptions' to be able to format book-style paragraphs
+    (first line of paragraph has larger indent, no empty lines between
+    paragraphs).  Complements the '2' flag.  Use '>' flag when larger indent
+    starts a new paragraph, use '<' flag when smaller indent starts a new
+    paragraph.	Both start a new paragraph on any indent change.
+8   Add 'formatexpr' option: Used for formatting operator "gq" instead of the
+    builtin formatting or 'formatprg'.
+8   Allow using a trailing space to signal a paragraph that continues on the
+    next line (MIME text/plain; format=flowed, RFC 2646).  Can be used for
+    continuous formatting.  Could use 'autoformat' option, which specifies a
+    regexp which triggers auto-formatting (for one line).
+    ":set autoformat=\\s$".
+-   Be able to redefine where a sentence stops.  Use a regexp pattern?
+7   Add command "g)" to go to the end of a sentence, "g(" to go back to the
+    end of a sentence. (Servatius Brandt)
+-   Be able to redefine where a paragraph starts.  For "[[" where the '{' is
+    not in column 1.
+6   Add ":cdprev": go back to the previous directory.  Need to remember a
+    stack of previous directories.  We also need ":cdnext".
+7   Should ":cd" for MS-DOS go to $HOME, when it's defined?
+-   Make "gq<CR>" work on the last line in the file.  Maybe for every operator?
+8   findmatchlimit() should be able to skip comments.  Solves problem of
+    matching the '{' in /* if (foo) { */ (Fiveash)
+-   findmatch() should be adjusted for Lisp.  See remark at get_lisp_indent().
+    Esp. \( and \) should be skipped. (Dorai Sitaram, incomplete patch Mar 18)
+-   Add more redirecting of Ex commands:
+	:redir @> register  (append)
+	:redir #  bufname
+	:redir #> bufname   (append)
+	:redir =  variable
+	:redir => variable  (append)
+-   Setting of options, specifically for a buffer or window, with
+    ":set window.option" or ":set buffer.option=val".  Or use ":buffer.set".
+    Also: "buffer.map <F1> quit".
+6   Would it be possible to change the color of the cursor in the Win32
+    console?  (Klaus Hast)
+-   Add :delcr command:
+			    *:delcr*
+     :[range]delcr[!]	Check [range] lines (default: whole buffer) for lines
+			ending in <CR>.  If all lines end in <CR>, or [!] is
+			used, remove the <CR> at the end of lines in [range].
+			A CTRL-Z at the end of the file is removed.  If
+			[range] is omitted, or it is the whole file, and all
+			lines end in <CR> 'textmode' is set.  {not in Vi}
+-   Should integrate addstar() and file_pat_to_reg_pat().
+-   When working over a serial line with 7 bit characters, remove meta
+    characters from 'isprint'.
+-   Use fchdir() in init_homedir(), like in FullName().
+-   In win_update(), when the GUI is active, always use the scrolling area.
+    Avoid that the last status line is deleted and needs to be redrawn.
+-   That "cTx" fails when the cursor is just after 'x' is Vi compatible, but
+    may not be what you expect.  Add a flag in 'cpoptions' for this?  More
+    general: Add an option to allow "c" to work with a null motion.
+-   Give better error messages by using errno (strerror()).
+-   Give "Usage:" error message when command used with wrong arguments (like
+    Nvi).
+-   Make 'restorescreen' option also work for xterm (and others), replaces the
+    SAVE_XTERM_SCREEN define.
+7   Support for ":winpos" In xterm: report the current window position.
+-   Give warning message when using ":set t_xx=asdf" for a termcap code that
+    Vim doesn't know about.  Add flag in 'shortmess'?
+6   Add ":che <file>", list all the include paths which lead to this file.
+-   For a commandline that has several commands (:s, :d, etc.) summarize the
+    changes all together instead of for each command (e.g. for the rot13
+    macro).
+-   Add command like "[I" that also shows the tree of included files.
+-   Add command like ":ts" that shows the output of "[I" and asks for a match
+    to jump to. (Zellner)
+-   ":set sm^L" results in ":set s", because short names of options are also
+    expanded.  Is there a better way to do this?
+-   Add ":@!" command, to ":@" like what ":source!" is to ":source".
+8   Add ":@:!": repeat last command with forceit set.
+-   Should be possible to write to a device, e.g. ":w! /dev/null".
+-   Add 't_normal': Used whenever t_me, t_se, t_ue or t_Zr is empty.
+-   ":cab map test ^V| je", ":cunab map" doesn't work.	This is vi compatible!
+-   CTRL-W CTRL-E and CTRL-W CTRL-Y should move the current window up or down
+    if it is not the first or last window.
+-   Include-file-search commands should look in the loaded buffer of a file (if
+    there is one) instead of the file itself.
+7   Change 'nrformats' to include the leader for each format.  Example:
+	nrformats=hex:$,binary:b,octal:0
+    Add setting of 'nrformats' to syntax files.
+-   'path' can become very long, don't use NameBuff for expansion.
+-   When unhiding a hidden buffer, put the same line at top of the window as
+    the one before hiding it. Or: keep the same relative cursor position (so
+    many percent down the windows).
+-   Make it possible for the 'showbreak' to be displayed at the end of the
+    line.  Use a comma to separate the part at the end and the start of the
+    line?  Highlight the linebreak characters, add flag in 'highlight'.
+-   Some string options should be expanded if they have wildcards, e.g.
+    'dictionary' when it is "*.h".
+-   Use a specific type for number and boolean options, making it possible to
+    change it for specific machines (e.g. when a long is 64 bit).
+-   Add option for <Insert> in replace mode going to normal mode. (Nugent)
+-   Add a next/previous possibility to "[^I" and friends.
+-   Add possibility to change the HOME directory.  Use the directory from the
+    passwd file? (Antwerpen)
+-   When doing "[^I" or "[^D" add position to tag stack.
+-   Add command to put current position to tag stack: ":tpush".
+8   Add commands to push and pop all or individual options. ":setpush tw",
+    ":setpop tw", ":setpush all".  Maybe pushing/popping all options is
+    sufficient.  ":setflush" resets the option stack?
+    How to handle an aborted mapping?  Remember position in tag stack when
+    mapping starts, restore it when an error aborts the mapping?
+-   Use a builtin grep command for ":grep"?  Makes it possible to add the
+    column number.  Can use the code of ":helpgrep".
+    Also support using "**" in filename, so that a directory tree can be
+    searched.
+-   Change ":fixdel" into option 'fixdel', t_del will be adjusted each time
+    t_bs is set? (Webb)
+-   "gc": goto character, move absolute character positions forward, also
+    counting newlines. "gC" goes backwards (Weigert).
+-   When doing CTRL-^, redraw buffer with the same topline (Demirel). Store
+    cursor row and window height to redraw cursor at same percentage of window
+    (Webb).
+-   Besides remembering the last used line number of a file, also remember the
+    column. Use it with CTRL-^ et. al.
+-   Check for non-digits when setting a number option (careful when entering
+    hex codes like 0xff).
+-   Add option to make "." redo the "@r" command, instead of the last command
+    executed by it.  Also to make "." redo the whole mapping.  Basically: redo
+    the last TYPED command.
+-   Support URL links for ^X^F in Insert mode, like for "gf".
+-   Support %name% expansion for "gf" on Windows.
+-   Make "gf" work on "file://c:/path/name".  "file:/c:/" and "file:///c:/"
+    should also work?
+-   Add 'urlpath', used like 'path' for when "gf" used on an URL?
+8   When using "gf" on an absolute file name, while editing a remote file
+    (starts with scp:// or http://) should prepend the method and machine
+    name.
+-   When finding an URL or file name, and it doesn't exist, try removing a
+    trailing '.'.
+-   Add ":path" command modifier.  Should work for every command that takes a
+    file name argument, to search for the file name in 'path'.	Use
+    find_file_in_path().
+-   Highlight control characters on the screen: Shows the difference between
+    CTRL-X and "^" followed by "X" (Colon).
+-   Integrate parsing of cmdline command and parsing for expansion.
+-   Create a program that can translate a .swp file from any machine into a
+    form usable by Vim on the current machine.
+-   Add ":noro" command: Reset 'ro' flag for all buffers, except ones that have
+    a readonly file. ":noro!" will reset all 'ro' flags.
+-   Add a variant of CTRL-V that stops interpretation of more than one
+    character.	For entering mappings on the command line where a key contains
+    several special characters, e.g. a trailing newline.
+-   Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine
+    the two into a regex for searching. (Ned Konz)
+-   Make '2' option in 'formatoptions' also work inside comments.
+-   Add 's' flag to 'formatoptions': Do not break when inside a string. (Dodt)
+-   When window size changed (with the mouse) and made too small, set it back
+    to the minimal size.
+-   Add "]>" and "[<", shift comment at end of line (command;  /* comment */).
+-   Should not call cursorcmd() for each vgetc() in getcmdline().
+-   ":split file1 file2" adds two more windows (Webb).
+-   Don't give message "Incomplete last line" when editing binary file.
+-   Add ":a", ":i" for preloading of named buffers.
+-   Allow autowrite when doing ":e file" (with an option 'eaw').
+-   Allow a "+command" argument before each file name in the Vim command line:
+    "vim +123 file1 +234 file2 +345 file3". ???
+-   When entering text, keep other windows on same buffer updated (when a line
+    entered)?
+-   Check out how screen does output optimizing.  Apparently this is possible
+    as an output filter.
+-   In dosub() regexec is called twice for the same line. Try to avoid this.
+-   Window updating from memline.c: insert/delete/replace line.
+-   Optimize ml_append() for speed, esp. for reading a file.
+-   V..c should keep indent when 'ai' is set, just like [count]cc.
+-   Updatescript() can be done faster with a string instead of a char.
+-   Screen updating is inefficient with CTRL-F and CTRL-B when there are long
+    lines.
+-   Uppercase characters in ex commands can be made lowercase?
+8   Add option to show characters in text not as "|A" but as decimal ("^129"),
+    hex ("\x81") or octal ("\201") or meta (M-x).  Nvi has the 'octal' option
+    to switch from hex to octal.  Vile can show unprintable characters in hex
+    or in octal.
+7   Tighter integration with xxd to edit binary files.  Make it more
+    easy/obvious to use.  Command line argument?
+-   How does vi detect whether a filter has messed up the screen? Check source.
+    After ":w !command" a wait_return?
+-   Improve screen updating code for doput() (use s_ins()).
+-   With 'p' command on last line: scroll screen up (also for terminals without
+    insert line command).
+-   Use insert/delete char when terminal supports it.
+-   Optimize screen redraw for slow terminals.
+-   Optimize "dw" for long row of spaces (say, 30000).
+-   Add "-d null" for editing from a script file without displaying.
+-   In Insert mode: Remember the characters that were removed with backspace
+    and re-insert them one at a time with <key1>, all together with <key2>.
+-   Amiga: Add possibility to set a keymap. The code in amiga.c does not work
+    yet.
+-   Implement 'redraw' option.
+-   Add special code to 'sections' option to define something else but '{' or
+    '}' as the start of a section (e.g. one shiftwidth to the right).
+-   Add 'indent' option: Always use this amount of indent when starting a new
+    line and when formatting text.
+-   Use pipes for filtering on Unix.  Requires using fork() to be able to read
+    and write at the same time, or some select() mechanism.
+7   Allow using Vim in a pipe: "ls | vim -u xxx.vim - | yyy".  Only needs
+    implementing ":w" to stdout in the buffer that was read from stdin.
+8   Allow opening an unnamed buffer with ":e !cmd" and ":sp !cmd".  Vile can
+    do it.
+-   Add commands like ]] and [[ that do not include the line jumped to.
+-   When :unab without matching "from" part and several matching "to" parts,
+    delete the entry that was used last, instead of the first in the list.
+-   Add text justification option.
+-   Set boolean options on/off with ":set paste=off", ":set paste=on".
+-   After "inv"ing an option show the value: ":set invpaste" gives "paste is
+    off".
+-   Check handling of CTRL-V and '\' for ":" commands that do not have TRLBAR.
+-   When a file cannot be opened but does exist, give error message.
+-   Amiga: When 'r' protection bit is not set, file can still be opened but
+    gives read errors. Check protection before opening.
+-   When writing check for file exists but no permission, "Permission denied".
+-   If file does not exists, check if directory exists.
+-   MSDOS: although t_cv and t_ci are not set, do invert char under cursor.
+-   Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex
+    commands.
+-   ":set -w all": list one option per line.
+-   Amiga: test for 'w' flag when reading a file.
+-   :table command (Webb)
+-   Add new operator: clear, make area white (replace with spaces): "g ".
+-   Make it possible for a user to define a new operator.  Implementation with
+    internal scripting language or Perl?
+-   Add command to ":read" a file at a certain column (blockwise read?).
+-   Add sort of replace mode where case is taken from the old text (Goldfarb).
+-   Allow multiple arguments for ":read", read all the files.
+-   Support for tabs in specific columns: ":set tabcol=8,20,34,56" (Demirel).
+-   Add 'searchdir' option: Directories to search for file name being edited
+    (Demirel).
+-   Modifier for the put command: Change to linewise, charwise, blockwise, etc.
+-   Add commands for saving and restoring options ":set save" "set restore",
+    for use in macro's and the like.
+-   Keep output from listings in a window, so you can have a look at it while
+    working in another window. Put cmdline in a separate window?
+-   Add possibility to put output of ex commands in a buffer or file, e.g. for
+    ":set all".  ":r :set all"?
+-   'edit' option: When off changing the buffer is not possible (Really
+    read-only mode).
+-   When the 'equalalways' option is set, creating a new window should not
+    result in windows to become bigger. Deleting a window should not result in
+    a window to become smaller (Webb).
+-   When resizing the whole Vim window, the windows inside should be resized
+    proportionally (Webb).
+-   Include options directly in option table, no indirect pointers. Use
+    mkopttab to make option table?
+-   When doing ":w dir", where "dir" is a directory name, write the current
+    file into that directory, with the current file name (without the path)?
+-   Support for 'dictionary's that are sorted, makes access a lot faster
+    (Haritsis).
+-   Add "^Vrx" on the command line, replace with contents of register x. Used
+    instead of CTRL-R to make repeating possible. (Marinichev)
+-   Add "^Vb" on the command line, replace with word before or under the
+    cursor?
+-   Option to make a .swp file only when a change is made (Templeton).
+-   Support mapping for replace mode and "r" command (Vi doesn't do this)?
+5   Add 'ignorefilecase' option: Ignore case when expanding file names.
+    ":e ma<Tab>" would also find "Makefile" on Unix.
+8   Sorting of filenames for completion is wrong on systems that ignore case
+    of filenames.  Add 'ignorefncase' option.  When set, case in filenames is
+    ignored for sorting them. Patch by Mike Williams:
+    ~/vim/patches/ignorefncase.  Also change what matches?  Or use another
+    option name.
+8   Should be able to compile Vim in another directory, with $(srcdir) set to
+    where the sources are. Add $(srcdir) in the Makefile in a lot of places.
+    (Netherton)
+6   Make it configurable when "J" inserts a space or not.  Should not add a
+    space after "(", for example.
+5   When inserting spaces after the end-of-line for 'virtualedit', use tabs
+    when the user wants this (e.g., add a "tab" field to 'virtualedit').
+    (Servatius Brandt)
+
+
+From Elvis:
+-   Use "instman.sh" to install manpages?
+-   Add ":alias" command.
+-   fontchanges recognized "\\fB" etc.
+-   Search patterns:
+      \@	match word under cursor.
+    but do:
+      \@w	match the word under the cursor?
+      \@W	match the WORD under the cursor?
+8   ":window" command:
+    :win +	next window (up)
+    :win ++	idem, wrapping
+    :win -	previous window (down)
+    :win --	idem, wrapping
+    :win nr	to window number "nr"
+    :win name	to window editing buffer "name"
+7   ":cc" compiles a single file (default: current one).  'ccprg'   option is
+    program to use with ":cc".  Use ":compile" instead of ":cc"?
+
+
+From Nvi:
+-   'searchincr' option, alias for 'incsearch'?
+-   'leftright' option, alias for 'nowrap'?
+-   Have a look at "vi/doc/vi.chart", for Nvi specialties.
+8   Add 'keytime', time in 1/10 sec for mapping timeout?
+-   Add 'filec' option as an alternative for 'wildchar'.
+6   Support Nvi command names as an alias:
+    :bg		    :hide
+    :fg	fname	    :buf fname (with 'hidden' set?)
+    :dis b	    :ls
+    :Edit fname	    :split fname
+    :Fg fname	    :sbuf fname (with 'hidden' set?)
+    :Next	    :snext (can't do this, already use :Next)
+    :Previous	    :sprevious
+    :Tag	    :stag
+
+
+From xvi:
+-   CTRL-_ : swap 8th bit of character.
+-   Add egrep-like regex type, like xvi (Ned Konz) or Perl (Emmanuel Mogenet)
+
+
+From vile:
+-   When horizontal scrolling, use '>' for lines continuing right of a window.
+-   Support putting .swp files in /tmp: Command in rc.local to move .swp files
+    from /tmp to some directory before deleting files.
+
+
+Far future and "big" extensions:
+-   Make it easy to setup Vim for groups of users: novice vi users, novice
+    Vim users, C programmers, xterm users, GUI users,...
+-   Change layout of blocks in swap file: Text at the start, with '\n' in
+    between lines (just load the file without changes, except for Mac).
+    Indexes for lines are from the end of the block backwards.  It's the
+    current layout mirrored.
+-   Make it possible to edit a register, in a window, like a buffer.
+-   Add stuff to syntax highlighting to change the text (upper-case keywords,
+    set indent, define other highlighting, etc.).
+-   Mode to keep C-code formatted all the time (sort of on-line indent).
+-   Several top-level windows in one Vim session.  Be able to use a different
+    font in each top-level window.
+-   Allow editing above start and below end of buffer (flag in 'virtualedit').
+-   Smart cut/paste: recognize words and adjust spaces before/after them.
+-   Add open mode, use it when terminal has no cursor positioning.
+-   Special "drawing mode": a line is drawn where the cursor is moved to.
+    Backspace deletes along the line (from jvim).
+-   Implement ":Bset", set option in all buffers.  Also ":Wset", set in all
+    windows, ":Aset, set in all arguments and ":Tset", set in all files
+    mentioned in the tags file.
+    Add buffer/arg range, like in ":2,5B%s/..." (do we really need this???)
+    Add search string: "B/*.c/%s/.."?  Or ":F/*.c/%s/.."?
+-   Support for underlining (underscore-BS-char), bold (char-BS-char) and other
+    standout modes switched on/off with , 'overstrike' option (Reiter).
+-   Add vertical mode (Paul Jury, Demirel): "5vdw" deletes a word in five
+    lines, "3vitextESC" will insert "text" in three lines, etc..
+4   Recognize l, #, p as 'flags' to EX commands:
+    :g/RE/#l shall print lines with line numbers and in list format.
+    :g/RE/dp shall print lines that are deleted.
+    POSIX: Commands where flags shall apply to all lines written: list,
+    number, open, print, substitute, visual, &, z. For other commands, flags
+    shall apply to the current line after the command completes.  Examples:
+    :7,10j #l Join the lines 7-10 and print the result in list
+-   Allow two or more users to edit the same file at the same time.  Changes
+    are reflected in each Vim immediately.  Could work with local files but
+    also over the internet.  See http://www.codingmonkeys.de/subethaedit/.
+
+
+vim:tw=78:sw=4:sts=4:ts=8:ft=help:norl:
+vim: set fo+=n :
diff --git a/runtime/doc/uganda.txt b/runtime/doc/uganda.txt
new file mode 100644
index 0000000..ebdf7c7
--- /dev/null
+++ b/runtime/doc/uganda.txt
@@ -0,0 +1,277 @@
+*uganda.txt*    For Vim version 7.0aa.  Last change: 2004 May 12
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+			*uganda* *Uganda* *copying* *copyright* *license*
+SUMMARY
+								*iccf* *ICCF*
+Vim is Charityware.  You can use and copy it as much as you like, but you are
+encouraged to make a donation for needy children in Uganda.  Please see |kcc|
+below or visit the ICCF web site, available at these URLs:
+
+	http://iccf-holland.org/
+	http://www.vim.org/iccf/
+
+You can also sponsor the development of Vim.  Vim sponsors can vote for
+features.  See |sponsor|.
+
+The Open Publication License applies to the Vim documentation, see
+|manual-copyright|.
+
+=== begin of license ===
+
+VIM LICENSE
+
+I)  There are no restrictions on distributing unmodified copies of Vim except
+    that they must include this license text.  You can also distribute
+    unmodified parts of Vim, likewise unrestricted except that they must
+    include this license text.  You are also allowed to include executables
+    that you made from the unmodified Vim sources, plus your own usage
+    examples and Vim scripts.
+
+II) It is allowed to distribute a modified (or extended) version of Vim,
+    including executables and/or source code, when the following four
+    conditions are met:
+    1) This license text must be included unmodified.
+    2) The modified Vim must be distributed in one of the following five ways:
+       a) If you make changes to Vim yourself, you must clearly describe in
+	  the distribution how to contact you.  When the maintainer asks you
+	  (in any way) for a copy of the modified Vim you distributed, you
+	  must make your changes, including source code, available to the
+	  maintainer without fee.  The maintainer reserves the right to
+	  include your changes in the official version of Vim.  What the
+	  maintainer will do with your changes and under what license they
+	  will be distributed is negotiable.  If there has been no negotiation
+	  then this license, or a later version, also applies to your changes.
+	  The current maintainer is Bram Moolenaar <Bram@vim.org>.  If this
+	  changes it will be announced in appropriate places (most likely
+	  vim.sf.net, www.vim.org and/or comp.editors).  When it is completely
+	  impossible to contact the maintainer, the obligation to send him
+	  your changes ceases.  Once the maintainer has confirmed that he has
+	  received your changes they will not have to be sent again.
+       b) If you have received a modified Vim that was distributed as
+	  mentioned under a) you are allowed to further distribute it
+	  unmodified, as mentioned at I).  If you make additional changes the
+	  text under a) applies to those changes.
+       c) Provide all the changes, including source code, with every copy of
+	  the modified Vim you distribute.  This may be done in the form of a
+	  context diff.  You can choose what license to use for new code you
+	  add.  The changes and their license must not restrict others from
+	  making their own changes to the official version of Vim.
+       d) When you have a modified Vim which includes changes as mentioned
+	  under c), you can distribute it without the source code for the
+	  changes if the following three conditions are met:
+	  - The license that applies to the changes permits you to distribute
+	    the changes to the Vim maintainer without fee or restriction, and
+	    permits the Vim maintainer to include the changes in the official
+	    version of Vim without fee or restriction.
+	  - You keep the changes for at least three years after last
+	    distributing the corresponding modified Vim.  When the maintainer
+	    or someone who you distributed the modified Vim to asks you (in
+	    any way) for the changes within this period, you must make them
+	    available to him.
+	  - You clearly describe in the distribution how to contact you.  This
+	    contact information must remain valid for at least three years
+	    after last distributing the corresponding modified Vim, or as long
+	    as possible.
+       e) When the GNU General Public License (GPL) applies to the changes,
+	  you can distribute the modified Vim under the GNU GPL version 2 or
+	  any later version.
+    3) A message must be added, at least in the output of the ":version"
+       command and in the intro screen, such that the user of the modified Vim
+       is able to see that it was modified.  When distributing as mentioned
+       under 2)e) adding the message is only required for as far as this does
+       not conflict with the license used for the changes.
+    4) The contact information as required under 2)a) and 2)d) must not be
+       removed or changed, except that the person himself can make
+       corrections.
+
+III) If you distribute a modified version of Vim, you are encouraged to use
+     the Vim license for your changes and make them available to the
+     maintainer, including the source code.  The preferred way to do this is
+     by e-mail or by uploading the files to a server and e-mailing the URL.
+     If the number of changes is small (e.g., a modified Makefile) e-mailing a
+     context diff will do.  The e-mail address to be used is
+     <maintainer@vim.org>
+
+IV)  It is not allowed to remove this license from the distribution of the Vim
+     sources, parts of it or from a modified version.  You may use this
+     license for previous Vim releases instead of the license that they came
+     with, at your option.
+
+=== end of license ===
+
+Note:
+
+- If you are happy with Vim, please express that by reading the rest of this
+  file and consider helping needy children in Uganda.
+
+- If you want to support further Vim development consider becoming a
+  |sponsor|.
+
+- According to Richard Stallman the Vim license is GNU GPL compatible.
+  A few minor changes have been made since he checked it, but that should not
+  make a difference.
+
+- If you link Vim with a library that goes under the GNU GPL, this limits
+  further distribution to the GNU GPL.  Also when you didn't actually change
+  anything in Vim.
+
+- Once a change is included that goes under the GNU GPL, this forces all
+  further changes to also be made under the GNU GPL or a compatible license.
+
+- If you distribute a modified version of Vim, you can include your name and
+  contact information with the "--with-modified-by" configure argument or the
+  MODIFIED_BY define.
+
+==============================================================================
+Kibaale Children's Centre						*kcc*
+
+Kibaale Children's Centre (KCC) is located in Kibaale, a small town in the
+south of Uganda, near Tanzania, in East Africa.  The area is known as Rakai
+District.  The population is mostly farmers.  Although people are poor, there
+is enough food.  But this district is suffering from AIDS more than any other
+part of the world.  Some say that it started there.  Estimations are that 10
+to 30% of the Ugandans are infected with HIV.  Because parents die, there are
+many orphans.  In this district about 60,000 children have lost one or both
+parents, out of a population of 350,000.  And this is still continuing.
+
+The children need a lot of help.  The KCC is working hard to provide the needy
+with food, medical care and education.  Food and medical care to keep them
+healthy now, and education so that they can take care of themselves in the
+future.  KCC works on a Christian base, but help is given to children of any
+religion.
+
+The key to solving the problems in this area is education.  This has been
+neglected in the past years with president Idi Amin and the following civil
+wars.  Now that the government is stable again, the children and parents have
+to learn how to take care of themselves and how to avoid infections.  There is
+also help for people who are ill and hungry, but the primary goal is to
+prevent people from getting ill and to teach them how to grow healthy food.
+
+Most of the orphans are living in an extended family.  An uncle or older
+sister is taking care of them.  Because these families are big and the income
+(if any) is low, a child is lucky if it gets healthy food.  Clothes, medical
+care and schooling is beyond its reach.  To help these needy children, a
+sponsorship program was put into place.  A child can be financially adopted.
+For a few dollars a month KCC sees to it that the child gets indispensable
+items, is healthy, goes to school and KCC takes care of anything else that
+needs to be done for the child and the family that supports it.
+
+Besides helping the child directly, the environment where the child grows up
+needs to be improved.  KCC helps schools to improve their teaching methods.
+There is a demonstration school at the centre and teacher trainings are given.
+Health workers are being trained, hygiene education is carried out and
+households are stimulated to build a proper latrine.  I helped setting up a
+production site for cement slabs.  These are used to build a good latrine.
+They are sold below cost price.
+
+There is a small clinic at the project, which provides children and their
+family with medical help.  When needed, transport to a hospital is offered.
+Immunization programs are carried out and help is provided when an epidemic is
+breaking out (measles and cholera have been a problem).
+
+Summer 1994 to summer 1995 I spent a whole year at the centre, working as a
+volunteer.  I have helped to expand the centre and worked in the area of water
+and sanitation.  I learned that the help that the KCC provides really helps.
+Now that I'm back in Holland, I would like to continue supporting KCC.  To do
+this I'm raising funds and organizing the sponsorship program.  Please
+consider one of these possibilities:
+
+1.  Sponsor a child in primary school: 17 euro a month (or more).
+2.  Sponsor a child in secondary school: 25 euro a month (or more).
+3.  Sponsor the clinic: Any amount a month or quarter
+4.  A one-time donation
+
+Compared with other organizations that do child sponsorship the amounts are
+very low.  This is because the money goes directly to the centre.  Less than
+5% is used for administration.  This is possible because this is a small
+organization that works with volunteers.  If you would like to sponsor a
+child, you should have the intention to do this for at least one year.
+
+How do you know that the money will be spent right?  First of all you have my
+personal guarantee as the author of Vim.  I trust the people that are working
+at the centre, I know them personally.  Further more, the centre is
+co-sponsored and inspected by World Vision, Save the Children Fund and
+International Child Care Fund.  The centre is visited about once a year to
+check the progress (at our own cost).  I have visited the centre myself in
+1996, 1998, 2000, 2001 and 2003.  The visit reports are on the ICCF web site.
+
+If you have any further questions, send me e-mail: <Bram@vim.org>.
+
+The address of the centre is:
+			Kibaale Children's Centre
+			p.o. box 1658
+			Masaka, Uganda, East Africa
+
+Sending money:
+
+Check the ICCF web site for the latest information!  See |iccf| for the URL.
+
+
+USA and Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada.  They
+		take care of the Canadian sponsors for the children in
+		Kibaale.  You can send them a one time donation directly.
+		Please send me a note so that know what has been donated
+		because of Vim.  Ask KCF for information about sponsorship.
+			Kibaale Children's Fund c/o Pacific Academy
+			10238-168 Street
+			Surrey, B.C. V4N 1Z4
+			Canada
+			Phone: 604-581-5353
+		If you make a donation to Kibaale Children's Fund (KCF) you
+		will receive a tax receipt which can be submitted with your
+		tax return (under the Free Trade Agreement tax receipts issued
+		by an organization registered in Canada are fully accepted by
+		the IRS in the USA, with a few conditions).
+
+Holland:	Transfer to the account of "Stichting ICCF Holland" in Venlo.
+		This will allow for tax deduction (if you live in Holland)!
+			Postbank, nr. 4548774
+
+Germany:	It is possible to make donations that allow for a tax return.
+		Check the ICCF web site for the latest information:
+			http://iccf-holland.org/germany.html
+
+World:		Use a postal money order.  That should be possible from any
+		country, mostly from the post office.  Use this name (which is
+		in my passport): "Abraham Moolenaar".  Use Euro for the
+		currency if possible.
+
+Europe:		Use a bank transfer if possible.  Your bank should have a form
+		that you can use for this.  See "Others" below for the swift
+		code and IBAN number.
+		Any other method should work.  Ask for information about
+		sponsorship.
+
+Credit Card:	You can use PayPal to send money with a Credit card.  This is
+		the most widely used Internet based payment system.  It's
+		really simple to use.  Use this link to find more info:
+			https://www.paypal.com/affil/pal=Bram%40moolenaar.net
+		The e-mail address for sending the money to is:
+			Bram@iccf-holland.org
+		For amounts above $150 sending a cheque is preferred.
+
+Others:		Transfer to one of these accounts if possible:
+		    Postbank, account 4548774
+				Swift code: INGB NL 2A
+				IBAN: NL47 PSTB 0004 5487 74
+			under the name "stichting ICCF Holland", Venlo
+		    If that doesn't work:
+		    Rabobank Venlo, account 3765.05.117
+				Swift code: RABO NL 2U
+			under the name "Bram Moolenaar", Venlo
+		Otherwise, send a cheque in euro or US dollars to the address
+		below.  Minimal amount: $70 (my bank does not accept smaller
+		amounts for foreign cheques, sorry)
+
+Address to send cheques to:
+			stichting ICCF Holland
+			Bram Moolenaar
+			Clematisstraat 30
+			5925 BE  Venlo
+			The Netherlands
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/undo.txt b/runtime/doc/undo.txt
new file mode 100644
index 0000000..433fc75
--- /dev/null
+++ b/runtime/doc/undo.txt
@@ -0,0 +1,117 @@
+*undo.txt*      For Vim version 7.0aa.  Last change: 2003 Oct 21
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Undo and redo						*undo-redo*
+
+The basics are explained in section |02.5| of the user manual.
+
+1. Undo and redo commands	|undo-commands|
+2. Two ways of undo		|undo-two-ways|
+3. Remarks about undo		|undo-remarks|
+
+==============================================================================
+1. Undo and redo commands				*undo-commands*
+
+<Undo>		or					*undo* *<Undo>* *u*
+u			Undo [count] changes.  {Vi: only one level}
+
+							*:u* *:un* *:undo*
+:u[ndo]			Undo one change.  {Vi: only one level}
+
+							*CTRL-R*
+CTRL-R			Redo [count] changes which were undone.  {Vi: redraw
+			screen}
+
+							*:red* *:redo* *redo*
+:red[o]			Redo one change which was undone.  {Vi: no redo}
+
+							*U*
+U			Undo all latest changes on one line.  {Vi: while not
+			moved off of it}
+
+The last changes are remembered.  You can use the undo and redo commands above
+to revert the text to how it was before each change.  You can also apply the
+changes again, getting back the text before the undo.
+
+The "U" command is treated by undo/redo just like any other command.  Thus a
+"u" command undoes a "U" command and a 'CTRL-R' command redoes it again.  When
+mixing "U", "u" and 'CTRL-R' you will notice that the "U" command will
+restore the situation of a line to before the previous "U" command.  This may
+be confusing.  Try it out to get used to it.
+The "U" command will always mark the buffer as changed.  When "U" changes the
+buffer back to how it was without changes, it is still considered changed.
+Use "u" to undo changes until the buffer becomes unchanged.
+
+==============================================================================
+2. Two ways of undo					*undo-two-ways*
+
+How undo and redo commands work depends on the 'u' flag in 'cpoptions'.
+There is the Vim way ('u' excluded) and the vi-compatible way ('u' included).
+In the Vim way, "uu" undoes two changes.  In the Vi-compatible way, "uu" does
+nothing (undoes an undo).
+
+'u' excluded, the Vim way:
+You can go back in time with the undo command.  You can then go forward again
+with the redo command.  If you make a new change after the undo command,
+the redo will not be possible anymore.
+
+'u' included, the Vi-compatible way:
+The undo command undoes the previous change, and also the previous undo command.
+The redo command repeats the previous undo command.  It does NOT repeat a
+change command, use "." for that.
+
+Examples	Vim way			Vi-compatible way	~
+"uu"		two times undo		no-op
+"u CTRL-R"	no-op			two times undo
+
+Rationale:  Nvi uses the "." command instead of CTRL-R.  Unfortunately, this
+	    is not Vi compatible.  For example "dwdwu." in Vi deletes two
+	    words, in Nvi it does nothing.
+
+==============================================================================
+3. Remarks about undo					*undo-remarks*
+
+The number of changes that are remembered is set with the 'undolevels' option.
+If it is zero, the Vi-compatible way is always used.  If it is negative no
+undo is possible.  Use this if you are running out of memory.
+
+Marks for the buffer ('a to 'z) are also saved and restored, together with the
+text.  {Vi does this a little bit different}
+
+When all changes have been undone, the buffer is not considered to be changed.
+It is then possible to exit Vim with ":q" instead of ":q!" {not in Vi}.  Note
+that this is relative to the last write of the file.  Typing "u" after ":w"
+actually changes the buffer, compared to what was written, so the buffer is
+considered changed then.
+
+When manual |folding| is being used, the folds are not saved and restored.
+Only changes completely within a fold will keep the fold as it was, because
+the first and last line of the fold don't change.
+
+The numbered registers can also be used for undoing deletes.  Each time you
+delete text, it is put into register "1.  The contents of register "1 are
+shifted to "2, etc.  The contents of register "9 are lost.  You can now get
+back the most recent deleted text with the put command: '"1P'.  (also, if the
+deleted text was the result of the last delete or copy operation, 'P' or 'p'
+also works as this puts the contents of the unnamed register).  You can get
+back the text of three deletes ago with '"3P'.
+
+						*redo-register*
+If you want to get back more than one part of deleted text, you can use a
+special feature of the repeat command ".".  It will increase the number of the
+register used.  So if you first do ""1P", the following "." will result in a
+'"2P'.  Repeating this will result in all numbered registers being inserted.
+
+Example:	If you deleted text with 'dd....' it can be restored with
+		'"1P....'.
+
+If you don't know in which register the deleted text is, you can use the
+:display command.  An alternative is to try the first register with '"1P', and
+if it is not what you want do 'u.'.  This will remove the contents of the
+first put, and repeat the put command for the second register.  Repeat the
+'u.' until you got what you want.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_01.txt b/runtime/doc/usr_01.txt
new file mode 100644
index 0000000..39a603a
--- /dev/null
+++ b/runtime/doc/usr_01.txt
@@ -0,0 +1,180 @@
+*usr_01.txt*	For Vim version 7.0aa.  Last change: 2004 May 01
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			      About the manuals
+
+
+This chapter introduces the manuals available with Vim.  Read this to know the
+conditions under which the commands are explained.
+
+|01.1|	Two manuals
+|01.2|	Vim installed
+|01.3|	Using the Vim tutor
+|01.4|	Copyright
+
+     Next chapter: |usr_02.txt|  The first steps in Vim
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*01.1*	Two manuals
+
+The Vim documentation consists of two parts:
+
+1. The User manual
+   Task oriented explanations, from simple to complex.  Reads from start to
+   end like a book.
+
+2. The Reference manual
+   Precise description of how everything in Vim works.
+
+The notation used in these manuals is explained here: |notation|
+
+
+JUMPING AROUND
+
+The text contains hyperlinks between the two parts, allowing you to quickly
+jump between the description of an editing task and a precise explanation of
+the commands and options used for it.  Use these two commands:
+
+	Press  CTRL-]  to jump to a subject under the cursor.
+	Press  CTRL-O  to jump back (repeat to go further back).
+
+Many links are in vertical bars, like this: |bars|.  An option name, like
+'number', a command in double quotes like ":write" and any other word can also
+be used as a link.  Try it out: Move the cursor to  CTRL-]  and press CTRL-]
+on it.
+
+Other subjects can be found with the ":help" command, see |help.txt|.
+
+==============================================================================
+*01.2*	Vim installed
+
+Most of the manuals assume that Vim has been properly installed.  If you
+didn't do that yet, or if Vim doesn't run properly (e.g., files can't be found
+or in the GUI the menus do not show up) first read the chapter on
+installation: |usr_90.txt|.
+							*not-compatible*
+The manuals often assume you are using Vim with Vi-compatibility switched
+off.  For most commands this doesn't matter, but sometimes it is important,
+e.g., for multi-level undo.  An easy way to make sure you are using the right
+setup, copy the example vimrc file.  By doing this inside Vim you don't have
+to check out where it is located.  How to do this depends on the system you
+are using:
+
+Unix: >
+	:!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc
+MS-DOS, MS-Windows, OS/2: >
+	:!copy $VIMRUNTIME/vimrc_example.vim $VIM/_vimrc
+Amiga: >
+	:!copy $VIMRUNTIME/vimrc_example.vim $VIM/.vimrc
+
+If the file already exists you probably want to keep it.
+
+If you start Vim now, the 'compatible' option should be off.  You can check it
+with this command: >
+
+	:set compatible?
+
+If it responds with "nocompatible" you are doing well.  If the response is
+"compatible" you are in trouble.  You will have to find out why the option is
+still set.  Perhaps the file you wrote above is not found.  Use this command
+to find out: >
+
+	:scriptnames
+
+If your file is not in the list, check its location and name.  If it is in the
+list, there must be some other place where the 'compatible' option is switched
+back on.
+
+For more info see |vimrc| and |compatible-default|.
+
+	Note:
+	This manual is about using Vim in the normal way.  There is an
+	alternative called "evim" (easy Vim).  This is still Vim, but used in
+	a way that resembles a click-and-type editor like Notepad.  It always
+	stays in Insert mode, thus it feels very different.  It is not
+	explained in the user manual, since it should be mostly self
+	explanatory.  See |evim-keys| for details.
+
+==============================================================================
+*01.3*	Using the Vim tutor				*tutor* *vimtutor*
+
+Instead of reading the text (boring!) you can use the vimtutor to learn your
+first Vim commands.  This is a 30 minute tutorial that teaches the most basic
+Vim functionality hands-on.
+
+On Unix and MS-Windows, if Vim has been properly installed, you can start it
+from the shell:
+>
+	vimtutor
+
+This will make a copy of the tutor file, so that you can edit it without
+the risk of damaging the original.
+   There are a few translated versions of the tutor.  To find out if yours is
+available, use the two-letter language code.  For French: >
+
+	vimtutor fr
+
+For OpenVMS, if Vim has been properly installed, you can start vimtutor from a
+VMS prompt with: >
+
+	@VIM:vimtutor
+
+Optionally add the two-letter language code as above.
+
+
+On other systems, you have to do a little work:
+
+1. Copy the tutor file.  You can do this with Vim (it knows where to find it):
+>
+	vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q'
+<
+   This will write the file "TUTORCOPY" in the current directory.  To use a
+translated version of the tutor, append the two-letter language code to the
+filename.  For French:
+>
+	vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor.fr' -c 'w! TUTORCOPY' -c 'q'
+<
+2. Edit the copied file with Vim:
+>
+	vim -u NONE -c "set nocp" TUTORCOPY
+<
+   The extra arguments make sure Vim is started in a good mood.
+
+3. Delete the copied file when you are finished with it:
+>
+	del TUTORCOPY
+<
+==============================================================================
+*01.4*	Copyright					*manual-copyright*
+
+The Vim user manual and reference manual are Copyright (c) 1988-2003 by Bram
+Moolenaar. This material may be distributed only subject to the terms and
+conditions set forth in the Open Publication License, v1.0 or later.  The
+latest version is presently available at:
+	     http://www.opencontent.org/opl.shtml
+
+People who contribute to the manuals must agree with the above copyright
+notice.
+							*frombook*
+Parts of the user manual come from the book "Vi IMproved - Vim" by Steve
+Oualline (published by New Riders Publishing, ISBN: 0735710015).  The Open
+Publication License applies to this book.  Only selected parts are included
+and these have been modified (e.g., by removing the pictures, updating the
+text for Vim 6.0 and fixing mistakes).  The omission of the |frombook| tag
+does not mean that the text does not come from the book.
+
+Many thanks to Steve Oualline and New Riders for creating this book and
+publishing it under the OPL!  It has been a great help while writing the user
+manual.  Not only by providing literal text, but also by setting the tone and
+style.
+
+If you make money through selling the manuals, you are strongly encouraged to
+donate part of the profit to help AIDS victims in Uganda.  See |iccf|.
+
+==============================================================================
+
+Next chapter: |usr_02.txt|  The first steps in Vim
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_02.txt b/runtime/doc/usr_02.txt
new file mode 100644
index 0000000..7d3206b
--- /dev/null
+++ b/runtime/doc/usr_02.txt
@@ -0,0 +1,504 @@
+*usr_02.txt*	For Vim version 7.0aa.  Last change: 2004 Jun 08
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			    The first steps in Vim
+
+
+This chapter provides just enough information to edit a file with Vim.  Not
+well or fast, but you can edit.  Take some time to practice with these
+commands, they form the base for what follows.
+
+|02.1|	Running Vim for the First Time
+|02.2|	Inserting text
+|02.3|	Moving around
+|02.4|	Deleting characters
+|02.5|	Undo and Redo
+|02.6|	Other editing commands
+|02.7|	Getting out
+|02.8|	Finding help
+
+     Next chapter: |usr_03.txt|  Moving around
+ Previous chapter: |usr_01.txt|  About the manuals
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*02.1*	Running Vim for the First Time
+
+To start Vim, enter this command: >
+
+	gvim file.txt
+
+In UNIX you can type this at any command prompt.  If you are running Microsoft
+Windows, open an MS-DOS prompt window and enter the command.
+   In either case, Vim starts editing a file called file.txt.  Because this
+is a new file, you get a blank window. This is what your screen will look
+like:
+
+	+---------------------------------------+
+	|#					|
+	|~					|
+	|~					|
+	|~					|
+	|~					|
+	|"file.txt" [New file]			|
+	+---------------------------------------+
+		('#" is the cursor position.)
+
+The tilde (~) lines indicate lines not in the file.  In other words, when Vim
+runs out of file to display, it displays tilde lines.  At the bottom of the
+screen, a message line indicates the file is named file.txt and shows that you
+are creating a new file.  The message information is temporary and other
+information overwrites it.
+
+
+THE VIM COMMAND
+
+The gvim command causes the editor to create a new window for editing.  If you
+use this command: >
+
+	vim file.txt
+
+the editing occurs inside your command window.  In other words, if you are
+running inside an xterm, the editor uses your xterm window.  If you are using
+an MS-DOS command prompt window under Microsoft Windows, the editing occurs
+inside this window.  The text in the window will look the same for both
+versions, but with gvim you have extra features, like a menu bar.  More about
+that later.
+
+==============================================================================
+*02.2*	Inserting text
+
+The Vim editor is a modal editor.  That means that the editor behaves
+differently, depending on which mode you are in.  The two basic modes are
+called Normal mode and Insert mode.  In Normal mode the characters you type
+are commands.  In Insert mode the characters are inserted as text.
+   Since you have just started Vim it will be in Normal mode.  To start Insert
+mode you type the "i" command (i for Insert).  Then you can enter
+the text.  It will be inserted into the file.  Do not worry if you make
+mistakes; you can correct them later.  To enter the following programmer's
+limerick, this is what you type: >
+
+	iA very intelligent turtle
+	Found programming UNIX a hurdle
+
+After typing "turtle" you press the <Enter> key to start a new line.  Finally
+you press the <Esc> key to stop Insert mode and go back to Normal mode.  You
+now have two lines of text in your Vim window:
+
+	+---------------------------------------+
+	|A very intelligent turtle		|
+	|Found programming UNIX a hurdle	|
+	|~					|
+	|~					|
+	|					|
+	+---------------------------------------+
+
+
+WHAT IS THE MODE?
+
+To be able to see what mode you are in, type this command: >
+
+	:set showmode
+
+You will notice that when typing the colon Vim moves the cursor to the last
+line of the window.  That's where you type colon commands (commands that start
+with a colon).  Finish this command by pressing the <Enter> key (all commands
+that start with a colon are finished this way).
+   Now, if you type the "i" command Vim will display --INSERT-- at the bottom
+of the window.  This indicates you are in Insert mode.
+
+	+---------------------------------------+
+	|A very intelligent turtle		|
+	|Found programming UNIX a hurdle	|
+	|~					|
+	|~					|
+	|-- INSERT --				|
+	+---------------------------------------+
+
+If you press <Esc> to go back to Normal mode the last line will be made blank.
+
+
+GETTING OUT OF TROUBLE
+
+One of the problems for Vim novices is mode confusion, which is caused by
+forgetting which mode you are in or by accidentally typing a command that
+switches modes.  To get back to Normal mode, no matter what mode you are in,
+press the <Esc> key.  Sometimes you have to press it twice.  If Vim beeps back
+at you, you already are in Normal mode.
+
+==============================================================================
+*02.3*	Moving around
+
+After you return to Normal mode, you can move around by using these keys:
+
+	h   left						*hjkl*
+	j   down
+	k   up
+	l   right
+
+At first, it may appear that these commands were chosen at random.  After all,
+who ever heard of using l for right?  But actually, there is a very good
+reason for these choices: Moving the cursor is the most common thing you do in
+an editor, and these keys are on the home row of your right hand.  In other
+words, these commands are placed where you can type them the fastest
+(especially when you type with ten fingers).
+
+	Note:
+	You can also move the cursor by using the arrow keys.  If you do,
+	however, you greatly slow down your editing because to press the arrow
+	keys, you must move your hand from the text keys to the arrow keys.
+	Considering that you might be doing it hundreds of times an hour, this
+	can take a significant amount of time.
+	   Also, there are keyboards which do not have arrow keys, or which
+	locate them in unusual places; therefore, knowing the use of the hjkl
+	keys helps in those situations.
+
+One way to remember these commands is that h is on the left, l is on the
+right and j points down.  In a picture: >
+
+		       k
+		   h     l
+		     j
+
+The best way to learn these commands is by using them.  Use the "i" command to
+insert some more lines of text.  Then use the hjkl keys to move around and
+insert a word somewhere.  Don't forget to press <Esc> to go back to Normal
+mode.  The |vimtutor| is also a nice way to learn by doing.
+
+For Japanese users, Hiroshi Iwatani suggested using this:
+
+			Komsomolsk
+			    ^
+			    |
+	   Huan Ho	<--- --->  Los Angeles
+	(Yellow river)	    |
+			    v
+			  Java (the island, not the programming language)
+
+==============================================================================
+*02.4*	Deleting characters
+
+To delete a character, move the cursor over it and type "x".  (This is a
+throwback to the old days of the typewriter, when you deleted things by typing
+xxxx over them.)  Move the cursor to the beginning of the first line, for
+example, and type xxxxxxx (seven x's) to delete "A very ".  The result should
+look like this:
+
+	+---------------------------------------+
+	|intelligent turtle			|
+	|Found programming UNIX a hurdle	|
+	|~					|
+	|~					|
+	|					|
+	+---------------------------------------+
+
+Now you can insert new text, for example by typing: >
+
+	iA young <Esc>
+
+This begins an insert (the i), inserts the words "A young", and then exits
+insert mode (the final <Esc>).	The result:
+
+	+---------------------------------------+
+	|A young intelligent turtle		|
+	|Found programming UNIX a hurdle	|
+	|~					|
+	|~					|
+	|					|
+	+---------------------------------------+
+
+
+DELETING A LINE
+
+To delete a whole line use the "dd" command.  The following line will
+then move up to fill the gap:
+
+	+---------------------------------------+
+	|Found programming UNIX a hurdle	|
+	|~					|
+	|~					|
+	|~					|
+	|					|
+	+---------------------------------------+
+
+
+DELETING A LINE BREAK
+
+In Vim you can join two lines together, which means that the line break
+between them is deleted.  The "J" command does this.
+   Take these two lines:
+
+	A young intelligent ~
+	turtle ~
+
+Move the cursor to the first line and press "J":
+
+	A young intelligent turtle ~
+
+==============================================================================
+*02.5*	Undo and Redo
+
+Suppose you delete too much.  Well, you can type it in again, but an easier
+way exists.  The "u" command undoes the last edit.  Take a look at this in
+action: After using "dd" to delete the first line, "u" brings it back.
+   Another one: Move the cursor to the A in the first line:
+
+	A young intelligent turtle ~
+
+Now type xxxxxxx to delete "A young".  The result is as follows:
+
+	 intelligent turtle ~
+
+Type "u" to undo the last delete.  That delete removed the g, so the undo
+restores the character.
+
+	g intelligent turtle ~
+
+The next u command restores the next-to-last character deleted:
+
+	ng intelligent turtle ~
+
+The next u command gives you the u, and so on:
+
+	ung intelligent turtle ~
+	oung intelligent turtle ~
+	young intelligent turtle ~
+	 young intelligent turtle ~
+	A young intelligent turtle ~
+
+	Note:
+	If you type "u" twice, and the result is that you get the same text
+	back, you have Vim configured to work Vi compatible.  Look here to fix
+	this: |not-compatible|.
+	   This text assumes you work "The Vim Way".  You might prefer to use
+	the good old Vi way, but you will have to watch out for small
+	differences in the text then.
+
+
+REDO
+
+If you undo too many times, you can press CTRL-R (redo) to reverse the
+preceding command.  In other words, it undoes the undo.  To see this in
+action, press CTRL-R twice.  The character A and the space after it disappear:
+
+	young intelligent turtle ~
+
+There's a special version of the undo command, the "U" (undo line) command.
+The undo line command undoes all the changes made on the last line that was
+edited.  Typing this command twice cancels the preceding "U".
+
+	A very intelligent turtle ~
+	  xxxx				Delete very
+
+	A intelligent turtle ~
+		      xxxxxx		Delete turtle
+
+	A intelligent ~
+					Restore line with "U"
+	A very intelligent turtle ~
+					Undo "U" with "u"
+	A intelligent ~
+
+The "U" command is a change by itself, which the "u" command undoes and CTRL-R
+redoes.  This might be a bit confusing.  Don't worry, with "u" and CTRL-R you
+can go to any of the situations you had.
+
+==============================================================================
+*02.6*	Other editing commands
+
+Vim has a large number of commands to change the text.  See |Q_in| and below.
+Here are a few often used ones.
+
+
+APPENDING
+
+The "i" command inserts a character before the character under the cursor.
+That works fine; but what happens if you want to add stuff to the end of the
+line?  For that you need to insert text after the cursor.  This is done with
+the "a" (append) command.
+   For example, to change the line
+
+	and that's not saying much for the turtle. ~
+to
+	and that's not saying much for the turtle!!! ~
+
+move the cursor over to the dot at the end of the line. Then type "x" to
+delete the period.  The cursor is now positioned at the end of the line on the
+e in turtle.  Now type >
+
+	a!!!<Esc>
+
+to append three exclamation points after the e in turtle:
+
+	and that's not saying much for the turtle!!! ~
+
+
+OPENING UP A NEW LINE
+
+The "o" command creates a new, empty line below the cursor and puts Vim in
+Insert mode.  Then you can type the text for the new line.
+   Suppose the cursor is somewhere in the first of these two lines:
+
+	A very intelligent turtle ~
+	Found programming UNIX a hurdle ~
+
+If you now use the "o" command and type new text: >
+
+	oThat liked using Vim<Esc>
+
+The result is:
+
+	A very intelligent turtle ~
+	That liked using Vim ~
+	Found programming UNIX a hurdle ~
+
+The "O" command (uppercase) opens a line above the cursor.
+
+
+USING A COUNT
+
+Suppose you want to move up nine lines.  You can type "kkkkkkkkk" or you can
+enter the command "9k".  In fact, you can precede many commands with a number.
+Earlier in this chapter, for instance, you added three exclamation points to
+the end of a line by typing "a!!!<Esc>".  Another way to do this is to use the
+command "3a!<Esc>".  The count of 3 tells the command that follows to triple
+its effect.  Similarly, to delete three characters, use the command "3x".  The
+count always comes before the command it applies to.
+
+==============================================================================
+*02.7*	Getting out
+
+To exit, use the "ZZ" command.  This command writes the file and exits.
+
+	Note:
+	Unlike many other editors, Vim does not automatically make a backup
+	file.  If you type "ZZ", your changes are committed and there's no
+	turning back.  You can configure the Vim editor to produce backup
+	files, see |07.4|.
+
+
+DISCARDING CHANGES
+
+Sometimes you will make a sequence of changes and suddenly realize you were
+better off before you started.  Not to worry; Vim has a
+quit-and-throw-things-away command.  It is: >
+
+	:q!
+
+Don't forget to press <Enter> to finish the command.
+
+For those of you interested in the details, the three parts of this command
+are the colon (:), which enters Command-line mode; the q command, which tells
+the editor to quit; and the override command modifier (!).
+   The override command modifier is needed because Vim is reluctant to throw
+away changes.  If you were to just type ":q", Vim would display an error
+message and refuse to exit:
+
+	E37: No write since last change (use ! to override) ~
+
+By specifying the override, you are in effect telling Vim, "I know that what
+I'm doing looks stupid, but I'm a big boy and really want to do this."
+
+If you want to continue editing with Vim: The ":e!" command reloads the
+original version of the file.
+
+==============================================================================
+*02.8*	Finding help
+
+Everything you always wanted to know can be found in the Vim help files.
+Don't be afraid to ask!
+   To get generic help use this command: >
+
+	:help
+
+You could also use the first function key <F1>.  If your keyboard has a <Help>
+key it might work as well.
+   If you don't supply a subject, ":help" displays the general help window.
+The creators of Vim did something very clever (or very lazy) with the help
+system: They made the help window a normal editing window.  You can use all
+the normal Vim commands to move through the help information.  Therefore h, j,
+k, and l move left, down, up and right.
+   To get out of the help window, use the same command you use to get out of
+the editor: "ZZ".  This will only close the help window, not exit Vim.
+
+As you read the help text, you will notice some text enclosed in vertical bars
+(for example, |help|).  This indicates a hyperlink.  If you position the
+cursor anywhere between the bars and press CTRL-] (jump to tag), the help
+system takes you to the indicated subject. (For reasons not discussed here,
+the Vim terminology for a hyperlink is tag.  So CTRL-] jumps to the location
+of the tag given by the word under the cursor.)
+   After a few jumps, you might want to go back.  CTRL-T (pop tag) takes you
+back to the preceding position.  CTRL-O (jump to older position) also works
+nicely here.
+   At the top of the help screen, there is the notation *help.txt*.  This name
+between "*" characters is used by the help system to define a tag (hyperlink
+destination).
+   See |29.1| for details about using tags.
+
+To get help on a given subject, use the following command: >
+
+	:help {subject}
+
+To get help on the "x" command, for example, enter the following: >
+
+	:help x
+
+To find out how to delete text, use this command: >
+
+	:help deleting
+
+To get a complete index of all Vim commands, use the following command: >
+
+	:help index
+
+When you need to get help for a control character command (for example,
+CTRL-A), you need to spell it with the prefix "CTRL-". >
+
+	:help CTRL-A
+
+The Vim editor has many different modes.  By default, the help system displays
+the normal-mode commands.  For example, the following command displays help
+for the normal-mode CTRL-H command: >
+
+	:help CTRL-H
+
+To identify other modes, use a mode prefix.  If you want the help for the
+insert-mode version of a command, use "i_".  For CTRL-H this gives you the
+following command: >
+
+	:help i_CTRL-H
+
+When you start the Vim editor, you can use several command-line arguments.
+These all begin with a dash (-).  To find what the -t argument does, for
+example, use the command: >
+
+	:help -t
+
+The Vim editor has a number of options that enable you to configure and
+customize the editor.  If you want help for an option, you need to enclose it
+in single quotation marks.  To find out what the 'number' option does, for
+example, use the following command: >
+
+	:help 'number'
+
+The table with all mode prefixes can be found here: |help-context|.
+
+Special keys are enclosed in angle brackets. To find help on the up-arrow key
+in Insert mode, for instance, use this command: >
+
+	:help i_<Up>
+
+If you see an error message that you don't understand, for example:
+
+	E37: No write since last change (use ! to override) ~
+
+You can use the error ID at the start to find help about it: >
+
+	:help E37
+
+==============================================================================
+
+Next chapter: |usr_03.txt|  Moving around
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_03.txt b/runtime/doc/usr_03.txt
new file mode 100644
index 0000000..f2ef2af
--- /dev/null
+++ b/runtime/doc/usr_03.txt
@@ -0,0 +1,654 @@
+*usr_03.txt*	For Vim version 7.0aa.  Last change: 2004 Jan 17
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			     Moving around
+
+
+Before you can insert or delete text the cursor has to be moved to the right
+place.  Vim has a large number of commands to position the cursor.  This
+chapter shows you how to use the most important ones.  You can find a list of
+these commands below |Q_lr|.
+
+|03.1|	Word movement
+|03.2|	Moving to the start or end of a line
+|03.3|	Moving to a character
+|03.4|	Matching a paren
+|03.5|	Moving to a specific line
+|03.6|	Telling where you are
+|03.7|	Scrolling around
+|03.8|	Simple searches
+|03.9|	Simple search patterns
+|03.10|	Using marks
+
+     Next chapter: |usr_04.txt|  Making small changes
+ Previous chapter: |usr_02.txt|  The first steps in Vim
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*03.1*	Word movement
+
+To move the cursor forward one word, use the "w" command.  Like most Vim
+commands, you can use a numeric prefix to move past multiple words.  For
+example, "3w" moves three words.  This figure shows how it works:
+
+	This is a line with example text ~
+	  --->-->->----------------->
+	   w  w  w    3w
+
+Notice that "w" moves to the start of the next word if it already is at the
+start of a word.
+   The "b" command moves backward to the start of the previous word:
+
+	This is a line with example text ~
+	<----<--<-<---------<---
+	   b   b b    2b      b
+
+There is also the "e" command that moves to the next end of a word and "ge",
+which moves to the previous end of a word:
+
+	This is a line with example text ~
+	   <-   <--- ----->   ---->
+	   ge    ge     e       e
+
+If you are at the last word of a line, the "w" command will take you to the
+first word in the next line.  Thus you can use this to move through a
+paragraph, much faster than using "l".  "b" does the same in the other
+direction.
+
+A word ends at a non-word character, such as a ".", "-" or ")".  To change
+what Vim considers to be a word, see the 'iskeyword' option.
+   It is also possible to move by white-space separated WORDs.  This is not a
+word in the normal sense, that's why the uppercase is used.  The commands for
+moving by WORDs are also uppercase, as this figure shows:
+
+	       ge      b	  w				e
+	       <-     <-	 --->			       --->
+	This is-a line, with special/separated/words (and some more). ~
+	   <----- <-----	 -------------------->	       ----->
+	     gE      B			 W			 E
+
+With this mix of lowercase and uppercase commands, you can quickly move
+forward and backward through a paragraph.
+
+==============================================================================
+*03.2*	Moving to the start or end of a line
+
+The "$" command moves the cursor to the end of a line.  If your keyboard has
+an <End> key it will do the same thing.
+
+The "^" command moves to the first non-blank character of the line.  The "0"
+command (zero) moves to the very first character of the line.  The <Home> key
+does the same thing.  In a picture:
+
+		  ^
+	     <------------
+	.....This is a line with example text ~
+	<-----------------   --------------->
+		0		   $
+
+(the "....." indicates blanks here)
+
+   The "$" command takes a count, like most movement commands.  But moving to
+the end of the line several times doesn't make sense.  Therefore it causes the
+editor to move to the end of another line.  For example, "1$" moves you to
+the end of the first line (the one you're on), "2$" to the end of the next
+line, and so on.
+   The "0" command doesn't take a count argument, because the "0" would be
+part of the count.  Unexpectedly, using a count with "^" doesn't have any
+effect.
+
+==============================================================================
+*03.3*	Moving to a character
+
+One of the most useful movement commands is the single-character search
+command.  The command "fx" searches forward in the line for the single
+character x.  Hint: "f" stands for "Find".
+   For example, you are at the beginning of the following line.  Suppose you
+want to go to the h of human.  Just execute the command "fh" and the cursor
+will be positioned over the h:
+
+	To err is human.  To really foul up you need a computer. ~
+	---------->--------------->
+	    fh		 fy
+
+This also shows that the command "fy" moves to the end of the word really.
+   You can specify a count; therefore, you can go to the "l" of "foul" with
+"3fl":
+
+	To err is human.  To really foul up you need a computer. ~
+		  --------------------->
+			   3fl
+
+The "F" command searches to the left:
+
+	To err is human.  To really foul up you need a computer. ~
+		  <---------------------
+			    Fh
+
+The "tx" command works like the "fx" command, except it stops one character
+before the searched character.  Hint: "t" stands for "To".  The backward
+version of this command is "Tx".
+
+	To err is human.  To really foul up you need a computer. ~
+		   <------------  ------------->
+			Th		tn
+
+These four commands can be repeated with ";".  "," repeats in the other
+direction.  The cursor is never moved to another line.  Not even when the
+sentence continues.
+
+Sometimes you will start a search, only to realize that you have typed the
+wrong command.  You type "f" to search backward, for example, only to realize
+that you really meant "F".  To abort a search, press <Esc>.  So "f<Esc>" is an
+aborted forward search and doesn't do anything.  Note: <Esc> cancels most
+operations, not just searches.
+
+==============================================================================
+*03.4*	Matching a paren
+
+When writing a program you often end up with nested () constructs.  Then the
+"%" command is very handy: It moves to the matching paren.  If the cursor is
+on a "(" it will move to the matching ")".  If it's on a ")" it will move to
+the matching "(".
+
+			    %
+			 <----->
+		if (a == (b * c) / d) ~
+		   <---------------->
+			    %
+
+This also works for [] and {} pairs.  (This can be defined with the
+'matchpairs' option.)
+
+When the cursor is not on a useful character, "%" will search forward to find
+one.  Thus if the cursor is at the start of the line of the previous example,
+"%" will search forward and find the first "(".  Then it moves to its match:
+
+		if (a == (b * c) / d) ~
+		---+---------------->
+			   %
+
+==============================================================================
+*03.5*	Moving to a specific line
+
+If you are a C or C++ programmer, you are familiar with error messages such as
+the following:
+
+	prog.c:33: j   undeclared (first use in this function) ~
+
+This tells you that you might want to fix something on line 33.  So how do you
+find line 33?  One way is to do "9999k" to go to the top of the file and "32j"
+to go down thirty two lines.  It is not a good way, but it works.  A much
+better way of doing things is to use the "G" command.  With a count, this
+command positions you at the given line number.  For example, "33G" puts you
+on line 33.  (For a better way of going through a compiler's error list, see
+|usr_30.txt|, for information on the :make command.)
+   With no argument, "G" positions you at the end of the file.  A quick way to
+go to the start of a file use "gg".  "1G" will do the same, but is a tiny bit
+more typing.
+
+	    |	first line of a file   ^
+	    |	text text text text    |
+	    |	text text text text    |  gg
+	7G  |	text text text text    |
+	    |	text text text text
+	    |	text text text text
+	    V	text text text text    |
+		text text text text    |  G
+		text text text text    |
+		last line of a file    V
+
+Another way to move to a line is using the "%" command with a count.  For
+example "50%" moves you to halfway the file.  "90%" goes to near the end.
+
+The previous assumes that you want to move to a line in the file, no matter if
+it's currently visible or not.  What if you want to move to one of the lines
+you can see?  This figure shows the three commands you can use:
+
+			+---------------------------+
+		H -->	| text sample text	    |
+			| sample text		    |
+			| text sample text	    |
+			| sample text		    |
+		M -->	| text sample text	    |
+			| sample text		    |
+			| text sample text	    |
+			| sample text		    |
+		L -->	| text sample text	    |
+			+---------------------------+
+
+Hints: "H" stands for Home, "M" for Middle and "L" for Last.
+
+==============================================================================
+*03.6*	Telling where you are
+
+To see where you are in a file, there are three ways:
+
+1.  Use the CTRL-G command.  You get a message like this (assuming the 'ruler'
+    option is off):
+
+	"usr_03.txt" line 233 of 650 --35%-- col 45-52 ~
+
+    This shows the name of the file you are editing, the line number where the
+    cursor is, the total number of lines, the percentage of the way through
+    the file and the column of the cursor.
+       Sometimes you will see a split column number.  For example, "col 2-9".
+    This indicates that the cursor is positioned on the second character, but
+    because character one is a tab, occupying eight spaces worth of columns,
+    the screen column is 9.
+
+2.  Set the 'number' option.  This will display a line number in front of
+    every line: >
+
+	:set number
+<
+    To switch this off again: >
+
+	:set nonumber
+<
+    Since 'number' is a boolean option, prepending "no" to its name has the
+    effect of switching it off.  A boolean option has only these two values,
+    it is either on or off.
+       Vim has many options.  Besides the boolean ones there are options with
+    a numerical value and string options.  You will see examples of this where
+    they are used.
+
+3.  Set the 'ruler' option.  This will display the cursor position in the
+    lower right corner of the Vim window: >
+
+	:set ruler
+
+Using the 'ruler' option has the advantage that it doesn't take much room,
+thus there is more space for your text.
+
+==============================================================================
+*03.7*	Scrolling around
+
+The CTRL-U command scrolls down half a screen of text.  Think of looking
+through a viewing window at the text and moving this window up by half the
+height of the window.  Thus the window moves up over the text, which is
+backward in the file.  Don't worry if you have a little trouble remembering
+which end is up.  Most users have the same problem.
+   The CTRL-D command moves the viewing window down half a screen in the file,
+thus scrolls the text up half a screen.
+
+				       +----------------+
+				       | some text	|
+				       | some text	|
+				       | some text	|
+	+---------------+	       | some text	|
+	| some text	|  CTRL-U  --> |		|
+	|		|	       | 123456		|
+	| 123456	|	       +----------------+
+	| 7890		|
+	|		|	       +----------------+
+	| example	|  CTRL-D -->  | 7890		|
+	+---------------+	       |		|
+				       | example	|
+				       | example	|
+				       | example	|
+				       | example	|
+				       +----------------+
+
+To scroll one line at a time use CTRL-E (scroll up) and CTRL-Y (scroll down).
+Think of CTRL-E to give you one line Extra.  (If you use MS-Windows compatible
+key mappings CTRL-Y will redo a change instead of scroll.)
+
+To scroll forward by a whole screen (except for two lines) use CTRL-F.  The
+other way is backward, CTRL-B is the command to use.  Fortunately CTRL-F is
+Forward and CTRL-B is Backward, that's easy to remember.
+
+A common issue is that after moving down many lines with "j" your cursor is at
+the bottom of the screen.  You would like to see the context of the line with
+the cursor.  That's done with the "zz" command.
+
+	+------------------+		 +------------------+
+	| some text	   |		 | some text	    |
+	| some text	   |		 | some text	    |
+	| some text	   |		 | some text	    |
+	| some text	   |   zz  -->	 | line with cursor |
+	| some text	   |		 | some text	    |
+	| some text	   |		 | some text	    |
+	| line with cursor |		 | some text	    |
+	+------------------+		 +------------------+
+
+The "zt" command puts the cursor line at the top, "zb" at the bottom.  There
+are a few more scrolling commands, see |Q_sc|.  To always keep a few lines of
+context around the cursor, use the 'scrolloff' option.
+
+==============================================================================
+*03.8*	Simple searches
+
+To search for a string, use the "/string" command.  To find the word include,
+for example, use the command: >
+
+	/include
+
+You will notice that when you type the "/" the cursor jumps to the last line
+of the Vim window, like with colon commands.  That is where you type the word.
+You can press the backspace key (backarrow or <BS>) to make corrections.  Use
+the <Left> and <Right> cursor keys when necessary.
+   Pressing <Enter> executes the command.
+
+	Note:
+	The characters .*[]^%/\?~$ have special meaning. If you want to use
+	them in a search you must put a \ in front of them.  See below.
+
+To find the next occurrence of the same string use the "n" command.  Use this
+to find the first #include after the cursor: >
+
+	/#include
+
+And then type "n" several times.  You will move to each #include in the text.
+You can also use a count if you know which match you want.  Thus "3n" finds
+the third match.  Using a count with "/" doesn't work.
+
+The "?" command works like "/" but searches backwards: >
+
+	?word
+
+The "N" command repeats the last search the opposite direction.  Thus using
+"N" after a "/" command search backwards, using "N" after "?" searches
+forward.
+
+
+IGNORING CASE
+
+Normally you have to type exactly what you want to find.  If you don't care
+about upper or lowercase in a word, set the 'ignorecase' option: >
+
+	:set ignorecase
+
+If you now search for "word", it will also match "Word" and "WORD".  To match
+case again: >
+
+	:set noignorecase
+
+
+HISTORY
+
+Suppose you do three searches: >
+
+	/one
+	/two
+	/three
+
+Now let's start searching by typing a simple "/" without pressing <Enter>.  If
+you press <Up> (the cursor key), Vim puts "/three" on the command line.
+Pressing <Enter> at this point searches for three.  If you do not press
+<Enter>, but press <Up> instead, Vim changes the prompt to "/two".  Another
+press of <Up> moves you to "/one".
+   You can also use the <Down> cursor key to move through the history of
+search commands in the other direction.
+
+If you know what a previously used pattern starts with, and you want to use it
+again, type that character before pressing <Up>.  With the previous example,
+you can type "/o<Up>" and Vim will put "/one" on the command line.
+
+The commands starting with ":" also have a history.  That allows you to recall
+a previous command and execute it again.  These two histories are separate.
+
+
+SEARCHING FOR A WORD IN THE TEXT
+
+Suppose you see the word "TheLongFunctionName" in the text and you want to
+find the next occurrence of it.  You could type "/TheLongFunctionName", but
+that's a lot of typing.  And when you make a mistake Vim won't find it.
+   There is an easier way: Position the cursor on the word and use the "*"
+command.  Vim will grab the word under the cursor and use it as the search
+string.
+   The "#" command does the same in the other direction.  You can prepend a
+count: "3*" searches for the third occurrence of the word under the cursor.
+
+
+SEARCHING FOR WHOLE WORDS
+
+If you type "/the" it will also match "there".  To only find words that end
+in "the" use: >
+
+	/the\>
+
+The "\>" item is a special marker that only matches at the end of a word.
+Similarly "\<" only matches at the begin of a word.  Thus to search for the
+word "the" only: >
+
+	/\<the\>
+
+This does not match "there" or "soothe".  Notice that the "*" and "#" commands
+use these start-of-word and end-of-word markers to only find whole words (you
+can use "g*" and "g#" to match partial words).
+
+
+HIGHLIGHTING MATCHES
+
+While editing a program you see a variable called "nr".  You want to check
+where it's used.  You could move the cursor to "nr" and use the "*" command
+and press "n" to go along all the matches.
+   There is another way.  Type this command: >
+
+	:set hlsearch
+
+If you now search for "nr", Vim will highlight all matches.  That is a very
+good way to see where the variable is used, without the need to type commands.
+   To switch this off: >
+
+	:set nohlsearch
+
+Then you need to switch it on again if you want to use it for the next search
+command.  If you only want to remove the highlighting, use this command: >
+
+	:nohlsearch
+
+This doesn't reset the option.  Instead, it disables the highlighting.  As
+soon as you execute a search command, the highlighting will be used again.
+Also for the "n" and "N" commands.
+
+
+TUNING SEARCHES
+
+There are a few options that change how searching works.  These are the
+essential ones:
+>
+	:set incsearch
+
+This makes Vim display the match for the string while you are still typing it.
+Use this to check if the right match will be found.  Then press <Enter> to
+really jump to that location.  Or type more to change the search string.
+>
+	:set nowrapscan
+
+This stops the search at the end of the file.  Or, when you are searching
+backwards, at the start of the file.  The 'wrapscan' option is on by default,
+thus searching wraps around the end of the file.
+
+
+INTERMEZZO
+
+If you like one of the options mentioned before, and set it each time you use
+Vim, you can put the command in your Vim startup file.
+   Edit the file, as mentioned at |not-compatible|.  Or use this command to
+find out where it is: >
+
+	:scriptnames
+
+Edit the file, for example with: >
+
+	:edit ~/.vimrc
+
+Then add a line with the command to set the option, just like you typed it in
+Vim.  Example: >
+
+	Go:set hlsearch<Esc>
+
+"G" moves to the end of the file.  "o" starts a new line, where you type the
+":set" command.  You end insert mode with <Esc>.  Then write the file: >
+
+	ZZ
+
+If you now start Vim again, the 'hlsearch' option will already be set.
+
+==============================================================================
+*03.9*	Simple search patterns
+
+The Vim editor uses regular expressions to specify what to search for.
+Regular expressions are an extremely powerful and compact way to specify a
+search pattern.  Unfortunately, this power comes at a price, because regular
+expressions are a bit tricky to specify.
+   In this section we mention only a few essential ones.  More about search
+patterns and commands in chapter 27 |usr_27.txt|.  You can find the full
+explanation here: |pattern|.
+
+
+BEGINNING AND END OF A LINE
+
+The ^ character matches the beginning of a line.  On an English-US keyboard
+you find it above the 6.  The pattern "include" matches the word include
+anywhere on the line.  But the pattern "^include" matches the word include
+only if it is at the beginning of a line.
+   The $ character matches the end of a line.  Therefore, "was$" matches the
+word was only if it is at the end of a line.
+
+Let's mark the places where "the" matches in this example line with "x"s:
+
+	the solder holding one of the chips melted and the ~
+	xxx			  xxx		       xxx
+
+Using "/the$" we find this match:
+
+	the solder holding one of the chips melted and the ~
+						       xxx
+
+And with "/^the" we find this one:
+	the solder holding one of the chips melted and the ~
+	xxx
+
+You can try searching with "/^the$", it will only match a single line
+consisting of "the".  White space does matter here, thus if a line contains a
+space after the word, like "the ", the pattern will not match.
+
+
+MATCHING ANY SINGLE CHARACTER
+
+The . (dot) character matches any existing character.  For example, the
+pattern "c.m" matches a string whose first character is a c, whose second
+character is anything, and whose the third character is m.  Example:
+
+	We use a computer that became the cummin winter. ~
+		 xxx		 xxx	  xxx
+
+
+MATCHING SPECIAL CHARACTERS
+
+If you really want to match a dot, you must avoid its special meaning by
+putting a backslash before it.
+   If you search for "ter.", you will find these matches:
+
+	We use a computer that became the cummin winter. ~
+		      xxxx			    xxxx
+
+Searching for "ter\." only finds the second match.
+
+==============================================================================
+*03.10*	Using marks
+
+When you make a jump to a position with the "G" command, Vim remembers the
+position from before this jump.  This position is called a mark.  To go back
+where you came from, use this command: >
+
+	``
+
+This ` is a backtick or open single-quote character.
+   If you use the same command a second time you will jump back again.  That's
+because the ` command is a jump itself, and the position from before this jump
+is remembered.
+
+Generally, every time you do a command that can move the cursor further than
+within the same line, this is called a jump.  This includes the search
+commands "/" and "n" (it doesn't matter how far away the match is).  But not
+the character searches with "fx" and "tx" or the word movements "w" and "e".
+   Also, "j" and "k" are not considered to be a jump.  Even when you use a
+count to make them move the cursor quite a long way away.
+
+The `` command jumps back and forth, between two points.  The CTRL-O command
+jumps to older positions (Hint: O for older).  CTRL-I then jumps back to newer
+positions (Hint: I is just next to O on the keyboard).  Consider this sequence
+of commands: >
+
+	33G
+	/^The
+	CTRL-O
+
+You first jump to line 33, then search for a line that starts with "The".
+Then with CTRL-O you jump back to line 33.  Another CTRL-O takes you back to
+where you started.  If you now use CTRL-I you jump to line 33 again.  And
+to the match for "The" with another CTRL-I.
+
+
+	     |	example text   ^	     |
+	33G  |	example text   |  CTRL-O     | CTRL-I
+	     |	example text   |	     |
+	     V	line 33 text   ^	     V
+	     |	example text   |	     |
+       /^The |	example text   |  CTRL-O     | CTRL-I
+	     V	There you are  |	     V
+		example text
+
+	Note:
+	CTRL-I is the same as <Tab>.
+
+The ":jumps" command gives a list of positions you jumped to.  The entry which
+you used last is marked with a ">".
+
+
+NAMED MARKS
+
+Vim enables you to place your own marks in the text.  The command "ma" marks
+the place under the cursor as mark a.  You can place 26 marks (a through z) in
+your text.  You can't see them, it's just a position that Vim remembers.
+   To go to a mark, use the command `{mark}, where "{mark} is the mark letter.
+Thus to move to the a mark:
+>
+	`a
+
+The command 'mark (single quotation mark, or apostrophe) moves you to the
+beginning of the line containing the mark.  This differs from the `mark
+command, which moves you to marked column.
+
+The marks can be very useful when working on two related parts in a file.
+Suppose you have some text near the start of the file you need to look at,
+while working on some text near the end of the file.
+   Move to the text at the start and place the s (start) mark there: >
+
+	ms
+
+The move to the text you want to work on and put the e (end) mark there: >
+
+	me
+
+Now you can move around, and when you want to look at the start of the file,
+you use this to jump there: >
+
+	's
+
+Then you can use '' to jump back to where you were, or 'e to jump to the text
+you were working on at the end.
+   There is nothing special about using s for start and e for end, they are
+just easy to remember.
+
+You can use this command to get a list of marks: >
+
+	:marks
+
+You will notice a few special marks.  These include:
+
+	'	The cursor position before doing a jump
+	"	The cursor position when last editing the file
+	[	Start of the last change
+	]	End of the last change
+
+==============================================================================
+
+Next chapter: |usr_04.txt|  Making small changes
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_04.txt b/runtime/doc/usr_04.txt
new file mode 100644
index 0000000..619e278
--- /dev/null
+++ b/runtime/doc/usr_04.txt
@@ -0,0 +1,514 @@
+*usr_04.txt*	For Vim version 7.0aa.  Last change: 2004 Jun 08
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			     Making small changes
+
+
+This chapter shows you several ways of making corrections and moving text
+around.  It teaches you the three basic ways to change text: operator-motion,
+Visual mode and text objects.
+
+|04.1|	Operators and motions
+|04.2|	Changing text
+|04.3|	Repeating a change
+|04.4|	Visual mode
+|04.5|	Moving text
+|04.6|	Copying text
+|04.7|	Using the clipboard
+|04.8|	Text objects
+|04.9|	Replace mode
+|04.10|	Conclusion
+
+     Next chapter: |usr_05.txt|  Set your settings
+ Previous chapter: |usr_03.txt|  Moving around
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*04.1*	Operators and motions
+
+In chapter 2 you learned the "x" command to delete a single character.  And
+using a count: "4x" deletes four characters.
+   The "dw" command deletes a word.  You may recognize the "w" command as the
+move word command.  In fact, the "d" command may be followed by any motion
+command, and it deletes from the current location to the place where the
+cursor winds up.
+   The "4w" command, for example, moves the cursor over four words.  The d4w
+command deletes four words.
+
+	To err is human. To really foul up you need a computer. ~
+			 ------------------>
+				 d4w
+
+	To err is human. you need a computer. ~
+
+Vim only deletes up to the position where the motion takes the cursor.  That's
+because Vim knows that you probably don't want to delete the first character
+of a word.  If you use the "e" command to move to the end of a word, Vim
+guesses that you do want to include that last character:
+
+	To err is human. you need a computer. ~
+			-------->
+			   d2e
+
+	To err is human. a computer. ~
+
+Whether the character under the cursor is included depends on the command you
+used to move to that character.  The reference manual calls this "exclusive"
+when the character isn't included and "inclusive" when it is.
+
+The "$" command moves to the end of a line.  The "d$" command deletes from the
+cursor to the end of the line.  This is an inclusive motion, thus the last
+character of the line is included in the delete operation:
+
+	To err is human. a computer. ~
+		       ------------>
+			    d$
+
+	To err is human ~
+
+There is a pattern here: operator-motion.  You first type an operator command.
+For example, "d" is the delete operator.  Then you type a motion command like
+"4l" or "w".  This way you can operate on any text you can move over.
+
+==============================================================================
+*04.2*	Changing text
+
+Another operator is "c", change.  It acts just like the "d" operator, except
+it leaves you in Insert mode.  For example, "cw" changes a word.  Or more
+specifically, it deletes a word and then puts you in Insert mode.
+
+	To err is human ~
+	   ------->
+	     c2wbe<Esc>
+
+	To be human ~
+
+This "c2wbe<Esc>" contains these bits:
+
+	c	the change operator
+	2w	move two words (they are deleted and Insert mode started)
+	be	insert this text
+	<Esc>	back to Normal mode
+
+If you have paid attention, you will have noticed something strange: The space
+before "human" isn't deleted.  There is a saying that for every problem there
+is an answer that is simple, clear, and wrong.  That is the case with the
+example used here for the "cw" command.  The c operator works just like the
+d operator, with one exception: "cw".  It actually works like "ce", change to
+end of word.  Thus the space after the word isn't included.  This is an
+exception that dates back to the old Vi.  Since many people are used to it
+now, the inconsistency has remained in Vim.
+
+
+MORE CHANGES
+
+Like "dd" deletes a whole line, "cc" changes a whole line.  It keeps the
+existing indent (leading white space) though.
+
+Just like "d$" deletes until the end of the line, "c$" changes until the end
+of the line.  It's like doing "d$" to delete the text and then "a" to start
+Insert mode and append new text.
+
+
+SHORTCUTS
+
+Some operator-motion commands are used so often that they have been given a
+single letter command:
+
+	x  stands for  dl  (delete character under the cursor)
+	X  stands for  dh  (delete character left of the cursor)
+	D  stands for  d$  (delete to end of the line)
+	C  stands for  c$  (change to end of the line)
+	s  stands for  cl  (change one character)
+	S  stands for  cc  (change a whole line)
+
+
+WHERE TO PUT THE COUNT
+
+The commands "3dw" and "d3w" delete three words.  If you want to get really
+picky about things, the first command, "3dw", deletes one word three times;
+the command "d3w" deletes three words once.  This is a difference without a
+distinction.  You can actually put in two counts, however.  For example,
+"3d2w" deletes two words, repeated three times, for a total of six words.
+
+
+REPLACING WITH ONE CHARACTER
+
+The "r" command is not an operator.  It waits for you to type a character, and
+will replace the character under the cursor with it.  You could do the same
+with "cl" or with the "s" command, but with "r" you don't have to press <Esc>
+
+	there is somerhing grong here ~
+	rT	     rt    rw
+
+	There is something wrong here ~
+
+Using a count with "r" causes that many characters to be replaced with the
+same character.  Example:
+
+	There is something wrong here ~
+			   5rx
+
+	There is something xxxxx here ~
+
+To replace a character with a line break use "r<Enter>".  This deletes one
+character and inserts a line break.  Using a count here only applies to the
+number of characters deleted: "4r<Enter>" replaces four characters with one
+line break.
+
+==============================================================================
+*04.3*	Repeating a change
+
+The "." command is one of the most simple yet powerful commands in Vim.  It
+repeats the last change.  For instance, suppose you are editing an HTML file
+and want to delete all the <B> tags.  You position the cursor on the first <
+and delete the <B> with the command "df>".  You then go to the < of the next
+</B> and kill it using the "." command.  The "." command executes the last
+change command (in this case, "df>").  To delete another tag, position the
+cursor on the < and use the "." command.
+
+			      To <B>generate</B> a table of <B>contents ~
+	f<   find first <     --->
+	df>  delete to >	 -->
+	f<   find next <	   --------->
+	.    repeat df>			    --->
+	f<   find next <		       ------------->
+	.    repeat df>					    -->
+
+The "." command works for all changes you make, except for the "u" (undo),
+CTRL-R (redo) and commands that start with a colon (:).
+
+Another example: You want to change the word "four" to "five".  It appears
+several times in your text.  You can do this quickly with this sequence of
+commands:
+
+	/four<Enter>	find the first string "four"
+	cwfive<Esc>	change the word to "five"
+	n		find the next "four"
+	.		repeat the change to "five'
+	n		find the next "four"
+	.		repeat the change
+			etc.
+
+==============================================================================
+*04.4*	Visual mode
+
+To delete simple items the operator-motion changes work quite well.  But often
+it's not so easy to decide which command will move over the text you want to
+change.  Then you can use Visual mode.
+
+You start Visual mode by pressing "v".  You move the cursor over the text you
+want to work on.  While you do this, the text is highlighted.  Finally type
+the operator command.
+   For example, to delete from halfway one word to halfway another word:
+
+		This is an examination sample of visual mode ~
+			       ---------->
+				 velllld
+
+		This is an example of visual mode ~
+
+When doing this you don't really have to count how many times you have to
+press "l" to end up in the right position.  You can immediately see what text
+will be deleted when you press "d".
+
+If at any time you decide you don't want to do anything with the highlighted
+text, just press <Esc> and Visual mode will stop without doing anything.
+
+
+SELECTING LINES
+
+If you want to work on whole lines, use "V" to start Visual mode.  You will
+see right away that the whole line is highlighted, without moving around.
+When you move left or right nothing changes.  When you move up or down the
+selection is extended whole lines at a time.
+   For example, select three lines with "Vjj":
+
+			  +------------------------+
+			  | text more text	   |
+		       >> | more text more text    | |
+	selected lines >> | text text text	   | | Vjj
+		       >> | text more		   | V
+			  | more text more	   |
+			  +------------------------+
+
+
+SELECTING BLOCKS
+
+If you want to work on a rectangular block of characters, use CTRL-V to start
+Visual mode.  This is very useful when working on tables.
+
+		name		Q1	Q2	Q3
+		pierre		123	455	234
+		john		0	90	39
+		steve		392	63	334
+
+To delete the middle "Q2" column, move the cursor to the "Q" of "Q2".  Press
+CTRL-V to start blockwise Visual mode.  Now move the cursor three lines down
+with "3j" and to the next word with "w".  You can see the first character of
+the last column is included.  To exclude it, use "h".  Now press "d" and the
+middle column is gone.
+
+
+GOING TO THE OTHER SIDE
+
+If you have selected some text in Visual mode, and discover that you need to
+change the other end of the selection, use the "o" command (Hint: o for other
+end).  The cursor will go to the other end, and you can move the cursor to
+change where the selection starts.  Pressing "o" again brings you back to the
+other end.
+
+When using blockwise selection, you have four corners.  "o" only takes you to
+one of the other corners, diagonally.  Use "O" to move to the other corner in
+the same line.
+
+Note that "o" and "O" in Visual mode work very different from Normal mode,
+where they open a new line below or above the cursor.
+
+==============================================================================
+*04.5*	Moving text
+
+When you delete something with the "d", "x", or another command, the text is
+saved.  You can paste it back by using the p command. (The Vim name for
+this is put).
+   Take a look at how this works.  First you will delete an entire line, by
+putting the cursor on the line you want to delete and typing "dd".  Now you
+move the cursor to where you want to put the line and use the "p" (put)
+command.  The line is inserted on the line below the cursor.
+
+	a line		a line	      a line
+	line 2	  dd	line 3	  p   line 3
+	line 3			      line 2
+
+Because you deleted an entire line, the "p" command placed the text line below
+the cursor.  If you delete part of a line (a word, for instance), the "p"
+command puts it just after the cursor.
+
+	Some more boring try text to out commands. ~
+			 ---->
+			  dw
+
+	Some more boring text to out commands. ~
+			 ------->
+			    welp
+
+	Some more boring text to try out commands. ~
+
+
+MORE ON PUTTING
+
+The "P" command puts text like "p", but before the cursor.  When you deleted a
+whole line with "dd", "P" will put it back above the cursor.  When you deleted
+a word with "dw", "P" will put it back just before the cursor.
+
+You can repeat putting as many times as you like.  The same text will be used.
+
+You can use a count with "p" and "P".  The text will be repeated as many times
+as specified with the count.  Thus "dd" and then "3p" puts three copies of the
+same deleted line.
+
+
+SWAPPING TWO CHARACTERS
+
+Frequently when you are typing, your fingers get ahead of your brain (or the
+other way around?).  The result is a typo such as "teh" for "the".  Vim
+makes it easy to correct such problems.  Just put the cursor on the e of "teh"
+and execute the command "xp".  This works as follows: "x" deletes the
+character e and places it in a register.  "p" puts the text after the cursor,
+which is after the h.
+
+	teh     th     the ~
+	 x       p
+
+==============================================================================
+*04.6*	Copying text
+
+To copy text from one place to another, you could delete it, use "u" to undo
+the deletion and then "p" to put it somewhere else.  There is an easier way:
+yanking.  The "y" operator copies text into a register.  Then a "p" command
+can be used to put it.
+   Yanking is just a Vim name for copying.  The "c" letter was already used
+for the change operator, and "y" was still available.  Calling this
+operator "yank" made it easier to remember to use the "y" key.
+
+Since "y" is an operator, you use "yw" to yank a word.  A count is possible as
+usual.  To yank two words use "y2w".  Example:
+
+	let sqr = LongVariable * ~
+		 -------------->
+		       y2w
+
+	let sqr = LongVariable * ~
+			       p
+
+	let sqr = LongVariable * LongVariable ~
+
+Notice that "yw" includes the white space after a word.  If you don't want
+this, use "ye".
+
+The "yy" command yanks a whole line, just like "dd" deletes a whole line.
+Unexpectedly, while "D" deletes from the cursor to the end of the line, "Y"
+works like "yy", it yanks the whole line.  Watch out for this inconsistency!
+Use "y$" to yank to the end of the line.
+
+	a text line   yy	a text line	       a text line
+	line 2			line 2		p      line 2
+	last line		last line	       a text line
+						       last line
+
+==============================================================================
+*04.7*	Using the clipboard
+
+If you are using the GUI version of Vim (gvim), you can find the "Copy" item
+in the "Edit" menu.  First select some text with Visual mode, then use the
+Edit/Copy menu.  The selected text is now copied to the clipboard.  You can
+paste the text in other programs.  In Vim itself too.
+
+If you have copied text to the clipboard in another application, you can paste
+it in Vim with the Edit/Paste menu.  This works in Normal mode and Insert
+mode.  In Visual mode the selected text is replaced with the pasted text.
+
+The "Cut" menu item deletes the text before it's put on the clipboard.  The
+"Copy", "Cut" and "Paste" items are also available in the popup menu (only
+when there is a popup menu, of course).  If your Vim has a toolbar, you can
+also find these items there.
+
+If you are not using the GUI, or if you don't like using a menu, you have to
+use another way.  You use the normal "y" (yank) and "p" (put) commands, but
+prepend "* (double-quote star) before it.  To copy a line to the clipboard: >
+
+	"*yy
+
+To put text from the clipboard back into the text: >
+
+	"*p
+
+This only works on versions of Vim that include clipboard support.  More about
+the clipboard in section |09.3| and here: |clipboard|.
+
+==============================================================================
+*04.8*	Text objects
+
+If the cursor is in the middle of a word and want to delete that word, you
+need to move back to its start before you can do "dw".  There is a simpler way
+to do this: "daw".
+
+	this is some example text. ~
+		       daw
+
+	this is some text. ~
+
+The "d" of "daw" is the delete operator.  "aw" is a text object.  Hint: "aw"
+stands for "A Word".  Thus "daw" is "Delete A Word".  To be precise, the white
+space after the word is also deleted (the white space before the word at the
+end of the line).
+
+Using text objects is the third way to make changes in Vim.  We already had
+operator-motion and Visual mode.  Now we add operator-text object.
+   It is very similar to operator-motion, but instead of operating on the text
+between the cursor position before and after a movement command, the text
+object is used as a whole.  It doesn't matter where in the object the cursor
+was.
+
+To change a whole sentence use "cis".  Take this text:
+
+	Hello there.  This ~
+	is an example.  Just ~
+	some text. ~
+
+Move to the start of the second line, on "is an".  Now use "cis":
+
+	Hello there.    Just ~
+	some text. ~
+
+The cursor is in between the blanks in the first line.  Now you type the new
+sentence "Another line.":
+
+	Hello there.  Another line.  Just ~
+	some text. ~
+
+"cis" consists of the "c" (change) operator and the "is" text object.  This
+stands for "Inner Sentence".  There is also the "as" (a sentence) object.  The
+difference is that "as" includes the white space after the sentence and "is"
+doesn't.  If you would delete a sentence, you want to delete the white space
+at the same time, thus use "das".  If you want to type new text the white
+space can remain, thus you use "cis".
+
+You can also use text objects in Visual mode.  It will include the text object
+in the Visual selection.  Visual mode continues, thus you can do this several
+times.  For example, start Visual mode with "v" and select a sentence with
+"as".  Now you can repeat "as" to include more sentences.  Finally you use an
+operator to do something with the selected sentences.
+
+You can find a long list of text objects here: |text-objects|.
+
+==============================================================================
+*04.9*	Replace mode
+
+The "R" command causes Vim to enter replace mode.  In this mode, each
+character you type replaces the one under the cursor.  This continues until
+you type <Esc>.
+   In this example you start Replace mode on the first "t" of "text":
+
+	This is text. ~
+		Rinteresting.<Esc>
+
+	This is interesting. ~
+
+You may have noticed that this command replaced 5 characters in the line with
+twelve others. The "R" command automatically extends the line if it runs out
+of characters to replace.  It will not continue on the next line.
+
+You can switch between Insert mode and Replace mode with the <Insert> key.
+
+When you use <BS> (backspace) to make correction, you will notice that the
+old text is put back.  Thus it works like an undo command for the last typed
+character.
+
+==============================================================================
+*04.10*	Conclusion
+
+The operators, movement commands and text objects give you the possibility to
+make lots of combinations.  Now that you know how it works, you can use N
+operators with M movement commands to make N * M commands!
+
+You can find a list of operators here: |operator|
+
+For example, there are many other ways to delete pieces of text.  Here are a
+few often used ones:
+
+x	delete character under the cursor (short for "dl")
+X	delete character before the cursor (short for "dh")
+D	delete from cursor to end of line (short for "d$")
+dw	delete from cursor to next start of word
+db	delete from cursor to previous start of word
+diw	delete word under the cursor (excluding white space)
+daw	delete word under the cursor (including white space)
+dG	delete until the end of the file
+dgg	delete until the start of the file
+
+If you use "c" instead of "d" they become change commands.  And with "y" you
+yank the text.  And so forth.
+
+
+There are a few often used commands to make changes that didn't fit somewhere
+else:
+
+	~	change case of the character under the cursor, and move the
+		cursor to the next character.  This is not an operator (unless
+		'tildeop' is set), thus you can't use it with a motion
+		command.  It does works in Visual mode and changes case for
+		all the selected text then.
+
+	I	Start Insert mode after moving the cursor to the first
+		non-blank in the line.
+
+	A	Start Insert mode after moving the cursor to the end of the
+		line.
+
+==============================================================================
+
+Next chapter: |usr_05.txt|  Set your settings
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_05.txt b/runtime/doc/usr_05.txt
new file mode 100644
index 0000000..ee9eba4
--- /dev/null
+++ b/runtime/doc/usr_05.txt
@@ -0,0 +1,616 @@
+*usr_05.txt*	For Vim version 7.0aa.  Last change: 2004 Mar 12
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			      Set your settings
+
+
+Vim can be tuned to work like you want it to.  This chapter shows you how to
+make Vim start with options set to different values.  Add plugins to extend
+Vims capabilities.  Or define your own macros.
+
+|05.1|	The vimrc file
+|05.2|	The example vimrc file explained
+|05.3|	Simple mappings
+|05.4|	Adding a plugin
+|05.5|	Adding a help file
+|05.6|	The option window
+|05.7|	Often used options
+
+     Next chapter: |usr_06.txt|  Using syntax highlighting
+ Previous chapter: |usr_04.txt|  Making small changes
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*05.1*	The vimrc file					*vimrc-intro*
+
+You probably got tired of typing commands that you use very often.  To start
+with all your favorite option settings and mappings, you write them in what is
+called the vimrc file.  Vim reads this file when it starts up.
+
+If you have trouble finding your vimrc file, use this command: >
+
+	:scriptnames
+
+One of the first files in the list should be called ".vimrc" or "_vimrc" and
+is located in your home directory.
+   If you don't have a vimrc file yet, see |vimrc| to find out where you can
+create a vimrc file.  Also, the ":version" command mentions the name of the
+"user vimrc file" Vim looks for.
+
+For Unix this file is always used: >
+
+	~/.vimrc
+
+For MS-DOS and MS-Windows it is mostly one of these: >
+
+	$HOME/_vimrc
+	$VIM/_vimrc
+
+The vimrc file can contain all the commands that you type after a colon.  The
+most simple ones are for setting options.  For example, if you want Vim to
+always start with the 'incsearch' option on, add this line you your vimrc
+file: >
+
+	set incsearch
+
+For this new line to take effect you need to exit Vim and start it again.
+Later you will learn how to do this without exiting Vim.
+
+This chapter only explains the most basic items.  For more information on how
+to write a Vim script file: |usr_41.txt|.
+
+==============================================================================
+*05.2*	The example vimrc file explained		*vimrc_example.vim*
+
+In the first chapter was explained how the example vimrc (included in the
+Vim distribution) file can be used to make Vim startup in not-compatible mode
+(see |not-compatible|).  The file can be found here:
+
+	$VIMRUNTIME/vimrc_example.vim ~
+
+In this section we will explain the various commands used in this file.  This
+will give you hints about how to set up your own preferences.  Not everything
+will be explained though.  Use the ":help" command to find out more.
+
+>
+	set nocompatible
+
+As mentioned in the first chapter, these manuals explain Vim working in an
+improved way, thus not completely Vi compatible.  Setting the 'compatible'
+option off, thus 'nocompatible' takes care of this.
+
+>
+	set backspace=indent,eol,start
+
+This specifies where in Insert mode the <BS> is allowed to delete the
+character in front of the cursor.  The three items, separated by commas, tell
+Vim to delete the white space at the start of the line, a line break and the
+character before where Insert mode started.
+>
+
+	set autoindent
+
+This makes Vim use the indent of the previous line for a newly created line.
+Thus there is the same amount of white space before the new line.  For example
+when pressing <Enter> in Insert mode, and when using the "o" command to open a
+new line.
+>
+
+	if has("vms")
+	  set nobackup
+	else
+	  set backup
+	endif
+
+This tells Vim to keep a backup copy of a file when overwriting it.  But not
+on the VMS system, since it keeps old versions of files already.  The backup
+file will have the same name as the original file with "~" added.  See |07.4|
+>
+
+	set history=50
+
+Keep 50 commands and 50 search patterns in the history.  Use another number if
+you want to remember fewer or more lines.
+>
+
+	set ruler
+
+Always display the current cursor position in the lower right corner of the
+Vim window.
+
+>
+	set showcmd
+
+Display an incomplete command in the lower right corner of the Vim window,
+left of the ruler.  For example, when you type "2f", Vim is waiting for you to
+type the character to find and "2f" is displayed.  When you press "w" next,
+the "2fw" command is executed and the displayed "2f" is removed.
+
+	+-------------------------------------------------+
+	|text in the Vim window				  |
+	|~						  |
+	|~						  |
+	|-- VISUAL --			2f     43,8   17% |
+	+-------------------------------------------------+
+	 ^^^^^^^^^^^		      ^^^^^^^^ ^^^^^^^^^^
+	  'showmode'		     'showcmd'	'ruler'
+
+>
+	set incsearch
+
+Display the match for a search pattern when halfway typing it.
+
+>
+	map Q gq
+
+This defines a key mapping.  More about that in the next section.  This
+defines the "Q" command to do formatting with the "gq" operator.  This is how
+it worked before Vim 5.0.  Otherwise the "Q" command starts Ex mode, but you
+will not need it.
+
+>
+	vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc>
+
+This is a complicated mapping.  It will not be explained how it works here.
+What it does is to make "p" in Visual mode overwrite the selected text with
+the previously yanked text.  You can see that mappings can be used to do quite
+complicated things.  Still, it is just a sequence of commands that are
+executed like you typed them.
+
+>
+	if &t_Co > 2 || has("gui_running")
+	  syntax on
+	  set hlsearch
+	endif
+
+This switches on syntax highlighting, but only if colors are available.  And
+the 'hlsearch' option tells Vim to highlight matches with the last used search
+pattern.  The "if" command is very useful to set options only when some
+condition is met.  More about that in |usr_41.txt|.
+
+							*vimrc-filetype*  >
+	filetype plugin indent on
+
+This switches on three very clever mechanisms:
+1. Filetype detection.
+   Whenever you start editing a file, Vim will try to figure out what kind of
+   file this is.  When you edit "main.c", Vim will see the ".c" extension and
+   recognize this as a "c" filetype.  When you edit a file that starts with
+   "#!/bin/sh", Vim will recognize it as a "sh" filetype.
+   The filetype detection is used for syntax highlighting and the other two
+   items below.
+   See |filetypes|.
+
+2. Using filetype plugin files
+   Many different filetypes are edited with different options.  For example,
+   when you edit a "c" file, it's very useful to set the 'cindent' option to
+   automatically indent the lines.  These commonly useful option settings are
+   included with Vim in filetype plugins.  You can also add your own, see
+   |write-filetype-plugin|.
+
+3. Using indent files
+   When editing programs, the indent of a line can often be computed
+   automatically.  Vim comes with these indent rules for a number of
+   filetypes.  See |:filetype-indent-on| and 'indentexpr'.
+
+>
+	autocmd FileType text setlocal textwidth=78
+
+This makes Vim break text to avoid lines getting longer than 78 characters.
+But only for files that have been detected to be plain text.  There are
+actually two parts here.  "autocmd FileType text" is an autocommand.  This
+defines that when the file type is set to "text" the following command is
+automatically executed.  "setlocal textwidth=78" sets the 'textwidth' option
+to 78, but only locally in one file.
+>
+
+	autocmd BufReadPost *
+	    \ if line("'\"") > 0 && line("'\"") <= line("$") |
+	    \   exe "normal g`\"" |
+	    \ endif
+
+Another autocommand.  This time it is used after reading any file.  The
+complicated stuff after it checks if the '" mark is defined, and jumps to it
+if so.  The backslash at the start of a line is used to continue the command
+from the previous line.  That avoids a line getting very long.
+See |line-continuation|.  This only works in a Vim script file, not when
+typing commands at the command-line.
+
+==============================================================================
+*05.3*	Simple mappings
+
+A mapping enables you to bind a set of Vim commands to a single key.  Suppose,
+for example, that you need to surround certain words with curly braces.  In
+other words, you need to change a word such as "amount" into "{amount}".  With
+the :map command, you can tell Vim that the F5 key does this job.  The command
+is as follows: >
+
+	:map <F5> i{<Esc>ea}<Esc>
+<
+	Note:
+	When entering this command, you must enter <F5> by typing four
+	characters.  Similarly, <Esc> is not entered by pressing the <Esc>
+	key, but by typing five characters.  Watch out for this difference
+	when reading the manual!
+
+Let's break this down:
+    <F5>	The F5 function key.  This is the trigger key that causes the
+		command to be executed as the key is pressed.
+
+    i{<Esc>	Insert the { character.  The <Esc> key ends Insert mode.
+
+    e		Move to the end of the word.
+
+    a}<Esc>	Append the } to the word.
+
+After you execute the ":map" command, all you have to do to put {} around a
+word is to put the cursor on the first character and press F5.
+
+In this example, the trigger is a single key; it can be any string.  But when
+you use an existing Vim command, that command will no longer be available.
+You better avoid that.
+   One key that can be used with mappings is the backslash.  Since you
+probably want to define more than one mapping, add another character.  You
+could map "\p" to add parens around a word, and "\c" to add curly braces, for
+example: >
+
+	:map \p i(<Esc>ea)<Esc>
+	:map \c i{<Esc>ea}<Esc>
+
+You need to type the \ and the p quickly after another, so that Vim knows they
+belong together.
+
+The ":map" command (with no arguments) lists your current mappings.  At
+least the ones for Normal mode.  More about mappings in section |40.1|.
+
+==============================================================================
+*05.4*	Adding a plugin					*add-plugin* *plugin*
+
+Vim's functionality can be extended by adding plugins.  A plugin is nothing
+more than a Vim script file that is loaded automatically when Vim starts.  You
+can add a plugin very easily by dropping it in your plugin directory.
+{not available when Vim was compiled without the |+eval| feature}
+
+There are two types of plugins:
+
+    global plugin: Used for all kinds of files
+  filetype plugin: Only used for a specific type of file
+
+The global plugins will be discussed first, then the filetype ones
+|add-filetype-plugin|.
+
+
+GLOBAL PLUGINS						*standard-plugin*
+
+When you start Vim, it will automatically load a number of global plugins.
+You don't have to do anything for this.  They add functionality that most
+people will want to use, but which was implemented as a Vim script instead of
+being compiled into Vim.  You can find them listed in the help index
+|standard-plugin-list|.  Also see |load-plugins|.
+
+							*add-global-plugin*
+You can add a global plugin to add functionality that will always be present
+when you use Vim.  There are only two steps for adding a global plugin:
+1. Get a copy of the plugin.
+2. Drop it in the right directory.
+
+
+GETTING A GLOBAL PLUGIN
+
+Where can you find plugins?
+- Some come with Vim.  You can find them in the directory $VIMRUNTIME/macros
+  and its sub-directories.
+- Download from the net, check out http://vim.sf.net.
+- They are sometimes posted in a Vim |maillist|.
+- You could write one yourself, see |write-plugin|.
+
+
+USING A GLOBAL PLUGIN
+
+First read the text in the plugin itself to check for any special conditions.
+Then copy the file to your plugin directory:
+
+	system		plugin directory ~
+	Unix		~/.vim/plugin/
+	PC and OS/2	$HOME/vimfiles/plugin or $VIM/vimfiles/plugin
+	Amiga		s:vimfiles/plugin
+	Macintosh	$VIM:vimfiles:plugin
+	Mac OS X	~/.vim/plugin/
+	RISC-OS		Choices:vimfiles.plugin
+
+Example for Unix (assuming you didn't have a plugin directory yet): >
+
+	mkdir ~/.vim
+	mkdir ~/.vim/plugin
+	cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin
+
+That's all!  Now you can use the commands defined in this plugin to justify
+text.
+
+
+FILETYPE PLUGINS			*add-filetype-plugin* *ftplugins*
+
+The Vim distribution comes with a set of plugins for different filetypes that
+you can start using with this command: >
+
+	:filetype plugin on
+
+That's all!  See |vimrc-filetype|.
+
+If you are missing a plugin for a filetype you are using, or you found a
+better one, you can add it.  There are two steps for adding a filetype plugin:
+1. Get a copy of the plugin.
+2. Drop it in the right directory.
+
+
+GETTING A FILETYPE PLUGIN
+
+You can find them in the same places as the global plugins.  Watch out if the
+type of file is mentioned, then you know if the plugin is a global or a
+filetype one.  The scripts in $VIMRUNTIME/macros are global ones, the filetype
+plugins are in $VIMRUNTIME/ftplugin.
+
+
+USING A FILETYPE PLUGIN					*ftplugin-name*
+
+You can add a filetype plugin by dropping it in the right directory.  The
+name of this directory is in the same directory mentioned above for global
+plugins, but the last part is "ftplugin".  Suppose you have found a plugin for
+the "stuff" filetype, and you are on Unix.  Then you can move this file to the
+ftplugin directory: >
+
+	mv thefile ~/.vim/ftplugin/stuff.vim
+
+If that file already exists you already have a plugin for "stuff".  You might
+want to check if the existing plugin doesn't conflict with the one you are
+adding.  If it's OK, you can give the new one another name: >
+
+	mv thefile ~/.vim/ftplugin/stuff_too.vim
+
+The underscore is used to separate the name of the filetype from the rest,
+which can be anything.  If you would use "otherstuff.vim" it wouldn't work, it
+would be loaded for the "otherstuff" filetype.
+
+On MS-DOS you cannot use long filenames.  You would run into trouble if you
+add a second plugin and the filetype has more than six characters.  You can
+use an extra directory to get around this: >
+
+	mkdir $VIM/vimfiles/ftplugin/fortran
+	copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim
+
+The generic names for the filetype plugins are: >
+
+	ftplugin/<filetype>.vim
+	ftplugin/<filetype>_<name>.vim
+	ftplugin/<filetype>/<name>.vim
+
+Here "<name>" can be any name that you prefer.
+Examples for the "stuff" filetype on Unix: >
+
+	~/.vim/ftplugin/stuff.vim
+	~/.vim/ftplugin/stuff_def.vim
+	~/.vim/ftplugin/stuff/header.vim
+
+The <filetype> part is the name of the filetype the plugin is to be used for.
+Only files of this filetype will use the settings from the plugin.  The <name>
+part of the plugin file doesn't matter, you can use it to have several plugins
+for the same filetype.  Note that it must end in ".vim".
+
+
+Further reading:
+|filetype-plugins|	Documentation for the filetype plugins and information
+			about how to avoid that mappings cause problems.
+|load-plugins|		When the global plugins are loaded during startup.
+|ftplugin-overrule|	Overruling the settings from a global plugin.
+|write-plugin|		How to write a plugin script.
+|plugin-details|	For more information about using plugins or when your
+			plugin doesn't work.
+|new-filetype|		How to detect a new file type.
+
+==============================================================================
+*05.5*	Adding a help file		*add-local-help* *matchit-install*
+
+If you are lucky, the plugin you installed also comes with a help file.  We
+will explain how to install the help file, so that you can easily find help
+for your new plugin.
+   Let us use the "matchit.vim" plugin as an example (it is included with
+Vim).  This plugin makes the "%" command jump to matching HTML tags,
+if/else/endif in Vim scripts, etc.  Very useful, although it's not backwards
+compatible (that's why it is not enabled by default).
+   This plugin comes with documentation: "matchit.txt".  Let's first copy the
+plugin to the right directory.  This time we will do it from inside Vim, so
+that we can use $VIMRUNTIME.  (You may skip some of the "mkdir" commands if
+you already have the directory.) >
+
+	:!mkdir ~/.vim
+	:!mkdir ~/.vim/plugin
+	:!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin
+
+Now create a "doc" directory in one of the directories in 'runtimepath'. >
+
+	:!mkdir ~/.vim/doc
+
+Copy the help file to the "doc" directory. >
+
+	:!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc
+
+Now comes the trick, which allows you to jump to the subjects in the new help
+file: Generate the local tags file with the |:helptags| command. >
+
+	:helptags ~/.vim/doc
+
+Now you can use the >
+
+	:help g%
+
+command to find help for "g%" in the help file you just added.  You can see an
+entry for the local help file when you do: >
+
+	:help local-additions
+
+The title lines from the local help files are automagically added to this
+section.  There you can see which local help files have been added and jump to
+them through the tag.
+
+For writing a local help file, see |write-local-help|.
+
+==============================================================================
+*05.6*	The option window
+
+If you are looking for an option that does what you want, you can search in
+the help files here: |options|.  Another way is by using this command: >
+
+	:options
+
+This opens a new window, with a list of options with a one-line explanation.
+The options are grouped by subject.  Move the cursor to a subject and press
+<Enter> to jump there.  Press <Enter> again to jump back.  Or use CTRL-O.
+
+You can change the value of an option.  For example, move to the "displaying
+text" subject.  Then move the cursor down to this line:
+
+	set wrap	nowrap ~
+
+When you hit <Enter>, the line will change to:
+
+	set nowrap	wrap ~
+
+The option has now been switched off.
+
+Just above this line is a short description of the 'wrap' option.  Move the
+cursor one line up to place it in this line.  Now hit <Enter> and you jump to
+the full help on the 'wrap' option.
+
+For options that take a number or string argument you can edit the value.
+Then press <Enter> to apply the new value.  For example, move the cursor a few
+lines up to this line:
+
+	set so=0 ~
+
+Position the cursor on the zero with "$".  Change it into a five with "r5".
+Then press <Enter> to apply the new value.  When you now move the cursor
+around you will notice that the text starts scrolling before you reach the
+border.  This is what the 'scrolloff' option does, it specifies an offset
+from the window border where scrolling starts.
+
+==============================================================================
+*05.7*	Often used options
+
+There are an awful lot of options.  Most of them you will hardly ever use.
+Some of the more useful ones will be mentioned here.  Don't forget you can
+find more help on these options with the ":help" command, with single quotes
+before and after the option name.  For example: >
+
+	:help 'wrap'
+
+In case you have messed up an option value, you can set it back to the
+default by putting a ampersand (&) after the option name.  Example: >
+
+	:set iskeyword&
+
+
+NOT WRAPPING LINES
+
+Vim normally wraps long lines, so that you can see all of the text.  Sometimes
+it's better to let the text continue right of the window.  Then you need to
+scroll the text left-right to see all of a long line.  Switch wrapping of with
+this command: >
+
+	:set nowrap
+
+Vim will automatically scroll the text when you move to text that is not
+displayed.  To see a context of ten characters, do this: >
+
+	:set sidescroll=10
+
+This doesn't change the text in the file, only the way it is displayed.
+
+
+WRAPPING MOVEMENT COMMANDS
+
+Most commands for moving around will stop moving at the start and end of a
+line.  You can change that with the 'whichwrap' option.  This sets it to the
+default value: >
+
+	:set whichwrap=b,s
+
+This allows the <BS> key, when used in the first position of a line, to move
+the cursor to the end of the previous line.  And the <Space> key moves from
+the end of a line to the start of the next one.
+
+To allow the cursor keys <Left> and <Right> to also wrap, use this command: >
+
+	:set whichwrap=b,s,<,>
+
+This is still only for Normal mode.  To let <Left> and <Right> do this in
+Insert mode as well: >
+
+	:set whichwrap=b,s,<,>,[,]
+
+There are a few other flags that can be added, see 'whichwrap'.
+
+
+VIEWING TABS
+
+When there are tabs in a file, you cannot see where they are.  To make them
+visible: >
+
+	:set list
+
+Now every Tab is displayed as ^I.  And a $ is displayed at the end of each
+line, so that you can spot trailing spaces that would otherwise go unnoticed.
+   A disadvantage is that this looks ugly when there are many Tabs in a file.
+If you have a color terminal, or are using the GUI, Vim can show the spaces
+and tabs as highlighted characters.  Use the 'listchars' option: >
+
+	:set listchars=tab:>-,trail:-
+
+Now every tab will be displayed as ">---" (with more or less "-") and trailing
+white space as "-".  Looks a lot better, doesn't it?
+
+
+KEYWORDS
+
+The 'iskeyword' option specifies which characters can appear in a word: >
+
+	:set iskeyword
+<	  iskeyword=@,48-57,_,192-255 ~
+
+The "@" stands for all alphabetic letters.  "48-57" stands for ASCII
+characters 48 to 57, which are the numbers 0 to 9.  "192-255" are the
+printable latin characters.
+   Sometimes you will want to include a dash in keywords, so that commands
+like "w" consider "upper-case" to be one word.  You can do it like this: >
+
+	:set iskeyword+=-
+	:set iskeyword
+<	  iskeyword=@,48-57,_,192-255,- ~
+
+If you look at the new value, you will see that Vim has added a comma for you.
+   To remove a character use "-=".  For example, to remove the underscore: >
+
+	:set iskeyword-=_
+	:set iskeyword
+<	  iskeyword=@,48-57,192-255,- ~
+
+This time a comma is automatically deleted.
+
+
+ROOM FOR MESSAGES
+
+When Vim starts there is one line at the bottom that is used for messages.
+When a message is long, it is either truncated, thus you can only see part of
+it, or the text scrolls and you have to press <Enter> to continue.
+   You can set the 'cmdheight' option to the number of lines used for
+messages.  Example: >
+
+	:set cmdheight=3
+
+This does mean there is less room to edit text, thus it's a compromise.
+
+==============================================================================
+
+Next chapter: |usr_06.txt|  Using syntax highlighting
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_06.txt b/runtime/doc/usr_06.txt
new file mode 100644
index 0000000..4731762
--- /dev/null
+++ b/runtime/doc/usr_06.txt
@@ -0,0 +1,277 @@
+*usr_06.txt*	For Vim version 7.0aa.  Last change: 2002 Jul 14
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			  Using syntax highlighting
+
+
+Black and white text is boring.  With colors your file comes to life.  This
+not only looks nice, it also speeds up your work.  Change the colors used for
+the different sorts of text.  Print your text, with the colors you see on the
+screen.
+
+|06.1|	Switching it on
+|06.2|	No or wrong colors?
+|06.3|	Different colors
+|06.4|	With colors or without colors
+|06.5|	Printing with colors
+|06.6|	Further reading
+
+     Next chapter: |usr_07.txt|  Editing more than one file
+ Previous chapter: |usr_05.txt|  Set your settings
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*06.1*	Switching it on
+
+It all starts with one simple command: >
+
+	:syntax enable
+
+That should work in most situations to get color in your files.  Vim will
+automagically detect the type of file and load the right syntax highlighting.
+Suddenly comments are blue, keywords brown and strings red.  This makes it
+easy to overview the file.  After a while you will find that black&white text
+slows you down!
+
+If you always want to use syntax highlighting, put the ":syntax enable"
+command in your |vimrc| file.
+
+If you want syntax highlighting only when the terminal supports colors, you
+can put this in your |vimrc| file: >
+
+	if &t_Co > 1
+	   syntax enable
+	endif
+
+If you want syntax highlighting only in the GUI version, put the ":syntax
+enable" command in your |gvimrc| file.
+
+==============================================================================
+*06.2*	No or wrong colors?
+
+There can be a number of reasons why you don't see colors:
+
+- Your terminal does not support colors.
+	Vim will use bold, italic and underlined text, but this doesn't look
+	very nice.  You probably will want to try to get a terminal with
+	colors.  For Unix, I recommend the xterm from the XFree86 project:
+	|xfree-xterm|.
+
+- Your terminal does support colors, but Vim doesn't know this.
+	Make sure your $TERM setting is correct.  For example, when using an
+	xterm that supports colors: >
+
+		setenv TERM xterm-color
+<
+	or (depending on your shell): >
+
+		TERM=xterm-color; export TERM
+
+<	The terminal name must match the terminal you are using.  If it
+	still doesn't work, have a look at |xterm-color|, which shows a few
+	ways to make Vim display colors (not only for an xterm).
+
+- The file type is not recognized.
+	Vim doesn't know all file types, and sometimes it's near to impossible
+	to tell what language a file uses.  Try this command: >
+
+		:set filetype
+<
+	If the result is "filetype=" then the problem is indeed that Vim
+	doesn't know what type of file this is.  You can set the type
+	manually: >
+
+		:set filetype=fortran
+
+<	To see which types are available, look in the directory
+	$VIMRUNTIME/syntax.  For the GUI you can use the Syntax menu.
+	Setting the filetype can also be done with a |modeline|, so that the
+	file will be highlighted each time you edit it.  For example, this
+	line can be used in a Makefile (put it near the start or end of the
+	file): >
+
+		# vim: syntax=make
+
+<	You might know how to detect the file type yourself.  Often the file
+	name extension (after the dot) can be used.
+	See |new-filetype| for how to tell Vim to detect that file type.
+
+- There is no highlighting for your file type.
+	You could try using a similar file type by manually setting it as
+	mentioned above.  If that isn't good enough, you can write your own
+	syntax file, see |mysyntaxfile|.
+
+
+Or the colors could be wrong:
+
+- The colored text is very hard to read.
+	Vim guesses the background color that you are using.  If it is black
+	(or another dark color) it will use light colors for text.  If it is
+	white (or another light color) it will use dark colors for text.  If
+	Vim guessed wrong the text will be hard to read.  To solve this, set
+	the 'background' option.  For a dark background: >
+
+		:set background=dark
+
+<	And for a light background: >
+
+		:set background=light
+
+<	Make sure you put this _before_ the ":syntax enable" command,
+	otherwise the colors will already have been set.  You could do
+	":syntax reset" after setting 'background' to make Vim set the default
+	colors again.
+
+- The colors are wrong when scrolling bottom to top.
+	Vim doesn't read the whole file to parse the text.  It starts parsing
+	wherever you are viewing the file.  That saves a lot of time, but
+	sometimes the colors are wrong.  A simple fix is hitting CTRL-L.  Or
+	scroll back a bit and then forward again.
+	For a real fix, see |:syn-sync|.  Some syntax files have a way to make
+	it look further back, see the help for the specific syntax file.  For
+	example, |tex.vim| for the TeX syntax.
+
+==============================================================================
+*06.3*	Different colors				*:syn-default-override*
+
+If you don't like the default colors, you can select another color scheme.  In
+the GUI use the Edit/Color Scheme menu.  You can also type the command: >
+
+	:colorscheme evening
+
+"evening" is the name of the color scheme.  There are several others you might
+want to try out.  Look in the directory $VIMRUNTIME/colors.
+
+When you found the color scheme that you like, add the ":colorscheme" command
+to your |vimrc| file.
+
+You could also write your own color scheme.  This is how you do it:
+
+1. Select a color scheme that comes close.  Copy this file to your own Vim
+   directory.  For Unix, this should work: >
+
+	!mkdir ~/.vim/colors
+	!cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim
+<
+   This is done from Vim, because it knows the value of $VIMRUNTIME.
+
+2. Edit the color scheme file.  These entries are useful:
+
+	term		attributes in a B&W terminal
+	cterm		attributes in a color terminal
+	ctermfg		foreground color in a color terminal
+	ctermbg		background color in a color terminal
+	gui		attributes in the GUI
+	guifg		foreground color in the GUI
+	guibg		background color in the GUI
+
+   For example, to make comments green: >
+
+	:highlight Comment ctermfg=green guifg=green
+<
+   Attributes you can use for "cterm" and "gui" are "bold" and "underline".
+   If you want both, use "bold,underline".  For details see the |:highlight|
+   command.
+
+3. Tell Vim to always use your color scheme.  Put this line in your |vimrc|: >
+
+	colorscheme mine
+
+If you want to see what the most often used color combinations look like, use
+these commands: >
+
+	:edit $VIMRUNTIME/syntax/colortest.vim
+	:source %
+
+You will see text in various color combinations.  You can check which ones are
+readable and look nice.
+
+==============================================================================
+*06.4*	With colors or without colors
+
+Displaying text in color takes a lot of effort.  If you find the displaying
+too slow, you might want to disable syntax highlighting for a moment: >
+
+	:syntax clear
+
+When editing another file (or the same one) the colors will come back.
+
+							*:syn-off*
+If you want to stop highlighting completely use: >
+
+	:syntax off
+
+This will completely disable syntax highlighting and remove it immediately for
+all buffers.
+
+							*:syn-manual*
+If you want syntax highlighting only for specific files, use this: >
+
+	:syntax manual
+
+This will enable the syntax highlighting, but not switch it on automatically
+when starting to edit a buffer.  To switch highlighting on for the current
+buffer, set the 'syntax' option: >
+
+	:set syntax=ON
+<
+==============================================================================
+*06.5*	Printing with colors				*syntax-printing*
+
+In the MS-Windows version you can print the current file with this command: >
+
+	:hardcopy
+
+You will get the usual printer dialog, where you can select the printer and a
+few settings.  If you have a color printer, the paper output should look the
+same as what you see inside Vim.  But when you use a dark background the
+colors will be adjusted to look good on white paper.
+
+There are several options that change the way Vim prints:
+	'printdevice'
+	'printheader'
+	'printfont'
+	'printoptions'
+
+To print only a range of lines,  use Visual mode to select the lines and then
+type the command: >
+
+	v100j:hardcopy
+
+"v" starts Visual mode.  "100j" moves a hundred lines down, they will be
+highlighted.  Then ":hardcopy" will print those lines.  You can use other
+commands to move in Visual mode, of course.
+
+This also works on Unix, if you have a PostScript printer.  Otherwise, you
+will have to do a bit more work.  You need to convert the text to HTML first,
+and then print it from a web browser such as Netscape.
+
+Convert the current file to HTML with this command: >
+
+	:source $VIMRUNTIME/syntax/2html.vim
+
+You will see it crunching away, this can take quite a while for a large file.
+Some time later another window shows the HTML code.  Now write this somewhere
+(doesn't matter where, you throw it away later):
+>
+	:write main.c.html
+
+Open this file in your favorite browser and print it from there.  If all goes
+well, the output should look exactly as it does in Vim.  See |2html.vim| for
+details.  Don't forget to delete the HTML file when you are done with it.
+
+Instead of printing, you could also put the HTML file on a web server, and let
+others look at the colored text.
+
+==============================================================================
+*06.6*	Further reading
+
+|usr_44.txt|  Your own syntax highlighted.
+|syntax|      All the details.
+
+==============================================================================
+
+Next chapter: |usr_07.txt|  Editing more than one file
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_07.txt b/runtime/doc/usr_07.txt
new file mode 100644
index 0000000..b419776
--- /dev/null
+++ b/runtime/doc/usr_07.txt
@@ -0,0 +1,479 @@
+*usr_07.txt*	For Vim version 7.0aa.  Last change: 2004 Mar 12
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			  Editing more than one file
+
+
+No matter how many files you have, you can edit them without leaving Vim.
+Define a list of files to work on and jump from one to the other.  Copy text
+from one file and put it in another one.
+
+|07.1|	Edit another file
+|07.2|	A list of files
+|07.3|	Jumping from file to file
+|07.4|	Backup files
+|07.5|	Copy text between files
+|07.6|	Viewing a file
+|07.7|	Changing the file name
+
+     Next chapter: |usr_08.txt|  Splitting windows
+ Previous chapter: |usr_06.txt|  Using syntax highlighting
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*07.1*	Edit another file
+
+So far you had to start Vim for every file you wanted to edit.  There is a
+simpler way.  To start editing another file, use this command: >
+
+	:edit foo.txt
+
+You can use any file name instead of "foo.txt".  Vim will close the current
+file and open the new one.  If the current file has unsaved changes, however,
+Vim displays an error message and does not open the new file:
+
+	E37: No write since last change (use ! to override) ~
+
+	Note:
+	Vim puts an error ID at the start of each error message.  If you do
+	not understand the message or what caused it, look in the help system
+	for this ID.  In this case: >
+
+		:help E37
+
+At this point, you have a number of alternatives.  You can write the file
+using this command: >
+
+	:write
+
+Or you can force Vim to discard your changes and edit the new file, using the
+force (!) character: >
+
+	:edit! foo.txt
+
+If you want to edit another file, but not write the changes in the current
+file yet, you can make it hidden: >
+
+	:hide edit foo.txt
+
+The text with changes is still there, but you can't see it.  This is further
+explained in section |22.4|: The buffer list.
+
+==============================================================================
+*07.2*	A list of files
+
+You can start Vim to edit a sequence of files.  For example: >
+
+	vim one.c two.c three.c
+
+This command starts Vim and tells it that you will be editing three files.
+Vim displays just the first file.  After you have done your thing in this
+file, to edit the next file you use this command: >
+
+	:next
+
+If you have unsaved changes in the current file, you will get an error
+message and the ":next" will not work.  This is the same problem as with
+":edit" mentioned in the previous section.  To abandon the changes: >
+
+	:next!
+
+But mostly you want to save the changes and move on to the next file.  There
+is a special command for this: >
+
+	:wnext
+
+This does the same as using two separate commands: >
+
+	:write
+	:next
+
+
+WHERE AM I?
+
+To see which file in the argument list you are editing, look in the window
+title.  It should show something like "(2 of 3)".  This means you are editing
+the second file out of three files.
+   If you want to see the list of files, use this command: >
+
+	:args
+
+This is short for "arguments".  The output might look like this:
+
+	one.c [two.c] three.c ~
+
+These are the files you started Vim with.  The one you are currently editing,
+"two.c", is in square brackets.
+
+
+MOVING TO OTHER ARGUMENTS
+
+To go back one file: >
+
+	:previous
+
+This is just like the ":next" command, except that it moves in the other
+direction.  Again, there is a shortcut command for when you want to write the
+file first: >
+
+	:wprevious
+
+To move to the very last file in the list: >
+
+	:last
+
+And to move back to the first one again: >
+
+	:first
+
+There is no ":wlast" or ":wfirst" command though!
+
+You can use a count for ":next" and ":previous".  To skip two files forward: >
+
+	:2next
+
+
+AUTOMATIC WRITING
+
+When moving around the files and making changes, you have to remember to use
+":write".  Otherwise you will get an error message.  If you are sure you
+always want to write modified files, you can tell Vim to automatically write
+them: >
+
+	:set autowrite
+
+When you are editing a file which you may not want to write, switch it off
+again: >
+
+	:set noautowrite
+
+
+EDITING ANOTHER LIST OF FILES
+
+You can redefine the list of files without the need to exit Vim and start it
+again.  Use this command to edit three other files: >
+
+	:args five.c six.c seven.h
+
+Or use a wildcard, like it's used in the shell: >
+
+	:args *.txt
+
+Vim will take you to the first file in the list.  Again, if the current file
+has changes, you can either write the file first, or use ":args!" (with !
+added) to abandon the changes.
+
+
+DID YOU EDIT THE LAST FILE?
+							*arglist-quit*
+When you use a list of files, Vim assumes you want to edit them all.  To
+protect you from exiting too early, you will get this error when you didn't
+edit the last file in the list yet:
+
+	E173: 46 more files to edit ~
+
+If you really want to exit, just do it again.  Then it will work (but not when
+you did other commands in between).
+
+==============================================================================
+*07.3*	Jumping from file to file
+
+To quickly jump between two files, press CTRL-^ (on English-US keyboards the ^
+is above the 6 key).  Example: >
+
+	:args one.c two.c three.c
+
+You are now in one.c. >
+
+	:next
+
+Now you are in two.c.  Now use CTRL-^ to go back to one.c.  Another CTRL-^ and
+you are back in two.c.  Another CTRL-^ and you are in one.c again.  If you now
+do: >
+
+	:next
+
+You are in three.c.  Notice that the CTRL-^ command does not change the idea
+of where you are in the list of files.  Only commands like ":next" and
+":previous" do that.
+
+The file you were previously editing is called the "alternate" file.  When you
+just started Vim CTRL-^ will not work, since there isn't a previous file.
+
+
+PREDEFINED MARKS
+
+After jumping to another file, you can use two predefined marks which are very
+useful: >
+
+	`"
+
+This takes you to the position where the cursor was when you left the file.
+Another mark that is remembered is the position where you made the last
+change: >
+
+	`.
+
+Suppose you are editing the file "one.txt".  Somewhere halfway the file you
+use "x" to delete a character.  Then you go to the last line with "G" and
+write the file with ":w".  You edit several other files, and then use ":edit
+one.txt" to come back to "one.txt".  If you now use `" Vim jumps to the last
+line of the file.  Using `. takes you to the position where you deleted the
+character.  Even when you move around in the file `" and `. will take you to
+the remembered position.  At least until you make another change or leave the
+file.
+
+
+FILE MARKS
+
+In chapter 4 was explained how you can place a mark in a file with "mx" and
+jump to that position with "`x".  That works within one file.  If you edit
+another file and place marks there, these are specific for that file.  Thus
+each file has its own set of marks, they are local to the file.
+   So far we were using marks with a lowercase letter.  There are also marks
+with an uppercase letter.  These are global, they can be used from any file.
+For example suppose that we are editing the file "foo.txt".  Go to halfway the
+file ("50%") and place the F mark there (F for foo): >
+
+	50%mF
+
+Now edit the file "bar.txt" and place the B mark (B for bar) at its last line:
+>
+	GmB
+
+Now you can use the "'F" command to jump back to halfway foo.txt.  Or edit yet
+another file, type "'B" and you are at the end of bar.txt again.
+
+The file marks are remembered until they are placed somewhere else.  Thus you
+can place the mark, do hours of editing and still be able to jump back to that
+mark.
+   It's often useful to think of a simple connection between the mark letter
+and where it is placed.  For example, use the H mark in a header file, M in
+a Makefile and C in a C code file.
+
+To see where a specific mark is, give an argument to the ":marks" command: >
+
+	:marks M
+
+You can also give several arguments: >
+
+	:marks MCP
+
+Don't forget that you can use CTRL-O and CTRL-I to jump to older and newer
+positions without placing marks there.
+
+==============================================================================
+*07.4*	Backup files
+
+Usually Vim does not produce a backup file. If you want to have one, all you
+need to do is execute the following command: >
+
+	:set backup
+
+The name of the backup file is the original file with a  ~  added to the end.
+If your file is named data.txt, for example, the backup file name is
+data.txt~.
+   If you do not like the fact that the backup files end with ~, you can
+change the extension: >
+
+	:set backupext=.bak
+
+This will use data.txt.bak instead of data.txt~.
+   Another option that matters here is 'backupdir'.  It specifies where the
+backup file is written.  The default, to write the backup in the same
+directory as the original file, will mostly be the right thing.
+
+	Note:
+	When the 'backup' option isn't set but the 'writebackup' is, Vim will
+	still create a backup file.  However, it is deleted as soon as writing
+	the file was completed successfully.  This functions as a safety
+	against losing your original file when writing fails in some way (disk
+	full is the most common cause; being hit by lightning might be
+	another, although less common).
+
+
+KEEPING THE ORIGINAL FILE
+
+If you are editing source files, you might want to keep the file before you
+make any changes.  But the backup file will be overwritten each time you write
+the file.  Thus it only contains the previous version, not the first one.
+   To make Vim keep the original file, set the 'patchmode' option.  This
+specifies the extension used for the first backup of a changed file.  Usually
+you would do this: >
+
+	:set patchmode=.orig
+
+When you now edit the file data.txt for the first time, make changes and write
+the file, Vim will keep a copy of the unchanged file under the name
+"data.txt.orig".
+   If you make further changes to the file, Vim will notice that
+"data.txt.orig" already exists and leave it alone.  Further backup files will
+then be called "data.txt~" (or whatever you specified with 'backupext').
+   If you leave 'patchmode' empty (that is the default), the original file
+will not be kept.
+
+==============================================================================
+*07.5*	Copy text between files
+
+This explains how to copy text from one file to another.  Let's start with a
+simple example.  Edit the file that contains the text you want to copy.  Move
+the cursor to the start of the text and press "v".  This starts Visual mode.
+Now move the cursor to the end of the text and press "y".  This yanks (copies)
+the selected text.
+   To copy the above paragraph, you would do: >
+
+	:edit thisfile
+	/This
+	vjjjj$y
+
+Now edit the file you want to put the text in.  Move the cursor to the
+character where you want the text to appear after.  Use "p" to put the text
+there. >
+	:edit otherfile
+	/There
+	p
+
+Of course you can use many other commands to yank the text.  For example, to
+select whole lines start Visual mode with "V".  Or use CTRL-V to select a
+rectangular block.  Or use "Y" to yank a single line, "yaw" to yank-a-word,
+etc.
+   The "p" command puts the text after the cursor.  Use "P" to put the text
+before the cursor.  Notice that Vim remembers if you yanked a whole line or a
+block, and puts it back that way.
+
+
+USING REGISTERS
+
+When you want to copy several pieces of text from one file to another, having
+to switch between the files and writing the target file takes a lot of time.
+To avoid this, copy each piece of text to its own register.
+   A register is a place where Vim stores text.  Here we will use the
+registers named a to z (later you will find out there are others).  Let's copy
+a sentence to the f register (f for First): >
+
+	"fyas
+
+The "yas" command yanks a sentence like before.  It's the "f that tells Vim
+the text should be place in the f register.  This must come just before the
+yank command.
+   Now yank three whole lines to the l register (l for line): >
+
+	"l3Y
+
+The count could be before the "l just as well.  To yank a block of text to the
+b (for block) register: >
+
+	CTRL-Vjjww"by
+
+Notice that the register specification "b is just before the "y" command.
+This is required.  If you would have put it before the "w" command, it would
+not have worked.
+   Now you have three pieces of text in the f, l and b registers.  Edit
+another file, move around and place the text where you want it: >
+
+	"fp
+
+Again, the register specification "f comes before the "p" command.
+   You can put the registers in any order.  And the text stays in the register
+until you yank something else into it.  Thus you can put it as many times as
+you like.
+
+When you delete text, you can also specify a register.  Use this to move
+several pieces of text around.  For example, to delete-a-word and write it in
+the w register: >
+
+	"wdaw
+
+Again, the register specification comes before the delete command "d".
+
+
+APPENDING TO A FILE
+
+When collecting lines of text into one file, you can use this command: >
+
+	:write >> logfile
+
+This will write the text of the current file to the end of "logfile".  Thus it
+is appended.  This avoids that you have to copy the lines, edit the log file
+and put them there.  Thus you save two steps.  But you can only append to the
+end of a file.
+   To append only a few lines, select them in Visual mode before typing
+":write".  In chapter 10 you will learn other ways to select a range of lines.
+
+==============================================================================
+*07.6*	Viewing a file
+
+Sometimes you only want to see what a file contains, without the intention to
+ever write it back.  There is the risk that you type ":w" without thinking and
+overwrite the original file anyway.  To avoid this, edit the file read-only.
+   To start Vim in readonly mode, use this command: >
+
+	vim -R file
+
+On Unix this command should do the same thing: >
+
+	view file
+
+You are now editing "file" in read-only mode.  When you try using ":w" you
+will get an error message and the file won't be written.
+   When you try to make a change to the file Vim will give you a warning:
+
+	W10: Warning: Changing a readonly file ~
+
+The change will be done though.  This allows for formatting the file, for
+example, to be able to read it easily.
+   If you make changes to a file and forgot that it was read-only, you can
+still write it.  Add the ! to the write command to force writing.
+
+If you really want to forbid making changes in a file, do this: >
+
+	vim -M file
+
+Now every attempt to change the text will fail.  The help files are like this,
+for example.  If you try to make a change you get this error message:
+
+	E21: Cannot make changes, 'modifiable' is off ~
+
+You could use the -M argument to setup Vim to work in a viewer mode.  This is
+only voluntary though, since these commands will remove the protection: >
+
+	:set modifiable
+	:set write
+
+==============================================================================
+*07.7*	Changing the file name
+
+A clever way to start editing a new file is by using an existing file that
+contains most of what you need.  For example, you start writing a new program
+to move a file.  You know that you already have a program that copies a file,
+thus you start with: >
+
+	:edit copy.c
+
+You can delete the stuff you don't need.  Now you need to save the file under
+a new name.  The ":saveas" command can be used for this: >
+
+	:saveas move.c
+
+Vim will write the file under the given name, and edit that file.  Thus the
+next time you do ":write", it will write "move.c".  "copy.c" remains
+unmodified.
+   When you want to change the name of the file you are editing, but don't
+want to write the file, you can use this command: >
+
+	:file move.c
+
+Vim will mark the file as "not edited".  This means that Vim knows this is not
+the file you started editing.  When you try to write the file, you might get
+this message:
+
+	E13: File exists (use ! to override) ~
+
+This protects you from accidentally overwriting another file.
+
+==============================================================================
+
+Next chapter: |usr_08.txt|  Splitting windows
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_08.txt b/runtime/doc/usr_08.txt
new file mode 100644
index 0000000..fef8398
--- /dev/null
+++ b/runtime/doc/usr_08.txt
@@ -0,0 +1,511 @@
+*usr_08.txt*	For Vim version 7.0aa.  Last change: 2004 Jun 04
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			      Splitting windows
+
+
+Display two different files above each other.  Or view two locations in the
+file at the same time.  See the difference between two files by putting them
+side by side.  All this is possible with split windows.
+
+|08.1|	Split a window
+|08.2|	Split a window on another file
+|08.3|	Window size
+|08.4|	Vertical splits
+|08.5|	Moving windows
+|08.6|	Commands for all windows
+|08.7|	Viewing differences with vimdiff
+|08.8|	Various
+
+     Next chapter: |usr_09.txt|  Using the GUI
+ Previous chapter: |usr_07.txt|  Editing more than one file
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*08.1*	Split a window
+
+The easiest way to open a new window is to use the following command: >
+
+	:split
+
+This command splits the screen into two windows and leaves the cursor in the
+top one:
+
+	+----------------------------------+
+	|/* file one.c */		   |
+	|~				   |
+	|~				   |
+	|one.c=============================|
+	|/* file one.c */		   |
+	|~				   |
+	|one.c=============================|
+	|				   |
+	+----------------------------------+
+
+What you see here is two windows on the same file.  The line with "====" is
+that status line.  It displays information about the window above it.  (In
+practice the status line will be in reverse video.)
+   The two windows allow you to view two parts of the same file.  For example,
+you could make the top window show the variable declarations of a program, and
+the bottom one the code that uses these variables.
+
+The CTRL-W w command can be used to jump between the windows.  If you are in
+the top window, CTRL-W w jumps to the window below it.  If you are in the
+bottom window it will jump to the first window. (CTRL-W CTRL-W does the same
+thing, in case you let go of the CTRL key a bit later.)
+
+
+CLOSE THE WINDOW
+
+To close a window, use the command: >
+
+	:close
+
+Actually, any command that quits editing a file works, like ":quit" and "ZZ".
+But ":close" prevents you from accidentally exiting Vim when you close the
+last window.
+
+
+CLOSING ALL OTHER WINDOWS
+
+If you have opened a whole bunch of windows, but now want to concentrate on
+one of them, this command will be useful: >
+
+	:only
+
+This closes all windows, except for the current one.  If any of the other
+windows has changes, you will get an error message and that window won't be
+closed.
+
+==============================================================================
+*08.2*	Split a window on another file
+
+The following command opens a second window and starts editing the given file:
+>
+	:split two.c
+
+If you were editing one.c, then the result looks like this:
+
+	+----------------------------------+
+	|/* file two.c */		   |
+	|~				   |
+	|~				   |
+	|two.c=============================|
+	|/* file one.c */		   |
+	|~				   |
+	|one.c=============================|
+	|				   |
+	+----------------------------------+
+
+To open a window on a new, empty file, use this: >
+
+	:new
+
+You can repeat the ":split" and ":new" commands to create as many windows as
+you like.
+
+==============================================================================
+*08.3*	Window size
+
+The ":split" command can take a number argument.  If specified, this will be
+the height of the new window.  For example, the following opens a new window
+three lines high and starts editing the file alpha.c: >
+
+	:3split alpha.c
+
+For existing windows you can change the size in several ways.  When you have a
+working mouse, it is easy: Move the mouse pointer to the status line that
+separates two windows, and drag it up or down.
+
+To increase the size of a window: >
+
+	CTRL-W +
+
+To decrease it: >
+
+	CTRL-W -
+
+Both of these commands take a count and increase or decrease the window size
+by that many lines.  Thus "4 CTRL-W +" make the window four lines higher.
+
+To set the window height to a specified number of lines: >
+
+	{height}CTRL-W _
+
+That's: a number {height}, CTRL-W and then an underscore (the - key with Shift
+on English-US keyboards).
+   To make a window as high as it can be, use the CTRL-W _ command without a
+count.
+
+
+USING THE MOUSE
+
+In Vim you can do many things very quickly from the keyboard.  Unfortunately,
+the window resizing commands require quite a bit of typing.  In this case,
+using the mouse is faster.  Position the mouse pointer on a status line.  Now
+press the left mouse button and drag.  The status line will move, thus making
+the window on one side higher and the other smaller.
+
+
+OPTIONS
+
+The 'winheight' option can be set to a minimal desired height of a window and
+'winminheight' to a hard minimum height.
+   Likewise, there is 'winwidth' for the minimal desired width and
+'winminwidth' for the hard minimum width.
+   The 'equalalways' option, when set, makes Vim equalize the windows sizes
+when a window is closed or opened.
+
+==============================================================================
+*08.4*	Vertical splits
+
+The ":split" command creates the new window above the current one.  To make
+the window appear at the left side, use: >
+
+	:vsplit
+
+or: >
+	:vsplit two.c
+
+The result looks something like this:
+
+	+--------------------------------------+
+	|/* file two.c */   |/* file one.c */  |
+	|~		    |~		       |
+	|~		    |~		       |
+	|~		    |~		       |
+	|two.c===============one.c=============|
+	|				       |
+	+--------------------------------------+
+
+Actually, the | lines in the middle will be in reverse video.  This is called
+the vertical separator.  It separates the two windows left and right of it.
+
+There is also the ":vnew" command, to open a vertically split window on a new,
+empty file.  Another way to do this: >
+
+	:vertical new
+
+The ":vertical" command can be inserted before another command that splits a
+window.  This will cause that command to split the window vertically instead
+of horizontally.  (If the command doesn't split a window, it works
+unmodified.)
+
+
+MOVING BETWEEN WINDOWS
+
+Since you can split windows horizontally and vertically as much as you like,
+you can create any layout of windows.  Then you can use these commands to move
+between them:
+
+	CTRL-W h	move to the window on the left
+	CTRL-W j	move to the window below
+	CTRL-W k	move to the window above
+	CTRL-W l	move to the window on the right
+
+	CTRL-W t	move to the TOP window
+	CTRL-W b	move to the BOTTOM window
+
+You will notice the same letters as used for moving the cursor.  And the
+cursor keys can also be used, if you like.
+   More commands to move to other windows: |Q_wi|.
+
+==============================================================================
+*08.5*	Moving windows
+
+You have split a few windows, but now they are in the wrong place.  Then you
+need a command to move the window somewhere else.  For example, you have three
+windows like this:
+
+	+----------------------------------+
+	|/* file two.c */		   |
+	|~				   |
+	|~				   |
+	|two.c=============================|
+	|/* file three.c */		   |
+	|~				   |
+	|~				   |
+	|three.c===========================|
+	|/* file one.c */		   |
+	|~				   |
+	|one.c=============================|
+	|				   |
+	+----------------------------------+
+
+Clearly the last one should be at the top.  Go to that window (using CTRL-W w)
+and the type this command: >
+
+	CTRL-W K
+
+This uses the uppercase letter K.  What happens is that the window is moved to
+the very top.  You will notice that K is again used for moving upwards.
+   When you have vertical splits, CTRL-W K will move the current window to the
+top and make it occupy the full with of the Vim window.  If this is your
+layout:
+
+	+-------------------------------------------+
+	|/* two.c */  |/* three.c */  |/* one.c */  |
+	|~	      |~	      |~	    |
+	|~	      |~	      |~	    |
+	|~	      |~	      |~	    |
+	|~	      |~	      |~	    |
+	|~	      |~	      |~	    |
+	|two.c=========three.c=========one.c========|
+	|					    |
+	+-------------------------------------------+
+
+Then using CTRL-W K in the middle window (three.c) will result in:
+
+	+-------------------------------------------+
+	|/* three.c */				    |
+	|~					    |
+	|~					    |
+	|three.c====================================|
+	|/* two.c */	       |/* one.c */	    |
+	|~		       |~		    |
+	|two.c==================one.c===============|
+	|					    |
+	+-------------------------------------------+
+
+The other three similar commands (you can probably guess these now):
+
+	CTRL-W H	move window to the far left
+	CTRL-W J	move window to the bottom
+	CTRL-W L	move window to the far right
+
+==============================================================================
+*08.6*	Commands for all windows
+
+When you have several windows open and you want to quit Vim, you can close
+each window separately.  A quicker way is using this command: >
+
+	:qall
+
+This stands for "quit all".  If any of the windows contain changes, Vim will
+not exit.  The cursor will automatically be positioned in a window with
+changes.  You can then either use ":write" to save the changes, or ":quit!" to
+throw them away.
+
+If you know there are windows with changes, and you want to save all these
+changes, use this command: >
+
+	:wall
+
+This stands for "write all".  But actually, it only writes files with
+changes.  Vim knows it doesn't make sense to write files that were not
+changed.
+   And then there is the combination of ":qall" and ":wall": the "write and
+quit all" command: >
+
+	:wqall
+
+This writes all modified files and quits Vim.
+   Finally, there is a command that quits Vim and throws away all changes: >
+
+	:qall!
+
+Be careful, there is no way to undo this command!
+
+
+OPENING A WINDOW FOR ALL ARGUMENTS
+
+To make Vim open a window for each file, start it with the "-o" argument: >
+
+	vim -o one.txt two.txt three.txt
+
+This results in:
+
+	+-------------------------------+
+	|file one.txt			|
+	|~				|
+	|one.txt========================|
+	|file two.txt			|
+	|~				|
+	|two.txt========================|
+	|file three.txt			|
+	|~				|
+	|three.txt======================|
+	|				|
+	+-------------------------------+
+
+The "-O" argument is used to get vertically split windows.
+   When Vim is already running, the ":all" command opens a window for each
+file in the argument list.  ":vertical all" does it with vertical splits.
+
+==============================================================================
+*08.7*	Viewing differences with vimdiff
+
+There is a special way to start Vim, which shows the differences between two
+files.  Let's take a file "main.c" and insert a few characters in one line.
+Write this file with the 'backup' option set, so that the backup file
+"main.c~" will contain the previous version of the file.
+   Type this command in a shell (not in Vim): >
+
+	vimdiff main.c~ main.c
+
+Vim will start, with two windows side by side.  You will only see the line
+in which you added characters, and a few lines above and below it.
+
+	 VV		      VV
+	+-----------------------------------------+
+	|+ +--123 lines: /* a|+ +--123 lines: /* a|  <- fold
+	|  text		     |	text		  |
+	|  text		     |	text		  |
+	|  text		     |	text		  |
+	|  text		     |	changed text	  |  <- changed line
+	|  text		     |	text		  |
+	|  text		     |	------------------|  <- deleted line
+	|  text		     |	text		  |
+	|  text		     |	text		  |
+	|  text		     |	text		  |
+	|+ +--432 lines: text|+ +--432 lines: text|  <- fold
+	|  ~		     |	~		  |
+	|  ~		     |	~		  |
+	|main.c~==============main.c==============|
+	|					  |
+	+-----------------------------------------+
+
+(This picture doesn't show the highlighting, use the vimdiff command for a
+better look.)
+
+The lines that were not modified have been collapsed into one line.  This is
+called a closed fold.  They are indicated in the picture with "<- fold".  Thus
+the single fold line at the top stands for 123 text lines.  These lines are
+equal in both files.
+   The line marked with "<- changed line" is highlighted, and the inserted
+text is displayed with another color.  This clearly shows what the difference
+is between the two files.
+   The line that was deleted is displayed with "---" in the main.c window.
+See the "<- deleted line" marker in the picture.  These characters are not
+really there.  They just fill up main.c, so that it displays the same number
+of lines as the other window.
+
+
+THE FOLD COLUMN
+
+Each window has a column on the left with a slightly different background.  In
+the picture above these are indicated with "VV".  You notice there is a plus
+character there, in front of each closed fold.  Move the mouse pointer to that
+plus and click the left button.  The fold will open, and you can see the text
+that it contains.
+   The fold column contains a minus sign for an open fold.  If you click on
+this -, the fold will close.
+   Obviously, this only works when you have a working mouse.  You can also use
+"zo" to open a fold and "zc" to close it.
+
+
+DIFFING IN VIM
+
+Another way to start in diff mode can be done from inside Vim.  Edit the
+"main.c" file, then make a split and show the differences: >
+
+	:edit main.c
+	:vertical diffsplit main.c~ 
+
+The ":vertical" command is used to make the window split vertically.  If you
+omit this, you will get a horizontal split.
+
+If you have a patch or diff file, you can use the third way to start diff
+mode.  First edit the file to which the patch applies.  Then tell Vim the name
+of the patch file: >
+
+	:edit main.c
+	:vertical diffpatch main.c.diff
+
+WARNING: The patch file must contain only one patch, for the file you are
+editing.  Otherwise you will get a lot of error messages, and some files might
+be patched unexpectedly.
+   The patching will only be done to the copy of the file in Vim.  The file on
+your harddisk will remain unmodified (until you decide to write the file).
+
+
+SCROLL BINDING
+
+When the files have more changes, you can scroll in the usual way.  Vim will
+try to keep both the windows start at the same position, so you can easily see
+the differences side by side.
+   When you don't want this for a moment, use this command: >
+
+	:set noscrollbind
+
+
+JUMPING TO CHANGES
+
+When you have disabled folding in some way, it may be difficult to find the
+changes.  Use this command to jump forward to the next change: >
+
+	]c
+
+To go the other way use: >
+
+	[c
+
+Prepended a count to jump further away.
+
+
+REMOVING CHANGES
+
+You can move text from one window to the other.  This either removes
+differences or adds new ones.  Vim doesn't keep the highlighting updated in
+all situations.  To update it use this command: >
+
+	:diffupdate
+
+To remove a difference, you can move the text in a highlighted block from one
+window to another.  Take the "main.c" and "main.c~" example above.  Move the
+cursor to the left window, on the line that was deleted in the other window.
+Now type this command: >
+
+	dp
+
+The change will be removed by putting the text of the current window in the
+other window.  "dp" stands for "diff put".
+   You can also do it the other way around.  Move the cursor to the right
+window, to the line where "changed" was inserted.  Now type this command: >
+
+	do
+
+The change will now be removed by getting the text from the other window.
+Since there are no changes left now, Vim puts all text in a closed fold.
+"do" stands for "diff obtain".  "dg" would have been better, but that already
+has a different meaning ("dgg" deletes from the cursor until the first line).
+
+For details about diff mode, see |vimdiff|.
+
+==============================================================================
+*08.8*	Various
+
+The 'laststatus' option can be used to specify when the last window has a
+statusline:
+
+	0	never
+	1	only when there are split windows (the default)
+	2	always
+
+Many commands that edit another file have a variant that splits the window.
+For Command-line commands this is done by prepending an "s".  For example:
+":tag" jumps to a tag, ":stag" splits the window and jumps to a
+tag.
+   For Normal mode commands a CTRL-W is prepended.  CTRL-^ jumps to the
+alternate file, CTRL-W CTRL-^ splits the window and edits the alternate file.
+
+The 'splitbelow' option can be set to make a new window appear below the
+current window.  The 'splitright' option can be set to make a vertically split
+window appear right of the current window.
+
+When splitting a window you can prepend a modifier command to tell where the
+window is to appear:
+
+	:leftabove {cmd}	left or above the current window
+	:aboveleft {cmd}	idem
+	:rightbelow {cmd}	right or below the current window
+	:belowright {cmd}	idem
+	:topleft {cmd}		at the top or left of the Vim window
+	:botright {cmd}		at the bottom or right of the Vim window
+
+==============================================================================
+
+Next chapter: |usr_09.txt|  Using the GUI
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_09.txt b/runtime/doc/usr_09.txt
new file mode 100644
index 0000000..8d97b18
--- /dev/null
+++ b/runtime/doc/usr_09.txt
@@ -0,0 +1,289 @@
+*usr_09.txt*	For Vim version 7.0aa.  Last change: 2001 Sep 03
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+				Using the GUI
+
+
+Vim works in an ordinary terminal.  GVim can do the same things and a few
+more.  The GUI offers menus, a toolbar, scrollbars and other items.  This
+chapter is about these extra things that the GUI offers.
+
+|09.1|	Parts of the GUI
+|09.2|	Using the mouse
+|09.3|	The clipboard
+|09.4|	Select mode
+
+     Next chapter: |usr_10.txt|  Making big changes
+ Previous chapter: |usr_08.txt|  Splitting windows
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*09.1*	Parts of the GUI
+
+You might have an icon on your desktop that starts gVim.  Otherwise, one of
+these commands should do it: >
+
+	gvim file.txt
+	vim -g file.txt
+
+If this doesn't work you don't have a version of Vim with GUI support.  You
+will have to install one first.
+   Vim will open a window and display "file.txt" in it.  What the window looks
+like depends on the version of Vim.  It should resemble the following picture
+(for as far as this can be shown in ASCII!).
+
+	+----------------------------------------------------+
+	| file.txt + (~/dir) - VIM			   X |	<- window title
+	+----------------------------------------------------+
+	| File	Edit  Tools  Syntax  Buffers  Window  Help   |	<- menubar
+	+----------------------------------------------------+
+	| aaa  bbb  ccc  ddd  eee  fff	ggg  hhh  iii  jjj   |	<- toolbar
+	| aaa  bbb  ccc  ddd  eee  fff	ggg  hhh  iii  jjj   |
+	+----------------------------------------------------+
+	| file text					 | ^ |
+	| ~						 | # |
+	| ~						 | # |	<- scrollbar
+	| ~						 | # |
+	| ~						 | # |
+	| ~						 | # |
+	|						 | V |
+	+----------------------------------------------------+
+
+The largest space is occupied by the file text.  This shows the file in the
+same way as in a terminal.  With some different colors and another font
+perhaps.
+
+
+THE WINDOW TITLE
+
+At the very top is the window title.  This is drawn by your window system.
+Vim will set the title to show the name of the current file.  First comes the
+name of the file.  Then some special characters and the directory of the file
+in parens.  These special character can be present:
+
+	-	The file cannot be modified (e.g., a help file)
+	+	The file contains changes
+	=	The file is read-only
+	=+	The file is read-only, contains changes anyway
+
+If nothing is shown you have an ordinary, unchanged file.
+
+
+THE MENUBAR
+
+You know how menus work, right?  Vim has the usual items, plus a few more.
+Browse them to get an idea of what you can use them for.  A relevant submenu
+is Edit/Global Settings.  You will find these entries:
+
+	Toggle Toolbar		make the toolbar appear/disappear
+	Toggle Bottom Scrollbar	make a scrollbar appear/disappear at the bottom
+	Toggle Left Scrollbar	make a scrollbar appear/disappear at the left
+	Toggle Right Scrollbar	make a scrollbar appear/disappear at the right
+
+On most systems you can tear-off the menus.  Select the top item of the menu,
+the one that looks like a dashed line.  You will get a separate window with
+the items of the menu.  It will hang around until you close the window.
+
+
+THE TOOLBAR
+
+This contains icons for the most often used actions.  Hopefully the icons are
+self-explanatory.  There are tooltips to get an extra hint (move the mouse
+pointer to the icon without clicking and don't move it for a second).
+
+The "Edit/Global Settings/Toggle Toolbar" menu item can be used to make the
+toolbar disappear.  If you never want a toolbar, use this command in your
+vimrc file: >
+
+	:set guioptions-=T
+
+This removes the 'T' flag from the 'guioptions' option.  Other parts of the
+GUI can also be enabled or disabled with this option.  See the help for it.
+
+
+THE SCROLLBARS
+
+By default there is one scrollbar on the right.  It does the obvious thing.
+When you split the window, each window will get its own scrollbar.
+   You can make a horizontal scrollbar appear with the menu item
+Edit/Global Settings/Toggle Bottom Scrollbar.  This is useful in diff mode, or
+when the 'wrap' option has been reset (more about that later).
+
+When there are vertically split windows, only the windows on the right side
+will have a scrollbar.  However, when you move the cursor to a window on the
+left, it will be this one the that scrollbar controls.  This takes a bit of
+time to get used to.
+   When you work with vertically split windows, consider adding a scrollbar on
+the left.  This can be done with a menu item, or with the 'guioptions' option:
+>
+	:set guioptions+=l
+
+This adds the 'l' flag to 'guioptions'.
+
+==============================================================================
+*09.2*	Using the mouse
+
+Standards are wonderful.  In Microsoft Windows, you can use the mouse to
+select text in a standard manner.  The X Window system also has a standard
+system for using the mouse.  Unfortunately, these two standards are not the
+same.
+   Fortunately, you can customize Vim.  You can make the behavior of the mouse
+work like an X Window system mouse or a Microsoft Windows mouse. The following
+command makes the mouse behave like an X Window mouse: >
+
+	:behave xterm
+
+The following command makes the mouse work like a Microsoft Windows mouse: >
+
+	:behave mswin
+
+The default behavior of the mouse on UNIX systems is xterm.  The default
+behavior on a Microsoft Windows system is selected during the installation
+process.  For details about what the two behaviors are, see |:behave|.  Here
+follows a summary.
+
+
+XTERM MOUSE BEHAVIOR
+
+Left mouse click		position the cursor
+Left mouse drag			select text in Visual mode
+Middle mouse click		paste text from the clipboard
+Right mouse click		extend the selected text until the mouse
+				pointer
+
+
+MSWIN MOUSE BEHAVIOR
+
+Left mouse click		position the cursor
+Left mouse drag			select text in Select mode (see |09.4|)
+Left mouse click, with Shift	extend the selected text until the mouse
+				pointer
+Middle mouse click		paste text from the clipboard
+Right mouse click		display a pop-up menu
+
+
+The mouse can be further tuned.  Check out these options if you want to change
+the way how the mouse works:
+
+	'mouse'			in which mode the mouse is used by Vim
+	'mousemodel'		what effect a mouse click has
+	'mousetime'		time between clicks for a double-click
+	'mousehide'		hide the mouse while typing
+	'selectmode'		whether the mouse starts Visual or Select mode
+
+==============================================================================
+*09.3*	The clipboard
+
+In section |04.7| the basic use of the clipboard was explained.  There is one
+essential thing to explain about X-windows: There are actually two places to
+exchange text between programs.  MS-Windows doesn't have this.
+
+In X-Windows there is the "current selection".  This is the text that is
+currently highlighted.  In Vim this is the Visual area (this assumes you are
+using the default option settings).  You can paste this selection in another
+application without any further action.
+   For example, in this text select a few words with the mouse.  Vim will
+switch to Visual mode and highlight the text.  Now start another gVim, without
+a file name argument, so that it displays an empty window.  Click the middle
+mouse button.  The selected text will be inserted.
+
+The "current selection" will only remain valid until some other text is
+selected.  After doing the paste in the other gVim, now select some characters
+in that window.  You will notice that the words that were previously selected
+in the other gVim window are displayed differently.  This means that it no
+longer is the current selection.
+
+You don't need to select text with the mouse, using the keyboard commands for
+Visual mode works just as well.
+
+
+THE REAL CLIPBOARD
+
+Now for the other place with which text can be exchanged.  We call this the
+"real clipboard", to avoid confusion.  Often both the "current selection" and
+the "real clipboard" are called clipboard, you'll have to get used to that.
+   To put text on the real clipboard, select a few different words in one of
+the gVims you have running.  Then use the Edit/Copy menu entry.  Now the text
+has been copied to the real clipboard.  You can't see this, unless you have
+some application that shows the clipboard contents (e.g., KDE's klipper).
+   Now select the other gVim, position the cursor somewhere and use the
+Edit/Paste menu.  You will see the text from the real clipboard is inserted.
+
+
+USING BOTH
+
+This use of both the "current selection" and the "real clipboard" might sound
+a bit confusing.  But it is very useful.  Let's show this with an example.
+Use one gVim with a text file and perform these actions:
+
+-  Select two words in Visual mode.
+-  Use the Edit/Copy menu to get these words onto the clipboard.
+-  Select one other word in Visual mode.
+-  Use the Edit/Paste menu item.  What will happen is that the single selected
+   word is replaced with the two words from the clipboard.
+-  Move the mouse pointer somewhere else and click the middle button.  You
+   will see that the word you just overwrote with the clipboard is inserted
+   here.
+
+If you use the "current selection" and the "real clipboard" with care, you can
+do a lot of useful editing with them.
+
+
+USING THE KEYBOARD
+
+If you don't like using the mouse, you can access the current selection and
+the real clipboard with two registers.  The "* register is for the current
+selection.
+   To make text become the current selection, use Visual mode.  For example,
+to select a whole line just press "V".
+   To insert the current selection before the cursor: >
+
+	"*P
+
+Notice the uppercase "P".  The lowercase "p" puts the text after the cursor.
+
+The "+ register is used for the real clipboard.  For example, to copy the text
+from the cursor position until the end of the line to the clipboard: >
+
+	"+y$
+
+Remember, "y" is yank, which is Vim's copy command.
+   To insert the contents of the real clipboard before the cursor: >
+
+	"+P
+
+It's the same as for the current selection, but uses the plus (+) register
+instead of the star (*) register.
+
+==============================================================================
+*09.4*	Select mode
+
+And now something that is used more often on MS-Windows than on X-Windows.
+But both can do it.  You already know about Visual mode.  Select mode is like
+Visual mode, because it is also used to select text.  But there is an obvious
+difference: When typing text, the selected text is deleted and the typed text
+replaces it.
+
+To start working with Select mode, you must first enable it (for MS-Windows
+it is probably already enabled, but you can do this anyway): >
+
+	:set selectmode+=mouse
+
+Now use the mouse to select some text.  It is highlighted like in Visual mode.
+Now press a letter.  The selected text is deleted, and the single letter
+replaces it.  You are in Insert mode now, thus you can continue typing.
+
+Since typing normal text causes the selected text to be deleted, you can not
+use the normal movement commands "hjkl", "w", etc.  Instead, use the shifted
+function keys.  <S-Left> (shifted cursor left key) moves the cursor left.  The
+selected text is changed like in Visual mode.  The other shifted cursor keys
+do what you expect.  <S-End> and <S-Home> also work.
+
+You can tune the way Select mode works with the 'selectmode' option.
+
+==============================================================================
+
+Next chapter: |usr_10.txt|  Making big changes
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_10.txt b/runtime/doc/usr_10.txt
new file mode 100644
index 0000000..807d2f9
--- /dev/null
+++ b/runtime/doc/usr_10.txt
@@ -0,0 +1,822 @@
+*usr_10.txt*	For Vim version 7.0aa.  Last change: 2004 Mar 12
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			     Making big changes
+
+
+In chapter 4 several ways to make small changes were explained.  This chapter
+goes into making changes that are repeated or can affect a large amount of
+text.  The Visual mode allows doing various things with blocks of text.  Use
+an external program to do really complicated things.
+
+|10.1|	Record and playback commands
+|10.2|	Substitution
+|10.3|	Command ranges
+|10.4|	The global command
+|10.5|	Visual block mode
+|10.6|	Reading and writing part of a file
+|10.7|	Formatting text
+|10.8|	Changing case
+|10.9|	Using an external program
+
+     Next chapter: |usr_11.txt|  Recovering from a crash
+ Previous chapter: |usr_09.txt|  Using the GUI
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*10.1*	Record and playback commands
+
+The "." command repeats the preceding change.  But what if you want to do
+something more complex than a single change?  That's where command recording
+comes in.  There are three steps:
+
+1. The "q{register}" command starts recording keystrokes into the register
+   named {register}.  The register name must be between a and z.
+2. Type your commands.
+3. To finish recording, press q (without any extra character).
+
+You can now execute the macro by typing the command "@{register}".
+
+Take a look at how to use these commands in practice.  You have a list of
+filenames that look like this:
+
+	stdio.h ~
+	fcntl.h ~
+	unistd.h ~
+	stdlib.h ~
+
+And what you want is the following:
+
+	#include "stdio.h" ~
+	#include "fcntl.h" ~
+	#include "unistd.h" ~
+	#include "stdlib.h" ~
+
+You start by moving to the first character of the first line.  Next you
+execute the following commands:
+
+	qa			Start recording a macro in register a.
+	^			Move to the beginning of the line.
+	i#include "<Esc>	Insert the string #include " at the beginning
+				of the line.
+	$			Move to the end of the line.
+	a"<Esc>			Append the character double quotation mark (")
+				to the end of the line.
+	j			Go to the next line.
+	q			Stop recording the macro.
+
+Now that you have done the work once, you can repeat the change by typing the
+command "@a" three times.
+   The "@a" command can be preceded by a count, which will cause the macro to
+be executed that number of times.  In this case you would type: >
+
+	3@a
+
+
+MOVE AND EXECUTE
+
+You might have the lines you want to change in various places.  Just move the
+cursor to each location and use the "@a" command.  If you have done that once,
+you can do it again with "@@".  That's a bit easier to type.  If you now
+execute register b with "@b", the next "@@" will use register b.
+   If you compare the playback method with using ".", there are several
+differences.  First of all, "." can only repeat one change.  As seen in the
+example above, "@a" can do several changes, and move around as well.
+Secondly, "." can only remember the last change.  Executing a register allows
+you to make any changes and then still use "@a" to replay the recorded
+commands.  Finally, you can use 26 different registers.  Thus you can remember
+26 different command sequences to execute.
+
+
+USING REGISTERS
+
+The registers used for recording are the same ones you used for yank and
+delete commands.  This allows you to mix recording with other commands to
+manipulate the registers.
+   Suppose you have recorded a few commands in register n.  When you execute
+this with "@n" you notice you did something wrong.  You could try recording
+again, but perhaps you will make another mistake.  Instead, use this trick:
+
+	G			Go to the end of the file.
+	o<Esc>			Create an empty line.
+	"np			Put the text from the n register.  You now see
+				the commands you typed as text in the file.
+	{edits}			Change the commands that were wrong.  This is
+				just like editing text.
+	0			Go to the start of the line.
+	"ny$			Yank the corrected commands into the n
+				register.
+	dd			Delete the scratch line.
+
+Now you can execute the corrected commands with "@n".  (If your recorded
+commands include line breaks, adjust the last two items in the example to
+include all the lines.)
+
+
+APPENDING TO A REGISTER
+
+So far we have used a lowercase letter for the register name.  To append to a
+register, use an uppercase letter.
+   Suppose you have recorded a command to change a word to register c.  It
+works properly, but you would like to add a search for the next word to
+change.  This can be done with: >
+
+	qC/word<Enter>q
+
+You start with "qC", which records to the c register and appends.  Thus
+writing to an uppercase register name means to append to the register with
+the same letter, but lowercase.
+
+This works both with recording and with yank and delete commands.  For
+example, you want to collect a sequence of lines into the a register.  Yank
+the first line with: >
+
+	"aY
+
+Now move to the second line, and type: >
+
+	"AY
+
+Repeat this command for all lines.  The a register now contains all those
+lines, in the order you yanked them.
+
+==============================================================================
+*10.2*	Substitution						*find-replace*
+
+The ":substitute" command enables you to perform string replacements on a
+whole range of lines.  The general form of this command is as follows: >
+
+	:[range]substitute/from/to/[flags]
+
+This command changes the "from" string to the "to" string in the lines
+specified with [range].  For example, you can change "Professor" to "Teacher"
+in all lines with the following command: >
+
+	:%substitute/Professor/Teacher/
+<
+	Note:
+	The ":substitute" command is almost never spelled out completely.
+	Most of the time, people use the abbreviated version ":s".  From here
+	on the abbreviation will be used.
+
+The "%" before the command specifies the command works on all lines.  Without
+a range, ":s" only works on the current line.  More about ranges in the next
+section |10.3|.
+
+By default, the ":substitute" command changes only the first occurrence on
+each line.  For example, the preceding command changes the line:
+
+	Professor Smith criticized Professor Johnson today. ~
+
+to:
+
+	Teacher Smith criticized Professor Johnson today. ~
+
+To change every occurrence on the line, you need to add the g (global) flag.
+The command: >
+
+	:%s/Professor/Teacher/g
+
+results in (starting with the original line):
+
+	Teacher Smith criticized Teacher Johnson today. ~
+
+Other flags include p (print), which causes the ":substitute" command to print
+out each line it changes.  The c (confirm) flag tells ":substitute" to ask you
+for confirmation before it performs each substitution.  Enter the following: >
+
+	:%s/Professor/Teacher/c
+
+Vim finds the first occurrence of "Professor" and displays the text it is
+about to change.  You get the following prompt: >
+
+	replace with Teacher (y/n/a/q/l/^E/^Y)?
+
+At this point, you must enter one of the following answers:
+
+	y		Yes; make this change.
+	n		No; skip this match.
+	a		All; make this change and all remaining ones without
+			further confirmation.
+	q		Quit; don't make any more changes.
+	l		Last; make this change and then quit.
+	CTRL-E		Scroll the text one line up.
+	CTRL-Y		Scroll the text one line down.
+
+
+The "from" part of the substitute command is actually a pattern.  The same
+kind as used for the search command.  For example, this command only
+substitutes "the" when it appears at the start of a line: >
+
+	:s/^the/these/
+
+If you are substituting with a "from" or "to" part that includes a slash, you
+need to put a backslash before it.  A simpler way is to use another character
+instead of the slash.  A plus, for example: >
+
+	:s+one/two+one or two+
+
+==============================================================================
+*10.3*	Command ranges
+
+The ":substitute" command, and many other : commands, can be applied to a
+selection of lines.  This is called a range.
+   The simple form of a range is {number},{number}.  For example: >
+
+	:1,5s/this/that/g
+
+Executes the substitute command on the lines 1 to 5.  Line 5 is included.
+The range is always placed before the command.
+
+A single number can be used to address one specific line: >
+
+	:54s/President/Fool/
+
+Some commands work on the whole file when you do not specify a range.  To make
+them work on the current line the "." address is used.  The ":write" command
+works like that.  Without a range, it writes the whole file.  To make it write
+only the current line into a file: >
+
+	:.write otherfile
+
+The first line always has number one.  How about the last line?  The "$"
+character is used for this.  For example, to substitute in the lines from the
+cursor to the end: >
+
+	:.,$s/yes/no/
+
+The "%" range that we used before, is actually a short way to say "1,$", from
+the first to the last line.
+
+
+USING A PATTERN IN A RANGE
+
+Suppose you are editing a chapter in a book, and want to replace all
+occurrences of "grey" with "gray".  But only in this chapter, not in the next
+one.  You know that only chapter boundaries have the word "Chapter" in the
+first column.  This command will work then: >
+
+	:?^Chapter?,/^Chapter/s=grey=gray=g
+
+You can see a search pattern is used twice.  The first "?^Chapter?" finds the
+line above the current position that matches this pattern.  Thus the ?pattern?
+range is used to search backwards.  Similarly, "/^Chapter/" is used to search
+forward for the start of the next chapter.
+   To avoid confusion with the slashes, the "=" character was used in the
+substitute command here.  A slash or another character would have worked as
+well.
+
+
+ADD AND SUBTRACT
+
+There is a slight error in the above command: If the title of the next chapter
+had included "grey" it would be replaced as well.  Maybe that's what you
+wanted, but what if you didn't?  Then you can specify an offset.
+   To search for a pattern and then use the line above it: >
+
+	/Chapter/-1
+
+You can use any number instead of the 1.  To address the second line below the
+match: >
+
+	/Chapter/+2
+
+The offsets can also be used with the other items in a range.  Look at this
+one: >
+
+	:.+3,$-5
+
+This specifies the range that starts three lines below the cursor and ends
+five lines before the last line in the file.
+
+
+USING MARKS
+
+Instead of figuring out the line numbers of certain positions, remembering them
+and typing them in a range, you can use marks.
+   Place the marks as mentioned in chapter 3.  For example, use "mt" to mark
+the top of an area and "mb" to mark the bottom.  Then you can use this range
+to specify the lines between the marks (including the lines with the marks): >
+
+	:'t,'b
+
+
+VISUAL MODE AND RANGES
+
+You can select text with Visual mode.  If you then press ":" to start a colon
+command, you will see this: >
+
+	:'<,'>
+
+Now you can type the command and it will be applied to the range of lines that
+was visually selected.
+
+	Note:
+	When using Visual mode to select part of a line, or using CTRL-V to
+	select a block of text, the colon commands will still apply to whole
+	lines.  This might change in a future version of Vim.
+
+The '< and '> are actually marks, placed at the start and end of the Visual
+selection.  The marks remain at their position until another Visual selection
+is made.  Thus you can use the "'<" command to jump to position where the
+Visual area started.  And you can mix the marks with other items: >
+
+	:'>,$
+
+This addresses the lines from the end of the Visual area to the end of the
+file.
+
+
+A NUMBER OF LINES
+
+When you know how many lines you want to change, you can type the number and
+then ":".  For example, when you type "5:", you will get: >
+
+	:.,.+4
+
+Now you can type the command you want to use.  It will use the range "."
+(current line) until ".+4" (four lines down).  Thus it spans five lines.
+
+==============================================================================
+*10.4*	The global command
+
+The ":global" command is one of the more powerful features of Vim.  It allows
+you to find a match for a pattern and execute a command there.  The general
+form is: >
+
+	:[range]global/{pattern}/{command}
+
+This is similar to the ":substitute" command.  But, instead of replacing the
+matched text with other text, the command {command} is executed.
+
+	Note:
+	The command executed for ":global" must be one that starts with a
+	colon.  Normal mode commands can not be used directly.  The |:normal|
+	command can do this for you.
+
+Suppose you want to change "foobar" to "barfoo", but only in C++ style
+comments.  These comments start with "//".  Use this command: >
+
+	:g+//+s/foobar/barfoo/g
+
+This starts with ":g".  That is short for ":global", just like ":s" is short
+for ":substitute".  Then the pattern, enclosed in plus characters.  Since the
+pattern we are looking for contains a slash, this uses the plus character to
+separate the pattern.  Next comes the substitute command that changes "foobar"
+into "barfoo".
+   The default range for the global command is the whole file.  Thus no range
+was specified in this example.  This is different from ":substitute", which
+works on one line without a range.
+   The command isn't perfect, since it also matches lines where "//" appears
+halfway a line, and the substitution will also take place before the "//".
+
+Just like with ":substitute", any pattern can be used.  When you learn more
+complicated patterns later, you can use them here.
+
+==============================================================================
+*10.5*	Visual block mode
+
+With CTRL-V you can start selection of a rectangular area of text.  There are
+a few commands that do something special with the text block.
+
+There is something special about using the "$" command in Visual block mode.
+When the last motion command used was "$", all lines in the Visual selection
+will extend until the end of the line, also when the line with the cursor is
+shorter.  This remains effective until you use a motion command that moves the
+cursor horizontally.  Thus using "j" keeps it, "h" stops it.
+
+
+INSERTING TEXT
+
+The command  "I{string}<Esc>" inserts the text {string} in each line, just
+left of the visual block.  You start by pressing CTRL-V to enter visual block
+mode.  Now you move the cursor to define your block.  Next you type I to enter
+Insert mode, followed by the text to insert.  As you type, the text appears on
+the first line only.
+   After you press <Esc> to end the insert, the text will magically be
+inserted in the rest of the lines contained in the visual selection.  Example:
+
+	include one ~
+	include two ~
+	include three ~
+	include four ~
+
+Move the cursor to the "o" of "one" and press CTRL-V.  Move it down with "3j"
+to "four".  You now have a block selection that spans four lines.  Now type: >
+
+	Imain.<Esc>
+
+The result:
+
+	include main.one ~
+	include main.two ~
+	include main.three ~
+	include main.four ~
+
+If the block spans short lines that do not extend into the block, the text is
+not inserted in that line.  For example, make a Visual block selection that
+includes the word "long" in the first and last line of this text, and thus has
+no text selected in the second line:
+
+	This is a long line ~
+	short ~
+	Any other long line ~
+
+		  ^^^^ selected block
+
+Now use the command "Ivery <Esc>".  The result is:
+
+	This is a very long line ~
+	short ~
+	Any other very long line ~
+
+In the short line no text was inserted.
+
+If the string you insert contains a newline, the "I" acts just like a Normal
+insert command and affects only the first line of the block.
+
+The "A" command works the same way, except that it appends after the right
+side of the block.
+   There is one special case for "A": Select a Visual block and then use "$"
+to make the block extend to the end of each line.  Using "A" now will append
+the text to the end of each line.
+   Using the same example from above, and then typing "$A XXX<Esc>, you get
+this result:
+
+	This is a long line XXX ~
+	short XXX ~
+	Any other long line XXX ~
+
+This really requires using the "$" command.  Vim remembers that it was used.
+Making the same selection by moving the cursor to the end of the longest line
+with other movement commands will not have the same result.
+
+
+CHANGING TEXT
+
+The Visual block "c" command deletes the block and then throws you into Insert
+mode to enable you to type in a string.  The string will be inserted in each
+line in the block.
+   Starting with the same selection of the "long" words as above, then typing
+"c_LONG_<Esc>", you get this:
+
+	This is a _LONG_ line ~
+	short ~
+	Any other _LONG_ line ~
+
+Just like with "I" the short line is not changed.  Also, you can't enter a
+newline in the new text.
+
+The "C" command deletes text from the left edge of the block to the end of
+line.  It then puts you in Insert mode so that you can type in a string,
+which is added to the end of each line.
+   Starting with the same text again, and typing "Cnew text<Esc>" you get:
+
+	This is a new text ~
+	short ~
+	Any other new text ~
+
+Notice that, even though only the "long" word was selected, the text after it
+is deleted as well.  Thus only the location of the left edge of the visual
+block really matters.
+   Again, short lines that do not reach into the block are excluded.
+
+Other commands that change the characters in the block:
+
+	~	swap case	(a -> A and A -> a)
+	U	make uppercase  (a -> A and A -> A)
+	u	make lowercase  (a -> a and A -> a)
+
+
+FILLING WITH A CHARACTER
+
+To fill the whole block with one character, use the "r" command.  Again,
+starting with the same example text from above, and then typing "rx":
+
+	This is a xxxx line ~
+	short ~
+	Any other xxxx line ~
+
+
+	Note:
+	If you want to include characters beyond the end of the line in the
+	block, check out the 'virtualedit' feature in chapter 25.
+
+
+SHIFTING
+
+The command ">" shifts the selected text to the right one shift amount,
+inserting whitespace.  The starting point for this shift is the left edge of
+the visual block.
+   With the same example again, ">" gives this result:
+
+	This is a	  long line ~
+	short ~
+	Any other	  long line ~
+
+The shift amount is specified with the 'shiftwidth' option.  To change it to
+use 4 spaces: >
+
+	:set shiftwidth=4
+
+The "<" command removes one shift amount of whitespace at the left
+edge of the block.  This command is limited by the amount of text that is
+there; so if there is less than a shift amount of whitespace available, it
+removes what it can.
+
+
+JOINING LINES
+
+The "J" command joins all selected lines together into one line.  Thus it
+removes the line breaks.  Actually, the line break, leading white space and
+trailing white space is replaced by one space.  Two spaces are used after a
+line ending (that can be changed with the 'joinspaces' option).
+   Let's use the example that we got so familiar with now.  The result of
+using the "J" command:
+
+	This is a long line short Any other long line ~
+
+The "J" command doesn't require a blockwise selection.  It works with "v" and
+"V" selection in exactly the same way.
+
+If you don't want the white space to be changed, use the "gJ" command.
+
+==============================================================================
+*10.6*	Reading and writing part of a file
+
+When you are writing an e-mail message, you may want to include another file.
+This can be done with the ":read {filename}" command.  The text of the file is
+put below the cursor line.
+   Starting with this text:
+
+	Hi John, ~
+	Here is the diff that fixes the bug: ~
+	Bye, Pierre. ~
+
+Move the cursor to the second line and type: >
+
+	:read patch
+
+The file named "patch" will be inserted, with this result:
+
+	Hi John, ~
+	Here is the diff that fixes the bug: ~
+	2c2 ~
+	<	for (i = 0; i <= length; ++i) ~
+	--- ~
+	>	for (i = 0; i < length; ++i) ~
+	Bye, Pierre. ~
+
+The ":read" command accepts a range.  The file will be put below the last line
+number of this range.  Thus ":$r patch" appends the file "patch" at the end of
+the file.
+   What if you want to read the file above the first line?  This can be done
+with the line number zero.  This line doesn't really exist, you will get an
+error message when using it with most commands.  But this command is allowed:
+>
+	:0read patch
+
+The file "patch" will be put above the first line of the file.
+
+
+WRITING A RANGE OF LINES
+
+To write a range of lines to a file, the ":write" command can be used.
+Without a range it writes the whole file.  With a range only the specified
+lines are written: >
+
+	:.,$write tempo
+
+This writes the lines from the cursor until the end of the file into the file
+"tempo".  If this file already exists you will get an error message.  Vim
+protects you from accidentally overwriting an existing file.  If you know what
+you are doing and want to overwrite the file, append !: >
+
+	:.,$write! tempo
+
+CAREFUL: The ! must follow the ":write" command immediately, without white
+space.  Otherwise it becomes a filter command, which is explained later in
+this chapter.
+
+
+APPENDING TO A FILE
+
+In the first section of this chapter was explained how to collect a number of
+lines into a register.  The same can be done to collect lines in a file.
+Write the first line with this command: >
+
+	:.write collection
+
+Now move the cursor to the second line you want to collect, and type this: >
+
+	:.write >>collection
+
+The ">>" tells Vim the "collection" file is not to be written as a new file,
+but the line must be appended at the end.   You can repeat this as many times
+as you like.
+
+==============================================================================
+*10.7*	Formatting text
+
+When you are typing plain text, it's nice if the length of each line is
+automatically trimmed to fit in the window.  To make this happen while
+inserting text, set the 'textwidth' option: >
+
+	:set textwidth=72
+
+You might remember that in the example vimrc file this command was used for
+every text file.  Thus if you are using that vimrc file, you were already
+using it.  To check the current value of 'textwidth': >
+
+	:set textwidth
+
+Now lines will be broken to take only up to 72 characters.  But when you
+insert text halfway a line, or when you delete a few words, the lines will get
+too long or too short.  Vim doesn't automatically reformat the text.
+   To tell Vim to format the current paragraph: >
+
+	gqap
+
+This starts with the "gq" command, which is an operator.  Following is "ap",
+the text object that stands for "a paragraph".  A paragraph is separated from
+the next paragraph by an empty line.
+
+	Note:
+	A blank line, which contains white space, does NOT separate
+	paragraphs.  This is hard to notice!
+
+Instead of "ap" you could use any motion or text object.  If your paragraphs
+are properly separated, you can use this command to format the whole file: >
+
+	gggqG
+
+"gg" takes you to the first line, "gq" is the format operator and "G" the
+motion that jumps to the last line.
+
+In case your paragraphs aren't clearly defined, you can format just the lines
+you manually select.  Move the cursor to the first line you want to format.
+Start with the command "gqj".  This formats the current line and the one below
+it.  If the first line was short, words from the next line will be appended.
+If it was too long, words will be moved to the next line.  The cursor moves to
+the second line.  Now you can use "." to repeat the command.  Keep doing this
+until you are at the end of the text you want to format.
+
+==============================================================================
+*10.8*	Changing case
+
+You have text with section headers in lowercase.  You want to make the word
+"section" all uppercase.  Do this with the "gU" operator.  Start with the
+cursor in the first column: >
+
+			     gUw
+<	section header	    ---->      SECTION header
+
+The "gu" operator does exactly the opposite: >
+
+			     guw
+<	SECTION header	    ---->      section header
+
+You can also use "g~" to swap case.  All these are operators, thus they work
+with any motion command, with text objects and in Visual mode.
+   To make an operator work on lines you double it.  The delete operator is
+"d", thus to delete a line you use "dd".  Similarly, "gugu" makes a whole line
+lowercase.  This can be shortened to "guu".  "gUgU" is shortened to "gUU" and
+"g~g~" to "g~~".  Example: >
+
+				g~~ 
+<	Some GIRLS have Fun    ---->   sOME girls HAVE fUN ~
+
+==============================================================================
+*10.9*	Using an external program
+
+Vim has a very powerful set of commands, it can do anything.  But there may
+still be something that an external command can do better or faster.
+   The command "!{motion}{program}" takes a block of text and filters it
+through an external program.  In other words, it runs the system command
+represented by {program}, giving it the block of text represented by {motion}
+as input.  The output of this command then replaces the selected block.
+   Because this summarizes badly if you are unfamiliar with UNIX filters, take
+a look at an example.  The sort command sorts a file.  If you execute the
+following command, the unsorted file input.txt will be sorted and written to
+output.txt. (This works on both UNIX and Microsoft Windows.) >
+
+	sort <input.txt >output.txt
+
+Now do the same thing in Vim.  You want to sort lines 1 through 5 of a file.
+You start by putting the cursor on line 1.  Next you execute the following
+command: >
+
+	!5G
+
+The "!" tells Vim that you are performing a filter operation.  The Vim editor
+expects a motion command to follow, indicating which part of the file to
+filter.  The "5G" command tells Vim to go to line 5, so it now knows that it
+is to filter lines 1 (the current line) through 5.
+   In anticipation of the filtering, the cursor drops to the bottom of the
+screen and a ! prompt displays.  You can now type in the name of the filter
+program, in this case "sort".  Therefore, your full command is as follows: >
+
+	!5Gsort<Enter>
+
+The result is that the sort program is run on the first 5 lines.  The output
+of the program replaces these lines.
+
+	line 55			      line 11
+	line 33			      line 22
+	line 11		-->	      line 33
+	line 22			      line 44
+	line 44			      line 55
+	last line		      last line
+
+The "!!" command filters the current line through a filter.  In Unix the "date"
+command prints the current time and date.  "!!date<Enter>" replaces the current
+line with the output of "date".  This is useful to add a timestamp to a file.
+
+
+WHEN IT DOESN'T WORK
+
+Starting a shell, sending it text and capturing the output requires that Vim
+knows how the shell works exactly.  When you have problems with filtering,
+check the values of these options:
+
+	'shell'		specifies the program that Vim uses to execute
+			external programs.
+	'shellcmdflag'	argument to pass a command to the shell
+	'shellquote'	quote to be used around the command
+	'shellxquote'	quote to be used around the command and redirection
+	'shelltype'	kind of shell (only for the Amiga)
+	'shellslash'	use forward slashes in the command (only for
+			MS-Windows and alikes)
+	'shellredir'	string used to write the command output into a file
+
+On Unix this is hardly ever a problem, because there are two kinds of shells:
+"sh" like and "csh" like.  Vim checks the 'shell' option and sets related
+options automatically, depending on whether it sees "csh" somewhere in
+'shell'.
+   On MS-Windows, however, there are many different shells and you might have
+to tune the options to make filtering work.  Check the help for the options
+for more information.
+
+
+READING COMMAND OUTPUT
+
+To read the contents of the current directory into the file, use this:
+
+on Unix: >
+	:read !ls
+on MS-Windows: >
+	:read !dir
+
+The output of the "ls" or "dir" command is captured and inserted in the text,
+below the cursor.  This is similar to reading a file, except that the "!" is
+used to tell Vim that a command follows.
+   The command may have arguments.  And a range can be used to tell where Vim
+should put the lines: >
+
+	:0read !date -u
+
+This inserts the current time and date in UTC format at the top of the file.
+(Well, if you have a date command that accepts the "-u" argument.)  Note the
+difference with using "!!date": that replaced a line, while ":read !date" will
+insert a line.
+
+
+WRITING TEXT TO A COMMAND
+
+The Unix command "wc" counts words.  To count the words in the current file: >
+
+	:write !wc
+
+This is the same write command as before, but instead of a file name the "!"
+character is used and the name of an external command.  The written text will
+be passed to the specified command as its standard input.  The output could
+look like this:
+
+       4      47     249 ~
+
+The "wc" command isn't verbose.  This means you have 4 lines, 47 words and 249
+characters.
+
+Watch out for this mistake: >
+
+	:write! wc
+
+This will write the file "wc" in the current directory, with force.  White
+space is important here!
+
+
+REDRAWING THE SCREEN
+
+If the external command produced an error message, the display may have been
+messed up.  Vim is very efficient and only redraws those parts of the screen
+that it knows need redrawing.  But it can't know about what another program
+has written.  To tell Vim to redraw the screen: >
+
+	CTRL-L
+
+==============================================================================
+
+Next chapter: |usr_11.txt|  Recovering from a crash
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_11.txt b/runtime/doc/usr_11.txt
new file mode 100644
index 0000000..28ff384
--- /dev/null
+++ b/runtime/doc/usr_11.txt
@@ -0,0 +1,287 @@
+*usr_11.txt*	For Vim version 7.0aa.  Last change: 2004 Apr 23
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			   Recovering from a crash
+
+
+Did your computer crash?  And you just spent hours editing?  Don't panic!  Vim
+keeps enough information on harddisk to be able to restore most of your work.
+This chapter shows you how to get your work back and explains how the swap
+file is used.
+
+|11.1|	Basic recovery
+|11.2|	Where is the swap file?
+|11.3|	Crashed or not?
+|11.4|	Further reading
+
+     Next chapter: |usr_12.txt|  Clever tricks
+ Previous chapter: |usr_10.txt|  Making big changes
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*11.1*	Basic recovery
+
+In most cases recovering a file is quite simple, assuming you know which file
+you were editing (and the harddisk is still working).  Start Vim on the file,
+with the "-r" argument added: >
+
+	vim -r help.txt
+
+Vim will read the swap file (used to store text you were editing) and may read
+bits and pieces of the original file.  If all is well, you will see these
+messages (with different file names, of course):
+
+	Using swap file ".help.txt.swp" ~
+	Original file "~/vim/runtime/doc/help.txt" ~
+	Recovery completed. You should check if everything is OK. ~
+	(You might want to write out this file under another name ~
+	and run diff with the original file to check for changes) ~
+	Delete the .swp file afterwards. ~
+
+To be on the safe side, write this file under another name: >
+
+	:write help.txt.recovered
+
+Compare the file with the original file to check if you ended up with what you
+expected.  Vimdiff is very useful for this |08.7|.  Watch out for the original
+file to contain a more recent version (you saved the file just before the
+computer crashed).  And check that no lines are missing (something went wrong
+that Vim could not recover).
+   If Vim produces warning messages when recovering, read them carefully.
+This is rare though.
+
+It's normal that the last few changes can not be recovered.  Vim flushes the
+changes to disk when you don't type for about four seconds, or after typing
+about two hundred characters.  This is set with the 'updatetime' and
+'updatecount' options.  Thus when Vim didn't get a chance to save itself when
+the system went down, the changes after the last flush will be lost.
+
+If you were editing without a file name, give an empty string as argument: >
+
+	vim -r ""
+
+You must be in the right directory, otherwise Vim can't find the swap file.
+
+==============================================================================
+*11.2*	Where is the swap file?
+
+Vim can store the swap file in several places.  Normally it is in the same
+directory as the original file.  To find it, change to the directory of the
+file, and use: >
+
+	vim -r
+
+Vim will list the swap files that it can find.  It will also look in other
+directories where the swap file for files in the current directory may be
+located.  It will not find swap files in any other directories though, it
+doesn't search the directory tree.
+   The output could look like this:
+
+	Swap files found: ~
+	   In current directory: ~
+	1.    .main.c.swp ~
+		  owned by: mool   dated: Tue May 29 21:00:25 2001 ~
+		 file name: ~mool/vim/vim6/src/main.c ~
+		  modified: YES ~
+		 user name: mool   host name: masaka.moolenaar.net ~
+		process ID: 12525 ~
+	   In directory ~/tmp: ~
+	      -- none -- ~
+	   In directory /var/tmp: ~
+	      -- none -- ~
+	   In directory /tmp: ~
+	      -- none -- ~
+
+If there are several swap files that look like they may be the one you want to
+use, a list is given of these swap files and you are requested to enter the
+number of the one you want to use.  Carefully look at the dates to decide
+which one you want to use.
+   In case you don't know which one to use, just try them one by one and check
+the resulting files if they are what you expected.
+
+
+USING A SPECIFIC SWAP FILE
+
+If you know which swap file needs to be used, you can recover by giving the
+swap file name.  Vim will then finds out the name of the original file from
+the swap file.
+
+Example: >
+	vim -r .help.txt.swo
+
+This is also handy when the swap file is in another directory than expected.
+If this still does not work, see what file names Vim reports and rename the
+files accordingly.  Check the 'directory' option to see where Vim may have
+put the swap file.
+
+	Note:
+	Vim tries to find the swap file by searching the directories in the
+	'dir' option, looking for files that match "filename.sw?".  If
+	wildcard expansion doesn't work (e.g., when the 'shell' option is
+	invalid), Vim does a desperate try to find the file "filename.swp".
+	If that fails too, you will have to give the name of the swapfile
+	itself to be able to recover the file.
+
+==============================================================================
+*11.3*	Crashed or not?					*ATTENTION* *E325*
+
+Vim tries to protect you from doing stupid things.  Suppose you innocently
+start editing a file, expecting the contents of the file to show up.  Instead,
+Vim produces a very long message:
+
+		E325: ATTENTION ~
+	Found a swap file by the name ".main.c.swp" ~
+		  owned by: mool   dated: Tue May 29 21:09:28 2001 ~
+		 file name: ~mool/vim/vim6/src/main.c ~
+		  modified: no ~
+		 user name: mool   host name: masaka.moolenaar.net ~
+		process ID: 12559 (still running) ~
+	While opening file "main.c" ~
+		     dated: Tue May 29 19:46:12 2001 ~
+ ~
+	(1) Another program may be editing the same file. ~
+	    If this is the case, be careful not to end up with two ~
+	    different instances of the same file when making changes. ~
+	    Quit, or continue with caution. ~
+ ~
+	(2) An edit session for this file crashed. ~
+	    If this is the case, use ":recover" or "vim -r main.c" ~
+	    to recover the changes (see ":help recovery"). ~
+	    If you did this already, delete the swap file ".main.c.swp" ~
+	    to avoid this message. ~
+
+You get this message, because, when starting to edit a file, Vim checks if a
+swap file already exists for that file.  If there is one, there must be
+something wrong.  It may be one of these two situations.
+
+1. Another edit session is active on this file.  Look in the message for the
+   line with "process ID".  It might look like this:
+
+		process ID: 12559 (still running) ~
+
+   The text "(still running)" indicates that the process editing this file
+   runs on the same computer.  When working on a non-Unix system you will not
+   get this extra hint.  When editing a file over a network, you may not see
+   the hint, because the process might be running on another computer.  In
+   those two cases you must find out what the situation is yourself.
+      If there is another Vim editing the same file, continuing to edit will
+   result in two versions of the same file.  The one that is written last will
+   overwrite the other one, resulting in loss of changes.  You better quit
+   this Vim.
+
+2. The swap file might be the result from a previous crash of Vim or the
+   computer.  Check the dates mentioned in the message.  If the date of the
+   swap file is newer than the file you were editing, and this line appears:
+
+		modified: YES ~
+
+   Then you very likely have a crashed edit session that is worth recovering.
+      If the date of the file is newer than the date of the swap file, then
+   either it was changed after the crash (perhaps you recovered it earlier,
+   but didn't delete the swap file?), or else the file was saved before the
+   crash but after the last write of the swap file (then you're lucky: you
+   don't even need that old swap file). Vim will warn you for this with this
+   extra line:
+
+      NEWER than swap file! ~
+
+
+UNREADABLE SWAP FILE
+
+Sometimes the line
+
+	[cannot be read] ~
+
+will appear under the name of the swap file. This can be good or bad,
+depending on circumstances.
+
+It is good if a previous editing session crashed without having made any
+changes to the file. Then a directory listing of the swap file will show
+that it has zero bytes. You may delete it and proceed.
+
+It is slightly bad if you don't have read permission for the swap file. You
+may want to view the file read-only, or quit. On multi-user systems, if you
+yourself did the last changes under a different login name, a logout
+followed by a login under that other name might cure the "read error". Or
+else you might want to find out who last edited (or is editing) the file and
+have a talk with them.
+
+It is very bad if it means there is a physical read error on the disk
+containing the swap file.  Fortunately, this almost never happens.
+You may want to view the file read-only at first (if you can), to see the
+extent of the changes that were "forgotten".  If you are the one in charge of
+that file, be prepared to redo your last changes.
+
+
+WHAT TO DO?
+
+If dialogs are supported you will be asked to select one of five choices:
+
+  Swap file ".main.c.swp" already exists! ~
+  [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it: ~
+
+O  Open the file readonly.  Use this when you just want to view the file and
+   don't need to recover it.  You might want to use this when you know someone
+   else is editing the file, but you just want to look in it and not make
+   changes.
+
+E  Edit the file anyway.  Use this with caution!  If the file is being edited
+   in another Vim, you might end up with two versions of the file.  Vim will
+   try to warn you when this happens, but better be safe then sorry.
+
+R  Recover the file from the swap file.  Use this if you know that the swap
+   file contains changes that you want to recover.
+
+Q  Quit.  This avoids starting to edit the file.  Use this if there is another
+   Vim editing the same file.
+      When you just started Vim, this will exit Vim.  When starting Vim with
+   files in several windows, Vim quits only if there is a swap file for the
+   first one.  When using an edit command, the file will not be loaded and you
+   are taken back to the previously edited file.
+
+A  Abort.  Like Quit, but also abort further commands.  This is useful when
+   loading a script that edits several files, such as a session with multiple
+   windows.
+
+D  Delete the swap file.  Use this when you are sure you no longer need it.
+   For example, when it doesn't contain changes, or when the file itself is
+   newer than the swap file.
+      On Unix this choice is only offered when the process that created the
+   swap file does not appear to be running.
+
+If you do not get the dialog (you are running a version of Vim that does not
+support it), you will have to do it manually.  To recover the file, use this
+command: >
+
+	:recover
+
+
+Vim cannot always detect that a swap file already exists for a file.  This is
+the case when the other edit session puts the swap files in another directory
+or when the path name for the file is different when editing it on different
+machines.  Therefore, don't rely on Vim always warning you.
+
+If you really don't want to see this message, you can add the 'A' flag to the
+'shortmess' option.  But it's very unusual that you need this.
+
+==============================================================================
+*11.4*	Further reading
+
+|swap-file|	An explanation about where the swap file will be created and
+		what its name is.
+|:preserve|	Manually flushing the swap file to disk.
+|:swapname|	See the name of the swap file for the current file.
+'updatecount'	Number of key strokes after which the swap file is flushed to
+		disk.
+'updatetime'	Timeout after which the swap file is flushed to disk.
+'swapsync'	Whether the disk is synced when the swap file is flushed.
+'directory'	List of directory names where to store the swap file.
+'maxmem'	Limit for memory usage before writing text to the swap file.
+'maxmemtot'	Same, but for all files in total.
+
+==============================================================================
+
+Next chapter: |usr_12.txt|  Clever tricks
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_12.txt b/runtime/doc/usr_12.txt
new file mode 100644
index 0000000..6abf246
--- /dev/null
+++ b/runtime/doc/usr_12.txt
@@ -0,0 +1,358 @@
+*usr_12.txt*	For Vim version 7.0aa.  Last change: 2004 May 01
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+				Clever tricks
+
+
+By combining several commands you can make Vim do nearly everything.  In this
+chapter a number of useful combinations will be presented.  This uses the
+commands introduced in the previous chapters and a few more.
+
+|12.1|	Replace a word
+|12.2|	Change "Last, First" to "First Last"
+|12.3|	Sort a list
+|12.4|	Reverse line order
+|12.5|	Count words
+|12.6|	Find a man page
+|12.7|	Trim blanks
+|12.8|	Find where a word is used
+
+     Next chapter: |usr_20.txt|  Typing command-line commands quickly
+ Previous chapter: |usr_11.txt|  Recovering from a crash
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*12.1*	Replace a word
+
+The substitute command can be used to replace all occurrences of a word with
+another word: >
+
+	:%s/four/4/g
+
+The "%" range means to replace in all lines.  The "g" flag at the end causes
+all words in a line to be replaced.
+   This will not do the right thing if your file also contains "thirtyfour".
+It would be replaced with "thirty4".  To avoid this, use the "\<" item to
+match the start of a word: >
+
+	:%s/\<four/4/g
+
+Obviously, this still goes wrong on "fourty".  Use "\>" to match the end of a
+word: >
+
+	:%s/\<four\>/4/g
+
+If you are programming, you might want to replace "four" in comments, but not
+in the code.  Since this is difficult to specify, add the "c" flag to have the
+substitute command prompt you for each replacement: >
+
+
+	:%s/\<four\>/4/gc
+
+
+REPLACING IN SEVERAL FILES
+
+Suppose you want to replace a word in more than one file.  You could edit each
+file and type the command manually.  It's a lot faster to use record and
+playback.
+   Let's assume you have a directory with C++ files, all ending in ".cpp".
+There is a function called "GetResp" that you want to rename to "GetAnswer".
+
+	vim *.cpp		Start Vim, defining the argument list to
+				contain all the C++ files.  You are now in the
+				first file.
+	qq			Start recording into the q register
+	:%s/\<GetResp\>/GetAnswer/g
+				Do the replacements in the first file.
+	:wnext			Write this file and move to the next one.
+	q			Stop recording.
+	@q			Execute the q register.  This will replay the
+				substitution and ":wnext".  You can verify
+				that this doesn't produce an error message.
+	999@q			Execute the q register on the remaining files.
+
+At the last file you will get an error message, because ":wnext" cannot move
+to the next file.  This stops the execution, and everything is done.
+
+	Note:
+	When playing back a recorded sequence, an error stops the execution.
+	Therefore, make sure you don't get an error message when recording.
+
+There is one catch: If one of the .cpp files does not contain the word
+"GetResp", you will get an error and replacing will stop.  To avoid this, add
+the "e" flag to the substitute command: >
+
+	:%s/\<GetResp\>/GetAnswer/ge
+
+The "e" flag tells ":substitute" that not finding a match is not an error.
+
+==============================================================================
+*12.2*	Change "Last, First" to "First Last"
+
+You have a list of names in this form:
+
+	Doe, John ~
+	Smith, Peter ~
+
+You want to change that to:
+
+	John Doe ~
+	Peter Smith ~
+
+This can be done with just one command: >
+
+	:%s/\([^,]*\), \(.*\)/\2 \1/
+
+Let's break this down in parts.  Obviously it starts with a substitute
+command.  The "%" is the line range, which stands for the whole file.  Thus
+the substitution is done in every line in the file.
+   The arguments for the substitute command are "/from/to/".  The slashes
+separate the "from" pattern and the "to" string.  This is what the "from"
+pattern contains:
+							\([^,]*\), \(.*\) ~
+
+	The first part between \( \) matches "Last"	\(     \)
+	    match anything but a comma			  [^,]
+	    any number of times				      *
+	matches ", " literally					 ,
+	The second part between \( \) matches "First"		   \(  \)
+	    any character					     .
+	    any number of times					      *
+
+In the "to" part we have "\2" and "\1".  These are called backreferences.
+They refer to the text matched by the "\( \)" parts in the pattern.  "\2"
+refers to the text matched by the second "\( \)", which is the "First" name.
+"\1" refers to the first "\( \)", which is the "Last" name.
+   You can use up to nine backreferences in the "to" part of a substitute
+command.  "\0" stands for the whole matched pattern.  There are a few more
+special items in a substitute command, see |sub-replace-special|.
+
+==============================================================================
+*12.3*	Sort a list
+
+In a Makefile you often have a list of files.  For example:
+
+	OBJS = \ ~
+		version.o \ ~
+		pch.o \ ~
+		getopt.o \ ~
+		util.o \ ~
+		getopt1.o \ ~
+		inp.o \ ~
+		patch.o \ ~
+		backup.o ~
+
+To sort this list, filter the text through the external sort command: >
+
+	/^OBJS
+	j
+	:.,/^$/-1!sort
+
+This goes to the first line, where "OBJS" is the first thing in the line.
+Then it goes one line down and filters the lines until the next empty line.
+You could also select the lines in Visual mode and then use "!sort".  That's
+easier to type, but more work when there are many lines.
+   The result is this:
+
+	OBJS = \ ~
+		backup.o ~
+		getopt.o \ ~
+		getopt1.o \ ~
+		inp.o \ ~
+		patch.o \ ~
+		pch.o \ ~
+		util.o \ ~
+		version.o \ ~
+
+
+Notice that a backslash at the end of each line is used to indicate the line
+continues.  After sorting, this is wrong!  The "backup.o" line that was at
+the end didn't have a backslash.  Now that it sorts to another place, it
+must have a backslash.
+   The simplest solution is to add the backslash with "A \<Esc>".  You can
+keep the backslash in the last line, if you make sure an empty line comes
+after it.  That way you don't have this problem again.
+
+==============================================================================
+*12.4*	Reverse line order
+
+The |:global| command can be combined with the |:move| command to move all the
+lines before the first line, resulting in a reversed file.  The command is: >
+
+	:global/^/m 0
+
+Abbreviated: >
+
+	:g/^/m 0
+
+The "^" regular expression matches the beginning of the line (even if the line
+is blank).  The |:move| command moves the matching line to after the mythical
+zeroth line, so the current matching line becomes the first line of the file.
+As the |:global| command is not confused by the changing line numbering,
+|:global| proceeds to match all remaining lines of the file and puts each as
+the first.
+
+This also works on a range of lines.  First move to above the first line and
+mark it with "mt".  Then move the cursor to the last line in the range and
+type: >
+
+	:'t+1,.g/^/m 't
+
+==============================================================================
+*12.5*	Count words
+
+Sometimes you have to write a text with a maximum number of words.  Vim can
+count the words for you.
+   When the whole file is what you want to count the words in, use this
+command: >
+
+	g CTRL-G
+
+Do not type a space after the g, this is just used here to make the command
+easy to read.
+   The output looks like this:
+
+	Col 1 of 0; Line 141 of 157; Word 748 of 774; Byte 4489 of 4976 ~
+
+You can see on which word you are (748), and the total number of words in the
+file (774).
+
+When the text is only part of a file, you could move to the start of the text,
+type "g CTRL-G", move to the end of the text, type "g CTRL-G" again, and then
+use your brain to compute the difference in the word position.  That's a good
+exercise, but there is an easier way.  With Visual mode, select the text you
+want to count words in.  Then type g CTRL-G.  The result:
+
+	Selected 5 of 293 Lines; 70 of 1884 Words; 359 of 10928 Bytes ~
+
+For other ways to count words, lines and other items, see |count-items|.
+
+==============================================================================
+*12.6*	Find a man page					*find-manpage*
+
+While editing a shell script or C program, you are using a command or function
+that you want to find the man page for (this is on Unix).  Let's first use a
+simple way: Move the cursor to the word you want to find help on and press >
+
+	K
+
+Vim will run the external "man" program on the word.  If the man page is
+found, it is displayed.  This uses the normal pager to scroll through the text
+(mostly the "more" program).  When you get to the end pressing <Enter> will
+get you back into Vim.
+
+A disadvantage is that you can't see the man page and the text you are working
+on at the same time.  There is a trick to make the man page appear in a Vim
+window.  First, load the man filetype plugin: >
+
+	:runtime! ftplugin/man.vim
+
+Put this command in your vimrc file if you intend to do this often.  Now you
+can use the ":Man" command to open a window on a man page: >
+
+	:Man csh
+
+You can scroll around and the text is highlighted.  This allows you to find
+the help you were looking for.  Use CTRL-W w to jump to the window with the
+text you were working on.
+   To find a man page in a specific section, put the section number first.
+For example, to look in section 3 for "echo": >
+
+	:Man 3 echo
+
+To jump to another man page, which is in the text with the typical form
+"word(1)", press CTRL-] on it.  Further ":Man" commands will use the same
+window.
+
+To display a man page for the word under the cursor, use this: >
+
+	\K
+
+(If you redefined the <Leader>, use it instead of the backslash).
+For example, you want to know the return value of "strstr()" while editing
+this line:
+
+	if (strstr(input, "aap") == ) ~
+
+Move the cursor to somewhere on "strstr" and type "\K".  A window will open
+to display the man page for strstr().
+
+==============================================================================
+*12.7*	Trim blanks
+
+Some people find spaces and tabs at the end of a line useless, wasteful, and
+ugly.  To remove whitespace at the end of every line, execute the following
+command: >
+
+	:%s/\s\+$//
+
+The line range "%" is used, thus this works on the whole file.  The pattern
+that the ":substitute" command matches with is "\s\+$".  This finds white
+space characters (\s), 1 or more of them (\+), before the end-of-line ($).
+Later will be explained how you write patterns like this |usr_27.txt|.
+   The "to" part of the substitute command is empty: "//".  Thus it replaces
+with nothing, effectively deleting the matched white space.
+
+Another wasteful use of spaces is placing them before a Tab.  Often these can
+be deleted without changing the amount of white space.  But not always!
+Therefore, you can best do this manually.  Use this search command: >
+
+	/ 	
+
+You cannot see it, but there is a space before a tab in this command.  Thus
+it's "/<Space><Tab>".   Now use "x" to delete the space and check that the
+amount of white space doesn't change.  You might have to insert a Tab if it
+does change.  Type "n" to find the next match.  Repeat this until no more
+matches can be found.
+
+==============================================================================
+*12.8*	Find where a word is used
+
+If you are a UNIX user, you can use a combination of Vim and the grep command
+to edit all the files that contain a given word.  This is extremely useful if
+you are working on a program and want to view or edit all the files that
+contain a specific variable.
+   For example, suppose you want to edit all the C program files that contain
+the word "frame_counter".  To do this you use the command: >
+
+	vim `grep -l frame_counter *.c`
+
+Let's look at this command in detail.  The grep command searches through a set
+of files for a given word.  Because the -l argument is specified, the command
+will only list the files containing the word and not print the matching lines.
+The word it is searching for is "frame_counter".  Actually, this can be any
+regular expression.  (Note: What grep uses for regular expressions is not
+exactly the same as what Vim uses.)
+   The entire command is enclosed in backticks (`).  This tells the UNIX shell
+to run this command and pretend that the results were typed on the command
+line.  So what happens is that the grep command is run and produces a list of
+files, these files are put on the Vim command line.  This results in Vim
+editing the file list that is the output of grep.  You can then use commands
+like ":next" and ":first" to browse through the files.
+
+
+FINDING EACH LINE
+
+The above command only finds the files in which the word is found.  You still
+have to find the word within the files.
+   Vim has a built-in command that you can use to search a set of files for a
+given string.  If you want to find all occurrences of "error_string" in all C
+program files, for example, enter the following command: >
+
+	:grep error_string *.c
+
+This causes Vim to search for the string "error_string" in all the specified
+files (*.c).  The editor will now open the first file where a match is found
+and position the cursor on the first matching line.  To go to the next
+matching line (no matter in what it is file), use the ":cnext" command.  To go
+to the previous match, use the ":cprev" command.  Use ":clist" to see all the
+matches and where they are.
+   The ":grep" command uses the external commands grep (on Unix) or findstr
+(on Windows).  You can change this by setting the option 'grepprg'.
+
+==============================================================================
+
+Next chapter: |usr_20.txt|  Typing command-line commands quickly
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_20.txt b/runtime/doc/usr_20.txt
new file mode 100644
index 0000000..a489a46
--- /dev/null
+++ b/runtime/doc/usr_20.txt
@@ -0,0 +1,384 @@
+*usr_20.txt*	For Vim version 7.0aa.  Last change: 2003 Apr 30
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+		     Typing command-line commands quickly
+
+
+Vim has a few generic features that makes it easier to enter commands.  Colon
+commands can be abbreviated, edited and repeated.  Completion is available for
+nearly everything.
+
+|20.1|	Command line editing
+|20.2|	Command line abbreviations
+|20.3|	Command line completion
+|20.4|	Command line history
+|20.5|	Command line window
+
+     Next chapter: |usr_21.txt|  Go away and come back
+ Previous chapter: |usr_12.txt|  Clever tricks
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*20.1*	Command line editing
+
+When you use a colon (:) command or search for a string with / or ?, Vim puts
+the cursor on the bottom of the screen.  There you type the command or search
+pattern.  This is called the Command line.  Also when it's used for entering a
+search command.
+
+The most obvious way to edit the command you type is by pressing the <BS> key.
+This erases the character before the cursor.  To erase another character,
+typed earlier, first move the cursor with the cursor keys.
+   For example, you have typed this: >
+
+	:s/col/pig/
+
+Before you hit <Enter>, you notice that "col" should be "cow".  To correct
+this, you type <Left> five times.  The cursor is now just after "col".  Type
+<BS> and "w" to correct: >
+
+	:s/cow/pig/
+
+Now you can press <Enter> directly.  You don't have to move the cursor to the
+end of the line before executing the command.
+
+The most often used keys to move around in the command line:
+
+	<Left>			one character left
+	<Right>			one character right
+	<S-Left> or <C-Left>	one word left
+	<S-Right> or <C-Right>	one word right
+	CTRL-B or <Home>	to begin of command line
+	CTRL-E or <End>		to end of command line
+
+	Note:
+	<S-Left> (cursor left key with Shift key pressed) and <C-Left> (cursor
+	left key with Control pressed) will not work on all keyboards.  Same
+	for the other Shift and Control combinations.
+
+You can also use the mouse to move the cursor.
+
+
+DELETING
+
+As mentioned, <BS> deletes the character before the cursor.  To delete a whole
+word use CTRL-W.
+
+	/the fine pig ~
+
+		     CTRL-W
+
+	/the fine ~
+
+CTRL-U removes all text, thus allows you to start all over again.
+
+
+OVERSTRIKE
+
+The <Insert> key toggles between inserting characters and replacing the
+existing ones.  Start with this text:
+
+	/the fine pig ~
+
+Move the cursor to the start of "fine" with <S-Left> twice (or <Left> eight
+times, if <S-Left> doesn't work).  Now press <Insert> to switch to overstrike
+and type "great":
+
+	/the greatpig ~
+
+Oops, we lost the space.  Now, don't use <BS>, because it would delete the
+"t" (this is different from Replace mode).  Instead, press <Insert> to switch
+from overstrike to inserting, and type the space:
+
+	/the great pig ~
+
+
+CANCELLING
+
+You thought of executing a : or / command, but changed your mind.  To get rid
+of what you already typed, without executing it, press CTRL-C or <Esc>.
+
+	Note:
+	<Esc> is the universal "get out" key.  Unfortunately, in the good old
+	Vi pressing <Esc> in a command line executed the command!  Since that
+	might be considered to be a bug, Vim uses <Esc> to cancel the command.
+	But with the 'cpoptions' option it can be made Vi compatible.  And
+	when using a mapping (which might be written for Vi) <Esc> also works
+	Vi compatible.  Therefore, using CTRL-C is a method that always works.
+
+If you are at the start of the command line, pressing <BS> will cancel the
+command.  It's like deleting the ":" or "/" that the line starts with.
+
+==============================================================================
+*20.2*	Command line abbreviations
+
+Some of the ":" commands are really long.  We already mentioned that
+":substitute" can be abbreviated to ":s".  This is a generic mechanism, all
+":" commands can be abbreviated.
+
+How short can a command get?  There are 26 letters, and many more commands.
+For example, ":set" also starts with ":s", but ":s" doesn't start a ":set"
+command.  Instead ":set" can be abbreviated to ":se".
+   When the shorter form of a command could be used for two commands, it
+stands for only one of them.  There is no logic behind which one, you have to
+learn them.  In the help files the shortest form that works is mentioned.  For
+example: >
+
+	:s[ubstitute]
+
+This means that the shortest form of ":substitute" is ":s".  The following
+characters are optional.  Thus ":su" and ":sub" also work.
+
+In the user manual we will either use the full name of command, or a short
+version that is still readable.  For example, ":function" can be abbreviated
+to ":fu".  But since most people don't understand what that stands for, we
+will use ":fun".  (Vim doesn't have a ":funny" command, otherwise ":fun" would
+be confusing too.)
+
+It is recommended that in Vim scripts you write the full command name.  That
+makes it easier to read back when you make later changes.  Except for some
+often used commands like ":w" (":write") and ":r" (":read").
+   A particularly confusing one is ":end", which could stand for ":endif",
+":endwhile" or ":endfunction".  Therefore, always use the full name.
+
+
+SHORT OPTION NAMES
+
+In the user manual the long version of the option names is used.  Many options
+also have a short name.  Unlike ":" commands, there is only one short name
+that works.  For example, the short name of 'autoindent' is 'ai'.  Thus these
+two commands do the same thing: >
+
+	:set autoindent
+	:set ai
+
+You can find the full list of long and short names here: |option-list|.
+
+==============================================================================
+*20.3*	Command line completion
+
+This is one of those Vim features that, by itself, is a reason to switch from
+Vi to Vim.  Once you have used this, you can't do without.
+
+Suppose you have a directory that contains these files:
+
+	info.txt
+	intro.txt
+	bodyofthepaper.txt
+
+To edit the last one, you use the command: >
+
+	:edit bodyofthepaper.txt
+
+It's easy to type this wrong.  A much quicker way is: >
+
+	:edit b<Tab>
+
+Which will result in the same command.  What happened?  The <Tab> key does
+completion of the word before the cursor.  In this case "b".  Vim looks in the
+directory and finds only one file that starts with a "b".  That must be the
+one you are looking for, thus Vim completes the file name for you.
+
+Now type: >
+
+	:edit i<Tab>
+
+Vim will beep, and give you: >
+
+	:edit info.txt
+
+The beep means that Vim has found more than one match.  It then uses the first
+match it found (alphabetically).  If you press <Tab> again, you get: >
+
+	:edit intro.txt
+
+Thus, if the first <Tab> doesn't give you the file you were looking for, press
+it again.  If there are more matches, you will see them all, one at a time.
+   If you press <Tab> on the last matching entry, you will go back to what you
+first typed: >
+
+	:edit i
+
+Then it starts all over again.  Thus Vim cycles through the list of matches.
+Use CTRL-P to go through the list in the other direction:
+
+	      <------------------- <Tab> -------------------------+
+								  |
+		  <Tab> -->		       <Tab> -->
+	:edit i		      :edit info.txt		   :edit intro.txt
+		  <-- CTRL-P		       <-- CTRL-P
+	   |
+	   +---------------------- CTRL-P ------------------------>
+
+
+CONTEXT
+
+When you type ":set i" instead of ":edit i" and press <Tab> you get: >
+
+	:set icon
+
+Hey, why didn't you get ":set info.txt"?  That's because Vim has context
+sensitive completion.  The kind of words Vim will look for depends on the
+command before it.  Vim knows that you cannot use a file name just after a
+":set" command, but you can use an option name.
+   Again, if you repeat typing the <Tab>, Vim will cycle through all matches.
+There are quite a few, it's better to type more characters first: >
+
+	:set isk<Tab>
+
+Gives: >
+
+	:set iskeyword
+
+Now type "=" and press <Tab>: >
+
+	:set iskeyword=@,48-57,_,192-255
+
+What happens here is that Vim inserts the old value of the option.  Now you
+can edit it.
+   What is completed with <Tab> is what Vim expects in that place.  Just try
+it out to see how it works.  In some situations you will not get what you
+want.  That's either because Vim doesn't know what you want, or because
+completion was not implemented for that situation.  In that case you will get
+a <Tab> inserted (displayed as ^I).
+
+
+LIST MATCHES
+
+When there are many matches, you would like to see an overview.  Do this by
+pressing CTRL-D.  For example, pressing CTRL-D after: >
+
+	:set is
+
+results in: >
+
+	:set is
+	incsearch  isfname    isident    iskeyword  isprint
+	:set is
+
+Vim lists the matches and then comes back with the text you typed.  You can
+now check the list for the item you wanted.  If it isn't there, you can use
+<BS> to correct the word.  If there are many matches, type a few more
+characters before pressing <Tab> to complete the rest.
+   If you have watched carefully, you will have noticed that "incsearch"
+doesn't start with "is".  In this case "is" stands for the short name of
+"incsearch". (Many options have a short and a long name.)  Vim is clever
+enough to know that you might have wanted to expand the short name of the
+option into the long name.
+
+
+THERE IS MORE
+
+The CTRL-L command completes the word to the longest unambiguous string.  If
+you type ":edit i" and there are files "info.txt" and "info_backup.txt" you
+will get ":edit info".
+
+The 'wildmode' option can be used to change the way completion works.
+The 'wildmenu' option can be used to get a menu-like list of matches.
+Use the 'suffixes' option to specify files that are less important and appear
+at the end of the list of files.
+The 'wildignore' option specifies files that are not listed at all.
+
+More about all of this here: |cmdline-completion|
+
+==============================================================================
+*20.4*	Command line history
+
+In chapter 3 we briefly mentioned the history.  The basics are that you can
+use the <Up> key to recall an older command line.  <Down> then takes you back
+to newer commands.
+
+There are actually four histories.  The ones we will mention here are for ":"
+commands and for "/" and "?" search commands.  The "/" and "?" commands share
+the same history, because they are both search commands.  The two other
+histories are for expressions and input lines for the input() function.
+|cmdline-history|
+
+Suppose you have done a ":set" command, typed ten more colon commands and then
+want to repeat that ":set" command again.  You could press ":" and then ten
+times <Up>.  There is a quicker way: >
+
+	:se<Up>
+
+Vim will now go back to the previous command that started with "se".  You have
+a good chance that this is the ":set" command you were looking for.  At least
+you should not have to press <Up> very often (unless ":set" commands is all
+you have done).
+
+The <Up> key will use the text typed so far and compare it with the lines in
+the history.  Only matching lines will be used.
+   If you do not find the line you were looking for, use <Down> to go back to
+what you typed and correct that.  Or use CTRL-U to start all over again.
+
+To see all the lines in the history: >
+
+	:history
+
+That's the history of ":" commands.  The search history is displayed with this
+command: >
+
+	:history /
+
+CTRL-P will work like <Up>, except that it doesn't matter what you already
+typed.  Similarly for CTRL-N and <Down>.  CTRL-P stands for previous, CTRL-N
+for next.
+
+==============================================================================
+*20.5*	Command line window
+
+Typing the text in the command line works different from typing text in Insert
+mode.  It doesn't allow many commands to change the text.  For most commands
+that's OK, but sometimes you have to type a complicated command.  That's where
+the command line window is useful.
+
+Open the command line window with this command: >
+
+	q:
+
+Vim now opens a (small) window at the bottom.  It contains the command line
+history, and an empty line at the end:
+
+	+-------------------------------------+
+	|other window			      |
+	|~				      |
+	|file.txt=============================|
+	|:e c				      |
+	|:e config.h.in			      |
+	|:set path=.,/usr/include,,	      |
+	|:set iskeyword=@,48-57,_,192-255     |
+	|:set is			      |
+	|:q				      |
+	|:				      |
+	|command-line=========================|
+	|				      |
+	+-------------------------------------+
+
+You are now in Normal mode.  You can use the "hjkl" keys to move around.  For
+example, move up with "5k" to the ":e config.h.in" line.  Type "$h" to go to
+the "i" of "in" and type "cwout".  Now you have changed the line to:
+
+	:e config.h.out ~
+
+Now press <Enter> and this command will be executed.  The command line window
+will close.
+   The <Enter> command will execute the line under the cursor.  It doesn't
+matter whether Vim is in Insert mode or in Normal mode.
+   Changes in the command line window are lost.  They do not result in the
+history to be changed.  Except that the command you execute will be added to
+the end of the history, like with all executed commands.
+
+The command line window is very useful when you want to have overview of the
+history, lookup a similar command, change it a bit and execute it.  A search
+command can be used to find something.
+   In the previous example the "?config" search command could have been used
+to find the previous command that contains "config".  It's a bit strange,
+because you are using a command line to search in the command line window.
+While typing that search command you can't open another command line window,
+there can be only one.
+
+==============================================================================
+
+Next chapter: |usr_21.txt|  Go away and come back
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_21.txt b/runtime/doc/usr_21.txt
new file mode 100644
index 0000000..a277b13
--- /dev/null
+++ b/runtime/doc/usr_21.txt
@@ -0,0 +1,456 @@
+*usr_21.txt*	For Vim version 7.0aa.  Last change: 2004 Mar 29
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			   Go away and come back
+
+
+This chapter goes into mixing the use of other programs with Vim.  Either by
+executing program from inside Vim or by leaving Vim and coming back later.
+Furthermore, this is about the ways to remember the state of Vim and restore
+it later.
+
+|21.1|	Suspend and resume
+|21.2|	Executing shell commands
+|21.3|	Remembering information; viminfo
+|21.4|	Sessions
+|21.5|	Views
+|21.6|	Modelines
+
+     Next chapter: |usr_22.txt|  Finding the file to edit
+ Previous chapter: |usr_20.txt|  Typing command-line commands quickly
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*21.1*	Suspend and resume
+
+Like most Unix programs Vim can be suspended by pressing CTRL-Z.  This stops
+Vim and takes you back to the shell it was started in.  You can then do any
+other commands until you are bored with them.  Then bring back Vim with the
+"fg" command. >
+
+	CTRL-Z
+	{any sequence of shell commands}
+	fg
+
+You are right back where you left Vim, nothing has changed.
+   In case pressing CTRL-Z doesn't work, you can also use ":suspend".
+Don't forget to bring Vim back to the foreground, you would lose any changes
+that you made!
+
+Only Unix has support for this.  On other systems Vim will start a shell for
+you.  This also has the functionality of being able to execute shell commands.
+But it's a new shell, not the one that you started Vim from.
+   When you are running the GUI you can't go back to the shell where Vim was
+started.  CTRL-Z will minimize the Vim window instead.
+
+==============================================================================
+*21.2*	Executing shell commands
+
+To execute a single shell command from Vim use ":!{command}".  For example, to
+see a directory listing: >
+
+	:!ls
+	:!dir
+
+The first one is for Unix, the second one for MS-Windows.
+   Vim will execute the program.  When it ends you will get a prompt to hit
+<Enter>.  This allows you to have a look at the output from the command before
+returning to the text you were editing.
+   The "!" is also used in other places where a program is run.  Let's take
+a look at an overview:
+
+	:!{program}		execute {program}
+	:r !{program}		execute {program} and read its output
+	:w !{program}		execute {program} and send text to its input
+	:[range]!{program}	filter text through {program}
+
+Notice that the precense of a range before "!{program}" makes a big
+difference.  Without it executes the program normally, with the range a number
+of text lines is filtered through the program.
+
+Executing a whole row of programs this way is possible.  But a shell is much
+better at it.  You can start a new shell this way: >
+
+	:shell
+
+This is similar to using CTRL-Z to suspend Vim.  The difference is that a new
+shell is started.
+
+When using the GUI the shell will be using the Vim window for its input and
+output.  Since Vim is not a terminal emulator, this will not work perfectly.
+If you have trouble, try toggling the 'guipty' option.  If this still doesn't
+work well enough, start a new terminal to run the shell in.  For example with:
+>
+	:!xterm&
+
+==============================================================================
+*21.3*	Remembering information; viminfo
+
+After editing for a while you will have text in registers, marks in various
+files, a command line history filled with carefully crafted commands.  When
+you exit Vim all of this is lost.  But you can get it back!
+
+The viminfo file is designed to store status information:
+
+	Command-line and Search pattern history
+	Text in registers
+	Marks for various files
+	The buffer list
+	Global variables
+
+Each time you exit Vim it will store this information in a file, the viminfo
+file.  When Vim starts again, the viminfo file is read and the information
+restored.
+
+The 'viminfo' option is set by default to restore a limited number of items.
+You might want to set it to remember more information.  This is done through
+the following command: >
+
+	:set viminfo=string
+
+The string specifies what to save.  The syntax of this string is an option
+character followed by an argument.  The option/argument pairs are separated by
+commas.
+   Take a look at how you can build up your own viminfo string.  First, the '
+option is used to specify how many files for which you save marks (a-z).  Pick
+a nice even number for this option (1000, for instance).  Your command now
+looks like this: >
+
+	:set viminfo='1000
+
+The f option controls whether global marks (A-Z and 0-9) are stored.  If this
+option is 0, none are stored. If it is 1 or you do not specify an f option,
+the marks are stored.  You want this feature, so now you have this: >
+
+	:set viminfo='1000,f1
+
+The < option controls how many lines are saved for each of the registers.  By
+default, all the lines are saved.  If 0, nothing is saved.  To avoid adding
+thousands of lines to your viminfo file (which might never get used and makes
+starting Vim slower) you use a maximum of 500 lines: >
+
+	:set viminfo='1000,f1,<500
+<
+Other options you might want to use:
+	:	number of lines to save from the command line history
+	@	number of lines to save from the input line history
+	/	number of lines to save from the search history
+	r	removable media, for which no marks will be stored (can be
+		used several times)
+	!	global variables that start with an uppercase letter and
+		don't contain lowercase letters
+	h	disable 'hlsearch' highlighting when starting
+	%	the buffer list (only restored when starting Vim without file
+		arguments)
+	c	convert the text using 'encoding'
+	n	name used for the viminfo file (must be the last option)
+
+See the 'viminfo' option and |viminfo-file| for more information.
+
+When you run Vim multiple times, the last one exiting will store its
+information.  This may cause information that previously exiting Vims stored
+to be lost.  Each item can be remembered only once.
+
+
+GETTING BACK TO WHERE YOU WERE
+
+You are halfway editing a file and it's time to leave for holidays.  You exit
+Vim and go enjoy yourselves, forgetting all about your work.  After a couple
+of weeks you start Vim, and type:
+>
+	'0
+
+And you are right back where you left Vim.  So you can get on with your work.
+   Vim creates a mark each time you exit Vim.  The last one is '0.  The
+position that '0 pointed to is made '1.  And '1 is made to '2, and so forth.
+Mark '9 is lost.
+   The ":marks" command is useful to find out where '0 to '9 will take you.
+
+
+MOVE INFO FROM ONE VIM TO ANOTHER
+
+You can use the ":wviminfo" and ":rviminfo" commands to save and restore the
+information while still running Vim.  This is useful for exchanging register
+contents between two instances of Vim, for example.  In the first Vim do: >
+
+	:wviminfo! ~/tmp/viminfo
+
+And in the second Vim do: >
+
+	:rviminfo! ~/tmp/viminfo
+
+Obviously, the "w" stands for "write" and the "r" for "read".
+   The ! character is used by ":wviminfo" to forcefully overwrite an existing
+file.  When it is omitted, and the file exists, the information is merged into
+the file.
+   The ! character used for ":rviminfo" means that all the information is
+used, this may overwrite existing information.  Without the ! only information
+that wasn't set is used.
+   These commands can also be used to store info and use it again later.  You
+could make a directory full of viminfo files, each containing info for a
+different purpose.
+
+==============================================================================
+*21.4*	Sessions
+
+Suppose you are editing along, and it is the end of the day.  You want to quit
+work and pick up where you left off the next day.  You can do this by saving
+your editing session and restoring it the next day.
+   A Vim session contains all the information about what you are editing.
+This includes things such as the file list, window layout, global variables,
+options and other information. (Exactly what is remembered is controlled by
+the 'sessionoptions' option, described below.)
+   The following command creates a session file: >
+
+	:mksession vimbook.vim
+
+Later if you want to restore this session, you can use this command: >
+
+	:source vimbook.vim
+
+If you want to start Vim and restore a specific session, you can use the
+following command: >
+
+	vim -S vimbook.vim
+
+This tells Vim to read a specific file on startup.  The 'S' stands for
+session (actually, you can source any Vim script with -S, thus it might as
+well stand for "source").
+
+The windows that were open are restored, with the same position and size as
+before.  Mappings and option values are like before.
+   What exactly is restored depends on the 'sessionoptions' option.  The
+default value is "blank,buffers,curdir,folds,help,options,winsize".
+
+	blank		keep empty windows
+	buffers		all buffers, not only the ones in a window
+	curdir		the current directory
+	folds		folds, also manually created ones
+	help		the help window
+	options		all options and mappings
+	winsize		window sizes
+
+Change this to your liking.  To also restore the size of the Vim window, for
+example, use: >
+
+	:set sessionoptions+=resize
+
+
+SESSION HERE, SESSION THERE
+
+The obvious way to use sessions is when working on different projects.
+Suppose you store you session files in the directory "~/.vim".  You are
+currently working on the "secret" project and have to switch to the "boring"
+project: >
+
+	:wall
+	:mksession! ~/.vim/secret.vim
+	:source ~/.vim/boring.vim
+
+This first uses ":wall" to write all modified files.  Then the current session
+is saved, using ":mksession!".  This overwrites the previous session.  The
+next time you load the secret session you can continue where you were at this
+point.  And finally you load the new "boring" session.
+
+If you open help windows, split and close various window, and generally mess
+up the window layout, you can go back to the last saved session: >
+
+	:source ~/.vim/boring.vim
+
+Thus you have complete control over whether you want to continue next time
+where you are now, by saving the current setup in a session, or keep the
+session file as a starting point.
+   Another way of using sessions is to create a window layout that you like to
+use, and save this in a session.  Then you can go back to this layout whenever
+you want.
+   For example, this is a nice layout to use:
+
+	+----------------------------------------+
+	|		   VIM - main help file  |
+	|					 |
+	|Move around:  Use the cursor keys, or "h|
+	|help.txt================================|
+	|explorer   |				 |
+	|dir	    |~				 |
+	|dir	    |~				 |
+	|file	    |~				 |
+	|file	    |~				 |
+	|file	    |~				 |
+	|file	    |~				 |
+	|~/=========|[No File]===================|
+	|					 |
+	+----------------------------------------+
+
+This has a help window at the top, so that you can read this text.  The narrow
+vertical window on the left contains a file explorer.  This is a Vim plugin
+that lists the contents of a directory.  You can select files to edit there.
+More about this in the next chapter.
+   Create this from a just started Vim with: >
+
+	:help
+	CTRL-W w
+	:vertical split ~/
+
+You can resize the windows a bit to your liking.  Then save the session with:
+>
+	:mksession ~/.vim/mine.vim
+
+Now you can start Vim with this layout: >
+
+	vim -S ~/.vim/mine.vim
+
+Hint: To open a file you see listed in the explorer window in the empty
+window, move the cursor to the filename and press "O".  Double clicking with
+the mouse will also do this.
+
+
+UNIX AND MS-WINDOWS
+
+Some people have to do work on MS-Windows systems one day and on Unix another
+day.  If you are one of them, consider adding "slash" and "unix" to
+'sessionoptions'.  The session files will then be written in a format that can
+be used on both systems.  This is the command to put in your vimrc file: >
+
+	:set sessionoptions+=unix,slash
+
+Vim will use the Unix format then, because the MS-Windows Vim can read and
+write Unix files, but Unix Vim can't read MS-Windows format session files.
+Similarly, MS-Windows Vim understands file names with / to separate names, but
+Unix Vim doesn't understand \.
+
+
+SESSIONS AND VIMINFO
+
+Sessions store many things, but not the position of marks, contents of
+registers and the command line history.  You need to use the viminfo feature
+for these things.
+   In most situations you will want to use sessions separately from viminfo.
+This can be used to switch to another session, but keep the command line
+history.  And yank text into registers in one session, and paste it back in
+another session.
+   You might prefer to keep the info with the session.  You will have to do
+this yourself then.  Example: >
+
+	:mksession! ~/.vim/secret.vim
+	:wviminfo! ~/.vim/secret.viminfo
+
+And to restore this again: >
+
+	:source ~/.vim/secret.vim
+	:rviminfo! ~/.vim/secret.viminfo
+
+==============================================================================
+*21.5*	Views
+
+A session stores the looks of the whole of Vim.  When you want to store the
+properties for one window only, use a view.
+   The use of a view is for when you want to edit a file in a specific way.
+For example, you have line numbers enabled with the 'number' option and
+defined a few folds.  Just like with sessions, you can remember this view on
+the file and restore it later.  Actually, when you store a session, it stores
+the view of each window.
+   There are two basic ways to use views.  The first is to let Vim pick a name
+for the view file.  You can restore the view when you later edit the same
+file.  To store the view for the current window: >
+
+	:mkview
+
+Vim will decide where to store the view.  When you later edit the same file
+you get the view back with this command: >
+
+	:loadview
+
+That's easy, isn't it?
+   Now you want to view the file without the 'number' option on, or with all
+folds open, you can set the options to make the window look that way.  Then
+store this view with: >
+
+	:mkview 1
+
+Obviously, you can get this back with: >
+
+	:loadview 1
+
+Now you can switch between the two views on the file by using ":loadview" with
+and without the "1" argument.
+   You can store up to ten views for the same file this way, one unnumbered
+and nine numbered 1 to 9.
+
+
+A VIEW WITH A NAME
+
+The second basic way to use views is by storing the view in a file with a name
+you chose.  This view can be loaded while editing another file.  Vim will then
+switch to editing the file specified in the view.  Thus you can use this to
+quickly switch to editing another file, with all its options set as you saved
+them.
+   For example, to save the view of the current file: >
+
+	:mkview ~/.vim/main.vim
+
+You can restore it with: >
+
+	:source ~/.vim/main.vim
+
+==============================================================================
+*21.6*	Modelines
+
+When editing a specific file, you might set options specifically for that
+file.  Typing these commands each time is boring.  Using a session or view for
+editing a file doesn't work when sharing the file between several people.
+   The solution for this situation is adding a modeline to the file.  This is
+a line of text that tells Vim the values of options, to be used in this file
+only.
+   A typical example is a C program where you make indents by a multiple of 4
+spaces.  This requires setting the 'shiftwidth' option to 4.  This modeline
+will do that:
+
+	/* vim:set shiftwidth=4: */ ~
+
+Put this line as one of the first or last five lines in the file.  When
+editing the file, you will notice that 'shiftwidth' will have been set to
+four.  When editing another file, it's set back to the default value of eight.
+   For some files the modeline fits well in the header, thus it can be put at
+the top of the file.  For text files and other files where the modeline gets
+in the way of the normal contents, put it at the end of the file.
+
+The 'modelines' option specifies how many lines at the start and end of the
+file are inspected for containing a modeline.  To inspect ten lines: >
+
+	:set modelines=10
+
+The 'modeline' option can be used to switch this off.  Do this when you are
+working as root or don't trust the files you are editing: >
+
+	:set nomodeline
+
+Use this format for the modeline:
+
+	any-text vim:set {option}={value} ... : any-text ~
+
+The "any-text" indicates that you can put any text before and after the part
+that Vim will use.  This allows making it look like a comment, like what was
+done above with /* and */.
+   The " vim:" part is what makes Vim recognize this line.  The must be white
+space before "vim", or "vim" must be at the start of the line.  Thus using
+something like "gvim:" will not work.
+   The part between the colons is a ":set" command.  It works the same way as
+typing the ":set" command, except that you need to insert a backslash before a
+colon (otherwise it would be seen as the end of the modeline).
+
+Another example:
+
+	// vim:set textwidth=72 dir=c\:\tmp:  use c:\tmp here ~
+
+There is an extra backslash before the first colon, so that it's included in
+the ":set" command.  The text after the second colon is ignored, thus a remark
+can be placed there.
+
+For more details see |modeline|.
+
+==============================================================================
+
+Next chapter: |usr_22.txt|  Finding the file to edit
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_22.txt b/runtime/doc/usr_22.txt
new file mode 100644
index 0000000..c355cb3
--- /dev/null
+++ b/runtime/doc/usr_22.txt
@@ -0,0 +1,364 @@
+*usr_22.txt*	For Vim version 7.0aa.  Last change: 2003 Mar 17
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			   Finding the file to edit
+
+
+Files can be found everywhere.  So how do you find them?  Vim offers various
+ways to browse the directory tree.  There are commands to jump to a file that
+is mentioned in another.  And Vim remembers which files have been edited
+before.
+
+|22.1|	The file explorer
+|22.2|	The current directory
+|22.3|	Finding a file
+|22.4|	The buffer list
+
+     Next chapter: |usr_23.txt|  Editing other files
+ Previous chapter: |usr_21.txt|  Go away and come back
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*22.1*	The file explorer
+
+Vim has a plugin that makes it possible to edit a directory.  Try this: >
+
+	:edit .
+
+Through the magic of autocommands and Vim scripts, the window will be filled
+with the contents of the directory.  It looks like this:
+
+	" Press ? for keyboard shortcuts ~
+	" Sorted by name (.bak,~,.o,.h,.info,.swp,.obj,.orig,.rej at end of list) ~
+	"= /home/mool/vim/vim6/runtime/doc/ ~
+	../ ~
+	check/ ~
+	Makefile ~
+	autocmd.txt ~
+	change.txt ~
+	eval.txt~ ~
+	filetype.txt~ ~
+	help.txt.info ~
+
+You can see these items:
+1.  A comment about using ? to get help for the functionality of the file
+    explorer.
+2.  The second line mentions how the items in the directory are listed.  They
+    can be sorted in several ways.
+3.  The third line is the name of the current directory.
+4.  The "../" directory item.  This is the parent directory.
+5.  The directory names.
+6.  The ordinary file names.  As mentioned in the second line, some are not
+    here but "at the end of the list".
+7.  The less ordinary file names.  You are expected to use these less often,
+    therefore they have been moved to the end.
+
+If you have syntax highlighting enabled, the different parts are highlighted
+to make it easier to spot them.
+
+You can use Normal mode Vim commands to move around in the text.  For example,
+move to a file and press <Enter>.  Now you are editing that file.  To go back
+to the explorer use ":edit ." again.  CTRL-O also works.
+   Try using <Enter> while the cursor is on a directory name.  The result is
+that the explorer moves into that directory and displays the items found
+there.  Pressing <Enter> on the first directory "../" moves you one level
+higher.  Pressing "-" does the same thing, without the need to move to the
+"../" item first.
+
+You can press ? to get short help on the things you can do in the explorer.
+This is what you get:
+
+	" <enter> : open file or directory ~
+	" o : open new window for file/directory ~
+	" O : open file in previously visited window ~
+	" p : preview the file ~
+	" i : toggle size/date listing ~
+	" s : select sort field    r : reverse sort ~
+	" - : go up one level      c : cd to this dir ~
+	" R : rename file	   D : delete file ~
+	" :help file-explorer for detailed help ~
+
+The first few commands are for selecting a file to display.  Depending on what
+command you use, the file appears somewhere:
+
+	<Enter>		Uses the current window.
+	o		Opens a new window.
+	O		Uses the previously visited window.
+	p		Uses the preview window, and moves the cursor back
+			into the explorer window. |preview-window|
+
+The following commands are used to display other information:
+
+	i		Display the size and date for the file.  Using i again
+			will hide the information.
+	s		Use the field the cursor is in to sort on.  First
+			display the size and date with i.  Then Move the
+			cursor to the size of any file and press s.  The files
+			will now be sorted on size.  Press s wile the cursor
+			is on a date and the items will be sorted on date.
+	r		reverse the sorting order (either size or date)
+
+There are a few extra commands:
+
+	c		Change the current directory to the displayed
+			directory.  You can then type an ":edit" command for
+			one of the files without prepending the path.
+	R		Rename the file under the cursor.  You will be
+			prompted for the new name.
+	D		Delete the file under the cursor.  You will get a
+			prompt to confirm this.
+
+==============================================================================
+*22.2*	The current directory
+
+Just like the shell, Vim has the concept of a current directory.  Suppose you
+are in your home directory and want to edit several files in a directory
+"VeryLongFileName".  You could do: >
+
+	:edit VeryLongFileName/file1.txt
+	:edit VeryLongFileName/file2.txt
+	:edit VeryLongFileName/file3.txt
+
+To avoid much of the typing, do this: >
+
+	:cd VeryLongFileName
+	:edit file1.txt
+	:edit file2.txt
+	:edit file3.txt
+
+The ":cd" command changes the current directory.  You can see what the current
+directory is with the ":pwd" command: >
+
+	:pwd
+	/home/Bram/VeryLongFileName
+
+Vim remembers the last directory that you used.  Use "cd -" to go back to it.
+Example: >
+
+	:pwd
+	/home/Bram/VeryLongFileName
+	:cd /etc
+	:pwd
+	/etc
+	:cd -
+	:pwd
+	/home/Bram/VeryLongFileName
+	:cd -
+	:pwd
+	/etc
+
+
+WINDOW LOCAL DIRECTORY
+
+When you split a window, both windows use the same current directory.  When
+you want to edit a number of files somewhere else in the new window, you can
+make it use a different directory, without changing the current directory in
+the other window.  This is called a local directory. >
+
+	:pwd
+	/home/Bram/VeryLongFileName
+	:split
+	:lcd /etc
+	:pwd
+	/etc
+	CTRL-W w
+	:pwd
+	/home/Bram/VeryLongFileName
+
+So long as no ":lcd" command has been used, all windows share the same current
+directory.  Doing a ":cd" command in one window will also change the current
+directory of the other window.
+   For a window where ":lcd" has been used a different current directory is
+remembered.  Using ":cd" or ":lcd" in other windows will not change it.
+   When using a ":cd" command in a window that uses a different current
+directory, it will go back to using the shared directory.
+
+==============================================================================
+*22.3*	Finding a file
+
+You are editing a C program that contains this line:
+
+	#include "inits.h" ~
+
+You want to see what is in that "inits.h" file.  Move the cursor on the name
+of the file and type: >
+
+	gf
+
+Vim will find the file and edit it.
+   What if the file is not in the current directory?  Vim will use the 'path'
+option to find the file.  This option is a list of directory names where to
+look for your file.
+   Suppose you have your include files located in "c:/prog/include".  This
+command will add it to the 'path' option: >
+
+	:set path+=c:/prog/include
+
+This directory is an absolute path.  No matter where you are, it will be the
+same place.  What if you have located files in a subdirectory, below where the
+file is?  Then you can specify a relative path name.  This starts with a dot:
+>
+	:set path+=./proto
+
+This tells Vim to look in the directory "proto", below the directory where the
+file in which you use "gf" is.  Thus using "gf" on "inits.h" will make Vim
+look for "proto/inits.h", starting in the directory of the file.
+   Without the "./", thus "proto", Vim would look in the "proto" directory
+below the current directory.  And the current directory might not be where the
+file that you are editing is located.
+
+The 'path' option allows specifying the directories where to search for files
+in many more ways.  See the help on the 'path' option.
+   The 'isfname' option is used to decide which characters are included in the
+file name, and which ones are not (e.g., the " character in the example
+above).
+
+When you know the file name, but it's not to be found in the file, you can
+type it: >
+
+	:find inits.h
+
+Vim will then use the 'path' option to try and locate the file.  This is the
+same as the ":edit" command, except for the use of 'path'.
+
+To open the found file in a new window use CTRL-W f instead of "gf", or use
+":sfind" instead of ":find".
+
+
+A nice way to directly start Vim to edit a file somewhere in the 'path': >
+
+	vim "+find stdio.h"
+
+This finds the file "stdio.h" in your value of 'path'.  The quotes are
+necessary to have one argument |-+c|.
+
+==============================================================================
+*22.4*	The buffer list
+
+The Vim editor uses the term buffer to describe a file being edited.
+Actually, a buffer is a copy of the file that you edit.  When you finish
+changing the buffer, you write the contents of the buffer to the file.
+Buffers not only contain file contents, but also all the marks, settings, and
+other stuff that goes with it.
+
+
+HIDDEN BUFFERS
+
+Suppose you are editing the file one.txt and need to edit the file two.txt.
+You could simply use ":edit two.txt", but since you made changes to one.txt
+that won't work.  You also don't want to write one.txt yet.  Vim has a
+solution for you: >
+
+	:hide edit two.txt
+
+The buffer "one.txt" disappears from the screen, but Vim still knows that you
+are editing this buffer, so it keeps the modified text.  This is called a
+hidden buffer: The buffer contains text, but you can't see it.
+   The ":hide" command argument is another command.  It makes that command
+behave like the 'hidden' option was set.  You could also set this option
+yourself.  The effect is that when any buffer is abandoned, it becomes hidden.
+   Be careful!  When you have hidden buffers with changes, don't exit Vim
+without making sure you have saved all the buffers.
+
+
+INACTIVE BUFFERS
+
+   When a buffer has been used once, Vim remembers some information about it.
+When it is not displayed in a window and it is not hidden, it is still in the
+buffer list.  This is called an inactive buffer.  Overview:
+
+   Active		Appears in a window, text loaded.
+   Hidden		Not in a window, text loaded.
+   Inactive		Not in a window, no text loaded.
+
+The inactive buffers are remembered, because Vim keeps information about them,
+like marks.  And remembering the file name is useful too, so that you can see
+which files you have edited.  And edit them again.
+
+
+LISTING BUFFERS
+
+View the buffer list with this command: >
+
+	:buffers
+
+A command which does the same, is not so obvious to list buffers, but is much
+shorter to type: >
+
+	:ls
+
+The output could look like this:
+
+  1 #h	"help.txt"			line 62 ~
+  2 %l+	"usr_21.txt"			line 1 ~
+  3	"usr_toc.txt"			line 1 ~
+
+The first column contains the buffer number.  You can use this to edit the
+buffer without having to type the name, see below.
+   After the buffer number come the flags.  Then the name of the file
+and the line number where the cursor was the last time.
+   The flags that can appear are these (from left to right):
+
+	u	Buffer is unlisted |unlisted-buffer|.
+	 %	Current buffer.
+	 #	Alternate buffer.
+	  l	Buffer is loaded and displayed.
+	  h	Buffer is loaded but hidden.
+	   =	Buffer is read-only.
+	   -	Buffer is not modifiable, the 'modifiable' option is off.
+	    +	Buffer has been modified.
+
+
+EDITING A BUFFER
+
+You can edit a buffer by its number.  That avoids having to type the file
+name: >
+
+	:buffer 2
+
+But the only way to know the number is by looking in the buffer list.  You can
+use the name, or part of it, instead: >
+
+	:buffer help
+
+Vim will find a best match for the name you type.  If there is only one
+buffer that matches the name, it will be used.  In this case "help.txt".
+   To open a buffer in a new window: >
+
+	:sbuffer 3
+
+This works with a name as well.
+
+
+USING THE BUFFER LIST
+
+You can move around in the buffer list with these commands:
+
+	:bnext		go to next buffer
+	:bprevious	go to previous buffer
+	:bfirst		go to the first buffer
+	:blast		go to the last buffer
+
+To remove a buffer from the list, use this command: >
+
+	:bdelete 3
+
+Again, this also works with a name.
+   If you delete a buffer that was active (visible in a window), that window
+will be closed.  If you delete the current buffer, the current window will be
+closed.  If it was the last window, Vim will find another buffer to edit.  You
+can't be editing nothing!
+
+	Note:
+	Even after removing the buffer with ":bdelete" Vim still remembers it.
+	It's actually made "unlisted", it no longer appears in the list from
+	":buffers".  The ":buffers!" command will list unlisted buffers (yes,
+	Vim can do the impossible).  To really make Vim forget about a buffer,
+	use ":bwipe".  Also see the 'buflisted' option.
+
+==============================================================================
+
+Next chapter: |usr_23.txt|  Editing other files
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_23.txt b/runtime/doc/usr_23.txt
new file mode 100644
index 0000000..21e9980
--- /dev/null
+++ b/runtime/doc/usr_23.txt
@@ -0,0 +1,343 @@
+*usr_23.txt*	For Vim version 7.0aa.  Last change: 2001 Sep 03
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			     Editing other files
+
+
+This chapter is about editing files that are not ordinary files.  With Vim you
+can edit files that are compressed or encrypted.  Some files need to be
+accessed over the internet.  With some restrictions, binary files can be
+edited as well.
+
+|23.1|	DOS, Mac and Unix files
+|23.2|	Files on the internet
+|23.3|	Encryption
+|23.4|	Binary files
+|23.5|	Compressed files
+
+     Next chapter: |usr_24.txt|  Inserting quickly
+ Previous chapter: |usr_22.txt|  Finding the file to edit
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*23.1*	DOS, Mac and Unix files
+
+Back in the early days, the old Teletype machines used two characters to
+start a new line.  One to move the carriage back to the first position
+(carriage return, <CR>), another to move the paper up (line feed, <LF>).
+   When computers came out, storage was expensive.  Some people decided that
+they did not need two characters for end-of-line.  The UNIX people decided
+they could use <Line Feed> only for end-of-line.  The Apple people
+standardized on <CR>.  The MS-DOS (and Microsoft Windows) folks decided to
+keep the old <CR><LF>.
+   This means that if you try to move a file from one system to another, you
+have line-break problems.  The Vim editor automatically recognizes the
+different file formats and handles things properly behind your back.
+   The option 'fileformats' contains the various formats that will be tried
+when a new file is edited.  The following command, for example, tells Vim to
+try UNIX format first and MS-DOS format second: >
+
+	:set fileformats=unix,dos
+
+You will notice the format in the message you get when editing a file.  You
+don't see anything if you edit a native file format.  Thus editing a Unix file
+on Unix won't result in a remark.  But when you edit a dos file, Vim will
+notify you of this:
+
+	"/tmp/test" [dos] 3L, 71C ~
+
+For a Mac file you would see "[mac]".
+   The detected file format is stored in the 'fileformat' option.  To see
+which format you have, execute the following command: >
+
+	:set fileformat?
+
+The three names that Vim uses are:
+
+	unix		<LF>
+	dos		<CR><LF>
+	mac		<CR>
+
+
+USING THE MAC FORMAT
+
+On Unix, <LF> is used to break a line.  It's not unusual to have a <CR>
+character halfway a line.  Incidentally, this happens quite often in Vi (and
+Vim) scripts.
+   On the Macintosh, where <CR> is the line break character, it's possible to
+have a <LF> character halfway a line.
+   The result is that it's not possible to be 100% sure whether a file
+containing both <CR> and <LF> characters is a Mac or a Unix file.  Therefore,
+Vim assumes that on Unix you probably won't edit a Mac file, and doesn't check
+for this type of file.  To check for this format anyway, add "mac" to
+'fileformats': >
+
+	:set fileformats+=mac
+
+Then Vim will take a guess at the file format.  Watch out for situations where
+Vim guesses wrong.
+
+
+OVERRULING THE FORMAT
+
+If you use the good old Vi and try to edit an MS-DOS format file, you will
+find that each line ends with a ^M character. (^M is <CR>).  The automatic
+detection avoids this.  Suppose you do want to edit the file that way?  Then
+you need to overrule the format: >
+
+	:edit ++ff=unix file.txt
+
+The "++" string is an item that tells Vim that an option name follows, which
+overrules the default for this single command.  "++ff" is used for
+'fileformat'.  You could also use "++ff=mac" or "++ff=dos".
+   This doesn't work for any option, only "++ff" and "++enc" are currently
+implemented.  The full names "++fileformat" and "++encoding" also work.
+
+
+CONVERSION
+
+You can use the 'fileformat' option to convert from one file format to
+another.  Suppose, for example, that you have an MS-DOS file named README.TXT
+that you want to convert to UNIX format.  Start by editing the MS-DOS format
+file: >
+	vim README.TXT
+
+Vim will recognize this as a dos format file.  Now change the file format to
+UNIX: >
+
+	:set fileformat=unix
+	:write
+
+The file is written in Unix format.
+
+==============================================================================
+*23.2*	Files on the internet
+
+Someone sends you an e-mail message, which refers to a file by its URL.  For
+example:
+
+	You can find the information here: ~
+		ftp://ftp.vim.org/pub/vim/README ~
+
+You could start a program to download the file, save it on your local disk and
+then start Vim to edit it.
+   There is a much simpler way.  Move the cursor to any character of the URL.
+Then use this command: >
+
+	gf
+
+With a bit of luck, Vim will figure out which program to use for downloading
+the file, download it and edit the copy.  To open the file in a new window use
+CTRL-W f.
+   If something goes wrong you will get an error message.  It's possible that
+the URL is wrong, you don't have permission to read it, the network connection
+is down, etc.  Unfortunately, it's hard to tell the cause of the error.  You
+might want to try the manual way of downloading the file.
+
+Accessing files over the internet works with the netrw plugin.  Currently URLs
+with these formats are recognized:
+
+	ftp://		uses ftp
+	rcp://		uses rcp
+	scp://		uses scp
+	http://		uses wget (reading only)
+
+Vim doesn't do the communication itself, it relies on the mentioned programs
+to be available on your computer.  On most Unix systems "ftp" and "rcp" will
+be present.  "scp" and "wget" might need to be installed.
+
+Vim detects these URLs for each command that starts editing a new file, also
+with ":edit" and ":split", for example.  Write commands also work, except for
+http://.
+
+For more information, also about passwords, see |netrw|.
+
+==============================================================================
+*23.3*	Encryption
+
+Some information you prefer to keep to yourself.  For example, when writing
+a test on a computer that students also use.  You don't want clever students
+to figure out a way to read the questions before the exam starts.  Vim can
+encrypt the file for you, which gives you some protection.
+   To start editing a new file with encryption, use the "-x" argument to start
+Vim.  Example: >
+
+	vim -x exam.txt
+
+Vim prompts you for a key used for encrypting and decrypting the file:
+
+	Enter encryption key: ~
+
+Carefully type the secret key now.  You cannot see the characters you type,
+they will be replaced by stars.  To avoid the situation that a typing mistake
+will cause trouble, Vim asks you to enter the key again:
+
+	Enter same key again: ~
+
+You can now edit this file normally and put in all your secrets.  When you
+finish editing the file and tell Vim to exit, the file is encrypted and
+written.
+   When you edit the file with Vim, it will ask you to enter the same key
+again.  You don't need to use the "-x" argument.  You can also use the normal
+":edit" command.  Vim adds a magic string to the file by which it recognizes
+that the file was encrypted.
+   If you try to view this file using another program, all you get is garbage.
+Also, if you edit the file with Vim and enter the wrong key, you get garbage.
+Vim does not have a mechanism to check if the key is the right one (this makes
+it much harder to break the key).
+
+
+SWITCHING ENCRYPTION ON AND OFF
+
+To disable the encryption of a file, set the 'key' option to an empty string:
+>
+	:set key=
+
+The next time you write the file this will be done without encryption.
+   Setting the 'key' option to enable encryption is not a good idea, because
+the password appears in the clear.  Anyone shoulder-surfing can read your
+password.
+   To avoid this problem, the ":X" command was created.  It asks you for an
+encryption key, just like the "-x" argument did: >
+
+	:X
+	Enter encryption key: ******
+	Enter same key again: ******
+
+
+LIMITS ON ENCRYPTION
+
+The encryption algorithm used by Vim is weak.  It is good enough to keep out
+the casual prowler, but not good enough to keep out a cryptology expert with
+lots of time on his hands.  Also you should be aware that the swap file is not
+encrypted; so while you are editing, people with superuser privileges can read
+the unencrypted text from this file.
+   One way to avoid letting people read your swap file is to avoid using one.
+If the -n argument is supplied on the command line, no swap file is used
+(instead, Vim puts everything in memory).  For example, to edit the encrypted
+file "file.txt" without a swap file use the following command: >
+
+	vim -x -n file.txt
+
+When already editing a file, the swapfile can be disabled with: >
+
+	:setlocal noswapfile
+
+Since there is no swapfile, recovery will be impossible.  Save the file a bit
+more often to avoid the risk of losing your changes.
+
+While the file is in memory, it is in plain text.  Anyone with privilege can
+look in the editor's memory and discover the contents of the file.
+   If you use a viminfo file, be aware that the contents of text registers are
+written out in the clear as well.
+   If you really want to secure the contents of a file, edit it only on a
+portable computer not connected to a network, use good encryption tools, and
+keep the computer locked up in a big safe when not in use.
+
+==============================================================================
+*23.4*	Binary files
+
+You can edit binary files with Vim.  Vim wasn't really made for this, thus
+there are a few restrictions.  But you can read a file, change a character and
+write it back, with the result that only that one character was changed and
+the file is identical otherwise.
+   To make sure that Vim does not use its clever tricks in the wrong way, add
+the "-b" argument when starting Vim: >
+
+	vim -b datafile
+
+This sets the 'binary' option.  The effect of this is that unexpected side
+effects are turned off.  For example, 'textwidth' is set to zero, to avoid
+automatic formatting of lines.  And files are always read in Unix file format.
+
+Binary mode can be used to change a message in a program.  Be careful not to
+insert or delete any characters, it would stop the program from working.  Use
+"R" to enter replace mode.
+
+Many characters in the file will be unprintable.  To see them in Hex format: >
+
+	:set display=uhex
+
+Otherwise, the "ga" command can be used to see the value of the character
+under the cursor.  The output, when the cursor is on an <Esc>, looks like
+this:
+
+	<^[>  27,  Hex 1b,  Octal 033 ~
+
+There might not be many line breaks in the file.  To get some overview switch
+the 'wrap' option off: >
+
+	:set nowrap
+
+
+BYTE POSITION
+
+To see on which byte you are in the file use this command: >
+
+	g CTRL-G
+
+The output is verbose:
+
+    Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206 ~
+
+The last two numbers are the byte position in the file and the total number of
+bytes.  This takes into account how 'fileformat' changes the number of bytes
+that a line break uses.
+    To move to a specific byte in the file, use the "go" command.  For
+example, to move to byte 2345: >
+
+	2345go
+
+
+USING XXD
+
+A real binary editor shows the text in two ways: as it is and in hex format.
+You can do this in Vim by first converting the file with the "xxd" program.
+This comes with Vim.
+   First edit the file in binary mode: >
+
+	vim -b datafile
+
+Now convert the file to a hex dump with xxd: >
+
+	:%!xxd
+
+The text will look like this:
+
+	0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49  ....9..;..tt.+NI ~
+	0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30  K,.`.....b..4^.0 ~
+	0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9  7;'1.".....i.59. ~
+
+You can now view and edit the text as you like.  Vim treats the information as
+ordinary text.  Changing the hex does not cause the printable character to be
+changed, or the other way around.
+   Finally convert it back with:
+>
+	:%!xxd -r
+
+Only changes in the hex part are used.  Changes in the printable text part on
+the right are ignored.
+
+See the manual page of xxd for more information.
+
+==============================================================================
+*23.5*	Compressed files
+
+This is easy: You can edit a compressed file just like any other file.  The
+"gzip" plugin takes care of decompressing the file when you edit it.  And
+compressing it again when you write it.
+   These compression methods are currently supported:
+
+	.Z	compress
+	.gz	gzip
+	.bz2	bzip2
+
+Vim uses the mentioned programs to do the actual compression and
+decompression.  You might need to install the programs first.
+
+==============================================================================
+
+Next chapter: |usr_24.txt|  Inserting quickly
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_24.txt b/runtime/doc/usr_24.txt
new file mode 100644
index 0000000..76274d1
--- /dev/null
+++ b/runtime/doc/usr_24.txt
@@ -0,0 +1,573 @@
+*usr_24.txt*	For Vim version 7.0aa.  Last change: 2003 Aug 18
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			     Inserting quickly
+
+
+When entering text, Vim offers various ways to reduce the number of keystrokes
+and avoid typing mistakes.  Use Insert mode completion to repeat previously
+typed words.  Abbreviate long words to short ones.  Type characters that
+aren't on your keyboard.
+
+|24.1|	Making corrections
+|24.2|	Showing matches
+|24.3|	Completion
+|24.4|	Repeating an insert
+|24.5|	Copying from another line
+|24.6|	Inserting a register
+|24.7|	Abbreviations
+|24.8|	Entering special characters
+|24.9|	Digraphs
+|24.10|	Normal mode commands
+
+     Next chapter: |usr_25.txt|  Editing formatted text
+ Previous chapter: |usr_23.txt|  Editing other files
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*24.1*	Making corrections
+
+The <BS> key was already mentioned.  It deletes the character just before the
+cursor.  The <Del> key does the same for the character under (after) the
+cursor.
+   When you typed a whole word wrong, use CTRL-W:
+
+	The horse had fallen to the sky ~
+				       CTRL-W
+	The horse had fallen to the ~
+
+If you really messed up a line and want to start over, use CTRL-U to delete
+it.  This keeps the text after the cursor and the indent.  Only the text from
+the first non-blank to the cursor is deleted.  With the cursor on the "f" of
+"fallen" in the next line pressing CTRL-U does this:
+
+	The horse had fallen to the ~
+		      CTRL-U
+	fallen to the ~
+
+When you spot a mistake a few words back, you need to move the cursor there to
+correct it.  For example, you typed this:
+
+	The horse had follen to the ground ~
+
+You need to change "follen" to "fallen".  With the cursor at the end, you
+would type this to correct it: >
+
+					<Esc>4blraA
+
+<	get out of Insert mode		<Esc>
+	four words back			     4b
+	move on top of the "o"		       l
+	replace with "a"			ra
+	restart Insert mode			  A
+
+Another way to do this: >
+
+		<C-Left><C-Left><C-Left><C-Left><Right><Del>a<End>
+
+<	four words back		     <C-Left><C-Left><C-Left><C-Left>
+	move on top of the "o"			<Right>
+	delete the "o"				       <Del>
+	insert an "a"					    a
+	go to end of the line				     <End>
+
+This uses special keys to move around, while remaining in Insert mode.  This
+resembles what you would do in a modeless editor.  It's easier to remember,
+but takes more time (you have to move your hand from the letters to the cursor
+keys, and the <End> key is hard to press without looking at the keyboard).
+   These special keys are most useful when writing a mapping that doesn't
+leave Insert mode.  The extra typing doesn't matter then.
+   An overview of the keys you can use in Insert mode:
+
+	<C-Home>	to start of the file
+	<PageUp>	a whole screenful up
+	<Home>		to start of line
+	<S-Left>	one word left
+	<C-Left>	one word left
+	<S-Right>	one word right
+	<C-Right>	one word right
+	<End>		to end of the line
+	<PageDown>	a whole screenful down
+	<C-End>		to end of the file
+
+There are a few more, see |ins-special-special|.
+
+==============================================================================
+*24.2*	Showing matches
+
+When you type a ) it would be nice to see with which ( it matches.  To make
+Vim do that use this command: >
+
+	:set showmatch
+
+When you now type a text like "(example)", as soon as you type the ) Vim will
+briefly move the cursor to the matching (, keep it there for half a second,
+and move back to where you were typing.
+   In case there is not matching (, Vim will beep.  Then you know that you
+might have forgotten the ( somewhere, or typed a ) too many.
+   The match will also be shown for [] and {} pairs.  You don't have to wait
+with typing the next character, as soon as Vim sees it the cursor will move
+back and inserting continues as before.
+   You can change the time Vim waits with the 'matchtime' option.  For
+example, to make Vim wait one and a half second: >
+
+	:set matchtime=15
+
+The time is specified in tenths of a second.
+
+==============================================================================
+*24.3*	Completion
+
+Vim can automatically complete words on insertion.  You type the first part of
+a word, press CTRL-P, and Vim guesses the rest.
+   Suppose, for example, that you are creating a C program and want to type in
+the following:
+
+	total = ch_array[0] + ch_array[1] + ch_array[2]; ~
+
+You start by entering the following:
+
+	total = ch_array[0] + ch_ ~
+
+At this point, you tell Vim to complete the word using the command CTRL-P.
+Vim searches for a word that starts with what's in front of the cursor.  In
+this case, it is "ch_", which matches with the word ch_array.  So typing
+CTRL-P gives you the following:
+
+	total = ch_array[0] + ch_array ~
+
+After a little more typing, you get this (ending in a space):
+
+	total = ch_array[0] + ch_array[1] +  ~
+
+If you now type CTRL-P Vim will search again for a word that completes the
+word before the cursor.  Since there is nothing in front of the cursor, it
+finds the first word backwards, which is "ch_array".  Typing CTRL-P again
+gives you the next word that matches, in this case "total".  A third CTRL-P
+searches further back.  If there is nothing else, it causes the editor to run
+out of words, so it returns to the original text, which is nothing.  A fourth
+CTRL-P causes the editor to start over again with "ch_array".
+
+To search forward, use CTRL-N.  Since the search wraps around the end of the
+file, CTRL-N and CTRL-P will find the same matches, but in a different
+sequence.  Hint: CTRL-N is Next-match and CTRL-P is Previous-match.
+
+The Vim editor goes through a lot of effort to find words to complete.  By
+default, it searches the following places:
+
+	1. Current file
+	2. Files in other windows
+	3. Other loaded files (hidden buffers)
+	4. Files which are not loaded (inactive buffers)
+	5. Tag files
+	6. All files #included by the current file
+
+
+OPTIONS
+
+You can customize the search order with the 'complete' option.
+
+The 'ignorecase' option is used.  When it is set, case differences are ignored
+when searching for matches.
+
+A special option for completion is 'infercase'.  This is useful to find
+matches while ignoring case ('ignorecase' must be set) but still using the
+case of the word typed so far.  Thus if you type "For" and Vim finds a match
+"fortunately", it will result in "Fortunately".
+
+
+COMPLETING SPECIFIC ITEMS
+
+If you know what you are looking for, you can use these commands to complete
+with a certain type of item:
+
+	CTRL-X CTRL-F		file names
+	CTRL-X CTRL-L		whole lines
+	CTRL-X CTRL-D		macro definitions (also in included files)
+	CTRL-X CTRL-I		current and included files
+	CTRL-X CTRL-K		words from a dictionary
+	CTRL-X CTRL-T		words from a thesaurus
+	CTRL-X CTRL-]		tags
+	CTRL-X CTRL-V		Vim command line
+
+After each of them CTRL-N can be used to find the next match, CTRL-P to find
+the previous match.
+   More information for each of these commands here: |ins-completion|.
+
+
+COMPLETING FILE NAMES
+
+Let's take CTRL-X CTRL-F as an example.  This will find file names.  It scans
+the current directory for files and displays each one that matches the word in
+front of the cursor.
+   Suppose, for example, that you have the following files in the current
+directory:
+
+	main.c  sub_count.c  sub_done.c  sub_exit.c
+
+Now enter Insert mode and start typing:
+
+	The exit code is in the file sub ~
+
+At this point, you enter the command CTRL-X CTRL-F.  Vim now completes the
+current word "sub" by looking at the files in the current directory.  The
+first match is sub_count.c.  This is not the one you want, so you match the
+next file by typing CTRL-N.  This match is sub_done.c.  Typing CTRL-N again
+takes you to sub_exit.c.  The results:
+
+	The exit code is in the file sub_exit.c ~
+
+If the file name starts with / (Unix) or C:\ (MS-Windows) you can find all
+files in the file system.  For example, type "/u" and CTRL-X CTRL-F.  This
+will match "/usr" (this is on Unix):
+
+	the file is found in /usr/ ~
+
+If you now press CTRL-N you go back to "/u".  Instead, to accept the "/usr/"
+and go one directory level deeper, use CTRL-X CTRL-F again:
+
+	the file is found in /usr/X11R6/ ~
+
+The results depend on what is found in your file system, of course.  The
+matches are sorted alphabetically.
+
+==============================================================================
+*24.4*	Repeating an insert
+
+If you press CTRL-A, the editor inserts the text you typed the last time you
+were in Insert mode.
+   Assume, for example, that you have a file that begins with the following:
+
+	"file.h" ~
+	/* Main program begins */ ~
+
+You edit this file by inserting "#include " at the beginning of the first
+line:
+
+	#include "file.h" ~
+	/* Main program begins */ ~
+
+You go down to the beginning of the next line using the commands "j^".  You
+now start to insert a new "#include" line.  So you type: >
+
+	i CTRL-A
+
+The result is as follows:
+
+	#include "file.h" ~
+	#include /* Main program begins */ ~
+
+The "#include " was inserted because CTRL-A inserts the text of the previous
+insert.  Now you type  "main.h"<Enter>  to finish the line:
+
+
+	#include "file.h" ~
+	#include "main.h" ~
+	/* Main program begins */ ~
+
+The CTRL-@ command does a CTRL-A and then exits Insert mode.  That's a quick
+way of doing exactly the same insertion again.
+
+==============================================================================
+*24.5*	Copying from another line
+
+The CTRL-Y command inserts the character above the cursor.  This is useful
+when you are duplicating a previous line.  For example, you have this line of
+C code:
+
+	b_array[i]->s_next = a_array[i]->s_next; ~
+
+Now you need to type the same line, but with "s_prev" instead of "s_next".
+Start the new line, and press CTRL-Y 14 times, until you are at the "n" of
+"next":
+
+	b_array[i]->s_next = a_array[i]->s_next; ~
+	b_array[i]->s_ ~
+
+Now you type "prev":
+
+	b_array[i]->s_next = a_array[i]->s_next; ~
+	b_array[i]->s_prev ~
+
+Continue pressing CTRL-Y until the following "next":
+
+	b_array[i]->s_next = a_array[i]->s_next; ~
+	b_array[i]->s_prev = a_array[i]->s_ ~
+
+Now type "prev;" to finish it off.
+
+The CTRL-E command acts like CTRL-Y except it inserts the character below the
+cursor.
+
+==============================================================================
+*24.6*	Inserting a register
+
+The command CTRL-R {register} inserts the contents of the register.  This is
+useful to avoid having to type a long word.  For example, you need to type
+this:
+
+	r = VeryLongFunction(a) + VeryLongFunction(b) + VeryLongFunction(c) ~
+
+The function name is defined in a different file.  Edit that file and move the
+cursor on top of the function name there, and yank it into register v: >
+
+	"vyiw
+
+"v is the register specification, "yiw" is yank-inner-word.  Now edit the file
+where the new line is to be inserted, and type the first letters:
+
+	r = ~
+
+Now use CTRL-R v to insert the function name:
+
+	r = VeryLongFunction ~
+
+You continue to type the characters in between the function name, and use
+CTRL-R v two times more.
+   You could have done the same with completion.  Using a register is useful
+when there are many words that start with the same characters.
+
+If the register contains characters such as <BS> or other special characters,
+they are interpreted as if they had been typed from the keyboard.  If you do
+not want this to happen (you really want the <BS> to be inserted in the text),
+use the command CTRL-R CTRL-R {register}.
+
+==============================================================================
+*24.7*	Abbreviations
+
+An abbreviation is a short word that takes the place of a long one.  For
+example, "ad" stands for "advertisement".  Vim enables you to type an
+abbreviation and then will automatically expand it for you.
+   To tell Vim to expand "ad" into "advertisement" every time you insert it,
+use the following command: >
+
+	:iabbrev ad advertisement
+
+Now, when you type "ad", the whole word "advertisement" will be inserted into
+the text.  This is triggered by typing a character that can't be part of a
+word, for example a space:
+
+	What Is Entered		What You See
+	I saw the a		I saw the a ~
+	I saw the ad		I saw the ad ~
+	I saw the ad<Space>	I saw the advertisement<Space> ~
+
+The expansion doesn't happen when typing just "ad".  That allows you to type a
+word like "add", which will not get expanded.  Only whole words are checked
+for abbreviations.
+
+
+ABBREVIATING SEVERAL WORDS
+
+It is possible to define an abbreviation that results in multiple words.  For
+example, to define "JB" as "Jack Benny", use the following command: >
+
+	:iabbrev JB Jack Benny
+
+As a programmer, I use two rather unusual abbreviations: >
+
+	:iabbrev #b /****************************************
+	:iabbrev #e <Space>****************************************/
+
+These are used for creating boxed comments.  The comment starts with #b, which
+draws the top line.  I then type the comment text and use #e to draw the
+bottom line.
+   Notice that the #e abbreviation begins with a space.  In other words, the
+first two characters are space-star.  Usually Vim ignores spaces between the
+abbreviation and the expansion.  To avoid that problem, I spell space as seven
+characters: <, S, p, a, c, e, >.
+
+	Note:
+	":iabbrev" is a long word to type.  ":iab" works just as well.
+	That's abbreviating the abbreviate command!
+
+
+FIXING TYPING MISTAKES
+
+It's very common to make the same typing mistake every time.  For example,
+typing "teh" instead of "the".  You can fix this with an abbreviation: >
+
+	:abbreviate teh the
+
+You can add a whole list of these.  Add one each time you discover a common
+mistake.
+
+
+LISTING ABBREVIATIONS
+
+The ":abbreviate" command lists the abbreviations:
+
+	:abbreviate
+	i  #e		  ****************************************/
+	i  #b		 /****************************************
+	i  JB		 Jack Benny
+	i  ad		 advertisement
+	!  teh		 the
+
+The "i" in the first column indicates Insert mode.  These abbreviations are
+only active in Insert mode.  Other possible characters are:
+
+	c	Command-line mode			:cabbrev
+	!	both Insert and Command-line mode	:abbreviate
+
+Since abbreviations are not often useful in Command-line mode, you will mostly
+use the ":iabbrev" command.  That avoids, for example, that "ad" gets expanded
+when typing a command like: >
+
+	:edit ad
+
+
+DELETING ABBREVIATIONS
+
+To get rid of an abbreviation, use the ":unabbreviate" command.  Suppose you
+have the following abbreviation: >
+
+	:abbreviate @f fresh
+
+You can remove it with this command: >
+
+	:unabbreviate @f
+
+While you type this, you will notice that @f is expanded to "fresh".  Don't
+worry about this, Vim understands it anyway (except when you have an
+abbreviation for "fresh", but that's very unlikely).
+   To remove all the abbreviations: >
+
+	:abclear
+
+":unabbreviate" and ":abclear" also come in the variants for Insert mode
+(":iunabbreviate and ":iabclear") and Command-line mode (":cunabbreviate" and
+":cabclear").
+
+
+REMAPPING ABBREVIATIONS
+
+There is one thing to watch out for when defining an abbreviation: The
+resulting string should not be mapped.  For example: >
+
+	:abbreviate @a adder
+	:imap dd disk-door
+
+When you now type @a, you will get "adisk-doorer".  That's not what you want.
+To avoid this, use the ":noreabbrev" command.  It does the same as
+":abbreviate", but avoids that the resulting string is used for mappings: >
+
+	:noreabbrev @a adder
+
+Fortunately, it's unlikely that the result of an abbreviation is mapped.
+
+==============================================================================
+*24.8*	Entering special characters
+
+The CTRL-V command is used to insert the next character literally.  In other
+words, any special meaning the character has, it will be ignored.  For
+example: >
+
+	CTRL-V <Esc>
+
+Inserts an escape character.  Thus you don't leave Insert mode.  (Don't type
+the space after CTRL-V, it's only to make this easier to read).
+
+	Note:
+	On MS-Windows CTRL-V is used to paste text.  Use CTRL-Q instead of
+	CTRL-V.  On Unix, on the other hand, CTRL-Q does not work on some
+	terminals, because it has a special meaning.
+
+You can also use the command CTRL-V {digits} to insert a character with the
+decimal number {digits}.  For example, the character number 127 is the <Del>
+character (but not necessarily the <Del> key!).  To insert <Del> type: >
+
+	CTRL-V 127
+
+You can enter characters up to 255 this way.  When you type fewer than two
+digits, a non-digit will terminate the command.  To avoid the need of typing a
+non-digit, prepend one or two zeros to make three digits.
+   All the next commands insert a <Tab> and then a dot:
+
+	CTRL-V 9.
+	CTRL-V 09.
+	CTRL-V 009.
+
+To enter a character in hexadecimal, use an "x" after the CTRL-V: >
+
+	CTRL-V x7f
+
+This also goes up to character 255 (CTRL-V xff).  You can use "o" to type a
+character as an octal number and two more methods allow you to type up to
+a 16 bit and a 32 bit number (e.g., for a Unicode character): >
+
+	CTRL-V o123
+	CTRL-V u1234
+	CTRL-V U12345678
+
+==============================================================================
+*24.9*	Digraphs
+
+Some characters are not on the keyboard.  For example, the copyright character
+(©).  To type these characters in Vim, you use digraphs, where two characters
+represent one.  To enter a ©, for example, you press three keys: >
+
+	CTRL-K Co
+
+To find out what digraphs are available, use the following command: >
+
+	:digraphs
+
+Vim will display the digraph table.  Here are three lines of it:
+
+  AC ~_ 159  NS |  160  !I ¡  161  Ct ¢  162  Pd £  163  Cu ¤  164  Ye ¥  165 ~
+  BB ¦  166  SE §  167  ': ¨  168  Co ©  169  -a ª  170  << «  171  NO ¬  172 ~
+  -- ­  173  Rg ®  174  'm ¯  175  DG °  176  +- ±  177  2S ²  178  3S ³  179 ~
+
+This shows, for example, that the digraph you get by typing CTRL-K Pd is the
+character (£).  This is character number 163 (decimal).
+   Pd is short for Pound.  Most digraphs are selected to give you a hint about
+the character they will produce.  If you look through the list you will
+understand the logic.
+   You can exchange the first and second character, if there is no digraph for
+that combination.  Thus CTRL-K dP also works.  Since there is no digraph for
+"dP" Vim will also search for a "Pd" digraph.
+
+	Note:
+	The digraphs depend on the character set that Vim assumes you are
+	using.  On MS-DOS they are different from MS-Windows.  Always use
+	":digraphs" to find out which digraphs are currently available.
+
+You can define your own digraphs.  Example: >
+
+	:digraph a" ä
+
+This defines that CTRL-K a" inserts an ä character.  You can also specify the
+character with a decimal number.  This defines the same digraph: >
+
+	:digraph a" 228
+
+More information about digraphs here: |digraphs|
+   Another way to insert special characters is with a keymap.  More about that
+here: |45.5|
+
+==============================================================================
+*24.10*	Normal mode commands
+
+Insert mode offers a limited number of commands.  In Normal mode you have many
+more.  When you want to use one, you usually leave Insert mode with <Esc>,
+execute the Normal mode command, and re-enter Insert mode with "i" or "a".
+   There is a quicker way.  With CTRL-O {command} you can execute any Normal
+mode command from Insert mode.  For example, to delete from the cursor to the
+end of the line: >
+
+	CTRL-O D
+
+You can execute only one Normal mode command this way.  But you can specify a
+register or a count.  A more complicated example: >
+
+	CTRL-O "g3dw
+
+This deletes up to the third word into register g.
+
+==============================================================================
+
+Next chapter: |usr_25.txt|  Editing formatted text
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_25.txt b/runtime/doc/usr_25.txt
new file mode 100644
index 0000000..cce72fa
--- /dev/null
+++ b/runtime/doc/usr_25.txt
@@ -0,0 +1,578 @@
+*usr_25.txt*	For Vim version 7.0aa.  Last change: 2003 Jun 21
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			     Editing formatted text
+
+
+Text hardly ever comes in one sentence per line.  This chapter is about
+breaking sentences to make them fit on a page and other formatting.
+Vim also has useful features for editing single-line paragraphs and tables.
+
+|25.1|	Breaking lines
+|25.2|	Aligning text
+|25.3|	Indents and tabs
+|25.4|	Dealing with long lines
+|25.5|	Editing tables
+
+     Next chapter: |usr_26.txt|  Repeating
+ Previous chapter: |usr_24.txt|  Inserting quickly
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*25.1*	Breaking lines
+
+Vim has a number of functions that make dealing with text easier.  By default,
+the editor does not perform automatic line breaks.  In other words, you have
+to press <Enter> yourself.  This is useful when you are writing programs where
+you want to decide where the line ends.  It is not so good when you are
+creating documentation and want the text to be at most 70 character wide.
+   If you set the 'textwidth' option, Vim automatically inserts line breaks.
+Suppose, for example, that you want a very narrow column of only 30
+characters.  You need to execute the following command: >
+
+	:set textwidth=30
+
+Now you start typing (ruler added):
+
+		 1	   2	     3
+	12345678901234567890123456789012345
+	I taught programming for a whi ~
+
+If you type "l" next, this makes the line longer than the 30-character limit.
+When Vim sees this, it inserts a line break and you get the following:
+
+		 1	   2	     3
+	12345678901234567890123456789012345
+	I taught programming for a ~
+	whil ~
+
+Continuing on, you can type in the rest of the paragraph:
+
+		 1	   2	     3
+	12345678901234567890123456789012345
+	I taught programming for a ~
+	while. One time, I was stopped ~
+	by the Fort Worth police, ~
+	because my homework was too ~
+	hard. True story. ~
+
+You do not have to type newlines; Vim puts them in automatically.
+
+	Note:
+	The 'wrap' option makes Vim display lines with a line break, but this
+	doesn't insert a line break in the file.
+
+
+REFORMATTING
+
+The Vim editor is not a word processor.  In a word processor, if you delete
+something at the beginning of the paragraph, the line breaks are reworked.  In
+Vim they are not; so if you delete the word "programming" from the first line,
+all you get is a short line:
+
+		 1	   2	     3
+	12345678901234567890123456789012345
+	I taught for a ~
+	while. One time, I was stopped ~
+	by the Fort Worth police, ~
+	because my homework was too ~
+	hard. True story. ~
+
+This does not look good.  To get the paragraph into shape you use the "gq"
+operator.
+   Let's first use this with a Visual selection.  Starting from the first
+line, type: >
+
+	v4jgq
+
+"v" to start Visual mode, "4j' to move to the end of the paragraph and then
+the "gq" operator.  The result is:
+
+		 1	   2	     3
+	12345678901234567890123456789012345
+	I taught for a while. One ~
+	time, I was stopped by the ~
+	Fort Worth police, because my ~
+	homework was too hard. True ~
+	story. ~
+
+Note: there is a way to do automatic formatting for specific types of text
+layouts, see |auto-format|.
+
+Since "gq" is an operator, you can use one of the three ways to select the
+text it works on: With Visual mode, with a movement and with a text object.
+   The example above could also be done with "gq4j".  That's less typing, but
+you have to know the line count.  A more useful motion command is "}".  This
+moves to the end of a paragraph.  Thus "gq}" formats from the cursor to the
+end of the current paragraph.
+   A very useful text object to use with "gq" is the paragraph.  Try this: >
+
+	gqap
+
+"ap" stands for "a-paragraph".  This formats the text of one paragraph
+(separated by empty lines).  Also the part before the cursor.
+   If you have your paragraphs separated by empty lines, you can format the
+whole file by typing this: >
+
+	gggqG
+
+"gg" to move to the first line, "gqG" to format until the last line.
+   Warning: If your paragraphs are not properly separated, they will be joined
+together.  A common mistake is to have a line with a space or Tab.  That's a
+blank line, but not an empty line.
+
+Vim is able format more than just plain text.  See |fo-table| for how to
+change this.  See the 'joinspaces' option to change the number of spaces used
+after a full stop.
+   It is possible to use an external program for formatting.  This is useful
+if your text can't be properly formatted with Vim's builtin command.  See the
+'formatprg' option.
+
+==============================================================================
+*25.2*	Aligning text
+
+To center a range of lines, use the following command: >
+
+	:{range}center [width]
+
+{range} is the usual command-line range.  [width] is an optional line width to
+use for centering.  If [width] is not specified, it defaults to the value of
+'textwidth'.  (If 'textwidth' is 0, the default is 80.)
+   For example: >
+
+	:1,5center 40
+
+results in the following:
+
+       I taught for a while. One ~
+       time, I was stopped by the ~
+     Fort Worth police, because my ~
+      homework was too hard. True ~
+		 story. ~
+
+
+RIGHT ALIGNMENT
+
+Similarly, the ":right" command right-justifies the text: >
+
+	:1,5right 37
+
+gives this result:
+
+	    I taught for a while. One ~
+	   time, I was stopped by the ~
+	Fort Worth police, because my ~
+	  homework was too hard. True ~
+			       story. ~
+
+LEFT ALIGNMENT
+
+Finally there is this command: >
+
+	:{range}left [margin]
+
+Unlike ":center" and ":right", however, the argument to ":left" is not the
+length of the line.  Instead it is the left margin.  If it is omitted, the
+text will be put against the left side of the screen (using a zero margin
+would do the same).  If it is 5, the text will be indented 5 spaces.  For
+example, use these commands: >
+
+	:1left 5
+	:2,5left
+
+This results in the following:
+
+	     I taught for a while. One ~
+	time, I was stopped by the ~
+	Fort Worth police, because my ~
+	homework was too hard. True ~
+	story. ~
+
+
+JUSTIFYING TEXT
+
+Vim has no built-in way of justifying text.  However, there is a neat macro
+package that does the job.  To use this package, execute the following
+command: >
+
+	:runtime macros/justify.vim
+
+This Vim script file defines a new visual command "_j". To justify a block of
+text, highlight the text in Visual mode and then execute "_j".
+   Look in the file for more explanations.  To go there, do "gf" on this name:
+$VIMRUNTIME/macros/justify.vim.
+
+An alternative is to filter the text through an external program.  Example: >
+
+	:%!fmt
+
+==============================================================================
+*25.3*	Indents and tabs
+
+Indents can be used to make text stand out from the rest.  The example texts
+in this manual, for example, are indented by eight spaces or a tab.  You would
+normally enter this by typing a tab at the start of each line.  Take this
+text:
+	the first line ~
+	the second line ~
+
+This is entered by typing a tab, some text, <Enter>, tab and more text.
+   The 'autoindent' option inserts indents automatically: >
+
+	:set autoindent
+
+When a new line is started it gets the same indent as the previous line.  In
+the above example, the tab after the <Enter> is not needed anymore.
+
+
+INCREASING INDENT
+
+To increase the amount of indent in a line, use the ">" operator.  Often this
+is used as ">>", which adds indent to the current line.
+   The amount of indent added is specified with the 'shiftwidth' option.  The
+default value is 8.  To make ">>" insert four spaces worth of indent, for
+example, type this: >
+
+	:set shiftwidth=4
+
+When used on the second line of the example text, this is what you get:
+
+	the first line ~
+	    the second line ~
+
+"4>>" will increase the indent of four lines.
+
+
+TABSTOP
+
+If you want to make indents a multiple of 4, you set 'shiftwidth' to 4.  But
+when pressing a Tab you still get 8 spaces worth of indent.  To change this,
+set the 'softtabstop' option: >
+
+	:set softtabstop=4
+
+This will make the <Tab> key insert 4 spaces worth of indent.  If there are
+already four spaces, a <Tab> character is used (saving seven characters in the
+file).  (If you always want spaces and no tab characters, set the 'expandtab'
+option.)
+
+	Note:
+	You could set the 'tabstop' option to 4.  However, if you edit the
+	file another time, with 'tabstop' set to the default value of 8, it
+	will look wrong.  In other programs and when printing the indent will
+	also be wrong.  Therefore it is recommended to keep 'tabstop' at eight
+	all the time.  That's the standard value everywhere.
+
+
+CHANGING TABS
+
+You edit a file which was written with a tabstop of 3.  In Vim it looks ugly,
+because it uses the normal tabstop value of 8.  You can fix this by setting
+'tabstop' to 3.  But you have to do this every time you edit this file.
+   Vim can change the use of tabstops in your file.  First, set 'tabstop' to
+make the indents look good, then use the ":retab" command: >
+
+	:set tabstop=3
+	:retab 8
+
+The ":retab" command will change 'tabstop' to 8, while changing the text such
+that it looks the same.  It changes spans of white space into tabs and spaces
+for this.  You can now write the file.  Next time you edit it the indents will
+be right without setting an option.
+   Warning: When using ":retab" on a program, it may change white space inside
+a string constant.  Therefore it's a good habit to use "\t" instead of a
+real tab.
+
+==============================================================================
+*25.4*	Dealing with long lines
+
+Sometimes you will be editing a file that is wider than the number of columns
+in the window.  When that occurs, Vim wraps the lines so that everything fits
+on the screen.
+   If you switch the 'wrap' option off, each line in the file shows up as one
+line on the screen.  Then the ends of the long lines disappear off the screen
+to the right.
+   When you move the cursor to a character that can't be seen, Vim will scroll
+the text to show it.  This is like moving a viewport over the text in the
+horizontal direction.
+   By default, Vim does not display a horizontal scrollbar in the GUI.  If you
+want to enable one, use the following command: >
+
+	:set guioptions+=b
+
+One horizontal scrollbar will appear at the bottom of the Vim window.
+
+If you don't have a scrollbar or don't want to use it, use these commands to
+scroll the text.  The cursor will stay in the same place, but it's move back
+into the visible text if necessary.
+
+	zh		scroll right
+	4zh		scroll four characters right
+	zH		scroll half a window width right
+	ze		scroll right to put the cursor at the end
+	zl		scroll left
+	4zl		scroll four characters left
+	zL		scroll half a window width left
+	zs		scroll left to put the cursor at the start
+
+Let's attempt to show this with one line of text.  The cursor is on the "w" of
+"which".  The "current window" above the line indicates the text that is
+currently visible.  The "window"s below the text indicate the text that is
+visible after the command left of it.
+
+			      |<-- current window -->|
+		some long text, part of which is visible in the window ~
+	ze	  |<--	   window     -->|
+	zH	   |<--     window     -->|
+	4zh		  |<--	   window     -->|
+	zh		     |<--     window	 -->|
+	zl		       |<--	window	   -->|
+	4zl			  |<--	   window     -->|
+	zL				|<--	 window     -->|
+	zs			       |<--	window	   -->|
+
+
+MOVING WITH WRAP OFF
+
+When 'wrap' is off and the text has scrolled horizontally, you can use the
+following commands to move the cursor to a character you can see.  Thus text
+left and right of the window is ignored.  These never cause the text to
+scroll:
+
+	g0		to first visible character in this line
+	g^		to first non-blank visible character in this line
+	gm		to middle of this line
+	g$		to last visible character in this line
+
+		|<--	 window    -->|
+	some long    text, part of which is visible ~
+		 g0  g^    gm	     g$
+
+
+BREAKING AT WORDS				*edit-no-break*
+
+When preparing text for use by another program, you might have to make
+paragraphs without a line break.  A disadvantage of using 'nowrap' is that you
+can't see the whole sentence you are working on.  When 'wrap' is on, words are
+broken halfway, which makes them hard to read.
+   A good solution for editing this kind of paragraph is setting the
+'linebreak' option.  Vim then breaks lines at an appropriate place when
+displaying the line.  The text in the file remains unchanged.
+   Without 'linebreak' text might look like this:
+
+	+---------------------------------+
+	|letter generation program for a b|
+	|ank.  They wanted to send out a s|
+	|pecial, personalized letter to th|
+	|eir richest 1000 customers.  Unfo|
+	|rtunately for the programmer, he |
+	+---------------------------------+
+After: >
+
+	:set linebreak
+
+it looks like this:
+
+	+---------------------------------+
+	|letter generation program for a  |
+	|bank.  They wanted to send out a |
+	|special, personalized letter to  |
+	|their richest 1000 customers.    |
+	|Unfortunately for the programmer,|
+	+---------------------------------+
+
+Related options:
+'breakat' specifies the characters where a break can be inserted.
+'showbreak' specifies a string to show at the start of broken line.
+Set 'textwidth' to zero to avoid a paragraph to be split.
+
+
+MOVING BY VISIBLE LINES
+
+The "j" and "k" commands move to the next and previous lines.  When used on
+a long line, this means moving a lot of screen lines at once.
+   To move only one screen line, use the "gj" and "gk" commands.  When a line
+doesn't wrap they do the same as "j" and "k".  When the line does wrap, they
+move to a character displayed one line below or above.
+   You might like to use these mappings, which bind these movement commands to
+the cursor keys: >
+
+	:map <Up> gk
+	:map <Down> gj
+
+
+TURNING A PARAGRAPH INTO ONE LINE
+
+If you want to import text into a program like MS-Word, each paragraph should
+be a single line.  If your paragraphs are currently separated with empty
+lines, this is how you turn each paragraph into a single line: >
+
+	:g/./,/^$/join
+
+That looks complicated.  Let's break it up in pieces:
+
+	:g/./		A ":global" command that finds all lines that contain
+			at least one character.
+	     ,/^$/	A range, starting from the current line (the non-empty
+			line) until an empty line.
+		  join	The ":join" command joins the range of lines together
+			into one line.
+
+Starting with this text, containing eight lines broken at column 30:
+
+	+----------------------------------+
+	|A letter generation program	   |
+	|for a bank.  They wanted to	   |
+	|send out a special,		   |
+	|personalized letter.		   |
+	|				   |
+	|To their richest 1000		   |
+	|customers.  Unfortunately for	   |
+	|the programmer,		   |
+	+----------------------------------+
+
+You end up with two lines:
+
+	+----------------------------------+
+	|A letter generation program for a |
+	|bank.	They wanted to send out a s|
+	|pecial, personalized letter.	   |
+	|To their richest 1000 customers.  |
+	|Unfortunately for the programmer, |
+	+----------------------------------+
+
+Note that this doesn't work when the separating line is blank but not empty;
+when it contains spaces and/or tabs.  This command does work with blank lines:
+>
+	:g/\S/,/^\s*$/join
+
+This still requires a blank or empty line at the end of the file for the last
+paragraph to be joined.
+
+==============================================================================
+*25.5*	Editing tables
+
+Suppose you are editing a table with four columns:
+
+	nice table	  test 1	test 2	    test 3 ~
+	input A		  0.534 ~
+	input B		  0.913 ~
+
+You need to enter numbers in the third column.  You could move to the second
+line, use "A", enter a lot of spaces and type the text.
+   For this kind of editing there is a special option: >
+
+	set virtualedit=all
+
+Now you can move the cursor to positions where there isn't any text.  This is
+called "virtual space".  Editing a table is a lot easier this way.
+   Move the cursor by searching for the header of the last column: >
+
+	/test 3
+
+Now press "j" and you are right where you can enter the value for "input A".
+Typing "0.693" results in:
+
+	nice table	  test 1     test 2	 test 3 ~
+	input A		  0.534			 0.693 ~
+	input B		  0.913 ~
+
+Vim has automatically filled the gap in front of the new text for you.  Now,
+to enter the next field in this column use "Bj".  "B" moves back to the start
+of a white space separated word.  Then "j" moves to the place where the next
+field can be entered.
+
+	Note:
+	You can move the cursor anywhere in the display, also beyond the end
+	of a line.  But Vim will not insert spaces there, until you insert a
+	character in that position.
+
+
+COPYING A COLUMN
+
+You want to add a column, which should be a copy of the third column and
+placed before the "test 1" column.  Do this in seven steps:
+1.  Move the cursor to the left upper corner of this column, e.g., with
+    "/test 3".
+2.  Press CTRL-V to start blockwise Visual mode.
+3.  Move the cursor down two lines with "2j".  You are now in "virtual space":
+    the "input B" line of the "test 3" column.
+4.  Move the cursor right, to include the whole column in the selection, plus
+    the space that you want between the columns.  "9l" should do it.
+5.  Yank the selected rectangle with "y".
+6.  Move the cursor to "test 1", where the new column must be placed.
+7.  Press "P".
+
+The result should be:
+
+	nice table	  test 3    test 1     test 2	   test 3 ~
+	input A		  0.693     0.534		   0.693 ~
+	input B			    0.913 ~
+
+Notice that the whole "test 1" column was shifted right, also the line where
+the "test 3" column didn't have text.
+
+Go back to non-virtual cursor movements with: >
+
+	:set virtualedit=
+
+
+VIRTUAL REPLACE MODE
+
+The disadvantage of using 'virtualedit' is that it "feels" different.  You
+can't recognize tabs or spaces beyond the end of line when moving the cursor
+around.  Another method can be used: Virtual Replace mode.
+   Suppose you have a line in a table that contains both tabs and other
+characters.  Use "rx" on the first tab:
+
+	inp	0.693   0.534	0.693 ~
+
+	       |
+	   rx  |
+	       V
+
+	inpx0.693   0.534	0.693 ~
+
+The layout is messed up.  To avoid that, use the "gr" command:
+
+	inp	0.693   0.534	0.693 ~
+
+	       |
+	  grx  |
+	       V
+
+	inpx	0.693   0.534	0.693 ~
+
+What happens is that the "gr" command makes sure the new character takes the
+right amount of screen space.  Extra spaces or tabs are inserted to fill the
+gap.  Thus what actually happens is that a tab is replaced by "x" and then
+blanks added to make the text after it keep it's place.  In this case a
+tab is inserted.
+   When you need to replace more than one character, you use the "R" command
+to go to Replace mode (see |04.9|).  This messes up the layout and replaces
+the wrong characters:
+
+	inp	0	0.534	0.693 ~
+
+		|
+	 R0.786 |
+		V
+
+	inp	0.78634	0.693 ~
+
+The "gR" command uses Virtual Replace mode.  This preserves the layout:
+
+	inp	0	0.534	0.693 ~
+
+		|
+	gR0.786 |
+		V
+
+	inp	0.786	0.534	0.693 ~
+
+==============================================================================
+
+Next chapter: |usr_26.txt|  Repeating
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_26.txt b/runtime/doc/usr_26.txt
new file mode 100644
index 0000000..018763f
--- /dev/null
+++ b/runtime/doc/usr_26.txt
@@ -0,0 +1,221 @@
+*usr_26.txt*	For Vim version 7.0aa.  Last change: 2002 Oct 29
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+				  Repeating
+
+
+An editing task is hardly ever unstructured.  A change often needs to be made
+several times.  In this chapter a number of useful ways to repeat a change
+will be explained.
+
+|26.1|	Repeating with Visual mode
+|26.2|	Add and subtract
+|26.3|	Making a change in many files
+|26.4|	Using Vim from a shell script
+
+     Next chapter: |usr_27.txt|  Search commands and patterns
+ Previous chapter: |usr_25.txt|  Editing formatted text
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*26.1*	Repeating with Visual mode
+
+Visual mode is very handy for making a change in any sequence of lines.  You
+can see the highlighted text, thus you can check if the correct lines are
+changed.  But making the selection takes some typing.  The "gv" command
+selects the same area again.  This allows you to do another operation on the
+same text.
+   Suppose you have some lines where you want to change "2001" to "2002" and
+"2000" to "2001":
+
+	The financial results for 2001 are better ~
+	than for 2000.  The income increased by 50%, ~
+	even though 2001 had more rain than 2000. ~
+			2000		2001 ~
+	income		45,403		66,234 ~
+
+First change "2001" to "2002".  Select the lines in Visual mode, and use: >
+
+	:s/2001/2002/g
+
+Now use "gv" to reselect the same text.  It doesn't matter where the cursor
+is.  Then use ":s/2000/2001/g" to make the second change.
+   Obviously, you can repeat these changes several times.
+
+==============================================================================
+*26.2*	Add and subtract
+
+When repeating the change of one number into another, you often have a fixed
+offset.  In the example above, one was added to each year.  Instead of typing
+a substitute command for each year that appears, the CTRL-A command can be
+used.
+   Using the same text as above, search for a year: >
+
+	/19[0-9][0-9]\|20[0-9][0-9]
+
+Now press CTRL-A.  The year will be increased by one:
+
+	The financial results for 2002 are better ~
+	than for 2000.  The income increased by 50%, ~
+	even though 2001 had more rain than 2000. ~
+			2000		2001 ~
+	income		45,403		66,234 ~
+
+Use "n" to find the next year, and press "." to repeat the CTRL-A ("." is a
+bit quicker to type).  Repeat "n" and "." for all years that appear.
+   Hint: set the 'hlsearch' option to see the matches you are going to change,
+then you can look ahead and do it faster.
+
+Adding more than one can be done by prepending the number to CTRL-A.  Suppose
+you have this list:
+
+	1.  item four ~
+	2.  item five ~
+	3.  item six ~
+
+Move the cursor to "1." and type: >
+
+	3 CTRL-A
+
+The "1." will change to "4.".  Again, you can use "." to repeat this on the
+other numbers.
+
+Another example:
+
+	006	foo bar ~
+	007	foo bar ~
+
+Using CTRL-A on these numbers results in:
+
+	007	foo bar ~
+	010	foo bar ~
+
+7 plus one is 10?  What happened here is that Vim recognized "007" as an octal
+number, because there is a leading zero.  This notation is often used in C
+programs.  If you do not want a number with leading zeros to be handled as
+octal, use this: >
+
+	:set nrformats-=octal
+
+The CTRL-X command does subtraction in a similar way.
+
+==============================================================================
+*26.3*	Making a change in many files
+
+Suppose you have a variable called "x_cnt" and you want to change it to
+"x_counter".  This variable is used in several of your C files.  You need to
+change it in all files.  This is how you do it.
+   Put all the relevant files in the argument list: >
+
+	:args *.c
+<
+This finds all C files and edits the first one.  Now you can perform a
+substitution command on all these files: >
+
+	:argdo %s/\<x_cnt\>/x_counter/ge | update
+
+The ":argdo" command takes an argument that is another command.  That command
+will be executed on all files in the argument list.
+   The "%s" substitute command that follows works on all lines.  It finds the
+word "x_cnt" with "\<x_cnt\>".  The "\<" and "\>" are used to match the whole
+word only, and not "px_cnt" or "x_cnt2".
+   The flags for the substitute command include "g" to replace all occurrences
+of "x_cnt" in the same line.  The "e" flag is used to avoid an error message
+when "x_cnt" does not appear in the file.  Otherwise ":argdo" would abort on
+the first file where "x_cnt" was not found.
+   The "|" separates two commands.  The following "update" command writes the
+file only if it was changed.  If no "x_cnt" was changed to "x_counter" nothing
+happens.
+
+There is also the ":windo" command, which executes its argument in all
+windows.  And ":bufdo" executes its argument on all buffers.  Be careful with
+this, because you might have more files in the buffer list than you think.
+Check this with the ":buffers" command (or ":ls").
+
+==============================================================================
+*26.4*	Using Vim from a shell script
+
+Suppose you have a lot of files in which you need to change the string
+"-person-" to "Jones" and then print it.  How do you do that?  One way is to
+do a lot of typing.  The other is to write a shell script to do the work.
+   The Vim editor does a superb job as a screen-oriented editor when using
+Normal mode commands.  For batch processing, however, Normal mode commands do
+not result in clear, commented command files; so here you will use Ex mode
+instead.  This mode gives you a nice command-line interface that makes it easy
+to put into a batch file.  ("Ex command" is just another name for a
+command-line (:) command.)
+   The Ex mode commands you need are as follows: >
+
+	%s/-person-/Jones/g
+	write tempfile
+	quit
+
+You put these commands in the file "change.vim".  Now to run the editor in
+batch mode, use this shell script: >
+
+	for file in *.txt; do
+	  vim -e -s $file < change.vim
+	  lpr -r tempfile
+	done
+
+The for-done loop is a shell construct to repeat the two lines in between,
+while the $file variable is set to a different file name each time.
+   The second line runs the Vim editor in Ex mode (-e argument) on the file
+$file and reads commands from the file "change.vim".  The -s argument tells
+Vim to operate in silent mode.  In other words, do not keep outputting the
+:prompt, or any other prompt for that matter.
+   The "lpr -r tempfile" command prints the resulting "tempfile" and deletes
+it (that's what the -r argument does).
+
+
+READING FROM STDIN
+
+Vim can read text on standard input.  Since the normal way is to read commands
+there, you must tell Vim to read text instead.  This is done by passing the
+"-" argument in place of a file.  Example: >
+
+	ls | vim -
+
+This allows you to edit the output of the "ls" command, without first saving
+the text in a file.
+   If you use the standard input to read text from, you can use the "-S"
+argument to read a script: >
+
+	producer | vim -S change.vim -
+
+
+NORMAL MODE SCRIPTS
+
+If you really want to use Normal mode commands in a script, you can use it
+like this: >
+
+	vim -s script file.txt ...
+<
+	Note:
+	"-s" has a different meaning when it is used without "-e".  Here it
+	means to source the "script" as Normal mode commands.  When used with
+	"-e" it means to be silent, and doesn't use the next argument as a
+	file name.
+
+The commands in "script" are executed like you typed them.  Don't forget that
+a line break is interpreted as pressing <Enter>.  In Normal mode that moves
+the cursor to the next line.
+   To create the script you can edit the script file and type the commands.
+You need to imagine what the result would be, which can be a bit difficult.
+Another way is to record the commands while you perform them manually.  This
+is how you do that: >
+
+	vim -w script file.txt ...
+
+All typed keys will be written to "script".  If you make a small mistake you
+can just continue and remember to edit the script later.
+   The "-w" argument appends to an existing script.  That is good when you
+want to record the script bit by bit.  If you want to start from scratch and
+start all over, use the "-W" argument.  It overwrites any existing file.
+
+==============================================================================
+
+Next chapter: |usr_27.txt|  Search commands and patterns
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_27.txt b/runtime/doc/usr_27.txt
new file mode 100644
index 0000000..46fb190
--- /dev/null
+++ b/runtime/doc/usr_27.txt
@@ -0,0 +1,563 @@
+*usr_27.txt*	For Vim version 7.0aa.  Last change: 2003 Oct 28
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			 Search commands and patterns
+
+
+In chapter 3 a few simple search patterns were mentioned |03.9|.  Vim can do
+much more complex searches.  This chapter explains the most often used ones.
+A detailed specification can be found here: |pattern|
+
+|27.1|	Ignoring case
+|27.2|	Wrapping around the file end
+|27.3|	Offsets
+|27.4|	Matching multiple times
+|27.5|	Alternatives
+|27.6|	Character ranges
+|27.7|	Character classes
+|27.8|	Matching a line break
+|27.9|	Examples
+
+     Next chapter: |usr_28.txt|  Folding
+ Previous chapter: |usr_26.txt|  Repeating
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*27.1*	Ignoring case
+
+By default, Vim's searches are case sensitive.  Therefore, "include",
+"INCLUDE", and "Include" are three different words and a search will match
+only one of them.
+   Now switch on the 'ignorecase' option: >
+
+	:set ignorecase
+
+Search for "include" again, and now it will match "Include", "INCLUDE" and
+"InClUDe".  (Set the 'hlsearch' option to quickly see where a pattern
+matches.)
+   You can switch this off again with: >
+
+	:set noignorecase
+
+But lets keep it set, and search for "INCLUDE".  It will match exactly the
+same text as "include" did.  Now set the 'smartcase' option: >
+
+	:set ignorecase smartcase
+
+If you have a pattern with at least one uppercase character, the search
+becomes case sensitive.  The idea is that you didn't have to type that
+uppercase character, so you must have done it because you wanted case to
+match.  That's smart!
+    With these two options set you find the following matches:
+
+	pattern			matches	~
+	word			word, Word, WORD, WoRd, etc.
+	Word			Word
+	WORD			WORD
+	WoRd			WoRd
+
+
+CASE IN ONE PATTERN
+
+If you want to ignore case for one specific pattern, you can do this by
+prepending the "\c" string.  Using "\C" will make the pattern to match case.
+This overrules the 'ignorecase' and 'smartcase' options, when "\c" or "\C" is
+used their value doesn't matter.
+
+	pattern			matches	~
+	\Cword			word
+	\CWord			Word
+	\cword			word, Word, WORD, WoRd, etc.
+	\cWord			word, Word, WORD, WoRd, etc.
+
+A big advantage of using "\c" and "\C" is that it sticks with the pattern.
+Thus if you repeat a pattern from the search history, the same will happen, no
+matter if 'ignorecase' or 'smartcase' was changed.
+
+	Note:
+	The use of "\" items in search patterns depends on the 'magic' option.
+	In this chapters we will assume 'magic' is on, because that is the
+	standard and recommended setting.  If you would change 'magic', many
+	search patterns would suddenly become invalid.
+
+	Note:
+	If your search takes much longer than you expected, you can interrupt
+	it with CTRL-C on Unix and  CTRL-Break on MS-DOS and MS-Windows.
+
+==============================================================================
+*27.2*	Wrapping around the file end
+
+By default, a forward search starts searching for the given string at the
+current cursor location.  It then proceeds to the end of the file.  If it has
+not found the string by that time, it starts from the beginning and searches
+from the start of the file to the cursor location.
+   Keep in mind that when repeating the "n" command to search for the next
+match, you eventually get back to the first match.  If you don't notice this
+you keep searching forever!  To give you a hint, Vim displays this message:
+
+	search hit BOTTOM, continuing at TOP ~
+
+If you use the "?" command, to search in the other direction, you get this
+message:
+
+	search hit TOP, continuing at BOTTOM ~
+
+Still, you don't know when you are back at the first match.  One way to see
+this is by switching on the 'ruler' option: >
+
+	:set ruler
+
+Vim will display the cursor position in the lower righthand corner of the
+window (in the status line if there is one).  It looks like this:
+
+	101,29       84% ~
+
+The first number is the line number of the cursor.  Remember the line number
+where you started, so that you can check if you passed this position again.
+
+
+NOT WRAPPING
+
+To turn off search wrapping, use the following command: >
+
+	:set nowrapscan
+
+Now when the search hits the end of the file, an error message displays:
+
+	E385: search hit BOTTOM without match for: forever ~
+
+Thus you can find all matches by going to the start of the file with "gg" and
+keep searching until you see this message.
+   If you search in the other direction, using "?", you get:
+
+	E384: search hit TOP without match for: forever ~
+
+==============================================================================
+*27.3*	Offsets
+
+By default, the search command leaves the cursor positioned on the beginning
+of the pattern.  You can tell Vim to leave it some other place by specifying
+an offset.  For the forward search command "/", the offset is specified by
+appending a slash (/) and the offset: >
+
+	/default/2
+
+This command searches for the pattern "default" and then moves to the
+beginning of the second line past the pattern.  Using this command on the
+paragraph above, Vim finds the word "default" in the first line.  Then the
+cursor is moved two lines down and lands on "an offset".
+
+If the offset is a simple number, the cursor will be placed at the beginning
+of the line that many lines from the match.  The offset number can be positive
+or negative.  If it is positive, the cursor moves down that many lines; if
+negative, it moves up.
+
+
+CHARACTER OFFSETS
+
+The "e" offset indicates an offset from the end of the match.  It moves the
+cursor onto the last character of the match.  The command: >
+
+	/const/e
+
+puts the cursor on the "t" of "const".
+   From that position, adding a number moves forward that many characters.
+This command moves to the character just after the match: >
+
+	/const/e+1
+
+A positive number moves the cursor to the right, a negative number moves it to
+the left.  For example: >
+
+	/const/e-1
+
+moves the cursor to the "s" of "const".
+
+If the offset begins with "b", the cursor moves to the beginning of the
+pattern.  That's not very useful, since leaving out the "b" does the same
+thing.  It does get useful when a number is added or subtracted.  The cursor
+then goes forward or backward that many characters.  For example: >
+
+	/const/b+2
+
+Moves the cursor to the beginning of the match and then two characters to the
+right.  Thus it lands on the "n".
+
+
+REPEATING
+
+To repeat searching for the previously used search pattern, but with a
+different offset, leave out the pattern: >
+
+	/that
+	//e
+
+Is equal to: >
+
+	/that/e
+
+To repeat with the same offset: >
+
+	/
+
+"n" does the same thing.  To repeat while removing a previously used offset: >
+
+	//
+
+
+SEARCHING BACKWARDS
+
+The "?" command uses offsets in the same way, but you must use "?" to separate
+the offset from the pattern, instead of "/": >
+
+	?const?e-2
+
+The "b" and "e" keep their meaning, they don't change direction with the use
+of "?".
+
+
+START POSITION
+
+When starting a search, it normally starts at the cursor position.  When you
+specify a line offset, this can cause trouble.  For example: >
+
+	/const/-2
+
+This finds the next word "const" and then moves two lines up.  If you
+use "n" to search again, Vim could start at the current position and find the same
+"const" match.  Then using the offset again, you would be back where you started.
+You would be stuck!
+   It could be worse: Suppose there is another match with "const" in the next
+line.  Then repeating the forward search would find this match and move two
+lines up.  Thus you would actually move the cursor back!
+
+When you specify a character offset, Vim will compensate for this.  Thus the
+search starts a few characters forward or backward, so that the same match
+isn't found again.
+
+==============================================================================
+*27.4*	Matching multiple times
+
+The "*" item specifies that the item before it can match any number of times.
+Thus: >
+
+	/a*
+
+matches "a", "aa", "aaa", etc.  But also "" (the empty string), because zero
+times is included.
+   The "*" only applies to the item directly before it.  Thus "ab*" matches
+"a", "ab", "abb", "abbb", etc.  To match a whole string multiple times, it
+must be grouped into one item.  This is done by putting "\(" before it and
+"\)" after it.  Thus this command: >
+
+	/\(ab\)*
+
+Matches: "ab", "abab", "ababab", etc.  And also "".
+
+To avoid matching the empty string, use "\+".  This makes the previous item
+match one or more times. >
+
+	/ab\+
+
+Matches "ab", "abb", "abbb", etc.  It does not match "a" when no "b" follows.
+
+To match an optional item, use "\=".  Example: >
+
+	/folders\=
+
+Matches "folder" and "folders".
+
+
+SPECIFIC COUNTS
+
+To match a specific number of items use the form "\{n,m}".  "n" and "m" are
+numbers.  The item before it will be matched "n" to "m" times |inclusive|.
+Example: >
+
+	/ab\{3,5}
+
+matches "abbb", "abbbb" and "abbbbb".
+  When "n" is omitted, it defaults to zero.  When "m" is omitted it defaults
+to infinity.  When ",m" is omitted, it matches exactly "n" times.
+Examples:
+
+	pattern		match count ~
+	\{,4}		0, 1, 2, 3 or 4
+	\{3,}		3, 4, 5, etc.
+	\{0,1}		0 or 1, same as \=
+	\{0,}		0 or more, same as *
+	\{1,}		1 or more, same as \+
+	\{3}		3
+
+
+MATCHING AS LITTLE AS POSSIBLE
+
+The items so far match as many characters as they can find.  To match as few
+as possible, use "\{-n,m}".  It works the same as "\{n,m}", except that the
+minimal amount possible is used.
+   For example, use: >
+
+	/ab\{-1,3}
+
+Will match "ab" in "abbb".  Actually, it will never match more than one b,
+because there is no reason to match more.  It requires something else to force
+it to match more than the lower limit.
+   The same rules apply to removing "n" and "m".  It's even possible to remove
+both of the, resulting in "\{-}".  This matches the item before it zero or
+more times, as few as possible.  The item by itself always match zero times.
+It is useful when combined with something else.  Example: >
+
+	/a.\{-}b
+
+This matches "axb" in "axbxb".  If this pattern would be used: >
+
+	/a.*b
+
+It would try to match as many characters as possible with ".*", thus it
+matches "axbxb" as a whole.
+
+==============================================================================
+*27.5*	Alternatives
+
+The "or" operator in a pattern is "\|".  Example: >
+
+	/foo\|bar
+
+This matches "foo" or "bar".  More alternatives can be concatenated: >
+
+	/one\|two\|three
+
+Matches "one", "two" and "three".
+   To match multiple times, the whole thing must be placed in "\(" and "\)": >
+
+	/\(foo\|bar\)\+
+
+This matches "foo", "foobar", "foofoo", "barfoobar", etc.
+   Another example: >
+
+	/end\(if\|while\|for\)
+
+This matches "endif", "endwhile" and "endfor".
+
+A related item is "\&".  This requires that both alternatives match in the
+same place.  The resulting match uses the last alternative.  Example: >
+
+	/forever\&...
+
+This matches "for" in "forever".  It will not match "fortuin", for example.
+
+==============================================================================
+*27.6*	Character ranges
+
+To match "a", "b" or "c" you could use "/a\|b\|c".  When you want to match all
+letters from "a" to "z" this gets very long.  There is a shorter method: >
+
+	/[a-z]
+
+The [] construct matches a single character.  Inside you specify which
+characters to match.  You can include a list of characters, like this: >
+
+	/[0123456789abcdef]
+
+This will match any of the characters included.  For consecutive characters
+you can specify the range.  "0-3" stands for "0123".  "w-z" stands for "wxyz".
+Thus the same command as above can be shortened to: >
+
+	/[0-9a-f]
+
+To match the "-" character itself make it the first or last one in the range.
+These special characters are accepted to make it easier to use them inside a
+[] range (they can actually be used anywhere in the search pattern):
+
+	\e	<Esc>
+	\t	<Tab>
+	\r	<CR>
+	\b	<BS>
+
+There are a few more special cases for [] ranges, see |/[]| for the whole
+story.
+
+
+COMPLEMENTED RANGE
+
+To avoid matching a specific character, use "^" at the start of the range.
+The [] item then matches everything but the characters included.  Example: >
+
+	/"[^"]*"
+<
+	 "	  a double quote
+	  [^"]	  any character that is not a double quote
+	      *	  as many as possible
+	       "  a double quote again
+
+This matches "foo" and "3!x", including the double quotes.
+
+
+PREDEFINED RANGES
+
+A number of ranges are used very often.  Vim provides a shortcut for these.
+For example: >
+
+	/\a
+
+Finds alphabetic characters.  This is equal to using "/[a-zA-Z]".  Here are a
+few more of these:
+
+	item	matches			equivalent ~
+	\d	digit			[0-9]
+	\D	non-digit		[^0-9]
+	\x	hex digit		[0-9a-fA-F]
+	\X	non-hex digit		[^0-9a-fA-F]
+	\s	white space		[ 	]     (<Tab> and <Space>)
+	\S	non-white characters	[^ 	]     (not <Tab> and <Space>)
+	\l	lowercase alpha		[a-z]
+	\L	non-lowercase alpha	[^a-z]
+	\u	uppercase alpha		[A-Z]
+	\U	non-uppercase alpha	[^A-Z]
+
+	Note:
+	Using these predefined ranges works a lot faster than the character
+	range it stands for.
+	These items can not be used inside [].  Thus "[\d\l]" does NOT work to
+	match a digit or lowercase alpha.  Use "\(\d\|\l\)" instead.
+
+See |/\s| for the whole list of these ranges.
+
+==============================================================================
+*27.7*	Character classes
+
+The character range matches a fixed set of characters.  A character class is
+similar, but with an essential difference: The set of characters can be
+redefined without changing the search pattern.
+   For example, search for this pattern: >
+
+	/\f\+
+
+The "\f" items stands for file name characters.  Thus this matches a sequence
+of characters that can be a file name.
+   Which characters can be part of a file name depends on the system you are
+using.  On MS-Windows, the backslash is included, on Unix it is not.  This is
+specified with the 'isfname' option.  The default value for Unix is: >
+
+	:set isfname
+	isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,=
+
+For other systems the default value is different.  Thus you can make a search
+pattern with "\f" to match a file name, and it will automatically adjust to
+the system you are using it on.
+
+	Note:
+	Actually, Unix allows using just about any character in a file name,
+	including white space.  Including these characters in 'isfname' would
+	be theoretically correct.  But it would make it impossible to find the
+	end of a file name in text.  Thus the default value of 'isfname' is a
+	compromise.
+
+The character classes are:
+
+	item	matches				option ~
+	\i	identifier characters		'isident'
+	\I	like \i, excluding digits
+	\k	keyword characters		'iskeyword'
+	\K	like \k, excluding digits
+	\p	printable characters		'isprint'
+	\P	like \p, excluding digits
+	\f	file name characters		'isfname'
+	\F	like \f, excluding digits
+
+==============================================================================
+*27.8*	Matching a line break
+
+Vim can find a pattern that includes a line break.  You need to specify where
+the line break happens, because all items mentioned so far don't match a line
+break.
+   To check for a line break in a specific place, use the "\n" item: >
+
+	/the\nword
+
+This will match at a line that ends in "the" and the next line starts with
+"word".  To match "the word" as well, you need to match a space or a line
+break.  The item to use for it is "\_s": >
+
+	/the\_sword
+
+To allow any amount of white space: >
+
+	/the\_s\+word
+
+This also matches when "the  " is at the end of a line and "   word" at the
+start of the next one.
+
+"\s" matches white space, "\_s" matches white space or a line break.
+Similarly, "\a" matches an alphabetic character, and "\_a" matches an
+alphabetic character or a line break.  The other character classes and ranges
+can be modified in the same way by inserting a "_".
+
+Many other items can be made to match a line break by prepending "\_".  For
+example: "\_." matches any character or a line break.
+
+	Note:
+	"\_.*" matches everything until the end of the file.  Be careful with
+	this, it can make a search command very slow.
+
+Another example is "\_[]", a character range that includes a line break: >
+
+	/"\_[^"]*"
+
+This finds a text in double quotes that may be split up in several lines.
+
+==============================================================================
+*27.9*	Examples
+
+Here are a few search patterns you might find useful.  This shows how the
+items mentioned above can be combined.
+
+
+FINDING A CALIFORNIA LICENSE PLATE
+
+A sample license place number is "1MGU103".  It has one digit, three uppercase
+letters and three digits.  Directly putting this into a search pattern: >
+
+	/\d\u\u\u\d\d\d
+
+Another way is to specify that there are three digits and letters with a
+count: >
+
+	/\d\u\{3}\d\{3}
+
+Using [] ranges instead: >
+
+	/[0-9][A-Z]\{3}[0-9]\{3}
+
+Which one of these you should use?  Whichever one you can remember.  The
+simple way you can remember is much faster than the fancy way that you can't.
+If you can remember them all, then avoid the last one, because it's both more
+typing and slower to execute.
+
+
+FINDING AN IDENTIFIER
+
+In C programs (and many other computer languages) an identifier starts with a
+letter and further consists of letters and digits.  Underscores can be used
+too.  This can be found with: >
+
+	/\<\h\w*\>
+
+"\<" and "\>" are used to find only whole words.  "\h" stands for "[A-Za-z_]"
+and "\w" for "[0-9A-Za-z_]".
+
+	Note:
+	"\<" and "\>" depend on the 'iskeyword' option.  If it includes "-",
+	for example, then "ident-" is not matched.  In this situation use: >
+
+		/\w\@<!\h\w*\w\@!
+<
+	This checks if "\w" does not match before or after the identifier.
+	See |/\@<!| and |/\@!|.
+
+==============================================================================
+
+Next chapter: |usr_28.txt|  Folding
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_28.txt b/runtime/doc/usr_28.txt
new file mode 100644
index 0000000..522dc3f
--- /dev/null
+++ b/runtime/doc/usr_28.txt
@@ -0,0 +1,426 @@
+*usr_28.txt*	For Vim version 7.0aa.  Last change: 2003 Dec 21
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+				   Folding
+
+
+Structured text can be separated in sections.  And sections in sub-sections.
+Folding allows you to display a section as one line, providing an overview.
+This chapter explains the different ways this can be done.
+
+|28.1|	What is folding?
+|28.2|	Manual folding
+|28.3|	Working with folds
+|28.4|	Saving and restoring folds
+|28.5|	Folding by indent
+|28.6|	Folding with markers
+|28.7|	Folding by syntax
+|28.8|	Folding by expression
+|28.9|	Folding unchanged lines
+|28.10| Which fold method to use?
+
+     Next chapter: |usr_29.txt|  Moving through programs
+ Previous chapter: |usr_27.txt|  Search commands and patterns
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*28.1*	What is folding?
+
+Folding is used to show a range of lines in the buffer as a single line on the
+screen.  Like a piece of paper which is folded to make it shorter:
+
+	+------------------------+
+	| line 1		 |
+	| line 2		 |
+	| line 3		 |
+	|_______________________ |
+	\			 \
+	 \________________________\
+	 / folded lines		  /
+	/________________________/
+	| line 12		 |
+	| line 13		 |
+	| line 14		 |
+	+------------------------+
+
+The text is still in the buffer, unchanged.  Only the way lines are displayed
+is affected by folding.
+
+The advantage of folding is that you can get a better overview of the
+structure of text, by folding lines of a section and replacing it with a line
+that indicates that there is a section.
+
+==============================================================================
+*28.2*	Manual folding
+
+Try it out: Position the cursor in a paragraph and type: >
+
+	zfap
+
+You will see that the paragraph is replaced by a highlighted line.  You have
+created a fold.  |zf| is an operator and |ap| a text object selection.  You
+can use the |zf| operator with any movement command to create a fold for the
+text that it moved over.  |zf| also works in Visual mode.
+
+To view the text again, open the fold by typing: >
+
+	zo
+
+And you can close the fold again with: >
+
+	zc
+
+All the folding commands start with "z".  With some fantasy, this looks like a
+folded piece of paper, seen from the side.  The letter after the "z" has a
+mnemonic meaning to make it easier to remember the commands:
+
+	zf	F-old creation
+	zo	O-pen a fold
+	zc	C-lose a fold
+
+Folds can be nested: A region of text that contains folds can be folded
+again.  For example, you can fold each paragraph in this section, and then
+fold all the sections in this chapter.  Try it out.  You will notice that
+opening the fold for the whole chapter will restore the nested folds as they
+were, some may be open and some may be closed.
+
+Suppose you have created several folds, and now want to view all the text.
+You could go to each fold and type "zo".  To do this faster, use this command: >
+
+	zr
+
+This will R-educe the folding.  The opposite is: >
+
+	zm
+
+This folds M-ore.  You can repeat "zr" and "zm" to open and close nested folds
+of several levels.
+
+If you have nested several levels deep, you can open all of them with: >
+
+	zR
+
+This R-educes folds until there are none left.  And you can close all folds
+with: >
+
+	zM
+
+This folds M-ore and M-ore.
+
+You can quickly disable the folding with the |zn| command.  Then |zN| brings
+back the folding as it was.  |zi| toggles between the two.  This is a useful
+way of working:
+- create folds to get overview on your file
+- move around to where you want to do your work
+- do |zi| to look at the text and edit it
+- do |zi| again to go back to moving around
+
+More about manual folding in the reference manual: |fold-manual|
+
+==============================================================================
+*28.3*	Working with folds
+
+When some folds are closed, movement commands like "j" and "k" move over a
+fold like it was a single, empty line.  This allows you to quickly move around
+over folded text.
+
+You can yank, delete and put folds as if it was a single line.  This is very
+useful if you want to reorder functions in a program.  First make sure that
+each fold contains a whole function (or a bit less) by selecting the right
+'foldmethod'.  Then delete the function with "dd", move the cursor and put it
+with "p".  If some lines of the function are above or below the fold, you can
+use Visual selection:
+- put the cursor on the first line to be moved
+- hit "V" to start Visual mode
+- put the cursor on the last line to be moved
+- hit "d" to delete the selected lines.
+- move the cursor to the new position and "p"ut the lines there.
+
+It is sometimes difficult to see or remember where a fold is located, thus
+where a |zo| command would actually work.  To see the defined folds: >
+
+	:set foldcolumn=4
+
+This will show a small column on the left of the window to indicate folds.
+A "+" is shown for a closed fold.  A "-" is shown at the start of each open
+fold and "|" at following lines of the fold.
+
+You can use the mouse to open a fold by clicking on the "+" in the foldcolumn.
+Clicking on the "-" or a "|" below it will close an open fold.
+
+To open all folds at the cursor line use |zO|.
+To close all folds at the cursor line use |zC|.
+To delete a fold at the cursor line use |zd|.
+To delete all folds at the cursor line use |zD|.
+
+When in Insert mode, the fold at the cursor line is never closed.  That allows
+you to see what you type!
+
+Folds are opened automatically when jumping around or moving the cursor left
+or right.  For example, the "0" command opens the fold under the cursor
+(if 'foldopen' contains "hor", which is the default).  The 'foldopen' option
+can be changed to open folds for specific commands.  If you want the line
+under the cursor always to be open, do this: >
+
+	:set foldopen=all
+
+Warning: You won't be able to move onto a closed fold then.  You might want to
+use this only temporarily and then set it back to the default: >
+
+	:set foldopen&
+
+You can make folds close automatically when you move out of it: >
+
+	:set foldclose=all
+
+This will re-apply 'foldlevel' to all folds that don't contain the cursor.
+You have to try it out if you like how this feels.  Use |zm| to fold more and
+|zr| to fold less (reduce folds).
+
+The folding is local to the window.  This allows you to open two windows on
+the same buffer, one with folds and one without folds.  Or one with all folds
+closed and one with all folds open.
+
+==============================================================================
+*28.4*	Saving and restoring folds
+
+When you abandon a file (starting to edit another one), the state of the folds
+is lost.  If you come back to the same file later, all manually opened and
+closed folds are back to their default.  When folds have been created
+manually, all folds are gone!  To save the folds use the |:mkview| command: >
+
+	:mkview
+
+This will store the settings and other things that influence the view on the
+file.  You can change what is stored with the 'viewoptions' option.
+When you come back to the same file later, you can load the view again: >
+
+	:loadview
+
+You can store up to ten views on one file.  For example, to save the current
+setup as the third view and load the second view: >
+
+	:mkview 3
+	:loadview 2
+
+Note that when you insert or delete lines the views might become invalid.
+Also check out the 'viewdir' option, which specifies where the views are
+stored.  You might want to delete old views now and then.
+
+==============================================================================
+*28.5*	Folding by indent
+
+Defining folds with |zf| is a lot of work.  If your text is structured by
+giving lower level items a larger indent, you can use the indent folding
+method.  This will create folds for every sequence of lines with the same
+indent.  Lines with a larger indent will become nested folds.  This works well
+with many programming languages.
+
+Try this by setting the 'foldmethod' option: >
+
+	:set foldmethod=indent
+
+Then you can use the |zm| and |zr| commands to fold more and reduce folding.
+It's easy to see on this example text:
+
+This line is not indented
+	This line is indented once
+		This line is indented twice
+		This line is indented twice
+	This line is indented once
+This line is not indented
+	This line is indented once
+	This line is indented once
+
+Note that the relation between the amount of indent and the fold depth depends
+on the 'shiftwidth' option.  Each 'shiftwidth' worth of indent adds one to the
+depth of the fold.  This is called a fold level.
+
+When you use the |zr| and |zm| commands you actually increase or decrease the
+'foldlevel' option.  You could also set it directly: >
+
+	:set foldlevel=3
+
+This means that all folds with three times a 'shiftwidth' indent or more will
+be closed.  The lower the foldlevel, the more folds will be closed.  When
+'foldlevel' is zero, all folds are closed.  |zM| does set 'foldlevel' to zero.
+The opposite command |zR| sets 'foldlevel' to the deepest fold level that is
+present in the file.
+
+Thus there are two ways to open and close the folds:
+(A) By setting the fold level.
+    This gives a very quick way of "zooming out" to view the structure of the
+    text, move the cursor, and "zoom in" on the text again.
+
+(B) By using |zo| and |zc| commands to open or close specific folds.
+    This allows opening only those folds that you want to be open, while other
+    folds remain closed.
+
+This can be combined: You can first close most folds by using |zm| a few times
+and then open a specific fold with |zo|.  Or open all folds with |zR| and
+then close specific folds with |zc|.
+
+But you cannot manually define folds when 'foldmethod' is "indent", as that
+would conflict with the relation between the indent and the fold level.
+
+More about folding by indent in the reference manual: |fold-indent|
+
+==============================================================================
+*28.6*	Folding with markers
+
+Markers in the text are used to specify the start and end of a fold region.
+This gives precise control over which lines are included in a fold.  The
+disadvantage is that the text needs to be modified.
+
+Try it: >
+
+	:set foldmethod=marker
+
+Example text, as it could appear in a C program:
+
+	/* foobar () {{{ */
+	int foobar()
+	{
+		/* return a value {{{ */
+		return 42;
+		/* }}} */
+	}
+	/* }}} */
+
+Notice that the folded line will display the text before the marker.  This is
+very useful to tell what the fold contains.
+
+It's quite annoying when the markers don't pair up correctly after moving some
+lines around.  This can be avoided by using numbered markers.  Example:
+
+	/* global variables {{{1 */
+	int varA, varB;
+
+	/* functions {{{1 */
+	/* funcA() {{{2 */
+	void funcA() {}
+
+	/* funcB() {{{2 */
+	void funcB() {}
+	/* }}}1 */
+
+At every numbered marker a fold at the specified level begins.  This will make
+any fold at a higher level stop here.  You can just use numbered start markers
+to define all folds.  Only when you want to explicitly stop a fold before
+another starts you need to add an end marker.
+
+More about folding with markers in the reference manual: |fold-marker|
+
+==============================================================================
+*28.7*	Folding by syntax
+
+For each language Vim uses a different syntax file.  This defines the colors
+for various items in the file.  If you are reading this in Vim, in a terminal
+that supports colors, the colors you see are made with the "help" syntax file.
+   In the syntax files it is possible to add syntax items that have the "fold"
+argument.  These define a fold region.  This requires writing a syntax file
+and adding these items in it.  That's not so easy to do.  But once it's done,
+all folding happens automatically.
+   Here we'll assume you are using an existing syntax file.  Then there is
+nothing more to explain.  You can open and close folds as explained above.
+The folds will be created and deleted automatically when you edit the file.
+
+More about folding by syntax in the reference manual: |fold-syntax|
+
+==============================================================================
+*28.8*	Folding by expression
+
+This is similar to folding by indent, but instead of using the indent of a
+line a user function is called to compute the fold level of a line.  You can
+use this for text where something in the text indicates which lines belong
+together.  An example is an e-mail message where the quoted text is indicated
+by a ">" before the line.  To fold these quotes use this: >
+
+	:set foldmethod=expr
+	:set foldexpr=strlen(substitute(substitute(getline(v:lnum),'\\s','',\"g\"),'[^>].*','',''))
+
+You can try it out on this text:
+
+> quoted text he wrote
+> quoted text he wrote
+> > double quoted text I wrote
+> > double quoted text I wrote
+
+Explanation for the 'foldexpr' used in the example (inside out):
+   getline(v:lnum)			gets the current line
+   substitute(...,'\\s','','g')		removes all white space from the line
+   substitute(...,'[^>].*','',''))	removes everything after leading '>'s
+   strlen(...)				counts the length of the string, which
+					is the number of '>'s found
+
+Note that a backslash must be inserted before every space, double quote and
+backslash for the ":set" command.  If this confuses you, do >
+
+	:set foldexpr
+
+to check the actual resulting value.  To correct a complicated expression, use
+the command-line completion: >
+
+	:set foldexpr=<Tab>
+
+Where <Tab> is a real Tab.  Vim will fill in the previous value, which you can
+then edit.
+
+When the expression gets more complicated you should put it in a function and
+set 'foldexpr' to call that function.
+
+More about folding by expression in the reference manual: |fold-expr|
+
+==============================================================================
+*28.9*	Folding unchanged lines
+
+This is useful when you set the 'diff' option in the same window.  The
+|vimdiff| command does this for you.  Example: >
+
+	setlocal diff foldmethod=diff scrollbind nowrap foldlevel=1
+
+Do this in every window that shows a different version of the same file.  You
+will clearly see the differences between the files, while the text that didn't
+change is folded.
+
+For more details see |fold-diff|.
+
+==============================================================================
+*28.10* Which fold method to use?
+
+All these possibilities makes you wonder which method you should chose.
+Unfortunately, there is no golden rule.  Here are some hints.
+
+If there is a syntax file with folding for the language you are editing, that
+is probably the best choice.  If there isn't one, you might try to write it.
+This requires a good knowledge of search patterns.  It's not easy, but when
+it's working you will not have to define folds manually.
+
+Typing commands to manually fold regions can be used for unstructured text.
+Then use the |:mkview| command to save and restore your folds.
+
+The marker method requires you to change the file.  If you are sharing the
+files with other people or you have to meet company standards, you might not
+be allowed to add them.
+   The main advantage of markers is that you can put them exactly where you
+want them.  That avoids that a few lines are missed when you cut and paste
+folds.  And you can add a comment about what is contained in the fold.
+
+Folding by indent is something that works in many files, but not always very
+well.  Use it when you can't use one of the other methods.  However, it is
+very useful for outlining.  Then you specifically use one 'shiftwidth' for
+each nesting level.
+
+Folding with expressions can make folds in almost any structured text.  It is
+quite simple to specify, especially if the start and end of a fold can easily
+be recognized.
+   If you use the "expr" method to define folds, but they are not exactly how
+you want them, you could switch to the "manual" method.  This will not remove
+the defined folds.  Then you can delete or add folds manually.
+
+==============================================================================
+
+Next chapter: |usr_29.txt|  Moving through programs
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_29.txt b/runtime/doc/usr_29.txt
new file mode 100644
index 0000000..b906cf6
--- /dev/null
+++ b/runtime/doc/usr_29.txt
@@ -0,0 +1,613 @@
+*usr_29.txt*	For Vim version 7.0aa.  Last change: 2004 Feb 12
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			    Moving through programs
+
+
+The creator of Vim is a computer programmer.  It's no surprise that Vim
+contains many features to aid in writing programs.  Jump around to find where
+identifiers are defined and used.  Preview declarations in a separate window.
+There is more in the next chapter.
+
+|29.1|	Using tags
+|29.2|	The preview window
+|29.3|	Moving through a program
+|29.4|	Finding global identifiers
+|29.5|	Finding local identifiers
+
+     Next chapter: |usr_30.txt|  Editing programs
+ Previous chapter: |usr_28.txt|  Folding
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*29.1*	Using tags
+
+What is a tag?  It is a location where an identifier is defined.  An example
+is a function definition in a C or C++ program.  A list of tags is kept in a
+tags file.  This can be used by Vim to directly jump from any place to the
+tag, the place where an identifier is defined.
+   To generate the tags file for all C files in the current directory, use the
+following command: >
+
+	ctags *.c
+
+"ctags" is a separate program.  Most Unix systems already have it installed.
+If you do not have it yet, you can find Exuberant ctags here:
+
+	http://ctags.sf.net ~
+
+Now when you are in Vim and you want to go to a function definition, you can
+jump to it by using the following command: >
+
+	:tag startlist
+
+This command will find the function "startlist" even if it is in another file.
+   The CTRL-] command jumps to the tag of the word that is under the cursor.
+This makes it easy to explore a tangle of C code.  Suppose, for example, that
+you are in the function "write_block".  You can see that it calls
+"write_line".  But what does "write_line" do?  By placing the cursor on the
+call to "write_line" and pressing CTRL-], you jump to the definition of this
+function.
+   The "write_line" function calls "write_char".  You need to figure out what
+it does.  So you position the cursor over the call to "write_char" and press
+CTRL-].  Now you are at the definition of "write_char".
+
+	+-------------------------------------+
+	|void write_block(char **s; int cnt)  |
+	|{				      |
+	|   int i;			      |
+	|   for (i = 0; i < cnt; ++i)	      |
+	|      write_line(s[i]);	      |
+	|}	    |			      |
+	+-----------|-------------------------+
+		    |
+	     CTRL-] |
+		    |	 +----------------------------+
+		    +--> |void write_line(char *s)    |
+			 |{			      |
+			 |   while (*s != 0)	      |
+			 |	write_char(*s++);     |
+			 |}	  |		      |
+			 +--------|-------------------+
+				  |
+			   CTRL-] |
+				  |    +------------------------------------+
+				  +--> |void write_char(char c)		    |
+				       |{				    |
+				       |    putchar((int)(unsigned char)c); |
+				       |}				    |
+				       +------------------------------------+
+
+The ":tags" command shows the list of tags that you traversed through:
+
+	:tags
+	  # TO tag	   FROM line  in file/text ~
+	  1  1 write_line	   8  write_block.c ~
+	  2  1 write_char	   7  write_line.c ~
+	> ~
+>
+Now to go back.  The CTRL-T command goes to the preceding tag.  In the example
+above you get back to the "write_line" function, in the call to "write_char".
+   This command takes a count argument that indicates how many tags to jump
+back.  You have gone forward, and now back.  Let's go forward again.  The
+following command goes to the tag on top of the list: >
+
+	:tag
+
+You can prefix it with a count and jump forward that many tags.  For example:
+":3tag".  CTRL-T also can be preceded with a count.
+   These commands thus allow you to go down a call tree with CTRL-] and back
+up again with CTRL-T.  Use ":tags" to find out where you are.
+
+
+SPLIT WINDOWS
+
+The ":tag" command replaces the file in the current window with the one
+containing the new function.  But suppose you want to see not only the old
+function but also the new one?  You can split the window using the ":split"
+command followed by the ":tag" command.  Vim has a shorthand command that does
+both: >
+	:stag tagname
+
+To split the current window and jump to the tag under the cursor use this
+command: >
+
+	CTRL-W ]
+
+If a count is specified, the new window will be that many lines high.
+
+
+MORE TAGS FILES
+
+When you have files in many directories, you can create a tags file in each of
+them.  Vim will then only be able to jump to tags within that directory.
+   To find more tags files, set the 'tags' option to include all the relevant
+tags files.  Example: >
+
+	:set tags=./tags,./../tags,./*/tags
+
+This finds a tags file in the same directory as the current file, one
+directory level higher and in all subdirectories.
+   This is quite a number of tags files, but it may still not be enough.  For
+example, when editing a file in "~/proj/src", you will not find the tags file
+"~/proj/sub/tags".  For this situation Vim offers to search a whole directory
+tree for tags files.  Example: >
+
+	:set tags=~/proj/**/tags
+
+
+ONE TAGS FILE
+
+When Vim has to search many places for tags files, you can hear the disk
+rattling.  It may get a bit slow.  In that case it's better to spend this
+time while generating one big tags file.  You might do this overnight.
+   This requires the Exuberant ctags program, mentioned above.  It offers an
+argument to search a whole directory tree: >
+
+	cd ~/proj
+	ctags -R .
+
+The nice thing about this is that Exuberant ctags recognizes various file
+types.  Thus this doesn't work just for C and C++ programs, also for Eiffel
+and even Vim scripts.  See the ctags documentation to tune this.
+   Now you only need to tell Vim where your big tags file is: >
+
+	:set tags=~/proj/tags
+
+
+MULTIPLE MATCHES
+
+When a function is defined multiple times (or a method in several classes),
+the ":tag" command will jump to the first one.  If there is a match in the
+current file, that one is used first.
+   You can now jump to other matches for the same tag with: >
+
+	:tnext
+
+Repeat this to find further matches.  If there are many, you can select which
+one to jump to: >
+
+	:tselect tagname
+
+Vim will present you with a list of choices:
+
+	  # pri kind tag	       file ~
+	  1 F	f    mch_init	       os_amiga.c ~
+		       mch_init() ~
+	  2 F	f    mch_init	       os_mac.c ~
+		       mch_init() ~
+	  3 F	f    mch_init	       os_msdos.c ~
+		       mch_init(void) ~
+	  4 F	f    mch_init	       os_riscos.c ~
+		       mch_init() ~
+	Enter nr of choice (<CR> to abort):  ~
+
+You can now enter the number (in the first column) of the match that you would
+like to jump to.  The information in the other columns give you a good idea of
+where the match is defined.
+
+To move between the matching tags, these commands can be used:
+
+	:tfirst			go to first match
+	:[count]tprevious	go to [count] previous match
+	:[count]tnext		go to [count] next match
+	:tlast			go to last match
+
+If [count] is omitted then one is used.
+
+
+GUESSING TAG NAMES
+
+Command line completion is a good way to avoid typing a long tag name.  Just
+type the first bit and press <Tab>: >
+
+	:tag write_<Tab>
+
+You will get the first match.  If it's not the one you want, press <Tab> until
+you find the right one.
+   Sometimes you only know part of the name of a function.  Or you have many
+tags that start with the same string, but end differently.  Then you can tell
+Vim to use a pattern to find the tag.
+   Suppose you want to jump to a tag that contains "block".  First type
+this: >
+
+	:tag /block
+
+Now use command line completion: press <Tab>.  Vim will find all tags that
+contain "block" and use the first match.
+   The "/" before a tag name tells Vim that what follows is not a literal tag
+name, but a pattern.  You can use all the items for search patterns here.  For
+example, suppose you want to select a tag that starts with "write_": >
+
+	:tselect /^write_
+
+The "^" specifies that the tag starts with "write_".  Otherwise it would also
+be found halfway a tag name.  Similarly "$" at the end makes sure the pattern
+matches until the end of a tag.
+
+
+A TAGS BROWSER
+
+Since CTRL-] takes you to the definition of the identifier under the cursor,
+you can use a list of identifier names as a table of contents.  Here is an
+example.
+   First create a list of identifiers (this requires Exuberant ctags): >
+
+	ctags --c-types=f -f functions *.c
+
+Now start Vim without a file, and edit this file in Vim, in a vertically split
+window: >
+
+	vim
+	:vsplit functions
+
+The window contains a list of all the functions.  There is some more stuff,
+but you can ignore that.  Do ":setlocal ts=99" to clean it up a bit.
+   In this window, define a mapping: >
+
+	:nnoremap <buffer> <CR> 0ye<C-W>w:tag <C-R>"<CR>
+
+Move the cursor to the line that contains the function you want to go to.
+Now press <Enter>.  Vim will go to the other window and jump to the selected
+function.
+
+
+RELATED ITEMS
+
+You can set 'ignorecase' to make case in tag names be ignored.
+
+The 'tagbsearch' option tells if the tags file is sorted or not.  The default
+is to assume a sorted tags file, which makes a tags search a lot faster, but
+doesn't work if the tags file isn't sorted.
+
+The 'taglength' option can be used to tell Vim the number of significant
+characters in a tag.
+
+When you use the SNiFF+ program, you can use the Vim interface to it |sniff|.
+SNiFF+ is a commercial program.
+
+Cscope is a free program.  It does not only find places where an identifier is
+declared, but also where it is used.  See |cscope|.
+
+==============================================================================
+*29.2*	The preview window
+
+When you edit code that contains a function call, you need to use the correct
+arguments.  To know what values to pass you can look at how the function is
+defined.  The tags mechanism works very well for this.  Preferably the
+definition is displayed in another window.  For this the preview window can be
+used.
+   To open a preview window to display the function "write_char": >
+
+	:ptag write_char
+
+Vim will open a window, and jumps to the tag "write_char".  Then it takes you
+back to the original position.  Thus you can continue typing without the need
+to use a CTRL-W command.
+   If the name of a function appears in the text, you can get its definition
+in the preview window with: >
+
+	CTRL-W }
+
+There is a script that automatically displays the text where the word under
+the cursor was defined.  See |CursorHold-example|.
+
+To close the preview window use this command: >
+
+	:pclose
+
+To edit a specific file in the preview window, use ":pedit".  This can be
+useful to edit a header file, for example: >
+
+	:pedit defs.h
+
+Finally, ":psearch" can be used to find a word in the current file and any
+included files and display the match in the preview window.  This is
+especially useful when using library functions, for which you do not have a
+tags file.  Example: >
+
+	:psearch popen
+
+This will show the "stdio.h" file in the preview window, with the function
+prototype for popen():
+
+	FILE	*popen __P((const char *, const char *)); ~
+
+You can specify the height of the preview window, when it is opened, with the
+'previewheight' option.
+
+==============================================================================
+*29.3*	Moving through a program
+
+Since a program is structured, Vim can recognize items in it.  Specific
+commands can be used to move around.
+   C programs often contain constructs like this:
+
+	#ifdef USE_POPEN ~
+	    fd = popen("ls", "r") ~
+	#else ~
+	    fd = fopen("tmp", "w") ~
+	#endif ~
+
+But then much longer, and possibly nested.  Position the cursor on the
+"#ifdef" and press %.  Vim will jump to the "#else".  Pressing % again takes
+you to the "#endif".  Another % takes you to the "#ifdef" again.
+   When the construct is nested, Vim will find the matching items.  This is a
+good way to check if you didn't forget an "#endif".
+   When you are somewhere inside a "#if" - "#endif", you can jump to the start
+of it with: >
+
+	[#
+
+If you are not after a "#if" or "#ifdef" Vim will beep.  To jump forward to
+the next "#else" or "#endif" use: >
+
+	]#
+
+These two commands skip any "#if" - "#endif" blocks that they encounter.
+Example:
+
+	#if defined(HAS_INC_H) ~
+	    a = a + inc(); ~
+	# ifdef USE_THEME ~
+	    a += 3; ~
+	# endif ~
+	    set_width(a); ~
+
+With the cursor in the last line, "[#" moves to the first line.  The "#ifdef"
+- "#endif" block in the middle is skipped.
+
+
+MOVING IN CODE BLOCKS
+
+In C code blocks are enclosed in {}.  These can get pretty long.  To move to
+the start of the outer block use the "[[" command.  Use "][" to find the end.
+This assumes that the "{" and "}" are in the first column.
+   The "[{" command moves to the start of the current block.  It skips over
+pairs of {} at the same level.  "]}" jumps to the end.
+   An overview:
+
+			function(int a)
+	   +->		{
+	   |		    if (a)
+	   |	   +->	    {
+	[[ |	   |		for (;;)	       --+
+	   |	   |	  +->	{			 |
+	   |	[{ |	  |	    foo(32);		 |     --+
+	   |	   |   [{ |	    if (bar(a))  --+	 | ]}	 |
+	   +--	   |	  +--		break;	   | ]}  |	 |
+		   |		}		 <-+	 |	 | ][
+		   +--		foobar(a)		 |	 |
+			    }			       <-+	 |
+			}				       <-+
+
+When writing C++ or Java, the outer {} block is for the class.  The next level
+of {} is for a method.  When somewhere inside a class use "[m" to find the
+previous start of a method.  "]m" finds the next end of a method.
+
+Additionally, "[]" moves backward to the end of a function and "]]" moves
+forward to the start of the next function.  The end of a function is defined
+by a "}" in the first column.
+
+				int func1(void)
+				{
+					return 1;
+		  +---------->  }
+		  |
+	      []  |		int func2(void)
+		  |	   +->	{
+		  |    [[  |		if (flag)
+	start	  +--	   +--			return flag;
+		  |    ][  |		return 2;
+		  |	   +->	}
+	      ]]  |
+		  |		int func3(void)
+		  +---------->	{
+					return 3;
+				}
+
+Don't forget you can also use "%" to move between matching (), {} and [].
+That also works when they are many lines apart.
+
+
+MOVING IN BRACES
+
+The "[(" and "])" commands work similar to "[{" and "]}", except that they
+work on () pairs instead of {} pairs.
+>
+				  [(
+<		    <--------------------------------
+			      <-------
+		if (a == b && (c == d || (e > f)) && x > y) ~
+				  -------------->
+			  --------------------------------> >
+				       ])
+
+MOVING IN COMMENTS
+
+To move back to the start of a comment use "[/".  Move forward to the end of a
+comment with "]/".  This only works for /* - */ comments.
+
+	  +->	  +-> /*
+	  |    [/ |    * A comment about      --+
+       [/ |	  +--  * wonderful life.	| ]/
+	  |	       */		      <-+
+	  |
+	  +--	       foo = bar * 3;	      --+
+						| ]/
+		       /* a short comment */  <-+
+
+==============================================================================
+*29.4*	Finding global identifiers
+
+You are editing a C program and wonder if a variable is declared as "int" or
+"unsigned".  A quick way to find this is with the "[I" command.
+   Suppose the cursor is on the word "column".  Type: >
+
+	[I
+
+Vim will list the matching lines it can find.  Not only in the current file,
+but also in all included files (and files included in them, etc.).  The result
+looks like this:
+
+	structs.h ~
+	 1:   29     unsigned     column;    /* column number */ ~
+
+The advantage over using tags or the preview window is that included files are
+searched.  In most cases this results in the right declaration to be found.
+Also when the tags file is out of date.  Also when you don't have tags for the
+included files.
+   However, a few things must be right for "[I" to do its work.  First of all,
+the 'include' option must specify how a file is included.  The default value
+works for C and C++.  For other languages you will have to change it.
+
+
+LOCATING INCLUDED FILES
+
+   Vim will find included files in the places specified with the 'path'
+option.  If a directory is missing, some include files will not be found.  You
+can discover this with this command: >
+
+	:checkpath
+
+It will list the include files that could not be found.  Also files included
+by the files that could be found.  An example of the output:
+
+	--- Included files not found in path --- ~
+	<io.h> ~
+	vim.h --> ~
+	  <functions.h> ~
+	  <clib/exec_protos.h> ~
+
+The "io.h" file is included by the current file and can't be found.  "vim.h"
+can be found, thus ":checkpath" goes into this file and checks what it
+includes.  The "functions.h" and "clib/exec_protos.h" files, included by
+"vim.h" are not found.
+
+	Note:
+	Vim is not a compiler.  It does not recognize "#ifdef" statements.
+	This means every "#include" statement is used, also when it comes
+	after "#if NEVER".
+
+To fix the files that could not be found, add a directory to the 'path'
+option.  A good place to find out about this is the Makefile.  Look out for
+lines that contain "-I" items, like "-I/usr/local/X11".  To add this directory
+use: >
+
+	:set path+=/usr/local/X11
+
+When there are many subdirectories, you an use the "*" wildcard.  Example: >
+
+	:set path+=/usr/*/include
+
+This would find files in "/usr/local/include" as well as "/usr/X11/include".
+
+When working on a project with a whole nested tree of included files, the "**"
+items is useful.  This will search down in all subdirectories.  Example: >
+
+	:set path+=/projects/invent/**/include
+
+This will find files in the directories:
+
+	/projects/invent/include ~
+	/projects/invent/main/include ~
+	/projects/invent/main/os/include ~
+	etc.
+
+There are even more possibilities.  Check out the 'path' option for info.
+   If you want to see which included files are actually found, use this
+command: >
+
+	:checkpath!
+
+You will get a (very long) list of included files, the files they include, and
+so on.  To shorten the list a bit, Vim shows "(Already listed)" for files that
+were found before and doesn't list the included files in there again.
+
+
+JUMPING TO A MATCH
+
+"[I" produces a list with only one line of text.  When you want to have a
+closer look at the first item, you can jump to that line with the command: >
+
+	[<Tab>
+
+You can also use "[ CTRL-I", since CTRL-I is the same as pressing <Tab>.
+
+The list that "[I" produces has a number at the start of each line.  When you
+want to jump to another item than the first one, type the number first: >
+
+	3[<Tab>
+
+Will jump to the third item in the list.  Remember that you can use CTRL-O to
+jump back to where you started from.
+
+
+RELATED COMMANDS
+
+	[i		only lists the first match
+	]I		only lists items below the cursor
+	]i		only lists the first item below the cursor
+
+
+FINDING DEFINED IDENTIFIERS
+
+The "[I" command finds any identifier.  To find only macros, defined with
+"#define" use: >
+
+	[D
+
+Again, this searches in included files.  The 'define' option specifies what a
+line looks like that defines the items for "[D".  You could change it to make
+it work with other languages than C or C++.
+   The commands related to "[D" are:
+
+	[d		only lists the first match
+	]D		only lists items below the cursor
+	]d		only lists the first item below the cursor
+
+==============================================================================
+*29.5*	Finding local identifiers
+
+The "[I" command searches included files.  To search in the current file only,
+and jump to the first place where the word under the cursor is used: >
+
+	gD
+
+Hint: Goto Definition.  This command is very useful to find a variable or
+function that was declared locally ("static", in C terms).  Example (cursor on
+"counter"):
+
+	   +->   static int counter = 0;
+	   |
+	   |     int get_counter(void)
+	gD |     {
+	   |	     ++counter;
+	   +--	     return counter;
+		 }
+
+To restrict the search even further, and look only in the current function,
+use this command: >
+
+	gd
+
+This will go back to the start of the current function and find the first
+occurrence of the word under the cursor.  Actually, it searches backwards to
+an empty line above the a "{" in the first column.  From there it searches
+forward for the identifier.  Example (cursor on "idx"):
+
+		int find_entry(char *name)
+		{
+	   +->	    int idx;
+	   |
+	gd |	    for (idx = 0; idx < table_len; ++idx)
+	   |		if (strcmp(table[idx].name, name) == 0)
+	   +--		    return idx;
+		}
+
+==============================================================================
+
+Next chapter: |usr_30.txt|  Editing programs
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_30.txt b/runtime/doc/usr_30.txt
new file mode 100644
index 0000000..c88f060
--- /dev/null
+++ b/runtime/doc/usr_30.txt
@@ -0,0 +1,643 @@
+*usr_30.txt*	For Vim version 7.0aa.  Last change: 2004 Jan 17
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			      Editing programs
+
+
+Vim has various commands that aid in writing computer programs.  Compile a
+program and directly jump to reported errors.  Automatically set the indent
+for many languages and format comments.
+
+|30.1|	Compiling
+|30.2|	Indenting C files
+|30.3|	Automatic indenting
+|30.4|	Other indenting
+|30.5|	Tabs and spaces
+|30.6|	Formatting comments
+
+     Next chapter: |usr_31.txt|  Exploiting the GUI
+ Previous chapter: |usr_29.txt|  Moving through programs
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*30.1*	Compiling
+
+Vim has a set of so called "quickfix" commands.  They enable you to compile a
+program from within Vim and then go through the errors generated and fix them
+(hopefully).  You can then recompile and fix any new errors that are found
+until finally your program compiles without any error.
+
+The following command runs the program "make" (supplying it with any argument
+you give) and captures the results: >
+
+	:make {arguments}
+
+If errors were generated, they are captured and the editor positions you where
+the first error occurred.
+   Take a look at an example ":make" session. (Typical :make sessions generate
+far more errors and fewer stupid ones.)  After typing ":make" the screen looks
+like this:
+
+	:!make | &tee /tmp/vim215953.err ~
+	gcc -g -Wall -o prog main.c sub.c ~
+	main.c: In function 'main': ~
+	main.c:6: too many arguments to function 'do_sub' ~
+	main.c: At top level: ~
+	main.c:10: parse error before '}' ~
+	make: *** [prog] Error 1 ~
+
+	2 returned ~
+	"main.c" 11L, 111C ~
+	(3 of 6): too many arguments to function 'do_sub' ~
+	Hit ENTER or type command to continue ~
+
+From this you can see that you have errors in the file "main.c".  When you
+press <Enter>, Vim displays the file "main.c", with the cursor positioned on
+line 6, the first line with an error.  You did not need to specify the file or
+the line number, Vim knew where to go by looking in the error messages.
+
+		+---------------------------------------------------+
+		|int main()					    |
+		|{						    |
+		|	int i=3;				    |
+      cursor -> |	do_sub("foo");				    |
+		|	++i;					    |
+		|	return (0);				    |
+		|}						    |
+		|}						    |
+		| ~						    |
+		|(3 of 12): too many arguments to function 'do_sub' |
+		+---------------------------------------------------+
+
+The following command goes to where the next error occurs: >
+
+	:cnext
+
+Vim jumps to line 10, the last line in the file, where there is an extra '}'.
+   When there is not enough room, Vim will shorten the error message.  To see
+the whole message use: >
+
+	:cc
+
+You can get an overview of all the error messages with the ":clist" command.
+The output looks like this: >
+
+	:clist
+<	3 main.c: 6:too many arguments to function 'do_sub' ~
+	5 main.c: 10:parse error before '}' ~
+
+Only the lines where Vim recognized a file name and line number are listed
+here.  It assumes those are the interesting lines and the rest is just boring
+messages.  However, sometimes unrecognized lines do contain something you want
+to see.  Output from the linker, for example, about an undefined function.
+To see all the messages add a "!" to the command: >
+
+	:clist!
+<	1 gcc -g -Wall -o prog main.c sub.c ~
+	2 main.c: In function 'main': ~
+	3 main.c:6: too many arguments to function 'do_sub' ~
+	4 main.c: At top level: ~
+	5 main.c:10: parse error before '}' ~
+	6 make: *** [prog] Error 1 ~
+
+Vim will highlight the current error.  To go back to the previous error, use:
+>
+	:cprevious
+
+Other commands to move around in the error list:
+
+	:cfirst		to first error
+	:clast		to last error
+	:cc 3		to error nr 3
+
+
+USING ANOTHER COMPILER
+
+The name of the program to run when the ":make" command is executed is defined
+by the 'makeprg' option.  Usually this is set to "make", but Visual C++ users
+should set this to "nmake" by executing the following command: >
+
+	:set makeprg=nmake
+
+You can also include arguments in this option.  Special characters need to
+be escaped with a backslash.  Example: >
+
+	:set makeprg=nmake\ -f\ project.mak
+
+You can include special Vim keywords in the command specification.  The %
+character expands to the name of the current file.  So if you execute the
+command: >
+	:set makeprg=make\ %
+
+When you are editing main.c, then ":make" executes the following command: >
+
+	make main.c
+
+This is not too useful, so you will refine the command a little and use the :r
+(root) modifier: >
+
+	:set makeprg=make\ %:r.o
+
+Now the command executed is as follows: >
+
+	make main.o
+
+More about these modifiers here: |filename-modifiers|.
+
+
+OLD ERROR LISTS
+
+Suppose you ":make" a program.  There is an warning message in one file and an
+error message in another.  You fix the error and use ":make" again to check if
+it was really fixed.  Now you want to look at the warning message.  It doesn't
+show up in the last error list, since the file with the warning wasn't
+compiled again.  You can go back to the previous error list with: >
+
+	:colder
+
+Then use ":clist" and ":cc {nr}" to jump to the place with the warning.
+   To go forward to the next error list: >
+
+	:cnewer
+
+Vim remembers ten error lists.
+
+
+SWITCHING COMPILERS
+
+You have to tell Vim what format the error messages are that your compiler
+produces.  This is done with the 'errorformat' option.  The syntax of this
+option is quite complicated and it can be made to fit almost any compiler.
+You can find the explanation here: |errorformat|.
+
+You might be using various different compilers.  Setting the 'makeprg' option,
+and especially the 'errorformat' each time is not easy.  Vim offers a simple
+method for this.  For example, to switch to using the Microsoft Visual C++
+compiler: >
+
+	:compiler msvc
+
+This will find the Vim script for the "msvc" compiler and set the appropriate
+options.
+   You can write your own compiler files.  See |write-compiler-plugin|.
+
+
+OUTPUT REDIRECTION
+
+The ":make" command redirects the output of the executed program to an error
+file.  How this works depends on various things, such as the 'shell'.  If your
+":make" command doesn't capture the output, check the 'makeef' and
+'shellpipe' options.  The 'shellquote' and 'shellxquote' options might also
+matter.
+
+In case you can't get ":make" to redirect the file for you, an alternative is
+to compile the program in another window and redirect the output into a file.
+Then have Vim read this file with: >
+
+	:cfile {filename}
+
+Jumping to errors will work like with the ":make" command.
+
+==============================================================================
+*30.2*	Indenting C files
+
+A program is much easier to understand when the lines have been properly
+indented.  Vim offers various ways to make this less work.
+   For C programs set the 'cindent' option.  Vim knows a lot about C programs
+and will try very hard to automatically set the indent for you.  Set the
+'shiftwidth' option to the amount of spaces you want for a deeper level.  Four
+spaces will work fine.  One ":set" command will do it: >
+
+	:set cindent shiftwidth=4
+
+With this option enabled, when you type something such as "if (x)", the next
+line will automatically be indented an additional level.
+
+				    if (flag)
+	Automatic indent   --->		do_the_work();
+	Automatic unindent <--	    if (other_flag) {
+	Automatic indent   --->		do_file();
+	keep indent			do_some_more();
+	Automatic unindent <--	    }
+
+When you type something in curly braces ({}), the text will be indented at the
+start and unindented at the end.  The unindenting will happen after typing the
+'}', since Vim can't guess what you are going to type.
+
+One side effect of automatic indentation is that it helps you catch errors in
+your code early.  When you type a } to finish a function, only to find that
+the automatic indentation gives it more indent than what you expected, there
+is probably a } missing.  Use the "%" command to find out which { matches the
+} you typed.
+   A missing ) and ; also cause extra indent.  Thus if you get more white
+space than you would expect, check the preceding lines.
+
+When you have code that is badly formatted, or you inserted and deleted lines,
+you need to re-indent the lines.  The "=" operator does this.  The simplest
+form is: >
+
+	==
+
+This indents the current line.  Like with all operators, there are three ways
+to use it.  In Visual mode "=" indents the selected lines.  A useful text
+object is "a{".  This selects the current {} block.  Thus, to re-indent the
+code code block the cursor is in: >
+
+	=a{
+
+I you have really badly indented code, you can re-indent the whole file with:
+>
+	gg=G
+
+However, don't do this in files that have been carefully indented manually.
+The automatic indenting does a good job, but in some situations you might want
+to overrule it.
+
+
+SETTING INDENT STYLE
+
+Different people have different styles of indentation.  By default Vim does a
+pretty good job of indenting in a way that 90% of programmers do.  There are
+different styles, however; so if you want to, you can customize the
+indentation style with the 'cinoptions' option.
+   By default 'cinoptions' is empty and Vim uses the default style.  You can
+add various items where you want something different.  For example, to make
+curly braces be placed like this:
+
+	if (flag) ~
+	  { ~
+	    i = 8; ~
+	    j = 0; ~
+	  } ~
+
+Use this command: >
+
+	:set cinoptions+={2
+
+There are many of these items.  See |cinoptions-values|.
+
+==============================================================================
+*30.3*	Automatic indenting
+
+You don't want to switch on the 'cindent' option manually every time you edit
+a C file.  This is how you make it work automatically: >
+
+	:filetype indent on
+
+Actually, this does a lot more than switching on 'cindent' for C files.  First
+of all, it enables detecting the type of a file.  That's the same as what is
+used for syntax highlighting.
+   When the filetype is known, Vim will search for an indent file for this
+type of file.  The Vim distribution includes a number of these for various
+programming languages.  This indent file will then prepare for automatic
+indenting specifically for this file.
+
+If you don't like the automatic indenting, you can switch it off again: >
+
+	:filetype indent off
+
+If you don't like the indenting for one specific type of file, this is how you
+avoid it.  Create a file with just this one line: >
+
+	:let b:did_indent = 1
+
+Now you need to write this in a file with a specific name:
+
+	{directory}/indent/{filetype}.vim
+
+The {filetype} is the name of the file type, such as "cpp" or "java".  You can
+see the exact name that Vim detected with this command: >
+
+	:set filetype
+
+In this file the output is:
+
+	filetype=help ~
+
+This you would use "help" for {filetype}.
+   For the {directory} part you need to use your runtime directory.  Look at
+the output of this command: >
+
+	set runtimepath
+
+Now use the first item, the name before the first comma.  Thus if the output
+looks like this:
+
+	runtimepath=~/.vim,/usr/local/share/vim/vim60/runtime,~/.vim/after ~
+
+You use "~/.vim" for {directory}.  Then the resulting file name is:
+
+	~/.vim/indent/help.vim ~
+
+Instead of switching the indenting off, you could write your own indent file.
+How to do that is explained here: |indent-expression|.
+
+==============================================================================
+*30.4*	Other indenting
+
+The most simple form of automatic indenting is with the 'autoindent' option.
+It uses the indent from the previous line.  A bit smarter is the 'smartindent'
+option.  This is useful for languages where no indent file is available.
+'smartindent'is not as smart as 'cindent', but smarter than 'autoindent'.
+   With 'smartindent' set, an extra level of indentation is added for each {
+and removed for each }.  An extra level of indentation will also be added for
+any of the words in the 'cinwords' option.  Lines that begin with # are
+treated specially: all indentation is removed.  This is done so that
+preprocessor directives will all start in column 1.  The indentation is
+restored for the next line.
+
+
+CORRECTING INDENTS
+
+When you are using 'autoindent' or 'smartindent' to get the indent of the
+previous line, there will be many times when you need to add or remove one
+'shiftwidth' worth of indent.  A quick way to do this is using the CTRL-D and
+CTRL-T commands in Insert mode.
+   For example, you are typing a shell script that is supposed to look like
+this:
+
+	if test -n a; then ~
+	   echo a ~
+	   echo "-------" ~
+	fi ~
+
+Start off by setting these option: >
+
+	:set autoindent shiftwidth=3
+
+You start by typing the first line, <Enter> and the start of the second line:
+
+	if test -n a; then ~
+	echo ~
+
+Now you see that you need an extra indent.  Type CTRL-T.  The result:
+
+	if test -n a; then ~
+	   echo ~
+
+The CTRL-T command, in Insert mode, adds one 'shiftwidth' to the indent, no
+matter where in the line you are.
+   You continue typing the second line, <Enter> and the third line.  This time
+the indent is OK.  Then <Enter> and the last line.  Now you have this:
+
+	if test -n a; then ~
+	   echo a ~
+	   echo "-------" ~
+	   fi ~
+
+To remove the superfluous indent in the last line press CTRL-D.  This deletes
+one 'shiftwidth' worth of indent, no matter where you are in the line.
+   When you are in Normal mode, you can use the ">>" and "<<" commands to
+shift lines.  ">" and "<" are operators, thus you have the usual three ways to
+specify the lines you want to indent.  A useful combination is: >
+
+	>i{
+
+This adds one indent to the current block of lines, inside {}.  The { and }
+lines themselves are left unmodified.  ">a{" includes them.  In this example
+the cursor is on "printf":
+
+	original text		after ">i{"		after ">a{"
+
+	if (flag)		if (flag)		if (flag) ~
+	{			{			    { ~
+	printf("yes");		    printf("yes");	    printf("yes"); ~
+	flag = 0;		    flag = 0;		    flag = 0;  ~
+	}			}			    } ~
+
+==============================================================================
+*30.5*	Tabs and spaces
+
+'tabstop' is set to eight by default.  Although you can change it, you quickly
+run into trouble later.  Other programs won't know what tabstop value you
+used.  They probably use the default value of eight, and your text suddenly
+looks very different.  Also, most printers use a fixed tabstop value of eight.
+Thus it's best to keep 'tabstop' alone.  (If you edit a file which was written
+with a different tabstop setting, see |25.3| for how to fix that.)
+   For indenting lines in a program, using a multiple of eight spaces makes
+you quickly run into the right border of the window.  Using a single space
+doesn't provide enough visual difference.  Many people prefer to use four
+spaces, a good compromise.
+   Since a <Tab> is eight spaces and you want to use an indent of four spaces,
+you can't use a <Tab> character to make your indent.  There are two ways to
+handle this:
+
+1.  Use a mix of <Tab> and space characters.  Since a <Tab> takes the place of
+    eight spaces, you have fewer characters in your file.  Inserting a <Tab>
+    is quicker than eight spaces.  Backspacing works faster as well.
+
+2.  Use spaces only.  This avoids the trouble with programs that use a
+    different tabstop value.
+
+Fortunately, Vim supports both methods quite well.
+
+
+SPACES AND TABS
+
+If you are using a combination of tabs and spaces, you just edit normally.
+The Vim defaults do a fine job of handling things.
+   You can make life a little easier by setting the 'softtabstop' option.
+This option tells Vim to make the <Tab> key look and feel as if tabs were set
+at the value of 'softtabstop', but actually use a combination of tabs and
+spaces.
+   After you execute the following command, every time you press the <Tab> key
+the cursor moves to the next 4-column boundary: >
+
+	:set softtabstop=4
+
+When you start in the first column and press <Tab>, you get 4 spaces inserted
+in your text.  The second time, Vim takes out the 4 spaces and puts in a <Tab>
+(thus taking you to column 8).  Thus Vim uses as many <Tab>s as possible, and
+then fills up with spaces.
+   When backspacing it works the other way around.  A <BS> will always delete
+the amount specified with 'softtabstop'.  Then <Tabs> are used as many as
+possible and spaces to fill the gap.
+   The following shows what happens pressing <Tab> a few times, and then using
+<BS>.  A "." stands for a space and "------->" for a <Tab>.
+
+	type			  result ~
+	<Tab>			  ....
+	<Tab><Tab>		  ------->
+	<Tab><Tab><Tab>		  ------->....
+	<Tab><Tab><Tab><BS>	  ------->
+	<Tab><Tab><Tab><BS><BS>   ....
+
+An alternative is to use the 'smarttab' option.  When it's set, Vim uses
+'shiftwidth' for a <Tab> typed in the indent of a line, and a real <Tab> when
+typed after the first non-blank character.  However, <BS> doesn't work like
+with 'softtabstop'.
+
+
+JUST SPACES
+
+If you want absolutely no tabs in your file, you can set the 'expandtab'
+option: >
+
+	:set expandtab
+
+When this option is set, the <Tab> key inserts a series of spaces.  Thus you
+get the same amount of white space as if a <Tab> character was inserted, but
+there isn't a real <Tab> character in your file.
+   The backspace key will delete each space by itself.  Thus after typing one
+<Tab> you have to press the <BS> key up to eight times to undo it.  If you are
+in the indent, pressing CTRL-D will be a lot quicker.
+
+
+CHANGING TABS IN SPACES (AND BACK)
+
+Setting 'expandtab' does not affect any existing tabs.  In other words, any
+tabs in the document remain tabs.  If you want to convert tabs to spaces, use
+the ":retab" command.  Use these commands: >
+
+	:set expandtab
+	:%retab
+
+Now Vim will have changed all indents to use spaces instead of tabs.  However,
+all tabs that come after a non-blank character are kept.  If you want these to
+be converted as well, add a !: >
+
+	:%retab!
+
+This is a little bit dangerous, because it can also change tabs inside a
+string.  To check if these exist, you could use this: >
+
+	/"[^"\t]*\t[^"]*"
+
+It's recommended not to use hard tabs inside a string.  Replace them with
+"\t" to avoid trouble.
+
+The other way around works just as well: >
+
+	:set noexpandtab
+	:%retab!
+
+==============================================================================
+*30.6*	Formatting comments
+
+One of the great things about Vim is that it understands comments.  You can
+ask Vim to format a comment and it will do the right thing.
+   Suppose, for example, that you have the following comment:
+
+	/* ~
+	 * This is a test ~
+	 * of the text formatting. ~
+	 */ ~
+
+You then ask Vim to format it by positioning the cursor at the start of the
+comment and type: >
+
+	gq]/
+
+"gq" is the operator to format text.  "]/" is the motion that takes you to the
+end of a comment.  The result is:
+
+	/* ~
+	 * This is a test of the text formatting. ~
+	 */ ~
+
+Notice that Vim properly handled the beginning of each line.
+  An alternative is to select the text that is to be formatted in Visual mode
+and type "gq".
+
+To add a new line to the comment, position the cursor on the middle line and
+press "o".  The result looks like this:
+
+	/* ~
+	 * This is a test of the text formatting. ~
+	 * ~
+	 */ ~
+
+Vim has automatically inserted a star and a space for you.  Now you can type
+the comment text.  When it gets longer than 'textwidth', Vim will break the
+line.  Again, the star is inserted automatically:
+
+	/* ~
+	 * This is a test of the text formatting. ~
+	 * Typing a lot of text here will make Vim ~
+	 * break ~
+	 */ ~
+
+For this to work some flags must be present in 'formatoptions':
+
+	r	insert the star when typing <Enter> in Insert mode
+	o	insert the star when using "o" or "O" in Normal mode
+	c	break comment text according to 'textwidth'
+
+See |fo-table| for more flags.
+
+
+DEFINING A COMMENT
+
+The 'comments' option defines what a comment looks like.  Vim distinguishes
+between a single-line comment and a comment that has a different start, end
+and middle part.
+   Many single-line comments start with a specific character.  In C++ // is
+used, in Makefiles #, in Vim scripts ".  For example, to make Vim understand
+C++ comments: >
+
+	:set comments=://
+
+The colon separates the flags of an item from the text by which the comment is
+recognized.  The general form of an item in 'comments' is:
+
+	{flags}:{text}
+
+The {flags} part can be empty, as in this case.
+   Several of these items can be concatenated, separated by commas.  This
+allows recognizing different types of comments at the same time.  For example,
+let's edit an e-mail message.  When replying, the text that others wrote is
+preceded with ">" and "!" characters.  This command would work: >
+
+	:set comments=n:>,n:!
+
+There are two items, one for comments starting with ">" and one for comments
+that start with "!".  Both use the flag "n".  This means that these comments
+nest.  Thus a line starting with ">" may have another comment after the ">".
+This allows formatting a message like this:
+
+	> ! Did you see that site? ~
+	> ! It looks really great. ~
+	> I don't like it.  The ~
+	> colors are terrible. ~
+	What is the URL of that ~
+	site? ~
+
+Try setting 'textwidth' to a different value, e.g., 80, and format the text by
+Visually selecting it and typing "gq".  The result is:
+
+	> ! Did you see that site? It looks really great. ~
+	> I don't like it.  The colors are terrible. ~
+	What is the URL of that site? ~
+
+You will notice that Vim did not move text from one type of comment to
+another.  The "I" in the second line would have fit at the end of the first
+line, but since that line starts with "> !" and the second line with ">", Vim
+knows that this is a different kind of comment.
+
+
+A THREE PART COMMENT
+
+A C comment starts with "/*", has "*" in the middle and "*/" at the end.  The
+entry in 'comments' for this looks like this: >
+
+	:set comments=s1:/*,mb:*,ex:*/
+
+The start is defined with "s1:/*".  The "s" indicates the start of a
+three-piece comment.  The colon separates the flags from the text by which the
+comment is recognized: "/*".  There is one flag: "1".  This tells Vim that the
+middle part has an offset of one space.
+   The middle part "mb:*" starts with "m", which indicates it is a middle
+part.  The "b" flag means that a blank must follow the text.  Otherwise Vim
+would consider text like "*pointer" also to be the middle of a comment.
+   The end part "ex:*/" has the "e" for identification.  The "x" flag has a
+special meaning.  It means that after Vim automatically inserted a star,
+typing / will remove the extra space.
+
+For more details see |format-comments|.
+
+==============================================================================
+
+Next chapter: |usr_31.txt|  Exploiting the GUI
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_31.txt b/runtime/doc/usr_31.txt
new file mode 100644
index 0000000..a836b04
--- /dev/null
+++ b/runtime/doc/usr_31.txt
@@ -0,0 +1,267 @@
+*usr_31.txt*	For Vim version 7.0aa.  Last change: 2003 Oct 21
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			      Exploiting the GUI
+
+
+Vim works well in a terminal, but the GUI has a few extra items.  A file
+browser can be used for commands that use a file.  A dialog to make a choice
+between alternatives.  Use keyboard shortcuts to access menu items quickly.
+
+|31.1|	The file browser
+|31.2|	Confirmation
+|31.3|	Menu shortcuts
+|31.4|	Vim window position and size
+|31.5|	Various
+
+     Next chapter: |usr_40.txt|  Make new commands
+ Previous chapter: |usr_30.txt|  Editing programs
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*31.1*	The file browser
+
+When using the File/Open... menu you get a file browser.  This makes it easier
+to find the file you want to edit.  But what if you want to split a window to
+edit another file?  There is no menu entry for this.  You could first use
+Window/Split and then File/Open..., but that's more work.
+   Since you are typing most commands in Vim, opening the file browser with a
+typed command is possible as well.  To make the split command use the file
+browser, prepend "browse": >
+
+	:browse split
+
+Select a file and then the ":split" command will be executed with it.  If you
+cancel the file dialog nothing happens, the window isn't split.
+   You can also specify a file name argument.  This is used to tell the file
+browser where to start.  Example: >
+
+	:browse split /etc
+
+The file browser will pop up, starting in the directory "/etc".
+
+The ":browse" command can be prepended to just about any command that opens a
+file.
+   If no directory is specified, Vim will decide where to start the file
+browser.  By default it uses the same directory as the last time.  Thus when
+you used ":browse split" and selected a file in "/usr/local/share", the next
+time you use a ":browse" it will start in "/usr/local/share" again.
+   This can be changed with the 'browsedir' option.  It can have one of three
+values:
+
+	last		Use the last directory browsed (default)
+	buffer		Use the same directory as the current buffer
+	current		use the current directory
+
+For example, when you are in the directory "/usr", editing the file
+"/usr/local/share/readme", then the command: >
+
+	:set browsedir=buffer
+	:browse edit
+
+Will start the browser in "/usr/local/share".  Alternatively: >
+
+	:set browsedir=current
+	:browse edit
+
+Will start the browser in "/usr".
+
+	Note:
+	To avoid using the mouse, most file browsers offer using key presses
+	to navigate.  Since this is different for every system, it is not
+	explained here.  Vim uses a standard browser when possible, your
+	system documentation should contain an explanation on the keyboard
+	shortcuts somewhere.
+
+When you are not using the GUI version, you could use the file explorer window
+to select files like in a file browser.  However, this doesn't work for the
+":browse" command.  See |file-explorer|.
+
+==============================================================================
+*31.2*	Confirmation
+
+Vim protects you from accidentally overwriting a file and other ways to lose
+changes.  If you do something that might be a bad thing to do, Vim produces an
+error message and suggests appending ! if you really want to do it.
+   To avoid retyping the command with the !, you can make Vim give you a
+dialog.  You can then press "OK" or "Cancel" to tell Vim what you want.
+   For example, you are editing a file and made changes to it.  You start
+editing another file with: >
+
+	:confirm edit foo.txt
+
+Vim will pop up a dialog that looks something like this:
+
+	+-----------------------------------+
+	|				    |
+	|   ?	Save changes to "bar.txt"?  |
+	|				    |
+	|   YES   NO		 CANCEL     |
+	+-----------------------------------+
+
+Now make your choice.  If you do want to save the changes, select "YES".  If
+you want to lose the changes for ever: "NO".  If you forgot what you were
+doing and want to check what really changed use "CANCEL".  You will be back in
+the same file, with the changes still there.
+
+Just like ":browse", the ":confirm" command can be prepended to most commands
+that edit another file.  They can also be combined: >
+
+	:confirm browse edit
+
+This will produce a dialog when the current buffer was changed.  Then it will
+pop up a file browser to select the file to edit.
+
+	Note:
+	In the dialog you can use the keyboard to select the choice.
+	Typically the <Tab> key and the cursor keys change the choice.
+	Pressing <Enter> selects the choice.  This depends on the system
+	though.
+
+When you are not using the GUI, the ":confirm" command works as well.  Instead
+of popping up a dialog, Vim will print the message at the bottom of the Vim
+window and ask you to press a key to make a choice. >
+
+	:confirm edit main.c
+<	Save changes to "Untitled"? ~
+	[Y]es, (N)o, (C)ancel:  ~
+
+You can now press the single key for the choice.  You don't have to press
+<Enter>, unlike other typing on the command line.
+
+==============================================================================
+*31.3*	Menu shortcuts
+
+The keyboard is used for all Vim commands.  The menus provide a simple way to
+select commands, without knowing what they are called.  But you have to move
+your hand from the keyboard and grab the mouse.
+   Menus can often be selected with keys as well.  This depends on your
+system, but most often it works this way.  Use the <Alt> key in combination
+with the underlined letter of a menu.  For example, <A-w> (<Alt> and w) pops
+up the Window menu.
+   In the Window menu, the "split" item has the p underlined.  To select it,
+let go of the <Alt> key and press p.
+
+After the first selection of a menu with the <Alt> key, you can use the cursor
+keys to move through the menus.  <Right> selects a submenu and <left> closes
+it.  <Esc> also closes a menu.  <Enter> selects a menu item.
+
+There is a conflict between using the <Alt> key to select menu items, and
+using <Alt> key combinations for mappings.  The 'winaltkeys' option tells Vim
+what it should do with the <Alt> key.
+   The default value "menu" is the smart choice: If the key combination is a
+menu shortcut it can't be mapped.  All other keys are available for mapping.
+   The value "no" doesn't use any <Alt> keys for the menus.  Thus you must use
+the mouse for the menus, and all <Alt> keys can be mapped.
+   The value "yes" means that Vim will use any <Alt> keys for the menus.  Some
+<Alt> key combinations may also do other things than selecting a menu.
+
+==============================================================================
+*31.4*	Vim window position and size
+
+To see the current Vim window position on the screen use: >
+
+	:winpos
+
+This will only work in the GUI.  The output may look like this:
+
+	Window position: X 272, Y 103 ~
+
+The position is given in screen pixels.  Now you can use the numbers to move
+Vim somewhere else.  For example, to move it to the left a hundred pixels: >
+
+	:winpos 172 103
+<
+	Note:
+	There may be a small offset between the reported position and where
+	the window moves.  This is because of the border around the window.
+	This is added by the window manager.
+
+You can use this command in your startup script to position the window at a
+specific position.
+
+The size of the Vim window is computed in characters.  Thus this depends on
+the size of the font being used.  You can see the current size with this
+command: >
+
+	:set lines columns
+
+To change the size set the 'lines' and/or 'columns' options to a new value: >
+
+	:set lines=50
+	:set columns=80
+
+Obtaining the size works in a terminal just like in the GUI.  Setting the size
+is not possible in most terminals.
+
+You can start the X-Windows version of gvim with an argument to specify the
+size and position of the window: >
+
+	gvim -geometry {width}x{height}+{x_offset}+{y_offset}
+
+{width} and {height} are in characters, {x_offset} and {y_offset} are in
+pixels.  Example: >
+
+	gvim -geometry 80x25+100+300
+
+==============================================================================
+*31.5*	Various
+
+You can use gvim to edit an e-mail message.  In your e-mail program you must
+select gvim to be the editor for messages.  When you try that, you will
+see that it doesn't work: The mail program thinks that editing is finished,
+while gvim is still running!
+   What happens is that gvim disconnects from the shell it was started in.
+That is fine when you start gvim in a terminal, so that you can do other work
+in that terminal.  But when you really want to wait for gvim to finish, you
+must prevent it from disconnecting.  The "-f" argument does this: >
+
+	gvim -f file.txt
+
+The "-f" stands for foreground.  Now Vim will block the shell it was started
+in until you finish editing and exit.
+
+
+DELAYED START OF THE GUI
+
+On Unix it's possible to first start Vim in a terminal.  That's useful if you
+do various tasks in the same shell.  If you are editing a file and decide you
+want to use the GUI after all, you can start it with: >
+
+	:gui
+
+Vim will open the GUI window and no longer use the terminal.  You can continue
+using the terminal for something else.  The "-f" argument is used here to run
+the GUI in the foreground.  You can also use ":gui -f".
+
+
+THE GVIM STARTUP FILE
+
+When gvim starts, it reads the gvimrc file.  That's similar to the vimrc file
+used when starting Vim.  The gvimrc file can be used for settings and commands
+that are only to be used when the GUI is going to be started.  For example,
+you can set the 'lines' option to set a different window size: >
+
+	:set lines=55
+
+You don't want to do this in a terminal, since it's size is fixed (except for
+an xterm that supports resizing).
+   The gvimrc file is searched for in the same locations as the vimrc file.
+Normally it's name is "~/.gvimrc" for Unix and "$VIM/_gvimrc" for MS-Windows.
+   If for some reason you don't want to use the normal gvimrc file, you can
+specify another one with the "-U" argument: >
+
+	gvim -U thisrc ...
+
+That allows starting gvim for different kinds of editing.  You could set
+another font size, for example.
+   To completely skip reading a gvimrc file: >
+
+	gvim -U NONE ...
+
+==============================================================================
+
+Next chapter: |usr_40.txt|  Make new commands
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_40.txt b/runtime/doc/usr_40.txt
new file mode 100644
index 0000000..9066416
--- /dev/null
+++ b/runtime/doc/usr_40.txt
@@ -0,0 +1,655 @@
+*usr_40.txt*	For Vim version 7.0aa.  Last change: 2004 Feb 13
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			      Make new commands
+
+
+Vim is an extensible editor.  You can take a sequence of commands you use
+often and turn it into a new command.  Or redefine an existing command.
+Autocommands make it possible to execute commands automatically.
+
+|40.1|	Key mapping
+|40.2|	Defining command-line commands
+|40.3|	Autocommands
+
+     Next chapter: |usr_41.txt|  Write a Vim script
+ Previous chapter: |usr_31.txt|  Exploiting the GUI
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*40.1*	Key mapping
+
+A simple mapping was explained in section |05.3|.  The principle is that one
+sequence of key strokes is translated into another sequence of key strokes.
+This is a simple, yet powerful mechanism.
+   The simplest form is that one key is mapped to a sequence of keys.  Since
+the function keys, except <F1>, have no predefined meaning in Vim, these are a
+good choice to map.  Example: >
+
+	:map <F2> GoDate: <Esc>:read !date<CR>kJ
+
+This shows how three modes are used.  After going to the last line with "G",
+the "o" command opens a new line and starts Insert mode.  The text "Date: " is
+inserted and <Esc> takes you out of insert mode.
+   Notice the use of special keys inside <>.  This is called angle bracket
+notation.  You type these as separate characters, not by pressing the key
+itself.  This makes the mappings better readable and you can copy and paste
+the text without problems.
+   The ":" character takes Vim to the command line.  The ":read !date" command
+reads the output from the "date" command and appends it below the current
+line.  The <CR> is required to execute the ":read" command.
+   At this point of execution the text looks like this:
+
+	Date:  ~
+	Fri Jun 15 12:54:34 CEST 2001 ~
+
+Now "kJ" moves the cursor up and joins the lines together.
+   To decide which key or keys you use for mapping, see |map-which-keys|.
+
+
+MAPPING AND MODES
+
+The ":map" command defines remapping for keys in Normal mode.  You can also
+define mappings for other modes.  For example, ":imap" applies to Insert mode.
+You can use it to insert a date below the cursor: >
+
+	:imap <F2> <CR>Date: <Esc>:read !date<CR>kJ
+
+It looks a lot like the mapping for <F2> in Normal mode, only the start is
+different.  The <F2> mapping for Normal mode is still there.  Thus you can map
+the same key differently for each mode.
+   Notice that, although this mapping starts in Insert mode, it ends in Normal
+mode.  If you want it to continue in Insert mode, append a "a" to the mapping.
+
+Here is an overview of map commands and in which mode they work:
+
+	:map		Normal, Visual and Operator-pending
+	:vmap		Visual
+	:nmap		Normal
+	:omap		Operator-pending
+	:map!		Insert and Command-line
+	:imap		Insert
+	:cmap		Command-line
+
+Operator-pending mode is when you typed an operator character, such as "d" or
+"y", and you are expected to type the motion command or a text object.  Thus
+when you type "dw", the "w" is entered in operator-pending mode.
+
+Suppose that you want to define <F7> so that the command d<F7> deletes a C
+program block (text enclosed in curly braces, {}).  Similarly y<F7> would yank
+the program block into the unnamed register.  Therefore, what you need to do
+is to define <F7> to select the current program block.  You can do this with
+the following command: >
+
+	:omap <F7> a{
+
+This causes <F7> to perform a select block "a{" in operator-pending mode, just
+like you typed it.  This mapping is useful if typing a { on your keyboard is a
+bit difficult.
+
+
+LISTING MAPPINGS
+
+To see the currently defined mappings, use ":map" without arguments.  Or one
+of the variants that include the mode in which they work.  The output could
+look like this:
+
+	   _g		 :call MyGrep(1)<CR> ~
+	v  <F2>		 :s/^/> /<CR>:noh<CR>`` ~
+	n  <F2>		 :.,$s/^/> /<CR>:noh<CR>`` ~
+	   <xHome>	 <Home>
+	   <xEnd>	 <End>
+
+
+The first column of the list shows in which mode the mapping is effective.
+This is "n" for Normal mode, "i" for Insert mode, etc.  A blank is used for a
+mapping defined with ":map", thus effective in both Normal and Visual mode.
+   One useful purpose of listing the mapping is to check if special keys in <>
+form have been recognized (this only works when color is supported).  For
+example, when <Esc> is displayed in color, it stands for the escape character.
+When it has the same color as the other text, it is five characters.
+
+
+REMAPPING
+
+The result of a mapping is inspected for other mappings in it.  For example,
+the mappings for <F2> above could be shortened to: >
+
+	:map <F2> G<F3>
+	:imap <F2> <Esc><F3>
+	:map <F3>  oDate: <Esc>:read !date<CR>kJ
+
+For Normal mode <F2> is mapped to go to the last line, and then behave like
+<F3> was pressed.  In Insert mode <F2> stops Insert mode with <Esc> and then
+also uses <F3>.  Then <F3> is mapped to do the actual work.
+
+Suppose you hardly ever use Ex mode, and want to use the "Q" command to format
+text (this was so in old versions of Vim).  This mapping will do it: >
+
+	:map Q gq
+
+But, in rare cases you need to use Ex mode anyway.  Let's map "gQ" to Q, so
+that you can still go to Ex mode: >
+
+	:map gQ Q
+
+What happens now is that when you type "gQ" it is mapped to "Q".  So far so
+good.  But then "Q" is mapped to "gq", thus typing "gQ" results in "gq", and
+you don't get to Ex mode at all.
+   To avoid keys to be mapped again, use the ":noremap" command: >
+
+	:noremap gQ Q
+
+Now Vim knows that the "Q" is not to be inspected for mappings that apply to
+it.  There is a similar command for every mode:
+
+	:noremap	Normal, Visual and Operator-pending
+	:vnoremap	Visual
+	:nnoremap	Normal
+	:onoremap	Operator-pending
+	:noremap!	Insert and Command-line
+	:inoremap	Insert
+	:cnoremap	Command-line
+
+
+RECURSIVE MAPPING
+
+When a mapping triggers itself, it will run forever.  This can be used to
+repeat an action an unlimited number of times.
+   For example, you have a list of files that contain a version number in the
+first line.  You edit these files with "vim *.txt".  You are now editing the
+first file.  Define this mapping: >
+
+	:map ,, :s/5.1/5.2/<CR>:wnext<CR>,,
+
+Now you type ",,".  This triggers the mapping.  It replaces "5.1" with "5.2"
+in the first line.  Then it does a ":wnext" to write the file and edit the
+next one.  The mapping ends in ",,".  This triggers the same mapping again,
+thus doing the substitution, etc.
+   This continues until there is an error.  In this case it could be a file
+where the substitute command doesn't find a match for "5.1".  You can then
+make a change to insert "5.1" and continue by typing ",," again.  Or the
+":wnext" fails, because you are in the last file in the list.
+   When a mapping runs into an error halfway, the rest of the mapping is
+discarded.  CTRL-C interrupts the mapping (CTRL-Break on MS-Windows).
+
+
+DELETE A MAPPING
+
+To remove a mapping use the ":unmap" command.  Again, the mode the unmapping
+applies to depends on the command used:
+
+	:unmap		Normal, Visual and Operator-pending
+	:vunmap		Visual
+	:nunmap		Normal
+	:ounmap		Operator-pending
+	:unmap!		Insert and Command-line
+	:iunmap		Insert
+	:cunmap		Command-line
+
+There is a trick to define a mapping that works in Normal and Operator-pending
+mode, but not in Visual mode.  First define it for all three modes, then
+delete it for Visual mode: >
+
+	:map <C-A> /---><CR>
+	:vunmap <C-A>
+
+Notice that the five characters "<C-A>" stand for the single key CTRL-A.
+
+To remove all mappings use the |:mapclear| command.  You can guess the
+variations for different modes by now.  Be careful with this command, it can't
+be undone.
+
+
+SPECIAL CHARACTERS
+
+The ":map" command can be followed by another command.  A | character
+separates the two commands.  This also means that a | character can't be used
+inside a map command.  To include one, use <Bar> (five characters).  Example:
+>
+	:map <F8> :write <Bar> !checkin %<CR>
+
+The same problem applies to the ":unmap" command, with the addition that you
+have to watch out for trailing white space.  These two commands are different:
+>
+	:unmap a | unmap b
+	:unmap a| unmap b
+
+The first command tries to unmap "a ", with a trailing space.
+
+When using a space inside a mapping, use <Space> (seven characters): >
+
+	:map <Space> W
+
+This makes the spacebar move a blank-separated word forward.
+
+It is not possible to put a comment directly after a mapping, because the "
+character is considered to be part of the mapping.  You can use |", this
+starts a new, empty command with a comment.  Example: >
+
+	:map <Space> W|     " Use spacebar to move forward a word
+
+
+MAPPINGS AND ABBREVIATIONS
+
+Abbreviations are a lot like Insert mode mappings.  The arguments are handled
+in the same way.  The main difference is the way they are triggered.  An
+abbreviation is triggered by typing a non-word character after the word.  A
+mapping is triggered when typing the last character.
+   Another difference is that the characters you type for an abbreviation are
+inserted in the text while you type them.  When the abbreviation is triggered
+these characters are deleted and replaced by what the abbreviation produces.
+When typing the characters for a mapping, nothing is inserted until you type
+the last character that triggers it.  If the 'showcmd' option is set, the
+typed characters are displayed in the last line of the Vim window.
+   An exception is when a mapping is ambiguous.  Suppose you have done two
+mappings: >
+
+	:imap aa foo
+	:imap aaa bar
+
+Now, when you type "aa", Vim doesn't know if it should apply the first or the
+second mapping.  It waits for another character to be typed.  If it is an "a",
+the second mapping is applied and results in "bar".  If it is a space, for
+example, the first mapping is applied, resulting in "foo", and then the space
+is inserted.
+
+
+ADDITIONALLY...
+
+The <script> keyword can be used to make a mapping local to a script.  See
+|:map-<script>|.
+
+The <buffer> keyword can be used to make a mapping local to a specific buffer.
+See |:map-<buffer>|
+
+The <unique> keyword can be used to make defining a new mapping fail when it
+already exists.  Otherwise a new mapping simply overwrites the old one.  See
+|:map-<unique>|.
+
+To make a key do nothing, map it to <Nop> (five characters).  This will make
+the <F7> key do nothing at all: >
+
+	:map <F7> <Nop>| map! <F7> <Nop>
+
+There must be no space after <Nop>.
+
+==============================================================================
+*40.2*	Defining command-line commands
+
+The Vim editor enables you to define your own commands.  You execute these
+commands just like any other Command-line mode command.
+   To define a command, use the ":command" command, as follows: >
+
+	:command DeleteFirst 1delete
+
+Now when you execute the command ":DeleteFirst" Vim executes ":1delete", which
+deletes the first line.
+
+	Note:
+	User-defined commands must start with a capital letter.  You cannot
+	use ":X", ":Next" and ":Print".  The underscore cannot be used!  You
+	can use digits, but this is discouraged.
+
+To list the user-defined commands, execute the following command: >
+
+	:command
+
+Just like with the builtin commands, the user defined commands can be
+abbreviated.  You need to type just enough to distinguish the command from
+another.  Command line completion can be used to get the full name.
+
+
+NUMBER OF ARGUMENTS
+
+User-defined commands can take a series of arguments.  The number of arguments
+must be specified by the -nargs option.  For instance, the example
+:DeleteFirst command takes no arguments, so you could have defined it as
+follows: >
+
+	:command -nargs=0 DeleteFirst 1delete
+
+However, because zero arguments is the default, you do not need to add
+"-nargs=0".  The other values of -nargs are as follows:
+
+	-nargs=0	No arguments
+	-nargs=1	One argument
+	-nargs=*	Any number of arguments
+	-nargs=?	Zero or one argument
+	-nargs=+	One or more arguments
+
+
+USING THE ARGUMENTS
+
+Inside the command definition, the arguments are represented by the
+<args> keyword.  For example: >
+
+	:command -nargs=+ Say :echo "<args>"
+
+Now when you type >
+
+	:Say Hello World
+
+Vim echoes "Hello World".  However, if you add a double quote, it won't work.
+For example: >
+
+	:Say he said "hello"
+
+To get special characters turned into a string, properly escaped to use as an
+expression, use "<q-args>": >
+
+	:command -nargs=+ Say :echo <q-args>
+
+Now the above ":Say" command will result in this to be executed: >
+
+	:echo "he said \"hello\""
+
+The <f-args> keyword contains the same information as the <args> keyword,
+except in a format suitable for use as function call arguments.  For example:
+>
+	:command -nargs=* DoIt :call AFunction(<f-args>)
+	:DoIt a b c
+
+Executes the following command: >
+
+	:call AFunction("a", "b", "c")
+
+
+LINE RANGE
+
+Some commands take a range as their argument.  To tell Vim that you are
+defining such a command, you need to specify a -range option.  The values for
+this option are as follows:
+
+	-range		Range is allowed; default is the current line.
+	-range=%	Range is allowed; default is the whole file.
+	-range={count}	Range is allowed; the last number in it is used as a
+			single number whose default is {count}.
+
+When a range is specified, the keywords <line1> and <line2> get the values of
+the first and last line in the range.  For example, the following command
+defines the SaveIt command, which writes out the specified range to the file
+"save_file": >
+
+	:command -range=% SaveIt :<line1>,<line2>write! save_file
+
+
+OTHER OPTIONS
+
+Some of the other options and keywords are as follows:
+
+	-count={number}		The command can take a count whose default is
+				{number}.  The resulting count can be used
+				through the <count> keyword.
+	-bang			You can use a !. If present, using <bang> will
+				result in a !.
+	-register		You can specify a register. (The default is
+				the unnamed register.)
+				The register specification is available as
+				<reg> (a.k.a. <register>).
+	-complete={type}	Type of command-line completion used.  See
+				|:command-completion| for the list of possible
+				values.
+	-bar			The command can be followed by | and another
+				command, or " and a comment.
+	-buffer			The command is only available for the current
+				buffer.
+
+Finally, you have the <lt> keyword.  It stands for the character <.  Use this
+to escape the special meaning of the <> items mentioned.
+
+
+REDEFINING AND DELETING
+
+To redefine the same command use the ! argument: >
+
+	:command -nargs=+ Say :echo "<args>"
+	:command! -nargs=+ Say :echo <q-args>
+
+To delete a user command use ":delcommand".  It takes a single argument, which
+is the name of the command.  Example: >
+
+	:delcommand SaveIt
+
+To delete all the user commands: >
+
+	:comclear
+
+Careful, this can't be undone!
+
+More details about all this in the reference manual: |user-commands|.
+
+==============================================================================
+*40.3*	Autocommands
+
+An autocommand is a command that is executed automatically in response to some
+event, such as a file being read or written or a buffer change. Through the
+use of autocommands you can train Vim to edit compressed files, for example.
+That is used in the |gzip| plugin.
+   Autocommands are very powerful.  Use them with care and they will help you
+avoid typing many commands.  Use them carelessly and they will cause a lot of
+trouble.
+
+Suppose you want to replace a date stamp on the end of a file every time it is
+written.  First you define a function: >
+
+	:function DateInsert()
+	:  $delete
+	:  read !date
+	:endfunction
+
+You want this function to be called each time, just before a file is written.
+This will make that happen: >
+
+	:autocmd FileWritePre *  call DateInsert()
+
+"FileWritePre" is the event for which this autocommand is triggered: Just
+before (pre) writing a file.  The "*" is a pattern to match with the file
+name.  In this case it matches all files.
+   With this command enabled, when you do a ":write", Vim checks for any
+matching FileWritePre autocommands and executes them, and then it
+performs the ":write".
+   The general form of the :autocmd command is as follows: >
+
+	:autocmd [group] {events} {file_pattern} [nested] {command}
+
+The [group] name is optional.  It is used in managing and calling the commands
+(more on this later).  The {events} parameter is a list of events (comma
+separated) that trigger the command.
+   {file_pattern} is a filename, usually with wildcards.  For example, using
+"*.txt" makes the autocommand be used for all files whose name end in ".txt".
+The optional [nested] flag allows for nesting of autocommands (see below), and
+finally, {command} is the command to be executed.
+
+
+EVENTS
+
+One of the most useful events is BufReadPost.  It is triggered after a new
+file is being edited.  It is commonly used to set option values.  For example,
+you know that "*.gsm" files are GNU assembly language.  To get the syntax file
+right, define this autocommand: >
+
+	:autocmd BufReadPost *.gsm  set filetype=asm
+
+If Vim is able to detect the type of file, it will set the 'filetype' option
+for you.  This triggers the Filetype event.  Use this to do something when a
+certain type of file is edited.  For example, to load a list of abbreviations
+for text files: >
+
+	:autocmd Filetype text  source ~/.vim/abbrevs.vim
+
+When starting to edit a new file, you could make Vim insert a skeleton: >
+
+	:autocmd BufNewFile *.[ch]  0read ~/skeletons/skel.c
+
+See |autocmd-events| for a complete list of events.
+
+
+PATTERNS
+
+The {file_pattern} argument can actually be a comma-separated list of file
+patterns.  For example: "*.c,*.h" matches files ending in ".c" and ".h".
+   The usual file wildcards can be used.  Here is a summary of the most often
+used ones:
+
+	*		Match any character any number of times
+	?		Match any character once
+	[abc]		Match the character a, b or c
+	.		Matches a dot
+	a{b,c}		Matches "ab" and "ac"
+
+When the pattern includes a slash (/) Vim will compare directory names.
+Without the slash only the last part of a file name is used.  For example,
+"*.txt" matches "/home/biep/readme.txt".  The pattern "/home/biep/*" would
+also match it.  But "home/foo/*.txt" wouldn't.
+   When including a slash, Vim matches the pattern against both the full path
+of the file ("/home/biep/readme.txt") and the relative path (e.g.,
+"biep/readme.txt").
+
+	Note:
+	When working on a system that uses a backslash as file separator, such
+	as MS-Windows, you still use forward slashes in autocommands.  This
+	makes it easier to write the pattern, since a backslash has a special
+	meaning.  It also makes the autocommands portable.
+
+
+DELETING
+
+To delete an autocommand, use the same command as what it was defined with,
+but leave out the {command} at the end and use a !.  Example: >
+
+	:autocmd! FileWritePre *
+
+This will delete all autocommands for the "FileWritePre" event that use the
+"*" pattern.
+
+
+LISTING
+
+To list all the currently defined autocommands, use this: >
+
+	:autocmd
+
+The list can be very long, especially when filetype detection is used.  To
+list only part of the commands, specify the group, event and/or pattern.  For
+example, to list all BufNewFile autocommands: >
+
+	:autocmd BufNewFile
+
+To list all autocommands for the pattern "*.c": >
+
+	:autocmd * *.c
+
+Using "*" for the event will list all the events.  To list all autocommands
+for the cprograms group: >
+
+	:autocmd cprograms
+
+
+GROUPS
+
+The {group} item, used when defining an autocommand, groups related autocommands
+together.  This can be used to delete all the autocommands in a certain group,
+for example.
+   When defining several autocommands for a certain group, use the ":augroup"
+command.  For example, let's define autocommands for C programs: >
+
+	:augroup cprograms
+	:  autocmd BufReadPost *.c,*.h :set sw=4 sts=4
+	:  autocmd BufReadPost *.cpp   :set sw=3 sts=3
+	:augroup END
+
+This will do the same as: >
+
+	:autocmd cprograms BufReadPost *.c,*.h :set sw=4 sts=4
+	:autocmd cprograms BufReadPost *.cpp   :set sw=3 sts=3
+
+To delete all autocommands in the "cprograms" group: >
+
+	:autocmd! cprograms
+
+
+NESTING
+
+Generally, commands executed as the result of an autocommand event will not
+trigger any new events.  If you read a file in response to a FileChangedShell
+event, it will not trigger the autocommands that would set the syntax, for
+example.  To make the events triggered, add the "nested" argument: >
+
+	:autocmd FileChangedShell * nested  edit
+
+
+EXECUTING AUTOCOMMANDS
+
+It is possible to trigger an autocommand by pretending an event has occurred.
+This is useful to have one autocommand trigger another one.  Example: >
+
+	:autocmd BufReadPost *.new  execute "doautocmd BufReadPost " . expand("<afile>:r")
+
+This defines an autocommand that is triggered when a new file has been edited.
+The file name must end in ".new".  The ":execute" command uses expression
+evaluation to form a new command and execute it.  When editing the file
+"tryout.c.new" the executed command will be: >
+
+	:doautocmd BufReadPost tryout.c
+
+The expand() function takes the "<afile>" argument, which stands for the file
+name the autocommand was executed for, and takes the root of the file name
+with ":r".
+
+":doautocmd" executes on the current buffer.  The ":doautoall" command works
+like "doautocmd" except it executes on all the buffers.
+
+
+USING NORMAL MODE COMMANDS
+
+The commands executed by an autocommand are Command-line command.  If you want
+to use a Normal mode command, the ":normal" command can be used.  Example: >
+
+	:autocmd BufReadPost *.log normal G
+
+This will make the cursor jump to the last line of *.log files when you start
+to edit it.
+   Using the ":normal" command is a bit tricky.  First of all, make sure its
+argument is a complete command, including all the arguments.  When you use "i"
+to go to Insert mode, there must also be a <Esc> to leave Insert mode again.
+If you use a "/" to start a search pattern, there must be a <CR> to execute
+it.
+   The ":normal" command uses all the text after it as commands.  Thus there
+can be no | and another command following.  To work around this, put the
+":normal" command inside an ":execute" command.  This also makes it possible
+to pass unprintable characters in a convenient way.  Example: >
+
+	:autocmd BufReadPost *.chg execute "normal ONew entry:\<Esc>" |
+		\ 1read !date
+
+This also shows the use of a backslash to break a long command into more
+lines.  This can be used in Vim scripts (not at the command line).
+
+When you want the autocommand do something complicated, which involves jumping
+around in the file and then returning to the original position, you may want
+to restore the view on the file.  See |restore-position| for an example.
+
+
+IGNORING EVENTS
+
+At times, you will not want to trigger an autocommand.  The 'eventignore'
+option contains a list of events that will be totally ignored.  For example,
+the following causes events for entering and leaving a window to be ignored: >
+
+	:set eventignore=WinEnter,WinLeave
+
+To ignore all events, use the following command: >
+
+	:set eventignore=all
+
+To set it back to the normal behavior, make 'eventignore' empty: >
+
+	:set eventignore=
+
+==============================================================================
+
+Next chapter: |usr_41.txt|  Write a Vim script
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
new file mode 100644
index 0000000..e0ea026
--- /dev/null
+++ b/runtime/doc/usr_41.txt
@@ -0,0 +1,1724 @@
+*usr_41.txt*	For Vim version 7.0aa.  Last change: 2004 May 06
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			      Write a Vim script
+
+
+The Vim script language is used for the startup vimrc file, syntax files, and
+many other things.  This chapter explains the items that can be used in a Vim
+script.  There are a lot of them, thus this is a long chapter.
+
+|41.1|	Introduction
+|41.2|	Variables
+|41.3|	Expressions
+|41.4|	Conditionals
+|41.5|	Executing an expression
+|41.6|	Using functions
+|41.7|	Defining a function
+|41.8|	Exceptions
+|41.9|	Various remarks
+|41.10|	Writing a plugin
+|41.11|	Writing a filetype plugin
+|41.12|	Writing a compiler plugin
+
+     Next chapter: |usr_42.txt|  Add new menus
+ Previous chapter: |usr_40.txt|  Make new commands
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*41.1*	Introduction					*vim-script-intro*
+
+Your first experience with Vim scripts is the vimrc file.  Vim reads it when
+it starts up and executes the commands.  You can set options to values you
+prefer.  And you can use any colon command in it (commands that start with a
+":"; these are sometimes referred to as Ex commands or command-line commands).
+   Syntax files are also Vim scripts.  As are files that set options for a
+specific file type.  A complicated macro can be defined by a separate Vim
+script file.  You can think of other uses yourself.
+
+Let's start with a simple example: >
+
+	:let i = 1
+	:while i < 5
+	:  echo "count is" i
+	:  let i = i + 1
+	:endwhile
+<
+	Note:
+	The ":" characters are not really needed here.  You only need to use
+	them when you type a command.  In a Vim script file they can be left
+	out.  We will use them here anyway to make clear these are colon
+	commands and make them stand out from Normal mode commands.
+
+The ":let" command assigns a value to a variable.  The generic form is: >
+
+	:let {variable} = {expression}
+
+In this case the variable name is "i" and the expression is a simple value,
+the number one.
+   The ":while" command starts a loop.  The generic form is: >
+
+	:while {condition}
+	:  {statements}
+	:endwhile
+
+The statements until the matching ":endwhile" are executed for as long as the
+condition is true.  The condition used here is the expression "i < 5".  This
+is true when the variable i is smaller than five.
+   The ":echo" command prints its arguments.  In this case the string "count
+is" and the value of the variable i.  Since i is one, this will print:
+
+	count is 1 ~
+
+Then there is another ":let i =" command.  The value used is the expression "i
++ 1".  This adds one to the variable i and assigns the new value to the same
+variable.
+   The output of the example code is:
+
+	count is 1 ~
+	count is 2 ~
+	count is 3 ~
+	count is 4 ~
+
+	Note:
+	If you happen to write a while loop that keeps on running, you can
+	interrupt it by pressing CTRL-C (CTRL-Break on MS-Windows).
+
+
+THREE KINDS OF NUMBERS
+
+Numbers can be decimal, hexadecimal or octal.  A hexadecimal number starts
+with "0x" or "0X".  For example "0x1f" is 31.  An octal number starts with a
+zero.  "017" is 15.  Careful: don't put a zero before a decimal number, it
+will be interpreted as an octal number!
+   The ":echo" command always prints decimal numbers.  Example: >
+
+	:echo 0x7f 036
+<	127 30 ~
+
+A number is made negative with a minus sign.  This also works for hexadecimal
+and octal numbers.   A minus sign is also for subtraction.  Compare this with
+the previous example: >
+
+	:echo 0x7f -036
+<	97 ~
+
+White space in an expression is ignored.  However, it's recommended to use it
+for separating items, to make the expression easier to read.  For example, to
+avoid the confusion with a negative number, put a space between the minus sign
+and the following number: >
+
+	:echo 0x7f - 036
+
+==============================================================================
+*41.2*	Variables
+
+A variable name consists of ASCII letters, digits and the underscore.  It
+cannot start with a digit.  Valid variable names are:
+
+	counter
+	_aap3
+	very_long_variable_name_with_underscores
+	FuncLength
+	LENGTH
+
+Invalid names are "foo+bar" and "6var".
+   These variables are global.  To see a list of currently defined variables
+use this command: >
+
+	:let
+
+You can use global variables everywhere.  This also means that when the
+variable "count" is used in one script file, it might also be used in another
+file.  This leads to confusion at least, and real problems at worst.  To avoid
+this, you can use a variable local to a script file by prepending "s:".  For
+example, one script contains this code: >
+
+	:let s:count = 1
+	:while s:count < 5
+	:  source other.vim
+	:  let s:count = s:count + 1
+	:endwhile
+
+Since "s:count" is local to this script, you can be sure that sourcing the
+"other.vim" script will not change this variable.  If "other.vim" also uses an
+"s:count" variable, it will be a different copy, local to that script.  More
+about script-local variables here: |script-variable|.
+
+There are more kinds of variables, see |internal-variables|.  The most often
+used ones are:
+
+	b:name		variable local to a buffer
+	w:name		variable local to a window
+	g:name		global variable (also in a function)
+	v:name		variable predefined by Vim
+
+
+DELETING VARIABLES
+
+Variables take up memory and show up in the output of the ":let" command.  To
+delete a variable use the ":unlet" command.  Example: >
+
+	:unlet s:count
+
+This deletes the script-local variable "s:count" to free up the memory it
+uses.  If you are not sure if the variable exists, and don't want an error
+message when it doesn't, append !: >
+
+	:unlet! s:count
+
+When a script finishes, the local variables used there will not be
+automatically freed.  The next time the script executes, it can still use the
+old value.  Example: >
+
+	:if !exists("s:call_count")
+	:  let s:call_count = 0
+	:endif
+	:let s:call_count = s:call_count + 1
+	:echo "called" s:call_count "times"
+
+The "exists()" function checks if a variable has already been defined.  Its
+argument is the name of the variable you want to check.  Not the variable
+itself!  If you would do this: >
+
+	:if !exists(s:call_count)
+
+Then the value of s:call_count will be used as the name of the variable that
+exists() checks.  That's not what you want.
+   The exclamation mark ! negates a value.  When the value was true, it
+becomes false.  When it was false, it becomes true.  You can read it as "not".
+Thus "if !exists()" can be read as "if not exists()".
+   What Vim calls true is anything that is not zero.  Only zero is false.
+
+
+STRING VARIABLES AND CONSTANTS
+
+So far only numbers were used for the variable value.  Strings can be used as
+well.  Numbers and strings are the only two types of variables that Vim
+supports.  The type is dynamic, it is set each time when assigning a value to
+the variable with ":let".
+   To assign a string value to a variable, you need to use a string constant.
+There are two types of these.  First the string in double quotes: >
+
+	:let name = "peter"
+	:echo name
+<	peter ~
+
+If you want to include a double quote inside the string, put a backslash in
+front of it: >
+
+	:let name = "\"peter\""
+	:echo name
+<	"peter" ~
+
+To avoid the need for a backslash, you can use a string in single quotes: >
+
+	:let name = '"peter"'
+	:echo name
+<	"peter" ~
+
+Inside a single-quote string all the characters are taken literally.  The
+drawback is that it's impossible to include a single quote.  A backslash is
+taken literally as well, thus you can't use it to change the meaning of the
+character after it.
+   In double-quote strings it is possible to use special characters.  Here are
+a few useful ones:
+
+	\t		<Tab>
+	\n		<NL>, line break
+	\r		<CR>, <Enter>
+	\e		<Esc>
+	\b		<BS>, backspace
+	\"		"
+	\\		\, backslash
+	\<Esc>		<Esc>
+	\<C-W>		CTRL-W
+
+The last two are just examples.  The  "\<name>" form can be used to include
+the special key "name".
+   See |expr-quote| for the full list of special items in a string.
+
+==============================================================================
+*41.3*	Expressions
+
+Vim has a rich, yet simple way to handle expressions.  You can read the
+definition here: |expression-syntax|.  Here we will show the most common
+items.
+   The numbers, strings and variables mentioned above are expressions by
+themselves.  Thus everywhere an expression is expected, you can use a number,
+string or variable.  Other basic items in an expression are:
+
+	$NAME		environment variable
+	&name		option
+	@r		register
+
+Examples: >
+
+	:echo "The value of 'tabstop' is" &ts
+	:echo "Your home directory is" $HOME
+	:if @a > 5
+
+The &name form can be used to save an option value, set it to a new value,
+do something and restore the old value.  Example: >
+
+	:let save_ic = &ic
+	:set noic
+	:/The Start/,$delete
+	:let &ic = save_ic
+
+This makes sure the "The Start" pattern is used with the 'ignorecase' option
+off.  Still, it keeps the value that the user had set.
+
+
+MATHEMATICS
+
+It becomes more interesting if we combine these basic items.  Let's start with
+mathematics on numbers:
+
+	a + b		add
+	a - b		subtract
+	a * b		multiply
+	a / b		divide
+	a % b		modulo
+
+The usual precedence is used.  Example: >
+
+	:echo 10 + 5 * 2
+<	20 ~
+
+Grouping is done with braces.  No surprises here.  Example: >
+
+	:echo (10 + 5) * 2
+<	30 ~
+
+Strings can be concatenated with ".".  Example: >
+
+	:echo "foo" . "bar"
+<	foobar ~
+
+When the ":echo" command gets multiple arguments, it separates them with a
+space.  In the example the argument is a single expression, thus no space is
+inserted.
+
+Borrowed from the C language is the conditional expression:
+
+	a ? b : c
+
+If "a" evaluates to true "b" is used, otherwise "c" is used.  Example: >
+
+	:let i = 4
+	:echo i > 5 ? "i is big" : "i is small"
+<	i is small ~
+
+The three parts of the constructs are always evaluated first, thus you could
+see it work as:
+
+	(a) ? (b) : (c)
+
+==============================================================================
+*41.4*	Conditionals
+
+The ":if" commands executes the following statements, until the matching
+":endif", only when a condition is met.  The generic form is:
+
+	:if {condition}
+	   {statements}
+	:endif
+
+Only when the expression {condition} evaluates to true (non-zero) will the
+{statements} be executed.  These must still be valid commands.  If they
+contain garbage, Vim won't be able to find the ":endif".
+   You can also use ":else".  The generic form for this is:
+
+	:if {condition}
+	   {statements}
+	:else
+	   {statements}
+	:endif
+
+The second {statements} is only executed if the first one isn't.
+   Finally, there is ":elseif":
+
+	:if {condition}
+	   {statements}
+	:elseif {condition}
+	   {statements}
+	:endif
+
+This works just like using ":else" and then "if", but without the need for an
+extra ":endif".
+   A useful example for your vimrc file is checking the 'term' option and
+doing something depending upon its value: >
+
+	:if &term == "xterm"
+	:  " Do stuff for xterm
+	:elseif &term == "vt100"
+	:  " Do stuff for a vt100 terminal
+	:else
+	:  " Do something for other terminals
+	:endif
+
+
+LOGIC OPERATIONS
+
+We already used some of them in the examples.  These are the most often used
+ones:
+
+	a == b		equal to
+	a != b		not equal to
+	a >  b		greater than
+	a >= b		greater than or equal to
+	a <  b		less than
+	a <= b		less than or equal to
+
+The result is one if the condition is met and zero otherwise.  An example: >
+
+	:if v:version >= 600
+	:  echo "congratulations"
+	:else
+	:  echo "you are using an old version, upgrade!"
+	:endif
+
+Here "v:version" is a variable defined by Vim, which has the value of the Vim
+version.  600 is for version 6.0.  Version 6.1 has the value 601.  This is
+very useful to write a script that works with multiple versions of Vim.
+|v:version|
+
+The logic operators work both for numbers and strings.  When comparing two
+strings, the mathematical difference is used.  This compares byte values,
+which may not be right for some languages.
+   When comparing a string with a number, the string is first converted to a
+number.  This is a bit tricky, because when a string doesn't look like a
+number, the number zero is used.  Example: >
+
+	:if 0 == "one"
+	:  echo "yes"
+	:endif
+
+This will echo "yes", because "one" doesn't look like a number, thus it is
+converted to the number zero.
+
+For strings there are two more items:
+
+	a =~ b		matches with
+	a !~ b		does not match with
+
+The left item "a" is used as a string.  The right item "b" is used as a
+pattern, like what's used for searching.  Example: >
+
+	:if str =~ " "
+	:  echo "str contains a space"
+	:endif
+	:if str !~ '\.$'
+	:  echo "str does not end in a full stop"
+	:endif
+
+Notice the use of a single-quote string for the pattern.  This is useful,
+because backslashes need to be doubled in a double-quote string and patterns
+tend to contain many backslashes.
+
+The 'ignorecase' option is used when comparing strings.  When you don't want
+that, append "#" to match case and "?" to ignore case.  Thus "==?" compares
+two strings to be equal while ignoring case.  And "!~#" checks if a pattern
+doesn't match, also checking the case of letters.  For the full table see
+|expr-==|.
+
+
+MORE LOOPING
+
+The ":while" command was already mentioned.  Two more statements can be used
+in between the ":while" and the ":endwhile":
+
+	:continue		Jump back to the start of the while loop; the
+				loop continues.
+	:break			Jump forward to the ":endwhile"; the loop is
+				discontinued.
+
+Example: >
+
+	:while counter < 40
+	:  call do_something()
+	:  if skip_flag
+	:    continue
+	:  endif
+	:  if finished_flag
+	:    break
+	:  endif
+	:  sleep 50m
+	:endwhile
+
+The ":sleep" command makes Vim take a nap.  The "50m" specifies fifty
+milliseconds.  Another example is ":sleep 4", which sleeps for four seconds.
+
+==============================================================================
+*41.5*	Executing an expression
+
+So far the commands in the script were executed by Vim directly.  The
+":execute" command allows executing the result of an expression.  This is a
+very powerful way to build commands and execute them.
+   An example is to jump to a tag, which is contained in a variable: >
+
+	:execute "tag " . tag_name
+
+The "." is used to concatenate the string "tag " with the value of variable
+"tag_name".  Suppose "tag_name" has the value "get_cmd", then the command that
+will be executed is: >
+
+	:tag get_cmd
+
+The ":execute" command can only execute colon commands.  The ":normal" command
+executes Normal mode commands.  However, its argument is not an expression but
+the literal command characters.  Example: >
+
+	:normal gg=G
+
+This jumps to the first line and formats all lines with the "=" operator.
+   To make ":normal" work with an expression, combine ":execute" with it.
+Example: >
+
+	:execute "normal " . normal_commands
+
+The variable "normal_commands" must contain the Normal mode commands.
+   Make sure that the argument for ":normal" is a complete command.  Otherwise
+Vim will run into the end of the argument and abort the command.  For example,
+if you start Insert mode, you must leave Insert mode as well.  This works: >
+
+	:execute "normal Inew text \<Esc>"
+
+This inserts "new text " in the current line.  Notice the use of the special
+key "\<Esc>".  This avoids having to enter a real <Esc> character in your
+script.
+
+==============================================================================
+*41.6*	Using functions
+
+Vim defines many functions and provides a large amount of functionality that
+way.  A few examples will be given in this section.  You can find the whole
+list here: |functions|.
+
+A function is called with the ":call" command.  The parameters are passed in
+between braces, separated by commas.  Example: >
+
+	:call search("Date: ", "W")
+
+This calls the search() function, with arguments "Date: " and "W".  The
+search() function uses its first argument as a search pattern and the second
+one as flags.  The "W" flag means the search doesn't wrap around the end of
+the file.
+
+A function can be called in an expression.  Example: >
+
+	:let line = getline(".")
+	:let repl = substitute(line, '\a', "*", "g")
+	:call setline(".", repl)
+
+The getline() function obtains a line from the current file.  Its argument is
+a specification of the line number.  In this case "." is used, which means the
+line where the cursor is.
+   The substitute() function does something similar to the ":substitute"
+command.  The first argument is the string on which to perform the
+substitution.  The second argument is the pattern, the third the replacement
+string.  Finally, the last arguments are the flags.
+   The setline() function sets the line, specified by the first argument, to a
+new string, the second argument.  In this example the line under the cursor is
+replaced with the result of the substitute().  Thus the effect of the three
+statements is equal to: >
+
+	:substitute/\a/*/g
+
+Using the functions becomes more interesting when you do more work before and
+after the substitute() call.
+
+
+FUNCTIONS						*function-list*
+
+There are many functions.  We will mention them here, grouped by what they are
+used for.  You can find an alphabetical list here: |functions|.  Use CTRL-] on
+the function name to jump to detailed help on it.
+
+String manipulation:
+	char2nr()		get ASCII value of a character
+	nr2char()		get a character by its ASCII value
+	escape()		escape characters in a string with a '\'
+	strtrans()		translate a string to make it printable
+	tolower()		turn a string to lowercase
+	toupper()		turn a string to uppercase
+	match()			position where a pattern matches in a string
+	matchend()		position where a pattern match ends in a string
+	matchstr()		match of a pattern in a string
+	stridx()		first index of a short string in a long string
+	strridx()		last index of a short string in a long string
+	strlen()		length of a string
+	substitute()		substitute a pattern match with a string
+	submatch()		get a specific match in a ":substitute"
+	strpart()		get part of a string
+	expand()		expand special keywords
+	type()			type of a variable
+	iconv()			convert text from one encoding to another
+
+Working with text in the current buffer:
+	byte2line()		get line number at a specific byte count
+	line2byte()		byte count at a specific line
+	col()			column number of the cursor or a mark
+	virtcol()		screen column of the cursor or a mark
+	line()			line number of the cursor or mark
+	wincol()		window column number of the cursor
+	winline()		window line number of the cursor
+	cursor()		position the cursor at a line/column
+	getline()		get a line from the buffer
+	setline()		replace a line in the buffer
+	append()		append {string} below line {lnum}
+	indent()		indent of a specific line
+	cindent()		indent according to C indenting
+	lispindent()		indent according to Lisp indenting
+	nextnonblank()		find next non-blank line
+	prevnonblank()		find previous non-blank line
+	search()		find a match for a pattern
+	searchpair()		find the other end of a start/skip/end
+
+System functions and manipulation of files:
+	browse()		put up a file requester
+	glob()			expand wildcards
+	globpath()		expand wildcards in a number of directories
+	resolve()		find out where a shortcut points to
+	fnamemodify()		modify a file name
+	executable()		check if an executable program exists
+	filereadable()		check if a file can be read
+	filewritable()		check if a file can be written to
+	isdirectory()		check if a directory exists
+	getcwd()		get the current working directory
+	getfsize()		get the size of a file
+	getftime()		get last modification time of a file
+	localtime()		get current time
+	strftime()		convert time to a string
+	tempname()		get the name of a temporary file
+	delete()		delete a file
+	rename()		rename a file
+	system()		get the result of a shell command
+	hostname()		name of the system
+
+Buffers, windows and the argument list:
+	argc()			number of entries in the argument list
+	argidx()		current position in the argument list
+	argv()			get one entry from the argument list
+	bufexists()		check if a buffer exists
+	buflisted()		check if a buffer exists and is listed
+	bufloaded()		check if a buffer exists and is loaded
+	bufname()		get the name of a specific buffer
+	bufnr()			get the buffer number of a specific buffer
+	winnr()			get the window number for the current window
+	bufwinnr()		get the window number of a specific buffer
+	winbufnr()		get the buffer number of a specific window
+	getbufvar()		get a variable value from a specific buffer
+	setbufvar()		set a variable in a specific buffer
+	getwinvar()		get a variable value from a specific window
+	setwinvar()		set a variable in a specific window
+
+Folding:
+	foldclosed()		check for a closed fold at a specific line
+	foldclosedend()		like foldclosed() but return the last line
+	foldlevel()		check for the fold level at a specific line
+	foldtext()		generate the line displayed for a closed fold
+
+Syntax highlighting:
+	hlexists()		check if a highlight group exists
+	hlID()			get ID of a highlight group
+	synID()			get syntax ID at a specific position
+	synIDattr()		get a specific attribute of a syntax ID
+	synIDtrans()		get translated syntax ID
+
+History:
+	histadd()		add an item to a history
+	histdel()		delete an item from a history
+	histget()		get an item from a history
+	histnr()		get highest index of a history list
+
+Interactive:
+	confirm()		let the user make a choice
+	getchar()		get a character from the user
+	getcharmod()		get modifiers for the last typed character
+	input()			get a line from the user
+	inputsecret()		get a line from the user without showing it
+	inputdialog()		get a line from the user in a dialog
+	inputresave		save and clear typeahead
+	inputrestore()		restore typeahead
+
+Vim server:
+	serverlist()		return the list of server names
+	remote_send()		send command characters to a Vim server
+	remote_expr()		evaluate an expression in a Vim server
+	server2client()		send a reply to a client of a Vim server
+	remote_peek()		check if there is a reply from a Vim server
+	remote_read()		read a reply from a Vim server
+	foreground()		move the Vim window to the foreground
+	remote_foreground()	move the Vim server window to the foreground
+
+Various:
+	mode()			get current editing mode
+	visualmode()		last visual mode used
+	hasmapto()		check if a mapping exists
+	mapcheck()		check if a matching mapping exists
+	maparg()		get rhs of a mapping
+	exists()		check if a variable, function, etc. exists
+	has()			check if a feature is supported in Vim
+	cscope_connection()	check if a cscope connection exists
+	did_filetype()		check if a FileType autocommand was used
+	eventhandler()		check if invoked by an event handler
+	getwinposx()		X position of the GUI Vim window
+	getwinposy()		Y position of the GUI Vim window
+	winheight()		get height of a specific window
+	winwidth()		get width of a specific window
+	libcall()		call a function in an external library
+	libcallnr()		idem, returning a number
+	getreg()		get contents of a register
+	getregtype()		get type of a register
+	setreg()		set contents and type of a register
+
+==============================================================================
+*41.7*	Defining a function
+
+Vim enables you to define your own functions.  The basic function declaration
+begins as follows: >
+
+	:function {name}({var1}, {var2}, ...)
+	:  {body}
+	:endfunction
+<
+	Note:
+	Function names must begin with a capital letter.
+
+Let's define a short function to return the smaller of two numbers.  It starts
+with this line: >
+
+	:function Min(num1, num2)
+
+This tells Vim that the function is named "Min" and it takes two arguments:
+"num1" and "num2".
+   The first thing you need to do is to check to see which number is smaller:
+   >
+	:  if a:num1 < a:num2
+
+The special prefix "a:" tells Vim that the variable is a function argument.
+Let's assign the variable "smaller" the value of the smallest number: >
+
+	:  if a:num1 < a:num2
+	:    let smaller = a:num1
+	:  else
+	:    let smaller = a:num2
+	:  endif
+
+The variable "smaller" is a local variable.  Variables used inside a function
+are local unless prefixed by something like "g:", "a:", or "s:".
+
+	Note:
+	To access a global variable from inside a function you must prepend
+	"g:" to it.  Thus "g:count" inside a function is used for the global
+	variable "count", and "count" is another variable, local to the
+	function.
+
+You now use the ":return" statement to return the smallest number to the user.
+Finally, you end the function: >
+
+	:  return smaller
+	:endfunction
+
+The complete function definition is as follows: >
+
+	:function Min(num1, num2)
+	:  if a:num1 < a:num2
+	:    let smaller = a:num1
+	:  else
+	:    let smaller = a:num2
+	:  endif
+	:  return smaller
+	:endfunction
+
+A user defined function is called in exactly the same way as a builtin
+function.  Only the name is different.  The Min function can be used like
+this: >
+
+	:echo Min(5, 8)
+
+Only now will the function be executed and the lines be interpreted by Vim.
+If there are mistakes, like using an undefined variable or function, you will
+now get an error message.  When defining the function these errors are not
+detected.
+
+When a function reaches ":endfunction" or ":return" is used without an
+argument, the function returns zero.
+
+To redefine a function that already exists, use the ! for the ":function"
+command: >
+
+	:function!  Min(num1, num2, num3)
+
+
+USING A RANGE
+
+The ":call" command can be given a line range.  This can have one of two
+meanings.  When a function has been defined with the "range" keyword, it will
+take care of the line range itself.
+  The function will be passed the variables "a:firstline" and "a:lastline".
+These will have the line numbers from the range the function was called with.
+Example: >
+
+	:function Count_words() range
+	:  let n = a:firstline
+	:  let count = 0
+	:  while n <= a:lastline
+	:    let count = count + Wordcount(getline(n))
+	:    let n = n + 1
+	:  endwhile
+	:  echo "found " . count . " words"
+	:endfunction
+
+You can call this function with: >
+
+	:10,30call Count_words()
+
+It will be executed once and echo the number of words.
+   The other way to use a line range is by defining a function without the
+"range" keyword.  The function will be called once for every line in the
+range, with the cursor in that line.  Example: >
+
+	:function  Number()
+	:  echo "line " . line(".") . " contains: " . getline(".")
+	:endfunction
+
+If you call this function with: >
+
+	:10,15call Number()
+
+The function will be called six times.
+
+
+VARIABLE NUMBER OF ARGUMENTS
+
+Vim enables you to define functions that have a variable number of arguments.
+The following command, for instance, defines a function that must have 1
+argument (start) and can have up to 20 additional arguments: >
+
+	:function Show(start, ...)
+
+The variable "a:1" contains the first optional argument, "a:2" the second, and
+so on.  The variable "a:0" contains the number of extra arguments.
+   For example: >
+
+	:function Show(start, ...)
+	:  echohl Title
+	:  echo "Show is " . a:start
+	:  echohl None
+	:  let index = 1
+	:  while index <= a:0
+	:    echo "  Arg " . index . " is " . a:{index}
+	:    let index = index + 1
+	:  endwhile
+	:  echo ""
+	:endfunction
+
+This uses the ":echohl" command to specify the highlighting used for the
+following ":echo" command.  ":echohl None" stops it again.  The ":echon"
+command works like ":echo", but doesn't output a line break.
+
+
+LISTING FUNCTIONS
+
+The ":function" command lists the names and arguments of all user-defined
+functions: >
+
+	:function
+<	function Show(start, ...) ~
+	function GetVimIndent() ~
+	function SetSyn(name) ~
+
+To see what a function does, use its name as an argument for ":function": >
+
+	:function SetSyn
+<	1     if &syntax == '' ~
+	2       let &syntax = a:name ~
+	3     endif ~
+	   endfunction ~
+
+
+DEBUGGING
+
+The line number is useful for when you get an error message or when debugging.
+See |debug-scripts| about debugging mode.
+   You can also set the 'verbose' option to 12 or higher to see all function
+calls.  Set it to 15 or higher to see every executed line.
+
+
+DELETING A FUNCTION
+
+To delete the Show() function: >
+
+	:delfunction Show
+
+You get an error when the function doesn't exist.
+
+==============================================================================
+*41.8*	Exceptions
+
+Let's start with an example: >
+
+	:try
+	:   read ~/templates/pascal.tmpl
+	:catch /E484:/
+	:   echo "Sorry, the Pascal template file cannot be found."
+	:endtry
+
+The ":read" command will fail if the file does not exist.  Instead of
+generating an error message, this code catches the error and gives the user a
+nice message instead.
+
+For the commands in between ":try" and ":endtry" errors are turned into
+exceptions.  An exception is a string.  In the case of an error the string
+contains the error message.  And every error message has a number.  In this
+case, the error we catch contains "E484:".  This number is guaranteed to stay
+the same (the text may change, e.g., it may be translated).
+
+When the ":read" command causes another error, the pattern "E484:" will not
+match in it.  Thus this exception will not be caught and result in the usual
+error message.
+
+You might be tempted to do this: >
+
+	:try
+	:   read ~/templates/pascal.tmpl
+	:catch
+	:   echo "Sorry, the Pascal template file cannot be found."
+	:endtry
+
+This means all errors are caught.  But then you will not see errors that are
+useful, such as "E21: Cannot make changes, 'modifiable' is off".
+
+Another useful mechanism is the ":finally" command: >
+
+	:let tmp = tempname()
+	:try
+	:   exe ".,$write " . tmp
+	:   exe "!filter " . tmp
+	:   .,$delete
+	:   exe "$read " . tmp
+	:finally
+	:   call delete(tmp)
+	:endtry
+
+This filters the lines from the cursor until the end of the file through the
+"filter" command, which takes a file name argument.  No matter if the
+filtering works, something goes wrong in between ":try" and ":finally" or the
+user cancels the filtering by pressing CTRL-C, the "call delete(tmp)" is
+always executed.  This makes sure you don't leave the temporary file behind.
+
+More information about exception handling can be found in the reference
+manual: |exception-handling|.
+
+==============================================================================
+*41.9*	Various remarks
+
+Here is a summary of items that apply to Vim scripts.  They are also mentioned
+elsewhere, but form a nice checklist.
+
+The end-of-line character depends on the system.  For Unix a single <NL>
+character is used.  For MS-DOS, Windows, OS/2 and the like, <CR><LF> is used.
+This is important when using mappings that end in a <CR>.  See |:source_crnl|.
+
+
+WHITE SPACE
+
+Blank lines are allowed and ignored.
+
+Leading whitespace characters (blanks and TABs) are always ignored.  The
+whitespaces between parameters (e.g. between the 'set' and the 'cpoptions' in
+the example below) are reduced to one blank character and plays the role of a
+separator, the whitespaces after the last (visible) character may or may not
+be ignored depending on the situation, see below.
+
+For a ":set" command involving the "=" (equal) sign, such as in: >
+
+	:set cpoptions    =aABceFst
+
+the whitespace immediately before the "=" sign is ignored.  But there can be
+no whitespace after the "=" sign!
+
+To include a whitespace character in the value of an option, it must be
+escaped by a "\" (backslash)  as in the following example: >
+
+	:set tags=my\ nice\ file
+
+The same example written as >
+
+	:set tags=my nice file
+
+will issue an error, because it is interpreted as: >
+
+	:set tags=my
+	:set nice
+	:set file
+
+
+COMMENTS
+
+The character " (the double quote mark) starts a comment.  Everything after
+and including this character until the end-of-line is considered a comment and
+is ignored, except for commands that don't consider comments, as shown in
+examples below.  A comment can start on any character position on the line.
+
+There is a little "catch" with comments for some commands.  Examples: >
+
+	:abbrev dev development		" shorthand
+	:map <F3> o#include		" insert include
+	:execute cmd			" do it
+	:!ls *.c			" list C files
+
+The abbreviation 'dev' will be expanded to 'development     " shorthand'.  The
+mapping of <F3> will actually be the whole line after the 'o# ....' including
+the '" insert include'.  The "execute" command will give an error.  The "!"
+command will send everything after it to the shell, causing an error for an
+unmatched '"' character.
+   There can be no comment after ":map", ":abbreviate", ":execute" and "!"
+commands (there are a few more commands with this restriction).  For the
+":map", ":abbreviate" and ":execute" commands there is a trick: >
+
+	:abbrev dev development|" shorthand
+	:map <F3> o#include|" insert include
+	:execute cmd			|" do it
+
+With the '|' character the command is separated from the next one.  And that
+next command is only a comment.
+
+Notice that there is no white space before the '|' in the abbreviation and
+mapping.  For these commands, any character until the end-of-line or '|' is
+included.  As a consequence of this behavior, you don't always see that
+trailing whitespace is included: >
+
+	:map <F4> o#include  
+
+To avoid these problems, you can set the 'list' option when editing vimrc
+files.
+
+
+PITFALLS
+
+Even bigger problem arises in the following example: >
+
+	:map ,ab o#include
+	:unmap ,ab 
+
+Here the unmap command will not work, because it tries to unmap ",ab ".  This
+does not exist as a mapped sequence.  An error will be issued, which is very
+hard to identify, because the ending whitespace character in ":unmap ,ab " is
+not visible.
+
+And this is the same as what happens when one uses a comment after an 'unmap'
+command: >
+
+	:unmap ,ab     " comment
+
+Here the comment part will be ignored.  However, Vim will try to unmap
+',ab     ', which does not exist.  Rewrite it as: >
+
+	:unmap ,ab|    " comment
+
+
+RESTORING THE VIEW
+
+Sometimes you want to make a change and go back to where cursor was.
+Restoring the relative position would also be nice, so that the same line
+appears at the top of the window.
+   This example yanks the current line, puts it above the first line in the
+file and then restores the view: >
+
+	map ,p ma"aYHmbgg"aP`bzt`a
+
+What this does: >
+	ma"aYHmbgg"aP`bzt`a
+<	ma			set mark a at cursor position
+	  "aY			yank current line into register a
+	     Hmb		go to top line in window and set mark b there
+		gg		go to first line in file
+		  "aP		put the yanked line above it
+		     `b		go back to top line in display
+		       zt	position the text in the window as before
+			 `a	go back to saved cursor position
+
+
+PACKAGING
+
+To avoid your function names to interfere with functions that you get from
+others, use this scheme:
+- Prepend a unique string before each function name.  I often use an
+  abbreviation.  For example, "OW_" is used for the option window functions.
+- Put the definition of your functions together in a file.  Set a global
+  variable to indicate that the functions have been loaded.  When sourcing the
+  file again, first unload the functions.
+Example: >
+
+	" This is the XXX package
+
+	if exists("XXX_loaded")
+	  delfun XXX_one
+	  delfun XXX_two
+	endif
+
+	function XXX_one(a)
+		... body of function ...
+	endfun
+
+	function XXX_two(b)
+		... body of function ...
+	endfun
+
+	let XXX_loaded = 1
+
+==============================================================================
+*41.10*	Writing a plugin				*write-plugin*
+
+You can write a Vim script in such a way that many people can use it.  This is
+called a plugin.  Vim users can drop your script in their plugin directory and
+use its features right away |add-plugin|.
+
+There are actually two types of plugins:
+
+  global plugins: For all types of files.
+filetype plugins: Only for files of a specific type.
+
+In this section the first type is explained.  Most items are also relevant for
+writing filetype plugins.  The specifics for filetype plugins are in the next
+section |write-filetype-plugin|.
+
+
+NAME
+
+First of all you must choose a name for your plugin.  The features provided
+by the plugin should be clear from its name.  And it should be unlikely that
+someone else writes a plugin with the same name but which does something
+different.  And please limit the name to 8 characters, to avoid problems on
+old Windows systems.
+
+A script that corrects typing mistakes could be called "typecorr.vim".  We
+will use it here as an example.
+
+For the plugin to work for everybody, it should follow a few guidelines.  This
+will be explained step-by-step.  The complete example plugin is at the end.
+
+
+BODY
+
+Let's start with the body of the plugin, the lines that do the actual work: >
+
+ 14	iabbrev teh the
+ 15	iabbrev otehr other
+ 16	iabbrev wnat want
+ 17	iabbrev synchronisation
+ 18		\ synchronization
+ 19	let s:count = 4
+
+The actual list should be much longer, of course.
+
+The line numbers have only been added to explain a few things, don't put them
+in your plugin file!
+
+
+HEADER
+
+You will probably add new corrections to the plugin and soon have several
+versions laying around.  And when distributing this file, people will want to
+know who wrote this wonderful plugin and where they can send remarks.
+Therefore, put a header at the top of your plugin: >
+
+  1	" Vim global plugin for correcting typing mistakes
+  2	" Last Change:	2000 Oct 15
+  3	" Maintainer:	Bram Moolenaar <Bram@vim.org>
+
+About copyright and licensing: Since plugins are very useful and it's hardly
+worth restricting their distribution, please consider making your plugin
+either public domain or use the Vim |license|.  A short note about this near
+the top of the plugin should be sufficient.  Example: >
+
+  4	" License:	This file is placed in the public domain.
+
+
+LINE CONTINUATION, AVOIDING SIDE EFFECTS		*use-cpo-save*
+
+In line 18 above, the line-continuation mechanism is used |line-continuation|.
+Users with 'compatible' set will run into trouble here, they will get an error
+message.  We can't just reset 'compatible', because that has a lot of side
+effects.  To avoid this, we will set the 'cpoptions' option to its Vim default
+value and restore it later.  That will allow the use of line-continuation and
+make the script work for most people.  It is done like this: >
+
+ 11	let s:save_cpo = &cpo
+ 12	set cpo&vim
+ ..
+ 42	let &cpo = s:save_cpo
+
+We first store the old value of 'cpoptions' in the s:save_cpo variable.  At
+the end of the plugin this value is restored.
+
+Notice that a script-local variable is used |s:var|.  A global variable could
+already be in use for something else.  Always use script-local variables for
+things that are only used in the script.
+
+
+NOT LOADING
+
+It's possible that a user doesn't always want to load this plugin.  Or the
+system administrator has dropped it in the system-wide plugin directory, but a
+user has his own plugin he wants to use.  Then the user must have a chance to
+disable loading this specific plugin.  This will make it possible: >
+
+  6	if exists("loaded_typecorr")
+  7	  finish
+  8	endif
+  9	let loaded_typecorr = 1
+
+This also avoids that when the script is loaded twice it would cause error
+messages for redefining functions and cause trouble for autocommands that are
+added twice.
+
+
+MAPPING
+
+Now let's make the plugin more interesting: We will add a mapping that adds a
+correction for the word under the cursor.  We could just pick a key sequence
+for this mapping, but the user might already use it for something else.  To
+allow the user to define which keys a mapping in a plugin uses, the <Leader>
+item can be used: >
+
+ 22	  map <unique> <Leader>a  <Plug>TypecorrAdd
+
+The "<Plug>TypecorrAdd" thing will do the work, more about that further on.
+
+The user can set the "mapleader" variable to the key sequence that he wants
+this mapping to start with.  Thus if the user has done: >
+
+	let mapleader = "_"
+
+the mapping will define "_a".  If the user didn't do this, the default value
+will be used, which is a backslash.  Then a map for "\a" will be defined.
+
+Note that <unique> is used, this will cause an error message if the mapping
+already happened to exist. |:map-<unique>|
+
+But what if the user wants to define his own key sequence?  We can allow that
+with this mechanism: >
+
+ 21	if !hasmapto('<Plug>TypecorrAdd')
+ 22	  map <unique> <Leader>a  <Plug>TypecorrAdd
+ 23	endif
+
+This checks if a mapping to "<Plug>TypecorrAdd" already exists, and only
+defines the mapping from "<Leader>a" if it doesn't.  The user then has a
+chance of putting this in his vimrc file: >
+
+	map ,c  <Plug>TypecorrAdd
+
+Then the mapped key sequence will be ",c" instead of "_a" or "\a".
+
+
+PIECES
+
+If a script gets longer, you often want to break up the work in pieces.  You
+can use functions or mappings for this.  But you don't want these functions
+and mappings to interfere with the ones from other scripts.  For example, you
+could define a function Add(), but another script could try to define the same
+function.  To avoid this, we define the function local to the script by
+prepending it with "s:".
+
+We will define a function that adds a new typing correction: >
+
+ 30	function s:Add(from, correct)
+ 31	  let to = input("type the correction for " . a:from . ": ")
+ 32	  exe ":iabbrev " . a:from . " " . to
+ ..
+ 36	endfunction
+
+Now we can call the function s:Add() from within this script.  If another
+script also defines s:Add(), it will be local to that script and can only
+be called from the script it was defined in.  There can also be a global Add()
+function (without the "s:"), which is again another function.
+
+<SID> can be used with mappings.  It generates a script ID, which identifies
+the current script.  In our typing correction plugin we use it like this: >
+
+ 24	noremap <unique> <script> <Plug>TypecorrAdd  <SID>Add
+ ..
+ 28	noremap <SID>Add  :call <SID>Add(expand("<cword>"), 1)<CR>
+
+Thus when a user types "\a", this sequence is invoked: >
+
+	\a  ->  <Plug>TypecorrAdd  ->  <SID>Add  ->  :call <SID>Add()
+
+If another script would also map <SID>Add, it would get another script ID and
+thus define another mapping.
+
+Note that instead of s:Add() we use <SID>Add() here.  That is because the
+mapping is typed by the user, thus outside of the script.  The <SID> is
+translated to the script ID, so that Vim knows in which script to look for
+the Add() function.
+
+This is a bit complicated, but it's required for the plugin to work together
+with other plugins.  The basic rule is that you use <SID>Add() in mappings and
+s:Add() in other places (the script itself, autocommands, user commands).
+
+We can also add a menu entry to do the same as the mapping: >
+
+ 26	noremenu <script> Plugin.Add\ Correction      <SID>Add
+
+The "Plugin" menu is recommended for adding menu items for plugins.  In this
+case only one item is used.  When adding more items, creating a submenu is
+recommended.  For example, "Plugin.CVS" could be used for a plugin that offers
+CVS operations "Plugin.CVS.checkin", "Plugin.CVS.checkout", etc.
+
+Note that in line 28 ":noremap" is used to avoid that any other mappings cause
+trouble.  Someone may have remapped ":call", for example.  In line 24 we also
+use ":noremap", but we do want "<SID>Add" to be remapped.  This is why
+"<script>" is used here.  This only allows mappings which are local to the
+script. |:map-<script>|  The same is done in line 26 for ":noremenu".
+|:menu-<script>|
+
+
+<SID> AND <Plug>					*using-<Plug>*
+
+Both <SID> and <Plug> are used to avoid that mappings of typed keys interfere
+with mappings that are only to be used from other mappings.  Note the
+difference between using <SID> and <Plug>:
+
+<Plug>	is visible outside of the script.  It is used for mappings which the
+	user might want to map a key sequence to.  <Plug> is a special code
+	that a typed key will never produce.
+	To make it very unlikely that other plugins use the same sequence of
+	characters, use this structure: <Plug> scriptname mapname
+	In our example the scriptname is "Typecorr" and the mapname is "Add".
+	This results in "<Plug>TypecorrAdd".  Only the first character of
+	scriptname and mapname is uppercase, so that we can see where mapname
+	starts.
+
+<SID>	is the script ID, a unique identifier for a script.
+	Internally Vim translates <SID> to "<SNR>123_", where "123" can be any
+	number.  Thus a function "<SID>Add()" will have a name "<SNR>11_Add()"
+	in one script, and "<SNR>22_Add()" in another.  You can see this if
+	you use the ":function" command to get a list of functions.  The
+	translation of <SID> in mappings is exactly the same, that's how you
+	can call a script-local function from a mapping.
+
+
+USER COMMAND
+
+Now let's add a user command to add a correction: >
+
+ 38	if !exists(":Correct")
+ 39	  command -nargs=1  Correct  :call s:Add(<q-args>, 0)
+ 40	endif
+
+The user command is defined only if no command with the same name already
+exists.  Otherwise we would get an error here.  Overriding the existing user
+command with ":command!" is not a good idea, this would probably make the user
+wonder why the command he defined himself doesn't work.  |:command|
+
+
+SCRIPT VARIABLES
+
+When a variable starts with "s:" it is a script variable.  It can only be used
+inside a script.  Outside the script it's not visible.  This avoids trouble
+with using the same variable name in different scripts.  The variables will be
+kept as long as Vim is running.  And the same variables are used when sourcing
+the same script again. |s:var|
+
+The fun is that these variables can also be used in functions, autocommands
+and user commands that are defined in the script.  In our example we can add
+a few lines to count the number of corrections: >
+
+ 19	let s:count = 4
+ ..
+ 30	function s:Add(from, correct)
+ ..
+ 34	  let s:count = s:count + 1
+ 35	  echo s:count . " corrections now"
+ 36	endfunction
+
+First s:count is initialized to 4 in the script itself.  When later the
+s:Add() function is called, it increments s:count.  It doesn't matter from
+where the function was called, since it has been defined in the script, it
+will use the local variables from this script.
+
+
+THE RESULT
+
+Here is the resulting complete example: >
+
+  1	" Vim global plugin for correcting typing mistakes
+  2	" Last Change:	2000 Oct 15
+  3	" Maintainer:	Bram Moolenaar <Bram@vim.org>
+  4	" License:	This file is placed in the public domain.
+  5
+  6	if exists("loaded_typecorr")
+  7	  finish
+  8	endif
+  9	let loaded_typecorr = 1
+ 10
+ 11	let s:save_cpo = &cpo
+ 12	set cpo&vim
+ 13
+ 14	iabbrev teh the
+ 15	iabbrev otehr other
+ 16	iabbrev wnat want
+ 17	iabbrev synchronisation
+ 18		\ synchronization
+ 19	let s:count = 4
+ 20
+ 21	if !hasmapto('<Plug>TypecorrAdd')
+ 22	  map <unique> <Leader>a  <Plug>TypecorrAdd
+ 23	endif
+ 24	noremap <unique> <script> <Plug>TypecorrAdd  <SID>Add
+ 25
+ 26	noremenu <script> Plugin.Add\ Correction      <SID>Add
+ 27
+ 28	noremap <SID>Add  :call <SID>Add(expand("<cword>"), 1)<CR>
+ 29
+ 30	function s:Add(from, correct)
+ 31	  let to = input("type the correction for " . a:from . ": ")
+ 32	  exe ":iabbrev " . a:from . " " . to
+ 33	  if a:correct | exe "normal viws\<C-R>\" \b\e" | endif
+ 34	  let s:count = s:count + 1
+ 35	  echo s:count . " corrections now"
+ 36	endfunction
+ 37
+ 38	if !exists(":Correct")
+ 39	  command -nargs=1  Correct  :call s:Add(<q-args>, 0)
+ 40	endif
+ 41
+ 42	let &cpo = s:save_cpo
+
+Line 33 wasn't explained yet.  It applies the new correction to the word under
+the cursor.  The |:normal| command is used to use the new abbreviation.  Note
+that mappings and abbreviations are expanded here, even though the function
+was called from a mapping defined with ":noremap".
+
+Using "unix" for the 'fileformat' option is recommended.  The Vim scripts will
+then work everywhere.  Scripts with 'fileformat' set to "dos" do not work on
+Unix.  Also see |:source_crnl|.  To be sure it is set right, do this before
+writing the file: >
+
+	:set fileformat=unix
+
+
+DOCUMENTATION						*write-local-help*
+
+It's a good idea to also write some documentation for your plugin.  Especially
+when its behavior can be changed by the user.  See |add-local-help| for how
+they are installed.
+
+Here is a simple example for a plugin help file, called "typecorr.txt": >
+
+  1	*typecorr.txt*	Plugin for correcting typing mistakes
+  2
+  3	If you make typing mistakes, this plugin will have them corrected
+  4	automatically.
+  5
+  6	There are currently only a few corrections.  Add your own if you like.
+  7
+  8	Mappings:
+  9	<Leader>a   or   <Plug>TypecorrAdd
+ 10		Add a correction for the word under the cursor.
+ 11
+ 12	Commands:
+ 13	:Correct {word}
+ 14		Add a correction for {word}.
+ 15
+ 16							*typecorr-settings*
+ 17	This plugin doesn't have any settings.
+
+The first line is actually the only one for which the format matters.  It will
+be extracted from the help file to be put in the "LOCAL ADDITIONS:" section of
+help.txt |local-additions|.  The first "*" must be in the first column of the
+first line.  After adding your help file do ":help" and check that the entries
+line up nicely.
+
+You can add more tags inside ** in your help file.  But be careful not to use
+existing help tags.  You would probably use the name of your plugin in most of
+them, like "typecorr-settings" in the example.
+
+Using references to other parts of the help in || is recommended.  This makes
+it easy for the user to find associated help.
+
+
+FILETYPE DETECTION					*plugin-filetype*
+
+If your filetype is not already detected by Vim, you should create a filetype
+detection snippet in a separate file.  It is usually in the form of an
+autocommand that sets the filetype when the file name matches a pattern.
+Example: >
+
+	au BufNewFile,BufRead *.foo			set filetype=foofoo
+
+Write this single-line file as "ftdetect/foofoo.vim" in the first directory
+that appears in 'runtimepath'.  For Unix that would be
+"~/.vim/ftdetect/foofoo.vim".  The convention is to use the name of the
+filetype for the script name.
+
+You can make more complicated checks if you like, for example to inspect the
+contents of the file to recognize the language.  Also see |new-filetype|.
+
+
+SUMMARY							*plugin-special*
+
+Summary of special things to use in a plugin:
+
+s:name			Variables local to the script.
+
+<SID>			Script-ID, used for mappings and functions local to
+			the script.
+
+hasmapto()		Function to test if the user already defined a mapping
+			for functionality the script offers.
+
+<Leader>		Value of "mapleader", which the user defines as the
+			keys that plugin mappings start with.
+
+:map <unique>		Give a warning if a mapping already exists.
+
+:noremap <script>	Use only mappings local to the script, not global
+			mappings.
+
+exists(":Cmd")		Check if a user command already exists.
+
+==============================================================================
+*41.11*	Writing a filetype plugin	*write-filetype-plugin* *ftplugin*
+
+A filetype plugin is like a global plugin, except that it sets options and
+defines mappings for the current buffer only.  See |add-filetype-plugin| for
+how this type of plugin is used.
+
+First read the section on global plugins above |41.10|.  All that is said there
+also applies to filetype plugins.  There are a few extras, which are explained
+here.  The essential thing is that a filetype plugin should only have an
+effect on the current buffer.
+
+
+DISABLING
+
+If you are writing a filetype plugin to be used by many people, they need a
+chance to disable loading it.  Put this at the top of the plugin: >
+
+	" Only do this when not done yet for this buffer
+	if exists("b:did_ftplugin")
+	  finish
+	endif
+	let b:did_ftplugin = 1
+
+This also needs to be used to avoid that the same plugin is executed twice for
+the same buffer (happens when using an ":edit" command without arguments).
+
+Now users can disable loading the default plugin completely by making a
+filetype plugin with only this line: >
+
+	let b:did_ftplugin = 1
+
+This does require that the filetype plugin directory comes before $VIMRUNTIME
+in 'runtimepath'!
+
+If you do want to use the default plugin, but overrule one of the settings,
+you can write the different setting in a script: >
+
+	setlocal textwidth=70
+
+Now write this in the "after" directory, so that it gets sourced after the
+distributed "vim.vim" ftplugin |after-directory|.  For Unix this would be
+"~/.vim/after/ftplugin/vim.vim".  Note that the default plugin will have set
+"b:did_ftplugin", but it is ignored here.
+
+
+OPTIONS
+
+To make sure the filetype plugin only affects the current buffer use the >
+
+	:setlocal
+
+command to set options.  And only set options which are local to a buffer (see
+the help for the option to check that).  When using |:setlocal| for global
+options or options local to a window, the value will change for many buffers,
+and that is not what a filetype plugin should do.
+
+When an option has a value that is a list of flags or items, consider using
+"+=" and "-=" to keep the existing value.  Be aware that the user may have
+changed an option value already.  First resetting to the default value and
+then changing it often a good idea.  Example: >
+
+	:setlocal formatoptions& formatoptions+=ro
+
+
+MAPPINGS
+
+To make sure mappings will only work in the current buffer use the >
+
+	:map <buffer>
+
+command.  This needs to be combined with the two-step mapping explained above.
+An example of how to define functionality in a filetype plugin: >
+
+	if !hasmapto('<Plug>JavaImport')
+	  map <buffer> <unique> <LocalLeader>i <Plug>JavaImport
+	endif
+	noremap <buffer> <unique> <Plug>JavaImport oimport ""<Left><Esc>
+
+|hasmapto()| is used to check if the user has already defined a map to
+<Plug>JavaImport.  If not, then the filetype plugin defines the default
+mapping.  This starts with |<LocalLeader>|, which allows the user to select
+the key(s) he wants filetype plugin mappings to start with.  The default is a
+backslash.
+"<unique>" is used to give an error message if the mapping already exists or
+overlaps with an existing mapping.
+|:noremap| is used to avoid that any other mappings that the user has defined
+interferes.  You might want to use ":noremap <script>" to allow remapping
+mappings defined in this script that start with <SID>.
+
+The user must have a chance to disable the mappings in a filetype plugin,
+without disabling everything.  Here is an example of how this is done for a
+plugin for the mail filetype: >
+
+	" Add mappings, unless the user didn't want this.
+	if !exists("no_plugin_maps") && !exists("no_mail_maps")
+	  " Quote text by inserting "> "
+	  if !hasmapto('<Plug>MailQuote')
+	    vmap <buffer> <LocalLeader>q <Plug>MailQuote
+	    nmap <buffer> <LocalLeader>q <Plug>MailQuote
+	  endif
+	  vnoremap <buffer> <Plug>MailQuote :s/^/> /<CR>
+	  nnoremap <buffer> <Plug>MailQuote :.,$s/^/> /<CR>
+	endif
+
+Two global variables are used:
+no_plugin_maps		disables mappings for all filetype plugins
+no_mail_maps		disables mappings for a specific filetype
+
+
+USER COMMANDS
+
+To add a user command for a specific file type, so that it can only be used in
+one buffer, use the "-buffer" argument to |:command|.  Example: >
+
+	:command -buffer  Make  make %:r.s
+
+
+VARIABLES
+
+A filetype plugin will be sourced for each buffer of the type it's for.  Local
+script variables |s:var| will be shared between all invocations.  Use local
+buffer variables |b:var| if you want a variable specifically for one buffer.
+
+
+FUNCTIONS
+
+When defining a function, this only needs to be done once.  But the filetype
+plugin will be sourced every time a file with this filetype will be opened.
+This construct make sure the function is only defined once: >
+
+	:if !exists("*s:Func")
+	:  function s:Func(arg)
+	:    ...
+	:  endfunction
+	:endif
+<
+
+UNDO							*undo_ftplugin*
+
+When the user does ":setfiletype xyz" the effect of the previous filetype
+should be undone.  Set the b:undo_ftplugin variable to the commands that will
+undo the settings in your filetype plugin.  Example: >
+
+	let b:undo_ftplugin = "setlocal fo< com< tw< commentstring<"
+		\ . "| unlet b:match_ignorecase b:match_words b:match_skip"
+
+Using ":setlocal" with "<" after the option name resets the option to its
+global value.  That is mostly the best way to reset the option value.
+
+This does require removing the "C" flag from 'cpoptions' to allow line
+continuation, as mentioned above |use-cpo-save|.
+
+
+FILE NAME
+
+The filetype must be included in the file name |ftplugin-name|.  Use one of
+these three forms:
+
+	.../ftplugin/stuff.vim
+	.../ftplugin/stuff_foo.vim
+	.../ftplugin/stuff/bar.vim
+
+"stuff" is the filetype, "foo" and "bar" are arbitrary names.
+
+
+SUMMARY							*ftplugin-special*
+
+Summary of special things to use in a filetype plugin:
+
+<LocalLeader>		Value of "maplocalleader", which the user defines as
+			the keys that filetype plugin mappings start with.
+
+:map <buffer>		Define a mapping local to the buffer.
+
+:noremap <script>	Only remap mappings defined in this script that start
+			with <SID>.
+
+:setlocal		Set an option for the current buffer only.
+
+:command -buffer	Define a user command local to the buffer.
+
+exists("*s:Func")	Check if a function was already defined.
+
+Also see |plugin-special|, the special things used for all plugins.
+
+==============================================================================
+*41.12*	Writing a compiler plugin		*write-compiler-plugin*
+
+A compiler plugin sets options for use with a specific compiler.  The user can
+load it with the |:compiler| command.  The main use is to set the
+'errorformat' and 'makeprg' options.
+
+Easiest is to have a look at examples.  This command will edit all the default
+compiler plugins: >
+
+	:next $VIMRUNTIME/compiler/*.vim
+
+Use |:next| to go to the next plugin file.
+
+There are two special items about these files.  First is a mechanism to allow
+a user to overrule or add to the default file.  The default files start with: >
+
+	:if exists("current_compiler")
+	:  finish
+	:endif
+	:let current_compiler = "mine"
+
+When you write a compiler file and put it in your personal runtime directory
+(e.g., ~/.vim/compiler for Unix), you set the "current_compiler" variable to
+make the default file skip the settings.
+
+The second mechanism is to use ":set" for ":compiler!" and ":setlocal" for
+":compiler".  Vim defines the ":CompilerSet" user command for this.  However,
+older Vim versions don't, thus your plugin should define it then.  This is an
+example: >
+
+  if exists(":CompilerSet") != 2
+    command -nargs=* CompilerSet setlocal <args>
+  endif
+  CompilerSet errorformat&		" use the default 'errorformat'
+  CompilerSet makeprg=nmake
+
+When you write a compiler plugin for the Vim distribution or for a system-wide
+runtime directory, use the mechanism mentioned above.  When
+"current_compiler" was already set by a user plugin nothing will be done.
+
+When you write a compiler plugin to overrule settings from a default plugin,
+don't check "current_compiler".  This plugin is supposed to be loaded
+last, thus it should be in a directory at the end of 'runtimepath'.  For Unix
+that could be ~/.vim/after/compiler.
+
+==============================================================================
+
+Next chapter: |usr_42.txt|  Add new menus
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_42.txt b/runtime/doc/usr_42.txt
new file mode 100644
index 0000000..b560d6b
--- /dev/null
+++ b/runtime/doc/usr_42.txt
@@ -0,0 +1,365 @@
+*usr_42.txt*	For Vim version 7.0aa.  Last change: 2002 Oct 08
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			      Add new menus
+
+
+By now you know that Vim is very flexible.  This includes the menus used in
+the GUI.  You can define your own menu entries to make certain commands easily
+accessible.  This is for mouse-happy users only.
+
+|42.1|	Introduction
+|42.2|	Menu commands
+|42.3|	Various
+|42.4|	Toolbar and popup menus
+
+     Next chapter: |usr_43.txt|  Using filetypes
+ Previous chapter: |usr_41.txt|  Write a Vim script
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*42.1*	Introduction
+
+The menus that Vim uses are defined in the file "$VIMRUNTIME/menu.vim".  If
+you want to write your own menus, you might first want to look through that
+file.
+   To define a menu item, use the ":menu" command.  The basic form of this
+command is as follows: >
+
+	:menu {menu-item} {keys}
+
+The {menu-item} describes where on the menu to put the item.  A typical
+{menu-item} is "File.Save", which represents the item "Save" under the
+"File" menu.  A dot is used to separate the names.  Example: >
+
+	:menu File.Save  :update<CR>
+
+The ":update" command writes the file when it was modified.
+   You can add another level: "Edit.Settings.Shiftwidth" defines a submenu
+"Settings" under the "Edit" menu, with an item "Shiftwidth".  You could use
+even deeper levels.  Don't use this too much, you need to move the mouse quite
+a bit to use such an item.
+   The ":menu" command is very similar to the ":map" command: the left side
+specifies how the item is triggered and the right hand side defines the
+characters that are executed.  {keys} are characters, they are used just like
+you would have typed them.  Thus in Insert mode, when {keys} is plain text,
+that text is inserted.
+
+
+ACCELERATORS
+
+The ampersand character (&) is used to indicate an accelerator.  For instance,
+you can use Alt-F to select "File" and S to select "Save".  (The 'winaltkeys'
+option may disable this though!).  Therefore, the {menu-item} looks like
+"&File.&Save".  The accelerator characters will be underlined in the menu.
+   You must take care that each key is used only once in each menu.  Otherwise
+you will not know which of the two will actually be used.  Vim doesn't warn
+you for this.
+
+
+PRIORITIES
+
+The actual definition of the File.Save menu item is as follows: >
+
+	:menu 10.340 &File.&Save<Tab>:w  :confirm w<CR>
+
+The number 10.340 is called the priority number.  It is used by the editor to
+decide where it places the menu item.  The first number (10) indicates the
+position on the menu bar.  Lower numbered menus are positioned to the left,
+higher numbers to the right.
+   These are the priorities used for the standard menus:
+
+	  10	20     40     50      60       70		9999
+
+	+------------------------------------------------------------+
+	| File	Edit  Tools  Syntax  Buffers  Window		Help |
+	+------------------------------------------------------------+
+
+Notice that the Help menu is given a very high number, to make it appear on
+the far right.
+   The second number (340) determines the location of the item within the
+pull-down menu.  Lower numbers go on top, higher number on the bottom.  These
+are the priorities in the File menu:
+
+			+-----------------+
+	    10.310	|Open...	  |
+	    10.320	|Split-Open...	  |
+	    10.325	|New		  |
+	    10.330	|Close		  |
+	    10.335	|---------------- |
+	    10.340	|Save		  |
+	    10.350	|Save As...	  |
+	    10.400	|---------------- |
+	    10.410	|Split Diff with  |
+	    10.420	|Split Patched By |
+	    10.500	|---------------- |
+	    10.510	|Print		  |
+	    10.600	|---------------- |
+	    10.610	|Save-Exit	  |
+	    10.620	|Exit		  |
+			+-----------------+
+
+Notice that there is room in between the numbers.  This is where you can
+insert your own items, if you really want to (it's often better to leave the
+standard menus alone and add a new menu for your own items).
+   When you create a submenu, you can add another ".number" to the priority.
+Thus each name in {menu-item} has its priority number.
+
+
+SPECIAL CHARACTERS
+
+The {menu-item} in this example is "&File.&Save<Tab>:w". This brings up an
+important point: {menu-item} must be one word.  If you want to put a dot,
+space or tabs in the name, you either use the <> notation (<Space> and <Tab>,
+for instance) or use the backslash (\) escape. >
+
+	:menu 10.305 &File.&Do\ It\.\.\. :exit<CR>
+
+In this example, the name of the menu item "Do It..." contains a space and the
+command is ":exit<CR>".
+
+The <Tab> character in a menu name is used to separate the part that defines
+the menu name from the part that gives a hint to the user.  The part after the
+<Tab> is displayed right aligned in the menu.  In the File.Save menu the name
+used is "&File.&Save<Tab>:w".  Thus the menu name is "File.Save" and the hint
+is ":w".
+
+
+SEPARATORS
+
+The separator lines, used to group related menu items together, can be defined
+by using a name that starts and ends in a '-'.  For example "-sep-".  When
+using several separators the names must be different.  Otherwise the names
+don't matter.
+   The command from a separator will never be executed, but you have to define
+one anyway.  A single colon will do.  Example: >
+
+	:amenu 20.510 Edit.-sep3- :
+
+==============================================================================
+*42.2*	Menu commands
+
+You can define menu items that exist for only certain modes.  This works just
+like the variations on the ":map" command:
+
+	:menu		Normal, Visual and Operator-pending mode
+	:nmenu		Normal mode
+	:vmenu		Visual mode
+	:omenu		Operator-pending mode
+	:menu!		Insert and Command-line mode
+	:imenu		Insert mode
+	:cmenu		Command-line mode
+	:amenu		All modes
+
+To avoid that the commands of a menu item are being mapped, use the command
+":noremenu", ":nnoremenu", ":anoremenu", etc.
+
+
+USING :AMENU
+
+The ":amenu" command is a bit different.  It assumes that the {keys} you
+give are to be executed in Normal mode.  When Vim is in Visual or Insert mode
+when the menu is used, Vim first has to go back to Normal mode.  ":amenu"
+inserts a CTRL-C or CTRL-O for you.  For example, if you use this command:
+>
+	:amenu  90.100 Mine.Find\ Word  *
+
+Then the resulting menu commands will be:
+
+	Normal mode:		*
+	Visual mode:		CTRL-C *
+	Operator-pending mode:	CTRL-C *
+	Insert mode:		CTRL-O *
+	Command-line mode:	CTRL-C *
+
+When in Command-line mode the CTRL-C will abandon the command typed so far.
+In Visual and Operator-pending mode CTRL-C will stop the mode.  The CTRL-O in
+Insert mode will execute the command and then return to Insert mode.
+   CTRL-O only works for one command.  If you need to use two or more
+commands, put them in a function and call that function.  Example: >
+
+	:amenu  Mine.Next\ File  :call <SID>NextFile()<CR>
+	:function <SID>NextFile()
+	:  next
+	:  1/^Code
+	:endfunction
+
+This menu entry goes to the next file in the argument list with ":next".  Then
+it searches for the line that starts with "Code".
+   The <SID> before the function name is the script ID.  This makes the
+function local to the current Vim script file.  This avoids problems when a
+function with the same name is defined in another script file.  See |<SID>|.
+
+
+SILENT MENUS
+
+The menu executes the {keys} as if you typed them.  For a ":" command this
+means you will see the command being echoed on the command line.  If it's a
+long command, the hit-Enter prompt will appear.  That can be very annoying!
+   To avoid this, make the menu silent.  This is done with the <silent>
+argument.  For example, take the call to NextFile() in the previous example.
+When you use this menu, you will see this on the command line:
+
+	:call <SNR>34_NextFile() ~
+
+To avoid this text on the command line, insert "<silent>" as the first
+argument: >
+
+	:amenu <silent> Mine.Next\ File :call <SID>NextFile()<CR>
+
+Don't use "<silent>" too often.  It is not needed for short commands.  If you
+make a menu for someone else, being able the see the executed command will
+give him a hint about what he could have typed, instead of using the mouse.
+
+
+LISTING MENUS
+
+When a menu command is used without a {keys} part, it lists the already
+defined menus.  You can specify a {menu-item}, or part of it, to list specific
+menus.  Example: >
+
+	:amenu
+
+This lists all menus.  That's a long list!  Better specify the name of a menu
+to get a shorter list: >
+
+	:amenu Edit
+
+This lists only the "Edit" menu items for all modes.  To list only one
+specific menu item for Insert mode: >
+
+	:imenu Edit.Undo
+
+Take care that you type exactly the right name.  Case matters here.  But the
+'&' for accelerators can be omitted.  The <Tab> and what comes after it can be
+left out as well.
+
+
+DELETING MENUS
+
+To delete a menu, the same command is used as for listing, but with "menu"
+changed to "unmenu".  Thus ":menu" becomes, ":unmenu", ":nmenu" becomes
+":nunmenu", etc.  To delete the "Tools.Make" item for Insert mode: >
+
+	:iunmenu Tools.Make
+
+You can delete a whole menu, with all its items, by using the menu name.
+Example: >
+
+	:aunmenu Syntax
+
+This deletes the Syntax menu and all the items in it.
+
+==============================================================================
+*42.3*	Various
+
+You can change the appearance of the menus with flags in 'guioptions'.  In the
+default value they are all included.  You can remove a flag with a command
+like: >
+
+	:set guioptions-=m
+<
+	m		When removed the menubar is not displayed.
+
+	M		When removed the default menus are not loaded.
+
+	g		When removed the inactive menu items are not made grey
+			but are completely removed.  (Does not work on all
+			systems.)
+
+	t		When removed the tearoff feature is not enabled.
+
+The dotted line at the top of a menu is not a separator line.  When you select
+this item, the menu is "teared-off": It is displayed in a separate window.
+This is called a tearoff menu.  This is useful when you use the same menu
+often.
+
+For translating menu items, see |:menutrans|.
+
+Since the mouse has to be used to select a menu item, it is a good idea to use
+the ":browse" command for selecting a file.  And ":confirm" to get a dialog
+instead of an error message, e.g., when the current buffer contains changes.
+These two can be combined: >
+
+	:amenu File.Open  :browse confirm edit<CR>
+
+The ":browse" makes a file browser appear to select the file to edit.  The
+":confirm" will pop up a dialog when the current buffer has changes.  You can
+then select to save the changes, throw them away or cancel the command.
+   For more complicated items, the confirm() and inputdialog() functions can
+be used.  The default menus contain a few examples.
+
+==============================================================================
+*42.4*	Toolbar and popup menus
+
+There are two special menus: ToolBar and PopUp.  Items that start with these
+names do not appear in the normal menu bar.
+
+
+TOOLBAR
+
+The toolbar appears only when the "T" flag is included in the 'guioptions'
+option.
+   The toolbar uses icons rather than text to represent the command.  For
+example, the {menu-item} named "ToolBar.New" causes the "New" icon to appear
+on the toolbar.
+   The Vim editor has 28 built-in icons.  You can find a table here:
+|builtin-tools|.  Most of them are used in the default toolbar.  You can
+redefine what these items do (after the default menus are setup).
+   You can add another bitmap for a toolbar item.  Or define a new toolbar
+item with a bitmap.  For example, define a new toolbar item with: >
+
+	:tmenu ToolBar.Compile  Compile the current file
+	:amenu ToolBar.Compile  :!cc % -o %:r<CR>
+
+Now you need to create the icon.  For MS-Windows it must be in bitmap format,
+with the name "Compile.bmp".  For Unix XPM format is used, the file name is
+"Compile.xpm".  The size must be 18 by 18 pixels.  On MS-Windows other sizes
+can be used as well, but it will look ugly.
+   Put the bitmap in the directory "bitmaps" in one of the directories from
+'runtimepath'.  E.g., for Unix "~/.vim/bitmaps/Compile.xpm".
+
+You can define tooltips for the items in the toolbar.  A tooltip is a short
+text that explains what a toolbar item will do.  For example "Open file".  It
+appears when the mouse pointer is on the item, without moving for a moment.
+This is very useful if the meaning of the picture isn't that obvious.
+Example: >
+
+	:tmenu ToolBar.Make  Run make in the current directory
+<
+	Note:
+	Pay attention to the case used.  "Toolbar" and "toolbar" are different
+	from "ToolBar"!
+
+To remove a tooltip, use the |:tunmenu| command.
+
+The 'toolbar' option can be used to display text instead of a bitmap, or both
+text and a bitmap.  Most people use just the bitmap, since the text takes
+quite a bit of space.
+
+
+POPUP MENU
+
+The popup menu pops up where the mouse pointer is.  On MS-Windows you activate
+it by clicking the right mouse button.  Then you can select an item with the
+left mouse button.  On Unix the popup menu is used by pressing and holding the
+right mouse button.
+   The popup menu only appears when the 'mousemodel' has been set to "popup"
+or "popup_setpos".  The difference between the two is that "popup_setpos"
+moves the cursor to the mouse pointer position.  When clicking inside a
+selection, the selection will be used unmodified.  When there is a selection
+but you click outside of it, the selection is removed.
+   There is a separate popup menu for each mode.  Thus there are never grey
+items like in the normal menus.
+
+What is the meaning of life, the universe and everything?  *42*
+Douglas Adams, the only person who knew what this question really was about is
+now dead, unfortunately.  So now you might wonder what the meaning of death
+is...
+
+==============================================================================
+
+Next chapter: |usr_43.txt|  Using filetypes
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_43.txt b/runtime/doc/usr_43.txt
new file mode 100644
index 0000000..e04b8b2
--- /dev/null
+++ b/runtime/doc/usr_43.txt
@@ -0,0 +1,172 @@
+*usr_43.txt*	For Vim version 7.0aa.  Last change: 2002 Jul 14
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			       Using filetypes
+
+
+When you are editing a file of a certain type, for example a C program or a
+shell script, you often use the same option settings and mappings.  You
+quickly get tired of manually setting these each time.  This chapter explains
+how to do it automatically.
+
+|43.1|	Plugins for a filetype
+|43.2|	Adding a filetype
+
+     Next chapter: |usr_44.txt|  Your own syntax highlighted
+ Previous chapter: |usr_42.txt|  Add new menus
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*43.1*	Plugins for a filetype				*filetype-plugin*
+
+How to start using filetype plugins has already been discussed here:
+|add-filetype-plugin|.  But you probably are not satisfied with the default
+settings, because they have been kept minimal.  Suppose that for C files you
+want to set the 'softtabstop' option to 4 and define a mapping to insert a
+three-line comment.  You do this with only two steps:
+
+							*your-runtime-dir*
+1. Create your own runtime directory.  On Unix this usually is "~/.vim".  In
+   this directory create the "ftplugin" directory: >
+
+	mkdir ~/.vim
+	mkdir ~/.vim/ftplugin
+<
+   When you are not on Unix, check the value of the 'runtimepath' option to
+   see where Vim will look for the "ftplugin" directory: >
+
+	set runtimepath
+
+<  You would normally use the first directory name (before the first comma).
+   You might want to prepend a directory name to the 'runtimepath' option in
+   your |vimrc| file if you don't like the default value.
+
+2. Create the file "~/.vim/ftplugin/c.vim", with the contents: >
+
+	setlocal softtabstop=4
+	noremap <buffer> <LocalLeader>c o/**************<CR><CR>/<Esc>
+
+Try editing a C file.  You should notice that the 'softtabstop' option is set
+to 4.  But when you edit another file it's reset to the default zero.  That is
+because the ":setlocal" command was used.  This sets the 'softtabstop' option
+only locally to the buffer.  As soon as you edit another buffer, it will be
+set to the value set for that buffer.  For a new buffer it will get the
+default value or the value from the last ":set" command.
+
+Likewise, the mapping for "\c" will disappear when editing another buffer.
+The ":map <buffer>" command creates a mapping that is local to the current
+buffer.  This works with any mapping command: ":map!", ":vmap", etc.  The
+|<LocalLeader>| in the mapping is replaced with the value of "maplocalleader".
+
+You can find examples for filetype plugins in this directory: >
+
+	$VIMRUNTIME/ftplugin/
+
+More details about writing a filetype plugin can be found here:
+|write-plugin|.
+
+==============================================================================
+*43.2*	Adding a filetype
+
+If you are using a type of file that is not recognized by Vim, this is how to
+get it recognized.  You need a runtime directory of your own.  See
+|your-runtime-dir| above.
+
+Create a file "filetype.vim" which contains an autocommand for your filetype.
+(Autocommands were explained in section |40.3|.)  Example: >
+
+	augroup filetypedetect
+	au BufNewFile,BufRead *.xyz	setf xyz
+	augroup END
+
+This will recognize all files that end in ".xyz" as the "xyz" filetype.  The
+":augroup" commands put this autocommand in the "filetypedetect" group.  This
+allows removing all autocommands for filetype detection when doing ":filetype
+off".  The "setf" command will set the 'filetype' option to its argument,
+unless it was set already.  This will make sure that 'filetype' isn't set
+twice.
+
+You can use many different patterns to match the name of your file.  Directory
+names can also be included.  See |autocmd-patterns|.  For example, the files
+under "/usr/share/scripts/" are all "ruby" files, but don't have the expected
+file name extension.  Adding this to the example above: >
+
+	augroup filetypedetect
+	au BufNewFile,BufRead *.xyz			setf xyz
+	au BufNewFile,BufRead /usr/share/scripts/*	setf ruby
+	augroup END
+
+However, if you now edit a file /usr/share/scripts/README.txt, this is not a
+ruby file.  The danger of a pattern ending in "*" is that it quickly matches
+too many files.  To avoid trouble with this, put the filetype.vim file in
+another directory, one that is at the end of 'runtimepath'.  For Unix for
+example, you could use "~/.vim/after/filetype.vim".
+   You now put the detection of text files in ~/.vim/filetype.vim: >
+
+	augroup filetypedetect
+	au BufNewFile,BufRead *.txt			setf text
+	augroup END
+
+That file is found in 'runtimepath' first.  Then use this in
+~/.vim/after/filetype.vim, which is found last: >
+
+	augroup filetypedetect
+	au BufNewFile,BufRead /usr/share/scripts/*	setf ruby
+	augroup END
+
+What will happen now is that Vim searches for "filetype.vim" files in each
+directory in 'runtimepath'.  First ~/.vim/filetype.vim is found.  The
+autocommand to catch *.txt files is defined there.  Then Vim finds the
+filetype.vim file in $VIMRUNTIME, which is halfway 'runtimepath'.  Finally
+~/.vim/after/filetype.vim is found and the autocommand for detecting ruby
+files in /usr/share/scripts is added.
+   When you now edit /usr/share/scripts/README.txt, the autocommands are
+checked in the order in which they were defined.  The *.txt pattern matches,
+thus "setf text" is executed to set the filetype to "text".  The pattern for
+ruby matches too, and the "setf ruby" is executed.  But since 'filetype' was
+already set to "text", nothing happens here.
+   When you edit the file /usr/share/scripts/foobar the same autocommands are
+checked.  Only the one for ruby matches and "setf ruby" sets 'filetype' to
+ruby.
+
+
+RECOGNIZING BY CONTENTS
+
+If your file cannot be recognized by its file name, you might be able to
+recognize it by its contents.  For example, many script files start with a
+line like:
+
+	#!/bin/xyz ~
+
+To recognize this script create a file "scripts.vim" in your runtime directory
+(same place where filetype.vim goes).  It might look like this: >
+
+	if did_filetype()
+	  finish
+	endif
+	if getline(1) =~ '^#!.*[/\\]xyz\>'
+	  setf xyz
+	endif
+
+The first check with did_filetype() is to avoid that you will check the
+contents of files for which the filetype was already detected by the file
+name.  That avoids wasting time on checking the file when the "setf" command
+won't do anything.
+   The scripts.vim file is sourced by an autocommand in the default
+filetype.vim file.  Therefore, the order of checks is:
+
+	1. filetype.vim files before $VIMRUNTIME in 'runtimepath'
+	2. first part of $VIMRUNTIME/filetype.vim
+	3. all scripts.vim files in 'runtimepath'
+	4. remainder of $VIMRUNTIME/filetype.vim
+	5. filetype.vim files after $VIMRUNTIME in 'runtimepath'
+
+If this is not sufficient for you, add an autocommand that matches all files
+and sources a script or executes a function to check the contents of the file.
+
+==============================================================================
+
+Next chapter: |usr_44.txt|  Your own syntax highlighted
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_44.txt b/runtime/doc/usr_44.txt
new file mode 100644
index 0000000..021c41e
--- /dev/null
+++ b/runtime/doc/usr_44.txt
@@ -0,0 +1,719 @@
+*usr_44.txt*	For Vim version 7.0aa.  Last change: 2002 Oct 10
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			 Your own syntax highlighted
+
+
+Vim comes with highlighting for a couple of hundred different file types.  If
+the file you are editing isn't included, read this chapter to find out how to
+get this type of file highlighted.  Also see |:syn-define| in the reference
+manual.
+
+|44.1|	Basic syntax commands
+|44.2|	Keywords
+|44.3|	Matches
+|44.4|	Regions
+|44.5|	Nested items
+|44.6|	Following groups
+|44.7|	Other arguments
+|44.8|	Clusters
+|44.9|	Including another syntax file
+|44.10|	Synchronizing
+|44.11|	Installing a syntax file
+|44.12|	Portable syntax file layout
+
+     Next chapter: |usr_45.txt|  Select your language
+ Previous chapter: |usr_43.txt|  Using filetypes
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*44.1*	Basic syntax commands
+
+Using an existing syntax file to start with will save you a lot of time.  Try
+finding a syntax file in $VIMRUNTIME/syntax for a language that is similar.
+These files will also show you the normal layout of a syntax file.  To
+understand it, you need to read the following.
+
+Let's start with the basic arguments.  Before we start defining any new
+syntax, we need to clear out any old definitions: >
+
+	:syntax clear
+
+This isn't required in the final syntax file, but very useful when
+experimenting.
+
+There are more simplifications in this chapter.  If you are writing a syntax
+file to be used by others, read all the way through the end to find out the
+details.
+
+
+LISTING DEFINED ITEMS
+
+To check which syntax items are currently defined, use this command: >
+
+	:syntax
+
+You can use this to check which items have actually been defined.  Quite
+useful when you are experimenting with a new syntax file.  It also shows the
+colors used for each item, which helps to find out what is what.
+   To list the items in a specific syntax group use: >
+
+	:syntax list {group-name}
+
+This also can be used to list clusters (explained in |44.8|).  Just include
+the @ in the name.
+
+
+MATCHING CASE
+
+Some languages are not case sensitive, such as Pascal.  Others, such as C, are
+case sensitive.  You need to tell which type you have with the following
+commands: >
+	:syntax case match
+	:syntax case ignore
+
+The "match" argument means that Vim will match the case of syntax elements.
+Therefore, "int" differs from "Int" and "INT".  If the "ignore" argument is
+used, the following are equivalent: "Procedure", "PROCEDURE" and "procedure".
+   The ":syntax case" commands can appear anywhere in a syntax file and affect
+the syntax definitions that follow.  In most cases, you have only one ":syntax
+case" command in your syntax file; if you work with an unusual language that
+contains both case-sensitive and non-case-sensitive elements, however, you can
+scatter the ":syntax case" command throughout the file.
+
+==============================================================================
+*44.2*	Keywords
+
+The most basic syntax elements are keywords.  To define a keyword, use the
+following form: >
+
+	:syntax keyword {group} {keyword} ...
+
+The {group} is the name of a syntax group.  With the ":highlight" command you
+can assign colors to a {group}.  The {keyword} argument is an actual keyword.
+Here are a few examples: >
+
+	:syntax keyword xType int long char
+	:syntax keyword xStatement if then else endif
+
+This example uses the group names "xType" and "xStatement".  By convention,
+each group name is prefixed by the filetype for the language being defined.
+This example defines syntax for the x language (eXample language without an
+interesting name).  In a syntax file for "csh" scripts the name "cshType"
+would be used.  Thus the prefix is equal to the value of 'filetype'.
+   These commands cause the words "int", "long" and "char" to be highlighted
+one way and the words "if", "then", "else" and "endif" to be highlighted
+another way.  Now you need to connect the x group names to standard Vim
+names.  You do this with the following commands: >
+
+	:highlight link xType Type
+	:highlight link xStatement Statement
+
+This tells Vim to highlight "xType" like "Type" and "xStatement" like
+"Statement".  See |group-name| for the standard names.
+
+
+UNUSUAL KEYWORDS
+
+The characters used in a keyword must be in the 'iskeyword' option.  If you
+use another character, the word will never match.  Vim doesn't give a warning
+message for this.
+   The x language uses the '-' character in keywords.  This is how it's done:
+>
+	:setlocal iskeyword+=-
+	:syntax keyword xStatement when-not
+
+The ":setlocal" command is used to change 'iskeyword' only for the current
+buffer.  Still it does change the behavior of commands like "w" and "*".  If
+that is not wanted, don't define a keyword but use a match (explained in the
+next section).
+
+The x language allows for abbreviations.  For example, "next" can be
+abbreviated to "n", "ne" or "nex".  You can define them by using this command:
+>
+	:syntax keyword xStatement n[ext]
+
+This doesn't match "nextone", keywords always match whole words only.
+
+==============================================================================
+*44.3*	Matches
+
+Consider defining something a bit more complex.  You want to match ordinary
+identifiers.  To do this, you define a match syntax item.  This one matches
+any word consisting of only lowercase letters: >
+
+	:syntax match xIdentifier /\<\l\+\>/
+<
+	Note:
+	Keywords overrule any other syntax item.  Thus the keywords "if",
+	"then", etc., will be keywords, as defined with the ":syntax keyword"
+	commands above, even though they also match the pattern for
+	xIdentifier.
+
+The part at the end is a pattern, like it's used for searching.  The // is
+used to surround the pattern (like how it's done in a ":substitute" command).
+You can use any other character, like a plus or a quote.
+
+Now define a match for a comment.  In the x language it is anything from # to
+the end of a line: >
+
+	:syntax match xComment /#.*/
+
+Since you can use any search pattern, you can highlight very complex things
+with a match item.  See |pattern| for help on search patterns.
+
+==============================================================================
+*44.4*	Regions
+
+In the example x language, strings are enclosed in double quotation marks (").
+To highlight strings you define a region.  You need a region start (double
+quote) and a region end (double quote).  The definition is as follows: >
+
+	:syntax region xString start=/"/ end=/"/
+
+The "start" and "end" directives define the patterns used to find the start
+and end of the region.  But what about strings that look like this?
+
+	"A string with a double quote (\") in it" ~
+
+This creates a problem: The double quotation marks in the middle of the string
+will end the region.  You need to tell Vim to skip over any escaped double
+quotes in the string.  Do this with the skip keyword: >
+
+	:syntax region xString start=/"/ skip=/\\"/ end=/"/
+
+The double backslash matches a single backslash, since the backslash is a
+special character in search patterns.
+
+When to use a region instead of a match?  The main difference is that a match
+item is a single pattern, which must match as a whole.  A region starts as
+soon as the "start" pattern matches.  Whether the "end" pattern is found or
+not doesn't matter.  Thus when the item depends on the "end" pattern to match,
+you cannot use a region.  Otherwise, regions are often simpler to define.  And
+it is easier to use nested items, as is explained in the next section.
+
+==============================================================================
+*44.5*	Nested items
+
+Take a look at this comment:
+
+	%Get input  TODO: Skip white space ~
+
+You want to highlight TODO in big yellow letters, even though it is in a
+comment that is highlighted blue.  To let Vim know about this, you define the
+following syntax groups: >
+
+	:syntax keyword xTodo TODO contained
+	:syntax match xComment /%.*/ contains=xTodo
+
+In the first line, the "contained" argument tells Vim that this keyword can
+exist only inside another syntax item.  The next line has "contains=xTodo".
+This indicates that the xTodo syntax element is inside it.  The result is that
+the comment line as a whole is matched with "xComment" and made blue.  The
+word TODO inside it is matched by xTodo and highlighted yellow (highlighting
+for xTodo was setup for this).
+
+
+RECURSIVE NESTING
+
+The x language defines code blocks in curly braces.  And a code block may
+contain other code blocks.  This can be defined this way: >
+
+	:syntax region xBlock start=/{/ end=/}/ contains=xBlock
+
+Suppose you have this text:
+
+	while i < b { ~
+		if a { ~
+			b = c; ~
+		} ~
+	} ~
+
+First a xBlock starts at the { in the first line.  In the second line another
+{ is found.  Since we are inside a xBlock item, and it contains itself, a
+nested xBlock item will start here.  Thus the "b = c" line is inside the
+second level xBlock region.  Then a } is found in the next line, which matches
+with the end pattern of the region.  This ends the nested xBlock.  Because the
+} is included in the nested region, it is hidden from the first xBlock region.
+Then at the last } the first xBlock region ends.
+
+
+KEEPING THE END
+
+Consider the following two syntax items: >
+
+	:syntax region xComment start=/%/ end=/$/ contained
+	:syntax region xPreProc start=/#/ end=/$/ contains=xComment
+
+You define a comment as anything from % to the end of the line.  A
+preprocessor directive is anything from # to the end of the line.  Because you
+can have a comment on a preprocessor line, the preprocessor definition
+includes a "contains=xComment" argument.  Now look what happens with this
+text:
+
+	#define X = Y  % Comment text ~
+	int foo = 1; ~
+
+What you see is that the second line is also highlighted as xPreProc.  The
+preprocessor directive should end at the end of the line.  That is why
+you have used "end=/$/".  So what is going wrong?
+   The problem is the contained comment.  The comment starts with % and ends
+at the end of the line.  After the comment ends, the preprocessor syntax
+continues.  This is after the end of the line has been seen, so the next
+line is included as well.
+   To avoid this problem and to avoid a contained syntax item eating a needed
+end of line, use the "keepend" argument.  This takes care of
+the double end-of-line matching: >
+
+	:syntax region xComment start=/%/ end=/$/ contained
+	:syntax region xPreProc start=/#/ end=/$/ contains=xComment keepend
+
+
+CONTAINING MANY ITEMS
+
+You can use the contains argument to specify that everything can be contained.
+For example: >
+
+	:syntax region xList start=/\[/ end=/\]/ contains=ALL
+
+All syntax items will be contained in this one.  It also contains itself, but
+not at the same position (that would cause an endless loop).
+   You can specify that some groups are not contained.  Thus contain all
+groups but the ones that are listed:
+>
+	:syntax region xList start=/\[/ end=/\]/ contains=ALLBUT,xString
+
+With the "TOP" item you can include all items that don't have a "contained"
+argument.  "CONTAINED" is used to only include items with a "contained"
+argument.  See |:syn-contains| for the details.
+
+==============================================================================
+*44.6*	Following groups
+
+The x language has statements in this form:
+
+	if (condition) then ~
+
+You want to highlight the three items differently.  But "(condition)" and
+"then" might also appear in other places, where they get different
+highlighting.  This is how you can do this: >
+
+	:syntax match xIf /if/ nextgroup=xIfCondition skipwhite
+	:syntax match xIfCondition /([^)]*)/ contained nextgroup=xThen skipwhite
+	:syntax match xThen /then/ contained
+
+The "nextgroup" argument specifies which item can come next.  This is not
+required.  If none of the items that are specified are found, nothing happens.
+For example, in this text:
+
+	if not (condition) then ~
+
+The "if" is matched by xIf.  "not" doesn't match the specified nextgroup
+xIfCondition, thus only the "if" is highlighted.
+
+The "skipwhite" argument tells Vim that white space (spaces and tabs) may
+appear in between the items.  Similar arguments are "skipnl", which allows a
+line break in between the items, and "skipempty", which allows empty lines.
+Notice that "skipnl" doesn't skip an empty line, something must match after
+the line break.
+
+==============================================================================
+*44.7*	Other arguments
+
+MATCHGROUP
+
+When you define a region, the entire region is highlighted according to the
+group name specified.  To highlight the text enclosed in parentheses () with
+the group xInside, for example, use the following command: >
+
+	:syntax region xInside start=/(/ end=/)/
+
+Suppose, that you want to highlight the parentheses differently.  You can do
+this with a lot of convoluted region statements, or you can use the
+"matchgroup" argument.  This tells Vim to highlight the start and end of a
+region with a different highlight group (in this case, the xParen group): >
+
+	:syntax region xInside matchgroup=xParen start=/(/ end=/)/
+
+The "matchgroup" argument applies to the start or end match that comes after
+it.  In the previous example both start and end are highlighted with xParen.
+To highlight the end with xParenEnd: >
+
+	:syntax region xInside matchgroup=xParen start=/(/
+		\ matchgroup=xParenEnd end=/)/
+
+A side effect of using "matchgroup" is that contained items will not match in
+the start or end of the region.  The example for "transparent" uses this.
+
+
+TRANSPARENT
+
+In a C language file you would like to highlight the () text after a "while"
+differently from the () text after a "for".  In both of these there can be
+nested () items, which should be highlighted in the same way.  You must make
+sure the () highlighting stops at the matching ).  This is one way to do this:
+>
+	:syntax region cWhile matchgroup=cWhile start=/while\s*(/ end=/)/
+		\ contains=cCondNest
+	:syntax region cFor matchgroup=cFor start=/for\s*(/ end=/)/
+		\ contains=cCondNest
+	:syntax region cCondNest start=/(/ end=/)/ contained transparent
+
+Now you can give cWhile and cFor different highlighting.  The cCondNest item
+can appear in either of them, but take over the highlighting of the item it is
+contained in.  The "transparent" argument causes this.
+   Notice that the "matchgroup" argument has the same group as the item
+itself.  Why define it then?  Well, the side effect of using a matchgroup is
+that contained items are not found in the match with the start item then.
+This avoids that the cCondNest group matches the ( just after the "while" or
+"for".  If this would happen, it would span the whole text until the matching
+) and the region would continue after it.  Now cCondNest only matches after
+the match with the start pattern, thus after the first (.
+
+
+OFFSETS
+
+Suppose you want to define a region for the text between ( and ) after an
+"if".  But you don't want to include the "if" or the ( and ).  You can do this
+by specifying offsets for the patterns.  Example: >
+
+	:syntax region xCond start=/if\s*(/ms=e+1 end=/)/me=s-1
+
+The offset for the start pattern is "ms=e+1".  "ms" stands for Match Start.
+This defines an offset for the start of the match.  Normally the match starts
+where the pattern matches.  "e+1" means that the match now starts at the end
+of the pattern match, and then one character further.
+   The offset for the end pattern is "me=s-1".  "me" stands for Match End.
+"s-1" means the start of the pattern match and then one character back.  The
+result is that in this text:
+
+	if (foo == bar) ~
+
+Only the text "foo == bar" will be highlighted as xCond.
+
+More about offsets here: |:syn-pattern-offset|.
+
+
+ONELINE
+
+The "oneline" argument indicates that the region does not cross a line
+boundary.  For example: >
+
+	:syntax region xIfThen start=/if/ end=/then/ oneline
+
+This defines a region that starts at "if" and ends at "then".  But if there is
+no "then" after the "if", the region doesn't match.
+
+	Note:
+	When using "oneline" the region doesn't start if the end pattern
+	doesn't match in the same line.  Without "oneline" Vim does _not_
+	check if there is a match for the end pattern.  The region starts even
+	when the end pattern doesn't match in the rest of the file.
+
+
+CONTINUATION LINES AND AVOIDING THEM
+
+Things now become a little more complex.  Let's define a preprocessor line.
+This starts with a # in the first column and continues until the end of the
+line.  A line that ends with \ makes the next line a continuation line.  The
+way you handle this is to allow the syntax item to contain a continuation
+pattern: >
+
+	:syntax region xPreProc start=/^#/ end=/$/ contains=xLineContinue
+	:syntax match xLineContinue "\\$" contained
+
+In this case, although xPreProc normally matches a single line, the group
+contained in it (namely xLineContinue) lets it go on for more than one line.
+For example, it would match both of these lines:
+
+	#define SPAM  spam spam spam \ ~
+			bacon and spam ~
+
+In this case, this is what you want.  If it is not what you want, you can call
+for the region to be on a single line by adding "excludenl" to the contained
+pattern.  For example, you want to highlight "end" in xPreProc, but only at
+the end of the line.  To avoid making the xPreProc continue on the next line,
+like xLineContinue does, use "excludenl" like this: >
+
+	:syntax region xPreProc start=/^#/ end=/$/
+		\ contains=xLineContinue,xPreProcEnd
+	:syntax match xPreProcEnd excludenl /end$/ contained
+	:syntax match xLineContinue "\\$" contained
+
+"excludenl" must be placed before the pattern.  Since "xLineContinue" doesn't
+have "excludenl", a match with it will extend xPreProc to the next line as
+before.
+
+==============================================================================
+*44.8*	Clusters
+
+One of the things you will notice as you start to write a syntax file is that
+you wind up generating a lot of syntax groups.  Vim enables you to define a
+collection of syntax groups called a cluster.
+   Suppose you have a language that contains for loops, if statements, while
+loops, and functions.  Each of them contains the same syntax elements: numbers
+and identifiers.  You define them like this: >
+
+	:syntax match xFor /^for.*/ contains=xNumber,xIdent
+	:syntax match xIf /^if.*/ contains=xNumber,xIdent
+	:syntax match xWhile /^while.*/ contains=xNumber,xIdent
+
+You have to repeat the same "contains=" every time.  If you want to add
+another contained item, you have to add it three times.  Syntax clusters
+simplify these definitions by enabling you to have one cluster stand for
+several syntax groups.
+   To define a cluster for the two items that the three groups contain, use
+the following command: >
+
+	:syntax cluster xState contains=xNumber,xIdent
+
+Clusters are used inside other syntax items just like any syntax group.
+Their names start with @.  Thus, you can define the three groups like this: >
+
+	:syntax match xFor /^for.*/ contains=@xState
+	:syntax match xIf /^if.*/ contains=@xState
+	:syntax match xWhile /^while.*/ contains=@xState
+
+You can add new group names to this cluster with the "add" argument: >
+
+	:syntax cluster xState add=xString
+
+You can remove syntax groups from this list as well: >
+
+	:syntax cluster xState remove=xNumber
+
+==============================================================================
+*44.9*	Including another syntax file
+
+The C++ language syntax is a superset of the C language.  Because you do not
+want to write two syntax files, you can have the C++ syntax file read in the
+one for C by using the following command: >
+
+	:runtime! syntax/c.vim
+
+The ":runtime!" command searches 'runtimepath' for all "syntax/c.vim" files.
+This makes the C syntax be defined like for C files.  If you have replaced the
+c.vim syntax file, or added items with an extra file, these will be loaded as
+well.
+   After loading the C syntax items the specific C++ items can be defined.
+For example, add keywords that are not used in C: >
+
+	:syntax keyword cppStatement	new delete this friend using
+
+This works just like in any other syntax file.
+
+Now consider the Perl language.  It consists of two distinct parts: a
+documentation section in POD format, and a program written in Perl itself.
+The POD section starts with "=head" and ends with "=cut".
+   You want to define the POD syntax in one file, and use it from the Perl
+syntax file.  The ":syntax include" command reads in a syntax file and stores
+the elements it defined in a syntax cluster.  For Perl, the statements are as
+follows: >
+
+	:syntax include @Pod <sfile>:p:h/pod.vim
+	:syntax region perlPOD start=/^=head/ end=/^=cut/ contains=@Pod
+
+When "=head" is found in a Perl file, the perlPOD region starts.  In this
+region the @Pod cluster is contained.  All the items defined as top-level
+items in the pod.vim syntax files will match here.  When "=cut" is found, the
+region ends and we go back to the items defined in the Perl file.
+   The ":syntax include" command is clever enough to ignore a ":syntax clear"
+command in the included file.  And an argument such as "contains=ALL" will
+only contain items defined in the included file, not in the file that includes
+it.
+   The "<sfile>:p:h/" part uses the name of the current file (<sfile>),
+expands it to a full path (:p) and then takes the head (:h).  This results in
+the directory name of the file.  This causes the pod.vim file in the same
+directory to be included.
+
+==============================================================================
+*44.10*	Synchronizing
+
+Compilers have it easy.  They start at the beginning of a file and parse it
+straight through.  Vim does not have it so easy.  It must start in the middle,
+where the editing is being done.  So how does it tell where it is?
+   The secret is the ":syntax sync" command.  This tells Vim how to figure out
+where it is.  For example, the following command tells Vim to scan backward
+for the beginning or end of a C-style comment and begin syntax coloring from
+there: >
+
+	:syntax sync ccomment
+
+You can tune this processing with some arguments.  The "minlines" argument
+tells Vim the minimum number of lines to look backward, and "maxlines" tells
+the editor the maximum number of lines to scan.
+   For example, the following command tells Vim to look at least 10 lines
+before the top of the screen: >
+
+	:syntax sync ccomment minlines=10 maxlines=500
+
+If it cannot figure out where it is in that space, it starts looking farther
+and farther back until it figures out what to do.  But it looks no farther
+back than 500 lines. (A large "maxlines" slows down processing.  A small one
+might cause synchronization to fail.)
+   To make synchronizing go a bit faster, tell Vim which syntax items can be
+skipped.  Every match and region that only needs to be used when actually
+displaying text can be given the "display" argument.
+   By default, the comment to be found will be colored as part of the Comment
+syntax group.  If you want to color things another way, you can specify a
+different syntax group: >
+
+	:syntax sync ccomment xAltComment
+
+If your programming language does not have C-style comments in it, you can try
+another method of synchronization.  The simplest way is to tell Vim to space
+back a number of lines and try to figure out things from there.  The following
+command tells Vim to go back 150 lines and start parsing from there: >
+
+	:syntax sync minlines=150
+
+A large "minlines" value can make Vim slower, especially when scrolling
+backwards in the file.
+   Finally, you can specify a syntax group to look for by using this command:
+>
+	:syntax sync match {sync-group-name}
+		\ grouphere {group-name} {pattern}
+
+This tells Vim that when it sees {pattern} the syntax group named {group-name}
+begins just after the pattern given.  The {sync-group-name} is used to give a
+name to this synchronization specification.  For example, the sh scripting
+language begins an if statement with "if" and ends it with "fi":
+
+	if [ --f file.txt ] ; then ~
+		echo "File exists" ~
+	fi ~
+
+To define a "grouphere" directive for this syntax, you use the following
+command: >
+
+	:syntax sync match shIfSync grouphere shIf "\<if\>"
+
+The "groupthere" argument tells Vim that the pattern ends a group.  For
+example, the end of the if/fi group is as follows: >
+
+	:syntax sync match shIfSync groupthere NONE "\<fi\>"
+
+In this example, the NONE tells Vim that you are not in any special syntax
+region.  In particular, you are not inside an if block.
+
+You also can define matches and regions that are with no "grouphere" or
+"groupthere" arguments.  These groups are for syntax groups skipped during
+synchronization.  For example, the following skips over anything inside {},
+even if it would normally match another synchronization method: >
+
+	:syntax sync match xSpecial /{.*}/
+
+More about synchronizing in the reference manual: |:syn-sync|.
+
+==============================================================================
+*44.11*	Installing a syntax file
+
+When your new syntax file is ready to be used, drop it in a "syntax" directory
+in 'runtimepath'.  For Unix that would be "~/.vim/syntax".
+  The name of the syntax file must be equal to the file type, with ".vim"
+added.  Thus for the x language, the full path of the file would be:
+
+	~/.vim/syntax/x.vim ~
+
+You must also make the file type be recognized.  See |43.2|.
+
+If your file works well, you might want to make it available to other Vim
+users.  First read the next section to make sure your file works well for
+others.  Then e-mail it to the Vim maintainer: <maintainer@vim.org>.  Also
+explain how the filetype can be detected.  With a bit of luck your file will
+be included in the next Vim version!
+
+
+ADDING TO AN EXISTING SYNTAX FILE
+
+We were assuming you were adding a completely new syntax file.  When an existing
+syntax file works, but is missing some items, you can add items in a separate
+file.  That avoids changing the distributed syntax file, which will be lost
+when installing a new version of Vim.
+   Write syntax commands in your file, possibly using group names from the
+existing syntax.  For example, to add new variable types to the C syntax file:
+>
+	:syntax keyword cType off_t uint
+
+Write the file with the same name as the original syntax file.  In this case
+"c.vim".  Place it in a directory near the end of 'runtimepath'.  This makes
+it loaded after the original syntax file.  For Unix this would be:
+
+	~/.vim/after/syntax/c.vim ~
+
+==============================================================================
+*44.12*	Portable syntax file layout
+
+Wouldn't it be nice if all Vim users exchange syntax files?  To make this
+possible, the syntax file must follow a few guidelines.
+
+Start with a header that explains what the syntax file is for, who maintains
+it and when it was last updated.  Don't include too much information about
+changes history, not many people will read it.  Example: >
+
+	" Vim syntax file
+	" Language:	C
+	" Maintainer:	Bram Moolenaar <Bram@vim.org>
+	" Last Change:	2001 Jun 18
+	" Remark:	Included by the C++ syntax.
+
+Use the same layout as the other syntax files.  Using an existing syntax file
+as an example will save you a lot of time.
+
+Choose a good, descriptive name for your syntax file.  Use lowercase letters
+and digits.  Don't make it too long, it is used in many places: The name of
+the syntax file "name.vim", 'filetype', b:current_syntax the start of each
+syntax group (nameType, nameStatement, nameString, etc).
+
+Start with a check for "b:current_syntax".  If it is defined, some other
+syntax file, earlier in 'runtimepath' was already loaded.  To be compatible
+with Vim 5.8 use: >
+
+	if version < 600
+	  syntax clear
+	elseif exists("b:current_syntax")
+	  finish
+	endif
+
+Set "b:current_syntax" to the name of the syntax at the end.  Don't forget
+that included files do this too, you might have to reset "b:current_syntax" if
+you include two files.
+
+If you want your syntax file to work with Vim 5.x, add a check for v:version.
+See yacc.vim for an example.
+
+Do not include anything that is a user preference.  Don't set 'tabstop',
+'expandtab', etc.  These belong in a filetype plugin.
+
+Do not include mappings or abbreviations.  Only include setting 'iskeyword' if
+it is really necessary for recognizing keywords.
+
+Avoid using specific colors.  Link to the standard highlight groups whenever
+possible.  Don't forget that some people use a different background color, or
+have only eight colors available.
+For backwards compatibility with Vim 5.8 this construction is used: >
+
+	if version >= 508 || !exists("did_c_syn_inits")
+	  if version < 508
+	    let did_c_syn_inits = 1
+	    command -nargs=+ HiLink hi link <args>
+	  else
+	    command -nargs=+ HiLink hi def link <args>
+	  endif
+
+	  HiLink nameString	String
+	  HiLink nameNumber	Number
+	  ... etc ...
+
+	  delcommand HiLink
+	endif
+
+Add the "display" argument to items that are not used when syncing, to speed
+up scrolling backwards and CTRL-L.
+
+==============================================================================
+
+Next chapter: |usr_45.txt|  Select your language
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_45.txt b/runtime/doc/usr_45.txt
new file mode 100644
index 0000000..034b040
--- /dev/null
+++ b/runtime/doc/usr_45.txt
@@ -0,0 +1,419 @@
+*usr_45.txt*	For Vim version 7.0aa.  Last change: 2004 Jun 08
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			     Select your language
+
+
+The messages in Vim can be given in several languages.  This chapter explains
+how to change which one is used.  Also, the different ways to work with files
+in various languages is explained.
+
+|45.1|	Language for Messages
+|45.2|	Language for Menus
+|45.3|	Using another encoding
+|45.4|	Editing files with a different encoding
+|45.5|	Entering language text
+
+     Next chapter: |usr_90.txt|  Installing Vim
+ Previous chapter: |usr_44.txt|  Your own syntax highlighted
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*45.1*	Language for Messages
+
+When you start Vim, it checks the environment to find out what language you
+are using.  Mostly this should work fine, and you get the messages in your
+language (if they are available).  To see what the current language is, use
+this command: >
+
+	:language
+
+If it replies with "C", this means the default is being used, which is
+English.
+
+	Note:
+	Using different languages only works when Vim was compiled to handle
+	it.  To find out if it works, use the ":version" command and check the
+	output for "+gettext" and "+multi_lang".  If they are there, you are
+	OK.  If you see "-gettext" or "-multi_lang" you will have to find
+	another Vim.
+
+What if you would like your messages in a different language?  There are
+several ways.  Which one you should use depends on the capabilities of your
+system.
+   The first way is to set the environment to the desired language before
+starting Vim.  Example for Unix: >
+
+	env LANG=de_DE.ISO_8859-1  vim
+
+This only works if the language is available on your system.  The advantage is
+that all the GUI messages and things in libraries will use the right language
+as well.  A disadvantage is that you must do this before starting Vim.  If you
+want to change language while Vim is running, you can use the second method: >
+
+	:language fr_FR.ISO_8859-1
+
+This way you can try out several names for your language.  You will get an
+error message when it's not supported on your system.  You don't get an error
+when translated messages are not available.  Vim will silently fall back to
+using English.
+   To find out which languages are supported on your system, find the
+directory where they are listed.  On my system it is "/usr/share/locale".  On
+some systems it's in "/usr/lib/locale".  The manual page for "setlocale"
+should give you a hint where it is found on your system.
+   Be careful to type the name exactly as it should be.  Upper and lowercase
+matter, and the '-' and '_' characters are easily confused.
+
+You can also set the language separately for messages, edited text and the
+time format.  See |:language|.
+
+
+DO-IT-YOURSELF MESSAGE TRANSLATION
+
+If translated messages are not available for your language, you could write
+them yourself.  To do this, get the source code for Vim and the GNU gettext
+package.  After unpacking the sources, instructions can be found in the
+directory src/po/README.txt.
+   It's not too difficult to do the translation.  You don't need to be a
+programmer.  You must know both English and the language you are translating
+to, of course.
+   When you are satisfied with the translation, consider making it available
+to others.  Upload it at vim-online (http://vim.sf.net) or e-mail it to
+the Vim maintainer <maintainer@vim.org>.  Or both.
+
+==============================================================================
+*45.2*	Language for Menus
+
+The default menus are in English.  To be able to use your local language, they
+must be translated.  Normally this is automatically done for you if the
+environment is set for your language, just like with messages.  You don't need
+to do anything extra for this.  But it only works if translations for the
+language are available.
+   Suppose you are in Germany, with the language set to German, but prefer to
+use "File" instead of "Datei".  You can switch back to using the English menus
+this way: >
+
+	:set langmenu=none
+
+It is also possible to specify a language: >
+
+	:set langmenu=nl_NL.ISO_8859-1
+
+Like above, differences between "-" and "_" matter.  However, upper/lowercase
+differences are ignored here.
+   The 'langmenu' option must be set before the menus are loaded.  Once the
+menus have been defined changing 'langmenu' has no direct effect.  Therefore,
+put the command to set 'langmenu' in your vimrc file.
+   If you really want to switch menu language while running Vim, you can do it
+this way: >
+
+	:source $VIMRUNTIME/delmenu.vim
+	:set langmenu=de_DE.ISO_8859-1
+	:source $VIMRUNTIME/menu.vim
+
+There is one drawback: All menus that you defined yourself will be gone.  You
+will need to redefine them as well.
+
+
+DO-IT-YOURSELF MENU TRANSLATION
+
+To see which menu translations are available, look in this directory:
+
+	$VIMRUNTIME/lang ~
+
+The files are called menu_{language}.vim.  If you don't see the language you
+want to use, you can do your own translations.  The simplest way to do this is
+by copying one of the existing language files, and change it.
+   First find out the name of your language with the ":language" command.  Use
+this name, but with all letters made lowercase.  Then copy the file to your
+own runtime directory, as found early in 'runtimepath'.  For example, for Unix
+you would do: >
+
+	:!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.vim/lang/menu_nl_be.iso_8859-1.vim
+
+You will find hints for the translation in "$VIMRUNTIME/lang/README.txt".
+
+==============================================================================
+*45.3*	Using another encoding
+
+Vim guesses that the files you are going to edit are encoded for your
+language.  For many European languages this is "latin1".  Then each byte is
+one character.  That means there are 256 different characters possible.  For
+Asian languages this is not sufficient.  These mostly use a double-byte
+encoding, providing for over ten thousand possible characters.  This still
+isn't enough when a text is to contain several different languages.  This is
+where Unicode comes in.  It was designed to include all characters used in
+commonly used languages.  This is the "Super encoding that replaces all
+others".  But it isn't used that much yet.
+   Fortunately, Vim supports these three kinds of encodings.  And, with some
+restrictions, you can use them even when your environment uses another
+language than the text.
+   Nevertheless, when you only edit files that are in the encoding of your
+language, the default should work fine and you don't need to do anything.  The
+following is only relevant when you want to edit different languages.
+
+	Note:
+	Using different encodings only works when Vim was compiled to handle
+	it.  To find out if it works, use the ":version" command and check the
+	output for "+multi_byte".  If it's there, you are OK.  If you see
+	"-multi_byte" you will have to find another Vim.
+
+
+USING UNICODE IN THE GUI
+
+The nice thing about Unicode is that other encodings can be converted to it
+and back without losing information.  When you make Vim use Unicode
+internally, you will be able to edit files in any encoding.
+   Unfortunately, the number of systems supporting Unicode is still limited.
+Thus it's unlikely that your language uses it.  You need to tell Vim you want
+to use Unicode, and how to handle interfacing with the rest of the system.
+   Let's start with the GUI version of Vim, which is able to display Unicode
+characters.  This should work: >
+
+	:set encoding=utf-8
+	:set guifont=-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
+
+The 'encoding' option tells Vim the encoding of the characters that you use.
+This applies to the text in buffers (files you are editing), registers, Vim
+script files, etc.  You can regard 'encoding' as the setting for the internals
+of Vim.
+   This example assumes you have this font on your system.  The name in the
+example is for the X Window System.  This font is in a package that is used to
+enhance xterm with Unicode support.  If you don't have this font, you might
+find it here:
+
+	http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz ~
+
+For MS-Windows, some fonts have a limited number of Unicode characters.  Try
+using the "Courier New" font.  You can use the Edit/Select Font... menu to
+select and try out the fonts available.  Only fixed-width fonts can be used
+though.  Example: >
+
+	:set guifont=courier_new:h12
+
+If it doesn't work well, try getting a fontpack.  If Microsoft didn't move it,
+you can find it here:
+
+	http://www.microsoft.com/typography/fontpack/default.htm ~
+
+Now you have told Vim to use Unicode internally and display text with a
+Unicode font.  Typed characters still arrive in the encoding of your original
+language.  This requires converting them to Unicode.  Tell Vim the language
+from which to convert with the 'termencoding' option.  You can do it like
+this: >
+
+	:let &termencoding = &encoding
+	:set encoding=utf-8
+
+This assigns the old value of 'encoding' to 'termencoding' before setting
+'encoding' to utf-8.  You will have to try out if this really works for your
+setup.  It should work especially well when using an input method for an Asian
+language, and you want to edit Unicode text.
+
+
+USING UNICODE IN A UNICODE TERMINAL
+
+There are terminals that support Unicode directly.  The standard xterm that
+comes with XFree86 is one of them.  Let's use that as an example.
+   First of all, the xterm must have been compiled with Unicode support.  See
+|UTF8-xterm| how to check that and how to compile it when needed.
+   Start the xterm with the "-u8" argument.  You might also need so specify a
+font.  Example: >
+
+   xterm -u8 -fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
+
+Now you can run Vim inside this terminal.  Set 'encoding' to "utf-8" as
+before.  That's all.
+
+
+USING UNICODE IN AN ORDINARY TERMINAL
+
+Suppose you want to work with Unicode files, but don't have a terminal with
+Unicode support.  You can do this with Vim, although characters that are not
+supported by the terminal will not be displayed.  The layout of the text
+will be preserved.  >
+
+	:let &termencoding = &encoding
+	:set encoding=utf-8
+
+This is the same as what was used for the GUI.  But it works differently: Vim
+will convert the displayed text before sending it to the terminal.  That
+avoids that the display is messed up with strange characters.
+   For this to work the conversion between 'termencoding' and 'encoding' must
+be possible.  Vim will convert from latin1 to Unicode, thus that always works.
+For other conversions the |+iconv| feature is required.
+   Try editing a file with Unicode characters in it.  You will notice that Vim
+will put a question mark (or underscore or some other character) in places
+where a character should be that the terminal can't display.  Move the cursor
+to a question mark and use this command: >
+
+	ga
+
+Vim will display a line with the code of the character.  This gives you a hint
+about what character it is.  You can look it up in a Unicode table.  You could
+actually view a file that way, if you have lots of time at hand.
+
+	Note:
+	Since 'encoding' is used for all text inside Vim, changing it makes
+	all non-ASCII text invalid.  You will notice this when using registers
+	and the 'viminfo' file (e.g., a remembered search pattern).  It's
+	recommended to set 'encoding' in your vimrc file, and leave it alone.
+
+==============================================================================
+*45.4*	Editing files with a different encoding
+
+Suppose you have setup Vim to use Unicode, and you want to edit a file that is
+in 16-bit Unicode.  Sounds simple, right?  Well, Vim actually uses utf-8
+encoding internally, thus the 16-bit encoding must be converted.  Thus there
+is a difference between the character set (Unicode) and the encoding (utf-8 or
+16-bit).
+   Vim will try to detect what kind of file you are editing.  It uses the
+encoding names in the 'fileencodings' option.  When using Unicode, the default
+value is: "ucs-bom,utf-8,latin1".  This means that Vim checks the file to see
+if it's one of these encodings:
+
+	ucs-bom		File must start with a Byte Order Mark (BOM).  This
+			allows detection of 16-bit, 32-bit and utf-8 Unicode
+			encodings.
+	utf-8		utf-8 Unicode.  This is rejected when a sequence of
+			bytes is illegal in utf-8.
+	latin1		The good old 8-bit encoding.  Always works.
+
+When you start editing that 16-bit Unicode file, and it has a BOM, Vim will
+detect this and convert the file to utf-8 when reading it.  The 'fileencoding'
+option (without s at the end) is set to the detected value.  In this case it
+is "ucs-2le".  That means it's Unicode, two bytes and little-endian.  This
+file format is common on MS-Windows (e.g., for registry files).
+   When writing the file, Vim will compare 'fileencoding' with 'encoding'.  If
+they are different, the text will be converted.
+   An empty value for 'fileencoding' means that no conversion is to be done.
+Thus the text is assumed to be encoded with 'encoding'.
+
+If the default 'fileencodings' value is not good for you, set it to the
+encodings you want Vim to try.  Only when a value is found to be invalid will
+the next one be used.  Putting "latin1" first doesn't work, because it is
+never illegal.  An example, to fall back to Japanese when the file doesn't
+have a BOM and isn't utf-8: >
+
+	:set fileencodings=ucs-bom,utf-8,sjis
+
+See |encoding-values| for suggested values.  Other values may work as well.
+This depends on the conversion available.
+
+
+FORCING AN ENCODING
+
+If the automatic detection doesn't work you must tell Vim what encoding the
+file is.  Example: >
+
+	:edit ++enc=koi8-r russian.txt
+
+The "++enc" part specifies the name of the encoding to be used for this file
+only.  Vim will convert the file from the specified encoding, Russian in this
+example, to 'encoding'.  'fileencoding' will also be set to the specified
+encoding, so that the reverse conversion can be done when writing the file.
+   The same argument can be used when writing the file.  This way you can
+actually use Vim to convert a file.  Example: >
+
+	:write ++enc=utf-8 russian.txt
+<
+	Note:
+	Conversion may result in lost characters.  Conversion from an encoding
+	to Unicode and back is mostly free of this problem, unless there are
+	illegal characters.  Conversion from Unicode to other encodings often
+	loses information when there was more than one language in the file.
+
+==============================================================================
+*45.5*	Entering language text
+
+Computer keyboards don't have much more than a hundred keys.  Some languages
+have thousands of characters, Unicode has ten thousands.  So how do you type
+these characters?
+   First of all, when you don't use too many of the special characters, you
+can use digraphs.  This was already explained in |24.9|.
+   When you use a language that uses many more characters than keys on your
+keyboard, you will want to use an Input Method (IM).  This requires learning
+the translation from typed keys to resulting character.  When you need an IM
+you probably already have one on your system.  It should work with Vim like
+with other programs.  For details see |mbyte-XIM| for the X Window system and
+|mbyte-IME| for MS-Windows.
+
+
+KEYMAPS
+
+For some languages the character set is different from latin, but uses a
+similar number of characters.  It's possible to map keys to characters.  Vim
+uses keymaps for this.
+   Suppose you want to type Hebrew.  You can load the keymap like this: >
+
+	:set keymap=hebrew
+
+Vim will try to find a keymap file for you.  This depends on the value of
+'encoding'.  If no matching file was found, you will get an error message.
+
+Now you can type Hebrew in Insert mode.  In Normal mode, and when typing a ":"
+command, Vim automatically switches to English.  You can use this command to
+switch between Hebrew and English: >
+
+	CTRL-^
+
+This only works in Insert mode and Command-line mode.  In Normal mode it does
+something completely different (jumps to alternate file).
+   The usage of the keymap is indicated in the mode message, if you have the
+'showmode' option set.  In the GUI Vim will indicate the usage of keymaps with
+a different cursor color.
+   You can also change the usage of the keymap with the 'iminsert' and
+'imsearch' options.
+
+To see the list of mappings, use this command: >
+
+	:lmap
+
+To find out which keymap files are available, in the GUI you can use the
+Edit/Keymap menu.  Otherwise you can use this command: >
+
+	:echo globpath(&rtp, "keymap/*.vim")
+
+
+DO-IT-YOURSELF KEYMAPS
+
+You can create your own keymap file.  It's not very difficult.  Start with
+a keymap file that is similar to the language you want to use.  Copy it to the
+"keymap" directory in your runtime directory.  For example, for Unix, you
+would use the directory "~/.vim/keymap".
+   The name of the keymap file must look like this:
+
+	keymap/{name}.vim ~
+or
+	keymap/{name}_{encoding}.vim ~
+
+{name} is the name of the keymap.  Chose a name that is obvious, but different
+from existing keymaps (unless you want to replace an existing keymap file).
+{name} cannot contain an underscore.  Optionally, add the encoding used after
+an underscore.  Examples:
+
+	keymap/hebrew.vim ~
+	keymap/hebrew_utf-8.vim ~
+
+The contents of the file should be self-explanatory.  Look at a few of the
+keymaps that are distributed with Vim.  For the details, see |mbyte-keymap|.
+
+
+LAST RESORT
+
+If all other methods fail, you can enter any character with CTRL-V:
+
+	encoding   type			range ~
+	8-bit	   CTRL-V 123		decimal 0-255
+	8-bit	   CTRL-V x a1		hexadecimal 00-ff
+	16-bit     CTRL-V u 013b	hexadecimal 0000-ffff
+	31-bit	   CTRL-V U 001303a4	hexadecimal 00000000-7fffffff
+
+Don't type the spaces.  See |i_CTRL-V_digit| for the details.
+
+==============================================================================
+
+Next chapter: |usr_90.txt|  Installing Vim
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_90.txt b/runtime/doc/usr_90.txt
new file mode 100644
index 0000000..4a9c488
--- /dev/null
+++ b/runtime/doc/usr_90.txt
@@ -0,0 +1,498 @@
+*usr_90.txt*	For Vim version 7.0aa.  Last change: 2004 Mar 21
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+				Installing Vim
+
+								*install*
+Before you can use Vim you have to install it.  Depending on your system it's
+simple or easy.  This chapter gives a few hints and also explains how
+upgrading to a new version is done.
+
+|90.1|	Unix
+|90.2|	MS-Windows
+|90.3|	Upgrading
+|90.4|	Common installation issues
+|90.5|	Uninstalling Vim
+
+ Previous chapter: |usr_45.txt|  Select your language
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*90.1*	Unix
+
+First you have to decide if you are going to install Vim system-wide or for a
+single user.  The installation is almost the same, but the directory where Vim
+is installed in differs.
+   For a system-wide installation the base directory "/usr/local" is often
+used.  But this may be different for your system.  Try finding out where other
+packages are installed.
+   When installing for a single user, you can use your home directory as the
+base.  The files will be placed in subdirectories like "bin" and "shared/vim".
+
+
+FROM A PACKAGE
+
+You can get precompiled binaries for many different UNIX systems.  There is a
+long list with links on this page:
+
+	http://www.vim.org/binaries.html ~
+
+Volunteers maintain the binaries, so they are often out of date.  It is a
+good idea to compile your own UNIX version from the source.  Also, creating
+the editor from the source allows you to control which features are compiled.
+This does require a compiler though.
+
+If you have a Linux distribution, the "vi" program is probably a minimal
+version of Vim.  It doesn't do syntax highlighting, for example.  Try finding
+another Vim package in your distribution, or search on the web site.
+
+
+FROM SOURCES
+
+To compile and install Vim, you will need the following:
+
+	-  A C compiler (GCC preferred)
+	-  The GZIP program (you can get it from www.gnu.org)
+	-  The Vim source and runtime archives
+
+To get the Vim archives, look in this file for a mirror near you, this should
+provide the fastest download:
+
+	ftp://ftp.vim.org/pub/vim/MIRRORS ~
+
+Or use the home site ftp.vim.org, if you think it's fast enough.  Go to the
+"unix" directory and you'll find a list of files there.  The version number is
+embedded in the file name.  You will want to get the most recent version.
+   You can get the files for Unix in two ways: One big archive that contains
+everything, or four smaller ones that each fit on a floppy disk.  For version
+6.1 the single big one is called:
+
+	vim-6.1.tar.bz2 ~
+
+You need the bzip2 program to uncompress it.  If you don't have it, get the
+four smaller files, which can be uncompressed with gzip.  For Vim 6.1 they are
+called:
+
+	vim-6.1-src1.tar.gz ~
+	vim-6.1-src2.tar.gz ~
+	vim-6.1-rt1.tar.gz ~
+	vim-6.1-rt2.tar.gz ~
+
+
+COMPILING
+
+First create a top directory to work in, for example: >
+
+	mkdir ~/vim
+	cd ~/vim
+
+Then unpack the archives there.  If you have the one big archive, you unpack
+it like this: >
+
+	bzip2 -d -c path/vim-6.1.tar.bz2 | tar xf -
+
+Change "path" to where you have downloaded the file. >
+
+	gzip -d -c path/vim-6.1-src1.tar.gz | tar xf -
+	gzip -d -c path/vim-6.1-src2.tar.gz | tar xf -
+	gzip -d -c path/vim-6.1-rt1.tar.gz | tar xf -
+	gzip -d -c path/vim-6.1-rt2.tar.gz | tar xf -
+
+If you are satisfied with getting the default features, and your environment
+is setup properly, you should be able to compile Vim with just this: >
+
+	cd vim61/src
+	make
+
+The make program will run configure and compile everything.  Further on we
+will explain how to compile with different features.
+   If there are errors while compiling, carefully look at the error messages.
+There should be a hint about what went wrong.  Hopefully you will be able to
+correct it.  You might have to disable some features to make Vim compile.
+Look in the Makefile for specific hints for your system.
+
+
+TESTING
+
+Now you can check if compiling worked OK: >
+
+	make test
+
+This will run a sequence of test scripts to verify that Vim works as expected.
+Vim will be started many times and all kinds of text and messages flash by.
+If it is alright you will finally see:
+
+	test results: ~
+	ALL DONE ~
+
+If there are one or two messages about failed tests, Vim might still work, but
+not perfectly.  If you see a lot of error messages or Vim doesn't finish until
+the end, there must be something wrong.  Either try to find out yourself, or
+find someone who can solve it.  You could look in the |maillist-archive| for a
+solution.  If everything else fails, you could ask in the vim |maillist| if
+someone can help you.
+
+
+INSTALLING
+							*install-home*
+If you want to install in your home directory, edit the Makefile and search
+for a line:
+
+	#prefix = $(HOME) ~
+
+Remove the # at the start of the line.
+   When installing for the whole system, Vim has most likely already selected
+a good installation directory for you.  You can also specify one, see below.
+You need to become root for the following.
+
+To install Vim do: >
+
+	make install
+
+That should move all the relevant files to the right place.  Now you can try
+running vim to verify that it works.  Use two simple tests to check if Vim can
+find its runtime files: >
+
+	:help
+	:syntax enable
+
+If this doesn't work, use this command to check where Vim is looking for the
+runtime files: >
+
+	:echo $VIMRUNTIME
+
+You can also start Vim with the "-V" argument to see what happens during
+startup: >
+
+	vim -V
+
+Don't forget that the user manual assumes you Vim in a certain way.  After
+installing Vim, follow the instructions at |not-compatible| to make Vim work
+as assumed in this manual.
+
+
+SELECTING FEATURES
+
+Vim has many ways to select features.  One of the simple ways is to edit the
+Makefile.  There are many directions and examples.  Often you can enable or
+disable a feature by uncommenting a line.
+   An alternative is to run "configure" separately.  This allows you to
+specify configuration options manually.  The disadvantage is that you have to
+figure out what exactly to type.
+   Some of the most interesting configure arguments follow.  These can also be
+enabled from the Makefile.
+
+	--prefix={directory}		Top directory where to install Vim.
+
+	--with-features=tiny		Compile with many features disabled.
+	--with-features=small		Compile with some features disabled.
+	--with-features=big		Compile with more features enabled.
+	--with-features=huge		Compile with most features enabled.
+					See |+feature-list| for which feature
+					is enabled in which case.
+
+	--enable-perlinterp		Enable the Perl interface.  There are
+					similar arguments for ruby, python and
+					tcl.
+
+	--disable-gui			Do not compile the GUI interface.
+	--without-x			Do not compile X-windows features.
+					When both of these are used, Vim will
+					not connect to the X server, which
+					makes startup faster.
+
+To see the whole list use: >
+
+	./configure --help
+
+You can find a bit of explanation for each feature, and links for more
+information here: |feature-list|.
+   For the adventurous, edit the file "feature.h".  You can also change the
+source code yourself!
+
+==============================================================================
+*90.2*	MS-Windows
+
+There are two ways to install the Vim program for Microsoft Windows.  You can
+uncompress several archives, or use a self-installing big archive.  Most users
+with fairly recent computers will prefer the second method.  For the first
+one, you will need:
+
+	- An archive with binaries for Vim.
+	- The Vim runtime archive.
+	- A program to unpack the zip files.
+
+To get the Vim archives, look in this file for a mirror near you, this should
+provide the fastest download:
+
+	ftp://ftp.vim.org/pub/vim/MIRRORS ~
+
+Or use the home site ftp.vim.org, if you think it's fast enough.  Go to the
+"pc" directory and you'll find a list of files there.  The version number is
+embedded in the file name.  You will want to get the most recent version.
+We will use "61" here, which is version 6.1.
+
+	gvim61.exe		The self-installing archive.
+
+This is all you need for the second method.  Just launch the executable, and
+follow the prompts.
+
+For the first method you must chose one of the binary archives.  These are
+available:
+
+	gvim61.zip		The normal MS-Windows GUI version.
+	gvim61ole.zip		The MS-Windows GUI version with OLE support.
+				Uses more memory, supports interfacing with
+				other OLE applications.
+	vim61w32.zip		32 bit MS-Windows console version.  For use in
+				a Win NT/2000/XP console.  Does not work well
+				on Win 95/98.
+	vim61d32.zip		32 bit MS-DOS version.  For use in the
+				Win 95/98 console window.
+	vim61d16.zip		16 bit MS-DOS version.  Only for old systems.
+				Does not support long filenames.
+
+You only need one of them.  Although you could install both a GUI and a
+console version.  You always need to get the archive with runtime files.
+
+	vim61rt.zip		The runtime files.
+
+Use your un-zip program to unpack the files.  For example, using the "unzip"
+program: >
+
+	cd c:\
+	unzip path\gvim61.zip
+	unzip path\vim61rt.zip
+
+This will unpack the files in the directory "c:\vim\vim61".  If you already
+have a "vim" directory somewhere, you will want to move to the directory just
+above it.
+   Now change to the "vim\vim61" directory and run the install program: >
+
+	install
+
+Carefully look through the messages and select the options you want to use.
+If you finally select "do it" the install program will carry out the actions
+you selected.
+   The install program doesn't move the runtime files.  They remain where you
+unpacked them.
+
+In case you are not satisfied with the features included in the supplied
+binaries, you could try compiling Vim yourself.  Get the source archive from
+the same location as where the binaries are.  You need a compiler for which a
+makefile exists.  Microsoft Visual C works, but is expensive.  The Free
+Borland command-line compiler 5.5 can be used, as well as the free MingW and
+Cygwin compilers.  Check the file src/INSTALLpc.txt for hints.
+
+==============================================================================
+*90.3*	Upgrading
+
+If you are running one version of Vim and want to install another, here is
+what to do.
+
+
+UNIX
+
+When you type "make install" the runtime files will be copied to a directory
+which is specific for this version.  Thus they will not overwrite a previous
+version.  This makes it possible to use two or more versions next to
+each other.
+   The executable "vim" will overwrite an older version.  If you don't care
+about keeping the old version, running "make install" will work fine.  You can
+delete the old runtime files manually.  Just delete the directory with the
+version number in it and all files below it.  Example: >
+
+	rm -rf /usr/local/share/vim/vim58
+
+There are normally no changed files below this directory.  If you did change
+the "filetype.vim" file, for example, you better merge the changes into the
+new version before deleting it.
+
+If you are careful and want to try out the new version for a while before
+switching to it, install the new version under another name.  You need to
+specify a configure argument.  For example: >
+
+	./configure --with-vim-name=vim6
+
+Before running "make install", you could use "make -n install" to check that
+no valuable existing files are overwritten.
+   When you finally decide to switch to the new version, all you need to do is
+to rename the binary to "vim".  For example: >
+
+	mv /usr/local/bin/vim6 /usr/local/bin/vim
+
+
+MS-WINDOWS
+
+Upgrading is mostly equal to installing a new version.  Just unpack the files
+in the same place as the previous version.  A new directory will be created,
+e.g., "vim61", for the files of the new version.  Your runtime files, vimrc
+file, viminfo, etc. will be left alone.
+   If you want to run the new version next to the old one, you will have to do
+some handwork.  Don't run the install program, it will overwrite a few files
+of the old version.  Execute the new binaries by specifying the full path.
+The program should be able to automatically find the runtime files for the
+right version.  However, this won't work if you set the $VIMRUNTIME variable
+somewhere.
+   If you are satisfied with the upgrade, you can delete the files of the
+previous version.  See |90.5|.
+
+==============================================================================
+*90.4*	Common installation issues
+
+This section describes some of the common problems that occur when installing
+Vim and suggests some solutions.  It also contains answers to many
+installation questions.
+
+
+Q: I Do Not Have Root Privileges.  How Do I Install Vim? (Unix)
+
+Use the following configuration command to install Vim in a directory called
+$HOME/vim: >
+
+	./configure --prefix=$HOME
+
+This gives you a personal copy of Vim.  You need to put $HOME/bin in your
+path to execute the editor.  Also see |install-home|.
+
+
+Q: The Colors Are Not Right on My Screen. (Unix)
+
+Check your terminal settings by using the following command in a shell: >
+
+	echo $TERM
+
+If the terminal type listed is not correct, fix it.  For more hints, see
+|06.2|.  Another solution is to always use the GUI version of Vim, called
+gvim.  This avoids the need for a correct terminal setup.
+
+
+Q: My Backspace And Delete Keys Don't Work Right
+
+The definition of what key sends what code is very unclear for backspace <BS>
+and Delete <Del> keys.  First of all, check your $TERM setting.  If there is
+nothing wrong with it, try this: >
+
+	:set t_kb=^V<BS>
+	:set t_kD=^V<Del>
+
+In the first line you need to press CTRL-V and then hit the backspace key.
+In the second line you need to press CTRL-V and then hit the Delete key.
+You can put these lines in your vimrc file, see |05.1|.  A disadvantage is
+that it won't work when you use another terminal some day.  Look here for
+alternate solutions: |:fixdel|.
+
+
+Q: I Am Using RedHat Linux.  Can I Use the Vim That Comes with the System?
+
+By default RedHat installs a minimal version of Vim.  Check your RPM packages
+for something named "Vim-enhanced-version.rpm" and install that.
+
+
+Q: How Do I Turn Syntax Coloring On?  How do I make plugins work?
+
+Use the example vimrc script.  You can find an explanation on how to use it
+here: |not-compatible|.
+
+See chapter 6 for information about syntax highlighting: |usr_06.txt|.
+
+
+Q: What Is a Good vimrc File to Use?
+
+See the www.vim.org Web site for several good examples.
+
+
+Q: Where Do I Find a Good Vim Plugin?
+
+See the Vim-online site: http://vim.sf.net.  Many users have uploaded useful
+Vim scripts and plugins there.
+
+
+Q: Where Do I Find More Tips?
+
+See the Vim-online site: http://vim.sf.net.  There is an archive with hints
+from Vim users.  You might also want to search in the |maillist-archive|.
+
+==============================================================================
+*90.5*	Uninstalling Vim
+
+In the unlikely event you want to uninstall Vim completely, this is how you do
+it.
+
+
+UNIX
+
+When you installed Vim as a package, check your package manager to find out
+how to remove the package again.
+   If you installed Vim from sources you can use this command: >
+
+	make uninstall
+
+However, if you have deleted the original files or you used an archive that
+someone supplied, you can't do this.  Do delete the files manually, here is an
+example for when "/usr/local" was used as the root: >
+
+	rm -rf /usr/local/share/vim/vim61
+	rm /usr/local/bin/eview
+	rm /usr/local/bin/evim
+	rm /usr/local/bin/ex
+	rm /usr/local/bin/gview
+	rm /usr/local/bin/gvim
+	rm /usr/local/bin/gvim
+	rm /usr/local/bin/gvimdiff
+	rm /usr/local/bin/rgview
+	rm /usr/local/bin/rgvim
+	rm /usr/local/bin/rview
+	rm /usr/local/bin/rvim
+	rm /usr/local/bin/rvim
+	rm /usr/local/bin/view
+	rm /usr/local/bin/vim
+	rm /usr/local/bin/vimdiff
+	rm /usr/local/bin/vimtutor
+	rm /usr/local/bin/xxd
+	rm /usr/local/man/man1/eview.1
+	rm /usr/local/man/man1/evim.1
+	rm /usr/local/man/man1/ex.1
+	rm /usr/local/man/man1/gview.1
+	rm /usr/local/man/man1/gvim.1
+	rm /usr/local/man/man1/gvimdiff.1
+	rm /usr/local/man/man1/rgview.1
+	rm /usr/local/man/man1/rgvim.1
+	rm /usr/local/man/man1/rview.1
+	rm /usr/local/man/man1/rvim.1
+	rm /usr/local/man/man1/view.1
+	rm /usr/local/man/man1/vim.1
+	rm /usr/local/man/man1/vimdiff.1
+	rm /usr/local/man/man1/vimtutor.1
+	rm /usr/local/man/man1/xxd.1
+
+
+MS-WINDOWS
+
+If you installed Vim with the self-installing archive you can run
+the "uninstall-gui" program located in the same directory as the other Vim
+programs, e.g. "c:\vim\vim61".  You can also launch it from the Start menu if
+installed the Vim entries there.  This will remove most of the files, menu
+entries and desktop shortcuts.  Some files may remain however, as they need a
+Windows restart before being deleted.
+   You will be given the option to remove the whole "vim" directory.  It
+probably contains your vimrc file and other runtime files that you created, so
+be careful.
+
+Else, if you installed Vim with the zip archives, the preferred way is to use
+the "uninstal" program (note the missing l at the end).  You can find it in
+the same directory as the "install" program, e.g., "c:\vim\vim61".  This
+should also work from the usual "install/remove software" page.
+   However, this only removes the registry entries for Vim.  You have to
+delete the files yourself.  Simply select the directory "vim\vim61" and delete
+it recursively.  There should be no files there that you changed, but you
+might want to check that first.
+   The "vim" directory probably contains your vimrc file and other runtime
+files that you created.  You might want to keep that.
+
+==============================================================================
+
+Table of contents: |usr_toc.txt|
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/usr_toc.txt b/runtime/doc/usr_toc.txt
new file mode 100644
index 0000000..c371dda
--- /dev/null
+++ b/runtime/doc/usr_toc.txt
@@ -0,0 +1,340 @@
+*usr_toc.txt*	For Vim version 7.0aa.  Last change: 2003 Aug 18
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+			      Table Of Contents			*user-manual*
+
+==============================================================================
+Overview ~
+
+Getting Started
+|usr_01.txt|  About the manuals
+|usr_02.txt|  The first steps in Vim
+|usr_03.txt|  Moving around
+|usr_04.txt|  Making small changes
+|usr_05.txt|  Set your settings
+|usr_06.txt|  Using syntax highlighting
+|usr_07.txt|  Editing more than one file
+|usr_08.txt|  Splitting windows
+|usr_09.txt|  Using the GUI
+|usr_10.txt|  Making big changes
+|usr_11.txt|  Recovering from a crash
+|usr_12.txt|  Clever tricks
+
+Editing Effectively
+|usr_20.txt|  Typing command-line commands quickly
+|usr_21.txt|  Go away and come back
+|usr_22.txt|  Finding the file to edit
+|usr_23.txt|  Editing other files
+|usr_24.txt|  Inserting quickly
+|usr_25.txt|  Editing formatted text
+|usr_26.txt|  Repeating
+|usr_27.txt|  Search commands and patterns
+|usr_28.txt|  Folding
+|usr_29.txt|  Moving through programs
+|usr_30.txt|  Editing programs
+|usr_31.txt|  Exploiting the GUI
+
+Tuning Vim
+|usr_40.txt|  Make new commands
+|usr_41.txt|  Write a Vim script
+|usr_42.txt|  Add new menus
+|usr_43.txt|  Using filetypes
+|usr_44.txt|  Your own syntax highlighted
+|usr_45.txt|  Select your language
+
+Making Vim Run
+|usr_90.txt|  Installing Vim
+
+
+The user manual is available as a single, ready to print HTML and PDF file
+here:
+	http://vimdoc.sf.net
+
+==============================================================================
+Getting Started ~
+
+Read this from start to end to learn the essential commands.
+
+|usr_01.txt|  About the manuals
+		|01.1|	Two manuals
+		|01.2|	Vim installed
+		|01.3|	Using the Vim tutor
+		|01.4|	Copyright
+
+|usr_02.txt|  The first steps in Vim
+		|02.1|	Running Vim for the First Time
+		|02.2|	Inserting text
+		|02.3|	Moving around
+		|02.4|	Deleting characters
+		|02.5|	Undo and Redo
+		|02.6|	Other editing commands
+		|02.7|	Getting out
+		|02.8|	Finding help
+
+|usr_03.txt|  Moving around
+		|03.1|	Word movement
+		|03.2|	Moving to the start or end of a line
+		|03.3|	Moving to a character
+		|03.4|	Matching a paren
+		|03.5|	Moving to a specific line
+		|03.6|	Telling where you are
+		|03.7|	Scrolling around
+		|03.8|	Simple searches
+		|03.9|	Simple search patterns
+		|03.10|	Using marks
+
+|usr_04.txt|  Making small changes
+		|04.1|	Operators and motions
+		|04.2|	Changing text
+		|04.3|	Repeating a change
+		|04.4|	Visual mode
+		|04.5|	Moving text
+		|04.6|	Copying text
+		|04.7|	Using the clipboard
+		|04.8|	Text objects
+		|04.9|	Replace mode
+		|04.10|	Conclusion
+
+|usr_05.txt|  Set your settings
+		|05.1|	The vimrc file
+		|05.2|	The example vimrc file explained
+		|05.3|	Simple mappings
+		|05.4|	Adding a plugin
+		|05.5|	Adding a help file
+		|05.6|	The option window
+		|05.7|	Often used options
+
+|usr_06.txt|  Using syntax highlighting
+		|06.1|	Switching it on
+		|06.2|	No or wrong colors?
+		|06.3|	Different colors
+		|06.4|	With colors or without colors
+		|06.5|	Printing with colors
+		|06.6|	Further reading
+
+|usr_07.txt|  Editing more than one file
+		|07.1|	Edit another file
+		|07.2|	A list of files
+		|07.3|	Jumping from file to file
+		|07.4|	Backup files
+		|07.5|	Copy text between files
+		|07.6|	Viewing a file
+		|07.7|	Changing the file name
+
+|usr_08.txt|  Splitting windows
+		|08.1|	Split a window
+		|08.2|	Split a window on another file
+		|08.3|	Window size
+		|08.4|	Vertical splits
+		|08.5|	Moving windows
+		|08.6|	Commands for all windows
+		|08.7|	Viewing differences with vimdiff
+		|08.8|	Various
+
+|usr_09.txt|  Using the GUI
+		|09.1|	Parts of the GUI
+		|09.2|	Using the mouse
+		|09.3|	The clipboard
+		|09.4|	Select mode
+
+|usr_10.txt|  Making big changes
+		|10.1|	Record and playback commands
+		|10.2|	Substitution
+		|10.3|	Command ranges
+		|10.4|	The global command
+		|10.5|	Visual block mode
+		|10.6|	Reading and writing part of a file
+		|10.7|	Formatting text
+		|10.8|	Changing case
+		|10.9|	Using an external program
+
+|usr_11.txt|  Recovering from a crash
+		|11.1|	Basic recovery
+		|11.2|	Where is the swap file?
+		|11.3|	Crashed or not?
+		|11.4|	Further reading
+
+|usr_12.txt|  Clever tricks
+		|12.1|	Replace a word
+		|12.2|	Change "Last, First" to "First Last"
+		|12.3|	Sort a list
+		|12.4|	Reverse line order
+		|12.5|	Count words
+		|12.6|	Find a man page
+		|12.7|	Trim blanks
+		|12.8|	Find where a word is used
+
+==============================================================================
+Editing Effectively ~
+
+Subjects that can be read independently.
+
+|usr_20.txt|  Typing command-line commands quickly
+		|20.1|	Command line editing
+		|20.2|	Command line abbreviations
+		|20.3|	Command line completion
+		|20.4|	Command line history
+		|20.5|	Command line window
+
+|usr_21.txt|  Go away and come back
+		|21.1|	Suspend and resume
+		|21.2|	Executing shell commands
+		|21.3|	Remembering information; viminfo
+		|21.4|	Sessions
+		|21.5|	Views
+		|21.6|	Modelines
+
+|usr_22.txt|  Finding the file to edit
+		|22.1|	The file explorer
+		|22.2|	The current directory
+		|22.3|	Finding a file
+		|22.4|	The buffer list
+
+|usr_23.txt|  Editing other files
+		|23.1|	DOS, Mac and Unix files
+		|23.2|	Files on the internet
+		|23.3|	Encryption
+		|23.4|	Binary files
+		|23.5|	Compressed files
+
+|usr_24.txt|  Inserting quickly
+		|24.1|	Making corrections
+		|24.2|	Showing matches
+		|24.3|	Completion
+		|24.4|	Repeating an insert
+		|24.5|	Copying from another line
+		|24.6|	Inserting a register
+		|24.7|	Abbreviations
+		|24.8|	Entering special characters
+		|24.9|	Digraphs
+		|24.10|	Normal mode commands
+
+|usr_25.txt|  Editing formatted text
+		|25.1|	Breaking lines
+		|25.2|	Aligning text
+		|25.3|	Indents and tabs
+		|25.4|	Dealing with long lines
+		|25.5|	Editing tables
+
+|usr_26.txt|  Repeating
+		|26.1|	Repeating with Visual mode
+		|26.2|	Add and subtract
+		|26.3|	Making a change in many files
+		|26.4|	Using Vim from a shell script
+
+|usr_27.txt|  Search commands and patterns
+		|27.1|	Ignoring case
+		|27.2|	Wrapping around the file end
+		|27.3|	Offsets
+		|27.4|	Matching multiple times
+		|27.5|	Alternatives
+		|27.6|	Character ranges
+		|27.7|	Character classes
+		|27.8|	Matching a line break
+		|27.9|	Examples
+
+|usr_28.txt|  Folding
+		|28.1|	What is folding?
+		|28.2|	Manual folding
+		|28.3|	Working with folds
+		|28.4|	Saving and restoring folds
+		|28.5|	Folding by indent
+		|28.6|	Folding with markers
+		|28.7|	Folding by syntax
+		|28.8|	Folding by expression
+		|28.9|	Folding unchanged lines
+		|28.10| Which fold method to use?
+
+|usr_29.txt|  Moving through programs
+		|29.1|	Using tags
+		|29.2|	The preview window
+		|29.3|	Moving through a program
+		|29.4|	Finding global identifiers
+		|29.5|	Finding local identifiers
+
+|usr_30.txt|  Editing programs
+		|30.1|	Compiling
+		|30.2|	Indenting C files
+		|30.3|	Automatic indenting
+		|30.4|	Other indenting
+		|30.5|	Tabs and spaces
+		|30.6|	Formatting comments
+
+|usr_31.txt|  Exploiting the GUI
+		|31.1|	The file browser
+		|31.2|	Confirmation
+		|31.3|	Menu shortcuts
+		|31.4|	Vim window position and size
+		|31.5|	Various
+
+==============================================================================
+Tuning Vim ~
+
+Make Vim work as you like it.
+
+|usr_40.txt|  Make new commands
+		|40.1|	Key mapping
+		|40.2|	Defining command-line commands
+		|40.3|	Autocommands
+
+|usr_41.txt|  Write a Vim script
+		|41.1|	Introduction
+		|41.2|	Variables
+		|41.3|	Expressions
+		|41.4|	Conditionals
+		|41.5|	Executing an expression
+		|41.6|	Using functions
+		|41.7|	Defining a function
+		|41.8|	Exceptions
+		|41.9|	Various remarks
+		|41.10|	Writing a plugin
+		|41.11|	Writing a filetype plugin
+		|41.12|	Writing a compiler plugin
+
+|usr_42.txt|  Add new menus
+		|42.1|	Introduction
+		|42.2|	Menu commands
+		|42.3|	Various
+		|42.4|	Toolbar and popup menus
+
+|usr_43.txt|  Using filetypes
+		|43.1|	Plugins for a filetype
+		|43.2|	Adding a filetype
+
+|usr_44.txt|  Your own syntax highlighted
+		|44.1|	Basic syntax commands
+		|44.2|	Keywords
+		|44.3|	Matches
+		|44.4|	Regions
+		|44.5|	Nested items
+		|44.6|	Following groups
+		|44.7|	Other arguments
+		|44.8|	Clusters
+		|44.9|	Including another syntax file
+		|44.10|	Synchronizing
+		|44.11|	Installing a syntax file
+		|44.12|	Portable syntax file layout
+
+|usr_45.txt|  Select your language
+		|45.1|	Language for Messages
+		|45.2|	Language for Menus
+		|45.3|	Using another encoding
+		|45.4|	Editing files with a different encoding
+		|45.5|	Entering language text
+
+==============================================================================
+Making Vim Run ~
+
+Before you can use Vim.
+
+|usr_90.txt|  Installing Vim
+		|90.1|	Unix
+		|90.2|	MS-Windows
+		|90.3|	Upgrading
+		|90.4|	Common installation issues
+		|90.5|	Uninstalling Vim
+
+==============================================================================
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
new file mode 100644
index 0000000..252572d
--- /dev/null
+++ b/runtime/doc/various.txt
@@ -0,0 +1,1098 @@
+*various.txt*   For Vim version 7.0aa.  Last change: 2004 May 01
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Various commands					*various*
+
+1. Various commands		|various-cmds|
+2. Online help			|online-help|
+3. Printing			|printing|
+4. Using Vim like less or more	|less|
+
+==============================================================================
+1. Various commands					*various-cmds*
+
+							*CTRL-L*
+CTRL-L			Clear and redraw the screen (later).
+
+							*:redr* *:redraw*
+:redr[aw][!]		Redraw the screen right now.  When ! is included it is
+			cleared first.
+			Useful to update the screen halfway executing a script
+			or function.  Also when halfway a mapping and
+			'lazyredraw' is set.
+
+						*:redraws* *:redrawstatus*
+:redraws[tatus][!]	Redraw the status line of the current window.  When !
+			is included all status lines are redrawn.
+			Useful to update the status line(s) when 'statusline'
+			includes an item that doesn't cause automatic
+			updating.
+
+							*N<Del>*
+<Del>			When entering a number: Remove the last digit.
+			Note: if you like to use <BS> for this, add this
+			mapping to your .vimrc: >
+				:map CTRL-V <BS>   CTRL-V <Del>
+<			See |:fixdel| if your <Del> key does not do what you
+			want.
+
+:as[cii]	or					*ga* *:as* *:ascii*
+ga			Print the ascii value of the character under the
+			cursor in decimal, hexadecimal and octal.  For
+			example, when the cursor is on a 'R':
+				<R>  82,  Hex 52,  Octal 122 ~
+			When the character is a non-standard ASCII character,
+			but printable according to the 'isprint' option, the
+			non-printable version is also given.  When the
+			character is larger than 127, the <M-x> form is also
+			printed.  For example:
+				<~A>  <M-^A>  129,  Hex 81,  Octal 201 ~
+				<p>  <|~>  <M-~>  254,  Hex fe,  Octal 376 ~
+			(where <p> is a special character)
+			The <Nul> character in a file is stored internally as
+			<NL>, but it will be shown as:
+				<^@>  0,  Hex 00,  Octal 000 ~
+			Mnemonic: Get Ascii value.  {not in Vi}
+
+							*g8*
+g8			Print the hex values of the bytes used in the
+			character under the cursor, assuming it is in |UTF-8|
+			encoding.  This also shows composing characters.
+			Example of a character with three composing
+			characters:
+				e0 b8 81 + e0 b8 b9 + e0 b9 89 ~
+			{not in Vi}
+
+							*:p* *:pr* *:print*
+:[range]p[rint]		Print [range] lines (default current line).
+			Note: If you are looking for a way to print your text
+			file, you need an external program for that.  In the
+			GUI you can use the File.Print menu entry.
+			(For printing on paper see |:hardcopy|)
+
+:[range]p[rint] {count}
+			Print {count} lines, starting with [range] (default
+			current line |cmdline-ranges|).
+
+							*:P* *:Print*
+:[range]P[rint] [count]
+			Just as ":print".  Was apparently added to Vi for
+			people that keep the shift key pressed too long...
+
+							*:l* *:list*
+:[range]l[ist] [count]
+			Same as :print, but display unprintable characters
+			with '^'.
+
+							*:nu* *:number*
+:[range]nu[mber] [count]
+			Same as :print, but precede each line with its line
+			number.  (See also 'highlight' option).
+
+							*:#*
+:[range]# [count]	synonym for :number.
+
+							*:z* *E144*
+:{range}z[+-^.=]{count}	Display several lines of text surrounding the line
+			specified with {range}, or around the current line
+			if there is no {range}.  If there is a {count}, that's
+			how many lines you'll see; otherwise, the current
+			window size is used.
+
+			:z can be used either alone or followed by any of
+			several punctuation marks.  These have the following
+			effect:
+
+			mark   first line    last line      new location   ~
+			----   ----------    ---------      ------------
+			+      current line  1 scr forward  1 scr forward
+			-      1 scr back    current line   current line
+			^      2 scr back    1 scr back     1 scr back
+			.      1/2 scr back  1/2 scr fwd    1/2 src fwd
+			=      1/2 src back  1/2 scr fwd    current line
+
+			Specifying no mark at all is the same as "+".
+			If the mark is "=", a line of dashes is printed
+			around the current line.
+
+:{range}z#[+-^.=]{count}				*:z#*
+			Like ":z", but number the lines.
+			{not in all versions of Vi, not with these arguments}
+
+							*:=*
+:=			Print the last line number.
+
+:{range}=		Prints the last line number in {range}.  For example,
+			this prints the current line number: >
+				:.=
+
+:norm[al][!] {commands}					*:norm* *:normal*
+			Execute Normal mode commands {commands}.  This makes
+			it possible to execute Normal mode commands typed on
+			the command-line.  {commands} is executed like it is
+			typed.  For undo all commands are undone together.
+			If the [!] is given, mappings will not be used.
+			{commands} should be a complete command.  If
+			{commands} does not finish a command, the last one
+			will be aborted as if <Esc> or <C-C> was typed.
+			The display isn't updated while ":normal" is busy.
+			This implies that an insert command must be completed
+			(to start Insert mode, see |:startinsert|).  A ":"
+			command must be completed as well.
+			{commands} cannot start with a space. Put a 1 (one)
+			before it, 1 space is one space.
+			The 'insertmode' option is ignored for {commands}.
+			This command cannot be followed by another command,
+			since any '|' is considered part of the command.
+			This command can be used recursively, but the depth is
+			limited by 'maxmapdepth'.
+			When this command is called from a non-remappable
+			mapping |:noremap|, the argument can be mapped anyway.
+			An alternative is to use |:execute|, which uses an
+			expression as argument.  This allows the use of
+			printable characters.  Example: >
+				:exe "normal \<c-w>\<c-w>"
+<			{not in Vi, of course}
+			{not available when the |+ex_extra| feature was
+			disabled at compile time}
+
+:{range}norm[al][!] {commands}				*:normal-range*
+			Execute Normal mode commands {commands} for each line
+			in the {range}.  Before executing the {commands}, the
+			cursor is positioned in the first column of the range,
+			for each line.  Otherwise it's the same as the
+			":normal" command without a range.
+			{not in Vi}
+			Not available when |+ex_extra| feature was disabled at
+			compile time.
+
+							*:sh* *:shell* *E371*
+:sh[ell]		This command starts a shell.  When the shell exits
+			(after the "exit" command) you return to Vim.  The
+			name for the shell command comes from 'shell' option.
+							*E360*
+			Note: This doesn't work when Vim on the Amiga was
+			started in QuickFix mode from a compiler, because the
+			compiler will have set stdin to a non-interactive
+			mode.
+
+							*:!cmd* *:!* *E34*
+:!{cmd}			Execute {cmd} with the shell.  See also the 'shell'
+			and 'shelltype' option.
+			Any '!' in {cmd} is replaced with the previous
+			external command (see also 'cpoptions').  But not when
+			there is a backslash before the '!', then that
+			backslash is removed.  Example: ":!ls" followed by
+			":!echo ! \! \\!" executes "echo ls ! \!".
+			After the command has been executed, the timestamp of
+			the current file is checked |timestamp|.
+			There cannot be a '|' in {cmd}, see |:bar|.
+			A newline character ends {cmd}, what follows is
+			interpreted as a following ":" command.  However, if
+			there is a backslash before the newline it is removed
+			and {cmd} continues.  It doesn't matter how many
+			backslashes are before the newline, only one is
+			removed.
+			On Unix the command normally runs in a non-interactive
+			shell.  If you want an interactive shell to be used
+			(to use aliases) set 'shellcmdflag' to "-ic".
+			For Win32 also see |:!start|.
+			Vim redraws the screen after the command is finished,
+			because it may have printed any text.  This requires a
+			hit-enter prompt, so that you can read any messages.
+			To avoid this use: >
+				:silent !{cmd}
+<			The screen is not redrawn then, thus you have to use
+			CTRL-L or ":redraw!" if the command did display
+			something.
+			Also see |shell-window|.
+
+							*:!!*
+:!!			Repeat last ":!{cmd}".
+
+							*:ve* *:version*
+:ve[rsion]		Print the version number of the editor.  If the
+			compiler used understands "__DATE__" the compilation
+			date is mentioned.  Otherwise a fixed release-date is
+			shown.
+			The following lines contain information about which
+			features were enabled when Vim was compiled.  When
+			there is a preceding '+', the feature is included,
+			when there is a '-' it is excluded.  To change this,
+			you have to edit feature.h and recompile Vim.
+			To check for this in an expression, see |has()|.
+			Here is an overview of the features.
+			The first column shows the smallest version in which
+			they are included:
+			   T	tiny
+			   S	small
+			   N	normal
+			   B	big
+			   H	huge
+			   m	manually enabled or depends on other features
+			 (none) system dependent
+			Thus if a feature is marked with "N", it is included
+			in the normal, big and huge versions of Vim.
+
+							*+feature-list*
+   *+ARP*		Amiga only: ARP support included
+B  *+arabic*		|Arabic| language support
+N  *+autocmd*		|:autocmd|, automatic commands
+m  *+balloon_eval*	|balloon-eval| support
+N  *+browse*		|:browse| command
+N  *+builtin_terms*	some terminals builtin |builtin-terms|
+B  *++builtin_terms*	maximal terminals builtin |builtin-terms|
+N  *+byte_offset*	support for 'o' flag in 'statusline' option, "go"
+			and ":goto" commands.
+N  *+cindent*		|'cindent'|, C indenting
+N  *+clientserver*	Unix and Win32: Remote invocation |clientserver|
+   *+clipboard*		|clipboard| support
+N  *+cmdline_compl*	command line completion |cmdline-completion|
+N  *+cmdline_hist*	command line history |cmdline-history|
+N  *+cmdline_info*	|'showcmd'| and |'ruler'|
+N  *+comments*		|'comments'| support
+N  *+cryptv*		encryption support |encryption|
+B  *+cscope*		|cscope| support
+N  *+dialog_gui*	Support for |:confirm| with GUI dialog.
+N  *+dialog_con*	Support for |:confirm| with console dialog.
+N  *+dialog_con_gui*	Support for |:confirm| with GUI and console dialog.
+N  *+diff*		|vimdiff| and 'diff'
+N  *+digraphs*		|digraphs| *E196*
+   *+dnd*		Support for DnD into the "~ register |quote_~|.
+B  *+emacs_tags*	|emacs-tags| files
+N  *+eval*		expression evaluation |eval.txt|
+N  *+ex_extra*		Vim's extra Ex commands: |:center|, |:left|,
+			|:normal|, |:retab| and |:right|
+N  *+extra_search*	|'hlsearch'| and |'incsearch'| options.
+B  *+farsi*		|farsi| language
+N  *+file_in_path*	|gf|, |CTRL-W_f| and |<cfile>|
+N  *+find_in_path*	include file searches: |[I|, |:isearch|,
+			|CTRL-W_CTRL-I|, |:checkpath|, etc.
+N  *+folding*		|folding|
+   *+footer*		|gui-footer|
+   *+fork*		Unix only: |fork| shell commands
+N  *+gettext*		message translations |multi-lang|
+   *+GUI_Athena*	Unix only: Athena |GUI|
+   *+GUI_neXtaw*	Unix only: neXtaw |GUI|
+   *+GUI_BeOS*		BeOS only: BeOS |GUI|
+   *+GUI_GTK*		Unix only: GTK+ |GUI|
+   *+GUI_Motif*		Unix only: Motif |GUI|
+   *+GUI_Photon*	QNX only:  Photon |GUI|
+m  *+hangul_input*	Hangul input support |hangul|
+   *+iconv*		Compiled with the |iconv()| function, may have |/dyn|
+N  *+insert_expand*	|insert_expand| Insert mode completion
+N  *+jumplist*		|jumplist|
+B  *+keymap*		|'keymap'|
+B  *+langmap*		|'langmap'|
+N  *+libcall*		|libcall()|
+N  *+linebreak*		|'linebreak'|, |'breakat'| and |'showbreak'|
+N  *+lispindent*	|'lisp'|
+N  *+listcmds*		Vim commands for the list of buffers |buffer-hidden|
+			and argument list |:argdelete|
+N  *+localmap*		Support for mappings local to a buffer |:map-local|
+N  *+menu*		|:menu|
+N  *+mksession*		|:mksession|
+N  *+modify_fname*	|filename-modifiers|
+N  *+mouse*		Mouse handling |mouse-using|
+N  *+mouseshape*	|'mouseshape'|
+B  *+mouse_dec*		Unix only: Dec terminal mouse handling |dec-mouse|
+N  *+mouse_gpm*		Unix only: Linux console mouse handling |gpm-mouse|
+B  *+mouse_netterm*	Unix only: netterm mouse handling |netterm-mouse|
+N  *+mouse_pterm*	QNX only: pterm mouse handling |qnx-terminal|
+N  *+mouse_xterm*	Unix only: xterm mouse handling |xterm-mouse|
+B  *+multi_byte*	Korean and other languages |multibyte|
+   *+multi_byte_ime*	Win32 input method for multibyte chars |multibyte-ime|
+N  *+multi_lang*	non-English language support |multi-lang|
+m  *+netbeans_intg*	|netbeans|
+m  *+ole*		Win32 GUI only: |ole-interface|
+   *+osfiletype*	Support for the 'osfiletype' option and filetype
+			checking in automatic commands.  |autocmd-osfiletypes|
+N  *+path_extra*	Up/downwards search in 'path' and 'tags'
+m  *+perl*		Perl interface |perl|, may have |/dyn|
+   *+postscript*	|:hardcopy| writes a PostScript file
+N  *+printer*		|:hardcopy| command
+m  *+python*		Python interface |python|, may have |/dyn|
+N  *+quickfix*		|:make| and |quickfix| commands
+B  *+rightleft*		Right to left typing |'rightleft'|
+m  *+ruby*		Ruby interface |ruby|, may have |/dyn|
+N  *+scrollbind*	|'scrollbind'|
+B  *+signs*		|:sign|
+N  *+smartindent*	|'smartindent'|
+m  *+sniff*		SniFF interface |sniff|
+N  *+statusline*	Options 'statusline', 'rulerformat' and special
+			formats of 'titlestring' and 'iconstring'
+m  *+sun_workshop*	|workshop|
+N  *+syntax*		Syntax highlighting |syntax|
+   *+system()*		Unix only: opposite of |+fork|
+N  *+tag_binary*	binary searching in tags file |tag-binary-search|
+N  *+tag_old_static*	old method for static tags |tag-old-static|
+m  *+tag_any_white*	any white space allowed in tags file |tag-any-white|
+m  *+tcl*		Tcl interface |tcl|, may have |/dyn|
+   *+terminfo*		uses |terminfo| instead of termcap
+N  *+termresponse*	support for |t_RV| and |v:termresponse|
+N  *+textobjects*	|text-objects| selection
+   *+tgetent*		non-Unix only: able to use external termcap
+N  *+title*		Setting the window title |'title'|
+N  *+toolbar*		|gui-toolbar|
+N  *+user_commands*	User-defined commands. |user-commands|
+N  *+viminfo*		|'viminfo'|
+N  *+vertsplit*		Vertically split windows |:vsplit|
+N  *+virtualedit*	|'virtualedit'|
+S  *+visual*		Visual mode |Visual-mode|
+N  *+visualextra*	extra Visual mode commands |blockwise-operators|
+N  *+vreplace*		|gR| and |gr|
+N  *+wildignore*	|'wildignore'|
+N  *+wildmenu*		|'wildmenu'|
+S  *+windows*		more than one window
+m  *+writebackup*	|'writebackup'| is default on
+m  *+xim*		X input method |xim|
+   *+xfontset*		X fontset support |xfontset|
+   *+xsmp*		XSMP (X session management) support
+   *+xsmp_interact*	interactive XSMP (X session management) support
+N  *+xterm_clipboard*	Unix only: xterm clipboard handling
+m  *+xterm_save*	save and restore xterm screen |xterm-screens|
+N  *+X11*		Unix only: can restore window title |X11|
+
+							*/dyn* *E370* *E448*
+			To some of the features "/dyn" is added when the
+			feature is only available when the related library can
+			be dynamically loaded.
+
+:ve[rsion] {nr}		Is now ignored.  This was previously used to check the
+			version number of a .vimrc file.  It was removed,
+			because you can now use the ":if" command for
+			version-dependent behavior.  {not in Vi}
+
+							*:redi* *:redir*
+:redi[r][!] > {file}	Redirect messages to file {file}.  The messages which
+			are the output of commands are written to that file,
+			until redirection ends.  The messages are also still
+			shown on the screen.  When [!] is included, an
+			existing file is overwritten.  When [!] is omitted,
+			and {file} exists, this command fails.
+			Only one ":redir" can be active at a time.  Calls to
+			":redir" will close any active redirection before
+			starting redirection to the new target.
+			To stop the messages and commands from being echoed to
+			the screen, put the commands in a function and call it
+			with ":silent call Function()".
+			{not in Vi}
+
+:redi[r] >> {file}	Redirect messages to file {file}.  Append if {file}
+			already exists.  {not in Vi}
+
+:redi[r] @{a-zA-Z}	Redirect messages to register {a-z}.  Append to the
+			contents of the register if its name is given
+			uppercase {A-Z}.  {not in Vi}
+
+:redi[r] @*		Redirect messages to the clipboard. {not in Vi}
+
+:redi[r] @"		Redirect messages to the unnamed register. {not in Vi}
+
+:redi[r] END		End redirecting messages.  {not in Vi}
+
+						*:sil* *:silent*
+:sil[ent][!] {command}	Execute {command} silently.  Normal messages will not
+			be given or added to the message history.
+			When [!] is added, error messages will also be
+			skipped, and commands and mappings will not be aborted
+			when an error is detected.  |v:errmsg| is still set.
+			When [!] is not used, an error message will cause
+			further messages to be displayed normally.
+			Redirection, started with |:redir|, will continue as
+			usual, although there might be small differences.
+			This will allow redirecting the output of a command
+			without seeing it on the screen.  Example: >
+			    :redir >/tmp/foobar
+			    :silent g/Aap/p
+			    :redir END
+<			To execute a Normal mode command silently, use the
+			|:normal| command.  For example, to search for a
+			string without messages: >
+			    :silent exe "normal /path\<CR>"
+<			":silent!" is useful to execute a command that may
+			fail, but the failure is to be ignored.  Example: >
+			    :let v:errmsg = ""
+			    :silent! /^begin
+			    :if v:errmsg != ""
+			    : ... pattern was not found
+<			":silent" will also avoid the hit-enter prompt.  When
+			using this for an external command, this may cause the
+			screen to be messed up.  Use |CTRL-L| to clean it up
+			then.
+			":silent menu ..." defines a menu that will not echo a
+			Command-line command.  The command will still produce
+			messages though.  Use ":silent" in the command itself
+			to avoid that: ":silent menu .... :silent command".
+
+						*:verb* *:verbose*
+:[count]verb[ose] {command}
+			Execute {command} with 'verbose' set to [count].  If
+			[count] is omitted one is used.
+			The additional use of ":silent" makes messages
+			generated but not displayed.
+			The combination of ":silent" and ":verbose" can be
+			used to generate messages and check them with
+			|v:statusmsg| and friends.  For example: >
+				:let v:statusmsg = ""
+				:silent verbose runtime foobar.vim
+				:if v:statusmsg != ""
+				:  " foobar.vim could not be found
+				:endif
+<			When concatenating another command, the ":verbose"
+			only applies to the first one: >
+				:4verbose set verbose | set verbose
+<				  verbose=4 ~
+				  verbose=0 ~
+
+							*K*
+K			Run a program to lookup the keyword under the
+			cursor.  The name of the program is given with the
+			'keywordprg' (kp) option (default is "man").  The
+			keyword is formed of letters, numbers and the
+			characters in 'iskeyword'.  The keyword under or
+			right of the cursor is used.  The same can be done
+			with the command >
+				:!{program} {keyword}
+<			There is an example of a program to use in the tools
+			directory of Vim.  It is called 'ref' and does a
+			simple spelling check.
+			Special cases:
+			- If 'keywordprg' is empty, the ":help" command is
+			  used.  It's a good idea to include more characters
+			  in 'iskeyword' then, to be able to find more help.
+			- When 'keywordprg' is equal to "man", a count before
+			  "K" is inserted after the "man" command and before
+			  the keyword.  For example, using "2K" while the
+			  cursor is on "mkdir", results in: >
+				!man 2 mkdir
+<			- When 'keywordprg' is equal to "man -s", a count
+			  before "K" is inserted after the "-s".  If there is
+			  no count, the "-s" is removed.
+			{not in Vi}
+
+							*v_K*
+{Visual}K		Like "K", but use the visually highlighted text for
+			the keyword.  Only works when the highlighted text is
+			not more than one line.  {not in Vi}
+
+[N]gs							*gs* *:sl* *:sleep*
+:[N]sl[eep] [N]	[m]	Do nothing for [N] seconds.  When [m] is included,
+			sleep for [N] milliseconds. The count for "gs" always
+			uses seconds.  The default is one second. >
+			     :sleep	     "sleep for one second
+			     :5sleep	     "sleep for five seconds
+			     :sleep 100m     "sleep for a hundred milliseconds
+			     10gs	     "sleep for ten seconds
+<			Can be interrupted with CTRL-C (CTRL-Break on MS-DOS).
+			"gs" stands for "goto sleep".  While sleeping the
+			cursor is positioned in the text (if visible).  {not
+			in Vi}
+
+							*g_CTRL-A*
+g CTRL-A		Only when Vim was compiled with MEM_PROFILING defined
+			(which is very rare): print memory usage statistics.
+			Only useful for debugging Vim.
+
+==============================================================================
+2. Online help						*online-help*
+
+			*help* *<Help>* *:h* *:help* *<F1>* *i_<F1>* *i_<Help>*
+<Help>		or
+:h[elp]			Open a window and display the help file in read-only
+			mode.  If there is a help window open already, use
+			that one.  Otherwise, if the current window uses the
+			full width of the screen or is at least 80 characters
+			wide, the help window will appear just above the
+			current window.  Otherwise the new window is put at
+			the very top.
+			The 'helplang' option is used to select a language, if
+			the main help file is available in several languages.
+			{not in Vi}
+
+						*{subject}* *E149* *E661*
+:h[elp] {subject}	Like ":help", additionally jump to the tag {subject}.
+			{subject} can include wildcards like "*", "?" and
+			"[a-z]":
+			   :help z?	jump to help for any "z" command
+			   :help z.	jump to the help for "z."
+			If there is no full match for the pattern, or there
+			are several matches, the "best" match will be used.
+			A sophisticated algorithm is used to decide which
+			match is better than another one.  These items are
+			considered in the computation:
+			- A match with same case is much better than a match
+			  with different case.
+			- A match that starts after a non-alphanumeric
+			  character is better than a match in the middle of a
+			  word.
+			- A match at or near the beginning of the tag is
+			  better than a match further on.
+			- The more alphanumeric characters match, the better.
+			- The shorter the length of the match, the better.
+
+			The 'helplang' option is used to select a language, if
+			the {subject} is available in several languages.
+			To find a tag in a specific language, append "@ab",
+			where "ab" is the two-letter language code.  See
+			|help-translated|.
+
+			Note that the longer the {subject} you give, the less
+			matches will be found.  You can get an idea how this
+			all works by using commandline completion (type CTRL-D
+			after ":help subject").
+			If there are several matches, you can have them listed
+			by hitting CTRL-D.  Example: >
+				:help cont<Ctrl-D>
+<			To use a regexp |pattern|, first do ":help" and then
+			use ":tag {pattern}" in the help window.  The
+			":tnext" command can then be used to jump to other
+			matches, "tselect" to list matches and choose one. >
+				:help index| :tse z.
+<			This command can be followed by '|' and another
+			command, but you don't need to escape the '|' inside a
+			help command.  So these both work: >
+				:help |
+				:help k| only
+<			Note that a space before the '|' is seen as part of
+			the ":help" argument.
+			You can also use <LF> or <CR> to separate the help
+			command from a following command.  You need to type
+			CTRL-V first to insert the <LF> or <CR>.  Example: >
+				:help so<C-V><CR>only
+<			{not in Vi}
+
+:h[elp]! [subject]	Like ":help", but in non-English help files prefer to
+			find a tag in a file with the same language as the
+			current file.  See |help-translated|.
+
+							*:helpg* *:helpgrep*
+:helpg[rep] {pattern}
+			Search all help text files and make a list of lines
+			in which {pattern} matches.  Jumps to the first match.
+			You can navigate through the matches with the
+			|quickfix| commands, e.g., |:cnext| to jump to the
+			next one.  Or use |:cwindow| to get the list of
+			matches in the quickfix window.
+			{pattern} is used as a Vim regexp |pattern|.
+			'ignorecase' is not used, add "\c" to ignore case.
+			Example for case sensitive search: >
+				:helpgrep Uganda
+<			Example for case ignoring search: >
+				:helpgrep uganda\c
+<			Cannot be followed by another command, everything is
+			used as part of the pattern.  But you can use
+			|:execute| when needed.
+			Compressed help files will not be searched (Debian
+			compresses the help files).
+			{not in Vi}
+
+
+When no argument is given to |:help| the file given with the 'helpfile' option
+will be opened.  Otherwise the specified tag is searched for in all "doc/tags"
+files in the directories specified in the 'runtimepath' option.
+
+The initial height of the help window can be set with the 'helpheight' option
+(default 20).
+
+Jump to specific subjects by using tags.  This can be done in two ways:
+- Use the "CTRL-]" command while standing on the name of a command or option.
+  This only works when the tag is a keyword.  "<C-Leftmouse>" and
+  "g<LeftMouse>" work just like "CTRL-]".
+- use the ":ta {subject}" command.  This also works with non-keyword
+  characters.
+
+Use CTRL-T or CTRL-O to jump back.
+Use ":q" to close the help window.
+
+If there are several matches for an item you are looking for, this is how you
+can jump to each one of them:
+1. Open a help window
+2. Use the ":tag" command with a slash prepended to the tag.  E.g.: >
+	:tag /min
+3. Use ":tnext" to jump to the next matching tag.
+
+It is possible to add help files for plugins and other items.  You don't need
+to change the distributed help files for that.  See |add-local-help|.
+
+To write a local help file, see |write-local-help|.
+
+Note that the title lines from the local help files are automagically added to
+the "LOCAL ADDITIONS" section in the "help.txt" help file |local-additions|.
+This is done when viewing the file in Vim, the file itself is not changed.  It
+is done by going through all help files and obtaining the first line of each
+file.  The files in $VIMRUNTIME/doc are skipped.
+
+							*help-xterm-window*
+If you want to have the help in another xterm window, you could use this
+command: >
+	:!xterm -e vim +help &
+<
+
+			*:helpfind* *:helpf*
+:helpf[ind]		Like |:help|, but use a dialog to enter the argument.
+			Only for backwards compatibility.  It now executes the
+			ToolBar.FindHelp menu entry instead of using a builtin
+			dialog.  {only when compiled with |+GUI_GTK|}
+<			{not in Vi}
+
+					*:helpt* *:helptags*
+				*E154* *E150* *E151* *E152* *E153* *E670*
+:helpt[ags] {dir}	Generate the help tags file(s) for directory {dir}.
+			All "*.txt" and "*.??x" files in the directory are
+			scanned for a help tag definition in between stars.
+			The "*.??x" files are for translated docs, they
+			generate the "tags-??" file, see |help-translated|.
+			The generated tags files are sorted.
+			When there are duplicates an error message is given.
+			An existing tags file is silently overwritten.
+			To rebuild the help tags in the runtime directory
+			(requires write permission there): >
+				:helptags $VIMRUNTIME/doc
+<			{not in Vi}
+
+
+TRANSLATED HELP						*help-translated*
+
+It is possible to add translated help files, next to the original English help
+files.  Vim will search for all help in "doc" directories in 'runtimepath'.
+This is only available when compiled with the |+multi_lang| feature.
+
+A set of translated help files consists of these files:
+
+	help.abx
+	howto.abx
+	...
+	tags-ab
+
+"ab" is the two-letter language code.  Thus for Italian the names are:
+
+	help.itx
+	howto.itx
+	...
+	tags-it
+
+The 'helplang' option can be set to the preferred language(s).  The default is
+set according to the environment.  Vim will first try to find a matching tag
+in the preferred language(s).  English is used when it cannot be found.
+
+To find a tag in a specific language, append "@ab" to a tag, where "ab" is the
+two-letter language code.  Example: >
+	:he user-manual@it
+	:he user-manual@en
+The first one finds the Italian user manual, even when 'helplang' is empty.
+The second one finds the English user manual, even when 'helplang' is set to
+"it".
+
+When using command-line completion for the ":help" command, the "@en"
+extention is only shown when a tag exists for multiple languages.  When the
+tag only exists for English "@en" is omitted.
+
+When using |CTRL-]| or ":help!" in a non-English help file Vim will try to
+find the tag in the same language.  If not found then 'helplang' will be used
+to select a language.
+
+Help files must use latin1 or utf-8 encoding.  Vim assumes the encoding is
+utf-8 when finding non-ASCII characters in the first line.  Thus you must
+translate the header with "For Vim version".
+
+The same encoding must be used for the help files of one language in one
+directory.  You can use a different encoding for different languages and use
+a different encoding for help files of the same language but in a different
+directory.
+
+Hints for translators:
+- Do not translate the tags.  This makes it possible to use 'helplang' to
+  specify the preferred language.  You may add new tags in your language.
+- When you do not translate a part of a file, add tags to the English version,
+  using the "tag@en" notation.
+- Make a package with all the files and the tags file available for download.
+  Users can drop it in one of the "doc" directories and start use it.
+  Report this to Bram, so that he can add a link on www.vim.org.
+- Use the |:helptags| command to generate the tags files.  It will find all
+  languages in the specified directory.
+
+==============================================================================
+3. Printing						*printing*
+
+On MS-Windows Vim can print your text on any installed printer.  On other
+systems a PostScript file is produced.  This can be directly sent to a
+PostScript printer.  For other printers a program like ghostscript needs to be
+used.
+
+3.1 PostScript Printing			|postscript-printing|
+3.2 PostScript Printing Encoding	|postscript-print-encoding|
+3.3 PostScript Printing Troubleshooting |postscript-print-trouble|
+3.4 PostScript Utilities		|postscript-print-util|
+3.5 Formfeed Characters			|printing-formfeed|
+
+{not in Vi}
+{only available when compiled with |+printer| feature}
+
+					*:ha* *:hardcopy* *E237* *E238* *E324*
+:[range]ha[rdcopy][!] [arguments]
+			Send [range] lines (default whole file) to the
+			printer.
+
+			On MS-Windows a dialog is displayed to allow selection
+			of printer, paper size etc. To skip the dialog, use
+			the [!].  In this case the printer defined by
+			'printdevice' is used, or, if 'printdevice' is empty,
+			the system default printer.
+
+			For systems other than MS-Windows, PostScript is
+			written in a temp file and 'printexpr' is used to
+			actually print it.  Then [arguments] can be used by
+			'printexpr' through |v:cmdarg|.  Otherwise [arguments]
+			is ignored.  'printoptions' can be used to specify
+			paper size, duplex, etc.
+
+:[range]ha[rdcopy][!] >{filename}
+			As above, but write the resulting PostScript in file
+			{filename}.
+			Things like "%" are expanded |cmdline-special|
+			Careful: An existing file is silently overwritten.
+			{only available when compiled with the |+postscript|
+			feature}
+			On MS-Windows use the "print to file" feature of the
+			printer driver.
+
+Progress is displayed during printing as a page number and a percentage.  To
+abort printing use the interrupt key (CTRL-C or, on MS-systems, CTRL-Break).
+
+Printer output is controlled by the 'printfont' and 'printoptions' options.
+'printheader' specifies the format of a page header.
+
+The printed file is always limited to the selected margins, irrespective of
+the current window's 'wrap' or 'linebreak' settings.  The "wrap" item in
+'printoptions' can be used to switch wrapping off.
+The current highlighting colors are used in the printout, with the following
+considerations:
+1) The normal background is always rendered as white (i.e. blank paper.)
+2) White text or the default foreground is rendered as black, so that it shows
+   up!
+3) If 'background' is "dark", then the colours are darkened to compensate for
+   the fact that otherwise they would be too bright to show up clearly on
+   white paper.
+
+
+3.1 PostScript Printing					*postscript-printing*
+						*E455* *E456* *E457* *E624*
+Provided you have enough disk space there should be no problems generating a
+PostScript file.  You need to have the runtime files correctly installed (if
+you can find the help files, they probably are).
+
+There are currently a number of limitations with PostScript printing:
+
+- 'printfont' - The font name is ignored (the Courier family is always used -
+  it should be available on all PostScript printers) but the font size is
+  used.
+
+- 'printoptions' - The duplex setting is used when generating PostScript
+  output, but it is up to the printer to take notice of the setting.  If the
+  printer does not support duplex printing then it should be silently ignored.
+  Some printers, however, don't print at all.
+
+- 8-bit support - While a number of 8-bit print character encodings are
+  supported it is possible that some characters will not print.  Whether a
+  character will print depends on the font in the printer knowing the
+  character.  Missing characters will be replaced with an upside down question
+  mark, or a space if that character is also not known by the font.  It may be
+  possible to get all the characters in an encoding to print by installing a
+  new version of the Courier font family.
+
+- Multi-byte support - Currently VIM will try to convert multi-byte characters
+  to the 8-bit encoding specified by 'printencoding' (or latin1 if it is
+  empty).  Any characters that are not successfully converted are shown as
+  unknown characters.  Printing will fail if VIM cannot convert the multi-byte
+  to the 8-bit encoding.
+
+
+3.2 Custom 8-bit Print Character Encodings	*postscript-print-encoding*
+								*E618* *E619*
+To use your own print character encoding when printing 8-bit character data
+you need to define your own PostScript font encoding vector.  Details on how
+to to define a font encoding vector is beyond the scope of this help file, but
+you can find details in the PostScript Language Reference Manual, 3rd Edition,
+published by Addison-Wesley and available in PDF form at
+http://www.adobe.com/.  The following describes what you need to do for VIM to
+locate and use your print character encoding.
+
+i.   Decide on a unique name for your encoding vector, one that does not clash
+     with any of the recognized or standard encoding names that VIM uses (see
+     |encoding-names| for a list), and that no one else is likely to use.
+ii.  Copy $VIMRUNTIME/print/latin1.ps to the print subdirectory in your
+     'runtimepath' and rename it with your unique name.
+iii. Edit your renamed copy of latin1.ps, replacing all occurrences of latin1
+     with your unique name (don't forget the line starting %%Title:), and
+     modify the array of glyph names to define your new encoding vector.  The
+     array must have exactly 256 entries or you will not be able to print!
+iv.  Within VIM, set 'printencoding' to your unique encoding name and then
+     print your file.  VIM will now use your custom print character encoding.
+
+VIM will report an error with the resource file if you change the order or
+content of the first 3 lines, other than the name of the encoding on the line
+starting %%Title: or the version number on the line starting %%Version:.
+
+[Technical explanation for those that know PostScript - VIM looks for a file
+with the same name as the encoding it will use when printing.  The file
+defines a new PostScript Encoding resource called /VIM-name, where name is the
+print character encoding VIM will use.]
+
+
+3.3 PostScript Printing Troubleshooting		*postscript-print-trouble*
+									*E621*
+Usually the only sign of a problem when printing with PostScript is that your
+printout does not appear.  If you are lucky you may get a printed page that
+tells you the PostScript operator that generated the error that prevented the
+print job completing.
+
+There are a number of possible causes as to why the printing may have failed:
+
+- Wrong version of the prolog resource file.  The prolog resource file
+  contains some PostScript that VIM needs to be able to print.  Each version
+  of VIM needs one particular version.  Make sure you have correctly installed
+  the runtime files, and don't have any old versions of a file called prolog
+  in the print directory in your 'runtimepath' directory.
+
+- Paper size.  Some PostScript printers will abort printing a file if they do
+  not support the requested paper size.  By default VIM uses A4 paper.  Find
+  out what size paper your printer normally uses and set the appropriate paper
+  size with 'printoptions'.  If you cannot find the name of the paper used,
+  measure a sheet and compare it with the table of supported paper sizes listed
+  for 'printoptions', using the paper that is closest in both width AND height.
+  Note: The dimensions of actual paper may vary slightly from the ones listed.
+  If there is no paper listed close enough, then you may want to try psresize
+  from PSUtils, discussed below.
+
+- Two-sided printing (duplex).  Normally a PostScript printer that does not
+  support two-sided printing will ignore any request to do it.  However, some
+  printers may abort the job altogether.  Try printing with duplex turned off.
+  Note: Duplex prints can be achieved manually using PS utils - see below.
+
+- Collated printing.  As with Duplex printing, most PostScript printers that
+  do not support collating printouts will ignore a request to do so.  Some may
+  not.  Try printing with collation turned off.
+
+- Syntax highlighting.  Some print management code may prevent the generated
+  PostScript file from being printed on a black and white printer when syntax
+  highlighting is turned on, even if solid black is the only color used.  Try
+  printing with syntax highlighting turned off.
+
+A safe printoptions setting to try is: >
+
+	:set printoptions=paper:A4,duplex:off,collate:n,syntax:n
+
+Replace "A4" with the paper size that best matches your printer paper.
+
+
+3.4 PostScript Utilities			*postscript-print-util*
+
+3.4.1 Ghostscript
+
+Ghostscript is a PostScript and PDF interpreter that can be used to display
+and print on non-PostScript printers PostScript and PDF files.  It can also
+generate PDF files from PostScript.
+
+Ghostscript will run on a wide variety of platforms.
+
+There are three available versions:
+
+- AFPL Ghostscript (formerly Aladdin Ghostscript) which is free for
+  non-commercial use.  It can be obtained from:
+
+    http://www.cs.wisc.edu/~ghost/
+
+- GNU Ghostscript which is available under the GNU General Public License.  It
+  can be obtained from:
+
+    ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/
+
+- A commercial version for inclusion in commercial products.
+
+Additional information on Ghostscript can also be found at:
+
+  http://www.ghostscript.com/
+
+Support for a number of non PostScript printers is provided in the
+distribution as standard, but if you cannot find support for your printer
+check the Ghostscript site for other printers not included by default.
+
+
+3.4.2 Ghostscript Previewers.
+
+The interface to Ghostscript is very primitive so a number of graphical front
+ends have been created.  These allow easier PostScript file selection,
+previewing at different zoom levels, and printing.  Check supplied
+documentation for full details.
+
+X11
+
+- Ghostview.  Obtainable from:
+
+    http://www.cs.wisc.edu/~ghost/gv/
+
+- gv.  Derived from Ghostview.  Obtainable from:
+
+    http://wwwthep.physik.uni-mainz.de/~plass/gv/
+
+  Copies (possibly not the most recent) can be found at:
+
+    http://www.cs.wisc.edu/~ghost/gv/
+
+OpenVMS
+
+- Is apparently supported in the main code now (untested).  See:
+
+    http://wwwthep.physik.uni-mainz.de/~plass/gv/
+
+Windows and OS/2
+
+- GSview.  Obtainable from:
+
+    http://www.cs.wisc.edu/~ghost/gsview/
+
+DOS
+
+- ps_view.  Obtainable from:
+
+    ftp://ftp.pg.gda.pl/pub/TeX/support/ps_view/
+    ftp://ftp.dante.de/tex-archive/support/ps_view/
+
+Linux
+
+- GSview.  Linux version of the popular Windows and OS/2 previewer.
+  Obtainable from:
+
+    http://www.cs.wisc.edu/~ghost/gsview/
+
+- BMV.  Different from Ghostview and gv in that it doesn't use X but svgalib.
+  Obtainable from:
+
+    ftp://sunsite.unc.edu/pub/Linux/apps/graphics/viewers/svga/bmv-1.2.tgz
+
+
+3.4.3 PSUtils
+
+PSUtils is a collection of utility programs for manipulating PostScript
+documents.  Binary distributions are available for many platforms, as well as
+the full source.  PSUtils can be found at:
+
+  http://knackered.org/angus/psutils
+
+The utilities of interest include:
+
+- psnup.     Convert PS files for N-up printing.
+- psselect.  Select page range and order of printing.
+- psresize.  Change the page size.
+- psbook.    Reorder and lay out pages ready for making a book.
+
+The output of one program can be used as the input to the next, allowing for
+complex print document creation.
+
+
+N-UP PRINTING
+
+The psnup utility takes an existing PostScript file generated from VIM and
+convert it to an n-up version.  The simplest way to create a 2-up printout is
+to first create a PostScript file with: >
+
+	:hardcopy > test.ps
+
+Then on your command line execute: >
+
+	psnup -n 2 test.ps final.ps
+
+Note: You may get warnings from some Ghostscript previewers for files produced
+by psnup - these may safely be ignored.
+
+Finally print the file final.ps to your PostScript printer with your
+platform's print command.  (You will need to delete the two PostScript files
+afterwards yourself.)  'printexpr' could be modified to perform this extra
+step before printing.
+
+
+ALTERNATE DUPLEX PRINTING
+
+It is possible to achieve a poor man's version of duplex printing using the PS
+utility psselect.  This utility has options -e and -o for printing just the
+even or odd pages of a PS file respectively.
+
+First generate a PS file with the 'hardcopy' command, then generate a new
+files with all the odd and even numbered pages with: >
+
+	psselect -o test.ps odd.ps
+	psselect -e test.ps even.ps
+
+Next print odd.ps with your platform's normal print command.  Then take the
+print output, turn it over and place it back in the paper feeder.  Now print
+even.ps with your platform's print command.  All the even pages should now
+appear on the back of the odd pages.
+
+There a couple of points to bear in mind:
+
+1. Position of the first page.  If the first page is on top of the printout
+   when printing the odd pages then you need to reverse the order that the odd
+   pages are printed.  This can be done with the -r option to psselect.  This
+   will ensure page 2 is printed on the back of page 1.
+   Note: it is better to reverse the odd numbered pages rather than the even
+   numbered in case there are an odd number of pages in the original PS file.
+
+2. Paper flipping.  When turning over the paper with the odd pages printed on
+   them you may have to either flip them horizontally (along the long edge) or
+   vertically (along the short edge), as well as possibly rotating them 180
+   degrees.  All this depends on the printer - it will be more obvious for
+   desktop ink jets than for small office laser printers where the paper path
+   is hidden from view.
+
+
+3.5 Formfeed Characters					*printing-formfeed*
+
+By default VIM does not do any special processing of |formfeed| control
+characters.  Setting the 'printoptions' formfeed item will make VIM recognize
+formfeed characters and continue printing the current line at the beginning
+of the first line on a new page.  The use of formfeed characters provides
+rudimentary print control but there are certain things to be aware of.
+
+VIM will always start printing a line (including a line number if enabled)
+containing a formfeed character, even if it is the first character on the
+line.  This means if a line starting with a formfeed character is the first
+line of a page then VIM will print a blank page.
+
+Since the line number is printed at the start of printing the line containing
+the formfeed character, the remainder of the line printed on the new page
+will not have a line number printed for it (in the same way as the wrapped
+lines of a long line when wrap in 'printoptions' is enabled).
+
+If the formfeed character is the last character on a line, then printing will
+continue on the second line of the new page, not the first.  This is due to
+VIM processing the end of the line after the formfeed character and moving
+down a line to continue printing.
+
+Due to the points made above it is recommended that when formfeed character
+processing is enabled, printing of line numbers is disabled, and that form
+feed characters are not the last character on a line.  Even then you may need
+to adjust the number of lines before a formfeed character to prevent
+accidental blank pages.
+
+==============================================================================
+4. Using Vim like less or more					*less*
+
+If you use the less or more program to view a file, you don't get syntax
+highlighting.  Thus you would like to use Vim instead.  You can do this by
+using the shell script "$VIMRUNTIME/macros/less.sh".
+
+This shell script uses the Vim script "$VIMRUNTIME/macros/less.vim".  It sets
+up mappings to simulate the commands that less supports.  Otherwise, you can
+still use the Vim commands.
+
+This isn't perfect.  For example, when viewing a short file Vim will still use
+the whole screen.  But it works good enough for most uses, and you get syntax
+highlighting.
+
+The "h" key will give you a short overview of the available commands.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/version4.txt b/runtime/doc/version4.txt
new file mode 100644
index 0000000..f3f760f
--- /dev/null
+++ b/runtime/doc/version4.txt
@@ -0,0 +1,355 @@
+*version4.txt*  For Vim version 7.0aa.  Last change: 2004 Mar 12
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+This document lists the incompatible differences between Vim 3.0 and Vim 4.0.
+Although 4.0 is mentioned here, this is also for version 4.1, 4.2, etc..
+
+This file is important for everybody upgrading from Vim 3.0.  Read it
+carefully to avoid unexpected problems.
+
+'backup' option default changed			|backup-changed|
+Extension for backup file changed		|backup-extension|
+Structure of swap file changed			|swapfile-changed|
+"-w scriptout" argument changed			|scriptout-changed|
+Backspace and Delete keys			|backspace-delete|
+Escape for | changed				|escape-bar|
+Key codes changed				|key-codes-changed|
+Terminal options changed			|termcap-changed|
+'errorformat' option changed			|errorformat-changed|
+'graphic' option gone				|graphic-option-gone|
+'yankendofline' option gone			|ye-option-gone|
+'icon' and 'title' default value changed	|icon-changed|
+'highlight' option changed			|highlight-changed|
+'tildeop' and 'weirdinvert' short names changed	|short-name-changed|
+Use of "v", "V" and "CTRL-V" in Visual mode	|use-visual-cmds|
+CTRL-B in Insert mode removed			|toggle-revins|
+
+
+'backup' option default changed				*backup-changed*
+-------------------------------
+
+The default value for 'backup' used to be on.  This resulted in a backup file
+being made when the original file was overwritten.
+
+Now the default for 'backup' is off.  As soon as the writing of the file has
+successfully finished, the backup file is deleted.  If you want to keep the
+backup file, set 'backup' on in your vimrc.  The reason for this change is
+that many people complained that leaving a backup file behind is not
+Vi-compatible.						|'backup'|
+
+
+Extension for backup file changed			*backup-extension*
+---------------------------------
+
+The extension for the backup file used to be ".bak".  Since other programs
+also use this extension and some users make copies with this extension, it was
+changed to the less obvious "~".  Another advantage is that this takes less
+space, which is useful when working on a system with short file names.  For
+example, on MS-DOS the backup files for "longfile.c" and "longfile.h" would
+both become "longfile.bak"; now they will be "longfile.c~" and "longfile.h~".
+
+If you prefer to use ".bak", you can set the 'backupext' option: >
+	:set bex=.bak
+
+
+Structure of swap file changed				*swapfile-changed*
+------------------------------
+
+The contents of the swap file were extended with several parameters.  Vim
+stores the user name and other information about the edited file to make
+recovery more easy and to be able to know where the swap file comes from.  The
+first part of the swap file can now be understood on a machine with a
+different byte order or sizeof(int).  When you try to recover a file on such a
+machine, you will get an error message that this is not possible.
+
+Because of this change, swap files cannot be exchanged between 3.0 and 4.0.
+If you have a swap file from a crashed session with 3.0, use Vim 3.0 to
+recover the file---don't use 4.0.			|swap-file|
+
+
+"-w scriptout" argument changed				*scriptout-changed*
+-------------------------------
+
+"vim -w scriptout" used to append to the scriptout file.  Since this was
+illogical, it now creates a new file.  An existing file is not overwritten
+(to avoid destroying an existing file for those who rely on the appending).
+[This was removed again later]					|-w|
+
+
+Backspace and Delete keys				*backspace-delete*
+-------------------------
+
+In 3.0 both the delete key and the backspace key worked as a backspace in
+insert mode; they deleted the character to the left of the cursor.  In 4.0 the
+delete key has a new function: it deletes the character under the cursor, just
+like it does on the command-line.  If the cursor is after the end of the line
+and 'bs' is set, two lines are joined.			|<Del>| |i_<Del>|
+
+In 3.0 the backspace key was always defined as CTRL-H and delete as CTRL-?.
+In 4.0 the code for the backspace and delete key is obtained from termcap or
+termlib, and adjusted for the "stty erase" value on Unix.  This helps people
+who define the erase character according to the keyboard they are working on.
+							|<BS>| |i_<BS>|
+
+If you prefer backspace and delete in Insert mode to have the old behavior,
+put this line in your vimrc:
+
+	inoremap ^? ^H
+
+And you may also want to add these, to fix the values for <BS> and <Del>:
+
+	set t_kb=^H
+	set t_kD=^?
+
+(Enter ^H with CTRL-V CTRL-H and ^? with CTRL-V CTRL-? or <Del>.)
+
+If the value for t_kb is correct, but the t_kD value is not, use the ":fixdel"
+command.  It will set t_kD according to the value of t_kb.  This is useful if
+you are using several different terminals.		|:fixdel|
+
+When ^H is not recognized as <BS> or <Del>, it is used like a backspace.
+
+
+Escape for | changed					*escape-bar*
+--------------------
+
+When the 'b' flag is present in 'cpoptions', the backslash cannot be used to
+escape '|' in mapping and abbreviate commands, only CTRL-V can.  This is
+Vi-compatible.  If you work in Vi-compatible mode and had used "\|" to include
+a bar in a mapping, this needs to be replaced by "^V|".  See |:bar|.
+
+
+Key codes changed					*key-codes-changed*
+-----------------
+
+The internal representation of key codes has changed dramatically.  In 3.0 a
+one-byte code was used to represent a key.  This caused problems with
+different characters sets that also used these codes.  In 4.0 a three-byte
+code is used that cannot be confused with a character.		|key-notation|
+
+If you have used the single-byte key codes in your vimrc for mappings, you
+will have to replace them with the 4.0 codes.  Instead of using the three-byte
+code directly, you should use the symbolic representation for this in <>.  See
+the table below.  The table also lists the old name, as it was used in the 3.0
+documentation.
+
+The key names in <> can be used in mappings directly.  This makes it possible
+to copy/paste examples or type them literally.  The <> notation has been
+introduced for this |<>|.  The 'B' and '<' flags must not be present in
+'cpoptions' to enable this to work |'cpoptions'|.
+
+old name	new name	  old code	old MS-DOS code	~
+				hex	dec	hex	dec	~
+<ESC>		<Esc>
+<TAB>		<Tab>
+<LF>		<NL> <NewLine> <LineFeed>
+<SPACE>		<Space>
+<NUL>		<Nul>
+<BELL>		<Bell>
+<BS>		<BS> <BackSpace>
+<INSERT>	<Insert>
+<DEL>		<Del> <Delete>
+<HOME>		<Home>
+<END>		<End>
+<PAGE_UP>	<PageUp>
+<PAGE_DOWN>	<PageDown>
+
+<C_UP>		<Up>		0x80	128	0xb0	176
+<C_DOWN>	<Down>		0x81	129     0xb1	177
+<C_LEFT>	<Left>		0x82	130     0xb2	178
+<C_RIGHT>	<Right>		0x83	131     0xb3	179
+<SC_UP>		<S-Up>		0x84	132     0xb4	180
+<SC_DOWN>	<S-Down>	0x85	133     0xb5	181
+<SC_LEFT>	<S-Left>	0x86	134     0xb6	182
+<SC_RIGHT>	<S-Right>	0x87	135     0xb7	183
+
+<F1>		<F1>		0x88	136     0xb8	184
+<F2>		<F2>		0x89	137     0xb9	185
+<F3>		<F3>		0x8a	138     0xba	186
+<F4>		<F4>		0x8b	139     0xbb	187
+<F5>		<F5>		0x8c	140     0xbc	188
+<F6>		<F6>		0x8d	141     0xbd	189
+<F7>		<F7>		0x8e	142     0xbe	190
+<F8>		<F8>		0x8f	143     0xbf	191
+<F9>		<F9>		0x90	144     0xc0	192
+<F10>		<F10>		0x91	145     0xc1	193
+
+<SF1>		<S-F1>		0x92	146     0xc2	194
+<SF2>		<S-F2>		0x93	147     0xc3	195
+<SF3>		<S-F3>		0x94	148     0xc4	196
+<SF4>		<S-F4>		0x95	149     0xc5	197
+<SF5>		<S-F5>		0x96	150     0xc6	198
+<SF6>		<S-F6>		0x97	151     0xc7	199
+<SF7>		<S-F7>		0x98	152     0xc8	200
+<SF8>		<S-F8>		0x99	153     0xc9	201
+<SF9>		<S-F9>		0x9a	154     0xca	202
+<SF10>		<S-F10>		0x9b	155     0xcb	203
+
+<HELP>		<Help>		0x9c	156     0xcc	204
+<UNDO>		<Undo>		0x9d	157     0xcd	205
+
+		(not used)	0x9e	158     0xce	206
+		(not used)	0x9f	159     0xcf	207
+
+
+Terminal options changed				*termcap-changed*
+------------------------
+
+The names of the terminal options have been changed to match the termcap names
+of these options.  All terminal options now have the name t_xx, where xx is
+the termcap name.  Normally these options are not used, unless you have a
+termcap entry that is wrong or incomplete, or you have set the highlight
+options to a different value.				|terminal-options|
+
+Note that for some keys there is no termcap name.  Use the <> type of name
+instead, which is a good idea anyway.
+
+Note that "t_ti" has become "t_mr" (invert/reverse output) and "t_ts" has
+become "t_ti" (init terminal mode).  Be careful when you use "t_ti"!
+
+old name	new name	meaning		~
+t_cdl		t_DL		delete number of lines		*t_cdl*
+t_ci		t_vi		cursor invisible		*t_ci*
+t_cil		t_AL		insert number of lines		*t_cil*
+t_cm		t_cm		move cursor
+t_cri		t_RI		cursor number of chars right	*t_cri*
+t_cv		t_ve		cursor visible			*t_cv*
+t_cvv		t_vs		cursor very visible		*t_cvv*
+t_dl		t_dl		delete line
+t_cs		t_cs		scroll region
+t_ed		t_cl		clear display			*t_ed*
+t_el		t_ce		clear line			*t_el*
+t_il		t_al		insert line			*t_il*
+		t_da		display may be retained above the screen
+		t_db		display may be retained below the screen
+t_ke		t_ke		put terminal out of keypad transmit mode
+t_ks		t_ks		put terminal in keypad transmit mode
+t_ms		t_ms		save to move cursor in highlight mode
+t_se		t_se		normal mode (undo t_so)
+t_so		t_so		shift out (standout) mode
+t_ti		t_mr		reverse highlight
+t_tb		t_md		bold mode			*t_tb*
+t_tp		t_me		highlight end			*t_tp*
+t_sr		t_sr		scroll reverse
+t_te		t_te		out of termcap mode
+t_ts		t_ti		into termcap mode		*t_ts_old*
+t_vb		t_vb		visual bell
+t_csc		t_CS		cursor is relative to scroll region *t_csc*
+
+t_ku	t_ku	<Up>		arrow up
+t_kd	t_kd	<Down>		arrow down
+t_kr	t_kr	<Right>		arrow right
+t_kl	t_kl	<Left>		arrow left
+t_sku		<S-Up>		shifted arrow up		*t_sku*
+t_skd		<S-Down>	shifted arrow down		*t_skd*
+t_skr	t_%i	<S-Right>	shifted arrow right		*t_skr*
+t_skl	t_#4	<S-Left>	shifted arrow left		*t_skl*
+t_f1	t_k1	<F1>		function key 1			*t_f1*
+t_f2	t_k2	<F2>		function key 2			*t_f2*
+t_f3	t_k3	<F3>		function key 3			*t_f3*
+t_f4	t_k4	<F4>		function key 4			*t_f4*
+t_f5	t_k5	<F5>		function key 5			*t_f5*
+t_f6	t_k6	<F6>		function key 6			*t_f6*
+t_f7	t_k7	<F7>		function key 7			*t_f7*
+t_f8	t_k8	<F8>		function key 8			*t_f8*
+t_f9	t_k9	<F9>		function key 9			*t_f9*
+t_f10	t_k;	<F10>		function key 10			*t_f10*
+t_sf1		<S-F1>		shifted function key 1		*t_sf1*
+t_sf2		<S-F2>		shifted function key 2		*t_sf2*
+t_sf3		<S-F3>		shifted function key 3		*t_sf3*
+t_sf4		<S-F4>		shifted function key 4		*t_sf4*
+t_sf5		<S-F5>		shifted function key 5		*t_sf5*
+t_sf6		<S-F6>		shifted function key 6		*t_sf6*
+t_sf7		<S-F7>		shifted function key 7		*t_sf7*
+t_sf8		<S-F8>		shifted function key 8		*t_sf8*
+t_sf9		<S-F9>		shifted function key 9		*t_sf9*
+t_sf10		<S-F10>		shifted function key 10		*t_sf10*
+t_help	t_%1	<Help>		help key			*t_help*
+t_undo	t_&8	<Undo>		undo key			*t_undo*
+
+
+'errorformat' option changed				*errorformat-changed*
+----------------------------
+
+'errorformat' can now contain several formats, separated by commas.  The first
+format that matches is used.  The default values have been adjusted to catch
+the most common formats.				|errorformat|
+
+If you have a format that contains a comma, it needs to be preceded with a
+backslash.  Type two backslashes, because the ":set" command will eat one.
+
+
+'graphic' option gone					*graphic-option-gone*
+---------------------
+
+The 'graphic' option was used to make the characters between <~> and 0xa0
+display directly on the screen.  Now the 'isprint' option takes care of this
+with many more possibilities.  The default setting is the same; you only need
+to look into this if you previously set the 'graphic' option in your vimrc.
+							|'isprint'|
+
+
+'yankendofline' option gone				*ye-option-gone*
+---------------------------
+
+The 'yankendofline' option has been removed.  Instead you can just use
+	:map Y y$
+
+
+'icon' and 'title' default value changed		*icon-changed*
+----------------------------------------
+
+The 'title' option is now only set by default if the original title can be
+restored.  Avoids "Thanks for flying Vim" titles.  If you want them anyway,
+put ":set title" in your vimrc.				|'title'|
+
+The default for 'icon' now depends on the possibility of restoring the
+original value, just like 'title'.  If you don't like your icon titles to be
+changed, add this line to your vimrc:			|'icon'|
+	:set noicon
+
+
+'highlight' option changed				*highlight-changed*
+--------------------------
+
+The 'i' flag now means italic highlighting, instead of invert.  The 'r' flag
+is used for reverse highlighting, which is what 'i' used to be.  Normally you
+won't see the difference, because italic mode is not supported on most
+terminals and reverse mode is used as a fallback.	|'highlight'|
+
+When an occasion is not present in 'highlight', use the mode from the default
+value for 'highlight', instead of reverse mode.
+
+
+'tildeop' and 'weirdinvert' short names changed		*short-name-changed*
+-----------------------------------------------
+
+Renamed 'to' (abbreviation for 'tildeop') to 'top'.	|'tildeop'|
+Renamed 'wi' (abbreviation for 'weirdinvert') to 'wiv'.	|'weirdinvert'|
+
+This was done because Vi uses 'wi' as the short name for 'window' and 'to' as
+the short name for 'timeout'.  This means that if you try setting these
+options, you won't get an error message, but the effect will be different.
+
+
+Use of "v", "V" and "CTRL-V" in Visual mode		*use-visual-cmds*
+-------------------------------------------
+
+In Visual mode, "v", "V", and "CTRL-V" used to end Visual mode.  Now this
+happens only if the Visual mode was in the corresponding type.  Otherwise the
+type of Visual mode is changed.  Now only ESC can be used in all circumstances
+to end Visual mode without doing anything.		|v_V|
+
+
+CTRL-B in Insert mode removed				*toggle-revins*
+-----------------------------
+
+CTRL-B in Insert mode used to toggle the 'revins' option.  If you don't know
+this and accidentally hit CTRL-B, it is very difficult to find out how to undo
+it.  Since hardly anybody uses this feature, it is disabled by default.  If
+you want to use it, define RIGHTLEFT in feature.h before compiling. |'revins'|
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/version5.txt b/runtime/doc/version5.txt
new file mode 100644
index 0000000..4f53463
--- /dev/null
+++ b/runtime/doc/version5.txt
@@ -0,0 +1,7813 @@
+*version5.txt*  For Vim version 7.0aa.  Last change: 2004 Jan 17
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+Welcome to Vim Version 5.0!
+
+This document lists the differences between Vim 4.x and Vim 5.0.
+Although 5.0 is mentioned here, this is also for version 5.1, 5.2, etc..
+See |vi_diff.txt| for an overview of differences between Vi and Vim 5.0.
+See |version4.txt| for differences between Vim 3.0 and Vim 4.0.
+
+INCOMPATIBLE:				|incompatible-5|
+
+Default value for 'compatible' changed	|cp-default|
+Text formatting command "Q" changed	|Q-command-changed|
+Command-line arguments changed		|cmdline-changed|
+Autocommands are kept			|autocmds-kept|
+Use of 'hidden' changed			|hidden-changed|
+Text object commands changed		|text-objects-changed|
+X-Windows Resources removed		|x-resources|
+Use of $VIM				|$VIM-use|
+Use of $HOME for MS-DOS and Win32	|$HOME-use|
+Tags file format changed		|tags-file-changed|
+Options changed				|options-changed|
+CTRL-B in Insert mode gone		|i_CTRL-B-gone|
+
+NEW FEATURES:				|new-5|
+
+Syntax highlighting			|new-highlighting|
+Built-in script language		|new-script|
+Perl and Python support			|new-perl-python|
+Win32 GUI version			|added-win32-GUI|
+VMS version				|added-VMS|
+BeOS version				|added-BeOS|
+Macintosh GUI version			|added-Mac|
+More Vi compatible			|more-compatible|
+Read input from stdin			|read-stdin|
+Regular expression patterns		|added-regexp|
+Overloaded tags				|tag-overloaded|
+New commands				|new-commands|
+New options				|added-options|
+New command-line arguments		|added-cmdline-args|
+Various additions			|added-various|
+
+IMPROVEMENTS				|improvements-5|
+
+COMPILE TIME CHANGES			|compile-changes-5|
+
+BUG FIXES				|bug-fixes-5|
+
+VERSION 5.1			|version-5.1|
+Changed					|changed-5.1|
+Added					|added-5.1|
+Fixed					|fixed-5.1|
+
+VERSION 5.2			|version-5.2|
+Long lines editable			|long-lines|
+File browser added			|file-browser-5.2|
+Dialogs added				|dialogs-added|
+Popup menu added			|popup-menu-added|
+Select mode added			|new-Select-mode|
+Session files added			|new-session-files|
+User defined functions and commands	|new-user-defined|
+New interfaces				|interfaces-5.2|
+New ports				|ports-5.2|
+Multi-byte support			|new-multi-byte|
+New functions				|new-functions-5.2|
+New options				|new-options-5.2|
+New Ex commands				|new-ex-commands-5.2|
+Changed					|changed-5.2|
+Added					|added-5.2|
+Fixed					|fixed-5.2|
+
+VERSION 5.3			|version-5.3|
+Changed					|changed-5.3|
+Added					|added-5.3|
+Fixed					|fixed-5.3|
+
+VERSION 5.4			|version-5.4|
+Runtime directory introduced		|new-runtime-dir|
+Filetype introduced			|new-filetype-5.4|
+Vim script line continuation		|new-line-continuation|
+Improved session files			|improved-sessions|
+Autocommands improved			|improved-autocmds-5.4|
+Encryption				|new-encryption|
+GTK GUI port				|new-GTK-GUI|
+Menu changes				|menu-changes-5.4|
+Viminfo improved			|improved-viminfo|
+Various new commands			|new-commands-5.4|
+Various new options			|new-options-5.4|
+Vim scripts				|new-script-5.4|
+Avoid hit-enter prompt			|avoid-hit-enter|
+Improved quickfix			|improved-quickfix|
+Regular expressions			|regexp-changes-5.4|
+Changed					|changed-5.4|
+Added					|added-5.4|
+Fixed					|fixed-5.4|
+
+VERSION 5.5			|version-5.5|
+Changed					|changed-5.5|
+Added					|added-5.5|
+Fixed					|fixed-5.5|
+
+VERSION 5.6			|version-5.6|
+Changed					|changed-5.6|
+Added					|added-5.6|
+Fixed					|fixed-5.6|
+
+VERSION 5.7			|version-5.7|
+Changed					|changed-5.7|
+Added					|added-5.7|
+Fixed					|fixed-5.7|
+
+VERSION 5.8			|version-5.8|
+Changed					|changed-5.8|
+Added					|added-5.8|
+Fixed					|fixed-5.8|
+
+==============================================================================
+				 INCOMPATIBLE		*incompatible-5*
+
+Default value for 'compatible' changed			*cp-default*
+--------------------------------------
+
+Vim version 5.0 tries to be more Vi compatible.  This helps people who use Vim
+as a drop-in replacement for Vi, but causes some things to be incompatible
+with version 4.x.
+
+In version 4.x the default value for the 'compatible' option was off.  Now the
+default is on.  The first thing you will notice is that the "u" command undoes
+itself.  Other side effects will be that mappings may work differently or not
+work at all.
+
+Since a lot of people switching from Vim 4.x to 5.0 will find this annoying,
+the 'compatible' option is switched off if Vim finds a vimrc file.  This is a
+bit of magic to make sure that 90% of the Vim users will not be bitten by
+this change.
+
+What does this mean?
+- If you prefer to run in 'compatible' mode and don't have a vimrc file, you
+  don't have to do anything.
+- If you prefer to run in 'nocompatible' mode and do have a vimrc file, you
+  don't have to do anything.
+- If you prefer to run in 'compatible' mode and do have a vimrc file, you
+  should put this line first in your vimrc file: >
+	:set compatible
+- If you prefer to run in 'nocompatible' mode and don't have a vimrc file,
+  you can do one of the following:
+    - Create an empty vimrc file (e.g.: "~/.vimrc" for Unix).
+    - Put this command in your .exrc file or $EXINIT: >
+		:set nocompatible
+<   - Start Vim with the "-N" argument.
+
+If you are new to Vi and Vim, using 'nocompatible' is strongly recommended,
+because Vi has a lot of unexpected side effects, which are avoided by this
+setting.  See 'compatible'.
+
+If you like some things from 'compatible' and some not, you can tune the
+compatibility with 'cpoptions'.
+
+When you invoke Vim as "ex" or "gex", Vim always starts in compatible mode.
+
+
+Text formatting command "Q" changed			*Q-command-changed*
+-----------------------------------
+
+The "Q" command formerly formatted lines to the width the 'textwidth' option
+specifies.  The command for this is now "gq" (see |gq| for more info).  The
+reason for this change is that "Q" is the standard Vi command to enter "Ex"
+mode, and Vim now does in fact have an "Ex" mode (see |Q| for more info).
+
+If you still want to use "Q" for formatting, use this mapping: >
+	:noremap Q gq
+And if you also want to use the functionality of "Q": >
+	:noremap gQ Q
+
+
+Command-line arguments changed				*cmdline-changed*
+------------------------------
+
+Command-line file-arguments and option-arguments can now be mixed.  You can
+give options after the file names.  Example: >
+   vim main.c -g
+
+This is not possible when editing a file that starts with a '-'.  Use the "--"
+argument then |---|: >
+   vim -g -- -main.c
+
+"-v" now means to start Ex in Vi mode, use "-R" for read-only mode.
+old: "vim -v file"	|-v|
+new: "vim -R file"	|-R|
+
+"-e" now means to start Vi in Ex mode, use "-q" for quickfix.
+old: "vim -e errorfile"	|-e|
+new: "vim -q errorfile" |-q|
+
+"-s" in Ex mode now means to run in silent (batch) mode. |-s-ex|
+
+"-x" reserved for crypt, use "-f" to avoid starting a new CLI (Amiga).
+old: "vim -x file"	|-x|
+new: "vim -f file"	|-f|
+
+Vim allows up to ten "+cmd" and "-c cmd" arguments.  Previously Vim executed
+only the last one.
+
+"-n" now overrides any setting for 'updatecount' in a vimrc file, but not in
+a gvimrc file.
+
+
+Autocommands are kept					*autocmds-kept*
+---------------------
+
+Before version 5.0, autocommands with the same event, file name pattern, and
+command could appear only once.  This was fine for simple autocommands (like
+setting option values), but for more complicated autocommands, where the same
+command might appear twice, this restriction caused problems.  Therefore
+Vim stores all autocommands and keeps them in the order that they are defined.
+
+The most obvious side effect of this change is that when you source a vimrc
+file twice, the autocommands in it will be defined twice.  To avoid this, do
+one of these:
+
+- Remove any autocommands that might potentially defined twice before
+  defining them.  Example: >
+	:au! * *.ext
+	:au BufEnter *.ext ...
+
+- Put the autocommands inside an ":if" command.  Example: >
+	if !exists("did_ext_autocmds")
+	  let did_ext_autocmds = 1
+	  autocmd BufEnter *.ext ...
+	endif
+
+- Put your autocommands in a different autocommand group so you can remove
+  them before defining them |:augroup|: >
+	augroup uncompress
+	  au!
+	  au BufReadPost *.gz ...
+	augroup END
+
+
+Use of 'hidden' changed					*hidden-changed*
+-----------------------
+
+In version 4.x, only some commands used the 'hidden' option.  Now all commands
+uses it whenever a buffer disappears from a window.
+
+Previously you could do ":buf xxx" in a changed buffer and that buffer would
+then become hidden.  Now you must set the 'hidden' option for this to work.
+
+The new behavior is simpler: whether Vim hides buffers no longer depends on
+the specific command that you use.
+- with 'hidden' not set, you never get hidden buffers.  Exceptions are the
+  ":hide" and ":close!" commands and, in rare cases, where you would otherwise
+  lose changes to the buffer.
+- With 'hidden' set, you almost never unload a buffer.  Exceptions are the
+  ":bunload" or ":bdel" commands.
+
+":buffer" now supports a "!": abandon changes in current buffer.  So do
+":bnext", ":brewind", etc.
+
+
+Text object commands changed				*text-objects-changed*
+----------------------------
+
+Text object commands have new names.  This allows more text objects and makes
+characters available for other Visual mode commands.  Since no more single
+characters were available, text objects names now require two characters.
+The first one is always 'i' or 'a'.
+	OLD	NEW	~
+	a	aw	a word			|v_aw|
+	A	aW	a WORD			|v_aW|
+	s	as	a sentence		|v_as|
+	p	ap	a paragraph		|v_ap|
+	S	ab	a () block		|v_ab|
+	P	aB	a {} block		|v_aB|
+
+There is another set of text objects that starts with "i", for "inner".  These
+select the same objects, but exclude white space.
+
+
+X-Windows Resources removed				*x-resources*
+--------------------------
+
+Vim no longer supports the following X resources:
+- boldColor
+- italicColor
+- underlineColor
+- cursorColor
+
+Vim now uses highlight groups to set colors.  This avoids the confusion of
+using a bold Font, which would imply a certain color.  See |:highlight| and
+|gui-resources|.
+
+
+Use of $VIM						*$VIM-use*
+-----------
+
+Vim now uses the VIM environment variable to find all Vim system files.  This
+includes the global vimrc, gvimrc, and menu.vim files and all on-line help
+and syntax files.  See |$VIM|.  Starting with version 5.4, |$VIMRUNTIME| can
+also be used.
+For Unix, Vim sets a default value for $VIM when doing "make install".
+When $VIM is not set, its default value is the directory from 'helpfile',
+excluding "/doc/help.txt".
+
+
+Use of $HOME for MS-DOS and Win32			*$HOME-use*
+---------------------------------
+
+The MS-DOS and Win32 versions of Vim now first check $HOME when searching for
+a vimrc or exrc file and for reading/storing the viminfo file.  Previously Vim
+used $VIM for these systems, but this causes trouble on a system with several
+users.  Now Vim uses $VIM only when $HOME is not set or the file is not found
+in $HOME.  See |_vimrc|.
+
+
+Tags file format changed				*tags-file-changed*
+------------------------
+
+Only Tabs are allowed to separate fields in a tags file.  This allows for
+spaces in a file name and is still Vi compatible.  In previous versions of
+Vim, any white space was allowed to separate the fields.  If you have a file
+which doesn't use a single Tab between fields, edit the tags file and execute
+this command: >
+	:%s/\(\S*\)\s\+\(\S*\)\s\+\(.*\)/\1\t\2\t\3/
+
+
+Options changed						*options-changed*
+---------------
+
+The default value of 'errorfile' has changed from "errors.vim" to "errors.err".
+The reason is that only Vim scripts should have the ".vim" extensions.
+
+The ":make" command no longer uses the 'errorfile' option.  This prevents the
+output of the ":make" command from overwriting a manually saved error file.
+":make" uses the 'makeef' option instead.  This also allows for generating a
+unique name, to prevent concurrently running ":make" commands from overwriting
+each other's files.
+
+With 'insertmode' set, a few more things change:
+- <Esc> in Normal mode goes to Insert mode.
+- <Esc> in Insert mode doesn't leave Insert mode.
+- When doing ":set im", go to Insert mode immediately.
+
+Vim considers a buffer to be changed when the 'fileformat' (formerly the
+'textmode' option) is different from the buffer's initial format.
+
+
+CTRL-B in Insert mode gone				*i_CTRL-B-gone*
+--------------------------
+
+When Vim was compiled with the |+rightleft| feature, you could use CTRL-B to
+toggle the 'revins' option.  Unfortunately, some people hit the 'B' key
+accidentally when trying to type CTRL-V or CTRL-N and then didn't know how to
+undo this.  Since toggling the 'revins' option can easily be done with the
+mapping below, this use of the CTRL-B key is disabled.  You can still use the
+CTRL-_ key for this |i_CTRL-_|. >
+   :imap <C-B> <C-O>:set revins!<CR>
+
+==============================================================================
+				 NEW FEATURES		*new-5*
+
+Syntax highlighting					*new-highlighting*
+-------------------
+
+Vim now has a very flexible way to highlighting just about any type of file.
+See |syntax|.  Summary: >
+   :syntax on
+
+Colors and attributes can be set for the syntax highlighting, and also for
+other highlighted items with the ':' flag in the 'highlight' option.  All
+highlighted items are assigned a highlight group which specifies their
+highlighting.  See |:highlight|.  The default colors have been improved.
+
+You can use the "Normal" group to set the default fore/background colors for a
+color terminal.  For the GUI, you can use this group to specify the font, too.
+
+The "2html.vim" script can be used to convert any file that has syntax
+highlighting to HTML.  The colors will be exactly the same as how you see them
+in Vim.  With a HTML viewer you can also print the file with colors.
+
+
+Built-in script language				*new-script*
+------------------------
+
+A few extra commands and an expression evaluator enable you to write simple
+but powerful scripts.  Commands include ":if" and ":while".  Expressions can
+manipulate numbers and strings.  You can use the '=' register to insert
+directly the result of an expression.  See |expression|.
+
+
+Perl and Python support					*new-perl-python*
+-----------------------
+
+Vim can call Perl commands with ":perldo", ":perl", etc.  See |perl|.
+Patches made by Sven Verdoolaege and Matt Gerassimoff.
+
+Vim can call Python commands with ":python" and ":pyfile".  See |python|.
+
+Both of these are only available when enabled at compile time.
+
+
+Win32 GUI version					*added-win32-GUI*
+-----------------
+
+The GUI has been ported to MS Windows 95 and NT.  All the features of the X11
+GUI are available to Windows users now.  |gui-w32|
+This also fixes problems with running the Win32 console version under Windows
+95, where console support has always been bad.
+There is also a version that supports OLE automation interface.  |if_ole.txt|
+Vim can be integrated with Microsoft Developer Studio using the VisVim DLL.
+It is possible to produce a DLL version of gvim with Borland C++ (Aaron).
+
+
+VMS version						*added-VMS*
+-----------
+
+Vim can now also be used on VMS systems.  Port done by Henk Elbers.
+This has not been tested much, but it should work.
+Sorry, no documentation!
+
+
+BeOS version						*added-BeOS*
+------------
+
+Vim can be used on BeOS systems (including the BeBox).  (Olaf Seibert)
+See |os_beos.txt|.
+
+
+Macintosh GUI version					*added-Mac*
+---------------------
+
+Vim can now be used on the Macintosh.  (Dany St-Amant)
+It has not been tested much yet, be careful!
+See |os_mac.txt|.
+
+
+More Vi compatible					*more-compatible*
+------------------
+
+There is now a real Ex mode.  Started with the "Q" command, or by calling the
+executable "ex" or "gex".  |Ex-mode|
+
+Always allow multi-level undo, also in Vi compatible mode.  When the 'u' flag
+in 'cpoptions' is included, CTRL-R is used for repeating the undo or redo
+(like "." in Nvi).
+
+
+Read input from stdin					*read-stdin*
+---------------------
+
+When using the "-" command-line argument, Vim reads its text input from stdin.
+This can be used for putting Vim at the end of a pipe: >
+   grep "^a.*" *.c | vim -
+See |--|.
+
+
+Regular expression patterns				*added-regexp*
+---------------------------
+
+Added specifying a range for the number of matches of a atom: "\{a,b}". |/\{|
+Added the "shortest match" regexp "\{-}" (Webb).
+Added "\s", matches a white character.  Can replace "[ \t]".		|/\s|
+Added "\S", matches a non-white character.  Can replace "[^ \t]".	|/\S|
+
+
+Overloaded tags						*tag-overloaded*
+---------------
+
+When using a language like C++, there can be several tags for the same
+tagname.  Commands have been added to be able to jump to any of these
+overloaded tags:
+|:tselect|	List matching tags, and jump to one of them.
+|:stselect|	Idem, and split window.
+|g_CTRL-]|	Do ":tselect" with the word under the cursor.
+
+	After ":ta {tagname}" with multiple matches:
+|:tnext|	Go to next matching tag.
+|:tprevious|	Go to previous matching tag.
+|:trewind|	Go to first matching tag.
+|:tlast|	Go to last matching tag.
+
+The ":tag" command now also accepts wildcards.  When doing command-line
+completion on tags, case-insensitive matching is also available (at the end).
+
+
+New commands						*new-commands*
+------------
+
+|:amenu|	Define menus for all modes, inserting a CTRL-O for Insert
+		mode, ESC for Visual and CTRL-C for Cmdline mode.  "amenu" is
+		used for the default menus and the Syntax menu.
+
+|:augroup|	Set group to be used for following autocommands.  Allows the
+		grouping of autocommands to enable deletion of a specific
+		group.
+
+|:crewind|	Go to first error.
+|:clast|	Go to last error.
+
+|:doautoall|	Execute autocommands for all loaded buffers.
+
+|:echo|		Echo its argument, which is an expression.  Can be used to
+		display messages which include variables.
+
+|:execute|	Execute its argument, which is an expression.  Can be used to
+		built up an Ex command with anything.
+
+|:hide|		Works like ":close".
+
+|:if|		Conditional execution, for built-in script language.
+
+|:intro|	Show introductory message.  This is always executed when Vim
+		is started without file arguments.
+
+|:let|		Assign a value to an internal variable.
+
+|:omap|		Map only in operator-pending mode.  Makes it possible to map
+		text-object commands.
+
+|:redir|	Redirect output of messages to a file.
+
+|:update|	Write when buffer has changed.
+
+|:while|	While-loop for built-in script language.
+
+Visual mode:
+|v_O|		"O" in Visual block mode, moves the cursor to the other corner
+		horizontally.
+|v_D|		"D" in Visual block mode deletes till end of line.
+
+Insert mode:
+|i_CTRL-]|	Triggers abbreviation, without inserting any character.
+
+
+New options						*added-options*
+-----------
+
+'background'	Used for selecting highlight color defaults.  Also used in
+		"syntax.vim" for selecting the syntax colors.  Often set
+		automatically, depending on the terminal used.
+
+'complete'	Specifies how Insert mode completion works.
+
+'eventignore'	Makes it possible to ignore autocommands temporarily.
+
+'fileformat'	Current file format.  Replaces 'textmode'.
+'fileformats'	Possible file formats.  Replaces 'textauto'.
+		New is that this also supports Macintosh format: A single <CR>
+		separates lines.
+		The default for 'fileformats' for MS-DOS, Win32 and OS/2 is
+		"dos,unix", also when 'compatible' set.  Unix type files
+		didn't work anyway when 'fileformats' was empty.
+
+'guicursor'	Set the cursor shape and blinking in various modes.
+		Default is to adjust the cursor for Insert and Replace mode,
+		and when an operator is pending.  Blinking is default on.
+
+'fkmap'		Farsi key mapping.
+
+'hlsearch'	Highlight all matches with the last used search pattern.
+
+'hkmapp'	Phonetic Hebrew mapping (Ilya Dogolazky).
+
+'iconstring'	Define the name of the icon, when not empty. (version 5.2: the
+		string is used literally, a newline can be used to make two
+		lines).
+
+'lazyredraw'	Don't redraw the screen while executing macros, registers or
+		other not typed commands.
+
+'makeef'	Errorfile to be used for ":make".  "##" is replaced with a
+		unique number.  Avoids that two Vim sessions overwrite each
+		others errorfile.  The Unix default is "/tmp/vim##.err"; for
+		Amiga "t:vim##.Err, for others "vim##.err".
+
+'matchtime'	1/10s of a second to show a matching paren, when 'showmatch'
+		is set.  Like Nvi.
+
+'mousehide'	Hide mouse pointer in GUI when typing text.
+
+'nrformats'	Defines what bases Vim will consider for numbers when using
+		the CTRL-A and CTRL-X commands.  Default: "hex,octal".
+
+'shellxquote'	Add extra quotes around the whole shell command, including
+		redirection.
+
+'softtabstop'	Make typing behave like tabstop is set at this value, without
+		changing the value of 'tabstop'.  Makes it more easy to keep
+		'ts' at 8, while still getting four spaces for a <Tab>.
+
+'titlestring'	String for the window title, when not empty.  (version 5.2:
+		this string is used literally, a newline can be used to make
+		two lines).
+
+'verbose'	Level of verbosity.  Makes it possible to show which .vimrc,
+		.exrc, .viminfo files etc. are used for initializing.  Also
+		to show autocommands that are being executed.  Can also be set
+		by using the "-V" command-line argument.
+
+
+New command-line arguments				*added-cmdline-args*
+--------------------------
+
+|-U|		Set the gvimrc file to be used.  Like "-u" for the vimrc.
+
+|-V|		Set the 'verbose' option.  E.g. "vim -V10".
+
+|-N|		Start in non-compatible mode.
+
+|-C|		Start in compatible mode.
+
+|-Z|		Start in restricted mode, disallow shell commands.  Can also
+		be done by calling the executable "rvim".
+
+|-h|		Show usage information and exit.
+
+
+Various additions					*added-various*
+-----------------
+
+Added support for SNiFF+ connection (submitted by Toni Leherbauer).  Vim can
+be used as an editor for SNiFF.  No documentation available...
+
+For producing a bug report, the bugreport.vim script has been included.
+Can be used with ":so $VIMRUNTIME/bugreport.vim", which creates the file
+"bugreport.txt" in the current directory. |bugs|
+
+Added range to ":normal" command.  Now you can repeat the same command for
+each line in the range.  |:normal-range|
+
+Included support for the Farsi language (Shiran).  Only when enabled at
+compile time.  See |farsi|.
+
+==============================================================================
+				 IMPROVEMENTS		*improvements-5*
+
+Performance:
+- When 'showcmd' was set, mappings would execute much more slowly because the
+  output would be flushed very often.  Helps a lot when executing the "life"
+  macros with 'showcmd' set.
+- Included patches for binary searching in tags file (David O'Neill).
+  Can be disabled by resetting the 'tagbsearch' option.
+- Don't update the ruler when repeating insert (slowed it down a lot).
+- For Unix, file name expansion is now done internally instead of starting a
+  shell for it.
+- Expand environment variables with expand_env(), instead of calling the
+  shell.  Makes ":so $VIMRUNTIME/syntax/syntax.vim" a LOT faster.
+- Reduced output for cursor positioning: Use CR-LF for moving to first few
+  columns in next few lines;  Don't output CR twice when using termios.
+- Optimized cursor positioning.  Use CR, BS and NL when it's shorter than
+  absolute cursor positioning.
+- Disable redrawing while repeating insert "1000ii<Esc>".
+- Made "d$" or "D" for long lines a lot faster (delete all characters at once,
+  instead of one by one).
+- Access option table by first letter, instead of searching from start.
+- Made setting special highlighting attributes a lot faster by using
+  highlight_attr[], instead of searching in the 'highlight' string.
+- Don't show the mode when redrawing is disabled.
+- When setting an option, only redraw the screen when required.
+- Improved performance of Ex commands by using a lookup table for the first
+  character.
+
+Options:
+'cinoptions'	Added 'g' flag, for C++ scope declarations.
+'cpoptions'	Added 'E' flag: Disallow yanking, deleting, etc. empty text
+		area.  Default is to allow empty yanks.  When 'E' is included,
+		"y$" in an empty line now is handled as an error (Vi
+		compatible).
+		Added 'j' flag: Only add two spaces for a join after a '.',
+		not after a '?' or '!'.
+		Added 'A' flag: don't give ATTENTION message.
+		Added 'L' flag: When not included, and 'list' is set,
+		'textwidth' formatting works like 'list' is not set.
+		Added 'W' flag:  Let ":w!" behave like Vi: don't overwrite
+		readonly files, or a file owned by someone else.
+'highlight'	Added '@' flag, for '@' characters after the last line on the
+		screen, and '$' at the end of the line when 'list' is set.
+		Added 'i' flag: Set highlighting for 'incsearch'.  Default
+		uses "IncSearch" highlight group, which is linked to "Visual".
+		Disallow 'h' flag in 'highlight' (wasn't used anymore since
+		3.0).
+'guifont'	Win32 GUI only: When set to "*" brings up a font requester.
+'guipty'	Default on, because so many people need it.
+'path'		Can contain wildcards, and "**" for searching a whole tree.
+'shortmess'	Added 'I' flag to avoid the intro message.
+'viminfo'	Added '%' flag: Store buffer list in viminfo file.
+
+- Increased defaults for 'maxmem' and 'maxmemtot' for Unix and Win32.  Most
+  machines have much more RAM now that prices have dropped.
+- Implemented ":set all&", set all options to their default value. |:set|
+
+Swap file:
+- Don't create a swap file for a readonly file.  Then create one on the first
+  change.  Also create a swapfile when the amount of memory used is getting
+  too high. |swap-file|
+- Make swap file "hidden", if possible.  On Unix this is done by prepending a
+  dot to the swap file name.  When long file names are used, the DJGPP and
+  Win32 versions also prepend a dot, in case a file on a mounted Unix file
+  system is edited.  |:swapname|  On MSDOS the hidden file attribute is NOT
+  set, because this causes problems with share.exe.
+- 'updatecount' always defaults to non-zero, also for Vi compatible mode.
+  This means there is a swap file, which can be used for recovery.
+
+Tags:
+- Included ctags 2.0 (Darren Hiebert).  The syntax for static tags changed
+  from
+	{tag}:{fname}	{fname}	{command}
+  to
+	{tag}	{fname}	{command};"	file:
+  Which is both faster to parse, shorter and Vi compatible.  The old format is
+  also still accepted, unless disabled in src/feature.h (see OLD_STATIC_TAGS).
+  |tags-file-format|
+- Completion of tags now also includes static tags for other files, at the
+  end.
+- Included "shtags" from Stephen Riehm.
+- When finding a matching tag, but the file doesn't exist, continue searching
+  for another match.  Helps when using the same tags file (with links) for
+  different versions of source code.
+- Give a tag with a global match in the current file a higher priority than a
+  global match in another file.
+
+Included xxd version V1.8 (Juergen Weigert).
+
+Autocommands:
+- VimLeave autocommands are executed after writing the viminfo file, instead
+  of before.  |VimLeave|
+- Allow changing autocommands while executing them.  This allows for
+  self-modifying autocommands. (idea from Goldberg)
+- When using autocommands with two or more patterns, could not split
+  ":if/:endif" over two lines.  Now all matching autocommands are executed in
+  one do_cmdline().
+- Autocommands no longer change the command repeated with ".".
+- Search patterns are restored after executing autocommands.  This avoids
+  that the 'hlsearch' highlighting is messed up by autocommands.
+- When trying to execute an autocommand, also try matching the pattern with
+  the short file name.  Helps when short file name is different from full
+  file name (expanded symbolic links). |autocmd-patterns|
+- Made the output of ":autocmd" shorter and look better.
+- Expand <sfile> in an ":autocmd" when it is defined.  |<sfile>|
+- Added "nested" flag to ":autocmd", allows nesting.  |autocmd-nested|
+- Added [group] argument to ":autocmd".  Overrides the currently set group.
+  |autocmd-groups|
+- new events:
+  |BufUnload|		before a buffer is unloaded
+  |BufDelete|		before a buffer is deleted from the buffer list
+  |FileChangedShell|	when a file's modification time has changed after
+			executing a shell command
+  |User|		user-defined autocommand
+- When 'modified' was set by a BufRead* autocommand, it was reset again
+  afterwards.  Now the ":set modified" is remembered.
+
+GUI:
+- Improved GUI scrollbar handling when redrawing is slower than the scrollbar
+  events are generated.
+- "vim -u NONE" now also stops loading the .gvimrc and other GUI inits.  |-u|
+  Use "-U" to use another gvimrc file.  |-U|
+- Handle CTRL-C for external command, also for systems where "setsid()" is
+  supported.
+- When starting the GUI, restrict the window size to the screen size.
+- The default menus are read from $VIMRUNTIME/menu.vim.  This allows for a
+  customized default menu.  |menu.vim|
+- Improved the default menus.  Added File/Print, a Window menu, Syntax menu,
+  etc.
+- Added priority to the ":menu" command.  Now each menu can be put in a place
+  where you want it, independent of the order in which the menus are defined.
+  |menu-priority|
+
+Give a warning in the intro screen when running the Win32 console version on
+Windows 95 because there are problems using this version under Windows 95.
+|win32-problems|
+
+Added 'e' flag for ":substitute" command: Don't complain when not finding a
+match (Campbell).  |:s|
+
+When using search commands in a mapping, only the last one is kept in the
+history.  Avoids that the history is trashed by long mappings.
+
+Ignore characters after "ex", "view" and "gvim" when checking startup mode.
+Allows the use of "gvim5" et. al.  |gvim| "gview" starts the GUI in readonly
+mode.  |gview|
+
+When resizing windows, the cursor is kept in the same relative position, if
+possible.  (Webb)
+
+":all" and ":ball" no longer close and then open a window for the same buffer.
+Avoids losing options, jumplist, and other info.
+
+"-f" command-line argument is now ignored if Vim was compiled without GUI.
+|-f|
+
+In Visual block mode, the right mouse button picks up the nearest corner.
+
+Changed default mappings for DOS et al.  Removed the DOS-specific mappings,
+only use the Windows ones.  Added Shift-Insert, Ctrl-Insert, Ctrl-Del and
+Shift-Del.
+
+Changed the numbers in the output of ":jumps", so you can see where {count}
+CTRL-O takes you.  |:jumps|
+
+Using "~" for $HOME now works for all systems.  |$HOME|
+
+Unix: Besides using CTRL-C, also use the INTR character from the tty settings.
+Somebody has INTR set to DEL.
+
+Allow a <LF> in a ":help" command argument to end the help command, so another
+command can follow.
+
+Doing "%" on a line that starts with "   #if" didn't jump to matching "#else".
+Don't recognize "#if", "#else" etc. for '%' when 'cpo' contains the '%' flag.
+|%|
+
+Insert mode expansion with "CTRL-N", "CTRL-P" and "CTRL-X" improved
+|ins-completion|:
+- 'complete' option added.
+- When 'nowrapscan' is set, and no match found, report the searched direction
+  in the error message.
+- Repeating CTRL-X commands adds following words/lines after the match.
+- When adding-expansions, accept single character matches.
+- Made repeated CTRL-X CTRL-N not break undo, and "." repeats the whole
+  insertion.  Also fixes not being able to backspace over a word that has been
+  inserted with CTRL-N.
+
+When copying characters in Insert mode from previous/next line, with CTRL-E or
+CTRL-Y, 'textwidth' is no longer used.  |i_CTRL-E|
+
+Commands that move in the arglist, like ":n" and ":rew", keep the old cursor
+position of the file (this is mostly Vi compatible).
+
+Vim now remembers the '< and '> marks for each buffer.  This fixes a problem
+that a line-delete in one buffer invalidated the '< and '> marks in another
+buffer.  |'<|
+
+For MSDOS, Unix and OS/2: When $VIM not set, use the path from the executable.
+When using the executable path for $VIM, remove "src/" when present.  Should
+make Vim find the docs and syntax files when it is run directly after
+compiling.  |$VIM|
+
+When quitting Visual mode with <Esc>, the cursor is put at start of the Visual
+area (like after executing an operator).
+
+Win32 and Unix version: Removed 1100 character limit on external commands.
+
+Added possibility to include a space in a ":edit +command" argument, by
+putting a backslash before it.  |+cmd|
+
+After recovery, BufReadPost autocommands are applied.  |:recover|
+
+Added color support for "os2ansi", OS/2 console. (Slootman) |os2ansi|
+
+Allow "%:p:h" when % is empty.  |:_%|
+
+Included "<sfile>": file name from the ":source" command.  |<sfile>|
+
+Added "<Bslash>" special character.  Helps for avoiding multiple backslashes
+in mappings and menus.
+
+In a help window, a double-click jumps to the tag under the cursor (like
+CTRL-]).
+
+<C-Left> and <C-Right> now work like <S-Left> and <S-Right>, move a word
+forward/backward (Windows compatible). |<C-Left>|
+
+Removed the requirement for a ":version" command in a .vimrc file.  It wasn't
+used for anything.  You can use ":if" to handle differences between versions.
+|:version|
+
+For MS-DOS, Win32 and OS/2: When comparing file names for autocommands, don't
+make a difference between '/' and '\' for path separator.
+
+New termcap options:
+"mb": blink.  Can only be used by assigning it to one of the other highlight
+      options.  |t_mb|
+"bc": backspace character.  |t_bc|
+"nd": Used for moving the cursor right in the GUI, to avoid removing one line
+      of pixels from the last bold character.  |t_nd|
+"xs": highlighting not erased by overwriting, for hpterm.  Combined with
+      'weirdinvert'.  Visual mode works on hpterm now.  |t_xs|
+
+Unix: Set time of patch and backup file same as original file.  (Hiebert).
+
+Amiga: In QuickFix mode no longer opens another window.  Shell commands can be
+used now.
+
+Added decmouse patches from David Binette.  Can now use Dec and Netterm mouse.
+But only when enabled at compile time.
+
+Added '#' register: Alternate file name |quote#|.  Display '#' register with
+":dis" command. |:display|
+
+Removed ':' from 'isfname' default for Unix.  Check for "://" in a file name
+anyway.  Also check for ":\\", for MS-DOS.
+
+Added count to "K"eyword command, when 'keywordprg' is "man", is inserted in
+the man command.  "2K" results in "!man 2 <cword>".  |K|
+
+When using "gf" on a relative path name, remove "../" from the file name, like
+it's done for file names in the tags file. |gf|
+
+When finishing recording, don't make the recorded register the default put
+register.
+
+When using "!!", don't put ":5,5!" on the command-line, but ":.!".  And some
+other enhancements to replace the line number with "." or "$" when possible.
+
+MSDOS et al.: Renamed $VIM/viminfo to $VIM/_viminfo.  It's more consistent:
+.vimrc/_vimrc and .viminfo/_viminfo
+
+For systems where case doesn't matter in file names (MSDOS, Amiga), ignore
+case while sorting file names.  For buffer names too.
+
+When reading from stdin doesn't work, read from stderr (helps for "foo | xargs
+vim").
+
+32 bit MS-DOS version: Replaced csdpmi3 by csdpmi4.
+
+Changed <C-Left> and <C-Right> to skip a WORD instead of a word.
+
+Warning for changed modified time when overwriting a file now also works on
+other systems than Unix.
+
+Unix: Changed the defaults for configure to be the same as the defaults for
+Makefile: include GUI, Perl, and Python.
+
+Some versions of Motif require "-lXpm".  Added check for this in configure.
+
+Don't add "-L/usr/lib" to the link line, causes problems on a few systems.
+
+==============================================================================
+			     COMPILE TIME CHANGES	*compile-changes-5*
+
+When compiling, allow a choice for minimal, normal or maximal features in an
+easy way, by changing a single line in src/feature.h.
+The DOS16 version has been compiled with minimal features to avoid running
+out of memory too quickly. |dos16|
+The Win32, DJGPP, and OS/2 versions use maximal features, because they have
+enough memory.
+The Amiga version is available with normal and maximal features.
+
+Added "make test" to Unix version Makefile.  Allows for a quick check if most
+"normal" commands work properly.  Also tests a few specific commands.
+
+Added setlocale() with codepage support for DJGPP version.
+
+autoconf:
+- Added autoconf check for -lXdmcp.
+- Included check for -lXmu, no longer needed to edit the Makefile for this.
+- Switched to autoconf 2.12.
+- Added configure check for <poll.h>.  Seems to be needed when including
+  Perl on Linux?
+- termlib is now checked before termcap.
+- Added configure check for strncasecmp(), stricmp() and strnicmp().  Added
+  vim_stricmp() for when there's no library function for stricmp().
+- Use "datadir" in configure, instead of our own check for HELPDIR.
+
+Removed "make proto" from Makefile.manx.  Could not make it work without a lot
+of #ifdefs.
+
+Removed "proto/" from paths in proto.h.  Needed for the Mac port.
+
+Drastically changed Makefile.mint.  Now it includes the Unix Makefile.
+
+Added support for Dos16 in Makefile.b32 (renamed Makefile.b32 to Makefile.bor)
+
+All source files are now edited with a tabstop of 8 instead of 4, which is
+better when debugging and using other tools.  'softtabstop' is set to 4, to
+make editing easier.
+
+Unix: Added "link.sh" script, which removes a few unnecessary libraries from
+the link command.
+
+Don't use HPUX digraphs by default, but only when HPUX_DIGRAPHS is defined.
+|digraphs-default|
+
+==============================================================================
+				 BUG FIXES		*bug-fixes-5*
+
+Note:	Some of these fixes may only apply to test versions which were
+	created after version 4.6, but before 5.0.
+
+
+When doing ":bdel", try going to the next loaded buffer.  Don't rewind to the
+start of the buffer list.
+
+mch_isdir() for Unix returned TRUE for "" on some systems.
+
+Win32: 'shell' set to "mksnt/sh.exe" breaks ":!" commands.  Don't use
+backslashes in the temp file names.
+
+On linux, with a FAT file system, could get spurious "file xxx changed since
+editing started" messages, because the time is rounded off to two seconds
+unexpectedly.
+
+Crash in GUI, when selecting a word (double click) and then extend until an
+empty line.
+
+For systems where isdigit() can't handle characters > 255, get_number() caused
+a crash when moving the mouse during the prompt for recovery.
+
+In Insert mode, "CTRL-O P" left the cursor on the last inserted character.
+Now the cursor is left after the last putted character.
+
+When quickfix found an error type other than 'e' or 'w', it was never printed.
+
+A setting for 'errorfile' in a .vimrc overruled the "-q errorfile" argument.
+
+Some systems create a file when generating a temp file name.  Filtering would
+then create a backup file for this, which was never deleted.  Now no backup
+file is made when filtering.
+
+simplify_filename() could remove a ".." after a link, resulting in the wrong
+file name.  Made simplify_filename also work for MSDOS.  Don't use it for
+Amiga, since it doesn't have "../".
+
+otherfile() was unreliable when using links.  Could think that reading/writing
+was for a different file, when it was the same.
+
+Pasting with mouse in Replace mode didn't replace anything.
+
+Window height computed wrong when resizing a window with an autocommand (could
+cause a crash).
+
+":s!foo!bar!" wasn't possible (Vi compatible).
+
+do_bang() freed memory twice when called recursively, because of autocommands
+(test11).  Thanks to Electric Fence!
+
+"v$d" on an empty line didn't remove the "-- VISUAL --" mode message from the
+command-line, and inverted the cursor.
+
+":mkexrc" didn't check for failure to open the file, causing a crash.
+(Felderhoff).
+
+Win32 mch_write() wrote past fixed buffer, causing terminal keys no longer to
+be recognized.  Both console and GUI version.
+
+Athena GUI: Crash when removing a menu item.  Now Vim doesn't crash, but the
+reversing of the menu item is still wrong.
+
+Always reset 'list' option for the help window.
+
+When 'scrolloff' is non-zero, a 'showmatch' could cause the shown match to be
+in the wrong line and the window to be scrolled (Acevedo).
+
+After ":set all&", 'lines' and 'ttytype' were still non-default, because the
+defaults never got set.  Now the defaults for 'lines' and 'columns' are set
+after detecting the window size. 'term' and 'ttytype' defaults are set when
+detecting the terminal type.
+
+For (most) non-Unix systems, don't add file names with illegal characters when
+expanding.  Fixes "cannot open swapfile" error when doing ":e *.burp", when
+there is no match.
+
+In X11 GUI, drawing part of the cursor obscured the text.  Now the text is
+drawn over the cursor, like when it fills the block. (Seibert)
+
+when started with "-c cmd -q errfile", the cursor would be left in line 1.
+Now a ":cc" is done after executing "cmd".
+
+":ilist" never ignored case, even when 'ignorecase' set.
+
+"vim -r file" for a readonly file, then making a change, got ATTENTION message
+in insert mode, display mixed up until <Esc> typed.  Also don't give ATTENTION
+message after recovering a file.
+
+The abbreviation ":ab #i #include" could not be removed.
+
+CTRL-L completion (longest common match) on command-line didn't work properly
+for case-insensitive systems (MS-DOS, Windows, etc.).  (suggested by Richard
+Kilgore).
+
+For terminals that can hide the cursor ("vi" termcap entry), resizing the
+window caused the cursor to disappear.
+
+Using an invalid mark in an Ex address didn't abort the command.
+
+When 'smarttab' set, would use 'shiftround' when inserting a TAB after a
+space.  Now it always rounds to a tabstop.
+
+Set '[ and '] marks for ":copy", ":move", ":append", ":insert", ":substitute"
+and ":change".  (Acevedo).
+
+"d$" in an empty line still caused an error, even when 'E' is not in
+'cpoptions'.
+
+Help files were stored in the viminfo buffer list without a path.
+
+GUI: Displaying cursor was not synchronized with other displaying.  Caused
+several display errors.  For example, when the last two lines in the file
+start with spaces, "dd" on the last line copied text to the (then) last line.
+
+Win32: Needed to type CTRL-SHIFT-- to get CTRL-_.
+
+GUI: Moving the cursor forwards over bold text would remove one column of bold
+pixels.
+
+X11 GUI: When a bold character in the last column was scrolled up or down, one
+column of pixels would not be copied.
+
+Using <BS> to move the cursor left can sometimes erase a character.  Now use
+"le" termcap entry for this.
+
+Keyword completion with regexp didn't work.  e.g., for "b.*crat".
+
+Fixed: With CTRL-O that jumps to another file, cursor could end up just after
+the line.
+
+Amiga: '$' was missing from character recognized as wildcards, causing $VIM
+sometimes not to be expanded.
+
+":change" didn't adjust marks for deleted lines.
+
+":help [range]" didn't work.  Also for [pattern], [count] and [quotex].
+
+For 'cindent'ing, typing "class::method" doesn't align like a label when the
+second ':' is typed.
+When inserting a CR with 'cindent' set (and a bunch of other conditions) the
+cursor went to a wrong location.
+'cindent' was wrong for a line that ends in '}'.
+'cindent' was wrong after "else {".
+
+While editing the cmdline in the GUI, could not use the mouse to select text
+from the command-line itself.
+
+When deleting lines, marks in tag stack were only adjusted for the current
+window, not for other windows on the same buffer.
+
+Tag guessing could find a function "some_func" instead of the "func" we were
+looking for.
+
+Tags file name relative to the current file didn't work.
+
+":g/pat2/s//pat2/g", causing the number of subs to be reported, used to cause
+a scroll up.  Now you no longer have to hit <CR>.
+
+X11 GUI: Selecting text could cause a crash.
+
+32 bit DOS version: CTRL-C in external command killed Vim.  When SHELL is set
+to "sh.exe", external commands didn't work.  Removed using of command.com, no
+longer need to set 'shellquote'.
+
+Fixed crash when using ":g/pat/i".
+
+Fixed (potential) crash for X11 GUI, when using an X selection.  Was giving a
+pointer on the stack to a callback function, now it's static.
+
+Using "#" and "*" with an operator didn't work.  E.g. "c#".
+
+Command-line expansion didn't work properly after ":*". (Acevedo)
+
+Setting 'weirdinvert' caused highlighting to be wrong in the GUI.
+
+":e +4 #" didn't work, because the "4" was in unallocated memory (could cause
+a crash).
+
+Cursor position was wrong for ":e #", after ":e #" failed, because of changes
+to the buffer.
+
+When doing ":buf N", going to a buffer that was edited with ":view", the
+readonly flag was reset.  Now make a difference between ":e file" and ":buf
+file": Only set/reset 'ro' for the first one.
+
+Avoid |hit-enter| prompt when not able to write viminfo on exit.
+
+When giving error messages in the terminal where the GUI was started, GUI
+escape codes would be written to the terminal.  In an xterm this could be seen
+as a '$' after the message.
+
+Mouse would not work directly after ":gui", because full_screen isn't set,
+which causes starttermcap() not to do its work.
+
+'incsearch' did not scroll the window in the same way as the actual search.
+When 'nowrap' set, incsearch didn't show a match when it was off the side of
+the screen.  Now it also shows the whole match, instead of just the cursor
+position (if possible).
+
+":unmap", ":unab" and ":unmenu" did not accept a double quote, it was seen as
+the start of a comment.  Now it's Vi compatible.
+
+Using <Up><Left><Left><Up> in the command-line, when there is no previous
+cmdline in the history, inserted a NUL on the command-line.
+
+"i<Esc>" when on a <Tab> in column 0 left the cursor in the wrong place.
+
+GUI Motif: When adding a lot of menu items, the menu bar goes into two rows.
+Deleting menu items, reducing the number of rows, now also works.
+
+With ":g/pat/s//foo/c", a match in the first line was scrolled off of the
+screen, so you could not see it.
+When using ":s//c", with 'nowrap' set, a match could be off the side of the
+screen, so you could not see it.
+
+When 'helpfile' was set to a fixed, non-absolute path in feature.h, Vim would
+crash.  mch_Fullname can now handle file names in read-only memory. (Lottem)
+
+When using CTRL-A or CTRL-@ in Insert mode, there could be strange effects
+when using CTRL-D next.  Also, when repeating inserted text that included "0
+CTRL-D" or "^ CTRL-D" this didn't work. (Acevedo)
+Using CTRL-D after using CTRL-E or CTRL-Y in Insert mode that inserted a '0'
+or '^', removed the '0' or '^' and more indent.
+
+The command "2".p" caused the last inserted text to be executed as commands.
+(Acevedo)
+
+Repeating the insert of "CTRL-V 048" resulted in "^@" to be inserted.
+
+Repeating Insert completion could fail if there are special characters in the
+text. (Acevedo)
+
+":normal /string<CR>" caused the window to scroll.  Now all ":normal" commands
+are executed without scrolling messages.
+
+Redo of CTRL-E or CTRL-Y in Insert mode interpreted special characters as
+commands.
+
+Line wrapping for 'tw' was done one character off for insert expansion
+inserts.
+
+buffer_exists() function didn't work properly for buffer names with a symbolic
+link in them (e.g. when using buffer_exists(#)).
+
+Removed the "MOTIF_COMMENT" construction from Makefile.  It now works with
+FreeBSD make, and probably with NeXT make too.
+
+Matching the 'define' and 'include' arguments now honor the settings for
+'ignorecase'. (Acevedo)
+
+When one file shown in two windows, Visual selection mixed up cursor position
+in current window and other window.
+
+When doing ":e file" from a help file, the 'isk' option wasn't reset properly,
+because of a modeline in the help file.
+
+When doing ":e!", a cursor in another window on the same buffer could become
+invalid, leading to "ml_get: invalid lnum" errors.
+
+Matching buffer name for when expanded name has a different path from not
+expanded name (Brugnara).
+
+Normal mappings didn't work after an operator.  For example, with ":map Q gq",
+"QQ" didn't work.
+
+When ":make" resulted in zero errors, a "No Errors" error message was given
+(which breaks mappings).
+
+When ":sourcing" a file, line length was limited to 1024 characters.  CTRL-V
+before <EOL> was not handled Vi compatible.  (Acevedo)
+
+Unexpected exit for X11 GUI, caused by SAVE_YOURSELF event.  (Heimann)
+
+CTRL-X CTRL-I only found one match per line. (Acevedo)
+When using an illegal CTRL-X key in Insert mode, the CTRL-X mode message
+was stuck.
+
+Finally managed to ignore the "Quit" menu entry of the Window manager!  Now
+Vim only exists when there are no changed buffers.
+
+Trying to start the GUI when $DISPLAY is not set resulted in a crash.
+When $DISPLAY is not set and gvim starts vim, title was restored to "Thanks
+for flying Vim".
+When $DISPLAY not set, starting "gvim" (dropping back to vim) and then
+selecting text with the mouse caused a crash.
+
+"J", with 'joinspaces' set, on a line ending in ". ", caused one space too
+many to be added.  (Acevedo)
+
+In insert mode, a CTRL-R {regname} which didn't insert anything left the '"'
+on the screen.
+
+":z10" didn't work. (Clapp)
+
+"Help "*" didn't work.
+
+Renamed a lot of functions, to avoid clashes with POSIX name space.
+
+When adding characters to a line, making it wrap, the following lines were
+sometimes not shifted down (e.g. after a tag jump).
+
+CTRL-E, with 'so' set and cursor on last line, now does not move cursor as
+long as the last line is on the screen.
+
+When there are two windows, doing "^W+^W-" in the bottom window could cause
+the status line to be doubled (not redrawn correctly).
+
+This command would hang: ":n `cat`".  Now connect stdin of the external
+command to /dev/null, when expanding.
+
+Fixed lalloc(0,) error for ":echo %:e:r".  (Acevedo)
+
+The "+command" argument to ":split" didn't work when there was no file name.
+
+When selecting text in the GUI, which is the output of a command-line command
+or an external command, the inversion would sometimes remain.
+
+GUI: "-mh 70" argument was broken.  Now, when menuheight is specified, it is
+not changed anymore.
+
+GUI: When using the scrollbar or mouse while executing an external command,
+this caused garbage characters.
+
+Showmatch sometimes jumped to the wrong position.  Was caused by a call to
+findmatch() when redrawing the display (when syntax highlighting is on).
+
+Search pattern "\(a *\)\{3} did not work correctly, also matched "a a".
+Problem with brace_count not being decremented.
+
+Wildcard expansion added too many non-matching file names.
+
+When 'iskeyword' contains characters like '~', "*" and "#" didn't work
+properly. (Acevedo)
+
+On Linux, on a FAT file system, modification time can change by one second.
+Avoid a "file has changed" warning for a one second difference.
+
+When using the page-switching in an xterm, Vim would position the cursor on
+the last line of the window on exit.  Also removed the cursor positioning for
+":!" commands.
+
+":g/pat/p" command (partly) overwrote the command.  Now the output is on a
+separate line.
+
+With 'ic' and 'scs' set, a search for "Keyword", ignore-case matches were
+highlighted too.
+
+"^" on a line with only white space, put cursor beyond the end of the line.
+
+When deleting characters before where insertion started ('bs' == 2), could not
+use abbreviations.
+
+CTRL-E at end of file puts cursor below the file, in Visual mode, when 'so' is
+non-zero.  CTRL-E didn't work when 'so' is big and the line below the window
+wraps.  CTRL-E, when 'so' is non-zero, at end of the file, caused jumping
+up-down.
+
+":retab" didn't work well when 'list' is set.
+
+Amiga: When inserting characters at the last line on the screen, causing it
+to wrap, messed up the display.  It appears that a '\n' on the last line
+doesn't always cause a scroll up.
+
+In Insert mode "0<C-D><C-D>" deleted an extra character, because Vim thought
+that the "0" was still there. (Acevedo)
+
+"z{count}l" ignored the count.  Also for "zh" et. al. (Acevedo)
+
+"S" when 'autoindent' is off didn't delete leading white space.
+
+"/<Tab>" landed on the wrong character when 'incsearch' is set.
+
+Asking a yes/no question could cause a |hit-enter| prompt.
+
+When the file consists of one long line (>4100 characters), making changes
+caused various errors and a crash.
+
+DJGPP version could not save long lines (>64000) for undo.
+
+"yw" on the last char in the file didn't work.  Also fixed "6x" at the end of
+the line. "6X" at the start of a line fails, but does not break a mapping.  In
+general, a movement for an operator doesn't beep or flush a mapping, but when
+there is nothing to operate on it beeps (this is Vi compatible).
+
+"m'" and "m`" now set the '' mark at the cursor position.
+
+Unix: Resetting of signals for external program didn't work, because SIG_DFL
+and NULL are the same!  For "!!yes|dd count=1|, the yes command kept on
+running.
+
+Partly fixed: Unix GUI: Typeahead while executing an external command was lost.
+Now it's not lost while the command is producing output.
+
+Typing <S-Tab> in Insert mode, when it isn't mapped, inserted "<S-Tab>".  Now
+it works like a normal <Tab>, just like <C-Tab> and <M-Tab>.
+
+Redrawing ruler didn't check for old value correctly (caused UMR warnings in
+Purify).
+
+Negative array index in finish_viminfo_history().
+
+":g/^/d|mo $" deleted all the lines.  The ":move" command now removes the
+:global mark from the moved lines.
+
+Using "vG" while the last line in the window is a "@" line, didn't update
+correctly.  Just the "v" showed "~" lines.
+
+"daw" on the last char of the file, when it's a space, moved the cursor beyond
+the end of the line.
+
+When 'hlsearch' was set or reset, only the current buffer was redrawn, while
+this affects all windows.
+
+CTRL-^, positioning the cursor somewhere from 1/2 to 1 1/2 screen down the
+file, put the cursor at the bottom of the window, instead of halfway.
+
+When scrolling up for ":append" command, not all windows were updated
+correctly.
+
+When 'hlsearch' is set, and an auto-indent is highlighted, pressing <Esc>
+didn't remove the highlighting, although the indent was deleted.
+
+When 'ru' set and 'nosc', using "$j" showed a wrong ruler.
+
+Under Xfree 3.2, Shift-Tab didn't work (wrong keysym is used).
+
+Mapping <S-Tab> didn't work.  Changed the key translations to use the shortest
+key code possible.  This makes the termcode translations and mappings more
+consistent.  Now all modifiers work in all combinations, not only with <Tab>,
+but also with <Space>, <CR>, etc.
+
+For Unix, restore three more signals.  And Vim catches SIGINT now, so CTRL-C
+in Ex mode doesn't make Vim exit.
+
+""a5Y" yanked 25 lines instead of 5.
+
+"vrxxx<Esc>" in an empty line could not be undone.
+
+A CTRL-C that breaks ":make" caused the errorfile not to be read (annoying
+when you want to handle what ":make" produced so far).
+
+":0;/pat" didn't find "pat" in line 1.
+
+Search for "/test/s+1" at first char of file gave bottom-top message, or
+didn't work at all with 'nowrapscan'.
+
+Bug in viminfo history.  Could cause a crash on exit.
+
+":print" didn't put cursor on first non-blank in line.
+
+":0r !cat </dev/null" left cursor in line zero, with very strange effects.
+
+With 'showcmd' set and 'timeoutlen' set to a few seconds, trick to position
+the cursor leftwards didn't work.
+
+AIX stty settings were restored to cs5 instead of cs8 (Winn).
+
+File name completion didn't work for "zsh" versions that put spaces between
+file names, instead of NULs.
+
+Changed "XawChain*" to "XtChain*", should work for more systems.
+
+Included quite a few fixes for rightleft mode (Lottem).
+
+Didn't ask to |hit-enter| when GUI is started and error messages are printed.
+
+When trying to edit a file in a non-existent directory, ended up with editing
+"No file".
+
+"gqap" to format a paragraph did too much redrawing.
+
+When 'hlsearch' set, only the current window was updated for a new search
+pattern.
+
+Sometimes error messages on startup didn't cause a |hit-enter| prompt,
+because of autocommands containing an empty line.
+
+Was possible to select part of the window in the border, below the command
+line.
+
+'< and '> marks were not at the correct position after linewise Visual
+selection.
+
+When translating a help argument to "CTRL-x", prepend or append a '_', when
+applicable.
+
+Blockwise visual mode wasn't correct when moving vertically over a special
+character (displayed as two screen characters).
+
+Renamed "struct option" to "struct vimoption" to avoid name clash with GNU
+getopt().
+
+":abclear" didn't work (but ":iabclear" and ":cabclear" did work).
+
+When 'nowrap' used, screen wasn't always updated correctly.
+
+"vim -c split file" displayed extra lines.
+
+After starting the GUI, searched the termcap for a "gui" term.
+
+When 'hls' used, search for "^$" caused a hang.
+When 'hls' was set, an error in the last regexp caused trouble.
+
+Unix: Only output an extra <EOL> on exit when outputted something in the
+alternate screen, or when there is a message that needs to be cleared.
+
+"/a\{" did strange things, depending on previous search.
+
+"c}" only redrew one line (with -u NONE).
+
+For mappings, CTRL-META-A was shown as <M-^A> instead of <MC-A>, while :map
+only accepts <MC-A>.  Now <M-C-A> is shown.
+
+Unix: When using full path name in a tags file, which contains a link, and
+'hidden' set and jumping to a tag in the current file, would get bogus
+ATTENTION message.  Solved by always expanding file names, even when starting
+with '/'.
+
+'hlsearch' highlighting of special characters (e.g., a TAB) didn't highlight
+the whole thing.
+
+"r<CR>" didn't work correctly on the last char of a line.
+
+sometimes a window resize or other signal caused an endless loop, involving
+set_winsize().
+
+"vim -r" didn't work, it would just hang (using tgetent() while 'term' is
+empty).
+
+"gk" while 'nowrap' set moved two lines up.
+
+When windows are split, a message that causes a scroll-up messed up one of the
+windows, which required a CTRL-L to be typed.
+
+Possible endless loop when using shell command in the GUI.
+
+Menus defined in the .vimrc were removed when GUI started.
+
+Crash when pasting with the mouse in insert mode.
+
+Crash whith ":unmenu *" in .gvimrc for Athena.
+
+"5>>" shifted 5 lines 5 times, instead of 1 time.
+
+CTRL-C when getting a prompt in ":global" didn't interrupt.
+
+When 'so' is non-zero, and moving the scrollbar completely to the bottom,
+there was a lot of flashing.
+
+GUI: Scrollbar ident must be long for DEC Alpha.
+
+Some functions called vim_regcomp() without setting reg_magic, which could
+lead to unpredictable magicness.
+
+Crash when clicking around the status line, could get a selection with a
+backwards range.
+
+When deleting more than one line characterwise, the last character wasn't
+deleted.
+
+GUI: Status line could be overwritten when moving the scrollbar quickly (or
+when 'wd' is non-zero).
+
+An ESC at the end of a ":normal" command caused a wait for a terminal code to
+finish.  Now, a terminal code is not recognized when its start comes from a
+mapping or ":normal" command.
+
+Included patches from Robert Webb for GUI.  Layout of the windows is now done
+inside Vim, instead of letting the layout manager do this.  Makes Vim work
+with Lesstif!
+
+UMR warning in set_expand_context().
+
+Memory leak: b_winlnum list was never freed.
+
+Removed TIOCLSET/TIOCLGET code from os_unix.c.  Was changing some of the
+terminal settings, and looked like it wasn't doing anything good.  (suggested
+by Juergen Weigert).
+
+Ruler overwrote "is a directory" message.  When starting up, and 'cmdheight'
+set to > 1, first message could still be in the last line.
+
+Removed prototype for putenv() from proto.h, it's already in osdef2.h.in.
+
+In replace mode, when moving the cursor and then backspacing, wrong characters
+were inserted.
+
+Win32 GUI was checking for a CTRL-C too often, making it slow.
+
+Removed mappings for MS-DOS that were already covered by commands.
+
+When visually selecting all lines in a file, cursor at last line, then "J".
+Gave ml_get errors.  Was a problem with scrolling down during redrawing.
+
+When doing a linewise operator, and then an operator with a mouse click, it
+was also linewise, instead of characterwise.
+
+When 'list' is set, the column of the ruler was wrong.
+
+Spurious error message for "/\(b\+\)*".
+
+When visually selected many lines, message from ":w file" disappeared when
+redrawing the screen.
+
+":set <M-b>=^[b", then insert "^[b", waited for another character.  And then
+inserted "<M-b>" instead of the real <M-b> character.  Was trying to insert
+K_SPECIAL x NUL.
+
+CTRL-W ] didn't use count to set window height.
+
+GUI: "-font" command-line argument didn't override 'guifont' setting from
+.gvimrc. (Acevedo)
+
+GUI: clipboard wasn't used for "*y".  And some more Win32/X11 differences
+fixed for the clipboard (Webb).
+
+Jumping from one help file to another help file, with 'compatible' set,
+removed the 'help' flag from the buffer.
+
+File-writable bit could be reset when using ":w!" for a readonly file.
+
+There was a wait for CTRL-O n in Insert mode, because the search pattern was
+shown.
+Reduced wait, to allow reading a message, from 10 to 3 seconds.  It seemed
+nothing was happening.
+
+":recover" found same swap file twice.
+
+GUI: "*yy only worked the second time (when pasting to an xterm)."
+
+DJGPP version (dos32): The system flags were cleared.
+
+Dos32 version: Underscores were sometimes replaced with y-umlaut (Levin).
+
+Version 4.1 of ncurses can't handle tputs("", ..).  Avoid calling tputs() with
+an empty string.
+
+<S-Tab> in the command-line worked like CTRL-P when no completion started yet.
+Now it does completion, last match first.
+
+Unix: Could get annoying "can't write viminfo" message after doing "su".  Now
+the viminfo file is overwritten, and the user set back to the original one.
+
+":set term=builtin_gui" started the GUI in a wrong way.  Now it's not
+allowed anymore.  But "vim -T gui" does start the GUI correctly now.
+
+GUI: Triple click after a line only put last char in selection, when it is a
+single character word.
+
+When the window is bigger than the screen, the scrolling up of messages was
+wrong (e.g. ":vers", ":hi").  Also when the bottom part of the window was
+obscured by another window.
+
+When using a wrong option only an error message is printed, to avoid that the
+usage information makes it scroll off the screen.
+
+When exiting because of not being able to read from stdin, didn't preserve the
+swap files properly.
+
+Visual selecting all chars in more than one line, then hit "x" didn't leave an
+empty line.  For one line it did leave an empty line.
+
+Message for which autocommand is executing messed up file write message (for
+FileWritePost event).
+
+"vim -h" included "-U" even when GUI is not available, and "-l" when lisp is
+not available.
+
+Crash for ":he <C-A>" (command-line longer than screen).
+
+":s/this/that/gc", type "y" two times, then undo, did reset the modified
+option, even though the file is still modified.
+
+Empty lines in a tags file caused a ":tag" to be aborted.
+
+When hitting 'q' at the more prompt for ":menu", still scrolled a few lines.
+
+In an xterm that uses the bold trick a single row of characters could remain
+after an erased bold character.  Now erase one extra char after the bold char,
+like for the GUI.
+
+":pop!" didn't work.
+
+When the reading a buffer was interrupted, ":w" should not be able to
+overwrite the file, ":w!" is required.
+
+":cf%" caused a crash.
+
+":gui longfilename", when forking is enabled, could leave part of the
+longfilename at the shell prompt.
+
+==============================================================================
+VERSION 5.1						*version-5.1*
+
+Improvements made between version 5.0 and 5.1.
+
+This was mostly a bug-fix release, not many new features.
+
+
+Changed							*changed-5.1*
+-------
+
+The expand() function now separates file names with <NL> instead of a space.
+This avoids problems for file names with embedded spaces.  To get the old
+result, use substitute(expand(foo), "\n", " ", "g").
+
+For Insert-expanding dictionaries allow a backslash to be used for
+wildchars.  Allows expanding "ze\kra", when 'isk' includes a backslash.
+
+New icon for the Win32 GUI.
+
+":tag", ":tselect" etc. only use the argument as a regexp when it starts
+with '/'.  Avoids that ":tag xx~" gives an error message: "No previous sub.
+regexp".  Also, when the :tag argument contained wildcard characters, it was
+not Vi compatible.
+When using '/', the argument is taken literally too, with a higher priority,
+so it's found before wildcard matches.
+Only when the '/' is used are matches with different case found, even though
+'ignorecase' isn't set.
+Changed "g^]" to only do ":tselect" when there is more than on matching tag.
+
+Changed some of the default colors, because they were not very readable on a
+dark background.
+
+A character offset to a search pattern can move the cursor to the next or
+previous line.  Also fixes that "/pattern/e+2" got stuck on "pattern" at the
+end of a line.
+
+Double-clicks in the status line do no longer start Visual mode.  Dragging a
+status line no longer stops Visual mode.
+
+Perl interface: Buffers() and Windows() now use more logical arguments, like
+they are used in the rest of Vim (Moore).
+
+Init '" mark to the first character of the first line.  Makes it possible to
+use '" in an autocommand without getting an error message.
+
+
+Added							*added-5.1*
+-----
+
+"shell_error" internal variable: result of last shell command.
+
+":echohl" command: Set highlighting for ":echo".
+
+'S' flag in 'highlight' and StatusLineNC highlight group: highlighting for
+status line of not-current window.  Default is to use bold for current
+window.
+
+Added buffer_name() and buffer_number() functions (Aaron).
+Added flags argument "g" to substitute() function (Aaron).
+Added winheight() function.
+
+Win32: When an external command starts with "start ", no console is opened
+for it (Aaron).
+
+Win32 console: Use termcap codes for bold/reverse based on the current
+console attributes.
+
+Configure check for "strip". (Napier)
+
+CTRL-R CTRL-R x in Insert mode: Insert the contents of a register literally,
+instead of as typed.
+
+Made a few "No match" error messages more informative by adding the pattern
+that didn't match.
+
+"make install" now also copies the macro files.
+
+tools/tcltags, a shell script to generate a tags file from a TCL file.
+
+"--with-tlib" setting for configure.  Easy way to use termlib: "./configure
+--with-tlib=termlib".
+
+'u' flag in 'cino' for setting the indent for contained () parts.
+
+When Win32 OLE version can't load the registered type library, ask the user
+if he wants to register Vim now. (Erhardt)
+Win32 with OLE: When registered automatically, exit Vim.
+Included VisVim 1.1b, with a few enhancements and the new icon (Heiko
+Erhardt).
+
+Added patch from Vince Negri for Win32s support.  Needs to be compiled with
+VC 4.1!
+
+Perl interface: Added $curbuf.  Rationalized Buffers() and Windows().
+(Moore) Added "group" argument to Msg().
+
+Included Perl files in DOS source archive.  Changed Makefile.bor and
+Makefile.w32 to support building a Win32 version with Perl included.
+
+Included new Makefile.w32 from Ken Scott.  Now it's able to make all Win32
+versions, including OLE, Perl and Python.
+
+Added CTRL-W g ] and CTRL-W g ^]: split window and do g] or g^].
+
+Added "g]" to always do ":tselect" for the ident under the cursor.
+Added ":tjump" and ":stjump" commands.
+Improved listing of ":tselect" when tag names are a bit long.
+
+Included patches for the Macintosh version. Also for Python interface.
+(St-Amant)
+
+":buf foo" now also restores cursor column, when the buffer was used before.
+
+Adjusted the Makefile for different final destinations for the syntax files
+and scripts (for Debian Linux).
+
+Amiga: $VIM can be used everywhere.  When $VIM is not defined, "VIM:" is
+used.  This fixes that "VIM:" had to be assigned for the help files, and
+$VIM set for the syntax files.  Now either of these work.
+
+Some xterms send vt100 compatible function keys F1-F4.  Since it's not
+possible to detect this, recognize both type of keys and translate them to
+<F1> - <F4>.
+
+Added "VimEnter" autocommand.  Executed after loading all the startup stuff.
+
+BeOS version now also runs on Intel CPUs (Seibert).
+
+
+Fixed							*fixed-5.1*
+-----
+
+":ts" changed position in the tag stack when cancelled with <CR>.
+":ts" changed the cursor position for CTRL-T when cancelled with <CR>.
+":tn" would always jump to the second match.	Was using the wrong entry in
+the tag stack.
+Doing "tag foo", then ":tselect", overwrote the original cursor position in
+the tag stack.
+
+"make install" changed the vim.1 manpage in a wrong way, causing "doc/doc"
+to appear for the documentation files.
+
+When compiled with MAX_FEAT, xterm mouse handling failed.  Was caused by DEC
+mouse handling interfering.
+
+Was leaking memory when using selection in X11.
+
+CTRL-D halfway a command-line left some characters behind the first line(s)
+of the listing.
+
+When expanding directories for ":set path=", put two extra backslashes
+before a space in a directory name.
+
+When 'lisp' set, first line of a function would be indented.  Now its indent
+is set to zero.  And use the indent of the first previous line that is at
+the same () level.  Added test33.
+
+"so<Esc>u" in an empty file didn't work.
+
+DOS: "seek error in swap file write" errors, when using DOS 6.2 share.exe,
+because the swap file was made hidden.  It's no longer hidden.
+
+":global" command would sometimes not execute on a matching line.  Happened
+when a data block is full in ml_replace().
+
+For AIX use a tgetent buffer of 2048 bytes, instead of 1024.
+
+Win32 gvim now only sets the console size for external commands to 25x80
+on Windows 95, not on NT.
+
+Win32 console: Dead key could cause a crash, because of a missing "WINAPI"
+(Deshpande).
+
+The right mouse button started Visual mode, even when 'mouse' is empty, and
+in the command-line, a left click moved the cursor when 'mouse' is empty.
+In Visual mode, 'n' in 'mouse' would be used instead of 'v'.
+
+A blinking cursor or focus change cleared a non-Visual selection.
+
+CTRL-Home and CTRL-End didn't work for MS-DOS versions.
+
+Could include NUL in 'iskeyword', causing a crash when doing insert mode
+completion.
+
+Use _dos_commit() to flush the swap file to disk for MSDOS 16 bit version.
+
+In mappings, CTRL-H was replaced by the backspace key code.  This caused
+problems when it was used as text, e.g. ":map _U :%s/.^H//g<CR>".
+
+":set t_Co=0" was not handled like a normal term.  Now it's translated into
+":set t_Co=", which works.
+
+For ":syntax keyword" the "transparent" option did work, although not
+mentioned in the help.  But synID() returned wrong name.
+
+"gqG" in a file with one-word-per-line (e.g. a dictionary) was very slow and
+not interruptable.
+
+"gq" operator inserted screen lines in the wrong situation.  Now screen
+lines are inserted or deleted when this speeds up displaying.
+
+cindent was wrong when an "if" contained "((".
+
+'r' flag in 'viminfo' was not used for '%'.  Could get files in the buffer
+list from removable media.
+
+Win32 GUI with OLE: if_ole_vc.mak could not be converted into a project.
+Hand-edited to fix this...
+
+With 'nosol' set, doing "$kdw" below an empty line positioned the cursor at
+the end of the line.
+
+Dos32 version changed "\dir\file" into "/dir/file", to work around a DJGPP
+bug.  That bug appears to have been fixed, therefore this translation has
+been removed.
+
+"/^*" didn't work (find '*' in first column).
+
+"<afile>" was not always set for autocommands.  E.g., for ":au BufEnter *
+let &tags = expand("<afile>:p:h") . "/tags".
+
+In an xterm, the window may be a child of the outer xterm window.  Use the
+parent window when getting the title and icon names. (Smith)
+
+When starting with "gvim -bg black -fg white", the value of 'background' is
+only set after reading the .gvimrc file.  This causes a ":syntax on" to use
+the wrong colors.  Now allow using ":gui" to open the GUI window and set the
+colors.  Previously ":gui" in a gvimrc crashed Vim.
+
+tempname() returned the same name all the time, unless the file was actually
+created.  Now there are at least 26 different names.
+
+File name used for <afile> was sometimes full path, sometimes file name
+relative to current directory.
+
+When 'background' was set after the GUI window was opened, it could change
+colors that were set by the user in the .gvimrc file.  Now it only changes
+colors that have not been set by the user.
+
+Ignore special characters after a CSI in the GUI version.  These could be
+interpreted as special characters in a wrong way. (St-Amant)
+
+Memory leak in farsi code, when using search or ":s" command.
+Farsi string reversing for a mapping was only done for new mappings.  Now it
+also works for replacing a mapping.
+
+Crash in Win32 when using a file name longer than _MAX_PATH. (Aaron)
+
+When BufDelete autocommands were executed, some things for the buffer were
+already deleted (esp. Perl stuff).
+
+Perl interface: Buffer specific items were deleted too soon; fixes "screen
+no longer exists" messages.  (Moore)
+
+The Perl functions didn't set the 'modified' flag.
+
+link.sh did not return an error on exit, which may cause Vim to start
+installing, even though there is no executable to install. (Riehm)
+
+Vi incompatibility: In Vi "." redoes the "y" command.  Added the 'y' flag to
+'cpoptions'.  Only for 'compatible' mode.
+
+":echohl" defined a new group, when the argument was not an existing group.
+
+"syn on" and ":syn off" could move the cursor, if there is a hidden buffer
+that is shorter that the current cursor position.
+
+The " mark was not set when doing ":b file".
+
+When a "nextgroup" is used with "skipwhite" in syntax highlighting, space at
+the end of the line made the nextgroup also be found in the next line.
+
+":he g<CTRL-D>", then ":" and backspace to the start didn't redraw.
+
+X11 GUI: "gvim -rv" reversed the colors twice on Sun.  Now Vim checks if the
+result is really reverse video (background darker than foreground).
+
+"cat link.sh | vim -" didn't set syntax highlighting.
+
+Win32: Expanding "file.sw?" matched ".file.swp".  This is an error of
+FindnextFile() that we need to work around.  (Kilgore)
+
+"gqgq" gave an "Invalid lnum" error on the last line.
+Formatting with "gq" didn't format the first line after a change of comment
+leader.
+
+There was no check for out-of-memory in win_alloc().
+
+"vim -h" didn't mention "-register" and "-unregister" for the OLE version.
+
+Could not increase 'cmdheight' when the last window is only one line.  Now
+other windows are also made smaller, when necessary.
+
+Added a few {} to avoid "suggest braces around" warnings from gcc 2.8.x.
+Changed return type of main() from void to int. (Nam)
+
+Using '~' twice in a substitute pattern caused a crash.
+
+"syn on" and ":syn off" could scroll the window, if there is a hidden buffer
+that is shorter that the current cursor position.
+
+":if 0 | if 1 | endif | endif" didn't work.  Same for ":while" and "elseif".
+
+With two windows on modified files, with 'autowrite' set, cursor in second
+window, ":qa" gave a warning for the file in the first window, but then
+auto-wrote the file in the second window. (Webb)
+
+Win32 GUI scrollbar could only handle 32767 lines.  Also makes the
+intellimouse wheel use the configurable number of scrolls. (Robinson)
+
+When using 'patchmode', and the backup file is on another partition, the file
+copying messed up the write-file message.
+
+GUI X11: Alt-Backspace and Alt-Delete didn't work.
+
+"`0" could put the cursor after the last character in the line, causing
+trouble for other commands, like "i".
+
+When completing tags in insert mode with ^X^], some matches were skipped,
+because the compare with other tags was wrong.  E.g., when "mnuFileSave" was
+already there, "mnuFile" would be skipped. (Negri)
+
+When scrolling up/down, a syntax item with "keepend" didn't work properly.
+Now the flags are also stored for the syntax state a the start of each line.
+
+When 'ic' was changed while 'hlsearch' is on, there was no redraw to show the
+effect.
+
+Win32 GUI: Don't display "No write since last chance" in a message box, but in
+the Vim window.
+
+==============================================================================
+VERSION 5.2						*version-5.2*
+
+Improvements made between version 5.1 and 5.2.
+
+
+Long lines editable					*long-lines*
+-------------------
+
+A single long line that doesn't fit in the window doesn't show a line of @@@
+anymore.  Redrawing starts at a character further on in the line, such that
+the text around the cursor can be seen.  This makes it possible to edit these
+long lines when wrapping is on.
+
+
+File browser added					*file-browser-5.2*
+------------------
+
+The Win32, Athena and Motif GUI bring up a file requester if the user asks to
+":browse" for the ":e", ":w", ":r", ":so", ":redirect" and
+":mkexrc/vimrc/vsess" commands.  ::browse e /foo/bar" opens the requester in
+the /foo/bar directory, so you can have nice mapping rhs's like ":browse so
+$vim/macros".  If no initial dir specified for ":browse e", can be compiled to
+either begin in the current directory, or that of the current buffer. (Negri
+and Kahn)
+Added the 'browsedir' option, with value "current", "last" or "buffer".  Tells
+wether a browse dialog starts in last used dir, dir of current buffer, or
+current dir.  ":browse w" is unaffected.
+The default menus have been changed to use the ":browse" command.
+
+
+Dialogs added						*dialogs-added*
+-------------
+
+Added the ":confirm" command.  Works on ":e", ":q", ":w", ":cl".  Win32,
+Athena and Motif GUI uses a window-dialog.  All other platforms can use
+prompt in command-line.  ":confirm qa" offers a choice to save all modified
+files.
+
+confirm() function: allows user access to the confirm engine.
+
+Added 'v' flag to 'guioptions'.  When included, a vertical button layout is
+always used for the Win32 GUI dialog.  Otherwise, a horizontal layout is
+preferred.
+
+Win32 GUI: ":promptfind" and ":promptrepl" pop up a dialog to find/replace.
+To be used from a menu entry. (Negri)
+
+
+Popup menu added					*popup-menu-added*
+----------------
+
+When the 'mousemodel' option is set to "popup", the right mouse button
+displays the top level menu headed with "PopUp" as pop-up context menu.  The
+"PopUp" menu is not displayed in the normal menu bar.  This currently only
+works for Win32 and Athena GUI.
+
+
+Select mode added					*new-Select-mode*
+-----------------
+
+A new mode has been added: "Select mode".  It is like Visual mode, but typing
+a printable character replaces the selection.
+- CTRL-G can be used to toggle between Visual mode and Select mode.
+- CTRL-O can be used to switch from Select mode to Visual mode for one command.
+- Added 'selectmode' option: tells when to start Select mode instead of Visual
+  mode.
+- Added 'mousemodel' option: Change use of mouse buttons.
+- Added 'keymodel' option: tells to use shifted special keys to start a
+  Visual or Select mode selection.
+- Added ":behave". Can be used to quickly set 'selectmode', 'mousemodel'
+  and 'keymodel' for MS-Windows and xterm behavior.
+- The xterm-like selection is now called modeless selection.
+- Visual mode mappings and menus are used in Select mode.  They automatically
+  switch to Visual mode first.  Afterwards, reselect the area, unless it was
+  deleted.  The "gV" command can be used in a mapping to skip the reselection.
+- Added the "gh", "gH" and "g^H" commands: start Select (highlight) mode.
+- Backspace in Select mode deletes the selected area.
+
+"mswin.vim" script.  Sets behavior mostly like MS-Windows.
+
+
+Session files added					*new-session-files*
+-------------------
+
+":mks[ession]" acts like "mkvimrc", but also writes the full filenames of the
+currently loaded buffers and current directory, so that :so'ing the file
+re-loads those files and cd's to that directory.  Also stores and restores
+windows.  File names are made relative to session file.
+The 'sessionoptions' option sets behavior of ":mksession". (Negri)
+
+
+User defined functions and commands			*new-user-defined*
+-----------------------------------
+
+Added user defined functions.  Defined with ":function" until ":endfunction".
+Called with "Func()".  Allows the use of a variable number of arguments.
+Included support for local variables "l:name".  Return a value with ":return".
+See |:function|.
+Call a function with ":call".  When using a range, the function is called for
+each line in the range. |:call|
+"macros/justify.vim" is an example of using user defined functions.
+User functions do not change the last used search pattern or the command to be
+redone with ".".
+'maxfuncdepth' option.  Restricts the depth of function calls.  Avoids trouble
+(crash because of out-of-memory) when a function uses endless recursion.
+
+User definable Ex commands: ":command", ":delcommand" and ":comclear".
+(Moore)  See |user-commands|.
+
+
+New interfaces						*interfaces-5.2*
+--------------
+
+Tcl interface. (Wilken)  See |tcl|.
+Uses the ":tcl", ":tcldo" and "tclfile" commands.
+
+Cscope support. (Kahn) (Sekera)  See |cscope|.
+Uses the ":cscope" and ":cstag" commands.  Uses the options 'cscopeprg',
+'cscopetag', 'cscopetagorder' and 'cscopeverbose'.
+
+
+New ports						*ports-5.2*
+---------
+
+Amiga GUI port. (Nielsen)  Not tested much yet!
+
+RISC OS version. (Thomas Leonard)  See |riscos|.
+This version can run either with a GUI or in text mode, depending upon where
+it is invoked.
+Deleted the "os_archie" files, they were not working anyway.
+
+
+Multi-byte support					*new-multi-byte*
+------------------
+
+MultiByte support for Win32 GUI. (Baek)
+The 'fileencoding' option decides how the text in the file is encoded.
+":ascii" works for multi-byte characters.  Multi-byte characters work on
+Windows 95, even when using the US version. (Aaron)
+Needs to be enabled in feature.h.
+This has not been tested much yet!
+
+
+New functions						*new-functions-5.2*
+-------------
+
+|browse()|	puts up a file requester when available. (Negri)
+|escape()|	escapes characters in a string with a backslash.
+|fnamemodify()|	modifies a file name.
+|input()|	asks the user to enter a line. (Aaron) There is a separate
+		history for lines typed for the input() function.
+|argc()|
+|argv()|	can be used to access the argument list.
+|winbufnr()|	buffer number of a window. (Aaron)
+|winnr()|	window number. (Aaron)
+|matchstr()|	Return matched string.
+|setline()|	Set a line to a string value.
+
+
+New options						*new-options-5.2*
+-----------
+
+'allowrevins'	Enable the CTRL-_ command in Insert and Command-line mode.
+'browsedir'	Tells in which directory a browse dialog starts.
+'confirm'	when set, :q :w and :e commands always act as if ":confirm"
+		is used.  (Negri)
+'cscopeprg'
+'cscopetag'
+'cscopetagorder'
+'cscopeverbose'	Set the |cscope| behavior.
+'filetype'	RISC-OS specific type of file.
+'grepformat'
+'grepprg'	For the |:grep| command.
+'keymodel'	Tells to use shifted special keys to start a Visual or Select
+		mode selection.
+'listchars'	Set character to show in 'list' mode for end-of-line, tabs and
+		trailing spaces. (partly by Smith) Also sets character to
+		display if a line doesn't fit when 'nowrap' is set.
+'matchpairs'	Allows matching '<' with '>', and other single character
+		pairs.
+'mousefocus'	Window focus follows mouse (partly by Terhaar).  Changing the
+		focus with a keyboard command moves the pointer to that
+		window.  Also move the pointer when changing the window layout
+		(split window, change window height, etc.).
+'mousemodel'	Change use of mouse buttons.
+'selection'	When set to "inclusive" or "exclusive", the cursor can go one
+		character past the end of the line in Visual or Select mode.
+		When set to "old" the old behavior is used.  When
+		"inclusive", the character under the cursor is included in the
+		operation.  When using "exclusive", the new "ve" entry of
+		'guicursor' is used.  The default is a vertical bar.
+'selectmode'	Tells when to start Select mode instead of Visual mode.
+'sessionoptions' Sets behavior of ":mksession". (Negri)
+'showfulltag'	When completing a tag in Insert mode, show the tag search
+		pattern (tidied up) as a choice as well (if there is one).
+'swapfile'	Whether to use a swap file for a buffer.
+'syntax'	When it is set, the syntax by that name is loaded.  Allows for
+		setting a specific syntax from a modeline.
+'ttymouse'	Allows using xterm mouse codes for terminals which name
+		doesn't start with "xterm".
+'wildignore'	List of patterns for files that should not be completed at
+		all.
+'wildmode'	Can be used to set the type of expansion for 'wildchar'.
+		Replaces the CTRL-T command for command line completion.
+		Don't beep when listing all matches.
+'winaltkeys'	Win32 and Motif GUI.  When "yes", ALT keys are handled
+		entirely by the window system.  When "no", ALT keys are never
+		used by the window system.  When "menu" it depends on whether
+		a key is a menu shortcut.
+'winminheight'	Minimal height for each window.  Default is 1.  Set to 0 if
+		you want zero-line windows.  Scrollbar is removed for
+		zero-height windows. (Negri)
+
+
+
+New Ex commands						*new-ex-commands-5.2*
+---------------
+
+|:badd|		Add file name to buffer list without side effects.  (Negri)
+|:behave|	Quickly set MS-Windows or xterm behavior.
+|:browse|	Use file selection dialog.
+|:call|		Call a function, optionally with a range.
+|:cnewer|
+|:colder|	To access a stack of quickfix error lists.
+|:comclear|	Clear all user-defined commands.
+|:command|	Define a user command.
+|:continue|	Go back to ":while".
+|:confirm|	Ask confirmation if something unexpected happens.
+|:cscope|	Execute cscope command.
+|:cstag|	Use cscope to jump to a tag.
+|:delcommand|	Delete a user-defined command.
+|:delfunction|	Delete a user-defined function.
+|:endfunction|	End of user-defined function.
+|:function|	Define a user function.
+|:grep|		Works similar to ":make". (Negri)
+|:mksession|	Create a session file.
+|:nohlsearch|	Stop 'hlsearch' highlighting for a moment.
+|:Print|	This is Vi compatible.  Does the same as ":print".
+|:promptfind|	Search dialog (Win32 GUI).
+|:promptrepl|	Search/replace dialog (Win32 GUI).
+|:return|	Return from a user-defined function.
+|:simalt|	Win32 GUI: Simulate alt-key pressed.  (Negri)
+|:smagic|	Like ":substitute", but always use 'magic'.
+|:snomagic|	Like ":substitute", but always use 'nomagic'.
+|:tcl|		Execute TCL command.
+|:tcldo|	Execute TCL command for a range of lines.
+|:tclfile|	Execute a TCL script file.
+|:tearoff|	Tear-off a menu (Win32 GUI).
+|:tmenu|
+|:tunmenu|	Win32 GUI: menu tooltips.  (Negri)
+|:star|	:*	Execute a register.
+
+
+Changed							*changed-5.2*
+-------
+
+Renamed functions:
+		buffer_exists()	   -> bufexists()
+		buffer_name()      -> bufname()
+		buffer_number()    -> bufnr()
+		file_readable()    -> filereadable()
+		highlight_exists() -> hlexists()
+		highlightID()      -> hlID()
+		last_buffer_nr()   -> bufnr("$")
+The old ones are still there, for backwards compatibility.
+
+The CTRL-_ command in Insert and Command-line mode is only available when the
+new 'allowrevins' option is set.  Avoids that people who want to type SHIFT-_
+accidentally enter reverse Insert mode, and don't know how to get out.
+
+When a file name path in ":tselect" listing is too long, remove a part in the
+middle and put "..." there.
+
+Win32 GUI: Made font selector appear inside Vim window, not just any odd
+place. (Negri)
+
+":bn" skips help buffers, unless currently in a help buffer. (Negri)
+
+When there is a status line and only one window, don't show '^' in the status
+line of the current window.
+
+":*" used to be used for "'<,'>", the Visual area.  But in Vi it's used as an
+alternative for ":@".  When 'cpoptions' includes '*' this is Vi compatible.
+
+When 'insertmode' is set, using CTRL-O to execute a mapping will work like
+'insertmode' was not set.  This allows "normal" mappings to be used even when
+'insertmode' is set.
+
+When 'mouse' was set already (e.g., in the .vimrc file), don't automatically
+set 'mouse' when the GUI starts.
+
+Removed the 'N', 'I' and 'A' flags from the 'mouse' option.
+
+Renamed "toggle option" to "boolean option".  Some people thought that ":set
+xyz" would toggle 'xyz' on/off each time.
+
+The internal variable "shell_error" contains the error code from the shell,
+instead of just 0 or 1.
+
+When inserting or replacing, typing CTRL-V CTRL-<CR> used to insert "<C-CR>".
+That is not very useful.  Now the CTRL key is ignored and a <CR> is inserted.
+Same for all other "normal" keys with modifiers.  Mapping these modified key
+combinations is still possible.
+In Insert mode, <C-CR> and <S-Space> can be inserted by using CTRL-K and then
+the special character.
+
+Moved "quotes" file to doc/quotes.txt, and "todo" file to doc/todo.txt.  They
+are now installed like other documentation files.
+
+winheight() function returns -1 for a non-existing window.  It used to be
+zero, but that is a valid height now.
+
+The default for 'selection' is "inclusive", which makes a difference when
+using "$" or the mouse to move the cursor in Visual mode.
+
+":q!" does not exit when there are changed buffers which are hidden.  Use
+":qa!" to exit anyway.
+
+Disabled the Perl/Python/Tcl interfaces by default.  Not many people use them
+and they make the executable a lot bigger.  The internal scripting language is
+now powerful enough for most tasks.
+
+The strings from the 'titlestring' and 'iconstring' options are used
+untranslated for the Window title and icon.  This allows for including a <CR>.
+Previously a <CR> would be shown as "^M" (two characters).
+
+When a mapping is started in Visual or Select mode which was started from
+Insert mode (the mode shows "(insert) Visual"), don't return to Insert mode
+until the mapping has ended.  Makes it possible to use a mapping in Visual
+mode that also works when the Visual mode was started from Select mode.
+
+Menus in $VIMRUNTIME/menu.vim no longer overrule existing menus.  This helps
+when defining menus in the .vimrc file, or when sourcing mswin.vim.
+
+Unix: Use /var/tmp for .swp files, if it exists.  Files there survive a
+reboot (at least on Linux).
+
+
+Added							*added-5.2*
+-----
+
+--with-motif-lib configure argument.  Allows for using a static Motif library.
+
+Support for mapping numeric keypad +,-,*,/ keys. (Negri)
+When not mapped, they produce the normal character.
+
+Win32 GUI: When directory dropped on Gvim, cd there and edit new buffer.
+(Negri)
+
+Win32 GUI: Made CTRL-Break work as interrupt, so that CTRL-C can be
+used for mappings.
+
+In the output of ":map", highlight the "*" to make clear it's not part of the
+rhs. (Roemer)
+
+When showing the Visual area, the cursor is not switched off, so that it can
+be located.  The Visual area is now highlighted with a grey background in the
+GUI.  This makes the cursor visible when it's also reversed.
+
+Win32: When started with single full pathname (e.g. via double-clicked file),
+cd to that file's directory. (Negri)
+
+Win32 GUI: Tear-off menus, with ":tearoff <menu-name>" command. (Negri)
+'t' option to 'guioptions': Add tearoff menu items for Win32 GUI and Motif.
+It's included by default.
+Win32 GUI: tearoff menu with submenus is indicated with a ">>". (Negri)
+
+Added ^Kaa and ^KAA digraphs.
+Added "euro" symbol to digraph.c. (Corry)
+
+Support for Motif menu shortcut keys, using '&' like MS-Windows (Ollis).
+Other GUIs ignore '&' in a menu name.
+
+DJGPP: Faster screen updating (John Lange).
+
+Clustering of syntax groups ":syntax cluster" (Bigham).
+Including syntax files: ":syntax include" (Bigham).
+
+Keep column when switching buffers, when 'nosol' is set (Radics).
+
+Number function for Perl interface.
+
+Support for Intellimouse in Athena GUI. (Jensen)
+
+":sleep" also accepts an argument in milliseconds, when "m" is used.
+
+Added 'p' flag in 'guioptions': Install callbacks for enter/leave window
+events.  Makes cursor blinking work for Terhaar, breaks it for me.
+
+"--help" and "--version" command-line arguments.
+
+Non-text in ":list" output is highlighted with NonText.
+
+Added text objects: "i(" and "i)" as synonym for "ib". "i{" and "i}" as
+synonym for "iB".  New: "i<" and "i>", to select <thing>.  All this also for
+"a" objects.
+
+'O' flag in 'shortmess': message for reading a file overwrites any previous
+message. (Negri)
+
+Win32 GUI: 'T' flag in 'guioptions': switch toolbar on/off.
+Included a list with self-made toolbar bitmaps.  (Negri)
+
+Added menu priority for sub-menus.  Implemented for Win32 and Motif GUI.
+Display menu priority with ":menu" command.
+Default and Syntax menus now include priority for items.  Allows inserting
+menu items in between the default ones.
+
+When the 'number' option is on, highlight line numbers with the LineNr group.
+
+"Ignore" highlight group: Text highlighted with this is made blank.  It is
+used to hide special characters in the help text.
+
+Included Exuberant Ctags version 2.3, with C++ support, Java support and
+recurse into directories. (Hiebert)
+
+When a tags file is not sorted, and this is detected (in a simplistic way), an
+error message is given.
+
+":unlet" accepts a "!", to ignore non-existing variables, and accepts more
+than one argument. (Roemer)
+Completion of variable names for ":unlet". (Roemer)
+
+When there is an error in a function which is called by another function, show
+the call stack in the error message.
+
+New file name modifiers:
+":.": reduce file name to be relative to current dir.
+":~": reduce file name to be relative to home dir.
+":s?pat?sub?": substitute "pat" with "sub" once.
+":gs?pat?sub?": substitute "pat" with "sub" globally.
+
+New configure arguments: --enable-min-features and --enable-max-features.
+Easy way to switch to minimum or maximum features.
+
+New compile-time feature: modify_fname.  For file name modifiers, e.g,
+"%:p:h".  Can be disabled to save some code (16 bit DOS).
+
+When using whole-line completion in Insert mode, and 'cindent' is set, indent
+the line properly.
+
+MSDOS and Win32 console: 'guicursor' sets cursor thickness. (Negri)
+
+Included new set of Farsi fonts. (Shiran)
+
+Accelerator text now also works in Motif.  All menus can be defined with & for
+mnemonic and TAB for accelerator text.  They are ignored on systems that don't
+support them.
+When removing or replacing a menu, compare the menu name only up to the <Tab>
+before the mnemonic.
+
+'i' and 'I' flags after ":substitute": ignore case or not.
+
+"make install" complains if the runtime files are missing.
+
+Unix: When finding an existing swap file that can't be opened, mention the
+owner of the file in the ATTENTION message.
+
+The 'i', 't' and 'k' options in 'complete' now also print the place where they
+are looking for matches. (Acevedo)
+
+"gJ" command: Join lines without inserting a space.
+
+Setting 'keywordprg' to "man -s" is handled specifically.  The "-s" is removed
+when no count given, the count is added otherwise.  Configure checks if "man
+-s 2 read" works, and sets the default for 'keywordprg' accordingly.
+
+If you do a ":bd" and there is only one window open, Vim tries to move to a
+buffer of the same type (i.e. non-help to non-help, help to help), for
+consistent behavior to :bnext/:bprev. (Negri)
+
+Allow "<Nop>" to be used as the rhs of a mapping.  ":map xx <Nop>", maps "xx"
+to nothing at all.
+
+In a ":menu" command, "<Tab>" can be used instead of a real tab, in the menu
+path.  This makes it more easy to type, no backslash needed.
+
+POSIX compatible character classes for regexp patterns: [:alnum:], [:alpha:],
+[:blank:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:],
+[:space:], [:upper:] and [:xdigit:]. (Briscoe)
+
+regexp character classes (for fast syntax highlight matching):
+	digits:	    \d [0-9]		\D  not digit (Roemer)
+	hex:	    \x [0-9a-fA-F]	\X  not hex
+	octal:	    \o [0-7]		\O  not octal
+	word:	    \w [a-zA-Z0-9_]	\W  not word
+	head:	    \h [a-zA-Z_]	\H  not head
+	alphabetic: \a [a-zA-Z]		\A  not alphabetic
+	lowercase:  \l [a-z]		\L  not lowercase
+	uppercase:  \u [A-Z]		\U  not uppercase
+
+":set" now accepts "+=", |^=" and "-=": add or remove parts of a string
+option, add or subtract a number from a number option.  A comma is
+automagically inserted or deleted for options that are a comma separated list.
+
+Filetype feature, for autocommands.  Uses a file type instead of a pattern to
+match a file.  Currently only used for RISC OS.  (Leonard)
+
+In a pattern for an autocommand, environment variables can be used.  They are
+expanded when the autocommand is defined.
+
+"BufFilePre" and "BufFilePost" autocommand evens: Before and after applying
+the ":file" command to change the name of a buffer.
+"VimLeavePre" autocommand event: before writing the .viminfo file.
+
+For autocommands argument: <abuf> is buffer number, like <afile>.
+
+Made syntax highlighting a bit faster when scrolling backwards, by keeping
+more syncing context.
+
+Win32 GUI: Made scrolling faster by avoiding a redraw when deleting or
+inserting screen lines.
+
+GUI: Made scrolling faster by not redrawing the scrollbar when the thumb moved
+less than a pixel.
+
+Included ":highlight" in bugreport.vim.
+
+Created install.exe program, for simplistic installation on DOS and
+MS-Windows.
+
+New register: '_', the black hole.  When writing to it, nothing happens.  When
+reading from it, it's always empty.  Can be used to avoid a delete or change
+command to modify the registers, or reduce memory use for big changes.
+
+CTRL-V xff enters character by hex number.  CTRL-V o123 enters character by
+octal number. (Aaron)
+
+Improved performance of syntax highlighting by skipping check for "keepend"
+when there isn't any.
+
+Moved the mode message ("-- INSERT --") to the last line of the screen.  When
+'cmdheight' is more than one, messages will remain readable.
+
+When listing matching files, they are also sorted on 'suffixes', such that
+they are listed in the same order as CTRL-N retrieves them.
+
+synIDattr() takes a third argument (optionally), which tells for which
+terminal type to get the attributes for.  This makes it possible to run
+2html.vim outside of gvim (using color names instead of #RRGGBB).
+
+Memory profiling, only for debugging.  Prints at exit, and with "g^A" command.
+(Kahn)
+
+DOS: When using a file in the current drive, remove the drive name:
+"A:\dir\file" -> "\dir\file".  This helps when moving a session file on a
+floppy from "A:\dir" to "B:\dir".
+
+Increased number of remembered jumps from 30 to 50 per window.
+
+Command to temporarily disable 'hls' highlighting until the next search:
+":nohlsearch".
+
+"gp" and "gP" commands: like "p" and "P", but leave the cursor just after the
+inserted text.  Used for the CTRL-V command in MS-Windows mode.
+
+
+Fixed							*fixed-5.2*
+-----
+
+Win32 GUI: Could draw text twice in one place, for fake-bold text.  Removed
+this, Windows will handle the bold text anyway. (Negri)
+
+patch 5.1.1: Win32s GUI: pasting caused a crash (Negri)
+
+patch 5.1.2: When entering another window, where characters before the cursor
+have been deleted, could have a cursor beyond the end of the line.
+
+patch 5.1.3: Win32s GUI: Didn't wait for external command to finish. (Negri)
+
+patch 5.1.4: Makefile.w32 can now also be used to generate the OLE version
+(Scott).
+
+patch 5.1.5: Crashed when using syntax highlighting: cursor on a line that
+doesn't fit in the window, and splitting that line in two.
+
+patch 5.1.6: Visual highlighting bug: After ":set nowrap", go to end of line
+(so that the window scrolls horizontally), ":set wrap".  Following Visual
+selection was wrong.
+
+patch 5.1.7: When 'tagbsearch' off, and 'ignorecase' off, still could do
+binary searching.
+
+patch 5.1.8: Win32 GUI: dragging the scrollbar didn't update the ruler.
+
+patch 5.1.9: Using ":gui" in .vimrc, caused xterm cursor to disappear.
+
+patch 5.1.10: A CTRL-N in Insert mode could cause a crash, when a buffer
+without a name exists.
+
+patch 5.1.11: "make test" didn't work in the shadow directory.  Also adjusted
+"make shadow" for the links in the ctags directory.
+
+patch 5.1.12: "buf 123foo" used "123" as a count, instead as the start of a
+buffer name.
+
+patch 5.1.13: When completing file names on the command-line, reallocating the
+command-line may go wrong.
+
+patch 5.1.14: ":[nvci]unmenu" removed menu for all modes, when full menu patch
+specified.
+
+Graceful handling of NULLs in drag-dropped file list.  Handle passing NULL to
+Fullname_save(). (Negri)
+
+Win32: ":!start" to invoke a program without opening a console, swapping
+screens, or waiting for completion in either console or gui version. e.g. you
+can type ":!start winfile".  ALSO fixes "can't delete swapfile after spawning
+a shell" bug. (enhancement of Aaron patch) (Negri)
+
+Win32 GUI: Fix CTRL-X default keymapping to be more Windows-like. (Negri)
+
+Shorten filenames on startup.  If in /foo/bar, entering "vim ../bar/bang.c"
+displays "bang.c" in status bar, not "/foo/bar/bang.c"  (Negri)
+
+Win32 GUI: No copy to Windows clipboard when it's not desired.
+
+Win32s: Fix pasting from clipboard - made an assumption not valid under
+Win32s. (Negri)
+
+Win32 GUI: Speed up calls to gui_mch_draw_string() and cursor drawing
+functions. (Negri)
+
+Win32 GUI: Middle mouse button emulation now works in GUI! (Negri)
+
+Could skip messages when combining commands in one line, e.g.:
+":echo "hello" | write".
+
+Perl interpreter was disabled before executing VimLeave autocommands.  Could
+not use ":perl" in them.  (Aaron)
+
+Included patch for the Intellimouse (Aaron/Robinson).
+
+Could not set 'ls' to one, when last window has only one line.  (Mitterand)
+
+Fixed a memory leak when removing menus.
+
+After ":only" the ruler could overwrite a message.
+
+Dos32: removed changing of __system_flags.  It appears to work better when
+it's left at the default value.
+
+p_aleph was an int instead of along, caused trouble on systems where
+sizeof(int) != sizeof(long). (Schmidt)
+
+Fixed enum problems for Ultrix. (Seibert)
+
+Small redraw problem: "dd" on last line in file cleared wrong line.
+
+Didn't interpret "cmd | endif" when "cmd" starts with a range.  E.g. "if 0 |
+.d | endif".
+
+Command "+|" on the last line of the file caused ml_get errors.
+
+Memory underrun in eval_vars(). (Aaron)
+
+Don't rename files in a difficult way, except on Windows 95 (was also done on
+Windows NT).
+
+Win32 GUI: An external command that produces an error code put the error
+message in a dialog box.  had to close the window and close the dialog.  Now
+the error code is displayed in the console. (Negri)
+
+"comctl32.lib" was missing from the GUI libraries in Makefile.w32. (Battle)
+
+In Insert mode, when entering a window in Insert mode, allow the cursor to be
+one char beyond the text.
+
+Renamed machine dependent rename() to mch_rename().  Define mch_rename() to
+rename() when it works properly.
+
+Rename vim_chdir() to mch_chdir(), because it's machine dependent.
+
+When using an arglist, and editing file 5 of 4, ":q" could cause "-1 more
+files to edit" error.
+
+In if_python.c, VimCommand() caused an assertion when a do_cmdline() failed.
+Moved the Python_Release_Vim() to before the VimErrorCheck().  (Harkins)
+
+Give an error message for an unknown argument after "--".  E.g. for "vim
+--xyz".
+
+The FileChangedShell autocommand didn't set <afile> to the name of the changed
+file.
+
+When doing ":e file", causing the attention message, there sometimes was no
+hit-enter prompt.  Caused by empty line or "endif" at end of sourced file.
+
+A large number of patches for the VMS version. (Hunsaker)
+
+When CTRL-L completion (find longest match) results in a shorter string, no
+completion is done (happens with ":help").
+
+Crash in Win32 GUI version, when using an Ex "@" command, because
+LinePointers[] was used while not initialized.
+
+Win32 GUI: allow mapping of Alt-Space.
+
+Output from "vim -h" was sent to stderr.  Sending it to stdout is better, so
+one can use "vim -h | more".
+
+In command-line mode, ":vi[!]" should reload the file, just like ":e[!]".
+In Ex mode, ":vi" stops Ex mode, but doesn't reload the file.  This is Vi
+compatible.
+
+When using a ":set ls=1" in the .gvimrc file, would get a status line for a
+single window.  (Robinson)
+
+Didn't give an error message for ":set ai,xx". (Roemer)
+Didn't give an error message for ":set ai?xx", ":set ai&xx", ":set ai!xx".
+
+Non-Unix systems: That a file exists but is unreadable is recognized as "new
+file".  Now check for existence when file can't be opened (like Unix).
+
+Unix: osdef.sh didn't handle declarations where the function name is at the
+first column of the line.
+
+DJGPP: Shortening of file names didn't work properly, because get_cwd()
+returned a path with backslashes. (Negri)
+
+When using a 'comments' part where a space is required after the middle part,
+always insert a space when starting a new line.  Helps for C comments, below a
+line with "/****".
+
+Replacing path of home directory with "~/" could be wrong for file names
+with embedded spaces or commas.
+
+A few fixes for the Sniff interface. (Leherbauer)
+
+When asking to hit 'y' or 'n' (e.g. for ":3,1d"), using the mouse caused
+trouble.  Same for ":s/x/y/c" prompt.
+
+With 'nowrap' and 'list', a Tab halfway on the screen was displayed as blanks,
+instead of the characters specified with 'listchars'.  Also for other
+characters that take more than one screen character.
+
+When setting 'guifont' to an unknown font name, the previous font was lost and
+a default font would be used. (Steed)
+
+DOS: Filenames in the root directory didn't get shortened properly. (Negri)
+
+DJGPP: making a full path name out of a file name didn't work properly when
+there is no _fullpath() function. (Negri)
+
+Win32 console: ":sh" caused a crash. (Negri)
+
+Win32 console: Setting 'lines' and/or 'columns' in the _vimrc failed miserably
+(could hang Windows 95). (Negri)
+
+Win32: The change-drive function was not correct, went to the wrong drive.
+(Tsindlekht)
+
+GUI: When editing a command line in Ex mode, Tabs were sometimes not
+backspaced properly, and unprintable characters were displayed directly.
+non-GUI can still be wrong, because a system function is called for this.
+
+":set" didn't stop after an error.  For example ":set no ai" gave an error for
+"no", but still set "ai".  Now ":set" stops after the first error.
+
+When running configure for ctags, $LDFLAGS wasn't passed to it, causing
+trouble for IRIX.
+
+"@%" and "@#" when file name not set gave an error message.  Now they just
+return an empty string. (Steed)
+
+CTRL-X and CTRL-A didn't work correctly with negative hex and octal numbers.
+(Steed)
+
+":echo" always started with a blank.
+
+Updating GUI cursor shape didn't always work (e.g., when blinking is off).
+
+In silent Ex mode ("ex -s" or "ex <file") ":s///p" didn't print a line.  Also
+a few other commands that explicitly print a text line didn't work.  Made this
+Vi compatible.
+
+Win32 version of _chdrive() didn't return correct value. (Tsindlekht)
+
+When using 't' in 'complete' option, no longer give an error message for a
+missing tags file.
+
+Unix: tgoto() can return NULL, which was not handled correctly in configure.
+
+When doing ":help" from a buffer where 'binary' is set, also edited the help
+file in binary mode.  Caused extra ^Ms for DOS systems.
+
+Cursor position in a file was reset to 1 when closing a window.
+
+":!ls" in Ex mode switched off echo.
+
+When doing a double click in window A, while currently in window B, first
+click would reset double click time, had to click three times to select a
+word.
+
+When using <F11> in mappings, ":mkexrc" produced an exrc file that can't be
+used in Vi compatible mode.  Added setting of 'cpo' to avoid this.  Also, add
+a CTRL-V in front of a '<', to avoid a normal string to be interpreted as a
+special key name.
+
+Gave confusing error message for ":set guifont=-*-lucida-*": first "font is
+not fixed width", then "Unknown font".
+
+Some options were still completely left out, instead of included as hidden
+options.
+
+While running the X11 GUI, ignore SIGHUP signals.  Avoids a crash after
+executing an external command (in rare cases).
+
+In os_unixx.h, signal() was defined to sigset(), while it already was.
+
+Memory leak when executing autocommands (was reported as a memory leak in
+syntax highlighting).
+
+Didn't print source of error sometimes, because pointers were the same,
+although names were different.
+
+Avoid a number of UMR errors from Purify (third argument to open()).
+
+A swap file could still be created just after setting 'updatecount' to zero,
+when there is an empty buffer and doing ":e file". (Kutschera)
+
+Test 35 failed on 64 bit machines. (Schild)
+
+With "p" and "P" commands, redrawing was slow.
+
+Awk script for html documentation didn't work correctly with AIX awk.
+Replaced "[ ,.);\]	]" with "[] ,.);	]". (Briscoe)
+The makehtml.awk script had a small problem, causing extra lines to be
+inserted. (Briscoe)
+
+"gqgq" could not be repeated.  Repeating for "gugu" and "gUgU" worked in a
+wrong way.  Also made "gqq" work to be consistent with "guu".
+
+C indent was wrong after "case ':':".
+
+":au BufReadPre *.c put": Line from put text was deleted, because the buffer
+was still assumed to be empty.
+
+Text pasted with the Edit/Paste menu was subject to 'textwidth' and
+'autoindent'.  That was inconsistent with using the mouse to paste.  Now "*p
+is used.
+
+When using CTRL-W CTRL-] on a word that's not a tag, and then CTRL-] on a tag,
+window was split.
+
+":ts" got stuck on a tags line that has two extra fields.
+
+In Insert mode, with 'showmode' on, <C-O><C-G> message was directly
+overwritten by mode message, if preceded with search command warning message.
+
+When putting the result of an expression with "=<expr>p, newlines were
+inserted like ^@ (NUL in the file).  Now the string is split up in lines at
+the newline.
+
+putenv() was declared with "const char *" in pty.c, but with "char *" in
+osdef2.h.in.  Made the last one also "const char *".
+
+":help {word}", where +{word} is a feature, jumped to the feature list instead
+of where the command was explained.  E.g., ":help browse", ":help autocmd".
+
+Using the "\<xx>" form in an expression only got one byte, even when using a
+special character that uses several bytes (e.g., "\<F9>").
+Changed "\<BS>" to produce CTRL-H instead of the special key code for the
+backspace key.  "\<Del>" produces 0x7f.
+
+":mkvimrc" didn't write a command to set 'compatible' or 'nocompatible'.
+
+The shell syntax didn't contain a "syn sync maxlines" setting.  In a long file
+without recognizable items, syncing took so long it looked like Vim hangs.
+Added a maxlines setting, and made syncing interruptable.
+
+The "gs" command didn't flush output before waiting.
+
+Memory leaks for:
+    ":if 0 | let a = b . c | endif"
+    "let a = b[c]"
+    ":so {file}" where {file} contains a ":while"
+
+GUI: allocated fonts were never released. (Leonard)
+
+Makefile.bor:
+- Changed $(DEFINES) into a list of "-D" options, so that it can also be used
+  for the resource compiler. (not tested!)
+- "bcc.cfg" was used for all configurations.  When building for another
+  configuration, the settings for the previous one would be used.  Moved
+  "bcc.cfg" to the object directory. (Geddes)
+- Included targets for vimrun, install, ctags and xxd.  Changed the default to
+  use the Borland DLL Runtime Library, makes Vim.exe a log smaller. (Aaron)
+
+"2*" search for the word under the cursor with "2" prepended. (Leonard)
+
+When deleting into a specific register, would still overwrite the non-Win32
+GUI selection.  Now ""x"*P works.
+
+When deleting into the "" register, would write to the last used register.
+Now ""x always writes to the unnamed register.
+
+GUI Athena: A submenu with a '.' in it didn't work.  E.g.,
+":amenu Syntax.XY\.Z.foo lll".
+
+When first doing ":tag foo" and then ":tnext" and/or ":tselect" the order of
+matching tags could change, because the current file is different.  Now the
+existing matches are kept in the same order, newly found matches are added
+after them, not matter what the current file is.
+
+":ta" didn't find the second entry in a tags file, if the second entry was
+longer than the first one.
+
+When using ":set si tw=7" inserting "foo {^P}" made the "}" inserted at the
+wrong position.  can_si was still TRUE when the cursor is not in the indent of
+the line.
+
+Running an external command in Win32 version had the problem that Vim exits
+when the X on the console is hit (and confirmed).  Now use the "vimrun"
+command to start the external command indirectly. (Negri)
+
+Win32 GUI: When running an external filter, do it in a minimized DOS box.
+(Negri)
+
+":let" listed variables without translation into printable characters.
+
+Win32 console: When resizing the window, switching back to the old size
+(when exiting or executing an external command) sometimes failed. (Negri)
+This appears to also fix a "non fixable" problem:
+Win32 console in NT 4.0: When running Vim in a cmd window with a scrollbar,
+the scrollbar disappeared and was not restored when Vim exits.  This does work
+under NT 3.51, it appears not to be a Vim problem.
+
+When executing BufDelete and BufUnload autocommands for a buffer without a
+name, the name of the current buffer was used for <afile>.
+
+When jumping to a tag it reported "tag 1 of >2", while in fact there could be
+only two matches.  Changed to "tag 1 of 2 or more".
+
+":tjump tag" did a linear search in the tags file, which can be slow.
+
+Configure didn't find "LibXm.so.2.0", a Xm library with a version number.
+
+Win32 GUI: When using a shifted key with ALT, the shift modifier would remain
+set, even when it was already used by changing the used key.  E.g., "<M-S-9>"
+resulted in "<M-S-(>", but it should be "<M-(>". (Negri)
+
+A call to ga_init() was often followed by setting growsize and itemsize.
+Created ga_init2() for this, which looks better. (Aaron)
+
+Function filereadable() could call fopen() with an empty string, which might
+be illegal.
+
+X Windows GUI: When executing an external command that outputs text, could
+write one character beyond the end of a buffer, which caused a crash. (Kohan)
+
+When using "*" or "#" on a string that includes '/' or '?' (when these are
+included in 'isk'), they were not escaped. (Parmelan)
+
+When adding a ToolBar menu in the Motif GUI, the submenu_id field was not
+cleared, causing random problems.
+
+When adding a menu, the check if this menu (or submenu) name already exists
+didn't compare with the simplified version (no mnemonic or accelerator) of the
+new menu.  Could get two menus with the same name, e.g., "File" and "&File".
+
+Breaking a line because of 'textwidth' at the last line in the window caused a
+redraw of the whole window instead of a scroll.  Speeds up normal typing with
+'textwidth' a lot for slow terminals.
+
+An invalid line number produced an "invalid range" error, even when it wasn't
+to be executed (inside "if 0").
+
+When the unnamed, first buffer is re-used, the "BufDelete" autocommand was
+not called.  It would stick in a buffer list menu.
+
+When doing "%" on the NUL after the line, a "{" or "}" in the last character
+of the line was not found.
+
+The Insert mode menu was not used for the "s" command, the Operator-pending
+menu was used instead.
+
+With 'compatible' set, some syntax highlighting was not correct, because of
+using "[\t]" for a search pattern.  Now use the regexps for syntax
+highlighting like the 'cpoptions' option is empty (as was documented already).
+
+When using "map <M-Space> ms" or "map <Space> sss" the output of ":map" didn't
+show any lhs for the mapping (if 'isprint' includes 160).  Now always use
+<Space> and <M-Space>, even when they are printable.
+
+Adjusted the Syntax menu, so that the lowest entry fits on a small screen (for
+Athena, where menus don't wrap).
+
+When using CTRL-E or CTRL-Y in Insert mode for characters like 'o', 'x' and
+digits, repeating the insert didn't work.
+
+The file "tools/ccfilter.README.txt" could not be unpacked when using short
+file names, because of the two dots.  Renamed it to
+"tools/ccfilter_README.txt".
+
+For a dark 'background', using Blue for Directory and SpecialKey highlight
+groups is not very readable.  Use Cyan instead.
+
+In the function uc_scan_attr() in ex_docmd.c there was a goto that jumped into
+a block with a local variable.  That's illegal for some compilers.
+
+Win32 GUI: There was a row of pixels at the bottom of the window which was not
+drawn. (Aaron)
+
+Under DOS, editing "filename/" created a swap file of "filename/.swp".  Should
+be "filename/_swp".
+
+Win32 GUI: pointer was hidden when executing an external command.
+
+When 'so' is 999, "J" near the end of the file didn't redisplay correctly.
+
+":0a" inserted after the first line, instead of before the first line.
+
+Unix: Wildcard expansion didn't handle single quotes and {} patterns.  Now
+":file 'window.c'" removes the quotes and ":e 'main*.c'" works (literal '*').
+":file {o}{n}{e}" now results in file name "one".
+
+Memory leak when setting a string option back to its default value.
+
+==============================================================================
+VERSION 5.3						*version-5.3*
+
+Version 5.3 was a bug-fix version of 5.2.  There are not many changes.
+Improvements made between version 5.2 and 5.3:
+
+Changed							*changed-5.3*
+-------
+
+Renamed "IDE" menu to "Tools" menu.
+
+
+Added							*added-5.3*
+-----
+
+Win32 GUI: Give a warning when Vim is activated, and one of the files changed
+since editing started. (Negri)
+
+
+Fixed							*fixed-5.3*
+-----
+
+5.2.1: Win32 GUI: space for external command was not properly allocated, could
+cause a crash. (Aaron)  This was the reason to bring out 5.3 quickly after
+5.2.
+
+5.2.2: Some commands didn't complain when used without an argument, although
+they need one: ":badd", ":browse", ":call", ":confirm", ":behave",
+":delfunction", ":delcommand" and ":tearoff".
+":endfunction" outside of a function gave wrong error message: "Command not
+implemented".  Should be ":endfunction not inside a function".
+
+5.2.3: Win32 GUI: When gvim was installed in "Program files", or another path
+with a space in it, executing external commands with vimrun didn't work.
+
+5.2.4: Pasting with the mouse in Insert mode left the cursor on the last
+pasted character, instead of behind it.
+
+5.2.5: In Insert mode, cursor after the end of the line, a shift-cursor-left
+didn't include the last character in the selection.
+
+5.2.6: When deleting text from Insert mode (with "<C-O>D" or the mouse), which
+includes the last character in the line, the cursor could be left on the last
+character in the line, instead of just after it.
+
+5.2.7: Win32 GUI: scrollbar was one pixel too big.
+
+5.2.8: Completion of "PopUp" menu showed the derivates "PopUpc", "PopUPi",
+etc.  ":menu" also showed these.
+
+5.2.9: When using two input() functions on a row, the prompt would not be
+drawn in column 0.
+
+5.2.10: A loop with input() could not be broken with CTRL-C.
+
+5.2.11: ":call asdf" and ":call asdf(" didn't give an error message.
+
+5.2.12: Recursively using ":normal" crashes Vim after a while.  E.g.:
+":map gq :normal gq<CR>"
+
+5.2.13: Syntax highlighting used 'iskeyword' from wrong buffer.  When using
+":help", then "/\k*" in another window with 'hlsearch' set.
+
+5.2.14: When using ":source" from a function, global variables would not be
+available unless "g:" was used.
+
+5.2.15: XPM files can have the extension ".pm", which is the same as for Perl
+modules.  Added "syntax/pmfile.vim" to handle this.
+
+5.2.16: On Win32 and Amiga, "echo expand("%:p:h")" removed one dirname in an
+empty buffer.  mch_Fullname() didn't append a slash at the end of a directory
+name.
+
+Should include the character under the cursor in the Visual area when using
+'selection' "exclusive".  This wasn't done for "%", "e", "E", "t" and "f".
+
+""p would always put register 0, instead of the unnamed (last used) register.
+Reverse the change that ""x doesn't write in the unnamed (last used) register.
+It would always write in register 0, which isn't very useful.  Use "-x for the
+paste mappings in Visual mode.
+
+When there is one long line on the screen, and 'showcmd' is off, "0$" didn't
+redraw the screen.
+
+Win32 GUI: When using 'mousehide', the pointer would flicker when the cursor
+shape is changed. (Negri)
+
+When cancelling Visual mode, and the cursor moves to the start, the wanted
+column wasn't set, "k" or "j" moved to the wrong column.
+
+When using ":browse" or ":confirm", was checking for a comment and separating
+bar, which can break some commands.
+
+Included fixes for Macintosh. (Kielhorn)
+
+==============================================================================
+VERSION 5.4						*version-5.4*
+
+Version 5.4 adds new features, useful changes and a lot of bug fixes.
+
+
+Runtime directory introduced				*new-runtime-dir*
+----------------------------
+
+The distributed runtime files are now in $VIMRUNTIME, the user files in $VIM.
+You normally don't set $VIMRUNTIME but let Vim find it, by using
+$VIM/vim{version}, or use $VIM when that doesn't exist.  This allows for
+separating the user files from the distributed files and makes it more easy to
+upgrade to another version.  It also makes it possible to keep two versions of
+Vim around, each with their own runtime files.
+
+In the Unix distribution the runtime files have been moved to the "runtime"
+directory.  This makes it possible to copy all the runtime files at once,
+without the need to know what needs to be copied.
+
+The archives for DOS, Windows, Amiga and OS/2 now have an extra top-level
+"vim" directory.  This is to make clear that user-modified files should be put
+here.  The directory that contains the executables doesn't have '-' or '.'
+characters.  This avoids strange extensions.
+
+The $VIM and $VIMRUNTIME variables are set when they are first used.  This
+allows them to be used by Perl, for example.
+
+The runtime files are also found in a directory called "$VIM/runtime".  This
+helps when running Vim after just unpacking the runtime archive.  When using
+an executable in the "src" directory, Vim checks if "vim54" or "runtime" can
+be added after removing it.  This make the runtime files be found just after
+compiling.
+
+A default for $VIMRUNTIME can be given in the Unix Makefile.  This is useful
+if $VIM doesn't point to above the runtime directory but to e.g., "/etc/".
+
+
+Filetype introduced					*new-filetype-5.4*
+-------------------
+
+Syntax files are now loaded with the new FileType autocommand.  Old
+"mysyntaxfile" files will no longer work. |filetypes|
+
+The scripts for loading syntax highlighting have been changed to use the
+new Syntax autocommand event.
+
+This combination of Filetype and Syntax events allows tuning the syntax
+highlighting a bit more, also when selected from the Syntax menu.  The
+FileType autocommand can also be used to set options and mappings specifically
+for that type of file.
+
+The "$VIMRUNTIME/filetype.vim" file is not loaded automatically.  The
+":filetype on" command has been added for this.  ":syntax on" also loads it.
+
+The 'filetype' option has been added.  It is used to trigger the FileType
+autocommand event, like the 'syntax' option does for the Syntax event.
+
+":set syntax=OFF" and ":set syntax=ON" can be used (in a modeline) to switch
+syntax highlighting on/off for the current file.
+
+The Syntax menu commands have been moved to $VIMRUNTIME/menu.vim.  The Syntax
+menu is included both when ":filetype on" and when ":syntax manual" is used.
+
+Renamed the old 'filetype' option to 'osfiletype'.  It was only used for
+RISCOS.  'filetype' is now used for the common file type.
+
+Added the ":syntax manual" command.  Allows manual selection of the syntax to
+be used, e.g., from a modeline.
+
+
+Vim script line continuation			*new-line-continuation*
+----------------------------
+
+When an Ex line starts with a backslash, it is concatenated to the previous
+line.  This avoids the need for long lines. |line-continuation| (Roemer)
+Example: >
+	if   has("dialog_con") ||
+	   \ has("dialog_gui")
+	    :let result = confirm("Enter your choice",
+				\ "&Yes\n&No\n&Maybe",
+				\ 2)
+	endif
+
+
+Improved session files				*improved-sessions*
+----------------------
+
+New words for 'sessionoptions':
+- "help"	Restore the help window.
+- "blank"	Restore empty windows.
+- "winpos"	Restore the Vim window position.  Uses the new ":winpos"
+		command
+- "buffers"	Restore hidden and unloaded buffers.  Without it only the
+		buffers in windows are restored.
+- "slash"	Replace backward by forward slashes in file names.
+- "globals"	Store global variables.
+- "unix"	Use unix file format (<NL> instead of <CR><NL>)
+
+The ":mksession" and 'sessionoptions' are now in the +mksession feature.
+
+The top line of the window is also restored when using a session file.
+
+":mksession" and ":mkvimrc" don't store 'fileformat', it should be detected
+when loading a file.
+
+(Most of this was done by Vince Negri and Robert Webb)
+
+
+Autocommands improved				*improved-autocmds-5.4*
+---------------------
+
+New events:
+|FileType|	When the file type has been detected.
+|FocusGained|	When Vim got input focus. (Negri)
+|FocusLost|	When Vim lost input focus. (Negri)
+|BufCreate|	Called just after a new buffer has been created or has been
+		renamed. (Madsen)
+|CursorHold|	Triggered when no key has been typed for 'updatetime'.  Can be
+		used to do something with the word under the cursor. (Negri)
+		Implemented CursorHold autocommand event for Unix. (Zellner)
+		Also for Amiga and MS-DOS.
+|GUIEnter|	Can be used to do something with the GUI window after it has
+		been created (e.g., a ":winpos 100 50").
+|BufHidden|	When a buffer becomes hidden.  Used to delete the
+		option-window when it becomes hidden.
+
+Also trigger |BufDelete| just before a buffer is going to be renamed. (Madsen)
+
+The "<amatch>" pattern can be used like "<afile>" for autocommands, except
+that it is the matching value for the FileType and Syntax events.
+
+When ":let @/ = <string>" is used in an autocommand, this last search pattern
+will be used after the autocommand finishes.
+
+Made loading autocommands a bit faster.  Avoid doing strlen() on each exiting
+pattern for each new pattern by remembering the length.
+
+
+Encryption						*new-encryption*
+----------
+
+Files can be encrypted when writing and decrypted when reading.  Added the
+'key' option, "-x" command line argument and ":X" command. |encryption| (based
+on patch from Mohsin Ahmed)
+
+When reading a file, there is an automatic detection whether it has been
+crypted.  Vim will then prompt for the key.
+
+Note that the encryption method is not compatible with Vi.  The encryption is
+not unbreakable.  This allows it to be exported from the US.
+
+
+GTK GUI port						*new-GTK-GUI*
+------------
+
+New GUI port for GTK+.  Includes a toolbar, menu tearoffs, etc. |gui-gtk|
+Added the |:helpfind| command. (Kahn and Dalecki)
+
+
+Menu changes						*menu-changes-5.4*
+------------
+
+Menus can now also be used in the console.  It is enabled by the new
+'wildmenu' option.  This shows matches for command-line completion like a
+menu.  This works as a minimal file browser.
+
+The new |:emenu| command can be used to execute a menu item.
+
+Uses the last status line to list items, or inserts a line just above the
+command line.  (Negri)
+
+The 'wildcharx' option can be used to trigger 'wildmenu' completion from a
+mapping.
+
+When compiled without menus, this can be detected with has("menu").  Also show
+this in the ":version" output.  Allow compiling GUI versions without menu
+support.  Only include toolbar support when there is menu support.
+
+Moved the "Window" menu all the way to the right (priority 70).  Looks more
+familiar for people working with MS-Windows, shouldn't matter for others.
+
+Included "Buffers" menu.  Works with existing autocommands and functions.  It
+can be disabled by setting the "no_buffers_menu" variable.  (Aaron and Madsen)
+
+Win32 supports separators in a menu: "-.*-". (Geddes)
+Menu separators for Motif now work too.
+
+Made Popup menu for Motif GUI work. (Madsen)
+
+'M' flag in 'guioptions': Don't source the system menu.
+
+All the menu code has been moved from gui.c to menu.c.
+
+
+Viminfo improved					*improved-viminfo*
+----------------
+
+New flags for 'viminfo':
+'!'	Store global variables in the viminfo file if they are in uppercase
+	letters. (Negri)
+'h'	Do ":nohlsearch" when loading a viminfo file.
+
+Store search patterns in the viminfo file with their offset, magic, etc.  Also
+store the flag whether 'hlsearch' highlighting is on or off (which is not used
+if the 'h' flag is in 'viminfo').
+
+Give an error message when setting 'viminfo' without commas.
+
+
+Various new commands					*new-commands-5.4*
+--------------------
+
+Operator |g?|: rot13 encoding. (Negri)
+
+|zH| and |zL| commands: Horizontal scrolling by half a page.
+|gm| move cursor to middle of screen line. (Ideas by Campbell)
+
+Operations on Visual blocks: |v_b_I|, |v_b_A|, |v_b_c|, |v_b_C|, |v_b_r|,
+|v_b_<| and |v_b_>|. (Kelly)
+
+New command: CTRL-\ CTRL-N, which does nothing in Normal mode, and goes to
+Normal mode when in Insert or Command-line mode.  Can be used by VisVim or
+other OLE programs to make sure Vim is in Normal mode, without causing a beep.
+|CTRL-\_CTRL-N|
+
+":cscope kill" command to use the connection filename. |:cscope| (Kahn)
+
+|:startinsert| command: Start Insert mode next.
+
+|:history| command, to show all four types of histories. (Roemer)
+
+|[m|, |[M|, |]m| and |]M| commands, for jumping backward/forward to start/end
+of method in a (Java) class.
+
+":@*" executes the * register. |:@| (Acevedo)
+
+|go| and |:goto| commands: Jump to byte offset in the file.
+
+|gR| and |gr| command: Virtual Replace mode.  Replace characters without
+changing the layout. (Webb)
+
+":cd -" changes to the directory from before the previous ":cd" command.
+|:cd-| (Webb)
+
+Tag preview commands |:ptag|.  Shows the result of a ":tag" in a dedicated
+window.  Can be used to see the context of the tag (e.g., function arguments).
+(Negri)
+|:pclose| command, and CTRL-W CTRL-Z: Close preview window. (Moore)
+'previewheight' option, height for the preview window.
+Also |:ppop|, |:ptnext|, |:ptprevious|, |:ptNext|, |:ptrewind|, |:ptlast|.
+
+|:find| and |:sfind| commands: Find a file in 'path', (split window) and edit
+it.
+
+The |:options| command opens an option window that shows the current option
+values.  Or use ":browse set" to open it.  Options are grouped by function.
+Offers short help on each option.  Hit <CR> to jump to more help.  Edit the
+option value and hit <CR> on a "set" line to set a new value.
+
+
+Various new options					*new-options-5.4*
+-------------------
+
+Scroll-binding: 'scrollbind' and 'scrollopt' options.  Added |:syncbind|
+command.  Makes windows scroll the same amount (horizontally and/or
+vertically). (Ralston)
+
+'conskey' option for MS-DOS.  Use direct console I/O.  This should work with
+telnet (untested!).
+
+'statusline' option: Configurable contents of the status line.  Also allows
+showing the byte offset in the file.  Highlighting with %1* to %9*, using the
+new highlight groups User1 to User9.  (Madsen)
+
+'rulerformat' option: Configurable contents of the ruler, like 'statusline'.
+(Madsen)
+
+'write' option: When off, writing files is not allowed.  Avoids overwriting a
+file even with ":w!".  The |-m| command line option resets 'write'.
+
+'clipboard' option: How the clipboard is used.  Value "unnamed": Use unnamed
+register like "*. (Cortopassi)  Value "autoselect": Like what 'a' in
+'guioptions' does but works in the terminal.
+
+'guifontset' option: Specify fonts for the +fontset feature, for the X11 GUI
+versions.  Allows using normal fonts when vim is compiled with this feature.
+(Nam)
+
+'guiheadroom' option: How much room to allow above/below the GUI window.
+Used for Motif, Athena and GTK.
+
+Implemented 'tagstack' option: When off, pushing tags onto the stack is
+disabled (Vi compatible).  Useful for mappings.
+
+'shellslash' option.  Only for systems that use a backslash as a file
+separator.  This option will use a forward slash in file names when expanding
+it.  Useful when 'shell' is sh or csh.
+
+'pastetoggle' option: Key sequence that toggles 'paste'.  Works around the
+problem that mappings don't work in Insert mode when 'paste' is set.
+
+'display' option: When set to "lastline", the last line fills the window,
+instead of being replaced with "@" lines.  Only the last three characters are
+replaced with "@@@", to indicate that the line has not finished yet.
+
+'switchbuf' option: Allows re-using existing windows on a buffer that is being
+jumped to, or split the window to open a new buffer. (Roemer)
+
+'titleold' option.  Replaces the fixed string "Thanks for flying Vim", which
+is used to set the title when exiting. (Schild)
+
+
+Vim scripts						*new-script-5.4*
+-----------
+
+The |exists()| function can also check for existence of a function. (Roemer)
+An internal function is now found with a binary search, should be a bit
+faster. (Roemer)
+
+New functions:
+- |getwinposx()| and |getwinposy()|: get Vim window position. (Webb)
+- |histnr()|, |histadd()|, |histget()| and |histdel()|: Make history
+  available. (Roemer)
+- |maparg()|: Returns rhs of a mapping.  Based on a patch from Vikas.
+- |mapcheck()|: Check if a map name matches with an existing one.
+- |visualmode()|: Return type of last Visual mode. (Webb)
+- |libcall()|: Call a function in a library.  Currently only for Win32. (Negri)
+- |bufwinnr()|: find window that contains the specified buffer. (Roemer)
+- |bufloaded()|: Whether a buffer exists and is loaded.
+- |localtime()| and |getftime()|: wall clock time and last modification time
+  of a file (Webb)
+- |glob()|: expand file name wildcards only.
+- |system()|: get the raw output of an external command. (based on a patch
+  from Aaron).
+- |strtrans()|: Translate String into printable characters.  Used for
+  2html.vim script.
+- |append()|: easy way to append a line of text in a buffer.
+
+Changed functions:
+- Optional argument to |strftime()| to give the time in seconds. (Webb)
+- |expand()| now also returns names for files that don't exist.
+
+Allow numbers in the name of a user command. (Webb)
+
+Use "v:" for internal Vim variables: "v:errmsg", "v:shell_error", etc.  The
+ones from version 5.3 can be used without "v:" too, for backwards
+compatibility.
+
+New variables:
+"v:warningmsg" and "v:statusmsg" internal variables.  Contain the last given
+warning and status message. |v:warningmsg| |v:statusmsg| (Madsen)
+"v:count1" variable: like "v:count", but defaults to one when no count is
+used. |v:count1|
+
+When compiling without expression evaluation, "if 1" can be used around the
+not supported commands to avoid it being executed.  Works like in Vim 4.x.
+Some of the runtime scripts gave errors when used with a Vim that was compiled
+with minimal features.  Now "if 1" is used around code that is not always
+supported.
+
+When evaluating an expression with && and ||, skip the parts that will not
+influence the outcome.  This makes it faster and avoids error messages. (Webb)
+Also optimized the skipping of expressions inside an "if 0".
+
+
+Avoid hit-enter prompt					*avoid-hit-enter*
+-----------------------
+
+Added 'T' flag to 'shortmess': Truncate all messages that would cause the
+hit-enter prompt (unless that would happen anyway).
+The 'O' flag in 'shortmess' now also applies to quickfix messages, e.g., from
+the ":cn" command.
+
+The default for 'shortmess' is now "filnxtToO", to make most messages fit on
+the command line, and not cause the hit-enter prompt.
+
+Previous messages can be viewed with the new |:messages| command.
+
+Some messages are shown fully, even when 'shortmess' tells to shorten
+messages, because the user is expected to want to see them in full: CTRL-G and
+some quickfix commands.
+
+
+Improved quickfix					*improved-quickfix*
+-----------------
+
+Parse change-directory lines for gmake: "make[1]: Entering directory 'name'".
+Uses "%D" and "%X" in 'errorformat'.
+Also parse "Making {target} in {dir}" messages from make.  Helps when not
+using GNU make. (Schandl)
+
+Use 'isfname' for "%f" in 'errorformat'.
+
+Parsing of multi-line messages. |errorformat-multi-line|
+
+Allow a range for the |:clist| command. (Roemer)
+
+Support for "global" file names, for error formats that output the file name
+once for several errors. (Roemer)
+
+|:cnfile| jumps to first error in next file.
+
+"$*" in 'makeprg' is replaced by arguments to ":make". (Roemer)
+
+
+Regular expressions					*regexp-changes-5.4*
+-------------------
+
+In a regexp, a '$' before "\)" is also considered to be an end-of-line. |/$|
+In patterns "^" after "\|" or "\(" is a start-of-line. |/^| (Robinson)
+
+In a regexp, in front of "\)" and "\|" both "$" and "\$" were considered
+end-of-line.  Now use "$" as end-of-line and "\$" for a literal dollar.  Same
+for '^' after "\(" and "\|". |/\$| |/\^|
+
+Some search patterns can be extremely slow, even though they are not really
+illegal.  For example: "\([^a-z]\+\)\+Q".  Allow interrupting any regexp
+search with CTRL-C.
+
+Register "/: last search string (read-only). (Kohan)  Changed to use last used
+search pattern (like what 'hlsearch' uses).  Can set the search pattern with
+":let @/ = {expr}".
+
+Added character classes to search patterns, to avoid the need for removing the
+'l' flag from 'cpoptions': |[:tab:]|, |[:return:]|, |[:backspace:]| and
+|[:escape:]|.
+
+By adding a '?' after a comparative operator in an expression, the comparison
+is done by ignoring case. |expr-==?|
+
+
+Other improvements made between version 5.3 and 5.4
+---------------------------------------------------
+
+Changed							*changed-5.4*
+-------
+
+Unix: Use $TMPDIR for temporary files, if it is set and exists.
+
+Removed "Empty buffer" message.  It isn't useful and can cause a hit-enter
+prompt. (Negri)
+
+"ex -" now reads commands from stdin and works in silent mode.  This is to be
+compatible with the original "ex" command that is used for scripts.
+
+Default range for ":tcldo" is the whole file.
+
+Cancelling Visual mode with ESC moved the cursor.  There appears to be no
+reason for this.  Now leave the cursor where it is.
+
+The ":grep" and ":make" commands see " as part of the arguments, instead of
+the start of a comment.
+
+In expressions the "=~" and "!~" operators no longer are affected by
+'ignorecase'.
+
+Renamed vimrc_example to vimrc_example.vim and gvimrc_example to
+gvimrc_example.vim.  Makes them being recognized as vim scripts.
+
+"gd" no longer starts searching at the end of the previous function, but at
+the first blank line above the start of the current function.  Avoids that
+using "gd" in the first function finds global a variable.
+
+Default for 'complete' changed from ".,b" to ".,w,b,u,t,i".  Many more matches
+will be found, at the cost of time (the search can be interrupted).
+
+It is no longer possible to set 'shell*' options from a modeline.  Previously
+only a warning message was given.  This reduces security risks.
+
+The ordering of the index of documentation files was changed to make it more
+easy to find a subject.
+
+On MS-DOS and win32, when $VIM was not set, $HOME was used.  This caused
+trouble if $HOME was set to e.g., "C:\" for some other tool, the runtime files
+would not be found.  Now use $HOME only for _vimrc, _gvimrc, etc., not to find
+the runtime file.
+
+When 'tags' is "./{fname}" and there is no file name for the current buffer,
+just use it.  Previously it was skipped, causing "vim -t {tag}" not to find
+many tags.
+
+When trying to select text in the 'scrolloff' area by mouse dragging, the
+resulting scrolling made this difficult.  Now 'scrolloff' is temporarily set
+to 0 or 1 to avoid this.  But still allow scrolling in the top line to extend
+to above the displayed text.
+
+Default for 'comments' now includes "sl:/*,mb: *,ex:*/", to make javadoc
+comments work.  Also helps for C comments that start with "/*******".
+
+CTRL-X CTRL-] Insert mode tag expansion tried to expand to all tags when used
+after a non-ID character, which can take a very long time.  Now limit this to
+200 matches.  Also used for command-line tag completion.
+
+The OS/2 distribution has been split in two files.  It was too big to fit on a
+floppy.  The same runtime archive as for the PC is now used.
+
+In the documentation, items like <a-z> have been replaced with {a-z} for
+non-optional arguments.  This avoids confusion with key names: <C-Z> is a
+CTRL-Z, not a character between C and Z, that is {C-Z}.
+
+
+Added							*added-5.4*
+-----
+
+Color support for the iris-ansi builtin termcap entry. (Tubman)
+
+Included VisVim version 1.3a. (Erhardt)
+
+Win32 port for SNiFF+ interface. (Leherbauer)
+Documentation file for sniff interface: if_sniff.txt. (Leherbauer)
+
+Included the "SendToVim" and "OpenWithVim" programs in the OleVim directory.
+To be used with the OLE version of gvim under MS-Windows. (Schaller)
+
+Included Exuberant Ctags version 3.2.4 with Eiffel support. (Hiebert)
+
+When a file that is being edited is deleted, give a warning (like when the
+time stamp changed).
+
+Included newer versions of the HTML-generating Awk and Perl scripts. (Colombo)
+
+Linux console mouse support through "gpm". (Tsindlekht)
+
+Security fix: Disallow changing 'secure' and 'exrc' from a modeline.  When
+'secure' is set, give a warning for changing options that contain a program
+name.
+
+Made the Perl interface work with Perl 5.005 and threads. (Verdoolaege)
+
+When giving an error message for an ambiguous mapping, include the offending
+mapping. (Roemer)
+
+Command line editing:
+- Command line completion of mappings. (Roemer)
+- Command line completion for ":function", ":delfunction", ":let", ":call",
+  ":if", etc. (Roemer)
+- When using CTRL-D completion for user commands that have
+  "-complete=tag_listfiles" also list the file names.  (Madsen)
+- Complete the arguments of the ":command" command. (Webb)
+- CTRL-R . in command line inserts last inserted text.  CTRL-F, CTRL-P, CTRL-W
+  and CTRL-A after CTRL-R are used to insert an object from under the cursor.
+  (Madsen)
+
+Made the text in uganda.txt about copying Vim a bit more clear.
+
+Updated the Vim tutor.  Added the "vimtutor" command, which copies the tutor
+and starts Vim on it.  "make install" now also copies the tutor.
+
+In the output of ":clist" the current entry is highlighted, with the 'i'
+highlighting (same as used for 'incsearch').
+
+For the ":clist" command, you can scroll backwards with "b" (one screenfull),
+"u" (half a screenfull) and "k" (one line).
+
+Multi-byte support:
+- X-input method for multi-byte characters.  And various fixes for multi-byte
+  support. (Nam)
+- Hangul input method feature: |hangul|. (Nam)
+- Cleaned up configuration of multi-byte support, XIM, fontset and Hangul
+  input.  Each is now configurable separately.
+- Changed check for GTK_KEYBOARD to HANGUL_KEYBOARD_TYPE. (Nam)
+- Added doc/hangulin.txt: Documentation for the Hangul input code. (Nam)
+- XIM support for GTK+. (Nam)
+- First attempt to include support for SJIS encoding. (Nagano)
+- When a double-byte character doesn't fit at the end of the line, put a "~"
+  there and print it on the next line.
+- Optimize output of multi-byte text. (Park)
+- Win32 IME: preedit style is like over-the-spot. (Nagano)
+- Win32 IME: IME mode change now done with ImmSetOpenStatus. (Nagano)
+- GUI Athena: file selection dialog can display multi-byte characters.
+  (Nagano)
+- Selection reply for XA_TEXT as XA_STRING. (Nagano)
+
+"runtime/macros/diffwin.vim".  Mappings to make a diff window. (Campbell)
+
+Added ".obj" to the 'suffixes' option.
+
+Reduced size of syntax/synload.vim by using the ":SynAu" user command.
+Automated numbering of Syntax menu entries in menu.vim.
+In the Syntax menu, insert separators between syntax names that start with
+a different letter. (Geddes)
+
+Xterm:
+- Clipboard support when using the mouse in an xterm. (Madsen)
+- When using the xterm mouse, track dragging of the mouse.  Use xterm escape
+  sequences when possible.  It is more precise than other methods, but
+  requires a fairly recent xterm version.  It is enabled with "xterm2" in
+  'ttymouse'.  (Madsen)
+- Check xterm patch level, to set the value of 'ttymouse'.  Has only been
+  added to xterm recently (patch level > 95).  Uses the new 't_RV' termcap
+  option.  Set 'ttymouse' to "xterm2" when a correct response is recognized.
+  Will make xterm mouse dragging work better.
+- Support for shifted function keys on xterm.  Changed codes for shifted
+  cursor keys to what the xterm actually produces.  Added codes for shifted
+  <End> and <Home>.
+- Added 't_WP' to set the window position in pixels and 't_WS' to set the
+  window size in characters.  Xterm can now move (used for ":winpos") and
+  resize (use for ":set lines=" and ":set columns=").
+
+X11:
+- When in Visual mode but not owning the selection, display the Visual area
+  with the VisualNOS group to show this. (Madsen)
+- Support for requesting the type of clipboard support.  Used for AIX and
+  dtterm. (Wittig)
+- Support compound_text selection (even when compiled without multi-byte).
+
+Swap file:
+- New variation for naming swap files: Replace path separators into %, place
+  all swap files in one directory.  Used when a name in 'dir' ends in two path
+  separators. (Madsen)
+- When a swap file is found, show whether it contains modifications or not in
+  the informative message. (Madsen)
+- When dialogs are supported, use a dialog to ask the user what to do when a
+  swapfile already exists.
+
+"popup_setpos" in 'mousemodel' option.  Allows for moving the cursor when
+using the right mouse button.
+
+When a buffer is deleted, the selection for which buffer to display instead
+now uses the most recent entry from the jump list. (Madsen)
+
+When using CTRL-O/CTRL-I, skip deleted buffers.
+
+A percentage is shown in the ruler, when there is room.
+
+Used autoconf 1.13 to generate configure.
+
+Included get_lisp_indent() from Dirk van Deun.  Does better Lisp indenting
+when 'p' flag in 'cpoptions' is not included.
+
+Made the 2html.vim script quite a bit faster.  (based on ideas from Geddes)
+
+Unix:
+- Included the name of the user that compiled Vim and the system name it was
+  compiled on in the version message.
+- "make install" now also installs the "tools" directory.  Makes them
+  available for everybody.
+- "make check" now does the same as "make test".  "make test" checks for
+  Visual block mode shift, insert, replace and change.
+- Speed up comparing a file name with existing buffers by storing the
+  device/inode number with the buffer.
+- Added configure arguments "--disable-gtk", "--disable-motif" and
+  "--disable-athena", to be able to disable a specific GUI (when it doesn't
+  work).
+- Renamed the configure arguments for disabling the check for specific GUIs.
+  Should be clearer now. (Kahn)
+- On a Digital Unix system ("OSF1") check for the curses library before
+  termlib and termcap. (Schild)
+- "make uninstall_runtime" will only delete the version-specific files.  Can
+  be used to delete the runtime files of a previous version.
+
+Macintosh: (St-Amant)
+- Dragging the scrollbar, like it's done for the Win32 GUI.  Moved common code
+  from gui_w32.c to gui.c
+- Added dialogs and file browsing.
+- Resource fork preserved, warning when it will be lost.
+- Copy original file attributes to newly written file.
+- Set title/notitle bug solved.
+- Filename completion improved.
+- Grow box limit resize to a char by char size.
+- Use of rgb.txt for more colors (but give back bad color).
+- Apple menu works (beside the about...).
+- Internal border now vim compliant.
+- Removing a menu doesn't crash anymore.
+- Weak-linking of Python 1.5.1 (only on PPC).  Python is supported when the
+  library is available.
+- If an error is encountered when sourcing the users .vimrc, the alert box now
+  shows right away with the OK button defaulted. There's no more "Delete"-key
+  sign at the start of each line
+- Better management of environment variables.  Now $VIM is calculated only
+  once, not regenerated every time it is used.
+- No more CPU hog when in background.
+- In a sourced Vim script the Mac file format can be recognized, just like DOS
+  file format is.
+
+When both "unix" and "mac" are present in 'fileformats', prefer "mac" format
+when there are more CR than NL characters.
+When using "mac" fileformat, use CR instead of a NL, because NL is used for
+NUL.  Will preserve all characters in a file. (Madsen)
+
+The DOS install.exe now contains checks for an existing installation.  It
+avoids setting $VIM and $PATH again.
+The install program for Dos/Windows can now install Vim in the popup menu, by
+adding two registry keys.
+
+Port to EGCS/mingw32.  New Makefile.ming. (Aaron)
+
+DOS 16 bit: Don't include cursor shape stuff.  Save some bytes.
+
+TCL support to Makefile.w32. (Duperval)
+
+OS/2: Use argv[0] to find runtime files.
+
+When using "gf" to go to a buffer that has already been used, jump to the
+line where the cursor last was.
+
+Colored the output of ":tselect" a bit more.  Different highlighting between
+tag name and file name.  Highlight field name ("struct:") separately from
+argument.
+
+Backtick expansion for non-Unix systems.  Based on a patch from Aaron.
+Allows the use of things like ":n `grep -l test *.c`" and
+"echo expand('`ls m*`')".
+
+Check for the 'complete' option when it is set. (Acevedo)
+'d' flag in 'complete' searches for defined names or macros.
+While searching for Insert mode completions in include files and tags files,
+check for typeahead, so that you can use matches early. (Webb)
+The '.' flag in 'complete' now scans the current buffer completely, ignoring
+'nowrapscan'.  (Webb)
+
+Added '~' flag to 'whichwrap'. (Acevedo)
+
+When ending the Visual mode (e.g., with ESC) don't grab ownership of the
+selection.
+
+In a color terminal, "fg" and "bg" can be used as color names.  They stand for
+the "Normal" colors.
+
+A few cscope cleanups. (Kahn)
+
+Included changed vimspell.sh from Schemenauer.
+
+Concatenation of strings in an expression with "." is a bit faster. (Roemer)
+
+The ":redir" command can now redirect to a register: ":redir @r". (Roemer)
+
+Made the output of ":marks" and ":jumps" look similar.  When the mark is in
+the current file, show the text at the mark.  Also for ":tags".
+
+When configure finds ftello() and fseeko(), they are used in tag.c (for when
+you have extremely big tags files).
+
+Configure check for "-FOlimit,2000" argument for the compiler. (Borsenkow)
+
+GUI:
+- When using ":gui" in a non-GUI Vim, give a clear error message.
+- "gvim -v" doesn't start the GUI (if console support is present).
+- When in Ex mode, use non-Visual selection for the whole screen.
+- When starting with "gvim -f" and using ":gui" in the .gvimrc file, Vim
+  forked anyway.  Now the "-f" flag is remembered for ":gui".  Added "gui -b"
+  to run gvim in the background anyway.
+
+Motif GUI:
+- Check for "-lXp" library in configure (but it doesn't work yet...).
+- Let configure check for Lesstif in "/usr/local/Lesstif/Motif*".  Changed the
+  order to let a local Motif version override a system standard version.
+
+Win32 GUI:
+- When using "-register" or "-unregister" in the non-OLE version, give an
+  error message.
+- Use GTK toolbar icons.  Make window border look better.  Use sizing handles
+  on the lower left&right corners of the window. (Negri)
+- When starting an external command with ":!start" and the command can not be
+  executed, give an error message. (Webb)
+- Use sizing handles for the grey rectangles below the scrollbars.  Can draw
+  toolbar in flat mode now, looks better. (Negri)
+- Preparations for MS-Windows 3.1 addition.  Mostly changing WIN32 to MSWIN
+  and USE_GUI_WIN32 to USE_GUI_MSWIN. (Negri)
+
+Avoid allocating the same string four times in buflist_findpat(). (Williams)
+
+Set title and icon text with termcap options 't_ts', 't_fs', 't_IS' and
+'t_IE'.  Allows doing this on any terminal that supports setting the title
+and/or icon text. (Schild)
+
+New 'x' flag in 'comments': Automatically insert the end part when its last
+character is typed.  Helps to close a /* */ comment in C. (Webb)
+
+When expand() has a second argument which is non-zero, don't use 'suffixes'
+and 'wildignore', return all matches.
+
+'O' flag in 'cpoptions: When not included, Vim will not overwrite a file, if
+it didn't exist when editing started but it does exist when the buffer is
+written to the file.  The file must have been created outside of Vim, possibly
+without the user knowing it.  When this is detected after a shell command,
+give a warning message.
+
+When editing a new file, CTRL-G will show [New file].  When there were errors
+while reading the file, CTRL-G will show [Read errors].
+
+":wall" can now use a dialog and file-browsing when needed.
+
+Grouped functionality into new features, mainly to reduce the size of the
+minimal version:
++linebreak:	'showbreak', 'breakat' and 'linebreak'
++visualextra:	"I"nsert and "A"ppend in Visual block mode, "c"hange all lines
+		in a block, ">" and "<": Shifting a block, "r": Replacing a
+		Visual area with one character.
++comments:	'comments'
++cmdline_info:	'ruler' and 'showcmd'.  Replaces +showcmd.
+"+title"	Don't add code to set title or icon for MSDOS, this was not
+		possible anyway.
++cmdline_compl	Disable commandline completion at compile time, except for
+		files, directories and help items.
+
+Moved features from a list of function calls into an array.  Should save a bit
+of space.
+
+While entering the body of a function, adjust indent according to "if" and
+"while" commands.
+
+VMS: Adjusted os_vms.mms a bit according to suggestions from Arpadffy.
+
+The flags in the 'comments' option can now include an offset.  This makes it
+possible to align "/*****", "/*   xxx" and "/*" comments with the same
+'comments' setting.  The default value for 'comments' uses this.
+Added 'O' flag: Don't use this part for the "O" command.  Useful for "set
+com=sO:*\ -,mO:*\ \ ,exO:*/"
+
+FileType autocommands recognize ".bak", ".orig" and "~" extensions and remove
+them to find the relevant extension.
+
+The tutorial for writing a Vim script file has been extended.
+
+Some more highlighting in help files, for items that are not typed literally.
+
+Can use "CTRL-W CTRL-G" like "CTRL-W g".
+
+"make test" for OS/2.
+
+Adjusted configure to automatically use the GUI for BeOS.
+
+
+Fixed							*fixed-5.4*
+-----
+
+5.3.1: When using an autocommand for BufWritePre that changes the name of the
+buffer, freed memory would be used. (Geddes)
+
+Mac: Compiler didn't understand start of skip_class_name().
+
+Win32 GUI:
+- When cancelling the font requester, don't give an error message.
+- When a tearoff-menu is open and its menu is deleted, Vim could crash.
+  (Negri)
+- There was a problem on Windows 95 with (un)maximizing the window.
+  (Williams)
+- when 'mousehide' is set, the mouse would stay hidden when a menu is dropped
+  with the keyboard. (Ralston)
+- The tempname() function already created the file.  Caused problems when
+  using ":w".  Now the file is deleted.
+- Cursor disappeared when ending up in the top-left character on the screen
+  after scrolling. (Webb)
+- When adding a submenu for a torn-off menu, it was not updated.
+- Menu tooltip was using the toolbar tooltip. (Negri)
+- Setting 'notitle' didn't remove the title. (Steed)
+- Using ":!start cmd" scrolled the screen one line up, and didn't wait for
+  return when the command wasn't found.
+
+Cscope interface: Sorting of matches was wrong.  Starting the interface could
+fail. (Kahn)
+
+Motif GUI: Could not compile with Motif 1.1, because some tear-off
+functionality was not in #ifdefs.
+
+Configure could sometimes not compile or link the test program for sizeof(int)
+properly.  This caused alignment problems for the undo structure allocations.
+Added a safety check that SIZEOF_INT is not zero.
+
+Added configure check to test if strings.h can be included after string.h.
+Some systems can't handle it.
+Some systems need both string.h and strings.h included.  Adjusted vim.h for
+that.  Removed including string.h from os_unixx.h, since it's already in
+vim.h. (Savage)
+AIX: defining _NO_PROTO in os_unix.h causes a conflict between string.h and
+strings.h, but after the configure check said it was OK.  Also define
+_NO_PROTO for AIX in the configure check. (Winn)
+
+When closing a window with CTRL-W c, the value of 'hidden' was not taken into
+account, the buffer was always unloaded. (Negri)
+
+Unix Makefile: "make install" always tried to rename an older executable and
+remove it.  This caused an error message when it didn't exit.  Added a check
+for the existence of an old executable.
+The command line for "make install" could get too long, because of the many
+syntax files.  Now first do a "cd" to reduce the length.
+
+On RISCOS and MSDOS, reading a file could fail, because the short filename was
+used, which can be wrong after a ":!cd".
+
+In the DOS versions, the wrong install.exe was included (required Windows).
+Now the install.exe version is included that is the same as the Vim version.
+This also supports long file names where possible.
+
+When recording, and stopping while in Insert mode with CTRL-O q, the CTRL-O
+would also be recorded.
+
+32bit DOS version: "vim \file", while in a subdirectory, resulted in "new
+file" for "file" in the local directory, while "\file" did exist.  When
+"file" in the current directory existed, this didn't happen.
+
+MSDOS: Mouse could not go beyond 80 columns in 132 columns mode. (Young)
+
+"make test" failed in the RedHat RPM, because compatible is off by default.
+
+In Insert mode <C-O><C-W><C-W> changes to other window, but the status bars
+were not updated until another character was typed.
+
+MSDOS: environment options in lowercase didn't work, although they did in the
+Win32 versions. (Negri)
+
+After ":nohlsearch", a tag command switched highlighting back on.
+
+When using "append" command as the last line in an autocommand, Vim would
+crash.
+
+RISCOS: The scroll bumpers (?) were not working properly. (Leonard)
+
+"zl" and "zh" could move the cursor, but this didn't set the column in which
+e.g., "k" would move the cursor.
+
+When doing ":set all&" the value of 'scroll' was not set correctly.  This
+caused an error message when later setting any other number option.
+
+When 'hlsearch' highlighting has been disabled with ":nohlsearch",
+incremental searching would switch it back on too early.
+
+When listing tags for ":tselect", and using a non-search command, and the last
+character was equal to the first (e.g., "99"), the last char would not be
+shown.
+
+When searching for tags with ":tag" Vim would assume that all matches had been
+found when there were still more (e.g. from another tags file).
+
+Win32: Didn't recognize "c:\" (e.g., in tags file) as absolute path when
+upper/lowercase was different.
+
+Some xterms (Debian) send <Esc>OH for HOME and <Esc>OF for END.  Added these
+to the builtin-xterm.
+
+In ex mode, any CR was seen as the end of the line.  Only a NL should be
+handled that way.  broke ":s/foo/some^Mtext/".
+
+In menu.vim, a vmenu was used to override an amenu.  That didn't work, because
+the system menu file doesn't overwrite existing menus.  Added explicit vunmenu
+to solve this.
+
+Configure check for terminal library could find a library that doesn't work at
+runtime (Solaris: shared library not found).  Added a check that a program
+with tgoto() can run correctly.
+
+Unix: "echo -n" in the Makefile doesn't work on all systems, causing errors
+compiling pathdef.c.  Replaced it with "tr".
+
+Perl: DO_JOIN was redefined by Perl.  Undefined it in the perl files.
+
+Various XIM and multi-byte fixes:
+- Fix user cannot see his language while he is typing his language with
+  off-the-spot method. (Nagano)
+- Fix preedit position using text/edit area (using gui.wid). (Nagano)
+- remove 'fix dead key' codes. It was needed since XNFocusWindow was
+  "x11_window", XNFocusWindow is now gui.wid. (Nagano)
+- Remove some compile warnings and fix typos. (Namsh)
+- For status area, check the gtk+ version while Vim runs.  I believe it is
+  better than compile time check. (Namsh)
+- Remove one FIXME for gtk+-xim. (Namsh)
+- XIM: Dead keys didn't work for Czech. (Vyskovsky)
+- Multibyte: If user input only 3byte such as mb1_mb2_eng or eng_mb1_mb2 VIM
+  could convert it to special character. (Nam)
+- Athena/Motif with XIM: fix preedit area. (Nam)
+- XIM: Composed strings were sometimes ignored.  Vim crashed when compose
+  string was longer than 256 bytes.  IM's geometry control is fixed. (Nam,
+  Nagano)
+- Win32 multi-byte: hollowed cursor width on a double byte char was wrong.
+  (Nagano)
+- When there is no GUI, selecting XIM caused compilation problems.
+  Automatically disable XIM when there is no GUI in configure.
+- Motif and Athena: When compiled with XIM, but the input method was not
+  enabled, there would still be a status line.  Now the status line is gone if
+  the input method doesn't work. (Nam)
+
+Win32: tooltip was not removed when selecting a parent menu (it was when
+selecting a menu entry). (Negri)
+
+Unix with X: Some systems crash on exit, because of the XtCloseDisplay() call.
+Removed it, it should not be necessary when exiting.
+
+Win32: Crash on keypress when compiled with Borland C++. (Aaron)
+
+When checking for Motif library files, prefer the same location as the include
+files (with "include" replaced with "lib") above another entry.
+
+Athena GUI: Changed "XtOffset()" in gui_at_fs.c to "XtOffsetOf()", like it's
+used in gui_x11.c.
+
+Win32: When testing for a timestamp of a file on floppy, would get a dialog
+box when the floppy has been removed.  Now return with an error.  (Negri)
+
+Win32 OLE: When forced to come to the foreground, a minimized window was still
+minimized, now it's restored. (Zivkov)
+
+There was no check for a positive 'shiftwidth'.  A negative value could cause
+a hangup, a zero value a crash.
+
+Athena GUI: horizontal scrollbar wasn't updated correctly when clicking right
+or left of the thumb.
+
+When making a Visual-block selection in one window, and trying to scroll
+another, could cause errors for accessing non-existent line numbers.
+
+When 'matchpairs' contains "`:'", jumping from the ` to the ' didn't work
+properly.
+
+Changed '\"' to '"' to make it compatible with old C compilers.
+
+The command line expansion for mappings caused a script with a TAB between lhs
+and rhs of a map command to fail.  Assume the TAB is to separate lhs and rhs
+when there are no mappings to expand.
+
+When editing a file with very long lines with 'scrolloff' set, "j" would
+sometimes end up in a line which wasn't displayed.
+
+When editing a read-only file, it was completely read into memory, even when
+it would not fit.  Now create a swap file for a read-only file when running
+out of memory while reading the file.
+
+When using ":set cino={s,e-s", a line after "} else {" was not indented
+properly.  Also added a check for this in test3.in.
+
+The Hebrew mapping for the command line was remembered for the next command
+line.  That isn't very useful, a command is not Hebrew. (Kol)
+
+When completing file names with embedded spaces, like "Program\ files", this
+didn't work.  Also for user commands.  Moved backslash_halve() down to
+mch_expandpath().
+
+When using "set mouse=a" in Ex mode, mouse events were handled like typed
+text.  Then typing "quit" screwed up the mouse behavior of the xterm.
+
+When repeating an insert with "." that contains a CTRL-Y, a number 5 was
+inserted as "053".
+
+Yanking a Visual area, with the cursor past the line, didn't move the cursor
+back onto the line.  Same for "~", "u", "U" and "g?"
+
+Win32: Default for 'grepprg' could be "findstr /n" even though there is no
+findstr.exe (Windows 95).  Check if it exists, and fall back to "grep -n" if
+it doesn't.
+
+Because gui_mouse_moved() inserted a leftmouse click in the input buffer,
+remapping a leftmouse click caused strange effects.  Now Insert another code
+in the input buffer.  Also insert a leftmouse release, to avoid the problem
+with ":map <LeftMouse> l" that the next release is seen as the release for the
+focus click.
+
+With 'wrap' on, when using a line that doesn't fit on the screen, if the start
+of the Visual area is before the start of the screen, there was no
+highlighting.  Also, 'showbreak' doesn't work properly.
+
+DOS, Win32: A pattern "[0-9]\+" didn't work in autocommands.
+
+When creating a swap file for a buffer which isn't the current buffer, could
+get a mixup of short file name, resulting in a long file name when a short
+file name was required.  makeswapname() was calling modname() instead of
+buf_modname().
+
+When a function caused an error, and the error message was very long because
+of recursiveness, this would cause a crash.
+
+'suffixes' were always compared with matching case.  For MS-DOS, Win32 and
+OS/2 case is now ignored.
+
+The use of CHARBITS in regexp.c didn't work on some Linux.  Don't use it.
+
+When generating a script file, 'cpo' was made empty.  This caused backslashes
+to disappear from mappings.  Set it to "B" to avoid that.
+
+Lots of typos in the documentation. (Campbell)
+
+When editing an existing (hidden) buffer, jump to the last used cursor
+position. (Madsen)
+
+On a Sun the xterm screen was not restored properly when suspending. (Madsen)
+
+When $VIMINIT is processed, 'nocompatible' was only set after processing it.
+
+Unix: Polling for a character wasn't done for GPM, Sniff and Xterm clipboard
+all together.  Cleaned up the code for using select() too.
+
+When executing external commands from the GUI, some typeahead was lost.  Added
+some code to regain as much typeahead as possible.
+
+When the window height is 5 lines or fewer, <PageDown> didn't use a one-line
+overlap, while <PageUp> does.  Made sure that <PageUp> uses the same overlap
+as <PageDown>, so that using them both always displays the same lines.
+
+Removed a few unused functions and variables (found with lint).
+
+Dictionary completion didn't use 'infercase'. (Raul)
+
+Configure tests failed when the Perl library was not in LD_LIBRARY_PATH.
+Don't use the Perl library for configure tests, add it to the linker line only
+when linking Vim.
+
+When using ncurses/terminfo, could get a 't_Sf' and 't_Sb' termcap entry that
+has "%d" instead of "%p1%d".  The light background colors didn't work then.
+
+GTK GUI with ncurses: Crashed when starting up in tputs().  Don't use tputs()
+when the GUI is active.
+
+Could use the ":let" command to set the "count", "shell_error" and "version"
+variables, but that didn't work.  Give an error message when trying to set
+them.
+
+On FreeBSD 3.0, tclsh is called tclsh8.0.  Adjusted configure.in to find it.
+
+When Vim is linked with -lncurses, but python uses -ltermcap, this causes
+trouble: "OOPS".  Configure now removes the -ltermcap.
+
+:@" and :*" didn't work properly, because the " was recognized as the start of
+a comment.
+
+Win32s GUI: Minimizing the console where a filter command runs in caused
+trouble for detecting that the filter command has finished. (Negri)
+
+After executing a filter command from an xterm, the mouse would be disabled.
+It would work again after changing the mode.
+
+Mac GUI: Crashed in newenv(). (St-Amant)
+
+The menus and mappings in mswin.vim didn't handle text ending in a NL
+correctly. (Acevedo)
+
+The ":k" command didn't check if it had a valid argument or extra characters.
+Now give a meaningful error message. (Webb)
+
+On SGI, the signal function doesn't always have three arguments.  Check for
+struct sigcontext to find out.  Might still be wrong...
+
+Could crash when using 'hlsearch' and search pattern is "^".
+
+When search patterns were saved and restored, status of no_hlsearch was not
+also saved and restored (from ":nohlsearch" command).
+
+When using setline() to make a line shorter, the cursor position was not
+adjusted.
+
+MS-DOS and Win95: When trying to edit a file and accidentally adding a slash
+or backslash at the end, the file was deleted.  Probably when trying to create
+the swap file.  Explicitly check for a trailing slash or backslash before
+trying to read a file.
+
+X11 GUI: When starting the GUI failed and received a deadly signal while
+setting the title, would lock up when trying to exit, because the title is
+reset again.  Avoid using mch_settitle() recursively.
+
+X11 GUI: When starting the GUI fails, and then trying it again, would crash,
+because argv[] has been freed and x11_display was reset to NULL.
+
+Win32: When $HOME was set, would put "~user" in the swap file, which would
+never compare with a file name, and never cause the attention message.  Put
+the full path in the swap file instead.
+
+Win32 console: There were funny characters at the end of the "vim -r" swap
+files message (direct output of CR CR LF).
+
+DOS 32 bit: "vim -r" put the text at the top of the window.
+
+GUI: With 'mousefocus' set, got mouse codes as text with "!sleep 100" or "Q".
+
+Motif and Win32 GUI: When changing 'guifont' to a font of the same size the
+screen wasn't redrawn.
+
+Unix: When using ":make", jumping to a file b.c, which is already open as a
+symbolic link a.c, opened a new buffer instead of using the existing one.
+
+Inserting text in the current buffer while sourcing the .vimrc file would
+cause a crash or hang.  The memfile for the current buffer was never
+allocated.  Now it's allocated as soon as something is written in the buffer.
+
+DOS 32 bit: "lightblue" background worked for text, but not drawn parts were
+black.
+
+DOS: Colors of console were not restored upon exiting.
+
+When recording, with 'cmdheight' set to 2 and typing Esc> in Insert mode
+caused the "recording" message to be doubled.
+
+Spurious "file changed" messages could happen on Windows.  Now tolerate a one
+second difference, like for Linux.
+
+GUI: When returning from Ex mode, scrollbars were not updated.
+
+Win32: Copying text to the clipboard containing a <CR>, pasting it would
+replace it with a <NL> and drop the next character.
+
+Entering a double byte character didn't work if the second byte is in [xXoO].
+(Eric Lee)
+
+vim_realloc was both defined and had a prototype in proto/misc2.pro.  Caused
+conflicts on Solaris.
+
+A pattern in an autocommand was treated differently on DOS et al. than on
+Unix.  Now it's the same, also when using backslashes.
+
+When using <Tab> twice for command line completion, without a match, the <Tab>
+would be inserted. (Negri)
+
+Bug in MS-Visual C++ 6.0 when compiling ex_docmd.c with optimization. (Negri)
+
+Testing the result of mktemp() for failure was wrong.  Could cause a crash.
+(Peters)
+
+GUI: When checking for a ".gvimrc" file in the current directory, didn't check
+for a "_gvimrc" file too.
+
+Motif GUI: When using the popup menu and then adding an item to the menu bar,
+the menu bar would get very high.
+
+Mouse clicks and special keys (e.g. cursor keys) quit the more prompt and
+dialogs.  Now they are ignored.
+
+When at the more-prompt, xterm selection didn't work.  Now use the 'r' flag in
+'mouse' also for the more-prompt.
+
+When selecting a Visual area of more than 1023 lines, with 'guioptions' set to
+"a", could mess up the display because of a message in free_yank().  Removed
+that message, except for the Amiga.
+
+Moved auto-selection from ui_write() to the screen update functions.  Avoids
+unexpected behavior from a low-level function.  Also makes the different
+feedback of owning the selection possible.
+
+Vi incompatibility: Using "i<CR>" in an indent, with 'ai' set, used the
+original indent instead of truncating it at the cursor. (Webb)
+
+":echo x" didn't stop at "q" for the more prompt.
+
+Various fixes for Macintosh. (St-Amant)
+
+When using 'selectmode' set to "exclusive", selecting a word and then using
+CTRL-] included the character under the cursor.
+
+Using ":let a:name" in a function caused a crash. (Webb)
+
+When using ":append", an empty line didn't scroll up.
+
+DOS etc.: A file name starting with '!' didn't work.  Added '!' to default for
+'isfname'.
+
+BeOS: Compilation problem with prototype of skip_class_name(). (Price)
+
+When deleting more than one line, e.g., with "de", could still use "U"
+command, which didn't work properly then.
+
+Amiga: Could not compile ex_docmd.c, it was getting too big.  Moved some
+functions to ex_cmds.c.
+
+The expand() function would add a trailing slash for directories.
+
+Didn't give an error message when trying to assign a value to an argument of a
+function.  (Webb)
+
+Moved including sys/ptem.h to after termios.h.  Needed for Sinix.
+
+OLE interface: Don't delete the object in CVimCF::Release() when the reference
+count becomes zero. (Cordell)
+VisVim could still crash on exit. (Erhardt)
+
+"case a: case b:" (two case statements in one line) aligned with the second
+case.  Now it uses one 'sw' for indent. (Webb)
+
+Font initialisation wasn't right for Athena/Motif GUI.  Moved the call to
+highlight_gui_started() gui_mch_init() to gui_mch_open(). (Nam)
+
+In Replace mode, backspacing over a TAB before where the replace mode started
+while 'sts' is different from 'ts', would delete the TAB.
+
+Win32 console: When executing external commands and switching between the two
+console screens, Vim would copy the text between the buffers.  That caused the
+screen to be messed up for backtick expansion.
+
+":winpos -1" then ":winpos" gave wrong error message.
+
+Windows commander creates files called c:\tmp\$wc\abc.txt.  Don't remove the
+backslash before the $.  Environment variables were not expanded anyway,
+because of the backslash before the dollar.
+
+Using "-=" with ":set" could remove half a part when it contains a "\,".
+E.g., ":set path+=a\\,b" and then "set path-=b"  removed ",b".
+
+When Visually selecting lines, with 'selection' set to "inclusive", including
+the last char of the line, "<<" moved an extra line.  Also for other operators
+that always work on lines.
+
+link.sh changed "-lnsl_s" to "_s" when looking for "nsl" to be removed.
+Now it only remove whole words.
+
+When jumped to a mark or using "fz", and there is an error, the current column
+was lost.  E.g. when using "$fzj".
+
+The "g CTRL-G" command could not be interrupted, even though it can take a
+long time.
+
+Some terminals do have <F4> and <xF4>.  <xF4> was always interpreted as <F4>.
+Now map <xF4> to <F4>, so that the user can override this.
+
+When compiling os_win32.c with MIN_FEAT the apply_autocmds() should not be
+used. (Aaron)
+
+This autocommand looped forever: ":au FileChangedShell * nested e <afile>"
+Now FileChangeShell never nests. (Roemer)
+
+When evaluating an ":elseif" that was not going to matter anyway, ignore
+errors. (Roemer)
+
+GUI Lesstif: Tearoff bar was the last item, instead of the first.
+
+GUI Motif: Colors of tear-off widgets was wrong when 't' flag added to
+'guioptions' afterwards.  When 't' flag in 'guioptions' is excluded, would
+still get a tearoff item in a new menu.
+
+An inode number can be "long long".  Use ino_t instead of long.  Added
+configure check for ino_t.
+
+Binary search for tags was using a file offset "long" instead of "off_t".
+
+Insert mode completion of tags was not using 'ignorecase' properly.
+
+In Insert mode, the <xFn> keys were not properly mapped to <Fn> for the
+default mappings.  Also caused errors for ":mkvimrc" and ":mksession".
+
+When jumping to another window while in Insert mode, would get the "warning:
+changing readonly file" even when not making a change.
+
+A '(' or '{' inside a trailing "//" comment would disturb C-indenting.
+When using two labels below each other, the second one was not indented
+properly.  Comments could mess up C-indenting in many places.  (Roemer)
+
+Could delete or redefine a function while it was being used.  Could cause a
+crash.
+In a function it's logical to prepend "g:" to a system variable, but this
+didn't work. (Roemer)
+
+Hangul input: Buffer would overflow when user inputs invalid key sequence.
+(Nam)
+
+When BufLoad or BufEnter autocommands change the topline of the buffer in the
+window, it was overruled and the cursor put halfway the window.  Now only put
+the cursor halfway if the autocommands didn't change the topline.
+
+Calling exists("&option") always returned 1. (Roemer)
+
+Win32: Didn't take actually available memory into account. (Williams)
+
+White space after an automatically inserted comment leader was not removed
+when 'ai' is not set and <CR> hit just after inserting it. (Webb)
+
+A few menus had duplicated accelerators. (Roemer)
+
+Spelling errors in documentation, quite a few "the the". (Roemer)
+
+Missing prototypes for Macintosh. (Kielhorn)
+
+Win32: When using 'shellquote' or 'shellxquote', the "!start cmd" wasn't
+executed in a disconnected process.
+
+When resizing the window, causing a line before the cursor to wrap or unwrap,
+the cursor was displayed in the wrong position.
+
+There was quite a bit of dead code when compiling with minimal features.
+
+When doing a ":%s///" command that makes lines shorter, such that lines above
+the final cursor position no longer wrap, the cursor position was not updated.
+
+get_id_list() could allocate an array one too small, when a "contains=" item
+has a wildcard that matches a group name that is added just after it.  E.g.:
+"contains=a.*b,axb".  Give an error message for it.
+
+When yanking a Visual area and using the middle mouse button -> crash.  When
+clipboard doesn't work, now make "* always use "".
+
+Win32: Using ":buf a\ b\file" didn't work, it was interpreted as "ab\file".
+
+Using ":ts ident", then hit <CR>, with 'cmdheight' set to 2: command line was
+not cleared, the tselect prompt was on the last but one line.
+
+mksession didn't restore the cursor column properly when it was after a tab.
+Could not get all windows back when using a smaller terminal screen.  Didn't
+restore all windows when "winsize" was not in 'sessionoptions'. (Webb)
+
+Command line completion for ":buffer" depended on 'ignorecase' for Unix, but
+not for DOS et al..  Now don't use 'ignorecase', but let it depend on whether
+file names are case sensitive or not (like when expanding file names).
+
+Win32 GUI: (Negri)
+- Redrawing the background caused flicker when resizing the window.  Removed
+  _OnEraseBG().  Removed CS_HREDRAW and CS_VREDRAW flags from the
+  sndclass.style.
+- Some parts of the window were drawn in grey, instead of using the color from
+  the user color scheme.
+- Dropping a file on gvim didn't activate the window.
+- When there is no menu ('guioptions' excludes 'm'), never use the ALT key for
+  it.
+
+GUI: When resizing the window, would make the window height a bit smaller.
+Now round off to the nearest char cell size. (Negri)
+
+In Vi the ")" and "(" commands don't stop at a single space after a dot.
+Added 'J' flag in 'cpoptions' to make this behave Vi compatible. (Roemer)
+
+When saving a session without any buffers loaded, there would be a ":normal"
+command without arguments in it. (Webb)
+
+Memory leaks fixed: (Madsen)
+- eval.c: forgot to release func structure when func deleted
+- ex_docmd.c: forgot to release string after "<sfile>"
+- misc1.c: leak when completion pattern had no matches.
+- os_unix.c: forgot to release regexp after file completions
+
+Could crash when using a buffer without a name. (Madsen)
+Could crash when doing file name completion, because of backslash_halve().
+(Madsen)
+
+":@a" would do mappings on register a, which is not Vi compatible. (Roemer)
+
+":g/foo.*()/s/foobar/_&/gc" worked fine, but then "n" searched for "foobar"
+and displayed "/foo.*()". (Roemer)
+
+OS/2: get_cmd_output() was not included.  Didn't check for $VIM/.vimrc file.
+
+Command line completion of options didn't work after "+=" and "-=".
+
+Unix configure: Test for memmove()/bcopy()/memcpy() tried redefining these
+functions, which could fail if they are defined already.  Use mch_memmove() to
+redefine.
+
+Unix: ":let a = expand("`xterm`&")" started an xterm asynchronously, but
+":let a = expand("`xterm&`")" generated an error message, because the
+redirection was put after the '&'.
+
+Win32 GUI: Dialog buttons could not be selected properly with cursor keys,
+when the default is not the first button. (Webb)
+
+The "File has changed since editing started" (when regaining focus) could not
+always be seen. (Webb)
+
+When starting with "ex filename", the file message was overwritten with
+the "entering Ex mode" message.
+
+Output of ":tselect" listed name of file directly from the tags file.  Now it
+is corrected for the position of the tags file.
+
+When 'backspace' is 0, could backspace over autoindent.  Now it is no longer
+allowed (Vi compatible).
+
+In Replace mode, when 'noexpandtab' and 'smarttab' were set, and inserting
+Tabs, backspacing didn't work correctly for Tabs inserted at the start of the
+line (unless 'sts' was set too).  Also, when replacing the first non-blank
+after which is a space, rounding the indent was done on the first non-blank
+instead of on the character under the cursor.
+
+When 'sw' at 4, 'ts' at 8 and 'smarttab' set: When a tab was appended after
+four spaces (they are replaced with a tab) couldn't backspace over the tab.
+
+In Insert mode, with 'bs' set to 0, couldn't backspace to before autoindent,
+even when it was removed with CTRL-D.
+
+When repeating an insert command where a <BS>, <Left> or other key causes an
+error, would flush buffers and remain in Insert mode.  No longer flush
+buffers, only beep and continue with the insert command.
+
+Dos and Win32 console: Setting t_me didn't work to get another color.  Made
+this works backwards compatible.
+
+For turkish (LANG = "tr") uppercase 'i' is not an 'I'.  Use ASCII uppercase
+translation in vim_strup() to avoid language problems. (Komur)
+
+Unix: Use usleep() or nanosleep() for mch_delay() when available.  Hopefully
+this avoids a hangup in select(0, ..) for Solaris 2.6.
+
+Vim would crash when using a script file with 'let &sp = "| tee"', starting
+vim with "vim -u test", then doing ":set sp=".  The P_WAS_SET flag wasn't set
+for a string option, could cause problems with any string option.
+
+When using "cmd | vim -", stdin is not a terminal.  This gave problems with
+GPM (Linux console mouse) and when executing external commands.  Now close
+stdin and re-open it as a copy of stderr.
+
+Syntax highlighting: A "nextgroup" item was not properly stored in the state
+list.  This caused missing of next groups when not redrawing from start to
+end, but starting halfway.
+
+Didn't check for valid values of 'ttymouse'.
+
+When executing an external command from the GUI, waiting for the child to
+terminate might not work, causing a hang. (Parmelan)
+
+"make uninstall" didn't delete the vimrc_example.vim and gvimrc_example.vim
+files and the vimtutor.
+
+Win32: "expand("%:p:h")" with no buffer name removed the directory name.
+"fnamemodify("", ":p")" did not add a trailing slash, fname_case() removed it.
+
+Fixed: When 'hlsearch' was set and the 'c' flag was not in 'cpoptions':
+highlighting was not correct.  Now overlapping matches are handled correctly.
+
+Athena, Motif and GTK GUI: When started without focus, cursor was shown as if
+with focus.
+
+Don't include 'shellpipe' when compiled without quickfix, it's not used.
+Don't include 'dictionary' option when compiled without the +insert_expand
+feature.
+Only include the 'shelltype' option for the Amiga.
+
+When making a change to a line, with 'hlsearch' on, causing it to wrap, while
+executing a register, the screen would not be updated correctly.  This was a
+generic problem in update_screenline() being called while must_redraw is
+VALID.
+
+Using ":bdelete" in a BufUnload autocommand could cause a crash.  The window
+height was added to another window twice in close_window().
+
+Win32 GUI: When removing a menu item, the tearoff wasn't updated. (Negri)
+
+Some performance bottlenecks removed.  Allocating memory was not efficient.
+For Win32 checking for available memory was slow, don't check it every time
+now.  On NT obtaining the user name takes a long time, cache the result (for
+all systems).
+
+fnamemodify() with an argument ":~:." or ":.:~" didn't work properly.
+
+When editing a new file and exiting, the marks for the buffer were not saved
+in the viminfo file.
+
+":confirm only" didn't put up a dialog.
+
+These text objects didn't work when 'selection' was "exclusive": va( vi( va{
+vi{ va< vi< vi[ va[.
+
+The dialog for writing a readonly file didn't have a valid default. (Negri)
+
+The line number used for error messages when sourcing a file was reset when
+modelines were inspected.  It was wrong when executing a function.
+
+The file name and line number for an error message wasn't displayed when it
+was the same as for the last error, even when this was long ago.  Now reset
+the name/lnum after a hit-enter prompt.
+
+In a session file, a "%" in a file name caused trouble, because fprintf() was
+used to write it to the file.
+
+When skipping statements, a mark in an address wasn't skipped correctly:
+"ka|if 0|'ad|else|echo|endif". (Roemer)
+
+":wall" could overwrite a not-edited file without asking.
+
+GUI: When $DISPLAY was not set or starting the GUI failed in another way, the
+console mode then started with wrong colors and skipped initializations.  Now
+do an early check if the GUI can be started.  Don't source the menu.vim or
+gvimrc when it will not.  Also do normal terminal initializations if the GUI
+might not start.
+
+When using a BufEnter autocommand to position the cursor and scroll the
+window, the cursor was always put at the last used line and halfway the window
+anyhow.
+
+When 'wildmode' was set to "longest,list:full", ":e *.c<Tab><Tab>" didn't list
+the matches.  Also avoid that listing after a "longest" lists the wrong
+matches when the first expansion changed the string in front of the cursor.
+
+When using ":insert", ":append" or ":change" inside a while loop, was not able
+to break out of it with a CTRL-C.
+
+Win32: ":e ." took an awful long time before an error message when used in
+"C:\".  Was caused by adding another backslash and then trying to get the full
+name for "C:\\".
+
+":winpos -10 100" was working like ":winpos -10 -10", because a pointer was
+not advanced past the '-' sign.
+
+When obtaining the value of a hidden option, would give an error message.  Now
+just use a zero value.
+
+OS/2: Was using argv[0], even though it was not a useful name.  It could be
+just "vim", found in the search path.
+
+Xterm: ":set columns=78" didn't redraw properly (when lines wrap/unwrap) until
+after a delay of 'updatetime'.  Didn't check for the size-changed signal.
+
+'scrollbind' didn't work in Insert mode.
+Horizontal scrollbinding didn't always work for "0" and "$" commands (e.g.,
+when 'showcmd' was off).
+
+When compiled with minimal features but with GUI, switching on the mouse in an
+xterm caused garbage, because the mouse codes were not recognized.  Don't
+enable the mouse when it can't be recognized.  In the GUI it also didn't work,
+the arguments to the mouse code were not interpreted.
+
+When 'showbreak' used, in Insert mode, when the cursor is just after the last
+character in the line, which is also the in the rightmost column, the cursor
+position would be like the 'showbreak' string is shown, but it wasn't.
+
+Autocommands could move the cursor in a new file, so that CTRL-W i didn't show
+the right line.  Same for when using a filemark to jump to another file.
+
+When redefining the argument list, the title used for other windows could be
+showing the wrong info about the position in the argument list.  Also update
+this for a ":split" command without arguments.
+
+When editing file 97 of 13, ":Next" didn't work.  Now it goes to the last
+file in the argument list.
+
+Insert mode completion (for dictionaries or included files) could not be
+interrupted by typing an <Esc>.  Could get hit-enter prompt after line
+completion, or whenever the informative message would get too long.
+
+When using the ":edit" command to re-edit the same file, an autocommand to
+jump to the last cursor position caused the cursor to move.  Now set the last
+used cursor position to avoid this.
+
+When 'comments' has a part that starts with white space, formatting the
+comment didn't work.
+
+At the ":tselect" prompt Normal mode mappings were used.  That has been
+disabled.
+
+When 'selection' is not "old", some commands still didn't allow the cursor
+past the end-of-line in Visual mode.
+
+Athena: When a menu was deleted, it would appear again (but not functional)
+when adding another menu.  Now they don't reappear anymore (although they are
+not really deleted either).
+
+Borland C++ 4.x had an optimizer problem in fill_breakat_flags(). (Negri)
+
+"ze" didn't work when 'number' was on. (Davis)
+
+Win32 GUI: Intellimouse code didn't work properly on Windows 98. (Robinson)
+
+A few files were including proto.h a second time, after vim.h had already done
+that, which could cause problems with the vim_realloc() macro.
+
+Win32 console: <M-x> or ALT-x was not recognized.  Also keypad '+', '-' and
+'*'. (Negri)
+MS-DOS: <M-x> didn't work, produced a two-byte code.  Now the alphabetic and
+number keys work. (Negri)
+
+When finding a lot of matches for a tag completion, the check for avoiding
+double matches could take a lot of time.  Add a line_breakcheck() to be able
+to interrupt this. (Deshpande)
+
+When the command line was getting longer than the screen, the more-prompt
+would be given regularly, and the cursor position would be wrong.  Now only
+show the part of the command line that fits on the screen and force the cursor
+to be positioned on the visible part.  There can be text after the cursor
+which isn't editable.
+
+At the more prompt and with the console dialog, a cursor key was interpreted
+as <Esc> and OA.  Now recognize special keys in get_keystroke().  Ignore mouse
+and scrollbar events.
+
+When typing a BS after inserting a middle comment leader, typing the last char
+of the end comment leader still changed it into the end comment leader. (Webb)
+
+When a file system is full, writing to a swap file failed.  Now first try to
+write one block to the file.  Try next entry in 'dir' if it fails.
+
+When "~" is in 'whichwrap', doing "~" on last char of a line didn't update the
+display.
+
+Unix: Expanding wildcards for ":file {\\}" didn't work, because "\}" was
+translated to "}" before the shell got it.  Now don't remove backslashes when
+wildcards are going to be expanded.
+
+Unix: ":e /tmp/$uid" didn't work.  When expanding environment variables in a
+file name doesn't work, use the shell to expand the file name. ":e /tmp/$tty"
+still doesn't work though.
+
+"make test" didn't always work on DOS/Windows for test30, because it depended
+on the external "echo" command.
+
+The link.sh script used "make" instead of $MAKE from the Makefile.  Caused
+problems for generating pathdef.c when "make" doesn't work properly.
+
+On versions that can do console and GUI: In the console a typed CSI code could
+cause trouble.
+
+The patterns in expression evaluation didn't ignore the 'l' flag in
+'cpoptions'.  This broke the working of <CR> in the options window.
+
+When 'hls' off and 'ai' on, "O<Esc>" did remove the indent, but it was still
+highlighted red for trailing space.
+
+Win32 GUI: Dropping an encrypted file on a running gvim didn't work right.  Vim
+would loop while outputting "*" characters.  vgetc() was called recursively,
+thus it returns NUL.  Added safe_vgetc(), which reads input directly from the
+user in this situation.
+
+While reading text from stdin, only an empty screen was shown.  Now show that
+Vim is reading from stdin.
+
+The cursor shape wasn't set properly when returning to Insert mode, after
+using a CTRL-O /asdf command which fails.  It would be OK after a few seconds.
+Now it's OK right away.
+
+The 'isfname' default for DOS/Windows didn't include the '@' character.  File
+names that contained "dir\@file" could not be edited.
+
+Win32 console: <C-S-Left> could cause a crash when compiled with Borland or
+egcs. (Aaron)
+
+Unix and VMS: "#if HAVE_DIRENT_H" caused problems for some compilers.  Use
+"#ifdef HAVE_DIRENT_H" instead. (Jones)
+
+When a matching tag is in the current file but has a search pattern that
+doesn't match, the cursor would jump to the first line.
+
+Unix: Dependencies for pty.c were not included in Makefile.  Dependency of
+ctags/config.h was not included (only matters for parallel make).
+
+Removed a few Uninitialized Memory Reads (potential crashes).  In do_call()
+calling clear_var() when not evaluating.  In win32_expandpath() and
+dos_expandpath() calling backslash_halve() past the end of a file name.
+
+Removed memory leaks: Set_vim_var_string() never freed the value.  The
+next_list for a syntax keyword was never freed.
+
+On non-Unix systems, using a file name with wildcards without a match would
+silently fail.  E.g., ":e *.sh".  Now give a "No match" error message.
+
+The life/life.mac, urm/urm.mac and hanoi/hanoi.mac files were not recognized
+as Vim scripts.  Renamed them to *.vim.
+
+[Note: some numbered patches are not relevant when upgrading from version 5.3,
+they have been removed]
+
+Patch 5.4m.1
+Problem:    When editing a file with a long name, would get the hit-enter
+	    prompt, even though all settings are such that the name should be
+	    truncated to avoid that.  filemess() was printing the file name
+	    without truncating it.
+Solution:   Truncate the message in filemess().  Use the same code as for
+	    msg_trunc_attr(), which is moved to the new function
+	    msg_may_trunc().
+Files:	    src/message.c, src/proto/message.pro, src/fileio.c
+
+Patch 5.4m.3
+Problem:    The Motif libraries were not found by configure for Digital Unix.
+Solution:   Add "/usr/shlib" to the search path. (Andy Kahn)
+Files:	    src/configure.in, src/configure
+
+Patch 5.4m.5
+Problem:    Win32 GUI: When using the Save-As menu entry and selecting an
+	    existing file in the file browser, would get a dialog to confirm
+	    overwriting twice.  (Ed Krall)
+Solution:   Removed the dialog from the file browser.  It would be nicer to
+	    set the "forceit" flag and skip Vim's ":confirm" dialog, but it
+	    requires quite a few changes to do that.
+Files:	    src/gui_w32.c
+
+Patch 5.4m.6
+Problem:    Win32 GUI: When reading text from stdin, e.g., "cat foo | gvim -",
+	    a message box would pop up with "-stdin-" (when exiting). (Michael
+	    Schaap)
+Solution:   Don't switch off termcap mode for versions that are GUI-only.
+	    They use another terminal to read from stdin.
+Files:	    src/main.c, src/fileio.c
+
+Patch 5.4m.7
+Problem:    Unix: running configure with --enable-gtk-check,
+	    --enable-motif-check, --enable-athena-check or --enable-gtktest
+	    had the reverse effect. (Thomas Koehler)
+Solution:   Use $enable_gtk_check variable correctly in AC_ARG_ENABLE().
+Files:	    src/configure.in, src/configure
+
+Patch 5.4m.9
+Problem:    Multi-byte: With wrapping lines, the cursor was sometimes 2
+	    characters to the left.  Syntax highlighting was wrong when a
+	    double-byte character was split for a wrapping line.  When
+	    'showbreak' was on the splitting also didn't work.
+Solution:   Adjust getvcol() and win_line(). (Chong-Dae Park)
+Files:	    src/charset.c, src/screen.c
+
+Patch 5.4m.11
+Problem:    The ":call" command didn't check for illegal trailing characters.
+	    (Stefan Roemer)
+Solution:   Add the check in do_call().
+Files:	    src/eval.c
+
+Patch 5.4m.13
+Problem:    With the ":s" command:
+	    1. When performing a substitute command, the mouse would be
+	       disabled and enabled for every substitution.
+	    2. The cursor position could be beyond the end of the line.
+	       Calling line_breakcheck() could try to position the cursor,
+	       which causes a crash in the Win32 GUI.
+	    3. When using ":s" in a ":g" command, the cursor was not put on
+	       the first non-white in the line.
+	    4. There was a hit-enter prompt when confirming the substitution
+	       and the replacement was a bit longer.
+Solution:   1. Only disable/enable the mouse when asking for confirmation.
+	    2. Always put the cursor on the first character, it is going to be
+	       moved to the first non-blank anyway.
+	       Don't use the cursor position in gui_mch_draw_hollow_cursor(),
+	       get the character from the screen buffer.
+	    3. Added global_need_beginline flag to call beginline() after ":g"
+	       has finished all substitutions.
+	    4. Clear the need_wait_return flag after prompting the user.
+Files:	    src/ex_cmds.c, src/gui_w32.c
+
+Patch 5.4m.14
+Problem:    When doing "vim xxx", ":opt", ":only" and then ":e xxx" we end
+	    up with two swapfiles for "xxx".  That is caused by the ":bdel"
+	    command which is executed when unloading the option-window.
+	    Also, there was no check if closing a buffer made the new one
+	    invalid, this could cause a crash.
+Solution:   When closing a buffer causes the current buffer to be deleted,
+	    use the new buffer to replace it.  Also detect that the new buffer
+	    has become invalid as a side effect of closing the current one.
+	    Make autocommand that calls ":bdel" in optwin.vim nested, so that
+	    the buffer loading it triggers also executes autocommands.
+	    Also added a test for this in test13.
+Files:	    runtime/optwin.vim, src/buffer.c, src/ex_cmds.c, src/globals.h
+	    src/testdir/test13.in, src/testdir/test13.ok
+
+Patch 5.4m.15
+Problem:    When using a BufEnter autocommand to reload the syntax file,
+	    conversion to HTML caused a crash. (Sung-Hyun Nam)
+Solution:   When using ":syntax clear" the current stack of syntax items was
+	    not cleared.  This will cause memory to be used that has already
+	    been freed.  Added call to invalidate_current_state() in
+	    syntax_clear().
+Files:	    src/syntax.c
+
+Patch 5.4m.17
+Problem:    When omitting a ')' in an expression it would not be seen as a
+	    failure.
+	    When detecting an error inside (), there would be an error message
+	    for a missing ')' too.
+	    When using ":echo 1+|echo 2" there was no error message. (Roemer)
+	    When using ":exe 1+" there was no error message.
+	    When using ":return 1+" there was no error message.
+Solution:   Fix do_echo(), do_execute() and do_return() to give an error
+	    message when eval1() returns FAIL.
+	    Fix eval6() to handle trailing ')' correctly and return FAIL when
+	    it's missing.
+Files:	    src/eval.c
+
+Patch 5.4m.18
+Problem:    When using input() from inside an expression entered with
+	    "CTRL-R =" on the command line, there could be a crash.  And the
+	    resulting command line was wrong.
+Solution:   Added getcmdline_prompt(), which handles recursive use of
+	    getcmdline() correctly.  It also sets the command line prompt.
+	    Removed cmdline_prompt().  Also use getcmdline_prompt() for
+	    getting the crypt key in get_crypt_key().
+Files:	    src/proto/ex_getln.pro, src/ex_getln.c, src/eval.c, src/misc2.c
+
+Patch 5.4m.21
+Problem:    When starting up, the screen structures were first allocated at
+	    the minimal size, then initializations were done with Rows
+	    possibly different from screen_Rows.  Caused a crash in rare
+	    situations (GTK with XIM and fontset).
+Solution:   Call screenalloc() in main() only after calling ui_get_winsize().
+	    Also avoids a potential delay because of calling screenclear()
+	    while "starting" is non-zero.
+Files:	    src/main.c
+
+Patch 5.4m.22
+Problem:    In the GUI it was possible that the screen was resized and the
+	    screen structures re-allocated while redrawing the screen.  This
+	    could cause a crash (hard to reproduce).  The call sequence goes
+	    through update_screen() .. syntax_start() .. ui_breakcheck() ..
+	    gui_resize_window() .. screenalloc().
+Solution:   Set updating_screen while redrawing.  If the window is resized
+	    remember the new size and handle it only after redrawing is
+	    finished.
+	    This also fixes that resizing the screen while still redrawing
+	    (slow syntax highlighting) would not work properly.
+	    Also disable display_hint, it was never used.
+Files:	    src/globals.h, src/gui.c, src/screen.c, src/proto/gui.pro
+
+Patch 5.4m.23
+Problem:    When using expand("<cword>") when there was no word under the
+	    cursor, would get an error message.  Same for <cWORD> and <cfile>.
+Solution:   Don't give an error message, return an empty string.
+Files:	    src/eval.c
+
+Patch 5.4m.24
+Problem:    ":help \|" didn't find anything.  It was translated to "/\\|".
+Solution:   Translate "\|" into "\\bar".  First check the table for specific
+	    translations before checking for "\x".
+Files:	    src/ex_cmds.c
+
+Patch 5.4m.25
+Problem:    Unix: When using command line completion on files that contain
+	    ''', '"' or '|' the file name could not be used.
+	    Adding this file name to the Buffers menu caused an error message.
+Solution:   Insert a backslash before these three characters.
+	    Adjust Mungename() function to insert a backslash before '|'.
+Files:	    src/ex_getln.c, runtime/menu.vim
+
+Patch 5.4m.26
+Problem:    When using a mapping of two function keys, e.g., <F1><F1>, and
+	    only the first char of the second key has been read, the mapping
+	    would not be recognized.  Noticed on some Unix systems with xterm.
+Solution:   Add 'K' flag to 'cpoptions' to wait for the whole key code, even
+	    when halfway a mapping.
+Files:	    src/option.h, src/term.c
+
+Patch 5.4m.27
+Problem:    When making test33 without the lisp feature it hangs. Interrupting
+	    the execution of the script then might cause a crash.
+Solution:   In inchar(), after closing a script, don't use buf[] anymore.
+	    closescript() has freed typebuf[] and buf[] might be pointing
+	    inside typebuf[].
+	    Avoid that test33 hangs when the lisp feature is missing.
+Files:	    src/getchar.c src/testdir/test33.in
+
+"os2" was missing from the feature list.  Useful for has("os2").
+
+BeOS:
+- Included patches from Richard Offer for BeOS R4.5.
+- menu code didn't work right.  Crashed in the Buffers menu.  The window title
+  wasn't set. (Offer)
+
+Patch 5.4n.3
+Problem:    C-indenting was wrong after "  } else".  The white space was not
+	    skipped.  Visible when 'cino' has "+10".
+Solution:   Skip white space before calling cin_iselse(). (Norbert Zeh)
+Files:	    src/misc1.c
+
+Patch 5.4n.4
+Problem:    When the 't' flag in 'cpoptions' is included, after a
+	    ":nohlsearch" the search highlighting would not be enabled again
+	    after a tag search. (Norbert Zeh)
+Solution:   When setting the new search pattern in jumpto_tag(), don't restore
+	    no_hlsearch.
+Files:	    src/tag.c
+
+Patch 5.4n.5
+Problem:    When using ":normal" from a CursorHold autocommand Vim hangs.  The
+	    autocommand is executed down from vgetc().  Calling vgetc()
+	    recursively to execute the command doesn't work then.
+Solution:   Forbid the use of ":normal" when vgetc_busy is set.  Give an error
+	    message when this happens.
+Files:	    src/ex_docmd.c, runtime/doc/autocmd.txt
+
+Patch 5.4n.6
+Problem:    "gv" could reselect a Visual that starts and/or ends past the end
+	    of a line. (Robert Webb)
+Solution:   Check that the start and end of the Visual area are on a valid
+	    character by calling adjust_cursor().
+Files:	    src/normal.c
+
+Patch 5.4n.8
+Problem:    When a mark was on a non existing line (e.g., when the .viminfo
+	    was edited), jumping to it caused ml_get errors. (Alexey
+	    Marinichev).
+Solution:   Added check_cursor_lnum() in nv_gomark().
+Files:	    src/normal.c
+
+Patch 5.4n.9
+Problem:    ":-2" moved the cursor to a negative line number. (Ralf Schandl)
+Solution:   Give an error message for a negative line number.
+Files:	    src/ex_docmd.c
+
+Patch 5.4n.10
+Problem:    Win32 GUI: At the hit-enter prompt, it was possible to scroll the
+	    text.  This erased the prompt and made Vim look like it is in
+	    Normal mode, while it is actually still waiting for a <CR>.
+Solution:   Disallow scrolling at the hit-enter prompt for systems that use
+	    on the fly scrolling.
+Files:	    src/message.c
+
+Patch 5.4n.14
+Problem:    Win32 GUI: When using ":winsize 80 46" and the height is more than
+	    what fits on the screen, the window size was made smaller than
+	    asked for (that's OK) and Vim crashed (that's not OK)>
+Solution:   Call check_winsize() from gui_set_winsize() to resize the windows.
+Files:	    src/gui.c
+
+Patch 5.4n.16
+Problem:    Win32 GUI: The <F10> key both selected the menu and was handled as
+	    a key hit.
+Solution:   Apply 'winaltkeys' to <F10>, like it is used for Alt keys.
+Files:	    src/gui_w32.c
+
+Patch 5.4n.17
+Problem:    Local buffer variables were freed when the buffer is unloaded.
+	    That's not logical, since options are not freed. (Ron Aaron)
+Solution:   Free local buffer variables only when deleting the buffer.
+Files:	    src/buffer.c
+
+Patch 5.4n.19
+Problem:    Doing ":e" (without argument) in an option-window causes trouble.
+	    The mappings for <CR> and <Space> are not removed.  When there is
+	    another buffer loaded, the swap file for it gets mixed up.
+	    (Steve Mueller)
+Solution:   Also remove the mappings at the BufUnload event, if they are still
+	    present.
+	    When re-editing the same file causes the current buffer to be
+	    deleted, don't try editing it.
+	    Also added a test for this situation.
+Files:	    runtime/optwin.vim, src/ex_cmds.c, src/testdir/test13.in,
+	    src/testdir/test13.ok
+
+Patch 5.4n.24
+Problem:    BeOS: configure never enabled the GUI, because $with_x was "no".
+	    Unix prototypes caused problems, because Display and Widget are
+	    undefined.
+	    Freeing fonts on exit caused a crash.
+Solution:   Only disable the GUI when $with_x is "no" and  $BEOS is not "yes".
+	    Add dummy defines for Display and Widget in proto.h.
+	    Don't free the fonts in gui_exit() for BeOS.
+Files:	    src/configure.in, src/configure, src/proto.h, src/gui.c.
+
+
+The runtime/vim48x48.xpm icon didn't have a transparent background. (Schild)
+
+Some versions of the mingw32/egcs compiler didn't have WINBASEAPI defined.
+(Aaron)
+
+VMS:
+- mch_setenv() had two arguments instead of three.
+- The system vimrc and gvimrc files were called ".vimrc" and ".gvimrc".
+  Removed the dot.
+- call to RealWaitForChar() had one argument too many. (Campbell)
+- WaitForChar() is static, removed the prototype from proto/os_vms.pro.
+- Many file accesses failed, because Unix style file names were used.
+  Translate file names to VMS style by using vim_fopen().
+- Filtering didn't work, because the temporary file name was generated wrong.
+- There was an extra newline every 9192 characters when writing a file.  Work
+  around it by writing line by line. (Campbell)
+- os_vms.c contained "# typedef int DESC".  Should be "typedef int DESC;".
+  Only mattered for generating prototypes.
+- Added file name translation to many places.  Made easy by defining macros
+  mch_access(), mch_fopen(), mch_fstat(), mch_lstat() and mch_stat().
+- Set default for 'tagbsearch' to off, because binary tag searching apparently
+  doesn't work for VMS.
+- make mch_get_host_name() work with /dec and /standard=vaxc. (Campbell)
+
+
+Patch 5.4o.2
+Problem:    Crash when using "gf" on "file.c://comment here". (Scott Graham)
+Solution:   Fix wrong use of pointers in get_file_name_in_path().
+Files:	    src/window.c
+
+Patch 5.4o.3
+Problem:    The horizontal scrollbar was not sized correctly when 'number' is
+	    set and 'wrap' not set.
+	    Athena: Horizontal scrollbar wasn't updated when the cursor was
+	    positioned with a mouse click just after dragging.
+Solution:   Subtract 8 from the size when 'number' set and 'wrap' not set.
+	    Reset gui.dragged_sb when a mouse click is received.
+Files:	    src/gui.c
+
+Patch 5.4o.4
+Problem:    When running in an xterm and $WINDOWID is set to an illegal value,
+	    Vim would exit with "Vim: Got X error".
+Solution:   When using the display which was opened for the xterm clipboard,
+	    check if x11_window is valid by trying to obtain the window title.
+	    Also add a check in setup_xterm_clip(), for when using X calls to
+	    get the pointer position in an xterm.
+Files:	    src/os_unix.c
+
+Patch 5.4o.5
+Problem:    Motif version with Lesstif: When removing the menubar and then
+	    using a menu shortcut key, Vim would crash. (raf)
+Solution:   Disable the menu mnemonics when the menu bar is removed.
+Files:	    src/gui_motif.c
+
+Patch 5.4o.9
+Problem:    The DOS install.exe program used the "move" program.  That doesn't
+	    work on Windows NT, where "move" is internal to cmd.exe.
+Solution:   Don't use an external program for moving the executables.  Use C
+	    functions to copy the file and delete the original.
+Files:	    src/dosinst.c
+
+Motif and Athena obtained the status area height differently from GTK.  Moved
+status_area_enabled from global.h to gui_x11.c and call
+xim_get_status_area_height() to get the status area height.
+
+Patch 5.4p.1
+Problem:    When using auto-select, and the "gv" command is used, would not
+	    always obtain ownership of the selection.  Caused by the Visual
+	    area still being the same, but ownership taken away by another
+	    program.
+Solution:   Reset the clipboard Visual mode to force updating the selection.
+Files:	    src/normal.c
+
+Patch 5.4p.2
+Problem:    Motif and Athena with XIM: Typing 3-byte
+	    <multibyte><multibyte><space> doesn't work correctly with Ami XIM.
+Solution:   Avoid using key_sym XK_VoidSymbol. (Nam)
+Files:	    src/multbyte.c, src/gui_x11.c
+
+Patch 5.4p.4
+Problem:    Win32 GUI: The scrollbar values were reduced for a file with more
+	    than 32767 lines.  But this info was kept global for all
+	    scrollbars, causing a mixup between the windows.
+	    Using the down arrow of a scrollbar in a large file didn't work.
+	    Because of round-off errors there is no scroll at all.
+Solution:   Give each scrollbar its own scroll_shift field.  When the down
+	    arrow is used, scroll several lines.
+Files:	    src/gui.h, src/gui_w32.c
+
+Patch 5.4p.5
+Problem:    When changing buffers in a BufDelete autocommand, there could be
+	    ml_line errors and/or a crash. (Schandl)  Was caused by deleting
+	    the current buffer.
+Solution:   When the buffer to be deleted unexpectedly becomes the current
+	    buffer, don't delete it.
+	    Also added a check for this in test13.
+Files:	    src/buffer.c, src/testdir/test13.in, src/testdir/test13.ok
+
+Patch 5.4p.7
+Problem:    Win32 GUI: When using 'mousemodel' set to "popup_setpos" and
+	    clicking the right mouse button outside of the selected area, the
+	    selected area wasn't removed until the popup menu has gone.
+	    (Aaron)
+Solution:   Set the cursor and update the display before showing the popup
+	    menu.
+Files:	    src/normal.c
+
+Patch 5.4p.8
+Problem:    The generated bugreport didn't contain information about
+	    $VIMRUNTIME and whether runtime files actually exist.
+Solution:   Added a few checks to the bugreport script.
+Files:	    runtime/bugreport.vim
+
+Patch 5.4p.9
+Problem:    The windows install.exe created a wrong entry in the popup menu.
+	    The "%1" was "".  The full directory was included, even when the
+	    executable had been moved elsewhere. (Ott)
+Solution:   Double the '%' to get one from printf.  Only include the path to
+	    gvim.exe when it wasn't moved and it's not in $PATH.
+Files:	    src/dosinst.c
+
+Patch 5.4p.10
+Problem:    Win32: On top of 5.4p.9: The "Edit with Vim" entry sometimes used
+	    a short file name for a directory.
+Solution:   Change the "%1" to "%L" in the registry entry.
+Files:	    src/dosinst.c
+
+Patch 5.4p.11
+Problem:    Motif, Athena and GTK: When closing the GUI window when there is a
+	    changed buffer, there was only an error message and Vim would not
+	    exit.
+Solution:   Put up a dialog, like for ":confirm qa".  Uses the code that was
+	    already used for MS-Windows.
+Files:	    src/gui.c, src/gui_w32.c
+
+Patch 5.4p.12
+Problem:    Win32: Trying to expand a string that is longer than 256
+	    characters could cause a crash. (Steed)
+Solution:   For the buffer in win32_expandpath() don't use a fixed size array,
+	    allocate it.
+Files:	    src/os_win32.c
+
+MSDOS: Added "-Wall" to Makefile.djg compile flags.  Function prototypes for
+fname_case() and mch_update_cursor() were missing.  "fd" was unused in
+mf_sync().  "puiLocation" was unused in myputch().  "newcmd" unused in
+mch_call_shell() for DJGPP version.
+
+==============================================================================
+VERSION 5.5						*version-5.5*
+
+Version 5.5 is a bug-fix version of 5.4.
+
+
+Changed							*changed-5.5*
+-------
+
+The DJGPP version is now compiled with "-O2" instead of "-O4" to reduce the
+size of the executables.
+
+Moved the src/STYLE file to runtime/doc/develop.txt.  Added the design goals
+to it.
+
+'backspace' is now a string option.  See patch 5.4.15.
+
+
+Added							*added-5.5*
+-----
+
+Included Exuberant Ctags version 3.3. (Darren Hiebert)
+
+In runtime/mswin.vim, map CTRL-Q to CTRL-V, so that CTRL-Q can be used
+everywhere to do what CTRL-V used to do.
+
+Support for decompression of bzip2 files in vimrc_example.vim.
+
+When a patch is included, the patch number is entered in a table in version.c.
+This allows skipping a patch without breaking a next one.
+
+Support for mouse scroll wheel in X11.  See patch 5.5a.14.
+
+line2byte() can be used to get the size of the buffer.  See patch 5.4.35.
+
+The CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert mode are used to
+insert a register literally.  See patch 5.4.48.
+
+Uninstall program for MS-Windows.  To be able to remove the registry entries
+for "Edit with Vim".  It is registered to be run from the "Add/Remove
+programs" application.  See patch 5.4.x7.
+
+
+Fixed							*fixed-5.5*
+-----
+
+When using vimrc_example.vim: An error message when the cursor is on a line
+higher than the number of lines in the compressed file.  Move the autocommand
+for jumping to the last known cursor position to after the decompressing
+autocommands.
+
+":mkexrc" and ":mksession" wrote the current value of 'textmode'.  That may
+mark a file as modified, which causes problems.  This is a buffer-specific
+setting, it should not affect all files.
+
+"vim --version" wrote two empty lines.
+
+Unix: The alarm signal could kill Vim.  It is generated by the Perl alarm()
+function.  Ignore SIGALRM.
+
+Win32 GUI: Toolbar still had the yellow bitmap for running a Vim script.
+
+BeOS: "tmo" must be bigtime_t, instead of double. (Seibert)
+
+Patch 5.4.1
+Problem:    Test11 fails when $GZIP is set to "-v". (Matthew Jackson)
+Solution:   Set $GZIP to an empty string.
+Files:	    src/testdir/test11.in
+
+Patch 5.4.2
+Problem:    Typing <Esc> at the crypt key prompt caused a crash. (Kallingal)
+Solution:   Check for a NULL pointer returned from get_crypt_key().
+Files:	    src/fileio.c
+
+Patch 5.4.3
+Problem:    Python: Trying to use the name of an unnamed buffer caused a
+	    crash. (Daniel Burrows)
+Solution:   Check for b_fname being a NULL pointer.
+Files:	    src/if_python.c
+
+Patch 5.4.4
+Problem:    Win32: When compiled without toolbar, but the 'T' flag is in
+	    'guioptions', there would be an empty space for the toolbar.
+Solution:   Add two #ifdefs where checking for the 'T' flag. (Vince Negri)
+Files:	    src/gui.c
+
+Patch 5.4.5
+Problem:    Athena GUI: Using the Buffers.Refresh menu entry caused a crash.
+	    Looks like any ":unmenu" command may cause trouble.
+Solution:   Disallow ":unmenu" in the Athena version.  Disable the Buffers
+	    menu, because the Refresh item would not work.
+Files:	    src/menu.c, runtime/menu.vim
+
+Patch 5.4.6
+Problem:    GTK GUI: Using ":gui" in the .gvimrc file caused an error.  Only
+	    happens when the GUI forks.
+Solution:   Don't fork in a recursive call of gui_start().
+Files:	    src/gui.c
+
+Patch 5.4.7
+Problem:    Typing 'q' at the more prompt for the ATTENTION message causes the
+	    file loading to be interrupted. (Will Day)
+Solution:   Reset got_int after showing the ATTENTION message.
+Files:	    src/memline.c
+
+Patch 5.4.8
+Problem:    Edit some file, ":he", ":opt": options from help window are shown,
+	    but pressing space updates from the other window. (Phillipps)
+	    Also: When there are changes in the option-window, ":q!" gives an
+	    error message.
+Solution:   Before creating the option-window, go to a non-help window.
+	    Use ":bdel!" to delete the buffer.
+Files:	    runtime/optwin.vim
+
+Patch 5.4.9
+	    Just updates version.h.  The real patch has been moved to 5.4.x1.
+	    This patch is just to keep the version number correct.
+
+Patch 5.4.10
+Problem:    GTK GUI: When $DISPLAY is invalid, "gvim -f" just exits.  It
+	    should run in the terminal.
+Solution:   Use gtk_init_check() instead of gtk_init().
+Files:	    src/gui_gtk_x11.c
+
+Patch 5.4.11
+Problem:    When using the 'S' flag in 'cpoptions', 'tabstop' is not copied to
+	    the next buffer for some commands, e.g., ":buffer".
+Solution:   When the BCO_NOHELP flag is given to buf_copy_options(), still
+	    copy the options used by do_help() when neither the "from" or "to"
+	    buffer is a help buffer.
+Files:	    src/option.c
+
+Patch 5.4.12
+Problem:    When using 'smartindent', there would be no extra indent if the
+	    current line did not have any indent already. (Hanus Adler)
+Solution:   There was a wrongly placed "else", that previously matched with
+	    the "if" that set trunc_line.  Removed the "else" and added a
+	    check for trunc_line to be false.
+Files:	    src/misc1.c
+
+Patch 5.4.13
+Problem:    New SGI C compilers need another option for optimisation.
+Solution:   Add a check in configure for "-OPT:Olimit". (Chin A Young)
+Files:	    src/configure.in, src/configure
+
+Patch 5.4.14
+Problem:    Motif GUI: When the popup menu is present, a tiny window appears
+	    on the desktop for some users.
+Solution:   Set the menu widget ID for a popup menu to 0. (Thomas Koehler)
+Files:	    src/gui_motif.c
+
+Patch 5.4.15
+Problem:    Since 'backspace' set to 0 has been made Vi compatible, it is no
+	    longer possible to only allow deleting autoindent.
+Solution:   Make 'backspace' a list of parts, to allow each kind of
+	    backspacing separately.
+Files:	    src/edit.c, src/option.c, src/option.h, src/proto/option.pro,
+	    runtime/doc/option.txt, runtime/doc/insert.txt
+
+Patch 5.4.16
+Problem:    Multibyte: Locale zh_TW.Big5 was not checked for in configure.
+Solution:   Add zh_TW.Big5 to configure check. (Chih-Tsun Huang)
+Files:	    src/configure.in, src/configure
+
+Patch 5.4.17
+Problem:    GUI: When started from inside gvim with ":!gvim", Vim would not
+	    start.  ":!gvim -f" works fine.
+Solution:   After forking, wait a moment in the parent process, to give the
+	    child a chance to set its process group.
+Files:	    src/gui.c
+
+Patch 5.4.18
+Problem:    Python: The clear_history() function also exists in a library.
+Solution:   Rename clear_history() to clear_hist().
+Files:	    src/ex_getln.c, src/eval.c, src/proto/ex_getln.pro
+
+Patch 5.4.19
+Problem:    In a terminal with 25 lines, there is a more prompt after the
+	    ATTENTION message.  When hitting 'q' here the dialog prompt
+	    doesn't appear and file loading is interrupted. (Will Day)
+Solution:   Don't allow quitting the printing of a message for the dialog
+	    prompt.  Added the msg_noquit_more flag for this.
+Files:	    src/message.c
+
+Patch 5.4.20
+Problem:    GTK: When starting gvim, would send escape sequences to the
+	    terminal to switch the cursor off and on.
+Solution:   Don't call msg_start() if the GUI is expected to start.
+Files:	    src/main.c
+
+Patch 5.4.21
+Problem:    Motif: Toplevel menu ordering was wrong when using tear-off items.
+Solution:   Don't add one to the index for a toplevel menu.
+Files:	    src/gui_motif.c
+
+Patch 5.4.22
+Problem:    In Insert mode, <C-Left>, <S-Left>, <C-Right> and <S-Right> didn't
+	    update the column used for vertical movement.
+Solution:   Set curwin->w_set_curswant for those commands.
+Files:	    src/edit.c
+
+Patch 5.4.23
+Problem:    When a Visual selection is lost to another program, and then the
+	    same text is Visually selected again, the clipboard ownership
+	    wasn't regained.
+Solution:   Set clipboard.vmode to NUL to force regaining the clipboard.
+Files:	    src/normal.c
+
+Patch 5.4.24
+Problem:    Encryption: When using ":r file" while 'key' has already entered,
+	    the 'key' option would be messed up.  When writing the file it
+	    would be encrypted with an unknown key and lost! (Brad Despres)
+Solution:   Don't free cryptkey when it is equal to the 'key' option.
+Files:	    src/fileio.c
+
+Patch 5.4.25
+Problem:    When 'cindent' is set, but 'autoindent' isn't, comments are not
+	    properly indented when starting a new line. (Mitterand)
+Solution:   When there is a comment leader for the new line, but 'autoindent'
+	    isn't set, do C-indenting.
+Files:	    src/misc1.c
+
+Patch 5.4.26
+Problem:    Multi-byte: a multi-byte character is never recognized in a file
+	    name, causing a backslash before it to be removed on Windows.
+Solution:   Assume that a leading-byte character is a file name character in
+	    vim_isfilec().
+Files:	    src/charset.c
+
+Patch 5.4.27
+Problem:    Entries in the PopUp[nvic] menus were added for several modes, but
+	    only deleted for the mode they were used for.  This resulted in
+	    the  entry remaining in the PopUp menu.
+	    When removing a PopUp[nvic] menu, the name had been truncated,
+	    could result in greying-out the whole PopUp menu.
+Solution:   Remove entries for all modes from the PopUp[nvic] menus.  Remove
+	    the PopUp[nvic] menu entries first, before the name is changed.
+Files:	    src/menu.c
+
+Patch 5.4.28
+Problem:    When using a BufWritePre autocommand to change 'fileformat', the
+	    new value would not be used for writing the file.
+Solution:   Check 'fileformat' after executing the autocommands instead of
+	    before.
+Files:	    src/fileio.c
+
+Patch 5.4.29
+Problem:    Athena GUI: When removing the 'g' flag from 'guioptions', using a
+	    menu can result in a crash.
+Solution:   Always grey-out menus for Athena, don't hide them.
+Files:	    src/menu.c
+
+Patch 5.4.30
+Problem:    BeOS: Suspending Vim with CTRL-Z didn't work (killed Vim).  The
+	    first character typed after ":sh" goes to Vim, instead of the
+	    started shell.
+Solution:   Don't suspend Vim, start a new shell.  Kill the async read thread
+	    when starting a new shell.  It will be restarted later. (Will Day)
+Files:	    src/os_unix.c, src/ui.c
+
+Patch 5.4.31
+Problem:    GUI: When 'mousefocus' is set, moving the mouse over where a
+	    window boundary was, causes a hit-enter prompt to be finished.
+	    (Jeff Walker)
+Solution:   Don't use 'mousefocus' at the hit-enter prompt.  Also ignore it
+	    for the more prompt and a few other situations.  When an operator
+	    is pending, abort it first.
+Files:	    src/gui.c
+
+Patch 5.4.32
+Problem:    Unix: $LDFLAGS was not passed to configure.
+Solution:   Pass $LDFLAGS to configure just like $CFLAGS. (Jon Miner)
+Files:	    src/Makefile
+
+Patch 5.4.33
+Problem:    Unix: After expanding an environment variable with the shell, the
+	    next expansion would also use the shell, even though it is not
+	    needed.
+Solution:   Reset "recursive" before returning from gen_expand_wildcards().
+Files:	    src/misc1.c
+
+Patch 5.4.34 (also see 5.4.x5)
+Problem:    When editing a file, and the file name is relative to a directory
+	    above the current directory, the file name was made absolute.
+	    (Gregory Margo)
+Solution:   Add an argument to shorten_fnames() which indicates if all file
+	    names should be shortened, or only absolute names.  In main() only
+	    use shorten_fnames() to shorten absolute names.
+Files:	    src/ex_docmd.c, src/fileio.c, src/main.c, src/proto/fileio.pro
+
+Patch 5.4.35
+Problem:    There is no function to get the current file size.
+Solution:   Allow using line2byte() with the number of lines in the file plus
+	    one.  This returns the offset of the line past the end of the
+	    file, which is the file size plus one.
+Files:	    src/eval.c, runtime/doc/eval.txt
+
+Patch 5.4.36
+Problem:    Comparing strings while ignoring case didn't work correctly for
+	    some machines. (Mide Steed)
+Solution:   vim_stricmp() and vim_strnicmp() only returned 0 or 1.  Changed
+	    them to return -1 when the first argument is smaller.
+Files:	    src/misc2.c
+
+Patch 5.4.37 (also see 5.4.40 and 5.4.43)
+Problem:    Long strings from the viminfo file are truncated.
+Solution:   When writing a long string to the viminfo file, first write a line
+	    with the length, then the string itself in a second line.
+Files:	    src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/mark.c, src/ops.c,
+	    src/search.c, src/proto/ex_cmds.pro, runtime/syntax/viminfo.vim
+
+Patch 5.4.38
+Problem:    In the option-window, ":set go&" resulted in 'go' being handled
+	    like a boolean option.
+	    Mappings for <Space> and <CR> were overruled by the option-window.
+Solution:   When the value of an option isn't 0 or 1, don't handle it like a
+	    boolean option.
+	    Save and restore mappings for <Space> and <CR> when entering and
+	    leaving the option-window.
+Files:	    runtime/optwin.vim
+
+Patch 5.4.39
+Problem:    When setting a hidden option, spaces before the equal sign were
+	    not skipped and cause an error message.  E.g., ":set csprg =cmd".
+Solution:   When skipping over a hidden option, check for a following "=val"
+	    and skip it too.
+Files:	    src/option.c
+
+Patch 5.4.40 (depends on 5.4.37)
+Problem:    Compiler error for "atol(p + 1)". (Axel Kielhorn)
+Solution:   Add a typecast: "atol((char *)p + 1)".
+Files:	    src/ex_cmds.c
+
+Patch 5.4.41
+Problem:    Some commands that were not included would give an error message,
+	    even when after "if 0".
+Solution:   Don't give an error message for an unsupported command when not
+	    executing the command.
+Files:	    src/ex_docmd.c
+
+Patch 5.4.42
+Problem:    ":w" would also cause a truncated message to appear in the message
+	    history.
+Solution:   Don't put a kept message in the message history when it starts
+	    with "<".
+Files:	    src/message.c
+
+Patch 5.4.43 (depends on 5.4.37)
+Problem:    Mixing long lines with multiple lines in a register causes errors
+	    when writing the viminfo file. (Robinson)
+Solution:   When reading the viminfo file to skip register contents, skip
+	    lines that start with "<".
+Files:	    src/ops.c
+
+Patch 5.4.44
+Problem:    When 'whichwrap' includes '~', a "~" command that goes on to the
+	    next line cannot be properly undone. (Zellner)
+Solution:   Save each line for undo in n_swapchar().
+Files:	    src/normal.c
+
+Patch 5.4.45 (also see 5.4.x8)
+Problem:    When expand("$ASDF") fails, there is an error message.
+Solution:   Remove the global expand_interactively.  Pass a flag down to skip
+	    the error message.
+	    Also: expand("$ASDF") returns an empty string if $ASDF isn't set.
+	    Previously it returned "$ASDF" when 'shell' is "sh".
+	    Also: system() doesn't print an error when the command returns an
+	    error code.
+Files:	    many
+
+Patch 5.4.46
+Problem:    Backspacing did not always use 'softtabstop' after hitting <CR>,
+	    inserting a register, moving the cursor, etc.
+Solution:   Reset inserted_space much more often in edit().
+Files:	    src/edit.c
+
+Patch 5.4.47
+Problem:    When executing BufWritePre or BufWritePost autocommands for a
+	    hidden buffer, the cursor could be moved to a non-existing
+	    position. (Vince Negri)
+Solution:   Save and restore the cursor and topline for the current window
+	    when it is going to be used to execute autocommands for a hidden
+	    buffer.  Use an existing window for the buffer when it's not
+	    hidden.
+Files:	    src/fileio.c
+
+Patch 5.4.48
+Problem:    A paste with the mouse in Insert mode was not repeated exactly the
+	    same with ".".  For example, when 'autoindent' is set and pasting
+	    text with leading indent. (Perry)
+Solution:   Add the CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert
+	    mode, which insert the contents of a register literally.
+Files:	    src/edit.c, src/normal.c, runtime/doc/insert.txt
+
+Patch 5.4.49
+Problem:    When pasting text with [ <MiddleMouse>, the cursor could end up
+	    after the last character of the line.
+Solution:   Correct the cursor position for the change in indent.
+Files:	    src/ops.c
+
+Patch 5.4.x1 (note: Replaces patch 5.4.9)
+Problem:    Win32 GUI: menu hints were never used, because WANT_MENU is not
+	    defined until vim.h is included.
+Solution:   Move the #ifdef WANT_MENU from where MENUHINTS is defined to where
+	    it is used.
+Files:	    src/gui_w32.c
+
+Patch 5.4.x2
+Problem:    BeOS: When pasting text, one character was moved to the end.
+Solution:   Re-enable the BeOS code in fill_input_buf(), and fix timing out
+	    with acquire_sem_etc(). (Will Day)
+Files:	    src/os_beos.c, src/ui.c
+
+Patch 5.4.x3
+Problem:    Win32 GUI: When dropping a directory on a running gvim it crashes.
+Solution:   Avoid using a NULL file name.  Also display a message to indicate
+	    that the current directory was changed.
+Files:	    src/gui_w32.c
+
+Patch 5.4.x4
+Problem:    Win32 GUI: Removing an item from the popup menu doesn't work.
+Solution:   Don't remove the item from the menubar, but from the parent popup
+	    menu.
+Files:	    src/gui_w32.c
+
+Patch 5.4.x5 (addition to 5.4.34)
+Files:	    src/gui_w32.c
+
+Patch 5.4.x6
+Problem:    Win32: Expanding (dir)name starting with a dot doesn't work.
+	    (McCormack)  Only when there is a path before it.
+Solution:   Fix the check, done before expansion, if the file name pattern
+	    starts with a dot.
+Files:	    src/os_win32.c
+
+Patch 5.4.x7
+Problem:    Win32 GUI: Removing "Edit with Vim" from registry is difficult.
+Solution:   Add uninstall program to remove the registry keys. It is installed
+	    in the "Add/Remove programs" list for ease of use.
+	    Also: don't set $VIM when the executable is with the runtime files.
+	    Also: Add a text file with a step-by-step description of how to
+	    uninstall Vim for DOS and Windows.
+Files:	    src/uninstal.c, src/dosinst.c, src/Makefile.w32, uninstal.txt
+
+Patch 5.4.x8 (addition to 5.4.45)
+Files:	    many
+
+Patch 5.4.x9
+Problem:    Win32 GUI: After executing an external command, focus is not
+	    always regained (when using focus-follows-mouse).
+Solution:   Add SetFocus() in mch_system(). (Mike Steed)
+Files:	    src/os_win32.c
+
+
+Patch 5.5a.1
+Problem:    ":let @* = @:" did not work.  The text was not put on the
+	I   clipboard.  (Fisher)
+Solution:   Own the clipboard and put the text on it.
+Files:	    src/ops.c
+
+Patch 5.5a.2
+Problem:    append() did not mark the buffer modified.  Marks below the
+	    new line were not adjusted.
+Solution:   Fix the f_append() function.
+Files:	    src/eval.c
+
+Patch 5.5a.3
+Problem:    Editing compressed ".gz" files doesn't work on non-Unix systems,
+	    because there is no "mv" command.
+Solution:   Add the rename() function and use it instead of ":!mv".
+	    Also: Disable the automatic jump to the last position, because it
+	    changes the jumplist.
+Files:	    src/eval.c, runtime/doc/eval.txt, runtime/vimrc_example.vim
+
+Patch 5.5a.4
+Problem:    When using whole-line completion in insert mode while the cursor
+	    is in the indent, get "out of memory" error. (Stekrt)
+Solution:   Don't allocate a negative amount of memory in ins_complete().
+Files:	    src/edit.c
+
+Patch 5.5a.5
+Problem:    Win32: The 'path' option can hold only up to 256 characters,
+	    because _MAX_PATH is 256.  (Robert Webb)
+Solution:   Use a fixed path length of 1024.
+Files:	    src/os_win32.h
+
+Patch 5.5a.6
+Problem:    Compiling with gcc on Win32, using the Unix Makefile, didn't work.
+Solution:   Add $(SUFFIX) to all places where an executable is used.  Also
+	    pass it to ctags.  (Reynolds)
+Files:	    src/Makefile
+
+Patch 5.5a.7
+Problem:    When using "cat | vim -" in an xterm, the xterm version reply
+	    would end up in the file.
+Solution:   Read the file from stdin before switching the terminal to RAW
+	    mode.  Should also avoid problems with programs that use a
+	    specific terminal setting.
+	    Also: when using the GUI, print "Reading from stdin..." in the GUI
+	    window, to give a hint why it doesn't do anything.
+Files:	    src/main.c, src/fileio.c
+
+Patch 5.5a.8
+Problem:    On multi-threaded Solaris, suspending doesn't work.
+Solution:   Call pause() when the SIGCONT signal was not received after
+	    sending the SIGTSTP signal. (Nagano)
+Files:	    src/os_unix.c
+
+Patch 5.5a.9
+Problem:    'winaltkeys' could be set to an empty argument, which is illegal.
+Solution:   Give an error message when doing ":set winaltkeys=".
+Files:	    src/option.c
+
+Patch 5.5a.10
+Problem:    Win32 console: Using ALTGR on a German keyboard to produce "}"
+	    doesn't work, because the 8th bit is set when ALT is pressed.
+Solution:   Don't set the 8th bit when ALT and CTRL are used. (Leipert)
+Files:	    src/os_win32.c
+
+Patch 5.5a.11
+Problem:    Tcl: Configure always uses tclsh8.0.
+	    Also: Loading a library doesn't work.
+Solution:   Add "--with-tclsh" configure argument to allow specifying another
+	    name for the tcl shell.
+	    Call Tcl_Init() in tclinit() to make loading libraries work.
+	    (Johannes Zellner)
+Files:	    src/configure.in, src/configure, src/if_tcl.c
+
+Patch 5.5a.12
+Problem:    The "user_commands" feature is called "user-commands".
+Solution:   Replace "user-commands" with "user_commands". (Kim Sung-bom)
+	    Keep "user-commands" for the has() function, to remain backwards
+	    compatible with 5.4.
+Files:	    src/eval.c, src/version.c
+
+Patch 5.5a.13
+Problem:    OS/2: When $HOME is not defined, "C:/" is used for the viminfo
+	    file.  That is very wrong when OS/2 is on another partition.
+Solution:   Use $VIM for the viminfo file when it is defined, like for MSDOS.
+	    Also: Makefile.os2 didn't depend on os_unix.h.
+Files:	    src/os_unix.h, src/Makefile.os2
+
+Patch 5.5a.14
+Problem:    Athena, Motif and GTK: The Mouse scroll wheel doesn't work.
+Solution:   Interpret a click of the wheel as a key press of the <MouseDown>
+	    or <MouseUp> keys.  Default behavior is to scroll three lines, or
+	    a full page when Shift is used.
+Files:	    src/edit.c, src/ex_getln.c, src/gui.c, src/gui_gtk_x11.c,
+	    src/gui_x11.c, src/keymap.h, src/message.c, src/misc1.c,
+	    src/misc2.c, src/normal.c,  src/proto/normal.pro, src/vim.h,
+	    runtime/doc/scroll.txt
+
+Patch 5.5a.15
+Problem:    Using CTRL-A in Insert mode doesn't work correctly when the insert
+	    started with the <Insert> key. (Andreas Rohrschneider)
+Solution:   Replace <Insert> with "i" before setting up the redo buffer.
+Files:	    src/normal.c
+
+Patch 5.5a.16
+Problem:    VMS: GUI does not compile and run.
+Solution:   Various fixes. (Zoltan Arpadffy)
+	    Moved functions from os_unix.c to ui.c, so that VMS can use them
+	    too: open_app_context(), x11_setup_atoms() and clip_x11* functions.
+	    Made xterm_dpy global, it's now used by ui.c and os_unix.c.
+	    Use gethostname() always, sys_hostname doesn't exist.
+Files:	    src/globals.h, src/gui_x11.c, src/os_vms.mms, src/os_unix.c,
+	    src/os_vms.c, src/ui.c, src/proto/os_unix.pro, src/proto/ui.pro
+
+Renamed AdjustCursorForMultiByteCharacter() to AdjustCursorForMultiByteChar()
+to avoid symbol length limit of 31 characters. (Steve P. Wall)
+
+Patch 5.5b.1
+Problem:    SASC complains about dead assignments and implicit type casts.
+Solution:   Removed the dead assignments.  Added explicit type casts.
+Files:	    src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds.c,
+	    src/ex_getln.c, src/fileio.c, src/getchar.c, src/memline.c,
+	    src/menu.c, src/misc1.c, src/normal.c, src/ops.c, src/quickfix.c,
+	    src/screen.c
+
+Patch 5.5b.2
+Problem:    When using "CTRL-O O" in Insert mode, hit <Esc> and then "o" in
+	    another line truncates that line. (Devin Weaver)
+Solution:   When using a command that starts Insert mode from CTRL-O, reset
+	    "restart_edit" first.  This avoids that edit() is called with a
+	    mix of starting a new edit command and restarting a previous one.
+Files:	    src/normal.c
+
+==============================================================================
+VERSION 5.6						*version-5.6*
+
+Version 5.6 is a bug-fix version of 5.5.
+
+
+Changed							*changed-5.6*
+-------
+
+Small changes to OleVim files. (Christian Schaller)
+
+Inserted "/**/" between patch numbers in src/version.c.  This allows for one
+line of context, which some versions of patch need.
+
+Reordered the Syntax menu to avoid long submenus.  Removed keyboard shortcuts
+for alphabetical items to avoid a clash with fixed items.
+
+
+Added							*added-5.6*
+-----
+
+Included Exuberant Ctags version 3.4. (Darren Hiebert)
+
+OpenWithVim in Python. (Christian Schaller)
+
+Win32 GUI: gvimext.dll, for the context menu "Edit with Vim" entry.  Avoids
+the reported problems with the MS Office taskbar.  Now it's a Shell Extension.
+(Tianmiao Hu)
+
+New syntax files:
+abel		Abel (John Cook)
+aml		Arc Macro Language (Nikki Knuit)
+apachestyle	Apache-style config file (Christian Hammers)
+cf		Cold Fusion (Jeff Lanzarotta)
+ctrlh		files with CTRL-H sequences (Bram Moolenaar)
+cupl		CUPL (John Cook)
+cuplsim		CUPL simulation (John Cook)
+erlang		Erlang (Kresimir Marzic)
+gedcom		Gedcom (Paul Johnson)
+icon		Icon (Wendell Turner)
+ist		MakeIndex style (Peter Meszaros)
+jsp		Java Server Pages (Rafael Garcia-Suarez)
+rcslog		Rcslog (Joe Karthauser)
+remind		Remind (Davide Alberani)
+sqr		Structured Query Report Writer (Paul Moore)
+tads		TADS (Amir Karger)
+texinfo		Texinfo (Sandor Kopanyi)
+xpm2		X Pixmap v2 (Steve Wall)
+
+The 'C' flag in 'cpoptions' can be used to switch off concatenation for
+sourced lines.  See patch 5.5.013 below. |line-continuation|
+
+"excludenl" argument for the ":syntax" command.  See patch 5.5.032 below.
+|:syn-excludenl|
+
+Implemented |z+| and |z^| commands.  See patch 5.5.050 below.
+
+Vim logo in Corel Draw format.  Can be scaled to any resolution.
+
+
+Fixed							*fixed-5.6*
+-----
+
+Using this mapping in Select mode, terminated completion:
+":vnoremap <C-N> <Esc>a<C-N>" (Benji Fisher)
+Ignore K_SELECT in ins_compl_prep().
+
+VMS (Zoltan Arpadffy, David Elins):
+- ioctl() in pty.c caused trouble, #ifndef VMS added.
+- Cut & paste mismatch corrected.
+- Popup menu line crash corrected.  (Patch 5.5.047)
+- Motif directories during open and save as corrected.
+- Handle full file names with version numbers. (Patch 5.5.046)
+- Directory handling (CD command etc.)
+- Corrected file name conversion VMS to Unix and v.v.
+- Recovery was not working.
+- Terminal and signal handling was outdated compared to os_unix.c.
+- Improved os_vms.txt.
+
+Configure used fprintf() instead of printf() to check for __DATE__ and
+__TIME__. (John Card II)
+
+BeOS: Adjust computing the char_height and char_ascent.  Round them up
+separately, avoids redrawing artifacts. (Mike Steed)
+
+Fix a few multi-byte problems in menu_name_skip(), set_reg_ic(), searchc() and
+findmatchlimit(). (Taro Muraoka)
+
+GTK GUI:
+- With GTK 1.2.5 and later the scrollbars were not redrawn correctly.
+- Adjusted the gtk_form_draw() function.
+- SNiFF connection didn't work.
+- 'mousefocus' was not working. (Dalecki)
+- Some keys were not working with modifiers: Shift-Tab, Ctrl-Space and CTRL-@.
+
+
+Patch 5.5.001
+Problem:    Configure in the top directory did not pass on an argument with a
+	    space correctly.  For example "./configure --previs="/My home".
+	    (Stephane Chazelas)
+Solution:   Use '"$@"' instead of '$*' to pass on the arguments.
+Files:	    configure
+
+Patch 5.5.002
+Problem:    Compilation error for using "fds[] & POLLIN". (Jeff Walker)
+Solution:   Use "fds[].revents & POLLIN".
+Files:	    src/os_unix.c
+
+Patch 5.5.003
+Problem:    The autoconf check for sizeof(int) is wrong on machines where
+	    sizeof(size_t) != sizeof(int).
+Solution:   Use our own configure check.  Also fixes the warning for
+	    cross-compiling.
+Files:	    src/configure.in, src/configure
+
+Patch 5.5.004
+Problem:    On Unix it's not possible to interrupt ":sleep 100".
+Solution:   Switch terminal to cooked mode while asleep, to allow a SIGINT to
+	    wake us up.  But switch off echo, added TMODE_SLEEP.
+Files:	    src/term.h, src/os_unix.c
+
+Patch 5.5.005
+Problem:    When using <f-args> with a user command, an empty argument to the
+	    command resulted in one empty string, while no string was
+	    expected.
+Solution:   Catch an empty argument and pass no argument to the function.
+	    (Paul Moore)
+Files:	    src/ex_docmd.c
+
+Patch 5.5.006
+Problem:    Python: When platform-dependent files are in another directory
+	    than the platform-independent files it doesn't work.
+Solution:   Also check the executable directory, and add it to CFLAGS. (Tessa
+	    Lau)
+Files:	    src/configure.in, src/configure
+
+Patch 5.5.007 (extra)
+Problem:    Win32 OLE: Occasional crash when exiting while still being used
+	    via OLE.
+Solution:   Move OleUninitialize() to before deleting the application object.
+	    (Vince Negri)
+Files:	    src/if_ole.cpp
+
+Patch 5.5.008
+Problem:    10000@@ takes a long time and cannot be interrupted.
+Solution:   Check for CTRL-C typed while in the loop to push the register.
+Files:	    src/normal.c
+
+Patch 5.5.009
+Problem:    Recent Sequent machines don't link with "-linet". (Kurtis Rader)
+Solution:   Remove configure check for Sequent.
+Files:	    src/configure.in, src/configure
+
+Patch 5.5.010
+Problem:    Ctags freed a memory block twice when exiting.  When out of
+	    memory, a misleading error message was given.
+Solution:   Update to ctags 3.3.2.  Also fixes a few other problems. (Darren
+	    Hiebert)
+Files:	    src/ctags/*
+
+Patch 5.5.011
+Problem:    After "CTRL-V s", the cursor jumps back to the start, while all
+	    other operators leave the cursor on the last changed character.
+	    (Xiangjiang Ma)
+Solution:   Position cursor on last changed character, if possible.
+Files:	    src/ops.c
+
+Patch 5.5.012
+Problem:    Using CTRL-] in Visual mode doesn't work when the text includes a
+	    space (just where it's useful). (Stefan Bittner)
+Solution:   Don't escape special characters in a tag name with a backslash.
+Files:	    src/normal.c
+
+Patch 5.5.013
+Problem:    The ":append" and ":insert" commands allow using a leading
+	    backslash in a line.  The ":source" command concatenates those
+	    lines. (Heinlein)
+Solution:   Add the 'C' flag in 'cpoptions' to switch off concatenation.
+Files:	    src/ex_docmd.c, src/option.h, runtime/doc/options.txt,
+	    runtime/filetype.vim, runtime/scripts.vim
+
+Patch 5.5.014
+Problem:    When executing a register with ":@", the ":append" command would
+	    get text lines with a ':' prepended. (Heinlein)
+Solution:   Remove the ':' characters.
+Files:	    src/ex_docmd.c, src/ex_getln.c, src/globals.h
+
+Patch 5.5.015
+Problem:    When using ":g/pat/p", it's hard to see where the output starts,
+	    the ":g" command is overwritten.  Vi keeps the ":g" command.
+Solution:   Keep the ":g" command, but allow overwriting it with the report
+	    for the number of changes.
+Files:	    src/ex_cmds.c
+
+Patch 5.5.016 (extra)
+Problem:    Win32: Using regedit to install Vim in the popup menu requires the
+	    user to confirm this in a dialog.
+Solution:   Use "regedit /s" to avoid the dialog
+Files:	    src/dosinst.c
+
+Patch 5.5.017
+Problem:    If an error occurs when closing the current window, Vim could get
+	    stuck in the error handling.
+Solution:   Don't set curwin to NULL when closing the current window.
+Files:	    src/window.c
+
+Patch 5.5.018
+Problem:    Absolute paths in shell scripts do not always work.
+Solution:   Use /usr/bin/env to find out the path.
+Files:	    runtime/doc/vim2html.pl, runtime/tools/efm_filter.pl,
+	    runtime/tools/shtags.pl
+
+Patch 5.5.019
+Problem:    A function call in 'statusline' stops using ":q" twice from
+	    exiting, when the last argument hasn't been edited.
+Solution:   Don't decrement quitmore when executing a function. (Madsen)
+Files:	    src/ex_docmd.c
+
+Patch 5.5.020
+Problem:    When the output of CTRL-D completion in the commandline goes all
+	    the way to the last column, there is an empty line.
+Solution:   Don't add a newline when the cursor wrapped already. (Madsen)
+Files:	    src/ex_getln.c
+
+Patch 5.5.021
+Problem:    When checking if a file name in the tags file is relative,
+	    environment variables were not expanded.
+Solution:   Expand the file name before checking if it is relative. (Madsen)
+Files:	    src/tag.c
+
+Patch 5.5.022
+Problem:    When setting or resetting 'paste' the ruler wasn't updated.
+Solution:   Update the status lines when 'ruler' changes because of 'paste'.
+Files:	    src/option.c
+
+Patch 5.5.023
+Problem:    When editing a new file and autocommands change the cursor
+	    position, the cursor was moved back to the first non-white, unless
+	    'startofline' was reset.
+Solution:   Keep the new column, just like the line number.
+Files:	    src/ex_cmds.c
+
+Patch 5.5.024 (extra)
+Problem:    Win32 GUI: When using confirm() to put up a dialog without a
+	    default button, the dialog would not have keyboard focus.
+	    (Krishna)
+Solution:   Always set focus to the dialog window.  Only set focus to a button
+	    when a default one is specified.
+Files:	    src/gui_w32.c
+
+Patch 5.5.025
+Problem:    When using "keepend" in a syntax region, a contained match that
+	    includes the end-of-line could still force that region to
+	    continue, if there is another contained match in between.
+Solution:   Check the keepend_level in check_state_ends().
+Files:	    src/syntax.c
+
+Patch 5.5.026
+Problem:    When starting Vim in a white-on-black xterm, with 'bg' set to
+	    "dark", and then starting the GUI with ":gui", setting 'bg' to
+	    "light" in the gvimrc, the highlighting isn't set.  (Tsjokwing)
+Solution:   Set the highlighting when 'bg' is changed in the gvimrc, even
+	    though full_screen isn't set.
+Files:	    src/option.c
+
+Patch 5.5.027
+Problem:    Unix: os_unix.c doesn't compile when XTERM_CLIP is used but
+	    WANT_TITLE isn't. (Barnum)
+Solution:   Move a few functions that are used by the X11 title and clipboard
+	    and put another "#if" around it.
+Files:	    src/os_unix.c
+
+Patch 5.5.028 (extra)
+Problem:    Win32 GUI: When a file is dropped on Win32 gvim while at the ":"
+	    prompt, the file is edited but the command line is actually still
+	    there, the cursor goes back to command line on the next command.
+	    (Krishna)
+Solution:   When dropping a file or directory on gvim while at the ":" prompt,
+	    insert the name of the file/directory.  Allows using the
+	    file/directory name for any Ex command.
+Files:	    src/gui_w32.c
+
+Patch 5.5.029
+Problem:    "das" at the end of the file didn't delete the last character of
+	    the sentence.
+Solution:   When there is no character after the sentence, make the operation
+	    inclusive in current_sent().
+Files:	    src/search.c
+
+Patch 5.5.030
+Problem:    Unix: in os_unix.c, "term_str" is used, which is also defined in
+	    vim.h as a macro. (wuxin)
+Solution:   Renamed "term_str" to "buf" in do_xterm_trace().
+Files:	    src/os_unix.c
+
+Patch 5.5.031 (extra)
+Problem:    Win32 GUI: When exiting Windows, gvim will leave swap files behind
+	    and will be killed ungracefully. (Krishna)
+Solution:   Catch the WM_QUERYENDSESSION and WM_ENDSESSION messages and try to
+	    exit gracefully.  Allow the user to cancel the shutdown if there
+	    is a changed buffer.
+Files:	    src/gui_w32.c
+
+Patch 5.5.032
+Problem:    Patch 5.5.025 wasn't right.  And C highlighting was still not
+	    working correctly for a #define.
+Solution:   Added "excludenl" argument to ":syntax", to be able not to extend
+	    a containing item when there is a match with the end-of-line.
+Files:	    src/syntax.c, runtime/doc/syntax.txt, runtime/syntax/c.vim
+
+Patch 5.5.033
+Problem:    When reading from stdin, a long line in viminfo would mess up the
+	    file message.  readfile() uses IObuff for keep_msg, which could be
+	    overwritten by anyone.
+Solution:   Copy the message from IObuff to msg_buf and set keep_msg to that.
+	    Also change vim_fgets() to not use IObuff any longer.
+Files:	    src/fileio.c
+
+Patch 5.5.034
+Problem:    "gvim -rv" caused a crash.  Using 't_Co' before it's set.
+Solution:   Don't try to initialize the highlighting before it has been
+	    initialized from main().
+Files:	    src/syntax.c
+
+Patch 5.5.035
+Problem:    GTK with XIM: Resizing with status area was messy, and
+	    ":set guioptions+=b" didn't work.
+Solution:   Make status area a separate widget, but not a separate window.
+	    (Chi-Deok Hwang)
+Files:	    src/gui_gtk_f.c, src/gui_gtk_x11.c, src/multbyte.c
+
+Patch 5.5.036
+Problem:    The GZIP_read() function in $VIMRUNTIME/vimrc_example.vim to
+	    uncompress a file did not do detection for 'fileformat'.  This is
+	    because the filtering is done with 'binary' set.
+Solution:   Split the filtering into separate write, filter and read commands.
+Files:	    runtime/vimrc_example.vim
+
+Patch 5.5.037
+Problem:    The "U" command didn't mark the buffer as changed. (McCormack)
+Solution:   Set the 'modified' flag when using "U".
+Files:	    src/undo.c
+
+Patch 5.5.038
+Problem:    When typing a long ":" command, so that the screen scrolls up,
+	    causes the hit-enter prompt, even though the user just typed
+	    return to execute the command.
+Solution:   Reset need_wait_return if (part of) the command was typed in
+	    getcmdline().
+Files:	    src/ex_getln.c
+
+Patch 5.5.039
+Problem:    When using a custom status line, "%a" (file # of #) reports the
+	    index of the current window for all windows.
+Solution:   Pass a window pointer to append_arg_number(), and pass the window
+	    being updated from build_stl_str_hl(). (Stephen P. Wall)
+Files:	    src/buffer.c, src/screen.c, src/proto/buffer.pro
+
+Patch 5.5.040
+Problem:    Multi-byte: When there is some error in xim_real_init(), it can
+	    close XIM and return.  After this there can be a segv.
+Solution:   Test "xic" for being non-NULL, don't set "xim" to NULL.  Also try
+	    to find more matches for supported styles. (Sung-Hyun Nam)
+Files:	    src/multbyte.c
+
+Patch 5.5.041
+Problem:    X11 GUI: CTRL-_ requires the SHIFT key only on some machines.
+Solution:   Translate CTRL-- to CTRL-_. (Robert Webb)
+Files:	    src/gui_x11.c
+
+Patch 5.5.042
+Problem:    X11 GUI: keys with ALT were assumed to be used for the menu, even
+	    when the menu has been disabled by removing 'm' from 'guioptions'.
+Solution:   Ignore keys with ALT only when gui.menu_is_active is set. (Raf)
+Files:	    src/gui_x11.c
+
+Patch 5.5.043
+Problem:    GTK: Handling of fontset fonts was not right when 'guifontset'
+	    contains exactly 14 times '-'.
+Solution:   Avoid setting fonts when working with a fontset. (Sung-Hyun Nam)
+Files:	    src/gui_gtk_x11.c
+
+Patch 5.5.044
+Problem:    pltags.pl contains an absolute path "/usr/local/bin/perl".  That
+	    might not work everywhere.
+Solution:   Use "/usr/bin/env perl" instead.
+Files:	    runtime/tools/pltags.pl
+
+Patch 5.5.045
+Problem:    Using "this_session" variable does not work, requires preceding it
+	    with "v:".  Default filename for ":mksession" isn't mentioned
+	    in the docs. (Fisher)
+Solution:   Support using "this_session" to be backwards compatible.
+Files:	    src/eval.c, runtime/doc/options.txt
+
+Patch 5.5.046 (extra)
+Problem:    VMS: problems with path and filename.
+Solution:   Truncate file name at last ';', etc. (Zoltan Arpadffy)
+Files:	    src/buffer.c, src/fileio.c, src/gui_motif.c, src/os_vms.c,
+	    src/proto/os_vms.pro
+
+Patch 5.5.047
+Problem:    VMS: Crash when using the popup menu
+Solution:   Turn the #define MENU_MODE_CHARS into an array. (Arpadffy)
+Files:	    src/structs.h, src/menu.c
+
+Patch 5.5.048
+Problem:    HP-UX 11: Compiling doesn't work, because both string.h and
+	    strings.h are included. (Squassabia)
+Solution:   The configure test for including both string.h and strings.h
+	    must include <Xm/Xm.h> first, because it causes problems.
+Files:	    src/configure.in, src/configure, src/config.h.in
+
+Patch 5.5.049
+Problem:    Unix: When installing Vim, the protection bits of files might be
+	    influenced by the umask.
+Solution:   Add $(FILEMOD) to Makefile. (Shetye)
+Files:	    src/Makefile
+
+Patch 5.5.050
+Problem:    "z+" and "z^" commands are missing.
+Solution:   Implemented "z+" and "z^".
+Files:	    src/normal.c, runtime/doc/scroll.txt, runtime/doc/index.txt
+
+Patch 5.5.051
+Problem:    Several Unix systems have a problem with the optimization limits
+	    check in configure.
+Solution:   Removed the configure check, let the user add it manually in
+	    Makefile or the environment.
+Files:	    src/configure.in, src/configure, src/Makefile
+
+Patch 5.5.052
+Problem:    Crash when using a cursor key at the ATTENTION prompt. (Alberani)
+Solution:   Ignore special keys at the console dialog.  Also ignore characters
+	    > 255 for other uses of tolower() and toupper().
+Files:	    src/menu.c, src/message.c, src/misc2.c
+
+Patch 5.5.053
+Problem:    Indenting is wrong after a function when 'cino' has "fs".  Another
+	    problem when 'cino' has "{s".
+Solution:   Put line after closing "}" of a function at the left margin.
+	    Apply ind_open_extra in the right way after a '{'.
+Files:	    src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+Patch 5.5.054
+Problem:    Unix: ":e #" doesn't work if the alternate file name contains a
+	    space or backslash. (Hudacek)
+Solution:   When replacing "#", "%" or other items that stand for a file name,
+	    prepend a backslash before special characters.
+Files:	    src/ex_docmd.c
+
+Patch 5.5.055
+Problem:    Using "<C-V>$r-" in blockwise Visual mode replaces one character
+	    beyond the end of the line. (Zivkov)
+Solution:   Only replace existing characters.
+Files:	    src/ops.c
+
+Patch 5.5.056
+Problem:    After "z20<CR>" messages were printed at the old command line
+	    position once.  (Veselinovic)
+Solution:   Set msg_row and msg_col when changing cmdline_row in
+	    win_setheight().
+Files:	    src/window.c
+
+Patch 5.5.057
+Problem:    After "S<Esc>" it should be possible to restore the line with "U".
+	    (Veselinovic)
+Solution:   Don't call u_clearline() in op_delete() when changing only one
+	    line.
+Files:	    src/ops.c
+
+Patch 5.5.058
+Problem:    Using a long search pattern and then "n" causes the hit-enter
+	    prompt.  (Krishna)
+Solution:   Truncate the echoed pattern, like other messages.  Moved code for
+	    truncating from msg_attr() to msg_strtrunc().
+Files:	    src/message.c, src/proto/message.pro, src/search.c
+
+Patch 5.5.059
+Problem:    GTK GUI: When $term is invalid, using "gvim" gives an error
+	    message, even though $term isn't really used.  (Robbins)
+Solution:   When the GUI is about to start, skip the error messages for a
+	    wrong $term.
+Files:	    src/term.c
+
+Patch 5.5.060 (extra)
+Problem:    Dos 32 bit: When a directory in 'backupdir' doesn't exist, ":w"
+	    causes the file to be renamed to "axlqwqhy.ba~". (Matzdorf)
+Solution:   The code to work around a LFN bug in Windows 95 doesn't handle a
+	    non-existing target name correctly.  When renaming fails, make
+	    sure the file has its original name.  Also do this for the Win32
+	    version, although it's unlikely that it runs into this problem.
+Files:	    src/os_msdos.c, src/os_win32.c
+
+Patch 5.5.061
+Problem:    When using "\:" in a modeline, the backslash is included in the
+	    option value. (Mohsin)
+Solution:   Remove one backslash before the ':' in a modeline.
+Files:	    src/buffer.c, runtime/doc/options.txt
+
+Patch 5.5.062 (extra)
+Problem:    Win32 console: Temp files are created in the root of the current
+	    drive, which may be read-only. (Peterson)
+Solution:   Use the same mechanism of the GUI version: Use $TMP, $TEMP or the
+	    current directory.  Cleaned up vim_tempname() a bit.
+Files:	    src/fileio.c, src/os_win32.h, runtime/doc/os_dos.txt
+
+Patch 5.5.063
+Problem:    When using whole-line completion in Insert mode, 'cindent' is
+	    applied, even after changing the indent of the line.
+Solution:   Don't reindent the completed line after inserting/removing indent.
+	    (Robert Webb)
+Files:	    src/edit.c
+
+Patch 5.5.064
+Problem:    has("sniff") doesn't work correctly.
+Solution:   Return 1 when Vim was compiled with the +sniff feature. (Pruemmer)
+Files:	    src/eval.c
+
+Patch 5.5.065
+Problem:    When dropping a file on Vim, the 'shellslash' option is not
+	    effective. (Krishna)
+Solution:   Fix the slashes in the dropped file names according to
+	    'shellslash'.
+Files:	    src/ex_docmd.c, runtime/doc/options.txt
+
+Patch 5.5.066
+Problem:    For systems with backslash in file name: Setting a file name
+	    option to a value starting with "\\machine" removed a backslash.
+Solution:   Keep the double backslash for "\\machine", but do change
+	    "\\\\machine" to "\\machine" for backwards compatibility.
+Files:	    src/option.c, runtime/doc/options.txt
+
+Patch 5.5.067
+Problem:    With 'hlsearch' set, the pattern "\>" doesn't highlight the first
+	    match in a line. (Benji Fisher)
+Solution:   Fix highlighting an empty match.  Also highlight the first
+	    character in an empty line for "$".
+Files:	    src/screen.c
+
+Patch 5.5.068
+Problem:    Crash when a ":while" is used with an argument that has an error.
+	    (Sylvain Viart)
+Solution:   Was using an uninitialized index in the cs_line[] array.  The
+	    crash only happened when the index was far off.  Made sure the
+	    uninitialized index isn't used.
+Files:	    src/ex_docmd.c
+
+Patch 5.5.069
+Problem:    Shifting lines in blockwise Visual mode didn't set the 'modified'
+	    flag.
+Solution:   Do set the 'modified' flag.
+Files:	    src/ops.c
+
+Patch 5.5.070
+Problem:    When editing a new file, creating that file outside of Vim, then
+	    editing it again, ":w" still warns for overwriting an existing
+	    file. (Nam)
+Solution:   The BF_NEW flag in the "b_flags" field wasn't cleared properly.
+Files:	    src/buffer.c, src/fileio.c
+
+Patch 5.5.071
+Problem:    Using a matchgroup in a ":syn region", which is the same syntax
+	    group as the region, didn't stop a contained item from matching in
+	    the start pattern.
+Solution:   Also push an item on the stack when the syntax ID of the
+	    matchgroup is the same as the syntax ID of the region.
+Files:	    src/syntax.c
+
+Patch 5.5.072 (extra)
+Problem:    Dos 32 bit: When setting 'columns' to a too large value, Vim may
+	    crash, and the DOS console too.
+Solution:   Check that the value of 'columns' isn't larger than the number of
+	    columns that the BIOS reports.
+Files:	    src/os_msdos.c, src/proto/os_msdos.pro, src/option.c
+
+Patch 5.5.073 (extra)
+Problem:    Win 32 GUI: The Find and Find/Replace dialogs didn't show the
+	    "match case" checkbox.  The Find/Replace dialog didn't handle the
+	    "match whole word" checkbox.
+Solution:   Support the "match case" and "match whole word" checkboxes.
+Files:	    src/gui_w32.c
+
+Patch 5.6a.001
+Problem:    Using <C-End> with a count doesn't work like it does with "G".
+	    (Benji Fisher)
+Solution:   Accept a count for <C-End> and <C-Home>.
+Files:	    src/normal.c
+
+Patch 5.6a.002
+Problem:    The script for conversion to HTML was an older version.
+Solution:   Add support for running 2html.vim on a color terminal.
+Files:	    runtime/syntax/2html.vim
+
+Patch 5.6a.003
+Problem:    Defining a function inside a function didn't give an error
+	    message.  A missing ":endfunction" doesn't give an error message.
+Solution:   Allow defining a function inside a function.
+Files:	    src/eval.c, runtime/doc/eval.txt
+
+Patch 5.6a.004
+Problem:    A missing ":endwhile" or ":endif" doesn't give an error message.
+	    (Johannes Zellner)
+Solution:   Check for missing ":endwhile" and ":endif" in sourced files.
+	    Add missing ":endif" in file selection macros.
+Files:	    src/ex_docmd.c, runtime/macros/file_select.vim
+
+Patch 5.6a.005
+Problem:    'hlsearch' was not listed alphabetically.  The value of 'toolbar'
+	    was changed when 'compatible' is set.
+Solution:   Moved entry of 'hlsearch' in options[] table down.
+	    Don't reset 'toolbar' option to the default value when
+	    'compatible' is set.
+Files:	    src/option.c
+
+Patch 5.6a.006
+Problem:    Using a backwards range inside ":if 0" gave an error message.
+Solution:   Don't complain about a range when it is not going to be used.
+	    (Stefan Roemer)
+Files:	    src/ex_docmd.c
+
+Patch 5.6a.007
+Problem:    ":let" didn't show internal Vim variables.  (Ron Aaron)
+Solution:   Do show ":v" variables for ":let" and ":let v:name".
+Files:	    src/eval.c
+
+Patch 5.6a.008
+Problem:    Selecting a syntax from the Syntax menu gives an error message.
+Solution:   Replace "else if" in SetSyn() with "elseif".  (Ronald Schild)
+Files:	    runtime/menu.vim
+
+Patch 5.6a.009
+Problem:    When compiling with +extra_search but without +syntax, there is a
+	    compilation error in screen.c. (Axel Kielhorn)
+Solution:   Adjust the #ifdef for declaring and initializing "line" in
+	    win_line().  Also solve compilation problem when +statusline is
+	    used without +eval.  Another one when +cmdline_compl is used
+	    without +eval.
+Files:	    src/screen.c, src/misc2.c
+
+Patch 5.6a.010
+Problem:    In a function, ":startinsert!" does not append to the end of the
+	    line if a ":normal" command was used to move the cursor. (Fisher)
+Solution:   Reset "w_set_curswant" to avoid that w_curswant is changed again.
+Files:	    src/ex_docmd.c
+
+Patch 5.6a.011 (depends on 5.6a.004)
+Problem:    A missing ":endif" or ":endwhile" in a function doesn't give an
+	    error message.
+Solution:   Give that error message.
+Files:	    src/ex_docmd.c
+
+Patch 5.6a.012 (depends on 5.6a.008)
+Problem:    Some Syntax menu entries caused a hit-enter prompt.
+Solution:   Call a function to make the command shorter.  Also rename a few
+	    functions to avoid name clashes.
+Files:	    runtime/menu.vim
+
+Patch 5.6a.013
+Problem:    Command line completion works different when another completion
+	    was done earlier. (Johannes Zellner)
+Solution:   Reset wim_index when starting a new completion.
+Files:	    src/ex_getln.c
+
+Patch 5.6a.014
+Problem:    Various warning messages when compiling and running lint with
+	    different combinations of features.
+Solution:   Fix the warning messages.
+Files:	    src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/gui_gtk_x11.c,
+	    src/option.c, src/screen.c, src/search.c, src/syntax.c,
+	    src/feature.h, src/globals.h
+
+Patch 5.6a.015
+Problem:    The vimtutor command doesn't always know the value of $VIMRUNTIME.
+Solution:   Let Vim expand $VIMRUNTIME, instead of the shell.
+Files:	    src/vimtutor
+
+Patch 5.6a.016 (extra)
+Problem:    Mac: Window size is restricted when starting.  Cannot drag the
+	    window all over the desktop.
+Solution:   Get real screen size instead of assuming 640x400.  Do not use a
+	    fixed number for the drag limits. (Axel Kielhorn)
+Files:	    src/gui_mac.c
+
+Patch 5.6a.017
+Problem:    The "Paste" entry in popup menu for Visual, Insert and Cmdline
+	    mode is in the wrong position. (Stol)
+Solution:   Add priority numbers for all Paste menu entries.
+Files:	    runtime/menu.vim
+
+Patch 5.6a.018
+Problem:    GTK GUI: submenu priority doesn't work.
+	    Help dialog could be destroyed too soon.
+	    When closing a dialog window (e.g. the "ATTENTION" one), Vim would
+	    just hang.
+	    When GTK theme is changed, Vim doesn't adjust to the new colors.
+	    Argument for ":promptfind" isn't used.
+Solution:   Fixed the mentioned problems.
+	    Made the dialogs look&feel nicer.
+	    Moved functions to avoid the need for a forward declaration.
+	    Fixed reentrancy of the file browser dialog.
+	    Added drag&drop support for GNOME.
+	    Init the text for the Find/replace dialog from the last used
+	    search string.  Set "match whole word" toggle button correctly.
+	    Made repeat rate for drag outside of window depend on the
+	    distance from the window.  (Marcin Dalecki)
+	    Made the drag in Visual mode actually work.
+	    Removed recursiveness protection from gui_mch_get_rgb(), it might
+	    cause more trouble than it solves.
+Files:	    src/ex_docmd.c, src/gui_gtk.c, src/gui_gtk_x11.c, src/ui.c,
+	    src/proto/ui.pro, src/misc2.c
+
+Patch 5.6a.019
+Problem:    When trying to recover through NFS, which uses a large block size,
+	    Vim might think the swap file is empty, because mf_blocknr_max is
+	    zero.  (Scott McDermott)
+Solution:   When computing the number of blocks of the file in mf_open(),
+	    round up instead of down.
+Files:	    src/memfile.c
+
+Patch 5.6a.020
+Problem:    GUI GTK: Could not set display for gvim.
+Solution:   Add "-display" and "--display" arguments. (Marcin Dalecki)
+Files:	    src/gui_gtk_x11.c
+
+Patch 5.6a.021
+Problem:    Recovering still may not work when the block size of the device
+	    where the swap file is located is larger than 4096.
+Solution:   Read block 0 with the minimal block size.
+Files:	    src/memline.c, src/memfile.c, src/vim.h
+
+Patch 5.6a.022 (extra)
+Problem:    Win32 GUI: When an error in the vimrc causes a dialog to pop up
+	    (e.g., for an existing swap file), Vim crashes. (David Elins)
+Solution:   Before showing a dialog, open the main window.
+Files:	    src/gui_w32.c
+
+Patch 5.6a.023
+Problem:    Using expand("%:gs??/?") causes a crash. (Ron Aaron)
+Solution:   Check for running into the end of the string in do_string_sub().
+Files:	    src/eval.c
+
+Patch 5.6a.024
+Problem:    Using an autocommand to delete a buffer when leaving it can cause
+	    a crash when jumping to a tag. (Franz Gorkotte)
+Solution:   In do_tag(), store tagstacklen before jumping to another buffer.
+	    Check tagstackidx after jumping to another buffer.
+	    Add extra check in win_split() if tagname isn't NULL.
+Files:	    src/tag.c, src/window.c
+
+Patch 5.6a.025 (extra)
+Problem:    Win32 GUI: The tables for toupper() and tolower() are initialized
+	    too late. (Mike Steed)
+Solution:   Move the initialization to win32_init() and call it from main().
+Files:	    src/main.c, src/os_w32.c, src/proto/os_w32.pro
+
+Patch 5.6a.026
+Problem:    When the SNiFF connection is open, shell commands hang. (Pruemmer)
+Solution:   Skip a second wait() call if waitpid() already detected that the
+	    child has exited.
+Files:	    src/os_unix.c
+
+Patch 5.6a.027 (extra)
+Problem:    Win32 GUI: The "Edit with Vim" popup menu entry causes problems
+	    for the Office toolbar.
+Solution:   Use a shell extension dll. (Tianmiao Hu)
+	    Added it to the install and uninstal programs, replaces the old
+	    "Edit with Vim" menu registry entries.
+Files:	    src/dosinst.c, src/uninstal.c, gvimext/*, runtime/doc/gui_w32.txt
+
+Patch 5.6a.028 (extra)
+Problem:    Win32 GUI: Dialogs and tear-off menus can't handle multi-byte
+	    characters.
+Solution:   Adjust nCopyAnsiToWideChar() to handle multi-byte characters
+	    correctly.
+Files:	    src/gui_w32.c
+
+==============================================================================
+VERSION 5.7						*version-5.7*
+
+Version 5.7 is a bug-fix version of 5.6.
+
+Changed							*changed-5.7*
+-------
+
+Renamed src/INSTALL.mac to INSTALL_mac.txt to avoid it being recognized with a
+wrong file type.  Also renamed src/INSTALL.amiga to INSTALL_ami.txt.
+
+
+Added							*added-5.7*
+-----
+
+New syntax files:
+stp		Stored Procedures (Jeff Lanzarotta)
+snnsnet, snnspat, snnsres	SNNS (Davide Alberani)
+mel		MEL (Robert Minsk)
+ruby		Ruby (Mirko Nasato)
+tli		TealInfo (Kurt W. Andrews)
+ora		Oracle config file (Sandor Kopanyi)
+abaqus		Abaqus (Carl Osterwisch)
+jproperties	Java Properties (Simon Baldwin)
+apache		Apache config (Allan Kelly)
+csp		CSP (Jan Bredereke)
+samba		Samba config (Rafael Garcia-Suarez)
+kscript		KDE script (Thomas Capricelli)
+hb		Hyper Builder (Alejandro Forero Cuervo)
+fortran		Fortran (rewritten) (Ajit J. Thakkar)
+sml		SML (Fabrizio Zeno Cornelli)
+cvs		CVS commit (Matt Dunford)
+aspperl		ASP Perl (Aaron Hope)
+bc		BC calculator (Vladimir Scholtz)
+latte		Latte (Nick Moffitt)
+wml		WML (Gerfried Fuchs)
+
+Included Exuberant ctags 3.5.1. (Darren Hiebert)
+
+"display" and "fold" arguments for syntax items.  For future extension, they
+are ignored now.
+
+strftime() function for the Macintosh.
+
+macros/explorer.vim: A file browser script (M A Aziz Ahmed)
+
+
+Fixed							*fixed-5.7*
+-----
+
+The 16 bit MS-DOS version is now compiled with Bcc 3.1 instead of 4.0.  The
+executable is smaller.
+
+When a "make test" failed, the output file was lost.  Rename it to
+test99.failed to be able to see what went wrong.
+
+After sourcing bugreport.vim, it's not clear that bugreport.txt has been
+written in the current directory.  Edit bugreport.txt to avoid that.
+
+Adding IME support when using Makefile.w32 didn't work. (Taro Muraoka)
+
+Win32 console: Mouse drags were passed on even when the mouse didn't move.
+
+Perl interface: In Buffers(), type of argument to SvPV() was int, should be
+STRLEN. (Tony Leneis)
+
+Problem with prototype for index() on AIX 4.3.0.  Added check for _AIX43 in
+os_unix.h. (Jake Hamby)
+
+Mappings in mswin.vim could break when some commands are mapped.  Add "nore"
+to most mappings to avoid re-mapping.
+
+modify_fname() made a copy of a file name for ":p" when it already was a full
+path name, which is a bit slow.
+
+Win32 with Borland C++ 5.5: Pass the path to the compiler on to xxd and ctags,
+to avoid depending on $PATH.  Fixed "make clean".
+
+Many fixes to Macintosh specific parts: (mostly by Dany StAmant)
+- Only one Help menu.
+- No more crash when removing a menu item.
+- Support as External Editor for Codewarrior (still some little glitches).
+- Popup menu support.
+- Fixed crash when pasting after application switch.
+- Color from rgb.txt properly displayed.
+- 'isprint' default includes all chars above '~'. (Axel Kielhorn)
+- mac_expandpath() was leaking memory.
+- Add digraphs table. (Axel Kielhorn)
+- Multi-byte support: (Kenichi Asai)
+  Switch keyscript when going in/out of Insert mode.
+  Draw multi-byte character correctly.
+  Don't use mblen() but highest bit of char to detect multi-byte char.
+  Display value of multi-byte in statusline (also for other systems).
+- mouse button was not initialized properly to MOUSE_LEFT when
+  USE_CTRLCLICKMENU not defined.
+- With Japanese SJIS characters: Make "w", "b", and "e" work
+  properly.  (Kenichi Asai)
+- Replaced old CodeWarrior file os_mac.CW9.hqx with os_mac.cw5.sit.hqx.
+
+Fixes for VMS: (Zoltan Arpadffy) (also see patch 5.6.045 below)
+- Added Makefile_vms.mms and vimrc.vms to src/testdir to be able to run the
+  tests.
+- Various fixes.
+- Set 'undolevels' to 1000 by default.
+- Made mch_settitle() equivalent to the one in os_unix.c.
+
+RiscOS: A few prototypes for os_riscos.c were outdated.  Generate prototypes
+automatically.
+
+
+Previously released patches:
+
+Patch 5.6.001
+Problem:    When using "set bs=0 si cin", Inserting "#<BS>" or "}<BS>" which
+	    reduces the indent doesn't delete the "#" or "}". (Lorton)
+Solution:   Adjust ai_col in ins_try_si().
+Files:	    src/edit.c
+
+Patch 5.6.002
+Problem:    When using the vim.vim syntax file, a comment with all uppercase
+	    characters causes a hang.
+Solution:   Adjust pattern for vimCommentTitle (Charles Campbell)
+Files:	    runtime/syntax/vim.vim
+
+Patch 5.6.003
+Problem:    GTK GUI: Loading a user defined toolbar bitmap gives a warning
+	    about the colormap.  Probably because the window has not been
+	    opened yet.
+Solution:   Use gdk_pixmap_colormap_create_from_xpm() to convert the xpm file.
+	    (Keith Radebaugh)
+Files:	    src/gui_gtk.c
+
+Patch 5.6.004 (extra)
+Problem:    Win32 GUI with IME: When setting 'guifont' to "*", the font
+	    requester appears twice.
+Solution:   In gui_mch_init_font() don't call get_logfont() but copy
+	    norm_logfont from fh. (Yasuhiro Matsumoto)
+Files:	    src/gui_w32.c
+
+Patch 5.6.005
+Problem:    When 'winminheight' is zero, CTRL-W - with a big number causes a
+	    crash.  (David Kotchan)
+Solution:   Check for negative window height in win_setheight().
+Files:	    src/window.c
+
+Patch 5.6.006
+Problem:    GTK GUI: Bold font cannot always be used.  Memory is freed too
+	    early in gui_mch_init_font().
+Solution:   Move call to g_free() to after where sdup is used. (Artem Hodyush)
+Files:	    src/gui_gtk_x11.c
+
+Patch 5.6.007 (extra)
+Problem:    Win32 IME: Font is not changed when screen font is changed. And
+	    IME composition window does not trace the cursor.
+Solution:   Initialize IME font.  When cursor is moved, set IME composition
+	    window with ImeSetCompositionWindow().  Add call to
+	    ImmReleaseContext() in several places. (Taro Muraoka)
+Files:	    src/gui.c, src/gui_w32.c, src/proto/gui_w32.pro
+
+Patch 5.6.008 (extra)
+Problem:    Win32: When two files exist with the same name but different case
+	    (through NFS or Samba), fixing the file name case could cause the
+	    wrong one to be edited.
+Solution:   Prefer a perfect match above a match while ignoring case in
+	    fname_case().  (Flemming Madsen)
+Files:	    src/os_win32.c
+
+Patch 5.6.009 (extra)
+Problem:    Win32 GUI: Garbage in Windows Explorer help line when selecting
+	    "Edit with Vim" popup menu entry.
+Solution:   Only return the help line when called with the GCS_HELPTEXT flag.
+	    (Tianmiao Hu)
+Files:	    GvimExt/gvimext.cpp
+
+Patch 5.6.010
+Problem:    A file name which contains a TAB was not read correctly from the
+	    viminfo file and the ":ls" listing was not aligned properly.
+Solution:   Parse the buffer list lines in the viminfo file from the end
+	    backwards.  Count a Tab for two characters to align the ":ls" list.
+Files:	    src/buffer.c
+
+Patch 5.6.011
+Problem:    When 'columns' is huge (using a tiny font) and 'statusline' is
+	    used, Vim can crash.
+Solution:   Limit maxlen to MAXPATHL in win_redr_custom(). (John Mullin)
+Files:	    src/screen.c
+
+Patch 5.6.012
+Problem:    When using "zsh" for /bin/sh, toolcheck may hang until "exit" is
+	    typed. (Kuratczyk)
+Solution:   Add "-c exit" when checking for the shell version.
+Files:	    src/toolcheck
+
+Patch 5.6.013
+Problem:    Multibyte char in tooltip is broken.
+Solution:   Consider multibyte char in replace_termcodes(). (Taro Muraoka)
+Files:      src/term.c
+
+Patch 5.6.014
+Problem:    When cursor is at the end of line and the character under cursor
+	    is a multibyte character, "yl" doesn't yank 1 multibyte-char.
+	    (Takuhiro Nishioka)
+Solution:   Recognize a multibyte-char at end-of-line correctly in oneright().
+	    (Taro Muraoka)
+	    Also: make "+quickfix" in ":version" output appear alphabetically.
+Files:	    src/edit.c
+
+Patch 5.6.015
+Problem:    New xterm delete key sends <Esc>[3~ by default.
+Solution:   Added <kDel> and <kIns> to make the set of keypad keys complete.
+Files:	    src/edit.c, src/ex_getln.c, src/keymap.h, src/misc1.c,
+	    src/misc2.c, src/normal.c, src/os_unix.c, src/term.c
+
+Patch 5.6.016
+Problem:    When deleting a search string from history from inside a mapping,
+	    another entry is deleted too. (Benji Fisher)
+Solution:   Reset last_maptick when deleting the last entry of the search
+	    history.  Also: Increment maptick when starting a mapping from
+	    typed characters to avoid a just added search string being
+	    overwritten or removed from history.
+Files:	    src/ex_getln.c, src/getchar.c
+
+Patch 5.6.017
+Problem:    ":s/e/\^M/" should replace an "e" with a CTRL-M, not split the
+	    line. (Calder)
+Solution:   Replace the backslash with a CTRL-V internally. (Stephen P. Wall)
+Files:	    src/ex_cmds.c
+
+Patch 5.6.018
+Problem:    ":help [:digit:]" takes a long time to jump to the wrong place.
+Solution:   Insert a backslash to avoid the special meaning of '[]'.
+Files:	    src/ex_cmds.c
+
+Patch 5.6.019
+Problem:    "snd.c", "snd.java", etc. were recognized as "mail" filetype.
+Solution:   Make pattern for mail filetype more strict.
+Files:	    runtime/filetype.vim
+
+Patch 5.6.020 (extra)
+Problem:    The DJGPP version eats processor time (Walter Briscoe).
+Solution:   Call __dpmi_yield() in the busy-wait loop.
+Files:	    src/os_msdos.c
+
+Patch 5.6.021
+Problem:    When 'selection' is "exclusive", a double mouse click in Insert
+	    mode doesn't select last char in line. (Lutz)
+Solution:   Allow leaving the cursor on the NUL past the line in this case.
+Files:	    src/edit.c
+
+Patch 5.6.022
+Problem:    ":e \~<Tab>" expands to ":e ~\$ceelen", which doesn't work.
+Solution:   Re-insert the backslash before the '~'.
+Files:	    src/ex_getln.c
+
+Patch 5.6.023 (extra)
+Problem:    Various warnings for the Ming compiler.
+Solution:   Changes to avoid the warnings. (Bill McCarthy)
+Files:	    src/ex_cmds.c, src/gui_w32.c, src/os_w32exe.c, src/os_win32.c,
+	    src/syntax.c, src/vim.rc
+
+Patch 5.6.024 (extra)
+Problem:    Win32 console: Entering CTRL-_ requires the shift key. (Kotchan)
+Solution:   Specifically catch keycode 0xBD, like the GUI.
+Files:	    src/os_win32.c
+
+Patch 5.6.025
+Problem:    GTK GUI: Starting the GUI could be interrupted by a SIGWINCH.
+	    (Nils Lohner)
+Solution:   Repeat the read() call to get the gui_in_use value when
+	    interrupted by a signal.
+Files:	    src/gui.c
+
+Patch 5.6.026 (extra)
+Problem:    Win32 GUI: Toolbar bitmaps are searched for in
+	    $VIMRUNTIME/bitmaps, while GTK looks in $VIM/bitmaps. (Keith
+	    Radebaugh)
+Solution:   Use $VIM/bitmaps for both, because these are not part of the
+	    distribution but defined by the user.
+Files:	    src/gui_w32.c, runtime/doc/gui.txt
+
+Patch 5.6.027
+Problem:    TCL: Crash when using a Tcl script (reported for Win32).
+Solution:   Call Tcl_FindExecutable() in main(). (Brent Fulgham)
+Files:	    src/main.c
+
+Patch 5.6.028
+Problem:    Xterm patch level 126 sends codes for mouse scroll wheel.
+	    Fully works with xterm patch level 131.
+Solution:   Recognize the codes for button 4 (0x60) and button 5 (0x61).
+Files:	    src/term.c
+
+Patch 5.6.029
+Problem:    GTK GUI: Shortcut keys cannot be used for a dialog. (Johannes
+	    Zellner)
+Solution:   Add support for shortcut keys. (Marcin Dalecki)
+Files:	    src/gui_gtk.c
+
+Patch 5.6.030
+Problem:    When closing a window and 'ea' is set, Vim can crash. (Yasuhiro
+	    Matsumoto)
+Solution:   Set "curbuf" to a valid value in win_close().
+Files:	    src/window.c
+
+Patch 5.6.031
+Problem:    Multi-byte: When a double-byte character ends in CSI, Vim waits
+	    for another character to be typed.
+Solution:   Recognize the CSI as the second byte of a character and don't wait
+	    for another one. (Yasuhiro Matsumoto)
+Files:	    src/getchar.c
+
+Patch 5.6.032
+Problem:    Functions with an argument that is a line number don't all accept
+	    ".", "$", etc. (Ralf Arens)
+Solution:   Add get_art_lnum() and use it for setline(), line2byte() and
+	    synID().
+Files:	    src/eval.c
+
+Patch 5.6.033
+Problem:    Multi-byte: "f " sometimes skips to the second space.  (Sung-Hyun
+	    Nam)
+Solution:   Change logic in searchc() to skip trailing byte of a double-byte
+	    character.
+	    Also: Ask for second byte when searching for double-byte
+	    character. (Park Chong-Dae)
+Files:	    src/search.c
+
+Patch 5.6.034 (extra)
+Problem:    Compiling with Borland C++ 5.5 fails on tolower() and toupper().
+Solution:   Use TO_LOWER() and TO_UPPER() instead.  Also adjust the Makefile
+	    to make using bcc 5.5 easier.
+Files:	    src/edit.c, src/ex_docmd.c, src/misc1.c, src/Makefile.bor
+
+Patch 5.6.035
+Problem:    Listing the"+comments" feature in the ":version" output depended
+	    on the wrong ID. (Stephen P. Wall)
+Solution:   Change "CRYPTV" to "COMMENTS".
+Files:	    src/version.c
+
+Patch 5.6.036
+Problem:    GTK GUI: Copy/paste text doesn't work between gvim and Eterm.
+Solution:   Support TEXT and COMPOUND_TEXT selection targets. (ChiDeok Hwang)
+Files:	    src/gui_gtk_x11.c
+
+Patch 5.6.037
+Problem:    Multi-byte: Can't use "f" command with multi-byte character in GUI.
+Solution:   Enable XIM in Normal mode for the GUI. (Sung-Hyun Nam)
+Files:	    src/gui_gtk_x11.c, src/multbyte.c
+
+Patch 5.6.038
+Problem:    Multi-clicks in GUI are interpreted as a mouse wheel click.  When
+	    'ttymouse' is "xterm" a mouse click is interpreted as a mouse
+	    wheel click.
+Solution:   Don't recognize the mouse wheel in check_termcode() in the GUI.
+	    Use 0x43 for a mouse drag in do_xterm_trace(), not 0x63.
+Files:	    src/term.c, src/os_unix.c
+
+Patch 5.6.039
+Problem:    Motif GUI under KDE: When trying to logout, Vim hangs up the
+	    system. (Hermann Rochholz)
+Solution:   When handling the WM_SAVE_YOURSELF event, set the WM_COMMAND
+	    property of the window to let the session manager know we finished
+	    saving ourselves.
+Files:	    src/gui_x11.c
+
+Patch 5.6.040
+Problem:    When using ":s" command, matching the regexp is done twice.
+Solution:   After copying the matched line, adjust the pointers instead of
+	    finding the match again. (Loic Grenie)  Added vim_regnewptr().
+Files:	    src/ex_cmds.c, src/regexp.c, src/proto/regexp.pro
+
+Patch 5.6.041
+Problem:    GUI: Athena, Motif and GTK don't give more than 10 dialog buttons.
+Solution:   Remove the limit on the number of buttons.
+	    Also support the 'v' flag in 'guioptions'.
+	    For GTK: Center the buttons.
+Files:	    src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c
+
+Patch 5.6.042
+Problem:    When doing "vim -u vimrc" and vimrc contains ":q", the cursor in
+	    the terminal can remain off.
+Solution:   Call cursor_on() in mch_windexit().
+Files:	    src/os_unix.c
+
+Patch 5.6.043 (extra)
+Problem:    Win32 GUI: When selecting guifont with the dialog, 'guifont'
+	    doesn't include the bold or italic attributes.
+Solution:   Append ":i" and/or ":b" to 'guifont' in gui_mch_init_font().
+Files:	    src/gui_w32.c
+
+Patch 5.6.044 (extra)
+Problem:    MS-DOS and Windows: The line that dosinst.exe appends to
+	    autoexec.bat to set PATH is wrong when Vim is in a directory with
+	    an embedded space.
+Solution:   Use double quotes for the value when there is an embedded space.
+Files:	    src/dosinst.c
+
+Patch 5.6.045 (extra) (fixed version)
+Problem:    VMS: Various small problems.
+Solution:   Many small changes. (Zoltan Arpadffy)
+	    File name modifier ":h" keeps the path separator.
+	    File name modifier ":e" also removes version.
+	    Compile with MAX_FEAT by default.
+	    When checking for autocommands ignore version in file name.
+	    Be aware of file names being case insensitive.
+	    Added vt320 builtin termcap.
+	    Be prepared for an empty default_vim_dir.
+Files:	    runtime/gvimrc_example.vim, runtime/vimrc_example.vim,
+	    runtime/doc/os_vms.txt, src/eval.c, src/feature.h, src/fileio.c,
+	    src/gui_motif.c, src/gui_vms_conf.h, src/main.c, src/memline.c,
+	    src/misc1.c, src/option.c, src/os_vms_conf.h, src/os_vms.c,
+	    src/os_vms.h, src/os_vms.mms, src/tag.c, src/term.c, src/version.c
+
+Patch 5.6.046
+Problem:    Systems with backslash in file name: With 'shellslash' set, "vim
+	    */*.c" only uses a slash for the first file name.  (Har'El)
+Solution:   Fix slashes in file name arguments after reading the vimrc file.
+Files:	    src/option.c
+
+Patch 5.6.047
+Problem:    $CPPFLAGS is not passed on to ctags configure.
+Solution:   Add it. (Walter Briscoe)
+Files:	    src/config.mk.in, src/Makefile
+
+Patch 5.6.048
+Problem:    CTRL-R in Command-line mode is documented to insert text as typed,
+	    but inserts text literally.
+Solution:   Make CTRL-R insert text as typed, use CTRL-R CTRL-R to insert
+	    literally.  This is consistent with Insert mode.  But characters
+	    that end Command-line mode are inserted literally.
+Files:	    runtime/doc/index.txt, runtime/doc/cmdline.txt, src/ex_getln.c,
+	    src/ops.c, src/proto/ops.pro
+
+Patch 5.6.049
+Problem:    Documentation for [!] after ":ijump" is wrong way around. (Benji
+	    Fisher)
+Solution:   Fix the documentation.  Also improve the code to check for a match
+	    after a /* */ comment.
+Files:	    runtime/doc/tagsearch.txt, src/search.c
+
+Patch 5.6.050
+Problem:    Replacing is wrong when replacing a single-byte char with
+	    double-byte char or the other way around.
+Solution:   Shift the text after the character when it is replaced.
+	    (Yasuhiro Matsumoto)
+Files:	    src/normal.c, src/misc1.c
+
+Patch 5.6.051
+Problem:    ":tprev" and ":tnext" don't give an error message when trying to
+	    go before the first or beyond the last tag. (Robert Webb)
+Solution:   Added error messages.  Also: Delay a second when a file-read
+	    message is going to overwrite an error message, otherwise it won't
+	    be seen.
+Files:	    src/fileio.c, src/tag.c
+
+Patch 5.6.052
+Problem:    Multi-byte: When an Ex command has a '|' or '"' as a second byte,
+	    it terminates the command.
+Solution:   Skip second byte of multi-byte char when checking for '|' and '"'.
+	    (Asai Kenichi)
+Files:	    src/ex_docmd.c
+
+Patch 5.6.053
+Problem:    CTRL-] doesn't work on a tag that contains a '|'. (Cesar Crusius)
+Solution:   Escape '|', '"' and '\' in tag names when using CTRL-] and also
+	    for command-line completion.
+Files:	    src/ex_getln.c, src/normal.c
+
+Patch 5.6.054
+Problem:    When using ":e" and ":e #" the cursor is put in the first column
+	    when 'startofline' is set. (Cordell)
+Solution:   Use the last known column when 'startofline' is set.
+	    Also, use ECMD_LAST more often to simplify the code.
+Files:	    src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/buffer.pro
+
+Patch 5.6.055
+Problem:    When 'statusline' only contains a text without "%" and doesn't fit
+	    in the window, Vim crashes. (Ron Aaron)
+Solution:   Don't use the pointer for the first item if there is no item.
+Files:	    src/screen.c
+
+Patch 5.6.056 (extra)
+Problem:    MS-DOS: F11 and F12 don't work when 'bioskey' is set.
+Solution:   Use enhanced keyboard functions. (Vince Negri)
+	    Detect presence of enhanced keyboard and set bioskey_read and
+	    bioskey_ready.
+Files:	    src/os_msdos.c
+
+Patch 5.6.057 (extra)
+Problem:    Win32 GUI: Multi-byte characters are wrong in dialogs and tear-off
+	    menus.
+Solution:   Use system font instead of a fixed font. (Matsumoto, Muraoka)
+Files:	    src/gui_w32.c
+
+Patch 5.6.058
+Problem:    When the 'a' flag is not in 'guioptions', non-Windows systems
+	    copy Visually selected text to the clipboard/selection on a yank
+	    or delete command anyway.  On Windows it isn't done even when the
+	    'a' flag is included.
+Solution:   Respect the 'a' flag in 'guioptions' on all systems.
+Files:	    src/normal.c
+
+Patch 5.6.059 (extra)
+Problem:    When moving the cursor over italic text and the characters spill
+	    over to the cell on the right, that spill-over is deleted.
+	    Noticed in the Win32 GUI, can happen on other systems too.
+Solution:   Redraw italic text starting from a blank, like this is already
+	    done for bold text. (Vince Negri)
+Files:	    src/gui.c, src/gui.h, src/gui_w32.c
+
+Patch 5.6.060
+Problem:    Some bold characters spill over to the cell on the left, that
+	    spill-over can remain sometimes.
+Solution:   Redraw a characters when the next character was bold and needs
+	    redrawing. (Robert Webb)
+Files:	    src/screen.c
+
+Patch 5.6.061
+Problem:    When xterm sends 8-bit controls, recognizing the version response
+	    doesn't work.
+	    When using CSI instead of <Esc>[ for the termcap color codes,
+	    using 16 colors doesn't work. (Neil Bird)
+Solution:   Also accept CSI in place of <Esc>[ for the version string.
+	    Also check for CSI when handling colors 8-15 in term_color().
+	    Use CSI for builtin xterm termcap entries when 'term' contains
+	    "8bit".
+Files:	    runtime/doc/term.txt, src/ex_cmds.c, src/option.c, src/term.c,
+	    src/os_unix.c, src/proto/option.pro, src/proto/term.pro
+
+Patch 5.6.062
+Problem:    The documentation says that setting 'smartindent' doesn't have an
+	    effect when 'cindent' is set, but it does make a difference for
+	    lines starting with "#". (Neil Bird)
+Solution:   Really ignore 'smartindent' when 'cindent' is set.
+Files:	    src/misc1.c, src/ops.c
+
+Patch 5.6.063
+Problem:    Using "I" in Visual-block mode doesn't accept a count. (Johannes
+	    Zellner)
+Solution:   Pass the count on to do_insert() and edit(). (Allan Kelly)
+Files:	    src/normal.c, src/ops.c, src/proto/ops.pro
+
+Patch 5.6.064
+Problem:    MS-DOS and Win32 console: Mouse doesn't work correctly after
+	    including patch 5.6.28. (Vince Negri)
+Solution:   Don't check for mouse scroll wheel when the mouse code contains
+	    the number of clicks.
+Files:	    src/term.c
+
+Patch 5.6.065
+Problem:    After moving the cursor around in Insert mode, typing a space can
+	    still trigger an abbreviation. (Benji Fisher)
+Solution:   Don't check for an abbreviation after moving around in Insert mode.
+Files:	    src/edit.c
+
+Patch 5.6.066
+Problem:    Still a few bold character spill-over remains after patch 60.
+Solution:   Clear character just in front of blanking out rest of the line.
+	    (Robert Webb)
+Files:	    src/screen.c
+
+Patch 5.6.067
+Problem:    When a file name contains a NL, the viminfo file is corrupted.
+Solution:   Use viminfo_writestring() to convert the NL to CTRL-V n.
+	    Also fix the Buffers menu and listing a menu name with a newline.
+Files:	    runtime/menu.vim, src/buffer.c, src/mark.c, src/menu.c
+
+Patch 5.6.068
+Problem:    Compiling the Perl interface doesn't work with Perl 5.6.0.
+	    (Bernhard Rosenkraenzer)
+Solution:   Also check xs_apiversion for the version number when prepending
+	    defines for PL_*.
+Files:	    src/Makefile
+
+Patch 5.6.069
+Problem:    "go" doesn't always end up at the right character when
+	    'fileformat' is "dos". (Bruce DeVisser)
+Solution:   Correct computations in ml_find_line_or_offset().
+Files:	    src/memline.
+
+Patch 5.6.070 (depends on 5.6.068)
+Problem:    Compiling the Perl interface doesn't work with Perl 5.6.0.
+	    (Bernhard Rosenkraenzer)
+Solution:   Simpler check instead of the one from patch 68.
+Files:	    src/Makefile
+
+Patch 5.6.071
+Problem:    "A" in Visual block mode on a Tab positions the cursor one char to
+	    the right. (Michael Haumann)
+Solution:   Correct the column computation in op_insert().
+Files:	    src/ops.c
+
+Patch 5.6.072
+Problem:    When starting Vim with "vim +startinsert", it enters Insert mode
+	    only after typing the first command. (Andrew Pimlott)
+Solution:   Insert a dummy command in the stuff buffer.
+Files:	    src/main.c
+
+Patch 5.6.073 (extra) (depends on 5.6.034)
+Problem:    Win32 GUI: When compiled with Bcc 5.5 menus don't work.
+	    In dosinst.c toupper() and tolower() give an "internal compiler
+	    error" for Bcc 5.5.
+Solution:   Define WINVER to 4 to avoid compiling for Windows 2000. (Dan
+	    Sharp)  Also cleaned up compilation arguments.
+	    Use our own implementation of toupper() in dosinst.c.  Use
+	    mytoupper() instead of tolower().
+Files:	    src/Makefile.bor, src/dosinst.c
+
+Patch 5.6.074 (extra)
+Problem:    Entering CSI directly doesn't always work, because it's recognized
+	    as the start of a special key.  Mostly a problem with multi-byte
+	    in the GUI.
+Solution:   Use K_CSI for a typed CSI character.  Use <CSI> for a normal CSI,
+	    <xCSI> for a CSI typed in the GUI.
+Files:	    runtime/doc/intro.txt, src/getchar.c, src/gui_amiga.c,
+	    src/gui_gtk_x11.c, src/gui_mac.c, src/gui_riscos.c, src/gui_w32.c,
+	    src/keymap.h, src/misc2.c
+
+Patch 5.6.075
+Problem:    When using "I" or "A" in Visual block mode while 'sts' is set may
+	    change spaces to a Tab the inserted text is not correct. (Mike
+	    Steed)  And some other problems when using "A" to append after the
+	    end of the line.
+Solution:   Check for change in spaces/tabs after inserting the text.  Append
+	    spaces to fill the gap between the end-of-line and the right edge
+	    of the block.
+Files:	    src/ops.c
+
+Patch 5.6.076
+Problem:    GTK GUI: Mapping <M-Space> doesn't work.
+Solution:   Don't use the "Alt" modifier twice in key_press_event().
+Files:	    src/gui_gtk_x11.c
+
+Patch 5.6.077
+Problem:    GUI: When interrupting an external program with CTRL-C, gvim might
+	    crash. (Benjamin Korvemaker)
+Solution:   Avoid using a NULL pointer in ui_inchar_undo().
+Files:	    src/ui.c
+
+Patch 5.6.078
+Problem:    Locale doesn't always work on FreeBSD. (David O'Brien)
+Solution:   Link with the "xpg4" library when available.
+Files:	    src/configure.in, src/configure
+
+Patch 5.6.079
+Problem:    Vim could crash when several Tcl interpreters are created and
+	    destroyed.
+Solution:   handle the "exit" command and nested ":tcl" commands better. (Ingo
+	    Wilken)
+Files:	    runtime/doc/if_tcl.txt, src/if_tcl.c
+
+Patch 5.6.080
+Problem:    When jumping to a tag, generating the tags file and jumping to the
+	    same tag again uses the old search pattern. (Sung-Hyun Nam)
+Solution:   Flush cached tag matches when executing an external command.
+Files:	    src/misc2.c, src/proto/tag.pro, src/tag.c
+
+Patch 5.6.081
+Problem:    ":syn include" uses a level for the included file, this confuses
+	    contained items included at the same level.
+Solution:   Use a unique tag for each included file.  Changed sp_syn_inc_lvl
+	    to sp_syn_inc_tag. (Scott Bigham)
+Files:	    src/syntax.c, src/structs.h
+
+Patch 5.6.082
+Problem:    When using cscope, Vim can crash.
+Solution:   Initialize tag_fname in find_tags(). (Anton Blanchard)
+Files:	    src/tag.c
+
+Patch 5.6.083 (extra)
+Problem:    Win32: The visual beep can't be seen. (Eric Roesinger)
+Solution:   Flush the output before waiting with GdiFlush(). (Maurice S. Barnum)
+	    Also: Allow specifying the delay in t_vb for the GUI.
+Files:	    src/gui.c, src/gui_amiga.c, src/gui_gtk_x11.c, src/gui_mac.c,
+	    src/gui_riscos.c, src/gui_w32.c, src/gui_x11.c, src/gui_beos.cc,
+	    src/proto/gui_amiga.pro, src/proto/gui_gtk_x11.pro,
+	    src/proto/gui_mac.pro, src/proto/gui_riscos.pro,
+	    src/proto/gui_w32.pro, src/proto/gui_x11.pro,
+	    src/proto/gui_beos.pro
+
+Patch 5.6.084 (depends on 5.6.074)
+Problem:    GUI: Entering CSI doesn't always work for Athena and Motif.
+Solution:   Handle typed CSI as <xCSI> (forgot this bit in 5.6.074).
+Files:	    src/gui_x11.c
+
+Patch 5.6.085
+Problem:    Multi-byte: Using "r" to replace a double-byte char with a
+	    single-byte char moved the cursor one character. (Matsumoto)
+	    Also, using a count when replacing a single-byte char with a
+	    double-byte char didn't work.
+Solution:   Don't use del_char() to delete the second byte.
+	    Get "ptr" again after calling ins_char().
+Files:	    src/normal.c
+
+Patch 5.6.086 (extra)
+Problem:    Win32: When using libcall() and the returned value is not a valid
+	    pointer, Vim crashes.
+Solution:   Use IsBadStringPtr() to check if the pointer is valid.
+Files:	    src/os_win32.c
+
+Patch 5.6.087
+Problem:    Multi-byte: Commands and messages with multi-byte characters are
+	    displayed wrong.
+Solution:   Detect double-byte characters. (Yasuhiro Matsumoto)
+Files:	    src/ex_getln.c, src/message.c, src/misc2.c, src/screen.c
+
+Patch 5.6.088
+Problem:    Multi-byte with Motif or Athena: The message "XIM requires
+	    fontset" is annoying when Vim was compiled with XIM support but it
+	    is not being used.
+Solution:   Remove that message.
+Files:	    src/multbyte.c
+
+Patch 5.6.089
+Problem:    On non-Unix systems it's possible to overwrite a read-only file
+	    without using "!".
+Solution:   Check if the file permissions allow overwriting before moving the
+	    file to become the backup file.
+Files:	    src/fileio.c
+
+Patch 5.6.090
+Problem:    When editing a file in "/home/dir/home/dir" this was replaced with
+	    "~~".  (Andreas Jellinghaus)
+Solution:   Replace the home directory only once in home_replace().
+Files:	    src/misc1.c
+
+Patch 5.6.091
+Problem:    When editing many "no file" files, can't create swap file, because
+	    .sw[a-p] have all been used.  (Neil Bird)
+Solution:   Also use ".sv[a-z]", ".su[a-z]", etc.
+Files:	    src/memline.c
+
+Patch 5.6.092
+Problem:    FreeBSD: When setting $TERM to a non-valid terminal name, Vim
+	    hangs in tputs().
+Solution:   After tgetent() returns an error code, call it again with the
+	    terminal name "dumb".  This apparently creates an environment in
+	    which tputs() doesn't fail.
+Files:	    src/term.c
+
+Patch 5.6.093 (extra)
+Problem:    Win32 GUI: "ls | gvim -" will show a message box about reading
+	    stdin when Vim exits. (Donohue)
+Solution:   Don't write a message about the file read from stdin until the GUI
+	    has started.
+Files:	    src/fileio.c
+
+Patch 5.6.094
+Problem:    Problem with multi-byte string for ":echo var".
+Solution:   Check for length in msg_outtrans_len_attr(). (Sung-Hyun Nam)
+	    Also make do_echo() aware of multi-byte characters.
+Files:	    src/eval.c, src/message.c
+
+Patch 5.6.095
+Problem:    With an Emacs TAGS file that include another a relative path
+	    doesn't always work.
+Solution:   Use expand_tag_fname() on the name of the included file.
+	    (Utz-Uwe Haus)
+Files:	    src/tag.c
+
+Patch 5.6.096
+Problem:    Unix: When editing many files, startup can be slow. (Paul
+	    Ackersviller)
+Solution:   Halve the number of stat() calls used to add a file to the buffer
+	    list.
+Files:	    src/buffer.c
+
+Patch 5.7a.001
+Problem:    GTK doesn't respond on drag&drop from ROX-Filer.
+Solution:   Add "text/uri-list" target. (Thomas Leonard)
+	    Also: fix problem with checking for trash arguments.
+Files:	    src/gui_gtk_x11.c
+
+Patch 5.7a.002
+Problem:    Multi-byte: 'showmatch' is performed when second byte of an
+	    inserted double-byte char is a paren or brace.
+Solution:   Check IsTrailByte() before calling showmatch(). (Taro Muraoka)
+Files:	    src/misc1.c
+
+Patch 5.7a.003
+Problem:    Multi-byte: After using CTRL-O in Insert mode with the cursor at
+	    the end of the line on a multi-byte character the cursor moves to
+	    the left.
+Solution:   Check for multi-byte character at end-of-line. (Taro Muraoka)
+	    Also: fix cls() to detect a double-byte character. (Chong-Dae Park)
+Files:	    src/edit.c, src/search.c
+
+Patch 5.7a.004
+Problem:    When reporting the search pattern offset, the string could be
+	    unterminated, which may cause a crash.
+Solution:   Terminate the string for the search offset. (Stephen P. Wall)
+Files:	    src/search.c
+
+Patch 5.7a.005
+Problem:    When ":s//~/" doesn't find a match it reports "[NULL]" for the
+	    pattern.
+Solution:   Use get_search_pat() to obtain the actually used pattern.
+Files:	    src/ex_cmds.c, src/proto/search.pro, src/search.c
+
+Patch 5.7a.006 (extra)
+Problem:    VMS: Various problems, also with the VAXC compiler.
+Solution:   In many places use the Unix code for VMS too.
+	    Added time, date and compiler version to version message.
+	    (Zoltan Arpadffy)
+Files:	    src/ex_cmds.c, src/ex_docmd.c, src/globals.h, src/gui_vms_conf.h,
+	    src/main.c, src/message.c, src/misc1.c, src/os_vms.c,
+	    src/os_vms.h, src/os_vms.mms, src/os_vms_conf.h,
+	    src/proto/os_vms.pro, src/proto/version.pro, src/term.c,
+	    src/version.c, src/xxd/os_vms.mms, src/xxd/xxd.c
+
+Patch 5.7a.007
+Problem:    Motif and Athena GUI: CTRL-@ is interpreted as CTRL-C.
+Solution:   Only use "intr_char" when it has been set.
+Files:	    src/gui_x11.c
+
+Patch 5.7a.008
+Problem:    GTK GUI: When using CTRL-L the screen is redrawn twice, causing
+	    trouble for bold characters.  Also happens when moving with the
+	    scrollbar.  Best seen when 'writedelay' is non-zero.
+	    When starting the GUI with ":gui" the screen is redrawn once with
+	    the wrong colors.
+Solution:   Only set the geometry hints when the window size really changed.
+	    This avoids setting it each time the scrollbar is forcefully
+	    redrawn.
+	    Don't redraw in expose_event() when gui.starting is still set.
+Files:	    src/gui_gtk_x11.c
+
+
+==============================================================================
+VERSION 5.8						*version-5.8*
+
+Version 5.8 is a bug-fix version of 5.7.
+
+
+Changed							*changed-5.8*
+-------
+
+Ctags is no longer included with Vim.  It has grown into a project of its own.
+You can find it here:  http://ctags.sf.net.  It is highly recommended as a Vim
+companion when you are writing programs.
+
+
+Added							*added-5.8*
+-----
+
+New syntax files:
+acedb		AceDB (Stewart Morris)
+aflex		Aflex (Mathieu Clabaut)
+antlr		Antlr (Mathieu Clabaut)
+asm68k		68000 Assembly (Steve Wall)
+automake	Automake (John Williams)
+ayacc		Ayacc (Mathieu Clabaut)
+b		B (Mathieu Clabaut)
+bindzone	BIND zone (glory hump)
+blank		Blank (Rafal Sulejman)
+cfg		Configure files (Igor Prischepoff)
+changelog	ChangeLog (Gediminas Paulauskas)
+cl		Clever (Phil Uren)
+crontab		Crontab (John Hoelzel)
+csc		Essbase script (Raul Segura Acevedo)
+cynlib		Cynlib(C++) (Phil Derrick)
+cynpp		Cyn++ (Phil Derrick)
+debchangelog	Debian Changelog (Wichert Akkerman)
+debcontrol	Debian Control (Wichert Akkerman)
+dns		DNS zone file (Jehsom)
+dtml		Zope's DTML (Jean Jordaan)
+dylan		Dylan, Dylan-intr and Dylan-lid (Brent Fulgham)
+ecd		Embedix Component Description (John Beppu)
+fgl		Informix 4GL (Rafal Sulejman)
+foxpro		FoxPro (Powing Tse)
+gsp		GNU Server Pages (Nathaniel Harward)
+gtkrc		GTK rc (David Necas)
+hercules	Hercules (Avant! Corporation) (Dana Edwards)
+htmlos		HTML/OS by Aestiva (Jason Rust)
+inittab		SysV process control (David Necas)
+iss		Inno Setup (Dominique Stephan)
+jam		Jam (Ralf Lemke)
+jess		Jess (Paul Baleme)
+lprolog		LambdaProlog (Markus Mottl)
+ia64		Intel Itanium (parth malwankar)
+kix		Kixtart (Nigel Gibbs)
+mgp		MaGic Point (Gerfried Fuchs)
+mason		Mason (HTML with Perl) (Andrew Smith)
+mma		Mathematica (Wolfgang Waltenberger)
+nqc		Not Quite C (Stefan Scherer)
+omnimark	Omnimark (Paul Terray)
+openroad	OpenROAD (Luis Moreno Serrano)
+named		BIND configuration (glory hump)
+papp		PApp (Marc Lehmann)
+pfmain		Postfix main config (Peter Kelemen)
+pic		PIC assembly (Aleksandar Veselinovic)
+ppwiz		PPWizard (Stefan Schwarzer)
+progress	Progress (Phil Uren)
+psf		Product Specification File (Rex Barzee)
+r		R (Tom Payne)
+registry	MS-Windows registry (Dominique Stephan)
+robots		Robots.txt (Dominique Stephan)
+rtf		Rich Text Format (Dominique Stephan)
+setl		SETL (Alex Poylisher)
+sgmldecl	SGML Declarations (Daniel A. Molina W.)
+sinda		Sinda input (Adrian Nagle)
+sindacmp	Sinda compare (Adrian Nagle)
+sindaout	Sinda output (Adrian Nagle)
+smith		SMITH (Rafal Sulejman)
+snobol4		Snobol 4 (Rafal Sulejman)
+strace		Strace (David Necas)
+tak		TAK input (Adrian Nagle)
+takcmp		TAK compare (Adrian Nagle)
+takout		TAK output (Adrian Nagle)
+tasm		Turbo assembly (FooLman)
+texmf		TeX configuration (David Necas)
+trasys		Trasys input (Adrian Nagle)
+tssgm		TSS Geometry (Adrian Nagle)
+tssop		TSS Optics (Adrian Nagle)
+tsscl		TSS Command line (Adrian Nagle)
+virata		Virata Configuration Script (Manuel M.H. Stol)
+vsejcl		VSE JCL (David Ondrejko)
+wdiff		Wordwise diff (Gerfried Fuchs)
+wsh		Windows Scripting Host (Paul Moore)
+xkb		X Keyboard Extension (David Necas)
+
+Renamed php3 to php, it now also supports php4 (Lutz Eymers)
+
+Patch 5.7.015
+Problem:    Syntax files for Vim 6.0 can't be used with 5.x.
+Solution:   Add the "default" argument to the ":highlight" command: Ignore the
+	    command if highlighting was already specified.
+Files:	    src/syntax.c
+
+Generate the Syntax menu with makemenu.vim, so that it doesn't have to be done
+when Vim is starting up.  Reduces the startup time of the GUI.
+
+
+Fixed							*fixed-5.8*
+-----
+
+Conversion of docs to HTML didn't convert "|tag|s" to a hyperlink.
+
+Fixed compiling under NeXT. (Jeroen C.M. Goudswaard)
+
+optwin.vim gave an error when used in Vi compatible mode ('cpo' contains 'C').
+
+Tcl interpreter: "buffer" command didn't check for precense of an argument.
+(Dave Bodenstab)
+
+dosinst.c: Added checks for too long file name.
+
+Amiga: a file name starting with a colon was considered absolute but it isn't.
+Amiga: ":pwd" added a slash when in the root of a drive.
+
+Macintosh: Warnings for unused variables. (Bernhard Pruemmer)
+
+Unix: When catching a deadly signal, handle it in such a way that it's
+unlikely that Vim will hang.  Call _exit() instead of exit() in case of a
+severe problem.
+
+Setting the window title from nothing to something didn't work after patch 29.
+
+Check for ownership of .exrc and .vimrc was done with stat().  Use lstat() as
+well for extra security.
+
+Win32 GUI: Printing a file with 'fileformat' "unix" didn't work.  Set
+'fileformat' to "dos" before writing the temp file.
+
+Unix: Could start waiting for a character when checking for a CTRL-C typed
+when an X event is received.
+
+Could not use Perl and Python at the same time on FreeBSD, because Perl used
+"-lc" and Python used the threaded C library.
+
+Win32: The Mingw compiler gave a few warning messages.
+
+When using "ZZ" and an autocommand for writing uses an abbreviation it didn't
+work.  Don't stuff the ":x" command but execute it directly. (Mikael Berthe)
+
+VMS doesn't always have lstat(), added an #ifdef around it.
+
+Added a few corrections for the Macintosh. (Axel Kielhorn)
+
+Win32: Gvimext could not edit more than a few files at once, the length of the
+argument was fixed.
+
+
+Previously released patches for Vim 5.7:
+
+Patch 5.7.001
+Problem:    When the current buffer is crypted, and another modified buffer
+	    isn't, ":wall" will encrypt the other buffer.
+Solution:   In buf_write() use "buf" instead of "curbuf" to check for the
+	    crypt key.
+Files:	    src/fileio.c
+
+Patch 5.7.002
+Problem:    When 'showmode' is set, using "CTRL-O :r file" waits three seconds
+	    before displaying the read text. (Wichert Akkerman)
+Solution:   Set "keep_msg" to the file message so that the screen is redrawn
+	    before the three seconds wait for displaying the mode message.
+Files:	    src/fileio.c
+
+Patch 5.7.003
+Problem:    Searching for "[[:cntrl:]]" doesn't work.
+Solution:   Exclude NUL from the matching characters, it terminates the list.
+Files:	    src/regexp.c
+
+Patch 5.7.004
+Problem:    GTK: When selecting a new font, Vim can crash.
+Solution:   In gui_mch_init_font() unreference the old font, not the new one.
+Files:	    src/gui_gtk_x11.c
+
+Patch 5.7.005
+Problem:    Multibyte: Inserting a wrapped line corrupts kterm screen.
+	    Pasting TEXT/COMPOUND_TEXT into Vim does not work.
+	    On Motif no XIM status line is displayed even though it is
+	    available.
+Solution:   Don't use xterm trick for wrapping lines for multibyte mode.
+	    Correct a missing "break", added TEXT/COMPOUND_TEXT selection
+	    request.
+	    Add XIMStatusArea fallback code.
+	    (Katsuhito Nagano)
+Files:	    src/gui_gtk_x11.c, src/multbyte.c, src/screen.c, src/ui.c
+
+Patch 5.7.006
+Problem:    GUI: redrawing the non-Visual selection is wrong when the window
+	    is unobscured. (Jean-Pierre Etienne)
+Solution:   Redraw the selection properly and don't clear it.  Added "len"
+	    argument to clip_may_redraw_selection().
+Files:	    src/gui.c, src/ui.c, src/proto/ui.pro
+
+Patch 5.7.007
+Problem:    Python: Crash when using the current buffer twice.
+Solution:   Increase the reference count for buffer and window objects.
+	    (Johannes Zellner)
+Files:	    src/if_python.c
+
+Patch 5.7.008
+Problem:    In Ex mode, backspacing over the first TAB doesn't work properly.
+	    (Wichert Akkerman)
+Solution:   Switch the cursor on before printing the newline.
+Files:	    src/ex_getln.c
+
+Patch 5.7.009 (extra)
+Problem:    Mac: Crash when using a long file.
+Solution:   Don't redefine malloc() and free(), because it will break using
+	    realloc().
+Files:	    src/os_mac.h
+
+Patch 5.7.010
+Problem:    When using CTRL-A on a very long number Vim can crash.  (Michael
+	    Naumann)
+Solution:   Truncate the length of the new number to avoid a buffer overflow.
+Files:	    src/ops.c
+
+Patch 5.7.011 (extra)
+Problem:    Win32 GUI on NT 5 and Win98: Displaying Hebrew is reversed.
+Solution:   Output each character separately, to avoid that Windows reverses
+	    the text for some fonts. (Ron Aaron)
+Files:	    src/gui_w32.c
+
+Patch 5.7.012
+Problem:    When using "-complete=buffer" for ":command" the user command
+	    fails.
+Solution:   In a user command don't replace the buffer name with a count for
+	    the  buffer number.
+Files:	    src/ex_docmd.c
+
+Patch 5.7.013
+Problem:    "gD" didn't always find a match in the first line, depending on
+	    the column the search started at.
+Solution:   Reset the column to zero before starting to search.
+Files:	    src/normal.c
+
+Patch 5.7.014
+Problem:    Rot13 encoding was done on characters with accents, which is
+	    wrong. (Sven Gottwald)
+Solution:   Only do rot13 encoding on ASCII characters.
+Files:	    src/ops.c
+
+Patch 5.7.016
+Problem:    When hitting 'n' for a ":s///c" command, the ignore-case flag was
+	    not restored, some matches were skipped. (Daniel Blaustein)
+Solution:   Restore the reg_ic variable when 'n' was hit.
+Files:	    src/ex_cmds.c
+
+Patch 5.7.017
+Problem:    When using a Vim script for Vim 6.0 with <SID> before a function
+	    name, it produces an error message even when inside an "if version
+	    >= 600".  (Charles Campbell)
+Solution:   Ignore errors in the function name when the function is not going
+	    to be defined.
+Files:	    src/eval.c
+
+Patch 5.7.018
+Problem:    When running "rvim" or "vim -Z" it was still possible to execute a
+	    shell command with system() and backtick-expansion. (Antonios A.
+	    Kavarnos)
+Solution:   Disallow executing a shell command in get_cmd_output() and
+	    mch_expand_wildcards().
+Files:	    src/misc1.c, src/os_unix.c
+
+Patch 5.7.019
+Problem:    Multibyte: In a substitute string, a multi-byte character isn't
+	    skipped properly, can be a problem when the second byte is a
+	    backslash.
+Solution:   Skip an extra byte for a double-byte character. (Muraoka Taro)
+Files:	    src/ex_cmds.c
+
+Patch 5.7.020
+Problem:    Compilation doesn't work on MacOS-X.
+Solution:   Add a couple of #ifdefs. (Jamie Curmi)
+Files:	    src/regexp.c, src/ctags/general.h
+
+Patch 5.7.021
+Problem:    Vim sometimes produces a beep when started in an xterm.  Only
+	    happens when compiled without mouse support.
+Solution:   Requesting the xterm version results in a K_IGNORE.  This wasn't
+	    handled when mouse support is disabled.  Accept K_IGNORE always.
+Files:	    src/normal.c
+
+Patch 5.7.022
+Problem:    %v in 'statusline' is not displayed when it's equal to %c.
+Solution:   Check if %V or %v is used and handle them differently.
+Files:	    src/screen.c
+
+Patch 5.7.023
+Problem:    Crash when a WinLeave autocommand deletes the buffer in the other
+	    window.
+Solution:   Check that after executing the WinLeave autocommands there still
+	    is a window to be closed.  Also update the test that was supposed
+	    to check for this problem.
+Files:	    src/window.c, testdir/test13.in, testdir/test13.ok
+
+Patch 5.7.024
+Problem:    Evaluating an expression for 'statusline' can have side effects.
+Solution:   Evaluate the expression in a sandbox.
+Files:	    src/edit.c, src/eval.c, src/proto/eval.pro, src/ex_cmds.c,
+	    src/ex_cmds.h, src/ex_docmd.c, src/globals.h, src/option.c,
+	    src/screen.c, src/undo.c
+
+Patch 5.7.025 (fixed)
+Problem:    Creating a temp file has a race condition.
+Solution:   Create a private directory to write the temp files in.
+Files:	    src/fileio.c, src/misc1.c, src/proto/misc1.pro,
+	    src/proto/fileio.pro, src/memline.c, src/os_unix.h
+
+Patch 5.7.026 (extra)
+Problem:    Creating a temp file has a race condition.
+Solution:   Create a private directory to write the temp files in.
+	    This is the extra part of patch 5.7.025.
+Files:	    src/os_msdos.h
+
+Patch 5.7.027
+Problem:    Starting to edit a file can cause a crash.  For example when in
+	    Insert mode, using CTRL-O :help abbr<Tab> to scroll the screen and
+	    then <CR>, which edits a help file. (Robert Bogomip)
+Solution:   Check if keep_msg is NULL before copying it.
+Files:	    src/fileio.c
+
+Patch 5.7.028
+Problem:    Creating a backup or swap file could fail in rare situations.
+Solution:   Use O_EXCL for open().
+Files:	    src/fileio.c, src/memfile.c
+
+Patch 5.7.029
+Problem:    Editing a file with an extremely long name crashed Vim.
+Solution:   Check for length of the name when setting the window title.
+Files:	    src/buffer.c
+
+Patch 5.7.030
+Problem:    A ":make" or ":grep" command with a very long argument could cause
+	    a crash.
+Solution:   Allocate the buffer for the shell command.
+Files:	    src/ex_docmd.c
+
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/version6.txt b/runtime/doc/version6.txt
new file mode 100644
index 0000000..d97cf92
--- /dev/null
+++ b/runtime/doc/version6.txt
@@ -0,0 +1,13846 @@
+*version6.txt*  For Vim version 7.0aa.  Last change: 2004 Jun 07
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Welcome to Vim Version 6.0!  A large number of features has been added.  This
+file mentions all the new items that have been added, changes to existing
+features and bug fixes compared to Vim 5.x.
+
+See |vi_diff.txt| for an overview of differences between Vi and Vim 6.0.
+See |version4.txt| for differences between Vim 3.0 and Vim 4.0.
+See |version5.txt| for differences between Vim 4.0 and Vim 5.0.
+
+INCOMPATIBLE CHANGES			|incompatible-6|
+
+Cursor position in Visual mode		|curpos-visual|
+substitute command Vi compatible	|substitute-CR|
+global option values introduced		|new-global-values|
+'fileencoding' changed			|fileencoding-changed|
+Digraphs changed			|digraphs-changed|
+Filetype detection changed		|filetypedetect-changed|
+Unlisted buffers introduced		|new-unlisted-buffers|
+CTRL-U in Command-line mode changed	|CTRL-U-changed|
+Ctags gone				|ctags-gone|
+Documentation reorganized		|documentation-6|
+Modeless selection and clipboard	|modeless-and-clipboard|
+Small incompatibilities			|incomp-small-6|
+
+NEW FEATURES				|new-6|
+
+Folding					|new-folding|
+Vertically split windows		|new-vertsplit|
+Diff mode				|new-diff-mode|
+Easy Vim: click-and-type		|new-evim|
+User manual				|new-user-manual|
+Flexible indenting			|new-indent-flex|
+Extended search patterns		|new-searchpat|
+UTF-8 support				|new-utf-8|
+Multi-language support			|new-multi-lang|
+Plugin support				|new-plugins|
+Filetype plugins			|new-filetype-plugins|
+File browser				|new-file-browser|
+Editing files over a network		|new-network-files|
+Window for command-line editing		|new-cmdwin|
+Debugging mode				|new-debug-mode|
+Cursor in virtual position		|new-virtedit|
+Debugger interface			|new-debug-itf|
+Communication between Vims		|new-vim-server|
+Buffer type options			|new-buftype|
+Printing				|new-printing|
+Ports					|ports-6|
+Quickfix extended			|quickfix-6|
+Operator modifiers			|new-operator-mod|
+Search Path				|new-search-path|
+Writing files improved			|new-file-writing|
+Argument list				|new-argument-list|
+Restore a View				|new-View|
+Color schemes				|new-color-schemes|
+Various new items			|new-items-6|
+
+IMPROVEMENTS				|improvements-6|
+
+COMPILE TIME CHANGES			|compile-changes-6|
+
+BUG FIXES				|bug-fixes-6|
+
+VERSION 6.1			|version-6.1|
+Changed					|changed-6.1|
+Added					|added-6.1|
+Fixed					|fixed-6.1|
+
+VERSION 6.2			|version-6.2|
+Changed					|changed-6.2|
+Added					|added-6.2|
+Fixed					|fixed-6.2|
+
+VERSION 6.3			|version-6.3|
+Changed					|changed-6.3|
+Added					|added-6.3|
+Fixed					|fixed-6.3|
+
+==============================================================================
+INCOMPATIBLE CHANGES				*incompatible-6*
+
+These changes are incompatible with previous releases.  Check this list if you
+run into a problem when upgrading from Vim 5.x to 6.0
+
+
+Cursor position in Visual mode			*curpos-visual*
+------------------------------
+
+When going from one window to another window on the same buffer while in
+Visual mode, the cursor position of the other window is adjusted to keep the
+same Visual area.  This can be used to set the start of the Visual area in one
+window and the end in another.  In vim 5.x the cursor position of the other
+window would be used, which could be anywhere and was not very useful.
+
+
+Substitute command Vi compatible		*substitute-CR*
+--------------------------------
+
+The substitute string (the "to" part of the substitute command) has been made
+Vi compatible.  Previously a CTRL-V had a special meaning and could be used to
+prevent a <CR> to insert a line break.  This made it impossible to insert a
+CTRL-V before a line break.  Now a backslash is used to prevent a <CR> to
+cause a line break.  Since the number of backslashes is halved, it is still
+possible to insert a line break at the end of the line.  This now works just
+like Vi, but it's not compatible with Vim versions before 6.0.
+
+When a ":s" command doesn't make any substitutions, it no longer sets the '[
+and '] marks.  This is not related to Vi, since it doesn't have these marks.
+
+
+Global option values introduced			*new-global-values*
+-------------------------------
+
+There are now global values for options which are local to a buffer or window.
+Previously the local options were copied from one buffer to another.  When
+editing another file this could cause option values from a modeline to be used
+for the wrong file.  Now the global values are used when entering a buffer
+that has not been used before.  Also, when editing another buffer in a window,
+the local window options are reset to their global values.  The ":set" command
+sets both the local and global values, this is still compatible.  But a
+modeline only sets the local value, this is not backwards compatible.
+
+":let &opt = val" now sets the local and global values, like ":set".  New
+commands have been added to set the global or local value:
+	:let &opt = val		like ":set"
+	:let &g:opt = val	like ":setglobal"
+	:let &l:opt = val	like ":setlocal"
+
+
+'fileencoding' changed				*fileencoding-changed*
+----------------------
+
+'fileencoding' was used in Vim 5.x to set the encoding used inside all of Vim.
+This was a bit strange, because it was local to a buffer and worked for all
+buffers.  It could never be different between buffers, because it changed the
+way text in all buffers was interpreted.
+It is now used for the encoding of the file related to the buffer.  If you
+still set 'fileencoding' it is likely to be overwritten by the detected
+encoding from 'fileencodings', thus it is "mostly harmless".
+The old FileEncoding autocommand now does the same as the new EncodingChanged
+event.
+
+
+Digraphs changed				*digraphs-changed*
+----------------
+
+The default digraphs now correspond to RFC1345.  This is very different from
+what was used in Vim 5.x. |digraphs|
+
+
+Filetype detection changed			*filetypedetect-changed*
+--------------------------
+
+The filetype detection previously was using the "filetype" autocommand group.
+This caused confusion with the FileType event name (case is ignored).  The
+group is now called "filetypedetect".  It still works, but if the "filetype"
+group is used the autocommands will not be removed by ":filetype off".
+   The support for 'runtimepath' has made the "myfiletypefile" and
+"mysyntaxfile" mechanism obsolete.  They are still used for backwards
+compatibility.
+
+The connection between the FileType event and setting the 'syntax' option was
+previously in the "syntax" autocommand group.  That caused confusion with the
+Syntax event name.  The group is now called "syntaxset".
+
+The distributed syntax files no longer contain "syntax clear".  That makes it
+possible to include one in the other without tricks.  The syntax is now
+cleared when the 'syntax' option is set (by an autocommand added from
+synload.vim).  This makes the syntax cleared when the value of 'syntax' does
+not correspond to a syntax file.  Previously the existing highlighting was
+kept.
+
+
+Unlisted buffers introduced			*new-unlisted-buffers*
+---------------------------
+
+There is now a difference between buffers which don't appear in the buffer
+list and buffers which are really not in the buffer list.  Commands like
+":ls", ":bnext", ":blast" and the Buffers menu will skip buffers not in the
+buffer list. |unlisted-buffer|
+The 'buflisted' option can be used to make a buffer appear in the buffer list
+or not.
+
+Several commands that previously added a buffer to the buffer list now create
+an unlisted buffer.  This means that a ":bnext" and ":ball" will not find these
+files until they have actually been edited.  For example, buffers used for the
+alternative file by ":write file" and ":read file".
+   Other commands previously completely deleted a buffer and now only remove
+the buffer from the buffer list.  Commands relying on a buffer not to be
+present might fail.  For example, a ":bdelete" command in an autocommand that
+relied on something following to fail (was used in the automatic tests).
+|:bwipeout| can be used for the old meaning of ":bdelete".
+
+The BufDelete autocommand event is now triggered when a buffer is removed from
+the buffer list.  The BufCreate event is only triggered when a buffer is
+created that is added to the buffer list, or when an existing buffer is added
+to the buffer list.  BufAdd is a new name for BufCreate.
+The new BufNew event is for creating any buffer and BufWipeout for really
+deleting a buffer.
+
+When doing Insert mode completion, only buffers in the buffer list are
+scanned.  Added the 'U' flag to 'complete' to do completion from unlisted
+buffers.
+
+Unlisted buffers are not stored in a viminfo file.
+
+
+CTRL-U in Command-line mode changed		*CTRL-U-changed*
+-----------------------------------
+
+Using CTRL-U when editing the command line cleared the whole line.  Most
+shells only delete the characters before the cursor.  Made it work like that.
+(Steve Wall)
+
+You can get the old behavior with CTRL-E CTRL-U: >
+	:cnoremap <C-U> <C-E><C-U>
+
+
+Ctags gone					*ctags-gone*
+----------
+
+Ctags is no longer part of the Vim distribution.  It's now a grown-up program
+by itself, it deserves to be distributed separately.
+Ctags can be found here: http://ctags.sf.net/.
+
+
+Documentation reorganized			*documentation-6*
+-------------------------
+
+The documentation has been reorganized, an item may not be where you found it
+in Vim 5.x.
+- The user manual was added, some items have been moved to it from the
+  reference manual.
+- The quick reference is now in a separate file (so that it can be printed).
+
+The examples in the documentation were previously marked with a ">" in the
+first column.  This made it difficult to copy/paste them.  There is now a
+single ">" before the example and it ends at a "<" or a non-blank in the first
+column.  This also looks better without highlighting.
+
+'helpfile' is no longer used to find the help tags file.  This allows a user
+to add its own help files (e.g., for plugins).
+
+
+Modeless selection and clipboard		*modeless-and-clipboard*
+--------------------------------
+
+The modeless selection is used to select text when Visual mode can't be used,
+for example when editing the command line or at the more prompt.
+In Vim 5.x the modeless selection was always used.  On MS-Windows this caused
+the clipboard to be overwritten, with no way to avoid that.  The modeless
+selection now obeys the 'a' and 'A' flags in 'guioptions' and "autoselect" and
+"autoselectml" in 'clipboard'.  By default there is no automatic copy on
+MS-Windows.  Use the |c_CTRL-Y| command to manually copy the selection.
+
+To get the old behavior back, do this: >
+
+	:set clipboard^=autoselectml guioptions+=A
+
+
+Small incompatibilities				*incomp-small-6*
+-----------------------
+
+'backupdir', 'cdpath', 'directory', 'equalprg', 'errorfile', 'formatprg',
+'grepprg', 'helpfile', 'makeef', 'makeprg', 'keywordprg', 'cscopeprg',
+'viminfo' and 'runtimepath' can no longer be set from a modeline, for better
+security.
+
+Removed '_' from the 'breakat' default: It's commonly used in keywords.
+
+The default for 'mousehide' is on, because this works well for most people.
+
+The Amiga binary is now always compiled with "big" features.  The "big" binary
+archive no longer exists.
+
+The items "[RO]", "[+]", "[help]", "[Preview]" and "[filetype]" in
+'statusline' no longer have a leading space.
+
+Non-Unix systems: When expanding wildcards for the Vim arguments, don't use
+'suffixes'.  It now works as if the shell had expanded the arguments.
+
+The 'lisp', 'smartindent' and 'cindent' options are not switched off when
+'paste' is set.  The auto-indenting is disabled when 'paste' is set, but
+manual indenting with "=" still works.
+
+When formatting with "=" uses 'cindent' or 'indentexpr' indenting, and there
+is no change in indent, this is not counted as a change ('modified' isn't set
+and there is nothing to undo).
+
+Report 'modified' as changed when 'fileencoding' or 'fileformat' was set.
+Thus it reflects the possibility to abandon the buffer without losing changes.
+
+The "Save As" menu entry now edits the saved file.  Most people expect it to
+work like this.
+
+A buffer for a directory is no longer added to the Buffers menu.
+
+Renamed <Return> to <Enter>, since that's what it's called on most keyboards.
+Thus it's now the hit-enter prompt instead of the hit-return prompt.
+Can map <Enter> just like <CR> or <Return>.
+
+The default for the 'viminfo' option is now '20,"50,h when 'compatible' isn't
+set.  Most people will want to use it, including beginners, but it required
+setting the option, which isn't that easy.
+
+After using ":colder" the newer error lists are overwritten.  This makes it
+possible to use ":grep" to browse in a tree-like way.  Must use ":cnewer 99"
+to get the old behavior.
+
+The patterns in 'errorformat' would sometimes ignore case (MS-Windows) and
+sometimes not (Unix).  Now case is always ignored.  Add "\C" to the pattern to
+match case.
+
+The 16 bit MS-DOS version is now compiled without the +listcmds feature
+(buffer list manipulation commands).  They are not often needed and this
+executable needs to be smaller.
+
+'sessionoptions' now includes "curdir" by default.  This means that restoring
+a session will result in the current directory being restored, instead of
+going to the directory where the session file is located.
+
+A session deleted all buffers, deleting all marks.  Now keep the buffer list,
+it shouldn't hurt for some existing buffers to remain present.
+When the argument list is empty ":argdel *" caused an error message.
+
+No longer put the search pattern from a tag jump in the history.
+
+Use "SpecialKey" highlighting for unprintable characters instead of "NonText".
+The idea is that unprintable text or any text that's displayed differently
+from the characters in the file is using "SpecialKey", and "NonText" is used
+for text that doesn't really exist in the file.
+
+Motif now uses the system default colors for the menu and scrollbar.  Used to
+be grey.  It's still possible to set the colors with ":highlight" commands and
+resources.
+
+Formatting text with "gq" breaks a paragraph at a non-empty blank line.
+Previously the line would be removed, which wasn't very useful.
+
+":normal" does no longer hang when the argument ends in half a command.
+Previously Vim would wait for more characters to be typed, without updating
+the screen.  Now it pretends an <Esc> was typed.
+
+Bitmaps for the toolbar are no longer searched for in "$VIM/bitmaps" but in
+the "bitmaps" directories in 'runtimepath'.
+
+Now use the Cmdline-mode menus for the hit-enter prompt instead of the Normal
+mode menus.  This generally works better and allows using the "Copy" menu to
+produce CTRL-Y to copy the modeless selection.
+
+Moved the font selection from the Window to the Edit menu, together with the
+other settings.
+
+The default values for 'isfname' include more characters to make "gf" work
+better.
+
+Changed the license for the documentation to the Open Publication License.
+This seemed fair, considering the inclusion of parts of the Vim book, which is
+also published under the OPL.  The downside is that we can't force someone who
+would sell copies of the manual to contribute to Uganda.
+
+After  "ayy  don't let  ""yy  or  :let @" = val  overwrite the "a register.
+Use the unnamed register instead.
+
+MSDOS: A pattern "*.*" previously also matched a file name without a dot.
+This was inconsistent with other versions.
+
+In Insert mode, CTRL-O CTRL-\ CTRL-N {cmd} remains in Normal mode.  Previously
+it would go back to Insert mode, thus confusing the meaning of CTRL-\ CTRL-N,
+which is supposed to take us to Normal mode (especially in ":amenu").
+
+Allow using ":" commands after an operator.  Could be used to implement a new
+movement command.  Thus it no longer aborts a pending operator.
+
+For the Amiga the "-d {device}" argument was possible.  When compiled with the
+diff feature, this no longer works.  Use "-dev {device}" instead. |-dev|
+
+Made the default mappings for <S-Insert> in Insert mode insert the text
+literally, avoids that special characters like BS cause side effects.
+
+Using ":confirm" applied to the rest of the line.  Now it applies only to the
+command right after it.  Thus ":confirm if x | edit | endif" no longer works,
+use ":if x | confirm edit | endif".  This was the original intention, that it
+worked differently was a bug.
+
+==============================================================================
+NEW FEATURES						*new-6*
+
+Folding							*new-folding*
+-------
+
+Vim can now display a buffer with text folded.  This allows overviewing the
+structure of a file quickly.  It is also possible to yank, delete and put
+folded text, for example to move a function to another position.
+
+There is a whole bunch of new commands and options related to folding.
+See |folding|.
+
+
+Vertically split windows				*new-vertsplit*
+------------------------
+
+Windows can also be split vertically.  This makes it possible to have windows
+side by side.  One nice use for this is to compare two similar files (see
+|new-diff-mode|).  The 'scrollbind' option can be used to synchronize
+scrolling.
+
+A vertical split can be created with the commands:
+	:vsplit	  or  CTRL-W v  or CTRL-W CTRL-V	|:vsplit|
+	:vnew						|:vnew|
+	:vertical {cmd}					|:vertical|
+The last one is a modifier, which has a meaning for any command that splits a
+window.  For example: >
+	:vertical stag main
+Will vertically split the window and jump to the tag "main" in the new window.
+
+Moving from window to window horizontally can be done with the |CTRL-W_h| and
+|CTRL-W_l| commands.  The |CTRL-W_k| and |CTRL-W_j| commands have been changed
+to jump to the window above or below the cursor position.
+
+The vertical and horizontal splits can be mixed as you like.  Resizing windows
+is easy when using the mouse, just position the pointer on a status line or
+vertical separator and drag it.  In the GUI a special mouse pointer shape
+indicates where you can drag a status or separator line.
+
+To resize vertically split windows use the |CTRL-W_<| and |CTRL-W_>| commands.
+To make a window the maximum width use the CTRL-W | command |CTRL-W_bar|.
+
+To force a new window to use the full width or height of the Vim window,
+these two modifiers are available:
+	:topleft {cmd}		New window appears at the top with full
+				width or at the left with full height.
+	:botright {cmd}		New window appears at the bottom with full
+				width or at the right with full height.
+This can be combined with ":vertical" to force a vertical split: >
+	:vert bot dsplit DEBUG
+This will open a window at the far right, occupying the full height of the Vim
+window, with the cursor on the first definition of "DEBUG".
+The help window is opened at the top, like ":topleft" was used, if the current
+window is fewer than 80 characters wide.
+
+A few options can be used to set the preferences for vertically split windows.
+They work similar to their existing horizontal equivalents:
+	horizontal	vertical ~
+	'splitbelow'	'splitright'
+	'winheight'	'winwidth'
+	'winminheight'	'winminwidth'
+It's possible to set 'winminwidth' to zero, so that temporarily unused windows
+hardly take up space without closing them.
+
+The new 'eadirection' option tells where 'equalalways' applies:
+	:set eadirection=both		both directions
+	:set eadirection=ver		equalize window heights
+	:set eadirection=hor		equalize windows widths
+This can be used to avoid changing window sizes when you want to keep them.
+
+Since windows can become quite narrow with vertical splits, text lines will
+often not fit.  The 'sidescrolloff' has been added to keep some context left
+and right of the cursor.  The 'listchars' option has been extended with the
+"precedes" item, to show a "<" for example, when there is text left off the
+screen. (Utz-Uwe Haus)
+
+"-O" command line argument: Like "-o" but split windows vertically. (Scott
+Urban)
+
+Added commands to move the current window to the very top (CTRL-W K), bottom
+(CTRL-W J), left (CTRL-W H) and right (CTRL-W L).  In the new position the
+window uses the full width/height of the screen.
+
+When there is not enough room in the status line for both the file name and
+the ruler, use up to half the width for the ruler.  Useful for narrow windows.
+
+
+Diff mode						*new-diff-mode*
+---------
+
+In diff mode Vim shows the differences between two, three or four files.
+Folding is used to hide the parts of the file that are equal.
+Highlighting is used to show deleted and changed lines.
+See |diff-mode|.
+
+An easy way to start in diff mode is to start Vim as "vimdiff file1 file2".
+Added the vimdiff manpage.
+
+In a running Vim the |:diffsplit| command starts diff mode for the current
+file and another file.  The |:diffpatch| command starts diff mode using the
+current file and a patch file.  The |:diffthis| command starts diff mode for
+the current window.
+
+Differences can be removed with the |:diffget| and |:diffput| commands.
+
+- The 'diff' option switches diff mode on in a window.
+- The |:diffupdate| command refreshes the diffs.
+- The 'diffopt' option changes how diffs are displayed.
+- The 'diffexpr' option can be set how a diff is to be created.
+- The 'patchexpr' option can be set how patch is applied to a file.
+- Added the "diff" folding method.  When opening a window for diff-mode, set
+  'foldlevel' to zero and 'foldenable' on, to close the folds.
+- Added the DiffAdd, DiffChange, DiffDelete and DiffText highlight groups to
+  specify the highlighting for differences.  The defaults are ugly...
+- Unix: make a vimdiff symbolic link for "make install".
+- Removed the now obsolete "vimdiff.vim" script from the distribution.
+- Added the "[c" and "]c" commands to move to the next/previous change in diff
+  mode.
+
+
+Easy Vim: click-and-type				*new-evim*
+------------------------
+
+eVim stands for "Easy Vim".  This is a separate program, but can also be
+started as "vim -y".
+
+This starts Vim with 'insertmode' set to allow click-and-type editing.  The
+$VIMRUNTIME/evim.vim script is used to add mappings and set options to be able
+to do most things like Notepad.  This is only for people who can't stand two
+modes.
+
+eView does the same but in readonly mode.
+
+In the GUI a CTRL-C now only interrupts when busy with something, not when
+waiting for a character.  Allows using CTRL-C to copy text to the clipboard.
+
+
+User manual						*new-user-manual*
+-----------
+
+The user manual has been added.  It is organised around editing tasks.  It
+reads like a book, from start to end.  It should allow beginners to start
+learning Vim.  It helps everybody to learn using the most useful Vim features.
+It is much easier to read than the reference manual, but omits details.  See
+|user-manual|.
+
+The user manual includes parts of the Vim book by Steve Oualline |frombook|.
+It is published under the OPL |manual-copyright|.
+
+When syntax highlighting is not enabled, the characters in the help file which
+mark examples ('>' and '<') and header lines ('~') are replaced with a space.
+
+When closing the help window, the window layout is restored from before
+opening it, if the window layout didn't change since then.
+When opening the help window, put it at the top of the Vim window if the
+current window is fewer than 80 characters and not full width.
+
+
+Flexible indenting					*new-indent-flex*
+------------------
+
+Automatic indenting is now possible for any language.  It works with a Vim
+script, which makes it very flexible to compute the indent.
+
+The ":filetype indent on" command enables using the provided indent scripts.
+This is explained in the user manual: |30.3|.
+
+The 'indentexpr' option is evaluated to get the indent for a line.  The
+'indentkeys' option tells when to trigger re-indenting.  Normally these
+options are set from an indent script.  Like Syntax files, indent scripts will
+be created and maintained by many people.
+
+
+Extended search patterns				*new-searchpat*
+------------------------
+
+Added the possibility to match more than one line with a pattern. (partly by
+Loic Grenie)
+New items in a search pattern for multi-line matches:
+\n		match end-of-line, also in []
+\_[]		match characters in range and end-of-line
+\_x		match character class and end-of-line
+\_.		match any character or end-of-line
+\_^		match start-of-line, can be used anywhere in the regexp
+\_$		match end-of-line, can be used anywhere in the regexp
+
+Various other new items in search patterns:
+\c		ignore case for the whole pattern
+\C		match case for the whole pattern
+\m		magic on for the following
+\M		magic off for the following
+\v		make following characters "very magic"
+\V		make following characters "very nomagic"
+
+\@!		don't match atom before this.
+		Example: "foo\(bar\)\@!" matches "foo " but not "foobar".
+\@=		match atom, resulting in  zero-width match
+		Example: "foo\(bar\)\@=" matches "foo" in "foobar".
+\@<!		don't match preceding atom before the current position
+\@<=		match preceding atom before the current position
+\@>		match preceding atom as a subexpression
+
+\&		match only when branch before and after it match
+
+\%[]		optionally match a list of atoms; "end\%[if]" matches "end",
+		"endi" and "endif"
+\%(\)		like \(\), but without creating a back-reference; there can be
+		any number of these, overcomes the limit of nine \( \) pairs
+\%^		match start-of-file (Chase Tingley)
+\%$		match end-of-file (Chase Tingley)
+\%#		Match with the cursor position. (Chase Tingley)
+\?		Just like "\=" but can't be used in a "?" command.
+
+\%23l		match in line 23
+\%<23l		match before line 23
+\%>23l		match after line 23
+\%23c, \%<23c, \%>23c   match in/before/after column 23
+\%23v, \%<23v, \%>23v	match in/before/after virtual column 23
+
+
+For syntax items:
+\z(...\)	external reference match set (in region start pattern)
+\z1 - \z9	external reference match use (in region skip or end pattern)
+	(Scott Bigham)
+
+\zs		use position as start of match
+\ze		use position as end of match
+
+Removed limit of matching only up to 32767 times with *, \+, etc.
+
+Added support to match multi-byte characters. (partly by Muraoka Taro)
+Made "\<" and "\>" work for UTF-8. (Muraoka Taro)
+
+
+UTF-8 support						*new-utf-8*
+-------------
+
+Vim can now edit files in UTF-8 encoding.  Up to 31 bit characters can be
+used, but only 16 bit characters are displayed.  Up to two combining
+characters are supported, they overprint the preceding character.
+Double-wide characters are also supported.  See |UTF-8|.
+
+UCS-2, UCS-4 and UTF-16 encodings are supported too, they are converted to
+UTF-8 internally.  There is also support for editing Unicode files in a Latin1
+environment.  Other encodings are converted with iconv() or an external
+converter specified with 'charconvert'.
+
+Many new items for Multi-byte support:
+- Added 'encoding' option: specifies character encoding used inside Vim.  It
+  can be any 8-bit encoding, some double-byte encodings or Unicode.
+  It is initialized from the environment when a supported value is found.
+- Added 'fileencoding' and 'fileencodings': specify character coding in a
+  file, similar to 'fileformat' and 'fileformats'.
+  When 'encoding' is "utf-8" and 'fileencodings' is "utf-8,latin1" this will
+  automatically switch to latin1 if a file does not contain valid UTF-8.
+- Added 'bomb' option and detection of a BOM at the start of a file.  Can be
+  used with "ucs-bom" in 'fileencodings' to automatically detect a Unicode
+  file if it starts with a BOM.  Especially useful on MS-Windows (NT and
+  2000), which uses ucs-2le files with a BOM (e.g., when exporting the
+  registry).
+- Added the 'termencoding' option: Specifies the encoding used for the
+  terminal.  Useful to put Vim in utf-8 mode while in a non-Unicode locale: >
+    :let &termencoding = &encoding
+    :set encoding=utf-8
+- When 'viminfo' contains the 'c' flag, the viminfo file is converted from the
+  'encoding' it was written with to the current 'encoding'.
+- Added ":scriptencoding" command: convert lines in a sourced script to
+  'encoding'.  Useful for menu files.
+- Added 'guifontwide' to specify a font for double-wide characters.
+- Added Korean support for character class detection.  Also fix cls() in
+  search.c. (Chong-Dae Park)
+- Win32: Typing multi-byte characters without IME. (Alexander Smishlajev)
+- Win32 with Mingw: compile with iconv library. (Ron Aaron)
+- Win32 with MSVC: dynamically load iconv.dll library. (Muraoka Taro)
+- Make it possible to build a version with multi-byte and iconv support with
+  Borland 5.5.  (Yasuhiro Matsumoto)
+- Added 'delcombine' option: Delete combining character separately. (Ron
+  Aaron)
+- The "xfontset" feature isn't required for "xim".  These are now two
+  independent features.
+- XIM: enable XIM when typing a language character (Insert mode, Search
+  pattern, "f" or "r" command).  Disable XIM when typing a Normal mode
+  command.
+- When the XIM is active, show "XIM" in the 'showmode' message. (Nam SungHyun)
+- Support "CursorIM" for XIM.  (Nam SungHyun)
+- Added 'm' flag to 'formatoptions': When wrapping words, allow splitting at
+  each multibyte character, not only at a space.
+- Made ":syntax keyword" work with multi-byte characters.
+- Added support for Unicode upper/lowercase flipping and comparing. (based on
+  patch by Raphael Finkel)
+  Let "~" on multi-byte characters that have a third case ("title case")
+  switch between the three cases. (Raphael Finkel)
+
+Allow defining digraphs for multi-byte characters.
+Added RFC1345 digraphs for Unicode.
+Most Normal mode commands that accept a character argument, like "r", "t" and
+"f" now accept a digraph.  The 'D' flag in 'cpoptions' disables this to remain
+Vi compatible.
+
+Added Language mapping and 'keymap' to be able to type multi-byte characters:
+- Added the ":lmap" command and friends: Define mappings that are used when
+  typing characters in the language of the text.  Also for "r", "t", etc.  In
+  Insert and Command-line mode CTRL-^ switches the use of the mappings on/off.
+  CTRL-^ also toggles the use of an input method when no language mappings are
+  present.  Allows switching the IM back on halfway typing.
+- "<char-123>" argument to ":map", allows to specify the decimal, octal or
+  hexadecimal value of a character.
+- Implemented the 'keymap' option: Load a keymap file.  Uses ":lnoremap" to
+  define mappings for the keymap.  The new ":loadkeymap" command is used in
+  the keymap file.
+- Added 'k' flag in 'statusline': Value of "b:keymap_name" or 'keymap' when
+  it's being used.  Uses "<lang>" when no keymap is loaded and ":lmap"s are
+  active.  Show this text in the default statusline too.
+- Added the 'iminsert' and 'imsearch' options: Specify use of langmap mappings
+  and Input Method with an option. (Muraoka Taro)
+  Added 'imcmdline' option: When set the input method is always enabled when
+  starting to edit a command line.  Useful for a XIM that uses dead keys to
+  type accented characters.
+  Added 'imactivatekey' option to better control XIM.  (Muraoka Taro)
+- When typing a mapping that's not finished yet, display the last character
+  under the cursor in Insert mode and Command-line mode.  Looks good for dead
+  characters.
+- Made the 'langmap' option recognize multi-byte characters.  But mapping only
+  works for 8-bit characters.  Helps when using UTF-8.
+- Use a different cursor for when ":lmap" mappings are active.  Can specify
+  two highlight groups for an item in 'guicursor'.  By default "lCursor" and
+  "Cursor" are equal, the user must set a color he likes.
+  Use the cursor color for hangul input as well. (Sung-Hyun Nam)
+- Show "(lang)" for 'showmode' when language mapping is enabled.
+- UTF-8: Made "r" work with a ":lmap" that includes a composing character.
+  Also works for "f", which now works to find a character that includes a
+  composing character.
+
+Other multi-byte character additions:
+- Support double-byte single-width characters for euc-jp: Characters starting
+  with 0x8E.  Added ScreenLines2[] to store the second byte.
+
+
+Multi-language support					*new-multi-lang*
+----------------------
+
+The messages used in Vim can be translated.  Several translations are
+available.  This uses the gettext mechanism.  It allows adding a translation
+without recompiling Vim.  |multi-lang| (partly by Marcin Dalecki)
+
+The translation files are in the src/po directory.  The src/po/README.txt file
+explains a few things about doing a translation.
+
+Menu translations are available as well.  This uses the new |:menutranslate|
+command.  The translations are found in the runtime directory "lang".  This
+allows a user to add a translation.
+
+Added |:language| command to set the language (locale) for messages, time and
+character type.  This allows switching languages in Vim without changing the
+locale outside of Vim.
+
+Made it possible to have vimtutor use different languages.  (Eduardo Fernandez)
+Spanish (Eduardo Fernandez), Italian (Antonio Colombo), Japanese (Yasuhiro
+Matsumoto) and French (Adrien Beau) translations are included.
+Added "vimtutor.bat": script to start Vim on a copy of the tutor file for
+MS-Windows. (Dan Sharp)
+
+- Added v:lang variable to be able to get current language setting.
+  (Marcin Dalecki)  Also v:lc_time and v:ctype.
+- Make it possible to translate the dialogs used by the menus.  Uses global
+  "menutrans_" variables.  ":menutrans clear" deletes them.
+- removed "broken locale" (Marcin Dalecki).
+- Don't use color names in icons, use RGB values.  The names could be
+  translated.
+- Win32: Added global IME support (Muraoka)
+- Win32: Added dynamic loading of IME support.
+- ":messages" prints a message about who maintains the messages or the
+  translations.  Useful to find out where to make a remark about a wrong
+  translation.
+- --disable-nls argument for configure: Disable use of gettext(). (Sung-Hyun
+  Nam)
+- Added NLS support for Win32 with the MingW compiler. (Eduardo Fernandez)
+- When available, call bind_textdomain_codeset() to have gettext() translate
+  messages to 'encoding'.  This requires GNU gettext 0.10.36 or later.
+- Added gettext support for Win32.  This means messages will be translated
+  when the locale is set and libintl.dll can be found.  (Muraoka Taro)
+  Also made it work with MingW compiler.  (Eduardo Fernandez)
+  Detect the language and set $LANG to get the appropriate translated messages
+  (if supported).  Also use $LANG to select a language, v:lang is a very
+  different kind of name.
+- Made gvimext.dll use translated messages, if possible. (Yasuhiro Matsumoto)
+
+
+Plugin support					*new-plugins*
+--------------
+
+To make it really easy to load a Vim script when starting Vim, the "plugin"
+runtime directory can be used.  All "*.vim" files in it will be automatically
+loaded.  For Unix, the directory "~/.vim/plugin" is used by default.  The
+'runtimepath' option can be set to look in other directories for plugins.
+|load-plugins| |add-plugin|
+
+The |:runtime| command has been added to load one or more files in
+'runtimepath'.
+
+Standard plugins:
+netrw.vim - Edit files over a network |new-network-files|
+gzip.vim - Edit compressed files
+explorer.vim - Browse directories |new-file-browser|
+
+Added support for local help files. |add-local-help|.
+When searching for help tags, all "doc/tags" files in 'runtimepath' are used.
+Added the ":helptags" command: Generate a tags file for a help directory.
+The first line of each help file is automagically added to the "LOCAL
+ADDITIONS" section in doc/help.txt.
+
+Added the <unique> argument to ":map": only add a mapping when it wasn't
+defined before.
+
+When displaying an option value with 'verbose' set will give a message about
+where the option was last set.  Very useful to find out which script did set
+the value.
+
+The new |:scriptnames| command displays a list of all scripts that have been
+sourced.
+
+GUI: For Athena, Motif and GTK look for a toolbar bitmap in the "bitmaps"
+directories in 'runtimepath'.  Allows adding your own bitmaps.
+
+
+Filetype plugins				*new-filetype-plugins*
+-----------------
+
+A new group of files has been added to do settings for specific file types.
+These can be options and mappings which are specifically used for one value of
+'filetype'.
+
+The files are located in "$VIMRUNTIME/ftplugin".  The 'runtimepath' option
+makes it possible to use several sets of plugins: Your own, system-wide,
+included in the Vim distribution, etc.
+
+To be able to make this work, several features were added:
+- Added the "s:" variables, local to a script.  Avoids name conflicts with
+  global variables.  They can be used in the script and in functions,
+  autocommands and user commands defined in the script.  They are kept between
+  invocations of the same script.  |s:var|
+- Added the global value for local options.  This value is used when opening
+  a new buffer or editing another file.  The option value specified in a
+  modeline or filetype setting is not carried over to another buffer.
+  ":set" sets both the local and the global value.
+  ":setlocal" sets the local option value only.
+  ":setglobal" sets or displays the global value for a local option.
+  ":setlocal name<" sets a local option to its global value.
+- Added the buffer-local value for some global options: 'equalprg', 'makeprg',
+  'errorformat', 'grepprg', 'path', 'dictionary', 'thesaurus', 'tags',
+  'include' and 'define'.  This allows setting a local value for these global
+  options, without making it incompatible.
+- Added mappings and abbreviations local to a buffer: ":map <buffer>".
+- In a mapping "<Leader>" can be used to get the value of the "mapleader"
+  variable.  This simplifies mappings that use "mapleader".  "<Leader>"
+  defaults to "\".  "<LocalLeader>" does the same with "maplocalleader".  This
+  is to be used for mappings local to a buffer.
+- Added <SID> Script ID to define functions and mappings local to a script.
+- Added <script> argument to ":noremap" and ":noremenu": Only remap
+  script-local mappings.  Avoids that mappings from other scripts get in the
+  way, but does allow using mappings defined in the script.
+- User commands can be local to a buffer: ":command -buffer".
+
+The new ":setfiletype" command is used in the filetype detection autocommands,
+to avoid that 'filetype' is set twice.
+
+
+File browser						*new-file-browser*
+------------
+
+When editing a directory, the explorer plugin will list the files in the
+directory.  Pressing <Enter> on a file name edits that file.  Pressing <Enter>
+on a directory moves the browser to that directory.
+
+There are several other possibilities, such as opening a file in the preview
+window, renaming files and deleting files.
+
+See |file-explorer|.
+
+
+Editing files over a network				*new-network-files*
+----------------------------
+
+Files starting with scp://, rcp://, ftp:// and http:// are recognized as
+remote files.  An attempt is made to access these files with the indicated
+method.  For http:// only reading is possible, for the others writing is also
+supported.  Uses the netrw.vim script as a standard "plugin". |netrw|
+
+Made "gf" work on a URL.  It no longer assumes the file is local on the
+computer (mostly didn't work anyway, because the full path was required).
+Adjusted test2 for this.
+
+Allow using a URL in 'path'.  Makes ":find index.html" work.
+
+GTK: Allow dropping a http:// and ftp:// URL on Vim.  The netrw plugin takes
+care of downloading the file. (MiKael Berthe)
+
+
+Window for command-line editing				*new-cmdwin*
+-------------------------------
+
+The Command-line window can be used to edit a command-line with Normal and
+Insert mode commands.  When it is opened it contains the history.  This allows
+copying parts of previous command lines. |cmdwin|
+
+The command-line window can be opened from the command-line with the key
+specified by the 'cedit' option (like Nvi).  It can also be opened directly
+from Normal mode with "q:", "q/" and "q?".
+
+The 'cmdwinheight' is used to specify the initial height of the window.
+
+In Insert mode CTRL-X CTRL-V can be used to complete an Ex command line, like
+it's done on the command-line.  This is also useful for writing Vim scripts!
+
+Additionally, there is "improved Ex mode".  Entered when Vim is started as
+"exim" or "vim -E", and with the "gQ" command.  Works like repeated use of
+":", with full command-line editing and completion. (Ulf Carlsson)
+
+
+Debugging mode						*new-debug-mode*
+--------------
+
+In debugging mode sourced scripts and user functions can be executed line by
+line.  There are commands to step over a command or step into it. |debug-mode|
+
+Breakpoints can be set to run until a certain line in a script or user
+function is executed. |:breakadd|
+
+Debugging can be started with ":debug {cmd}" to debug what happens when a
+command executes.  The |-D| argument can be used to debug while starting up.
+
+
+Cursor in virtual position				*new-virtedit*
+--------------------------
+
+Added the 'virtualedit' option: Allow positioning the cursor where there is no
+actual character in Insert mode, Visual mode or always. (Matthias Kramm)
+This is especially useful in Visual-block mode.  It allows positioning a
+corner of the area where there is no text character.  (Many improvements by
+Chase Tingley)
+
+
+Debugger interface					*new-debug-itf*
+------------------
+
+This was originally made to work with Sun Visual Workshop. (Gordon Prieur)
+See |debugger.txt|, |sign.txt| and |workshop.txt|.
+
+Added the ":sign" command to define and place signs.  They can be displayed
+with two ASCII characters or an icon.  The line after it can be highlighted.
+Useful to display breakpoints and the current PC position.
+
+Added the |:wsverb| command to execute debugger commands.
+
+Added balloon stuff: 'balloondelay' and 'ballooneval' options.
+
+Added "icon=" argument for ":menu".  Allows defining a specific icon for a
+ToolBar item.
+
+
+Communication between Vims				*new-vim-server*
+--------------------------
+
+Added communication between two Vims.  Makes it possible to send commands from
+one Vim to another.  Works for X-Windows and MS-Windows |clientserver|.
+
+Use "--remote" to have files be edited in an already running Vim.
+Use "--remote-wait" to do the same and wait for the editing to finish.
+Use "--remote-send" to send commands from one Vim to another.
+Use "--remote-expr" to have an expression evaluated in another Vim.
+Use "--serverlist" to list the currently available Vim servers. (X only)
+There are also functions to communicate between the server and the client.
+|remote_send()| |remote_expr()|
+
+(X-windows version implemented by Flemming Madsen, MS-Windows version by Paul
+Moore)
+
+Added the command server name to the window title, so you can see which server
+name belongs to which Vim.
+
+Removed the OleVim directory and SendToVim.exe and EditWithVim.exe from the
+distribution.  Can now use "gvim --remote" and "gvim --remote-send", which is
+portable.
+
+GTK+: Support running Vim inside another window.  Uses the --socketid argument
+(Neil Bird)
+
+
+Buffer type options					*new-buftype*
+-------------------
+
+The 'buftype' and 'bufhidden' options have been added.  They can be set to
+have different kinds of buffers.  For example:
+- 'buftype' = "quickfix": buffer with error list
+- 'buftype' = "nofile" and 'bufhidden' = "delete": scratch buffer that will be
+  deleted as soon as there is no window displaying it.
+
+'bufhidden' can be used to overrule the 'hidden' option for one buffer.
+
+In combination with 'buflisted' and 'swapfile' this offers the possibility to
+use various kinds of special buffers.  See |special-buffers|.
+
+
+Printing						*new-printing*
+--------
+
+Included first implementation of the ":hardcopy" command for printing
+to paper.  For MS-Windows any installed printer can be used.  For other
+systems a PostScript file is generated, which can be printed with the
+'printexpr' option.
+(MS-Windows part by Vince Negri, Vipin Aravind, PostScript by Vince Negri and
+Mike Williams)
+
+Made ":hardcopy" work with multi-byte characters. (Muraoka Taro, Yasuhiro
+Matsumoto)
+
+Added options to tune the way printing works: (Vince Negri)
+- 'printoptions' defines various things.
+- 'printheader' specifies the header format.  Added "N" field to 'statusline'
+  for the page number.
+- 'printfont' specifies the font name and attributes.
+- 'printdevice' defines the default printer for ":hardcopy!".
+
+
+Ports							*ports-6*
+-----
+
+Port to OS/390 Unix (Ralf Schandl)
+- A lot of changes to handle EBCDIC encoding.
+- Changed Ctrl('x') to Ctrl_x define.
+
+Included jsbmouse support. (Darren Garth)
+Support for dec mouse in Unix. (Steve Wall)
+
+Port to 16-bit MS Windows (Windows 3.1x) (Vince Negri)
+
+Port to QNX.  Supports the Photon GUI, mouse, etc. (Julian Kinraid)
+
+Allow cross-compiling the Win32 version with Make_ming.mak. (Ron Aaron)
+Added Python support for compiling with Mingw. (Ron Aaron)
+
+Dos 32 bit: Added support the Windows clipboard. (David Kotchan)
+
+Win32: Dynamically load Perl and Python.  Allows compiling Vim with these
+interfaces and will try to find the DLLs at runtime. (Muraoka Taro)
+
+Compiling the Win32 GUI with Cygwin.  Also compile vimrun, dosinst and
+uninstall.  (Gerfried)
+
+Mac: Make Vim compile with the free MPW compiler supplied by Apple.  And
+updates for CodeWarrior. (Axel Kielhorn)
+
+Added typecasts and ifdefs as a start to make Vim work on Win64 (George
+Reilly)
+
+
+Quickfix extended					*quickfix-6*
+-----------------
+
+Added the "error window".  It contains all the errors of the current error
+list.  Pressing <Enter> in a line makes Vim jump to that line (in another
+window).  This makes it easy to navigate through the error list.
+|quickfix-window|.
+
+- |:copen| opens the quickfix window.
+- |:cclose| closes the quickfix window.
+- |:cwindow| takes care that there is a quickfix window only when there are
+  recognized errors. (Dan Sharp)
+
+- Quickfix also knows "info", next to "warning" and "error" types. "%I" can be
+  used for the start of a multi-line informational message. (Tony Leneis)
+- The "%p" argument can be used in 'errorformat' to get the column number from
+  a line where "^" points to the column. (Stefan Roemer)
+- When using "%f" in 'errorformat' on a DOS/Windows system, also include "c:"
+  in the filename, even when using "%f:".
+
+
+Operator modifiers					*new-operator-mod*
+------------------
+
+Insert "v", "V" or CTRL-V between an operator and a motion command to force
+the operator to work characterwise, linewise or blockwise. |o_v|
+
+
+Search Path						*new-search-path*
+-----------
+
+Vim can search in a directory tree not only in downwards but also upwards.
+Works for the 'path', 'cdpath' and 'tags' options. (Ralf Schandl)
+
+Also use "**" for 'tags' option. (Ralf Schandl)
+
+Added 'includeexpr', can be used to modify file name found by 'include'
+option.
+Also use 'includeexpr' for "gf" and "<cfile>" when the file can't be found
+without modification.  Useful for doing "gf" on the name after an include or
+import statement.
+
+Added the 'cdpath' option: Locations to find a ":cd" argument. (Raf)
+
+Added the 'suffixesadd' option: Suffixes to be added to a file name when
+searching for a file for the "gf", "[I", etc. commands.
+
+
+Writing files improved					*new-file-writing*
+----------------------
+
+Added the 'backupcopy' option: Select whether a file is to be copied or
+renamed to make a backup file.  Useful on Unix to speed up writing an ordinary
+file.  Useful on other systems to preserve file attributes and when editing a
+file on a Unix filesystem.
+
+Added the 'autowriteall' option.  Works like 'autowrite' but for more
+commands.
+
+Added the 'backupskip' option: A list of file patterns to skip making a backup
+file when it matches.  The default for Unix includes "/tmp/*", this makes
+"crontab -e" work.
+
+Added support for Access Control Lists (ACL) for FreeBSD and Win32.  The ACL
+is copied from the original file to the new file (or the backup if it's
+copied).
+ACL is also supported for AIX, Solaris and generic POSIX. (Tomas Ogren)
+And on SGI.
+
+
+Argument list						*new-argument-list*
+-------------
+
+The support for the argument list has been extended.  It can now be
+manipulated to contain the files you want it to contain.
+
+The argument list can now be local to a window.  It is created with the
+|:arglocal| command.  The |:argglobal| command can be used to go back to the
+global argument list.
+
+The |:argdo| command executes a command on all files in the argument list.
+
+File names can be added to the argument list with |:argadd|.  File names can
+be removed with |:argdelete|.
+
+"##" can be used like "#", it is replaced by all the names in the argument
+list concatenated.  Useful for ":grep foo ##".
+
+The |:argedit| adds a file to the argument list and edits it.  Like ":argadd"
+and then ":edit".
+
+
+Restore a View						*new-View*
+--------------
+
+The ":mkview" command writes a Vim script with the settings and mappings for
+one window.  When the created file is sourced, the view of the window is
+restored.  It's like ":mksession" for one window.
+The View also contains the local argument list and manually created, opened
+and closed folds.
+
+Added the ":loadview" command and the 'viewdir' option: Allows for saving and
+restoring views of a file with simple commands. ":mkview 1" saves view 1 for
+the current file, ":loadview 1" loads it again.  Also allows quickly switching
+between two views on one file.  And saving and restoring manual folds and the
+folding state.
+
+Added 'viewoptions' to specify how ":mkview" works.
+
+":mksession" now also works fine with vertical splits.  It has been further
+improved and restores the view of each window.  It also works properly with
+preview and quickfix windows.
+
+'sessionoptions' is used for ":mkview" as well.
+Added "curdir" and "sesdir" to 'sessionoptions'.  Allows selection of what
+the current directory will be restored to.
+
+The session file now also contains the argument list(s).
+
+
+Color schemes						*new-color-schemes*
+-------------
+
+Support for loading a color scheme.  Added the ":colorscheme" command.
+Automatically add menu entries for available schemes.
+Should now properly reset the colors when 'background' or 't_Co' is changed.
+":highlight clear" sets the default colors again.
+":syntax reset" sets the syntax highlight colors back to the defaults.
+For ":set bg&" guess the value.  This allows a color scheme to switch back to
+the default colors.
+When syntax highlighting is switched on and a color scheme was defined, reload
+the color scheme to define the colors.
+
+
+Various new items					*new-items-6*
+-----------------
+
+Normal mode commands: ~
+
+"gi"		Jump to the ^ mark and start Insert mode.  Also works when the
+		mark is just after the line. |gi|
+
+"g'm" and "g`m"
+		Jump to a mark without changing the jumplist.  Now you can use
+		g`" to jump to the last known position in a file without side
+		effects.  Also useful in mappings.
+
+[', [`, ]' and ]`
+		move the cursor to the next/previous lowercase mark.
+
+g_		Go to last non-blank in line. (Steve Wall)
+
+
+Options: ~
+
+'autoread'	When detected that a file changed outside of Vim,
+		automatically read a buffer again when it's not changed.
+		It has a global and a local value.  Use ":setlocal autoread<"
+		to go back to using the global value for 'autoread'.
+
+'debug'		When set to "msg" it will print error messages that would
+		otherwise be omitted.  Useful for debugging 'indentexpr' and
+		'foldexpr'.
+
+'lispwords'	List of words used for lisp indenting.  It was previously hard
+		coded.  Added a number of Lisp names to the default.
+
+'fold...'	Many new options for folding.
+
+'modifiable'	When off, it is impossible to make changes to a buffer.
+		The %m and %M items in 'statusline' show a '-'.
+
+'previewwindow' Set in the preview window.  Used in a session file to mark a
+		window as the preview window.
+
+'printfont'
+'printexpr'
+'printheader'
+'printdevice'
+'printoptions'	for ":hardcopy".
+
+'buflisted'	Makes a buffer appear in the buffer list or not.
+
+Use "vim{version}:" for modelines, only to be executed when the version is
+>= {version}.  Also "vim>{version}", "vim<{version}" and "vim={version}".
+
+
+Ex commands: ~
+
+:sav[eas][!] {file}
+		Works like ":w file" and ":e #", but without loading the file
+		again and avoiding other side effects. |:saveas|
+
+:silent[!] {cmd}
+		Execute a command silently.  Also don't use a delay that would
+		come after the message.  And don't do 'showmatch'.
+		RISCOS: Removed that "!~cmd" didn't output anything, and
+		didn't wait for <Enter> afterwards.  Can use ":silent !cmd"
+		now.
+:menu <silent>  Add a menu that won't echo Ex commands.
+:map <silent>   Add a mapping that won't echo Ex commands.
+
+:checktime	Check for changed buffers.
+
+:verbose {cmd}  Set 'verbose' for one command.
+
+:echomsg {expr}
+:echoerr {expr} Like ":echo" but store the message in the history. (Mark
+		Waggoner)
+
+:grepadd	Works just like ":grep" but adds to the current error list
+		instead of defining a new list. |:grepadd|
+
+:finish		Finish sourcing a file.  Can be used to skip the rest of a Vim
+		script. |:finish|
+
+:leftabove
+:aboveleft	Split left/above current window.
+
+:rightbelow
+:belowright	Split right/below current window.
+
+:first, :bfirst, :ptfirst, etc.
+		Alias for ":rewind".  It's more logical compared to ":last".
+
+:enew		Edit a new, unnamed buffer.  This is needed, because ":edit"
+		re-edits the same file. (Wall)
+
+:quitall	Same as ":qall".
+
+:match		Define match highlighting local to a window.  Allows
+		highlighting an item in the current window without interfering
+		with syntax highlighting.
+
+:menu enable
+:menu disable	Commands to enable/disable menu entries without removing them.
+		(Monish Shah)
+
+:windo		Execute a command in all windows.
+:bufdo		Execute a command in all buffers.
+
+:wincmd		Window (CTRL-W) command.  Useful when a Normal mode command
+		can't be used (e.g., for a CursorHold autocommand).  See
+		|CursorHold-example| for a nice application with it.
+
+:lcd and :lchdir
+		Set local directory for a window. (Benjie Chen)
+
+:hide {command}
+		Execute {command} with 'hidden' set.
+
+:emenu		in Visual mode to execute a ":vmenu" entry.
+
+:popup		Pop up a popup menu.
+
+:redraw		Redraw the screen even when busy with a script or function.
+
+:hardcopy	Print to paper.
+
+:compiler	Load a Vim script to do settings for a specific compiler.
+
+:z#		List numbered lines. (Bohdan Vlasyuk)
+
+
+New marks: ~
+
+'( and ')	Begin or end of current sentence.  Useful in Ex commands.
+'{ and '}	Begin or end of current paragraph.  Useful in Ex commands.
+'.		Position of the last change in the current buffer.
+'^		Position where Insert mode was stopped.
+
+Store the ^ and . marks in the viminfo file.  Makes it possible to jump to the
+last insert position or changed text.
+
+
+New functions: ~
+argidx()	Current index in argument list.
+buflisted()	Checks if the buffer exists and has 'buflisted' set.
+cindent()	Get indent according to 'cindent'.
+eventhandler()	Returns 1 when inside an event handler and interactive
+		commands can't be used.
+executable()	Checks if a program or batch script can be executed.
+filewritable()	Checks if a file can be written. (Ron Aaron)
+foldclosed()	Find out if there is a closed fold. (Johannes Zellner).
+foldcloseend()	Find the end of a closed fold.
+foldlevel()	Find out the foldlevel. (Johannes Zellner)
+foreground()	Move the GUI window to the foreground.
+getchar()	Get one character from the user.  Can be used to define a
+		mapping that takes an argument.
+getcharmod()	Get last used key modifier.
+getbufvar()	gets the value of an option or local variable in a buffer (Ron
+		Aaron)
+getfsize()	Return the size of a file.
+getwinvar()	gets the value of an option or local variable in a window (Ron
+		Aaron)
+globpath()	Find matching files in a list of directories.
+hasmapto()	Detect if a mapping to a string is already present.
+iconv()		Convert a string from one encoding to another.
+indent()	gets the indent of a line (Ron Aaron)
+inputdialog()	Like input() but use a GUI dialog when possible.  Currently
+		only works for Win32, Motif, Athena and GTK.
+		Use inputdialog() for the Edit/Settings/Text Width menu.  Also
+		for the Help/Find.. and Toolbar FindHelp items.
+		(Win32 support by Thore B. Karlsen)
+		(Win16 support by Vince Negri)
+inputsecret()	Ask the user to type a string without showing the typed keys.
+		(Charles Campbell)
+libcall()	for Unix (Neil Bird, Johannes Zellner, Stephen Wall)
+libcallnr()	for Win32 and Unix
+lispindent()	Get indent according to 'lisp'.
+mode()		Return a string that indicates the current mode.
+nextnonblank()	Skip blank lines forwards.
+prevnonblank()	Skip blank lines backwards.  Useful to for indent scripts.
+resolve()	MS-Windows: resolve a shortcut to the file it points to.
+		Unix: resolve a symbolic link.
+search()	Search for a pattern.
+searchpair()	Search for matching pair.  Can be used in indent files to find
+		the "if" matching an endif.
+setbufvar()	sets an option or variable local to a buffer (Ron Aaron)
+setwinvar()	sets an option or variable local to a window (Ron Aaron)
+stridx()	Search for first occurrence of one string in another.
+strridx()	Search for last occurrence of one string in another.
+tolower()	Convert string to all-lowercase.
+toupper()	Convert string to all-uppercase.
+type()		Check the type of an expression.
+wincol()	window column of the cursor
+winwidth()	Width of a window. (Johannes Zellner)
+winline()	window line of the cursor
+
+
+Added expansion of curly braces in variable and function names.  This can be
+used for variable names that include the value of an option.  Or a primitive
+form of arrays. (Vince Negri)
+
+
+New autocommand events: ~
+BufWinEnter	Triggered when a buffer is displayed in a window, after using
+		the modelines.  Can be used to load a view.
+BufWinLeave	Triggered when a buffer is no longer in a window.  Also
+		triggered when exiting Vim.  Can be used to save views.
+FileChangedRO	Triggered before making the first change to a read-only file.
+		Can be used to check-out the file. (Scott Graham)
+TermResponse	Triggered when the terminal replies to the version-request.
+		The v:termresponse internal variable holds the result.  Can be
+		used to react to the version of the terminal.  (Ronald Schild)
+FileReadCmd	Triggered before reading a file.
+BufReadCmd	Triggered before reading a file into a buffer.
+FileWriteCmd	Triggered before writing a file.
+BufWriteCmd	Triggered before writing a buffer into a file.
+FileAppendCmd	Triggered before appending to a file.
+FuncUndefined	Triggered when a user function is not defined. (Ron Aaron)
+
+The autocommands for the *Cmd events read or write the file instead of normal
+file read/write.  Use this in netrw.vim to be able to edit files on a remote
+system. (Charles Campbell)
+
+
+New Syntax files: ~
+
+bdf		BDF font definition (Nikolai Weibull)
+catalog		SGML catalog (Johannes Zellner)
+debchangelog	Debian Changelog (Wichert Akkerman)
+debcontrol	Debian Control (Wichert Akkerman)
+dot		dot (Markus Mottl)
+dsl		DSSSL syntax (Johannes Zellner)
+eterm		Eterm configuration (Nikolai Weibull)
+indent		Indent profile (Nikolai Weibull)
+lftp		LFTP (Nikolai Weibull)
+lynx		Lynx config (Doug Kearns)
+mush		mush sourcecode (Bek Oberin)
+natural		Natural (Marko Leipert)
+pilrc		Pal resource compiler (Brian Schau)
+plm		PL/M (Philippe Coulonges)
+povini		Povray configuration (David Necas)
+ratpoison	Ratpoison config/command (Doug Kearns)
+readline	readline config (Nikolai Weibull)
+screen		Screen RC (Nikolai Weibull)
+specman		Specman (Or Freund)
+sqlforms	SQL*Forms (Austin Ziegler)
+terminfo	terminfo (Nikolai Weibull)
+tidy		Tidy configuration (Doug Kearns)
+wget		Wget configuration (Doug Kearns)
+
+
+Updated many syntax files to work both with Vim 5.7 and 6.0.
+
+Interface to Ruby. (Shugo Maeda)
+Support dynamic loading of the Ruby interface on MS-Windows. (Muraoka Taro)
+Support this for Mingw too. (Benoit Cerrina)
+
+Win32: Added possibility to load TCL dynamically. (Muraoka Taro)
+Also for Borland 5.5. (Dan Sharp)
+
+Win32: When editing a file that is a shortcut (*.lnk file), edit the file it
+links to.  Unless 'binary' is set, then edit the shortcut file itself.
+(Yasuhiro Matsumoto)
+
+The ":command" command now accepts a "-bar" argument.  This allows the user
+command to be followed by "| command".
+
+The preview window is now also used by these commands:
+- |:pedit| edits the specified file in the preview window
+- |:psearch| searches for a word in included files, like |:ijump|, and
+  displays the found text in the preview window.
+Added the CTRL-W P command: go to preview window.
+
+MS-DOS and MS-Windows also read the system-wide vimrc file $VIM/vimrc.  Mostly
+for NT systems with multiple users.
+
+A double-click of the mouse on a character that has a "%" match selects from
+that character to the match.  Similar to "v%".
+
+"-S session.vim" argument: Source a script file when starting up.  Convenient
+way to start Vim with a session file.
+
+Added "--cmd {command}" Vim argument to execute a command before a vimrc file
+is loaded. (Vince Negri)
+
+Added the "-M" Vim argument: reset 'modifiable' and 'write', thus disallow
+making changes and writing files.
+
+Added runtime/delmenu.vim.  Source this to remove all menus and prepare for
+loading new menus.  Useful when changing 'langmenu'.
+
+Perl script to filter Perl error messages to quickfix usable format. (Joerg
+Ziefle)
+
+Added runtime/macros/less.vim: Vim script to simulate less, but with syntax
+highlighting.
+
+MS-Windows install program: (Jon Merz)
+- The Win32 program can now create shortcuts on the desktop and install Vim in
+  the Start menu.
+- Possibly remove old "Edit with Vim" entries.
+- The Vim executable is never moved or $PATH changed.  A small batch file is
+  created in a directory in $PATH.  Fewer choices to be made.
+- Detect already installed Vim versions and offer to uninstall them first.
+
+Improved the MS-Windows uninstal program.  It now also deletes the entries in
+the Start menu, icons from the desktop and the created batch files. (Jon Merz)
+Also made it possible to delete only some of these.  Also unregister gvim for
+OLE.
+
+Generate a self-installing Vim package for MS-Windows.  This uses NSIS. (Jon
+Merz et al.)
+
+Added ":filetype detect".  Try detecting the filetype again.  Helps when
+writing a new shell script, after adding "#!/bin/csh".
+
+Added ":augroup! name" to delete an autocommand group.  Needed for the
+client-server "--remote-wait".
+
+Add the Vim version number to the viminfo file, useful for debugging.
+
+==============================================================================
+IMPROVEMENTS						*improvements-6*
+
+Added the 'n' flag in 'cpoptions': When omitted text of wrapped lines is not
+put between line numbers from 'number' option.  Makes it a lot easier to read
+wrapped lines.
+
+When there is a format error in a tags file, the byte position is reported so
+that the error can be located.
+
+"gf" works in Visual mode: Use the selected text as the file name. (Chase
+Tingley)
+
+Allow ambiguous mappings.  Thus "aa" and "aaa" can both be mapped, the longest
+matching one is used.  Especially useful for ":lmap" and 'keymap'.
+
+Encryption: Ask the key to be typed twice when crypting the first time.
+Otherwise a typo might cause the text to be lost forever. (Chase Tingley)
+
+The window title now has "VIM" on the end.  The file name comes first, useful
+in the taskbar.  A "+" is added when the file is modified.  "=" is added for
+a read-only file.  "-" is added for a file with 'modifiable' off.
+
+In Visual mode, mention the size of the selected area in the 'showcmd'
+position.
+
+Added the "b:changedtick" variable.  Incremented at each change, also for
+undo.  Can be used to take action only if the buffer has been changed.
+
+In the replacement string of a ":s" command "\=" can be used to replace with
+the result of an expression.  From this expression the submatch() function can
+be used to access submatches.
+
+When doing ":qall" and there is a change in a buffer that is being edited in
+another window, jump to that window, instead of editing that buffer in the
+current window.
+
+Added the "++enc=" and "++ff=" arguments to file read/write commands to force
+using the given 'encoding' or 'fileformat'.  And added the "v:cmdarg"
+variable, to be used for FileReadCmd autocommands that read/write the file
+themselves.
+
+When reading stdin, first read the text in binary mode and then re-read it
+with automatic selection of 'fileformat' and 'fileencoding'.  This avoids
+problems with not being able to rewind the file (e.g., when a line near the
+end of the file ends in LF instead of CR-LF).
+When reading text from stdin and the buffer is empty, don't mark it changed.
+Allows exiting without trouble.
+
+Added an ID to many error messages.  This will make it easier to find help for
+a message.
+
+Insert mode:
+- "CTRL-G j" and "CTRL-G k" can be used to insert in another line in the same
+  column.  Useful for editing a table.
+- Added Thesaurus completion with CTRL-X CTRL-T. (Vince Negri)
+- Added the 'thesaurus' option, to use instead of 'dictionary' for thesaurus
+  completion.  Added the 's' flag in 'complete'.
+- Made CTRL-X CTRL-L in Insert mode use the 'complete' option.  It now also
+  scans other loaded buffers for matching lines.
+- CTRL-R now also works in Insert mode while doing completion with CTRL-X or
+  CTRL-N. (Neil Bird)
+- When doing Insert mode completion, when completion is finished check for a
+  match with words from 'cinkeys' or 'indentkeys'.
+
+Performance:
+- Made display updating more efficient.  Insert/delete lines may be used for
+  all changes, also for undo/redo.
+- The display is not redrawn when there is typeahead in Insert mode.  Speeds
+  up CTRL-R a lot.
+- Improved speed of screen output for 32 bit DOS version. (Vince Negri)
+- When dragging with the mouse, there is a lookahead to skip mouse codes when
+  there is another one next.  Makes dragging with the mouse a lot faster.
+- Also a memory usage improvement: When calling u_save with a single line,
+  don't save it if the line was recently saved for the same undo already.
+- When using a script that appends one character at a time, the amount of
+  allocated memory was growing steadily.  Also when 'undolevels' is -1.
+  Caused by the line saved for "U" never to be freed.  Now free an undo block
+  when it becomes empty.
+- GUI and Dos32: Use a vertical scroll region, to make scrolling in a
+  vertically split window faster.  No need to redraw the whole window.
+- When scrolling isn't possible with terminal codes (e.g., for a vertically
+  split window) redraw from ScreenLines[].  That should be faster than going
+  through the lines with win_line(), especially when using syntax
+  highlighting.
+- The Syntax menu is now pre-generated by a separate script.  Makes loading
+  the menu 70% faster.  This can halve the startup time of gvim.
+- When doing ":help tag", don't open help.txt first, jump directly to the help
+  tag.  It's faster and avoids an extra message.
+- Win32: When a file name doesn't end in ".lnk" don't try resolving a
+  shortcut, it takes quite a bit of time.
+- Don't update the mouse pointer shape while there are typeahead characters.
+- Change META[] from a string into an array, avoids using strchr() on it.
+- Don't clear the command line when adding characters, avoids that screen_fill
+  is called but doesn't do anything.
+
+Robustness:
+- Unix: Check for running out of stack space when executing a regexp.  Avoids
+  a nasty crash.  Only works when the system supports running the signal
+  function on another stack.
+- Disallow ":source <dirname>".  On unix it's possible to read a directory,
+  does not make sense to use it as Vim commands.
+
+Security:
+- When reading from or writing to a temporary file, check that it isn't a
+  symbolic link.  Gives some protection against symlink attacks.
+- When creating a backup file copy or a swap file, check for it already
+  existing to avoid a symlink attack. (Colin Phipps)
+- Evaluating options which are an expression is done in a |sandbox|.  If the
+  option was set by a modeline, it cannot cause damage.
+- Use a secure way to generate temp file names: Create a private directory for
+  temp files.  Used for Unix, MS-DOS and OS/2.
+- 'makeef' can be empty, which means that an internally generated file name is
+  used.  The old default was "/tmp/file", which is a security risk.
+  Writing 'makeef' in the current directory fails in a read-only directory and
+  causes trouble when using ":grep" on all files.  Made the default empty for
+  all systems, so that a temp file is used.
+- The command from a tags file is executed in the sandbox for better security.
+- The Ruby, Tcl and Python interfaces cannot be used from the sandbox.  They
+  might do dangerous things.  Perl is still possible, but limited to the Safe
+  environment. (Donnie Smith)
+
+Syntax highlighting:
+- Optimized the speed by caching the state stack all over the file, not just
+  the part being displayed.  Required for folding.
+- Added ":syntax sync fromstart": Always parse from the start of the file.
+- Added the "display" argument for syntax items: use the item only when
+  displaying the result.  Can make parsing faster for text that isn't going to
+  be displayed.
+- When using CTRL-L, the cached states are deleted, to force parsing the text
+  again.
+- Use elfhash algorithm for table of keywords.  This should give a better
+  distribution and speedup keyword lookup. (Campbell)
+- Also allow the "lc" leading context for skip and end patterns. (Scott
+  Bigham)
+- Syntax items can have the "extend" argument to undo the effect of a
+  "keepend" argument of an item it is contained in.  Makes it possible to have
+  some contained items extend a region while others don't.
+- ":syntax clear" now deletes the b:current_syntax variable.  That's logical,
+  since no syntax is defined after this command.
+- Added ":syntax enable": switch on syntax highlighting without changing the
+  colors.  This allows specifying the colors in the .vimrc file without the
+  need for a mysyntaxfile.
+- Added ":syntax reset": reset the colors to their defaults.
+- Added the "contains=TOP" and "contains=CONTAINED" arguments.  Makes it
+  possible to define a transparent item that doesn't contain itself.
+- Added a "containedin" argument to syntax items.  Allows adding a contained
+  item to an existing item (e.g., to highlight a name in a comment).
+
+Modeless selection:
+- When in the command-line window, use modeless selection in the other
+  windows.  Makes it possible to copy visible text to the command-line window.
+- Support modeless selection on the cmdline in a terminal.  Previously it was
+  only possible for the GUI.
+- Make double-right-click in modeless selection select a whole word.  Single
+  right click doesn't use the word selection started by a double-left-click.
+  Makes it work like in Visual mode.
+- The modeless selection no longer has an implied automatic copy to the
+  clipboard.  It now obeys the 'a' and 'A' flags in 'guioptions' or
+  "autoselect" and "autoselectml" in 'clipboard'.
+- Added the CTRL-Y command in Cmdline-mode to copy the modeless selection to
+  the clipboard.  Also works at the hit-enter prompt and the more prompt.
+  Removed the mappings in runtime/mswin.vim for CTRL-Y and CTRL-Z in
+  cmdline-mode to be able to use CTRL-Y in the new way.
+
+Reduced the amount of stack space used by regmatch() to allow it to handle
+complicated patterns on a longer text.
+
+'isfname' now includes '%' and '#'.  Makes "vim dir\#file" work for MS-DOS.
+
+Added keypad special keys <kEnter>, <k0> - <k9>.  When not mapped they behave
+like the ASCII equivalent. (Ivan Wellesz and Vince Negri)
+Recognize a few more xterm keys: <C-Right>, <C-Left>, <C-End>, <C-Home>
+
+Also trigger the BufUnload event when Vim is going to exit.  Perhaps a script
+needs to do some cleaning up.
+
+Expand expression in backticks: `={expr}`.  Can be used where backtick
+expansion is done. (Vince Negri)
+
+GUI:
+- Added 'L' and 'R' flags in 'guioptions': Add a left or right scrollbar only
+  when there is a vertically split window.
+- X11: When a color can't be allocated, use the nearest match from the
+  colormap.  This avoids that black is used for many things. (Monish Shah)
+  Also do this for the menu and scrollbar, to avoid that they become black.
+- Win32 and X11: Added 'mouseshape' option: Adjust the mouse pointer shape to
+  the current mode. (Vince Negri)
+- Added the 'linespace' option: Insert a pixel line between lines. (Nam)
+- Allow modeless selection (without moving the cursor) by keeping CTRL and
+  SHIFT pressed. (Ivan Wellesz)
+- Motif: added toolbar. (Gordon Prieur)  Also added tooltips.
+- Athena: added toolbar and tooltips. (David Harrison -- based on Gordon
+  Prieur's work)
+- Made the 'toolbar' option work for Athena and Motif.  Can now switch between
+  text and icons on the fly.  (David Harrison)
+- Support menu separator lines for Athena.  (David Harrison)
+- Athena: Adjust the arrow pixmap used in a pullright menu to the size of the
+  font. (David Harrison)
+- Win32: Added "c" flag to 'guifont' to be able to specify the charset. (Artem
+  Khodush)
+- When no --enable-xim argument is given, automatically enable it when a X GUI
+  is used.  Required for dead key support (and multi-byte input).
+- After a file selection dialog, check that the edited files were not changed
+  or deleted.  The Win32 dialog allows deleting and renaming files.
+- Motif and Athena: Added support for "editres". (Martin Dalecki)
+- Motif and Athena: Added "menuFont" to be able to specify a font or fontset
+  for the menus.  Can also be set with the "Menu" highlight group.  Useful
+  when the locale is different from 'encoding'. (David Harrison)
+  When FONTSET_ALWAYS is defined, always use a fontset for the menus.  Should
+  avoid trouble with changing from a font to a fontset.  (David Harrison)
+- Highlighting and font for the tooltips can be specified with the "Tooltip"
+  highlight group. (David Harrison)
+- The Cmdline-mode menus can be used at the more-prompt.  This mostly works
+  fine, because they start with a CTRL-C.  The "Copy" menu works to copy the
+  modeless selection.  Allows copying the output of ":set all" or ":intro"
+  without auto-selection.
+- When starting the GUI when there is no terminal connected to stdout and
+  stderr, display error messages in a dialog.  Previously they wouldn't be
+  displayed at all.
+- Allow setting 'browsedir' to the name of a directory, to be used for the
+  file dialog. (Dan Sharp)
+- b:browsefilter and g:browsefilter can be set to the filters used for the
+  file dialog.  Supported for Win32 and Motif GUI. (Dan Sharp)
+
+X11:
+- Support for the clipboard selection as register "+.  When exiting or
+  suspending copy the selection to cut buffer 0.  Should allow copy/paste with
+  more applications in a X11-standard way.  (Neil Bird)
+- Use the X clipboard in any terminal, not just in an xterm.
+  Added "exclude:" in 'clipboard': Specify a pattern to match against terminal
+  names for which no connection should be made to the X server.  The default
+  currently work for FreeBSD and Linux consoles.
+- Added a few messages for when 'verbose' is non-zero to show what happens
+  when trying to connect to the X server.  Should help when trying to find out
+  why startup is slow.
+
+GTK GUI: (partly by Marcin Dalecki)
+- With some fonts the characters can be taller than ascent + descent.  E.g.,
+  "-misc-fixed-*-*-*-*-18-*-*-*-*-*-iso10646-1".  Add one to the character
+  cell height.
+- Implement "no" value for 'winaltkeys': don't use Alt-Key as a menu shortcut,
+  when 'wak' changed after creating the menus.
+- Setting 'wak' after the GUI started works.
+- recycle text GC's to reduce communication.
+- Adjust icon size to window manager.
+- Cleanup in font handling.
+- Replace XQueryColor with GDK calls.
+- Gnome support.  Detects Gnome in configure and uses different widgets.
+  Otherwise it's much like GTK. (Andy Kahn)
+  It is disabled by default, because it causes a few problems.
+- Removed the special code to fork first and then start the GUI.  Now use
+  _exit() instead of exit(), this works fine without special tricks.
+- Dialogs sometimes appeared a bit far away.  Position the dialogs inside
+  the gvim window. (Brent Verner)
+- When dropping a file on Vim, remove extra slashes from the start of the
+  path.  Also shorten the file name if possible.
+
+Motif: (Martin Dalecki)
+- Made the dialog layout better.
+- Added find and find/replace dialogs.
+- For the menus, change "iso-8859" to "iso_8859", Linux appears to need this.
+- Added icon to dialogs, like for GTK.
+- Use XPM bitmaps for the icon when possible.  Use the Solaris XpmP.h include
+  file when it's available.
+- Change the shadow of the toolbar items to get a visual feedback of it being
+  pressed on non-LessTiff.
+- Use gadgets instead of windows for some items for speed.
+
+Command line completion:
+- Complete environment variable names. (Mike Steed)
+- For ":command", added a few completion methods: "mapping", "function",
+  "expression" and "environment".
+- When a function doesn't take arguments, let completion add () instead of (.
+
+For MS-DOS, MS-Windows and OS/2: Expand %VAR% environment variables like $VAR.
+(Walter Briscoe)
+
+Redirect messages to the clipboard ":redir @*" and to the unnamed register
+":redir @"". (Wall)
+
+":let @/ = ''" clears the search pattern, instead of setting it to an empty
+string.
+
+Expression evaluation:
+- "? :" can be used like in C.
+- col("$") returns the length of the cursor line plus one. (Stephen P. Wall)
+- Optional extra argument for match(), matchend() and matchstr(): Offset to
+  start looking for a match.
+- Made third argument to strpart() optional.  (Paul Moore, Zdenek Sekera)
+- exists() can also be used to check for Ex commands and defined autocommands.
+- Added extra argument to input(): Default text.
+- Also set "v:errmsg" when using ":silent! cmd".
+- Added the v:prevcount variable: v:count for the previous command.
+- Added "v:progname", name with which Vim was started. (Vince Negri)
+- In the verbose message about returning from a function, also show the return
+  value.
+
+Cscope:
+- Added the cscope_connection() function. (Andy Kahn)
+- ":cscope kill -1" kills all cscope connections. (Andy Kahn)
+- Added the 'cscopepathcomp' option. (Scott Hauck)
+- Added ":scscope" command, split window and execute Cscope command. (Jason
+  Duell)
+
+VMS:
+- Command line arguments are always uppercase.  Interpret a "-X" argument as
+  "-x" and "-/X" as "-X".
+- Set 'makeprg' and 'grepprg' to meaningful defaults. (Zoltan Arpadffy)
+- Use the X-clipboard feature and the X command server. (Zoltan Arpadffy)
+
+Macintosh: (Dany St-Amant)
+- Allow a tags file to have CR, CR-LF or LF line separator. (Axel Kielhorn)
+- Carbonized (while keeping non Carbon code)
+  (Some work "stolen" from Ammon Skidmore)
+- Improved the menu item index handling (should be faster)
+- Runtime commands now handle / in file name (MacOS 9 version)
+- Added ":winpos" support.
+- Support using "~" in file names for home directory.
+
+Options:
+- When using set += or ^= , check for items used twice.  Duplicates are
+  removed.  (Vince Negri)
+- When setting an option that is a list of flags, remove duplicate flags.
+- If possible, use getrlimit() to set 'maxmemtot' and 'maxmem'. (Pina)
+- Added "alpha" to 'nrformats': increment or decrement an alphabetic character
+  with CTRL-A and CTRL-X.
+- ":set opt&vi" sets an option to its Vi default, ":set opt&vim" to its Vim
+  default.  Useful to set 'cpo' to its Vim default without knowing what flags
+  that includes.
+- 'scrolloff' now also applies to a long, wrapped line that doesn't fit in the
+  window.
+- Added more option settings to the default menus.
+- Updated the option window with new options.  Made it a bit easier to read.
+
+Internal changes:
+- Split line pointers in text part and attributes part.  Allows for future
+  change to make attribute more than one byte.
+- Provide a qsort() function for systems that don't have it.
+- Changed the big switch for Normal mode commands into a table.  This cleans
+  up the code considerably and avoids trouble for some optimizing compilers.
+- Assigned a negative value to special keys, to avoid them being mixed up with
+  Unicode characters.
+- Global variables expand_context and expand_pattern were not supposed to be
+  global.  Pass them to ExpandOne() and all functions called by it.
+- No longer use the global reg_ic flag.  It caused trouble and in a few places
+  it was not set.
+- Removed the use of the stuff buffer for "*", "K", CTRL-], etc.  Avoids
+  problem with autocommands.
+- Moved some code from ex_docmd.c to ex_cmds2.c.  The file was getting too
+  big.  Also moved some code from screen.c to move.c.
+- Don't include the CRC table for encryption, generate it.  Saves quite a bit
+  of space in the source code. (Matthias Kramm)
+- Renamed multibyte.c to mbyte.c to avoid a problem with 8.3 filesystems.
+- Removed the GTK implementation of ":findhelp", it now uses the
+  ToolBar.FindHelp  menu entry.
+- Renamed mch_windexit() to mch_exit(), mch_init() to mch_early_init() and
+  mch_shellinit() to mch_init().
+
+Highlighting:
+- In a ":highlight" listing, show "xxx" with the highlight color.
+- Added support for xterm with 88 or 256 colors.  The right color numbers will
+  be used for the name used in a ":highlight" command. (Steve Wall)
+- Added "default" argument for ":highlight".  When included, the command is
+  ignored if highlighting for the group was already defined.
+  All syntax files now use ":hi default ..." to allow the user to specify
+  colors in his vimrc file.  Also, the "if did_xxx_syntax_inits" is not needed
+  anymore.  This greatly simplifies using non-default colors for a specific
+  language.
+- Adjusted colortest.vim: Included colors on normal background and reduced the
+  size by using a while loop. (Rafael Garcia-Suarez)
+- Added the "DarkYellow" color name.  Just to make the list of standard colors
+  consistent, it's not really a nice color to use.
+
+When an xterm is in 8-bit mode this is detected by the code returned for
+|t_RV|.  All key codes are automatically converted to their 8-bit versions.
+
+The OPT_TCAP_QUERY in xterm patch level 141 and later is used to obtain the
+actual key codes used and the number of colors for t_Co.  Only when |t_RV| is
+also used.
+
+":browse set" now also works in the console mode.  ":browse edit" will give an
+error message.
+
+":bdelete" and ":bunload" only report the number of deleted/unloaded buffers
+when more than 'report'.  The message was annoying when deleting a buffer in a
+script.
+
+Jump list:
+- The number of marks kept in the jumplist has been increased from 50 to 100.
+- The jumplist is now stored in the viminfo file.  CTRL-O can be used to jump
+  to positions from a previous edit session.
+- When doing ":split" copy the jumplist to the new window.
+
+Also set the '[ and '] marks for the "~" and "r" commands.  These marks are
+now always set when making a change with a Normal mode command.
+
+Python interface: Allow setting the width of a vertically split window. (John
+Cook)
+
+Added "=word" and "=~word" to 'cinkeys' (also used in 'indentkeys').
+
+Added "j1" argument in 'cinoptions': indent {} inside () for Java. (Johannes
+Zellner)
+Added the "l" flag in 'cinoptions'. (Anduin Withers)
+Added 'C', 'U', 'w' and 'm' flags to 'cinoptions'. (Servatius Brandt)
+
+When doing ":wall" or ":wqall" and a modified buffer doesn't have a name,
+mention its buffer number in the error message.
+
+":function Name" lists the function with line numbers.  Makes it easier to
+find out where an error happened.
+
+In non-blockwise Visual mode, "r" replaces all selected characters with the
+typed one, like in blockwise Visual mode.
+
+When editing the last file in the argument list in any way, allow exiting.
+Previously this was only possible when getting to that file with ":next" or
+":last".
+
+Added the '1' flag to 'formatoptions'. (Vit Stradal)
+Added 'n' flag in 'formatoptions': format a numbered list.
+
+Swap file:
+- When a swap file already exists, and the user selects "Delete" at the
+  ATTENTION prompt, use the same ".swp" swapfile, to avoid creating a ".swo"
+  file which won't always be found.
+- When giving the ATTENTION message and the date of the file is newer than the
+  date of swap file, give a warning about this.
+- Made the info for an existing swap file a bit shorter, so that it still fits
+  on a 24 line screen.
+- It was possible to make a symlink with the name of a swap file, linking to a
+  file that doesn't exist.  Vim would then silently use another file (if open
+  with O_EXCL refuses a symlink).  Now check for a symlink to exist.  Also do
+  another check for an existing swap file just before creating it to catch a
+  symlink attack.
+
+The g CTRL-G command also works in Visual mode and counts the number of words.
+(Chase Tingley)
+
+Give an error message when using 'shell' and it's empty.
+
+Added the possibility to include "%s" in 'shellpipe'.
+
+Added "uhex" value for 'display': show non-printable characters as <xx>.
+Show unprintable characters with NonText highlighting, also in the command
+line.
+
+When asked to display the value of a hidden option, tell it's not supported.
+
+Win32:
+- When dropping a shortcut on gvim (.lnk file) edit the target, not the
+  shortcut itself.  (Yasuhiro Matsumoto)
+- Added C versions of the OpenWithVim and SendToVim programs. (Walter Briscoe)
+- When 'shell' is "cmd" or "cmd.exe", set 'shellredir' to redirect stderr too.
+  Also check for the Unix shell names.
+- When $HOMEDRIVE and $HOMEPATH are defined, use them to define $HOME.  (Craig
+  Barkhouse)
+
+Win32 console version:
+- Includes the user and system name in the ":version" message, when available.
+  It generates a pathdef.c file for this.  (Jon Miner)
+- Set the window icon to Vim's icon (only for Windows 2000).  While executing
+  a shell command, modify the window title to show this.  When exiting,
+  restore the cursor position too.  (Craig Barkhouse)
+- The Win32 console version can be compiled with OLE support.  It can only
+  function as a client, not as an OLE server.
+
+Errorformat:
+- Let "%p" in 'errorformat' (column of error indicated by a row of characters)
+  also accept a line of dots.
+- Added "%v" item in 'errorformat': Virtual column number. (Dan Sharp)
+- Added a default 'errorformat' value for VMS. (Jim Bush)
+
+The "p" command can now be used in Visual mode.  It overwrites the selected
+text with the contents of a register.
+
+Highlight the <> items in the intro message to make clear they are special.
+
+When using the "c" flag for ":substitute", allow typing "l" for replacing this
+item and then stop: "last".
+
+When printing a verbose message about sourcing another file, print the line
+number.
+
+When resizing the Vim window, don't use 'equalalways'.  Avoids that making the
+Vim window smaller makes split windows bigger.  And it's what the docs say.
+
+When typing CTRL-D in Insert mode, just after an autoindent, then hitting CR
+kept the remaining white space.  Now made it work like BS: delete the
+autoindent to avoid a blank non-empty line results.
+
+Added a GetHwnd() call to the OLE interface.  (Vince Negri)
+
+Made ":normal" work in an event handler.  Useful when dropping a file on Vim
+and for CursorHold autocommands.
+
+For the MS-Windows version, don't change to the directory of the file when a
+slash is used instead of a backslash.  Explorer should always use a backslash,
+the user can use a slash when typing the command.
+
+Timestamps:
+- When a buffer was changed outside of Vim and regaining focus, give a dialog
+  to allow the user to reload the file.  Now also for other GUIs than
+  MS-Windows.  And also used in the console, when compiled with dialog
+  support.
+- Inspect the file contents to find out if it really changed, ignore
+  situations where only the time stamp changed (e.g., checking the file out
+  from CVS).
+- When checking the timestamp, first check if the file size changed, to avoid
+  a file compare then.  Makes it quicker for large (log) files that are
+  appended to.
+- Don't give a warning for a changed or deleted file when 'buftype' is set.
+- No longer warn for a changed directory.  This avoids that the file explorer
+  produces warnings.
+- Checking timestamps is only done for buffers that are not hidden.  These
+  will be checked when they become unhidden.
+- When checking for a file being changed outside of Vim, also check if the
+  file permissions changed.  When the file contents didn't change but the
+  permissions did, give a warning.
+- Avoid checking too often, otherwise the dialog keeps popping up for a log
+  file that steadily grows.
+
+Mapping <M-A> when 'encoding' is "latin1" and then setting 'encoding' to
+"utf-8" causes the first byte of a multi-byte to be mapped.  Can cause very
+hard to find problems.  Disallow mapping part of a multi-byte character.
+
+For ":python" and ":tcl" accept an in-line script. (Johannes Zellner)
+Also for ":ruby" and ":perl". (Benoit Cerrina)
+
+Made ":syn include" use 'runtimepath' when the file name is not a full path.
+
+When 'switchbuf' contains "split" and the current window is empty, don't split
+the window.
+
+Unix: Catch SIGPWR to preserve files when the power is about to go down.
+
+Sniff interface: (Anton Leherbauer)
+- fixed windows code, esp. the event handling stuff
+- adaptations for sniff 4.x ($SNIFF_DIR4)
+- support for adding sniff requests at runtime
+
+Support the notation <A-x> as an alias for <M-x>.  This logical, since the Alt
+key is used.
+
+":find" accepts a count, which means that the count'th match in 'path' is
+used.
+
+":ls" and ":buffers" output shows modified/readonly/modifiable flag.  When a
+buffer is active show "a" instead of nothing.  When a buffer isn't loaded
+show nothing instead of "-".
+
+Unix install:
+- When installing the tools, set absolute paths in tools scripts efm_perl.pl
+  and mve.awk.  Avoids that the user has to edit these files.
+- Install Icons for KDE when the directories exist and the icons do not exist
+  yet.
+
+Added has("win95"), to be able to distinguish between MS-Windows 95/98/ME and
+NT/2000/XP in a Vim script.
+
+When a ":cd" command was typed, echo the new current directory. (Dan Sharp)
+
+When using ":winpos" before the GUI window has been opened, remember the
+values until it is opened.
+
+In the ":version" output, add "/dyn" for features that are dynamically loaded.
+This indicates the feature may not always work.
+
+On Windows NT it is possible that a directory is read-only, but a file can be
+deleted.  When making a backup by renaming the file and 'backupdir' doesn't
+use the current directory, this causes the original file to be deleted,
+without the possibility to create a new file.  Give an extra error message
+then to warn to user about this.
+
+Made CTRL-R CTRL-O at the command line work like CTRL-R CTRL-R, so that it's
+consistent with Insert mode.
+
+==============================================================================
+COMPILE TIME CHANGES					*compile-changes-6*
+
+All generated files have been moved out of the "src" directory.  This makes it
+easy to see which files are not edited by hand.  The files generated by
+configure are now in the "src/auto" directory.  For Unix, compiled object
+files go in the objects directory.
+
+The source archive was over the 1.4M floppy limit.  The archives are now split
+up into two runtime and two source archives.  Also provide a bzip2 compressed
+archive that contains all the sources and runtime files.
+
+Added "reconfig" as a target for make.  Useful when changing some of the
+arguments that require flushing the cache, such as switching from GTK to
+Motif.  Adjusted the meaning of GUI_INC_LOC and GUI_LIB_LOC to be consistent
+over different GUIs.
+
+Added src/README.txt to give an overview of the main parts of the source code.
+
+The Unix Makefile now fully supports using $(DESTDIR) to install to a specific
+location.  Replaces the manual setting of *ENDLOC variables.
+
+Added the possibility for a maintainer of a binary version to include his
+e-mail address with the --with-compiledby configure argument.
+
+Included features are now grouped in "tiny", "small", "normal", "big" and
+"huge".  This replaces "min-features" and "max-features".  Using "tiny"
+disables multiple windows for a really small Vim.
+
+For the tiny version or when FEAT_WINDOWS is not defined: Firstwin and lastwin
+are equal to curwin and don't use w_next and w_prev.
+
+Added the +listcmds feature.  Can be used to compile without the Vim commands
+that manipulate the buffer list and argument list (the buffer list itself is
+still there, can't do without it).
+
+Added the +vreplace feature.  It is disabled in the "small" version to avoid
+that the 16 bit DOS version runs out of memory.
+
+Removed GTK+ support for versions older than 1.1.16.
+
+The configure checks for using PTYs have been improved.  Code taken from a
+recent version of screen.
+
+Added configure options to install Vim, Ex and View under another name (e.g.,
+vim6, ex6 and view6).
+
+Added "--with-global-runtime" configure argument.  Allows specifying the
+global directory used in the 'runtimepath' default.
+
+Made enabling the SNiFF+ interface possible with a configure argument.
+
+Configure now always checks /usr/local/lib for libraries and
+/usr/local/include for include files.  Helps finding the stuff for iconv() and
+gettext().
+
+Moved the command line history stuff into the +cmdline_hist feature, to
+exclude the command line history from the tiny version.
+
+MS-Windows: Moved common functions from Win16 and Win32 to os_mswin.c.  Avoids
+having to change two files for one problem.  (Vince Negri)
+
+Moved common code from gui_w16.c and gui_w32.c to gui_w48.c (Vince Negri)
+
+The jumplist is now a separate feature.  It is disabled for the "small"
+version (16 bit MS-DOS).
+
+Renamed all types ending in _t to end in _T.  Avoids potential problems with
+system types.
+
+Added a configure check for X11 header files that implicitly define the return
+type to int. (Steve Wall)
+
+"make doslang" in the top directory makes an archive with the menu and .mo
+files for Windows.  This uses the files generated on Unix, these should work
+on MS-Windows as well.
+
+Merged a large part of os_vms.c with os_unix.c.  The code was duplicated in
+the past which made maintenance more work.  (Zoltan Arpadffy)
+
+Updated the Borland C version 5 Makefile: (Dan Sharp)
+- Fixed the Perl build
+- Added python and tcl builds
+- Added dynamic perl and dynamic python builds
+- Added uninstal.exe build
+- Use "yes" and "no" for the options, like in Make_mvc.mak.
+
+Win32: Merged Make_gvc.mak and Make_ovc.mak into one file: Make_ivc.mak.  It's
+much smaller, many unnecessary text has been removed. (Walter Briscoe)
+Added Make_dvc.mak to be able to debug exe generated with Make_mvc.mak in
+MS-Devstudio. (Walter Briscoe)
+
+MS-Windows: The big gvim.exe, which includes OLE, now also includes
+dynamically loaded Tcl, Perl and Python.  This uses ActivePerl 5.6.1,
+ActivePython 2.1.1 and ActiveTCL 8.3.3
+
+Added AC_EXEEXT to configure.in, to check if the executable needs ".exe" for
+Cygwin or MingW.  Renamed SUFFIX to EXEEXT in Makefile.
+
+Win32: Load comdlg32.dll delayed for faster startup.  Only when using VC 6.
+(Vipin Aravind)
+
+Win32: When compiling with Borland, allow using IME. (Yasuhiro Matsumoto)
+
+Win32: Added Makefile for Borland 5 to compile gvimext.dll. (Yasuhiro
+Matsumoto)
+
+==============================================================================
+BUG FIXES						*bug-fixes-6*
+
+When checking the command name for "gvim", "ex", etc. ignore case.  Required
+for systems where case is ignored in command names.
+
+Search pattern "[a-c-e]" also matched a 'd' and didn't match a '-'.
+
+When double-clicking in another window, wasn't recognized as double click,
+because topline is different.  Added set_mouse_topline().
+
+The BROKEN_LOCALE check was broken.  (Marcin Dalecki)
+
+When "t_Co" is set, the default colors remain the same, thus wrong.  Reset the
+colors after changing "t_Co". (Steve Wall)
+
+When exiting with ":wqall" the messages about writing files could overwrite
+each other and be lost forever.
+
+When starting Vim with an extremely long file name (around 1024 characters) it
+would crash.  Added a few checks to avoid buffer overflows.
+
+CTRL-E could get stuck in a file with very long lines.
+
+":au syntax<Tab>" expanded event names while it should expand groups starting
+with "syntax".
+
+When expanding a file name caused an error (e.g., for <amatch>) it was
+produced even when inside an "if 0".
+
+'cindent' formatted C comments differently from what the 'comments' option
+specified. (Steve Wall)
+
+Default for 'grepprg' didn't include the file name when only grepping in one
+file.  Now /dev/null has been added for Unix.
+
+Opening the option window twice caused trouble.  Now the cursor goes to the
+existing option window.
+
+":sview" and ":view" didn't set 'readonly' for an existing buffer.  Now do set
+'readonly', unless the buffer is also edited in another window.
+
+GTK GUI: When 'guioptions' excluded 'g', the more prompt caused the toolbar
+and menubar to disappear and resize the window (which clears the text).
+Now always grey-out the toplevel menus to avoid that the menubar changes size
+or disappears.
+
+When re-using the current buffer for a new buffer, buffer-local variables were
+not deleted.
+
+GUI: when 'scrolloff' is 0 dragging the mouse above the window didn't cause a
+down scroll.  Now pass on a mouse event with mouse_row set to -1.
+
+Win32: Console version didn't work on telnet, because of switching between two
+console screens.  Now use one console screen and save/restore the contents
+when needed.  (Craig Barkhouse)
+
+When reading a file the magic number for encryption was included in the file
+length. (Antonio Colombo)
+
+The quickfix window contained leading whitespace and NULs for multi-line
+messages. (David Harrison)
+
+When using cscope, redundant tags were removed.  This caused a numbering
+problem, because they were all listed.  Don't remove redundant cscope tags.
+(David Bustos).
+
+Cscope: Test for which matches are in the current buffer sometimes failed,
+causing a jump to another match than selected. (David Bustos)
+
+Win32: Buffer overflow when adding a charset name in a font.
+
+'titlestring' and 'iconstring' were evaluating an expression in the current
+context, which could be a user function, which is a problem for local
+variables vs global variables.
+
+Win32 GUI: Mapping <M-F> didn't work.  Now handle SHIFT and CTRL in
+_OnSysChar().
+
+Win32 GUI: (on no file), :vs<CR>:q<CR> left a trail of pixels down the middle.
+Could also happen for the ruler.  screen_puts() didn't clear the right char in
+ScreenLines[] for the bold trick.
+
+Win32: ":%!sort|uniq" didn't work, because the input file name touches the
+"|".  Insert a space before the "|".
+
+OS/2: Expanding wildcards included non-existing files.  Caused ":runtime" to
+fail, which caused syntax highlighting to fail.
+
+Pasting a register containing CTRL-R on the command line could cause an
+endless loop that can't be interrupted.  Now it can be stopped with CTRL-C.
+
+When 'verbose' is set, a message for file read/write could overwrite the
+previous message.
+When 'verbose' is set, the header from ":select" was put after the last
+message.  Now start a new line.
+
+The hit-enter prompt reacted to the response of the t_RV string, causing
+messages at startup to disappear.
+
+When t_Co was set to 1, colors were still used.  Now only use color when t_Co
+> 1.
+
+Listing functions with ":function" didn't quit when 'q' or ':' was typed at
+the more prompt.
+
+Use mkstemp() instead of mktemp() when it's available, avoids a warning for
+linking on FreeBSD.
+
+When doing Insert mode completion it's possible that b_sfname is NULL.  Don't
+give it to printf() for the "Scanning" message.
+
+":set runtimepath-=$VIMRUNTIME" didn't work, because expansion of wildcards
+was done after trying to remove the string.  Now for ":set opt+=val" and ":set
+opt-=val" the expansion of wildcards is done before adding or removing "val".
+
+Using CTRL-V with the "r" command with a blockwise Visual selection inserted a
+CTRL-V instead of getting a special character.
+
+Unix: Changed the order of libraries: Put -lXdmcp after -lX11 and -lSM -lICE
+after -lXdmcp.  Should fix link problem on HP-UX 10.20.
+
+Don't remove the last "-lm" from the link line.  Vim may link but fail later
+when the GUI starts.
+
+When the shell returns with an error when trying to expand wildcards, do
+include the pattern when the "EW_NOTFOUND" flag was set.
+When expanding wildcards with the shell fails, give a clear error message
+instead of just "1 returned".
+
+Selecting a Visual block, with the start partly on a Tab, deleting it leaves
+the cursor too far to the left.  Causes "s" to work in the wrong position.
+
+Pound sign in normal.c caused trouble on some compilers.  Use 0xA3 instead.
+
+Warning for changing a read-only file wasn't given when 'insertmode' was set.
+
+Win32: When 'shellxquote' is set to a double quote (e.g., using csh), ":!start
+notepad file" doesn't work.  Remove the double quotes added by 'shellxquote'
+when using ":!start". (Pavol Juhas)
+
+The "<f-args>" argument of ":command" didn't accept Tabs for white space.
+Also, don't add an empty argument when there are trailing blanks.
+
+":e test\\je" edited "test\je", but ":next test\\je" edited "testje".
+Backslashes were removed one time too many for ":next".
+
+VMS: "gf" didn't work properly.  Use vms_fixfilename() to translate the file
+name. (Zoltan Arpadffy)
+
+After ":hi Normal ctermbg=black ctermfg=white" and suspending Vim not all
+characters are redrawn with the right background.
+
+When doing "make test" without +eval or +windows feature, many tests failed.
+Now have test1 generate a script to copy the correct output, so that a test
+that doesn't work is skipped.
+
+On FreeBSD the Perl interface added "-lc" to the link command and Python added
+"-pthread".  These two don't work together, because the libc_r library should
+be used.  Removed "-lc" from Perl, it should not be needed.
+Also: Add "-pthread" to $LIBS, so that the checks for functions is done with
+libc_r.  Sigaltstack() appears to be missing from libc_r.
+
+The Syntax sub-menus were getting too long, reorganized them and added another
+level for some languages.
+
+Visual block "r"eplace didn't work well when a Tab is partly included.
+(Matthias Kramm)
+
+When yanking a Visual block, where some lines end halfway the block, putting
+the text somewhere else doesn't insert a block.  Padd with spaces for missing
+characters.  Added "y_width" to struct yankreg. (Matthias Kramm)
+
+If a substitute string has a multibyte character after a backslash only the
+first byte of it was skipped. (Muraoka Taro)
+
+Win32: Numeric keypad keys were missing from the builtin termcap entry.
+
+When a file was read-only ":wa!" didn't force it to be written. (Vince Negri)
+
+Amiga: A file name starting with a colon was considered absolute but it isn't.
+Amiga: ":pwd" added a slash when in the root of a drive.
+
+Don't let 'ttymouse' default to "dec" when compiled with dec mouse support.
+It breaks the gpm mouse (Linux console).
+
+The prototypes for the Perl interface didn't work for threaded Perl.  Added a
+sed command to remove the prototypes from proto/if_perl.pro and added them
+manually to if_perl.xs.
+
+When ":w!" resets the 'readonly' option the title and status lines were not
+updated.
+
+":args" showed the current file when the argument list was empty.  Made this
+work like Vi: display nothing.
+
+"99:<C-U>echo v:count" echoed "99" in Normal mode, but 0 in Visual mode.
+Don't set v:count when executing a stuffed command.
+
+Amiga: Got a requester for "home:" because it's in the default runtime path.
+Don't bring up a requester when searching for a file in 'path', sourcing the
+.vimrc file or using ":runtime".
+
+Win16 and Win32: Considered a file "\path\file" absolute.  Can cause the same
+file to appear as two different buffers.
+
+Win32: Renaming a file to an empty string crashed Vim.  Happened when using
+explorer.vim and hitting ESC at the rename prompt.
+
+Win32: strftime() crashed when called with a "-1" value for the time.
+
+Win32 with Borland compiler: mch_FullName() didn't work, caused tag file not
+to be found.
+
+Cscope sometimes jumped to the wrong tag. (David Bustos)
+
+OS/2: Could not find the tags file.  mch_expand_wildcards() added another
+slash to a directory name.
+
+When using ">>" the `] mark was not in the last column.
+
+When Vim was compiled without menu support, filetype.vim was still trying to
+source the menu.vim script. (Rafael Garcia-Suarez)
+
+":ptag" added an item to the tag stack.
+
+Win32 IME: "gr" didn't use IME mode.
+
+In the "vim --help" message the term "options" was used for arguments.  That's
+confusing, call them "arguments".
+
+When there are two windows, and a BufUnload autocommand for closing window #1
+closed window #2, Vim would crash.
+
+When there is a preview window and only one other window, ":q" wouldn't exit.
+
+In Insert mode, when cancelling a digraph with ESC, the '?' wasn't removed.
+
+On Unix glob(".*") returned "." and "..", on Windows it didn't.  On Windows
+glob("*") also returned files starting with a dot.  Made this work like Unix
+on all systems.
+
+Win32: Removed old code to open a console.  Vimrun is now used and works fine.
+
+Compute the room needed by the intro message accurately, so that it also fits
+on a 25 line console. (Craig Barkhouse)
+
+":ptnext" was broken.  Now remember the last tag used in the preview window
+separately from the tagstack.
+
+Didn't check for "-display" being the last argument. (Wichert Akkerman)
+
+GTK GUI: When starting "gvim" under some conditions there would be an X error.
+Don't replace the error handler when creating the xterm clipboard. (Wichert
+Akkerman)
+
+Adding a space after a help tag caused the tag not to be found.  E.g., ":he
+autoindent ".
+
+Was trying to expand a URL into a full path name.  On Windows this resulted in
+the current directory to be prepended to the URL.  Added vim_isAbsName() and
+vim_FullName() to avoid that various machine specific functions do it
+differently.
+
+":n *.c" ":cd .." ":n" didn't use the original directory of the file.  Vi only
+does it for the current file (looks like a bug).  Now remember the buffer used
+for the entry in the argument list and use it's name (adjusted when doing
+":cd"), unless it's deleted.
+
+When inserting a special key as its name ("<F8>" as four characters) after
+moving around in Insert mode, undo didn't work properly.
+
+Motif GUI: When using the right mouse button, for some people gvim froze for
+a couple of seconds (Motif 1.2?).  This doesn't happen when there is no Popup
+menu.  Solved by only creating a popup menu when 'mousemodel' is "popup" or
+"popup_setpos". (David Harrison)
+
+Motif: When adding many menu items, the "Help" menu disappeared but the
+menubar didn't wrap.  Now manually set the menubar height.
+
+When using <BS> in Insert mode to remove a line break, or using "J" to join
+lines, the cursor could end up halfway a multi-byte character. (Muraoka Taro)
+
+Removed defining SVR4 in configure.  It causes problems for some X header
+files and doesn't appear to be used anywhere.
+
+When 'wildignore' is used, 'ignorecase' for a tag match was not working.
+
+When 'wildignore' contains "*~" it was impossible to edit a file ending in a
+"~".  Now don't recognize a file ending in "~" as containing wildcards.
+
+Disabled the mouse code for OS/2.  It was not really used.
+
+":mksession" always used the full path name for a buffer, also when the short
+name could be used.
+":mkvimrc" and ":mksession" didn't save 'wildchar' and 'pastetoggle' in such a
+way that they would be restored.  Now use the key name if possible, this is
+portable.
+
+After recovering a file and abandoning it, an ":edit" command didn't give the
+ATTENTION prompt again.  Would be useful to be able to delete the file in an
+easy way.  Reset the BF_RECOVERED flag when unloading the buffer.
+
+histdel() could match or ignore case, depending on what happened before it.
+Now always match case.
+
+When a window size was specified when splitting a window, it would still get
+the size from 'winheight' or 'winwidth' if it's larger.
+
+When using "append" or "insert" inside a function definition, a line starting
+with "function" or "endfunction" caused confusion.  Now recognize the commands
+and skip lines until a ".".
+
+At the end of any function or sourced file need_wait_return could be reset,
+causing messages to disappear when redrawing.
+
+When in a while loop the line number for error messages stayed fixed.  Now the
+line number is remembered in the while loop.
+
+"cd c:/" didn't work on MS-DOS.  mch_isdir() removed a trailing slash.
+
+MS-Windows: getftime() didn't work when a directory had a trailing slash or
+backslash.  Didn't show the time in the explorer because of this.
+
+When doing wildcard completion, a directory "a/" sorted after "a-b".  Now
+recognize path separators when sorting files.
+
+Non-Unix systems: When editing "c:/dir/../file" and "c:/file" they were
+created as different buffers, although it's the same file.  Expand to a full
+file name also when an absolute name contains "..".
+
+"g&" didn't repeat the last substitute properly.
+
+When 'clipboard' was set to "unnamed", a "Y" command would not write to "0.
+Now make a copy of register 0 to the clipboard register.
+
+When the search pattern matches in many ways, it could not always be
+interrupted with a CTRL-C.  And CTRL-C would have to be hit once for every
+line when 'hlsearch' is on.
+When 'incsearch' is on and interrupting the search for a match, don't abandon
+the command line.
+
+When turning a directory name into a full path, e.g., with fnamemodify(),
+sometimes a slash was added.  Make this consistent: Don't add a slash.
+
+When a file name contains a "!", using it in a shell command will cause
+trouble: ":!cat %".  Escape the "!" to avoid that.  Escape it another time
+when 'shell' contains "sh".
+
+Completing a file name that has a tail that starts with a "~" didn't work:
+":e view/~<Tab>".
+
+Using a ":command" argument that contains < and > but not for a special
+argument was not skipped properly.
+
+The DOS install program: On Win2000 the check for a vim.exe or gvim.exe in
+$PATH didn't work, it always found it in the current directory.
+Rename the vim.exe in the current dir to avoid this. (Walter Briscoe)
+
+In the MS-DOS/Windows install program, use %VIM% instead of an absolute path,
+so that moving Vim requires only one change in the batch file.
+
+Mac: mch_FullName() changed the "fname" argument and didn't always initialize
+the buffer.
+
+MS-DOS: mch_FullName() didn't fix forward/backward slashes in an absolute file
+name.
+
+"echo expand("%:p:h")" with an empty file name removed one directory name on
+MS-DOS.  For Unix, when the file name is a directory, the directory name was
+removed.  Now make it consistent: "%:p" adds a path separator for all systems,
+but no path separator is added in other situations.
+
+Unix: When checking for a CTRL-C (could happen any time) and there is an X
+event (e.g., clipboard updated) and there is typeahead, Vim would hang until a
+character was typed.
+
+MS-DOS, MS-Windows and Amiga: expanding "$ENV/foo" when $ENV ends in a colon,
+had the slash removed.
+
+":he \^=" gave an error for using \_.  ":he ^=" didn't find tag :set^=.  Even
+"he :set^=" didn't find it.
+
+A tags file name "D:/tags" was used as file "tags" in "D:".  That doesn't work
+when the current path for D: isn't the root of the drive.
+
+Removed calls to XtInitializeWidgetClass(), they shouldn't be necessary.
+
+When using a dtterm or various other color terminals, and the Normal group has
+been set to use a different background color, the background wouldn't always
+be displayed with that color.  Added check for "ut" termcap entry: If it's
+missing, clearing the screen won't give us the current background color.  Need
+to draw each character instead.  Vim now also works when the "cl" (clear
+screen) termcap entry is missing.
+
+When repeating a "/" search command with a line offset, the "n" did use the
+offset but didn't make the motion linewise.  Made "d/pat/+2" and "dn" do the
+same.
+
+Win32: Trying to use ":tearoff" for a menu that doesn't exist caused a crash.
+
+OpenPTY() didn't work on Sequent.  Add a configure check for getpseudotty().
+
+C-indenting: Indented a line starting with ")" with the matching "(", but not
+a line starting with "x)" looks strange.  Also compute the indent for aligning
+with items inside the () and use the lowest indent.
+
+MS-DOS and Windows: ":n *.vim" also matched files ending in "~".
+Moved mch_expandpath() from os_win16.c and os_msdos.c to misc1.c, they are
+equal.
+
+Macintosh: (Dany St-Amant)
+- In Vi-compatible mode didn't read files with CR line separators.
+- Fixed a bug in the handling of Activate/Deactivate Event
+- Fixed a bug in gui_mch_dialog (using wrong pointer)
+
+Multibyte GDK XIM: While composing a multibyte-word, if user presses a
+mouse button, then the word is removed.  It should remain and composing end.
+(Sung-Hyun Nam)
+
+MS-DOS, MS-Windows and OS/2: When reading from stdin, automatic CR-LF
+conversion by the C library got in the way of detecting a "dos" 'fileformat'.
+
+When 'smartcase' is set, patterns with "\S" would also make 'ignorecase'
+reset.
+
+When clicking the mouse in a column larger than 222, it moved to the first
+column.  Can't encode a larger number in a character.  Now limit the number to
+222, don't jump back to the first column.
+
+GUI: In some versions CSI would cause trouble, either when typed directly or
+when part of a multi-byte sequence.
+
+When using multibyte characters in a ":normal" command, a trailing byte that
+is CSI or K_SPECIAL caused problems.
+
+Wildmenu didn't handle multi-byte characters.
+
+":sleep 10" could not be interrupted on Windows, while "gs" could.  Made them
+both work the same.
+
+Unix: When waiting for a character is interrupted by an X-windows event (e.g.,
+to obtain the contents of the selection), the wait time would not be honored.
+A message could be overwritten quickly.  Now compute the remaining waiting
+time.
+
+Windows: Completing "\\share\c$\S" inserted a backslash before the $ and then
+the name is invalid.  Don't insert the backslash.
+
+When doing an auto-write before ":make", IObuff was overwritten and the wrong
+text displayed later.
+
+On the Mac the directories "c:/tmp" and "c:/temp" were used in the defaults
+for 'backupdir' and 'directory', they don't exist.
+
+The check for a new file not to be on an MS-DOS filesystem created the file
+temporarily, which can be slow.  Don't do this if there is another check for
+the swap file being on an MS-DOS filesystem.
+
+Don't give the "Changing a readonly file" warning when reading from stdin.
+
+When using the "Save As" menu entry and not entering a file name, would get an
+error message for the trailing ":edit #".  Now only do that when the
+alternate file name was changed.
+
+When Vim owns the X11 selection and is being suspended, an application that
+tries to use the selection hangs.  When Vim continues it could no longer
+obtain the selection.  Now give up the selection when suspending.
+
+option.h and globals.h were included in some files, while they were already
+included in vim.h.  Moved the definition of EXTERN to vim.h to avoid doing it
+twice.
+
+When repeating an operator that used a search pattern and the search pattern
+contained characters that have a special meaning on the cmdline (e.g., CTRL-U)
+it didn't work.
+
+Fixed various problems with using K_SPECIAL (0x80) and CSI (0x9b) as a byte in
+a (multibyte) character.  For example, the "r" command could not be repeated.
+
+The DOS/Windows install program didn't always work from a directory with a
+long filename, because $VIM and the executable name would not have the same
+path.
+
+Multi-byte:
+- Using an any-but character range [^x] in a regexp didn't work for UTF-8.
+  (Muraoka Taro)
+- When backspacing over inserted characters in Replace mode multi-byte
+  characters were not handled correctly. (Muraoka Taro)
+- Search commands "#" and "*" didn't work with multibyte characters. (Muraoka
+  Taro)
+- Word completion in Insert mode didn't work with multibyte characters.
+  (Muraoka Taro)
+- Athena/Motif GUI: when 'linespace' is non-zero the cursor would be drawn too
+  wide (number of bytes instead of cell width).
+- When changing 'encoding' to "euc-jp" and inserting a character Vim would
+  crash.
+- For euc-jp characters positioning the cursor would sometimes be wrong.
+  Also, with two characters with 0x8e leading byte only the first one would be
+  displayed.
+- When using DYNAMIC_ICONV on Win32 conversion might fail because of using the
+  wrong error number. (Muraoka Taro)
+- Using Alt-x in the GUI while 'encoding' was set to "utf-8" didn't produce
+  the right character.
+- When using Visual block selection and only the left halve of a double-wide
+  character is selected, the highlighting continued to the end of the line.
+- Visual-block delete didn't work properly when deleting the right halve of a
+  double-wide character.
+- Overstrike mode for the cmdline replaced only the first byte of a multibyte
+  character.
+- The cursor in Replace mode (also in the cmdline) was to small on a
+  double-wide character.
+- When a multibyte character contained a 0x80 byte, it didn't work (was using
+  a CSI byte instead). (Muraoka Taro)
+- Wordwise selection with the mouse didn't work.
+- Yanking a modeless selection of multi-byte characters didn't work.
+- When 'selection' is "exclusive", selecting a word that ends in a multi-byte
+  character used wrong highlighting for the following character.
+
+Win32 with Make_mvc.mak: Didn't compile for debugging. (Craig Barkhouse)
+
+Win32 GUI: When "vimrun.exe" is used to execute an external command, don't
+give a message box with the return value, it was already printed by vimrun.
+Also avoid printing the return value of the shell when ":silent!" is used.
+
+Win32: selecting a lot of text and using the "find/replace" dialog caused a
+crash.
+
+X11 GUI: When typing a character with the 8th bit set and the Meta/Alt
+modifier, the modifier was removed without changing the character.
+
+Truncating a message to make it fit on the command line, using "..." for the
+middle, didn't always compute the space correctly.
+
+Could not imap <C-@>.  Now it works like <Nul>.
+
+VMS:
+- Fixed a few things for VAXC.  os_vms_fix.com had some strange CTRL-M
+  characters. (Zoltan Arpadffy and John W. Hamill)
+- Added VMS-specific defaults for the 'isfname' and 'isprint' options.
+  (Zoltan Arpadffy)
+- Removed os_vms_osdef.h, it's no longer used.
+
+The gzip plugin used a ":normal" command, this doesn't work when dropping a
+compressed file on Vim.
+
+In very rare situations a binary search for a tag would fail, because an
+uninitialized value happens to be half the size of the tag file. (Narendran)
+
+When using BufEnter and BufLeave autocommands to enable/disable a menu, it
+wasn't updated right away.
+
+When doing a replace with the "c"onfirm flag, the cursor was positioned after
+the ruler, instead of after the question.  With a long replacement string the
+screen could scroll up and cause a "more" prompt.  Now the message is
+truncated to make it fit.
+
+Motif: The autoconf check for the Xp library didn't work.
+
+When 'verbose' is set to list lines of a sourced file, defining a function
+would reset the counter used for the "more" prompt.
+
+In the Win32 find/replace dialog, a '/' character caused problems.  Escape it
+with a backslash.
+
+Starting a shell with ":sh" was different from starting a shell for CTRL-Z
+when suspending doesn't work.  They now work the same way.
+
+Jumping to a file mark while in a changed buffer gave a "mark not set" error.
+
+":execute histget("cmd")" causes an endless loop and crashed Vim.  Now catch
+all commands that cause too much recursiveness.
+
+Removed "Failed to open input method" error message, too many people got this
+when they didn't want to use a XIM.
+
+GUI: When compiled without the +windows feature, the scrollbar would start
+below line one.
+
+Removed the trick with redefining character class functions from regexp.c.
+
+Win32 GUI: Find dialog gives focus back to main window, when typing a
+character mouse pointer is blanked, it didn't reappear when moving it in the
+dialog window. (Vince Negri)
+
+When recording and typing a CTRL-C, no character was recorded.  When in Insert
+mode or cancelling half a command, playing back the recorded sequence wouldn't
+work.  Now record the CTRL-C.
+
+When the GUI was started, mouse codes for DEC and netterm were still checked
+for.
+
+GUI: When scrolling and 'writedelay' is non-zero, the character under the
+cursor was displayed in the wrong position (one line above/below with
+CTRL-E/CTRL-Y).
+
+A ":normal" command would reset the 'scrollbind' info.  Causes problems when
+using a ":normal" command in an autocommand for opening a file.
+
+Windows GUI: a point size with a dot, like "7.5", wasn't recognized. (Muraoka
+Taro)
+
+When 'scrollbind' wasn't set would still remember the current position,
+wasting time.
+
+GTK: Crash when 'shell' doesn't exist and doing":!ls".  Use _exit() instead of
+exit() when the child couldn't execute the shell.
+
+Multi-byte:
+- GUI with double-byte encoding: a mouse click in left halve of double-wide
+  character put the cursor in previous char.
+- Using double-byte encoding and 'selection' is "exclusive": "vey" and "^Vey"
+  included the character after the word.
+- When using a double-byte encoding and there is a lead byte at the end of the
+  line, the preceding line would be displayed.  "ga" also showed wrong info.
+- "gf" didn't include multi-byte characters before the cursor properly.
+  (Muraoka Taro)
+
+GUI: The cursor was sometimes not removed when scrolling.  Changed the policy
+from redrawing the cursor after each call to gui_write() to only update it at
+the end of update_screen() or when setting the cursor position.  Also only
+update the scrollbars at the end of update_screen(), that's the only place
+where the window text may have been scrolled.
+
+Formatting "/*<Tab>long text", produced "* <Tab>" in the next line.  Now
+remove the space before the Tab.
+Formatting "/*<Tab>  long text", produced "* <Tab> long text" in the next
+line.  Now keep the space after the Tab.
+
+In some places non-ASCII alphabetical characters were accepted, which could
+cause problems.  For example, ":X" (X being such a character).
+
+When a pattern matches the end of the line, the last character in the line was
+highlighted for 'hlsearch'.  That looks wrong for "/\%3c".  Now highlight the
+character just after the line.
+
+Motif: If a dialog was closed by clicking on the "X" of the window frame Vim
+would no longer respond.
+
+When using CTRL-X or CTRL-A on a number with many leading zeros, Vim would
+crash. (Matsumoto)
+
+When 'insertmode' is set, the mapping in mswin.vim for CTRL-V didn't work in
+Select mode.  Insert mode wasn't restarted after overwriting the text.
+Now allow nesting Insert mode with insert and change commands.  CTRL-O
+cwfoo<Esc> now also works.
+
+Clicking with the right mouse button in another window started Visual mode,
+but used the start position of the current window.  Caused ml_get errors when
+the line number was invalid.  Now stay in the same window.
+
+When 'selection' is "exclusive", "gv" sometimes selected one character fewer.
+
+When 'comments' contains more than one start/middle/end triplet, the optional
+flags could be mixed up.  Also didn't align the end with the middle part.
+
+Double-right-click in Visual mode didn't update the shown mode.
+
+When the Normal group has a font name, it was never used when starting up.
+Now use it when 'guifont' and 'guifontset' are empty.
+Setting a font name to a highlight group before the GUI was started didn't
+work.
+
+"make test" didn't use the name of the generated Vim executable.
+
+'cindent' problems:
+- Aligned with an "else" inside a do-while loop for a line below that loop.
+  (Meikel Brandmeyer)
+- A line before a function would be indented even when terminated with a
+  semicolon. (Meikel Brandmeyer)
+- 'cindent' gave too much indent to a line after a "};" that ends an array
+  init.
+- Support declaration lines ending in "," and "\".  (Meikel Brandmeyer)
+- A case statement inside a do-while loop was used for indenting a line after
+  the do-while loop. (Meikel Brandmeyer)
+- When skipping a string in a line with one double quote it could continue in
+  the previous line. (Meikel Brandmeyer)
+
+When 'list' is set, 'hlsearch' didn't highlight a match at the end of the
+line.  Now highlight the '$'.
+
+The Paste menu item in the menu bar, the popup menu and the toolbar were all
+different.  Now made them all equal to how it was done in mswin.vim.
+
+st_dev can be smaller than "unsigned".  The compiler may give an overflow
+warning.  Added a configure check for dev_t.
+
+Athena: closing a confirm() dialog killed Vim.
+
+Various typos in the documentation. (Matt Dunford)
+
+Python interface: The definition of _DEBUG could cause trouble, undefine it.
+The error message for not being able to load the shared library wasn't
+translated.  (Muraoka Taro)
+
+Mac: (Dany St-Amant and Axel Kielhorn)
+- Several fixes.
+- Vim was eating 80% of the CPU time.
+- The project os_mac.pbxproj didn't work,  Moved it to a subdirectory.
+- Made the menu priority work for the menubar.
+- Fixed a problem with dragging the scrollbar.
+- Cleaned up the various #ifdefs.
+
+Unix: When catching a deadly signal and we keep getting one use _exit() to
+exit in a quick and dirty way.
+
+Athena menu ordering didn't work correctly. (David Harrison)
+
+A ":make" or ":grep" command with a long argument could cause a crash.
+
+Doing ":new file" and using "Quit" for the ATTENTION dialog still opened a new
+window.
+
+GTK: When starting the GUI and there is an error in the .vimrc file, don't
+present the wait-return prompt, since the message was given in the terminal.
+
+When there was an error in a .vimrc file the terminal where gvim was started
+could be cleared.  Set msg_row in main.c before writing any messages.
+
+GTK and X11 GUI: When trying to read characters from the user (e.g. with
+input()) before the Vim window was opened caused Vim to hang when it was
+started from the desktop.
+
+OS/390 uses 31 bit pointers.  That broke some computations with MAX_COL.
+Reduce MAX_COL by one bit for OS/390. (Ralf Schandl)
+
+When defining a function and it already exists, Vim didn't say it existed
+until after typing it.  Now do this right away when typing it.
+
+The message remembered for displaying later (keep_msg) was sometimes pointing
+into a generic buffer, which might be changed by the time the message is
+displayed.  Now make a copy of the message.
+
+When using multi-byte characters in a menu and a trailing byte is a backslash,
+the menu would not be created correctly.  (Muraoka Taro)
+Using a multibyte character in the substitute string where a trail byte is a
+backslash didn't work.  (Muraoka Taro)
+
+When setting "t_Co" in a vimrc file, then setting it automatically from an
+xterm termresponse and then setting it again manually caused a crash.
+
+When getting the value of a string option that is not supported, the number
+zero was returned.  This breaks a check like "&enc == "asdf".  Now an empty
+string is returned for string options.
+
+Crashed when starting the GTK GUI while using 'notitle' in the vimrc, setting
+'title' in the gvimrc and starting the GUI with ":gui".  Closed the connection
+to the X server accidentally.
+
+Had to hit return after selecting an entry for ":ts".
+
+The message from ":cn" message was sometimes cleared.  Now display it after
+redrawing if it doesn't cause a scroll (truncated when necessary).
+
+hangulin.c didn't compile when the GUI was disabled.  Disable it when it won't
+work.
+
+When setting a termcap option like "t_CO", the value could be displayed as
+being for a normal key with a modifier, like "<M-=>".
+
+When expanding the argument list, entries which are a directory name did not
+get included.  This stopped "vim c:/" from opening the file explorer.
+
+":syn match sd "^" nextgroup=asdf" skipped the first column and matched the
+nextgroup in the second column.
+
+GUI: When 'lazyredraw' is set, 'showmatch' didn't work.  Required flushing
+the output.
+
+Don't define the <NetMouse> termcode in an xterm, reduces the problem when
+someone types <Esc> } in Insert mode.
+
+Made slash_adjust() work correctly for multi-byte characters. (Yasuhiro
+Matsumoto)
+Using a filename in Big5 encoding for autocommands didn't work (backslash in
+trailbyte).  (Yasuhiro Matsumoto)
+
+DOS and Windows: Expanding *.vim also matched file.vimfoo.  Expand path like
+Unix to avoid problems with Windows dir functions.  Merged the DOS and Win32
+functions.
+
+Win32: Gvimext could not edit more than a few files at once, the length of the
+argument was fixed.
+
+"ls -1 * | xargs vim" worked, but the input was in cooked mode.  Now switch to
+raw mode when needed.  Use dup() to copy the stderr file descriptor to stdin
+to make shell commands work.  No longer requires an external program to do
+this.
+
+When using ":filetype off", ftplugin and indent usage would be switched off at
+the same time.  Don't do this, setting 'filetype' manually can still use them.
+
+GUI: When writing a double-byte character, it could be split up in two calls
+to gui_write(), which doesn't work.  Now flush before the output buffer
+becomes full.
+
+When 'laststatus' is set and 'cmdheight' is two or bigger, the intro message
+would be written over the status line.
+The ":intro" command didn't work when there wasn't enough room.
+
+Configuring for Ruby failed with a recent version of Ruby. (Akinori Musha)
+
+Athena: When deleting the directory in which Vim was started, using the file
+browser made Vim exit.  Removed the use of XtAppError().
+
+When using autoconf 2.50, UNIX was not defined.  Moved the comment for "#undef
+UNIX" to a separate line.
+
+Win32: Disabled _OnWindowPosChanging() to make maximize work better.
+
+Win32: Compiling with VC 4.0 didn't work. (Walter Briscoe)
+
+Athena:
+- Finally fixed the problems with deleting a menu. (David Harrison)
+- Athena: When closing the confirm() dialog, worked like OK was pressed,
+  instead of Cancel.
+
+The file explorer didn't work in compatible mode, because of line
+continuation.
+
+Didn't give an error message for ":digraph a".
+
+When using Ex mode in the GUI and typing a special key, <BS> didn't delete it
+correctly.  Now display '?' for a special key.
+
+When an operator is pending, clicking in another window made it apply to that
+window, even though the line numbers could be beyond the end of the buffer.
+
+When a function call doesn't have a terminating ")" Vim could crash.
+
+Perl interface: could crash on exit with perl 5.6.1. (Anduin Withers)
+
+Using %P in 'errorformat' wasn't handled correctly. (Tomas Zellerin)
+
+Using a syntax cluster that includes itself made Vim crash.
+
+GUI: With 'ls' set to 2, dragging the status line all the way up, then making
+the Vim window smaller: Could not the drag status line anymore.
+
+"vim -c startinsert! file" placed cursor on last char of a line, instead of
+after it.  A ":set" command in the buffer menu set w_set_curswant.  Now don't
+do this when w_curswant is MAXCOL.
+
+Win32: When the gvim window was maximized and selecting another font, the
+window would no longer fill the screen.
+
+The line with 'pastetoggle' in ":options" didn't show the right value when it
+is a special key.  Hitting <CR> didn't work either.
+
+Formatting text, resulting in a % landing in the first line, repeated the % in
+the following lines, like it's the start of a comment.
+
+GTK: When adding a toolbar item while gvim is already running, it wasn't
+possible to use the tooltip.  Now it works by adding the tooltip first.
+
+The output of "g CTRL-G" mentioned "Char" but it's actually bytes.
+
+Searching for the end of a oneline region didn't work correctly when there is
+an offset for the highlighting.
+
+Syntax highlighting: When synchronizing on C-comments, //*/ was seen as the
+start of a comment.
+
+Win32: Without scrollbars present, the MS mouse scroll wheel didn't work.
+Also handle the scrollbars when they are not visible.
+
+Motif: When there is no right scrollbar, the bottom scrollbar would still
+leave room for it.  (Martin Dalecki)
+
+When changing 'guicursor' and the value is invalid, some of the effects would
+still take place.  Now first check for errors and only make the new value
+effective when it's OK.
+
+Using "A" In Visual block mode, appending to lines that don't extend into the
+block, padding was wrong.
+
+When pasting a block of text, a character that occupies more than one screen
+column could be deleted and spaces inserted instead.  Now only do that with a
+tab.
+
+Fixed conversion of documentation to HTML using Perl. (Dan Sharp)
+
+Give an error message when a menu name starts with a dot.
+
+Avoid a hang when executing a shell from the GUI on HP-UX by pushing "ptem"
+even when sys/ptem.h isn't present.
+
+When creating the temp directory, make sure umask is 077, otherwise the
+directory is not accessible when it was set to 0177.
+
+Unix: When resizing the window and a redraw is a bit slow, could get a window
+resize event while redrawing, resulting in a messed up window.  Any input
+(e.g., a mouse click) would redraw.
+
+The "%B" item in the status line became zero in Insert mode (that's normal)
+for another than the current window.
+
+The menu entries to convert to xxd and back didn't work in Insert mode.
+
+When ":vglobal" didn't find a line where the pattern doesn't match, the error
+message would be the wrong way around.
+
+When ignoring a multi-line error message with "%-A", the continuation lines
+would be used anyway. (Servatius Brandt)
+
+"grx" on a double-wide character inserted "x", instead of replacing the
+character with "x ".  "gR" on <xx> ('display' set the "uhex") didn't replace
+at all.  When doing "gRxx" on a control character the first "x" would be
+inserted, breaking the alignment.
+
+Added "0)" to 'cinkeys', so that when typing a ) it is put in the same place
+as where "==" would put it.
+
+Win32: When maximized, adding/removing toolbar didn't resize the text area.
+
+When using <C-RightMouse> a count was discarded.
+
+When typing CTRL-V and <RightMouse> in the command line, would insert
+<LeftMouse>.
+
+Using "vis" or "vas" when 'selection' is exclusive didn't include the last
+character.
+
+When adding to an option like 'grepprg', leading space would be lost.  Don't
+expand environment variables when there is no comma separating the items.
+
+GUI: When using a bold-italic font, would still use the bold trick and
+underlining.
+
+Motif: The default button didn't work in dialogs, the first one was always
+used.  Had to give input focus to the default button.
+
+When using CTRL-T to jump within the same file, the '' mark wasn't set.
+
+Undo wasn't Vi compatible when using the 'c' flag for ":s".  Now it undoes the
+whole ":s" command instead of each confirmed replacement.
+
+The Buffers menu, when torn-off, disappeared when being refreshed.  Add a
+dummy item to avoid this.
+
+Removed calling msg_start() in main(), it should not be needed.
+
+vim_strpbrk() did not support multibyte characters. (Muraoka Taro)
+
+The Amiga version didn't compile, the code was too big for relative jumps.
+Moved a few files from ex_docmd.c to ex_cmds2.c
+
+When evaluating the "= register resulted in the "= register being changed, Vim
+would crash.
+
+When doing ":view file" and it fails, the current buffer was made read-only.
+
+Motif: For some people the separators in the toolbar disappeared when resizing
+the Vim window. (Martin Dalecki)
+
+Win32 GUI: when setting 'lines' to a huge number, would not compute the
+available space correctly.  Was counting the menu height twice.
+
+Conversion of the docs to HTML didn't handle the line with the +quickfix tag
+correctly. (Antonio Colombo)
+
+Win32: fname_case() didn't handle multi-byte characters correctly. (Yasuhiro
+Matsumoto)
+
+The Cygwin version had trouble with fchdir().  Don't use that function for
+Cygwin.
+
+The generic check in scripts.vim for "conf" syntax was done before some checks
+in filetype.vim, resulting in "conf" syntax too often.
+
+Dos32: Typing lagged behind.  Would wait for one biostick when checking if a
+character is available.
+
+GTK: When setting 'columns' while starting up "gvim", would set the width of
+the terminal it was started in.
+
+When using ESC in Insert mode, an autoindent that wraps to the next line
+caused the cursor to move to the end of the line temporarily.  When the
+character before the cursor was a double-wide multi-byte character the cursor
+would be on the right halve, which causes problems with some terminals.
+
+Didn't handle multi-byte characters correctly when expanding a file name.
+(Yasuhiro Matsumoto)
+
+Win32 GUI: Errors generated before the GUI is decided to start were not
+reported.
+
+globpath() didn't reserve enough room for concatenated results. (Anduin
+Withers)
+
+When expanding an option that is very long already, don't do the expansion, it
+would be truncated to MAXPATHL. (Anduin Withers)
+
+When 'selection' is "exclusive", using "Fx" in Visual mode only moved until
+just after the character.
+
+When using IME on the console to enter a file name, the screen may scroll up.
+Redraw the screen then. (Yasuhiro Matsumoto)
+
+Motif: In the find/replace dialog the "Replace" button didn't work first time,
+second time it replaced all matches.  Removed the use of ":s///c".
+GTK: Similar problems with the find/replace dialog, moved the code to a common
+function.
+
+X11: Use shared GC's for text. (Martin Dalecki)
+
+"]i" found the match under the cursor, instead of the first one below it.
+Same for "]I", "] CTRL-I", "]d", "]D" and "] CTRL-D".
+
+Win16: When maximized and the font is changed, don't change the window size.
+(Vince Negri)
+
+When 'lbr' is set, deleting a block of text could leave the cursor in the
+wrong position.
+
+Win32: When opening a file with the "Edit with Vim" popup menu entry,
+wildcards would cause trouble.  Added the "--literal" argument to avoid
+expanding file names.
+
+When using "gv", it didn't restore that "$" was used in Visual block mode.
+
+Win32 GUI: While waiting for a shell command to finish, the window wasn't
+redrawn at all. (Yasuhiro Matsumoto)
+
+Syntax highlighting: A match that continues on a next line because of a
+contained region didn't end when that region ended.
+
+The ":s" command didn't allow flags like 'e' and 'i' right after it.
+
+When using ":s" to split a line, marks were moved to the next line.  Vi keeps
+them in the first line.
+
+When using ":n" ":rew", the previous context mark was at the top of the file,
+while Vi puts it in the same place as the cursor.  Made it Vi compatible.
+
+Fixed Vi incompatibility: Text was not put in register 1 when using "c" and
+"d" with a motion character, when deleting within one line with one of the
+commands: % ( ) `<character> / ? N n { }
+
+Win32 GUI: The tooltip for tear-off items remained when the tear-off item was
+no longer selected.
+
+GUI: When typing ":" at the more prompt, would return to Normal mode and not
+redraw the screen.
+
+When starting Vim with an argument "-c g/at/p" the printed lines would
+overwrite each other.
+
+BeOS: Didn't compile.  Configure didn't add the os_beos files, the QNX check
+removed them.  Various changes to os_beos.cc. (Joshua Haberman)
+Removed the check for the hardware platform, the BeBox has not been produced
+for a long time now.
+
+Win32 GUI: don't use a message box when the shell returns an error code,
+display the message in the Vim window.
+
+Make_mvc.mak always included "/debug" for linking.  "GUI=no" argument didn't
+work.  Use "DEBUG=yes" instead of "DEBUG=1" to make it consistent. (Dan Sharp)
+
+When a line in the tags file ended in ;" (no TAB following) the command would
+not be recognized as a search command.
+
+X11: The inputMethod resource never worked.  Don't use the "none" input method
+for SGI, it apparently makes the first character in Input method dropped.
+
+Fixed incorrect tests in os_mac.h. (Axel Kielhorn)
+
+Win32 console: When the console where Vim runs in is closed, Vim could hang in
+trying to restore the window icon. (Yasuhiro Matsumoto)
+
+When using ":3call func()" or ":3,3call func() the line number was ignored.
+
+When 'showbreak' and 'linebreak' were both set, Visual highlighting sometimes
+continued until the end of the line.
+
+GTK GUI: Tearoff items were added even when 'guioptions' didn't contain 't'
+when starting up.
+
+MS-Windows: When the current directory includes a "~", searching files with
+"gf" or ":find" didn't work.  A "$" in the directory had the same problem.
+Added mch_has_exp_wildcard() functions.
+
+When reducing the Vim window height while starting up, would get an
+out-of-memory error message.
+
+When editing a very long search pattern, 'incsearch' caused the redraw of the
+command line to fail.
+
+Motif GUI: On some systems the "Help" menu would not be on the far right, as
+it should be.  On some other systems (esp. IRIX) the command line would not
+completely show.  Solution is to only resize the menubar for Lesstif.
+
+Using "%" in a line that contains "\\" twice didn't take care of the quotes
+properly.  Now make a difference between \" and \\".
+
+For non-Unix systems a dummy file is created when finding a swap name to
+detect a 8.3 filesystem.  When there is an existing swap file, would get a
+warning for the file being created outside of Vim.  Also, when closing the Vim
+window the file would remain.
+
+Motif: The menu height was always computed, using a "-menuheight" argument
+was setting the room for the command line.  Now make clear the argument is not
+supported.
+
+For some (EBCDIC) systems, POUND was equal to '#'.  Added an #if for that to
+avoid a duplicate case in a switch.
+
+The GUI may have problems when forking.  Always call _exit() instead of exit()
+in the parent, the child will call exit().
+
+Win32 GUI: Accented characters were often wrong in dialogs and tearoff menus.
+Now use CP_ACP instead of CP_OEMCP. (Vince Negri)
+
+When displaying text with syntax highlighting causes an error (e.g., running
+out of stack) the syntax highlighting is disabled to avoid further messages.
+
+When a command in a .vimrc or .gvimrc causes an ATTENTION prompt, and Vim was
+started from the desktop (no place to display messages) it would hang.  Now
+open the GUI window early to be able to display the messages and pop up the
+dialog.
+
+"r<CR>" on a multi-byte character deleted only the first byte of the
+character. "3r<CR>" deleted three bytes instead of three characters.
+
+When interrupting reading a file, Vi considers the buffer modified.  Added the
+'i' flag in 'cpoptions' flag for this (we don't want it modified to be able to
+do ":q").
+
+When using an item in 'guicursor' that starts with a colon, Vim would get
+stuck or crash.
+
+When putting a file mark in a help file and later jumping back to it, the
+options would not be set.  Extended the modeline in all help files to make
+this work better.
+
+When a modeline contained "::" the local option values would be printed.  Now
+ignore it.
+
+Some help files did not use a 8.3 names, which causes problems when using
+MS-DOS unzip.  Renamed "multibyte.txt" to "mbyte.txt", "rightleft.txt" to
+"rileft.txt", "tagsearch.txt" to "tagsrch.txt", "os_riscos.txt" to
+"os_risc.txt".
+
+When Visual mode is blockwise, using "iw" or "aw" made it characterwise.  That
+doesn't seem right, only do this when in linewise mode.  But then do it
+always, not only when start and end of Visual mode are equal.
+
+When using "viw" on a single-letter word and 'selection' is exclusive, would
+not include the word.
+
+When formatting text from Insert mode, using CTRL-O, could mess up undo
+information.
+
+While writing a file (also for the backup file) there was no check for an
+interrupt (hitting CTRL-C).  Vim could hang when writing a large file over a
+slow network, and moving the mouse didn't make it appear (when 'mousehide' is
+set) and the screen wasn't updated in the GUI.  Also allow interrupting when
+syncing the swap file, it can take a long time.
+
+When using ":mksession" while there is help window, it would later be restored
+to the right file but not marked as a help buffer.  ":help" would then open
+another window.  Now use the value "help" for 'buftype' to mark a help buffer.
+
+The session file contained absolute path names in option values, that doesn't
+work when the home directory depends on the situation.  Replace the home
+directory with ~/ when possible.
+
+When using 'showbreak' a TAB just after the shown break would not be counted
+correctly, the cursor would be positioned wrong.
+
+With 'showbreak' set to "--->" or "------->" and 'sts' set to 4, inserting
+tabs did not work right.  Could cause a crash.  Backspacing was also wrong,
+could get stuck at a line break.
+
+Win32: crashed when tearing off a menu with over 300 items.
+
+GUI: A menu or toolbar item would appear when only a tooltip was defined for
+it.
+
+When 'scrolloff' is non-zero and "$" is in 'cpoptions', using "s" while the
+last line of the file is the first line on screen, the text wasn't displayed.
+
+When running "autoconf", delete the configure cache to force starting cleanly
+when configure is run again.
+
+When changing the Normal colors for cterm, the value of 'background' was
+changed even when the GUI was used.
+
+The warning for a missing vimrun.exe was always given on startup, but some
+people just editing a file don't need to be bothered by it.  Only show it when
+vimrun would be used.
+
+When using "%" in a multibyte text it could get confused by trailbytes that
+match. (Muraoka Taro)
+
+Termcap entry for RiscOS was wrong, using 7 and 8 in octal codes.
+
+Athena: The title of a dialog window and the file selector window were not
+set. (David Harrison)
+
+The "htmlLink" highlight group specified colors, which gives problems when
+using a color scheme.  Added the "Underlined" highlight group for this.
+
+After using ":insert" or ":change" the '[ mark would be one line too low.
+
+When looking for the file name after a match with 'include' one character was
+skipped.  Same for 'define'.
+
+Win32 and DJGPP: When editing a file with a short name in a directory, and
+editing the same file but using the long name, would end up with two buffers
+on the same file.
+
+"gf" on a filename that starts with "../" only worked when the file being
+edited is in the current directory.  An include file search didn't work
+properly for files starting with "../" or ".".  Now search both relative to
+the file and to the current directory.
+
+When 'printheader', 'titlestring', 'iconstring', 'rulerformat' or 'statusline'
+contained "%{" but no following "}" memory was corrupted and a crash could
+happen.
+
+":0append" and then inserting two lines did not redraw the blank lines that
+were scrolled back down.
+
+When using insert mode completion in a narrow window, the message caused a
+scroll up.  Now shorten the message if it doesn't fit and avoid writing the
+ruler over the message.
+
+XIM still didn't work correctly on some systems, especially SGI/IRIX.  Added
+the 'imdisable' option, which is set by default for that system.
+
+Patch 6.0aw.008
+Problem:    When the first character of a file name is over 127, the Buffers
+	    menu entry would get a negative priority and cause problems.
+Solution:   Reduce the multiplier for the first character when computing
+	    the hash value for a Buffers menu entry.
+Files:	    runtime/menu.vim
+
+Patch 6.0aw.010
+Problem:    Win32: ":browse edit dir/dir" didn't work. (Vikas)
+Solution:   Change slashes to backslashes in the directory passed to the file
+	    browser.
+Files:	    src/gui_w48.c
+
+Athena file browser: On some systems wcstombs() can't be used to get the
+length of a multi-byte string.  Use the maximum length then. (Yasuhiro
+Matsumoto)
+
+Patch 6.0ax.001
+Problem:    When 'patchmode' is set, appending to a file gives an empty
+	    original file. (Ed Ralston)
+Solution:   Also make a backup copy when appending and 'patchmode' is set.
+Files:	    src/fileio.c
+
+Patch 6.0ax.002
+Problem:    When 'patchmode' is set, appending to a compressed file gives an
+	    uncompressed original file. (Ed Ralston)
+Solution:   Create the original file before decompressing.
+Files:	    runtime/plugin/gzip.vim
+
+Patch 6.0ax.005
+Problem:    Athena file selector keeps the title of the first invocation.
+Solution:   Set the title each time the file selector is opened. (David
+	    Harrison)
+Files:	    src/gui_at_fs.c
+
+Patch 6.0ax.007
+Problem:    When using GPM (mouse driver in a Linux console) a double click is
+	    interpreted as a scroll wheel click.
+Solution:   Check if GPM is being used when deciding if a mouse event is for
+	    the scroll wheel.
+Files:	    src/term.c
+
+Patch 6.0ax.010
+Problem:    The Edit.Save menu and the Save toolbar button didn't work when
+	    the buffer has no file name.
+Solution:   Use a file browser to ask for a file name.  Also fix the toolbar
+	    Find item in Visual mode.
+Files:	    runtime/menu.vim
+
+Patch 6.0ax.012
+Problem:    When 'cpoptions' contains "$", breaking a line for 'textwidth'
+	    doesn't redraw properly. (Stefan Schulze)
+Solution:   Remove the dollar before breaking the line.
+Files:	    src/edit.c
+
+Patch 6.0ax.014
+Problem:    Win32: On Windows 98 ":make -f file" doesn't work when 'shell' is
+	    "command.com" and 'makeprg' is "nmake".  The environment isn't
+	    passed on to "nmake".
+Solution:   Also use vimrun.exe when redirecting the output of a command.
+Files:	    src/os_win32.c
+
+Patch 6.0ax.016
+Problem:    The version number was reported wrong in the intro screen.
+Solution:   Check for a version number with two additional letters.
+Files:	    src/version.c
+
+Patch 6.0ax.019
+Problem:    When scrolling a window with folds upwards, switching to another
+	    vertically split window and back may not update the scrollbar.
+Solution:   Limit w_botline to the number of lines in the buffer plus one.
+Files:	    src/move.c
+
+
+==============================================================================
+VERSION 6.1						*version-6.1*
+
+This section is about improvements made between version 6.0 and 6.1.
+
+This is a bug-fix release, there are not really any new features.
+
+
+Changed							*changed-6.1*
+-------
+
+'iminsert' and 'imsearch' are no longer set as a side effect of defining a
+language-mapping using ":lmap".
+
+
+Added							*added-6.1*
+-----
+
+Syntax files:
+ampl		AMPL (David Krief)
+ant		Ant (Johannes Zellner)
+baan		Baan (Her van de Vliert)
+cs		C# (Johannes Zellner)
+lifelines	Lifelines (Patrick Texier)
+lscript		LotusScript (Taryn East)
+moo		MOO (Timo Frenay)
+nsis		NSIS (Alex Jakushev)
+ppd		Postscript Printer Description (Bjoern Jacke)
+rpl		RPL/2 (Joel Bertrand)
+scilab		Scilab (Benoit Hamelin)
+splint		Splint (Ralf Wildenhues)
+sqlj		SQLJ (Andreas Fischbach)
+wvdial		WvDial (Prahlad Vaidyanathan)
+xf86conf	XFree86 config (Nikolai Weibull)
+xmodmap		Xmodmap (Nikolai Weibull)
+xslt		Xslt (Johannes Zellner)
+monk		Monk (Mike Litherland)
+xsd		Xsd (Johannes Zellner)
+cdl		CDL (Raul Segura Acevedo)
+sendpr		Send-pr (Hendrik Scholz)
+
+Added indent file for Scheme. (Dorai Sitaram)
+Added indent file for Prolog. (Kontra Gergely)
+Added indent file for Povray (David Necas)
+Added indent file for IDL (Aleksandar Jelenak)
+Added C# indent and ftplugin scripts.
+
+Added Ukrainian menu translations. (Bohdan Vlasyuk)
+Added ASCII version of the Czech menus. (Jiri Brezina)
+
+Added Simplified Chinese translation of the tutor. (Mendel L Chan)
+
+Added Russian keymap for yawerty keyboard.
+
+Added an explanation of using the vimrc file in the tutor.
+Changed tutor.vim to get the right encoding for the Taiwainese tutor.
+
+Added Russian tutor. (Andrey Kiselev)
+Added Polish tutor. (Mikolaj Machowski)
+
+Added darkblue color scheme. (Bohdan Vlasyuk)
+
+When packing the dos language archive automatically generate the .mo files
+that are required.
+
+Improved NSIS script to support NSIS 180.  Added icons for the
+enabled/disabled status. (Mirek Pruchnik)
+
+cp1250 version of the Slovak message translations.
+
+Compiler plugins for IRIX compilers. (David Harrison)
+
+
+Fixed							*fixed-6.1*
+-----
+
+The license text was updated to make the meaning clearer and make it
+compatible with the GNU GPL.  Otherwise distributors have a problem when
+linking Vim with a GPL'ed library.
+
+When installing the "less.sh" script it was not made executable. (Chuck Berg)
+
+Win32: The "9" key on the numpad wasn't working. (Julian Kinraid)
+
+The NSIS install script didn't work with NSIS 1.80 or later.  Also add
+Vim-specific icons. (Pruchnik)
+
+The script for conversion to HTML contained an "if" in the wrong place.
+(Michael Geddes)
+
+Allow using ":ascii" in the sandbox, it's harmless.
+
+Removed creat() from osdef2.h.in, it wasn't used and may cause a problem when
+it's redefined to creat64().
+
+The text files in the VisVim directory were in "dos" format.  This caused
+problems when applying a patch.  Now keep them in "unix" format and convert
+them to "dos" format only for the PC archives.
+
+Add ruby files to the dos source archive, they can be used by Make_mvc.mak.
+(Mirek Pruchnik)
+
+"cp -f" doesn't work on all systems.  Change "cp -f" in the Makefile to "rm
+-f" and "cp".
+
+Didn't compile on a Compaq Tandem Himalaya OSS. (Michael A. Benzinger)
+
+The GTK file selection dialog didn't include the "Create Dir", "Delete File"
+and "Rename File" buttons.
+
+When doing ":browse source" the dialog has the title "Run Macro".  Better
+would be "Source Vim script". (Yegappan Lakshmanan)
+
+Win32: Don't use the printer font as default for the font dialog.
+
+"make doslang" didn't work when configure didn't run (yet).  Set $MAKEMO to
+"yes". (Mirek Pruchnik)
+
+The ToolBar TagJump item used "g]", which prompts for a selection even when
+there is only one matching tag.  Use "g<C-]>" instead.
+
+The ming makefile for message translations didn't have the right list of
+files.
+
+The MS-Windows 3.1 version complains about LIBINTL.DLL not found.  Compile
+this version without message translations.
+
+The Borland 5 makefile contained a check for Ruby which is no longer needed.
+The URLs for the TCL library was outdated. (Dan Sharp)
+
+The eviso.ps file was missing from the DOS runtime archive, it's needed for
+printing PostScript in the 32bit DOS version.
+
+In menu files ":scriptencoding" was used in a wrong way after patch 6.1a.032
+Now use ":scriptencoding" in the file where the translations are given.  Do
+the same for all menus in latin1 encoding.
+
+Included a lot of fixes for the Macintosh, mostly to make it work with Carbon.
+(Dany StAmant, Axel Kielhorn, Benji Fisher)
+
+Improved the vimtutor shell script to use $TMPDIR when it exists, and delete
+the copied file when exiting in an abnormal way. (Max Ischenko)
+
+When "iconv.dll" can't be found, try using "libiconv.dll".
+
+When encryption is used, filtering with a shell command wasn't possible.
+
+DJGPP: ":cd c:" always failed, can't get permissions for "c:".
+Win32: ":cd c:/" failed if the previous current directory on c: had become
+invalid.
+
+DJGPP: Shift-Del and Del both produce \316\123.  Default mapping for Del is
+wrong.  Disabled it.
+
+Dependencies on header files in MingW makefile was wrong.
+
+Win32: Don't use ACL stuff for MSVC 4.2, it's not supported. (Walter Briscoe)
+
+Win32 with Borland: bcc.cfg was caching the value for $(BOR), but providing a
+different argument to make didn't regenerate it.
+
+Win32 with MSVC: Make_ivc.mak generates a new if_ole.h in a different
+directory, the if_ole.h in the src directory may be used instead.  Delete the
+distributed file.
+
+When a window is vertically split and then ":ball" is used, the window layout
+is messed up, can cause a crash. (Muraoka Taro)
+
+When 'insertmode' is set, using File/New menu and then double clicking, "i" is
+soon inserted. (Merlin Hansen)
+
+When Select mode is active and using the Buffers menu to switch to another
+buffer, an old selection comes back.  Reset VIsual_reselect for a ":buffer"
+command.
+
+When Select mode is active and 'insertmode' is set, using the Buffers menu to
+switch to another buffer, did not return to Insert mode.  Make sure
+"restart_edit" is set.
+
+When double clicking on the first character of a word while 'selection' is
+"exclusive" didn't select that word.
+
+
+Patch 6.0.001
+Problem:    Loading the sh.vim syntax file causes error messages . (Corinna
+	    Vinschen)
+Solution:   Add an "if". (Charles Campbell)
+Files:	    runtime/syntax/sh.vim
+
+Patch 6.0.002
+Problem:    Using a '@' item in 'viminfo' doesn't work. (Marko Leipert)
+Solution:   Add '@' to the list of accepted items.
+Files:	    src/option.c
+
+Patch 6.0.003
+Problem:    The configure check for ACLs on AIX doesn't work.
+Solution:   Fix the test program so that it compiles. (Tomas Ogren)
+Files:	    src/configure.in, src/auto/configure
+
+Patch 6.0.004
+Problem:    The find/replace dialog doesn't reuse a previous argument
+	    properly.
+Solution:   After removing a "\V" terminate the string. (Zwane Mwaikambo)
+Files:	    src/gui.c
+
+Patch 6.0.005
+Problem:    In Insert mode, "CTRL-O :ls" has a delay before redrawing.
+Solution:   Don't delay just after wait_return() was called.  Added the
+	    did_wait_return flag.
+Files:	    src/globals.h, src/message.c, src/normal.c, src/screen.c
+
+Patch 6.0.006
+Problem:    With a vertical split, 'number' set and 'scrolloff' non-zero,
+	    making the window width very small causes a crash. (Niklas
+	    Lindstrom)
+Solution:   Check for a zero width.
+Files:	    src/move.c
+
+Patch 6.0.007
+Problem:    When setting 'filetype' while there is no FileType autocommand, a
+	    following ":setfiletype" would set 'filetype' again. (Kobus
+	    Retief)
+Solution:   Set did_filetype always when 'filetype' has been set.
+Files:	    src/option.c
+
+Patch 6.0.008
+Problem:    'imdisable' is missing from the options window. (Michael Naumann)
+Solution:   Add an entry for it.
+Files:	    runtime/optwin.vim
+
+Patch 6.0.009
+Problem:    Nextstep doesn't have S_ISBLK. (John Beppu)
+Solution:   Define S_ISBLK using S_IFBLK.
+Files:	    src/os_unix.h
+
+Patch 6.0.010
+Problem:    Using "gf" on a file name starting with "./" or "../" in a buffer
+	    without a name causes a crash. (Roy Lewis)
+Solution:   Check for a NULL file name.
+Files:	    src/misc2.c
+
+Patch 6.0.011
+Problem:    Python: After replacing or deleting lines get an ml_get error.
+	    (Leo Lipelis)
+Solution:   Adjust the cursor position for deleted or added lines.
+Files:	    src/if_python.c
+
+Patch 6.0.012
+Problem:    Polish translations contain printf format errors, this can result
+	    in a crash when using one of them.
+Solution:   Fix for translated messages. (Michal Politowski)
+Files:	    src/po/pl.po
+
+Patch 6.0.013
+Problem:    Using ":silent! cmd" still gives some error messages, like for an
+	    invalid range. (Salman Halim)
+Solution:   Reset emsg_silent after calling emsg() in do_one_cmd().
+Files:	    src/ex_docmd.c
+
+Patch 6.0.014
+Problem:    When 'modifiable' is off and 'virtualedit' is "all", "rx" on a TAB
+	    still changes the buffer. (Muraoka Taro)
+Solution:   Check if saving the line for undo fails.
+Files:	    src/normal.c
+
+Patch 6.0.015
+Problem:    When 'cpoptions' includes "S" and "filetype plugin on" has been
+	    used, can get an error for deleting the b:did_ftplugin variable.
+	    (Ralph Henderson)
+Solution:   Only delete the variable when it exists.
+Files:	    runtime/ftplugin.vim
+
+Patch 6.0.016
+Problem:    bufnr(), bufname() and bufwinnr() don't find unlisted buffers when
+	    the argument is a string. (Hari Krishna Dara)
+	    Also for setbufvar() and getbufvar().
+Solution:   Also find unlisted buffers.
+Files:	    src/eval.c
+
+Patch 6.0.017
+Problem:    When 'ttybuiltin' is set and a builtin termcap entry defines t_Co
+	    and the external one doesn't, it gets reset to empty. (David
+	    Harrison)
+Solution:   Only set t_Co when it wasn't set yet.
+Files:	    src/term.c
+
+Patch 6.0.018
+Problem:    Initializing 'encoding' may cause a crash when setlocale() is not
+	    used. (Dany St-Amant)
+Solution:   Check for a NULL pointer.
+Files:	    src/mbyte.c
+
+Patch 6.0.019
+Problem:    Converting a string with multi-byte characters to a printable
+	    string, e.g., with strtrans(), may cause a crash. (Tomas Zellerin)
+Solution:   Correctly compute the length of the result in transstr().
+Files:	    src/charset.c
+
+Patch 6.0.020
+Problem:    When obtaining the value of a global variable internally, could
+	    get the function-local value instead.  Applies to using <Leader>
+	    and <LocalLeader> and resetting highlighting in a function.
+Solution:   Prepend "g:" to the variable name. (Aric Blumer)
+Files:	    src/syntax.c, src/term.c
+
+Patch 6.0.021
+Problem:    The 'cscopepathcomp' option didn't work.
+Solution:   Change USE_CSCOPE to FEAT_CSCOPE. (Mark Feng)
+Files:	    src/option.c
+
+Patch 6.0.022
+Problem:    When using the 'langmap' option, the second character of a command
+	    starting with "g" isn't adjusted.
+Solution:   Apply 'langmap' to the second character. (Alex Kapranoff)
+Files:	    src/normal.c
+
+Patch 6.0.023
+Problem:    Loading the lhaskell syntax doesn't work. (Thore B. Karlsen)
+Solution:   Use ":runtime" instead of "source" to load haskell.vim.
+Files:	    runtime/syntax/lhaskell.vim
+
+Patch 6.0.024
+Problem:    Using "CTRL-V u 9900" in Insert mode may cause a crash. (Noah
+	    Levitt)
+Solution:   Don't insert a NUL byte in the text, use a newline.
+Files:	    src/misc1.c
+
+Patch 6.0.025
+Problem:    The pattern "\vx(.|$)" doesn't match "x" at the end of a line.
+	    (Preben Peppe Guldberg)
+Solution:   Always see a "$" as end-of-line after "\v".  Do the same for "^".
+Files:	    src/regexp.c
+
+Patch 6.0.026
+Problem:    GTK: When using arrow keys to navigate through the menus, the
+	    separators are selected.
+Solution:   Set the separators "insensitive". (Pavel Kankovsky)
+Files:	    src/gui_gtk.c, src/gui_gtk_x11.c
+
+Patch 6.0.027
+Problem:    VMS: Printing doesn't work, the file is deleted too quickly.
+	    No longer need the VMS specific printing menu.
+	    gethostname() is not available with VAXC.
+	    The makefile was lacking selection of the tiny-huge feature set.
+Solution:   Adjust the 'printexpr' option default. Fix the other problems and
+	    update the documentation.  (Zoltan Arpadffy)
+Files:	    runtime/doc/os_vms.txt, runtime/menu.vim, src/INSTALLvms.txt,
+	    src/Make_vms.mms, src/option.c, src/os_unix.c, src/os_vms_conf.h
+
+Patch 6.0.028
+Problem:    Can't compile without +virtualedit and with +visualextra. (Geza
+	    Lakner)
+Solution:   Add an #ifdef for +virtualedit.
+Files:	    src/ops.c
+
+Patch 6.0.029
+Problem:    When making a change in line 1, then in line 2 and then deleting
+	    line 1, undo info could be wrong. Only when the changes are undone
+	    at once. (Gerhard Hochholzer)
+Solution:   When not saving a line for undo because it was already done
+	    before, remember for which entry the last line must be computed.
+	    Added ue_getbot_entry pointer for this.  When the number of lines
+	    changes, adjust the position of newer undo entries.
+Files:	    src/structs.h, src/undo.c
+
+Patch 6.0.030
+Problem:    Using ":source! file" doesn't work inside a loop or after
+	    ":argdo". (Pavol Juhas)
+Solution:   Execute the commands in the file right away, do not let the main
+	    loop do it.
+Files:	    src/ex_cmds2.c, src/ex_docmd.c, src/getchar.c, src/globals.h,
+	    src/proto/ex_docmd.pro, src/proto/getchar.pro
+
+Patch 6.0.031
+Problem:    Nextstep doesn't have setenv() or putenv().  (John Beppu)
+Solution:   Move putenv() from pty.c to misc2.c
+Files:	    src/misc2.c, src/pty.c
+
+Patch 6.0.032
+Problem:    When changing a setting that affects all folds, they are not
+	    displayed immediately.
+Solution:   Set the redraw flag in foldUpdateAll().
+Files:	    src/fold.c
+
+Patch 6.0.033
+Problem:    Using 'wildmenu' on MS-Windows, file names that include a space
+	    are only displayed starting with that space. (Xie Yuheng)
+Solution:   Don't recognize a backslash before a space as a path separator.
+Files:	    src/screen.c
+
+Patch 6.0.034
+Problem:    Calling searchpair() with three arguments could result in a crash
+	    or strange error message. (Kalle Bjorklid)
+Solution:   Don't use the fifth argument when there is no fourth argument.
+Files:	    src/eval.c
+
+Patch 6.0.035
+Problem:    The menu item Edit/Global_Settings/Toggle_Toolbar doesn't work
+	    when 'ignorecase' is set. (Allen Castaban)
+Solution:   Always match case when checking if a flag is already present in
+	    'guioptions'.
+Files:	    runtime/menu.vim
+
+Patch 6.0.036
+Problem:    OS/2, MS-DOS and MS-Windows: Using a path that starts with a
+	    slash in 'tags' doesn't work as expected. (Mathias Koehrer
+Solution:   Only use the drive, not the whole path to the current directory.
+	    Also make it work for "c:dir/file".
+Files:	    src/misc2.c
+
+Patch 6.0.037
+Problem:    When the user has set "did_install_syntax_menu" to avoid the
+	    default Syntax menu it still appears. (Virgilio)
+Solution:   Don't add the three default items when "did_install_syntax_menu"
+	    is set.
+Files:	    runtime/menu.vim
+
+Patch 6.0.038
+Problem:    When 'selection' is "exclusive", deleting a block of text at the
+	    end of a line can leave the cursor beyond the end of the line.
+Solution:   Correct the cursor position.
+Files:	    src/ops.c
+
+Patch 6.0.039
+Problem:    "gP" leaves the cursor in the wrong position when 'virtualedit' is
+	    used.  Using "c" in blockwise Visual mode leaves the cursor in a
+	    strange position.
+Solution:   For "gP" reset the "coladd" field for the '] mark.  For "c" leave
+	    the cursor on the last inserted character.
+Files:	    src/ops.c
+
+Patch 6.0.040
+Problem:    When 'fileencoding' is invalid and writing fails because of
+	    this, the original file is gone. (Eric Carlier)
+Solution:   Restore the original file from the backup.
+Files:	    src/fileio.c
+
+Patch 6.0.041
+Problem:    Using ":language messages en" when LC_MESSAGES is undefined
+	    results in setting LC_CTYPE. (Eric Carlier)
+Solution:   Set $LC_MESSAGES instead.
+Files:	    src/ex_cmds2.c
+
+Patch 6.0.042
+Problem:    ":mksession" can't handle file names with a space.
+Solution:   Escape special characters in file names with a backslash.
+Files:	    src/ex_docmd.c
+
+Patch 6.0.043
+Problem:    Patch 6.0.041 was wrong.
+Solution:   Use mch_getenv() instead of vim_getenv().
+Files:	    src/ex_cmds2.c
+
+Patch 6.0.044
+Problem:    Using a "containedin" list for a syntax item doesn't work for an
+	    item that doesn't have a "contains" argument.  Also, "containedin"
+	    doesn't ignore a transparent item. (Timo Frenay)
+Solution:   When there is a "containedin" argument somewhere, always check for
+	    contained items.  Don't check for the transparent item but the
+	    item it's contained in.
+Files:	    src/structs.h, src/syntax.c
+
+Patch 6.0.045
+Problem:    After creating a fold with a Visual selection, another window
+	    with the same buffer still has inverted text. (Sami Salonen)
+Solution:   Redraw the inverted text.
+Files:	    src/normal.c
+
+Patch 6.0.046
+Problem:    When getrlimit() returns an 8 byte number the check for running
+	    out of stack may fail. (Anthony Meijer)
+Solution:   Skip the stack check if the limit doesn't fit in a long.
+Files:	    src/auto/configure, src/config.h.in, src/configure.in,
+	    src/os_unix.c
+
+Patch 6.0.047
+Problem:    Using a regexp with "\(\)" inside a "\%[]" item causes a crash.
+	    (Samuel Lacas)
+Solution:   Don't allow nested atoms inside "\%[]".
+Files:	    src/regexp.c
+
+Patch 6.0.048
+Problem:    Win32: In the console the mouse doesn't always work correctly.
+	    Sometimes after getting focus a mouse movement is interpreted like
+	    a button click.
+Solution:   Use a different function to obtain the number of mouse buttons.
+	    Avoid recognizing a button press from undefined bits. (Vince Negri)
+Files:	    src/os_win32.c
+
+Patch 6.0.049
+Problem:    When using evim the intro screen is misleading. (Adrian Nagle)
+Solution:   Mention whether 'insertmode' is set and the menus to be used.
+Files:	    runtime/menu.vim, src/version.c
+
+Patch 6.0.050
+Problem:    UTF-8: "viw" doesn't include non-ASCII characters before the
+	    cursor. (Bertilo Wennergren)
+Solution:   Use dec_cursor() instead of decrementing the column number.
+Files:	    src/search.c
+
+Patch 6.0.051
+Problem:    UTF-8: Using CTRL-R on the command line doesn't insert composing
+	    characters. (Ron Aaron)
+Solution:   Also include the composing characters and fix redrawing them.
+Files:	    src/ex_getln.c, src/ops.c
+
+Patch 6.0.052
+Problem:    The check for rlim_t in patch 6.0.046 does not work on some
+	    systems. (Zdenek Sekera)
+Solution:   Also look in sys/resource.h for rlim_t.
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.0.053 (extra)
+Problem:    Various problems with QNX.
+Solution:   Minor fix for configure.  Switch on terminal clipboard support in
+	    main.c.  Fix "pterm" mouse support.  os_qnx.c didn't build without
+	    photon. (Julian Kinraid)
+Files:	    src/auto/configure, src/configure.in, src/gui_photon.c,
+	    src/main.c, src/misc2.c, src/option.h, src/os_qnx.c, src/os_qnx.h,
+	    src/syntax.c
+
+Patch 6.0.054
+Problem:    When using mswin.vim, CTRL-V pastes a block of text like it is
+	    normal text.  Using CTRL-V in blockwise Visual mode leaves "x"
+	    characters behind.
+Solution:   Make CTRL-V work as it should.  Do the same for the Paste menu
+	    entries.
+Files:	    runtime/menu.vim, runtime/mswin.vim
+
+Patch 6.0.055
+Problem:    GTK: The selection isn't copied the first time.
+Solution:   Own the selection at the right moment.
+Files:	    src/gui_gtk_x11.c
+
+Patch 6.0.056
+Problem:    Using "CTRL-O cw" in Insert mode results in a nested Insert mode.
+	    <Esc> doesn't leave Insert mode then.
+Solution:   Only use nested Insert mode when 'insertmode' is set or when a
+	    mapping is used.
+Files:	    src/normal.c
+
+Patch 6.0.057
+Problem:    Using ":wincmd g}" in a function doesn't work.  (Gary Holloway)
+Solution:   Execute the command directly, instead of putting it in the
+	    typeahead buffer.
+Files:	    src/normal.c, src/proto/normal.pro, src/window.c
+
+Patch 6.0.058
+Problem:    When a Cursorhold autocommand moved the cursor, the ruler wasn't
+	    updated. (Bohdan Vlasyuk)
+Solution:   Update the ruler after executing the autocommands.
+Files:	    src/gui.c
+
+Patch 6.0.059
+Problem:    Highlighting for 'hlsearch' isn't visible in lines that are
+	    highlighted for diff highlighting.  (Gary Holloway)
+Solution:   Let 'hlsearch' highlighting overrule diff highlighting.
+Files:	    src/screen.c
+
+Patch 6.0.060
+Problem:    Motif: When the tooltip is to be popped up, Vim crashes.
+	    (Gary Holloway)
+Solution:   Check for a NULL return value from gui_motif_fontset2fontlist().
+Files:	    src/gui_beval.c
+
+Patch 6.0.061
+Problem:    The toolbar buttons to load and save a session do not correctly
+	    use v:this_session.
+Solution:   Check for v:this_session to be empty instead of existing.
+Files:	    runtime/menu.vim
+
+Patch 6.0.062
+Problem:    Crash when 'verbose' is > 3 and using ":shell". (Yegappan
+	    Lakshmanan)
+Solution:   Avoid giving a NULL pointer to printf().  Also output a newline
+	    and switch the cursor on.
+Files:	    src/misc2.c
+
+Patch 6.0.063
+Problem:    When 'cpoptions' includes "$", using "cw" to type a ')' on top of
+	    the "$" doesn't update syntax highlighting after it.
+Solution:   Stop displaying the "$" when typing a ')' in its position.
+Files:	    src/search.c
+
+Patch 6.0.064 (extra)
+Problem:    The NSIS install script doesn't work with newer versions of NSIS.
+	    The diff feature doesn't work when there isn't a good diff.exe on
+	    the system.
+Solution:   Replace the GetParentDir instruction by a user function.
+	    Fix a few cosmetic problems.  Use defined constants for the
+	    version number, so that it's defined in one place only.
+	    Only accept the install directory when it ends in "vim".
+	    (Eduardo Fernandez)
+	    Add a diff.exe and use it from the default _vimrc.
+Files:	    nsis/gvim.nsi, nsis/README.txt, src/dosinst.c
+
+Patch 6.0.065
+Problem:    When using ":normal" in 'indentexpr' it may use redo characters
+	    before its argument.  (Neil Bird)
+Solution:   Save and restore the stuff buffer in ex_normal().
+Files:	    src/ex_docmd.c, src/getchar.c, src/globals.h, src/structs.h
+
+Patch 6.0.066
+Problem:    Sometimes undo for one command is split into two undo actions.
+	    (Halim Salman)
+Solution:   Don't set the undo-synced flag when reusing a line that was
+	    already saved for undo.
+Files:	    src/undo.c
+
+Patch 6.0.067
+Problem:    if_xcmdsrv.c doesn't compile on systems where fd_set isn't defined
+	    in the usual header file (e.g., AIX). (Mark Waggoner)
+Solution:   Include sys/select.h in if_xcmdsrv.c for systems that have it.
+Files:	    src/if_xcmdsrv.c
+
+Patch 6.0.068
+Problem:    When formatting a Visually selected area with "gq" and the number
+	    of lines increases the last line may not be redrawn correctly.
+	    (Yegappan Lakshmanan)
+Solution:   Correct the area to be redrawn for inserted/deleted lines.
+Files:	    src/ops.c
+
+Patch 6.0.069
+Problem:    Using "K" on a word that includes a "!" causes a "No previous
+	    command" error, because the "!" is expanded. (Craig Jeffries)
+Solution:   Put a backslash before the "!".
+Files:	    src/normal.c
+
+Patch 6.0.070
+Problem:    Win32: The error message for a failed dynamic linking of a Perl,
+	    Ruby, Tcl and Python library is unclear about what went wrong.
+Solution:   Give the name of the library or function that could not be loaded.
+	    Also for the iconv and gettext libraries when 'verbose' is set.
+Files:	    src/eval.c, src/if_perl.xs, src/if_python.c, src/if_ruby.c,
+	    src/if_tcl.c, src/mbyte.c, src/os_win32.c, src/proto/if_perl.pro,
+	    src/proto/if_python.pro, src/proto/if_ruby.pro,
+	    src/proto/if_tcl.pro, src/proto/mbyte.pro
+
+Patch 6.0.071
+Problem:    The "iris-ansi" builtin termcap isn't very good.
+Solution:   Fix the wrong entries. (David Harrison)
+Files:	    src/term.c
+
+Patch 6.0.072
+Problem:    When 'lazyredraw' is set, a mapping that stops Visual mode, moves
+	    the cursor and starts Visual mode again causes a redraw problem.
+	    (Brian Silverman)
+Solution:   Redraw both the old and the new Visual area when necessary.
+Files:	    src/normal.c, src/screen.c
+
+Patch 6.0.073 (extra)
+Problem:    DJGPP: When using CTRL-Z to start a shell, the prompt is halfway
+	    the text. (Volker Kiefel)
+Solution:   Position the system cursor before starting the shell.
+Files:	    src/os_msdos.c
+
+Patch 6.0.074
+Problem:    When using "&" in a substitute string a multi-byte character with
+	    a trailbyte 0x5c is not handled correctly.
+Solution:   Recognize multi-byte characters inside the "&" part. (Muraoka Taro)
+Files:	    src/regexp.c
+
+Patch 6.0.075
+Problem:    When closing a horizontally split window while 'eadirection' is
+	    "hor" another horizontally split window is still resized. (Aron
+	    Griffis)
+Solution:   Only resize windows in the same top frame as the window that is
+	    split or closed.
+Files:	    src/main.c, src/proto/window.pro, src/window.c
+
+Patch 6.0.076
+Problem:    Warning for wrong pointer type when compiling.
+Solution:   Use char instead of char_u pointer.
+Files:	    src/version.c
+
+Patch 6.0.077
+Problem:    Patch 6.0.075 was incomplete.
+Solution:   Fix another call to win_equal().
+Files:	    src/option.c
+
+Patch 6.0.078
+Problem:    Using "daw" at the end of a line on a single-character word didn't
+	    include the white space before it.  At the end of the file it
+	    didn't work at all.  (Gavin Sinclair)
+Solution:   Include the white space before the word.
+Files:	    src/search.c
+
+Patch 6.0.079
+Problem:    When "W" is in 'cpoptions' and 'backupcopy' is "no" or "auto", can
+	    still overwrite a read-only file, because it's renamed. (Gary
+	    Holloway)
+Solution:   Add a check for a read-only file before renaming the file to
+	    become the backup.
+Files:	    src/fileio.c
+
+Patch 6.0.080
+Problem:    When using a session file that has the same file in two windows,
+	    the fileinfo() call in do_ecmd() causes a scroll and a hit-enter
+	    prompt. (Robert Webb)
+Solution:   Don't scroll this message when 'shortmess' contains 'O'.
+Files:	    src/ex_cmds.c
+
+Patch 6.0.081
+Problem:    After using ":saveas" the new buffer name is added to the Buffers
+	    menu with a wrong number. (Chauk-Mean Proum)
+Solution:   Trigger BufFilePre and BufFilePost events for the renamed buffer
+	    and BufAdd for the old name (which is with a new buffer).
+Files:	    src/ex_cmds.c
+
+Patch 6.0.082
+Problem:    When swapping screens in an xterm and there is an (error) message
+	    from the vimrc script, the shell prompt is after the message.
+Solution:   Output a newline when there was output on the alternate screen.
+	    Also when starting the GUI.
+Files:	    src/main.c
+
+Patch 6.0.083
+Problem:    GTK: When compiled without menu support the buttons in a dialog
+	    don't have any text. (Erik Edelmann)
+Solution:   Add the text also when GTK_USE_ACCEL isn't defined.  And define
+	    GTK_USE_ACCEL also when not using menus.
+Files:	    src/gui_gtk.c
+
+Patch 6.0.084
+Problem:    UTF-8: a "r" command with an argument that is a keymap for a
+	    character with a composing character can't be repeated with ".".
+	    (Raphael Finkel)
+Solution:   Add the composing characters to the redo buffer.
+Files:	    src/normal.c
+
+Patch 6.0.085
+Problem:    When 'mousefocus' is set, using "s" to go to Insert mode and then
+	    moving the mouse pointer to another window stops Insert mode,
+	    while this doesn't happen with "a" or "i". (Robert Webb)
+Solution:   Reset finish_op before calling edit().
+Files:	    src/normal.c
+
+Patch 6.0.086
+Problem:    When using "gu" the message says "~ed".
+Solution:   Make the message say "changed".
+Files:	    src/ops.c
+
+Patch 6.0.087 (lang)
+Problem:    Message translations are incorrect, which may cause a crash.
+	    (Peter Figura)
+	    The Turkish translations needed more work and the maintainer
+	    didn't have time.
+Solution:   Fix order of printf arguments.  Remove %2$d constructs.
+	    Add "-v" to msgfmt to get a warning for wrong translations.
+	    Don't install the Turkish translations for now.
+	    Update a few more translations.
+Files:	    src/po/Makefile, src/po/af.po, src/po/cs.po, src/po/cs.cp1250.po,
+	    src/po/de.po, src/po/es.po, src/po/fr.po, src/po/it.po,
+	    src/po/ja.po, src/po/ja.sjis.po, src/po/ko.po, src/po/pl.po,
+	    src/po/sk.po, src/po/uk.po, src/po/zh_CN.UTF-8.po,
+	    src/po/zh_CN.cp936.po, src/po/zh_CN.po, src/po/zh_TW.po
+
+Patch 6.0.088
+Problem:    "." doesn't work after using "rx" in Visual mode.  (Charles
+	    Campbell)
+Solution:   Also store the replacement character in the redo buffer.
+Files:	    src/normal.c
+
+Patch 6.0.089
+Problem:    In a C file, using "==" to align a line starting with "*  " after
+	    a line with "* -" indents one space too few.  (Piet Delport)
+Solution:   Align with the previous line if the comment-start-string matches
+	    there.
+Files:	    src/misc1.c
+
+Patch 6.0.090
+Problem:    When a wrapping line does not fit in a window and 'scrolloff' is
+	    bigger than half the window height, moving the cursor left or
+	    right causes the screen to flash badly. (Lubomir Host)
+Solution:   When there is not enough room to show 'scrolloff' screen lines and
+	    near the end of the line, show the end of the line.
+Files:	    src/move.c
+
+Patch 6.0.091
+Problem:    Using CTRL-O in Insert mode, while 'virtualedit' is "all" and the
+	    cursor is after the end-of-line, moves the cursor left. (Yegappan
+	    Lakshmanan)
+Solution:   Keep the cursor in the same position.
+Files:	    src/edit.c
+
+Patch 6.0.092
+Problem:    The explorer plugin doesn't ignore case of 'suffixes' on
+	    MS-Windows. (Mike Williams)
+Solution:   Match or ignore case as appropriate for the OS.
+Files:	    runtime/plugin/explorer.vim
+
+Patch 6.0.093
+Problem:    When the Tcl library couldn't be loaded dynamically, get an error
+	    message when closing a buffer or window. (Muraoka Taro)
+Solution:   Only free structures if already using the Tcl interpreter.
+Files:	    src/if_tcl.c
+
+Patch 6.0.094
+Problem:    Athena: When clicking in the horizontal scrollbar Vim crashes.
+	    (Paul Ackersviller)
+Solution:   Use the thumb size instead of the window pointer of the scrollbar
+	    (which is NULL). (David Harrison)
+	    Also avoid that scrolling goes the wrong way in a narrow window.
+Files:	    src/gui_athena.c
+
+Patch 6.0.095
+Problem:    Perl: Deleting lines may leave the cursor beyond the end of the
+	    file.
+Solution:   Check the cursor position after deleting a line. (Serguei)
+Files:	    src/if_perl.xs
+
+Patch 6.0.096
+Problem:    When ":saveas fname" fails because the file already exists, the
+	    file name is changed anyway and a following ":w" will overwrite
+	    the file. (Eric Carlier)
+Solution:   Don't change the file name if the file already exists.
+Files:	    src/ex_cmds.c
+
+Patch 6.0.097
+Problem:    Re-indenting in Insert mode with CTRL-F may cause a crash with a
+	    multi-byte encoding.
+Solution:   Avoid using a character before the start of a line. (Sergey
+	    Vlasov)
+Files:	    src/edit.c
+
+Patch 6.0.098
+Problem:    GTK: When using Gnome the "Search" and "Search and Replace" dialog
+	    boxes are not translated.
+Solution:   Define ENABLE_NLS before including gnome.h. (Eduardo Fernandez)
+Files:	    src/gui_gtk.c, src/gui_gtk_x11.c
+
+Patch 6.0.099
+Problem:    Cygwin: When running Vi compatible MS-DOS line endings cause
+	    trouble.
+Solution:   Make the default for 'fileformats' "unix,dos" in Vi compatible
+	    mode.  (Michael Schaap)
+Files:	    src/option.h
+
+Patch 6.0.100
+Problem:    ":badd +0 test%file" causes a crash.
+Solution:   Take into account that the "+0" is NUL terminated when allocating
+	    room for replacing the "%".
+Files:	    src/ex_docmd.c
+
+Patch 6.0.101
+Problem:    ":mksession" doesn't restore editing a file that has a '#' or '%'
+	    in its name.  (Wolfgang Blankenburg)
+Solution:   Put a backslash before the '#' and '%'.
+Files:	    src/ex_docmd.c
+
+Patch 6.0.102
+Problem:    When changing folds the cursor may appear halfway a closed fold.
+	    (Nam SungHyun)
+Solution:   Set w_cline_folded correctly. (Yasuhiro Matsumoto)
+Files:	    src/move.c
+
+Patch 6.0.103
+Problem:    When using 'scrollbind' a large value of 'scrolloff' will make the
+	    scroll binding stop near the end of the file. (Coen Engelbarts)
+Solution:   Don't use 'scrolloff' when limiting the topline for scroll
+	    binding. (Dany StAmant)
+Files:	    src/normal.c
+
+Patch 6.0.104
+Problem:    Multi-byte: When '$' is in 'cpoptions', typing a double-wide
+	    character that overwrites the left halve of an old double-wide
+	    character causes a redraw problem and the cursor stops blinking.
+Solution:   Clear the right half of the old character. (Yasuhiro Matsumoto)
+Files:	    src/edit.c, src/screen.c
+
+Patch 6.0.105
+Problem:    Multi-byte: In a window of one column wide, with syntax
+	    highlighting enabled a crash might happen.
+Solution:   Skip getting the syntax attribute when the character doesn't fit
+	    anyway.  (Yasuhiro Matsumoto)
+Files:	    src/screen.c
+
+Patch 6.0.106 (extra)
+Problem:    Win32: When the printer font is wrong, there is no error message.
+Solution:   Give an appropriate error message. (Yasuhiro Matsumoto)
+Files:	    src/os_mswin.c
+
+Patch 6.0.107 (extra)
+Problem:    VisVim: When editing another file, a modified file may be written
+	    unexpectedly and without warning.
+Solution:   Split the window if a file was modified.
+Files:	    VisVim/Commands.cpp
+
+Patch 6.0.108
+Problem:    When using folding could try displaying line zero, resulting in an
+	    error for a NULL pointer.
+Solution:   Stop decrementing w_topline when the first line of a window is in
+	    a closed fold.
+Files:	    src/window.c
+
+Patch 6.0.109
+Problem:    XIM: When the input method is enabled, repeating an insertion with
+	    "." disables it. (Marcel Svitalsky)
+Solution:   Don't store the input method status when a command comes from the
+	    stuff buffer.
+Files:	    src/ui.c
+
+Patch 6.0.110
+Problem:    Using undo after executing "OxjAxkdd" from a register in
+	    an empty buffer gives an error message.  (Gerhard Hochholzer)
+Solution:   Don't adjust the bottom line number of an undo block when it's
+	    zero.  Add a test for this problem.
+Files:	    src/undo.c, src/testdir/test20.in, src/testdir/test20.ok
+
+Patch 6.0.111
+Problem:    The virtcol() function doesn't take care of 'virtualedit'.
+Solution:   Add the column offset when needed. (Yegappan Lakshmanan)
+Files:	    src/eval.c
+
+Patch 6.0.112
+Problem:    The explorer plugin doesn't sort directories with a space or
+	    special character after a directory with a shorter name.
+Solution:   Ignore the trailing slash when comparing directory names.  (Mike
+	    Williams)
+Files:	    runtime/plugin/explorer.vim
+
+Patch 6.0.113
+Problem:    ":edit ~/fname" doesn't work if $HOME includes a space.  Also,
+	    expanding wildcards with the shell may fail. (John Daniel)
+Solution:   Escape spaces with a backslash when needed.
+Files:	    src/ex_docmd.c, src/misc1.c, src/proto/misc1.pro, src/os_unix.c
+
+Patch 6.0.114
+Problem:    Using ":p" with fnamemodify() didn't expand "~/" or "~user/" to a
+	    full path.  For Win32 the current directory was prepended.
+	    (Michael Geddes)
+Solution:   Expand the home directory.
+Files:	    src/eval.c
+
+Patch 6.0.115 (extra)
+Problem:    Win32: When using a dialog with a textfield it cannot scroll the
+	    text.
+Solution:   Add ES_AUTOHSCROLL to the textfield style. (Pedro Gomes)
+Files:	    src/gui_w32.c
+
+Patch 6.0.116 (extra)
+Problem:    MS-Windows NT/2000/XP: filewritable() doesn't work correctly for
+	    filesystems that use ACLs.
+Solution:   Use ACL functions to check if a file is writable. (Mike Williams)
+Files:	    src/eval.c, src/macros.h, src/os_win32.c, src/proto/os_win32.pro
+
+Patch 6.0.117 (extra)
+Problem:    Win32: when disabling the menu, "set lines=999" doesn't use all
+	    the available screen space.
+Solution:   Don't subtract the fixed caption height but the real menu height
+	    from the available screen space.  Also: Avoid recursion in
+	    gui_mswin_get_menu_height().
+Files:	    src/gui_w32.c, src/gui_w48.c
+
+Patch 6.0.118
+Problem:    When $TMPDIR is a relative path, the temp directory is missing a
+	    trailing slash and isn't deleted when Vim exits. (Peter Holm)
+Solution:   Add the slash after expanding the directory to an absolute path.
+Files:	    src/fileio.c
+
+Patch 6.0.119 (depends on patch 6.0.116)
+Problem:    VMS: filewritable() doesn't work properly.
+Solution:   Use the same method as for Unix. (Zoltan Arpadffy)
+Files:	    src/eval.c
+
+Patch 6.0.120
+Problem:    The conversion to html isn't compatible with XHTML.
+Solution:   Quote the values. (Jess Thrysoee)
+Files:	    runtime/syntax/2html.vim
+
+Patch 6.0.121 (extra) (depends on patch 6.0.116)
+Problem:    Win32: After patch 6.0.116 Vim doesn't compile with mingw32.
+Solution:   Add an #ifdef HAVE_ACL.
+Files:	    src/os_win32.c
+
+Patch 6.0.122 (extra)
+Problem:    Win16: Same resize problems as patch 6.0.117 fixed for Win32.  And
+	    dialog textfield problem from patch 6.0.115.
+Solution:   Set old_menu_height only when used.  Add ES_AUTOHSCROLL flag.
+	    (Vince Negri)
+Files:	    src/gui_w16.c
+
+Patch 6.0.123 (depends on patch 6.0.119)
+Problem:    Win16: Compilation problems.
+Solution:   Move "&&" to other lines. (Vince Negri)
+Files:	    src/eval.c
+
+Patch 6.0.124
+Problem:    When using a ":substitute" command that starts with "\="
+	    (evaluated as an expression), "~" was still replaced with the
+	    previous substitute string.
+Solution:   Skip the replacement when the substitute string starts with "\=".
+	    Also adjust the documentation about doubling backslashes.
+Files:	    src/ex_cmds.c, runtime/doc/change.txt
+
+Patch 6.0.125 (extra)
+Problem:    Win32: When using the multi_byte_ime feature pressing the shift
+	    key would be handled as if a character was entered, thus mappings
+	    with a shifted key didn't work. (Charles Campbell)
+Solution:   Ignore pressing the shift, control and alt keys.
+Files:	    src/os_win32.c
+
+Patch 6.0.126
+Problem:    The python library was always statically linked.
+Solution:   Link the python library dynamically. (Matthias Klose)
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.0.127
+Problem:    When using a terminal that swaps screens and the Normal background
+	    color has a different background, using an external command may
+	    cause the color of the wrong screen to be changed. (Mark Waggoner)
+Solution:   Don't call screen_stop_highlight() in stoptermcap().
+Files:	    src/term.c
+
+Patch 6.0.128
+Problem:    When moving a vertically split window to the far left or right,
+	    the scrollbars are not adjusted. (Scott E Lee)  When 'mousefocus'
+	    is set the mouse pointer wasn't adjusted.
+Solution:   Adjust the scrollbars and the mouse pointer.
+Files:	    src/window.c
+
+Patch 6.0.129
+Problem:    When using a very long file name, ":ls" (repeated a few times)
+	    causes a crash.  Test with "vim `perl -e 'print "A"x1000'`".
+	    (Tejeda)
+Solution:   Terminate a string before getting its length in buflist_list().
+Files:	    src/buffer.c
+
+Patch 6.0.130
+Problem:    When using ":cprev" while the error window is open, and the new
+	    line at the top wraps, the window isn't correctly drawn.
+	    (Yegappan Lakshmanan)
+Solution:   When redrawing the topline don't scroll twice.
+Files:	    src/screen.c
+
+Patch 6.0.131
+Problem:    When using bufname() and there are two matches for listed buffers
+	    and one match for an unlisted buffer, the unlisted buffer is used.
+	    (Aric Blumer)
+Solution:   When there is a match with a listed buffer, don't check for
+	    unlisted buffers.
+Files:	    src/buffer.c
+
+Patch 6.0.132
+Problem:    When setting 'iminsert' in the vimrc and using an xterm with two
+	    screens the ruler is drawn in the wrong screen. (Igor Goldenberg)
+Solution:   Only draw the ruler when using the right screen.
+Files:	    src/option.c
+
+Patch 6.0.133
+Problem:    When opening another buffer while 'keymap' is set and 'iminsert'
+	    is zero, 'iminsert' is set to one unexpectedly. (Igor Goldenberg)
+Solution:   Don't set 'iminsert' as a side effect of defining a ":lmap"
+	    mapping.  Only do that when 'keymap' is set.
+Files:	    src/getchar.c, src/option.c
+
+Patch 6.0.134
+Problem:    When completing ":set tags=" a path with an embedded space causes
+	    the completion to stop. (Sektor van Skijlen)
+Solution:   Escape spaces with backslashes, like for ":set path=".  Also take
+	    backslashes into account when searching for the start of the path
+	    to complete (e.g., for 'backupdir' and 'cscopeprg').
+Files:	    src/ex_docmd.c, src/ex_getln.c, src/option.c, src/structs.h
+
+Patch 6.0.135
+Problem:    Menus that are not supposed to do anything used "<Nul>", which
+	    still produced an error beep.
+	    When CTRL-O is mapped for Insert mode, ":amenu" commands didn't
+	    work in Insert mode.
+	    Menu language falls back to English when $LANG ends in "@euro".
+Solution:   Use "<Nop>" for a menu item that doesn't do anything, just like
+	    mappings.
+	    Use ":anoremenu" instead of ":amenu".
+	    Ignore "@euro" in the locale name.
+Files:	    runtime/makemenu.vim, runtime/menu.vim, src/menu.c
+
+Patch 6.0.136
+Problem:    When completing in Insert mode, a mapping could be unexpectedly
+	    applied.
+Solution:   Don't use mappings when checking for a typed character.
+Files:	    src/edit.c
+
+Patch 6.0.137
+Problem:    GUI: When using the find or find/replace dialog from Insert mode,
+	    the input mode is stopped.
+Solution:   Don't use the input method status when the main window doesn't
+	    have focus.
+Files:	    src/ui.c
+
+Patch 6.0.138
+Problem:    GUI: When using the find or find/replace dialog from Insert mode,
+	    the text is inserted when CTRL-O is mapped. (Andre Pang)
+	    When opening the dialog again, a whole word search isn't
+	    recognized.
+	    When doing "replace all" a whole word search was never done.
+Solution:   Don't put a search or replace command in the input buffer,
+	    execute it directly.
+	    Recognize "\<" and "\>" after removing "\V".
+	    Add "\<" and "\>" also for "replace all".
+Files:	    src/gui.c
+
+Patch 6.0.139
+Problem:    When stopping 'wildmenu' completion, the statusline of the
+	    bottom-left vertically split window isn't redrawn. (Yegappan
+	    Lakshmanan)
+Solution:   Redraw all the bottom statuslines.
+Files:	    src/ex_getln.c, src/proto/screen.pro, src/screen.c
+
+Patch 6.0.140
+Problem:    Memory allocated for local mappings and abbreviations is leaked
+	    when the buffer is wiped out.
+Solution:   Clear the local mappings when deleting a buffer.
+Files:	    src/buffer.c, src/getchar.c, src/proto/getchar.pro, src/vim.h
+
+Patch 6.0.141
+Problem:    When using ":enew" in an empty buffer, some buffer-local things
+	    are not cleared.  b:keymap_name is not set.
+Solution:   Clear user commands and mappings local to the buffer when re-using
+	    the current buffer.  Reload the keymap.
+Files:	    src/buffer.c
+
+Patch 6.0.142
+Problem:    When Python is linked statically, loading dynamic extensions might
+	    fail.
+Solution:   Add an extra linking flag when needed. (Andrew Rodionoff)
+Files:	    src/configure.in, src/auto/configure
+
+Patch 6.0.143
+Problem:    When a syntax item includes a line break in a pattern, the syntax
+	    may not be updated properly when making a change.
+Solution:   Add the "linebreaks" argument to ":syn sync".
+Files:	    runtime/doc/syntax.txt, src/screen.c, src/structs.h, src/syntax.c
+
+Patch 6.0.144
+Problem:    After patch 6.0.088 redoing "veU" doesn't work.
+Solution:   Don't add the "U" to the redo buffer, it will be used as an undo
+	    command.
+Files:	    src/normal.c
+
+Patch 6.0.145
+Problem:    When Vim can't read any input it might get stuck.  When
+	    redirecting stdin and stderr Vim would not read commands from a
+	    file.  (Servatius Brandt)
+Solution:   When repeatedly trying to read a character when it's not possible,
+	    exit Vim.  When stdin and stderr are not a tty, still try reading
+	    from them, but don't do a blocking wait.
+Files:	    src/ui.c
+
+Patch 6.0.146
+Problem:    When 'statusline' contains "%{'-'}" this results in a zero.
+	    (Milan Vancura)
+Solution:   Don't handle numbers with a minus as a number, they were not
+	    displayed anyway.
+Files:	    src/buffer.c
+
+Patch 6.0.147
+Problem:    It's not easy to mark a Vim version as being modified.  The new
+	    license requires this.
+Solution:   Add the --modified-by argument to configure and the MODIFIED_BY
+	    define.  I's used in the intro screen and the ":version" output.
+Files:	    src/auto/configure, src/configure.in, src/config.h.in,
+	    src/feature.h, src/version.c
+
+Patch 6.0.148
+Problem:    After "p" in an empty line, `[ goes to the second character.
+	    (Kontra Gergely)
+Solution:   Don't increment the column number in an empty line.
+Files:	    src/ops.c
+
+Patch 6.0.149
+Problem:    The pattern "\(.\{-}\)*" causes a hang.  When using a search
+	    pattern that causes a stack overflow to be detected Vim could
+	    still hang.
+Solution:   Correctly report "operand could be empty" when using "\{-}".
+	    Check for "out_of_stack" inside loops to avoid a hang.
+Files:	    src/regexp.c
+
+Patch 6.0.150
+Problem:    When using a multi-byte encoding, patch 6.0.148 causes "p" to work
+	    like "P". (Sung-Hyun Nam)
+Solution:   Compute the byte length of a multi-byte character.
+Files:	    src/ops.c
+
+Patch 6.0.151
+Problem:    Redrawing the status line and ruler can be wrong when it contains
+	    multi-byte characters.
+Solution:   Use character width and byte length correctly. (Yasuhiro Matsumoto)
+Files:	    src/screen.c
+
+Patch 6.0.152
+Problem:    strtrans() could hang on an illegal UTF-8 byte sequence.
+Solution:   Skip over illegal bytes. (Yasuhiro Matsumoto)
+Files:	    src/charset.c
+
+Patch 6.0.153
+Problem:    When using (illegal) double-byte characters and Vim syntax
+	    highlighting Vim can crash. (Yasuhiro Matsumoto)
+Solution:   Increase a pointer over a character instead of a byte.
+Files:	    src/regexp.c
+
+Patch 6.0.154
+Problem:    MS-DOS and MS-Windows: The menu entries for xxd don't work when
+	    there is no xxd in the path.
+	    When converting back from Hex the filetype may remain "xxd" if it
+	    is not detected.
+Solution:   When xxd is not in the path use the one in the runtime directory,
+	    where the install program has put it.
+	    Clear the 'filetype' option before detecting the new value.
+Files:	    runtime/menu.vim
+
+Patch 6.0.155
+Problem:    Mac: compilation problems in ui.c after patch 6.0.145. (Axel
+	    Kielhorn)
+Solution:   Don't call mch_inchar() when NO_CONSOLE is defined.
+Files:	    src/ui.c
+
+Patch 6.0.156
+Problem:    Starting Vim with the -b argument and two files, ":next" doesn't
+	    set 'binary' in the second file, like Vim 5.7. (Norman Diamond)
+Solution:   Set the global value for 'binary'.
+Files:	    src/option.c
+
+Patch 6.0.157
+Problem:    When defining a user command with "-complete=dir" files will also
+	    be expanded.  Also, "-complete=mapping" doesn't appear to work.
+	    (Michael Naumann)
+Solution:   Use the expansion flags defined with the user command.
+	    Handle expanding mappings specifically.
+Files:	    src/ex_docmd.c
+
+Patch 6.0.158
+Problem:    When getting the warning for a file being changed outside of Vim
+	    and reloading the file, the 'readonly' option is reset, even when
+	    the permissions didn't change. (Marcel Svitalsky)
+Solution:   Keep 'readonly' set when reloading a file and the permissions
+	    didn't change.
+Files:	    src/fileio.c
+
+Patch 6.0.159
+Problem:    Wildcard expansion for ":emenu" also shows separators.
+Solution:   Skip menu separators for ":emenu", ":popup" and ":tearoff".
+	    Also, don't handle ":tmenu" as if it was ":tearoff".  And leave
+	    out the alternatives with "&" included.
+Files:	    src/menu.c
+
+Patch 6.0.160
+Problem:    When compiling with GCC 3.0.2 and using the "-O2" argument, the
+	    optimizer causes a problem that makes Vim crash.
+Solution:   Add a configure check to avoid "-O2" for this version of gcc.
+Files:	    src/configure.in, src/auto/configure
+
+Patch 6.0.161 (extra)
+Problem:    Win32: Bitmaps don't work with signs.
+Solution:   Make it possible to use bitmaps with signs. (Muraoka Taro)
+Files:	    src/ex_cmds.c, src/feature.h, src/gui_w32.c, src/gui_x11.c,
+	    src/proto/gui_w32.pro, src/proto/gui_x11.pro
+
+Patch 6.0.162
+Problem:    Client-server: An error message for a wrong expression appears in
+	    the server instead of the client.
+Solution:   Pass the error message from the server to the client.  Also
+	    adjust the example code. (Flemming Madsen)
+Files:	    src/globals.h, src/if_xcmdsrv.c, src/main.c, src/os_mswin.c,
+	    src/proto/if_xcmdsrv.pro, src/proto/os_mswin.pro,
+	    runtime/doc/eval.txt, runtime/tools/xcmdsrv_client.c
+
+Patch 6.0.163
+Problem:    When using a GUI dialog, a file name is sometimes used like it was
+	    a directory.
+Solution:   Separate path and file name properly.
+	    For GTK, Motif and Athena concatenate directory and file name for
+	    the default selection.
+Files:	    src/diff.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c,
+	    src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c, src/message.c
+
+Patch 6.0.164
+Problem:    After patch 6.0.135 the menu entries for pasting don't work in
+	    Insert and Visual mode. (Muraoka Taro)
+Solution:   Add <script> to allow script-local mappings.
+Files:	    runtime/menu.vim
+
+Patch 6.0.165
+Problem:    Using --remote and executing locally gives unavoidable error
+	    messages.
+Solution:   Add --remote-silent and --remote-wait-silent to silently execute
+	    locally.
+	    For Win32 there was no error message when a server didn't exist.
+Files:	    src/eval.c, src/if_xcmdsrv.c, src/main.c, src/os_mswin.c,
+	    src/proto/if_xcmdsrv.pro, src/proto/os_mswin.pro
+
+Patch 6.0.166
+Problem:    GUI: There is no way to avoid dialogs to pop up.
+Solution:   Add the 'c' flag to 'guioptions': Use console dialogs.  (Yegappan
+	    Lakshmanan)
+Files:	    runtime/doc/options.txt, src/option.h, src/message.c
+
+Patch 6.0.167
+Problem:    When 'fileencodings' is "latin2" some characters in the help files
+	    are displayed wrong.
+Solution:   Force the 'fileencoding' for the help files to be "latin1".
+Files:	    src/fileio.c
+
+Patch 6.0.168
+Problem:    ":%s/\n/#/" doesn't replace at an empty line. (Bruce DeVisser)
+Solution:   Don't skip matches after joining two lines.
+Files:	    src/ex_cmds.c
+
+Patch 6.0.169
+Problem:    When run as evim and the GUI can't be started we get stuck in a
+	    terminal without menus in Insert mode.
+Solution:   Exit when using "evim" and "gvim -y" when the GUI can't be
+	    started.
+Files:	    src/main.c
+
+Patch 6.0.170
+Problem:    When printing double-width characters the size of tabs after them
+	    is wrong.  (Muraoka Taro)
+Solution:   Correctly compute the column after a double-width character.
+Files:	    src/ex_cmds2.c
+
+Patch 6.0.171
+Problem:    With 'keymodel' including "startsel", in Insert mode after the end
+	    of a line, shift-Left does not move the cursor. (Steve Hall)
+Solution:   CTRL-O doesn't move the cursor left, need to do that explicitly.
+Files:	    src/edit.c
+
+Patch 6.0.172
+Problem:    CTRL-Q doesn't replace CTRL-V after CTRL-X in Insert mode while it
+	    does in most other situations.
+Solution:   Make CTRL-X CTRL-Q work like CTRL-X CTRL-V in Insert mode.
+Files:	    src/edit.c
+
+Patch 6.0.173
+Problem:    When using "P" to insert a line break the cursor remains past the
+	    end of the line.
+Solution:   Check for the cursor being beyond the end of the line.
+Files:	    src/ops.c
+
+Patch 6.0.174
+Problem:    After using "gd" or "gD" the search direction for "n" may still be
+	    backwards. (Servatius Brandt)
+Solution:   Reset the search direction to forward.
+Files:	    src/normal.c, src/search.c, src/proto/search.pro
+
+Patch 6.0.175
+Problem:    ":help /\z(\)" doesn't work. (Thomas Koehler)
+Solution:   Double the backslashes.
+Files:	    src/ex_cmds.c
+
+Patch 6.0.176
+Problem:    When killed by a signal autocommands are still triggered as if
+	    nothing happened.
+Solution:   Add the v:dying variable to allow autocommands to work differently
+	    when a deadly signal has been trapped.
+Files:	    src/eval.c, src/os_unix.c, src/vim.h
+
+Patch 6.0.177
+Problem:    When 'commentstring' is empty and 'foldmethod' is "marker", "zf"
+	    doesn't work. (Thomas S. Urban)
+Solution:   Add the marker even when 'commentstring' is empty.
+Files:	    src/fold.c, src/normal.c
+
+Patch 6.0.178
+Problem:    Uninitialized memory read from xp_backslash field.
+Solution:   Initialize xp_backslash field properly.
+Files:	    src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/misc1.c, src/tag.c
+
+Patch 6.0.179
+Problem:    Win32: When displaying UTF-8 characters may read uninitialized
+	    memory.
+Solution:   Add utfc_ptr2len_check_len() to avoid reading past the end of a
+	    string.
+Files:	    src/mbyte.c, src/proto/mbyte.pro, src/gui_w32.c
+
+Patch 6.0.180
+Problem:    Expanding environment variables in a string that ends in a
+	    backslash could go past the end of the string.
+Solution:   Detect the trailing backslash.
+Files:	    src/misc1.c
+
+Patch 6.0.181
+Problem:    When using ":cd dir" memory was leaked.
+Solution:   Free the allocated memory.  Also avoid an uninitialized memory
+	    read.
+Files:	    src/misc2.c
+
+Patch 6.0.182
+Problem:    When using a regexp on multi-byte characters, could try to read a
+	    character before the start of the line.
+Solution:   Don't decrement a pointer to before the start of the line.
+Files:	    src/regexp.c
+
+Patch 6.0.183
+Problem:    Leaking memory when ":func!" redefines a function.
+Solution:   Free the function name when it's not used.
+Files:	    src/eval.c
+
+Patch 6.0.184
+Problem:    Leaking memory when expanding option values.
+Solution:   Don't always copy the expanded option into allocated memory.
+Files:	    src/option.c
+
+Patch 6.0.185
+Problem:    Crash in Vim when pasting a selection in another application, on a
+	    64 bit machine.
+Solution:   Fix the format for an Atom to 32 bits. (Peter Derr)
+Files:	    src/ui.c
+
+Patch 6.0.186
+Problem:    X11: Three warnings when compiling the client-server code.
+Solution:   Add a typecast to unsigned char.
+Files:	    src/if_xcmdsrv.c
+
+Patch 6.0.187
+Problem:    "I" in Visual mode and then "u" reports too many changes. (Andrew
+	    Stryker)
+	    "I" in Visual linewise mode adjusts the indent for no apparent
+	    reason.
+Solution:   Only save those lines for undo that are changed.
+	    Don't change the indent after inserting in Visual linewise mode.
+Files:	    src/ops.c
+
+Patch 6.0.188
+Problem:    Win32: After patch 6.0.161 signs defined in the vimrc file don't
+	    work.
+Solution:   Initialize the sign icons after initializing the GUI. (Vince
+	    Negri)
+Files:	    src/gui.c, src/gui_x11.c
+
+Patch 6.0.189
+Problem:    The size of the Visual area isn't always displayed when scrolling
+	    ('ruler' off, 'showcmd' on).  Also not when using a search
+	    command. (Sylvain Hitier)
+Solution:   Redisplay the size of the selection after showing the mode.
+Files:	    src/screen.c
+
+Patch 6.0.190
+Problem:    GUI: when 'mouse' is empty a click with the middle button still
+	    moves the cursor.
+Solution:   Paste at the cursor position instead of the mouse position.
+Files:	    src/normal.c
+
+Patch 6.0.191
+Problem:    When no servers are available serverlist() gives an error instead
+	    of returning an empty string. (Hari Krishna)
+Solution:   Don't give an error message.
+Files:	    src/eval.c
+
+Patch 6.0.192
+Problem:    When 'virtualedit' is set, "ylj" goes to the wrong column. (Andrew
+	    Nikitin)
+Solution:   Reset the flag that w_virtcol is valid when moving the cursor back
+	    to the start of the operated area.
+Files:	    src/normal.c
+
+Patch 6.0.193
+Problem:    When 'virtualedit' is set, col(".") after the end of the line
+	    should return one extra.
+Solution:   Add one to the column.
+Files:	    src/eval.c
+
+Patch 6.0.194
+Problem:    "--remote-silent" tries to send a reply to the client, like it was
+	    "--remote-wait".
+Solution:   Properly check for the argument.
+Files:	    src/main.c
+
+Patch 6.0.195
+Problem:    When 'virtualedit' is set and a search starts in virtual space
+	    ":call search('x')" goes to the wrong position. (Eric Long)
+Solution:   Reset coladd when finding a match.
+Files:	    src/search.c
+
+Patch 6.0.196
+Problem:    When 'virtualedit' is set, 'selection' is "exclusive" and visually
+	    selecting part of a tab at the start of a line, "x" joins it with
+	    the previous line.  Also, when the selection spans more than one
+	    line the whole tab is deleted.
+Solution:   Take coladd into account when adjusting for 'selection' being
+	    "exclusive".  Also expand a tab into spaces when deleting more
+	    than one line.
+Files:	    src/normal.c, src/ops.c
+
+Patch 6.0.197
+Problem:    When 'virtualedit' is set and 'selection' is "exclusive", "v$x"
+	    doesn't delete the last character in the line. (Eric Long)
+Solution:   Don't reset the inclusive flag. (Helmut Stiegler)
+Files:	    src/normal.c
+
+Patch 6.0.198
+Problem:    When 'virtualedit' is set and 'showbreak' is not empty, moving the
+	    cursor over the line break doesn't work properly. (Eric Long)
+Solution:   Make getviscol() and getviscol2() use getvvcol() to obtain the
+	    virtual cursor position.  Adjust coladvance() and oneleft() to
+	    skip over the 'showbreak' characters.
+Files:	    src/edit.c, src/misc2.c
+
+Patch 6.0.199
+Problem:    Multi-byte: could use iconv() after calling iconv_end().
+	    (Yasuhiro Matsumoto)
+Solution:   Stop converting input and output stream after calling iconv_end().
+Files:	    src/mbyte.c
+
+Patch 6.0.200
+Problem:    A script that starts with "#!perl" isn't recognized as a Perl
+	    filetype.
+Solution:   Ignore a missing path in a script header.  Also, speed up
+	    recognizing scripts by simplifying the patterns used.
+Files:	    runtime/scripts.vim
+
+Patch 6.0.201
+Problem:    When scrollbinding and doing a long jump, switching windows jumps
+	    to another position in the file.  Scrolling a few lines at a time
+	    is OK. (Johannes Zellner)
+Solution:   When setting w_topline reset the flag that indicates w_botline is
+	    valid.
+Files:	    src/diff.c
+
+Patch 6.0.202
+Problem:    The "icon=" argument for the menu command to define a toolbar icon
+	    with a file didn't work for GTK. (Christian J. Robinson)
+	    For Motif and Athena a full path was required.
+Solution:   Search the icon file using the specified path.  Expand environment
+	    variables in the file name.
+Files:	    src/gui_gtk.c, src/gui_x11.c
+
+Patch 6.0.203
+Problem:    Can change 'fileformat' even though 'modifiable' is off.
+	    (Servatius Brandt)
+Solution:   Correct check for kind of set command.
+Files:	    src/option.c
+
+Patch 6.0.204
+Problem:    ":unlet" doesn't work for variables with curly braces. (Thomas
+	    Scott Urban)
+Solution:   Handle variable names with curly braces properly. (Vince Negri)
+Files:	    src/eval.c
+
+Patch 6.0.205 (extra)
+Problem:    "gvim -f" still forks when using the batch script to start Vim.
+Solution:   Add an argument to "start" to use a foreground session (Michael
+	    Geddes)
+Files:	    src/dosinst.c
+
+Patch 6.0.206
+Problem:    Unix: if expanding a wildcard in a file name results in a
+	    wildcard character and there are more parts in the path with a
+	    wildcard, it is expanded again.
+	    Windows: ":edit \[abc]" could never edit the file "[abc]".
+Solution:   Don't expand wildcards in already expanded parts.
+	    Don't remove backslashes used to escape the special meaning of a
+	    wildcard; can edit "[abc]" if '[' is removed from 'isfname'.
+Files:	    src/misc1.c, src/os_unix.c
+
+Patch 6.0.207 (extra)
+Problem:    Win32: The shortcuts and start menu entries let Vim startup in the
+	    desktop directory, which is not very useful.
+Solution:   Let shortcuts start Vim in $HOME or $HOMEDIR$HOMEPATH.
+Files:	    src/dosinst.c
+
+Patch 6.0.208
+Problem:    GUI: When using a keymap and the cursor is not blinking, CTRL-^ in
+	    Insert mode doesn't directly change the cursor color.  (Alex
+	    Solow)
+Solution:   Force a redraw of the cursor after CTRL-^.
+Files:	    src/edit.c
+
+Patch 6.0.209
+Problem:    GUI GTK: After selecting a 'guifont' with the font dialog there
+	    are redraw problems for multi-byte characters.
+Solution:   Separate the font dialog from setting the new font name to avoid
+	    that "*" is used to find wide and bold fonts.
+	    When redrawing extra characters for the bold trick, take care of
+	    UTF-8 characters.
+Files:	    src/gui.c, src/gui_gtk_x11.c, src/option.c, src/proto/gui.pro,
+	    src/proto/gui_gtk_x11.pro
+
+Patch 6.0.210
+Problem:    After patch 6.0.167 it's no longer possible to edit a help file in
+	    another encoding than latin1.
+Solution:   Let the "++enc=" argument overrule the encoding.
+Files:	    src/fileio.c
+
+Patch 6.0.211
+Problem:    When reading a file fails, the buffer is empty, but it might still
+	    be possible to write it with ":w" later.  The original file is
+	    lost then. (Steve Amerige)
+Solution:   Set the 'readonly' option for the buffer.
+Files:	    src/fileio.c
+
+Patch 6.0.212
+Problem:    GUI GTK: confirm("foo", "") causes a crash.
+Solution:   Don't make a non-existing button the default.  Add a default "OK"
+	    button if none is specified.
+Files:	    src/eval.c, src/gui_gtk.c
+
+Patch 6.0.213
+Problem:    When a file name contains unprintable characters, CTRL-G and other
+	    commands don't work well.
+Solution:   Turn unprintable into printable characters. (Yasuhiro Matsumoto)
+Files:	    src/buffer.c, src/charset.c
+
+Patch 6.0.214
+Problem:    When there is a buffer without a name, empty entries appear in the
+	    jumplist saved in the viminfo file.
+Solution:   Don't write jumplist entries without a file name.
+Files:	    src/mark.c
+
+Patch 6.0.215
+Problem:    After using "/" from Visual mode the Paste menu and Toolbar
+	    entries don't work.  Pasting with the middle mouse doesn't work
+	    and modeless selection doesn't work.
+Solution:   Use the command line mode menus and use the mouse like in the
+	    command line.
+Files:	    src/gui.c, src/menu.c, src/ui.c
+
+Patch 6.0.216
+Problem:    After reloading a file, displayed in another window than the
+	    current one, which was changed outside of Vim the part of the file
+	    around the cursor set by autocommands may be displayed, but
+	    jumping back to the original cursor position when entering the
+	    window again.
+Solution:   Restore the topline of the window.
+Files:	    src/fileio.c
+
+Patch 6.0.217
+Problem:    When getting help from a help file that was used before, an empty
+	    unlisted buffer remains in the buffer list. (Eric Long)
+Solution:   Wipe out the buffer used to do the tag jump from.
+Files:	    src/buffer.c, src/ex_cmds.c, src/proto/buffer.pro
+
+Patch 6.0.218
+Problem:    With explorer plugin: "vim -o filename dirname" doesn't load the
+	    explorer window until entering the window.
+Solution:   Call s:EditDir() for each window after starting up.
+Files:	    runtime/plugin/explorer.vim
+
+Patch 6.0.219
+Problem:    ":setlocal" and ":setglobal", without arguments, display terminal
+	    options. (Zdenek Sekera)
+Solution:   Skip terminal options for these two commands.
+Files:	    src/option.c
+
+Patch 6.0.220
+Problem:    After patch 6.0.218 get a beep on startup. (Muraoka Taro)
+Solution:   Don't try going to another window when there isn't one.
+Files:	    runtime/plugin/explorer.vim
+
+Patch 6.0.221
+Problem:    When using ":bdel" and all other buffers are unloaded the lowest
+	    numbered buffer is jumped to instead of the most recent one. (Dave
+	    Cecil)
+Solution:   Prefer an unloaded buffer from the jumplist.
+Files:	    src/buffer.c
+
+Patch 6.0.222
+Problem:    When 'virtualedit' is set and using autoindent, pressing Esc after
+	    starting a new line leaves behind part of the autoindent. (Helmut
+	    Stiegler)
+Solution:   After deleting the last char in the line adjust the cursor
+	    position in del_bytes().
+Files:	    src/misc1.c, src/ops.c
+
+Patch 6.0.223
+Problem:    When splitting a window that contains the explorer, hitting CR on
+	    a file name gives error messages.
+Solution:   Set the window variables after splitting the window.
+Files:	    runtime/plugin/explorer.vim
+
+Patch 6.0.224
+Problem:    When 'sidescroll' and 'sidescrolloff' are set in a narrow window
+	    the text may jump left-right and the cursor is displayed in the
+	    wrong position. (Aric Blumer)
+Solution:   When there is not enough room, compute the left column for the
+	    window to put the cursor in the middle.
+Files:	    src/move.c
+
+Patch 6.0.225
+Problem:    In Visual mode "gk" gets stuck in a closed fold. (Srinath
+	    Avadhanula)
+Solution:   Behave differently in a closed fold.
+Files:	    src/normal.c
+
+Patch 6.0.226
+Problem:    When doing ":recover file" get the ATTENTION prompt.
+	    After recovering the same file five times get a read error or a
+	    crash.  (Alex Davis)
+Solution:   Set the recoverymode flag before setting the file name.
+	    Correct the amount of used memory for the size of block zero.
+Files:	    src/ex_docmd.c
+
+Patch 6.0.227 (extra)
+Problem:    The RISC OS port has several problems.
+Solution:   Update the makefile and fix some of the problems. (Andy Wingate)
+Files:	    src/Make_ro.mak, src/os_riscos.c, src/os_riscos.h,
+	    src/proto/os_riscos.pro, src/search.c
+
+Patch 6.0.228
+Problem:    After putting text in Visual mode the '] mark is not at the end of
+	    the put text.
+	    Undo doesn't work properly when putting a word into a Visual
+	    selection that spans more than one line.
+Solution:   Correct the '] mark for the deleting the Visually selected text.
+	    #ifdef code that depends on FEAT_VISUAL properly.
+	    Also fix that "d" crossing line boundary puts '[ just before
+	    deleted text.
+	    Fix undo by saving all deleted lines at once.
+Files:	    src/ex_docmd.c, src/globals.h, src/normal.c, src/ops.c,
+	    src/structs.h, src/vim.h
+
+Patch 6.0.229
+Problem:    Multi-byte: With 'm' in 'formatoptions', formatting doesn't break
+	    at a multi-byte char followed by an ASCII char, and the other way
+	    around. (Muraoka Taro)
+	    When joining lines a space is inserted between multi-byte
+	    characters, which is not always wanted.
+Solution:   Check for multi-byte character before and after the breakpoint.
+	    Don't insert a space before or after a multi-byte character when
+	    joining lines and the 'M' flag is in 'formatoptions'.  Don't
+	    insert a space between multi-byte characters when the 'B' flag is
+	    in 'formatoptions'.
+Files:	    src/edit.c, src/ops.c, src/option.h
+
+Patch 6.0.230
+Problem:    The ":" used as a motion after an operator is exclusive, but
+	    sometimes it should be inclusive.
+Solution:   Make the "v" in between an operator and motion toggle
+	    inclusive/exclusive. (Servatius Brandt)
+Files:	    runtime/doc/motion.txt, src/normal.c
+
+Patch 6.0.231
+Problem:    "gd" and "gD" don't work when the variable matches in a comment
+	    just above the match to be found. (Servatius Brandt)
+Solution:   Continue searching in the first column below the comment.
+Files:	    src/normal.c
+
+Patch 6.0.232
+Problem:    "vim --version" prints on stderr while "vim --help" prints on
+	    stdout.
+Solution:   Make "vim --version" use stdout.
+Files:	    runtime/doc/starting.txt, src/globals.h, src/main.c, src/message.c
+
+Patch 6.0.233
+Problem:    "\1\{,8}" in a regexp is not allowed, but it should work, because
+	    there is an upper limit.  (Jim Battle)
+Solution:   Allow using "\{min,max}" after an atom that can be empty if there
+	    is an upper limit.
+Files:	    src/regexp.c
+
+Patch 6.0.234
+Problem:    It's not easy to set the cursor position without modifying marks.
+Solution:   Add the cursor() function. (Yegappan Lakshmanan)
+Files:	    runtime/doc/eval.txt, src/eval.c
+
+Patch 6.0.235
+Problem:    When writing a file and renaming the original file to make the
+	    backup, permissions could change when setting the owner.
+Solution:   Only set the owner when it's needed and set the permissions again
+	    afterwards.
+	    When 'backupcopy' is "auto" check that the owner and permissions
+	    of a newly created file can be set properly.
+Files:	    src/fileio.c
+
+Patch 6.0.236
+Problem:    ":edit" without argument should move cursor to line 1 in Vi
+	    compatible mode.
+Solution:   Add 'g' flag to 'cpoptions'.
+Files:	    runtime/doc/options.txt, src/ex_docmd.c, src/option.h
+
+Patch 6.0.237
+Problem:    In a C file, using the filetype plugin, re-indenting a comment
+	    with two spaces after the middle "*" doesn't align properly.
+Solution:   Don't use a middle entry from a start/middle/end to line up with
+	    the start of the comment when the start part doesn't match with
+	    the actual comment start.
+Files:	    src/misc1.c
+
+Patch 6.0.238
+Problem:    Using a ":substitute" command with a substitute() call in the
+	    substitution expression causes errors. (Srinath Avadhanula)
+Solution:   Save and restore pointers when doing substitution recursively.
+Files:	    src/regexp.c
+
+Patch 6.0.239
+Problem:    Using "A" to append after a Visually selected block which is after
+	    the end of the line, spaces are inserted in the wrong line and
+	    other unexpected effects. (Michael Naumann)
+Solution:   Don't advance the cursor to the next line.
+Files:	    src/ops.c
+
+Patch 6.0.240
+Problem:    Win32: building with Python 2.2 doesn't work.
+Solution:   Add support for Python 2.2 with dynamic linking. (Paul Moore)
+Files:	    src/if_python.c
+
+Patch 6.0.241
+Problem:    Win32: Expanding the old value of an option that is a path that
+	    starts with a backslash, an extra backslash is inserted.
+Solution:   Only insert backslashes where needed.
+	    Also handle multi-byte characters properly when removing
+	    backslashes.
+Files:	    src/option.c
+
+Patch 6.0.242
+Problem:    GUI: On a system with an Exceed X server sometimes get a "Bad
+	    Window" error. (Tommi Maekitalo)
+Solution:   When forking, use a pipe to wait in the parent for the child to
+	    have done the setsid() call.
+Files:	    src/gui.c
+
+Patch 6.0.243
+Problem:    Unix: "vim --version" outputs a NL before the last line instead of
+	    after it. (Charles Campbell)
+Solution:   Send the NL to the same output stream as the text.
+Files:	    src/message.c, src/os_unix.c, src/proto/message.pro
+
+Patch 6.0.244
+Problem:    Multi-byte: Problems with (illegal) UTF-8 characters in menu and
+	    file name (e.g., icon text, status line).
+Solution:   Correctly handle unprintable characters.  Catch illegal UTF-8
+	    characters and replace them with <xx>.  Truncating the status line
+	    wasn't done correctly at a multi-byte character. (Yasuhiro
+	    Matsumoto)
+	    Added correct_cmdspos() and transchar_byte().
+Files:	    src/buffer.c, src/charset.c, src/ex_getln.c, src/gui.c,
+	    src/message.c, src/screen.c, src/vim.h
+
+Patch 6.0.245
+Problem:    After using a color scheme, setting the 'background' option might
+	    not work. (Peter Horst)
+Solution:   Disable the color scheme if it switches 'background' back to the
+	    wrong value.
+Files:	    src/option.c
+
+Patch 6.0.246
+Problem:    ":echomsg" didn't use the highlighting set by ":echohl". (Gary
+	    Holloway)
+Solution:   Use the specified attributes for the message. (Yegappan
+	    Lakshmanan)
+Files:	    src/eval.c
+
+Patch 6.0.247
+Problem:    GTK GUI: Can't use gvim in a kpart widget.
+Solution:   Add the "--echo-wid" argument to let Vim echo the window ID on
+	    stdout. (Philippe Fremy)
+Files:	    runtime/doc/starting.txt, src/globals.h, src/gui_gtk_x11.c,
+	    src/main.c
+
+Patch 6.0.248
+Problem:    When using compressed help files and 'encoding' isn't "latin1",
+	    Vim converts the help file before decompressing. (David Reviejo)
+Solution:   Don't convert a help file when 'binary' is set.
+Files:	    src/fileio.c
+
+Patch 6.0.249
+Problem:    "vim -t edit -c 'sta ex_help'" doesn't move cursor to edit().
+Solution:   Don't set the cursor on the first line for "-c" arguments when
+	    there also is a "-t" argument.
+Files:	    src/main.c
+
+Patch 6.0.250 (extra)
+Problem:    Macintosh: Various problems when compiling.
+Solution:   Various fixes, mostly #ifdefs. (Dany St. Amant)
+Files:	    src/gui_mac.c, src/main.c, src/misc2.c, src/os_mac.h,
+	    src/os_mac.pbproj/project.pbxproj, src/os_unix.c
+
+Patch 6.0.251 (extra)
+Problem:    Macintosh: menu shortcuts are not very clear.
+Solution:   Show the shortcut with the Mac clover symbol. (raindog)
+Files:	    src/gui_mac.c
+
+Patch 6.0.252
+Problem:    When a user function was defined with "abort", an error that is
+	    not inside if/endif or while/endwhile doesn't abort the function.
+	    (Servatius Brandt)
+Solution:   Don't reset did_emsg when the function is to be aborted.
+Files:	    src/ex_docmd.c
+
+Patch 6.0.253
+Problem:    When 'insertmode' is set, after "<C-O>:edit file" the next <C-O>
+	    doesn't work. (Benji Fisher)  <C-L> has the same problem.
+Solution:   Reset need_start_insertmode once in edit().
+Files:	    src/edit.c
+
+Patch 6.0.254 (extra)
+Problem:    Borland C++ 5.5: Checking for stack overflow doesn't work
+	    correctly.  Matters when using a complicated regexp.
+Solution:   Remove -N- from Make_bc5.mak. (Yasuhiro Matsumoto)
+Files:	    src/Make_bc5.mak
+
+Patch 6.0.255 (extra) (depends on patch 6.0.116 and 6.0.121)
+Problem:    Win32: ACL support doesn't work well on Samba drives.
+Solution:   Add a check for working ACL support. (Mike Williams)
+Files:	    src/os_win32.c
+
+Patch 6.0.256 (extra)
+Problem:    Win32: ":highlight Comment guifg=asdf" does not give an error
+	    message. (Randall W.  Morris)  Also for other systems.
+Solution:   Add gui_get_color() to give one error message for all systems.
+Files:	    src/gui.c, src/gui_amiga.c, src/gui_athena.c, src/gui_motif.c,
+	    src/gui_riscos.c, src/gui_x11.c, src/gui_gtk_x11.c,
+	    src/proto/gui.pro, src/syntax.c
+
+Patch 6.0.257
+Problem:    Win32: When 'mousefocus' is set and there is a BufRead
+	    autocommand, after the dialog for permissions changed outside of
+	    Vim: 'mousefocus' stops working. (Robert Webb)
+Solution:   Reset need_mouse_correct after checking timestamps.
+Files:	    src/fileio.c
+
+Patch 6.0.258
+Problem:    When 'scrolloff' is 999 and there are folds, the text can jump up
+	    and down when moving the cursor down near the end of the file.
+	    (Lubomir Host)
+Solution:   When putting the cursor halfway the window start counting lines at
+	    the end of a fold.
+Files:	    src/move.c
+
+Patch 6.0.259
+Problem:    MS-DOS: after editing the command line the cursor shape may remain
+	    like in Insert mode. (Volker Kiefel)
+Solution:   Reset the cursor shape after editing the command line.
+Files:	    src/ex_getln.c
+
+Patch 6.0.260
+Problem:    GUI: May crash while starting up when giving an error message for
+	    missing color. (Servatius Brandt)
+Solution:   Don't call gui_write() when still starting up.  Don't give error
+	    message for empty color name.  Don't use 't_vb' while the GUI is
+	    still starting up.
+Files:	    src/fileio.c, src/gui.c, src/misc1.c, src/ui.c
+
+Patch 6.0.261
+Problem:    nr2char() and char2nr() don't work with multi-byte characters.
+Solution:   Use 'encoding' for these functions. (Yasuhiro Matsumoto)
+Files:	    runtime/doc/eval.txt, src/eval.c
+
+Patch 6.0.262 (extra)
+Problem:    Win32: IME doesn't work properly.  OnImeComposition() isn't used
+	    at all.
+Solution:   Adjust various things for IME.
+Files:	    src/globals.h, src/gui_w32.c, src/mbyte.c, src/proto/ui.pro,
+	    src/structs.h, src/ui.c
+
+Patch 6.0.263
+Problem:    GTK: When a dialog is closed by the window manager, Vim hangs.
+	    (Christian J. Robinson)
+Solution:   Use GTK_WIDGET_DRAWABLE() instead of GTK_WIDGET_VISIBLE().
+Files:	    src/gui_gtk.c, src/gui_gtk_x11.c
+
+Patch 6.0.264
+Problem:    The amount of virtual memory is used to initialize 'maxmemtot',
+	    which may be much more than the amount of physical memory,
+	    resulting in a lot of swapping.
+Solution:   Get the amount of physical memory with sysctl(), sysconf() or
+	    sysinfo() when possible.
+Files:	    src/auto/configure, src/configure.in, src/config.h.in,
+	    src/os_unix.c, src/os_unix.h
+
+Patch 6.0.265
+Problem:    Win32: Using backspace while 'fkmap' is set causes a crash.
+	    (Jamshid Oasjmoha)
+Solution:   Don't try mapping special keys.
+Files:	    src/farsi.c
+
+Patch 6.0.266
+Problem:    The rename() function deletes the file if the old and the new name
+	    are the same. (Volker Kiefel)
+Solution:   Don't do anything if the names are equal.
+Files:	    src/fileio.c
+
+Patch 6.0.267
+Problem:    UTF-8: Although 'isprint' says a character is printable,
+	    utf_char2cells() still considers it unprintable.
+Solution:   Use vim_isprintc() for characters upto 0x100. (Yasuhiro Matsumoto)
+Files:	    src/mbyte.c
+
+Patch 6.0.268 (extra) (depends on patch 6.0.255)
+Problem:    Win32: ACL check crashes when using forward slash in file name.
+Solution:   Improve the check for the path in the file name.
+Files:	    src/os_win32.c
+
+Patch 6.0.269
+Problem:    Unprintable characters in a file name may cause problems when
+	    using the 'statusline' option or when 'buftype' is "nofile".
+Solution:   call trans_characters() for the resulting statusline. (Yasuhiro
+	    Matsumoto)
+Files:	    src/buffer.c, src/screen.c, src/charset.c
+
+Patch 6.0.270 (depends on patch 6.0.267)
+Problem:    A tab causes UTF-8 text to be displayed in the wrong position.
+	    (Ron Aaron)
+Solution:   Correct utf_char2cells() again.
+Files:	    src/mbyte.c
+
+Patch 6.1a.001 (extra)
+Problem:    32bit DOS: copying text to the clipboard may cause a crash.
+	    (Jonathan D Johnston)
+Solution:   Don't copy one byte too much in SetClipboardData().
+Files:	    src/os_msdos.c
+
+Patch 6.1a.002
+Problem:    GTK: On some configurations, when closing a dialog from the window
+	    manager, Vim hangs.
+Solution:   Catch the "destroy" signal. (Aric Blumer)
+Files:	    src/gui_gtk.c
+
+Patch 6.1a.003
+Problem:    Multi-byte: With UTF-8 double-wide char and 'virtualedit' set:
+	    yanking in Visual mode doesn't include the last byte. (Eric Long)
+Solution:   Don't add a space for a double-wide character.
+Files:	    src/ops.c
+
+Patch 6.1a.004 (extra)
+Problem:    MINGW: undefined type. (Ron Aaron)
+Solution:   Make GetCompositionString_inUCS2() static.
+Files:	    src/gui_w32.c, src/gui_w48.c, src/proto/gui_w32.pro
+
+Patch 6.1a.005 (extra)
+Problem:    Win32: ":hardcopy" doesn't work after ":hardcopy!". (Jonathan
+	    Johnston)
+Solution:   Don't keep the driver context when using ":hardcopy!". (Vince
+	    Negri)
+Files:	    src/os_mswin.c
+
+Patch 6.1a.006
+Problem:    multi-byte: after setting 'encoding' the window title might be
+	    wrong.
+Solution:   Force resetting the title. (Yasuhiro Matsumoto)
+Files:	    src/option.c
+
+Patch 6.1a.007
+Problem:    Filetype detection for "*.inc" doesn't work.
+Solution:   Use a ":let" command. (David Schweikert)
+Files:	    runtime/filetype.vim
+
+Patch 6.1a.008 (extra)
+Problem:    Win32: ACL detection for network shares doesn't work.
+Solution:   Include the trailing (back)slash in the root path. (Mike Williams)
+Files:	    src/os_win32.c
+
+Patch 6.1a.009
+Problem:    When using "\@<=" or "\@<!" in a pattern, a "\1" may refer to a ()
+	    part that follows, but it generates an error message.
+Solution:   Allow a forward reference when there is a following "\@<=" or
+	    "\@<!".
+Files:	    runtime/doc/pattern.txt, src/regexp.c
+
+Patch 6.1a.010
+Problem:    When using ":help" and opening a new window, the alternate file
+	    isn't set.
+Solution:   Set the alternate file to the previously edited file.
+Files:	    src/ex_cmds.c
+
+Patch 6.1a.011
+Problem:    GTK: ":set co=77", change width with the mouse, ":set co=77"
+	    doesn't resize the window. (Darren Hiebert)
+Solution:   Set the form size after handling a resize event.
+Files:	    src/gui_gtk_x11.c
+
+Patch 6.1a.012
+Problem:    GTK: The file browser always returns a full path. (Lohner)
+Solution:   Shorten the file name if possible.
+Files:	    src/gui_gtk.c
+
+Patch 6.1a.013
+Problem:    When using "=~word" in 'cinkeys' or 'indentkeys', the case of the
+	    last character of the word isn't ignored. (Raul Segura Acevedo)
+Solution:   Ignore case when checking the last typed character.
+Files:	    src/edit.c
+
+Patch 6.1a.014
+Problem:    After patch 6.1a.006 can't compile without the title feature.
+Solution:   Add an #ifdef.
+Files:	    src/option.c
+
+Patch 6.1a.015
+Problem:    MS-Windows: When expanding a file name that contains a '[' or '{'
+	    an extra backslash is inserted. (Raul Segura Acevedo)
+Solution:   Avoid adding the backslash.
+Files:	    src/ex_getln.c
+
+Patch 6.1a.016
+Problem:    Completion after ":language" doesn't include "time". (Raul Segura
+	    Acevedo)
+Solution:   Add the alternative to the completions.
+Files:	    src/ex_cmds2.c
+
+Patch 6.1a.017
+Problem:    Clicking the mouse in the top row of a window where the first line
+	    doesn't fit moves the cursor to the wrong column.
+Solution:   Add the skipcol also for the top row of a window.
+Files:	    src/ui.c
+
+Patch 6.1a.018
+Problem:    When 'scrolloff' is one and the window height is one, "gj" can put
+	    the cursor above the window. (Raul Segura Acevedo)
+Solution:   Don't let skipcol become bigger than the cursor column.
+Files:	    src/move.c
+
+Patch 6.1a.019
+Problem:    When using a composing character on top of an ASCII character, the
+	    "l" command clears the composing character.  Only when 'ruler' and
+	    'showcmd' are off. (Raphael Finkel)
+Solution:   Don't move the cursor by displaying characters when there are
+	    composing characters.
+Files:	    src/screen.c
+
+Patch 6.1a.020
+Problem:    GTK: after patch 6.1a.011 resizing with the mouse doesn't always
+	    work well for small sizes. (Adrien Beau)
+Solution:   Use another way to avoid the problem with ":set co=77".
+Files:	    src/gui_gtk_x11.c
+
+Patch 6.1a.021
+Problem:    Several Syntax menu entries are wrong or confusing.
+Solution:   Rephrase and correct the menu entries. (Adrien Beau)
+Files:	    runtime/makemenu.vim, runtime/menu.vim
+
+Patch 6.1a.022
+Problem:    A tags file might be used twice on case insensitive systems.
+	    (Rick Swanton)
+Solution:   Don't use the same file name twice in the default for the 'tags'
+	    option.  Ignore case when comparing names of already visited
+	    files.
+Files:	    src/misc2.c, src/option.c
+
+Patch 6.1a.023
+Problem:    When starting the GUI get "C" characters echoed in the terminal.
+Solution:   Don't try sending a clear-screen command while the GUI is starting
+	    up.
+Files:	    src/screen.c
+
+Patch 6.1a.024
+Problem:    In other editors CTRL-F is often used for a find dialog.
+Solution:   In evim use CTRL-F for the find dialog.
+Files:	    runtime/evim.vim
+
+Patch 6.1a.025
+Problem:    The choices for the fileformat dialog can't be translated.
+Solution:   Add g:menutrans_fileformat_choices. (Adrien Beau)
+Files:	    runtime/menu.vim
+
+Patch 6.1a.026
+Problem:    Indenting Java files is wrong with "throws", "extends" and
+	    "implements" clauses.
+Solution:   Update the Java indent script.
+Files:	    runtime/indent/java.vim
+
+Patch 6.1a.027
+Problem:    A few Syntax menu entries missing or incorrect.
+Solution:   Add and correct the menu entries. (Adrien Beau)
+	    Shorten a few menus to avoid they become too long.
+Files:	    runtime/makemenu.vim, runtime/menu.vim
+
+Patch 6.1a.028
+Problem:    XIM: problems with feedback and some input methods.
+Solution:   Use iconv for calculating the cells.  Remove the queue for
+	    key_press_event only when text was changed. (Yasuhiro Matsumoto)
+Files:	    src/globals.h, src/mbyte.c, src/screen.c
+
+Patch 6.1a.029
+Problem:    After patch 6.1a.028 can't compile GTK version with XIM but
+	    without multi-byte chars.
+Solution:   Add an #ifdef. (Aschwin Marsman)
+Files:	    src/mbyte.c
+
+Patch 6.1a.030
+Problem:    With double-byte encodings toupper() and tolower() may have wrong
+	    results.
+Solution:   Skip double-byte characters. (Eric Long)
+Files:	    src/eval.c
+
+Patch 6.1a.031
+Problem:    Accessing the 'balloondelay' variable may cause a crash.
+Solution:   Make the variable for 'balloondelay' a long. (Olaf Seibert)
+Files:	    src/option.h
+
+Patch 6.1a.032 (extra)
+Problem:    Some menu files used a wrong encoding name for "scriptencoding".
+Solution:   Move the translations to a separate file, which is sourced after
+	    setting "scriptencoding".
+	    Also add Czech menu translations in ASCII and update the other
+	    encodings.
+Files:	    runtime/lang/menu_cs_cz.iso_8859-1.vim,
+	    runtime/lang/menu_cs_cz.iso_8859-2.vim,
+	    runtime/lang/menu_czech_czech_republic.1250.vim,
+	    runtime/lang/menu_czech_czech_republic.1252.vim,
+	    runtime/lang/menu_czech_czech_republic.ascii.vim,
+	    runtime/lang/menu_de_de.iso_8859-1.vim,
+	    runtime/lang/menu_de_de.latin1.vim,
+	    runtime/lang/menu_fr_fr.iso_8859-1.vim,
+	    runtime/lang/menu_fr_fr.latin1.vim,
+	    runtime/lang/menu_french_france.1252.vim,
+	    runtime/lang/menu_german_germany.1252.vim,
+	    runtime/lang/menu_ja_jp.euc-jp.vim,
+	    runtime/lang/menu_ja_jp.utf-8.vim,
+	    runtime/lang/menu_japanese_japan.932.vim
+
+Patch 6.1a.033
+Problem:    XIM: doesn't reset input context.
+Solution:   call xim_reset() with im_set_active(FALSE). (Takuhiro Nishioka)
+Files:	    src/mbyte.c
+
+Patch 6.1a.034 (extra)
+Problem:    Win32: The ACL checks for a readonly file still don't work well.
+Solution:   Remove the ACL checks, go back to how it worked in Vim 6.0.
+Files:	    src/os_win32.c
+
+Patch 6.1a.035
+Problem:    multi-byte: When using ":sh" in the GUI, typed and displayed
+	    multi-byte characters are not handled correctly.
+Solution:   Deal with multi-byte characters to and from the shell. (Yasuhiro
+	    Matsumoto)  Also handle UTF-8 composing characters.
+Files:	    src/os_unix.c
+
+Patch 6.1a.036
+Problem:    GTK: the save-yourself event was not handled.
+Solution:   Catch the save-yourself event and preserve swap files. (Neil Bird)
+Files:	    src/gui_gtk_x11.c
+
+Patch 6.1a.037
+Problem:    The MS-Windows key mapping doesn't include CTRL-S for saving.
+	    (Vlad Sandrini)
+Solution:   Map CTRL-S to ":update".
+Files:	    runtime/mswin.vim
+
+Patch 6.1a.038
+Problem:    Solaris: Including both sys/sysctl.h and sys/sysinfo.h doesn't
+	    work. (Antonio Colombo)
+Solution:   Don't include sys/sysinfo.h when not calling sysinfo().
+Files:	    src/os_unix.c
+
+Patch 6.1a.039
+Problem:    Not all visual basic files are recognized.
+Solution:   Add checks to catch *.ctl files. (Raul Segura Acevedo)
+Files:	    runtime/filetype.vim
+
+Patch 6.1a.040
+Problem:    A *.pl file is recognized as Perl, but it could be a prolog file.
+Solution:   Check the first non-empty line. (Kontra Gergely)
+Files:	    runtime/filetype.vim
+
+Patch 6.1a.041
+Problem:    When pressing the left mouse button in the command line and them
+	    moving the mouse upwards, nearly all the text is selected.
+Solution:   Don't try extending a modeless selection when there isn't one.
+Files:	    src/ui.c
+
+Patch 6.1a.042
+Problem:    When merging files, ":diffput" and ":diffget" are used a lot, but
+	    they require a lot of typing.
+Solution:   Add "dp" for ":diffput" and "do" for ":diffget".
+Files:	    runtime/doc/diff.txt, src/diff.c, src/normal.c, src/proto/diff.pro
+
+
+Patch 6.1b.001 (extra)
+Problem:    Checking for wildcards in a path does not handle multi-byte
+	    characters with a trail byte which is a wildcard.
+Solution:   Handle multi-byte characters correctly. (Muraoka Taro)
+Files:	    src/os_amiga.c, src/os_mac.c, src/os_msdos.c, src/os_mswin.c,
+	    src/os_unix.c
+
+Patch 6.1b.002
+Problem:    A regexp that ends in "\{" is not flagged as an error.  May cause
+	    a stack overflow when 'incsearch' is set. (Gerhard Hochholzer)
+Solution:   Handle a missing "}" as an error.
+Files:	    src/regexp.c
+
+Patch 6.1b.003 (extra)
+Problem:    The RISC OS GUI doesn't compile.
+Solution:   Include changes since Vim 5.7. (Andy Wingate)
+Files:	    src/Make_ro.mak, src/gui_riscos.c, src/os_riscos.c,
+	    src/os_riscos.h, src/proto/gui_riscos.pro
+
+Patch 6.1b.004
+Problem:    col("'>") returns a negative number for linewise selection. (Neil
+	    Bird)
+Solution:   Don't add one to MAXCOL.
+Files:	    src/eval.c
+
+Patch 6.1b.005
+Problem:    Using a search pattern that causes an out-of-stack error while
+	    'hlsearch' is set keeps giving the hit-Enter prompt.
+	    A search pattern that takes a long time delays typing when
+	    'incsearch' is set.
+Solution:   Stop 'hlsearch' highlighting when the regexp causes an error.
+	    Stop searching for 'incsearch' when a character is typed.
+Files:	    src/globals.h, src/message.c, src/screen.c, src/search.c,
+	    src/vim.h
+
+Patch 6.1b.006
+Problem:    When entering a composing character on the command line with
+	    CTRL-V, the text isn't redrawn correctly.
+Solution:   Redraw the text under and after the cursor.
+Files:	    src/ex_getln.c
+
+Patch 6.1b.007
+Problem:    When the cursor is in the white space between two sentences, "dis"
+	    deletes the first character of the following sentence, "das"
+	    deletes a space after the sentence.
+Solution:   Backup the cursor one character in these situations.
+Files:	    src/search.c
+
+Patch 6.1b.008
+Problem:    *.xsl files are not recognized as xslt but xml.
+	    Monk files are not recognized.
+Solution:   Delete the duplicate line for *.xsl. (Johannes Zellner)
+	    Recognize monk files.
+Files:	    runtime/filetype.vim
+
+Patch 6.1b.009
+Problem:    Can't always compile small features and then adding eval feature,
+	    "sandbox" is undefined. (Axel Kielhorn)
+Solution:   Always define "sandbox" when the eval feature is used.
+Files:	    src/globals.h
+
+Patch 6.1b.010 (extra)
+Problem:    When compiling gvimext.cpp with MSVC 4.2 get a number of warnings.
+Solution:   Change "true" to "TRUE". (Walter Briscoe)
+Files:	    GvimExt/gvimext.cpp
+
+Patch 6.1b.011
+Problem:    When using a very long string for confirm(), can't quit the
+	    displaying at the more prompt. (Hari Krishna Dara)
+Solution:   Jump to the end of the message to show the choices.
+Files:	    src/message.c
+
+Patch 6.1b.012
+Problem:    Multi-byte: When 'showbreak' is set and a double-wide character
+	    doesn't fit at the right window edge the cursor gets stuck there.
+	    Using cursor-left gets stuck when 'virtualedit' is set.  (Eric
+	    Long)
+Solution:   Fix the way the extra ">" character is counted when 'showbreak' is
+	    set.  Don't correct cursor for virtual editing on a double-wide
+	    character.
+Files:	    src/charset.c, src/edit.c
+
+Patch 6.1b.013
+Problem:    A user command that partly matches with a buffer-local user
+	    command and matches full with a global user command unnecessarily
+	    gives an 'ambiguous command' error.
+Solution:   Find the full global match even after a partly local match.
+Files:	    src/ex_docmd.c
+
+Patch 6.1b.014
+Problem:    EBCDIC: switching mouse events off causes garbage on screen.
+	    Positioning the cursor in the GUI causes garbage.
+Solution:   Insert an ESC in the terminal code. (Ralf Schandl)
+	    Use "\b" instead of "\010" for KS_LE.
+Files:	    src/os_unix.c, src/term.c
+
+Patch 6.1b.015
+Problem:    Vimtutor has a typo.  Get a warning for "tempfile" if it
+	    doesn't exist.
+Solution:   Move a quote to the end of a line. (Max Ischenko)
+	    Use "mktemp" first, more systems have it.
+Files:	    src/vimtutor
+
+Patch 6.1b.016
+Problem:    GTK: loading a fontset that works partly, Vim might hang or crash.
+Solution:   Avoid that char_width becomes zero. (Yasuhiro Matsumoto)
+Files:	    src/gui_gtk_x11.c
+
+Patch 6.1b.017
+Problem:    GUI: When using ":shell" and there is a beep, nothing happens.
+Solution:   Call vim_beep() to produce the beep from the shell. (Yasuhiro
+	    Matsumoto)
+Files:	    src/message.c
+
+Patch 6.1b.018 (depends on 6.1b.006)
+Problem:    When entering the encryption key, special keys may still reveal
+	    the typed characters.
+Solution:   Make sure stars are used or nothing is shown in all cases.
+Files:	    src/digraph.c, src/getchar.c, src/ex_getln.c
+
+Patch 6.1b.019 (depends on 6.1b.005)
+Problem:    A search pattern that takes a long time slows down typing when
+	    'incsearch' is set.
+Solution:   Pass SEARCH_PEEK to dosearch().
+Files:	    src/ex_getln.c
+
+Patch 6.1b.020
+Problem:    When using the matchit plugin, "%" finds a match on the "end" of a
+	    ":syntax region" command in Vim scripts.
+Solution:   Skip over ":syntax region" commands by setting b:match_skip.
+Files:	    runtime/ftplugin/vim.vim
+
+Patch 6.1b.021
+Problem:    when 'mousefocus' is set, CTRL-W CTRL-] sometimes doesn't warp the
+	    pointer to the new window. (Robert Webb)
+Solution:   Don't reset need_mouse_correct when checking the timestamp of a
+	    file.
+Files:	    src/fileio.c
+
+Patch 6.1b.022
+Problem:    With lots of folds "j" does not obey 'scrolloff' properly.
+	    (Srinath Avadhanula)
+Solution:   Go to end of the fold before counting context lines.
+Files:	    src/move.c
+
+Patch 6.1b.023
+Problem:    On MS-Windows system() may cause checking timestamps, because Vim
+	    looses and gains input focus, while this doesn't happen on Unix.
+Solution:   Don't check timestamps while system() is busy.
+Files:	    src/ex_cmds2.c, src/fileio.c, src/globals.h, src/misc1.c
+
+Patch 6.1b.024 (extra)
+Problem:    Gettext 0.11 complains that "sjis" is not a standard name.
+Solution:   Use "cp932" instead.
+Files:	    src/po/sjiscorr.c
+
+Patch 6.1b.025 (extra)
+Problem:    Win32: When closing gvim while it is minimized  and has a changed
+	    file, the file-changed dialog pops up in a corner of the screen.
+Solution:   Put the dialog in the middle of the screen.
+Files:	    src/gui_w48.c
+
+Patch 6.1b.026
+Problem:    When 'diffopt' contains 'iwhite' but not 'icase': differences in
+	    case are not highlighted properly. (Gerhard Hochholzer)
+Solution:   Don't ignore case when ignoring white space differences.
+Files:	    src/diff.c
+
+Patch 6.1b.027
+Problem:    "vim --remote +" may cause a crash.
+Solution:   Check for missing file name argument. (Martin Kahlert)
+Files:	    src/main.c
+
+Patch 6.1b.028 (extra)
+Problem:    Win16: Can't compile after patch 6.1b.025.
+Solution:   Add code specifically for Win16. (Vince Negri)
+Files:	    src/gui_w48.c
+
+Patch 6.1b.029
+Problem:    Win32: When a directory on an NTFS partition is read/execute (no
+	    delete,modify,write) and the file has modify rights, trying to
+	    write the file deletes it.  Making the file read/write/execute
+	    (not delete) solves it. (Mark Canup)
+Solution:   Use the Unix code to check for a writable directory.  If not, then
+	    make a backup copy and overwrite the file.
+Files:	    src/fileio.c
+
+Patch 6.1b.030 (extra)
+Problem:    Mac: small mistake in the build script and prototypes.
+Solution:   Fix the build script and add the prototypes. (Axel Kielhorn)
+Files:	    src/os_mac.build, src/gui_mac.c
+
+Patch 6.1b.031 (extra)
+Problem:    Win32 GUI: ":set guifont=*" doesn't set 'guifont' to the resulting
+	    font name. (Vlad Sandrini)
+Solution:   Put the code back in gui_mch_init_font() to form the font name out
+	    of the logfont.
+Files:	    src/gui_w48.c
+
+Patch 6.1b.032
+Problem:    Athena: Setting a color scheme before the GUI has started causes a
+	    crash. (Todd Blumer)
+Solution:   Don't try using color names that haven't been set yet.
+Files:	    src/gui_athena.c
+
+Patch 6.1b.033
+Problem:    When using a count after a ":s" command may get ml_get errors.
+	    (Dietmar Lang)
+Solution:   Check that the resulting range does not go past the end of the
+	    buffer.
+Files:	    src/ex_cmds.c
+
+Patch 6.1b.034
+Problem:    After sourcing mswin.vim, when using <C-S-Right> after
+	    auto-indenting and then <Del>, get warning for allocating
+	    ridiculous amount of memory. (Dave Delgreco)
+Solution:   Adjust the start of the Visual area when deleting the auto-indent.
+Files:	    src/edit.c
+
+Patch 6.1b.035
+Problem:    When using evim, dropping a file on Vim and then double clicking
+	    on a word, it is changed to "i". (Merlin Hansen)
+Solution:   Reset need_start_insertmode after editing the file.
+Files:	    src/ex_docmd.c
+
+
+==============================================================================
+VERSION 6.2						*version-6.2*
+
+This section is about improvements made between version 6.1 and 6.2.
+
+This is mainly a bug-fix release.  There are also a few new features.
+
+Main new features:
+- Support for GTK 2. (Daniel Elstner)
+- Support for editing Arabic text. (Nadim Shaikli & Isam Bayazidi)
+- ":try" command and exception handling. (Servatius Brandt)
+- Support for the neXtaw GUI toolkit (mostly like Athena). (Alexey Froloff)
+- Cscope support for Win32. (Khorev Sergey)
+- Support for PostScript printing in various 8-bit encodings. (Mike Williams)
+
+
+Changed							*changed-6.2*
+-------
+
+Removed the scheme indent file, the internal Lisp indenting works well now.
+
+Moved the GvimEXt, OleVim and VisVim directories into the "src" directory.
+This is more consistent with how xxd is handled.
+
+The VisVim.dll file is installed in the top directory, next to gvimext.dll,
+instead of in a subdirectory "VisVim".  Fixes that NSIS was uninstalling it
+from the wrong directory.
+
+Removed the art indent file, it didn't do anything.
+
+submatch() returned line breaks with CR instead of LF.
+
+Changed the Win32 Makefiles to become more uniform and compile gvimext.dll.
+(Dan Sharp)
+
+'cindent': Align a "//" comment with a "//" comment in a previous line.
+(Helmut Stiegler)
+
+Previously only for xterm-like terminals parent widgets were followed to find
+the title and icon label.  Now do this for all terminal emulators.
+
+Made it possible to recognize backslashes for "%" matching.  The 'M' flag in
+'cpoptions' disables it. (Haakon Riiser)
+
+Removed the Make_tcc.mak makefile for Turbo C.  It didn't work and we probably
+can't make it work (the compiler runs out of memory).
+
+Even though the documentation refers to keywords, "[ CTRL-D" was using
+'isident' to find matches.  Changed it to use 'iskeyword'.  Also applies to
+other commands that search for defined words in included files such as
+":dsearch", "[D" and "[d".
+
+Made 'keywordprg' global-local. (Christian Robinson)
+
+Enabled the Netbeans interface by default.  Reversed the configure argument
+from "--enable-netbeans" to "--disable-netbeans".
+
+
+Added							*added-6.2*
+-----
+
+New options:
+	'arabic'
+	'arabicshape'
+	'ambiwidth'
+	'autochdir'
+	'casemap'
+	'copyindent'
+	'cscopequickfix'
+	'preserveindent'
+	'printencoding'
+	'rightleftcmd'
+	'termbidi'
+	'toolbariconsize'
+	'winfixheight'
+
+New keymaps:
+	Serbian (Aleksandar Veselinovic)
+	Chinese Pinyin (Fredrik Roubert)
+	Esperanto (Antoine J. Mechelynck)
+
+New syntax files:
+	Valgrind (Roger Luethi)
+	Smarty template (Manfred Stienstra)
+	MySQL (Kenneth Pronovici)
+	RockLinux package description (Piotr Esden-Tempski)
+	MMIX (Dirk Huesken)
+	gkrellmrc (David Necas)
+	Tilde (Tobias Rundtrom)
+	Logtalk (Paulo Moura)
+	PLP (Juerd Waalboer)
+	fvwm2m4 (David Necas)
+	IPfilter (Hendrik Scholz)
+	fstab (Radu Dineiu)
+	Quake (Nikolai Weibull)
+	Occam (Mario Schweigler)
+	lpc (Shizhu Pan)
+	Exim conf (David Necas)
+	EDIF (Artem Zankovich)
+	.cvsrc (Nikolai Weibull)
+	.fetchmailrc (Nikolai Weibull)
+	GNU gpg (Nikolai Weibull)
+	Grub (Nikolai Weibull)
+	Modconf (Nikolai Weibull)
+	RCS (Dmitry Vasiliev)
+	Art (Dorai Sitaram)
+	Renderman Interface Bytestream (Andrew J Bromage)
+	Mailcap (Doug Kearns)
+	Subversion commit file (Dmitry Vasiliev)
+	Microsoft IDL (Vadim Zeitlin)
+	WildPackets EtherPeek Decoder (Christopher Shinn)
+	Spyce (Rimon Barr)
+	Resolv.conf (Radu Dineiu)
+	A65 (Clemens Kirchgatterer)
+	sshconfig and sshdconfig (David Necas)
+	Cheetah and HTMLCheetah (Max Ischenko)
+	Packet filter (Camiel Dobbelaar)
+
+New indent files:
+	Eiffel (David Clarke)
+	Tilde (Tobias Rundtrom)
+	Occam (Mario Schweigler)
+	Art (Dorai Sitaram)
+	PHP (Miles Lott)
+	Dylan (Brent Fulgham)
+
+New tutor translations:
+	Slovak (Lubos Celko)
+	Greek (Christos Kontas)
+	German (Joachim Hofmann)
+	Norwegian (Øyvind Holm)
+
+New filetype plugins:
+	Occam (Mario Schweigler)
+	Art (Dorai Sitaram)
+	ant.vim, aspvbs.vim, config.vim, csc.vim, csh.vim, dtd.vim, html.vim,
+	jsp.vim, pascal.vim, php.vim, sgml.vim, sh.vim, svg.vim, tcsh.vim,
+	xhtml.vim, xml.vim, xsd.vim.  (Dan Sharp)
+
+New compiler plugins:
+	Checkstyle (Doug Kearns)
+	g77 (Ralf Wildenhues)
+	fortran (Johann-Guenter Simon)
+	Xmllint (Doug Kearns)
+	Ruby (Tim Hammerquist)
+	Modelsim vcom (Paul Baleme)
+
+New menu translations:
+	Brazilian (José de Paula)
+	British (Mike Williams)
+	Korean in UTF-8. (Nam SungHyun)
+	Norwegian (Øyvind Holm)
+	Serbian (Aleksandar Jelenak)
+
+New message translation for Norwegian. (Øyvind Holm)
+
+New color scheme:
+	desert (Hans Fugal)
+
+Arabic specific features. 'arabicshape', 'termbidi', 'arabic' and
+'rightleftcmd' options.  (Nadim Shaikli & Isam Bayazidi)
+
+Support for neXtaw GUI toolkit, mostly like Athena. (Alexey Froloff)
+
+Win32: cscope support. (Khorev Sergey)
+
+VMS: various improvements to documentation and makefiles.  (Zoltan Arpadffy)
+
+Added "x" key to the explorer plugin: execute the default action. (Yasuhiro
+Matsumoto)
+
+Compile gvimext.dll with MingW. (Rene de Zwart)
+
+Add the "tohtml.vim" plugin.  It defines the ":TOhtml" user command, an easy
+way to convert text to HTML.
+
+Added ":try" / ":catch" / ":finally" / ":endtry" commands.  Add E999 numbers
+to all error messages, so that they can be caught by the number.
+(Servatius Brandt)
+Moved part of ex_docmd.c to the new ex_eval.c source file.
+
+Include support for GTK+ 2.2.x (Daniel Elstner)
+Adds the "~" register: drag & drop text.
+Adds the 'toolbariconsize' option.
+Add -Dalloca when running lint to work around a problem with alloca()
+prototype.
+
+When selecting an item in the error window to jump to, take some effort to
+find an ordinary window to show the file in (not a preview window).
+
+Support for PostScript printing of various 8-bit encodings. (Mike Williams)
+
+inputdialog() accepts a third argument that is used when the dialog is
+cancelled.  Makes it possible to see a difference between cancelling and
+entering nothing.
+
+Included Aap recipes.  Can be used to update Vim to the latest version,
+building and installing.
+
+"/" option in 'cinoptions': extra indent for comment lines. (Helmut Stiegler)
+
+Vim variable "v:register" and functions setreg(), getreg() and getregtype().
+(Michael Geddes)
+
+"v" flag in 'cpoptions': Leave text on screen with backspace in Insert mode.
+(Phillip Vandry)
+
+Dosinst.exe also finds gvimext.dll in the "GvimExt" directory.  Useful when
+running install in the "src" directory for testing.
+
+Support tag files that were sorted with case ignored. (Flemming Madsen)
+
+When completing a wildcard in a leading path element, as in "../*/Makefile",
+only the last part ("Makefile") was listed.  Support custom defined
+command line completion.  (Flemming Madsen)
+
+Also recognize "rxvt" as an xterm-like terminal. (Tomas Styblo)
+
+Proper X11 session management.  Fixes that the WM_SAVE_YOURSELF event was not
+used by popular desktops.  (Neil Bird)
+Not used for Gnome 2, it has its own handling.
+
+Support BOR, DEBUG and SPAWNO arguments for the Borland 3 Makefile. (Walter
+Briscoe)
+
+Support page breaks for printing.  Adds the "formfeed" field in
+'printoptions'.  (Mike Williams)
+
+Mac OSX: multi-language support: iconv and gettext. (Muraoka Taro, Axel
+Kielhorn)
+
+"\Z" flag in patterns: ignore differences in combining characters. (Ron Aaron)
+
+Added 'preserveindent' and 'copyindent' options.  They use existing white
+space characters instead of using Tabs as much as possible. (Chris Leishman)
+
+Updated Unicode tables to Unicode 4.0. (Raphael Finkel)
+
+Support for the mouse wheel in rxvt. (AIDA Shinra)
+
+Win32: Added ":8" file modifier to get short filename.  Test50 tests the ":8"
+expansion on Win32 systems. (Michael Geddes)
+
+'cscopequickfix' option: Open quickfix window for Cscope commands.  Also
+cleanup the code for giving messages.  (Khorev Sergey)
+
+GUI: Support more than 222 columns for mouse positions.
+
+":stopinsert" command: Don't return to Insert mode.
+
+"interrupt" command for debug mode.  Useful for simulating CTRL-C. (Servatius
+Brandt)
+
+
+Fixed							*fixed-6.2*
+-----
+
+Removed a few unused #defines from config.h.in, os_os2_cfg.h and os_vms_conf.h.
+
+The Vim icons in PNG format didn't have a transparent background. (Greg
+Roelofs)
+
+Fixed a large number of spelling mistakes in the docs. (Adri Verhoef)
+
+The #defines for prototype generation were causing trouble.  Changed them to
+typedefs.
+
+A new version of libintl.h uses __asm__, which confuses cproto.  Define a
+dummy __asm__ macro.
+
+When 'virtualedit' is set can't move to halfway an unprintable character.
+Cripples CTRL-V selection. (Taro Muraoka)
+Allow moving to halfway an unprintable character.  Don't let getvvcol() change
+the pos->coladd argument.
+
+When a tab wraps to the next line, 'listchars' is set and 'foldcolumn' is
+non-zero, only one character of the foldcolumn is highlighted. (Muraoka Taro)
+
+When using ":catch" without an argument Vim crashes. (Yasuhiro Matsumoto)
+When no argument given use the ".*" pattern.
+
+Win32: When gvim.exe is started from a shortcut with the window style property
+set to maximize Vim doesn't start with a maximized window. (Yasuhiro
+Matsumoto)  Open the window with the default size and don't call ShowWindow()
+again when it's already visible. (Helmut Stiegler)
+
+gui_gtk.c used MAX, but it's undefined to avoid a conflict with system header
+files.
+
+Win32: When closing a window from a mapping some pixels remain on the
+statusline. (Yasuhiro Matsumoto)
+
+A column number in an errorformat that goes beyond the end of the line may
+cause a crash.
+
+":throw 'test'" crashes Vim. (Yasuhiro Matsumoto)
+
+The file selector's scrollbar colors are not set after doing a ":hi Scrollbar
+guifg=color".  And the file selector's colors are not changed by the
+colorscheme command.  (David Harrison)
+
+Motif: When compiling with FEAT_FOOTER defined, the text area gets a few
+pixels extra space on the right.  Remove the special case in
+gui_get_base_width(). (David Harrison)
+
+Using CTRL-R CTRL-P in Insert mode puts the '] mark in the wrong position.
+(Helmut Stiegler)
+
+When 'formatoptions' includes "awct" a non-comment wasn't auto-formatted.
+
+Using a "--cmd" argument more than 10 times caused a crash.
+
+DEC style mouse support didn't work if the page field is not empty.
+(Uribarri)
+
+"vim -l one two" did only set 'lisp' in the first file.  Vi does it for every
+file.
+
+":set tw<" didn't work.  Was checking for '^' instead of '<'.
+
+In ":hardcopy > %.ps" the "%" was not expanded to the current filename.
+
+Made ":redraw" also update the Visual area.
+
+When a not implemented command, such as ":perl", has wrong arguments the less
+important error was reported, giving the user the idea the command could work.
+
+On non-Unix systems autocommands for writing did not attempt a match with the
+short file name, causing a pattern like "a/b" to fail.
+
+VMS: e_screenmode was not defined and a few other fixes for VMS. (Zoltan
+Arpadffy)
+
+redraw_msg() depended on FEAT_ARABIC instead of FEAT_RIGHTLEFT. (Walter
+Briscoe)
+
+Various changes for the PC Makefiles. (Walter Briscoe)
+
+Use _truename() instead of our own code to expand a file name into a full
+path. (Walter Briscoe)
+
+Error in filetype check for /etc/modutils. (Lubomir Host)
+
+Cscope interface: allocated a buffer too small.
+
+Win16: remove a trailing backslash from a path when obtaining the permission
+flags. (Vince Negri)
+
+When searching for tags with case ignored Vim could hang.
+
+When searching directories with a stopdir could get a crash.  Did not
+re-allocate enough memory. (Vince Negri)
+
+A user command may cause a crash.  Don't use the command index when it's
+negative. (Vince Negri)
+
+putenv() didn't work for MingW and Cygwin. (Dan Sharp)
+
+Many functions were common between os_msdos.c and os_win16.c.  Use os_msdos.c
+for compiling the Win16 version and remove the functions from os_win16.c.
+(Vince Negri)
+
+For terminals that behave like an xterm but didn't have a name that is
+recognized, the window title would not always be set.
+
+When syntax highlighting is off ":hardcopy" could still attempt printing
+colors.
+
+Crash when using ":catch" without an argument.  (Servatius Brandt)
+
+Win32: ":n #" doubled the backslashes.
+
+Fixed Arabic shaping for the command line. (Nadim Shaikli)
+
+Avoid splitting up a string displayed on the command line into individual
+characters, it breaks Arabic shaping.
+
+Updated Cygwin and MingW makefiles to use more dependencies. (Dan Sharp)
+
+2html.vim didn't work with 'nomagic' set.
+
+When a local argument list is used and doing ":only" Vim could crash later.
+(Muraoka Taro)
+
+When using "%P" in 'statusline' and the fillchar is "-", a percentage of 3%
+could result in "-3%".  Also avoid changing a space inside a filename to the
+fill character.
+
+MSwin: Handling of backslashes and double quotes for command line arguments
+was not like what other applications do.  (Walter Briscoe)
+
+Test32 sometimes didn't work, because test11.out was written as TEST11.OUT.
+
+Avoid pointer conversions warnings for Borland C 5.5 in dosinst.c and
+uninstal.c.
+
+More improvements for Make_bc3.mak file. (Walter Briscoe)
+
+When ":syn sync linebreaks=1" is used, editing the first line caused a redraw
+of the whole screen.
+
+Making translated messages didn't work, if_perl.xs wasn't found. (Vlad
+Sandrini)
+
+Motif and Athena: moving Vim to the foreground didn't uniconify it.  Use
+XMapRaised() instead of XRaiseWindow(). (Srikanth Sankaran)
+
+When using ":ptag" in a window where 'scrollbind' is set the preview window
+would also have 'scrollbind' set.  Also reset 'foldcolumn' and 'diff'.
+
+Various commands that split a window took over 'scrollbind', which is hardly
+ever desired.  Esp. for "q:" and ":copen".  Mostly reset 'scrollbind' when
+splitting a window.
+
+When 'shellslash' is set in the vimrc file the first entry of ":scriptnames"
+would still have backslashes.  Entries in the quickfix list could also have
+wrong (back)slashes.
+
+Win32: printer dialog texts were not translated. (Yasuhiro Matsumoto)
+
+When using a multi-byte character with a K_SPECIAL byte or a special key code
+with "--remote-send" the received byte sequence was mangled.  Put it in the
+typeahead buffer instead of the input buffer.
+
+Win32: The cursor position was incorrect after changing cursor shape.
+(Yasuhiro Matsumoto).
+
+Win32: When 'encoding' is not the current codepage the title could not be set
+to non-ascii characters.
+
+"vim -d scp://machine/file1 scp://machine/file2" did not work, there was only
+one window.  Fixed the netrw plugin not to wipe out the buffer if it is
+displayed in other windows.
+
+"/$" caused "e" in last column of screen to disappear, a highlighted blank was
+displayed instead.
+
+":s/ *\ze\n//e" removed the line break and introduced arbitrary text.  Was
+using the line count including what matched after the "\ze".
+
+Using the "c" flag with ":s" changed the behavior when a line break is
+replaced and "\@<=" is used.  Without "c" a following match was not found.
+
+":%s/\vA@<=\nB@=//gce" got stuck on "A\nB" when entering "n".
+
+VMS: add HAVE_STRFTIME in the config file. (Zoltan Arpadffy)
+
+When a delete prompts if a delete should continue when yanking is not
+possible, restore msg_silent afterwards.
+
+":sign" did not complain about a missing argument.
+
+When adding or deleting a sign 'hlsearch' highlighting could disappear.
+Use the generic functions for updating signs.
+
+On MS-Windows NT, 2K and XP don't use command.com but cmd.exe for testing.
+Makes the tests work on more systems.
+
+In the DOS tests don't create "/tmp" to avoid an error.
+
+Mac classic: Problems with reading files with CR vs CR/LF.  Rely on the
+library version of fgets() to work correctly for Metrowerks 2.2. (Axel
+Kielhorn)
+
+When typing a password a "*" was shown for each byte instead of for each
+character.  Added multi-byte handling to displaying the stars. (Yasuhiro
+Matsumoto)
+
+When using Perl 5.6 accessing $curbuf doesn't work.  Add an #ifdef to use
+different code for 5.6 and 5.8.  (Dan Sharp)
+
+MingW and Cygwin: Don't strip the debug executable. (Dan Sharp)
+
+An assignment to a variable with curlies that includes "==" doesn't work.
+Skip over the curlies before searching for an "=". (Vince Negri)
+
+When cancelling the selection of alternate matching tags the tag stack index
+could be advanced too far, resulting in an error message when using CTRL-T.
+
+
+Patch 6.1.001
+Problem:    When formatting UTF-8 text it might be wrapped at a space that is
+	    followed by a composing character. (Raphael Finkel)
+	    Also correct a display error for removing a composing char on top
+	    of a space.
+Solution:   Check for a composing character on a space.
+Files:	    src/edit.c, src/misc1.c, src/screen.c
+
+Patch 6.1.002 (extra)
+Problem:    Win32: after a ":popup" command the mouse pointer stays hidden.
+Solution:   Unhide the mouse pointer before showing the menu.
+Files:	    src/gui_w48.c
+
+Patch 6.1.003
+Problem:    When 'laststatus' is zero and there is a vertical split, the
+	    vertical separator is drawn in the command line. (Srikant
+	    Sankaran)
+Solution:   Don't draw the vertical separator where there is no statusline.
+Files:	    src/screen.c
+
+Patch 6.1.004
+Problem:    Unicode 3.2 changes width and composing of a few characters.
+	    (Markus Kuhn)
+Solution:   Adjust the Unicode functions for the character width and composing
+	    characters.
+Files:	    src/mbyte.c
+
+Patch 6.1.005
+Problem:    When using more than 50 items in 'statusline' Vim might crash.
+	    (Steve Hall)
+Solution:   Increment itemcnt in check_stl_option(). (Flemming Madsen)
+Files:	    src/option.c
+
+Patch 6.1.006
+Problem:    When using "P" in Visual mode to put linewise selected text, the
+	    wrong text is deleted. (Jakub Turski)
+Solution:   Put the text before the Visual area and correct the text to be
+	    deleted for the inserted lines.
+	    Also fix that "p" of linewise text in Visual block mode doesn't
+	    work correctly.
+Files:	    src/normal.c, src/ops.c
+
+Patch 6.1.007
+Problem:    Using ":filetype plugin off" when filetype plugins were never
+	    enabled causes an error message. (Yiu Wing)
+Solution:   Use ":silent!" to avoid the error message.
+Files:	    runtime/ftplugof.vim
+
+Patch 6.1.008
+Problem:    The "%" command doesn't ignore \" inside a string, it's seen as
+	    the end of the string. (Ken Clark)
+Solution:   Skip a double quote preceded by an odd number of backslashes.
+Files:	    src/search.c
+
+Patch 6.1.009
+Problem:    Vim crashes when using a huge number for the maxwid value in a
+	    statusline. (Robert M. Nowotniak)
+Solution:   Check for an overflow that makes maxwid negative.
+Files:	    src/buffer.c
+
+Patch 6.1.010
+Problem:    Searching backwards for a question mark with "?\?" doesn't work.
+	    (Alan Isaac)  Same problem in ":s?\??" and ":g?\??".
+Solution:   Change the "\?" in a pattern to "?" when using "?" as delimiter.
+Files:	    src/ex_cmds.c, src/ex_docmd.c, src/proto/regexp.pro, src/regexp.c,
+	    src/search.c, src/syntax.c, src/tag.c
+
+Patch 6.1.011
+Problem:    XIM: doesn't work correctly when 'number' is set.  Also, a focus
+	    problem when selecting candidates.
+Solution:   Fix the XIM problems. (Yasuhiro Matsumoto)
+Files:	    src/mbyte.c, src/screen.c
+
+Patch 6.1.012
+Problem:    A system() call might fail if fread() does CR-LF to LF
+	    translation.
+Solution:   Open the output file in binary mode. (Pavol Huhas)
+Files:	    src/misc1.c
+
+Patch 6.1.013
+Problem:    Win32: The default for 'printexpr' doesn't work when there are
+	    special characters in 'printdevice'.
+Solution:   Add double quotes around the device name. (Mike Williams)
+Files:	    runtime/doc/option.txt, src/option.c
+
+Patch 6.1.014
+Problem:    An operator like "r" used in Visual block mode doesn't use
+	    'virtualedit' when it's set to "block".
+Solution:   Check for 'virtualedit' being active in Visual block mode when the
+	    operator was started.
+Files:	    src/ex_docmd.c, src/globals.h, src/misc2.c, src/normal.c,
+	    src/ops.c, src/undo.c
+
+Patch 6.1.015
+Problem:    After patch 6.1.014 can't compile with tiny features. (Christian
+	    J. Robinson)
+Solution:   Add the missing define of virtual_op.
+Files:	    src/vim.h
+
+Patch 6.1.016 (extra)
+Problem:    Win32: Outputting Hebrew or Arabic text might have a problem with
+	    reversing.
+Solution:   Replace the RevOut() function with ETO_IGNORELANGUAGE. (Ron Aaron)
+Files:	    src/gui_w32.c
+
+Patch 6.1.017
+Problem:    Cygwin: After patch 6.1.012 Still doesn't do binary file I/O.
+	    (Pavol Juhas)
+Solution:   Define BINARY_FILE_IO for Cygwin.
+Files:	    src/os_unix.h
+
+Patch 6.1.018
+Problem:    Error message when using cterm highlighting. (Leonardo Di Lella)
+Solution:   Remove a backslash before a question mark.
+Files:	    runtime/syntax/cterm.vim
+
+Patch 6.1.019 (extra)
+Problem:    Win32: File name is messed up when editing just a drive name.
+	    (Walter Briscoe)
+Solution:   Append a NUL after the drive name. (Vince Negri)
+Files:	    src/os_win32.c
+
+Patch 6.1.020
+Problem:    col("'>") returns a huge number after using Visual line mode.
+Solution:   Return the length of the line instead.
+Files:	    src/eval.c
+
+Patch 6.1.021 (depends on patch 6.1.009)
+Problem:    Vim crashes when using a huge number for the minwid value in a
+	    statusline. (Robert M. Nowotniak)
+Solution:   Check for an overflow that makes minwid negative.
+Files:	    src/buffer.c
+
+Patch 6.1.022
+Problem:    Grabbing the status line above the command-line window works like
+	    the bottom status line was grabbed. (Jim Battle)
+Solution:   Make it possible to grab the status line above the command-line
+	    window, so that it can be resized.
+Files:	    src/ui.c
+
+Patch 6.1.023 (extra)
+Problem:    VMS: running tests doesn't work properly.
+Solution:   Adjust the makefile. (Zoltan Arpadffy)
+Files:	    src/testdir/Make_vms.mms
+
+Patch 6.1.024
+Problem:    When header files use a new syntax for declaring functions, Vim
+	    can't figure out missing prototypes properly.
+Solution:   Accept braces around a function name. (M. Warner Losh)
+Files:	    src/osdef.sh
+
+Patch 6.1.025
+Problem:    Five messages for "vim --help" don't start with a capital. (Vlad
+	    Sandrini)
+Solution:   Make the messages consistent.
+Files:	    src/main.c
+
+Patch 6.1.026
+Problem:    *.patch files are not recognized as diff files.  In a script a
+	    "VAR=val" argument after "env" isn't ignored.  PHP scripts are not
+	    recognized.
+Solution:   Add *.patch for diff filetypes.  Ignore "VAR=val".  Recognize PHP
+	    scripts. (Roman Neuhauser)
+Files:	    runtime/filetype.vim, runtime/scripts.vim
+
+Patch 6.1.027
+Problem:    When 'foldcolumn' is non-zero, a special character that wraps to
+	    the next line disturbs the foldcolumn highlighting.  (Yasuhiro
+	    Matsumoto)
+Solution:   Only use the special highlighting when drawing text characters.
+Files:	    src/screen.c
+
+Patch 6.1.028
+Problem:    Client-server: When a --remote-expr fails, Vim still exits with
+	    status zero.
+Solution:   Exit Vim with a non-zero status to indicate the --remote-expr
+	    failed. (Thomas Scott Urban)
+Files:	    src/main.c
+
+Patch 6.1.029
+Problem:    When 'encoding' is an 8-bit encoding other than "latin1", editing
+	    a utf-8 or other Unicode file uses the wrong conversion. (Jan
+	    Fedak)
+Solution:   Don't use Unicode to latin1 conversion for 8-bit encodings other
+	    than "latin1".
+Files:	    src/fileio.c
+
+Patch 6.1.030
+Problem:    When CTRL-N is mapped in Insert mode, it is also mapped after
+	    CTRL-X CTRL-N, while it is not mapped after CTRL-X CTRL-F.
+	    (Kontra Gergely)
+Solution:   Don't map CTRL-N after CTRL-X CTRL-N.  Same for CTRL-P.
+Files:	    src/getchar.c
+
+Patch 6.1.031
+Problem:    Cygwin: Xxd could read a file in text mode intead of binary mode.
+Solution:   Use "rb" or "rt" when needed. (Pavol Juhas)
+Files:	    src/xxd/xxd.c
+
+Patch 6.1.032
+Problem:    Can't specify a quickfix file without jumping to the first error.
+Solution:   Add the ":cgetfile" command. (Yegappan Lakshmanan)
+Files:	    runtime/doc/index.txt, runtime/doc/quickfix.txt, src/ex_cmds.h,
+	    src/quickfix.c
+
+Patch 6.1.033
+Problem:    GUI: When the selection is lost and the Visual highlighting is
+	    changed to underlining, the cursor is left in a different
+	    position. (Christian Michon)
+Solution:   Update the cursor position after redrawing the selection.
+Files:	    src/ui.c
+
+Patch 6.1.034
+Problem:    A CVS diff file isn't recognized as diff filetype.
+Solution:   Skip lines starting with "? " before checking for an "Index:" line.
+Files:	    runtime/scripts.vim
+
+Patch 6.1.035 (extra, depends on 6.1.016)
+Problem:    Win32: Outputting Hebrew or Arabic text might have a problem with
+	    reversing on MS-Windows 95/98/ME.
+Solution:   Restore the RevOut() function and use it in specific situations
+	    only. (Ron Aaron)
+Files:	    src/gui_w32.c
+
+Patch 6.1.036
+Problem:    This command may cause a crash: ":v/./,//-j". (Ralf Arens)
+Solution:   Compute the right length of the regexp when it's empty.
+Files:	    src/search.c
+
+Patch 6.1.037
+Problem:    When 'lazyredraw' is set, pressing "q" at the hit-enter prompt
+	    causes an incomplete redraw and the cursor isn't positioned.
+	    (Lubomir Host)
+Solution:   Overrule 'lazyredraw' when do_redraw is set.
+Files:	    src/main.c, src/screen.c
+
+Patch 6.1.038
+Problem:    Multi-byte: When a ":s" command contains a multi-byte character
+	    where the trail byte is '~' the text is messed up.
+Solution:   Properly skip multi-byte characters in regtilde() (Muraoka Taro)
+Files:	    src/regexp.c
+
+Patch 6.1.039
+Problem:    When folds are defined and the file is changed outside of Vim,
+	    reloading the file doesn't update the folds. (Anders
+	    Schack-Nielsen)
+Solution:   Recompute the folds after reloading the file.
+Files:	    src/fileio.c
+
+Patch 6.1.040
+Problem:    When changing directory for expanding a file name fails there is
+	    no error message.
+Solution:   Give an error message for this situation.  Don't change directory
+	    if we can't return to the original directory.
+Files:	    src/diff.c, src/ex_docmd.c, src/globals.h, src/misc1.c,
+	    src/os_unix.c
+
+Patch 6.1.041
+Problem:    ":mkvimrc" doesn't handle a mapping that has a leading space in
+	    the rhs. (Davyd Ondrejko)
+Solution:   Insert a CTRL-V before the leading space.  Also display leading
+	    and trailing white space in <> form.
+Files:	    src/getchar.c, src/message.c
+
+Patch 6.1.042
+Problem:    "vim -r" doesn't show all matches when 'wildignore' removes swap
+	    files. (Steve Talley)
+Solution:   Keep all matching swap file names.
+Files:	    src/memline.c
+
+Patch 6.1.043
+Problem:    After patch 6.1.040 a few warnings are produced.
+Solution:   Add a type cast to "char *" for mch_chdir(). (Axel Kielhorn)
+Files:	    src/diff.c, src/ex_docmd.c.c, src/misc1.c, src/os_unix.c
+
+Patch 6.1.044 (extra)
+Problem:    GUI: When using the find/replace dialog with text that contains a
+	    slash, an invalid substitute command is generated.
+	    On Win32 a find doesn't work when 'insertmode' is set.
+Solution:   Escape slashes with a backslash.
+	    Make the Win32, Motif and GTK gui use common code for the
+	    find/replace dialog.
+	    Add the "match case" option for Motif and GTK.
+Files:	    src/feature.h, src/proto/gui.pro, src/gui.c, src/gui.h,
+	    src/gui_motif.c, src/gui_gtk.c, src/gui_w48.c
+
+Patch 6.1.045
+Problem:    In Visual mode, with lots of folds and 'scrolloff' set to 999,
+	    moving the cursor down near the end of the file causes the text to
+	    jump up and down. (Lubomir Host)
+Solution:   Take into account that the cursor may be on the last line of a
+	    closed fold.
+Files:	    src/move.c
+
+Patch 6.1.046
+Problem:    X11 GUI: ":set lsp=2 gcr=n-v-i:hor1-blinkon0" draws a black
+	    rectangle.  ":set lsp=2 gcr=n-v-i:hor10-blinkon0" makes the cursor
+	    disappear.  (Nam SungHyun)
+Solution:   Correctly compute the height of the horizontal cursor.
+Files:	    src/gui_gtk_x11.c, src/gui_x11.c
+
+Patch 6.1.047
+Problem:    When skipping commands after an error was encountered, expressions
+	    for ":if", ";elseif" and ":while" are still evaluated.
+Solution:   Skip the expression after an error. (Servatius Brandt)
+Files:	    src/ex_docmd.c
+
+Patch 6.1.048
+Problem:    Unicode 3.2 changes were missing a few Hangul Jamo characters.
+Solution:   Recognize more characters as composing characters. (Jungshik Shin)
+Files:	    src/mbyte.c
+
+Patch 6.1.049 (extra)
+Problem:    On a 32 bit display a valid color may cause an error message,
+	    because its pixel value is negative. (Chris Paulson-Ellis)
+Solution:   Check for -11111 instead of the color being negative.
+	    Don't add one to the pixel value, -1 may be used for white.
+Files:	    src/globals.h, src/gui.c, src/gui.h, src/gui_amiga.c,
+	    src/gui_athena.c, src/gui_beos.cc, src/gui_gtk_x11.c,
+	    src/gui_mac.c, src/gui_motif.c, src/gui_photon.c,
+	    src/gui_riscos.c, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c,
+	    src/gui_x11.c, src/mbyte.c, src/syntax.c
+
+Patch 6.1.050 (depends on 6.1.049)
+Problem:    After patch 6.1.049 the non-GUI version doesn't compile.
+Solution:   Add an #ifdef FEAT_GUI.  (Robert Stanton)
+Files:	    src/syntax.c
+
+Patch 6.1.051 (depends on 6.1.044)
+Problem:    Doesn't compile with GUI and small features.
+Solution:   Adjust the #if for ga_append().
+Files:	    src/misc2.c
+
+Patch 6.1.052
+Problem:    Unix: The executable() function doesn't work when the "which"
+	    command isn't available.
+Solution:   Go through $PATH manually.  Also makes it work for VMS.
+Files:	    src/os_unix.c
+
+Patch 6.1.053
+Problem:    When 'sessionoptions' contains "globals", or "localoptions" and an
+	    option value contains a line break, the resulting script is wrong.
+Solution:   Use "\n" and "\r" for a line break. (Srinath Avadhanula)
+Files:	    src/eval.c
+
+Patch 6.1.054
+Problem:    GUI: A mouse click is not recognized at the more prompt, even when
+	    'mouse' includes 'r'.
+Solution:   Recognize a mouse click at the more prompt.
+	    Also accept a mouse click in the last line in the GUI.
+	    Add "ml" entry in 'mouseshape'.
+Files:	    src/gui.c, src/message.c, src/misc1.c, src/misc2.c, src/option.c,
+	    src/structs.h
+
+Patch 6.1.055
+Problem:    When editing a compressed file, Vim will inspect the contents to
+	    guess the filetype.
+Solution:   Don't source scripts.vim for .Z, .gz, .bz2, .zip and .tgz files.
+Files:	    runtime/filetype.vim, runtime/plugin/gzip.vim
+
+Patch 6.1.056
+Problem:    Loading the Syntax menu can take quite a bit of time.
+Solution:   Add the "skip_syntax_sel_menu" variable.  When its defined the
+	    available syntax files are not in the Syntax menu.
+Files:	    runtime/doc/gui.txt, runtime/menu.vim
+
+Patch 6.1.057
+Problem:    An ESC inside a mapping doesn't work as documented when
+	    'insertmode' is set, it does go from Visual or Normal mode to
+	    Insert mode. (Benji Fisher)
+Solution:   Make it work as documented.
+Files:	    src/normal.c
+
+Patch 6.1.058
+Problem:    When there is a closed fold just above the first line in the
+	    window, using CTRL-X CTRL-Y in Insert mode will show only one line
+	    of the fold. (Alexey Marinichev)
+Solution:   Correct the topline by putting it at the start of the fold.
+Files:	    src/move.c
+
+Patch 6.1.059
+Problem:    ":redir > ~/file" doesn't work. (Stephen Rasku)
+Solution:   Expand environment variables in the ":redir >" argument.
+Files:	    src/ex_docmd.c
+
+Patch 6.1.060
+Problem:    When 'virtualedit' is set and 'selection' is "exclusive", deleting
+	    a character just before a tab changes the tab into spaces.  Undo
+	    doesn't restore the tab. (Helmut Stiegler)
+Solution:   Don't replace the tab by spaces when it's not needed.  Correctly
+	    save the line before it's changed.
+Files:	    src/ops.c
+
+Patch 6.1.061
+Problem:    When 'virtualedit' is set and 'selection' is "exclusive", a Visual
+	    selection that ends just after a tab doesn't include that tab in
+	    the highlighting.  (Helmut Stiegler)
+Solution:   Use a different way to exclude the character under the cursor.
+Files:	    src/screen.c
+
+Patch 6.1.062
+Problem:    The "man" filetype plugin doesn't work properly on Solaris 5.
+Solution:   Use a different way to detect that "man -s" should be used. (Hugh
+	    Sasse)
+Files:	    runtime/ftplugin/man.vim
+
+Patch 6.1.063
+Problem:    Java indenting doesn't work properly.
+Solution:   Ignore comments when checking if the indent doesn't increase after
+	    a "}".
+Files:	    runtime/indent/java.vim
+
+Patch 6.1.064
+Problem:    The URLs that the netrw plugin recognized for ftp and rcp did not
+	    conform to the standard method://[user@]host[:port]/path.
+Solution:   Use ftp://[user@]host[[:#]port]/path, which supports both the new
+	    and the previous style.  Also added a bit of dav/cadaver support.
+	    (Charles Campbell)
+Files:	    runtime/plugin/netrw.vim
+
+Patch 6.1.065
+Problem:    VMS: The colorscheme, keymap and compiler menus are not filled in.
+Solution:   Ignore case when looking for ".vim" files. (Coen Engelbarts)
+Files:	    runtime/menu.vim
+
+Patch 6.1.066 (extra)
+Problem:    When calling system() in a plugin reading stdin hangs.
+Solution:   Don't set the terminal to RAW mode when it wasn't in RAW mode
+	    before the system() call.
+Files:	    src/os_amiga.c, src/os_msdos.c, src/os_riscos.c, src/os_unix.c,
+	    src/os_win16.c, src/os_win32.c
+
+Patch 6.1.067
+Problem:    ":set viminfo+=f0" is not working. (Benji Fisher)
+Solution:   Check the "f" flag instead of "'" in 'viminfo'.
+Files:	    src/mark.c
+
+Patch 6.1.068
+Problem:    When a file is reloaded after it was changed outside of Vim, diff
+	    mode isn't updated. (Michael Naumann)
+Solution:   Invalidate the diff info so that it's updated when needed.
+Files:	    src/fileio.c
+
+Patch 6.1.069
+Problem:    When 'showmatch' is set and "$" is in 'cpoptions', using
+	    "C}<Esc>" may forget to remove the "$". (Preben Guldberg)
+Solution:   Restore dollar_vcol after displaying the matching cursor position.
+Files:	    src/search.c
+
+Patch 6.1.070 (depends on 6.1.060)
+Problem:    Compiler warning for signed/unsigned mismatch. (Mike Williams)
+Solution:   Add a typecast to int.
+Files:	    src/ops.c
+
+Patch 6.1.071
+Problem:    When 'selection' is exclusive, g CTRL-G in Visual mode counts one
+	    character too much. (David Necas)
+Solution:   Subtract one from the end position.
+Files:	    src/ops.c
+
+Patch 6.1.072
+Problem:    When a file name in a tags file starts with http:// or something
+	    else for which there is a BufReadCmd autocommand, the file isn't
+	    opened anyway.
+Solution:   Check if there is a matching BufReadCmd autocommand and try to
+	    open the file.
+Files:	    src/fileio.c, src/proto/fileio.pro, src/tag.c
+
+Patch 6.1.073 (extra)
+Problem:    BC5: Can't easily specify a tiny, small, normal, big or huge
+	    version.
+Solution:   Allow selecting the version with the FEATURES variable. (Ajit
+	    Thakkar)
+Files:	    src/Make_bc5.mak
+
+Patch 6.1.074
+Problem:    When 'cdpath' includes "../..", changing to a directory in which
+	    we currently already are doesn't work.  ff_check_visited() adds
+	    the directory both when using it as the root for searching and for
+	    the actual matches. (Stephen Rasku)
+Solution:   Use a separate list for the already searched directories.
+Files:	    src/misc2.c
+
+Patch 6.1.075 (depends on 6.1.072)
+Problem:    Can't compile fileio.c on MS-Windows.
+Solution:   Add a declaration for the "p" pointer. (Madoka Machitani)
+Files:	    src/fileio.c
+
+Patch 6.1.076 (extra)
+Problem:    Macintosh: explorer plugin doesn't work on Mac Classic.
+	    IME doesn't work.  Dialog boxes don't work on Mac OS X
+Solution:   Fix explorer plugin and key modifiers. (Axel Kielhorn)
+	    Fix IME support. (Muraoka Taro)
+	    Disable dialog boxes. (Benji Fisher)
+Files:	    src/edit.c, src/feature.h, src/gui_mac.c, src/os_mac.c
+
+Patch 6.1.077
+Problem:    On a Debian systEm wht ACL linking fails. (Lubomir Host)
+Solution:   When the "acl" library is used, check if the "attr" library is
+	    present and use it.
+Files:	    src/auto/configure, src/configure.in, src/link.sh
+
+Patch 6.1.078
+Problem:    When using 'foldmethod' "marker" and the end marker appears before
+	    the start marker in the file, no fold is found. (Nazri Ramliy)
+Solution:   Don't let the fold depth go negative.
+Files:	    src/fold.c
+
+Patch 6.1.079
+Problem:    When using "s" in Visual block mode with 'virtualedit' set, when
+	    the selected block is after the end of some lines the wrong text
+	    is inserted and some lines are skipped. (Servatius Brandt)
+Solution:   Insert the right text and extend short lines.
+Files:	    src/ops.c
+
+Patch 6.1.080
+Problem:    When using gcc with /usr/local already in the search path, adding
+	    it again causes problems.
+Solution:   Adjust configure.in to avoid adding /usr/local/include and
+	    /usr/local/lib when using GCC and they are already used. (Johannes
+	    Zellner)
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.1.081
+Problem:    ":help CTRL-\_CTRL-N" doesn't work.  (Christian J. Robinson)
+Solution:   Double the backslash to avoid the special meaning of "\_".
+Files:	    src/ex_cmds.c
+
+Patch 6.1.082
+Problem:    On MS-Windows the vimrc_example.vim script is sourced and then
+	    mswin.vim.  This enables using select mode, but since "p" is
+	    mapped it doesn't replace the selection.
+Solution:   Remove the mapping of "p" from vimrc_example.vim, it's obsolete.
+	    (Vlad Sandrini)
+Files:	    runtime/vimrc_example.vim
+
+Patch 6.1.083
+Problem:    When $LANG is "sk" or "sk_sk", the Slovak menu file isn't found.
+	    (Martin Lacko)
+Solution:   Guess the right menu file based on the system.
+Files:	    runtime/lang/menu_sk_sk.vim
+
+Patch 6.1.084 (depends on 6.1.080)
+Problem:    "include" and "lib" are mixed up when checking the directories gcc
+	    already searches.
+Solution:   Swap the variable names. (SunHo Kim)
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.1.085
+Problem:    When using CTRL-O CTRL-\ CTRL-N from Insert mode, the displayed
+	    mode "(insert)" isn't removed. (Benji Fisher)
+Solution:   Clear the command line.
+Files:	    src/normal.c
+
+Patch 6.1.086 (depends on 6.1.049)
+Problem:    The guifg color for CursorIM doesn't take effect.
+Solution:   Use the foreground color when it's defined. (Muraoka Taro)
+Files:	    src/gui.c
+
+Patch 6.1.087
+Problem:    A thesaurus with Japanese characters has problems with characters
+	    in different word classes.
+Solution:   Only separate words with single-byte non-word characters.
+	    (Muraoka Taro)
+Files:	    src/edit.c
+
+Patch 6.1.088 (extra)
+Problem:    Win32: no debugging info is generated.  Tags file excludes .cpp
+	    files.
+Solution:   Add "/map" to compiler flags.  Add "*.cpp" to ctags command.
+	    (Muraoka Taro)
+Files:	    src/Make_mvc.mak
+
+Patch 6.1.089
+Problem:    On BSDI systems there is no ss_sp field in stack_t. (Robert Jan)
+Solution:   Use ss_base instead.
+Files:	    src/auto/configure, src/configure.in, src/config.h.in,
+	    src/os_unix.c
+
+Patch 6.1.090
+Problem:    CTRL-F gets stuck when 'scrolloff' is non-zero and there is a mix
+	    of long wrapping lines and a non-wrapping line.
+Solution:   Check that CTRL-F scrolls at least one line.
+Files:	    src/move.c
+
+Patch 6.1.091
+Problem:    GTK: Can't change preeditstate without setting 'imactivatekey'.
+Solution:   Add some code to change preeditstate for OnTheSpot. (Yasuhiro
+	    Matsumoto)
+Files:	    src/mbyte.c
+
+Patch 6.1.092
+Problem:    ":mapclear <buffer>" doesn't work. (Srikanth Adayapalam)
+Solution:   Allow an argument for ":mapclear".
+Files:	    src/ex_cmds.h
+
+Patch 6.1.093 (extra)
+Problem:    Mac and MS-Windows GUI: when scrolling while ":s" is working the
+	    results can be messed up, because the cursor is moved.
+Solution:   Disallow direct scrolling when not waiting for a character.
+Files:	    src/gui_mac.c, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c
+
+Patch 6.1.094
+Problem:    Cygwin: Passing a file name that has backslashes isn't handled
+	    very well.
+Solution:   Convert file name arguments to Posix.  (Chris Metcalf)
+Files:	    src/main.c
+
+Patch 6.1.095
+Problem:    When using signs can free an item on the stack.
+	    Overruling sign colors doesn't work. (Srikanth Sankaran)
+Solution:   Don't free the item on the stack.  Use NULL instead of "none" for
+	    the value of the color.
+Files:	    src/gui_x11.c
+
+Patch 6.1.096
+Problem:    When erasing the right halve of a double-byte character, it may
+	    cause further characters to be erased. (Yasuhiro Matsumoto)
+Solution:   Make sure only one character is erased.
+Files:	    src/screen.c
+
+Patch 6.1.097 (depends on 6.1.090)
+Problem:    When 'scrolloff' is set to a huge value, CTRL-F at the end of the
+	    file scrolls one line. (Lubomir Host)
+Solution:   Don't scroll when CTRL-F detects the end-of-file.
+Files:	    src/move.c
+
+Patch 6.1.098
+Problem:    MS-Windows: When the xxd program is under "c:\program files" the
+	    "Convert to Hex" menu doesn't work. (Brian Mathis)
+Solution:   Put the path to xxd in double quotes.
+Files:	    runtime/menu.vim
+
+Patch 6.1.099
+Problem:    Memory corrupted when closing a fold with more than 99999 lines.
+Solution:   Allocate more space for the fold text. (Walter Briscoe)
+Files:	    src/eval.c
+
+Patch 6.1.100 (extra, depends on 6.1.088)
+Problem:    Win32: VC5 and earlier don't support the /mapinfo option.
+Solution:   Add "/mapinfo" only when "MAP=lines" is specified. (Muraoka Taro)
+Files:	    src/Make_mvc.mak
+
+Patch 6.1.101
+Problem:    After using ":options" the tabstop of a new window is 15.  Entry
+	    in ":options" window for 'autowriteall' is wrong. (Antoine J
+	    Mechelynck)  Can't insert a space in an option value.
+Solution:   Use ":setlocal" instead of ":set".  Change "aw" to "awa".
+	    Don't map space in Insert mode.
+Files:	    runtime/optwin.vim
+
+Patch 6.1.102
+Problem:    Unprintable and multi-byte characters in a statusline item are not
+	    truncated correctly. (Yasuhiro Matsumoto)
+Solution:   Count the width of characters instead of the number of bytes.
+Files:	    src/buffer.c
+
+Patch 6.1.103
+Problem:    A function returning from a while loop, with 'verbose' set to 12
+	    or higher, doesn't mention the return value.  A function with the
+	    'abort' attribute may return -1 while the verbose message says
+	    something else.
+Solution:   Move the verbose message about returning from a function to
+	    call_func(). (Servatius Brandt)
+Files:	    src/eval.c
+
+Patch 6.1.104
+Problem:    GCC 3.1 appears to have an optimizer problem that makes test 3
+	    crash.
+Solution:   For GCC 3.1 add -fno-strength-reduce to avoid the optimizer bug.
+	    Filter out extra info from "gcc --version".
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.1.105
+Problem:    Win32: The default for 'shellpipe' doesn't redirect stderr. (Dion
+	    Nicolaas)
+Solution:   Redirect stderr, depending on the shell (like for 'shellredir').
+Files:	    src/option.c
+
+Patch 6.1.106
+Problem:    The maze program crashes.
+Solution:   Change "11" to "27" and it works. (Greg Roelofs)
+Files:	    runtime/macros/maze/mazeansi.c
+
+Patch 6.1.107
+Problem:    When 'list' is set the current line in the error window may be
+	    displayed wrong. (Muraoka Taro)
+Solution:   Don't continue the line after the $ has been displayed and the
+	    rightmost column is reached.
+Files:	    src/screen.c
+
+Patch 6.1.108
+Problem:    When interrupting a filter command such as "!!sleep 20" the file
+	    becomes read-only. (Mark Brader)
+Solution:   Only set the read-only flag when opening a buffer is interrupted.
+	    When the shell command was interrupted, read the output that was
+	    produced so far.
+Files:	    src/ex_cmds.c, src/fileio.c
+
+Patch 6.1.109
+Problem:    When 'eadirection' is "hor", using CTRL-W = doesn't equalize the
+	    window heights. (Roman Neuhauser)
+Solution:   Ignore 'eadirection' for CTRL-W =
+Files:	    src/window.c
+
+Patch 6.1.110
+Problem:    When using ":badd file" when "file" is already present but not
+	    listed, it stays unlisted. (David Frey)
+Solution:   Set 'buflisted'.
+Files:	    src/buffer.c
+
+Patch 6.1.111
+Problem:    It's not possible to detect using the Unix sources on Win32 or Mac.
+Solution:   Add has("macunix") and has("win32unix").
+Files:	    runtime/doc/eval.txt, src/eval.c
+
+Patch 6.1.112
+Problem:    When using ":argdo", ":bufdo" or ":windo", CTRL-O doesn't go to
+	    the cursor position from before this command but every position
+	    where the argument was executed.
+Solution:   Only remember the cursor position from before the ":argdo",
+	    ":bufdo" and ":windo".
+Files:	    src/ex_cmds2.c, src/mark.c
+
+Patch 6.1.113
+Problem:    ":bufdo bwipe" only wipes out half the buffers.  (Roman Neuhauser)
+Solution:   Decide what buffer to go to next before executing the command.
+Files:	    src/ex_cmds2.c
+
+Patch 6.1.114
+Problem:    ":python import vim", ":python vim.current.buffer[0:0] = []" gives
+	    a lalloc(0) error. (Chris Southern)
+Solution:   Don't allocate an array when it's size is zero.
+Files:	    src/if_python.c
+
+Patch 6.1.115
+Problem:    "das" on the white space at the end of a paragraph does not delete
+	    the "." the sentence ends with.
+Solution:   Don't exclude the last character when it is not white space.
+Files:	    src/search.c
+
+Patch 6.1.116
+Problem:    When 'endofline' is changed while 'binary' is set a file should be
+	    considered modified. (Olaf Buddenhagen)
+Solution:   Remember the 'eol' value when editing started and consider the
+	    file changed when the current value is different and 'binary' is
+	    set.  Also fix that the window title isn't updated when 'ff' or
+	    'bin' changes.
+Files:	    src/option.c, src/structs.h
+
+Patch 6.1.117
+Problem:    Small problem with editing a file over ftp: and with Cygwin.
+Solution:   Remove a dot from a ":normal" command.  Use "cygdrive" where
+	    appropriate.  (Charles Campbell)
+Files:	    runtime/plugin/netrw.vim
+
+Patch 6.1.118
+Problem:    When a file in diff mode is reloaded because it changed outside
+	    of Vim, other windows in diff mode are not always updated.
+	    (Michael Naumann)
+Solution:   After reloading a file in diff mode mark all windows in diff mode
+	    for redraw.
+Files:	    src/diff.c
+
+Patch 6.1.119 (extra)
+Problem:    With the Sniff interface, using Sniff 4.0.X on HP-UX, there may be
+	    a crash when connecting to Sniff.
+Solution:   Initialize sniff_rq_sep such that its value can be changed.
+	    (Martin Egloff)
+Files:	    src/if_sniff.c
+
+Patch 6.1.120 (depends on 6.1.097)
+Problem:    When 'scrolloff' is non-zero and there are folds, CTRL-F at the
+	    end of the file scrolls part of a closed fold.  (Lubomir Host)
+Solution:   Adjust the first line to the start of a fold.
+Files:	    src/move.c
+
+Patch 6.1.121 (depends on 6.1.098)
+Problem:    When starting Select mode from Insert mode, then using the Paste
+	    menu entry, the cursor is left before the laste pasted character.
+	    (Mario Schweigler)
+Solution:   Set the cursor for Insert mode one character to the right.
+Files:	    runtime/menu.vim
+
+Patch 6.1.122
+Problem:    ":file name" creates a new buffer to hold the old buffer name,
+	    which becomes the alternate file.  This buffer is unexpectedly
+	    listed.
+Solution:   Create the buffer for the alternate name unlisted.
+Files:	    src/ex_cmds.c
+
+Patch 6.1.123
+Problem:    A ":match" command with more than one argument doesn't report an
+	    error.
+Solution:   Check for extra characters. (Servatius Brandt)
+Files:	    src/ex_docmd.c
+
+Patch 6.1.124
+Problem:    When trying to exit and there is a hidden buffer that had 'eol'
+	    off and 'bin' set exiting isn't possible. (John McGowan)
+Solution:   Set b_start_eol when clearing the buffer.
+Files:	    src/buffer.c
+
+Patch 6.1.125
+Problem:    Explorer plugin asks for saving a modified buffer even when it's
+	    open in another window as well.
+Solution:   Count the number of windows using the buffer.
+Files:	    runtime/plugin/explorer.vim
+
+Patch 6.1.126
+Problem:    Adding the choices in the syntax menu is consuming much of the
+	    startup time of the GUI while it's not often used.
+Solution:   Only add the choices when the user wants to use them.
+Files:	    Makefile, runtime/makemenu.vim, runtime/menu.vim,
+	    runtime/synmenu.vim, src/Makefile
+
+Patch 6.1.127
+Problem:    When using "--remote file" and the server has 'insertmode' set,
+	    commands are inserted instead of being executed. (Niklas Volbers)
+Solution:   Go to Normal mode again after the ":drop" command.
+Files:	    src/main.c
+
+Patch 6.1.128
+Problem:    The expression "input('very long prompt')" puts the cursor in the
+	    wrong line (column is OK).
+Solution:   Add the wrapped lines to the indent. (Yasuhiro Matsumoto)
+Files:	    src/ex_getln.c
+
+Patch 6.1.129
+Problem:    On Solaris editing "file/" and then "file" results in using the
+	    same buffer.  (Jim Battle)
+Solution:   Before using stat(), check that there is no illegal trailing
+	    slash.
+Files:	    src/auto/configure, src/config.h.in, src/configure.in,
+	    src/macros.h src/misc2.c, src/proto/misc2.pro
+
+Patch 6.1.130
+Problem:    The documentation for some of the 'errorformat' items is unclear.
+Solution:   Add more examples and explain hard to understand items. (Stefan
+	    Roemer)
+Files:	    runtime/doc/quickfix.txt
+
+Patch 6.1.131
+Problem:    X11 GUI: when expanding a CSI byte in the input stream to K_CSI,
+	    the CSI byte itself isn't copied.
+Solution:   Copy the CSI byte.
+Files:	    src/gui_x11.c
+
+Patch 6.1.132
+Problem:    Executing a register in Ex mode may cause commands to be skipped.
+	    (John McGowan)
+Solution:   In Ex mode use an extra check if the register contents was
+	    consumed, to avoid input goes into the typeahead buffer.
+Files:	    src/ex_docmd.c
+
+Patch 6.1.133
+Problem:    When drawing double-wide characters in the statusline, may clear
+	    half of a character. (Yasuhiro Matsumoto)
+Solution:   Force redraw of the next character by setting the attributes
+	    instead of putting a NUL in ScreenLines[].  Do put a NUL in
+	    ScreenLines[] when overwriting half of a double-wide character.
+Files:	    src/screen.c
+
+Patch 6.1.134
+Problem:    An error for a trailing argument of ":match" should not be given
+	    after ":if 0". (Servatius Brandt)
+Solution:   Only do the check when executing commands.
+Files:	    src/ex_docmd.c
+
+Patch 6.1.135
+Problem:    Passing a command to the shell that includes a newline always has
+	    a backslash before the newline.
+Solution:   Remove one backslash before the newline.  (Servatius Brandt)
+Files:	    src/ex_docmd.c
+
+Patch 6.1.136
+Problem:    When $TERM is "linux" the default for 'background' is "dark", even
+	    though the GUI uses a light background. (Hugh Allen)
+Solution:   Don't mark the option as set when defaulting to "dark" for the
+	    linux console.  Also reset 'background' to "light" when the GUI
+	    has a light background.
+Files:	    src/option.c
+
+Patch 6.1.137
+Problem:    Converting to HTML has a clumsy way of dealing with tabs which may
+	    change the highlighting.
+Solution:   Replace tabs with spaces after converting a line to HTML. (Preben
+	    Guldberg)
+Files:	    runtime/syntax/2html.vim
+
+Patch 6.1.138 (depends on 6.1.126)
+Problem:    Adding extra items to the Syntax menu can't be done when the "Show
+	    individual choices" menu is used.
+Solution:   Use ":runtime!" instead of ":source", so that all synmenu.vim
+	    files in the runtime path are loaded. (Servatius Brandt)
+	    Also fix that a translated menu can't be removed.
+Files:	    runtime/menu.vim
+
+Patch 6.1.139
+Problem:    Cygwin: PATH_MAX is not defined.
+Solution:   Include limits.h. (Dan Sharp)
+Files:	    src/main.c
+
+Patch 6.1.140
+Problem:    Cygwin: ":args `ls *.c`" does not work if the shell command
+	    produces CR NL line separators.
+Solution:   Remove the CR characters ourselves. (Pavol Juhas)
+Files:	    src/os_unix.c
+
+Patch 6.1.141
+Problem:    ":wincmd gx" may cause problems when mixed with other commands.
+	    ":wincmd c" doesn't close the window immediately. (Benji Fisher)
+Solution:   Pass the extra command character directly instead of using the
+	    stuff buffer and call ex_close() directly.
+Files:	    src/ex_docmd.c, src/normal.c, src/proto/normal.pro,
+	    src/proto/window.pro, src/window.c
+
+Patch 6.1.142
+Problem:    Defining paragraphs without a separating blank line isn't
+	    possible.  Paragraphs can't be formatted automatically.
+Solution:   Allow defining paragraphs with lines that end in white space.
+	    Added the 'w' and 'a' flags in 'formatoptions'.
+Files:	    runtime/doc/change.txt, src/edit.c, src/misc1.c, src/normal.c,
+	    src/option.h, src/ops.c, src/proto/edit.pro, src/proto/ops.pro,
+	    src/vim.h
+
+Patch 6.1.143 (depends on 6.1.142)
+Problem:    Auto formatting near the end of the file moves the cursor to a
+	    wrong position.  In Insert mode some lines are made one char too
+	    narrow.  When deleting a line undo might not always work properly.
+Solution:   Don't always move to the end of the line in the last line.  Don't
+	    position the cursor past the end of the line in Insert mode.
+	    After deleting a line save the cursor line for undo.
+Files:	    src/edit.c, src/ops.c, src/normal.c
+
+Patch 6.1.144
+Problem:    Obtaining the size of a line in screen characters can be wrong.
+	    A pointer may wrap around zero.
+Solution:   In win_linetabsize() check for a MAXCOL length argument. (Jim
+	    Dunleavy)
+Files:	    src/charset.c
+
+Patch 6.1.145
+Problem:    GTK: Drag&drop with more than 3 files may cause a crash. (Mickael
+	    Marchand)
+Solution:   Rewrite the code that parses the received list of files to be more
+	    robust.
+Files:	    src/charset.c, src/gui_gtk_x11.c
+
+Patch 6.1.146
+Problem:    MS-Windows: When $HOME is constructed from $HOMEDRIVE and
+	    $HOMEPATH, it is not used for storing the _viminfo file.  (Normal
+	    Diamond)
+Solution:   Set $HOME with the value obtained from $HOMEDRIVE and $HOMEPATH.
+Files:	    src/misc1.c
+
+Patch 6.1.147 (extra)
+Problem:    MS-Windows: When a dialog has no default button, pressing Enter
+	    ends it anyway and all buttons are selected.
+Solution:   Don't end a dialog when there is no default button.  Don't select
+	    all button when there is no default. (Vince Negri)
+Files:	    src/gui_w32.c
+
+Patch 6.1.148 (extra)
+Problem:    MS-Windows: ACL is not properly supported.
+Solution:   Add an access() replacement that also works for ACL. (Mike
+	    Williams)
+Files:	    runtime/doc/editing.txt, src/os_win32.c
+
+Patch 6.1.149 (extra)
+Problem:    MS-Windows: Can't use diff mode from the file explorer.
+Solution:   Add a "diff with Vim" context menu entry. (Dan Sharp)
+Files:	    GvimExt/gvimext.cpp, GvimExt/gvimext.h
+
+Patch 6.1.150
+Problem:    OS/2, MS-Windows and MS-DOS: When 'shellslash' is set getcwd()
+	    still uses backslash. (Yegappan Lakshmanan)
+Solution:   Adjust slashes in getcwd().
+Files:	    src/eval.c
+
+Patch 6.1.151 (extra)
+Problem:    Win32: The NTFS substream isn't copied.
+Solution:   Copy the substream when making a backup copy. (Muraoka Taro)
+Files:	    src/fileio.c, src/os_win32.c, src/proto/os_win32.pro
+
+Patch 6.1.152
+Problem:    When $LANG is iso8859-1 translated menus are not used.
+Solution:   Change iso8859 to iso_8859.
+Files:	    runtime/menu.vim
+
+Patch 6.1.153
+Problem:    Searching in included files may search recursively when the path
+	    starts with "../".  (Sven Berkvens-Matthijsse)
+Solution:   Compare full file names, use inode/device when possible.
+Files:	    src/search.c
+
+Patch 6.1.154 (extra)
+Problem:    DJGPP: "vim -h" leaves the cursor in a wrong position.
+Solution:   Don't position the cursor using uninitialized variables. (Jim
+	    Dunleavy)
+Files:	    src/os_msdos.c
+
+Patch 6.1.155
+Problem:    Win32: Cursor may sometimes disappear in Insert mode.
+Solution:   Change "hor10" in 'guicursor' to "hor15". (Walter Briscoe)
+Files:	    src/option.c
+
+Patch 6.1.156
+Problem:    Conversion between DBCS and UCS-2 isn't implemented cleanly.
+Solution:   Clean up a few things.
+Files:	    src/mbyte.c, src/structs.h
+
+Patch 6.1.157
+Problem:    'hlsearch' highlights only the second comma in ",,,,," with
+	    "/,\@<=[^,]*". (Preben Guldberg)
+Solution:   Also check for an empty match to start just after a previous
+	    match.
+Files:	    src/screen.c
+
+Patch 6.1.158
+Problem:    "zs" and "ze" don't work correctly with ":set nowrap siso=1".
+	    (Preben Guldberg)
+Solution:   Take 'siso' into account when computing the horizontal scroll
+	    position for "zs" and "ze".
+Files:	    src/normal.c
+
+Patch 6.1.159
+Problem:    When expanding an abbreviation that includes a multi-byte
+	    character too many characters are deleted. (Andrey Urazov)
+Solution:   Delete the abbreviation counting characters instead of bytes.
+Files:	    src/getchar.c
+
+Patch 6.1.160
+Problem:    ":$read file.gz" doesn't work. (Preben Guldberg)
+Solution:   Don't use the '[ mark after it has become invalid.
+Files:	    runtime/plugin/gzip.vim
+
+Patch 6.1.161 (depends on 6.1.158)
+Problem:    Warning for signed/unsigned compare.  Can set 'siso' to a negative
+	    value. (Mike Williams)
+Solution:   Add a typecast.  Add a check for 'siso' being negative.
+Files:	    src/normal.c, src/option.c
+
+Patch 6.1.162
+Problem:    Python interface: Didn't initialize threads properly.
+Solution:   Call PyEval_InitThreads() when starting up.
+Files:	    src/if_python.c
+
+Patch 6.1.163
+Problem:    Win32: Can't compile with Python after 6.1.162.
+Solution:   Dynamically load  PyEval_InitThreads(). (Dan Sharp)
+Files:	    src/if_python.c
+
+Patch 6.1.164
+Problem:    If 'modifiable' is off, converting to xxd fails and 'filetype' is
+	    changed to "xxd" anyway.
+Solution:   Don't change 'filetype' when conversion failed.
+Files:	    runtime/menu.vim
+
+Patch 6.1.165
+Problem:    Making changes in several lines and then a change in one of these
+	    lines that splits it in two or more lines, undo information was
+	    corrupted.  May cause a crash. (Dave Fishburn)
+Solution:   When skipping to save a line for undo because it was already
+	    saved, move it to become the last saved line, so that when the
+	    command changes the line count other saved lines are not involved.
+Files:	    src/undo.c
+
+Patch 6.1.166
+Problem:    When 'autoindent' is set and mswin.vim has been sourced, pasting
+	    with CTRL-V just after auto-indenting removes the indent. (Shlomi
+	    Fish)
+Solution:   First insert an "x" and delete it again, so that the auto-indent
+	    remains.
+Files:	    runtime/mswin.vim
+
+Patch 6.1.167
+Problem:    When giving a negative argument to ":retab" strange things start
+	    happening. (Hans Ginzel)
+Solution:   Check for a negative value.
+Files:	    src/ex_cmds.c
+
+Patch 6.1.168
+Problem:    Pressing CTRL-C at the hit-enter prompt doesn't end the prompt.
+Solution:   Make CTRL-C stop the hit-enter prompt.
+Files:	    src/message.c
+
+Patch 6.1.169
+Problem:    bufexists() finds a buffer by using the name of a symbolic link to
+	    it, but bufnr() doesn't. (Yegappan Lakshmanan)
+Solution:   When bufnr() can't find a buffer, try using the same method as
+	    bufexists().
+Files:	    src/eval.c
+
+Patch 6.1.170
+Problem:    Using ":mksession" uses the default session file name, but "vim
+	    -S" doesn't. (Hans Ginzel)
+Solution:   Use the default session file name if "-S" is the last command
+	    line argument or another option follows.
+Files:	    runtime/doc/starting.txt, src/main.c
+
+Patch 6.1.171
+Problem:    When opening a line just above a closed fold with "O" and the
+	    comment leader is automatically inserted, the cursor is displayed
+	    in the first column. (Sung-Hyun Nam)
+Solution:   Update the flag that indicates the cursor is in a closed fold.
+Files:	    src/misc1.c
+
+Patch 6.1.172
+Problem:    Command line completion of ":tag /pat" does not show the same
+	    results as the tags the command actually finds. (Gilles Roy)
+Solution:   Don't modify the pattern to make it a regexp.
+Files:	    src/ex_getln.c, src/tag.c
+
+Patch 6.1.173
+Problem:    When using remote control to edit a position in a file and this
+	    file is the current buffer and it's modified, the window is split
+	    and the ":drop" command fails.
+Solution:   Don't split the window, keep editing the same buffer.
+	    Use the ":drop" command in VisVim to avoid the problem there.
+Files:	    src/ex_cmds.c, src/ex_cmds2.c, src/proto/ex_cmds2.pro,
+	    VisVim/Commands.cpp
+
+Patch 6.1.174
+Problem:    It is difficult to know in a script whether an option not only
+	    exists but really works.
+Solution:   Add "exists('+option')".
+Files:	    runtime/doc/eval.txt, src/eval.c
+
+Patch 6.1.175
+Problem:    When reading commands from a pipe and a CTRL-C is pressed, Vim
+	    will hang. (Piet Delport)
+Solution:   Don't keep reading characters to clear typeahead when an interrupt
+	    was detected, stop when a single CTRL-C is read.
+Files:	    src/getchar.c, src/ui.c
+
+Patch 6.1.176
+Problem:    When the stack limit is very big a false out-of-stack error may
+	    be detected.
+Solution:   Add a check for overflow of the stack limit computation. (Jim
+	    Dunleavy)
+Files:	    src/os_unix.c
+
+Patch 6.1.177 (depends on 6.1.141)
+Problem:    ":wincmd" does not allow a following command. (Gary Johnson)
+Solution:   Check for a following " | cmd".  Also give an error for trailing
+	    characters.
+Files:	    src/ex_docmd.c
+
+Patch 6.1.178
+Problem:    When 'expandtab' is set "r<C-V><Tab>" still expands the Tab.
+	    (Bruce deVisser)
+Solution:   Replace with a literal Tab.
+Files:	    src/normal.c
+
+Patch 6.1.179 (depends on 6.1.091)
+Problem:    When using X11R5 XIMPreserveState is undefined. (Albert Chin)
+Solution:   Include the missing definitions.
+Files:	    src/mbyte.c
+
+Patch 6.1.180
+Problem:    Use of the GUI code for forking is inconsistent.
+Solution:   Define MAY_FORK and use it for later #ifdefs. (Ben Fowlwer)
+Files:	    src/gui.c
+
+Patch 6.1.181
+Problem:    If the terminal doesn't wrap from the last char in a line to the
+	    next line, the last column is blanked out. (Peter Karp)
+Solution:   Don't output a space to mark the wrap, but the same character
+	    again.
+Files:	    src/screen.c
+
+Patch 6.1.182 (depends on 6.1.142)
+Problem:    It is not possible to auto-format comments only. (Moshe Kaminsky)
+Solution:   When the 'a' and 'c' flags are in 'formatoptions' only auto-format
+	    comments.
+Files:	    runtime/doc/change.txt, src/edit.c
+
+Patch 6.1.183
+Problem:    When 'fencs' is empty and 'enc' is utf-8, reading a file with
+	    illegal bytes gives "CONVERSION ERROR" even though no conversion
+	    is done.  'readonly' is set, even though writing the file results
+	    in an unmodified file.
+Solution:   For this specific error use "ILLEGAL BYTE" and don't set
+	    'readonly'.
+Files:	    src/fileio.c
+
+Patch 6.1.184 (extra)
+Problem:    The extra mouse buttons found on some mice don't work.
+Solution:   Support two extra buttons for MS-Windows. (Michael Geddes)
+Files:	    runtime/doc/term.txt, src/edit.c, src/ex_getln.c, src/gui.c,
+	    src/gui_w32.c, src/gui_w48.c, src/keymap.h, src/message.c,
+	    src/misc1.c, src/misc2.c, src/normal.c. src/vim.h
+
+Patch 6.1.185 (depends on 6.1.182)
+Problem:    Can't compile without +comments feature.
+Solution:   Add #ifdef FEAT_COMMENTS. (Christian J. Robinson)
+Files:	    src/edit.c
+
+Patch 6.1.186 (depends on 6.1.177)
+Problem:    ":wincmd" does not allow a following comment. (Aric Blumer)
+Solution:   Check for a following double quote.
+Files:	    src/ex_docmd.c
+
+Patch 6.1.187
+Problem:    Using ":doarg" with 'hidden' set and the current file is the only
+	    argument and was modified gives an error message. (Preben
+	    Guldberg)
+Solution:   Don't try re-editing the same file.
+Files:	    src/ex_cmds2.c
+
+Patch 6.1.188 (depends on 6.1.173)
+Problem:    Unused variable in the small version.
+Solution:   Move the declaration for "p" inside #ifdef FEAT_LISTCMDS.
+Files:	    src/ex_cmds2.c
+
+Patch 6.1.189
+Problem:    inputdialog() doesn't work when 'c' is in 'guioptions'. (Aric
+	    Blumer)
+Solution:   Fall back to the input() function in this situation.
+Files:	    src/eval.c
+
+Patch 6.1.190 (extra)
+Problem:    VMS: doesn't build with GTK GUI.  Various other problems.
+Solution:   Fix building for GTK.  Improved Perl, Python and TCL support.
+	    Improved VMS documentation. (Zoltan Arpadffy)
+	    Added Vimtutor for VMS (T. R. Wyant)
+Files:	    runtime/doc/os_vms.txt, src/INSTALLvms.txt, src/gui_gtk_f.h,
+	    src/if_tcl.c, src/main.c, src/gui_gtk_vms.h, src/Make_vms.mms,
+	    src/os_vms.opt, src/proto/if_tcl.pro, vimtutor.com,
+	    src/testdir/Make_vms.mms
+
+Patch 6.1.191
+Problem:    When using "vim -s script" and redirecting the output, the delay
+	    for the "Output is not to a terminal" warning slows Vim down too
+	    much.
+Solution:   Don't delay when reading commands from a script.
+Files:	    src/main.c
+
+Patch 6.1.192
+Problem:    ":diffsplit" doesn't add "hor" to 'scrollopt'. (Gary Johnson)
+Solution:   Add "hor" to 'scrollopt' each time ":diffsplit" is used.
+Files:	    src/diff.c, src/main.c
+
+Patch 6.1.193
+Problem:    Crash in in_id_list() for an item with a "containedin" list. (Dave
+	    Fishburn)
+Solution:   Check for a negative syntax id, used for keywords.
+Files:	    src/syntax.c
+
+Patch 6.1.194
+Problem:    When "t_ti" is set but it doesn't cause swapping terminal pages,
+	    "ZZ" may cause the shell prompt to appear on top of the file-write
+	    message.
+Solution:   Scroll the text up in the Vim page before swapping to the terminal
+	    page. (Michael Schroeder)
+Files:	    src/os_unix.c
+
+Patch 6.1.195
+Problem:    The quickfix and preview windows always keep their height, while
+	    other windows can't fix their height.
+Solution:   Add the 'winfixheight' option, so that a fixed height can be
+	    specified for any window.  Also fix that the wildmenu may resize a
+	    one-line window to a two-line window if 'ls' is zero.
+Files:	    runtime/doc/options.txt, runtime/optwin.vim, src/ex_cmds.c,
+	    src/ex_getln.c, src/globals.h, src/option.c, src/quickfix.c,
+	    src/screen.c, src/structs.h, src/window.c
+
+Patch 6.1.196  (depends on 6.1.084)
+Problem:    On Mac OS X 10.2 generating osdef.h fails.
+Solution:   Add -no-cpp-precomp to avoid using precompiled header files, which
+	    disables printing the search path. (Ben Fowler)
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.1.197
+Problem:    ":help <C-V><C-\><C-V><C-N>" (resulting in <1c><0e>) gives an
+	    error message. (Servatius Brandt)
+Solution:   Double the backslash in "CTRL-\".
+Files:	    src/ex_cmds.c
+
+Patch 6.1.198 (extra) (depends on 6.1.076)
+Problem:    Mac OS X: Dialogues don't work.
+Solution:   Fix a crashing problem for some GUI dialogues.  Fix a problem when
+	    saving to a new file from the GUI. (Peter Cucka)
+Files:	    src/feature.h, src/gui_mac.c
+
+Patch 6.1.199
+Problem:    'guifontwide' doesn't work on Win32.
+Solution:   Output each wide character separately. (Michael Geddes)
+Files:	    src/gui.c
+
+Patch 6.1.200
+Problem:    ":syn sync fromstart" is not skipped after ":if 0".  This can make
+	    syntax highlighting very slow.
+Solution:   Check "eap->skip" appropriately. (Rob West)
+Files:	    src/syntax.c
+
+Patch 6.1.201 (depends on 6.1.192)
+Problem:    Warning for illegal pointer combination. (Zoltan Arpadffy)
+Solution:   Add a typecast.
+Files:	    src/diff.c
+
+Patch 6.1.202  (extra)(depends on 6.1.148)
+Problem:    Win32: filewritable() doesn't work properly on directories.
+Solution:   fix filewritable(). (Mike Williams)
+Files:	    src/os_win32.c
+
+Patch 6.1.203
+Problem:    ":%s/~//" causes a crash after ":%s/x//". (Gary Holloway)
+Solution:   Avoid reading past the end of a line when "~" is empty.
+Files:	    src/regexp.c
+
+Patch 6.1.204 (depends on 6.1.129)
+Problem:    Warning for an illegal pointer on Solaris.
+Solution:   Add a typecast. (Derek Wyatt)
+Files:	    src/misc2.c
+
+Patch 6.1.205
+Problem:    The gzip plugin changes the alternate file when editing a
+	    compressed file. (Oliver Fuchs)
+Solution:   Temporarily remove the 'a' and 'A' flags from 'cpo'.
+Files:	    runtime/plugin/gzip.vim
+
+Patch 6.1.206
+Problem:    The script generated with ":mksession" doesn't work properly when
+	    some commands are mapped.
+Solution:   Use ":normal!" instead of ":normal".  And use ":wincmd" where
+	    possible. (Muraoka Taro)
+Files:	    src/ex_docmd.c, src/fold.c
+
+Patch 6.1.207
+Problem:    Indenting a Java file hangs below a line with a comment after a
+	    command.
+Solution:   Break out of a loop. (Andre Pang)
+	    Also line up } with matching {.
+Files:	    runtime/indent/java.vim
+
+Patch 6.1.208
+Problem:    Can't use the buffer number from the Python interface.
+Solution:   Add buffer.number. (Michal Vitecek)
+Files:	    src/if_python.c
+
+Patch 6.1.209
+Problem:    Printing doesn't work on Mac OS classic.
+Solution:   Use a ":" for path separator when opening the resource file. (Axel
+	    Kielhorn)
+Files:	    src/ex_cmds2.c
+
+Patch 6.1.210
+Problem:    When there is an iconv() conversion error when reading a file
+	    there can be an error the next time iconv() is used.
+Solution:   Reset the state of the iconv() descriptor. (Yasuhiro Matsumoto)
+Files:	    src/fileio.c
+
+Patch 6.1.211
+Problem:    The message "use ! to override" is confusing.
+Solution:   Make it "add ! to override".
+Files:	    src/buffer.c, src/eval.c, src/ex_docmd.c, src/fileio.c,
+	    src/globals.h
+
+Patch 6.1.212
+Problem:    When Vim was started with "-R" ":new" creates a buffer
+	    'noreadonly' while ":enew" has 'readonly' set. (Preben Guldberg)
+Solution:   Don't set 'readonly in a new empty buffer for ":enew".
+Files:	    src/ex_docmd.c
+
+Patch 6.1.213
+Problem:    Using CTRL-W H may cause a big gap to appear below the last
+	    window. (Aric Blumer)
+Solution:   Don't set the window height when there is a vertical split.
+	    (Yasuhiro Matsumoto)
+Files:	    src/window.c
+
+Patch 6.1.214
+Problem:    When installing Vim and the runtime files were checked out from
+	    CVS the CVS directories will also be installed.
+Solution:   Avoid installing the CVS dirs and their contents.
+Files:	    src/Makefile
+
+Patch 6.1.215
+Problem:    Win32: ":pwd" uses backslashes even when 'shellslash' is set.
+	    (Xiangjiang Ma)
+Solution:   Adjust backslashes before printing the message.
+Files:	    src/ex_docmd.c
+
+Patch 6.1.216
+Problem:    When dynamically loading the iconv library, the error codes may be
+	    confused.
+Solution:   Use specific error codes for iconv and redefine them for dynamic
+	    loading. (Yasuhiro Matsumoto)
+Files:	    src/fileio.c, src/mbyte.c, src/vim.h
+
+Patch 6.1.217
+Problem:    When sourcing the same Vim script using a different name (symbolic
+	    link or MS-Windows 8.3 name) it is listed twice with
+	    ":scriptnames".  (Tony Mechelynck)
+Solution:   Turn the script name into a full path before using it.  On Unix
+	    compare inode/device numbers.
+Files:	    src/ex_cmds2.c
+
+Patch 6.1.218
+Problem:    No error message for using the function argument "5+".  (Servatius
+	    Brandt)
+Solution:   Give an error message if a function or variable is expected but is
+	    not found.
+Files:	    src/eval.c
+
+Patch 6.1.219
+Problem:    When using ":amenu :b 1<CR>" with a Visual selection and
+	    'insertmode' is set, Vim does not return to Insert mode. (Mickael
+	    Marchand)
+Solution:   Add the command CTRL-\ CTRL-G that goes to Insert mode if
+	    'insertmode' is set and to Normal mode otherwise.  Append this to
+	    menus defined with ":amenu".
+Files:	    src/edit.c, src/ex_getln.c, src/normal.c
+
+Patch 6.1.220
+Problem:    When using a BufReadPost autocommand that changes the line count,
+	    e.g., "$-1join", reloading a file that was changed outside Vim
+	    does not work properly. (Alan G Isaac)
+Solution:   Make the buffer empty before reading the new version of the file.
+	    Save the lines in a dummy buffer, so that they can be put back
+	    when reading the file fails.
+Files:	    src/buffer.c, src/ex_cmds.c, src/fileio.c, src/globals.h,
+	    src/proto/buffer.pro
+
+Patch 6.1.221
+Problem:    Changing case may not work properly, depending on the current
+	    locale.
+Solution:   Add the 'casemap' option to let the user chose how changing case
+	    is to be done.
+	    Also fix lowering case when an UTF-8 character doesn't keep the
+	    same byte length.
+Files:	    runtime/doc/options.txt, src/ascii.h, src/auto/configure,
+	    src/buffer.c, src/charset.c, src/config.h.in, src/configure.in,
+	    src/diff.c, src/edit.c, src/eval.c, src/ex_cmds2.c,
+	    src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/gui_amiga.c
+	    src/gui_mac.c, src/gui_photon.c, src/gui_w48.c, src/gui_beos.cc,
+	    src/macros.h, src/main.c, src/mbyte.c, src/menu.c, src/message.c,
+	    src/misc1.c, src/misc2.c, src/option.c, src/os_msdos.c,
+	    src/os_mswin.c, src/proto/charset.pro, src/regexp.c, src/option.h,
+	    src/syntax.c
+
+Patch 6.1.222 (depends on 6.1.219)
+Problem:    Patch 6.1.219 was incomplete.
+Solution:   Add the changes for ":amenu".
+Files:	    src/menu.c
+
+Patch 6.1.223 (extra)
+Problem:    Win32: When IME is activated 'iminsert' is set, but it might never
+	    be reset when IME is disabled. (Muraoka Taro)
+	    All systems: 'iminsert' is set to 2 when leaving Insert mode, even
+	    when langmap is being used. (Peter Valach)
+Solution:   Don't set "b_p_iminsert" in _OnImeNotify(). (Muraoka Taro)
+	    Don't store the status of the input method in 'iminsert' when
+	    'iminsert' is one.  Also for editing the command line and for
+	    arguments to Normal mode commands.
+Files:	    src/edit.c, src/ex_getln.c, src/gui_w32.c, src/normal.c
+
+Patch 6.1.224
+Problem:    "expand('$VAR')" returns an empty string when the expanded $VAR
+	    is not an existing file. (Aric Blumer)
+Solution:   Included non-existing files, as documented.
+Files:	    src/eval.c
+
+Patch 6.1.225
+Problem:    Using <C-O><C-^> in Insert mode has a delay when starting "vim -u
+	    NONE" and ":set nocp hidden". (Emmanuel)  do_ecmd() uses
+	    fileinfo(), the redraw is done after a delay to give the user time
+	    to read the message.
+Solution:   Put the message from fileio() in "keep_msg", so that the redraw is
+	    done before the delay (still needed to avoid the mode message
+	    overwrites the fileinfo() message).
+Files:	    src/buffer.c
+
+Patch 6.1.226
+Problem:    Using ":debug" with a ":normal" command may cause a hang.  (Colin
+	    Keith)
+Solution:   Save the typeahead buffer when obtaining a debug command.
+Files:	    src/ex_cmds2.c, src/getchar.c, src/proto/getchar.pro
+
+Patch 6.1.227
+Problem:    It is possible to use a variable name "asdf:asdf" and ":let j:asdf
+	    = 5" does not give an error message. (Mikolaj Machowski)
+Solution:   Check for a ":" inside the variable name.
+Files:	    src/eval.c
+
+Patch 6.1.228 (extra)
+Problem:    Win32: The special output function for Hangul is used too often,
+	    causing special handling for other situations to be skipped.
+	    bInComposition is always FALSE, causing ImeGetTempComposition()
+	    always to return NULL.
+Solution:   Remove HanExtTextOut().  Delete the dead code around
+	    bInComposition and ImeGetTempComposition().
+Files:	    src/gui_w16.c, src/gui_w32.c, src/gui_w48.c
+
+Patch 6.1.229
+Problem:    Win32: Conversion to/from often used codepages requires the iconv
+	    library, which is not always available.
+Solution:   Use standard MS-Windows functions for the conversion when
+	    possible. (mostly by Glenn Maynard)
+	    Also fixes missing declaration for patch 6.1.220.
+Files:	    src/fileio.c
+
+Patch 6.1.230 (extra)
+Problem:    Win16: building doesn't work.
+Solution:   Exclude the XBUTTON handling. (Vince Negri)
+Files:	    src/gui_w48.c
+
+Patch 6.1.231
+Problem:    Double clicking with the mouse to select a word does not work for
+	    multi-byte characters.
+Solution:   Use vim_iswordc() instead of vim_isIDc().  This means 'iskeyword'
+	    is used intead of 'isident'.  Also fix that mixing ASCII with
+	    multi-byte word characters doesn't work, the mouse class for
+	    punctuation and word characters was mixed up.
+Files:	    src/normal.c
+
+Patch 6.1.232 (depends on 6.1.226)
+Problem:    Using ex_normal_busy while it might not be available. (Axel
+	    Kielhorn)
+Solution:   Only use ex_normal_busy when FEAT_EX_EXTRA is defined.
+Files:	    src/ex_cmds2.c
+
+Patch 6.1.233
+Problem:    ":help expr-||" does not work.
+Solution:   Don't use the '|' as a command separator
+Files:	    src/ex_cmds.c
+
+Patch 6.1.234 (depends on 6.1.217)
+Problem:    Get a warning for using a negative value for st_dev.
+Solution:   Don't assign a negative value to st_dev.
+Files:	    src/ex_cmds2.c
+
+Patch 6.1.235 (depends on 6.1.223)
+Problem:    'iminsert' is changed from 1 to 2 when leaving Insert mode. (Peter
+	    Valach)
+Solution:   Check "State" before resetting it to NORMAL.
+Files:	    src/edit.c
+
+Patch 6.1.236
+Problem:    Memory leaks when appending lines for ":diffget" or ":diffput" and
+	    when reloading a changed buffer.
+Solution:   Free a line after calling ml_append().
+Files:	    src/diff.c, src/fileio.c
+
+Patch 6.1.237
+Problem:    Putting in Visual block mode does not work correctly when "$" was
+	    used or when the first line is short.  (Christian Michon)
+Solution:   First delete the selected text and then put the new text.  Save
+	    and restore registers as necessary.
+Files:	    src/globals.h, src/normal.c, src/ops.c, src/proto/ops.pro,
+	    src/vim.h
+
+Patch 6.1.238 (extra)
+Problem:    Win32: The "icon=" argument for the ":menu" command does not
+	    search for the bitmap file.
+Solution:   Expand environment variables and search for the bitmap file.
+	    (Vince Negri)
+	    Make it consistent, use the same mechanism for X11 and GTK.
+Files:	    src/gui.c src/gui_gtk.c, src/gui_w32.c, src/gui_x11.c,
+	    src/proto/gui.pro
+
+Patch 6.1.239
+Problem:    Giving an error for missing :endif or :endwhile when being
+	    interrupted.
+Solution:   Don't give these messages when interrupted.
+Files:	    src/ex_docmd.c, src/os_unix.c
+
+Patch 6.1.240 (extra)
+Problem:    Win32 with BCC 5: CPU may be defined in the environment, which
+	    causes a wrong argument for the compiler. (Walter Briscoe)
+Solution:   Use CPUNR instead of CPU.
+Files:	    src/Make_bc5.mak
+
+Patch 6.1.241
+Problem:    Something goes wrong when drawing or undrawing the cursor.
+Solution:   Remember when the cursor invalid in a better way.
+Files:	    src/gui.c
+
+Patch 6.1.242
+Problem:    When pasting a large number of lines on the command line it is not
+	    possible to interrupt. (Jean Jordaan)
+Solution:   Check for an interrupt after each pasted line.
+Files:	    src/ops.c
+
+Patch 6.1.243 (extra)
+Problem:    Win32: When the OLE version is started and wasn't registered, a
+	    message pops up to suggest registering, even when this isn't
+	    possible (when the registry is not writable).
+Solution:   Check if registering is possible before asking whether it should
+	    be done. (Walter Briscoe)
+	    Also avoid restarting Vim after registering.
+Files:	    src/if_ole.cpp
+
+Patch 6.1.244
+Problem:    Patch 6.1.237 was missing the diff for vim.h. (Igor Goldenberg)
+Solution:   Include it here.
+Files:	    src/vim.h
+
+Patch 6.1.245
+Problem:    Comparing with ignored case does not work properly for Unicode
+	    with a locale where case folding an ASCII character results in a
+	    multi-byte character. (Glenn Maynard)
+Solution:   Handle ignore-case compare for Unicode differently.
+Files:	    src/mbyte.c
+
+Patch 6.1.246
+Problem:    ":blast" goes to the first buffer if the last one is unlisted.
+	    (Andrew Stryker)
+Solution:   From the last buffer search backwards for the first listed buffer
+	    instead of forwards.
+Files:	    src/ex_docmd.c
+
+Patch 6.1.247
+Problem:    ACL support doesn't always work properly.
+Solution:   Add a configure argument to disable ACL "--disable-acl". (Thierry
+	    Vignaud)
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.1.248
+Problem:    Typing 'q' at the more-prompt for ":let" does not quit the
+	    listing. (Hari Krishna Dara)
+Solution:   Quit the listing when got_int is set.
+Files:	    src/eval.c
+
+Patch 6.1.249
+Problem:    Can't expand a path on the command line if it includes a "|" as a
+	    trail byte of a multi-byte character.
+Solution:   Check for multi-byte characters. (Yasuhiro Matsumoto)
+Files:	    src/ex_docmd.c
+
+Patch 6.1.250
+Problem:    When changing the value of 'lines' inside the expression set with
+	    'diffexpr' Vim might crash. (Dave Fishburn)
+Solution:   Don't allow changing the screen size while updating the screen.
+Files:	    src/globals.h, src/option.c, src/screen.c
+
+Patch 6.1.251
+Problem:    Can't use completion for ":lcd" and ":lchdir" like ":cd".
+Solution:   Expand directory names for these commands. (Servatius Brandt)
+Files:	    src/ex_docmd.c
+
+Patch 6.1.252
+Problem:    "vi}" does not include a line break when the "}" is at the start
+	    of a following line. (Kamil Burzynski)
+Solution:   Include the line break.
+Files:	    src/search.c
+
+Patch 6.1.253 (extra)
+Problem:    Win32 with Cygwin: Changes the path of arguments in a wrong way.
+	    (Xiangjiang Ma)
+Solution:   Don't use cygwin_conv_to_posix_path() for the Win32 version.
+	    Update the Cygwin makefile to support more features.  (Dan Sharp)
+Files:	    src/Make_cyg.mak, src/if_ole.cpp, src/main.c
+
+Patch 6.1.254
+Problem:    exists("foo{bar}") does not work.  ':unlet v{"a"}r' does not work.
+	    ":let v{a}r1 v{a}r2" does not work. ":func F{(1)}" does not work.
+	    ":delfunc F{" does not give an error message.  ':delfunc F{"F"}'
+	    does not work.
+Solution:   Support magic braces for the exists() argument. (Vince Negri)
+	    Check for trailing comments explicitly for ":unlet".  Add support
+	    for magic braces in further arguments of ":let".  Look for a
+	    parenthesis only after the function name.  (Servatius Brandt)
+	    Also expand magic braces for "exists('*expr')".  Give an error
+	    message for an invalid ":delfunc" argument.  Allow quotes in the
+	    ":delfunc" argument.
+Files:	    src/eval.c, src/ex_cmds.h, src/ex_docmd.c
+
+Patch 6.1.255 (depends on 6.1.254)
+Problem:    Crash when loading menu.vim a second time. (Christian Robinson)
+	    ":unlet garbage foo" tries unletting "foo" after an error message.
+	    (Servatius Brandt)
+	    Very long function arguments cause very long messages when
+	    'verbose' is 14 or higher.
+Solution:   Avoid reading from uninitialized memory.
+	    Break out of a loop after an invalid argument for ":unlet".
+	    Truncate long function arguments to 80 characters.
+Files:	    src/eval.c
+
+Patch 6.1.256 (depends on 6.1.255)
+Problem:    Defining a function after ":if 0" could still cause an error
+	    message for an existing function.
+	    Leaking memory when there are trailing characters for ":delfunc".
+Solution:   Check the "skip" flag.  Free the memory. (Servatius Brandt)
+Files:	    src/eval.c
+
+Patch 6.1.257
+Problem:    ":cwindow" always sets the previous window to the last but one
+	    window.  (Benji Fisher)
+Solution:   Set the previous window properly.
+Files:	    src/globals.c, src/quickfix.c, src/window.c
+
+Patch 6.1.258
+Problem:    Buffers menu doesn't work properly for multibyte buffer names.
+Solution:   Use a pattern to get the left and right part of the name.
+	    (Yasuhiro Matsumoto)
+Files:	    runtime/menu.vim
+
+Patch 6.1.259 (extra)
+Problem:    Mac: with 'patchmode' is used filenames are truncated.
+Solution:   Increase the BASENAMELEN for Mac OS X. (Ed Ralston)
+Files:	    src/os_mac.h
+
+Patch 6.1.260 (depends on 6.1.104)
+Problem:    GCC 3.2 still seems to have an optimizer problem. (Zvi Har'El)
+Solution:   Use the same configure check as used for GCC 3.1.
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.1.261
+Problem:    When deleting a line in a buffer which is not the current buffer,
+	    using the Perl interface Delete(), the cursor in the current
+	    window may move. (Chris Houser)
+Solution:   Don't adjust the cursor position when changing another buffer.
+Files:	    src/if_perl.xs
+
+Patch 6.1.262
+Problem:    When jumping over folds with "z[", "zj" and "zk" the previous
+	    position is not remembered. (Hari Krishna Dara)
+Solution:   Set the previous context mark before jumping.
+Files:	    src/fold.c
+
+Patch 6.1.263
+Problem:    When typing a multi-byte character that triggers an abbreviation
+	    it is not inserted properly.
+Solution:   Handle adding the typed multi-byte character. (Yasuhiro Matsumoto)
+Files:	    src/getchar.c
+
+Patch 6.1.264 (depends on patch 6.1.254)
+Problem:    exists() does not work for built-in functions. (Steve Wall)
+Solution:   Don't check for the function name to start with a capital.
+Files:	    src/eval.c
+
+Patch 6.1.265
+Problem:    libcall() can be used in 'foldexpr' to call any system function.
+	    rename(), delete() and remote_send() can also be used in
+	    'foldexpr'.  These are security problems. (Georgi Guninski)
+Solution:   Don't allow using libcall(), rename(), delete(), remote_send() and
+	    similar functions in the sandbox.
+Files:	    src/eval.c
+
+Patch 6.1.266 (depends on 6.1.265)
+Problem:    Win32: compile error in eval.c. (Bill McCarthy)
+Solution:   Move a variable declaration.
+Files:	    src/eval.c
+
+Patch 6.1.267
+Problem:    Using "p" to paste into a Visual selected area may cause a crash.
+Solution:   Allocate enough memory for saving the register contents. (Muraoka
+	    Taro)
+Files:	    src/ops.c
+
+Patch 6.1.268
+Problem:    When triggering an abbreviation with a multi-byte character, this
+	    character is not correctly inserted after expanding the
+	    abbreviation. (Taro Muraoka)
+Solution:   Add ABBR_OFF to all characters above 0xff.
+Files:	    src/edit.c, src/ex_getln.c, src/getchar.c
+
+Patch 6.1.269
+Problem:    After using input() text written with ":redir" gets extra indent.
+	    (David Fishburn)
+Solution:   Restore msg_col after using input().
+Files:	    src/ex_getln.c
+
+Patch 6.1.270 (depends on 6.1.260)
+Problem:    GCC 3.2.1 still seems to have an optimizer problem.
+Solution:   Use the same configure check as used for GCC 3.1.
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.1.271
+Problem:    When compiling without the +syntax feature there are errors.
+Solution:   Don't use some code for syntax highlighting. (Roger Cornelius)
+	    Make test 45 work without syntax highlighting.
+	    Also fix an error in a pattern matching: "\%(" was not supported.
+Files:	    src/ex_cmds2.c, src/regexp.c, src/testdir/test45.in
+
+Patch 6.1.272
+Problem:    After using ":set define<" a crash may happen. (Christian Robinson)
+Solution:   Make a copy of the option value in allocated memory.
+Files:	    src/option.c
+
+Patch 6.1.273
+Problem:    When the cursor doesn't blink, redrawing an exposed area may hide
+	    the cursor.
+Solution:   Always draw the cursor, also when it didn't move. (Muraoka Taro)
+Files:	    src/gui.c
+
+Patch 6.1.274 (depends on 6.1.210)
+Problem:    Resetting the iconv() state after each error is wrong for an
+	    incomplete sequence.
+Solution:   Don't reset the iconv() state.
+Files:	    src/fileio.c
+
+Patch 6.1.275
+Problem:    When using "v" in a startup script, get warning message that
+	    terminal cannot highlight. (Charles Campbell)
+Solution:   Only give the message after the terminal has been initialized.
+Files:	    src/normal.c
+
+Patch 6.1.276
+Problem:    "gvim --remote file" doesn't prompt for an encryption key.
+Solution:   The further characters the client sends to the server are used.
+	    Added inputsave() and inputrestore() to allow prompting the
+	    user directly and not using typeahead.
+	    Also fix possible memory leak for ":normal".
+Files:	    src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/getchar.c,
+	    src/main.c, src/proto/getchar.pro, src/proto/ui.pro,
+	    src/runtime/doc/eval.txt, src/structs.h, src/ui.c, src/vim.h
+
+Patch 6.1.277 (depends on 6.1.276)
+Problem:    Compilation error when building with small features.
+Solution:   Define trash_input_buf() when needed. (Kelvin Lee)
+Files:	    src/ui.c
+
+Patch 6.1.278
+Problem:    When using signs the line number of a closed fold doesn't line up
+	    with the other line numbers. (Kamil Burzynski)
+Solution:   Insert two spaces for the sign column.
+Files:	    src/screen.c
+
+Patch 6.1.279
+Problem:    The prototype for smsg() and smsg_attr() do not match the function
+	    definition.  This may cause trouble for some compilers. (Nix)
+Solution:   Use va_list for systems that have stdarg.h.  Use "int" instead of
+	    "void" for the return type.
+Files:	    src/auto/configure, src/config.h.in, src/configure.in,
+	    src/proto.h, src/message.c
+
+Patch 6.1.280
+Problem:    It's possible to use an argument "firstline" or "lastline" for a
+	    function but using "a:firstline" or "a:lastline" in the function
+	    won't work.  (Benji Fisher)
+Solution:   Give an error message for these arguments.
+	    Also avoid that the following function body causes a whole row of
+	    errors, skip over it after an error in the first line.
+Files:	    src/eval.c
+
+Patch 6.1.281
+Problem:    In Insert mode CTRL-X CTRL-G leaves the cursor after the ruler.
+Solution:   Set the cursor position before waiting for the argument of CTRL-G.
+	    (Yasuhiro Matsumoto)
+Files:	    src/edit.c
+
+Patch 6.1.282
+Problem:    Elvis uses "se" in a modeline, Vim doesn't recognize this.
+Solution:   Also accept "se " where "set " is accepted in a modeline.
+	    (Yasuhiro Matsumoto)
+Files:	    src/buffer.c
+
+Patch 6.1.283
+Problem:    For ":sign" the icon file name cannot contain a space.
+Solution:   Handle backslashes in the file name.  (Yasuhiro Matsumoto)
+Files:	    src/ex_cmds.c
+
+Patch 6.1.284
+Problem:    On Solaris there is a warning for "struct utimbuf".
+Solution:   Move including "utime.h" to outside the function. (Derek Wyatt)
+Files:	    src/fileio.c
+
+Patch 6.1.285
+Problem:    Can't wipe out a buffer with 'bufhide' option.
+Solution:   Add "wipe" value to 'bufhide'. (Yegappan Lakshmanan)
+Files:	    runtime/doc/options.txt, src/buffer.c, src/option.c,
+	    src/quickfix.c
+
+Patch 6.1.286
+Problem:    'showbreak' cannot contain multi-byte characters.
+Solution:   Allow using all printable characters for 'showbreak'.
+Files:	    src/charset.c, src/move.c, src/option.c
+
+Patch 6.1.287 (depends on 6.1.285)
+Problem:    Effect of "delete" and "wipe" in 'bufhide' were mixed up.
+Solution:   Wipe out when wiping out is asked for.
+Files:	    src/buffer.c
+
+Patch 6.1.288
+Problem:    ":silent function F" hangs. (Hari Krishna Dara)
+Solution:   Don't use msg_col, it is not incremented when using ":silent".
+	    Also made the function output look a bit better.  Don't translate
+	    "function".
+Files:	    src/eval.c
+
+Patch 6.1.289 (depends on 6.1.278)
+Problem:    Compiler warning for pointer. (Axel Kielhorn)
+Solution:   Add a typecast for "  ".
+Files:	    src/screen.c
+
+Patch 6.1.290 (extra)
+Problem:    Truncating long text for message box may break multi-byte
+	    character.
+Solution:   Adjust to start of multi-byte character. (Yasuhiro Matsumoto)
+Files:	    src/os_mswin.c
+
+Patch 6.1.291 (extra)
+Problem:    Win32: CTRL-@ doesn't work.  Don't even get a message for it.
+Solution:   Recognize the keycode for CTRL-@. (Yasuhiro Matsumoto)
+Files:	    src/gui_w48.c
+
+Patch 6.1.292 (extra, depends on 6.1.253)
+Problem:    Win32: Can't compile with new MingW compiler.
+	    Borland 5 makefile doesn't generate pathdef.c.
+Solution:   Remove -wwide-multiply argument. (Rene de Zwart)
+	    Various fixes for other problems in Win32 makefiles. (Dan Sharp)
+Files:	    src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak,
+	    src/Make_mvc.mak
+
+Patch 6.1.293
+Problem:    byte2line() returns a wrong result for some values.
+Solution:   Change ">=" to ">" in ml_find_line_or_offset(). (Bradford C Smith)
+	    Add one to the line number when at the end of a block.
+Files:	    src/memline.c
+
+Patch 6.1.294
+Problem:    Can't include a multi-byte character in a string by its hex value.
+	    (Benji Fisher)
+Solution:   Add "\u....": a character specified with up to four hex numbers
+	    and stored according to the value of 'encoding'.
+Files:	    src/eval.c
+
+Patch 6.1.295 (extra)
+Problem:    Processing the cs.po file generates an error. (Rahul Agrawal)
+Solution:   Fix the printf format characters in the translation.
+Files:	    src/po/cs.po
+
+Patch 6.1.296
+Problem:    Win32: When cancelling the font dialog 'guifont' remains set to
+	    "*".
+Solution:   Restore the old value of 'guifont' (Yasuhiro Matsumoto)
+Files:	    src/option.c
+
+Patch 6.1.297
+Problem:    "make test" fails in test6 in an UTF-8 environment. (Benji Fisher)
+Solution:   Before executing the BufReadPost autocommands save the current
+	    fileencoding, so that the file isn't marked changed.
+Files:	    src/fileio.c
+
+Patch 6.1.298
+Problem:    When using signs and the first line of a closed fold has a sign
+	    it can be redrawn as if the fold was open.  (Kamil Burzynski)
+Solution:   Don't redraw a sign inside a closed fold.
+Files:	    src/screen.c
+
+Patch 6.1.299
+Problem:    ":edit +set\ ro file" doesn't work.
+Solution:   Halve the number of backslashes in the "+cmd" argument.
+Files:	    src/ex_docmd.c
+
+Patch 6.1.300 (extra)
+Problem:    Handling of ETO_IGNORELANGUAGE is confusing.
+Solution:   Clean up the handling of ETO_IGNORELANGUAGE. (Glenn Maynard)
+Files:	    src/gui_w32.c
+
+Patch 6.1.301 (extra)
+Problem:    French translation of file-save dialog doesn't show file name.
+Solution:   Insert a star in the printf string. (Francois Terrot)
+Files:	    src/po/fr.po
+
+Patch 6.1.302
+Problem:    Counting lines of the Visual area is incorrect for closed folds.
+	    (Mikolaj Machowski)
+Solution:   Correct the start and end for the closed fold.
+Files:	    src/normal.c
+
+Patch 6.1.303 (extra)
+Problem:    The Top/Bottom/All text does not always fit in the ruler when
+	    translated to Japanese.  Problem with a character being wider when
+	    in a bold font.
+Solution:   Use ETO_PDY to specify the width of each character. (Yasuhiro
+	    Matsumoto)
+Files:	    src/gui_w32.c
+
+Patch 6.1.304 (extra, depends on 6.1.292)
+Problem:    Win32: Postscript is always enabled in the MingW Makefile.
+	    Pathdef.c isn't generated properly with Make_bc5.mak. (Yasuhiro
+	    Matsumoto)
+Solution:   Change an ifdef to an ifeq. (Madoka Machitani)
+	    Use the Borland make redirection to generate pathdef.c. (Maurice
+	    Barnum)
+Files:	    src/Make_bc5.mak, src/Make_ming.mak
+
+Patch 6.1.305
+Problem:    When 'verbose' is 14 or higher, a function call may cause reading
+	    uninitialized data. (Walter Briscoe)
+Solution:   Check for end-of-string in trunc_string().
+Files:	    src/message.c
+
+Patch 6.1.306
+Problem:    The AIX VisualAge cc compiler doesn't define __STDC__.
+Solution:   Use __EXTENDED__ like __STDC__. (Jess Thrysoee)
+Files:	    src/os_unix.h
+
+Patch 6.1.307
+Problem:    When a double-byte character has an illegal tail byte the display
+	    is messed up. (Yasuhiro Matsumoto)
+Solution:   Draw "XX" instead of the wrong character.
+Files:	    src/screen.c
+
+Patch 6.1.308
+Problem:    Can't reset the Visual mode returned by visualmode().
+Solution:   Use an optional argument to visualmode(). (Charles Campbell)
+Files:	    runtime/doc/eval.txt, src/eval.c, src/normal.c,
+	    src/structs.h
+
+Patch 6.1.309
+Problem:    The tutor doesn't select German if the locale name is
+	    "German_Germany.1252". (Joachim Hofmann)
+Solution:   Check for "German" in the locale name.  Also check for
+	    ".ge".  And include the German and Greek tutors.
+Files:	    runtime/tutor/tutor.de, runtime/tutor/tutor.vim,
+	    runtime/tutor/tutor.gr, runtime/tutor/tutor.gr.cp737
+
+Patch 6.1.310 (depends on 6.1.307)
+Problem:    All double-byte characters are displayed as "XX".
+Solution:   Use ">= 32" instead of "< 32".  (Yasuhiro Matsumoto)
+Files:	    src/screen.c
+
+Patch 6.1.311 (extra)
+Problem:    VMS: path in window title doesn't include necessary separator.
+	    file version doesn't always work properly with Unix.
+	    Crashes because of memory overwrite in GUI.
+	    Didn't always handle files with lowercase and correct path.
+Solution:   Fix the problems.  Remove unnecessary file name translations.
+	    (Zoltan Arpadffy)
+Files:	    src/buffer.c, src/ex_cmds2.c, src/fileio.c, src/memline.c,
+	    src/misc1.c, src/misc2.c, src/os_unix.c, src/os_vms.c, src/tag.c
+
+Patch 6.1.312
+Problem:    When using ":silent" debugging is also done silently.
+Solution:   Disable silence while at the debug prompt.
+Files:	    src/ex_cmds2.c
+
+Patch 6.1.313
+Problem:    When a ":drop fname" command is used and "fname" is open in
+	    another window, it is also opened in the current window.
+Solution:   Change to the window with "fname" instead.
+	    Don't redefine the argument list when dropping only one file.
+Files:	    runtime/doc/windows.txt, src/ex_cmds2.c, src/ex_cmds.c,
+	    src/ex_docmd.c, src/proto/ex_cmds2.pro, src/proto/ex_docmd.pro
+
+Patch 6.1.314 (depends on 6.1.126)
+Problem:    Missing backslash in "Generic Config file" syntax menu.
+Solution:   Insert the backslash. (Zak Beck)
+Files:	    runtime/makemenu.vim, runtime/synmenu.vim
+
+Patch 6.1.315 (extra)
+Problem:    A very long hostname may lead to an unterminated string.  Failing
+	    to obtain a hostname may result in garbage.  (Walter Briscoe)
+Solution:   Add a NUL at the end of the hostname buffer.
+Files:	    src/os_mac.c, src/os_msdos.c, src/os_unix.c, src/os_win16.c,
+	    src/os_win32.c
+
+Patch 6.1.316
+Problem:    When exiting with "wq" and there is a hidden buffer, after the
+	    "file changed" dialog there is a warning for a changed buffer.
+	    (Ajit Thakkar)
+Solution:   Do update the buffer timestamps when exiting.
+Files:	    src/fileio.c
+
+Patch 6.1.317
+Problem:    Closing a window may cause some of the remaining windows to be
+	    positioned wrong if there is a mix of horizontal and vertical
+	    splits. (Stefan Ingi Valdimarsson)
+Solution:   Update the frame sizes before updating the window positions.
+Files:	    src/window.c
+
+Patch 6.1.318
+Problem:    auto/pathdef.c can include wrong quotes when a compiler flag
+	    includes quotes.
+Solution:   Put a backslash before the quotes in compiler flags. (Shinra Aida)
+Files:	    src/Makefile
+
+Patch 6.1.319 (depends on 6.1.276)
+Problem:    Using "--remote +cmd file" does not execute "cmd".
+Solution:   Call inputrestore() in the same command line as inputsave(),
+	    otherwise it will never get executed.
+Files:	    src/main.c
+
+Patch 6.1.320 (depends on 6.1.313)
+Problem:    When a ":drop one\ file" command is used the file "one\ file" is
+	    opened, the backslash is not removed. (Taro Muraoka)
+Solution:   Handle backslashes correctly.  Always set the argument list to
+	    keep it simple.
+Files:	    runtime/doc/windows.txt, src/ex_cmds.c
+
+Patch 6.1.321
+Problem:    When 'mouse' includes 'n' but not 'v', don't allow starting Visual
+	    mode with the mouse.
+Solution:   Don't use MOUSE_MAY_VIS when there is no 'v' in 'mouse'. (Flemming
+	    Madsen)
+Files:	    src/normal.c
+
+Patch 6.1.322 (extra, depends on 6.1.315)
+Problem:    Win32: The host name is always "PC " plus the real host name.
+Solution:   Don't insert "PC " before the host name.
+Files:	    src/os_win32.c
+
+Patch 6.1.323
+Problem:    ":registers" doesn't stop listing for a "q" at the more prompt.
+	    (Hari Krishna Dara)
+Solution:   Check for interrupt and got_int.
+Files:	    src/ops.c, src/proto/ops.pro
+
+Patch 6.1.324
+Problem:    Crash when dragging a vertical separator when <LeftMouse> is
+	    remapped to jump to another window.
+Solution:   Pass the window pointer to the function doing the dragging instead
+	    of always using the current window. (Daniel Elstner)
+	    Also fix that starting a drag changes window focus.
+Files:	    src/normal.c, src/proto/window.pro, src/ui.c, src/vim.h,
+	    src/window.c
+
+Patch 6.1.325
+Problem:    Shift-Tab is not automatically recognized in an xterm.
+Solution:   Add <Esc>[Z as the termcap code. (Andrew Pimlott)
+Files:	    src/term.c
+
+Patch 6.1.326
+Problem:    Using a search pattern may read from uninitialized data (Yasuhiro
+	    Matsumoto)
+Solution:   Initialize pointers to NULL.
+Files:	    src/regexp.c
+
+Patch 6.1.327
+Problem:    When opening the "mbyte.txt" help file the utf-8 characters are
+	    unreadable, because the fileencoding is forced to be latin1.
+Solution:   Check for utf-8 encoding first in help files. (Daniel Elstner)
+Files:	    runtime/doc/mbyte.txt, src/fileio.c
+
+Patch 6.1.328
+Problem:    Prototype for enc_canon_search() is missing.
+Solution:   Add the prototype. (Walter Briscoe)
+Files:	    src/mbyte.c
+
+Patch 6.1.329
+Problem:    When editing a file "a b c" replacing "%" in ":Cmd %" or ":next %"
+	    does not work properly.  (Hari Krishna Dara)
+Solution:   Always escape spaces when expanding "%".  Don't split argument for
+	    <f-args> in a user command when only one argument is used.
+Files:	    src/ex_docmd.c
+
+Patch 6.1.330
+Problem:    GTK, Motif and Athena: Keypad keys produce the same code as
+	    non-keypad keys, making it impossible to map them separately.
+Solution:   Use different termcap codes for the keypad keys. (Neil Bird)
+Files:	    src/gui_gtk_x11.c, src/gui_x11.c
+
+Patch 6.1.331
+Problem:    When translating the help files, "LOCAL ADDITIONS" no longer marks
+	    the spot where help files from plugins are to be listed.
+Solution:   Add a "local-additions" tag and use that to find the right spot.
+Files:	    runtime/doc/help.txt, src/ex_cmds.c
+
+Patch 6.1.332 (extra)
+Problem:    Win32: Loading Perl dynamically doesn't work with Perl 5.8.
+	    Perl 5.8 also does not work with Cygwin and Ming.
+Solution:   Adjust the function calls. (Taro Muraoka)
+	    Adjust the cyg and ming makefiles. (Dan Sharp)
+Files:	    src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak,
+	    src/if_perl.xs
+
+Patch 6.1.333 (extra)
+Problem:    Win32: Can't handle Unicode text on the clipboard.
+	    Can't pass NUL byte, it becomes a line break.  (Bruce DeVisser)
+Solution:   Support Unicode for the clipboard (Ron Aaron and Glenn Maynard)
+	    Also support copy/paste of NUL bytes.
+Files:	    src/os_mswin.c, src/os_win16.c src/os_win32.c
+
+Patch 6.1.334 (extra, depends on 6.1.303)
+Problem:    Problem with drawing Hebrew characters.
+Solution:   Only use ETO_PDY for Windows NT and the like. (Yasuhiro Matsumoto)
+Files:	    src/gui_w32.c
+
+Patch 6.1.335 (extra)
+Problem:    Failure of obtaining the cursor position and window size is
+	    ignored.
+Solution:   Remove a semicolon after an "if". (Walter Briscoe)
+Files:	    src/gui_w32.c
+
+Patch 6.1.336 (extra)
+Problem:    Warning for use of function prototypes of smsg().
+Solution:   Define HAVE_STDARG_H. (Walter Briscoe)
+Files:	    src/os_win32.h
+
+Patch 6.1.337
+Problem:    When using "finish" in debug mode in function B() for ":call
+	    A(B())" does not stop after B() is finished.
+Solution:   Increase debug_level while evaluating a function.
+Files:	    src/ex_docmd.c
+
+Patch 6.1.338
+Problem:    When using a menu that checks out the current file from Insert
+	    mode, there is no warning for the changed file until exiting
+	    Insert mode.  (Srikanth Sankaran)
+Solution:   Add a check for need_check_timestamps in the Insert mode loop.
+Files:	    src/edit.c
+
+Patch 6.1.339
+Problem:    Completion doesn't allow "g:" in ":let g:did_<Tab>". (Benji
+	    Fisher)
+Solution:   Return "g:var" for global variables when that is what is being
+	    expanded. (Flemming Madsen)
+Files:	    src/eval.c
+
+Patch 6.1.340 (extra, depends on 6.1.332)
+Problem:    Win32: Can't compile the Perl interface with nmake.
+Solution:   Don't compare the version number as a string but as a number.
+	    (Juergen Kraemer)
+Files:	    src/Make_mvc.mak
+
+Patch 6.1.341
+Problem:    In Insert mode with 'rightleft' set the cursor is drawn halfway a
+	    double-wide character.  For CTRL-R and CTRL-K in Insert mode the "
+	    or ? is not displayed.
+Solution:   Draw the cursor in the next character cell.  Display the " or ?
+	    over the right half of the double-wide character. (Yasuhiro
+	    Matsumoto)  Also fix that cancelling a digraph doesn't redraw
+	    a double-byte character correctly.
+Files:	    src/edit.c, src/gui.c, src/mbyte.c
+
+Patch 6.1.342 (depends on 6.1.341)
+Problem:    With 'rightleft' set typing "c" on a double-wide character causes
+	    the cursor to be displayed one cell to the left.
+Solution:   Draw the cursor in the next character cell.  (Yasuhiro Matsumoto)
+Files:	    src/gui.c
+
+Patch 6.1.343 (depends on 6.1.342)
+Problem:    Cannot compile with the +multi_byte feature but without +rightleft.
+	    Cannot compile without the GUI.
+Solution:   Fix the #ifdefs.  (partly by Nam SungHyun)
+Files:	    src/gui.c, src/mbyte.c, src/ui.c
+
+Patch 6.1.344
+Problem:    When using ":silent filetype" the output is still put in the
+	    message history. (Hari Krishna Dara)
+Solution:   Don't add messages in the history when ":silent" is used.
+Files:	    src/message.c
+
+Patch 6.1.345 (extra)
+Problem:    Win32: 'imdisable' doesn't work.
+Solution:   Make 'imdisable' work. (Yasuhiro Matsumoto)
+Files:	    src/gui_w32.c
+
+Patch 6.1.346
+Problem:    The scroll wheel can only scroll the current window.
+Solution:   Make the scroll wheel scroll the window that the mouse points to.
+	    (Daniel Elstner)
+Files:	    src/edit.c, src/gui.c, src/normal.c, src/term.c
+
+Patch 6.1.347
+Problem:    When using cscope to list matching tags, the listed number is
+	    sometimes not equal to what cscope uses. (Vihren Milev)
+Solution:   For cscope tags use only one table, don't give tags in the current
+	    file a higher priority.
+Files:	    src/tag.c
+
+Patch 6.1.348
+Problem:    Wildmode with wildmenu: ":set wildmode=list,full", ":colorscheme
+	    <tab>" results in "zellner" instead of the first entry. (Anand
+	    Hariharan)
+Solution:   Don't call ExpandOne() from globpath(). (Flemming Madsen)
+Files:	    src/ex_getln.c
+
+Patch 6.1.349
+Problem:    "vim --serverlist" when no server was ever started gives an error
+	    message without "\n".
+	    "vim --serverlist" doesn't exit when the X server can't be
+	    contacted, it starts Vim unexpectedly. (Ricardo Signes)
+Solution:   Don't give an error when no Vim server was ever started.
+	    Treat failing of opening the display equal to errors inside the
+	    remote*() functions. (Flemming Madsen)
+Files:	    src/if_xcmdsrv.c, src/main.c
+
+Patch 6.1.350
+Problem:    When entering a buffer with ":bnext" for the first time, using an
+	    autocommand to restore the last used cursor position doesn't work.
+	    (Paolo Giarusso)
+Solution:   Don't use the last known cursor position of the current Vim
+	    invocation if an autocommand changed the position.
+Files:	    src/buffer.c
+
+Patch 6.1.351 (depends on 6.1.349)
+Problem:    Crash when starting Vim the first time in an X server. (John
+	    McGowan)
+Solution:   Don't call xFree() with a fixed string.
+Files:	    src/if_xcmdsrv.c
+
+Patch 6.1.352 (extra, depends on 6.1.345)
+Problem:    Win32: Crash when setting "imdisable" in _vimrc.
+Solution:   Don't call IME functions when imm32.dll was not loaded (yet).
+	    Also add typecasts to avoid Compiler warnings for
+	    ImmAssociateContext() argument.
+Files:	    src/gui_w32.c
+
+Patch 6.1.353 (extra, depends on 6.1.334)
+Problem:    Problem with drawing Arabic characters.
+Solution:   Don't use ETO_PDY, do use padding.
+Files:	    src/gui_w32.c
+
+Patch 6.1.354 (extra, depends on 6.1.333)
+Problem:    MS-Windows 98: Notepad can't paste text copied from Vim when
+	    'encoding' is "utf-8".
+Solution:   Also make CF_TEXT available on the clipboard. (Ron Aaron)
+Files:	    src/os_mswin.c
+
+Patch 6.1.355
+Problem:    In a regexp '\n' will never match anything in a string.
+Solution:   Make '\n' match a newline character.
+Files:	    src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds2.c,
+	    src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/misc1.c,
+	    src/option.c, src/os_mac.c, src/os_unix.c, src/quickfix.c,
+	    src/regexp.c, src/search.c, src/syntax.c, src/tag.c, src/vim.h
+
+Patch 6.1.356 (extra, depends on, well, eh, several others)
+Problem:    Compiler warnings for using convert_setup() and a few other
+	    things.
+Solution:   Add typecasts.
+Files:	    src/mbyte.c, src/os_mswin.c, src/proto/os_win32.pro, src/os_win32.c
+
+Patch 6.1.357
+Problem:    CR in the quickfix window jumps to the error under the cursor, but
+	    this doesn't work in Insert mode. (Srikanth Sankaran)
+Solution:   Handle CR in Insert mode in the quickfix window.
+Files:	    src/edit.c
+
+Patch 6.1.358
+Problem:    The tutor doesn't select another locale version properly.
+Solution:   Insert the "let" command. (Yasuhiro Matsumoto)
+Files:	    runtime/tutor/tutor.vim
+
+Patch 6.1.359 (extra)
+Problem:    Mac Carbon: Vim doesn't get focus when started from the command
+	    line.  Crash when using horizontal scroll bar.
+Solution:   Set Vim as the frontprocess.  Fix scrolling.  (Peter Cucka)
+Files:	    src/gui_mac.c
+
+Patch 6.1.360 (depends on 6.1.341)
+Problem:    In Insert mode CTRL-K ESC messes up a multi-byte character.
+	    (Anders Helmersson)
+Solution:   Save all bytes of a character when displaying a character
+	    temporarily.
+Files:	    src/edit.c, src/proto/screen.pro, src/screen.c
+
+Patch 6.1.361
+Problem:    Cannot jump to a file mark with ":'M".
+Solution:   Allow jumping to another file for a mark in an Ex address when it
+	    is the only thing in the command line.
+Files:	    src/ex_docmd.c
+
+Patch 6.1.362
+Problem:    tgetent() may return zero for success. tgetflag() may return -1
+	    for an error.
+Solution:   Check tgetflag() for returning a positive value.  Add an autoconf
+	    check for the value that tgetent() returns.
+Files:	    src/auto/configure, src/config.h.in, src/configure.in, src/term.c
+
+Patch 6.1.363
+Problem:    byte2line() can return one more than the number of lines.
+Solution:   Return -1 if the offset is one byte past the end.
+Files:	    src/memline.c
+
+Patch 6.1.364
+Problem:    That the FileChangedShell autocommand event never nests makes it
+	    difficult to reload a file in a normal way.
+Solution:   Allow nesting for the FileChangedShell event but do not allow
+	    triggering itself again.
+	    Also avoid autocommands for the cmdline window in rare cases.
+Files:	    src/ex_getln.c, src/fileio.c, src/window.c
+
+Patch 6.1.365 (depends on 6.1.217)
+Problem:    Setting a breakpoint in a sourced file with a relative path name
+	    doesn't work. (Servatius Brandt)
+Solution:   Expand the file name to a full path.
+Files:	    src/ex_cmds2.c
+
+Patch 6.1.366
+Problem:    Can't use Vim with Netbeans.
+Solution:   Add the Netbeans interface.  Includes support for sign icons and
+	    "-fg" and "-bg" arguments for GTK.  Add the 'autochdir'
+	    option.  (Gordon Prieur, George Hernandez, Dave Weatherford)
+	    Make it possible to display both a sign with a text and one with
+	    line highlighting in the same line.
+	    Add support for Agide, interface version 2.1.
+	    Also fix that when 'iskeyword' includes '?' the "*" command
+	    doesn't work properly on a word that includes "?" (Bill McCarthy):
+	    Don't escape "?" to "\?" when searching forward.
+Files:	    runtime/doc/Makefile, runtime/doc/netbeans.txt,
+	    runtime/doc/options.txt, runtime/doc/various.txt,
+	    src/Makefile, src/auto/configure, src/buffer.c, src/config.h.in,
+	    src/config.mk.in, src/configure.in, src/edit.c, src/ex_cmds.c,
+	    src/ex_docmd.c, src/feature.h, src/fileio.c, src/globals.h,
+	    src/gui.c, src/gui_beval.c, src/gui_gtk_x11.c, src/gui_x11.c,
+	    src/main.c, src/memline.c, src/misc1.c, src/misc2.c, src/move.c,
+	    src/nbdebug.c, src/nbdebug.h, src/netbeans.c, src/normal.c,
+	    src/ops.c, src/option.c, src/option.h, src/proto/buffer.pro,
+	    src/proto/gui_beval.pro, src/proto/gui_gtk_x11.pro,
+	    src/proto/gui_x11.pro, src/proto/misc2.pro,
+	    src/proto/netbeans.pro, src/proto/normal.pro, src/proto/ui.pro,
+	    src/proto.h, src/screen.c, src/structs.h, src/ui.c, src/undo.c,
+	    src/vim.h, src/window.c, src/workshop.c
+
+Patch 6.1.367 (depends on 6.1.365)
+Problem:    Setting a breakpoint in a function doesn't work.  For a sourced
+	    file it doesn't work when symbolic links are involved.  (Servatius
+	    Brandt)
+Solution:   Expand the file name in the same way as do_source() does.  Don't
+	    prepend the path to a function name.
+Files:	    src/ex_cmds2.c
+
+Patch 6.1.368
+Problem:    Completion for ":map" does not include <silent> and <script>.
+	    ":mkexrc" do not save the <silent> attribute of mappings.
+Solution:   Add "<silent>" to the generated map commands when appropriate.
+	    (David Elstner)
+	    Add <silent> and <script> to command line completion.
+Files:	    src/getchar.c
+
+Patch 6.1.369 (extra)
+Problem:    VMS: Vim hangs when attempting to edit a read-only file in the
+	    terminal.  Problem with VMS filenames for quickfix.
+Solution:   Rewrite low level input.  Remove version number from file name in
+	    a couple more places.  Fix crash after patch 6.1.362.  Correct
+	    return code for system().  (Zoltan Arpadffy, Tomas Stehlik)
+Files:	    src/misc1.c, src/os_unix.c, src/os_vms.c, src/proto/os_vms.pro,
+	    src/os_vms_conf.h, src/quickfix.c, src/ui.c
+
+Patch 6.1.370
+Problem:    #ifdef nesting is unclear.
+Solution:   Insert spaces to indicate the nesting.
+Files:	    src/os_unix.c
+
+Patch 6.1.371
+Problem:    "%V" in 'statusline' doesn't show "0-1" in an empty line.
+Solution:   Add one to the column when comparing with virtual column (Andrew
+	    Pimlott)
+Files:	    src/buffer.c
+
+Patch 6.1.372
+Problem:    With 16 bit ints there are compiler warnings. (Walter Briscoe)
+Solution:   Change int into long.
+Files:	    src/structs.h, src/syntax.c
+
+Patch 6.1.373
+Problem:    The default page header for printing is not translated.
+Solution:   Add _() around the two places where "Page" is used. (Mike
+	    Williams)  Translate the default value of the 'titleold' and
+	    'printheader' options.
+Files:	    src/ex_cmds2.c, src/option.c
+
+Patch 6.1.374 (extra)
+Problem:    MS-Windows: Cannot build GvimExt with MingW or Cygwin.
+Solution:   Add makefile and modified resource files. (Rene de Zwart)
+	    Also support Cygwin. (Alejandro Lopez_Valencia)
+Files:	    GvimExt/Make_cyg.mak, GvimExt/Make_ming.mak, GvimExt/Makefile,
+	    GvimExt/gvimext_ming.def, GvimExt/gvimext_ming.rc
+
+Patch 6.1.375
+Problem:    MS-Windows: ':!dir "%"' does not work for a file name with spaces.
+	    (Xiangjiang Ma)
+Solution:   Don't insert backslashes for spaces in a shell command.
+Files:	    src/ex_docmd.c
+
+Patch 6.1.376
+Problem:    "vim --version" and "vim --help" have a non-zero exit code.
+	    That is unusual. (Petesea)
+Solution:   Use a zero exit code.
+Files:	    src/main.c
+
+Patch 6.1.377
+Problem:    Can't add words to 'lispwords' option.
+Solution:   Add P_COMMA and P_NODUP flags. (Haakon Riiser)
+Files:	    src/option.c
+
+Patch 6.1.378
+Problem:    When two buffer-local user commands are ambiguous, a full match
+	    with a global user command isn't found. (Hari Krishna Dara)
+Solution:   Detect this situation and accept the global command.
+Files:	    src/ex_docmd.c
+
+Patch 6.1.379
+Problem:    Linux with kernel 2.2 can't use the alternate stack in combination
+	    with threading, causes an infinite loop.
+Solution:   Don't use the alternate stack in this situation.
+Files:	    src/os_unix.c
+
+Patch 6.1.380
+Problem:    When 'winminheight' is zero and the quickfix window is zero lines,
+	    entering the window doesn't make it higher. (Christian J.
+	    Robinson)
+Solution:   Make sure the current window is at least one line high.
+Files:	    src/window.c
+
+Patch 6.1.381
+Problem:    When a BufWriteCmd is used and it leaves the buffer modified, the
+	    window may still be closed. (Hari Krishna Dara)
+Solution:   Return FAIL from buf_write() when the buffer is still modified
+	    after a BufWriteCmd autocommand was used.
+Files:	    src/fileio.c
+
+Patch 6.1.382 (extra)
+Problem:    Win32 GUI: When using two monitors, the code that checks/fixes the
+	    window size and position (e.g. when a font changes) doesn't work
+	    properly.  (George Reilly)
+Solution:   Handle a double monitor situation. (Helmut Stiegler)
+Files:	    src/gui_w32.c
+
+Patch 6.1.383
+Problem:    The filling of the status line doesn't work properly for
+	    multi-byte characters. (Nam SungHyun)
+	    There is no check for going past the end of the buffer.
+Solution:   Properly distinguish characters and bytes.  Properly check for
+	    running out of buffer space.
+Files:	    src/buffer.c, src/ex_cmds2.c, src/proto/buffer.pro, src/screen.c
+
+Patch 6.1.384
+Problem:    It is not possible to find if a certain patch has been included.
+	    (Lubomir Host)
+Solution:   Support using has() to check if a patch was included.
+Files:	    runtime/doc/eval.txt, src/eval.c, src/proto/version.pro,
+	    src/version.c
+
+Patch 6.1.385 (depends on 6.1.383)
+Problem:    Can't compile without the multi-byte feature.
+Solution:   Move an #ifdef.  (Christian J. Robinson)
+Files:	    src/buffer.c
+
+Patch 6.1.386
+Problem:    Get duplicate tags when running ":helptags".
+Solution:   Do the other halve of moving a section to another help file.
+Files:	    runtime/tagsrch.txt
+
+Patch 6.1.387 (depends on 6.1.373)
+Problem:    Compiler warning for pointer cast.
+Solution:   Add (char_u *).
+Files:	    src/option.c
+
+Patch 6.1.388 (depends on 6.1.384)
+Problem:    Compiler warning for pointer cast.
+Solution:   Add (char *).  Only include has_patch() when used.
+Files:	    src/eval.c, src/version.c
+
+Patch 6.1.389 (depends on 6.1.366)
+Problem:    Balloon evaluation doesn't work for GTK.
+	    has("balloon_eval") doesn't work.
+Solution:   Add balloon evaluation for GTK.  Also improve displaying of signs.
+	    (Daniel Elstner)
+	    Also make ":gui" start the netbeans connection and avoid using
+	    netbeans functions when the connection is not open.
+Files:	    src/Makefile, src/feature.h, src/gui.c, src/gui.h,
+	    src/gui_beval.c, src/gui_beval.h, src/gui_gtk.c,
+	    src/gui_gtk_x11.c, src/eval.c, src/memline.c, src/menu.c,
+	    src/netbeans.c, src/proto/gui_beval.pro, src/proto/gui_gtk.pro,
+	    src/structs.h, src/syntax.c, src/ui.c, src/workshop.c
+
+Patch 6.1.390 (depends on 6.1.389)
+Problem:    It's not possible to tell Vim to save and exit through the
+	    Netbeans interface.  Would still try to send balloon eval text
+	    after the connection is closed.
+	    Can't use Unicode characters for sign text.
+Solution:   Add functions "saveAndExit" and "getModified".  Check for a
+	    working connection before sending a balloonText event.
+	    various other cleanups.
+	    Support any character for sign text. (Daniel Elstner)
+Files:	    runtime/doc/netbeans.txt, runtime/doc/sign.txt, src/ex_cmds.c,
+	    src/netbeans.c, src/screen.c
+
+Patch 6.1.391
+Problem:    ml_get() error when using virtualedit. (Charles Campbell)
+Solution:   Get a line from a specific window, not the current one.
+Files:	    src/charset.c
+
+Patch 6.1.392 (depends on 6.1.383)
+Problem:    Highlighting in the 'statusline' is in the wrong position when an
+	    item is truncated. (Zak Beck)
+Solution:   Correct the start of 'statusline' items properly for a truncated
+	    item.
+Files:	    src/buffer.c
+
+Patch 6.1.393
+Problem:    When compiled with Python and threads, detaching the terminal may
+	    cause Vim to loop forever.
+Solution:   Add -pthread to $CFLAGS when using Python and gcc. (Daniel
+	    Elstner)
+Files:	    src/auto/configure,, src/configure.in
+
+Patch 6.1.394 (depends on 6.1.390)
+Problem:    The netbeans interface doesn't recognize multibyte glyph names.
+Solution:   Check the number of cells rather than bytes to decide
+	    whether a glyph name is not a filename. (Daniel Elstner)
+Files:	    src/netbeans.c
+
+Patch 6.1.395 (extra, depends on 6.1.369)
+Problem:    VMS: OLD_VMS is never defined.  Missing function prototype.
+Solution:   Define OLD_VMS in Make_vms.mms.  Add vms_sys_status() to
+	    os_vms.pro. (Zoltan Arpadffy)
+Files:	    src/Make_vms.mms, src/proto/os_vms.pro
+
+Patch 6.1.396 (depends on 6.1.330)
+Problem:    Compiler warnings for using enum.
+Solution:   Add typecast to char_u.
+Files:	    src/gui_gtk_x11.c, src/gui_x11.c
+
+Patch 6.1.397 (extra)
+Problem:    The install program may use a wrong path for the diff command if
+	    there is a space in the install directory path.
+Solution:   Use double quotes around the path if necessary. (Alejandro
+	    Lopez-Valencia)  Also use double quotes around the file name
+	    arguments.
+Files:	    src/dosinst.c
+
+Patch 6.1.398
+Problem:    Saving the typeahead for debug mode causes trouble for a test
+	    script. (Servatius Brandt)
+Solution:   Add the ":debuggreedy" command to avoid saving the typeahead.
+Files:	    runtime/doc/repeat.txt, src/ex_cmds.h, src/ex_cmds2.c,
+	    src/ex_docmd.c, src/proto/ex_cmds2.pro
+
+Patch 6.1.399
+Problem:    Warning for unused variable.
+Solution:   Remove the variable two_or_more.
+Files:	    src/ex_cmds.c
+
+Patch 6.1.400 (depends on 6.1.381)
+Problem:    When a BufWriteCmd wipes out the buffer it may still be accessed.
+Solution:   Don't try accessing a buffer that has been wiped out.
+Files:	    src/fileio.c
+
+Patch 6.1.401 (extra)
+Problem:    Building the Win16 version with Borland 5.01 doesn't work.
+	    "make test" doesn't work with Make_dos.mak. (Walter Briscoe)
+Solution:   Various fixes to the w16 makefile. (Walter Briscoe)
+	    Don't use deltree.  Use "mkdir \tmp" instead of "mkdir /tmp".
+Files:	    src/Make_w16.mak, src/testdir/Make_dos.mak
+
+Patch 6.1.402
+Problem:    When evaluating a function name with curly braces, an error
+	    is not handled consistently.
+Solution:   Accept the result of an curly braces expression when an
+	    error was encountered.  Skip evaluating an expression in curly
+	    braces when skipping.  (Servatius Brandt)
+Files:	    src/eval.c
+
+Patch 6.1.403 (extra)
+Problem:    MS-Windows 16 bit: compiler warnings.
+Solution:   Add typecasts. (Walter Briscoe)
+Files:	    src/ex_cmds2.c, src/gui_w48.c, src/os_mswin.c, src/os_win16.c,
+	    src/syntax.c
+
+Patch 6.1.404 (extra)
+Problem:    Various small problems.
+Solution:   Fix comments.  Various small additions, changes in indent, removal
+	    of unused items and fixes.
+Files:	    Makefile, README.txt, runtime/menu.vim, runtime/vimrc_example.vim,
+	    src/INSTALL, src/INSTALLole.txt, src/Make_bc5.mak,
+	    src/Make_cyg.mak, src/Make_ming.mak, src/Makefile,
+	    src/config.h.in, src/edit.c, src/eval.c, src/ex_cmds2.c,
+	    src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/getchar.c,
+	    src/gui.c, src/gui_gtk.c, src/gui_photon.c, src/if_cscope.c,
+	    src/if_python.c, src/keymap.h, src/mark.c, src/mbyte.c,
+	    src/message.c, src/misc1.c, src/misc2.c, src/normal.c,
+	    src/option.c, src/os_os2_cfg.h, src/os_win32.c,
+	    src/proto/getchar.pro, src/proto/message.pro,
+	    src/proto/regexp.pro, src/screen.c, src/structs.h, src/syntax.c,
+	    src/term.c, src/testdir/test15.in, src/testdir/test15.ok,
+	    src/vim.rc, src/xxd/Make_cyg.mak, src/xxd/Makefile
+
+Patch 6.1.405
+Problem:    A few files are missing from the toplevel Makefile.
+Solution:   Add the missing files.
+Files:	    Makefile
+
+Patch 6.1.406 (depends on 6.1.392)
+Problem:    When a statusline item doesn't fit arbitrary text appears.
+	    (Christian J. Robinson)
+Solution:   When there is just enough room but not for the "<" truncate the
+	    statusline item like there is no room.
+Files:	    src/buffer.c
+
+Patch 6.1.407
+Problem:    ":set scrollbind | help" scrollbinds the help window. (Andrew
+	    Pimlott)
+Solution:   Reset 'scrollbind' when opening a help window.
+Files:	    src/ex_cmds.c
+
+Patch 6.1.408
+Problem:    When 'rightleft' is set unprintable character 0x0c is displayed as
+	    ">c0<".
+Solution:   Reverse the text of the hex character.
+Files:	    src/screen.c
+
+Patch 6.1.409
+Problem:    Generating tags for the help doesn't work for some locales.
+Solution:   Set LANG=C LC_ALL=C in the environment for "sort". (Daniel
+	    Elstner)
+Files:	    runtime/doc/Makefile
+
+Patch 6.1.410 (depends on 6.1.390)
+Problem:    Linking error when compiling with Netbeans but without sign icons.
+	    (Malte Neumann)
+Solution:   Don't define buf_signcount() when sign icons are unavailable.
+Files:	    src/buffer.c
+
+Patch 6.1.411
+Problem:    When 'virtualedit' is set, highlighting a Visual block beyond the
+	    end of a line may be wrong.
+Solution:   Correct the virtual column when the end of the line is before the
+	    displayed part of the line. (Muraoka Taro)
+Files:	    src/screen.c
+
+Patch 6.1.412
+Problem:    When swapping terminal screens and using ":gui" to start the GUI,
+	    the shell prompt may be after a hit-enter prompt.
+Solution:   Output a newline in the terminal when starting the GUI and there
+	    was a hit-enter prompt..
+Files:	    src/gui.c
+
+Patch 6.1.413
+Problem:    When 'clipboard' contains "unnamed", "p" in Visual mode doesn't
+	    work correctly.
+Solution:   Save the register before overwriting it and put the resulting text
+	    on the clipboard afterwards.  (Muraoka Taro)
+Files:	    src/normal.c, src/ops.c
+
+Patch 6.1.414 (extra, depends on 6.1.369)
+Problem:    VMS: Vim busy waits when waiting for input.
+Solution:   Delay for a short while before getting another character.  (Zoltan
+	    Arpadffy)
+Files:	    src/os_vms.c
+
+Patch 6.1.415
+Problem:    When there is a vertical split and a quickfix window, reducing the
+	    size of the Vim window may result in a wrong window layout and a
+	    crash.
+Solution:   When reducing the window size and there is not enough space for
+	    'winfixheight' set the frame height to the larger height, so that
+	    there is a retry while ignoring 'winfixheight'. (Yasuhiro
+	    Matsumoto)
+Files:	    src/window.c
+
+Patch 6.1.416 (depends on 6.1.366)
+Problem:    When using the Netbeans interface, a line with a sign cannot be
+	    changed.
+Solution:   Respect the GUARDEDOFFSET for sign IDs when checking for a guarded
+	    area.
+Files:	    src/netbeans.c
+
+Patch 6.1.417
+Problem:    Unprintable multi-byte characters are not handled correctly.
+	    Multi-byte characters above 0xffff are displayed as another
+	    character.
+Solution:   Handle unprintable multi-byte characters.  Display multi-byte
+	    characters above 0xffff with a marker.  Recognize UTF-16 words and
+	    BOM words as unprintable.  (Daniel Elstner)
+Files:	    src/charset.c, src/mbyte.c, src/screen.c
+
+Patch 6.1.418
+Problem:    The result of strftime() is in the current locals.  Need to
+	    convert it to 'encoding'.
+Solution:   Obtain the current locale and convert the argument for strftime()
+	    to it and the result back to 'encoding'.  (Daniel Elstner)
+Files:	    src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/mbyte.c,
+	    src/proto/mbyte.pro, src/option.c, src/os_mswin.c
+
+Patch 6.1.419
+Problem:    Vim doesn't compile on AIX 5.1.
+Solution:   Don't define _NO_PROTO on this system. (Uribarri)
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.1.420 (extra)
+Problem:    convert_input() has an unnecessary STRLEN().
+	    Conversion from UCS-2 to a codepage uses word count instead of
+	    byte count.
+Solution:   Remove the STRLEN() call. (Daniel Elstner)
+	    Always use byte count for string_convert().
+Files:	    src/gui_w32.c, src/mbyte.c
+
+Patch 6.1.421 (extra, depends on 6.1.354)
+Problem:    MS-Windows 9x: When putting text on the clipboard it can be in
+	    the wrong encoding.
+Solution:   Convert text to the active codepage for CF_TEXT. (Glenn Maynard)
+Files:	    src/os_mswin.c
+
+Patch 6.1.422
+Problem:    Error in .vimrc doesn't cause hit-enter prompt when swapping
+	    screens. (Neil Bird)
+Solution:   Set msg_didany also when sending a message to the terminal
+	    directly.
+Files:	    src/message.c
+
+Patch 6.1.423
+Problem:    Can't find arbitrary text in help files.
+Solution:   Added the ":helpgrep" command.
+Files:	    runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c,
+	    src/proto/quickfix.pro, src/quickfix.c
+
+Patch 6.1.424 (extra)
+Problem:    Win32: Gvim compiled with VC++ 7.0 run on Windows 95 does not show
+	    menu items.
+Solution:   Define $WINVER to avoid an extra item is added to MENUITEMINFO.
+	    (Muraoka Taro)
+Files:	    src/Make_mvc.mak
+
+Patch 6.1.425
+Problem:    ":helptags $VIMRUNTIME/doc" does not add the "help-tags" tag.
+Solution:   Do add the "help-tags" tag for that specific directory.
+Files:	    src/ex_cmds.c
+
+Patch 6.1.426
+Problem:    "--remote-wait +cmd file" waits forever. (Valery Kondakoff)
+Solution:   Don't wait for the "+cmd" argument to have been edited.
+Files:	    src/main.c
+
+Patch 6.1.427
+Problem:    Several error messages for regexp patterns are not translated.
+Solution:   Use _() properly. (Muraoka Taro)
+Files:	    src/regexp.c
+
+Patch 6.1.428
+Problem:    FreeBSD: wait() may hang when compiled with Python support and
+	    doing a system() call in a startup script.
+Solution:   Use waitpid() instead of wait() and poll every 10 msec, just like
+	    what is done in the GUI.
+Files:	    src/os_unix.c
+
+Patch 6.1.429 (depends on 6.1.390)
+Problem:    Crash when using showmarks.vim plugin. (Charles Campbell)
+Solution:   Check for sign_get_text() returning a NULL pointer.
+Files:	    src/screen.c
+
+Patch 6.1.430
+Problem:    In Lisp code backslashed parens should be ignored for "%". (Dorai)
+Solution:   Skip over backslashed parens.
+Files:	    src/search.c
+
+Patch 6.1.431
+Problem:    Debug commands end up in redirected text.
+Solution:   Disable redirection while handling debug commands.
+Files:	    src/ex_cmds2.c
+
+Patch 6.1.432 (depends on 6.1.375)
+Problem:    MS-Windows: ":make %:p" inserts extra backslashes. (David Rennalls)
+Solution:   Don't add backslashes, handle it like ":!cmd".
+Files:	    src/ex_docmd.c
+
+Patch 6.1.433
+Problem:    ":popup" only works for Win32.
+Solution:   Add ":popup" support for GTK.  (Daniel Elstner)
+Files:	    runtime/doc/gui.txt, src/ex_docmd.c, src/gui_gtk.c, src/menu.c,
+	    src/proto/gui_gtk.pro
+
+Patch 6.1.434 (extra)
+Problem:    Win32: When there are more than 32767 lines, the scrollbar has a
+	    roundoff error.
+Solution:   Make a click on an arrow move one line.  Also move the code to
+	    gui_w48.c, there is hardly any difference between the 16 bit and
+	    32 bit versions. (Walter Briscoe)
+Files:	    src/gui_w16.c, src/gui_w32.c, src/gui_w48.c
+
+Patch 6.1.435
+Problem:    ":winsize x" resizes the Vim window to the minimal size. (Andrew
+	    Pimlott)
+Solution:   Give an error message for wrong arguments of ":winsize" and
+	    ":winpos".
+Files:	    src/ex_docmd.c
+
+Patch 6.1.436
+Problem:    When a long UTF-8 file contains an illegal byte it's hard to find
+	    out where it is. (Ron Aaron)
+Solution:   Add the line number to the error message.
+Files:	    src/fileio.c
+
+Patch 6.1.437 (extra, depends on 6.1.421)
+Problem:    Using multi-byte functions when they are not available.
+Solution:   Put the clipboard conversion inside an #ifdef. (Vince Negri)
+	    Also fix a pointer type mistake. (Walter Briscoe)
+Files:	    src/os_mswin.c
+
+Patch 6.1.438
+Problem:    When Perl has thread support Vim cannot use the Perl interface.
+Solution:   Add a configure check and disable Perl when it will not work.
+	    (Aron Griffis)
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.1.439
+Problem:    Netbeans: A "create" function doesn't actually create a buffer,
+	    following functions may fail.
+Solution:   Create a Vim buffer without a name when "create" is called.
+	    (Gordon Prieur)
+Files:	    runtime/doc/netbeans.txt, src/netbeans.c
+
+Patch 6.1.440
+Problem:    The "@*" command doesn't obtain the actual contents of the
+	    clipboard. (Hari Krishna Dara)
+Solution:   Obtain the clipboard text before executing the command.
+Files:	    src/ops.c
+
+Patch 6.1.441
+Problem:    "zj" and "zk" cannot be used as a motion command after an
+	    operator. (Ralf Hetzel)
+Solution:   Accept these commands as motion commands.
+Files:	    src/normal.c
+
+Patch 6.1.442
+Problem:    Unicode 3.2 defines more space and punctuation characters.
+Solution:   Add the new characters to the Unicode tables. (Raphael Finkel)
+Files:	    src/mbyte.c
+
+Patch 6.1.443 (extra)
+Problem:    Win32: The gvimext.dll build with Borland 5.5 requires another
+	    DLL.
+Solution:   Build a statically linked version by default. (Dan Sharp)
+Files:	    GvimExt/Make_bc5.mak
+
+Patch 6.1.444 (extra)
+Problem:    Win32: Enabling a build with gettext support is not consistent.
+Solution:   Use "GETTEXT" for Borland and msvc makefiles. (Dan Sharp)
+Files:	    src/Make_bc5.mak, src/Make_mvc.mak
+
+Patch 6.1.445 (extra)
+Problem:    DJGPP: get warning for argument of putenv()
+Solution:   Define HAVE_PUTENV to use DJGPP's putenv(). (Walter Briscoe)
+Files:	    src/os_msdos.h
+
+Patch 6.1.446 (extra)
+Problem:    Win32: The MingW makefile uses a different style of arguments than
+	    other makefiles.
+	    Dynamic IME is not supported for Cygwin.
+Solution:   Use "no" and "yes" style arguments.  Remove the use of the
+	    dyn-ming.h include file. (Dan Sharp)
+	    Do not include the ime.h file and adjust the makefile. (Alejandro
+	    Lopez-Valencia)
+Files:	    src/Make_cyg.mak, src/Make_ming.mak, src/gui_w32.c,
+	    src/if_perl.xs, src/if_python.c, src/if_ruby.c, src/os_win32.c
+
+Patch 6.1.447
+Problem:    "make install" uses "make" directly for generating help tags.
+Solution:   Use $(MAKE) instead of "make". (Tim Mooney)
+Files:	    src/Makefile
+
+Patch 6.1.448
+Problem:    'titlestring' has a default maximum width of 50 chars per item.
+Solution:   Remove the default maximum (also for 'statusline').
+Files:	    src/buffer.c
+
+Patch 6.1.449
+Problem:    When "1" and "a" are in 'formatoptions', auto-formatting always
+	    moves a newly added character to the next line. (Servatius Brandt)
+Solution:   Don't move a single character to the next line when it was just
+	    typed.
+Files:	    src/edit.c
+
+Patch 6.1.450
+Problem:    Termcap entry "kB" for back-tab is not recognized.
+Solution:   Use back-tab as the shift-tab code.
+Files:	    src/keymap.h, src/misc2.c, src/term.c
+
+Patch 6.1.451
+Problem:    GUI: When text in the find dialog contains a slash, a backslash is
+	    inserted the next time it is opened. (Mezz)
+Solution:   Remove escaped backslashes and question marks. (Daniel Elstner)
+Files:	    src/gui.c
+
+Patch 6.1.452 (extra, after 6.1.446)
+Problem:    Win32: IME support doesn't work for MSVC.
+Solution:   Use _MSC_VER instead of __MSVC. (Alejandro Lopez-Valencia)
+Files:	    src/gui_w32.c
+
+Patch 6.1.453 (after 6.1.429)
+Problem:    When compiled without sign icons but with sign support, adding a
+	    sign may cause a crash.
+Solution:   Check for the text sign to exist before using it. (Kamil
+	    Burzynski)
+Files:	    src/screen.c
+
+Patch 6.1.454 (extra)
+Problem:    Win32: pasting Russian text in Vim with 'enc' set to cp1251
+	    results in utf-8 bytes.  (Perelyubskiy)
+	    Conversion from DBCS to UCS2 does not work when 'encoding' is not
+	    the active codepage.
+Solution:   Introduce enc_codepage and use it for conversion to 'encoding'
+	    (Glenn Maynard)
+	    Use MultiByteToWideChar() and WideCharToMultiByte() instead of
+	    iconv().  Should do most needed conversions without iconv.dll.
+Files:	    src/globals.h, src/gui_w32.c, src/mbyte.c, src/os_mswin.c,
+	    src/proto/mbyte.pro, src/proto/os_mswin.pro, src/structs.h
+
+Patch 6.1.455
+Problem:    Some Unicode characters can be one or two character cells wide.
+Solution:   Add the 'ambiwidth' option to tell Vim how to display these
+	    characters. (Jungshik Shin)
+	    Also reset the script ID when setting an option to its default
+	    value, so that ":verbose set" won't give wrong info.
+Files:	    runtime/doc/options.txt, src/mbyte.c, src/option.c, src/option.h
+
+Patch 6.1.456 (extra, after 6.1.454)
+Problem:    Win32: IME doesn't work.
+Solution:   ImmGetCompositionStringW() returns the size in bytes, not words.
+	    (Yasuhiro Matsumoto)  Also fix typecast problem.
+Files:	    src/gui_w32.c, src/os_mswin.c
+
+Patch 6.1.457
+Problem:    An empty register in viminfo causes conversion to fail.
+Solution:   Don't convert an empty string. (Yasuhiro Matsumoto)
+Files:	    src/ex_cmds.c, src/mbyte.c
+
+Patch 6.1.458
+Problem:    Compiler warning for pointer.
+Solution:   Add a typecast.
+Files:	    src/ex_cmds.c
+
+Patch 6.1.459 (extra)
+Problem:    Win32: libcall() may return an invalid pointer and cause Vim to
+	    crash.
+Solution:   Add a strict check for the returned pointer. (Bruce Mellows)
+Files:	    src/os_mswin.c
+
+Patch 6.1.460
+Problem:    GTK: after scrolling the text one line with a key, clicking the
+	    arrow of the scrollbar does not always work. (Nam SungHyun)
+Solution:   Always update the scrollbar thumb when the value changed, even
+	    when it would not move, like for RISCOS.  (Daniel Elstner)
+Files:	    src/gui.c, src/gui.h
+
+Patch 6.1.461
+Problem:    When a keymap is active, typing a character in Select mode does
+	    not use it. (Benji Fisher)
+Solution:   Apply Insert mode mapping to the character typed in Select mode.
+Files:	    src/normal.c
+
+Patch 6.1.462
+Problem:    When autocommands wipe out a buffer, a crash may happen. (Hari
+	    Krishna Dara)
+Solution:   Don't decrement the window count of a buffer before calling the
+	    autocommands for it.  When re-using the current buffer, watch out
+	    for autocommands changing the current buffer.
+Files:	    src/buffer.c, src/ex_cmds.c, src/proto/buffer.pro
+
+Patch 6.1.463
+Problem:    When writing a compressed file, the file name that gzip stores in
+	    the file is the weird temporary file name. (David Rennalls)
+Solution:   Use the real file name when possible.
+Files:	    runtime/plugin/gzip.vim
+
+Patch 6.1.464
+Problem:    Crash when using C++ syntax highlighting. (Gerhard Hochholzer)
+Solution:   Check for a negative index.
+Files:	    src/syntax.c
+
+Patch 6.1.465 (after 6.1.454)
+Problem:    Compile error when using cygwin.
+Solution:   Change #ifdef WIN32 to #ifdef WIN3264. (Alejandro Lopez-Valencia)
+	    Undefine WIN32 after including windows.h
+Files:	    src/mbyte.c
+
+Patch 6.1.466
+Problem:    The "-f" argument is a bit obscure.
+Solution:   Add the "--nofork" argument.  Improve the help text a bit.
+Files:	    runtime/doc/starting.txt, src/main.c
+
+Patch 6.1.467
+Problem:    Setting the window title doesn't work for Chinese.
+Solution:   Use an X11 function to convert text to a text property. (Kentaro
+	    Nakazawa)
+Files:	    src/os_unix.c
+
+Patch 6.1.468
+Problem:    ":mksession" also stores folds for buffers which will not be
+	    restored.
+Solution:   Only store folds for a buffer with 'buftype' empty and help files.
+Files:	    src/ex_docmd.c
+
+Patch 6.1.469
+Problem:    'listchars' cannot contain multi-byte characters.
+Solution:   Handle multi-byte UTF-8 list characters. (Matthew Samsonoff)
+Files:	    src/message.c, src/option.c, src/screen.c
+
+Patch 6.1.470 (lang)
+Problem:    Polish messages don't show up correctly on MS-Windows.
+Solution:   Convert messages to cp1250. (Mikolaj Machowski)
+	    Also add English message translations, because it got in the way
+	    of the patch.
+Files:	    Makefile, src/po/Makefile, src/po/en_gb.po, src/po/pl.po
+
+Patch 6.1.471
+Problem:    ":jumps" output continues after pressing "q" at the more-prompt.
+	    (Hari Krishna Dara)
+Solution:   Check for "got_int" being set.
+Files:	    src/mark.c
+
+Patch 6.1.472
+Problem:    When there is an authentication error when connecting to the X
+	    server Vim exits.
+Solution:   Use XSetIOErrorHandler() to catch the error and longjmp() to avoid
+	    the exit.  Also do this in the main loop, so that when the X
+	    server exits a Vim running in a console isn't killed.
+Files:	    src/globals.h, src/main.c, src/os_unix.c
+
+Patch 6.1.473
+Problem:    Referring to $curwin or $curbuf in Perl 5.6 causes a crash.
+Solution:   Add "pTHX_" to cur_val(). (Yasuhiro Matsumoto)
+Files:	    src/if_perl.xs
+
+Patch 6.1.474
+Problem:    When opening the command-line window in Ex mode it's impossible to
+	    go back. (Pavol Juhas)
+Solution:   Reset "exmode_active" and restore it when the command-line window
+	    is closed.
+Files:	    src/ex_getln.c
+
+
+Patch 6.2f.001
+Problem:    The configure check for Ruby didn't work properly for Ruby 1.8.0.
+Solution:   Change the way the Ruby check is done. (Aron Griffis)
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.2f.002
+Problem:    The output of ":ls" doesn't show whether a buffer had read errors.
+Solution:   Add the "x" flag in the ":ls" output.
+Files:	    runtime/doc/windows.txt, src/buffer.c
+
+Patch 6.2f.003
+Problem:    Test49 doesn't properly test the behavior of ":catch" without an
+	    argument.
+Solution:   Update test49. (Servatius Brandt)
+Files:	    src/testdir/test49.ok, src/testdir/test49.vim
+
+Patch 6.2f.004
+Problem:    "vim --version" always uses CR/LF in the output.
+Solution:   Omit the CR.
+Files:	    src/message.c, src/os_unix.c
+
+Patch 6.2f.005
+Problem:    Two error messages without a colon after the number.
+Solution:   Add the colon. (Taro Muraoka)
+Files:	    src/if_cscope.c
+
+Patch 6.2f.006
+Problem:    When saving a file takes a while and Vim regains focus this can
+	    result in a "file changed outside of Vim" warning and ml_get()
+	    errors. (Mike Williams)
+Solution:   Add the "b_saving" flag to avoid checking the timestamp while the
+	    buffer is being saved. (Michael Schaap)
+Files:	    src/fileio.c, src/structs.h
+
+Patch 6.2f.007
+Problem:    Irix compiler complains about multiple defined symbols.
+	    vsnprintf() is not available.  (Charles Campbell)
+Solution:   Insert EXTERN for variables in globals.h.  Change the configure
+	    check for vsnprintf() from compiling to linking.
+Files:	    src/auto/configure, src/configure.in, src/globals.h
+
+Patch 6.2f.008
+Problem:    The Aap recipe doesn't work with Aap 0.149.
+Solution:   Change targetarg to TARGETARG.  Update the mysign file.
+Files:	    src/main.aap, src/mysign
+
+Patch 6.2f.009 (extra)
+Problem:    Small problem when building with Borland 5.01.
+Solution:   Use mkdir() instead of _mkdir(). (Walter Briscoe)
+Files:	    src/dosinst.h
+
+Patch 6.2f.010
+Problem:    Warning for missing prototypes.
+Solution:   Add missing prototypes. (Walter Briscoe)
+Files:	    src/if_cscope.c
+
+Patch 6.2f.011
+Problem:    The configure script doesn't work with autoconf 2.5x.
+Solution:   Add square brackets around a header check. (Aron Griffis)
+	    Note: touch src/auto/configure after applying this patch.
+Files:	    src/configure.in
+
+Patch 6.2f.012
+Problem:    ":echoerr" doesn't work correctly inside try/endtry.
+Solution:   Don't reset did_emsg inside a try/endtry. (Servatius Brandt)
+Files:	    src/eval.c
+
+Patch 6.2f.013 (extra)
+Problem:    Macintosh: Compiler warning for a trigraph.
+Solution:   Insert a backslash before each question mark. (Peter Cucka)
+Files:	    src/os_mac.h
+
+Patch 6.2f.014 (extra)
+Problem:    Macintosh: ex_eval is not included in the project file.
+Solution:   Add ex_eval. (Dany St-Amant)
+Files:	    src/os_mac.pbproj/project.pbxproj
+
+Patch 6.2f.015 (extra)
+Problem:    Win32: When changing header files not all source files involved
+	    are recompiled.
+Solution:   Improve the dependency rules. (Dan Sharp)
+Files:	    src/Make_cyg.mak, src/Make_ming.mak
+
+Patch 6.2f.016
+Problem:    "vim --version > ff" on non-Unix systems results in a file with a
+	    missing line break at the end. (Bill McCArthy)
+Solution:   Add a line break.
+Files:	    src/main.c
+
+Patch 6.2f.017
+Problem:    Unix: starting Vim in the background and then bringing it to the
+	    foreground may cause the terminal settings to be wrong.
+Solution:   Check for tcsetattr() to return an error, retry when it does.
+	    (Paul Tapper)
+Files:	    src/os_unix.c
+
+Patch 6.2f.018
+Problem:    Mac OS X 10.2: OK is defined to zero in cursus.h while Vim uses
+	    one.  Redefining it causes a warning message.
+Solution:   Undefine OK before defining it to one. (Taro Muraoka)
+Files:	    src/vim.h
+
+Patch 6.2f.019
+Problem:    Mac OS X 10.2: COLOR_BLACK and COLOR_WHITE are defined in
+	    curses.h.
+Solution:   Rename them to PRCOLOR_BLACK and PRCOLOR_WHITE.
+Files:	    src/ex_cmds2.c
+
+Patch 6.2f.020
+Problem:    Win32: test50 produces beeps and fails with some versions of diff.
+Solution:   Remove empty lines and convert the output to dos fileformat.
+Files:	    src/testdir/test50.in
+
+Patch 6.2f.021
+Problem:    Running configure with "--enable-netbeans" disables Netbeans.
+	    (Gordon Prieur)
+Solution:   Fix the tests in configure.in where the default is to enable a
+	    feature.  Fix that "--enable-acl" reported "yes" confusingly.
+Files:	    src/auto/configure, src/configure.in, src/mysign
+
+Patch 6.2f.022
+Problem:    A bogus value for 'foldmarker' is not rejected, possibly causing a
+	    hang. (Derek Wyatt)
+Solution:   Check for a non-empty string before and after the comma.
+Files:	    src/option.c
+
+Patch 6.2f.023
+Problem:    When the help files are not in $VIMRUNTIME but 'helpfile' is
+	    correct Vim still can't find the help files.
+Solution:   Also look for a tags file in the directory of 'helpfile'.
+Files:	    src/tag.c
+
+Patch 6.2f.024
+Problem:    When 'delcombine' is set and a character has more than two
+	    composing characters "x" deletes them all.
+Solution:   Always delete only the last composing character.
+Files:	    src/misc1.c
+
+Patch 6.2f.025
+Problem:    When reading a file from stdin that has DOS line endings but a
+	    missing end-of-line for the last line 'fileformat' becomes "unix".
+	    (Bill McCarthy)
+Solution:   Don't add the missing line break when re-reading the text from the
+	    buffer.
+Files:	    src/fileio.c
+
+Patch 6.2f.026
+Problem:    When typing new text at the command line, old composing characters
+	    may be displayed.
+Solution:   Don't read composing characters from after the end of the
+	    text to be displayed.
+Files:	    src/ex_getln.c, src/mbyte.c, src/message.c, src/proto/mbyte.pro,
+	    src/screen.c
+
+Patch 6.2f.027
+Problem:    Compiler warnings for unsigned char pointers. (Tony Leneis)
+Solution:   Add typecasts to char pointer.
+Files:	    src/quickfix.c
+
+Patch 6.2f.028
+Problem:    GTK: When 'imactivatekey' is empty and XIM is inactive it can't be
+	    made active again.  Cursor isn't updated immediately when changing
+	    XIM activation.  Japanese XIM may hang when using 'imactivatekey'.
+	    Can't activate XIM after typing fFtT command or ":sh".
+Solution:   Properly set the flag that indicates the IM is active.  Update the
+	    cursor right away.  Do not send a key-release event.  Handle
+	    Normal mode and running an external command differently.
+	    (Yasuhiro Matsumoto)
+Files:	    src/mbyte.c
+
+Patch 6.2f.029
+Problem:    Mixing use of int and enum.
+Solution:   Adjust argument type of cs_usage_msg().  Fix wrong typedef.
+Files:	    src/if_cscope.c, src/if_cscope.h
+
+Patch 6.2f.030 (after 6.2f.028)
+Problem:    Cursor moves up when using XIM.
+Solution:   Reset im_preedit_cursor.  (Yasuhiro Matsumoto)
+Files:	    src/mbyte.c
+
+Patch 6.2f.031
+Problem:    Crash when listing a function argument in the debugger. (Ron Aaron)
+Solution:   Init the name field of an argument to NULL.
+Files:	    src/eval.c
+
+Patch 6.2f.032
+Problem:    When a write fails for a ":silent!" while inside try/endtry the
+	    BufWritePost autocommands are not triggered.
+Solution:   Check the emsg_silent flag in should_abort(). (Servatius Brandt)
+Files:	    src/ex_eval.c, src/testdir/test49.ok, src/testdir/test49.vim
+
+Patch 6.2f.033
+Problem:    Cscope: re-entrance problem for ":cscope" command.  Checking for
+	    duplicate database didn't work well for Win95.  Didn't check for
+	    duplicate databases after an empty entry.
+Solution:   Don't set postponed_split too early.  Remember first empty
+	    database entry. (Sergey Khorev)
+Files:	    src/if_cscope.c
+
+Patch 6.2f.034
+Problem:    The netbeans interface cannot be used on systems without
+	    vsnprintf(). (Tony Leneis)
+Solution:   Use EMSG(), EMSGN() and EMSG2() instead.
+Files:	    src/auto/configure, src/configure.in, src/netbeans.c
+
+Patch 6.2f.035
+Problem:    The configure check for the netbeans interface doesn't work if the
+	    socket and nsl libraries are required.
+Solution:   Check for the socket and nsl libraries before the netbeans check.
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.2f.036
+Problem:    Moving leftwards over text with an illegal UTF-8 byte moves one
+	    byte instead of one character.
+Solution:   Ignore an illegal byte after the cursor position.
+Files:	    src/mbyte.c
+
+Patch 6.2f.037
+Problem:    When receiving a Netbeans command at the hit-enter or more prompt
+	    the screen is redrawn but Vim is still waiting at the prompt.
+Solution:   Quit the prompt like a CTRL-C was typed.
+Files:	    src/netbeans.c
+
+Patch 6.2f.038
+Problem:    The dependency to run autoconf causes a patch for configure.in
+	    to run autoconf, even though the configure script was updated as
+	    well.
+Solution:   Only run autoconf with "make autoconf".
+Files:	    src/Makefile
+
+Patch 6.2f.039
+Problem:    CTRL-W K makes the new top window very high.
+Solution:   When 'equalalways' is set equalize the window heights.
+Files:	    src/window.c
+
+
+==============================================================================
+VERSION 6.3						*version-6.3*
+
+This section is about improvements made between version 6.2 and 6.3.
+
+This is mainly a bug-fix release.  There are also a few new features.
+The major number of new items is in the runtime files and translations.
+
+
+Changed							*changed-6.3*
+-------
+
+The intro message also displays a note about sponsoring Vim, mixed randomly
+with the message about helping children in Uganda.
+
+Included the translated menus, keymaps and tutors with the normal runtime
+files.  The separate "lang" archive now only contains translated messages.
+
+Made the translated menu file names a bit more consistent.  Use "latin1" for
+"iso_8859-1" and "iso_8859-15".
+
+Removed the "file_select.vim" script from the distribution.  It's not more
+useful than other scripts that can be downloaded from www.vim.org.
+
+The "runtime/doc/tags" file is now always in unix fileformat.  On MS-Windows
+it used to be dos fileformat, but ":helptags" generates a unix format file.
+
+
+Added							*added-6.3*
+-----
+
+New commands:
+	:cNfile		go to last error in previous file
+	:cpfile		idem
+	:changes	print the change list
+	:keepmarks	following command keeps marks where they are
+	:keepjumps	following command keeps jumplist and marks
+	:lockmarks	following command keeps marks where they are
+	:redrawstatus	force a redraw of the status line(s)
+
+New options:
+	'antialias'	Mac OS X: use smooth, antialiased fonts
+	'helplang'	preferred help languages
+
+Syntax files:
+	Arch inventory (Nikolai Weibull)
+	Calendar (Nikolai Weibull)
+	Ch (Wayne Cheng)
+	Controllable Regex Mutilator (Nikolai Weibull)
+	D (Jason Mills)
+	Desktop (Mikolaj Machowski)
+	Dircolors (Nikolai Weibull)
+	Elinks configuration (Nikolai Weibull)
+	FASM (Ron Aaron)
+	GrADS scripts (Stefan Fronzek)
+	Icewm menu (James Mahler)
+	LDIF (Zak Johnson)
+	Locale input, fdcc. (Dwayne Bailey)
+	Pinfo config (Nikolai Weibull)
+	Pyrex (Marco Barisione)
+	Relax NG Compact (Nikolai Weibull)
+	Slice (Morel Bodin)
+	VAX Macro Assembly (Tom Uijldert)
+	grads (Stefan Fronzek)
+	libao (Nikolai Weibull)
+	mplayer (Nikolai Weibull)
+	rst (Nikolai Weibull)
+	tcsh (Gautam Iyer)
+	yaml (Nikolai Weibull)
+
+Compiler plugins:
+	ATT dot (Marcos Macedo)
+	Apple Project Builder (Alexander von Below)
+	Intel (David Harrison)
+	bdf (Nikolai Weibull)
+	icc (Peter Puck)
+	javac (Doug Kearns)
+	neato (Marcos Macedo)
+	onsgmls (Robert B. Rowsome)
+	perl (Christian J. Robinson)
+	rst (Nikolai Weibull)
+	se (SmartEiffel) (Doug Kearns)
+	tcl (Doug Kearns)
+	xmlwf (Robert B. Rowsome)
+
+Filetype plugins:
+	Aap (Bram Moolenaar)
+	Ch (Wayne Cheng)
+	Css (Nikolai Weibull)
+	Pyrex (Marco Barisione)
+	Rst (Nikolai Weibull)
+
+Indent scripts:
+	Aap (Bram Moolenaar)
+	Ch (Wayne Cheng)
+	DocBook (Nikolai Weibull)
+	MetaPost (Eugene Minkovskii)
+	Objective-C (Kazunobu Kuriyama)
+	Pyrex (Marco Barisione)
+	Rst (Nikolai Weibull)
+	Tcsh (Gautam Iyer)
+	XFree86 configuration file (Nikolai Weibull)
+	Zsh (Nikolai Weibull)
+
+Keymaps:
+	Greek for cp1253 (Panagiotis Louridas)
+	Hungarian (Magyar) (Laszlo Zavaleta)
+	Persian-Iranian (Behnam Esfahbod)
+
+Message translations:
+	Catalan (Ernest Adrogue)
+	Russian (Vassily Ragosin)
+	Swedish (Johan Svedberg)
+
+Menu translations:
+	Catalan (Ernest Adrogue)
+	Russian (Tim Alexeevsky)
+	Swedish (Johan Svedberg)
+
+Tutor translations:
+	Catalan (Ernest Adrogue)
+	Russian in cp1251 (Alexey Froloff)
+	Slovak in cp1251 and iso8859-2 (Lubos Celko)
+	Swedish (Johan Svedberg)
+	Korean (Kee-Won Seo)
+	UTF-8 version of the Japanese tutor (Yasuhiro Matsumoto) Use this as
+		the original, create the other Japanese tutor by conversion.
+
+Included "russian.txt" help file. (Vassily Ragosin)
+
+Include Encapsulated PostScript and PDF versions of the Vim logo in the extra
+archive.
+
+The help highlighting finds the highlight groups and shows them in the color
+that is actually being used. (idea from Yakov Lerner)
+
+The big Win32 version is now compiled with Ruby interface, version 1.8.  For
+Python version 2.3 is used.  For Perl version 5.8 is used.
+
+The "ftdetect" directory is mentioned in the documentation.  The DOS install
+program creates it.
+
+
+Fixed							*fixed-6.3*
+-----
+
+Test 42 failed on MS-Windows.  Set and reset 'fileformat' and 'binary' options
+here and there.  (Walter Briscoe)
+
+The explorer plugin didn't work for double-byte 'encoding's.
+
+Use "copy /y" in Make_bc5.mak to avoid a prompt for overwriting.
+
+Patch 6.2.001
+Problem:    The ":stopinsert" command doesn't have a help tag.
+Solution:   Add the tag. (Antoine J.  Mechelynck)
+Files:	    runtime/doc/insert.txt, runtime/doc/tags
+
+Patch 6.2.002
+Problem:    When compiled with the +multi_byte feature but without +eval,
+	    displaying UTF-8 characters may cause a crash. (Karsten Hopp)
+Solution:   Also set the default for 'ambiwidth' when compiled without the
+	    +eval feature.
+Files:	    src/option.c
+
+Patch 6.2.003
+Problem:    GTK 2: double-wide characters below 256 are not displayed
+	    correctly.
+Solution:   Check the cell width for characters above 127. (Yasuhiro
+	    Matsumoto)
+Files:	    src/gui_gtk_x11.c
+
+Patch 6.2.004
+Problem:    With a line-Visual selection at the end of the file a "p" command
+	    puts the text one line upwards.
+Solution:   Detect that the last line was deleted and put forward. (Taro
+	    Muraoka)
+Files:	    src/normal.c
+
+Patch 6.2.005
+Problem:    GTK: the "Find" and "Find and Replace" tools don't work. (Aschwin
+	    Marsman)
+Solution:   Show the dialog after creating it.  (David Necas)
+Files:	    src/gui_gtk.c
+
+Patch 6.2.006
+Problem:    The Netbeans code contains an obsolete function that uses "vim61"
+	    and sets the fall-back value for $VIMRUNTIME.
+Solution:   Delete the obsolete function.
+Files:	    src/main.c, src/netbeans.c, src/proto/netbeans.pro
+
+Patch 6.2.007
+Problem:    Listing tags for Cscope doesn't always work.
+Solution:   Avoid using smgs_attr(). (Sergey Khorev)
+Files:	    src/if_cscope.c
+
+Patch 6.2.008
+Problem:    XIM with GTK 2: After backspacing preedit characters are wrong.
+Solution:   Reset the cursor position. (Yasuhiro Matsumoto)
+Files:	    src/mbyte.c
+
+Patch 6.2.009
+Problem:    Win32: The self-installing executable "Full" selection only
+	    selects some of the items to install. (Salman Mohsin)
+Solution:   Change commas to spaces in between section numbers.
+Files:	    nsis/gvim.nsi
+
+Patch 6.2.010
+Problem:    When 'virtualedit' is effective and a line starts with a
+	    multi-byte character, moving the cursor right doesn't work.
+Solution:   Obtain the right character to compute the column offset. (Taro
+	    Muraoka)
+Files:	    src/charset.c
+
+Patch 6.2.011
+Problem:    Alpha OSF1: stat() is a macro and doesn't allow an #ifdef halfway.
+	    (Moshe Kaminsky)
+Solution:   Move the #ifdef outside of stat().
+Files:	    src/os_unix.c
+
+Patch 6.2.012
+Problem:    May hang when polling for a character.
+Solution:   Break the wait loop when not waiting for a character.
+Files:	    src/os_unix.c
+
+Patch 6.2.013 (extra)
+Problem:    Win32: The registry key for uninstalling GvimExt still uses "6.1".
+Solution:   Change the version number to "6.2". (Ajit Thakkar)
+Files:	    src/GvimExt/GvimExt.reg
+
+Patch 6.2.014 (after 6.2.012)
+Problem:    XSMP doesn't work when using poll().
+Solution:   Use xsmp_idx instead of gpm_idx. (Neil Bird)
+Files:	    src/os_unix.c
+
+Patch 6.2.015
+Problem:    The +xsmp feature is never enabled.
+Solution:   Move the #define for USE_XSMP to below where WANT_X11 is defined.
+	    (Alexey Froloff)
+Files:	    src/feature.h
+
+Patch 6.2.016
+Problem:    Using ":scscope find" with 'cscopequickfix' does not always split
+	    the window. (Gary Johnson)
+	    Win32: ":cscope add" could make the script that contains it
+	    read-only until the corresponding ":cscope kill".
+	    Errors during ":cscope add" may not be handled properly.
+Solution:   When using the quickfix window may need to split the window.
+	    Avoid file handle inheritance for the script.
+	    Check for a failed connection and/or process.  (Sergey Khorev)
+Files:	    src/ex_cmds2.c, src/if_cscope.c
+
+Patch 6.2.017
+Problem:    Test11 sometimes prompts the user, because a file would have been
+	    changed outside of Vim. (Antonio Colombo)
+Solution:   Add a FileChangedShell autocommand to avoid the prompt.
+Files:	    src/testdir/test11.in
+
+Patch 6.2.018
+Problem:    When using the XSMP protocol and reading from stdin Vim may wait
+	    for a key to be pressed.
+Solution:   Avoid that RealWaitForChar() is used recursively.
+Files:	    src/os_unix.c
+
+Patch 6.2.019 (lang)
+Problem:    Loading the Portuguese menu causes an error message.
+Solution:   Join two lines.  (Jose Pedro Oliveira, José de Paula)
+Files:	    runtime/lang/menu_pt_br.vim
+
+Patch 6.2.020
+Problem:    The "Syntax/Set syntax only" menu item causes an error message.
+	    (Oyvind Holm)
+Solution:   Set the script-local variable in a function. (Benji Fisher)
+Files:	    runtime/synmenu.vim
+
+Patch 6.2.021
+Problem:    The user manual section on exceptions contains small mistakes.
+Solution:   Give a good example of an error that could be missed and other
+	    improvements. (Servatius Brandt)
+Files:	    runtime/doc/usr_41.txt
+
+Patch 6.2.022 (extra)
+Problem:    Win32: After deleting a menu item it still appears in a tear-off
+	    window.
+Solution:   Set the mode to zero for the deleted item. (Yasuhiro Matsumoto)
+Files:	    src/gui_w32.c
+
+Patch 6.2.023 (extra)
+Problem:    Win32: Make_ivc.mak does not clean everything.
+Solution:   Delete more files in the clean rule. (Walter Briscoe)
+Files:	    src/Make_ivc.mak
+
+Patch 6.2.024 (extra)
+Problem:    Win32: Compiler warnings for typecasts.
+Solution:   Use DWORD instead of WORD. (Walter Briscoe)
+Files:	    src/gui_w32.c
+
+Patch 6.2.025
+Problem:    Missing prototype for sigaltstack().
+Solution:   Add the prototype when it is not found in a header file.
+Files:	    src/os_unix.c
+
+Patch 6.2.026
+Problem:    Warning for utimes() argument.
+Solution:   Add a typecast.
+Files:	    src/fileio.c
+
+Patch 6.2.027
+Problem:    Warning for uninitialized variable.
+Solution:   Set mb_l to one when not using multi-byte characters.
+Files:	    src/message.c
+
+Patch 6.2.028
+Problem:    Cscope connection may kill Vim process and others.
+Solution:   Check for pid being larger than one. (Khorev Sergey)
+Files:	    src/if_cscope.c
+
+Patch 6.2.029
+Problem:    When using the remote server functionality Vim may leak memory.
+	    (Srikanth Sankaran)
+Solution:   Free the result of XListProperties().
+Files:	    src/if_xcmdsrv.c
+
+Patch 6.2.030
+Problem:    Mac: Warning for not being able to use precompiled header files.
+Solution:   Don't redefine select.  Use -no-cpp-precomp for compiling, so that
+	    function prototypes are still found.
+Files:	    src/os_unix.c, src/osdef.sh
+
+Patch 6.2.031
+Problem:    The langmenu entry in the options window doesn't work. (Rodolfo
+	    Lima)
+	    With GTK 1 the ":options" command causes an error message.
+	    (Michael Naumann)
+Solution:   Change "lmenu" to "langmenu".  Only display the 'tbis' option for
+	    GTK 2.
+Files:	    runtime/optwin.vim
+
+Patch 6.2.032
+Problem:    The lpc filetype is never recognized. (Shizhu Pan)
+Solution:   Check for g:lpc_syntax_for_c instead of the local variable
+	    lpc_syntax_for_c. (Benji Fisher)
+Files:	    runtime/filetype.vim
+
+Patch 6.2.033 (extra)
+Problem:    Mac: Various compiler warnings.
+Solution:   Don't include Classic-only headers in Unix version.
+	    Remove references to several unused variables. (Ben Fowler)
+	    Fix double definition of DEFAULT_TERM.
+	    Use int instead of unsigned short for pixel values, so that the
+	    negative error values are recognized.
+Files:	    src/gui_mac.c, src/term.c
+
+Patch 6.2.034
+Problem:    Mac: Compiler warning for redefining DEFAULT_TERM.
+Solution:   Fix double definition of DEFAULT_TERM.
+Files:	    src/term.c
+
+Patch 6.2.035
+Problem:    Mac: Compiler warnings in Python interface.
+Solution:   Make a difference between pure Mac and Unix-Mac. (Peter Cucka)
+Files:	    src/if_python.c
+
+Patch 6.2.036 (extra)
+Problem:    Mac Unix version: If foo is a directory, then ":e f<Tab>" should
+	    expand to ":e foo/" instead of ":e foo" .  (Vadim Zeitlin)
+Solution:   Define DONT_ADD_PATHSEP_TO_DIR only for pure Mac. (Benji Fisher)
+Files:	    src/os_mac.h
+
+Patch 6.2.037
+Problem:    Win32: converting an encoding name to a codepage could result in
+	    an arbitrary number.
+Solution:   make encname2codepage() return zero if the encoding name doesn't
+	    contain a codepage number.
+Files:	    src/mbyte.c
+
+Patch 6.2.038 (extra)
+Problem:    Warning messages when using the MingW compiler. (Bill McCarthy)
+	    Can't compile console version without +mouse feature.
+Solution:   Initialize variables, add parenthesis.
+	    Add an #ifdef around g_nMouseClick. (Ajit Thakkar)
+Files:	    src/eval.c, src/os_win32.c, src/gui_w32.c, src/dosinst.c
+
+Patch 6.2.039 (extra)
+Problem:    More warning messages when using the MingW compiler.
+Solution:   Initialize variables. (Bill McCarthy)
+Files:	    src/os_mswin.c
+
+Patch 6.2.040
+Problem:    FreeBSD: Crash while starting up when compiled with +xsmp feature.
+Solution:   Pass a non-NULL argument to IceAddConnectionWatch().
+Files:	    src/os_unix.c
+
+Patch 6.2.041 (extra, after 6.2.033)
+Problem:    Mac: Compiler warnings for conversion types, missing prototype,
+	    missing return type.
+Solution:   Change sscanf "%hd" to "%d", the argument is an int now.  Add
+	    gui_mch_init_check() prototype.  Add "int" to termlib functions.
+Files:	    src/gui_mac.c, src/proto/gui_mac.pro, src/termlib.c.
+
+Patch 6.2.042 (extra)
+Problem:    Cygwin: gcc 3.2 has an optimizer problem, sometimes causing a
+	    crash.
+Solution:   Add -fno-strength-reduce to the compiler arguments. (Dan Sharp)
+Files:	    src/Make_cyg.mak
+
+Patch 6.2.043
+Problem:    Compiling with both netbeans and workshop doesn't work.
+Solution:   Move the shellRectangle() function to gui_x11.c. (Gordon Prieur)
+Files:	    src/gui_x11.c, src/integration.c, src/netbeans.c,
+	    src/proto/netbeans.pro
+
+Patch 6.2.044
+Problem:    ":au filetypedetect" gives an error for a non-existing event name,
+	    but it's actually a non-existing group name. (Antoine Mechelynck)
+Solution:   Make the error message clearer.
+Files:	    src/fileio.c
+
+Patch 6.2.045
+Problem:    Obtaining the '( mark changes the '' mark. (Gary Holloway)
+Solution:   Don't set the '' mark when searching for the start/end of the
+	    current sentence/paragraph.
+Files:	    src/mark.c
+
+Patch 6.2.046
+Problem:    When evaluating an argument of a function throws an exception the
+	    function is still called. (Hari Krishna Dara)
+Solution:   Don't call the function when an exception was thrown.
+Files:	    src/eval.c
+
+Patch 6.2.047 (extra)
+Problem:    Compiler warnings when using MingW. (Bill McCarthy)
+Solution:   Give the s_dwLastClickTime variable a type.  Initialize dwEndTime.
+Files:	    src/os_win32.c
+
+Patch 6.2.048
+Problem:    The Python interface doesn't compile with Python 2.3 when
+	    dynamically loaded.
+Solution:   Use dll_PyObject_Malloc and dll_PyObject_Free. (Paul Moore)
+Files:	    src/if_python.c
+
+Patch 6.2.049
+Problem:    Using a "-range=" argument with ":command" doesn't work and
+	    doesn't generate an error message.
+Solution:   Generate an error message.
+Files:	    src/ex_docmd.c
+
+Patch 6.2.050
+Problem:    Test 32 didn't work on MS-Windows.
+Solution:   Write the temp file in Unix fileformat. (Walter Briscoe)
+Files:	    src/testdir/test32.in
+
+Patch 6.2.051
+Problem:    When using "\=submatch(0)" in a ":s" command, line breaks become
+	    NUL characters.
+Solution:   Change NL to CR characters, so that they become line breaks.
+Files:	    src/regexp.c
+
+Patch 6.2.052
+Problem:    A few messages are not translated.
+Solution:   Add _() to the messages. (Muraoka Taro)
+Files:	    src/ex_cmds.c
+
+Patch 6.2.053
+Problem:    Prototype for bzero() doesn't match most systems.
+Solution:   Use "void *" instead of "char *" and "size_t" intead of "int".
+Files:	    src/osdef1.h.in
+
+Patch 6.2.054
+Problem:    A double-byte character with a second byte that is a backslash
+	    causes problems inside a string.
+Solution:   Skip over multi-byte characters in a string properly. (Yasuhiro
+	    Matsumoto)
+Files:	    src/eval.c
+
+Patch 6.2.055
+Problem:    Using col('.') from CTRL-O in Insert mode does not return the
+	    correct value for multi-byte characters.
+Solution:   Correct the cursor position when it is necessary, move to the
+	    first byte of a multi-byte character. (Yasuhiro Matsumoto)
+Files:	    src/edit.c
+
+Patch 6.2.056 (extra)
+Problem:    Building with Sniff++ doesn't work.
+Solution:   Use the multi-threaded libc when needed. (Holger Ditting)
+Files:	    src/Make_mvc.mak
+
+Patch 6.2.057 (extra)
+Problem:    Mac: With -DMACOS_X putenv() is defined twice, it is in a system
+	    library.  Get a warning for redefining OK.  Unused variables in
+	    os_mac.c
+Solution:   Define HAVE_PUTENV.  Undefine OK after including curses.h.
+	    Remove declarations for unused variables.
+Files:	    src/os_mac.c, src/os_mac.h, src/vim.h
+
+Patch 6.2.058
+Problem:    When 'autochdir' is set ":bnext" to a buffer without a name causes
+	    a crash.
+Solution:   Don't call vim_chdirfile() when the file name is NULL. (Taro
+	    Muraoka)
+Files:	    src/buffer.c
+
+Patch 6.2.059
+Problem:    When 'scrolloff' is a large number and listing completion results
+	    on the command line, then executing a command that jumps close to
+	    where the cursor was before, part of the screen is not updated.
+	    (Yakov Lerner)
+Solution:   Don't skip redrawing part of the window when it was scrolled.
+Files:	    src/screen.c
+
+Patch 6.2.060 (extra)
+Problem:    Win32: When 'encoding' is set to "iso-8859-7" copy/paste to/from
+	    the clipboard gives a lalloc(0) error. (Kriton Kyrimis)
+Solution:   When the string length is zero allocate one byte.  Also fix that
+	    when the length of the Unicode text is zero (conversion from
+	    'encoding' to UCS-2 was not possible) the normal text is used.
+Files:	    src/os_mswin.c
+
+Patch 6.2.061
+Problem:    GUI: Using the left mouse button with the shift key should work
+	    like "*" but it scrolls instead. (Martin Beller)
+Solution:   Don't recognize an rxvt scroll wheel event when using the GUI.
+Files:	    src/term.c
+
+Patch 6.2.062
+Problem:    When one buffer uses a syntax with "containedin" and another
+	    buffer does not, redrawing depends on what the current buffer is.
+	    (Brett Pershing Stahlman)
+Solution:   Use "syn_buf" instead of "curbuf" to get the b_syn_containedin
+	    flag.
+Files:	    src/syntax.c
+
+Patch 6.2.063
+Problem:    When using custom completion end up with no matches.
+Solution:   Make cmd_numfiles and cmd_files local to completion to avoid that
+	    they are overwritten when ExpandOne() is called recursively by
+	    f_glob().
+Files:	    src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/proto/ex_getln.pro,
+	    src/misc1.c, src/structs.h, src/tag.c
+
+Patch 6.2.064
+Problem:    resolve() only handles one symbolic link, need to repeat it to
+	    resolve all of them.  Then need to simplify the file name.
+Solution:   Make resolve() resolve all symbolic links and simplify the result.
+	    Add simplify() to just simplify a file name.  Fix that test49
+	    doesn't work if /tmp is a symbolic link.  (Servatius Brandt)
+Files:	    runtime/doc/eval.txt, src/eval.c, src/tag.c,
+	    src/testdir/test49.vim
+
+Patch 6.2.065
+Problem:    ":windo 123" only updates other windows when entering them.
+	    (Walter Briscoe)
+Solution:   Update the topline before going to the next window.
+Files:	    src/ex_cmds2.c
+
+Patch 6.2.066 (extra)
+Problem:    Ruby interface doesn't work with Ruby 1.8.0.
+Solution:   Change "defout" to "stdout". (Aron Grifis)
+	    Change dynamic loading. (Taro Muraoka)
+Files:	    src/if_ruby.c, src/Make_mvc.mak
+
+Patch 6.2.067
+Problem:    When searching for a string that starts with a composing character
+	    the command line isn't drawn properly.
+Solution:   Don't count the space to draw the composing character on and
+	    adjust the cursor column after drawing the string.
+Files:	    src/message.c
+
+Patch 6.2.068
+Problem:    Events for the netbeans interface that include a file name with
+	    special characters don't work properly.
+Solution:   Use nb_quote() on the file name. (Sergey Khorev)
+Files:	    src/netbeans.c
+
+Patch 6.2.069 (after 6.2.064)
+Problem:    Unused variables "limit" and "new_st" and unused label "fail" in
+	    some situation. (Bill McCarthy)
+Solution:   Put the declarations inside an #ifdef. (Servatius Brandt)
+Files:	    src/eval.c, src/tag.c
+
+Patch 6.2.070 (after 6.2.069)
+Problem:    Still unused variable "new_st". (Bill McCarthy)
+Solution:   Move the declaration to the right block this time.
+Files:	    src/tag.c
+
+Patch 6.2.071
+Problem:    'statusline' can only contain 50 % items. (Antony Scriven)
+Solution:   Allow 80 items and mention it in the docs.
+Files:	    runtime/doc/option.txt, src/vim.h
+
+Patch 6.2.072
+Problem:    When using expression folding, foldexpr() mostly returns -1 for
+	    the previous line, which makes it difficult to write a fold
+	    expression.
+Solution:   Make the level of the previous line available while still looking
+	    for the end of a fold.
+Files:	    src/fold.c
+
+Patch 6.2.073
+Problem:    When adding detection of a specific filetype for a plugin you need
+	    to edit "filetype.vim".
+Solution:   Source files from the "ftdetect" directory, so that a filetype
+	    detection plugin only needs to be dropped in a directory.
+Files:	    runtime/doc/filetype.txt, runtime/doc/usr_05.txt,
+	    runtime/doc/usr_41.txt, runtime/filetype.vim
+
+Patch 6.2.074
+Problem:    Warnings when compiling the Python interface. (Ajit Thakkar)
+Solution:   Use ANSI function declarations.
+Files:	    src/if_python.c
+
+Patch 6.2.075
+Problem:    When the temp file for writing viminfo can't be used "NULL"
+	    appears in the error message. (Ben Lavender)
+Solution:   Print the original file name when there is no temp file name.
+Files:	    src/ex_cmds.c
+
+Patch 6.2.076
+Problem:    The tags listed for cscope are in the wrong order. (Johannes
+	    Stezenbach)
+Solution:   Remove the reordering of tags for the current file. (Sergey
+	    Khorev)
+Files:	    src/if_cscope.c
+
+Patch 6.2.077
+Problem:    When a user function specifies custom completion, the function
+	    gets a zero argument instead of an empty string when there is no
+	    word before the cursor. (Preben Guldberg)
+Solution:   Don't convert an empty string to a zero.
+Files:	    src/eval.c
+
+Patch 6.2.078
+Problem:    "make test" doesn't work if Vim wasn't compiled yet. (Ed Avis)
+Solution:   Build Vim before running the tests.
+Files:	    src/Makefile
+
+Patch 6.2.079
+Problem:    ":w ++enc=utf-8 !cmd" doesn't work.
+Solution:   Check for the "++" argument before the "!".
+Files:	    src/ex_docmd.c
+
+Patch 6.2.080
+Problem:    When 't_ti' is not empty but doesn't swap screens, using "ZZ" in
+	    an unmodified file doesn't clear the last line.
+Solution:   Call msg_clr_eos() when needed. (Michael Schroeder)
+Files:	    src/os_unix.c
+
+Patch 6.2.081
+Problem:    Problem when using a long multibyte string for the statusline.
+Solution:   Use the right pointer to get the cell size. (Taro Muraoka)
+Files:	    src/buffer.c
+
+Patch 6.2.082
+Problem:    Can't compile with Perl 5.8.1.
+Solution:   Rename "e_number" to "e_number_exp". (Sascha Blank)
+Files:	    src/digraph.c, src/globals.h
+
+Patch 6.2.083
+Problem:    When a compiler uses ^^^^ to mark a word the information is not
+	    visible in the quickfix window. (Srikanth Sankaran)
+Solution:   Don't remove the indent for a line that is not recognized as an
+	    error message.
+Files:	    src/quickfix.c
+
+Patch 6.2.084
+Problem:    "g_" in Visual mode always goes to the character after the line.
+	    (Jean-Rene David)
+Solution:   Ignore the NUL at the end of the line.
+Files:	    src/normal.c
+
+Patch 6.2.085
+Problem:    ":verbose set ts" doesn't say an option was set with a "-c" or
+	    "--cmd" argument.
+Solution:   Remember the option was set from a Vim argument.
+Files:	    src/main.c, src/ex_cmds2.c, src/vim.h
+
+Patch 6.2.086
+Problem:    "{" and "}" stop inside a closed fold.
+Solution:   Only stop once inside a closed fold. (Stephen Riehm)
+Files:	    src/search.c
+
+Patch 6.2.087
+Problem:    CTRL-^ doesn't use the 'confirm' option.  Same problem with
+	    ":bnext". (Yakov Lerner)
+Solution:   Put up a dialog for a changed file when 'confirm' is set in more
+	    situations.
+Files:	    src/buffer.c, src/ex_cmds.c
+
+Patch 6.2.088
+Problem:    When 'sidescrolloff' is set 'showmatch' doesn't work correctly if
+	    the match is less than 'sidescrolloff' off from the side of the
+	    window.  (Roland Stahn)
+Solution:   Set 'sidescrolloff' to zero while displaying the match.
+Files:	    src/search.c
+
+Patch 6.2.089
+Problem:    ":set isk+=" adds a comma. (Mark Waggoner)
+Solution:   Don't add a comma when the added value is empty.
+Files:	    src/option.c
+
+Patch 6.2.090 (extra)
+Problem:    Win32: MingW compiler complains about #pragmas. (Bill McCarthy)
+Solution:   Put an #ifdef around the #pragmas.
+Files:	    src/os_win32.c
+
+Patch 6.2.091
+Problem:    When an autocommand is triggered when a file is dropped on Vim and
+	    it produces output, messages from a following command may be
+	    scrolled unexpectedly. (David Rennalls)
+Solution:   Save and restore msg_scroll in handle_drop().
+Files:	    src/ex_docmd.c
+
+Patch 6.2.092
+Problem:    Invalid items appear in the help file tags. (Antonio Colombo)
+Solution:   Only accept tags with white space before the first "*".
+Files:	    runtime/doc/doctags.c, src/ex_cmds.c
+
+Patch 6.2.093
+Problem:    ":nnoremenu" also defines menu for Visual mode. (Klaus Bosau)
+Solution:   Check the second command character for an "o", not the third.
+Files:	    src/menu.c
+
+Patch 6.2.094
+Problem:    Can't compile with GTK and tiny features.
+Solution:   Include handle_drop() and vim_chdirfile() when FEAT_DND is defined.
+	    Do not try to split the window.
+Files:	    src/ex_docmd.c, src/misc2.c
+
+Patch 6.2.095
+Problem:    The message "Cannot go to buffer x" is confusing for ":buf 6".
+	    (Frans Englich)
+Solution:   Make it "Buffer x does not exist".
+Files:	    src/buffer.c
+
+Patch 6.2.096
+Problem:    Win32: ":let @* = ''" put a newline on the clipboard. (Klaus
+	    Bosau)
+Solution:   Put zero bytes on the clibpoard for an empty string.
+Files:	    src/ops.c
+
+Patch 6.2.097
+Problem:    Setting or resetting 'insertmode' in a BufEnter autocommand
+	    doesn't always have immediate effect. (Nagger)
+Solution:   When 'insertmode' is set, set need_start_insertmode, when it's
+	    reset set stop_insert_mode.
+Files:	    src/option.c
+
+Patch 6.2.098 (after 6.2.097)
+Problem:    Can't build Vim with tiny features. (Christian J. Robinson)
+Solution:   Declare stop_insert_mode always.
+Files:	    src/edit.c, src/globals.h
+
+Patch 6.2.099 (extra)
+Problem:    Test 49 fails. (Mikolaj Machowski)
+Solution:   The Polish translation must not change "E116" to "R116".
+Files:	    src/po/pl.po
+
+Patch 6.2.100
+Problem:    "make proto" fails when compiled with the Perl interface.
+Solution:   Remove "-fno.*" from PERL_CFLAGS, cproto sees it as its option.
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.2.101
+Problem:    When using syntax folding, opening a file slows down a lot when
+	    it's size increases by only 20%. (Gary Johnson)
+Solution:   The array with cached syntax states is leaking entries.  After
+	    cleaning up the list obtain the current entry again.
+Files:	    src/syntax.c
+
+Patch 6.2.102
+Problem:    The macros equal() and CR conflict with a Carbon header file.
+Solution:   Rename equal() to equalpos().  Rename CR to CAR.
+	    Do this in the non-extra files only.
+Files:	    src/ascii.h, src/buffer.c, src/charset.c, src/edit.c, src/eval.c,
+	    src/ex_cmds.c, src/ex_cmds2.c, src/ex_getln.c, src/fileio.c,
+	    src/getchar.c, src/gui.c, src/gui_athena.c, src/gui_gtk_x11.c,
+	    src/gui_motif.c, src/macros.h, src/mark.c, src/message.c,
+	    src/misc1.c, src/misc2.c, src/normal.c, src/ops.c, src/os_unix.c,
+	    src/regexp.c, src/search.c, src/ui.c, src/workshop.c
+
+Patch 6.2.103 (extra)
+Problem:    The macros equal() and CR conflict with a Carbon header file.
+Solution:   Rename equal() to equalpos().  Rename CR to CAR.
+	    Do this in the extra files only.
+Files:	    src/gui_photon.c, src/gui_w48.c
+
+Patch 6.2.104
+Problem:    Unmatched braces in the table with options.
+Solution:   Move the "}," outside of the #ifdef. (Yakov Lerner)
+Files:	    src/option.c
+
+Patch 6.2.105
+Problem:    When the cursor is past the end of the line when calling
+	    get_c_indent() a crash might occur.
+Solution:   Don't look past the end of the line. (NJ Verenini)
+Files:	    src/misc1.c
+
+Patch 6.2.106
+Problem:    Tag searching gets stuck on a very long line in the tags file.
+Solution:   When skipping back to search the first matching tag remember the
+	    offset where searching started looking for a line break.
+Files:	    src/tag.c
+
+Patch 6.2.107 (extra)
+Problem:    The NetBeans interface cannot be used on Win32.
+Solution:   Add support for the NetBeans for Win32.  Add support for reading
+	    XPM files on Win32.  Also fixes that a sign icon with a space in
+	    the file name did not work through the NetBeans interface.
+	    (Sergey Khorev)
+	    Also: avoid repeating error messages when the connection is lost.
+Files:	    Makefile, runtime/doc/netbeans.txt, src/Make_bc5.mak,
+	    src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak,
+	    src/bigvim.bat, src/feature.h, src/gui_beval.c, src/gui_beval.h,
+	    src/gui_w32.c, src/gui_w48.c, src/menu.c, src/nbdebug.c,
+	    src/nbdebug.h, src/netbeans.c, src/os_mswin.c, src/os_win32.h,
+	    src/proto/gui_beval.pro, src/proto/gui_w32.pro,
+	    src/proto/netbeans.pro, src/proto.h, src/version.c, src/vim.h,
+	    src/xpm_w32.c, src/xpm_w32.h
+
+Patch 6.2.108
+Problem:    Crash when giving a message about ignoring case in a tag. (Manfred
+	    Kuehn)
+Solution:   Use a longer buffer for the message.
+Files:	    src/tag.c
+
+Patch 6.2.109
+Problem:    Compiler warnings with various Amiga compilers.
+Solution:   Add typecast, prototypes, et al. that are also useful for other
+	    systems.  (Flavio Stanchina)
+Files:	    src/eval.c, src/ops.c
+
+Patch 6.2.110
+Problem:    When $LANG includes the encoding, a menu without an encoding name
+	    is not found.
+Solution:   Also look for a menu file without any encoding.
+Files:	    runtime/menu.vim
+
+Patch 6.2.111
+Problem:    Encoding "cp1251" is not recognized.
+Solution:   Add "cp1251" to the table of encocings. (Alexey Froloff)
+Files:	    src/mbyte.c
+
+Patch 6.2.112
+Problem:    After applying patches test32 fails. (Antonio Colombo)
+Solution:   Have "make clean" in the testdir delete *.rej and *.orig files.
+	    Use this when doing "make clean" in the src directory.
+Files:	    src/Makefile, src/testdir/Makefile
+
+Patch 6.2.113
+Problem:    Using ":startinsert" after "$" works like "a" instead of "i".
+	    (Ajit Thakkar)
+Solution:   Reset "w_curswant" for ":startinsert" and reset o_eol in edit().
+Files:	    src/edit.c, src/ex_docmd.c
+
+Patch 6.2.114
+Problem:    When stdout is piped through "tee", the size of the screen may not
+	    be correct.
+Solution:   Use stdin instead of stdout for ioctl() when stdin is a tty and
+	    stdout isn't.
+Files:	    src/os_unix.c
+
+Patch 6.2.115 (extra)
+Problem:    Compiler warnings with various Amiga compilers.
+Solution:   Add typecast, prototypes, et al.  Those changes that are
+	    Amiga-specific. (Flavio Stanchina)
+Files:	    src/fileio.c, src/memfile.c, src/os_amiga.c, src/os_amiga.h,
+	    src/vim.h
+
+Patch 6.2.116 (extra)
+Problem:    German keyboard with Numlock set different from system startup
+	    causes problems.
+Solution:   Ignore keys with code 0xff. (Helmut Stiegler)
+Files:	    src/gui_w48.c
+
+Patch 6.2.117
+Problem:    Breakpoints in loops of sourced files and functions are not
+	    detected. (Hari Krishna Dara)
+Solution:   Check for breakpoints when using lines that were previously read.
+	    (Servatius Brandt)
+Files:	    src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/proto/eval.pro,
+	    src/proto/ex_cmds2.pro
+
+Patch 6.2.118 (extra)
+Problem:    Mac: Compiling is done in a non-standard way.
+Solution:   Use the Unix method for Mac OS X, with autoconf.  Add "CARBONGUI"
+	    to Makefile and configure. (Eric Kow)
+	    Move a few prototypes from os_mac.pro to gui_mac.pro.
+Files:	    src/Makefile, src/auto/configure, src/configure.in,
+	    src/config.mk.in, src/gui_mac.c, src/os_mac.h, src/os_macosx.c,
+	    src/proto/gui_mac.pro, src/proto/os_mac.pro,
+	    src/infplist.xml, src/vim.h
+
+Patch 6.2.119 (after 6.2.107)
+Problem:    When packing the MS-Windows archives a few files are missing.
+	    (Guopeng Wen)
+Solution:   Add gui_beval.* to the list of generic source files.
+Files:	    Makefile
+
+Patch 6.2.120
+Problem:    Win32 GUI: The console dialogs are not supported on MS-Windows,
+	    disabling the 'c' flag of 'guioptions'. (Servatius Brandt)
+Solution:   Define FEAT_CON_DIALOG also for GUI-only builds.
+Files:	    src/feature.h
+
+Patch 6.2.121 (after 6.2.118)
+Problem:    Not all make programs support "+=". (Charles Campbell)
+Solution:   Use a normal assignment.
+Files:	    src/Makefile
+
+Patch 6.2.122 (after 6.2.119)
+Problem:    Not all shells can expand [^~].  File missing.  (Guopeng Wen)
+Solution:   Use a simpler pattern.  Add the Aap recipe for the maze program
+	    and a clean version of the source code.
+Files:	    Makefile, runtime/macros/maze/Makefile,
+	    runtime/macros/maze/README.txt, runtime/macros/maze/main.aap,
+	    runtime/macros/maze/mazeclean.c
+
+Patch 6.2.123 (after 6.2.118)
+Problem:    Running configure fails. (Tony Leneis)
+Solution:   Change "==" to "=" for a test.
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.2.124 (after 6.2.121)(extra)
+Problem:    Mac: Recursive use of M4FLAGS causes problems.  When running Vim
+	    directly it can't find the runtime files.  (Emily Jackson)
+	    Using GNU constructs causes warnings with other make programs.
+	    (Ronald Schild)
+Solution:   Use another name for the M4FLAGS variable.
+	    Don't remove "Vim.app" from the path.
+	    Update the explanation for compiling on the Mac. (Eric Kow)
+	    Don't use $(shell ) and $(addprefix ).
+Files:	    src/INSTALLmac.txt, src/Makefile, src/misc1.c
+
+Patch 6.2.125 (after 6.2.107)
+Problem:    The "winsock2.h" file isn't always available.
+Solution:   Don't include this header file.
+Files:	    src/netbeans.c
+
+Patch 6.2.126
+Problem:    Typing CTRL-C at a confirm() prompt doesn't throw an exception.
+Solution:   Reset "mapped_ctrl_c" in get_keystroke(), so that "got_int" is set
+	    in _OnChar().
+Files:	    src/misc1.c
+
+Patch 6.2.127 (extra)
+Problem:    Win32 console: Typing CTRL-C doesn't throw an exception.
+Solution:   Set got_int immediately when CTRL-C is typed, don't wait for
+	    mch_breakcheck() being called.
+Files:	    src/os_win32.c
+
+Patch 6.2.128 (after 6.2.118)
+Problem:    src/auto/configure is not consistent with src/configure.in.
+Solution:   Use the newly generated configure script.
+Files:	    src/auto/configure
+
+Patch 6.2.129
+Problem:    When 'number' is set 'wrapmargin' does not work Vi-compatible.
+	    (Yasuhiro Matsumoto)
+Solution:   Reduce the textwidth when 'number' is set.  Also for 'foldcolumn'
+	    and similar things.
+Files:	    src/edit.c
+
+Patch 6.2.130 (extra)
+Problem:    Win32 console: When 'restorescreen' is not set exiting Vim causes
+	    the screen to be cleared. (Michael A. Mangino)
+Solution:   Don't clear the screen when exiting and 'restorescreen' isn't set.
+Files:	    src/os_win32.c
+
+Patch 6.2.131 (extra)
+Problem:    Win32: Font handles are leaked.
+Solution:   Free italic, bold and bold-italic handles before overwriting them.
+	    (Michael Wookey)
+Files:	    src/gui_w48.c
+
+Patch 6.2.132 (extra)
+Problem:    Win32: console version doesn't work on latest Windows Server 2003.
+Solution:   Copy 12000 instead of 15000 cells at a time to avoid running out
+	    of memory.
+Files:	    src/os_win32.c
+
+Patch 6.2.133
+Problem:    When starting the GUI a bogus error message about 'imactivatekey'
+	    may be given.
+Solution:   Only check the value of 'imactivatekey' when the GUI is running.
+Files:	    src/gui.c, src/option.c
+
+Patch 6.2.134 (extra)
+Problem:    Win32: When scrolling parts of the window are redrawn when this
+	    isn't necessary.
+Solution:   Only invalidate parts of the window when they are obscured by
+	    other windows. (Michael Wookey)
+Files:	    src/gui_w48.c
+
+Patch 6.2.135
+Problem:    An item <> in the ":command" argument is interpreted as <args>.
+Solution:   Avoid that <> is recognized as <args>.
+Files:	    src/ex_docmd.c
+
+Patch 6.2.136
+Problem:    ":e ++enc=latin1 newfile" doesn't set 'fenc' when the file doesn't
+	    exist.  (Miroslaw Dobrzanski-Neumann)
+Solution:   Set 'fileencoding' to the specified encoding when editing a file
+	    that does not exist.
+Files:	    src/fileio.c
+
+Patch 6.2.137
+Problem:    "d:cmd<CR>" cannot be repeated with ".".  Breaks repeating "d%"
+	    when using the matchit plugin.
+Solution:   Store the command to be repeated.  This is restricted to
+	    single-line commands.
+Files:	    src/ex_docmd.c, src/globals.h, src/normal.c, src/vim.h
+
+Patch 6.2.138 (extra)
+Problem:    Compilation problem on VMS with dynamic buffer on the stack.
+Solution:   Read one byte less than the size of the buffer, so that we can
+	    check for the string length without an extra buffer.
+Files:	    src/os_vms.c
+
+Patch 6.2.139
+Problem:    Code is repeated in the two Perl files.
+Solution:   Move common code from if_perl.xs and if_perlsfio.c to vim.h.
+	    Also fix a problem with generating prototypes.
+Files:	    src/if_perl.xs, src/if_perlsfio.c, src/vim.h
+
+Patch 6.2.140 (after 6.2.121)
+Problem:    Mac: Compiling with Python and Perl doesn't work.
+Solution:   Adjust the configure check for Python to use "-framework Python"
+	    for Python 2.3 on Mac OS/X.
+	    Move "-ldl" after "DynaLoader.a" in the link command.
+	    Change "perllibs" to "PERL_LIBS".
+Files:	    src/auto/configure, src/configure.in, src/config.mk.in
+
+Patch 6.2.141 (extra)
+Problem:    Mac: The b_FSSpec field is sometimes unused.
+Solution:   Change the #ifdef to FEAT_CW_EDITOR and defined it in feature.h
+Files:	    src/fileio.c, src/gui_mac.c, src/structs.h, src/feature.h
+
+Patch 6.2.142 (after 6.2.124)
+Problem:    Mac: building without GUI through configure doesn't work.
+	    When the system is slow, unpacking the resource file takes too
+	    long.
+Solution:   Don't always define FEAT_GUI_MAC when MACOS is defined, define it
+	    in the Makefile.
+	    Add a configure option to skip Darwin detection.
+	    Use a Python script to unpack the resources to avoid a race
+	    condition. (Taro Muraoka)
+Files:	    Makefile, src/Makefile, src/auto/configure, src/configure.in,
+	    src/dehqx.py, src/vim.h
+
+Patch 6.2.143
+Problem:    Using "K" on Visually selected text doesn't work if it ends in
+	    a multi-byte character.
+Solution:   Include all the bytes of the last character. (Taro Muraoka)
+Files:	    src/normal.c
+
+Patch 6.2.144
+Problem:    When "g:html_use_css" is set the HTML header generated by the
+	    2html script is wrong.
+Solution:   Add the header after adding HREF for links.
+	    Also use ":normal!" instead of ":normal" to avoid mappings
+	    getting in the way.
+Files:	    runtime/syntax/2html.vim
+
+Patch 6.2.145 (after 6.2.139)
+Problem:    Undefining "bool" doesn't work for older systems. (Wojtek Pilorz)
+Solution:   Only undefine "bool" on Mac OS.
+Files:	    src/vim.h
+
+Patch 6.2.146
+Problem:    On some systems the prototype for iconv() is wrong, causing a
+	    warning message.
+Solution:   Use a cast (void *) to avoid the warning. (Charles Campbell)
+Files:	    src/fileio.c, src/mbyte.c
+
+Patch 6.2.147
+Problem:    ":s/pat/\=col('.')" always replaces with "1".
+Solution:   Set the cursor to the start of the match before substituting.
+	    (Helmut Stiegler)
+Files:	    src/ex_cmds.c
+
+Patch 6.2.148
+Problem:    Can't break an Insert into several undoable parts.
+Solution:   Add the CTRL-G u command.
+Files:	    runtime/doc/insert.txt, src/edit.c
+
+Patch 6.2.149
+Problem:    When the cursor is on a line past 21,474,748 the indicated
+	    percentage of the position is invalid.  With that many lines
+	    "100%" causes a negative cursor line number, resulting in a crash.
+	    (Daniel Goujot)
+Solution:   Divide by 100 instead of multiplying.  Avoid overflow when
+	    computing the line number for "100%".
+Files:	    src/buffer.c, src/ex_cmds2.c, src/normal.c
+
+Patch 6.2.150
+Problem:    When doing "vim - < file" lines are broken at NUL chars.
+	    (Daniel Goujot)
+Solution:   Change NL characters back to NUL when reading from the temp
+	    buffer.
+Files:	    src/fileio.c
+
+Patch 6.2.151
+Problem:    When doing "vim --remote +startinsert file" some commands are
+	    inserted as text. (Klaus Bosau)
+Solution:   Put all the init commands in one Ex line, not using a <CR>, so
+	    that Insert mode isn't started too early.
+Files:	    src/main.c
+
+Patch 6.2.152
+Problem:    The cursor() function doesn't reset the column offset for
+	    'virtualedit'.
+Solution:   Reset the offset to zero. (Helmut Stiegler)
+Files:	    src/eval.c
+
+Patch 6.2.153
+Problem:    Win32: ":lang german" doesn't use German messages.
+Solution:   Add a table to translate the Win32 language names to two-letter
+	    language codes.
+Files:	    src/ex_cmds2.c
+
+Patch 6.2.154
+Problem:    Python bails out when giving a warning message. (Eugene
+	    Minkovskii)
+Solution:   Set sys.argv[] to an empty string.
+Files:	    src/if_python.c
+
+Patch 6.2.155
+Problem:    Win32: Using ":tjump www" in a help file gives two results.
+	    (Dave Roberts)
+Solution:   Ignore differences between slashes and backslashes when checking
+	    for identical tag matches.
+Files:	    src/tag.c
+
+Patch 6.2.156 (after 6.2.125)
+Problem:    Win32: Netbeans fails to build, EINTR is not defined.
+Solution:   Redefine EINTR to WSAEINTR. (Mike Williams)
+Files:	    src/netbeans.c
+
+Patch 6.2.157
+Problem:    Using "%p" in 'errorformat' gives a column number that is too
+	    high.
+Solution:   Set the flag to use the number as a virtual column.  (Lefteris
+	    Koutsoloukas)
+Files:	    src/quickfix.c
+
+Patch 6.2.158
+Problem:    The sed command on Solaris and HPUX doesn't work for a line that
+	    doesn't end in a newline.
+Solution:   Add a newline when feeding text to sed. (Mark Waggoner)
+Files:	    src/configure.in, src/auto/configure
+
+Patch 6.2.159
+Problem:    When using expression folding and 'foldopen' is "undo" an undo
+	    command doesn't always open the fold.
+Solution:   Save and restore the KeyTyped variable when evaluating 'foldexpr'.
+	    (Taro Muraoka)
+Files:	    src/fold.c
+
+Patch 6.2.160
+Problem:    When 'virtualedit' is "all" and 'selection is "exclusive",
+	    selecting a double-width character below a single-width character
+	    may cause a crash.
+Solution:   Avoid overflow on unsigned integer decrement. (Taro Muraoka)
+Files:	    src/normal.c
+
+Patch 6.2.161 (extra)
+Problem:    VMS: Missing header file.  Reading input busy loops.
+Solution:   Include termdef.h.  Avoid the use of a wait function in
+	    vms_read().  (Frank Ries)
+Files:	    src/os_unix.h, src/os_vms.c
+
+Patch 6.2.162
+Problem:    ":redraw" doesn't always display the text that includes the cursor
+	    position, e.g. after ":call cursor(1, 0)". (Eugene Minkovskii)
+Solution:   Call update_topline() before redrawing.
+Files:	    src/ex_docmd.c
+
+Patch 6.2.163
+Problem:    "make install" may also copy AAPDIR directories.
+Solution:   Delete AAPDIR directories, just like CVS directories.
+Files:	    src/Makefile
+
+Patch 6.2.164 (after 6.2.144)
+Problem:    When "g:html_use_css" is set the HTML header generated by the
+	    2html script is still wrong.
+Solution:   Search for a string instead of jumping to a fixed line number.
+	    Go to the start of the line before inserting the header.
+	    (Jess Thrysoee)
+Files:	    runtime/syntax/2html.vim
+
+Patch 6.2.165
+Problem:    The configure checks hang when using autoconf 2.57.
+Solution:   Invoke AC_PROGRAM_EGREP to set $EGREP. (Aron Griffis)
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.2.166
+Problem:    When $GZIP contains "-N" editing compressed files doesn't work
+	    properly.
+Solution:   Add "-n" to "gzip -d" to avoid restoring the file name. (Oyvind
+	    Holm)
+Files:	    runtime/plugin/gzip.vim
+
+Patch 6.2.167
+Problem:    The Python interface leaks memory when assigning lines to a
+	    buffer. (Sergey Khorev)
+Solution:   Do not copy the line when calling ml_replace().
+Files:	    src/if_python.c
+
+Patch 6.2.168
+Problem:    Python interface: There is no way to get the indices from a range
+	    object.
+Solution:   Add the "start" and "end" attributes. (Maurice S. Barnum)
+Files:	    src/if_python.c, runtime/doc/if_pyth.txt
+
+Patch 6.2.169
+Problem:    The prototype for _Xmblen() appears in a recent XFree86 header
+	    file, causing a warning for our prototype. (Hisashi T Fujinaka)
+Solution:   Move the prototype to an osdef file, so that it's filtered out.
+Files:	    src/mbyte.c, src/osdef2.h.in
+
+Patch 6.2.170
+Problem:    When using Sun WorkShop the current directory isn't changed to
+	    where the file is.
+Solution:   Set the 'autochdir' option when using WorkShop.  And avoid using
+	    the basename when 'autochdir' is not set.
+Files:	    src/gui_x11.c, src/ex_cmds.c
+
+Patch 6.2.171 (after 6.2.163)
+Problem:    The "-or" argument of "find" doesn't work for SysV systems.
+Solution:   Use "-o" instead. (Gordon Prieur)
+Files:	    src/Makefile
+
+Patch 6.2.172 (after 6.2.169)
+Problem:    The prototype for _Xmblen() still causes trouble.
+Solution:   Include the X11 header file that defines the prototype.
+Files:	    src/osdef2.h.in, src/osdef.sh
+
+Patch 6.2.173 (extra)
+Problem:    Win32: Ruby interface doesn't work with Ruby 1.8.0 for other
+	    compilers than MSVC.
+Solution:   Fix the BC5, Cygwin and Mingw makefiles. (Dan Sharp)
+Files:	    src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak
+
+Patch 6.2.174
+Problem:    After the ":intro" message only a mouse click in the last line
+	    gets past the hit-return prompt.
+Solution:   Accept a click at or below the hit-return prompt.
+Files:	    src/gui.c, src/message.c
+
+Patch 6.2.175
+Problem:    Changing 'backupext' in a *WritePre autocommand doesn't work.
+	    (William Natter)
+Solution:   Move the use of p_bex to after executing the *WritePre
+	    autocommands.  Also avoids reading allocated memory after freeing.
+Files:	    src/fileio.c
+
+Patch 6.2.176
+Problem:    Accented characters in translated help files are not handled
+	    correctly. (Fabien Vayssiere)
+Solution:   Include "192-255" in 'iskeyword' for the help window.
+Files:	    src/ex_cmds.c
+
+Patch 6.2.177 (extra)
+Problem:    VisVim: Opening a file with a space in the name doesn't work. (Rob
+	    Retter)  Arbitrary commands are being executed. (Neil Bird)
+Solution:   Put a backslash in front of every space in the file name.
+	    (Gerard Blais)  Terminate the CTRL-\ CTRL-N command with a NUL.
+Files:	    src/VisVim/Commands.cpp, src/VisVim/VisVim.rc
+
+Patch 6.2.178
+Problem:    People who don't know how to exit Vim try pressing CTRL-C.
+Solution:   Give a message how to exit Vim when CTRL-C is pressed and it
+	    doesn't cancel anything.
+Files:	    src/normal.c
+
+Patch 6.2.179 (extra)
+Problem:    The en_gb messages file isn't found on case sensitive systems.
+Solution:   Rename en_gb to en_GB. (Mike Williams)
+Files:	    src/po/en_gb.po, src/po/en_GB.po, src/po/Make_ming.mak,
+	    src/po/Make_mvc.mak, src/po/Makefile, src/po/README_mvc.txt
+
+Patch 6.2.180
+Problem:    Compiling with GTK2 on Win32 doesn't work.
+Solution:   Include gdkwin32.h instead of gdkx.h. (Srinath Avadhanula)
+Files:	    src/gui_gtk.c, src/gui_gtk_f.c, src/gui_gtk_x11.c, src/mbyte.c
+
+Patch 6.2.181 (after 6.2.171)
+Problem:    The "-o" argument of "find" has lower priority than the implied
+	    "and" with "-print".
+Solution:   Add parenthesis around the "-o" expression. (Gordon Prieur)
+Files:	    src/Makefile
+
+Patch 6.2.182 (after 6.2.094)
+Problem:    Compilation with tiny features fails because of missing
+	    get_past_head() function.
+Solution:   Adjust the #ifdef for get_past_head().
+Files:	    src/misc1.c
+
+Patch 6.2.183 (after 6.2.178)
+Problem:    Warning for char/unsigned char mixup.
+Solution:   Use MSG() instead of msg(). (Tony Leneis)
+Files:	    src/normal.c
+
+Patch 6.2.184
+Problem:    With 'formatoptions' set to "1aw" inserting text may cause the
+	    paragraph to be ended. (Alan Schmitt)
+Solution:   Temporarily add an extra space to make the paragraph continue
+	    after moving the word after the cursor to the next line.
+	    Also format when pressing Esc.
+Files:	    src/edit.c, src/normal.c, src/proto/edit.pro
+
+Patch 6.2.185
+Problem:    Restoring a session with zero-height windows does not work
+	    properly. (Charles Campbell)
+Solution:   Accept a zero argument to ":resize" as intended.  Add a window
+	    number argument to ":resize" to be able to set the size of other
+	    windows, because the current window cannot be zero-height.
+	    Fix the explorer plugin to avoid changing the window sizes.  Add
+	    the winrestcmd() function for this.
+Files:	    runtime/doc/eval.txt, runtime/plugin/explorer.vim, src/eval.c,
+	    src/ex_cmds.h, src/ex_docmd.c, src/proto/window.pro, src/window.c
+
+Patch 6.2.186 (after 6.2.185)
+Problem:    Documentation file eval.txt contains examples without indent.
+Solution:   Insert the indent.  Also fix other mistakes.
+Files:	    runtime/doc/eval.txt
+
+Patch 6.2.187
+Problem:    Using Insure++ reveals a number of bugs.  (Dominuque Pelle)
+Solution:   Initialize variables where needed.  Free allocated memory to avoid
+	    leaks.  Fix comparing tags to avoid reading past allocated memory.
+Files:	    src/buffer.c, src/diff.c, src/fileio.c, src/mark.c, src/misc1.c,
+	    src/misc2.c, src/ops.c, src/option.c, src/tag.c, src/ui.c
+
+Patch 6.2.188 (extra)
+Problem:    MS-Windows: Multi-byte characters in a filename cause trouble for
+	    the window title.
+Solution:   Return when the wide function for setting the title did its work.
+Files:	    src/gui_w48.c
+
+Patch 6.2.189
+Problem:    When setting 'viminfo' after editing a new buffer its marks are
+	    not stored. (Keith Roberts)
+Solution:   Set the "b_marks_read" flag when skipping to read marks from the
+	    viminfo file.
+Files:	    src/fileio.c
+
+Patch 6.2.190
+Problem:    When editing a compressed files, marks are lost.
+Solution:   Add the ":lockmarks" modifier and use it in the gzip plugin.
+	    Make exists() also check for command modifiers, so that the
+	    existence of ":lockmarks" can be checked for.
+	    Also add ":keepmarks" to avoid that marks are deleted when
+	    filtering text.
+	    When deleting lines put marks 'A - 'Z and '0 - '9 at the first
+	    deleted line instead of clearing the mark.  They were kept in the
+	    viminfo file anyway.
+	    Avoid that the gzip plugin puts deleted text in registers.
+Files:	    runtime/doc/motion.txt, runtime/plugin/gzip.vim, src/ex_cmds.c,
+	    src/ex_docmd.c, src/mark.c, src/structs.h
+
+Patch 6.2.191
+Problem:    The intro message is outdated.  Information about sponsoring and
+	    registering is missing.
+Solution:   Show info about sponsoring and registering Vim in the intro
+	    message now and then.  Add help file about sponsoring.
+Files:	    runtime/doc/help.txt, runtime/doc/sponsor.txt, runtime/doc/tags,
+	    runtime/menu.vim, src/version.c
+
+Patch 6.2.192
+Problem:    Using CTRL-T and CTRL-D with "gR" messes up the text.  (Jonahtan
+	    Hankins)
+Solution:   Avoid calling change_indent() recursively.
+Files:	    src/edit.c
+
+Patch 6.2.193
+Problem:    When recalling a search pattern from the history from a ":s,a/c,"
+	    command the '/' ends the search string. (JC van Winkel)
+Solution:   Store the separator character with the history entries.  Escape
+	    characters when needed, replace the old separator with the new one.
+	    Also fixes that recalling a "/" search for a "?" command messes up
+	    trailing flags.
+Files:	    src/eval.c, src/ex_getln.c, src/normal.c, src/proto/ex_getln.pro,
+	    src/search.c, src/tag.c
+
+Patch 6.2.194 (after 6.2.068)
+Problem:    For NetBeans, instead of writing the file and sending an event
+	    about it, tell NetBeans to write the file.
+Solution:   Add the "save" command, "netbeansBuffer" command and
+	    "buttonRelease" event to the netbeans protocol.  Updated the
+	    interface to version 2.2.  (Gordon Prieur)
+	    Also: open a fold when the cursor has been positioned.
+	    Also: fix memory leak, free result of nb_quote().
+Files:	    runtime/doc/netbeans.txt, src/fileio.c, src/netbeans.c,
+	    src/normal.c, src/proto/netbeans.pro, src/structs.h
+
+Patch 6.2.195 (after 6.2.190)
+Problem:    Compiling fails for missing CPO_REMMARK symbol.
+Solution:   Add the patch I forgot to include...
+Files:	    src/option.h
+
+Patch 6.2.196 (after 6.2.191)
+Problem:    Rebuilding the documentation doesn't use the sponsor.txt file.
+Solution:   Add sponsor.txt to the Makefile. (Christian J. Robinson)
+Files:	    runtime/doc/Makefile
+
+Patch 6.2.197
+Problem:    It is not possible to force a redraw of status lines. (Gary
+	    Johnson)
+Solution:   Add the ":redrawstatus" command.
+Files:	    runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c,
+	    src/screen.c
+
+Patch 6.2.198
+Problem:    A few messages are not translated. (Ernest Adrogue)
+Solution:   Mark the messages to be translated.
+Files:	    src/ex_cmds.c
+
+Patch 6.2.199 (after 6.2.194)
+Problem:    Vim doesn't work perfectly well with NetBeans.
+Solution:   When NetBeans saves the file, reset the timestamp to avoid "file
+	    changed" warnings.  Close a buffer in a proper way.  Don't try
+	    giving a debug message with an invalid pointer.  Send a
+	    newDotAndMark message when needed.  Report a change by the "r"
+	    command to NetBeans.  (Gordon Prieur)
+Files:	    src/netbeans.c, src/normal.c
+
+Patch 6.2.200
+Problem:    When recovering a file, 'fileformat' is always the default, thus
+	    writing the file may result in differences. (Penelope Fudd)
+Solution:   Before recovering the file try reading the original file to obtain
+	    the values of 'fileformat', 'fileencoding', etc.
+Files:	    src/memline.c
+
+Patch 6.2.201
+Problem:    When 'autowriteall' is set ":qall" still refuses to exit if there
+	    is a modified buffer. (Antoine Mechelynck)
+Solution:   Attempt writing modified buffers as intended.
+Files:	    src/ex_cmds2.c
+
+Patch 6.2.202
+Problem:    Filetype names of CHILL and ch script are confusing.
+Solution:   Rename "ch" to "chill" and "chscript" to "ch".
+Files:	    runtime/filetype.vim, runtime/makemenu.vim, runtime/synmenu.vim
+	    runtime/syntax/ch.vim, runtime/syntax/chill.vim
+
+Patch 6.2.203
+Problem:    With characterwise text that has more than one line, "3P" works
+	    wrong.  "3p" has the same problem.  There also is a display
+	    problem. (Daniel Goujot)
+Solution:   Perform characterwise puts with a count in the right position.
+Files:	    src/ops.c
+
+Patch 6.2.204 (after 6.2.086)
+Problem:    "]]" in a file with closed folds moves to the end of the file.
+	    (Nam SungHyun)
+Solution:   Find one position in each closed fold, then move to after the fold.
+Files:	    src/search.c
+
+Patch 6.2.205 (extra)
+Problem:    MS-Windows: When the taskbar is at the left or top of the screen,
+	    the Vim window placement is wrong.
+Solution:   Compute the size and position of the window correctly. (Taro
+	    Muraoka)
+Files:	    src/gui_w32.c, src/gui_w48.c
+
+Patch 6.2.206
+Problem:    Multi-byte characters cannot be used as hotkeys in a console
+	    dialog.  (Mattias Erkisson)
+Solution:   Handle multi-byte characters properly.  Also put () or [] around
+	    default hotkeys.
+Files:	    src/message.c, src/macros.h
+
+Patch 6.2.207
+Problem:    When 'encoding' is a multi-byte encoding, expanding an
+	    abbreviation that starts where insertion started results in
+	    characters before the insertion to be deleted.  (Xiangjiang Ma)
+Solution:   Stop searching leftwards for the start of the word at the position
+	    where insertion started.
+Files:	    src/getchar.c
+
+Patch 6.2.208
+Problem:    When using fold markers, three lines in a row have the start
+	    marker and deleting the first one with "dd", a nested fold is not
+	    deleted.  (Kamil Burzynski)
+	    Using marker folding, a level 1 fold doesn't stop when it is
+	    followed by "{{{2", starting a level 2 fold.
+Solution:   Don't stop updating folds at the end of a change when the nesting
+	    level of folds is larger than the fold level.
+	    Correctly compute the number of folds that start at "{{{2".
+	    Also avoid a crash for a NULL pointer.
+Files:	    src/fold.c
+
+Patch 6.2.209
+Problem:    A bogus fold is created when using "P" while the cursor is in the
+	    middle of a closed fold. (Kamil Burzynski)
+Solution:   Correct the line number where marks are modified for closed folds.
+Files:	    src/ops.c
+
+Patch 6.2.210 (extra)
+Problem:    Mac OSX: antialiased fonts are not supported.
+Solution:   Add the 'antialias' option to switch on antialiasing on Mac OSX
+	    10.2 and later. (Peter Cucka)
+Files:	    runtime/doc/options.txt, src/gui_mac.c, src/option.h, src/option.c
+
+Patch 6.2.211 (extra)
+Problem:    Code for handling file dropped on Vim is duplicated.
+Solution:   Move the common code to gui_handle_drop().
+	    Add code to drop the files in the window under the cursor.
+	    Support drag&drop on the Macintosh.  (Taro Muraoka)
+	    When dropping a directory name edit that directory (using the
+	    explorer plugin)
+	    Fix that changing directory with Shift pressed didn't work for
+	    relative path names.
+Files:	    src/fileio.c, src/gui.c, src/gui_gtk_x11.c, src/gui_mac.c,
+	    src/gui_w48.c, src/proto/fileio.pro, src/proto/gui.pro
+
+Patch 6.2.212 (after 6.2.199)
+Problem:    NetBeans: Replacing with a count is not handled correctly.
+Solution:   Move reporting the change outside of the loop for the count.
+	    (Gordon Prieur)
+Files:	    src/normal.c
+
+Patch 6.2.213 (after 6.2.208)
+Problem:    Using marker folding, "{{{1" doesn't start a new fold when already
+	    at fold level 1. (Servatius Brandt)
+Solution:   Correctly compute the number of folds that start at "{{{1".
+Files:	    src/fold.c
+
+Patch 6.2.214 (after 6.2.211) (extra)
+Problem:    Warning for an unused variable.
+Solution:   Delete the declaration. (Bill McCarthy)
+Files:	    src/gui_w48.c
+
+Patch 6.2.215
+Problem:    NetBeans: problems saving an unmodified file.
+Solution:   Add isNetbeansModified() function.  Disable netbeans_unmodified().
+	    (Gordon Prieur)
+Files:	    src/fileio.c, src/netbeans.c, src/proto/netbeans.pro,
+	    runtime/doc/netbeans.txt, runtime/doc/tags
+
+Patch 6.2.216 (after 6.2.206)
+Problem:    Multi-byte characters stil cannot be used as hotkeys in a console
+	    dialog.  (Mattias Erkisson)
+Solution:   Make get_keystroke() handle multi-byte characters.
+Files:	    src/misc1.c
+
+Patch 6.2.217
+Problem:    GTK: setting the title doesn't always work correctly.
+Solution:   Invoke gui_mch_settitle(). (Tomas Stehlik)
+Files:	    src/os_unix.c
+
+Patch 6.2.218
+Problem:    Warning for function without prototype.
+Solution:   Add argument types to the msgCB field of the BalloonEval struct.
+Files:	    src/gui_beval.h
+
+Patch 6.2.219
+Problem:    Syntax highlighting hangs on an empty match of an item with a
+	    nextgroup.  (Charles Campbell)
+Solution:   Remember that the item has already matched and don't match it
+	    again at the same position.
+Files:	    src/syntax.c
+
+Patch 6.2.220
+Problem:    When a Vim server runs in a console a remote command isn't handled
+	    before a key is typed.  (Joshua Neuheisel)
+Solution:   Don't try reading more input when a client-server command has been
+	    received.
+Files:	    src/os_unix.c
+
+Patch 6.2.221
+Problem:    No file name completion for ":cscope add".
+Solution:   Add the XFILE flag to ":cscope". (Gary Johnson)
+Files:	    src/ex_cmds.h
+
+Patch 6.2.222
+Problem:    Using "--remote" several times on a row only opens some of the
+	    files. (Dany St-Amant)
+Solution:   Don't delete all typehead when the server receives a command from
+	    a client, only delete typed characters.
+Files:	    src/main.c
+
+Patch 6.2.223
+Problem:    Cscope: Avoid a hang when cscope waits for a response while Vim
+	    waits for a prompt.
+	    Error messages from Cscope mess up the display.
+Solution:   Detect the hit-enter message and respond by sending a return
+	    character to cscope. (Gary Johnson)
+	    Use EMSG() and strerror() when possible.  Replace perror() with
+	    PERROR() everywhere, add emsg3().
+Files:	    src/diff.c, src/if_cscope.c, src/integration.c, src/message.c,
+	    src/proto/message.pro, src/misc2.c, src/netbeans.c, src/vim.h
+
+Patch 6.2.224
+Problem:    Mac: Can't compile with small features. (Axel Kielhorn)
+Solution:   Also include vim_chdirfile() when compiling for the Mac.
+Files:	    src/misc2.c
+
+Patch 6.2.225
+Problem:    NetBeans: Reported modified state isn't exactly right.
+Solution:   Report a file being modified in the NetBeans way.
+Files:	    src/netbeans.c
+
+Patch 6.2.226 (after 6.2.107) (extra)
+Problem:    The "ws2-32.lib" file isn't always available.
+Solution:   Use "WSock32.lib" instead. (Taro Muraoka, Dan Sharp)
+Files:	    src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak
+
+Patch 6.2.227 (extra)
+Problem:    The "PC" symbol is defined but not used anywhere.
+Solution:   Remove "-DPC" from the makefiles.
+Files:	    src/Make_bc3.mak, src/Make_bc5.mak, src/Make_cyg.mak,
+	    src/Make_ming.mak
+
+Patch 6.2.228
+Problem:    Receiving CTRL-\ CTRL-N after typing "f" or "m" doesn't switch Vim
+	    back to Normal mode.  Same for CTRL-\ CTRL-G.
+Solution:   Check if the character typed after a command is CTRL-\ and obtain
+	    another character to check for CTRL-N or CTRL-G, waiting up to
+	    'ttimeoutlen' msec.
+Files:	    src/normal.c
+
+Patch 6.2.229
+Problem:    ":function" with a name that uses magic curlies does not work
+	    inside a function.  (Servatius Brandt)
+Solution:   Skip over the function name properly.
+Files:	    src/eval.c
+
+Patch 6.2.230 (extra)
+Problem:    Win32: a complex pattern may cause a crash.
+Solution:   Use __try and __except to catch the exception and handle it
+	    gracefully, when possible.  Add myresetstkoflw() to reset the
+	    stack overflow. (Benjamin Peterson)
+Files:	    src/Make_bc5.mak, src/os_mswin.c src/os_win32.c, src/os_win32.h,
+	    src/proto/os_win32.pro, src/regexp.c
+
+Patch 6.2.231 (after 6.2.046)
+Problem:    Various problems when an error exception is raised from within a
+	    builtin function.  When it is invoked while evaluating arguments
+	    to a function following arguments are still evaluated.  When
+	    invoked with a line range it will be called for remaining lines.
+Solution:   Update "force_abort" also after calling a builtin function, so
+	    that aborting() always returns the correct value. (Servatius
+	    Brandt)
+Files:	    src/eval.c, src/ex_eval.c, src/proto/ex_eval.pro,
+	    src/testdir/test49.ok, src/testdir/test49.vim
+
+Patch 6.2.232
+Problem:    ":python vim.command('python print 2*2')" crashes Vim.  (Eugene
+	    Minkovskii)
+Solution:   Disallow executing a Python command recursively and give an error
+	    message.
+Files:	    src/if_python.c
+
+Patch 6.2.233
+Problem:    On Mac OSX adding -pthread for Python only generates a warning.
+	    The test for Perl threads rejects Perl while it's OK.
+	    Tcl doesn't work at all.
+	    The test for Ruby fails if ruby exists but there are no header
+	    files.  The Ruby library isn't detected properly
+Solution:   Avoid adding -pthread on Mac OSX.  Accept Perl threads when it's
+	    not the 5.5 threads.
+	    Use the Tcl framework for header files.  For Ruby rename cWindow
+	    to cVimWindow to avoid a name clash. (Ken Scott)
+	    Only enable Ruby when the header files can be found.  Use "-lruby"
+	    instead of "libruby.a" when it can't be found.
+Files:	    src/auto/configure, src/configure.in, src/if_ruby.c
+
+Patch 6.2.234
+Problem:    GTK 2 GUI: ":sp" and the ":q" leaves the cursor on the command
+	    line.
+Solution:   Flush output before removing scrollbars.  Also do this in other
+	    places where gui_mch_*() functions are invoked.
+Files:	    src/ex_cmds.c, src/option.c, src/window.c
+
+Patch 6.2.235 (extra)
+Problem:    Win32: Cursor isn't removed with a 25x80 window and doing:
+	    "1830ia<Esc>400a-<Esc>0w0". (Yasuhiro Matsumoto)
+Solution:   Remove the call to gui_undraw_cursor() from gui_mch_insert_lines().
+Files:	    src/gui_w48.c
+
+Patch 6.2.236
+Problem:    Using gvim with Agide gives "connection lost" error messages.
+Solution:   Only give the "connection lost" message when the buffer was once
+	    owned by NetBeans.
+Files:	    src/netbeans.c, src/structs.h
+
+Patch 6.2.237
+Problem:    GTK 2: Thai text is drawn wrong.  It changes when moving the
+	    cursor over it.
+Solution:   Disable the shaping engine, it moves combining characters to a
+	    wrong position and combines characters, while drawing the cursor
+	    doesn't combine characters.
+Files:	    src/gui_gtk_x11.c
+
+Patch 6.2.238 (after 6.2.231)
+Problem:    ":function" does not work inside a while loop. (Servatius Brandt)
+Solution:   Add get_while_line() and pass it to do_one_cmd() when in a while
+	    loop, so that all lines are stored and can be used again when
+	    repeating the loop.
+	    Adjust test 49 so that it checks for the fixed problems.
+	    (Servatius Brandt)
+Files:	    src/digraph.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c,
+	    src/proto/ex_cmds2.pro, src/proto/ex_docmd.pro,
+	    src/testdir/test49.in, src/testdir/test49.ok,
+	    src/testdir/test49.vim
+
+Patch 6.2.239
+Problem:    GTK 2: With closed folds the arrow buttons of a vertical scrollbar
+	    often doesn't scroll. (Moshe Kaminsky)
+Solution:   Hackish solution: Detect that the button was pressed from the
+	    mouse pointer position.
+Files:	    src/gui_gtk.c, src/gui.c
+
+Patch 6.2.240
+Problem:    GTK 2: Searching for bitmaps for the toolbar doesn't work as with
+	    other systems.  Need to explicitly use "icon=name".  (Ned Konz,
+	    Christian J.  Robinson)
+Solution:   Search for icons like done for Motif.
+Files:	    src/gui_gtk.c
+
+Patch 6.2.241
+Problem:    GTK 2: Search and Search/Replace dialogs are synced, that makes no
+	    sense.  Buttons are sometimes greyed-out. (Jeremy Messenger)
+Solution:   Remove the code to sync the two dialogs.  Adjust the code to react
+	    to an empty search string to also work for GTK2. (David Necas)
+Files:	    src/gui_gtk.c
+
+Patch 6.2.242
+Problem:    Gnome: "vim --help" only shows the Gnome arguments, not the Vim
+	    arguments.
+Solution:   Don't let the Gnome code remove the "--help" argument and don't
+	    exit at the end of usage().
+Files:	    src/gui_gtk_x11.c, src/main.c
+
+Patch 6.2.243 (extra)
+Problem:    Mac: Dropping a file on a Vim icon causes a hit-enter prompt.
+Solution:   Move the dropped files to the global argument list, instead of the
+	    usual drop handling. (Eckehard Berns)
+Files:	    src/main.c, src/gui_mac.c
+
+Patch 6.2.244
+Problem:    ':echo "\xf7"' displays the illegal byte as if it was a character
+	    and leaves "cho" after it.
+Solution:   When checking the length of a UTF-8 byte sequence and it's shorter
+	    than the number of bytes available, assume it's an illegal byte.
+Files:	    src/mbyte.c
+
+Patch 6.2.245
+Problem:    Completion doesn't work for ":keepmarks" and ":lockmarks".
+Solution:   Add the command modifiers to the table of commands. (Madoka
+	    Machitani)
+Files:	    src/ex_cmds.h, src/ex_docmd.c
+
+Patch 6.2.246
+Problem:    Mac: Starting Vim from Finder doesn't show error messages.
+Solution:   Recognize that output is being displayed by stderr being
+	    "/dev/console".  (Eckehard Berns)
+Files:	    src/main.c, src/message.c
+
+Patch 6.2.247 (after 6.2.193)
+Problem:    When using a search pattern from the viminfo file the last
+	    character is replaced with a '/'.
+Solution:   Store the separator character in the right place. (Kelvin Lee)
+Files:	    src/ex_getln.c
+
+Patch 6.2.248
+Problem:    GTK: When XIM is enabled normal "2" and keypad "2" cannot be
+	    distinguished.
+Solution:   Detect that XIM changes the keypad key to the expected ASCII
+	    character and fall back to the non-XIM code. (Neil Bird)
+Files:	    src/gui_gtk_x11.c, src/mbyte.c, src/proto/mbyte.pro
+
+Patch 6.2.249
+Problem:    ":cnext" moves to the error in the next file, but there is no
+	    method to go back.
+Solution:   Add ":cpfile" and ":cNfile".
+Files:	    src/ex_cmds.h, src/quickfix.c, src/vim.h, runtime/doc/quickfix.txt
+
+Patch 6.2.250
+Problem:    Memory leaks when using signs. (Xavier de Gaye)
+Solution:   Delete the list of signs when unloading a buffer.
+Files:	    src/buffer.c
+
+Patch 6.2.251
+Problem:    GTK: The 'v' flag in 'guioptions' doesn't work. (Steve Hall)
+	    Order of buttons is reversed for GTK 2.2.4.  Don't always get
+	    focus back after handling a dialog.
+Solution:   Make buttons appear vertically when desired.  Reverse the order in
+	    which buttons are added to a dialog.  Move mouse pointer around
+	    when the dialog is done and we don't have focus.
+Files:	    src/gui_gtk.c
+
+Patch 6.2.252 (extra, after 6.2.243)
+Problem:    Mac: Dropping a file on a Vim icon causes a hit-enter prompt for
+	    Mac OS classic.
+Solution:   Remove the #ifdef from the code that fixes it for Mac OSX.
+Files:	    src/gui_mac.c
+
+Patch 6.2.253
+Problem:    When 'tagstack' is not set a ":tag id" command does not work after
+	    a ":tjump" command.
+Solution:   Set "new_tag" when 'tagstack' isn't set. (G. Narendran)
+Files:	    src/tag.c
+
+Patch 6.2.254
+Problem:    May run out of space for error messages.
+Solution:   Keep room for two more bytes.
+Files:	    src/quickfix.c
+
+Patch 6.2.255
+Problem:    GTK: A new item in the popup menu is put just after instead of
+	    just before the right item. (Gabriel Zachmann)
+Solution:   Don't increment the menu item index.
+Files:	    src/gui_gtk.c
+
+Patch 6.2.256
+Problem:    Mac: "macroman" encoding isn't recognized, need to use
+	    "8bit-macroman.
+Solution:   Recognize "macroman" with an alias "mac". (Eckehard Berns)
+Files:	    src/mbyte.c
+
+Patch 6.2.257 (after 6.2.250)
+Problem:    Signs are deleted for ":bdel", but they could still be useful.
+Solution:   Delete signs only for ":bwipe".
+Files:	    src/buffer.c
+
+Patch 6.2.258
+Problem:    GUI: can't disable (grey-out) a popup menu item.  (Ajit Thakkar)
+Solution:   Loop over the popup menus for all modes.
+Files:	    src/menu.c
+
+Patch 6.2.259
+Problem:    If there are messages when exiting, on the console there is a
+	    hit-enter prompt while the message can be read; in the GUI the
+	    message may not be visible.
+Solution:   Use the hit-enter prompt when there is an error message from
+	    writing the viminfo file or autocommands, or when there is any
+	    output in the GUI and 'verbose' is set.  Don't use a hit-enter
+	    prompt for the non-GUI version unless there is an error message.
+Files:	    src/main.c
+
+Patch 6.2.260
+Problem:    GTK 2: Can't quit a dialog with <Esc>.
+	    GTK 1 and 2: <Enter> always gives a result, even when the default
+	    button has been disabled.
+Solution:   Handle these keys explicitly.  When no default button is specified
+	    use the first one (works mostly like it was before).
+Files:	    src/gui_gtk.c
+
+Patch 6.2.261
+Problem:    When 'autoindent' and 'cindent' are set and a line is recognized
+	    as a comment, starting a new line won't do 'cindent' formatting.
+Solution:   Also use 'cindent' formatting for lines that are used as a
+	    comment. (Servatius Brandt)
+Files:	    src/misc1.c
+
+Patch 6.2.262
+Problem:    1 CTRL-W w beeps, even though going to the first window is
+	    possible. (Charles Campbell)
+Solution:   Don't beep.
+Files:	    src/window.c
+
+Patch 6.2.263
+Problem:    Lint warnings: Duplicate function prototypes, duplicate macros,
+	    use of a zero character instead of a zero pointer, unused
+	    variable.  Clearing allocated memory in a complicated way.
+Solution:   Remove the function prototypes from farsi.h.  Remove the
+	    duplicated lines in keymap.h.  Change getvcol() argument from NUL
+	    to NULL.  Remove the "col" variable in regmatch().  Use
+	    lalloc_clear() instead of lalloc(). (Walter Briscoe)
+Files:	    src/farsi.h, src/keymap.h, src/ops.c, src/regexp.c, src/search.c
+
+Patch 6.2.264 (after 6.2.247)
+Problem:    Writing past allocated memory when using a command line from the
+	    viminfo file.
+Solution:   Store the NUL in the right place.
+Files:	    src/ex_getln.c
+
+Patch 6.2.265
+Problem:    Although ":set" is not allowed in the sandbox, ":let &opt = val"
+	    works.
+Solution:   Do allow changing options in the sandbox, but not the ones that
+	    can't be changed from a modeline.
+Files:	    src/ex_cmds.h, src/options.c
+
+Patch 6.2.266
+Problem:    When redirecting output and using ":silent", line breaks are
+	    missing from output of ":map" and ":tselect".  Alignment of
+	    columns is wrong.
+Solution:   Insert a line break where "msg_didout" was tested.  Update msg_col
+	    when redirecting and using ":silent".
+Files:	    src/getchar.c, src/message.c
+
+Patch 6.2.267 (extra)
+Problem:    Win32: "&&" in a tearoff menu is not shown. (Luc Hermitte)
+Solution:   Use the "name" item from the menu instead of the "dname" item.
+Files:	    src/gui_w32.c, src/menu.c
+
+Patch 6.2.268
+Problem:    GUI: When changing 'guioptions' part of the window may be off
+	    screen. (Randall Morris)
+Solution:   Adjust the size of the window when changing 'guioptions', but only
+	    when adding something.
+Files:	    src/gui.c
+
+Patch 6.2.269
+Problem:    Diff mode does not highlight a change in a combining character.
+	    (Raphael Finkel)
+Solution:   Make diff_find_change() multi-byte aware: find the start byte of
+	    a character that contains a change.
+Files:	    src/diff.c
+
+Patch 6.2.270
+Problem:    Completion in Insert mode, then repeating with ".", doesn't handle
+	    composing characters in the completed text. (Raphael Finkel)
+Solution:   Don't skip over composing chars when adding completed text to the
+	    redo buffer.
+Files:	    src/getchar.c
+
+Patch 6.2.271
+Problem:    NetBeans: Can't do "tail -f" on the log.  Passing socket info with
+	    an argument or environment variable is not secure.
+Solution:   Wait after initializing the log.  Allow passing the socket info
+	    through a file. (Gordon Prieur)
+Files:	    runtime/doc/netbeans.txt, src/main.c, src/netbeans.c
+
+Patch 6.2.272
+Problem:    When the "po" directory exists, but "po/Makefile" doesn't,
+	    building fails.  Make loops when the "po" directory has been
+	    deleted after running configure.
+Solution:   Check for the "po/Makefile" instead of just the "po" directory.
+	    Check this again before trying to run make with that Makefile.
+Files:	    src/auto/configure, src/configure.in, src/Makefile
+
+Patch 6.2.273
+Problem:    Changing the sort order in an explorer window for an empty
+	    directory produces error messages. (Doug Kearns)
+Solution:   When an invalid range is used for a function that is not going to
+	    be executed, skip over the arguments anyway.
+Files:	    src/eval.c
+
+Patch 6.2.274
+Problem:    ":print" skips empty lines when 'list' is set and there is no
+	    "eol" in 'listchars'. (Yakov Lerner)
+Solution:   Skip outputting a space for an empty line only when 'list' is set
+	    and the end-of-line character is not empty.
+Files:	    src/message.c
+
+Patch 6.2.275 (extra, after 6.2.267)
+Problem:    Warning for uninitialized variable when using gcc.
+Solution:   Initialize "acLen" to zero. (Bill McCarthy)
+Files:	    src/gui_w32.c
+
+Patch 6.2.276
+Problem:    ":echo X()" does not put a line break between the message that X()
+	    displays and the text that X() returns. (Yakov Lerner)
+Solution:   Invoke msg_start() after evaluating the argument.
+Files:	    src/eval.c
+
+Patch 6.2.277
+Problem:    Vim crashes when a ":runtime ftplugin/ada.vim" causes a recursive
+	    loop. (Robert Nowotniak)
+Solution:   Restore "msg_list" before returning from do_cmdline().
+Files:	    src/ex_docmd.c
+
+Patch 6.2.278
+Problem:    Using "much" instead of "many".
+Solution:   Correct the error message.
+Files:	    src/eval.c
+
+Patch 6.2.279
+Problem:    There is no default choice for a confirm() dialog, now that it is
+	    possible not to have a default choice.
+Solution:   Make the first choice the default choice.
+Files:	    runtime/doc/eval.txt, src/eval.c
+
+Patch 6.2.280
+Problem:    "do" and ":diffget" don't work in the first line and the last line
+	    of a buffer. (Aron Griffis)
+Solution:   Find a difference above the first line and below the last line.
+	    Also fix a few display updating bugs.
+Files:	    src/diff.c, src/fold.c, src/move.c
+
+Patch 6.2.281
+Problem:    PostScript printing doesn't work on Mac OS X 10.3.2.
+Solution:   Adjust the header file. (Mike Williams)
+Files:	    runtime/print/prolog.ps
+
+Patch 6.2.282
+Problem:    When using CTRL-O to go back to a help file, it becomes listed.
+	    (Andrew Nesbit)
+	    Using ":tag" or ":tjump" in a help file doesn't keep the help file
+	    settings (e.g. for 'iskeyword').
+Solution:   Don't mark a buffer as listed when its help flag is set.  Put all
+	    the option settings for a help buffer together in do_ecmd().
+Files:	    src/ex_cmds.c
+
+Patch 6.2.283
+Problem:    The "local additions" in help.txt are used without conversion,
+	    causing latin1 characters showing up wrong when 'enc' is utf-8.
+	    (Antoine J. Mechelynck)
+Solution:   Convert the text to 'encoding'.
+Files:	    src/ex_cmds.c
+
+Patch 6.2.284
+Problem:    Listing a function puts "endfunction" in the message history.
+	    Typing "q" at the more prompt isn't handled correctly when listing
+	    variables and functions.  (Hara Krishna Dara)
+Solution:   Don't use msg() for "endfunction".  Check "got_int" regularly.
+Files:	    src/eval.c
+
+Patch 6.2.285
+Problem:    GUI: In a single wrapped line that fills the window, "gj" in the
+	    last screen line leaves the cursor behind. (Ivan Tarasov)
+Solution:   Undraw the cursor before scrolling the text up.
+Files:	    src/gui.c
+
+Patch 6.2.286
+Problem:    When trying to rename a file and it doesn't exist, the destination
+	    file is deleted anyway. (Luc Deux)
+Solution:   Don't delete the destination when the source doesn't exist. (Taro
+	    Muraoka)
+Files:	    src/fileio.c
+
+Patch 6.2.287 (after 6.2.264)
+Problem:    Duplicate lines are added to the viminfo file.
+Solution:   Compare with existing entries without an offset.  Also fixes
+	    reading very long history lines from viminfo.
+Files:	    src/ex_getln.c
+
+Patch 6.2.288 (extra)
+Problem:    Mac: An external program can't be interrupted.
+Solution:   Don't use the 'c' key for backspace. (Eckehard Berns)
+Files:	    src/gui_mac.c
+
+Patch 6.2.289
+Problem:    Compiling the Tcl interface with thread support causes ":make" to
+	    fail.  (Juergen Salk)
+Solution:   Use $TCL_DEFS from the Tcl config script to obtain the required
+	    compile flags for using the thread library.
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.2.290 (extra)
+Problem:    Mac: The mousewheel doesn't work.
+Solution:   Add mousewheel support.  Also fix updating the thumb after a drag
+	    and then using another way to scroll.  (Eckehard Berns)
+Files:	    src/gui_mac.c
+
+Patch 6.2.291 (extra)
+Problem:    Mac: the plus button and close button don't do anything.
+Solution:   Make the plus button maximize the window and the close button
+	    close Vim. (Eckehard Berns)
+Files:	    src/gui.c, src/gui_mac.c
+
+Patch 6.2.292
+Problem:    Motif: When removing GUI arguments from argv[] a "ps -ef" shows
+	    the last argument repeated.
+Solution:   Set argv[argc] to NULL. (Michael Jarvis)
+Files:	    src/gui_x11.c
+
+Patch 6.2.293 (after 6.2.255)
+Problem:    GTK: A new item in a menu is put before the tearoff item.
+Solution:   Do increment the menu item index for non-popup menu items.
+Files:	    src/gui_gtk.c
+
+Patch 6.2.294 (extra)
+Problem:    Mac: Cannot use modifiers with Space, Tab, Enter and Escape.
+Solution:   Handle all modifiers for these keys.  (Eckehard Berns)
+Files:	    src/gui_mac.c
+
+Patch 6.2.295
+Problem:    When in debug mode, receiving a message from a remote client
+	    causes a crash.  Evaluating an expression causes Vim to wait for
+	    "cont" to be typed, without a prompt.  (Hari Krishna Dara)
+Solution:   Disable debugging when evaluating an expression for a client.
+	    (Michael Geddes)  Don't try reading into the typehead buffer when
+	    it may have been filled in another way.
+Files:	    src/ex_getln.c, src/getchar.c, src/if_xcmdsrv.c, src/main.c,
+	    src/misc1.c, src/proto/getchar.pro, src/proto/main.pro,
+	    src/proto/os_unix.pro, src/proto/ui.pro, src/structs.h,
+	    src/os_unix.c, src/ui.c
+
+Patch 6.2.296 (extra)
+Problem:    Same as 6.2.295.
+Solution:   Extra files for patch 6.2.295.
+Files:	    src/os_amiga.c, src/os_msdos.c, src/os_riscos.c, src/os_win32.c,
+	    src/proto/os_amiga.pro, src/proto/os_msdos.pro,
+	    src/proto/os_riscos.pro, src/proto/os_win32.pro
+
+Patch 6.2.297 (after 6.2.232)
+Problem:    Cannot invoke Python commands recursively.
+Solution:   With Python 2.3 and later use the available mechanisms to invoke
+	    Python recursively. (Matthew Mueller)
+Files:	    src/if_python.c
+
+Patch 6.2.298
+Problem:    A change always sets the '. mark and an insert always sets the '^
+	    mark, even when this is not wanted.
+	    Cannot go back to the position of older changes without undoing
+	    those changes.
+Solution:   Add the ":keepjumps" command modifier.
+	    Add the "g," and "g;" commands.
+Files:	    runtime/doc/motion.txt, src/ex_cmds.h, src/ex_docmd.c, src/edit.c,
+	    src/mark.c, src/misc1.c, src/normal.c, src/proto/mark.pro,
+	    src/structs.h, src/undo.c
+
+Patch 6.2.299
+Problem:    Can only use one language for help files.
+Solution:   Add the 'helplang' option to select the preferred language(s).
+	    Make ":helptags" generate tags files for all languages.
+Files:	    runtime/doc/options.txt, runtime/doc/various.txt, src/Makefile,
+	    src/ex_cmds.c, src/ex_cmds2.c, src/ex_cmds.h, src/ex_getln.c,
+	    src/normal.c, src/option.c, src/option.h, src/proto/ex_cmds.pro,
+	    src/proto/ex_cmds2.pro, src/proto/option.pro, src/structs.h,
+	    src/tag.c, src/vim.h
+
+Patch 6.2.300 (after 6.2.297)
+Problem:    Cannot build Python interface with Python 2.2 or earlier.
+Solution:   Add a semicolon.
+Files:	    src/if_python.c
+
+Patch 6.2.301
+Problem:    The "select all" item from the popup menu doesn't work for Select
+	    mode.
+Solution:   Use the same commands as for the "Edit.select all" menu.
+	    (Benji Fisher)
+Files:	    runtime/menu.vim
+
+Patch 6.2.302
+Problem:    Using "CTRL-O ." in Insert mode doesn't work properly. (Benji
+	    Fisher)
+Solution:   Restore "restart_edit" after an insert command that was not typed.
+	    Avoid waiting with displaying the mode when there is no text to be
+	    overwritten.
+	    Fix that "CTRL-O ." sometimes doesn't put the cursor back after
+	    the end-of-line.  Only reset the flag that CTRL-O was used past
+	    the end of the line when restarting editing.  Update "o_lnum"
+	    number when inserting text and "o_eol" is set.
+Files:	    src/edit.c, src/normal.c
+
+Patch 6.2.303
+Problem:    Cannot use Unicode digraphs while 'encoding' is not Unicode.
+Solution:   Convert the character from Unicode to 'encoding' when needed.
+	    Use the Unicode digraphs for the Macintosh. (Eckehard Berns)
+Files:	    src/digraph.c
+
+Patch 6.2.304 (extra, after 6.2.256)
+Problem:    Mac: No proper support for 'encoding'.  Conversion without iconv()
+	    is not possible.
+Solution:   Convert input from 'termencoding' to 'encoding'.  Add
+	    mac_string_convert().  Convert text for the clipboard when needed.
+	    (Eckehard Berns)
+Files:	    src/gui_mac.c, src/mbyte.c, src/structs.h, src/vim.h
+
+Patch 6.2.305 (after 6.2.300)
+Problem:    Win32: Cannot build Python interface with Python 2.3. (Ajit
+	    Thakkar)
+Solution:   Add two functions to the dynamic loading feature.
+Files:	    src/if_python.c
+
+Patch 6.2.306 (extra)
+Problem:    Win32: Building console version with BCC 5.5 gives a warning for
+	    get_cmd_args() prototype missing.  (Ajit Thakkar)
+Solution:   Don't build os_w32exe.c for the console version.
+Files:	    src/Make_bc5.mak
+
+Patch 6.2.307 (after 6.2.299)
+Problem:    Installing help files fails.
+Solution:   Expand wildcards for translated help files separately.
+Files:	    src/Makefile
+
+Patch 6.2.308
+Problem:    Not all systems have "whoami", resulting in an empty user name.
+Solution:   Use "logname" when possible, "whoami" otherwise.  (David Boyce)
+Files:	    src/Makefile
+
+Patch 6.2.309
+Problem:    "3grx" waits for two ESC to be typed.  (Jens Paulus)
+Solution:   Append the ESC to the stuff buffer when redoing the "gr" insert.
+Files:	    src/edit.c
+
+Patch 6.2.310
+Problem:    When setting 'undolevels' to -1, making a change and setting
+	    'undolevels' to a positive value an "undo list corrupt" error
+	    occurs. (Madoka Machitani)
+Solution:   Sync undo before changing 'undolevels'.
+Files:	    src/option.c
+
+Patch 6.2.311 (after 6.2.298)
+Problem:    When making several changes in one line the changelist grows
+	    quickly.  There is no error message for reaching the end of the
+	    changelist.  Reading changelist marks from viminfo doesn't work
+	    properly.
+Solution:   Only make a new entry in the changelist when making a change in
+	    another line or 'textwidth' columns away.  Add E662, E663 and E664
+	    error messages.  Put a changelist mark from viminfo one position
+	    before the end.
+Files:	    runtime/doc/motion.txt, src/mark.c, src/misc1.c, src/normal.c
+
+Patch 6.2.312 (after 6.2.299)
+Problem:    "make install" clears the screen when installing the docs.
+Solution:   Execute ":helptags" in silent mode.
+Files:	    runtime/doc/Makefile
+
+Patch 6.2.313
+Problem:    When opening folds in a diff window, other diff windows no longer
+	    show the same text.
+Solution:   Sync the folds in diff windows.
+Files:	    src/diff.c, src/fold.c, src/move.c, src/proto/diff.pro,
+	    src/proto/move.pro
+
+Patch 6.2.314
+Problem:    When 'virtualedit' is set "rx" may cause a crash with a blockwise
+	    selection and using "$". (Moritz Orbach)
+Solution:   Don't try replacing chars in a line that has no characters in the
+	    block.
+Files:	    src/ops.c
+
+Patch 6.2.315
+Problem:    Using CTRL-C in a Visual mode mapping while 'insertmode' is set
+	    stops Vim from returning to Insert mode.
+Solution:   Don't reset "restart_edit" when a CTRL-C is found and 'insertmode'
+	    is set.
+Files:	    src/normal.c
+
+Patch 6.2.316 (after 6.2.312)
+Problem:    "make install" tries connecting to the X server when installing
+	    the docs. (Stephen Thomas)
+Solution:   Add the "-X" argument.
+Files:	    runtime/doc/Makefile
+
+Patch 6.2.317 (after 6.2.313)
+Problem:    When using "zi" in a diff window, other diff windows are not
+	    adjusted. (Richard Curnow)
+Solution:   Distribute a change in 'foldenable' to other diff windows.
+Files:	    src/normal.c
+
+Patch 6.2.318
+Problem:    When compiling with _THREAD_SAFE external commands don't echo
+	    typed characters.
+Solution:   Don't set the terminal mode to TMODE_SLEEP when it's already at
+	    TMODE_COOK.
+Files:	    src/os_unix.c
+
+Patch 6.2.319 (extra)
+Problem:    Building gvimext.dll with Mingw doesn't work properly.
+Solution:   Use gcc instead of dllwrap.  Use long option names. (Alejandro
+	    Lopez-Valencia)
+Files:	    src/GvimExt/Make_ming.mak
+
+Patch 6.2.320
+Problem:    Win32: Adding and removing the menubar resizes the Vim window.
+	    (Jonathon Merz)
+Solution:   Don't let a resize event change 'lines' unexpectedly.
+Files:	    src/gui.c
+
+Patch 6.2.321
+Problem:    When using modeless selection, wrapping lines are not recognized,
+	    a line break is always inserted.
+Solution:   Add LineWraps[] to remember whether a line wrapped or not.
+Files:	    src/globals.h, src/screen.c, src/ui.c
+
+Patch 6.2.322
+Problem:    With 'showcmd' set, after typing "dd" the next "d" may not be
+	    displayed. (Jens Paulus)
+Solution:   Redraw the command line after updating the screen, scrolling may
+	    have set "clear_cmdline".
+Files:	    src/screen.c
+
+Patch 6.2.323
+Problem:    Win32: expanding "~/file" in an autocommand pattern results in
+	    backslashes, while this pattern should only have forward slashes.
+Solution:   Make expanding environment variables respect 'shellslash' and set
+	    p_ssl when expanding the autocommand pattern.
+Files:	    src/fileio.c, src/misc1.c, src/proto/fileio.pro
+
+Patch 6.2.324 (extra)
+Problem:    Win32: when "vimrun.exe" has a path with white space, such as
+	    "Program Files", executing external commands may fail.
+Solution:   Put double quotes around the path to "vimrun".
+Files:	    src/os_win32.c
+
+Patch 6.2.325
+Problem:    When $HOME includes a space, doing ":set tags=~/tags" doesn't
+	    work, the space is used to separate file names.  (Brett Stahlman)
+Solution:   Escape the space with a backslash.
+Files:	    src/option.c
+
+Patch 6.2.326
+Problem:    ":windo set syntax=foo" doesn't work.  (Tim Chase)
+Solution:   Don't change 'eventignore' for ":windo".
+Files:	    src/ex_cmds2.c
+
+Patch 6.2.327
+Problem:    When formatting text all marks in the formatted lines are lost.
+	    A word is not joined to a previous line when this would be
+	    possible.  (Mikolaj Machowski)
+Solution:   Try to keep marks in the same position as much as possible.
+	    Also keep mark positions when joining lines.
+	    Start auto-formatting in the previous line when appropriate.
+	    Add the "gw" operator: Like "gq" but keep the cursor where it is.
+Files:	    runtime/doc/change.txt, src/edit.c, src/globals.h, src/mark.c,
+	    src/misc1.c, src/normal.c, src/ops.c, src/proto/edit.pro,
+	    src/proto/mark.pro, src/proto/ops.pro, src/structs.h, src/vim.h
+
+Patch 6.2.328
+Problem:    XIM with GTK: It is hard to understand what XIM is doing.
+Solution:   Add xim_log() to log XIM events and help with debugging.
+Files:	    src/mbyte.c
+
+Patch 6.2.329
+Problem:    ":=" does not work Vi compatible. (Antony Scriven)
+Solution:   Print the last line number instead of the current line.  Don't
+	    print "line".
+Files:	    src/ex_cmds.h, src/ex_docmd.c
+
+Patch 6.2.330 (extra, after 6.2.267)
+Problem:    Win32: Crash when tearing off a menu.
+Solution:   Terminate a string with a NUL. (Yasuhiro Matsumoto)
+Files:	    src/gui_w32.c
+
+Patch 6.2.331 (after 6.2.327)
+Problem:    "gwap" leaves cursor in the wrong line.
+Solution:   Remember the cursor position before finding the ends of the
+	    paragraph.
+Files:	    src/normal.c, src/ops.c, src/structs.h
+
+Patch 6.2.332 (extra)
+Problem:    Amiga: Compile error for string array. Compiling the Amiga GUI
+	    doesn't work.
+Solution:   Use a char pointer instead.  Move including "gui_amiga.h" to after
+	    including "vim.h".  Add a semicolon. (Ali Akcaagac)
+Files:	    src/gui_amiga.c, src/os_amiga.c
+
+Patch 6.2.333 (extra)
+Problem:    Win32: printing doesn't work with specified font charset.
+Solution:   Use the specified font charset. (Mike Williams)
+Files:	    src/os_mswin.c
+
+Patch 6.2.334 (extra, after 6.2.296)
+Problem:    Win32: evaluating client expression in debug mode requires typing
+	    "cont".
+Solution:   Use eval_client_expr_to_string().
+Files:	    src/os_mswin.c
+
+Patch 6.2.335
+Problem:    The ":sign" command cannot be followed by another command.
+Solution:   Add TRLBAR to the command flags.
+Files:	    src/ex_cmds.h
+
+Patch 6.2.336 (after 6.2.327)
+Problem:    Mixup of items in an expression.
+Solution:   Move "== NUL" to the right spot.
+Files:	    src/edit.c
+
+Patch 6.2.337 (extra, after 6.2.319)
+Problem:    Building gvimext.dll with Mingw doesn't work properly.
+Solution:   Fix white space and other details. (Alejandro Lopez-Valencia)
+Files:	    src/GvimExt/Make_ming.mak
+
+Patch 6.2.338 (after 6.2.331)
+Problem:    When undoing "gwap" the cursor is always put at the start of the
+	    paragraph.  When undoing auto-formatting the cursor may be above
+	    the change.
+Solution:   Try to move the cursor back to where it was or to the first line
+	    that actually changed.
+Files:	    src/normal.c, src/ops.c, src/undo.c
+
+Patch 6.2.339
+Problem:    Crash when using many different highlight groups and a User
+	    highlight group.  (Juergen Kraemer)
+Solution:   Do not use the sg_name_u pointer when it is NULL.  Also simplify
+	    use of the highlight group table.
+Files:	    src/syntax.c
+
+Patch 6.2.340
+Problem:    ":reg" doesn't show the actual contents of the clipboard if it was
+	    filled outside of Vim. (Stuart MacDonald)
+Solution:   Obtain the clipboard contents before displaying it.
+Files:	    src/ops.c
+
+Patch 6.2.341 (extra)
+Problem:    Win32: When the path to diff.exe contains a space and using the
+	    vimrc generated by the install program, diff mode does not work.
+Solution:   Put the first double quote just before the space instead of before
+	    the path.
+Files:	    src/dosinst.c
+
+Patch 6.2.342 (extra)
+Problem:    Win32: macros are not always used as expected.
+Solution:   Define WINVER to 0x0400 instead of 0x400. (Alejandro
+	    Lopez-Valencia)
+Files:	    src/Make_bc5.mak, src/Make_cyg.mak, src/Make_mvc.mak
+
+Patch 6.2.343
+Problem:    Title doesn't work with some window managers.  X11: Setting the
+	    text property for the window title is hard coded.
+Solution:   Use STRING format when possible.  Use the UTF-8 function when
+	    it's available and 'encoding' is utf-8. Use
+	    XStringListToTextProperty().  Do the same for the icon name.
+	    (David Harrison)
+Files:	    src/os_unix.c
+
+Patch 6.2.344 (extra, after 6.2.337)
+Problem:    Cannot build gvimext.dll with MingW on Linux.
+Solution:   Add support for cross compiling. (Ronald Hoellwarth)
+Files:	    src/GvimExt/Make_ming.mak
+
+Patch 6.2.345 (extra)
+Problem:    Win32: Copy/paste between two Vims fails if 'encoding' is not set
+	    properly or there are illegal bytes.
+Solution:   Use a raw byte format.  Always set it when copying.  When pasting
+	    use the raw format if 'encoding' is the same.
+Files:	    src/os_mswin.c, src/os_win16.c, src/os_win32.c, src/vim.h
+
+Patch 6.2.346
+Problem:    Win32 console: After using "chcp" Vim does not detect the
+	    different codepage.
+Solution:   Use GetConsoleCP() and when it is different from GetACP() set
+	    'termencoding'.
+Files:	    src/option.c
+
+Patch 6.2.347 (extra)
+Problem:    Win32: XP theme support is missing.
+Solution:   Add a manifest and refer to it from the resource file.  (Michael
+	    Wookey)
+Files:	    Makefile, src/gvim.exe.mnf, src/vim.rc
+
+Patch 6.2.348
+Problem:    Win32: "vim c:\dir\(test)" doesn't work, because the 'isfname'
+	    default value doesn't contain parenthesis.
+Solution:   Temporarily add '(' and ')' to 'isfname' when expanding file name
+	    arguments.
+Files:	    src/main.c
+
+Patch 6.2.349
+Problem:    Finding a match using 'matchpairs' may cause a crash.
+	    'matchpairs' is not used for 'showmatch'.
+Solution:   Don't look past the NUL in 'matchpairs'.  Use 'matchpairs' for
+	    'showmatch'. (Dave Olszewkski)
+Files:	    src/misc1.c, src/normal.c, src/proto/search.pro, src/search.c
+
+Patch 6.2.350
+Problem:    Not enough info about startup timing.
+Solution:   Add a few more TIME_MSG() calls.
+Files:	    src/main.c
+
+Patch 6.2.351
+Problem:    Win32: $HOME may be set to %USERPROFILE%.
+Solution:   Expand %VAR% at the start of $HOME.
+Files:	    src/misc1.c
+
+Patch 6.2.352 (after 6.2.335)
+Problem:    ":sign texthl=||" does not work.
+Solution:   Remove the check for a following command.  Give an error for extra
+	    arguments after "buff=1".
+Files:	    src/ex_cmds.c, src/ex_cmds.h
+
+Patch 6.2.353 (extra)
+Problem:    Win32: Supported server name length is limited. (Paul Bossi)
+Solution:   Use MAX_PATH instead of 25.
+Files:	    src/os_mswin.c
+
+Patch 6.2.354 (extra)
+Problem:    Win32: When the mouse pointer is on a tear-off menu it is hidden
+	    when typing but is not redisplayed when moved. (Markx Hackmann)
+Solution:   Handle the pointer move event for the tear-off menu window.
+Files:	    src/gui_w32.c
+
+Patch 6.2.355 (after 6.2.303)
+Problem:    When 'encoding' is a double-byte encoding different from the
+	    current locale, the width of characters is not correct.
+	    Possible failure and memory leak when using iconv, Unicode
+	    digraphs and 'encoding' is not "utf-8".
+Solution:   Use iconv() to discover the actual width of characters.
+	    Add the "vc_fail" field to vimconv_T.
+	    When converting a digraph, init the conversion type to NONE and
+	    cleanup afterwards.
+Files:	    src/digraph.c, src/mbyte.c, src/structs.h
+
+Patch 6.2.356
+Problem:    When using a double-byte 'encoding' and 'selection' is
+	    "exclusive", "vy" only yanks the first byte of a double-byte
+	    character.  (Xiangjiang Ma)
+Solution:   Correct the column in unadjust_for_sel() to position on the first
+	    byte, always include the trailing byte of the selected text.
+Files:	    src/normal.c
+
+Patch 6.2.357 (after 6.2.321)
+Problem:    Memory leak when resizing the Vim window.
+Solution:   Free the LineWraps array.
+Files:	    src/screen.c
+
+Patch 6.2.358 (after 6.2.299)
+Problem:    Memory leak when using ":help" and the language doesn't match.
+Solution:   Free the array with matching tags.
+Files:	    src/ex_cmds.c
+
+Patch 6.2.359 (after 6.2.352)
+Problem:    Compiler warning for long to int type cast.
+Solution:   Add explicit type cast.
+Files:	    src/ex_cmds.c
+
+Patch 6.2.360
+Problem:    "100|" in an empty line results in a ruler "1,0-100". (Pavol
+	    Juhas)
+Solution:   Recompute w_virtcol if the target column was not reached.
+Files:	    src/misc2.c
+
+Patch 6.2.361 (extra)
+Problem:    Win32: Run gvim, ":set go-=m", use Alt-Tab, keep Alt pressed while
+	    pressing Esc, then release Alt: Cursor disappears and typing a key
+	    causes a beep. (Hari Krishna Dara)
+Solution:   Don't ignore the WM_SYSKEYUP event when the menu is disabled.
+Files:	    src/gui_w32.c
+
+Patch 6.2.362 (extra, after 6.2.347)
+Problem:    Win32: The manifest causes Gvim not to work. (Dave Roberts)
+Solution:   Change "x86" to "X86". (Serge Pirotte)
+Files:	    src/gvim.exe.mnf
+
+Patch 6.2.363
+Problem:    In an empty file with 'showmode' off, "i" doesn't change the ruler
+	    from "0-1" to "1".  Typing "x<BS>" does show "1", but then <Esc>
+	    doesn't make it "0-1" again.  Same problem for ruler in
+	    statusline.  (Andrew Pimlott)
+Solution:   Remember the "empty line" flag with Insert mode and'ed to it.
+Files:	    src/screen.c
+
+Patch 6.2.364
+Problem:    HTML version of the documentation doesn't mention the encoding,
+	    which is a problem for mbyte.txt.
+Solution:   Adjust the awk script. (Ilya Sher)
+Files:	    runtime/doc/makehtml.awk
+
+Patch 6.2.365
+Problem:    The configure checks for Perl and Python may add compile and link
+	    arguments that break building Vim.
+Solution:   Do a sanity check: try building with the arguments.
+Files:	    src/auto/configure, src/configure.in
+
+Patch 6.2.366
+Problem:    When the GUI can't start because no valid font is found, there is
+	    no error message. (Ugen)
+Solution:   Add an error message.
+Files:	    src/gui.c
+
+Patch 6.2.367
+Problem:    Building the help tags file while installing may fail if there is
+	    another Vim in $PATH.
+Solution:   Specify the just installed Vim executable. (Gordon Prieur)
+Files:	    src/Makefile
+
+Patch 6.2.368
+Problem:    When 'autochdir' is set, closing a window doesn't change to the
+	    directory of the new current window. (Salman Halim)
+Solution:   Handle 'autochdir' always when a window becomes the current one.
+Files:	    src/window.c
+
+Patch 6.2.369
+Problem:    Various memory leaks: when using globpath(), when searching for
+	    help tags files, when defining a function inside a function, when
+	    giving an error message through an exception, for the final "."
+	    line in ":append", in expression "cond ? a : b" that fails and for
+	    missing ")" in an expression.  Using NULL pointer when adding
+	    first user command and for pointer computations with regexp.
+	    (tests by Dominique Pelle)
+Solution:   Fix the leaks by freeing the allocated memory.  Don't use the
+	    array of user commands when there are no entries.  Use a macro
+	    instead of a function call for saving and restoring regexp states.
+Files:	    src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c,
+	    src/misc2.c, src/regexp.c, src/screen.c, src/tag.c
+
+Patch 6.2.370 (extra, after6.2.341)
+Problem:    Win32: When the path to diff.exe contains a space and using the
+	    vimrc generated by the install program, diff mode may not work.
+	    (Alejandro Lopez-Valencia)
+Solution:   Do not use double quotes for arguments that do not have a space.
+Files:	    src/dosinst.c
+
+Patch 6.2.371
+Problem:    When 'virtualedit' is set and there is a Tab before the next "x",
+	    "dtx" does not delete the whole Tab. (Ken Hashishi)
+Solution:   Move the cursor to the last position of the Tab.  Also for
+	    "df<Tab>".
+Files:	    src/normal.c
+
+Patch 6.2.372
+Problem:    When using balloon evaluation, no value is displayed for members
+	    of structures and items of an array.
+Solution:   Include "->", "." and "[*]" in the expression.
+Files:	    src/gui_beval.c, src/normal.c, src/vim.h
+
+Patch 6.2.373
+Problem:    When 'winminheight' is zero and a window is reduced to zero
+	    height, the ruler always says "Top" instead of the cursor
+	    position. (Antoine J. Mechelynck)
+Solution:   Don't recompute w_topline for a zero-height window.
+Files:	    src/window.c
+
+Patch 6.2.374
+Problem:    ":echo "hello" | silent normal n" removes the "hello" message.
+	    (Servatius Brandt)
+Solution:   Don't echo the search string when ":silent" was used.  Also don't
+	    show the mode.  In general: don't clear to the end of the screen.
+Files:	    src/gui.c, src/message.c, src/os_unix.c, src/proto/message.pro,
+	    src/screen.c, src/search.c, src/window.c
+
+Patch 6.2.375
+Problem:    When changing 'guioptions' the hit-enter prompt may be below the
+	    end of the Vim window.
+Solution:   Call screen_alloc() before showing the prompt.
+Files:	    src/message.c
+
+Patch 6.2.376
+Problem:    Win32: Ruby interface cannot be dynamically linked with Ruby 1.6.
+Solution:   Add #ifdefs around use of rb_w32_snprintf().  (Benoît Cerrina)
+Files:	    src/if_ruby.c
+
+Patch 6.2.377 (after 6.2.372)
+Problem:    Compiler warnings for signed/unsigned compare. (Michael Wookey)
+Solution:   Add type cast.
+Files:	    src/normal.c
+
+Patch 6.2.378 (extra, after 6.2.118)
+Problem:    Mac: cannot build with Project Builder.
+Solution:   Add remove_tail_with_ext() to locate and remove the "build"
+	    directory from the runtime path.  Include os_unix.c when needed.
+	    (Dany St Amant)
+Files:	    src/misc1.c, src/os_macosx.c, src/vim.h
+
+Patch 6.2.379
+Problem:    Using ":mkvimrc" in the ":options" window sets 'bufhidden' to
+	    "delete". (Michael Naumann)
+Solution:   Do not add buffer-specific option values to a global vimrc file.
+Files:	    src/option.c
+
+Patch 6.2.380 (extra)
+Problem:    DOS: "make test" fails when running it again.  Can't "make test"
+	    with Borland C.
+Solution:   Make sure ".out" files are deleted when they get in the way.  Add
+	    a "test" target to the Borland C Makefile.
+Files:	    src/Make_bc5.mak, src/testdir/Make_dos.mak
+
+Patch 6.2.381
+Problem:    Setting 'fileencoding' to a comma separated list (confusing it
+	    with 'fileencodings') does not result in an error message.
+	    Setting 'fileencoding' in an empty file marks it as modified.
+	    There is no "+" in the title after setting 'fileencoding'.
+Solution:   Check for a comma in 'fileencoding'.  Only consider a non-empty
+	    file modified by changing 'fileencoding'.  Update the title after
+	    changing 'fileencoding'.
+Files:	    src/option.c
+
+Patch 6.2.382
+Problem:    Running "make test" puts marks from test files in viminfo.
+Solution:   Specify a different viminfo file to use.
+Files:	    src/testdir/test15.in, src/testdir/test49.in
+
+Patch 6.2.383
+Problem:    ":hi foo term='bla" crashes Vim. (Antony Scriven)
+Solution:   Check that the closing ' is there.
+Files:	    src/syntax.c
+
+Patch 6.2.384
+Problem:    ":menu a.&b" ":unmenu a.b" only works if "&b" isn't translated.
+Solution:   Also compare the names without '&' characters.
+Files:	    src/menu.c
+
+Patch 6.2.385  (extra)
+Problem:    Win32: forward_slash() and trash_input_buf() are undefined when
+	    compiling with small features. (Ajit Thakkar)
+Solution:   Change the #ifdefs for forward_slash().  Don't call
+	    trash_input_buf() if the input buffer isn't used.
+Files:	    src/fileio.c, src/os_win32.c
+
+Patch 6.2.386
+Problem:    Wasting time trying to read marks from the viminfo file for a
+	    buffer without a name.
+Solution:   Skip reading marks when the buffer has no name.
+Files:	    src/fileio.c
+
+Patch 6.2.387
+Problem:    There is no highlighting of translated items in help files.
+Solution:   Search for a "help_ab.vim" syntax file when the help file is
+	    called "*.abx".  Also improve the help highlighting a bit.
+Files:	    runtime/syntax/help.vim
+
+Patch 6.2.388
+Problem:    GTK: When displaying some double-width characters they are drawn
+	    as single-width, because of conversion to UTF-8.
+Solution:   Check the width that GTK uses and add a space if it's one instead
+	    of two.
+Files:	    src/gui_gtk_x11.c
+
+Patch 6.2.389
+Problem:    When working over a slow connection, it's very annoying that the
+	    last line is partly drawn and then cleared for every change.
+Solution:   Don't redraw the bottom line if no rows were inserted or deleted.
+	    Don't draw the line if we know "@" lines will be used.
+Files:	    src/screen.c
+
+Patch 6.2.390
+Problem:    Using "r*" in Visual mode on multi-byte characters only replaces
+	    every other character. (Tyson Roberts)
+Solution:   Correct the cursor position after replacing each character.
+Files:	    src/ops.c
+
+Patch 6.2.391 (extra)
+Problem:    The ":highlight" command is not tested.
+Solution:   Add a test script for ":highlight".
+Files:	    src/testdir/Makefile, src/testdir/Make_amiga.mak,
+	    src/testdir/Make_dos.mak, src/testdir/Make_os2.mak,
+	    src/testdir/Make_vms.mms, src/testdir/test51.in,
+	    src/testdir/test51.ok
+
+Patch 6.2.392 (after 6.2.384)
+Problem:    Unused variable.
+Solution:   Remove "dlen".
+Files:	    src/menu.c
+
+Patch 6.2.393
+Problem:    When using very long lines the viminfo file can become very big.
+Solution:   Add the "s" flag to 'viminfo': skip registers with more than the
+	    specified Kbyte of text.
+Files:	    runtime/doc/options.txt, src/ops.c, src/option.c
+
+Patch 6.2.394  (after 6.2.391)
+Problem:    Test 51 fails on a terminal with 8 colors. (Tony Leneis)
+Solution:   Use "DarkBlue" instead of "Blue" to avoid the "bold" attribute.
+Files:	    src/testdir/test51.in
+
+Patch 6.2.395
+Problem:    When using ":tag" or ":pop" the previous matching tag is used.
+	    But since the current file is different, the ordering of the tags
+	    may change.
+Solution:   Remember what the current buffer was for when re-using cur_match.
+Files:	    src/edit.c, src/ex_cmds.c, src/proto/tag.pro, src/structs.h,
+	    src/tag.c
+
+Patch 6.2.396
+Problem:    When CTRL-T jumps to another file and an autocommand moves the
+	    cursor to the '" mark, don't end up on the right line.  (Michal
+	    Malecki)
+Solution:   Set the line number after loading the file.
+Files:	    src/tag.c
+
+Patch 6.2.397
+Problem:    When using a double-byte 'encoding' mapping <M-x> doesn't work.
+	    (Yasuhiro Matsumoto)
+Solution:   Do not set the 8th bit of the character but use a modifier.
+Files:	    src/gui_gtk_x11.c, src/gui_x11.c, src/misc2.c
+
+Patch 6.2.398 (extra)
+Problem:    Win32 console: no extra key modifiers are supported.
+Solution:   Encode the modifiers into the input stream.  Also fix that special
+	    keys are converted and stop working when 'tenc' is set.  Also fix
+	    that when 'tenc' is intialized the input and output conversion is
+	    not setup properly until 'enc' or 'tenc' is set.
+Files:	    src/getchar.c, src/option.c, src/os_win32.c
+
+Patch 6.2.399
+Problem:    A ":set" command that fails still writes a message when it is
+	    inside a try/catch block.
+Solution:   Include all the text of the message in the error message.
+Files:	    src/charset.c, src/option.c
+
+Patch 6.2.400
+Problem:    Can't compile if_xcmdsrv.c on HP-UX 11.0.
+Solution:   Include header file poll.h. (Malte Neumann)
+Files:	    src/if_xcmdsrv.c
+
+Patch 6.2.401
+Problem:    When opening a buffer that was previously opened, Vim does not
+	    restore the cursor position if the first line starts with white
+	    space.  (Gregory Margo)
+Solution:   Don't skip restoring the cursor position if it is past the blanks
+	    in the first line.
+Files:	    src/buffer.c
+
+Patch 6.2.402
+Problem:    Mac: "make install" doesn't generate help tags. (Benji Fisher)
+Solution:   Generate help tags before copying the runtime files.
+Files:	    src/Makefile
+
+Patch 6.2.403
+Problem:    ":@y" checks stdin if there are more commands to execute.  This
+	    fails if stdin is not connected, e.g., when starting the GUI from
+	    KDE. (Ned Konz)
+Solution:   Only check for a next command if there still is typeahead.
+Files:	    src/ex_docmd.c
+
+Patch 6.2.404
+Problem:    Our own function to determine width of Unicode characters may get
+	    outdated. (Markus Kuhn)
+Solution:   Use wcwidth() when it is available.  Also use iswprint().
+Files:	    src/auto/configure, src/configure.in, src/config.h.in, src/mbyte.c
+
+Patch 6.2.405
+Problem:    Cannot map zero without breaking the count before a command.
+	    (Benji Fisher)
+Solution:   Disable mapping zero when entering a count.
+Files:	    src/getchar.c, src/globals.h, src/normal.c
+
+Patch 6.2.406
+Problem:    ":help \zs", ":help \@=" and similar don't find useful help.
+Solution:   Prepend "/\" to the arguments to find the desired help tag.
+Files:	    src/ex_cmds.c
+
+Patch 6.2.407 (after 6.2.299)
+Problem:    ":help \@<=" doesn't find help.
+Solution:   Avoid that ":help \@<=" searches for the "<=" language.
+Files:	    src/tag.c
+
+Patch 6.2.408
+Problem:    ":compiler" is not consistent: Sets local options and a global
+	    variable. (Douglas Potts)  There is no error message when a
+	    compiler is not supported.
+Solution:   Use ":compiler!" to set a compiler globally, otherwise it's local
+	    to the buffer and "b:current_compiler" is used.  Give an error
+	    when no compiler script could be found.
+	    Note: updated compiler plugins can be found at
+	    ftp://ftp.vim.org/pub/vim/runtime/compiler/
+Files:	    runtime/compiler/msvc.vim, runtime/doc/quickfix.txt, src/eval.c,
+	    src/ex_cmds2.c
+
+Patch 6.2.409
+Problem:    The cursor ends up in the last column instead of after the line
+	    when doing "i//<Esc>o" with 'indentexpr' set to "cindent(v:lnum)".
+	    (Toby Allsopp)
+Solution:   Adjust the cursor as if in Insert mode.
+Files:	    src/misc1.c
+
+Patch 6.2.410 (after 6.2.389)
+Problem:    In diff mode, when there are more filler lines than fit in the
+	    window, they are not drawn.
+Solution:   Check for filler lines when skipping to draw a line that doesn't
+	    fit.
+Files:	    src/screen.c
+
+Patch 6.2.411
+Problem:    A "\n" inside a string is not seen as a line break by the regular
+	    expression matching. (Hari Krishna Dara)
+Solution:   Add the vim_regexec_nl() function for strings where "\n" is to be
+	    matched with a line break.
+Files:	    src/eval.c, src/ex_eval.c, src/proto/regexp.c, src/regexp.c
+
+Patch 6.2.412
+Problem:    Ruby: "ruby << EOF" inside a function doesn't always work.  Also
+	    for ":python", ":tcl" and ":perl".
+Solution:   Check for "<< marker" and skip until "marker" before checking for
+	    "endfunction".
+Files:	    src/eval.c
+
+Patch 6.2.413 (after 6.2.411)
+Problem:    Missing prototype for vim_regexec_nl(). (Marcel Svitalsky)
+Solution:   Now really include the prototype.
+Files:	    src/proto/regexp.pro
+
+Patch 6.2.414
+Problem:    The function used for custom completion of user commands cannot
+	    have <SID> to make it local. (Hari Krishna Dara)
+Solution:   Pass the SID of the script where the user command was defined on
+	    to the completion.  Also clean up #ifdefs.
+Files:	    src/ex_docmd.c, src/eval.c, src/ex_getln.c, src/structs.h
+
+Patch 6.2.415
+Problem:    Vim may crash after a sequence of events that change the window
+	    size.  The window layout assumes a larger window than is actually
+	    available. (Servatius Brandt)
+Solution:   Invoke win_new_shellsize() from screenalloc() instead of from
+	    set_shellsize().
+Files:	    src/screen.c, src/term.c
+
+Patch 6.2.416
+Problem:    Compiler warning for incompatible pointer.
+Solution:   Remove the "&" in the call to poll(). (Xavier de Gaye)
+Files:	    src/os_unix.c
+
+Patch 6.2.417 (after 6.2.393)
+Problem:    Many people forget that the '"' item in 'viminfo' needs to be
+	    preceded with a backslash,
+Solution:   Add '<' as an alias for the '"' item.
+Files:	    runtime/doc/options.txt, src/ops.c, src/option.c
+
+Patch 6.2.418
+Problem:    Using ":nnoremap <F12> :echo "cheese" and ":cabbr cheese xxx":
+	    when pressing <F12> still uses the abbreviation. (Hari Krishna)
+Solution:   Also apply "noremap" to abbreviations.
+Files:	    src/getchar.c
+
+Patch 6.2.419 (extra)
+Problem:    Win32: Cannot open the Vim window inside another application.
+Solution:   Add the "-P" argument to specify the window title of the
+	    application to run inside. (Zibo Zhao)
+Files:	    runtime/doc/starting.txt, src/main.c, src/gui_w32.c,
+	    src/gui_w48.c, src/if_ole.cpp, src/os_mswin.c,
+	    src/proto/gui_w32.pro
+
+Patch 6.2.420
+Problem:    Cannot specify a file to be edited in binary mode without setting
+	    the global value of the 'binary' option.
+Solution:   Support ":edit ++bin file".
+Files:	    runtime/doc/editing.txt, src/buffer.c, src/eval.c, src/ex_cmds.h,
+	    src/ex_docmd.c, src/fileio.c, src/misc2.c
+
+Patch 6.2.421
+Problem:    Cannot set the '[ and '] mark, which may be necessary when an
+	    autocommand simulates reading a file.
+Solution:   Allow using "m[" and "m]".
+Files:	    runtime/doc/motion.txt, src/mark.c
+
+Patch 6.2.422
+Problem:    In CTRL-X completion messages the "/" makes them less readable.
+Solution:   Remove the slashes. (Antony Scriven)
+Files:	    src/edit.c
+
+Patch 6.2.423
+Problem:    ":vertical wincmd ]" does not split vertically.
+Solution:   Add "postponed_split_flags".
+Files:	    src/ex_docmd.c, src/globals.h, src/if_cscope.c, src/tag.c
+
+Patch 6.2.424
+Problem:    A BufEnter autocommand that sets an option stops 'mousefocus' from
+	    working in Insert mode (Normal mode is OK). (Gregory Seidman)
+Solution:   In the Insert mode loop invoke gui_mouse_correct() when needed.
+Files:	    src/edit.c
+
+Patch 6.2.425
+Problem:    Vertical split and command line window: can only drag status line
+	    above the cmdline window on the righthand side, not lefthand side.
+Solution:   Check the status line row instead of the window pointer.
+Files:	    src/ui.c
+
+Patch 6.2.426
+Problem:    A syntax region end match with a matchgroup that includes a line
+	    break only highlights the last line with matchgroup. (Gary
+	    Holloway)
+Solution:   Also use the line number of the position where the region
+	    highlighting ends.
+Files:	    src/syntax.c
+
+Patch 6.2.427 (extra)
+Problem:    When pasting a lot of text in a multi-byte encoding, conversion
+	    from 'termencoding' to 'encoding' may fail for some characters.
+	    (Kuang-che Wu)
+Solution:   When there is an incomplete byte sequence at the end of the read
+	    text keep it for the next time.
+Files:	    src/mbyte.c, src/os_amiga.c, src/os_mswin.c, src/proto/mbyte.pro,
+	    src/proto/os_mswin.pro, src/ui.c
+
+Patch 6.2.428
+Problem:    The X11 clipboard supports the Vim selection for char/line/block
+	    mode, but since the encoding is not included  can't copy/paste
+	    between two Vims with a different 'encoding'.
+Solution:   Add a new selection format that includes the 'encoding'.  Perform
+	    conversion when necessary.
+Files:	    src/gui_gtk_x11.c, src/ui.c, src/vim.h
+
+Patch 6.2.429
+Problem:    Unix: glob() doesn't work for a directory with a single quote in
+	    the name. (Nazri Ramliy)
+Solution:   When using the shell to expand, only put double quotes around
+	    spaces and single quotes, not the whole thing.
+Files:	    src/os_unix.c
+
+Patch 6.2.430
+Problem:    BOM at start of a vim script file is not recognized and causes an
+	    error message.
+Solution:   Detect the BOM and skip over it.  Also fix that after using
+	    ":scriptencoding" the iconv() file descriptor was not closed
+	    (memory leak).
+Files:	    src/ex_cmds2.c
+
+Patch 6.2.431
+Problem:    When using the horizontal scrollbar, the scrolling is limited to
+	    the length of the cursor line.
+Solution:   Make the scroll limit depend on the longest visible line.  The
+	    cursor is moved when necessary.  Including the 'h' flag in
+	    'guioptions' disables this.
+Files:	    runtime/doc/gui.txt, runtime/doc/options.txt, src/gui.c,
+	    src/misc2.c, src/option.h
+
+Patch 6.2.432 (after 6.2.430 and 6.2.431)
+Problem:    Lint warnings.
+Solution:   Add type casts.
+Files:	    src/ex_cmds2.c, src/gui.c
+
+Patch 6.2.433
+Problem:    Translating "VISUAL" and "BLOCK" separately doesn't give a good
+	    result. (Alejandro Lopez Valencia)
+Solution:   Use a string for each combination.
+Files:	    src/screen.c
+
+Patch 6.2.434 (after 6.2.431)
+Problem:    Compiler warning. (Salman Halim)
+Solution:   Add type casts.
+Files:	    src/gui.c
+
+Patch 6.2.435
+Problem:    When there are vertically split windows the minimal Vim window
+	    height is computed wrong.
+Solution:   Use frame_minheight() to correctly compute the minimal height.
+Files:	    src/window.c
+
+Patch 6.2.436
+Problem:    Running the tests changes the user's viminfo file.
+Solution:   In test 49 tell the extra Vim to use the test viminfo file.
+Files:	    src/testdir/test49.vim
+
+Patch 6.2.437
+Problem:    ":mksession" always puts "set nocompatible" in the session file.
+	    This changes option settings. (Ron Aaron)
+Solution:   Add an "if" to only change 'compatible' when needed.
+Files:	    src/ex_docmd.c
+
+Patch 6.2.438
+Problem:    When the 'v' flag is present in 'cpoptions', backspacing and then
+	    typing text again: one character too much is overtyped before
+	    inserting is done again.
+Solution:   Set "dollar_vcol" to the right column.
+Files:	    src/edit.c
+
+Patch 6.2.439
+Problem:    GTK 2: Changing 'lines' may cause a mismatch between the window
+	    layout and the size of the window.
+Solution:   Disable the hack with force_shell_resize_idle().
+Files:	    src/gui_gtk_x11.c
+
+Patch 6.2.440
+Problem:    When 'lazyredraw' is set the window title is still updated.
+	    The size of the Visual area and the ruler are displayed too often.
+Solution:   Postpone redrawing the window title.  Only show the Visual area
+	    size when waiting for a character.  Don't draw the ruler
+	    unnecessary.
+Files:	    src/buffer.c, src/normal.c, src/screen.c
+
+Patch 6.2.441
+Problem:    ":unabbreviate foo " doesn't work, because of the trailing space,
+	    while an abbreviation with a trailing space is not possible. (Paul
+	    Jolly)
+Solution:   Accept a match with the lhs of an abbreviation without the
+	    trailing space.
+Files:	    src/getchar.c
+
+Patch 6.2.442
+Problem:    Cannot manipulate the command line from a function.
+Solution:   Add getcmdline(), getcmdpos() and setcmdpos() functions and the
+	    CTRL-\ e command.
+Files:	    runtime/doc/cmdline.txt, runtime/doc/eval.txt, src/eval.c
+	    src/ex_getln.c, src/ops.c, src/proto/ex_getln.pro,
+	    src/proto/ops.pro
+
+Patch 6.2.443
+Problem:    With ":silent! echoerr something" you don't get the position of
+	    the error.  emsg() only writes the message itself and returns.
+Solution:   Also redirect the position of the error.
+Files:	    src/message.c
+
+Patch 6.2.444
+Problem:    When adding the 'c' flag to a ":substitute" command it may replace
+	    more times than without the 'c' flag.  Happens for a  match that
+	    starts with "\ze" (Marcel Svitalsk) and when using "\@<=" (Klaus
+	    Bosau).
+Solution:   Correct "prev_matchcol" when replacing the line.  Don't replace
+	    the line when the pattern uses look-behind matching.
+Files:	    src/ex_cmds.c, src/proto/regexp.pro, src/regexp.c
+
+Patch 6.2.445
+Problem:    Copying vimtutor to /tmp/something is not secure, a symlink may
+	    cause trouble.
+Solution:   Create a directory and create the file in it.  Use "umask" to
+	    create the directory with mode 700.  (Stefan Nordhausen)
+Files:	    src/vimtutor
+
+Patch 6.2.446 (after 6.2.404)
+Problem:    Using library functions wcwidth() and iswprint() results in
+	    display problems for Hebrew characters. (Ron Aaron)
+Solution:   Disable the code to use the library functions, use our own.
+Files:	    src/mbyte.c
+
+Patch 6.2.447 (after 6.2.440)
+Problem:    Now that the title is only updated when redrawing, it is no longer
+	    possible to show it while executing a function. (Madoka Machitani)
+Solution:   Make ":redraw" also update the title.
+Files:	    src/ex_docmd.c
+
+Patch 6.2.448 (after 6.2.427)
+Problem:    Mac: conversion done when 'termencoding' differs from 'encoding'
+	    fails when pasting a longer text.
+Solution:   Check for an incomplete sequence at the end of the chunk to be
+	    converted. (Eckehard Berns)
+Files:	    src/mbyte.c
+
+Patch 6.2.449 (after 6.2.431)
+Problem:    Get error messages when switching files.
+Solution:   Check for a valid line number when calculating the width of the
+	    horizontal scrollbar. (Helmut Stiegler)
+Files:	    src/gui.c
+
+Patch 6.2.450
+Problem:    "  #include" and "  #define" are not recognized with the default
+	    option values for 'include' and 'defined'. (RG Kiran)
+Solution:   Adjust the default values to allow white space before the #.
+Files:	    runtime/doc/options.txt, src/option.c
+
+Patch 6.2.451
+Problem:    GTK: when using XIM there are various problems, including setting
+	    'modified' and breaking undo at the wrong moment.
+Solution:   Add "xim_changed_while_preediting", "preedit_end_col" and
+	    im_is_preediting(). (Yasuhiro Matsumoto)
+Files:	    src/ex_getln.c, src/globals.h, src/gui_gtk.c, src/gui_gtk_x11.c,
+	    src/mbyte.c, src/misc1.c, src/proto/mbyte.pro, src/screen.c,
+	    src/undo.c
+
+Patch 6.2.452
+Problem:    In diff mode, when DiffAdd and DiffText highlight settings are
+	    equal, an added line is highlighted with DiffChange. (Tom Schumm)
+Solution:   Remember the diff highlight type instead of the attributes.
+Files:	    src/screen.c
+
+Patch 6.2.453
+Problem:    ":s/foo\|\nbar/x/g" does not replace two times in "foo\nbar".
+	    (Pavel Papushev)
+Solution:   When the pattern can match a line break also try matching at the
+	    NUL at the end of a line.
+Files:	    src/ex_cmds.c, src/regexp.c
+
+Patch 6.2.454
+Problem:    ":let b:changedtick" doesn't work. (Alan Schmitt)  ":let
+	    b:changedtick = 99" does not give an error message.
+Solution:   Add code to recognize ":let b:changedtick".
+Files:	    src/eval.c
+
+Patch 6.2.455 (after 6.2.297)
+Problem:    In Python commands the current locale changes how certain Python
+	    functions work. (Eugene M. Minkovskii)
+Solution:   Set the LC_NUMERIC locale to "C" while executing a Python command.
+Files:	    src/if_python.c
+
+Patch 6.2.456 (extra)
+Problem:    Win32: Editing a file by its Unicode name (dropping it on Vim or
+	    using the file selection dialog) doesn't work. (Yakov Lerner, Alex
+	    Jakushev)
+Solution:   Use wide character functions when file names are involved and
+	    convert from/to 'encoding' where needed.
+Files:	    src/gui_w48.c, src/macros.h, src/memfile.c, src/memline.c,
+	    src/os_mswin.c, src/os_win32.c
+
+Patch 6.2.457 (after 6.2.244)
+Problem:    When 'encoding' is "utf-8" and writing text with chars above 0x80
+	    in latin1, conversion is wrong every 8200 bytes. (Oyvind Holm)
+Solution:   Correct the utf_ptr2len_check_len() function and fix the problem
+	    of displaying 0xf7 in utfc_ptr2len_check_len().
+Files:	    src/mbyte.c
+
+Patch 6.2.458
+Problem:    When 'virtualedit' is set "$" doesn't move to the end of an
+	    unprintable character, causing "y$" not to include that character.
+	    (Fred Ma)
+Solution:   Set "coladd" to move the cursor to the end of the character.
+Files:	    src/misc2.c
+
+Patch 6.2.459 (after 6.2.454)
+Problem:    Variable "b" cannot be written. (Salman Halim)
+Solution:   Compare strings properly.
+Files:	    src/eval.c
+
+Patch 6.2.460 (extra, after 6.2.456)
+Problem:    Compiler warnings for missing prototypes.
+Solution:   Include the missing prototypes.
+Files:	    src/proto/os_win32.pro
+
+Patch 6.2.461
+Problem:    After using a search command "x" starts putting single characters
+	    in the numbered registers.
+Solution:   Reset "use_reg_one" at the right moment.
+Files:	    src/normal.c
+
+Patch 6.2.462
+Problem:    Finding a matching parenthesis does not correctly handle a
+	    backslash in a trailing byte.
+Solution:   Handle multi-byte characters correctly. (Taro Muraoka)
+Files:	    src/search.c
+
+Patch 6.2.463 (extra)
+Problem:    Win32: An NTFS file system may contain files with extra info
+	    streams.  The current method to copy them creates one and then
+	    deletes it again.  (Peter Toennies)  Also, only three streams with
+	    hard coded names are copied.
+Solution:   Use BackupRead() to check which info streams the original file
+	    contains and only copy these streams.
+Files:	    src/os_win32.c
+
+Patch 6.2.464 (extra, after 6.2.427)
+Problem:    Amiga: Compilation error with gcc. (Ali Akcaagac)
+Solution:   Move the #ifdef outside of Read().
+Files:	    src/os_amiga.c
+
+Patch 6.2.465
+Problem:    When resizing the GUI window the window manager sometimes moves it
+	    left of or above the screen. (Michael McCarty)
+Solution:   Check the window position after resizing it and move it onto the
+	    screen when it isn't.
+Files:	    src/gui.c
+
+Patch 6.2.466 (extra, after 6.2.456)
+Problem:    Win32: Compiling with Borland C fails, and an un/signed warning.
+Solution:   Redefine wcsicmp() to wcscmpi() and add type casts. (Yasuhiro
+	    Matsumoto)
+Files:	    src/os_win32.c
+
+Patch 6.2.467 (extra, after 6.2.463)
+Problem:    Win32: can't compile without multi-byte feature. (Ajit Thakkar)
+Solution:   Add #ifdefs around the info stream code.
+Files:	    src/os_win32.c
+
+Patch 6.2.468
+Problem:    Compiler warnings for shadowed variables. (Matthias Mohr)
+Solution:   Delete superfluous variables and rename others.
+Files:	    src/eval.c, src/ex_docmd.c, src/ex_eval.c, src/if_cscope.c,
+	    src/fold.c, src/option.c, src/os_unix.c, src/quickfix.c,
+	    src/regexp.c
+
+Patch 6.2.469 (extra, after 6.2.456)
+Problem:    Win32: Can't create swap file when 'encoding' differs from the
+	    active code page. (Kriton Kyrimis)
+Solution:   In enc_to_ucs2() terminate the converted string with a NUL
+Files:	    src/os_mswin.c
+
+Patch 6.2.470
+Problem:    The name returned by tempname() may be equal to the file used for
+	    shell output when ignoring case.
+Solution:   Skip 'O' and 'I' in tempname().
+Files:	    src/eval.c
+
+Patch 6.2.471
+Problem:    "-L/usr/lib" is used in the link command, even though it's
+	    supposed to be filtered out. "-lw" and "-ldl" are not
+	    automatically added when needed for "-lXmu". (Antonio Colombo)
+Solution:   Check for a space after the argument instead of before.  Also
+	    remove "-R/usr/lib" if it's there.  Check for "-lw" and "-ldl"
+	    before trying "-lXmu".
+Files:	    src/auto/configure, src/configure.in, src/link.sh
+
+Patch 6.2.472
+Problem:    When using a FileChangedShell autocommand that changes the current
+	    buffer, a buffer exists that can't be wiped out.
+	    Also, Vim sometimes crashes when executing an external command
+	    that changes the buffer and a FileChangedShell autocommand is
+	    used.  (Hari Krishna Dara)
+	    Users are confused by the warning for a file being changed outside
+	    of Vim.
+Solution:   Avoid that the window counter for a buffer is incremented twice.
+	    Avoid that buf_check_timestamp() is used recursively.
+	    Add a hint to look in the help for more info.
+Files:	    src/ex_cmds.c, src/fileio.c
+
+Patch 6.2.473
+Problem:    Using CTRL-] in a help buffer without a name causes a crash.
+Solution:   Check for name to be present before using it. (Taro Muraoka)
+Files:	    src/tag.c
+
+Patch 6.2.474 (extra, after 6.2.456)
+Problem:    When Vim is starting up conversion is done unnecessarily.  Failure
+	    to find the runtime files on Windows 98. (Randall W. Morris)
+Solution:   Init enc_codepage negative, only use it when not negative.
+	    Don't use GetFileAttributesW() on Windows 98 or earlier.
+Files:	    src/globals.h, src/gui_w32.c, src/gui_w48.c, src/os_mswin.c,
+	    src/os_win32.c
+
+Patch 6.2.475
+Problem:    Commands after "perl <<EOF" are parsed as Vim commands when they
+	    are not executed.
+Solution:   Properly skip over the perl commands.
+Files:	    src/ex_docmd.c, src/ex_getln.c, src/if_perl.xs, src/if_python.c,
+	    src/if_ruby.c, src/if_tcl.c, src/misc2.c
+
+Patch 6.2.476
+Problem:    When reloading a hidden buffer changed outside of Vim and the
+	    current buffer is read-only, the reloaded buffer becomes
+	    read-only.  (Hari Krishna Dara)
+Solution:   Save the 'readonly' flag of the realoaded buffer instead of the
+	    current buffer.
+Files:	    src/fileio.c
+
+Patch 6.2.477
+Problem:    Using remote_send(v:servername, "\<C-V>") causes Vim to hang.
+	    (Yakov Lerner)
+Solution:   When the resulting string is empty don't set received_from_client.
+Files:	    src/main.c
+
+Patch 6.2.478
+Problem:    Win32: "--remote file" fails changing directory if the current
+	    directory name starts with a single quote.  (Iestyn Walters)
+Solution:   Add a backslash where it will be removed later.
+Files:	    src/main.c, src/misc2.c, src/proto/misc2.pro
+
+Patch 6.2.479
+Problem:    The error message for errors during recovery goes unnoticed.
+Solution:   Avoid that the hit-enter prompt overwrites the message.  Add a few
+	    lines to make the error stand out.
+Files:	    src/main.c, src/message.c, src/memline.c
+
+Patch 6.2.480
+Problem:    NetBeans: Using negative index in array.  backslash at end of
+	    message may cause Vim to crash. (Xavier de Gaye)
+Solution:   Initialize buf_list_used to zero. Check for trailing backslash.
+Files:	    src/netbeans.c
+
+Patch 6.2.481
+Problem:    When writing a file it is not possible to specify that hard and/or
+	    symlinks are to be broken instead of preserved.
+Solution:   Add the "breaksymlink" and "breakhardlink" values to 'backupcopy'.
+	    (Simon Ekstrand)
+Files:	    runtime/doc/options.txt, src/fileio.c, src/option.c, src/option.h
+
+Patch 6.2.482
+Problem:    Repeating insert of CTRL-K 1 S doesn't work.  The superscript 1 is
+	    considered to be a digit. (Juergen Kraemer)
+Solution:   In vim_isdigit() only accept '0' to '9'.  Use VIM_ISDIGIT() for
+	    speed where possible.  Also add vim_isxdigit().
+Files:	    src/buffer.c, src/charset.c, src/diff.c, src/digraph.c,
+	    src/edit.c, src/eval.c,, src/ex_cmds.c, src/ex_cmds2.c,
+	    src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c,
+	    src/if_xcmdsrv.c, src/farsi.c, src/fileio.c, src/fold.c,
+	    src/getchar.c, src/gui.c, src/if_cscope.c, src/macros.h,
+	    src/main.c, src/mark.c, src/mbyte.c, src/menu.c, src/misc1.c,
+	    src/misc2.c, src/normal.c, src/ops.c, src/option.c,
+	    src/proto/charset.pro, src/regexp.c, src/screen.c, src/search.c,
+	    src/syntax.c, src/tag.c, src/term.c, src/termlib.c
+
+Patch 6.2.483 (extra, after 6.2.482)
+Problem:    See 6.2.482.
+Solution:   Extra part of patch 6.2.482.
+Files:	    src/gui_photon.c, src/gui_w48.c, src/os_msdos.c, src/os_mswin.c
+
+Patch 6.2.484
+Problem:    MS-Windows: With the included diff.exe, differences after a CTRL-Z
+	    are not recognized.  (Peter Keresztes)
+Solution:   Write the files with unix fileformat and invoke diff with --binary
+	    if possible.
+Files:	    src/diff.c
+
+Patch 6.2.485
+Problem:    A BufWriteCmd autocommand cannot know if "!" was used or not.
+	    (Hari Krishna Dara)
+Solution:   Add the v:cmdbang variable.
+Files:	    runtime/doc/eval.txt, src/eval.c, src/proto/eval.pro,
+	    src/fileio.c, src/vim.h
+
+Patch 6.2.486 (6.2.482)
+Problem:    Diff for eval.c is missing.
+Solution:   Addition to patch 6.2.482.
+Files:	    src/eval.c
+
+Patch 6.2.487 (extra, after 6.2.456)
+Problem:    Compiler warnings for wrong prototype. (Alejandro Lopez Valencia)
+Solution:   Delete the prototype for Handle_WM_Notify().
+Files:	    src/proto/gui_w32.pro
+
+Patch 6.2.488
+Problem:    Missing ")" in *.ch filetype detection.
+Solution:   Add the ")".  (Ciaran McCreesh)
+Files:	    runtime/filetype.vim
+
+Patch 6.2.489
+Problem:    When accidentally opening a session in Vim which has already been
+	    opened in another Vim there is a long row of ATTENTION prompts.
+	    Need to quit each of them to get out. (Robert Webb)
+Solution:   Add the "Abort" alternative to the dialog.
+Files:	    src/memline.c
+
+Patch 6.2.490
+Problem:    With 'paragraph' it is not possible to use a single dot as a
+	    paragraph boundary.  (Dorai Sitaram)
+Solution:   Allow using "  " (two spaces) in 'paragraph' to match ".$" or
+	    ". $"
+Files:	    src/search.c
+
+Patch 6.2.491
+Problem:    Decrementing a position doesn't take care of multi-byte chars.
+Solution:   Adjust the column for multi-byte characters.  Remove mb_dec().
+	    (Yasuhiro Matsumoto)
+Files:	    src/mbyte.c, src/misc2.c, src/proto/mbyte.pro
+
+Patch 6.2.492
+Problem:    When using ":redraw" while there is a message, the next ":echo"
+	    still causes text to scroll. (Yasuhiro Matsumoto)
+Solution:   Reset msg_didout and msg_col, so that after ":redraw" the next
+	    message overwrites an existing one.
+Files:	    src/ex_docmd.c
+
+Patch 6.2.493
+Problem:    "@x" doesn't work when 'insertmode' is set. (Benji Fisher)
+Solution:   Put "restart_edit" in the typeahead buffer, so that it's used
+	    after executing the register contents.
+Files:	    src/ops.c
+
+Patch 6.2.494
+Problem:    Using diff mode with two windows, when moving horizontally in
+	    inserted lines, a fold in the other window may open.
+Solution:   Compute the line number in the other window correctly.
+Files:	    src/diff.c
+
+Patch 6.2.495 (extra, after 6.2.456)
+Problem:    Win32: The file dialog doesn't work on Windows 95.
+Solution:   Put the wide code of gui_mch_browse() in gui_mch_browseW() and use
+	    it only on Windows NT/2000/XP.
+Files:	    src/gui_w32.c, src/gui_w48.c
+
+Patch 6.2.496
+Problem:    FreeBSD 4.x: When compiled with the pthread library (Python) a
+	    complicated pattern may cause Vim to crash.  Catching the signal
+	    doesn't work.
+Solution:   When compiled with threads, instead of using the normal stacksize
+	    limit, use the size of the initial stack.
+Files:	    src/auto/configure, src/config.h.in, src/configure.in,
+	    src/os_unix.c
+
+Patch 6.2.497 (extra)
+Problem:    Russian messages are only available in one encoding.
+Solution:   Convert the messages to MS-Windows codepages. (Vassily Ragosin)
+Files:	    src/po/Makefile
+
+Patch 6.2.498
+Problem:    Non-latin1 help files are not properly supported.
+Solution:   Support utf-8 help files and convert them to 'encoding' when
+	    needed.
+Files:	    src/fileio.c
+
+Patch 6.2.499
+Problem:    When writing a file and halting the system, the file might be lost
+	    when using a journalling file system.
+Solution:   Use fsync() to flush the file data to disk after writing a file.
+	    (Radim Kolar)
+Files:	    src/fileio.c
+
+Patch 6.2.500 (extra)
+Problem:    The DOS/MS-Windows the installer doesn't use the --binary flag for
+	    diff.
+Solution:   Add --binary to the diff argument in MyDiff(). (Alejandro Lopez-
+	    Valencia)
+Files:	    src/dosinst.c
+
+Patch 6.2.501
+Problem:    Vim does not compile with MorphOS.
+Solution:   Add a Makefile and a few changes to make Vim work with MorphOS.
+	    (Ali Akcaagac)
+Files:	    runtime/doc/os_amiga.txt, src/INSTALLami.txt,
+	    src/Make_morphos.mak, src/memfile.c, src/term.c
+
+Patch 6.2.502
+Problem:    Building fails for generating message files.
+Solution:   Add dummy message files.
+Files:	    src/po/ca.po, src/po/ru.po, src/po/sv.po
+
+Patch 6.2.503
+Problem:    Mac: Can't compile MacRoman conversions without the GUI.
+Solution:   Also link with the Carbon framework for the terminal version, for
+	    the MacRoman conversion functions. (Eckehard Berns)
+	    Remove -ltermcap from the GUI link command, it is not needed.
+Files:	    src/auto/configure, src/Makefile, src/configure.in
+
+Patch 6.2.504
+Problem:    Various problems with 'cindent', among which that a
+	    list of variable declarations is not indented properly.
+Solution:   Fix the wrong indenting.  Improve indenting of C++ methods.
+	    Add the 'i', 'b' and 'W' options to 'cinoptions'. (mostly by
+	    Helmut Stiegler)
+	    Improve indenting of preprocessor-continuation lines.
+Files:	    runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in,
+	    src/testdir/test3.ok
+
+Patch 6.2.505
+Problem:    Help for -P argument is missing. (Ronald Hoellwarth)
+Solution:   Add the patch that was missing in 6.2.419.
+Files:	    runtime/doc/starting.txt
+
+Patch 6.2.506 (extra)
+Problem:    Win32: When 'encoding' is a codepage then reading a utf-8 file
+	    only works when iconv is available.  Writing a file in another
+	    codepage uses the wrong kind of conversion.
+Solution:   Use internal conversion functions.  Enable reading and writing
+	    files with 'fileencoding' different from 'encoding' for all valid
+	    codepages and utf-8 without the need for iconv.
+Files:	    src/fileio.c, src/testdir/Make_dos.mak, src/testdir/test52.in,
+	    src/testdir/test52.ok
+
+Patch 6.2.507
+Problem:    The ownership of the file with the password for the NetBeans
+	    connection is not checked.  "-nb={file}" doesn't work for GTK.
+Solution:   Only accept the file when owned by the user and not accessible by
+	    others.  Detect "-nb=" for GTK.
+Files:	    src/netbeans.c, src/gui_gtk_x11.c
+
+Patch 6.2.508
+Problem:    Win32: "v:lang" does not show the current language for messages if
+	    it differs from the other locale settings.
+Solution:   Use the value of the $LC_MESSAGES environment variable.
+Files:	    src/ex_cmds2.c
+
+Patch 6.2.509 (after 6.2.508)
+Problem:    Crash when $LANG is not set.
+Solution:   Add check for NULL pointer. (Ron Aaron)
+Files:	    src/ex_cmds2.c
+
+Patch 6.2.510 (after 6.2.507)
+Problem:    Warning for pointer conversion.
+Solution:   Add a type cast.
+Files:	    src/gui_gtk_x11.c
+
+Patch 6.2.511
+Problem:    Tags in Russian help files are in utf-8 encoding, which may be
+	    different from 'encoding'.
+Solution:   Use the "TAG_FILE_ENCODING" field in the tags file to specify the
+	    encoding of the tags.  Convert help tags from 'encoding' to the
+	    tag file encoding when searching for matches, do the reverse when
+	    listing help tags.
+Files:	    runtime/doc/tagsrch.txt, src/ex_cmds.c, src/tag.c
+
+Patch 6.2.512
+Problem:    Translating "\"\n" is useless. (Gerfried Fuchs)
+Solution:   Remove the _() around it.
+Files:	    src/main.c, src/memline.c
+
+Patch 6.2.513 (after 6.2.507)
+Problem:    NetBeans: the check for owning the connection info file can be
+	    simplified. (Nikolay Molchanov)
+Solution:   Only check if the access mode is right.
+Files:	    src/netbeans.c
+
+Patch 6.2.514
+Problem:    When a highlight/syntax group name contains invalid characters
+	    there is no warning.
+Solution:   Add an error for unprintable characters and a warning for other
+	    invalid characters.
+Files:	    src/syntax.c
+
+Patch 6.2.515
+Problem:    When using the options window 'swapfile' is reset.
+Solution:   Use ":setlocal" instead of ":set".
+Files:	    runtime/optwin.vim
+
+Patch 6.2.516
+Problem:    The sign column cannot be seen, looks like there are two spaces
+	    before the text. (Rob Retter)
+Solution:   Add the SignColumn highlight group.
+Files:	    runtime/doc/options.txt, runtime/doc/sign.txt, src/option.c,
+	    src/screen.c, src/syntax.c, src/vim.h
+
+Patch 6.2.517
+Problem:    Using "r*" in Visual mode on multi-byte characters replaces
+	    too many characters.  In Visual Block mode replacing with a
+	    multi-byte character doesn't work.
+Solution:   Adjust the operator end for the difference in byte length of the
+	    original and the replaced character.  Insert all bytes of a
+	    multi-byte character, take care of double-wide characters.
+Files:	    src/ops.c
+
+Patch 6.2.518
+Problem:    Last line of a window is not updated after using "J" and then "D".
+	    (Adri Verhoef)
+Solution:   When no line is found below a change that doesn't need updating,
+	    update all lines below the change.
+Files:	    src/screen.c
+
+Patch 6.2.519
+Problem:    Mac: cannot read/write files in MacRoman format.
+Solution:   Do internal conversion from/to MacRoman to/from utf-8 and latin1.
+	    (Eckehard Berns)
+Files:	    src/fileio.c
+
+Patch 6.2.520 (extra)
+Problem:    The NSIS installer is outdated.
+Solution:   Make it work with NSIS 2.0.  Also include console executables for
+	    Win 95/98/ME and Win NT/2000/XP.  Use LZWA compression.  Use
+	    "/oname" to avoid having to rename files before running NSIS.
+Files:	    Makefile, nsis/gvim.nsi
+
+Patch 6.2.521
+Problem:    When using silent Ex mode the "changing a readonly file" warning
+	    is omitted but the one second wait isn't. (Yakov Lerner)
+Solution:   Skip the delay when "silent_mode" is set.
+Files:	    src/misc1.c
+
+Patch 6.2.522
+Problem:    GUI: when changing 'cmdheight' in the gvimrc file the window
+	    layout is messed up. (Keith Dart)
+Solution:   Skip updating the window layout when changing 'cmdheight' while
+	    still starting up.
+Files:	    src/option.c
+
+Patch 6.2.523
+Problem:    When loading a session and aborting when a swap file already
+	    exists, the user is left with useless windows. (Robert Webb)
+Solution:   Load one file before creating the windows.
+Files:	    src/ex_docmd.c
+
+Patch 6.2.524 (extra, after 6.2.520)
+Problem:    Win32: (un)installing gvimext.dll may fail if it was used.
+	    The desktop and start menu links are created for the current user
+	    instead of all users.
+	    Using the home directory as working directory for the links is a
+	    bad idea for multi-user systems.
+	    Cannot use Vim from the "Open With..." menu.
+Solution:   Force a reboot if necessary. (Alejandro Lopez-Valencia)  Also use
+	    macros for the directory of the source and runtime files.  Use
+	    "CSIDL_COMMON_*" instead of "CSIDL_*" when possible.
+	    Do not specify a working directory in the links.
+	    Add Vim to the "Open With..." menu. (Giuseppe Bilotta)
+Files:	    nsis/gvim.nsi, src/dosinst.c, src/dosinst.h, src/uninstal.c
+
+Patch 6.2.525
+Problem:    When the history contains a very long line ":history" causes a
+	    crash. (Volker Kiefel)
+Solution:   Shorten the history entry to fit it in one line.
+Files:	    src/ex_getln.c
+
+Patch 6.2.526
+Problem:    When s:lang is "ja" the Japanese menus are not used.
+Solution:   Add 'encoding' to the language when there is no charset.
+Files:	    runtime/menu.vim
+
+Patch 6.2.527
+Problem:    The 2html script uses ":wincmd p", which breaks when using some
+	    autocommands.
+Solution:   Remember the window numbers and jump to them with ":wincmd w".
+	    Also add XHTML support. (Panagiotis Issaris)
+Files:	    runtime/syntax/2html.vim
+
+Patch 6.2.528
+Problem:    NetBeans: Changes of the "~" command are not reported.
+Solution:   Call netbeans_inserted() after performing "~". (Gordon Prieur)
+	    Also change NetBeans debugging to append to the log file.
+	    Also fix that "~" in Visual block mode changes too much if there
+	    are multi-byte characters.
+Files:	    src/nbdebug.c, src/normal.c, src/ops.c
+
+Patch 6.2.529 (extra)
+Problem:    VisVim only works for Admin.  Doing it for one user doesn't work.
+	    (Alexandre Gouraud)
+Solution:   When registering the module fails, simply continue.
+Files:	    src/VisVim/VisVim.cpp
+
+Patch 6.2.530
+Problem:    Warning for missing prototype on the Amiga.
+Solution:   Include time.h
+Files:	    src/version.c
+
+Patch 6.2.531
+Problem:    In silent ex mode no messages are given, which makes debugging
+	    very difficult.
+Solution:   Do output messages when 'verbose' is set.
+Files:	    src/message.c, src/ui.c
+
+Patch 6.2.532 (extra)
+Problem:    Compiling for Win32s with VC 4.1 doesn't work.
+Solution:   Don't use CP_UTF8 if it's not defined.  Don't use CSIDL_COMMON*
+	    when not defined.
+Files:	    src/dosinst.h, src/fileio.c
+
+Win32 console: After patch 6.2.398 Ex mode did not work. (Yasuhiro Matsumoto)
+
+Patch 6.3a.001
+Problem:    Win32: if testing for the "--binary" option fails, diff isn't used
+	    at all.
+Solution:   Handle the "ok" flag properly. (Yasuhiro Matsumoto)
+Files:	    src/diff.c
+
+Patch 6.3a.002
+Problem:    NetBeans: An insert command from NetBeans beyond the end of a
+	    buffer crashes Vim. (Xavier de Gaye)
+Solution:   Use a local pos_T structure for the position.
+Files:	    src/netbeans.c
+
+Patch 6.3a.003
+Problem:    E315 error with auto-formatting comments. (Henry Van Roessel)
+Solution:   Pass the line number to same_leader().
+Files:	    src/ops.c
+
+Patch 6.3a.004
+Problem:    Test32 fails on Windows XP for the DJGPP version.  Renaming
+	    test11.out fails.
+Solution:   Don't try renaming, create new files to use for the test.
+Files:	    src/testdir/test32.in, src/testdir/test32.ok
+
+Patch 6.3a.005
+Problem:    ":checkpath!" does not use 'includeexpr'.
+Solution:   Use a file name that was found directly.  When a file was not
+	    found and the located name is empty, use the rest of the line.
+Files:	    src/search.c
+
+Patch 6.3a.006
+Problem:    "yip" moves the cursor to the first yanked line, but not to the
+	    first column.  Looks like not all text was yanked. (Jens Paulus)
+Solution:   Move the cursor to the first column.
+Files:	    src/search.c
+
+Patch 6.3a.007
+Problem:    'cindent' recognizes "enum" but not "typedef enum".
+Solution:   Skip over "typedef" before checking for "enum". (Helmut Stiegler)
+	    Also avoid that searching for this item goes too far back.
+Files:	    src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+Patch 6.3a.008 (extra)
+Problem:    Windows 98: Some of the wide functions are not implemented,
+	    resulting in file I/O to fail.  This depends on what Unicode
+	    support is installed.
+Solution:   Handle the failure and fall back to non-wide functions.
+Files:	    src/os_win32.c
+
+Patch 6.3a.009
+Problem:    Win32: Completion of filenames does not work properly when
+	    'encoding' differs from the active code page.
+Solution:   Use wide functions for expanding wildcards when appropriate.
+Files:	    src/misc1.c
+
+Patch 6.3a.010 (extra)
+Problem:    Win32: Characters in the window title that do not appear in the
+	    active codepage are replaced by a question mark.
+Solution:   Use DefWindowProcW() instead of DefWindowProc() when possible.
+Files:	    src/glbl_ime.cpp, src/globals.h, src/proto/gui_w16.pro,
+	    src/proto/gui_w32.pro, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c
+
+Patch 6.3a.011
+Problem:    Using the explorer plugin changes a local directory to the global
+	    directory.
+Solution:   Don't use ":chdir" to restore the current directory.  Make
+	    "expand('%:p')" remove "/../" and "/./" items from the path.
+Files:	    runtime/plugin/explorer.vim, src/eval.c, src/os_unix.c
+
+Patch 6.3a.012 (extra)
+Problem:    On Windows 98 the installer doesn't work, don't even get the "I
+	    agree" button.  The check for the path ending in "vim" makes the
+	    browse dialog hard to use.  The default path when no previous Vim
+	    is installed is "c:\vim" instead of "c:\Program Files\Vim".
+Solution:   Remove the background gradient command.  Change the
+	    .onVerifyInstDir function to a leave function for the directory
+	    page.  Don't let the install program default to c:\vim when no
+	    path could be found.
+Files:	    nsis/gvim.nsi, src/dosinst.c
+
+Patch 6.3a.013 (extra)
+Problem:    Win32: Characters in the menu that are not in the active codepage
+	    are garbled.
+Solution:   Convert menu strings from 'encoding' to the active codepage.
+Files:	    src/gui_w32.c, src/gui_w48.c
+
+Patch 6.3a.014
+Problem:    Using multi-byte text and highlighting in a statusline causes gaps
+	    to appear. (Helmut Stiegler)
+Solution:   Advance the column by text width instead of number of bytes.  Add
+	    the vim_strnsize() function.
+Files:	    src/charset.c, src/proto/charset.pro, src/screen.c
+
+Patch 6.3a.015
+Problem:    Using the "select all" menu item when 'insertmode' is set and
+	    clicking the mouse button doesn't return to Insert mode.  The
+	    Buffers/Delete menu doesn't offer a choice to abandon a changed
+	    buffer.  (Jens Paulus)
+Solution:   Don't use CTRL-\ CTRL-N.  Add ":confirm" for the Buffers menu
+	    items.
+Files:	    runtime/menu.vim
+
+Patch 6.3a.016
+Problem:    After cancelling the ":confirm" dialog the error message and
+	    hit-enter prompt may not be displayed properly.
+Solution:   Flush output after showing the dialog.
+Files:	    src/message.c
+
+Patch 6.3a.017
+Problem:    servername() doesn't work when Vim was started with the "-X"
+	    argument or when the "exclude" in 'clipboard' matches the terminal
+	    name.  (Robert Nowotniak)
+Solution:   Force connecting to the X server when using client-server
+	    commands.
+Files:	    src/eval.c, src/globals.h, src/os_unix.c
+
+Patch 6.3a.018 (after 6.3a.017)
+Problem:    Compiler warning for return value of make_connection().
+Solution:   Use void return type.
+Files:	    src/eval.c
+
+Patch 6.3a.019 (extra)
+Problem:    Win32: typing non-latin1 characters doesn't work.
+Solution:   Invoke _OnChar() directly to avoid that the argument is truncated
+	    to a byte.  Convert the UTF-16 character to bytes according to
+	    'encoding' and ignore 'termencoding'.  Same for _OnSysChar().
+Files:	    src/gui_w32.c, src/gui_w48.c
+
+Patch 6.3a.020 (extra)
+Problem:    Missing support for AROS (AmigaOS reimplementation).  Amiga GUI
+	    doesn't work.
+Solution:   Add AROS support.  (Adam Chodorowski)
+	    Fix Amiga GUI problems. (Georg Steger, Ali Akcaagac)
+Files:	    Makefile, src/Make_aros.mak, src/gui_amiga.c, src/gui_amiga.h,
+	    src/memfile.c, src/os_amiga.c, src/term.c
+
+Patch 6.3a.021 (after 6.3a.017)
+Problem:    Can't compile with X11 but without GUI.
+Solution:   Put use of "gui.in_use" inside an #ifdef.
+Files:	    src/eval.c
+
+Patch 6.3a.022
+Problem:    When typing Tabs when 'softtabstop' is used and 'list' is set a
+	    tab is counted for two spaces.
+Solution:   Use the "L" flag in 'cpoptions' to tell whether a tab is counted
+	    as two spaces or as 'tabstop'. (Antony Scriven)
+Files:	    runtime/doc/options.txt, src/edit.c
+
+Patch 6.3a.023
+Problem:    Completion on the command line doesn't handle backslashes
+	    properly.  Only the tail of matches is shown, even when not
+	    completing filenames.
+Solution:   When turning the string into a pattern double backslashes.  Don't
+	    omit the path when not expanding files or directories.
+Files:	    src/ex_getln.c
+
+Patch 6.3a.024
+Problem:    The "save all" toolbar item fails for buffers that don't have a
+	    name.  When using ":wa" or closing the Vim window and there are
+	    nameless buffers, browsing for a name may cause the name being
+	    given to the wrong buffer or not stored properly.  ":browse" only
+	    worked for one file.
+Solution:   Use ":confirm browse" for "save all".
+	    Pass buffer argument to setfname().  Restore "browse" flag and
+	    "forceit" after doing the work for one file.
+Files:	    runtime/menu.vim, src/buffer.c, src/ex_cmds.c, src/ex_cmds2.c,
+	    src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/memline.c,
+	    src/message.c, src/window.c, src/proto/buffer.pro,
+	    src/proto/ex_cmds2.pro, src/proto/memline.pro
+
+Patch 6.3a.025
+Problem:    Setting 'virtualedit' moves the cursor. (Benji Fisher)
+Solution:   Update the virtual column before using it.
+Files:	    src/option.c
+
+Patch 6.3a.026 (extra, after 6.3a.008)
+Problem:    Editing files on Windows 98 doesn't work when 'encoding' is
+	    "utf-8" (Antoine Mechelynck)
+	    Warning for missing function prototype.
+Solution:   For all wide functions check if it failed because it is not
+	    implemented.  Use ANSI function declaration for char_to_string().
+Files:	    src/gui_w48.c, src/os_mswin.c, src/os_win32.c
+
+Patch 6.3a.027 (extra, after 6.3a.026)
+Problem:    Compiler warning for function argument.
+Solution:   Declare both char and WCHAR arrays.
+Files:	    src/gui_w48.c
+
+Patch 6.3a.028
+Problem:    ":normal ." doesn't work inside a function, because redo is saved
+	    and restored. (Benji Fisher)
+Solution:   Make a copy of the redo buffer when executing a function.
+Files:	    src/getchar.c
+
+Patch 6.3b.001 (extra)
+Problem:    Bcc 5: The generated auto/pathdef can't be compiled.
+Solution:   Fix the way quotes and backslashes are escaped.
+Files:	    src/Make_bc5.mak
+
+Patch 6.3b.002
+Problem:    Win32: conversion during file write fails when a double-byte
+	    character is split over two writes.
+Solution:   Fix the conversion retry without a trailing byte. (Taro Muraoka)
+Files:	    src/fileio.c
+
+Patch 6.3b.003 (extra)
+Problem:    Win32: When compiling with Borland C 5.5 and 'encoding' is "utf-8"
+	    then Vim can't open files under MS-Windows 98. (Antoine J.
+	    Mechelynck)
+Solution:   Don't use _wstat(), _wopen() and _wfopen() in this situation.
+Files:	    src/os_mswin.c, src/os_win32.c
+
+Patch 6.3b.004
+Problem:    ":helpgrep" includes a trailing CR in the text line.
+Solution:   Remove the CR.
+Files:	    src/quickfix.c
+
+Patch 6.3b.005
+Problem:    ":echo &g:ai" results in the local option value. (Salman Halim)
+Solution:   Pass the flags from find_option_end() to get_option_value().
+Files:	    src/eval.c
+
+Patch 6.3b.006
+Problem:    When using "mswin.vim", CTRL-V in Insert mode leaves cursor before
+	    last pasted character.  (Mathew Davis)
+Solution:   Use the same Paste() function as in menu.vim.
+Files:	    runtime/mswin.vim
+
+Patch 6.3b.007
+Problem:    Session file doesn't restore view on windows properly. (Robert
+	    Webb)
+Solution:   Restore window sizes both before and after restoring the view, so
+	    that the view, cursor position and size are restored properly.
+Files:	    src/ex_docmd.c
+
+Patch 6.3b.008
+Problem:    Using ":finally" in a user command doesn't always work. (Hari
+	    Krishna Dara)
+Solution:   Don't assume that using getexline() means the command was typed.
+Files:	    src/ex_docmd.c
+
+Patch 6.3b.009 (extra)
+Problem:    Win32: When the -P argument is not found in a window title, there
+	    is no error message.
+Solution:   When the window can't be found give an error message and exit.
+	    Also use try/except to catch failing to open the MDI window.
+	    (Michael Wookey)
+Files:	    src/gui_w32.c
+
+Patch 6.3b.010
+Problem:    Win32: Using the "-D" argument and expanding arguments may cause a
+	    hang, because the terminal isn't initialized yet. (Vince Negri)
+Solution:   Don't go into debug mode before the terminal is initialized.
+Files:	    src/main.c
+
+Patch 6.3b.011
+Problem:    Using CTRL-\ e while obtaining an expression aborts the command
+	    line. (Hari Krishna Dara)
+Solution:   Insert the CTRL-\ e as typed.
+Files:	    src/ex_getln.c
+
+Patch 6.3b.012 (after 6.3b.010)
+Problem:    Can't compile with tiny features. (Norbert Tretkowski)
+Solution:   Add #ifdefs.
+Files:	    src/main.c
+
+Patch 6.3b.013
+Problem:    Loading a session file results in editing the wrong file in the
+	    first window when this is not the file at the current position in
+	    the argument list. (Robert Webb)
+Solution:   Check w_arg_idx_invalid to decide whether to edit a file.
+Files:	    src/ex_docmd.c
+
+Patch 6.3b.014
+Problem:    ":runtime! foo*.vim" may using freed memory when a sourced script
+	    changes the value of 'runtimepath'.
+Solution:   Make a copy of 'runtimepath' when looping over the matches.
+Files:	    src/ex_cmds2.c
+
+Patch 6.3b.015
+Problem:    Get lalloc(0) error when using "p" in Visual mode while
+	    'clipboard' contains "autoselect,unnamed". (Mark Wagonner)
+Solution:   Avoid allocating zero bytes.  Obtain the clipboard when necessary.
+Files:	    src/ops.c
+
+Patch 6.3b.016
+Problem:    When 'virtualedit' is used "x" doesn't delete the last character
+	    of a line that has as many characters as 'columns'. (Yakov Lerner)
+Solution:   When the cursor isn't moved let oneright() return FAIL.
+Files:	    src/edit.c
+
+Patch 6.3b.017
+Problem:    Win32: "vim --remote-wait" doesn't exit when the server finished
+	    editing the file. (David Fishburn)
+Solution:   In the rrhelper plugin change backslashes to forward slashes and
+	    escape special characters.
+Files:	    runtime/plugin/rrhelper.vim
+
+Patch 6.3b.018
+Problem:    The list of help files in the "local additions" table doesn't
+	    recognize utf-8 encoding. (Yasuhiro Matsumoto)
+Solution:   Recognize utf-8 characters.
+Files:	    src/ex_cmds.c
+
+Patch 6.3b.019
+Problem:    When $VIMRUNTIME is not a full path name the "local additions"
+	    table lists all the help files.
+Solution:   Use fullpathcmp() instead of fnamecmp() to compare the directory
+	    names.
+Files:	    src/ex_cmds.c
+
+Patch 6.3b.020
+Problem:    When using CTRL-^ when entering a search string, the item in the
+	    statusline that indicates the keymap is not updated. (Ilya
+	    Dogolazky)
+Solution:   Mark the statuslines for updating.
+Files:	    src/ex_getln.c
+
+Patch 6.3b.021
+Problem:    The swapfile is not readable for others, the ATTENTION prompt does
+	    not show all info when someone else is editing the same file.
+	    (Marcel Svitalsky)
+Solution:   Use the protection of original file for the swapfile and set it
+	    after creating the swapfile.
+Files:	    src/fileio.c
+
+Patch 6.3b.022
+Problem:    Using "4v" to select four times the old Visual area may put the
+	    cursor beyond the end of the line. (Jens Paulus)
+Solution:   Correct the cursor column.
+Files:	    src/normal.c
+
+Patch 6.3b.023
+Problem:    When "3dip" starts in an empty line, white lines after the
+	    non-white lines are not deleted. (Jens Paulus)
+Solution:   Include the white lines.
+Files:	    src/search.c
+
+Patch 6.3b.024
+Problem:    "2daw" does not delete leading white space like "daw" does.  (Jens
+	    Paulus)
+Solution:   Include the white space when a count is used.
+Files:	    src/search.c
+
+Patch 6.3b.025
+Problem:    Percentage in ruler isn't updated when a line is deleted. (Jens
+	    Paulus)
+Solution:   Check for a change in line count when deciding to update the ruler.
+Files:	    src/screen.c, src/structs.h
+
+Patch 6.3b.026
+Problem:    When selecting "abort" at the ATTENTION prompt for a file that is
+	    already being edited Vim crashes.
+Solution:   Don't abort creating a new buffer when we really need it.
+Files:	    src/buffer.c, src/vim.h
+
+Patch 6.3b.027
+Problem:    Win32: When enabling the menu in a maximized window, Vim uses more
+	    lines than what is room for. (Shizhu Pan)
+Solution:   When deciding to call shell_resized(), also compare the text area
+	    size with Rows and Columns, not just with screen_Rows and
+	    screen_Columns.
+Files:	    src/gui.c
+
+Patch 6.3b.028
+Problem:    When in diff mode, setting 'rightleft' causes a crash. (Eddine)
+Solution:   Check for last column differently when 'rightleft' is set.
+Files:	    src/screen.c
+
+Patch 6.3b.029
+Problem:    Win32: warning for uninitialized variable.
+Solution:   Initialize to zero.
+Files:	    src/misc1.c
+
+Patch 6.3b.030
+Problem:    After Visually selecting four characters, changing it to other
+	    text, Visually selecting and yanking two characters: "." changes
+	    four characters, another "." changes two characters. (Robert Webb)
+Solution:   Don't store the size of the Visual area when redo is active.
+Files:	    src/normal.c
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
new file mode 100644
index 0000000..46bff9a
--- /dev/null
+++ b/runtime/doc/version7.txt
@@ -0,0 +1,84 @@
+*version7.txt*  For Vim version 7.0aa.  Last change: 2004 Jun 07
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Welcome to Vim 7!  A large number of features has been added.  This file
+mentions all the new items, changes to existing features and bug fixes
+compared to Vim 6.x.
+
+See |vi_diff.txt| for an overview of differences between Vi and Vim 7.0.
+See |version4.txt| for differences between Vim 3.x and Vim 4.x.
+See |version5.txt| for differences between Vim 4.x and Vim 5.x.
+See |version6.txt| for differences between Vim 5.x and Vim 6.x.
+
+INCOMPATIBLE CHANGES			|incompatible-7|
+
+NEW FEATURES				|new-7|
+
+New data types				|new-data-types|
+Various new items			|new-items-7|
+
+IMPROVEMENTS				|improvements-7|
+
+COMPILE TIME CHANGES			|compile-changes-7|
+
+BUG FIXES				|bug-fixes-7|
+
+==============================================================================
+INCOMPATIBLE CHANGES				*incompatible-7*
+
+These changes are incompatible with previous releases.  Check this list if you
+run into a problem when upgrading from Vim 6.x to 7.0
+
+
+==============================================================================
+NEW FEATURES						*new-7*
+
+New data types						*new-data-types*
+--------------
+
+In Vim scripts the following types have been added:
+
+	list		ordered list of items
+	dictionary	associative array of items
+	function	reference to a function
+
+Many functions and commands have been added to support the new types.
+
+
+Various new items					*new-items-7*
+-----------------
+
+Normal mode commands: ~
+
+
+Options: ~
+
+
+Ex commands: ~
+
+
+New functions: ~
+
+
+New autocommand events: ~
+
+
+New Syntax files: ~
+
+
+==============================================================================
+IMPROVEMENTS						*improvements-7*
+
+
+==============================================================================
+COMPILE TIME CHANGES					*compile-changes-7*
+
+
+==============================================================================
+BUG FIXES						*bug-fixes-7*
+
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/vi_diff.txt b/runtime/doc/vi_diff.txt
new file mode 100644
index 0000000..7d47db4
--- /dev/null
+++ b/runtime/doc/vi_diff.txt
@@ -0,0 +1,884 @@
+*vi_diff.txt*   For Vim version 7.0aa.  Last change: 2004 Jun 08
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Differences between Vim and Vi				*vi-differences*
+
+Throughout the help files differences between Vim and Vi/Ex are given in
+curly braces, like "{not in Vi}".  This file only lists what has not been
+mentioned in other files and gives an overview.
+
+Vim is mostly POSIX 1003.2-1 compliant.  The only command known to be missing
+is ":open".  There are probably a lot of small differences (either because Vim
+is missing something or because Posix is beside the mark).
+
+1. Missing commands			|missing-commands|
+2. Missing options			|missing-options|
+3. Limits				|limits|
+4. The most interesting additions	|vim-additions|
+5. Other vim features			|other-features|
+6. Command-line arguments		|cmdline-arguments|
+
+==============================================================================
+1. Missing commands					*missing-commands*
+
+This command is in Vi, but not in Vim:
+
+:o[pen]			{Vi: start editing in open mode} *:o* *:op* *:open*
+
+==============================================================================
+2. Missing options					*missing-options*
+
+These options are in the Unix Vi, but not in Vim.  If you try to set one of
+them you won't get an error message, but the value is not used and cannot be
+printed.
+
+autoprint (ap)		boolean	(default on)		*'autoprint'* *'ap'*
+beautify (bf)		boolean	(default off)		*'beautify'* *'bf'*
+flash (fl)		boolean	(default ??)		*'flash'* *'fl'*
+graphic (gr)		boolean	(default off)		*'graphic'* *'gr'*
+hardtabs (ht)		number	(default 8)		*'hardtabs'* *'ht'*
+	number of spaces that a <Tab> moves on the display
+mesg			boolean	(default on)		*'mesg'*
+novice			boolean	(default off)		*'novice'*
+open			boolean	(default on)		*'open'*
+optimize (op)		boolean	(default off)		*'optimize'* *'op'*
+prompt			boolean	(default on)		*'prompt'*
+redraw			boolean	(default off)		*'redraw'*
+slowopen (slow)		boolean	(default off)		*'slowopen'* *'slow'*
+sourceany		boolean	(default off)		*'sourceany'*
+window (wi)		number	(default 23)		*'window'* *'wi'*
+w300			number	(default 23)		*'w300'*
+w1200			number	(default 23)		*'w1200'*
+w9600			number	(default 23)		*'w9600'*
+
+==============================================================================
+3. Limits						*limits*
+
+Vim has only a few limits for the files that can be edited {Vi: can not handle
+<Nul> characters and characters above 128, has limited line length, many other
+limits}.
+							*E340*
+Maximum line length	   On machines with 16-bit ints (Amiga and MS-DOS real
+			   mode): 32767, otherwise 2147483647 characters.
+			   Longer lines are split.
+Maximum number of lines	   2147483647 lines.
+Maximum file size	   2147483647 bytes (2 Gbyte) when a long integer is
+			   32 bits.  Much more for 64 bit longs.  Also limited
+			   by available disk space for the |swap-file|.
+							*E75*
+Length of a file path	   Unix and Win32: 1024 characters, otherwise 256
+			   characters (or as much as the system supports).
+Length of an expanded string option
+			   Unix and Win32: 1024 characters, otherwise 256
+			   characters
+Maximum display width	   Unix and Win32: 1024 characters, otherwise 255
+			   characters
+Maximum lhs of a mapping   50 characters.
+Number of highlighting different types: 223
+
+Information for undo and text in registers is kept in memory, thus when making
+(big) changes the amount of (virtual) memory available limits the number of
+undo levels and the text that can be kept in registers.  Other things are also
+kept in memory:  Command-line history, error messages for Quickfix mode, etc.
+
+Memory usage limits
+-------------------
+
+The option 'maxmem' ('mm') is used to set the maximum memory used for one
+buffer (in kilobytes).  'maxmemtot' is used to set the maximum memory used for
+all buffers (in kilobytes).  The defaults depend on the system used.  For the
+Amiga and MS-DOS, 'maxmemtot' is set depending on the amount of memory
+available.  If you don't like Vim to swap to a file, set 'maxmem' and
+'maxmemtot' to a very large value.  The swap file will then only be used for
+recovery.  If you don't want a swap file at all, set 'updatecount' to 0, or
+use the "-n" argument when starting Vim.  Note that the 'maxmem' option is
+only used when a buffer is created.  Changing this option does not affect
+buffers that have already been loaded.  Thus you can set it to different
+values for different files.  'maxmemtot' works always.
+
+==============================================================================
+4. The most interesting additions			*vim-additions*
+
+Vi compatibility.					|'compatible'|
+	Although Vim is 99% Vi compatible, some things in Vi can be
+	considered to be a bug, or at least need improvement.  But still, Vim
+	starts in a mode which behaves like the "real" Vi as much as possible.
+	To make Vim behave a little bit better, try resetting the 'compatible'
+	option:
+		:set nocompatible
+	Or start Vim with the "-N" argument:
+		vim -N
+	This is done automatically if you have a .vimrc file.  See |startup|.
+	The 'cpoptions' option can be used to set Vi compatibility on/off for
+	a number of specific items.
+
+Support for different systems.
+	Vim can be used on:
+	- All Unix systems (it works on all systems it was tested on, although
+	  the GUI and Perl interface may not work everywhere).
+	- Amiga (500, 1000, 1200, 2000, 3000, 4000, ...).
+	- MS-DOS in real-mode (no additional drivers required).
+	- In protected mode on Windows 3.1 and MS-DOS (DPMI driver required).
+	- Windows 95 and Windows NT, with support for long file names.
+	- OS/2 (needs emx.dll)
+	- Atari MiNT
+	- VMS
+	- BeOS
+	- Macintosh
+	- Risc OS
+	- IBM OS/390
+
+Multi level undo.					|undo|
+	'u' goes backward in time, 'CTRL-R' goes forward again.  Set option
+	'undolevels' to the number of changes to be remembered (default 1000).
+	Set 'undolevels' to 0 for a vi-compatible one level undo. Set it to
+	-1 for no undo at all.
+
+	When all changes in a buffer have been undone, the buffer is not
+	considered changed anymore.  You can exit it with :q, without <!>.
+
+Graphical User Interface (GUI)				|gui|
+	Included support for GUI: menu's, mouse, scrollbars, etc.  You can
+	define your own menus.  Better support for CTRL/SHIFT/ALT keys in
+	combination with special keys and mouse.  Supported for various
+	platforms, such as X11 (with Motif and Athena interfaces), GTK, Win32
+	(Windows 95 and later), BeOS, Amiga and Macintosh.
+
+Multiple windows and buffers.				|windows.txt|
+	Vim can split the screen into several windows, each editing a
+	different buffer or the same buffer at a different location.  Buffers
+	can still be loaded (and changed) but not displayed in a window.  This
+	is called a hidden buffer.  Many commands and options have been added
+	for this facility.
+
+Syntax highlighting.					|:syntax|
+	Vim can highlight keywords, patterns and other things.  This is
+	defined by a number of ":syntax" commands, and can be made to
+	highlight most languages and file types.  A number of files are
+	included for highlighting the most common languages, like C, C++,
+	Java, Pascal, Makefiles, shell scripts, etc.  The colors used for
+	highlighting can be defined for ordinary terminals, color terminals
+	and the GUI with the ":highlight" command.
+
+Folding							|folding|
+	A range of lines can be shown as one "folded" line.  This allows
+	overviewing a file and moving blocks of text around quickly.
+	Folds can be created manually, from the syntax of the file, by indent,
+	etc.
+
+Plugins							|add-plugin|
+	The functionality can be extended by dropping a plugin file in the
+	right directory.  That's an easy way to start using Vim scripts
+	written by others.  Plugins can be for all kind of files, or
+	specifically for a filetype.
+
+Repeat a series of commands.				|q|
+	"q{c}" starts recording typed characters into named register {c}
+	(append to the register if register name is uppercase).  A subsequent
+	"q" stops recording.  The register can then be executed with the
+	"@{c}" command.  This is very useful to repeat a complex action.
+
+Flexible insert mode.					|ins-special-special|
+	The arrow keys can be used in insert mode to move around in the file.
+	This breaks the insert in two parts as far as undo and redo is
+	concerned.
+
+	CTRL-O can be used to execute a single command-mode command.  This is
+	almost the same as hitting <Esc>, typing the command and doing "a".
+
+Visual mode.						|Visual-mode|
+	Visual can be used to first highlight a piece of text and then give a
+	command to do something with it.  This is an (easy to use) alternative
+	to first giving the operator and then moving to the end of the text
+	to be operated upon.  "v" and "V" are used to start Visual mode.  "v"
+	works on characters and 'V' on lines.  Move the cursor to extend the
+	Visual part.  It is shown highlighted on the screen.  By typing "o"
+	the other end of the Visual text can be moved.  The Visual text can
+	be affected by an operator:
+		d	delete
+		c	change
+		y	yank
+		> or <	insert or delete indent
+		!	filter through external program
+		=	filter through indent
+		:	start ":" command for the Visual lines.
+		gq	format text to 'textwidth' columns
+		J	join lines
+		~	swap case
+		u	make lowercase
+		U	make uppercase
+
+Block operators.					|visual-block|
+	With Visual a rectangular block of text can be selected.  Start Visual
+	with CTRL-V.  The block can be deleted ("d"), yanked ("y") or its case
+	can be changed ("~", "u" and "U").  A deleted or yanked block can be
+	put into the text with the "p" and "P" commands.
+
+Online help system.					|:help|
+	Help is displayed in a window.  The usual commands can be used to
+	move around, search for a string, etc.  Tags can be used to jump
+	around in the help files, just like hypertext links.  The ":help"
+	command takes an argument to quickly jump to the info on a subject.
+	<F1> is the quick access to the help system.  The name of the help
+	index file can be set with the 'helpfile' option.
+
+Command-line editing and history.			|cmdline-editing|
+	You can insert or delete at any place in the command-line using the
+	cursor keys.  The right/left cursor keys can be used to move
+	forward/backward one character.  The shifted right/left cursor keys
+	can be used to move forward/backward one word.  CTRL-B/CTRL-E can be
+	used to go to the begin/end of the command-line.
+
+							|cmdline-history|
+	The command-lines are remembered.  The up/down cursor keys can be used
+	to recall previous command-lines.  The 'history' option can be set to
+	the number of lines that will be remembered.  There is a separate
+	history for commands and for search patterns.
+
+Command-line completion.				|cmdline-completion|
+	While entering a command-line (on the bottom line of the screen)
+	<Tab> can be typed to complete
+	   what		example		~
+	- command	:e<Tab>
+	- tag		:ta scr<Tab>
+	- option	:set sc<Tab>
+	- option value  :set hf=<Tab>
+	- file name	:e ve<Tab>
+	- etc.
+
+	If there are multiple matches, CTRL-N (next) and CTRL-P (previous)
+	will walk through the matches.  <Tab> works like CTRL-N, but wraps
+	around to the first match.
+
+	The 'wildchar' option can be set to the character for command-line
+	completion, <Tab> is the default.  CTRL-D can be typed after an
+	(incomplete) wildcard; all matches will be listed.  CTRL-A will insert
+	all matches.  CTRL-L will insert the longest common part of the
+	matches.
+
+Insert-mode completion					|ins-completion|
+	In insert mode the CTRL-N and CTRL-P keys can be used to complete a
+	word that has previously been used.	|i_CTRL-N|
+	With CTRL-X another mode is entered, through which completion can be
+	done for:
+	|i_CTRL-X_CTRL-F|	file names
+	|i_CTRL-X_CTRL-K|	words from 'dictionary' files
+	|i_CTRL-X_CTRL-T|	words from 'thesaurus' files
+	|i_CTRL-X_CTRL-I|	words from included files
+	|i_CTRL-X_CTRL-L|	whole lines
+	|i_CTRL-X_CTRL-]|	words from the tags file
+	|i_CTRL-X_CTRL-D|	definitions or macros
+
+Long line support					|'wrap'| |'linebreak'|
+	If the 'wrap' option is off, long lines will not wrap and only part
+	of them will be shown.  When the cursor is moved to a part that is not
+	shown, the screen will scroll horizontally.  The minimum number of
+	columns to scroll can be set with the 'sidescroll' option.  The "zh"
+	and "zl" commands can be used to scroll sideways.
+	Alternatively, long lines are broken in between words when the
+	'linebreak' option is set.  This allows editing a single-line
+	paragraph conveniently (e.g. when the text is later read into a DTP
+	program).  Move the cursor up/down with the "gk" and "gj" commands.
+
+Text formatting.					|formatting|
+	The 'textwidth' option can be used to automatically limit the line
+	length.  This supplements the 'wrapmargin' option of Vi, which was not
+	very useful.  The "gq" operator can be used to format a piece of text
+	(for example, "gqap" formats the current paragraph).  Commands for
+	text alignment: ":center", ":left" and ":right".
+
+Extended search patterns				|pattern|
+	There are many extra items to match various text items.  Examples:
+	A "\n" can be used in a search pattern to match a line break.
+	"x\{2,4}" matches "x" 2 to 4 times.
+	"\s" matches a white space character.
+
+Edit-compile-edit speedup.				|quickfix|
+	The ":make" command can be used to run the compilation and jump to
+	the first error.  Alternatively Vim can be started with the "-q"
+	option from the compiler.  A file with compiler error messages is
+	interpreted.  Vim starts editing at the first error.
+
+	Each line in the error file is scanned for the name of a file, line
+	number and error message.  The 'errorformat' option can be set to a
+	list of scanf-like strings to handle output from many compilers.
+
+	The ":cn" command can be used to jump to the next error.
+	":cl" lists all the error messages.  Other commands are available
+	(almost the same as with Manx's Z editor on the Amiga).
+	The 'makeef' option has the name of the file with error messages.
+	The 'makeprg' option contains the name of the program to be executed
+	with the ":make" command.
+	The 'shellpipe' option contains the string to be used to put the
+	output of the compiler into the errorfile.
+
+Improved indenting for C programs			|'cindent'|
+	When the 'cindent' option is on the indent of each line is
+	automatically adjusted.  C syntax is mostly recognized.  The indent
+	for various styles can be set with 'cinoptions'.  The keys to trigger
+	indenting can be set with 'cinkeys'.
+
+	Comments can be automatically formatted.  The 'comments' option can be
+	set to the characters that start and end a comment.  This works best
+	for C code, but also works for e-mail (">" at start of the line) and
+	other types of text.  The "=" operator can be used to re-indent
+	lines.
+
+Searching for words in include files			|include-search|
+	The "[i" command can be used to search for a match of the word under
+	the cursor in the current and included files.  The 'include' option
+	can be set the a pattern that describes a command to include a file
+	(the default is for C programs).
+	The "[I" command lists all matches, the "[ CTRL-I" command jumps to
+	a match.
+	The "[d", "[D" and "[ CTRL-D" commands do the same, but only for
+	lines where the pattern given with the 'define' option matches.
+
+Automatic commands					|autocommand|
+	Commands can be automatically executed when reading a file, writing a
+	file, jumping to another buffer, etc., depending on the file name.
+	This is useful to set options and mappings for C programs,
+	documentation, plain text, e-mail, etc.  This also makes it possible
+	to edit compressed files.
+
+Scripts and Expressions					|expression|
+	Commands have been added to form up a simple but powerful script
+	language.
+	|:if|		Conditional execution, which can be used for example
+			to set options depending on the value of $TERM.
+	|:while|	Repeat a number of commands.
+	|:echo|		Print the result of an expression.
+	|:let|		Assign a value to an internal variable, option, etc.
+	|:execute|	Execute a command formed by an expression.
+	etc.
+
+Viminfo							|viminfo-file|
+	The command-line history, marks and registers can be stored in a file
+	that is read on startup.  This can be used to repeat a search command
+	or command-line command after exiting and restarting Vim.  It is also
+	possible to jump right back to where the last edit stopped with "'0".
+	The 'viminfo' option can be set to select which items to store in the
+	.viminfo file.  This is off by default.
+
+Mouse support						|mouse-using|
+	The mouse is supported in the GUI version, in an xterm for Unix, for
+	Linux with gpm, for MS-DOS, and Win32.  It can be used to position the
+	cursor, select the visual area, paste a register, etc.
+
+Usage of key names					|<>| |key-notation|
+	Special keys now all have a name like <Up>, <End>, etc.
+	This name can be used in mappings, to make it easy to edit them.
+
+Editing binary files					|edit-binary|
+	Vim can edit binary files.  You can change a few characters in an
+	executable file, without corrupting it.  Vim doesn't remove NUL
+	characters (they are represented as <NL> internally).
+	|-b|		command-line argument to start editing a binary file
+	|'binary'|	Option set by "-b".  Prevents adding an <EOL> for the
+			last line in the file.
+
+Multi-language support					|multi-lang|
+	Files in double-byte or multi-byte encodings can be edited.  There is
+	UTF-8 support to be able to edit various languages at the same time,
+	without switching fonts. |UTF-8|
+	Messages and menus are available in different languages.
+
+==============================================================================
+5. Other vim features					*other-features*
+
+A random collection of nice extra features.
+
+
+When Vim is started with "-s scriptfile", the characters read from
+"scriptfile" are treated as if you typed them.  If end of file is reached
+before the editor exits, further characters are read from the console.
+
+The "-w" option can be used to record all typed characters in a script file.
+This file can then be used to redo the editing, possibly on another file or
+after changing some commands in the script file.
+
+The "-o" option opens a window for each argument.  "-o4" opens four windows.
+
+Vi requires several termcap entries to be able to work full-screen.  Vim only
+requires the "cm" entry (cursor motion).
+
+
+In command mode:
+
+When the 'showcmd' option is set, the command characters are shown in the last
+line of the screen.  They are removed when the command is finished.
+
+If the 'ruler' option is set, the current cursor position is shown in the
+last line of the screen.
+
+"U" still works after having moved off the last changed line and after "u".
+
+Characters with the 8th bit set are displayed.  The characters between '~' and
+0xa0 are displayed as "~?", "~@", "~A", etc., unless they are included in the
+'isprint' option.
+
+"][" goes to the next ending of a C function ('}' in column 1).
+"[]" goes to the previous ending of a C function ('}' in column 1).
+
+"]f", "[f" and "gf" start editing the file whose name is under the cursor.
+CTRL-W f splits the window and starts editing the file whose name is under
+the cursor.
+
+"*" searches forward for the identifier under the cursor, "#" backward.
+"K" runs the program defined by the 'keywordprg' option, with the identifier
+under the cursor as argument.
+
+"%" can be preceded with a count.  The cursor jumps to the line that
+percentage down in the file.  The normal "%" function to jump to the matching
+brace skips braces inside quotes.
+
+With the CTRL-] command, the cursor may be in the middle of the identifier.
+
+The used tags are remembered.  Commands that can be used with the tag stack
+are CTRL-T, ":pop" and ":tag".  ":tags" lists the tag stack.
+
+The 'tags' option can be set to a list of tag file names.  Thus multiple
+tag files can be used.  For file names that start with "./", the "./" is
+replaced with the path of the current file.  This makes it possible to use a
+tags file in the same directory as the file being edited.
+
+Previously used file names are remembered in the alternate file name list.
+CTRL-^ accepts a count, which is an index in this list.
+":files" command shows the list of alternate file names.
+"#<N>" is replaced with the <N>th alternate file name in the list.
+"#<" is replaced with the current file name without extension.
+
+Search patterns have more features.  The <NL> character is seen as part of the
+search pattern and the substitute string of ":s".  Vi sees it as the end of
+the command.
+
+Searches can put the cursor on the end of a match and may include a character
+offset.
+
+Count added to "~", ":next", ":Next", "n" and "N".
+
+The command ":next!" with 'autowrite' set does not write the file.  In vi the
+file was written, but this is considered to be a bug, because one does not
+expect it and the file is not written with ":rewind!".
+
+In Vi when entering a <CR> in replace mode deletes a character only when 'ai'
+is set (but does not show it until you hit <Esc>).  Vim always deletes a
+character (and shows it immediately).
+
+Added :wnext command.  Same as ":write" followed by ":next".
+
+The ":w!" command always writes, also when the file is write protected.  In Vi
+you would have to do ":!chmod +w %" and ":set noro".
+
+When 'tildeop' has been set, "~" is an operator (must be followed by a
+movement command).
+
+With the "J" (join) command you can reset the 'joinspaces' option to have only
+one space after a period (Vi inserts two spaces).
+
+"cw" can be used to change white space formed by several characters (Vi is
+confusing: "cw" only changes one space, while "dw" deletes all white space).
+
+"o" and "O" accept a count for repeating the insert (Vi clears a part of
+display).
+
+Flags after Ex commands not supported (no plans to include it).
+
+On non-UNIX systems ":cd" command shows current directory instead of going to
+the home directory (there isn't one).  ":pwd" prints the current directory on
+all systems.
+
+After a ":cd" command the file names (in the argument list, opened files)
+still point to the same files.  In Vi ":cd" is not allowed in a changed file;
+otherwise the meaning of file names change.
+
+":source!" command reads Vi commands from a file.
+
+":mkexrc" command writes current modified options and mappings to a ".exrc"
+file.  ":mkvimrc" writes to a ".vimrc" file.
+
+No check for "tail recursion" with mappings.  This allows things like
+":map! foo ^]foo".
+
+When a mapping starts with number, vi loses the count typed before it (e.g.
+when using the mapping ":map g 4G" the command "7g" goes to line 4).  This is
+considered a vi bug.  Vim concatenates the counts (in the example it becomes
+"74G"), as most people would expect.
+
+The :put! command inserts the contents of a register above the current line.
+
+The "p" and "P" commands of vi cannot be repeated with "." when the putted
+text is less than a line.  In Vim they can always be repeated.
+
+":noremap" command can be used to enter a mapping that will not be remapped.
+This is useful to exchange the meaning of two keys.  ":cmap", ":cunmap" and
+":cnoremap" can be used for mapping in command-line editing only.  ":imap",
+":iunmap" and ":inoremap" can be used for mapping in insert mode only.
+Similar commands exist for abbreviations: ":noreabbrev", ":iabbrev"
+":cabbrev", ":iunabbrev", ":cunabbrev", ":inoreabbrev", ":cnoreabbrev".
+
+In Vi the command ":map foo bar" would remove a previous mapping
+":map bug foo".  This is considered a bug, so it is not included in Vim.
+":unmap! foo" does remove ":map! bug foo", because unmapping would be very
+difficult otherwise (this is vi compatible).
+
+The ':' register contains the last command-line.
+The '%' register contains the current file name.
+The '.' register contains the last inserted text.
+
+":dis" command shows the contents of the yank registers.
+
+CTRL-O/CTRL-I can be used to jump to older/newer positions.  These are the
+same positions as used with the '' command, but may be in another file.  The
+":jumps" command lists the older positions.
+
+If the 'shiftround' option is set, an indent is rounded to a multiple of
+'shiftwidth' with ">" and "<" commands.
+
+The 'scrolljump' option can be set to the minimum number of lines to scroll
+when the cursor gets off the screen.  Use this when scrolling is slow.
+
+The 'scrolloff' option can be set to the minimum number of lines to keep
+above and below the cursor.  This gives some context to where you are
+editing.  When set to a large number the cursor line is always in the middle
+of the window.
+
+Uppercase marks can be used to jump between files.  The ":marks" command lists
+all currently set marks.  The commands "']" and "`]" jump to the end of the
+previous operator or end of the text inserted with the put command.  "'[" and
+"`[" do jump to the start.
+
+The 'shelltype' option can be set to reflect the type of shell used on the
+Amiga.
+
+The 'highlight' option can be set for the highlight mode to be used for
+several commands.
+
+The CTRL-A (add) and CTRL-X (subtract) commands are new.  The count to the
+command (default 1) is added to/subtracted from the number at or after the
+cursor.  That number may be decimal, octal (starts with a '0') or hexadecimal
+(starts with '0x').  Very useful in macros.
+
+With the :set command the prefix "inv" can be used to invert boolean options.
+
+In both Vi and Vim you can create a line break with the ":substitute" command
+by using a CTRL-M.  For Vi this means you cannot insert a real CTRL-M in the
+text.  With Vim you can put a real CTRL-M in the text by preceding it with a
+CTRL-V.
+
+
+In Insert mode:
+
+If the 'revins' option is set, insert happens backwards.  This is for typing
+Hebrew.  When inserting normal characters the cursor will not be shifted and
+the text moves rightwards.  Backspace, CTRL-W and CTRL-U will also work in
+the opposite direction.  CTRL-B toggles the 'revins' option.  In replace mode
+'revins' has no effect.  Only when enabled at compile time.
+
+The backspace key can be used just like CTRL-D to remove auto-indents.
+
+You can backspace, CTRL-U and CTRL-W over line breaks if the 'backspace' (bs)
+option includes "eol".  You can backspace over the start of insert if the
+'backspace' option includes "start".
+
+When the 'paste' option is set, a few option are reset and mapping in insert
+mode and abbreviation are disabled.  This allows for pasting text in windowing
+systems without unexpected results.  When the 'paste' option is reset, the old
+option values are restored.
+
+CTRL-T/CTRL-D always insert/delete an indent in the current line, no matter
+what column the cursor is in.
+
+CTRL-@ (insert previously inserted text) works always (Vi: only when typed as
+first character).
+
+CTRL-A works like CTRL-@ but does not leave insert mode.
+
+CTRL-R {0-9a-z..} can be used to insert the contents of a register.
+
+When the 'smartindent' option is set, C programs will be better auto-indented.
+With 'cindent' even more.
+
+CTRL-Y and CTRL-E can be used to copy a character from above/below the
+current cursor position.
+
+After CTRL-V you can enter a three digit decimal number.  This byte value is
+inserted in the text as a single character.  Useful for international
+characters that are not on your keyboard.
+
+When the 'expandtab' (et) option is set, a <Tab> is expanded to the
+appropriate number of spaces.
+
+The window always reflects the contents of the buffer (Vi does not do this
+when changing text and in some other cases).
+
+If Vim is compiled with DIGRAPHS defined, digraphs are supported.  A set of
+normal digraphs is included.  They are shown with the ":digraph" command.
+More can be added with ":digraph {char1}{char2} {number}".  A digraph is
+entered with "CTRL-K {char1} {char2}" or "{char1} BS {char2}" (only when
+'digraph' option is set).
+
+When repeating an insert, e.g. "10atest <Esc>" vi would only handle wrapmargin
+for the first insert.  Vim does it for all.
+
+A count to the "i" or "a" command is used for all the text.  Vi uses the count
+only for one line.  "3iabc<NL>def<Esc>" would insert "abcabcabc<NL>def" in Vi
+but "abc<NL>defabc<NL>defabc<NL>def" in Vim.
+
+
+In Command-line mode:
+
+<Esc> terminates the command-line without executing it. In vi the command
+line would be executed, which is not what most people expect (hitting <Esc>
+should always get you back to command mode).  To avoid problems with some
+obscure macros, an <Esc> in a macro will execute the command.  If you want a
+typed <Esc> to execute the command like vi does you can fix this with
+	":cmap ^V<Esc> ^V<CR>"
+
+General:
+
+The 'ttimeout' option is like 'timeout', but only works for cursor and
+function keys, not for ordinary mapped characters.  The 'timeoutlen' option
+gives the number of milliseconds that is waited for.  If the 'esckeys' option
+is not set, cursor and function keys that start with <Esc> are not recognized
+in insert mode.
+
+There is an option for each terminal string.  Can be used when termcap is not
+supported or to change individual strings.
+
+The 'fileformat' option can be set to select the <EOL>: "dos" <CR><NL>, "unix"
+<NL> or "mac" <CR>.
+When the 'fileformats' option is not empty, Vim tries to detect the type of
+<EOL> automatically.  The 'fileformat' option is set accordingly.
+
+On systems that have no job control (older Unix systems and non-Unix systems)
+the CTRL-Z, ":stop" or ":suspend" command starts a new shell.
+
+If Vim is started on the Amiga without an interactive window for output, a
+window is opened (and :sh still works).  You can give a device to use for
+editing with the |-d| argument, e.g. "-d con:20/20/600/150".
+
+The 'columns' and 'lines' options are used to set or get the width and height
+of the display.
+
+Option settings are read from the first and last few lines of the file.
+Option 'modelines' determines how many lines are tried (default is 5).  Note
+that this is different from the Vi versions that can execute any Ex command
+in a modeline (a major security problem).  |trojan-horse|
+
+If the 'insertmode' option is set (e.g. in .exrc), Vim starts in insert mode.
+And it comes back there, when pressing <Esc>.
+
+Undo information is kept in memory.  Available memory limits the number and
+size of change that can be undone.  This may be a problem with MS-DOS, is
+hardly a problem on the Amiga and almost never with Unix and Win32.
+
+If the 'backup' or 'writebackup' option is set: Before a file is overwritten,
+a backup file (.bak) is made.  If the "backup" option is set it is left
+behind.
+
+Vim creates a file ending in ".swp" to store parts of the file that have been
+changed or that do not fit in memory.  This file can be used to recover from
+an aborted editing session with "vim -r file".  Using the swap file can be
+switched off by setting the 'updatecount' option to 0 or starting Vim with
+the "-n" option.  Use the 'directory' option for placing the .swp file
+somewhere else.
+
+Vim is able to work correctly on filesystems with 8.3 file names, also when
+using messydos or crossdos filesystems on the Amiga, or any 8.3 mounted
+filesystem under Unix.  See |'shortname'|.
+
+Error messages are shown at least one second (Vi overwrites error messages).
+
+If Vim gives the |hit-enter| prompt, you can hit any key.  Characters other
+than <CR>, <NL> and <Space> are interpreted as the (start of) a command.  (Vi
+only accepts a command starting with ':').
+
+The contents of the numbered and unnamed registers is remembered when
+changing files.
+
+The "No lines in buffer" message is a normal message instead of an error
+message, since that may cause a mapping to be aborted.
+
+The AUX: device of the Amiga is supported.
+
+==============================================================================
+6. Command-line arguments				*cmdline-arguments*
+
+Different versions of Vi have different command-line arguments.  This can be
+confusing.  To help you, this section gives an overview of the differences.
+
+Five variants of Vi will be considered here:
+	Elvis	Elvis version 2.1b
+	Nvi	Nvi version 1.79
+	Posix	Posix 1003.2
+	Vi	Vi version 3.7 (for Sun 4.1.x)
+	Vile	Vile version 7.4 (incomplete)
+	Vim	Vim version 5.2
+
+Only Vim is able to accept options in between and after the file names.
+
++{command}	Elvis, Nvi, Posix, Vi, Vim: Same as "-c {command}".
+
+-		Nvi, Posix, Vi: Run Ex in batch mode.
+		Vim: Read file from stdin (use -s for batch mode).
+
+--		Vim: End of options, only file names are following.
+
+--cmd {command}	Vim: execute {command} before sourcing vimrc files.
+
+--echo-wid	Vim: GTK+ echoes the Window ID on stdout
+
+--help		Vim: show help message and exit.
+
+--literal	Vim: take file names literally, don't expand wildcards.
+
+--nofork	Vim: same as |-f|
+
+--noplugin[s]	Vim: Skip loading plugins.
+
+--remote	Vim: edit the files in another Vim server
+
+--remote-expr {expr}	Vim: evaluate {expr} in another Vim server
+
+--remote-send {keys}	Vim: send {keys} to a Vim server and exit
+
+--remote-silent {file}	Vim: edit the files in another Vim server if possible
+
+--remote-wait	Vim: edit the files in another Vim server and wait for it
+
+--remote-wait-silent	Vim: like --remote-wait, no complaints if not possible
+
+--role {role}	Vim: GTK+ 2: set role of main window
+
+--serverlist	Vim: Output a list of Vim servers and exit
+
+--servername {name}	Vim: Specify Vim server name
+
+--socketid {id}		Vim: GTK window socket to run Vim in
+
+--version	Vim: show version message and exit.
+
+-?		Vile: print usage summary and exit.
+
+-a		Elvis: Load all specified file names into a window (use -o for
+		Vim).
+
+-A		Vim: Start in Arabic mode (when compiled with Arabic).
+
+-b {blksize}	Elvis: Use {blksize} blocksize for the session file.
+-b		Vim: set 'binary' mode.
+
+-C		Vim: Compatible mode.
+
+-c {command}	Elvis, Nvi, Posix, Vim: run {command} as an Ex command after
+		loading the edit buffer.
+		Vim: allow up to 10 "-c" arguments
+
+-d {device}	Vim: Use {device} for I/O (Amiga only). {only when compiled
+		without the |+diff| feature}
+-d		Vim: start with 'diff' set. |vimdiff|
+
+-dev {device}	Vim: Use {device} for I/O (Amiga only).
+
+-D		Vim: debug mode.
+
+-e		Elvis, Nvi, Vim: Start in Ex mode, as if the executable is
+		called "ex".
+
+-E		Vim: Start in improved Ex mode |gQ|, like "exim".
+
+-f		Vim: Run GUI in foreground (Amiga: don't open new window).
+-f {session}	Elvis: Use {session} as the session file.
+
+-F		Vim: Start in Farsi mode (when compiled with Farsi).
+		Nvi: Fast start, don't read the entire file when editing
+		starts.
+
+-G {gui}	Elvis: Use the {gui} as user interface.
+
+-g		Vim: Start GUI.
+-g N		Vile: start editing at line N
+
+-h		Vim: Give help message.
+		Vile: edit the help file
+
+-H		Vim: start Hebrew mode (when compiled with it).
+
+-i		Elvis: Start each window in Insert mode.
+-i {viminfo}	Vim: Use {viminfo} for viminfo file.
+
+-L		Vim: Same as "-r" (also in some versions of Vi).
+
+-l		Nvi, Vi, Vim: Set 'lisp' and 'showmatch' options.
+
+-m		Vim: Modifications not allowed to be written, resets 'write'
+		option.
+
+-M		Vim: Modifications not allowed, resets 'modifiable' and the
+		'write' option.
+
+-N		Vim: No-compatible mode.
+
+-n		Vim: No swap file used.
+
+-nb[args]	Vim: open a NetBeans interface connection
+
+-O[N]		Vim: Like -o, but use vertically split windows.
+
+-o[N]		Vim: Open [N] windows, or one for each file.
+
+-P {parent-title} Win32 Vim: open Vim inside a parent application window
+
+-q {name}	Vim: Use {name} for quickfix error file.
+-q{name}	Vim: Idem.
+
+-R		Elvis, Nvi, Posix, Vile, Vim: Set the 'readonly' option.
+
+-r		Elvis, Nvi, Posix, Vi, Vim: Recovery mode.
+
+-S		Nvi: Set 'secure' option.
+-S {script}	Vim: source script after starting up.
+
+-s		Nvi, Posix, Vim: Same as "-" (silent mode), when in Ex mode.
+		Elvis: Sets the 'safer' option.
+-s {scriptin}	Vim: Read from script file {scriptin}; only when not in Ex
+		mode.
+-s {pattern}	Vile: search for {pattern}
+
+-t {tag}	Elvis, Nvi, Posix, Vi, Vim: Edit the file containing {tag}.
+-t{tag}		Vim: Idem.
+
+-T {term}	Vim: Set terminal name to {term}.
+
+-u {vimrc}	Vim: Read initializations from {vimrc} file.
+
+-U {gvimrc}	Vim: Read GUI initializations from {gvimrc} file.
+
+-v		Nvi, Posix, Vi, Vim: Begin in Normal mode (visual mode, in Vi
+		terms).
+		Vile: View mode, no changes possible.
+
+-V		Elvis, Vim: Verbose mode.
+-V{nr}		Vim: Verbose mode with specified level.
+
+-w {size}	Elvis, Posix, Nvi, Vi, Vim: Set value of 'window' to {size}.
+-w{size}	Nvi, Vi: Same as "-w {size}".
+-w {name}	Vim: Write to script file {name} (must start with non-digit).
+
+-W {name}	Vim: Append to script file {name}.
+
+-x		Vi, Vim: Ask for encryption key.  See |encryption|.
+
+-X		Vim: Don't connect to the X server.
+
+-y		Vim: Start in easy mode, like |evim|.
+
+-Z		Vim: restricted mode
+
+@{cmdfile}	Vile: use {cmdfile} as startup file.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/vim.1 b/runtime/doc/vim.1
new file mode 100644
index 0000000..d1fa54a
--- /dev/null
+++ b/runtime/doc/vim.1
@@ -0,0 +1,541 @@
+.TH VIM 1 "2002 Feb 22"
+.SH NAME
+vim \- Vi IMproved, a programmers text editor
+.SH SYNOPSIS
+.br
+.B vim
+[options] [file ..]
+.br
+.B vim
+[options] -
+.br
+.B vim
+[options] \-t tag
+.br
+.B vim
+[options] \-q [errorfile]
+.PP
+.br
+.B ex
+.br
+.B view
+.br
+.B gvim
+.B gview
+.B evim
+.B eview
+.br
+.B rvim
+.B rview
+.B rgvim
+.B rgview
+.SH DESCRIPTION
+.B Vim
+is a text editor that is upwards compatible to Vi.
+It can be used to edit all kinds of plain text.
+It is especially useful for editing programs.
+.PP
+There are a lot of enhancements above Vi: multi level undo,
+multi windows and buffers, syntax highlighting, command line
+editing, filename completion, on-line help, visual selection, etc..
+See ":help vi_diff.txt" for a summary of the differences between
+.B Vim
+and Vi.
+.PP
+While running
+.B Vim
+a lot of help can be obtained from the on-line help system, with the ":help"
+command.
+See the ON-LINE HELP section below.
+.PP
+Most often
+.B Vim
+is started to edit a single file with the command
+.PP
+	vim file
+.PP
+More generally
+.B Vim
+is started with:
+.PP
+	vim [options] [filelist]
+.PP
+If the filelist is missing, the editor will start with an empty buffer.
+Otherwise exactly one out of the following four may be used to choose one or
+more files to be edited.
+.TP 12
+file ..
+A list of filenames.
+The first one will be the current file and read into the buffer.
+The cursor will be positioned on the first line of the buffer.
+You can get to the other files with the ":next" command.
+To edit a file that starts with a dash, precede the filelist with "--".
+.TP
+-
+The file to edit is read from stdin.  Commands are read from stderr, which
+should be a tty.
+.TP
+-t {tag}
+The file to edit and the initial cursor position depends on a "tag", a sort
+of goto label.
+{tag} is looked up in the tags file, the associated file becomes the current
+file and the associated command is executed.
+Mostly this is used for C programs, in which case {tag} could be a function
+name.
+The effect is that the file containing that function becomes the current file
+and the cursor is positioned on the start of the function.
+See ":help tag-commands".
+.TP
+-q [errorfile]
+Start in quickFix mode.
+The file [errorfile] is read and the first error is displayed.
+If [errorfile] is omitted, the filename is obtained from the 'errorfile'
+option (defaults to "AztecC.Err" for the Amiga, "errors.err" on other
+systems).
+Further errors can be jumped to with the ":cn" command.
+See ":help quickfix".
+.PP
+.B Vim
+behaves differently, depending on the name of the command (the executable may
+still be the same file).
+.TP 10
+vim
+The "normal" way, everything is default.
+.TP
+ex
+Start in Ex mode.
+Go to Normal mode with the ":vi" command.
+Can also be done with the "-e" argument.
+.TP
+view
+Start in read-only mode.  You will be protected from writing the files.  Can
+also be done with the "-R" argument.
+.TP
+gvim gview
+The GUI version.
+Starts a new window.
+Can also be done with the "-g" argument.
+.TP
+evim eview
+The GUI version in easy mode.
+Starts a new window.
+Can also be done with the "-y" argument.
+.TP
+rvim rview rgvim rgview
+Like the above, but with restrictions.  It will not be possible to start shell
+commands, or suspend
+.B Vim.
+Can also be done with the "-Z" argument.
+.SH OPTIONS
+The options may be given in any order, before or after filenames.
+Options without an argument can be combined after a single dash.
+.TP 12
++[num]
+For the first file the cursor will be positioned on line "num".
+If "num" is missing, the cursor will be positioned on the last line.
+.TP
++/{pat}
+For the first file the cursor will be positioned on the
+first occurrence of {pat}.
+See ":help search-pattern" for the available search patterns.
+.TP
++{command}
+.TP
+-c {command}
+{command} will be executed after the
+first file has been read.
+{command} is interpreted as an Ex command.
+If the {command} contains spaces it must be enclosed in double quotes (this
+depends on the shell that is used).
+Example: Vim "+set si" main.c
+.br
+Note: You can use up to 10 "+" or "-c" commands.
+.TP
+-S {file}
+{file} will be sourced after the first file has been read.
+This is equivalent to -c "source {file}".
+{file} cannot start with '-'.
+If {file} is omitted "Session.vim" is used (only works when -S is the last
+argument).
+.TP
+--cmd {command}
+Like using "-c", but the command is executed just before
+processing any vimrc file.
+You can use up to 10 of these commands, independently from "-c" commands.
+.TP
+-A
+If
+.B Vim
+has been compiled with ARABIC support for editing right-to-left
+oriented files and Arabic keyboard mapping, this option starts
+.B Vim
+in Arabic mode, i.e. 'arabic' is set.  Otherwise an error
+message is given and
+.B Vim
+aborts.
+.TP
+-b
+Binary mode.
+A few options will be set that makes it possible to edit a binary or
+executable file.
+.TP
+-C
+Compatible.  Set the 'compatible' option.
+This will make
+.B Vim
+behave mostly like Vi, even though a .vimrc file exists.
+.TP
+-d
+Start in diff mode.
+There should be two or three file name arguments.
+.B Vim
+will open all the files and show differences between them.
+Works like vimdiff(1).
+.TP
+-d {device}
+Open {device} for use as a terminal.
+Only on the Amiga.
+Example:
+"\-d con:20/30/600/150".
+.TP
+-D
+Debugging.  Go to debugging mode when executing the first command from a
+script.
+.TP
+-e
+Start
+.B Vim
+in Ex mode, just like the executable was called "ex".
+.TP
+-E
+Start
+.B Vim
+in improved Ex mode, just like the executable was called "exim".
+.TP
+-f
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+On the Amiga,
+.B Vim
+is not restarted to open a new window.
+This option should be used when
+.B Vim
+is executed by a program that will wait for the edit
+session to finish (e.g. mail).
+On the Amiga the ":sh" and ":!" commands will not work.
+.TP
+--nofork
+Foreground.  For the GUI version,
+.B Vim
+will not fork and detach from the shell it was started in.
+.TP
+-F
+If
+.B Vim
+has been compiled with FKMAP support for editing right-to-left
+oriented files and Farsi keyboard mapping, this option starts
+.B Vim
+in Farsi mode, i.e. 'fkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-g
+If
+.B Vim
+has been compiled with GUI support, this option enables the GUI.
+If no GUI support was compiled in, an error message is given and
+.B Vim
+aborts.
+.TP
+-h
+Give a bit of help about the command line arguments and options.
+After this
+.B Vim
+exits.
+.TP
+-H
+If
+.B Vim
+has been compiled with RIGHTLEFT support for editing right-to-left
+oriented files and Hebrew keyboard mapping, this option starts
+.B Vim
+in Hebrew mode, i.e. 'hkmap' and 'rightleft' are set.
+Otherwise an error message is given and
+.B Vim
+aborts.
+.TP
+-i {viminfo}
+When using the viminfo file is enabled, this option sets the filename to use,
+instead of the default "~/.viminfo".
+This can also be used to skip the use of the .viminfo file, by giving the name
+"NONE".
+.TP
+-L
+Same as -r.
+.TP
+-l
+Lisp mode.
+Sets the 'lisp' and 'showmatch' options on.
+.TP
+-m
+Modifying files is disabled.
+Resets the 'write' option.
+You can still modify the buffer, but writing a file is not possible.
+.TP
+-M
+Modifications not allowed.  The 'modifiable' and 'write' options will be unset,
+so that changes are not allowed and files can not be written.  Note that these
+options can be set to enable making modifications.
+.TP
+-N
+No-compatible mode.  Reset the 'compatible' option.
+This will make
+.B Vim
+behave a bit better, but less Vi compatible, even though a .vimrc file does
+not exist.
+.TP
+-n
+No swap file will be used.
+Recovery after a crash will be impossible.
+Handy if you want to edit a file on a very slow medium (e.g. floppy).
+Can also be done with ":set uc=0".
+Can be undone with ":set uc=200".
+.TP
+-nb
+Become an editor server for NetBeans.  See the docs for details.
+.TP
+-o[N]
+Open N windows stacked.
+When N is omitted, open one window for each file.
+.TP
+-O[N]
+Open N windows side by side.
+When N is omitted, open one window for each file.
+.TP
+-R
+Read-only mode.
+The 'readonly' option will be set.
+You can still edit the buffer, but will be prevented from accidently
+overwriting a file.
+If you do want to overwrite a file, add an exclamation mark to the Ex command,
+as in ":w!".
+The -R option also implies the -n option (see below).
+The 'readonly' option can be reset with ":set noro".
+See ":help 'readonly'".
+.TP
+-r
+List swap files, with information about using them for recovery.
+.TP
+-r {file}
+Recovery mode.
+The swap file is used to recover a crashed editing session.
+The swap file is a file with the same filename as the text file with ".swp"
+appended.
+See ":help recovery".
+.TP
+-s
+Silent mode.  Only when started as "Ex" or when the "-e" option was given
+before the "-s" option.
+.TP
+-s {scriptin}
+The script file {scriptin} is read.
+The characters in the file are interpreted as if you had typed them.
+The same can be done with the command ":source! {scriptin}".
+If the end of the file is reached before the editor exits, further characters
+are read from the keyboard.
+.TP
+-T {terminal}
+Tells
+.B Vim
+the name of the terminal you are using.
+Only required when the automatic way doesn't work.
+Should be a terminal known
+to
+.B Vim
+(builtin) or defined in the termcap or terminfo file.
+.TP
+-u {vimrc}
+Use the commands in the file {vimrc} for initializations.
+All the other initializations are skipped.
+Use this to edit a special kind of files.
+It can also be used to skip all initializations by giving the name "NONE".
+See ":help initialization" within vim for more details.
+.TP
+-U {gvimrc}
+Use the commands in the file {gvimrc} for GUI initializations.
+All the other GUI initializations are skipped.
+It can also be used to skip all GUI initializations by giving the name "NONE".
+See ":help gui-init" within vim for more details.
+.TP
+-V[N]
+Verbose.  Give messages about which files are sourced and for reading and
+writing a viminfo file.  The optional number N is the value for 'verbose'.
+Default is 10.
+.TP
+-v
+Start
+.B Vim
+in Vi mode, just like the executable was called "vi".  This only has effect
+when the executable is called "ex".
+.TP
+-w {scriptout}
+All the characters that you type are recorded in the file
+{scriptout}, until you exit
+.B Vim.
+This is useful if you want to create a script file to be used with "vim -s" or
+":source!".
+If the {scriptout} file exists, characters are appended.
+.TP
+-W {scriptout}
+Like -w, but an existing file is overwritten.
+.TP
+-x
+Use encryption when writing files.   Will prompt for a crypt key.
+.TP
+-X
+Don't connect to the X server.  Shortens startup time in a terminal, but the
+window title and clipboard will not be used.
+.TP
+-y
+Start
+.B Vim
+in easy mode, just like the executable was called "evim" or "eview".
+Makes
+.B Vim
+behave like a click-and-type editor.
+.TP
+-Z
+Restricted mode.  Works like the executable starts with "r".
+.TP
+--
+Denotes the end of the options.
+Arguments after this will be handled as a file name.
+This can be used to edit a filename that starts with a '-'.
+.TP
+--echo-wid
+GTK GUI only: Echo the Window ID on stdout
+.TP
+--help
+Give a help message and exit, just like "-h".
+.TP
+--literal
+Take file name arguments literally, do not expand wildcards.  Not needed on
+Unix, the shell expand wildcards.
+.TP
+--noplugin
+Skip loading plugins.  Implied by -u NONE.
+.TP
+--remote
+Connect to a Vim server and make it edit the files given in the rest of the
+arguments.  If no server is found a warning is given and the files are edited
+in the current Vim.
+.TP
+--remote-expr {expr}
+Connect to a Vim server, evaluate {expr} in it and print the result on stdout.
+.TP
+--remote-send {keys}
+Connect to a Vim server and send {keys} to it.
+.TP
+--remote-silent
+As --remote, but without the warning when no server is found.
+.TP
+--remote-wait
+As --remote, but Vim does not exit until the files have been edited.
+.TP
+--remote-wait-silent
+As --remote-wait, but without the warning when no server is found.
+.TP
+--serverlist
+List the names of all Vim servers that can be found.
+.TP
+--servername {name}
+Use {name} as the server name.  Used for the current Vim, unless used with a
+--remote argument, then it's the name of the server to connect to.
+.TP
+--socketid {id}
+GTK GUI only: Use the GtkPlug mechanism to run gvim in another window.
+.TP
+--version
+Print version information and exit.
+.SH ON-LINE HELP
+Type ":help" in
+.B Vim
+to get started.
+Type ":help subject" to get help on a specific subject.
+For example: ":help ZZ" to get help for the "ZZ" command.
+Use <Tab> and CTRL-D to complete subjects (":help cmdline-completion").
+Tags are present to jump from one place to another (sort of hypertext links,
+see ":help").
+All documentation files can be viewed in this way, for example
+":help syntax.txt".
+.SH FILES
+.TP 15
+/usr/local/lib/vim/doc/*.txt
+The
+.B Vim
+documentation files.
+Use ":help doc-file-list" to get the complete list.
+.TP
+/usr/local/lib/vim/doc/tags
+The tags file used for finding information in the documentation files.
+.TP
+/usr/local/lib/vim/syntax/syntax.vim
+System wide syntax initializations.
+.TP
+/usr/local/lib/vim/syntax/*.vim
+Syntax files for various languages.
+.TP
+/usr/local/lib/vim/vimrc
+System wide
+.B Vim
+initializations.
+.TP
+/usr/local/lib/vim/gvimrc
+System wide gvim initializations.
+.TP
+/usr/local/lib/vim/optwin.vim
+Script used for the ":options" command, a nice way to view and set options.
+.TP
+/usr/local/lib/vim/menu.vim
+System wide menu initializations for gvim.
+.TP
+/usr/local/lib/vim/bugreport.vim
+Script to generate a bug report.  See ":help bugs".
+.TP
+/usr/local/lib/vim/filetype.vim
+Script to detect the type of a file by its name.  See ":help 'filetype'".
+.TP
+/usr/local/lib/vim/scripts.vim
+Script to detect the type of a file by its contents.  See ":help 'filetype'".
+.TP
+/usr/local/lib/vim/*.ps
+Files used for PostScript printing.
+.PP
+For recent info read the VIM home page:
+.br
+<URL:http://www.vim.org/>
+.SH SEE ALSO
+vimtutor(1)
+.SH AUTHOR
+Most of
+.B Vim
+was made by Bram Moolenaar, with a lot of help from others.
+See ":help credits" in
+.B Vim.
+.br
+.B Vim
+is based on Stevie, worked on by: Tim Thompson,
+Tony Andrews and G.R. (Fred) Walter.
+Although hardly any of the original code remains.
+.SH BUGS
+Probably.
+See ":help todo" for a list of known problems.
+.PP
+Note that a number of things that may be regarded as bugs by some, are in fact
+caused by a too-faithful reproduction of Vi's behaviour.
+And if you think other things are bugs "because Vi does it differently",
+you should take a closer look at the vi_diff.txt file (or type :help
+vi_diff.txt when in Vim).
+Also have a look at the 'compatible' and 'cpoptions' options.
diff --git a/runtime/doc/vim.man b/runtime/doc/vim.man
new file mode 100644
index 0000000..593926d
--- /dev/null
+++ b/runtime/doc/vim.man
@@ -0,0 +1,420 @@
+VIM(1)                                                                  VIM(1)
+
+
+
+NAME
+       vim - Vi IMproved, a programmers text editor
+
+SYNOPSIS
+       vim [options] [file ..]
+       vim [options] -
+       vim [options] -t tag
+       vim [options] -q [errorfile]
+
+       ex
+       view
+       gvim gview evim eview
+       rvim rview rgvim rgview
+
+DESCRIPTION
+       Vim  is a text editor that is upwards compatible to Vi.  It can be used
+       to edit all kinds of plain text.  It is especially useful  for  editing
+       programs.
+
+       There  are a lot of enhancements above Vi: multi level undo, multi win-
+       dows and buffers, syntax highlighting, command line  editing,  filename
+       completion,   on-line   help,   visual  selection,  etc..   See  ":help
+       vi_diff.txt" for a summary of the differences between Vim and Vi.
+
+       While running Vim a lot of help can be obtained from the  on-line  help
+       system,  with the ":help" command.  See the ON-LINE HELP section below.
+
+       Most often Vim is started to edit a single file with the command
+
+            vim file
+
+       More generally Vim is started with:
+
+            vim [options] [filelist]
+
+       If the filelist is missing, the editor will start with an empty buffer.
+       Otherwise  exactly  one out of the following four may be used to choose
+       one or more files to be edited.
+
+       file ..     A list of filenames.  The first one  will  be  the  current
+                   file  and  read  into the buffer.  The cursor will be posi-
+                   tioned on the first line of the buffer.  You can get to the
+                   other  files with the ":next" command.  To edit a file that
+                   starts with a dash, precede the filelist with "--".
+
+       -           The file to edit is read from  stdin.   Commands  are  read
+                   from stderr, which should be a tty.
+
+       -t {tag}    The file to edit and the initial cursor position depends on
+                   a "tag", a sort of goto label.  {tag} is looked up  in  the
+                   tags file, the associated file becomes the current file and
+                   the associated command is executed.  Mostly  this  is  used
+                   for  C  programs,  in  which case {tag} could be a function
+                   name.  The effect is that the file containing that function
+                   becomes  the  current  file and the cursor is positioned on
+                   the start of the function.  See ":help tag-commands".
+
+       -q [errorfile]
+                   Start in quickFix mode.  The file [errorfile] is  read  and
+                   the  first  error is displayed.  If [errorfile] is omitted,
+                   the  filename  is  obtained  from  the  'errorfile'  option
+                   (defaults  to  "AztecC.Err"  for the Amiga, "errors.err" on
+                   other systems).  Further errors can be jumped to  with  the
+                   ":cn" command.  See ":help quickfix".
+
+       Vim behaves differently, depending on the name of the command (the exe-
+       cutable may still be the same file).
+
+       vim       The "normal" way, everything is default.
+
+       ex        Start in Ex mode.  Go to Normal mode with the ":vi"  command.
+                 Can also be done with the "-e" argument.
+
+       view      Start  in read-only mode.  You will be protected from writing
+                 the files.  Can also be done with the "-R" argument.
+
+       gvim gview
+                 The GUI version.  Starts a new window.  Can also be done with
+                 the "-g" argument.
+
+       evim eview
+                 The GUI version in easy mode.  Starts a new window.  Can also
+                 be done with the "-y" argument.
+
+       rvim rview rgvim rgview
+                 Like the above, but with restrictions.  It will not be possi-
+                 ble  to  start  shell  commands, or suspend Vim.  Can also be
+                 done with the "-Z" argument.
+
+OPTIONS
+       The options may be given in  any  order,  before  or  after  filenames.
+       Options without an argument can be combined after a single dash.
+
+       +[num]      For  the  first  file the cursor will be positioned on line
+                   "num".  If "num" is missing, the cursor will be  positioned
+                   on the last line.
+
+       +/{pat}     For  the  first  file  the cursor will be positioned on the
+                   first occurrence of {pat}.  See ":help search-pattern"  for
+                   the available search patterns.
+
+       +{command}
+
+       -c {command}
+                   {command}  will  be  executed after the first file has been
+                   read.  {command} is interpreted as an Ex command.   If  the
+                   {command}  contains  spaces  it  must be enclosed in double
+                   quotes (this depends on the shell that is used).   Example:
+                   Vim "+set si" main.c
+                   Note: You can use up to 10 "+" or "-c" commands.
+
+       -S {file}   {file}  will be sourced after the first file has been read.
+                   This is equivalent to -c "source  {file}".   {file}  cannot
+                   start with '-'.  If {file} is omitted "Session.vim" is used
+                   (only works when -S is the last argument).
+
+       --cmd {command}
+                   Like using "-c", but the command is  executed  just  before
+                   processing  any  vimrc file.  You can use up to 10 of these
+                   commands, independently from "-c" commands.
+
+       -A          If Vim has been compiled with ARABIC  support  for  editing
+                   right-to-left  oriented  files and Arabic keyboard mapping,
+                   this option starts Vim in Arabic  mode,  i.e.  'arabic'  is
+                   set.  Otherwise an error message is given and Vim aborts.
+
+       -b          Binary  mode.  A few options will be set that makes it pos-
+                   sible to edit a binary or executable file.
+
+       -C          Compatible.  Set the 'compatible' option.  This  will  make
+                   Vim  behave  mostly  like  Vi,  even  though  a .vimrc file
+                   exists.
+
+       -d          Start in diff mode.  There should be two or three file name
+                   arguments.   Vim  will  open all the files and show differ-
+                   ences between them.  Works like vimdiff(1).
+
+       -d {device} Open {device} for use as a terminal.  Only  on  the  Amiga.
+                   Example: "-d con:20/30/600/150".
+
+       -D          Debugging.   Go  to debugging mode when executing the first
+                   command from a script.
+
+       -e          Start Vim in Ex mode, just like the executable  was  called
+                   "ex".
+
+       -E          Start Vim in improved Ex mode, just like the executable was
+                   called "exim".
+
+       -f          Foreground.  For the GUI version, Vim  will  not  fork  and
+                   detach from the shell it was started in.  On the Amiga, Vim
+                   is not restarted to open a new window.  This option  should
+                   be  used  when  Vim is executed by a program that will wait
+                   for the edit session to finish (e.g. mail).  On  the  Amiga
+                   the ":sh" and ":!" commands will not work.
+
+       --nofork    Foreground.   For  the  GUI  version, Vim will not fork and
+                   detach from the shell it was started in.
+
+       -F          If Vim has been compiled with  FKMAP  support  for  editing
+                   right-to-left  oriented  files  and Farsi keyboard mapping,
+                   this option starts Vim in  Farsi  mode,  i.e.  'fkmap'  and
+                   'rightleft'  are  set.  Otherwise an error message is given
+                   and Vim aborts.
+
+       -g          If Vim has been compiled  with  GUI  support,  this  option
+                   enables  the  GUI.   If  no GUI support was compiled in, an
+                   error message is given and Vim aborts.
+
+       -h          Give a bit of help about the  command  line  arguments  and
+                   options.  After this Vim exits.
+
+       -H          If Vim has been compiled with RIGHTLEFT support for editing
+                   right-to-left oriented files and Hebrew  keyboard  mapping,
+                   this  option  starts  Vim  in Hebrew mode, i.e. 'hkmap' and
+                   'rightleft' are set.  Otherwise an error message  is  given
+                   and Vim aborts.
+
+       -i {viminfo}
+                   When  using  the  viminfo file is enabled, this option sets
+                   the filename to use, instead of the  default  "~/.viminfo".
+                   This can also be used to skip the use of the .viminfo file,
+                   by giving the name "NONE".
+
+       -L          Same as -r.
+
+       -l          Lisp mode.  Sets the 'lisp' and 'showmatch' options on.
+
+       -m          Modifying files is disabled.  Resets  the  'write'  option.
+                   You  can still modify the buffer, but writing a file is not
+                   possible.
+
+       -M          Modifications not allowed.  The  'modifiable'  and  'write'
+                   options  will be unset, so that changes are not allowed and
+                   files can not be written.  Note that these options  can  be
+                   set to enable making modifications.
+
+       -N          No-compatible  mode.   Reset the 'compatible' option.  This
+                   will make Vim behave a bit better, but less Vi  compatible,
+                   even though a .vimrc file does not exist.
+
+       -n          No  swap file will be used.  Recovery after a crash will be
+                   impossible.  Handy if you want to edit a  file  on  a  very
+                   slow  medium  (e.g.  floppy).   Can also be done with ":set
+                   uc=0".  Can be undone with ":set uc=200".
+
+       -nb         Become an editor server for NetBeans.   See  the  docs  for
+                   details.
+
+       -o[N]       Open N windows stacked.  When N is omitted, open one window
+                   for each file.
+
+       -O[N]       Open N windows side by side.  When N is omitted,  open  one
+                   window for each file.
+
+       -R          Read-only  mode.   The  'readonly' option will be set.  You
+                   can still edit the buffer, but will be prevented from acci-
+                   dently  overwriting  a file.  If you do want to overwrite a
+                   file, add an exclamation mark to  the  Ex  command,  as  in
+                   ":w!".   The  -R  option  also  implies  the -n option (see
+                   below).  The 'readonly' option  can  be  reset  with  ":set
+                   noro".  See ":help 'readonly'".
+
+       -r          List  swap  files,  with  information  about using them for
+                   recovery.
+
+       -r {file}   Recovery mode.  The swap file is used to recover a  crashed
+                   editing  session.   The  swap  file is a file with the same
+                   filename as the text file with ".swp" appended.  See ":help
+                   recovery".
+
+       -s          Silent  mode.   Only  when started as "Ex" or when the "-e"
+                   option was given before the "-s" option.
+
+       -s {scriptin}
+                   The script file {scriptin} is read.  The characters in  the
+                   file  are  interpreted  as if you had typed them.  The same
+                   can be done with the command ":source! {scriptin}".  If the
+                   end of the file is reached before the editor exits, further
+                   characters are read from the keyboard.
+
+       -T {terminal}
+                   Tells Vim the name of the terminal  you  are  using.   Only
+                   required  when the automatic way doesn't work.  Should be a
+                   terminal known to Vim (builtin) or defined in  the  termcap
+                   or terminfo file.
+
+       -u {vimrc}  Use  the  commands in the file {vimrc} for initializations.
+                   All the other initializations are  skipped.   Use  this  to
+                   edit  a special kind of files.  It can also be used to skip
+                   all initializations by giving the name "NONE".  See  ":help
+                   initialization" within vim for more details.
+
+       -U {gvimrc} Use  the  commands in the file {gvimrc} for GUI initializa-
+                   tions.  All the other GUI initializations are skipped.   It
+                   can  also be used to skip all GUI initializations by giving
+                   the name "NONE".  See ":help gui-init" within vim for  more
+                   details.
+
+       -V[N]       Verbose.   Give  messages about which files are sourced and
+                   for reading and writing a viminfo file.  The optional  num-
+                   ber N is the value for 'verbose'.  Default is 10.
+
+       -v          Start  Vim  in Vi mode, just like the executable was called
+                   "vi".  This only has effect when the executable  is  called
+                   "ex".
+
+       -w {scriptout}
+                   All  the  characters that you type are recorded in the file
+                   {scriptout}, until you exit Vim.  This  is  useful  if  you
+                   want  to  create  a script file to be used with "vim -s" or
+                   ":source!".  If the {scriptout} file exists, characters are
+                   appended.
+
+       -W {scriptout}
+                   Like -w, but an existing file is overwritten.
+
+       -x          Use  encryption  when  writing  files.    Will prompt for a
+                   crypt key.
+
+       -X          Don't connect to the X server.  Shortens startup time in  a
+                   terminal,  but  the  window title and clipboard will not be
+                   used.
+
+       -y          Start Vim in easy mode, just like the executable was called
+                   "evim"  or "eview".  Makes Vim behave like a click-and-type
+                   editor.
+
+       -Z          Restricted mode.  Works like  the  executable  starts  with
+                   "r".
+
+       --          Denotes  the end of the options.  Arguments after this will
+                   be handled as a file name.  This can  be  used  to  edit  a
+                   filename that starts with a '-'.
+
+       --echo-wid  GTK GUI only: Echo the Window ID on stdout
+
+       --help      Give a help message and exit, just like "-h".
+
+       --literal   Take  file  name  arguments  literally, do not expand wild-
+                   cards.  Not needed on Unix, the shell expand wildcards.
+
+       --noplugin  Skip loading plugins.  Implied by -u NONE.
+
+       --remote    Connect to a Vim server and make it edit the files given in
+                   the rest of the arguments.  If no server is found a warning
+                   is given and the files are edited in the current Vim.
+
+       --remote-expr {expr}
+                   Connect to a Vim server, evaluate {expr} in  it  and  print
+                   the result on stdout.
+
+       --remote-send {keys}
+                   Connect to a Vim server and send {keys} to it.
+
+       --remote-silent
+                   As  --remote,  but  without  the  warning when no server is
+                   found.
+
+       --remote-wait
+                   As --remote, but Vim does not exit  until  the  files  have
+                   been edited.
+
+       --remote-wait-silent
+                   As --remote-wait, but without the warning when no server is
+                   found.
+
+       --serverlist
+                   List the names of all Vim servers that can be found.
+
+       --servername {name}
+                   Use {name} as the server name.  Used for the  current  Vim,
+                   unless used with a --remote argument, then it's the name of
+                   the server to connect to.
+
+       --socketid {id}
+                   GTK GUI only: Use the GtkPlug  mechanism  to  run  gvim  in
+                   another window.
+
+       --version   Print version information and exit.
+
+ON-LINE HELP
+       Type  ":help"  in Vim to get started.  Type ":help subject" to get help
+       on a specific subject.  For example: ":help ZZ" to  get  help  for  the
+       "ZZ"  command.   Use <Tab> and CTRL-D to complete subjects (":help cmd-
+       line-completion").  Tags are present to jump from one place to  another
+       (sort of hypertext links, see ":help").  All documentation files can be
+       viewed in this way, for example ":help syntax.txt".
+
+FILES
+       /usr/local/lib/vim/doc/*.txt
+                      The Vim documentation files.  Use ":help  doc-file-list"
+                      to get the complete list.
+
+       /usr/local/lib/vim/doc/tags
+                      The  tags file used for finding information in the docu-
+                      mentation files.
+
+       /usr/local/lib/vim/syntax/syntax.vim
+                      System wide syntax initializations.
+
+       /usr/local/lib/vim/syntax/*.vim
+                      Syntax files for various languages.
+
+       /usr/local/lib/vim/vimrc
+                      System wide Vim initializations.
+
+       /usr/local/lib/vim/gvimrc
+                      System wide gvim initializations.
+
+       /usr/local/lib/vim/optwin.vim
+                      Script used for the ":options" command, a  nice  way  to
+                      view and set options.
+
+       /usr/local/lib/vim/menu.vim
+                      System wide menu initializations for gvim.
+
+       /usr/local/lib/vim/bugreport.vim
+                      Script to generate a bug report.  See ":help bugs".
+
+       /usr/local/lib/vim/filetype.vim
+                      Script  to  detect  the type of a file by its name.  See
+                      ":help 'filetype'".
+
+       /usr/local/lib/vim/scripts.vim
+                      Script to detect the type of a  file  by  its  contents.
+                      See ":help 'filetype'".
+
+       /usr/local/lib/vim/*.ps
+                      Files used for PostScript printing.
+
+       For recent info read the VIM home page:
+       <URL:http://www.vim.org/>
+
+SEE ALSO
+       vimtutor(1)
+
+AUTHOR
+       Most of Vim was made by Bram Moolenaar, with a lot of help from others.
+       See ":help credits" in Vim.
+       Vim is based on Stevie, worked on by: Tim Thompson,  Tony  Andrews  and
+       G.R.  (Fred) Walter.  Although hardly any of the original code remains.
+
+BUGS
+       Probably.  See ":help todo" for a list of known problems.
+
+       Note that a number of things that may be regarded as bugs by some,  are
+       in  fact  caused by a too-faithful reproduction of Vi's behaviour.  And
+       if you think other things are bugs "because Vi  does  it  differently",
+       you  should  take  a closer look at the vi_diff.txt file (or type :help
+       vi_diff.txt when in Vim).  Also have a look  at  the  'compatible'  and
+       'cpoptions' options.
+
+
+
+                                  2002 Feb 22                           VIM(1)
diff --git a/runtime/doc/vim.man.info b/runtime/doc/vim.man.info
new file mode 100755
index 0000000..133f9a0
--- /dev/null
+++ b/runtime/doc/vim.man.info
Binary files differ
diff --git a/runtime/doc/vim2html.pl b/runtime/doc/vim2html.pl
new file mode 100644
index 0000000..ddb1c46
--- /dev/null
+++ b/runtime/doc/vim2html.pl
@@ -0,0 +1,229 @@
+#!/usr/bin/env perl
+
+# converts vim documentation to simple html
+# Sirtaj Singh Kang (taj@kde.org)
+
+# Sun Feb 24 14:49:17 CET 2002
+
+use strict;
+use vars qw/%url $date/;
+
+%url = ();
+$date = `date`;
+chop $date;
+
+sub maplink
+{
+	my $tag = shift;
+	if( exists $url{ $tag } ){
+		return $url{ $tag };
+	} else {
+		#warn "Unknown hyperlink target: $tag\n";
+		$tag =~ s/\.txt//;
+		$tag =~ s/</&lt;/g;
+		$tag =~ s/>/&gt;/g;
+		return "<code class=\"badlink\">$tag</code>";
+	}
+}
+
+sub readTagFile
+{
+	my($tagfile) = @_;
+	my( $tag, $file, $name );
+
+	open(TAGS,"$tagfile") || die "can't read tags\n";
+
+	while( <TAGS> ) {
+		next unless /^(\S+)\s+(\S+)\s+/;
+
+		$tag = $1;
+		my $label = $tag;
+		($file= $2) =~ s/.txt$/.html/g;
+		$label =~ s/\.txt//;
+
+		$url{ $tag } = "<a href=\"$file#".escurl($tag)."\">".esctext($label)."</a>";
+	}
+	close( TAGS );
+}
+
+sub esctext
+{
+	my $text = shift;
+	$text =~ s/&/&amp;/g;
+	$text =~ s/</&lt;/g;
+	$text =~ s/>/&gt;/g;
+	return $text;
+}
+
+sub escurl
+{
+	my $url = shift;
+	$url =~ s/"/%22/g;
+	$url =~ s/~/%7E/g;
+	$url =~ s/</%3C/g;
+	$url =~ s/>/%3E/g;
+	$url =~ s/=/%20/g;
+	$url =~ s/#/%23/g;
+	$url =~ s/\//%2F/g;
+
+	return $url;
+}
+
+sub vim2html
+{
+	my( $infile ) = @_;
+	my( $outfile );
+
+	open(IN, "$infile" ) || die "Couldn't read from $infile: $!.\n";
+
+	($outfile = $infile) =~ s:.*/::g;
+	$outfile =~ s/\.txt$//g;
+
+	open( OUT, ">$outfile.html" )
+			|| die "Couldn't write to $outfile.html: $!.\n";
+	my $head = uc( $outfile );
+
+	print OUT<<EOF;
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>VIM: $outfile</title>
+<link rel="stylesheet" href="vim-stylesheet.css" type="text/css">
+</head>
+<body>
+<h2>$head</h2>
+<pre>
+EOF
+
+	my $inexample = 0;
+	while( <IN> ) {
+		chop;
+		if ( /^\s*[-=]+\s*$/ ) {
+			print OUT "</pre><hr><pre>";
+			next;
+		}
+
+		# examples
+		elsif( /^>$/ || /\s>$/ ) {
+			$inexample = 1;
+			chop;
+		}
+		elsif ( $inexample && /^([<\S])/ ) {
+			$inexample = 0;
+			$_ = $' if $1 eq "<";
+		}
+
+		s/\s+$//g;
+
+		# Various vim highlights. note that < and > have already been escaped
+		# so that HTML doesn't get screwed up.
+
+		my @out = ();
+		#		print "Text: $_\n";
+		LOOP:
+		foreach my $token ( split /((?:\|[^\|]+\|)|(?:\*[^\*]+\*))/ ) {
+			if ( $token =~ /^\|([^\|]+)\|/ ) {
+				# link
+				push( @out, "|".maplink( $1 )."|" );
+				next LOOP;
+			}
+			elsif ( $token =~ /^\*([^\*]+)\*/ ) {
+				# target
+				push( @out,
+					"<b class=\"vimtag\">\*<a name=\"".escurl($1)."\">".esctext($1)."<\/a>\*<\/b>");
+				next LOOP;
+			}
+
+			$_ = esctext($token);
+			s/CTRL-(\w+)/<code class="keystroke">CTRL-$1<\/code>/g;
+			# parameter <...>
+			s/&lt;(.*?)&gt;/<code class="special">&lt;$1&gt;<\/code>/g;
+
+			# parameter {...}
+			s/\{([^}]*)\}/<code class="special">{$1}<\/code>/g;
+
+			# parameter [...]
+			s/\[(range|line|count|offset|cmd|[-+]?num)\]/<code class="special">\[$1\]<\/code>/g;
+			# note
+			s/(Note:?)/<code class="note">$1<\/code>/gi;
+
+			# local heading
+			s/^(.*)\~$/<code class="section">$1<\/code>/g;
+			push( @out, $_ );
+		}
+
+		$_ = join( "", @out );
+
+		if( $inexample == 2 ) {
+			print OUT "<code class=\"example\">$_</code>\n";
+		} else {
+			print OUT $_,"\n";
+		}
+
+		$inexample = 2 if $inexample == 1;
+	}
+	print OUT<<EOF;
+</pre>
+<p><i>Generated by vim2html on $date</i></p>
+</body>
+</html>
+EOF
+
+}
+
+sub usage
+{
+die<<EOF;
+vim2html.pl: converts vim documentation to HTML.
+usage:
+
+	vim2html.pl <tag file> <text files>
+EOF
+}
+
+
+
+sub writeCSS
+{
+	open( CSS, ">vim-stylesheet.css"  ) || die "Couldn't write stylesheet: $!\n";
+	print CSS<<EOF;
+body { background-color: white; color: black;}
+:link { color: rgb(0,137,139); }
+:visited { color: rgb(0,100,100);
+           background-color: white; /* should be inherit */ }
+:active { color: rgb(0,200,200);
+          background-color: white; /* should be inherit */ }
+
+B.vimtag { color : rgb(250,0,250); }
+
+h1, h2 { color: rgb(82,80,82); text-align: center; }
+h3, h4, h5, h6 { color: rgb(82,80,82); }
+.headline { color: rgb(0,137,139); }
+.header { color: rgb(164, 32, 246); }
+.section { color: rgb(164, 32, 246); }
+.keystroke { color: rgb(106, 89, 205); }
+.vim { }
+.example { color: rgb(0, 0, 255); }
+.option { }
+.notvi { }
+.special { color: rgb(106, 89, 205); }
+.note { color: blue; background-color: yellow; }
+.sub {}
+.badlink { color: rgb(0,37,39); }
+EOF
+
+}
+
+# main
+usage() if $#ARGV < 2;
+
+print "Processing tags...\n";
+readTagFile( $ARGV[ 0 ] );
+
+foreach my $file ( 1..$#ARGV ) {
+	print "Processing ".$ARGV[ $file ]."...\n";
+	vim2html( $ARGV[ $file ] );
+}
+print "Writing stylesheet...\n";
+writeCSS();
+print "done.\n"
diff --git a/runtime/doc/vimdiff.1 b/runtime/doc/vimdiff.1
new file mode 100644
index 0000000..e487284
--- /dev/null
+++ b/runtime/doc/vimdiff.1
@@ -0,0 +1,46 @@
+.TH VIMDIFF 1 "2001 March 30"
+.SH NAME
+vimdiff \- edit two or three versions of a file with Vim and show differences
+.SH SYNOPSIS
+.br
+.B vimdiff
+[options] file1 file2 [file3]
+.PP
+.B gvimdiff
+.SH DESCRIPTION
+.B Vimdiff
+starts
+.B Vim
+on two (or three) files.
+Each file gets its own window.
+The differences between the files are highlighted.
+This is a nice way to inspect changes and to move changes from one version
+to another version of the same file.
+.PP
+See vim(1) for details about Vim itself.
+.PP
+When started as
+.B gvimdiff
+the GUI will be started, if available.
+.PP
+In each window the 'diff' option will be set, which causes the differences
+to be highlighted.
+.br
+The 'wrap' and 'scrollbind' options are set to make the text look good.
+.br
+The 'foldmethod' option is set to "diff", which puts ranges of lines without
+changes in a fold.  'foldcolumn' is set to two to make it easy to spot the
+folds and open or close them.
+.SH OPTIONS
+Vertical splits are used to align the lines, as if the "-O" argument was used.
+To use horizontal splits intead, use the "-o" argument.
+.PP
+For all other arguments see vim(1).
+.SH SEE ALSO
+vim(1)
+.SH AUTHOR
+Most of
+.B Vim
+was made by Bram Moolenaar, with a lot of help from others.
+See ":help credits" in
+.B Vim.
diff --git a/runtime/doc/vimdiff.man b/runtime/doc/vimdiff.man
new file mode 100644
index 0000000..771ce9d
--- /dev/null
+++ b/runtime/doc/vimdiff.man
@@ -0,0 +1,66 @@
+
+
+
+VIMDIFF(1)                                             VIMDIFF(1)
+
+
+NAME
+       vimdiff  -  edit  two or three versions of a file with Vim
+       and show differences
+
+SYNOPSIS
+       vimdiff [options] file1 file2 [file3]
+
+       gvimdiff
+
+DESCRIPTION
+       Vimdiff starts Vim on two (or  three)  files.   Each  file
+       gets  its  own  window.  The differences between the files
+       are highlighted.  This is a nice way  to  inspect  changes
+       and to move changes from one version to another version of
+       the same file.
+
+       See vim(1) for details about Vim itself.
+
+       When started as gvimdiff  the  GUI  will  be  started,  if
+       available.
+
+       In each window the 'diff' option will be set, which causes
+       the differences to be highlighted.
+       The 'wrap' and 'scrollbind' options are set  to  make  the
+       text look good.
+       The  'foldmethod'  option  is  set  to  "diff", which puts
+       ranges of lines without changes in a  fold.   'foldcolumn'
+       is  set  to two to make it easy to spot the folds and open
+       or close them.
+
+OPTIONS
+       Vertical splits are used to align the  lines,  as  if  the
+       "-O"  argument was used.  To use horizontal splits intead,
+       use the "-o" argument.
+
+       For all other arguments see vim(1).
+
+SEE ALSO
+       vim(1)
+
+AUTHOR
+       Most of Vim was made by Bram Moolenaar, with a lot of help
+       from others.  See ":help credits" in Vim.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+                          2001 March 30                         1
+
+
diff --git a/runtime/doc/vimtutor.1 b/runtime/doc/vimtutor.1
new file mode 100644
index 0000000..4b5aea6
--- /dev/null
+++ b/runtime/doc/vimtutor.1
@@ -0,0 +1,54 @@
+.TH VIMTUTOR 1 "2001 April 2"
+.SH NAME
+vimtutor \- the Vim tutor
+.SH SYNOPSIS
+.br
+.B vimtutor [language]
+.SH DESCRIPTION
+.B Vimtutor
+starts the
+.B Vim
+tutor.
+It copies the tutor file first, so that it can be modified without changing
+the original file.
+.PP
+The
+.B Vimtutor
+is useful for people that want to learn their first
+.B Vim
+commands.
+.PP
+The optional [language] argument is the two-letter name of a language, like
+"it" or "es".
+If the [language] argument is missing, the language of the current locale will
+be used.
+If a tutor in this language is available, it will be used.
+Otherwise the English version will be used.
+.PP
+.B Vim
+is always started in Vi compatible mode.
+.SH FILES
+.TP 15
+/usr/local/lib/vim/tutor/tutor[.language]
+The
+.B Vimtutor
+text file(s).
+.TP 15
+/usr/local/lib/vim/tutor/tutor.vim
+The Vim script used to copy the
+.B Vimtutor
+text file.
+.SH AUTHOR
+The
+.B Vimtutor
+was originally written for Vi by Michael C. Pierce and Robert K. Ware,
+Colorado School of Mines using ideas supplied by Charles Smith,
+Colorado State University.
+E-mail: bware@mines.colorado.edu.
+.br
+It was modified for
+.B Vim
+by Bram Moolenaar.
+For the names of the translators see the tutor files.
+.SH SEE ALSO
+vim(1)
diff --git a/runtime/doc/vimtutor.man b/runtime/doc/vimtutor.man
new file mode 100644
index 0000000..c36b1c1
--- /dev/null
+++ b/runtime/doc/vimtutor.man
@@ -0,0 +1,66 @@
+
+
+
+VIMTUTOR(1)                                           VIMTUTOR(1)
+
+
+NAME
+       vimtutor - the Vim tutor
+
+SYNOPSIS
+       vimtutor [language]
+
+DESCRIPTION
+       Vimtutor  starts  the Vim tutor.  It copies the tutor file
+       first, so that it can be  modified  without  changing  the
+       original file.
+
+       The Vimtutor is useful for people that want to learn their
+       first Vim commands.
+
+       The optional [language] argument is the two-letter name of
+       a language, like "it" or "es".  If the [language] argument
+       is missing, the language of the  current  locale  will  be
+       used.   If  a tutor in this language is available, it will
+       be used.  Otherwise the English version will be used.
+
+       Vim is always started in Vi compatible mode.
+
+FILES
+       /usr/local/lib/vim/tutor/tutor[.language]
+                      The Vimtutor text file(s).
+
+       /usr/local/lib/vim/tutor/tutor.vim
+                      The Vim script used to  copy  the  Vimtutor
+                      text file.
+
+AUTHOR
+       The  Vimtutor  was originally written for Vi by Michael C.
+       Pierce and Robert K. Ware, Colorado School of Mines  using
+       ideas  supplied  by  Charles Smith, Colorado State Univer-
+       sity.  E-mail: bware@mines.colorado.edu.
+       It was modified for Vim by Bram Moolenaar.  For the  names
+       of the translators see the tutor files.
+
+SEE ALSO
+       vim(1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+                           2001 April 2                         1
+
+
diff --git a/runtime/doc/visual.txt b/runtime/doc/visual.txt
new file mode 100644
index 0000000..4100578
--- /dev/null
+++ b/runtime/doc/visual.txt
@@ -0,0 +1,487 @@
+*visual.txt*    For Vim version 7.0aa.  Last change: 2004 Jun 08
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Visual mode				*Visual* *Visual-mode* *visual-mode*
+
+Visual mode is a flexible and easy way to select a piece of text for an
+operator.  It is the only way to select a block of text.
+
+This is introduced in section |04.4| of the user manual.
+
+1. Using Visual mode			|visual-use|
+2. Starting and stopping Visual mode	|visual-start|
+3. Changing the Visual area		|visual-change|
+4. Operating on the Visual area		|visual-operators|
+5. Blockwise operators			|blockwise-operators|
+6. Repeating				|visual-repeat|
+7. Examples				|visual-examples|
+8. Select mode				|Select-mode|
+
+{Vi has no Visual mode, the name "visual" is used for Normal mode, to
+distinguish it from Ex mode}
+{not available when the |+visual| feature was disabled when compiling}
+
+==============================================================================
+1. Using Visual mode					*visual-use*
+
+Using Visual mode consists of three parts:
+1. Mark the start of the text with "v", "V" or CTRL-V.
+   The character under the cursor will be used as the start.
+2. Move to the end of the text.
+   The text from the start of the Visual mode up to and including the
+   character under the cursor is highlighted.
+3. Type an operator command.
+   The highlighted characters will be operated upon.
+
+The 'highlight' option can be used to set the display mode to use for
+highlighting in Visual mode.
+The 'virtualedit' option can be used to allow positioning the cursor to
+positions where there is no actual character.
+
+The highlighted text normally includes the character under the cursor.
+However, when the 'selection' option is set to "exclusive" and the cursor is
+after the Visual area, the character under the cursor is not included.
+
+With "v" the text before the start position and after the end position will
+not be highlighted.  However, All uppercase and non-alpha operators, except
+"~" and "U", will work on whole lines anyway.  See the list of operators
+below.
+
+							*visual-block*
+With CTRL-V (blockwise Visual mode) the highlighted text will be a rectangle
+between start position and the cursor.  However, some operators work on whole
+lines anyway (see the list below).  The change and substitute operators will
+delete the highlighted text and then start insertion at the top left
+position.
+
+==============================================================================
+2. Starting and stopping Visual mode			*visual-start*
+
+						*v* *characterwise-visual*
+v			start Visual mode per character.
+
+						*V* *linewise-visual*
+V			start Visual mode linewise.
+
+						*CTRL-V* *blockwise-visual*
+CTRL-V			start Visual mode blockwise.  Note: Under Windows
+			CTRL-V could be mapped to paste text, it doesn't work
+			to start Visual mode then, see |CTRL-V-alternative|.
+
+If you use <Esc>, click the left mouse button or use any command that
+does a jump to another buffer while in Visual mode, the highlighting stops
+and no text is affected.  Also when you hit "v" in characterwise Visual mode,
+"CTRL-V" in blockwise Visual mode or "V" in linewise Visual mode.  If you hit
+CTRL-Z the highlighting stops and the editor is suspended or a new shell is
+started |CTRL-Z|.
+
+	      new mode after typing:		*v_v* *v_CTRL-V* *v_V*
+old mode	     "v"	      "CTRL-V"		     "V"	~
+
+Normal		    Visual	   blockwise Visual	  linewise Visual
+Visual		    Normal	   blockwise Visual	  linewise Visual
+blockwise Visual    Visual	   Normal		  linewise Visual
+linewise Visual     Visual	   blockwise Visual	  Normal
+
+							*gv* *v_gv*
+gv			Start Visual mode with the same area as the previous
+			area and the same mode.  In Visual mode the current and
+			the previous Visual area are exchanged.
+
+							*<LeftMouse>*
+<LeftMouse>		Set the current cursor position.  If Visual mode is
+			active it is stopped.  Only when 'mouse' option is
+			contains 'n' or 'a'.  If the position is within 'so'
+			lines from the last line on the screen the text is
+			scrolled up.  If the position is within 'so' lines from
+			the first line on the screen the text is scrolled
+			down.
+
+							*<RightMouse>*
+<RightMouse>		Start Visual mode if it is not active.  The text from
+			the cursor position to the position of the click is
+			highlighted.  If Visual mode was already active move
+			the start or end of the highlighted text, which ever
+			is closest, to the position of the click.  Only when
+			'mouse' option contains 'n' or 'a'.
+
+			Note: when 'mousemodel' is set to "popup",
+			<S-LeftMouse> has to be used instead of <RightMouse>.
+
+							*<LeftRelease>*
+<LeftRelease>		This works like a <LeftMouse>, if it is not at
+			the same position as <LeftMouse>.  In an older version
+			of xterm you won't see the selected area until the
+			button is released, unless there is access to the
+			display where the xterm is running (via the DISPLAY
+			environment variable or the -display argument).  Only
+			when 'mouse' option contains 'n' or 'a'.
+
+If Visual mode is not active and the "v", "V" or CTRL-V is preceded with a
+count, the size of the previously highlighted area is used for a start.  You
+can then move the end of the highlighted area and give an operator.  The type
+of the old area is used (character, line or blockwise).
+- Linewise Visual mode: The number of lines is multiplied with the count.
+- Blockwise Visual mode: The number of lines and columns is multiplied with
+  the count.
+- Normal Visual mode within one line: The number of characters is multiplied
+  with the count.
+- Normal Visual mode with several lines: The number of lines is multiplied
+  with the count, in the last line the same number of characters is used as
+  in the last line in the previously highlighted area.
+The start of the text is the Cursor position.  If the "$" command was used as
+one of the last commands to extend the highlighted text, the area will be
+extended to the rightmost column of the longest line.
+
+If you want to highlight exactly the same area as the last time, you can use
+"gv" |gv| |v_gv|.
+
+							*v_CTRL-C*
+CTRL-C			In Visual mode: Stop Visual mode.  When insert mode is
+			pending (the mode message shows
+			"-- (insert) VISUAL --"), it is also stopped.
+
+==============================================================================
+3. Changing the Visual area				*visual-change*
+
+							*v_o*
+o			Go to Other end of highlighted text: The current
+			cursor position becomes the start of the highlighted
+			text and the cursor is moved to the other end of the
+			highlighted text.  The highlighted area remains the
+			same.
+
+							*v_O*
+O			Go to Other end of highlighted text.  This is like
+			"o", but in Visual block mode the cursor moves to the
+			other corner in the same line.  When the corner is at
+			a character that occupies more than one position on
+			the screen (e.g., a <Tab>), the highlighted text may
+			change.
+
+							*v_$*
+When the "$" command is used with blockwise Visual mode, the right end of the
+highlighted text will be determined by the longest highlighted line.  This
+stops when a motion command is used that does not move straight up or down.
+
+For moving the end of the block many commands can be used, but you cannot
+use Ex commands, commands that make changes or abandon the file.  Commands
+(starting with) ".pPiIaAO&", CTRL-^, "Z", CTRL-], CTRL-T, CTRL-R, CTRL-I
+and CTRL-O cause a beep and Visual mode continues.
+
+When switching to another window on the same buffer, the cursor position in
+that window is adjusted, so that the same Visual area is still selected.  This
+is especially useful to view the start of the Visual area in one window, and
+the end in another.  You can then use <RightMouse> (or <S-LeftMouse> when
+'mousemodel' is "popup") to move either end of the Visual area.
+
+==============================================================================
+4. Operating on the Visual area				*visual-operators*
+
+The operators that can be used are:
+	~	switch case					|v_~|
+	d	delete						|v_d|
+	c	change (4)					|v_c|
+	y	yank						|v_y|
+	>	shift right (4)					|v_>|
+	<	shift left (4)					|v_<|
+	!	filter through external command (1)		|v_!|
+	=	filter through 'equalprg' option command (1)	|v_=|
+	gq	format lines to 'textwidth' length (1)		|v_gq|
+
+The objects that can be used are:
+	aw	a word (with white space)			|v_aw|
+	iw	inner word					|v_iw|
+	aW	a WORD (with white space)			|v_aW|
+	iW	inner WORD					|v_iW|
+	as	a sentence (with white space)			|v_as|
+	is	inner sentence					|v_is|
+	ap	a paragraph (with white space)			|v_ap|
+	ip	inner paragraph					|v_ip|
+	ab	a () block (with parenthesis)			|v_ab|
+	ib	inner () block					|v_ib|
+	aB	a {} block (with braces)			|v_aB|
+	iB	inner {} block					|v_iB|
+	a<	a <> block (with <>)				|v_a<|
+	i<	inner <> block					|v_i<|
+	a[	a [] block (with [])				|v_a[|
+	i[	inner [] block					|v_i[|
+
+Additionally the following commands can be used:
+	:	start ex command for highlighted lines (1)	|v_:|
+	r	change (4)					|v_r|
+	s	change						|v_s|
+	C	change (2)(4)					|v_C|
+	S	change (2)					|v_S|
+	R	change (2)					|v_R|
+	x	delete						|v_x|
+	D	delete (3)					|v_D|
+	X	delete (2)					|v_X|
+	Y	yank (2)					|v_Y|
+	p	put						|v_p|
+	J	join (1)					|v_J|
+	U	make uppercase					|v_U|
+	u	make lowercase					|v_u|
+	^]	find tag					|v_CTRL-]|
+	I	block insert					|v_b_I|
+	A	block append					|v_b_A|
+
+(1): Always whole lines, see |:visual_example|.
+(2): Whole lines when not using CTRL-V.
+(3): Whole lines when not using CTRL-V, delete until the end of the line when
+     using CTRL-V.
+(4): When using CTRL-V operates on the block only.
+
+Note that the ":vmap" command can be used to specifically map keys in Visual
+mode.  For example, if you would like the "/" command not to extend the Visual
+area, but instead take the highlighted text and search for that: >
+	:vmap / y/<C-R>"<CR>
+(In the <> notation |<>|, when typing it you should type it literally; you
+need to remove the 'B' and '<' flags from 'cpoptions'.)
+
+If you want to give a register name using the """ command, do this just before
+typing the operator character: "v{move-around}"xd".
+
+If you want to give a count to the command, do this just before typing the
+operator character: "v{move-around}3>" (move lines 3 indents to the right).
+
+							*{move-around}*
+The {move-around} is any sequence of movement commands.  Note the difference
+with {motion}, which is only ONE movement command.
+
+==============================================================================
+5. Blockwise operators					*blockwise-operators*
+
+{not available when compiled without the |+visualextra| feature}
+
+Reminder: Use 'virtualedit' to be able to select blocks that start or end
+after the end of a line or halfway a tab.
+
+Visual-block Insert						*v_b_I*
+With a blockwise selection, I{string}<ESC> will insert {string} at the start
+of block on every line of the block, provided that the line extends into the
+block.  Thus lines that are short will remain unmodified.  TABs are split to
+retain visual columns.
+See |v_b_I_example|.
+
+Visual-block Append						*v_b_A*
+With a blockwise selection, A{string}<ESC> will append {string} to the end of
+block on every line of the block. There is some differing behavior where the
+block RHS is not straight, due to different line lengths:
+
+1. Block was created with <C-v>$
+    In this case the string is appended to the end of each line.
+2. Block was created with <C-v>{move-around}
+    In this case the string is appended to the end of the block on each line,
+    and whitespace is inserted to pad to the end-of-block column.
+See |v_b_A_example|.
+Note: "I" and "A" behave differently for lines that don't extend into the
+selected block.  This was done intentionally, so that you can do it the way
+you want.
+
+Visual-block change						*v_b_c*
+All selected text in the block will be replaced by the same text string.  When
+using "c" the selected text is deleted and Insert mode started.  You can then
+enter text (without a line break).  When you hit <Esc>, the same string is
+inserted in all previously selected lines.
+
+Visual-block Change						*v_b_C*
+Like using "c", but the selection is extended until the end of the line for
+all lines.
+
+								*v_b_<*
+Visual-block Shift						*v_b_>*
+The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant. The
+LHS of the block determines the point from which to apply a right shift, and
+padding includes TABs optimally according to 'ts' and 'et'. The LHS of the
+block determines the point upto which to shift left.
+    Note: v_< padding is buggy if the Visual Block starts and ends in the same
+    TAB. (Vim 5.4c).
+See |v_b_>_example|.
+See |v_b_<_example|.
+
+Visual-block Replace						*v_b_r*
+Every screen char in the highlighted region is replaced with the same char, ie
+TABs are split and the virtual whitespace is replaced, maintaining screen
+layout.
+See |v_b_r_example|.
+
+
+==============================================================================
+6. Repeating						*visual-repeat*
+
+When repeating a Visual mode operator, the operator will be applied to the
+same amount of text as the last time:
+- Linewise Visual mode: The same number of lines.
+- Blockwise Visual mode: The same number of lines and columns.
+- Normal Visual mode within one line: The same number of characters.
+- Normal Visual mode with several lines: The same number of lines, in the
+  last line the same number of characters as in the last line the last time.
+The start of the text is the Cursor position.  If the "$" command was used as
+one of the last commands to extend the highlighted text, the repeating will
+be applied up to the rightmost column of the longest line.
+
+
+==============================================================================
+7. Examples						*visual-examples*
+
+							*:visual_example*
+Currently the ":" command works on whole lines only.  When you select part of
+a line, doing something like ":!date" will replace the whole line.  If you
+want only part of the line to be replaced you will have to make a mapping for
+it.  In a future release ":" may work on partial lines.
+
+Here is an example, to replace the selected text with the output of "date": >
+	:vmap _a <Esc>`>a<CR><Esc>`<i<CR><Esc>!!date<CR>kJJ
+
+(In the <> notation |<>|, when typing it you should type it literally; you
+need to remove the 'B' and '<' flags from 'cpoptions')
+
+What this does is:
+<Esc>		stop Visual mode
+`>		go to the end of the Visual area
+a<CR><Esc>	break the line after the Visual area
+`<		jump to the start of the Visual area
+i<CR><Esc>	break the line before the Visual area
+!!date<CR>	filter the Visual text through date
+kJJ		Join the lines back together
+
+							*visual-search*
+Here is an idea for a mapping that makes it possible to do a search for the
+selected text: >
+	:vmap X y/<C-R>"<CR>
+
+(In the <> notation |<>|, when typing it you should type it literally; you
+need to remove the 'B' and '<' flags from 'cpoptions')
+
+Note that special characters (like '.' and '*') will cause problems.
+
+Visual-block Examples					*blockwise-examples*
+With the following text, I will indicate the commands to produce the block and
+the results below. In all cases, the cursor begins on the 'a' in the first
+line if the test text.
+The following modeline settings are assumed ":ts=8:sw=4:".
+
+It will be helpful to
+:set hls
+/<TAB>
+where <TAB> is a real TAB. This helps visualise the operations.
+
+The test text is:
+
+abcdefghijklmnopqrstuvwxyz
+abc		defghijklmnopqrstuvwxyz
+abcdef  ghi		jklmnopqrstuvwxyz
+abcdefghijklmnopqrstuvwxyz
+
+1. fo<C-v>3jISTRING<ESC>					*v_b_I_example*
+
+abcdefghijklmnSTRINGopqrstuvwxyz
+abc	      STRING  defghijklmnopqrstuvwxyz
+abcdef  ghi   STRING	jklmnopqrstuvwxyz
+abcdefghijklmnSTRINGopqrstuvwxyz
+
+2. fo<C-v>3j$ASTRING<ESC>					*v_b_A_example*
+
+abcdefghijklmnopqrstuvwxyzSTRING
+abc		defghijklmnopqrstuvwxyzSTRING
+abcdef  ghi		jklmnopqrstuvwxyzSTRING
+abcdefghijklmnopqrstuvwxyzSTRING
+
+3. fo<C-v>3j3l<..						*v_b_<_example*
+
+abcdefghijklmnopqrstuvwxyz
+abc	      defghijklmnopqrstuvwxyz
+abcdef  ghi   jklmnopqrstuvwxyz
+abcdefghijklmnopqrstuvwxyz
+
+4. fo<C-v>3j>..							*v_b_>_example*
+
+abcdefghijklmn		  opqrstuvwxyz
+abc			    defghijklmnopqrstuvwxyz
+abcdef  ghi			    jklmnopqrstuvwxyz
+abcdefghijklmn		  opqrstuvwxyz
+
+5. fo<C-v>5l3jrX						*v_b_r_example*
+
+abcdefghijklmnXXXXXXuvwxyz
+abc	      XXXXXXhijklmnopqrstuvwxyz
+abcdef  ghi   XXXXXX    jklmnopqrstuvwxyz
+abcdefghijklmnXXXXXXuvwxyz
+
+==============================================================================
+8. Select mode						*Select* *Select-mode*
+
+Select mode looks like Visual mode, but the commands accepted are quite
+different.  This resembles the selection mode in Microsoft Windows.
+When the 'showmode' option is set, "-- SELECT --" is shown in the last line.
+
+Entering Select mode:
+- Using the mouse to select an area, and 'selectmode' contains "mouse".
+  'mouse' must also contain a flag for the current mode.
+- Using a non-printable movement command, with the Shift key pressed, and
+  'selectmode' contains "key".  For example: <S-Left> and <S-End>.  'keymodel'
+  must also contain "startsel".
+- Using "v", "V" or CTRL-V command, and 'selectmode' contains "cmd".
+- Using "gh", "gH" or "g_CTRL-H" command in Normal mode.
+- From Visual mode, press CTRL-G.			*v_CTRL-G*
+
+Commands in Select mode:
+- Printable characters, <NL> and <CR> cause the selection to be deleted, and
+  Vim enters Insert mode.  The typed character is inserted.
+- Non-printable movement commands, with the Shift key pressed, extend the
+  selection.  'keymodel' must include "startsel".
+- Non-printable movement commands, with the Shift key NOT pressed, stop Select
+  mode.  'keymodel' must include "stopsel".
+- ESC stops Select mode.
+- CTRL-O switches to Visual mode for the duration of one command. *v_CTRL-O*
+- CTRL-G switches to Visual mode.
+
+Otherwise, typed characters are handled as in Visual mode.
+
+When using an operator in Select mode, and the selection is linewise, the
+selected lines are operated upon, but like in characterwise selection.  For
+example, when a whole line is deleted, it can later be pasted halfway a line.
+
+
+Mappings and menus in Select mode.			*Select-mode-mapping*
+
+In Select mode the mappings and menus of Visual mode are used.  Before it is
+executed, Vim automatically switches to Visual mode, so that the same
+behavior as in Visual mode is effective.
+
+After the mapping or menu finishes, the selection is enabled again and Select
+mode entered, unless the selected area was deleted, another buffer became
+the current one or the window layout was changed.
+
+When a character was typed that causes the selection to be deleted and Insert
+mode started, Insert mode mappings are applied to this character.  This may
+cause some confusion, because it means Insert mode mappings apply to a
+character typed in Select mode.  Language mappings apply as well.
+
+							*gV* *v_gV*
+gV			Avoid the automatic reselection of the Visual area
+			after a Select mode mapping or menu has finished.
+			Put this just before the end of the mapping or menu.
+			At least it should be after any operations on the
+			selection.
+
+							*gh*
+gh			Start Select mode, characterwise.  This is like "v",
+			but starts Select mode instead of Visual mode.
+			Mnemonic: "get highlighted".
+
+							*gH*
+gH			Start Select mode, linewise.  This is like "V",
+			but starts Select mode instead of Visual mode.
+			Mnemonic: "get Highlighted".
+
+							*g_CTRL-H*
+g CTRL-H		Start Select mode, blockwise.  This is like CTRL-V,
+			but starts Select mode instead of Visual mode.
+			Mnemonic: "get Highlighted".
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
new file mode 100644
index 0000000..69f37c9
--- /dev/null
+++ b/runtime/doc/windows.txt
@@ -0,0 +1,1123 @@
+*windows.txt*   For Vim version 7.0aa.  Last change: 2004 Apr 29
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Editing with multiple windows and buffers.		*windows* *buffers*
+
+The commands which have been added to use multiple windows and buffers are
+explained here.  Additionally, there are explanations for commands that work
+differently when used in combination with more than one window.
+
+The basics are explained in chapter 7 and 8 of the user manual |usr_07.txt|
+|usr_08.txt|.
+
+1.  Introduction				|windows-intro|
+2.  Starting Vim				|windows-starting|
+3.  Opening and closing a window		|opening-window|
+4.  Moving cursor to other windows		|window-move-cursor|
+5.  Moving windows around			|window-moving|
+6.  Window resizing				|window-resize|
+7.  Argument and buffer list commands		|buffer-list|
+8.  Do a command in all buffers or windows	|list-repeat|
+9.  Tag or file name under the cursor		|window-tag|
+10. The preview window				|preview-window|
+11. Using hidden buffers			|buffer-hidden|
+12. Special kinds of buffers			|special-buffers|
+
+{Vi does not have any of these commands}
+{not able to use multiple windows when the |+windows| feature was disabled at
+compile time}
+{not able to use vertically split windows when the |+vertsplit| feature was
+disabled at compile time}
+
+==============================================================================
+1. Introduction						*windows-intro*
+
+A window is a viewport onto a buffer.  You can use multiple windows on one
+buffer, or several windows on different buffers.
+
+A buffer is a file loaded into memory for editing.  The original file remains
+unchanged until you write the buffer to the file.
+
+A buffer can be in one of three states:
+
+							*active-buffer*
+active:   The buffer is displayed in a window.  If there is a file for this
+	  buffer, it has been read into the buffer.  The buffer may have been
+	  modified since then and thus be different from the file.
+							*hidden-buffer*
+hidden:   The buffer is not displayed.  If there is a file for this buffer, it
+	  has been read into the buffer.  Otherwise it's the same as an active
+	  buffer, you just can't see it.
+							*inactive-buffer*
+inactive: The buffer is not displayed and does not contain anything.  Options
+	  for the buffer are remembered if the file was once loaded.  It can
+	  contain marks from the |viminfo| file.  But the buffer doesn't
+	  contain text.
+
+In a table:
+
+state		displayed	loaded		":buffers"  ~
+		in window			shows	    ~
+active		  yes		 yes		  'a'
+hidden		  no		 yes		  'h'
+inactive	  no		 no		  ' '
+
+Note: All CTRL-W commands can also be executed with |:wincmd|, for those
+places where a Normal mode command can't be used or is inconvenient.
+
+==============================================================================
+2. Starting Vim						*windows-starting*
+
+By default, Vim starts with one window, just like Vi.
+
+The "-o" and "-O" arguments to Vim can be used to open a window for each file
+in the argument list.  The "-o" argument will split the windows horizontally;
+the "-O" argument will split the windows vertically.  If both "-o" and "-O"
+are given, the last one encountered will be used to determine the split
+orientation.  For example, this will open three windows, split horizontally: >
+	vim -o file1 file2 file3
+
+"-oN", where N is a decimal number, opens N windows split horizontally.  If
+there are more file names than windows, only N windows are opened and some
+files do not get a window.  If there are more windows than file names, the
+last few windows will be editing empty buffers.  Similarly, "-ON" opens N
+windows split vertically, with the same restrictions.
+
+If there are many file names, the windows will become very small.  You might
+want to set the 'winheight' and/or 'winwidth' options to create a workable
+situation.
+
+Buf/Win Enter/Leave |autocommand|s are not executed when opening the new
+windows and reading the files, that's only done when they are really entered.
+
+							*status-line*
+A status line will be used to separate windows.  The 'laststatus' option tells
+when the last window also has a status line:
+	'laststatus' = 0	never a status line
+	'laststatus' = 1	status line if there is more than one window
+	'laststatus' = 2	always a status line
+
+You can change the contents of the status line with the 'statusline' option.
+
+Normally, inversion is used to display the status line.  This can be changed
+with the 's' character in the 'highlight' option.  For example, "sb" sets it to
+bold characters.  If no highlighting is used for the status line ("sn"), the
+'^' character is used for the current window, and '=' for other windows.  If
+the mouse is supported and enabled with the 'mouse' option, a status line can
+be dragged to resize windows.
+
+Note: If you expect your status line to be in reverse video and it isn't,
+check if the 'highlight' option contains "si".  In version 3.0, this meant to
+invert the status line.  Now it should be "sr", reverse the status line, as
+"si" now stands for italic!  If italic is not available on your terminal, the
+status line is inverted anyway; you will only see this problem on terminals
+that have termcap codes for italics.
+
+==============================================================================
+3. Opening and closing a window				*opening-window* *E36*
+
+CTRL-W s						*CTRL-W_s*
+CTRL-W S						*CTRL-W_S*
+CTRL-W CTRL-S						*CTRL-W_CTRL-S*
+:[N]sp[lit] [++opt] [+cmd]				*:sp* *:split*
+		Split current window in two.  The result is two viewports on
+		the same file.  Make new window N high (default is to use half
+		the height of the current window).  Reduces the current window
+		height to create room (and others, if the 'equalalways' option
+		is set and 'eadirection' isn't "hor").
+		Note: CTRL-S does not work on all terminals and might block
+		further input, use CTRL-Q to get going again.
+		Also see |++opt| and |+cmd|.
+
+CTRL-W CTRL-V						*CTRL-W_CTRL-V*
+CTRL-W v						*CTRL-W_v*
+:[N]vs[plit] [++opt] [+cmd] [file]			*:vs* *:vsplit*
+		Like |:split|, but split vertically.  If 'equalalways' is set
+		and 'eadirection' isn't "ver" the windows will be spread out
+		horizontally, unless a width was specified.
+		Note: In other places CTRL-Q does the same as CTRL-V, but here
+		it doesn't!
+
+CTRL-W n						*CTRL-W_n*
+CTRL-W CTRL_N						*CTRL-W_CTRL-N*
+:[N]new [++opt] [+cmd]					*:new*
+		Create a new window and start editing an empty file in it.
+		Make new window N high (default is to use half the existing
+		height).  Reduces the current window height to create room (and
+		others, if the 'equalalways' option is set and 'eadirection'
+		isn't "hor").
+		Also see |++opt| and |+cmd|.
+		If 'fileformats' is not empty, the first format given will be
+		used for the new buffer.  If 'fileformats' is empty, the
+		'fileformat' of the current buffer is used.  This can be
+		overridden with the |++opt| argument.
+		Autocommands are executed in this order:
+		1. WinLeave for the current window
+		2. WinEnter for the new window
+		3. BufLeave for the current buffer
+		4. BufEnter for the new buffer
+		This behaves like a ":split" first, and then a ":e" command.
+
+:[N]vne[w] [++opt] [+cmd] [file]			*:vne* *:vnew*
+		Like |:new|, but split vertically.  If 'equalalways' is set
+		and 'eadirection' isn't "ver" the windows will be spread out
+		horizontally, unless a width was specified.
+
+:[N]new [++opt] [+cmd] {file}
+:[N]sp[lit] [++opt] [+cmd] {file}			*:split_f*
+		Create a new window and start editing file {file} in it.
+		If [+cmd] is given, execute the command when the file has been
+		loaded |+cmd|.
+		Also see |++opt|.
+		Make new window N high (default is to use half the existing
+		height).  Reduces the current window height to create room
+		(and others, if the 'equalalways' option is set).
+
+:[N]sv[iew] [++opt] [+cmd] {file}		*:sv* *:sview* *splitview*
+		Same as ":split", but set 'readonly' option for this buffer.
+
+:[N]sf[ind] [++opt] [+cmd] {file}		*:sf* *:sfind* *splitfind*
+		Same as ":split", but search for {file} in 'path'.  Doesn't
+		split if {file} is not found.
+
+CTRL-W CTRL-^					*CTRL-W_CTRL-^* *CTRL-W_^*
+CTRL-W ^	Does ":split #", split window in two and edit alternate file.
+		When a count is given, it becomes ":split #N", split window
+		and edit buffer N.
+
+Note that the 'splitbelow' and 'splitright' options influence where a new
+window will appear.
+
+						*:vert* *:vertical*
+:vert[ical] {cmd}
+		Execute {cmd}.  If it contains a command that splits a window,
+		it will be split vertically.
+
+:lefta[bove] {cmd}				*:lefta* *:leftabove*
+:abo[veleft] {cmd}				*:abo* *:aboveleft*
+		Execute {cmd}.  If it contains a command that splits a window,
+		it will be opened left (vertical split) or above (horizontal
+		split) the current window.  Overrules 'splitbelow' and
+		'splitright'.
+
+:rightb[elow] {cmd}				*:rightb* *:rightbelow*
+:bel[owright] {cmd}				*:bel* *:belowright*
+		Execute {cmd}.  If it contains a command that splits a window,
+		it will be opened right (vertical split) or below (horizontal
+		split) the current window.  Overrules 'splitbelow' and
+		'splitright'.
+
+						*:topleft* *E442*
+:to[pleft] {cmd}
+		Execute {cmd}.  If it contains a command that splits a window,
+		it will appear at the top and occupy the full width of the Vim
+		window.  When the split is vertical the window appears at the
+		far left and occupies the full height of the Vim window.
+
+						*:botright*
+:bo[tright] {cmd}
+		Execute {cmd}.  If it contains a command that splits a window,
+		it will appear at the bottom and occupy the full width of the
+		Vim window.  When the split is vertical the window appears at
+		the far right and occupies the full height of the Vim window.
+
+These command modifiers can be combined to make a vertically split window
+occupy the full height.  Example: >
+	:vertical topleft edit tags
+Opens a vertically split, full-height window on the "tags" file at the far
+left of the Vim window.
+
+
+Closing a window
+----------------
+
+CTRL-W q						*CTRL-W_q*
+CTRL-W CTRL-Q						*CTRL-W_CTRL-Q*
+:q[uit]		Quit current window.  When quitting the last window (not
+		counting a help window), exit Vim.
+		When 'hidden' is set, and there is only one window for the
+		current buffer, it becomes hidden.
+		When 'hidden' is not set, and there is only one window for the
+		current buffer, and the buffer was changed, the command fails.
+		(Note: CTRL-Q does not work on all terminals)
+
+:q[uit]!	Quit current window.  If this was the last window for a buffer,
+		any changes to that buffer are lost.  When quitting the last
+		window (not counting help windows), exit Vim.  The contents of
+		the buffer are lost, even when 'hidden' is set.
+
+CTRL-W c					*CTRL-W_c* *:clo* *:close*
+:clo[se][!]	Close current window.  When the 'hidden' option is set, or
+		when the buffer was changed and the [!] is used, the buffer
+		becomes hidden (unless there is another window editing it).
+		This command fails when:			*E444*
+		- There is only one window on the screen.
+		- When 'hidden' is not set, [!] is not used, the buffer has
+		  changes, and there is no other window on this buffer.
+		Changes to the buffer are not written and won't get lost, so
+		this is a "safe" command.
+
+CTRL-W CTRL-C						*CTRL-W_CTRL-C*
+		You might have expected that CTRL-W CTRL-C closes the current
+		window, but that does not work, because the CTRL-C cancels the
+		command.
+
+							*:hide*
+:hid[e]		Quit current window, unless it is the last window on the
+		screen.  The buffer becomes hidden (unless there is another
+		window editing it or 'bufhidden' is "unload" or "delete").
+		The value of 'hidden' is irrelevant for this command.
+		Changes to the buffer are not written and won't get lost, so
+		this is a "safe" command.
+
+:hid[e] {cmd}	Execute {cmd} with 'hidden' is set.  The previous value of
+		'hidden' is restored after {cmd} has been executed.
+		Example: >
+		    :hide edit Makefile
+<		This will edit "Makefile", and hide the current buffer if it
+		has any changes.
+
+CTRL-W o						*CTRL-W_o* *E445*
+CTRL-W CTRL-O					*CTRL-W_CTRL-O* *:on* *:only*
+:on[ly][!]	Make the current window the only one on the screen.  All other
+		windows are closed.
+		When the 'hidden' option is set, all buffers in closed windows
+		become hidden.
+		When 'hidden' is not set, and the 'autowrite' option is set,
+		modified buffers are written.  Otherwise, windows that have
+		buffers that are modified are not removed, unless the [!] is
+		given, then they become hidden.  But modified buffers are
+		never abandoned, so changes cannot get lost.
+
+==============================================================================
+4. Moving cursor to other windows			*window-move-cursor*
+
+CTRL-W <Down>					*CTRL-W_<Down>*
+CTRL-W CTRL-J					*CTRL-W_CTRL-J* *CTRL-W_j*
+CTRL-W j	Move cursor to Nth window below current one.  Uses the cursor
+		position to select between alternatives.
+
+CTRL-W <Up>					*CTRL-W_<Up>*
+CTRL-W CTRL-K					*CTRL-W_CTRL-K* *CTRL-W_k*
+CTRL-W k	Move cursor to Nth window above current one.  Uses the cursor
+		position to select between alternatives.
+
+CTRL-W <Left>					*CTRL-W_<Left>*
+CTRL-W CTRL-H					*CTRL-W_CTRL-H*
+CTRL-W <BS>					*CTRL-W_<BS>* *CTRL-W_h*
+CTRL-W h	Move cursor to Nth window left of current one.  Uses the
+		cursor position to select between alternatives.
+
+CTRL-W <Right>					*CTRL-W_<Right>*
+CTRL-W CTRL-L					*CTRL-W_CTRL-L* *CTRL-W_l*
+CTRL-W l	Move cursor to Nth window right of current one.  Uses the
+		cursor position to select between alternatives.
+
+CTRL-W w					*CTRL-W_w* *CTRL-W_CTRL-W*
+CTRL-W CTRL-W	Without count: move cursor to window below/right of the
+		current one.  If there is no window below or right, go to
+		top-left window.
+		With count: go to Nth window (windows are numbered from
+		top-left to bottom-right).  To obtain the window number see
+		|bufwinnr()| and |winnr()|.
+
+						*CTRL-W_W*
+CTRL-W W	Without count: move cursor to window above/left of current
+		one.  If there is no window above or left, go to bottom-right
+		window.  With count: go to Nth window (windows are numbered
+		from top-left to bottom-right).
+
+CTRL-W t					*CTRL-W_t* *CTRL-W_CTRL-T*
+CTRL-W CTRL-T	Move cursor to top-left window.
+
+CTRL-W b					*CTRL-W_b* *CTRL-W_CTRL-B*
+CTRL-W CTRL-B	Move cursor to bottom-right window.
+
+CTRL-W p					*CTRL-W_p* *CTRL-W_CTRL-P*
+CTRL-W CTRL-P	Go to previous (last accessed) window.
+
+						*CTRL-W_P* *E441*
+CTRL-W P	Go to preview window.  When there is no preview window this is
+		an error.
+		{not available when compiled without the |+quickfix| feature}
+
+If Visual mode is active and the new window is not for the same buffer, the
+Visual mode is ended.  If the window is on the same buffer, the cursor
+position is set to keep the same Visual area selected.
+
+						*:winc* *:wincmd*
+These commands can also be executed with ":wincmd":
+
+:[count]winc[md] {arg}
+		Like executing CTRL-W [count] {arg}.  Example: >
+			:wincmd j
+<		Moves to the window below the current one.
+		This command is useful when a Normal mode cannot be used (for
+		the |CursorHold| autocommand event).  Or when a Normal mode
+		command is inconvenient.
+		The count can also be a window number.  Example: >
+			:exe nr . "wincmd w"
+<		This goes to window "nr".
+
+==============================================================================
+5. Moving windows around				*window-moving*
+
+CTRL-W r				*CTRL-W_r* *CTRL-W_CTRL-R* *E443*
+CTRL-W CTRL-R	Rotate windows downwards/rightwards.  The first window becomes
+		the second one, the second one becomes the third one, etc.
+		The last window becomes the first window.  The cursor remains
+		in the same window.
+		This only works within the row or column of windows that the
+		current window is in.
+
+						*CTRL-W_R*
+CTRL-W R	Rotate windows upwards/leftwards.  The second window becomes
+		the first one, the third one becomes the second one, etc.  The
+		first window becomes the last window.  The cursor remains in
+		the same window.
+		This only works within the row or column of windows that the
+		current window is in.
+
+CTRL-W x					*CTRL-W_x* *CTRL-W_CTRL-X*
+CTRL-W CTRL-X	Without count: Exchange current window with next one.  If there
+		is no next window, exchange with previous window.
+		With count: Exchange current window with Nth window (first
+		window is 1).  The cursor is put in the other window.
+		When vertical and horizontal window splits are mixed, the
+		exchange is only done in the row or column of windows that the
+		current window is in.
+
+The following commands can be used to change the window layout.  For example,
+when there are two vertically split windows, CTRL-W K will change that in
+horizontally split windows.  CTRL-W H does it the other way around.
+
+						*CTRL-W_K*
+CTRL-W K	Move the current window to be at the very top, using the full
+		width of the screen.  This works like closing the current
+		window and then creating another one with ":topleft split",
+		except that the current window contents is used for the new
+		window.
+
+						*CTRL-W_J*
+CTRL-W J	Move the current window to be at the very bottom, using the
+		full width of the screen.  This works like closing the current
+		window and then creating another one with ":botright split",
+		except that the current window contents is used for the new
+		window.
+
+						*CTRL-W_H*
+CTRL-W H	Move the current window to be at the far left, using the
+		full height of the screen.  This works like closing the
+		current window and then creating another one with
+		":vert topleft split", except that the current window contents
+		is used for the new window.
+		{not available when compiled without the +vertsplit feature}
+
+						*CTRL-W_L*
+CTRL-W L	Move the current window to be at the far right, using the full
+		height of the screen.  This works like closing the
+		current window and then creating another one with
+		":vert botright split", except that the current window
+		contents is used for the new window.
+		{not available when compiled without the +vertsplit feature}
+
+==============================================================================
+6. Window resizing					*window-resize*
+
+						*CTRL-W_=*
+CTRL-W =	Make all windows (almost) equally high and wide, but use
+		'winheight' and 'winwidth' for the current window.
+
+:res[ize] -N					*:res* *:resize* *CTRL-W_-*
+CTRL-W -	Decrease current window height by N (default 1).
+		If used after 'vertical': decrease width by N.
+
+:res[ize] +N					*CTRL-W_+*
+CTRL-W +	Increase current window height by N (default 1).
+		If used after 'vertical': increase width by N.
+
+:res[ize] [N]
+CTRL-W CTRL-_					*CTRL-W_CTRL-_* *CTRL-W__*
+CTRL-W _	Set current window height to N (default: highest possible).
+
+z{nr}<CR>	Set current window height to {nr}.
+
+						*CTRL-W_<*
+CTRL-W <	Decrease current window width by N (default 1).
+
+						*CTRL-W_>*
+CTRL-W >	Increase current window width by N (default 1).
+
+:vertical res[ize] [N]			*:vertical-resize* *CTRL-W_bar*
+CTRL-W |	Set current window width to N (default: widest possible).
+
+You can also resize a window by dragging a status line up or down with the
+mouse.  Or by dragging a vertical separator line left or right.  This only
+works if the version of Vim that is being used supports the mouse and the
+'mouse' option has been set to enable it.
+
+The option 'winheight' ('wh') is used to set the minimal window height of the
+current window.  This option is used each time another window becomes the
+current window.  If the option is '0', it is disabled.  Set 'winheight' to a
+very large value, e.g., '9999', to make the current window always fill all
+available space.  Set it to a reasonable value, e.g., '10', to make editing in
+the current window comfortable.
+
+The equivalent 'winwidth' ('wiw') option is used to set the minimal width of
+the current window.
+
+When the option 'equalalways' ('ea') is set, all the windows are automatically
+made the same size after splitting or closing a window.  If you don't set this
+option, splitting a window will reduce the size of the current window and
+leave the other windows the same.  When closing a window, the extra lines are
+given to the window above it.
+
+The 'eadirection' option limits the direction in which the 'equalalways'
+option is applied.  The default "both" resizes in both directions.  When the
+value is "ver" only the heights of windows are equalized.  Use this when you
+have manually resized a vertically split window and want to keep this width.
+Likewise, "hor" causes only the widths of windows to be equalized.
+
+The option 'cmdheight' ('ch') is used to set the height of the command-line.
+If you are annoyed by the |hit-enter| prompt for long messages, set this
+option to 2 or 3.
+
+If there is only one window, resizing that window will also change the command
+line height.  If there are several windows, resizing the current window will
+also change the height of the window below it (and sometimes the window above
+it).
+
+The minimal height and width of a window is set with 'winminheight' and
+'winminwidth'.  These are hard values, a window will never become smaller.
+
+==============================================================================
+7. Argument and buffer list commands			*buffer-list*
+
+      args list		       buffer list	   meaning ~
+1. :[N]argument [N]	11. :[N]buffer [N]	to arg/buf N
+2. :[N]next [file ..]	12. :[N]bnext [N]	to Nth next arg/buf
+3. :[N]Next [N]		13. :[N]bNext [N]	to Nth previous arg/buf
+4. :[N]previous	[N]	14. :[N]bprevious [N]	to Nth previous arg/buf
+5. :rewind / :first	15. :brewind / :bfirst	to first arg/buf
+6. :last		16. :blast		to last arg/buf
+7. :all			17. :ball		edit all args/buffers
+			18. :unhide		edit all loaded buffers
+			19. :[N]bmod [N]	to Nth modified buf
+
+  split & args list	  split & buffer list	   meaning ~
+21. :[N]sargument [N]   31. :[N]sbuffer [N]	split + to arg/buf N
+22. :[N]snext [file ..] 32. :[N]sbnext [N]      split + to Nth next arg/buf
+23. :[N]sNext [N]       33. :[N]sbNext [N]      split + to Nth previous arg/buf
+24. :[N]sprevious [N]   34. :[N]sbprevious [N]  split + to Nth previous arg/buf
+25. :srewind / :sfirst	35. :sbrewind / :sbfirst split + to first arg/buf
+26. :slast		36. :sblast		split + to last arg/buf
+27. :sall		37: :sball		edit all args/buffers
+			38. :sunhide		edit all loaded buffers
+			39. :[N]sbmod [N]	split + to Nth modified buf
+
+40. :args		list of arguments
+41. :buffers		list of buffers
+
+The meaning of [N] depends on the command:
+ [N] is number of buffers to go forward/backward on ?2, ?3, and ?4
+ [N] is an argument number, defaulting to current argument, for 1 and 21
+ [N] is a buffer number, defaulting to current buffer, for 11 and 31
+ [N] is a count for 19 and 39
+
+Note: ":next" is an exception, because it must accept a list of file names
+for compatibility with Vi.
+
+
+The argument list and multiple windows
+--------------------------------------
+
+The current position in the argument list can be different for each window.
+Remember that when doing ":e file", the position in the argument list stays
+the same, but you are not editing the file at that position.  To indicate
+this, the file message (and the title, if you have one) shows
+"(file (N) of M)", where "(N)" is the current position in the file list, and
+"M" the number of files in the file list.
+
+All the entries in the argument list are added to the buffer list.  Thus, you
+can also get to them with the buffer list commands, like ":bnext".
+
+:[N]al[l][!] [N]				*:al* *:all* *:sal* *:sall*
+:[N]sal[l][!] [N]
+		Rearrange the screen to open one window for each argument.
+		All other windows are closed.  When a count is given, this is
+		the maximum number of windows to open.
+		When the 'hidden' option is set, all buffers in closed windows
+		become hidden.
+		When 'hidden' is not set, and the 'autowrite' option is set,
+		modified buffers are written.  Otherwise, windows that have
+		buffers that are modified are not removed, unless the [!] is
+		given, then they become hidden.  But modified buffers are
+		never abandoned, so changes cannot get lost.
+		[N] is the maximum number of windows to open.  'winheight'
+		also limits the number of windows opened ('winwidth' if
+		|:vertical| was prepended).
+		Buf/Win Enter/Leave autocommands are not executed for the new
+		windows here, that's only done when they are really entered.
+
+:[N]sa[rgument][!] [++opt] [+cmd] [N]			*:sa* *:sargument*
+		Short for ":split | argument [N]": split window and go to Nth
+		argument.  But when there is no such argument, the window is
+		not split.  Also see |++opt| and |+cmd|.
+
+:[N]sn[ext][!] [++opt] [+cmd] [file ..]			*:sn* *:snext*
+		Short for ":split | [N]next": split window and go to Nth next
+		argument.  But when there is no next file, the window is not
+		split.  Also see |++opt| and |+cmd|.
+
+:[N]spr[evious][!] [++opt] [+cmd] [N]			*:spr* *:sprevious*
+:[N]sN[ext][!] [++opt] [+cmd] [N]			*:sN* *:sNext*
+		Short for ":split | [N]Next": split window and go to Nth
+		previous argument.  But when there is no previous file, the
+		window is not split.  Also see |++opt| and |+cmd|.
+
+						*:sre* *:srewind*
+:sre[wind][!] [++opt] [+cmd]
+		Short for ":split | rewind": split window and go to first
+		argument.  But when there is no argument list, the window is
+		not split.  Also see |++opt| and |+cmd|.
+
+						*:sfir* *:sfirst*
+:sfir[st [++opt] [+cmd]
+		Same as ":srewind".
+
+						*:sla* *:slast*
+:sla[st][!] [++opt] [+cmd]
+		Short for ":split | last": split window and go to last
+		argument.  But when there is no argument list, the window is
+		not split.  Also see |++opt| and |+cmd|.
+
+						*:dr* *:drop*
+:dr[op] {file} ..
+		Edit the first {file} in a window.
+		- If the file is already open in a window change to that
+		  window.
+		- If the file is not open in a window edit the file in the
+		  current window.  If the current buffer can't be |abandon|ed,
+		  the window is split first.
+		The |argument-list| is set, like with the |:next| command.
+		The purpose of this command is that it can be used from a
+		program that wants Vim to edit another file, e.g., a debugger.
+		{only available when compiled with the +gui feature}
+
+==============================================================================
+8. Do a command in all buffers or windows			*list-repeat*
+
+							*:windo*
+:windo[!] {cmd}		Execute {cmd} in each window.
+			It works like doing this: >
+				CTRL-W t
+				:{cmd}
+				CTRL-W w
+				:{cmd}
+				etc.
+<			When an error is detected on one window, further
+			windows will not be visited.
+			The last window (or where an error occurred) becomes
+			the current window.
+			{cmd} can contain '|' to concatenate several commands.
+			{cmd} must not open or close windows or reorder them.
+			{not in Vi} {not available when compiled without the
+			|+listcmds| feature}
+			Also see |:argdo| and |:bufdo|.
+
+							*:bufdo*
+:bufdo[!] {cmd}		Execute {cmd} in each buffer in the buffer list.
+			It works like doing this: >
+				:bfirst
+				:{cmd}
+				:bnext
+				:{cmd}
+				etc.
+<			When the current file can't be |abandon|ed and the [!]
+			is not present, the command fails.
+			When an error is detected on one buffer, further
+			buffers will not be visited.
+			Unlisted buffers are skipped.
+			The last buffer (or where an error occurred) becomes
+			the current buffer.
+			{cmd} can contain '|' to concatenate several commands.
+			{cmd} must not delete buffers or add buffers to the
+			buffer list.
+			Note: While this command is executing, the Syntax
+			autocommand event is disabled by adding it to
+			'eventignore'.  This considerably speeds up editing
+			each buffer.
+			{not in Vi} {not available when compiled without the
+			|+listcmds| feature}
+			Also see |:argdo| and |:windo|.
+
+Examples: >
+
+	:windo set nolist nofoldcolumn | normal zn
+
+This resets the 'list' option and disables folding in all windows. >
+
+	:bufdo set fileencoding= | update
+
+This resets the 'fileencoding' in each buffer and writes it if this changed
+the buffer.  The result is that all buffers will use the 'encoding' encoding
+(if conversion works properly).
+
+==============================================================================
+9. Tag or file name under the cursor			*window-tag*
+
+							*:sta* *:stag*
+:sta[g][!] [tagname]
+		Does ":tag[!] [tagname]" and splits the window for the found
+		tag.  See also |:tag|.
+
+CTRL-W ]					*CTRL-W_]* *CTRL-W_CTRL-]*
+CTRL-W CTRL-]	Split current window in two.  Use identifier under cursor as a
+		tag and jump to it in the new upper window.  Make new window N
+		high.
+
+							*CTRL-W_g]*
+CTRL-W g ]	Split current window in two.  Use identifier under cursor as a
+		tag and perform ":tselect" on it in the new upper window.
+		Make new window N high.
+
+							*CTRL-W_g_CTRL-]*
+CTRL-W g CTRL-]	Split current window in two.  Use identifier under cursor as a
+		tag and perform ":tjump" on it in the new upper window.  Make
+		new window N high.
+
+CTRL-W f					*CTRL-W_f* *CTRL-W_CTRL-F*
+CTRL-W CTRL-F	Split current window in two.  Edit file name under cursor.
+		Like ":split ]f", but window isn't split if the file does not
+		exist.
+		Uses the 'path' variable as a list of directory names where to
+		look for the file.  Also the path for current file is
+		used to search for the file name.
+		If the name is a hypertext link that looks like
+		"type://machine/path", only "/path" is used.
+		If a count is given, the count'th matching file is edited.
+		{not available when the |+file_in_path| feature was disabled
+		at compile time}
+
+Also see |CTRL-W_CTRL-I|: open window for an included file that includes
+the keyword under the cursor.
+
+==============================================================================
+10. The preview window				*preview-window*
+
+The preview window is a special window to show (preview) another file.  It is
+normally a small window used to show an include file or definition of a
+function.
+{not available when compiled without the |+quickfix| feature}
+
+There can be only one preview window.  It is created with one of the commands
+below.  The 'previewheight' option can be set to specify the height of the
+preview window when it's opened.  The 'previewwindow' option is set in the
+preview window to be able to recognize it.  The 'winfixheight' option is set
+to have it keep the same height when opening/closing other windows.
+
+						*:pta* *:ptag*
+:pta[g][!] [tagname]
+		Does ":tag[!] [tagname]" and shows the found tag in a
+		"Preview" window without changing the current buffer or cursor
+		position. If a "Preview" window already exists, it is re-used
+		(like a help window is).  If a new one is opened,
+		'previewheight' is used for the height of the window.   See
+		also |:tag|.
+		See below for an example. |CursorHold-example|
+		Small difference from |:tag|: When [tagname] is equal to the
+		already displayed tag, the position in the matching tag list
+		is not reset.  This makes the CursorHold example work after a
+		|:ptnext|.
+
+CTRL-W z					*CTRL-W_z*
+CTRL-W CTRL-Z					*CTRL-W_CTRL-Z* *:pc* *:pclose*
+:pc[lose][!]	Close any "Preview" window currently open.  When the 'hidden'
+		option is set, or when the buffer was changed and the [!] is
+		used, the buffer becomes hidden (unless there is another
+		window editing it).  The command fails if any "Preview" buffer
+		cannot be closed.  See also |:close|.
+
+							*:pp* *:ppop*
+:[count]pp[op][!]
+		Does ":[count]pop[!]" in the preview window.  See |:pop| and
+		|:ptag|.  {not in Vi}
+
+CTRL-W }						*CTRL-W_}*
+		Use identifier under cursor as a tag and perform a :ptag on
+		it. Make the new Preview window (if required) N high.  If N is
+		not given, 'previewheight' is used.
+
+CTRL-W g }						*CTRL-W_g}*
+		Use identifier under cursor as a tag and perform a :ptjump on
+		it. Make the new Preview window (if required) N high.  If N is
+		not given, 'previewheight' is used.
+
+							*:ped* *:pedit*
+:ped[it][!] [++opt] [+cmd] {file}
+		Edit {file} in the preview window.  The preview window is
+		opened like with |:ptag|.  The current window and cursor
+		position isn't changed.  Useful example: >
+			:pedit +/fputc /usr/include/stdio.h
+<
+							*:ps* *:psearch*
+:[range]ps[earch][!] [count] [/]pattern[/]
+		Works like |:ijump| but shows the found match in the preview
+		window.  The preview window is opened like with |:ptag|.  The
+		current window and cursor position isn't changed.  Useful
+		example: >
+			:psearch popen
+<		Like with the |:ptag| command, you can use this to
+		automatically show information about the word under the
+		cursor.  This is less clever than using |:ptag|, but you don't
+		need a tags file and it will also find matches in system
+		include files.  Example: >
+  :au! CursorHold *.[ch] nested exe "silent! psearch " . expand("<cword>")
+<		Warning: This can be slow.
+
+Example						*CursorHold-example*  >
+
+  :au! CursorHold *.[ch] nested exe "silent! ptag " . expand("<cword>")
+
+This will cause a ":ptag" to be executed for the keyword under the cursor,
+when the cursor hasn't moved for the time set with 'updatetime'.  The "nested"
+makes other autocommands be executed, so that syntax highlighting works in the
+preview window.  The "silent!" avoids an error message when the tag could not
+be found.  Also see |CursorHold|.  To disable this again: >
+
+  :au! CursorHold
+
+A nice addition is to highlight the found tag, avoid the ":ptag" when there
+is no word under the cursor, and a few other things: >
+
+  :au! CursorHold *.[ch] nested call PreviewWord()
+  :func PreviewWord()
+  :  if &previewwindow			" don't do this in the preview window
+  :    return
+  :  endif
+  :  let w = expand("<cword>")		" get the word under cursor
+  :  if w =~ '\a'			" if the word contains a letter
+  :
+  :    " Delete any existing highlight before showing another tag
+  :    silent! wincmd P			" jump to preview window
+  :    if &previewwindow			" if we really get there...
+  :      match none			" delete existing highlight
+  :      wincmd p			" back to old window
+  :    endif
+  :
+  :    " Try displaying a matching tag for the word under the cursor
+  :    try
+  :       exe "ptag " . w
+  :    catch
+  :      return
+  :    endtry
+  :
+  :    silent! wincmd P			" jump to preview window
+  :    if &previewwindow		" if we really get there...
+  :	 if has("folding")
+  :	   silent! .foldopen		" don't want a closed fold
+  :	 endif
+  :	 call search("$", "b")		" to end of previous line
+  :	 let w = substitute(w, '\\', '\\\\', "")
+  :	 call search('\<\V' . w . '\>')	" position cursor on match
+  :	 " Add a match highlight to the word at this position
+  :      hi previewWord term=bold ctermbg=green guibg=green
+  :	 exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"'
+  :      wincmd p			" back to old window
+  :    endif
+  :  endif
+  :endfun
+
+==============================================================================
+11. Using hidden buffers				*buffer-hidden*
+
+A hidden buffer is not displayed in a window, but is still loaded into memory.
+This makes it possible to jump from file to file, without the need to read or
+write the file every time you get another buffer in a window.
+{not available when compiled without the |+listcmds| feature}
+
+							*:buffer-!*
+If the option 'hidden' ('hid') is set, abandoned buffers are kept for all
+commands that start editing another file: ":edit", ":next", ":tag", etc.  The
+commands that move through the buffer list sometimes make the current buffer
+hidden although the 'hidden' option is not set.  This happens when a buffer is
+modified, but is forced (with '!') to be removed from a window, and
+'autowrite' is off or the buffer can't be written.
+
+You can make a hidden buffer not hidden by starting to edit it with any
+command.  Or by deleting it with the ":bdelete" command.
+
+The 'hidden' is global, it is used for all buffers.  The 'bufhidden' option
+can be used to make an exception for a specific buffer.  It can take these
+values:
+	<empty>		Use the value of 'hidden'.
+	hide		Hide this buffer, also when 'hidden' is not set.
+	unload		Don't hide but unload this buffer, also when 'hidden'
+			is set.
+	delete		Delete the buffer.
+
+							*hidden-quit*
+When you try to quit Vim while there is a hidden, modified buffer, you will
+get an error message and Vim will make that buffer the current buffer.  You
+can then decide to write this buffer (":wq") or quit without writing (":q!").
+Be careful: there may be more hidden, modified buffers!
+
+A buffer can also be unlisted.  This means it exists, but it is not in the
+list of buffers. |unlisted-buffer|
+
+
+:files[!]					*:files*
+:buffers[!]					*:buffers* *:ls*
+:ls[!]		Show all buffers.  Example:
+
+			1 #h  "/test/text"		line 1 ~
+			2u    "asdf"			line 0 ~
+			3 %l+ "version.c"		line 1 ~
+
+		When the [!] is included the list will show unlisted buffers
+		(the term "unlisted" is a bit confusing then...).
+
+		Each buffer has a unique number.  That number will not change,
+		so you can always go to a specific buffer with ":buffer N" or
+		"N CTRL-^", where N is the buffer number.
+
+		Indicators (chars in the same column are mutually exclusive):
+		u	an unlisted buffer (only displayed when [!] is used)
+			   |unlisted-buffer|
+		 %	the buffer in the current window
+		 #	the alternate buffer for ":e #" and CTRL-^
+		  a	an active buffer: it is loaded and visible
+		  h	a hidden buffer: It is loaded, but currently not
+			   displayed in a window |hidden-buffer|
+		   -	a buffer with 'modifiable' off
+		   =	a readonly buffer
+		    +	a modified buffer
+		    x   a buffer with read errors
+
+						*:bad* *:badd*
+:bad[d]	[+lnum] {fname}
+		Add file name {fname} to the buffer list, without loading it.
+		If "lnum" is specified, the cursor will be positioned at that
+		line when the buffer is first entered. Note that other
+		commands after the + will be ignored.
+
+:[N]bd[elete][!]			*:bd* *:bdel* *:bdelete* *E516*
+:bd[elete][!] [N]
+		Unload buffer [N] (default: current buffer) and delete it from
+		the buffer list.  If the buffer was changed, this fails,
+		unless when [!] is specified, in which case changes are lost.
+		The file remains unaffected.  Any windows for this buffer are
+		closed.  If buffer [N] is the current buffer, another buffer
+		will be displayed instead.  This is the most recent entry in
+		the jump list that points into a loaded buffer.
+		Actually, the buffer isn't completely deleted, it is removed
+		from the buffer list |unlisted-buffer| and option values,
+		variables and mappings/abbreviations for the buffer are
+		cleared.
+
+:bdelete[!] {bufname}						*E93* *E94*
+		Like ":bdelete[!] [N]", but buffer given by name.  Note that a
+		buffer whose name is a number cannot be referenced by that
+		name; use the buffer number instead.  Insert a backslash
+		before a space in a buffer name.
+
+:bdelete[!] N1 N2 ...
+		Do ":bdelete[!]" for buffer N1, N2, etc.  The arguments can be
+		buffer numbers or buffer names (but not buffer names that are
+		a number).  Insert a backslash before a space in a buffer
+		name.
+
+:N,Mbdelete[!]	Do ":bdelete[!]" for all buffers in the range N to M
+		|inclusive|.
+
+:[N]bw[ipeout][!]			*:bw* *:bwipe* *:bwipeout* *E517*
+:bw[ipeout][!] {bufname}
+:N,Mbw[ipeout][!]
+:bw[ipeout][!] N1 N2 ...
+		Like |:bdelete|, but really delete the buffer.  All marks in
+		this buffer become invalid, option settings are lost, etc.
+		Don't use this unless you know what you are doing.
+
+:[N]bun[load][!]				*:bun* *:bunload* *E515*
+:bun[load][!] [N]
+		Unload buffer [N] (default: current buffer).  The memory
+		allocated for this buffer will be freed.  The buffer remains
+		in the buffer list.
+		If the buffer was changed, this fails, unless when [!] is
+		specified, in which case the changes are lost.
+		Any windows for this buffer are closed.  If buffer [N] is the
+		current buffer, another buffer will be displayed instead.
+		This is the most recent entry in the jump list that points
+		into a loaded buffer.
+
+:bunload[!] {bufname}
+		Like ":bunload[!] [N]", but buffer given by name.  Note that a
+		buffer whose name is a number cannot be referenced by that
+		name; use the buffer number instead.  Insert a backslash
+		before a space in a buffer name.
+
+:N,Mbunload[!]	Do ":bunload[!]" for all buffers in the range N to M
+		|inclusive|.
+
+:bunload[!] N1 N2 ...
+		Do ":bunload[!]" for buffer N1, N2, etc.  The arguments can be
+		buffer numbers or buffer names (but not buffer names that are
+		a number).  Insert a backslash before a space in a buffer
+		name.
+
+:[N]b[uffer][!] [N]			*:b* *:bu* *:buf* *:buffer* *E86*
+		Edit buffer [N] from the buffer list.  If [N] is not given,
+		the current buffer remains being edited.  See |:buffer-!| for
+		[!].  This will also edit a buffer that is not in the buffer
+		list, without setting the 'buflisted' flag.
+
+:[N]b[uffer][!] {filename}
+		Edit buffer for {filename} from the buffer list.  See
+		|:buffer-!| for [!].  This will also edit a buffer that is not
+		in the buffer list, without setting the 'buflisted' flag.
+
+:[N]sb[uffer] [N]					*:sb* *:sbuffer*
+		Split window and edit buffer [N] from the buffer list.  If [N]
+		is not given, the current buffer is edited.  Respects the
+		"useopen" setting of 'switchbuf' when splitting.  This will
+		also edit a buffer that is not in the buffer list, without
+		setting the 'buflisted' flag.
+
+:[N]sb[uffer] {filename}
+		Split window and edit buffer for {filename} from the buffer
+		list.  This will also edit a buffer that is not in the buffer
+		list, without setting the 'buflisted' flag.
+
+							*:bn* *:bnext* *E87*
+:[N]bn[ext][!] [N]
+		Go to [N]th next buffer in buffer list.  [N] defaults to one.
+		Wraps around the end of the buffer list.
+		See |:buffer-!| for [!].
+		If you are in a help buffer, this takes you to the next help
+		buffer (if there is one).  Similarly, if you are in a normal
+		(non-help) buffer, this takes you to the next normal buffer.
+		This is so that if you have invoked help, it doesn't get in
+		the way when you're browsing code/text buffers. The next three
+		commands also work like this.
+
+							*:sbn* *:sbnext*
+:[N]sbn[ext] [N]
+		Split window and go to [N]th next buffer in buffer list.
+		Wraps around the end of the buffer list.  Uses 'switchbuf'
+
+:[N]bN[ext][!] [N]			*:bN* *:bNext* *:bp* *:bprevious* *E88*
+:[N]bp[revious][!] [N]
+		Go to [N]th previous buffer in buffer list.  [N] defaults to
+		one.  Wraps around the start of the buffer list.
+		See |:buffer-!| for [!] and 'switchbuf'.
+
+:[N]sbN[ext] [N]			*:sbN* *:sbNext* *:sbp* *:sbprevious*
+:[N]sbp[revious] [N]
+		Split window and go to [N]th previous buffer in buffer list.
+		Wraps around the start of the buffer list.
+		Uses 'switchbuf'.
+
+							*:br* *:brewind*
+:br[ewind][!]	Go to first buffer in buffer list.  If the buffer list is
+		empty, go to the first unlisted buffer.
+		See |:buffer-!| for [!].
+
+							*:bf* *:bfirst*
+:bf[irst]	Same as ":brewind".
+
+							*:sbr* *:sbrewind*
+:sbr[ewind]	Split window and go to first buffer in buffer list.  If the
+		buffer list is empty, go to the first unlisted buffer.
+		Respects the 'switchbuf' option.
+
+							*:sbf* *:sbfirst*
+:sbf[irst]	Same as ":sbrewind".
+
+							*:bl* *:blast*
+:bl[ast][!]	Go to last buffer in buffer list.  If the buffer list is
+		empty, go to the last unlisted buffer.
+		See |:buffer-!| for [!].
+
+							*:sbl* *:sblast*
+:sbl[ast]	Split window and go to last buffer in buffer list.  If the
+		buffer list is empty, go to the last unlisted buffer.
+		Respects 'switchbuf' option.
+
+:[N]bm[odified][!] [N]				*:bm* *:bmodified* *E84*
+		Go to [N]th next modified buffer.  Note: this command also
+		finds unlisted buffers.  If there is no modified buffer the
+		command fails.
+
+:[N]sbm[odified] [N]					*:sbm* *:sbmodified*
+		Split window and go to [N]th next modified buffer.
+		Respects 'switchbuf' option.
+		Note: this command also finds buffers not in the buffer list.
+
+:[N]unh[ide] [N]			*:unh* *:unhide* *:sun* *:sunhide*
+:[N]sun[hide] [N]
+		Rearrange the screen to open one window for each loaded buffer
+		in the buffer list.  When a count is given, this is the
+		maximum number of windows to open.
+
+:[N]ba[ll] [N]					*:ba* *:ball* *:sba* *:sball*
+:[N]sba[ll] [N]	Rearrange the screen to open one window for each buffer in
+		the buffer list.  When a count is given, this is the maximum
+		number of windows to open.  'winheight' also limits the number
+		of windows opened ('winwidth' if |:vertical| was prepended).
+		Buf/Win Enter/Leave autocommands are not executed for the new
+		windows here, that's only done when they are really entered.
+
+Note: All the commands above that start editing another buffer, keep the
+'readonly' flag as it was.  This differs from the ":edit" command, which sets
+the 'readonly' flag each time the file is read.
+
+==============================================================================
+12. Special kinds of buffers			*special-buffers*
+
+Instead of containing the text of a file, buffers can also be used for other
+purposes.  A few options can be set to change the behavior of a buffer:
+	'bufhidden'	what happens when the buffer is no longer displayed
+			in a window.
+	'buftype'	what kind of a buffer this is
+	'swapfile'	whether the buffer will have a swap file
+	'buflisted'	buffer shows up in the buffer list
+
+A few useful kinds of a buffer:
+
+quickfix	Used to contain the error list.  See |:cwindow|.  This command
+		sets the 'buftype' option to "quickfix".  You are not supposed
+		to change this!  'swapfile' is off.
+
+help		Contains a help file.  Will only be created with the |:help|
+		command.  The flag that indicates a help buffer is internal
+		and can't be changed.  The 'buflisted' option will be reset
+		for a help buffer.
+
+directory	Displays directory contents.  Used by the |file-explorer|
+		plugin.  The buffer is created with these settings: >
+			:set buftype=nowrite
+			:set bufhidden=delete
+			:set noswapfile
+<		The buffer name is the name of the directory and is adjusted
+		when using the |:cd| command.
+
+scratch		Contains text that can be discarded at any time.  It is kept
+		when closing the window, it must be deleted explicitly.
+		Settings: >
+			:set buftype=nofile
+			:set bufhidden=hide
+			:set noswapfile
+<		The buffer name can be used to identify the buffer.
+
+						*unlisted-buffer*
+unlisted	The buffer is not in the buffer list.  It is not used for
+		normal editing, but to show a help file, remember a file name
+		or marks.  The ":bdelete" command will also set this option,
+		thus it doesn't completely delete the buffer.  Settings: >
+			:set nobuflisted
+<
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/workshop.txt b/runtime/doc/workshop.txt
new file mode 100644
index 0000000..7168c75
--- /dev/null
+++ b/runtime/doc/workshop.txt
@@ -0,0 +1,98 @@
+*workshop.txt*  For Vim version 7.0aa.  Last change: 2004 Jan 08
+
+
+		  VIM REFERENCE MANUAL    by Gordon Prieur
+
+
+Sun Visual WorkShop Features			*workshop* *workshop-support*
+
+1. Introduction						|workshop-intro|
+2. Commands						|workshop-commands|
+3. Compiling vim/gvim for WorkShop			|workshop-compiling|
+4. Configuring gvim for a WorkShop release tree		|workshop-configure|
+5. Obtaining the latest version of the XPM library	|workshop-xpm|
+
+{Vi does not have any of these features}
+{only available when compiled with the |+sun_workshop| feature}
+
+==============================================================================
+1. Introduction						*workshop-intro*
+
+Sun Visual WorkShop has an "Editor of Choice" feature designed to let users
+debug using their favorite editors. For the 6.0 release we have added support
+for gvim. A workshop debug session will have a debugging window and an editor
+window (possibly others as well). The user can do many debugging operations
+from the editor window, minimizing the need to switch from window to window.
+
+The version of vim shipped with Sun Visual WorkShop 6 (also called Forte
+Developer 6) is vim 5.3. The features in this release are much more reliable
+than the vim/gvim shipped with Visual WorkShop. VWS users wishing to use vim
+as their editor should compile these sources and install them in their
+workshop release tree.
+
+==============================================================================
+2. Commands						*workshop-commands*
+
+						*:ws* *:wsverb*
+:ws[verb] verb			Pass the verb to the verb executor
+
+Pass the verb to a workshop function which gathers some arguments and
+sends the verb and data to workshop over an IPC connection.
+
+==============================================================================
+3. Compiling vim/gvim for WorkShop			*workshop-compiling*
+
+Compiling vim with FEAT_SUN_WORKSHOP turns on all compile time flags necessary
+for building a vim to work with Visual WorkShop. The features required for VWS
+have been built and tested using the Sun compilers from the VWS release. They
+have not been built or tested using Gnu compilers. This does not mean the
+features won't build and run if compiled with gcc, just that nothing is
+guaranteed with gcc!
+
+==============================================================================
+4. Configuring gvim for a WorkShop release tree		*workshop-configure*
+
+There are several assumptions which must be met in order to compile a gvim for
+use with Sun Visual WorkShop 6.
+
+    o You should use the compiler in VWS rather than gcc. We have neither
+      built nor tested with gcc and cannot guarantee it will build properly.
+
+    o You must supply your own XPM library. See |workshop-xpm| below for
+      details on obtaining the latest version of XPM.
+
+    o Edit the Makefile in the src directory and uncomment the lines for Sun
+      Visual WorkShop. You can easily find these by searching for the string
+      FEAT_SUN_WORKSHOP
+
+    o We also suggest you use Motif for your gui. This will provide gvim with
+      the same look-and-feel as the rest of Sun Visual WorkShop.
+
+The following configuration line can be used to configure vim to build for use
+with Sun Visual WorkShop:
+
+    $ CC=cc configure --enable-workshop --enable-gui=motif \
+	-prefix=<VWS-install-dir>/contrib/contrib6/<vim-version>
+
+The VWS-install-dir should be the base directory where your Sun Visual WorkShop
+was installed. By default this is /opt/SUNWspro. It will normally require
+root permissions to install the vim release. You will also need to change the
+symlink <VWS-install-dir>/bin/gvim to point to the vim in your newly installed
+directory. The <vim-version> should be a unique version string. I use "vim"
+concatenated with the equivalent of version.h's VIM_VERSION_SHORT.
+
+==============================================================================
+5. Obtaining the latest version of the XPM library	*workshop-xpm*
+
+The XPM library is required to show images within Vim with Motif or Athena.
+Without it the toolbar and signs will be disabled.
+
+The XPM library is provide by Arnaud Le Hors of the French National Institute
+for Research in Computer Science and Control. It can be downloaded from
+http://koala.ilog.fr/ftp/pub/xpm. The current release, as of this writing, is
+xpm-3.4k-solaris.tgz, which is a gzip'ed tar file. If you create the directory
+/usr/local/xpm and untar the file there you can use the uncommented lines in
+the Makefile without changing them. If you use another xpm directory you will
+need to change the XPM_DIR in src/Makefile.
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/xxd.1 b/runtime/doc/xxd.1
new file mode 100644
index 0000000..fba0521
--- /dev/null
+++ b/runtime/doc/xxd.1
@@ -0,0 +1,373 @@
+.TH XXD 1 "August 1996" "Manual page for xxd"
+.\"
+.\" 21st May 1996
+.\" Man page author:
+.\"    Tony Nugent <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
+.\"    Changes by Bram Moolenaar <Bram@vim.org>
+.SH NAME
+.I xxd
+\- make a hexdump or do the reverse.
+.SH SYNOPSIS
+.B xxd
+\-h[elp]
+.br
+.B xxd
+[options] [infile [outfile]]
+.br
+.B xxd
+\-r[evert] [options] [infile [outfile]]
+.SH DESCRIPTION
+.I xxd
+creates a hex dump of a given file or standard input.
+It can also convert a hex dump back to its original binary form.
+Like
+.BR uuencode(1)
+and
+.BR uudecode(1)
+it allows the transmission of binary data in a `mail-safe' ASCII representation,
+but has the advantage of decoding to standard output.
+Moreover, it can be used to perform binary file patching.
+.SH OPTIONS
+If no
+.I infile
+is given, standard input is read.
+If
+.I infile
+is specified as a
+.RB \` \- '
+character, then input is taken from standard input.
+If no
+.I outfile
+is given (or a
+.RB \` \- '
+character is in its place), results are sent to standard output.
+.PP
+Note that a "lazy" parser is used which does not check for more than the first
+option letter, unless the option is followed by a parameter.
+Spaces between a single option letter and its parameter are optional.
+Parameters to options can be specified in decimal, hexadecimal or octal
+notation.
+Thus
+.BR \-c8 ,
+.BR "\-c 8" ,
+.B \-c 010
+and
+.B \-cols 8
+are all equivalent.
+.PP
+.TP
+.IR \-a " | " \-autoskip
+toggle autoskip: A single '*' replaces nul-lines.  Default off.
+.TP
+.IR \-b " | " \-bits
+Switch to bits (binary digits) dump, rather than hexdump.
+This option writes octets as eight digits "1"s and "0"s instead of a normal
+hexacecimal dump. Each line is preceded by a line number in hexadecimal and
+followed by an ascii (or ebcdic) representation. The command line switches
+\-r, \-p, \-i do not work with this mode.
+.TP
+.IR "\-c cols " | " \-cols cols"
+.IR "\-c cols " | " \-cols cols"
+format
+.RI < cols >
+octets per line. Default 16 (\-i: 12, \-ps: 30, \-b: 6). Max 256.
+.TP
+.IR \-E " | " \-EBCDIC
+Change the character encoding in the righthand column from ASCII to EBCDIC.
+This does not change the hexadecimal representation. The option is
+meaningless in combinations with \-r, \-p or \-i.
+.TP
+.IR "\-g bytes " | " \-groupsize bytes"
+seperate the output of every
+.RI < bytes >
+bytes (two hex characters or eight bit-digits each) by a whitespace.
+Specify
+.I \-g 0
+to suppress grouping.
+.RI < Bytes "> defaults to " 2
+in normal mode and \fI1\fP in bits mode.
+Grouping does not apply to postscript or include style.
+.TP
+.IR \-h " | " \-help
+print a summary of available commands and exit.  No hex dumping is performed.
+.TP
+.IR \-i " | " \-include
+output in C include file style. A complete static array definition is written
+(named after the input file), unless xxd reads from stdin.
+.TP
+.IR "\-l len " | " \-len len"
+stop after writing
+.RI  < len >
+octets.
+.TP
+.IR \-p " | " \-ps " | " \-postscript " | " \-plain
+output in postscript continuous hexdump style. Also known as plain hexdump
+style.
+.TP
+.IR \-r " | " \-revert
+reverse operation: convert (or patch) hexdump into binary.
+If not writing to stdout, xxd writes into its output file without truncating
+it. Use the combination
+.I \-r \-p
+to read plain hexadecimal dumps without line number information and without a
+particular column layout. Additional Whitespace and line-breaks are allowed
+anywhere.
+.TP
+.I \-seek offset
+When used after
+.I \-r
+: revert with
+.RI < offset >
+added to file positions found in hexdump.
+.TP
+.I \-s [\+][\-]seek
+start at
+.RI < seek >
+bytes abs. (or rel.) infile offset.
+\fI\+ \fRindicates that the seek is relative to the current stdin file position
+(meaningless when not reading from stdin).  \fI\- \fRindicates that the seek
+should be that many characters from the end of the input (or if combined with
+\fI \+ \fR: before the current stdin file position).
+Without \-s option, xxd starts at the current file position.
+.TP
+.I \-u
+use upper case hex letters. Default is lower case.
+.TP
+.IR \-v " | " \-version
+show version string.
+.SH CAVEATS
+.PP
+.I xxd \-r
+has some builtin magic while evaluating line number information.
+If the ouput file is seekable, then the linenumbers at the start of each
+hexdump line may be out of order, lines may be missing, or overlapping. In
+these cases xxd will lseek(2) to the next position. If the output file is not
+seekable, only gaps are allowed, which will be filled by null-bytes.
+.PP
+.I xxd \-r
+never generates parse errors. Garbage is silently skipped.
+.PP
+When editing hexdumps, please note that
+.I xxd \-r
+skips everything on the input line after reading enough columns of hexadecimal
+data (see option \-c). This also means, that changes to the printable ascii (or
+ebcdic) columns are always ignored. Reverting a plain (or postscript) style
+hexdump with xxd \-r \-p does not depend on the correct number of columns. Here an thing that looks like a pair of hex-digits is interpreted.
+.PP
+Note the difference between
+.br
+\fI% xxd \-i file\fR
+.br
+and
+.br
+\fI% xxd \-i \< file\fR
+.PP
+.I xxd \-s \+seek
+may be different from
+.I xxd \-s seek
+, as lseek(2) is used to "rewind" input.  A '+'
+makes a difference if the input source is stdin, and if stdin's file position
+is not at the start of the file by the time xxd is started and given its input.
+The following examples may help to clarify (or further confuse!)...
+.PP
+Rewind stdin before reading; needed because the `cat' has already read to the
+end of stdin.
+.br
+\fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file
+.PP
+Hexdump from file position 0x480 (=1024+128) onwards.
+The `+' sign means "relative to the current position", thus the `128' adds to
+the 1k where dd left off.
+.br
+\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file
+.PP
+Hexdump from file position 0x100 ( = 1024-768) on.
+.br
+\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file
+.PP
+However, this is a rare situation and the use of `+' is rarely needed.
+the author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used.
+.SH EXAMPLES
+.PP
+.br
+Print everything but the first three lines (hex 0x30 bytes) of
+.B file
+\.
+.br
+\fI% xxd \-s 0x30 file
+.PP
+.br
+Print 3 lines (hex 0x30 bytes) from the end of
+.B file
+\.
+.br
+\fI% xxd \-s \-0x30 file
+.PP
+.br
+Print 120 bytes as continuous hexdump with 40 octets per line.
+.br
+\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
+.br
+2e544820585844203120224d616e75616c207061
+.br
+676520666f7220787864220a2e5c220a2e5c2220
+.br
+32317374204d617920313939360a2e5c22204d61
+.br
+6e207061676520617574686f723a0a2e5c222020
+.br
+2020546f6e79204e7567656e74203c746f6e7940
+.br
+7363746e7567656e2e7070702e67752e6564752e
+.br
+
+.br
+Hexdump the first 120 bytes of this man page with 12 octets per line.
+.br
+\fI% xxd \-l 120 \-c 12 xxd.1\fR
+.br
+0000000: 2e54 4820 5858 4420 3120 224d  .TH XXD 1 "M
+.br
+000000c: 616e 7561 6c20 7061 6765 2066  anual page f
+.br
+0000018: 6f72 2078 7864 220a 2e5c 220a  or xxd"..\\".
+.br
+0000024: 2e5c 2220 3231 7374 204d 6179  .\\" 21st May
+.br
+0000030: 2031 3939 360a 2e5c 2220 4d61   1996..\\" Ma
+.br
+000003c: 6e20 7061 6765 2061 7574 686f  n page autho
+.br
+0000048: 723a 0a2e 5c22 2020 2020 546f  r:..\\"    To
+.br
+0000054: 6e79 204e 7567 656e 7420 3c74  ny Nugent <t
+.br
+0000060: 6f6e 7940 7363 746e 7567 656e  ony@sctnugen
+.br
+000006c: 2e70 7070 2e67 752e 6564 752e  .ppp.gu.edu.
+.PP
+.br
+Display just the date from the file xxd.1
+.br
+\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR
+.br
+0000028: 3231 7374 204d 6179 2031 3939  21st May 199
+.PP
+.br
+Copy
+.B input_file
+to
+.B output_file
+and prepend 100 bytes of value 0x00.
+.br
+\fI% xxd input_file | xxd \-r \-s 100 \> output_file\fR
+.br
+
+.br
+Patch the date in the file xxd.1
+.br
+\fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR
+.br
+\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR
+.br
+0000028: 3235 7468 204d 6179 2031 3939  25th May 199
+.PP
+.br
+Create a 65537 byte file with all bytes 0x00,
+except for the last one which is 'A' (hex 0x41).
+.br
+\fI% echo '010000: 41' | xxd \-r \> file\fR
+.PP
+.br
+Hexdump this file with autoskip.
+.br
+\fI% xxd \-a \-c 12 file\fR
+.br
+0000000: 0000 0000 0000 0000 0000 0000  ............
+.br
+*
+.br
+000fffc: 0000 0000 40                   ....A
+.PP
+Create a 1 byte file containing a single 'A' character.
+The number after '\-r \-s' adds to the linenumbers found in the file;
+in effect, the leading bytes are suppressed.
+.br
+\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR
+.PP
+Use xxd as a filter within an editor such as
+.B vim(1)
+to hexdump a region marked between `a' and `z'.
+.br
+\fI:'a,'z!xxd\fR
+.PP
+Use xxd as a filter within an editor such as
+.B vim(1)
+to recover a binary hexdump marked between `a' and `z'.
+.br
+\fI:'a,'z!xxd \-r\fR
+.PP
+Use xxd as a filter within an editor such as
+.B vim(1)
+to recover one line of a hexdump.  Move the cursor over the line and type:
+.br
+\fI!!xxd \-r\fR
+.PP
+Read single characters from a serial line
+.br
+\fI% xxd \-c1 < /dev/term/b &\fR
+.br
+\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR
+.br
+\fI% echo \-n foo > /dev/term/b\fR
+.PP
+.SH "RETURN VALUES"
+The following error values are returned:
+.TP
+0
+no errors encountered.
+.TP
+\-1
+operation not supported (
+.I xxd \-r \-i
+still impossible).
+.TP
+1
+error while parsing options.
+.TP
+2
+problems with input file.
+.TP
+3
+problems with output file.
+.TP
+4,5
+desired seek position is unreachable.
+.SH "SEE ALSO"
+uuencode(1), uudecode(1), patch(1)
+.br
+.SH WARNINGS
+The tools weirdness matches its creators brain.
+Use entirely at your own risk. Copy files. Trace it. Become a wizard.
+.br
+.SH VERSION
+This manual page documents xxd version 1.7
+.SH AUTHOR
+.br
+(c) 1990-1997 by Juergen Weigert
+.br
+<jnweiger@informatik.uni-erlangen.de>
+.LP
+Distribute freely and credit me,
+.br
+make money and share with me,
+.br
+lose money and don't ask me.
+.PP
+Manual page started by Tony Nugent
+.br
+<tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
+.br
+Small changes by Bram Moolenaar.
+Edited by Juergen Weigert.
+.PP
diff --git a/runtime/doc/xxd.man b/runtime/doc/xxd.man
new file mode 100644
index 0000000..37b22d6
--- /dev/null
+++ b/runtime/doc/xxd.man
@@ -0,0 +1,396 @@
+
+
+
+XXD(1)                                                     XXD(1)
+
+
+NAME
+       xxd - make a hexdump or do the reverse.
+
+SYNOPSIS
+       xxd -h[elp]
+       xxd [options] [infile [outfile]]
+       xxd -r[evert] [options] [infile [outfile]]
+
+DESCRIPTION
+       xxd  creates a hex dump of a given file or standard input.
+       It can also convert a hex dump back to its original binary
+       form.   Like  uuencode(1)  and  uudecode(1)  it allows the
+       transmission of binary data in a `mail-safe' ASCII  repre-
+       sentation,  but  has the advantage of decoding to standard
+       output.  Moreover, it can be used to perform  binary  file
+       patching.
+
+OPTIONS
+       If  no infile is given, standard input is read.  If infile
+       is specified as a `-' character, then input is taken  from
+       standard  input.  If no outfile is given (or a `-' charac-
+       ter is in its place), results are sent to standard output.
+
+       Note that a "lazy" parser is used which does not check for
+       more than the first option letter, unless  the  option  is
+       followed  by  a parameter.  Spaces between a single option
+       letter and its  parameter  are  optional.   Parameters  to
+       options  can be specified in decimal, hexadecimal or octal
+       notation.  Thus -c8, -c 8, -c 010  and  -cols  8  are  all
+       equivalent.
+
+
+       -a | -autoskip
+              toggle  autoskip:  A single '*' replaces nul-lines.
+              Default off.
+
+       -b | -bits
+              Switch to bits (binary digits)  dump,  rather  than
+              hexdump.  This option writes octets as eight digits
+              "1"s and "0"s instead of a normal hexacecimal dump.
+              Each line is preceded by a line number in hexadeci-
+              mal and followed by an ascii (or ebcdic)  represen-
+              tation. The command line switches -r, -p, -i do not
+              work with this mode.
+
+       -c cols | -cols cols
+              -c cols | -cols cols format <cols> octets per line.
+              Default 16 (-i: 12, -ps: 30, -b: 6). Max 256.
+
+       -E | -EBCDIC
+              Change the character encoding in the righthand col-
+              umn from ASCII to EBCDIC.  This does not change the
+              hexadecimal  representation. The option is meaning-
+              less in combinations with -r, -p or -i.
+
+
+
+Manual page for xxd        August 1996                          1
+
+
+
+
+
+XXD(1)                                                     XXD(1)
+
+
+       -g bytes | -groupsize bytes
+              seperate the output of every <bytes> bytes (two hex
+              characters  or  eight bit-digits each) by a whites-
+              pace.  Specify -g 0 to suppress grouping.   <Bytes>
+              defaults  to  2  in normal mode and 1 in bits mode.
+              Grouping does not apply to  postscript  or  include
+              style.
+
+       -h | -help
+              print a summary of available commands and exit.  No
+              hex dumping is performed.
+
+       -i | -include
+              output in C include file style. A  complete  static
+              array  definition is written (named after the input
+              file), unless xxd reads from stdin.
+
+       -l len | -len len
+              stop after writing <len> octets.
+
+       -p | -ps | -postscript | -plain
+              output in postscript continuous hexdump style. Also
+              known as plain hexdump style.
+
+       -r | -revert
+              reverse  operation: convert (or patch) hexdump into
+              binary.  If not writing to stdout, xxd writes  into
+              its output file without truncating it. Use the com-
+              bination -r -p  to  read  plain  hexadecimal  dumps
+              without  line number information and without a par-
+              ticular column layout.  Additional  Whitespace  and
+              line-breaks are allowed anywhere.
+
+       -seek offset
+              When  used after -r : revert with <offset> added to
+              file positions found in hexdump.
+
+       -s [+][-]seek
+              start at <seek> bytes abs. (or rel.) infile offset.
+              +  indicates  that the seek is relative to the cur-
+              rent stdin  file  position  (meaningless  when  not
+              reading  from  stdin).   -  indicates that the seek
+              should be that many characters from the end of  the
+              input (or if combined with
+               +  :  before  the  current  stdin  file position).
+              Without -s option, xxd starts at the  current  file
+              position.
+
+       -u     use  upper case hex letters. Default is lower case.
+
+       -v | -version
+              show version string.
+
+
+
+
+
+Manual page for xxd        August 1996                          2
+
+
+
+
+
+XXD(1)                                                     XXD(1)
+
+
+CAVEATS
+       xxd -r has some builtin magic while evaluating line number
+       information.   If  the  ouput  file  is seekable, then the
+       linenumbers at the start of each hexdump line may  be  out
+       of  order,  lines may be missing, or overlapping. In these
+       cases xxd will lseek(2) to the next position. If the  out-
+       put  file  is  not  seekable, only gaps are allowed, which
+       will be filled by null-bytes.
+
+       xxd -r never generates parse errors. Garbage  is  silently
+       skipped.
+
+       When  editing  hexdumps,  please  note  that  xxd -r skips
+       everything on the input line after reading enough  columns
+       of hexadecimal data (see option -c). This also means, that
+       changes to the printable ascii  (or  ebcdic)  columns  are
+       always  ignored.  Reverting  a plain (or postscript) style
+       hexdump with xxd -r -p does not depend on the correct num-
+       ber  of  columns.  Here an thing that looks like a pair of
+       hex-digits is interpreted.
+
+       Note the difference between
+       % xxd -i file
+       and
+       % xxd -i < file
+
+       xxd -s +seek may be  different  from  xxd  -s  seek  ,  as
+       lseek(2) is used to "rewind" input.  A '+' makes a differ-
+       ence if the input source is stdin,  and  if  stdin's  file
+       position  is  not at the start of the file by the time xxd
+       is started and given its input.   The  following  examples
+       may help to clarify (or further confuse!)...
+
+       Rewind  stdin before reading; needed because the `cat' has
+       already read to the end of stdin.
+       % sh -c 'cat > plain_copy; xxd -s 0 > hex_copy' < file
+
+       Hexdump from file position 0x480 (=1024+128) onwards.  The
+       `+'  sign  means  "relative to the current position", thus
+       the `128' adds to the 1k where dd left off.
+       % sh -c 'dd of=plain_snippet bs=1k count=1; xxd -s +128  >
+       hex_snippet' < file
+
+       Hexdump from file position 0x100 ( = 1024-768) on.
+       % sh -c 'dd of=plain_snippet bs=1k count=1; xxd -s +-768 >
+       hex_snippet' < file
+
+       However, this is a rare situation and the use  of  `+'  is
+       rarely  needed.   the author prefers to monitor the effect
+       of xxd with strace(1) or truss(1), whenever -s is used.
+
+EXAMPLES
+       Print everything but  the  first  three  lines  (hex  0x30
+       bytes) of file
+
+
+
+Manual page for xxd        August 1996                          3
+
+
+
+
+
+XXD(1)                                                     XXD(1)
+
+
+       % xxd -s 0x30 file
+
+       Print 3 lines (hex 0x30 bytes) from the end of file
+       % xxd -s -0x30 file
+
+       Print  120  bytes as continuous hexdump with 40 octets per
+       line.
+       % xxd -l 120 -ps -c 20 xxd.1
+       2e544820585844203120224d616e75616c207061
+       676520666f7220787864220a2e5c220a2e5c2220
+       32317374204d617920313939360a2e5c22204d61
+       6e207061676520617574686f723a0a2e5c222020
+       2020546f6e79204e7567656e74203c746f6e7940
+       7363746e7567656e2e7070702e67752e6564752e
+
+       Hexdump the first 120 bytes  of  this  man  page  with  12
+       octets per line.
+       % xxd -l 120 -c 12 xxd.1
+       0000000: 2e54 4820 5858 4420 3120 224d  .TH XXD 1 "M
+       000000c: 616e 7561 6c20 7061 6765 2066  anual page f
+       0000018: 6f72 2078 7864 220a 2e5c 220a  or xxd"..\".
+       0000024: 2e5c 2220 3231 7374 204d 6179  .\" 21st May
+       0000030: 2031 3939 360a 2e5c 2220 4d61   1996..\" Ma
+       000003c: 6e20 7061 6765 2061 7574 686f  n page autho
+       0000048: 723a 0a2e 5c22 2020 2020 546f  r:..\"    To
+       0000054: 6e79 204e 7567 656e 7420 3c74  ny Nugent <t
+       0000060: 6f6e 7940 7363 746e 7567 656e  ony@sctnugen
+       000006c: 2e70 7070 2e67 752e 6564 752e  .ppp.gu.edu.
+
+       Display just the date from the file xxd.1
+       % xxd -s 0x28 -l 12 -c 12 xxd.1
+       0000028: 3231 7374 204d 6179 2031 3939  21st May 199
+
+       Copy  input_file  to  output_file and prepend 100 bytes of
+       value 0x00.
+       % xxd input_file | xxd -r -s 100 > output_file
+
+       Patch the date in the file xxd.1
+       % echo '0000029: 3574 68' | xxd -r - xxd.1
+       % xxd -s 0x28 -l 12 -c 12 xxd.1
+       0000028: 3235 7468 204d 6179 2031 3939  25th May 199
+
+       Create a 65537 byte file with all bytes 0x00,  except  for
+       the last one which is 'A' (hex 0x41).
+       % echo '010000: 41' | xxd -r > file
+
+       Hexdump this file with autoskip.
+       % xxd -a -c 12 file
+       0000000: 0000 0000 0000 0000 0000 0000  ............
+       *
+       000fffc: 0000 0000 40                   ....A
+
+       Create  a  1  byte file containing a single 'A' character.
+       The number after '-r -s' adds to the linenumbers found  in
+
+
+
+Manual page for xxd        August 1996                          4
+
+
+
+
+
+XXD(1)                                                     XXD(1)
+
+
+       the file; in effect, the leading bytes are suppressed.
+       % echo '010000: 41' | xxd -r -s -0x10000 > file
+
+       Use  xxd  as  a  filter within an editor such as vim(1) to
+       hexdump a region marked between `a' and `z'.
+       :'a,'z!xxd
+
+       Use xxd as a filter within an editor  such  as  vim(1)  to
+       recover a binary hexdump marked between `a' and `z'.
+       :'a,'z!xxd -r
+
+       Use  xxd  as  a  filter within an editor such as vim(1) to
+       recover one line of a hexdump.  Move the cursor  over  the
+       line and type:
+       !!xxd -r
+
+       Read single characters from a serial line
+       % xxd -c1 < /dev/term/b &
+       % stty < /dev/term/b -echo -opost -isig -icanon min 1
+       % echo -n foo > /dev/term/b
+
+
+RETURN VALUES
+       The following error values are returned:
+
+       0      no errors encountered.
+
+       -1     operation  not supported ( xxd -r -i still impossi-
+              ble).
+
+       1      error while parsing options.
+
+       2      problems with input file.
+
+       3      problems with output file.
+
+       4,5    desired seek position is unreachable.
+
+SEE ALSO
+       uuencode(1), uudecode(1), patch(1)
+
+WARNINGS
+       The tools  weirdness  matches  its  creators  brain.   Use
+       entirely  at your own risk. Copy files. Trace it. Become a
+       wizard.
+
+VERSION
+       This manual page documents xxd version 1.7
+
+AUTHOR
+       (c) 1990-1997 by Juergen Weigert
+       <jnweiger@informatik.uni-erlangen.de>
+
+       Distribute freely and credit me,
+
+
+
+Manual page for xxd        August 1996                          5
+
+
+
+
+
+XXD(1)                                                     XXD(1)
+
+
+       make money and share with me,
+       lose money and don't ask me.
+
+       Manual page started by Tony Nugent
+       <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
+       Small  changes  by  Bram  Moolenaar.   Edited  by  Juergen
+       Weigert.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Manual page for xxd        August 1996                          6
+
+