diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile
index 2f69750..a8a6410 100644
--- a/runtime/doc/Makefile
+++ b/runtime/doc/Makefile
@@ -37,6 +37,7 @@
 	hangulin.txt \
 	hebrew.txt \
 	help.txt \
+	helphelp.txt \
 	howto.txt \
 	if_cscop.txt \
 	if_mzsch.txt \
diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt
index 4f1753d..9fe2c6b 100644
--- a/runtime/doc/help.txt
+++ b/runtime/doc/help.txt
@@ -26,6 +26,7 @@
 		      Option			  '	   :help 'textwidth'
   Search for help:  Type ":help word", then hit CTRL-D to see matching
 		    help entries for "word".
+		    Or use ":helpgrep word". |:helpgrep|
 
 VIM stands for Vi IMproved.  Most of VIM was made by Bram Moolenaar, but only
 through the help of many others.  See |credits|.
@@ -90,6 +91,7 @@
 General subjects ~
 |intro.txt|	general introduction to Vim; notation used in help files
 |help.txt|	overview and quick reference (this file)
+|helphelp.txt|	about using the help files
 |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
@@ -208,10 +210,11 @@
 CTRL-T, CTRL-O, g<RightMouse>, or <C-RightMouse> to go back to where you were.
 
 Note that tags are within | characters, but when highlighting is enabled these
-are hidden.  That makes it easier to read a command.
+characters are hidden.  That makes it easier to read a command.
 
 Anyway, you can use CTRL-] on any word, also when it is not within |, and Vim
-will try to find help for it.
+will try to find help for it.  Especially for options in single quotes, e.g.
+'compatible'.
 
 ------------------------------------------------------------------------------
  vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl:
diff --git a/runtime/doc/helphelp.txt b/runtime/doc/helphelp.txt
new file mode 100644
index 0000000..1787659
--- /dev/null
+++ b/runtime/doc/helphelp.txt
@@ -0,0 +1,278 @@
+*helphelp.txt*	For Vim version 7.3a.  Last change: 2008 Jul 21
+
+
+		  VIM REFERENCE MANUAL    by Bram Moolenaar
+
+
+Help on help files					*helphelp*
+
+1. Help commands		|online-help|
+2. Translating help files	|help-translated|
+3. Writing help files		|help-writing|
+
+==============================================================================
+1. Help commands					*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" |c_CTRL-D|).
+			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.
+<			When there is no argument you will see matches for
+			"help", to avoid listing all possible matches (that
+			would be very slow).
+			The number of matches displayed is limited to 300.
+
+			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}[@xx]
+			Search all help text files and make a list of lines
+			in which {pattern} matches.  Jumps to the first match.
+			The optional [@xx] specifies that only matches in the
+			"xx" language are to be found.
+			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
+<			Example for searching in French help: >
+				:helpgrep backspace@fr
+<			The pattern does not support line breaks, it must
+			match within one line.  You can use |:grep| instead,
+			but then you need to get the list of help files in a
+			complicated way.
+			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 (Fedora
+			compresses the help files).
+			{not in Vi}
+
+							*:lh* *:lhelpgrep*
+:lh[elpgrep] {pattern}[@xx]
+			Same as ":helpgrep", except the location list is used
+			instead of the quickfix list. If the help window is
+			already opened, then the location list for that window
+			is used. Otherwise, a new help window is opened and
+			the location list for that window is set.  The
+			location list for the current window is not changed.
+
+							*:exu* *:exusage*
+:exu[sage]		Show help on Ex commands.  Added to simulate the Nvi
+			command. {not in Vi}
+
+							*:viu* *:viusage*
+:viu[sage]		Show help on Normal mode commands.  Added to simulate
+			the Nvi command. {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] [++t] {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.
+			The optional "++t" argument forces adding the
+			"help-tags" tag.  This is also done when the {dir} is
+			equal to $VIMRUNTIME/doc.
+			To rebuild the help tags in the runtime directory
+			(requires write permission there): >
+				:helptags $VIMRUNTIME/doc
+<			{not in Vi}
+
+
+==============================================================================
+2. Translated help files				*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.
+
+At this moment translations are available for:
+	Chinese - multiple authors
+	French  - translated by David Blanchet
+	Italian - translated by Antonio Colombo
+	Polish  - translated by Mikolaj Machowski
+	Russian - translated by Vassily Ragosin
+See the Vim website to find them: http://www.vim.org/translations.php
+
+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"
+extension 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. Writing help files					*help-writing*
+
+TODO
+
+ vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt
index 10aebe5..4e25780 100644
--- a/runtime/doc/intro.txt
+++ b/runtime/doc/intro.txt
@@ -194,6 +194,7 @@
 Vim would never have become what it is now, without the help of these people!
 
 	Ron Aaron		Win32 GUI changes
+	Mohsin Ahmed		encryption
 	Zoltan Arpadffy		work on VMS port
 	Tony Andrews		Stevie
 	Gert van Antwerpen	changes for DJGPP on MS-DOS
@@ -226,13 +227,13 @@
 	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
+	Tony Mechelynck		answers many user questions
 	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|
-	Dominique Pelle		figuring out valgrind reports and fixes
+	Dominique Pelle		valgrind reports and many fixes
 	A.Politz		Many bug reports and some fixes
 	George V. Reilly	Win32 port, Win32 GUI start-off
 	Stephen Riehm		bug collector
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 7ecb985..f2bf731 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2126,8 +2126,8 @@
 :execute	eval.txt	/*:execute*
 :exi	editing.txt	/*:exi*
 :exit	editing.txt	/*:exit*
-:exu	various.txt	/*:exu*
-:exusage	various.txt	/*:exusage*
+:exu	helphelp.txt	/*:exu*
+:exusage	helphelp.txt	/*:exusage*
 :f	editing.txt	/*:f*
 :fi	editing.txt	/*:fi*
 :file	editing.txt	/*:file*
@@ -2178,16 +2178,16 @@
 :gui	gui_x11.txt	/*:gui*
 :gv	gui_x11.txt	/*:gv*
 :gvim	gui_x11.txt	/*:gvim*
-:h	various.txt	/*:h*
+:h	helphelp.txt	/*:h*
 :ha	print.txt	/*:ha*
 :hardcopy	print.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*
+:help	helphelp.txt	/*:help*
+:helpf	helphelp.txt	/*:helpf*
+:helpfind	helphelp.txt	/*:helpfind*
+:helpg	helphelp.txt	/*:helpg*
+:helpgrep	helphelp.txt	/*:helpgrep*
+:helpt	helphelp.txt	/*:helpt*
+:helptags	helphelp.txt	/*:helptags*
 :hi	syntax.txt	/*:hi*
 :hi-default	syntax.txt	/*:hi-default*
 :hi-link	syntax.txt	/*:hi-link*
@@ -2309,8 +2309,8 @@
 :lgrep	quickfix.txt	/*:lgrep*
 :lgrepa	quickfix.txt	/*:lgrepa*
 :lgrepadd	quickfix.txt	/*:lgrepadd*
-:lh	various.txt	/*:lh*
-:lhelpgrep	various.txt	/*:lhelpgrep*
+:lh	helphelp.txt	/*:lh*
+:lhelpgrep	helphelp.txt	/*:lhelpgrep*
 :list	various.txt	/*:list*
 :ll	quickfix.txt	/*:ll*
 :lla	quickfix.txt	/*:lla*
@@ -2928,8 +2928,8 @@
 :vimgrepadd	quickfix.txt	/*:vimgrepadd*
 :visual	editing.txt	/*:visual*
 :visual_example	visual.txt	/*:visual_example*
-:viu	various.txt	/*:viu*
-:viusage	various.txt	/*:viusage*
+:viu	helphelp.txt	/*:viu*
+:viusage	helphelp.txt	/*:viusage*
 :vm	map.txt	/*:vm*
 :vmap	map.txt	/*:vmap*
 :vmap_l	map.txt	/*:vmap_l*
@@ -3055,7 +3055,7 @@
 <F17>	term.txt	/*<F17>*
 <F18>	term.txt	/*<F18>*
 <F19>	term.txt	/*<F19>*
-<F1>	various.txt	/*<F1>*
+<F1>	helphelp.txt	/*<F1>*
 <F2>	term.txt	/*<F2>*
 <F3>	term.txt	/*<F3>*
 <F4>	term.txt	/*<F4>*
@@ -3064,7 +3064,7 @@
 <F7>	term.txt	/*<F7>*
 <F8>	term.txt	/*<F8>*
 <F9>	term.txt	/*<F9>*
-<Help>	various.txt	/*<Help>*
+<Help>	helphelp.txt	/*<Help>*
 <Home>	motion.txt	/*<Home>*
 <Insert>	insert.txt	/*<Insert>*
 <Leader>	map.txt	/*<Leader>*
@@ -3430,13 +3430,13 @@
 E146	change.txt	/*E146*
 E147	repeat.txt	/*E147*
 E148	repeat.txt	/*E148*
-E149	various.txt	/*E149*
+E149	helphelp.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*
+E150	helphelp.txt	/*E150*
+E151	helphelp.txt	/*E151*
+E152	helphelp.txt	/*E152*
+E153	helphelp.txt	/*E153*
+E154	helphelp.txt	/*E154*
 E155	sign.txt	/*E155*
 E156	sign.txt	/*E156*
 E157	sign.txt	/*E157*
@@ -3989,7 +3989,7 @@
 E659	if_pyth.txt	/*E659*
 E66	syntax.txt	/*E66*
 E660	netbeans.txt	/*E660*
-E661	various.txt	/*E661*
+E661	helphelp.txt	/*E661*
 E662	motion.txt	/*E662*
 E663	motion.txt	/*E663*
 E664	motion.txt	/*E664*
@@ -3999,7 +3999,7 @@
 E668	netbeans.txt	/*E668*
 E669	syntax.txt	/*E669*
 E67	syntax.txt	/*E67*
-E670	various.txt	/*E670*
+E670	helphelp.txt	/*E670*
 E671	starting.txt	/*E671*
 E672	starting.txt	/*E672*
 E673	print.txt	/*E673*
@@ -5976,13 +5976,16 @@
 hasmapto()	eval.txt	/*hasmapto()*
 hebrew	hebrew.txt	/*hebrew*
 hebrew.txt	hebrew.txt	/*hebrew.txt*
-help	various.txt	/*help*
+help	helphelp.txt	/*help*
 help-context	help.txt	/*help-context*
 help-summary	usr_02.txt	/*help-summary*
 help-tags	tags	1
-help-translated	various.txt	/*help-translated*
-help-xterm-window	various.txt	/*help-xterm-window*
+help-translated	helphelp.txt	/*help-translated*
+help-writing	helphelp.txt	/*help-writing*
+help-xterm-window	helphelp.txt	/*help-xterm-window*
 help.txt	help.txt	/*help.txt*
+helphelp	helphelp.txt	/*helphelp*
+helphelp.txt	helphelp.txt	/*helphelp.txt*
 hex-editing	tips.txt	/*hex-editing*
 hidden-buffer	windows.txt	/*hidden-buffer*
 hidden-changed	version5.txt	/*hidden-changed*
@@ -6105,8 +6108,8 @@
 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_<F1>	helphelp.txt	/*i_<F1>*
+i_<Help>	helphelp.txt	/*i_<Help>*
 i_<Home>	insert.txt	/*i_<Home>*
 i_<Insert>	insert.txt	/*i_<Insert>*
 i_<Left>	insert.txt	/*i_<Left>*
@@ -6865,7 +6868,7 @@
 ole-setforeground	if_ole.txt	/*ole-setforeground*
 omap-info	map.txt	/*omap-info*
 omni-sql-completion	ft_sql.txt	/*omni-sql-completion*
-online-help	various.txt	/*online-help*
+online-help	helphelp.txt	/*online-help*
 opening-window	windows.txt	/*opening-window*
 operator	motion.txt	/*operator*
 operator-variable	eval.txt	/*operator-variable*
@@ -8411,7 +8414,7 @@
 {offset}	pattern.txt	/*{offset}*
 {pat}	autocmd.txt	/*{pat}*
 {rhs}	map.txt	/*{rhs}*
-{subject}	various.txt	/*{subject}*
+{subject}	helphelp.txt	/*{subject}*
 {}	intro.txt	/*{}*
 }	motion.txt	/*}*
 ~	change.txt	/*~*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index daec1bc..6f82a68 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1082,24 +1082,30 @@
 
 
 Vim 7.3:
-- undofile: keep markers where the file was written/read, so that it's easy to
-  go back to a saved version of the file  ":earlier 1file"?
 - using NSIS 2.46: install on Windows 7 works, but no "Edit with Vim" menu.
    Use register_shell_extension()? (George Reilly, 2010 May 26)
    Ron's version: http://dev.ronware.org/p/vim/finfo?name=gvim.nsi
 - Also crypt the swap file, each block separately.  Change mf_write() and
-    mf_read().  How to get b_p_key to these functions?
-    Generate seed for each block, store in pointer block.  Block 1 is not
-    encrypted.
-    When changing the password need to read back with the old password and
-    write again with the new one.
-    Verify recovery works.
+    mf_read().
+    - How to get b_p_key to these functions?   Store it in mfp?
+    - Generate a seed for the swapfile, put it in block 0.
+    - For each block, use password + seed + byte offset to crypt/decrypt.
+    - When changing the password need to read back with the old password and
+      write again with the new one.
+    - Verify recovery works.
 - Update for crypt code to use salt. (Mohsin May 30)
-    Make the strengthen_key value configurable and store it in the header.
+    Make the strengthen_key value configurable and store it in the header?
+    Or just use 10000, equivalent to crypting 10 Kbyte of text.
+- undofile: keep markers where the file was written/read, so that it's easy to
+  go back to a saved version of the file:  ":earlier 1f" (f for file)?
+  Also add ":earlier 1d" (d for day).
+- Create a helphelp.txt file, move instructions there to write help files from
+  various.txt and list by Tony.
 Patches to include:
 - Include conceal patch?
   http://vince.negri.googlepages.com/
   http://vim.wikia.com/wiki/Patch_to_conceal_parts_of_lines
+  http://sites.google.com/site/vincenegri/conceal-ownsyntax.diff?attredirects=0
 - Patch for Lisp support with ECL (Mikael Jansson, 2008 Oct 25)
 - Minor patches from Dominique Pelle, 2010 May 15
 - Gvimext patch to support wide file names. (Szabolcs Horvat 2008 Sep 10)
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index 65688ee..3f1d061 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -7,8 +7,7 @@
 Various commands					*various*
 
 1. Various commands		|various-cmds|
-2. Online help			|online-help|
-3. Using Vim like less or more	|less|
+2. Using Vim like less or more	|less|
 
 ==============================================================================
 1. Various commands					*various-cmds*
@@ -603,265 +602,6 @@
 			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" |c_CTRL-D|).
-			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.
-<			When there is no argument you will see matches for
-			"help", to avoid listing all possible matches (that
-			would be very slow).
-			The number of matches displayed is limited to 300.
-
-			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}[@xx]
-			Search all help text files and make a list of lines
-			in which {pattern} matches.  Jumps to the first match.
-			The optional [@xx] specifies that only matches in the
-			"xx" language are to be found.
-			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
-<			Example for searching in French help: >
-				:helpgrep backspace@fr
-<			The pattern does not support line breaks, it must
-			match within one line.  You can use |:grep| instead,
-			but then you need to get the list of help files in a
-			complicated way.
-			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 (Fedora
-			compresses the help files).
-			{not in Vi}
-
-							*:lh* *:lhelpgrep*
-:lh[elpgrep] {pattern}[@xx]
-			Same as ":helpgrep", except the location list is used
-			instead of the quickfix list. If the help window is
-			already opened, then the location list for that window
-			is used. Otherwise, a new help window is opened and
-			the location list for that window is set.  The
-			location list for the current window is not changed.
-
-							*:exu* *:exusage*
-:exu[sage]		Show help on Ex commands.  Added to simulate the Nvi
-			command. {not in Vi}
-
-							*:viu* *:viusage*
-:viu[sage]		Show help on Normal mode commands.  Added to simulate
-			the Nvi command. {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] [++t] {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.
-			The optional "++t" argument forces adding the
-			"help-tags" tag.  This is also done when the {dir} is
-			equal to $VIMRUNTIME/doc.
-			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.
-
-At this moment translations are available for:
-	Chinese - multiple authors
-	French  - translated by David Blanchet
-	Italian - translated by Antonio Colombo
-	Polish  - translated by Mikolaj Machowski
-	Russian - translated by Vassily Ragosin
-See the Vim website to find them: http://www.vim.org/translations.php
-
-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"
-extension 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. Using Vim like less or more					*less*
 
 If you use the less or more program to view a file, you don't get syntax
