changeset 3830:04592728474a

Updated runtime files.
author Bram Moolenaar <bram@vim.org>
date Fri, 21 Sep 2012 14:54:30 +0200
parents 25f9e59741f9
children ca1c025079b1
files runtime/doc/autocmd.txt runtime/doc/diff.txt runtime/doc/eval.txt runtime/doc/hebrew.txt runtime/doc/if_pyth.txt runtime/doc/indent.txt runtime/doc/intro.txt runtime/doc/todo.txt runtime/doc/usr_41.txt runtime/doc/visual.txt runtime/filetype.vim runtime/ftplugin/changelog.vim runtime/ftplugin/zimbu.vim runtime/indent/zimbu.vim runtime/scripts.vim runtime/syntax/cl.vim runtime/syntax/css.vim runtime/syntax/hgcommit.vim runtime/syntax/progress.vim runtime/tutor/tutor.vim runtime/tutor/tutor.zh_cn.utf-8 runtime/tutor/tutor.zh_tw.utf-8
diffstat 22 files changed, 2256 insertions(+), 284 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 7.3.  Last change: 2012 Jul 10
+*autocmd.txt*   For Vim version 7.3.  Last change: 2012 Sep 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -263,8 +263,10 @@ Name			triggered by ~
 	Startup and exit
 |VimEnter|		after doing all the startup stuff
 |GUIEnter|		after starting the GUI successfully
+|GUIFailed|		after starting the GUI failed
 |TermResponse|		after the terminal response to |t_RV| is received
 
+|QuitPre|			when using `:quit`, before deciding whether to quit
 |VimLeavePre|		before exiting Vim, before writing the viminfo file
 |VimLeave|		before exiting Vim, after writing the viminfo file
 
@@ -312,6 +314,7 @@ Name			triggered by ~
 |SessionLoadPost|	after loading a session file
 
 |MenuPopup|		just before showing the popup menu
+|CompleteDone|		after Insert mode completion is done
 
 |User|			to be used in combination with ":doautocmd"
 
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 7.3.  Last change: 2012 Aug 08
+*diff.txt*      For Vim version 7.3.  Last change: 2012 Sep 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -86,16 +86,16 @@ diff mode.  You could use a construct li
 While already in Vim you can start diff mode in three ways.
 
 							*E98*
-:diffsplit {filename}					*:diffs* *:diffsplit*
+:diffs[plit] {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
+:difft[his]	Make the current window part of the diff windows.  This sets
 		the options like for "vimdiff".
 
-:diffpatch {patchfile}				 *E816* *:diffp* *:diffpatch*
+:diffp[atch] {patchfile}				 *E816* *: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".
@@ -123,9 +123,9 @@ Since the option values are remembered w
 file for a moment and come back to the same file and be in diff mode again.
 
 							*:diffo* *:diffoff*
-:diffoff	Switch off diff mode for the current window.
+:diffo[ff]	Switch off diff mode for the current window.
 
-:diffoff!	Switch off diff mode for the current window and in all windows
+:diffo[ff]!	Switch off diff mode for the current window and in all windows
 		in the current tab page where 'diff' is set.
 
 The ":diffoff" command resets the relevant options to their default value.
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 7.3.  Last change: 2012 Aug 02
+*eval.txt*	For Vim version 7.3.  Last change: 2012 Sep 05
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -759,7 +759,7 @@ of a |List| is different from the origin
 a |List| or a |Dictionary| it is equivalent to using "equal", using "isnot"
 equivalent to using "not equal".  Except that a different type means the
 values are different: "4 == '4'" is true, "4 is '4'" is false and "0 is []" is
-false and not a error. "is#"/"isnot#" and "is?"/"isnot?" can be used to match
+false and not an error. "is#"/"isnot#" and "is?"/"isnot?" can be used to match
 and ignore case.
 
 When comparing a String with a Number, the String is converted to a Number,
@@ -4635,8 +4635,8 @@ pyeval({expr})						*pyeval()*
 		Numbers and strings are returned as they are (strings are 
 		copied though).
 		Lists are represented as Vim |List| type.
-		Dictionaries are represented as Vim |Dictionary| type with 
-		keys converted to strings.
+		Dictionaries are represented as Vim |Dictionary| type, 
+		non-string keys result in error.
 		{only available when compiled with the |+python| feature}
 
 							*E726* *E727*
@@ -5253,8 +5253,9 @@ setreg({regname}, {value} [,{options}])
 
 		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.
+		Setting the '=' register is not possible, but you can use >
+			:let @= = var_expr
+<		Returns zero for success, non-zero for failure.
 
 		Examples: >
 			:call setreg(v:register, @*)
--- a/runtime/doc/hebrew.txt
+++ b/runtime/doc/hebrew.txt
@@ -93,7 +93,7 @@ Details
       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
+      insert niqud and te`amim.  To see what those mappings are, look at the
       keymap file 'hebrew.vim' etc.
 
 
--- a/runtime/doc/if_pyth.txt
+++ b/runtime/doc/if_pyth.txt
@@ -159,6 +159,26 @@ vim.bindeval(str)					*python-bindeval*
 	   vimlist or vimdictionary python type that are connected to original 
 	   list or dictionary. Thus modifications to these objects imply 
 	   modifications of the original.
+
+	   Additionally, vimlist and vimdictionary type have read-write 
+	   `.locked` attribute that returns
+	     Value           Meaning ~
+	     zero            Variable is not locked
+	     vim.VAR_LOCKED  Variable is locked, but can be unlocked
+	     vim.VAR_FIXED   Variable is locked and can’t be unlocked
+	   integer constants. If variable is not fixed, you can do 
+	   `var.locked=True` to lock it and `var.locked=False` to unlock. 
+	   There is no recursive locking like |:lockvar|! does. There is also 
+	   no way to lock a specific key or check whether it is locked (in any 
+	   case these locks are ignored by anything except |:let|: |extend()| 
+	   does not care, neither does python interface).
+
+	   Vimdictionary type also supports `.scope` attribute which is one of
+	     Value              Meaning ~
+	     zero               Dictionary is not a scope one
+	     vim.VAR_DEF_SCOPE  Function-local or global scope dictionary
+	     vim.VAR_SCOPE      Other scope dictionary
+
 	2. if expression evaluates to a function reference, then it returns 
 	   callable vimfunction object. Use self keyword argument to assign 
 	   |self| object for dictionary functions.
--- a/runtime/doc/indent.txt
+++ b/runtime/doc/indent.txt
@@ -1,4 +1,4 @@
-*indent.txt*    For Vim version 7.3.  Last change: 2011 Sep 02
+*indent.txt*    For Vim version 7.3.  Last change: 2012 Aug 30
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -540,7 +540,7 @@ The examples below assume a 'shiftwidth'
 								*cino-star*
 	*N    Vim searches for unclosed comments at most N lines away.  This
 	      limits the time needed to search for the start of a comment.
-	      If your /* */ comments stop indenting afer N lines this is the
+	      If your /* */ comments stop indenting after N lines this is the
 	      value you will want to change.
 	      (default 70 lines).
 
--- a/runtime/doc/intro.txt
+++ b/runtime/doc/intro.txt
@@ -1,4 +1,4 @@
-*intro.txt*     For Vim version 7.3.  Last change: 2011 May 15
+*intro.txt*     For Vim version 7.3.  Last change: 2012 Sep 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -394,6 +394,8 @@ CTRL-{char}	{char} typed as a control ch
 							*quotecommandquote*
 "command"	A reference to a command that you can type is enclosed in
 		double quotes.
+`command`		New style command, this distinguishes it from other
+		quoted text and strings.
 
 					*key-notation* *key-codes* *keycodes*
 These names for keys are used in the documentation.  They can also be used
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.3.  Last change: 2012 Aug 15
+*todo.txt*      For Vim version 7.3.  Last change: 2012 Sep 21
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -36,6 +36,9 @@ not be repeated below, unless there is e
 
 Go through more coverity reports.
 
+Ruby problem, patch in issue 49. (Sep 19)
+Also in email from Ondruch?
+
 Discussion about canonicalization of Hebrew. (Ron Aaron, 2011 April 10)
 
 GTK: problem with 'L' in 'guioptions' changing the window width.
@@ -43,12 +46,35 @@ GTK: problem with 'L' in 'guioptions' ch
 
 Checking runtime scripts: Thilo Six, 2012 Jun 6.
 
+Crash with 1023 byte directory name. (Danek Duvall, 2012 Sep 19)
+
+Patch for SGR mouse with older xterm. (Hayaki Saito, 2012 Sep 19)
+
+Patch for crash with an autocommand. (ZyX, 2012 Sep 6, second one)
+Also patch for garbage, but use vim_strncpy() instead.
+
+Patch to fix crash on Win32 when setting 'encoding'. (Jiri Sedlak, 2012 Sep
+12)
+
+Patch to update example using empty(). (ZyX, 2012 Sep 13)
+
 Javascript file where indent gets stuck on: GalaxyMaster, 2012 May 3.
 
+Updated French and Esperanto files. (Dominique Pelle, 2012 Aug 19)
+
+When showing diffs filler lines may be hidden at first.
+Patch by Christian Brabandt, 2012 Sep 6.
+
+Patch for memory leaks on exception. (ZyX, 2012 Sep 9)
+
 The CompleteDone autocommand needs some info passed to it:
 - The word that was selected (empty if abandoned complete)
 - Type of completion: tag, omnifunc, user func.
 
+mouse_sgr is not ordered alphabetically in :version output.
+Docs list mouse_urxvt as normal feature, should be big. (Hayaki Saito, 2012
+Aug 16)
+
 ":gundo" command: global undo.  Undoes changes spread over multiple files in
 the order they were made.  Also ":gredo".  Both with a count.  Useful when
 tests fail after making changes and you forgot in which files.
@@ -57,27 +83,45 @@ Win32: When a directory name contains an
 complete the contents of the directory.  No escaping for the "!"? (Jan
 Stocker, 2012 Jan 5)
 
+Patch for IME handling, adds 'imactivatefunc' and 'imstatusfunc' option.
+(Yukihiro Nakadaira, 2012 Aug 16)
+Patch to improve IME handling. (Yasuhiro Matsumoto, 2012 Jul 18)
+
 Issue 54: document behavior of -complete, also expands arg.
 
+Patch for if_lua. (Luis Carvalho, 2012 Aug 26, update Aug 29, another Aug 30,
+then Sep 1)
+
 Issue 72: 'autochdir' causes problems for :vimgrep.
 
 MS-Windows: Crash opening very long file name starting with "\\".
 (Christian Brock, 2012 Jun 29)
 
+Win32: patch for current directory, "loading iof conv". (Ken Takata, 2012 Sep
+15)
+
 Syntax update problem in one buffer opened in two windows, bottom window is
 not correctly updated. (Paul Harris, 2012 Feb 27)
 
+Patch to add assignments in cscope. (Uli Meis, Estabrooks, 2012 Sep 1)
+Alternate patch by Gary Johnson, Sep 4.
+
 Patch to add getsid(). (Tyru, 2011 Oct 2)  Do we want this?  Update Oct 4.
 Or use expand('<sid>')?
 
-Patch to improve IME handling. (Yasuhiro Matsumoto, 2012 Jul 18)
-
 Patch for :tabcloseleft, after closing a tab go to left tab. (William Bowers,
 2012 Aug 4)
 
+Patch for Tab behavior with 'conceal'. (Dominique Pelle, 2012 Mar 18)
+Patch to test functionality of 'conceal' with tabs. (Simon Ruderich, 2012 Sep
+5)  Update with screencol() and screenrow() functions: Sep 7.
+
 Crash in autocmd that unloads buffers in a BufUnload event. (Andrew Pimlott,
 2012 Aug 11)  Disallow :new when BufUnload is being handled?
 
+MS-Windows ACL support doesn't work well.  Patch from Ken Takata, 2012 Aug 29.
+Update Aug 31.
+
 MS-Windows resizing problems:
 - Windows window on screen positioning: Patch by Yukihiro Nakadaira, 2012 Jun
   20.  Uses getWindowRect() instead of GetWindowPlacement()
@@ -94,6 +138,9 @@ The input map for CTRL-O in mswin.vim ca
 Suggestion for another map. (Philip Mat, 2012 Jun 18)
 But use "gi" instead of "a".  Or use CTRL-\ CTRL-O.
 
+Patch to support user name completion on MS-Windows. (Yasuhiro Matsumoto, 2012
+Aug 16)
+
 URXVT:
 - will get stuck if byte sequence does not containe expected semicolon.
 - Use urxvt mouse support also in xterm.  Explanations:
@@ -108,17 +155,23 @@ Do give the prompt? Quit with an error?
 
 Patch for 'backupcopy' default behavior for symlinks on Windows. (David Pope,
 2012 Mar 21, update Mar 31)
+With fix for memory leak: Ken Takata, 2012 Aug 24
 
 Patch to list user digraphs. (Christian Brabandt, 2012 Apr 14)
 
 Patch for input method status. (Hirohito Higashi, 2012 Apr 18)
 
+Patch to print the result of a :python command. (Maxim Philippov
+<philippovmi@gmail.com>, 2012 Aug 16)  Update Aug 17.
+
 Problem with winfixheight and resizing. (Yukihiro Nakadaira, 2011 Sep 17)
 Patch Sep 18.
 
 Patch for IME problems. Remove hacking code for old IM. (Yukihiro Nakadaira,
 2012 Jul 20)
 
+/[^\n] does match at a line break.  Expected to do the same as /.
+
 Patch for has('unnamedplus') docs. (Tony Mechelynck, 2011 Sep 27)
 And one for gui_x11.txt.
 
@@ -162,9 +215,6 @@ Patch to add ":py3do". (Lilydjwg, 2012 A
 
 Plugin for Modeleasy. (Massimiliano Tripoli, 2011 Nov 29)
 
-When using remote-silent the -R flag is not passed on. (Axel Bender, 2012 May
-31)
-
 Updated syntax file for ssh_config, maintainer doesn't respond.
 (Leonard Ehrenfried, 2011 Sep 26)
 
@@ -725,10 +775,6 @@ Support a 'systemencoding' option (for U
 file names. (Kikuchan, 2010 Oct 5).  Useful on a latin1 or double-byte Asian
 system when 'encoding' is "utf-8".
 
-Win32: A --remote command that has a directory name starting with a ( doesn't
-work, the backslash is removed, assuming that it escapes the (. (Valery
-Kondakoff, 2009 May 13)
-
 Win32 GUI: Changing manifest helps for dpi changes (Joe Castro, 2009 Mar 27)
 
 Win32 GUI: last message from startup doesn't show up when there is an echoerr
@@ -914,6 +960,15 @@ escaping characters where the backslash 
 an alternate solution, also for src/ex_getln.c.
 This also fails when the file or directory name contains "%". (Thoml, 2008
 July 7)
+Using --remote-silent while the current directory has a # in the name does not
+work, the # needs to be escaped. (Tramblay Bruno, 2012 Sep 15)
+
+When using remote-silent the -R flag is not passed on. (Axel Bender, 2012 May
+31)
+
+Win32: A --remote command that has a directory name starting with a ( doesn't
+work, the backslash is removed, assuming that it escapes the (. (Valery
+Kondakoff, 2009 May 13)
 
 Problem with 'langmap' being used on the rhs of a mapping. (Nikolai Weibull,
 2008 May 14)
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1681,7 +1681,7 @@ 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
+versions lying 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: >
 
--- a/runtime/doc/visual.txt
+++ b/runtime/doc/visual.txt
@@ -66,7 +66,7 @@ 2. Starting and stopping Visual mode			*
 			lines as used for the last Visual operation, but at
 			the current cursor position, multiplied by [count].
 			When the previous Visual operation was on a block both
-			the width and height of the block are multipiled by
+			the width and height of the block are multiplied by
 			[count].
 			When there was no previous Visual operation [count]
 			characters are selected.  This is like moving the
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2012 Aug 02
+" Last Change:	2012 Sep 06
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -1772,6 +1772,10 @@ func! SetFileTypeSH(name)
     " Some .sh scripts contain #!/bin/tcsh.
     call SetFileTypeShell("tcsh")
     return
+  elseif a:name =~ '\<zsh\>'
+    " Some .sh scripts contain #!/bin/zsh.
+    call SetFileTypeShell("zsh")
+    return
   elseif a:name =~ '\<ksh\>'
     let b:is_kornshell = 1
     if exists("b:is_bash")
--- a/runtime/ftplugin/changelog.vim
+++ b/runtime/ftplugin/changelog.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:         generic Changelog file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2011-05-02
+" Latest Revision:  2012-08-23
 " Variables:
 "   g:changelog_timeformat (deprecated: use g:changelog_dateformat instead) -
 "       description: the timeformat used in ChangeLog entries.
@@ -106,10 +106,10 @@ if &filetype == 'changelog'
 
   function! s:passwd_field(line, field)
     let fields = split(a:line, ':', 1)
-    if len(fields) < field
+    if len(fields) < a:field
       return ""
     endif
-    return fields[field - 1]
+    return fields[a:field - 1]
   endfunction
 
   function! s:capitalize(word)
--- a/runtime/ftplugin/zimbu.vim
+++ b/runtime/ftplugin/zimbu.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	Zimbu
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2012 May 18
+" Last Change:	2012 Sep 08
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -34,7 +34,7 @@ setlocal errorformat^=%f\ line\ %l\ col\
 
 " When the matchit plugin is loaded, this makes the % command skip parens and
 " braces in comments.
-let b:match_words = '\(^\s*\)\@<=\(MODULE\|CLASS\|INTERFACE\|BITS\|ENUM\|SHARED\|FUNC\|REPLACE\|DEFINE\|PROC\|EQUAL\|MAIN\|IF\|GENERATE_IF\|WHILE\|REPEAT\|WITH\|DO\|FOR\|SWITCH\|TRY\)\>\|{\s*$:\(^\s*\)\@<=\(ELSE\|ELSEIF\|GENERATE_ELSE\|GENERATE_ELSEIF\|CATCH\|FINALLY\)\>:\(^\s*\)\@<=}\|\<UNTIL\>'
+let b:match_words = '\(^\s*\)\@<=\(MODULE\|CLASS\|INTERFACE\|BITS\|ENUM\|SHARED\|FUNC\|REPLACE\|DEFINE\|PROC\|EQUAL\|MAIN\|IF\|GENERATE_IF\|WHILE\|REPEAT\|WITH\|DO\|FOR\|SWITCH\|TRY\)\>\|{\s*$:\(^\s*\)\@<=\(ELSE\|ELSEIF\|GENERATE_ELSE\|GENERATE_ELSEIF\|CATCH\|FINALLY\)\>:\(^\s*\)\@<=\(}\|\<UNTIL\>\)'
 
 let b:match_skip = 's:comment\|string\|zimbuchar'
 
@@ -43,12 +43,36 @@ setlocal et sts=2 sw=2
 
 " Does replace when a dot, space or closing brace is typed.
 func! GCUpperDot(what)
-  let col = col(".") - strlen(a:what)
-  if v:char != ' ' && v:char != "\r" && v:char != "\x1b" && v:char != '.' && v:char != ')' && v:char != '}'
+  if v:char != ' ' && v:char != "\r" && v:char != "\x1b" && v:char != '.' && v:char != ')' && v:char != '}' && v:char != ','
     " no space or dot after the typed text
     let g:got_char = v:char
     return a:what
   endif
+  return GCUpperCommon(a:what)
+endfunc
+
+" Does not replace when a dot is typed.
+func! GCUpper(what)
+  if v:char != ' ' && v:char != "\r" && v:char != "\x1b" && v:char != ')' && v:char != ','
+    " no space or other "terminating" character after the typed text
+    let g:got_char = v:char
+    return a:what
+  endif
+  return GCUpperCommon(a:what)
+endfunc
+
+" Only replaces when a space is typed.
+func! GCUpperSpace(what)
+  if v:char != ' '
+    " no space after the typed text
+    let g:got_char = v:char
+    return a:what
+  endif
+  return GCUpperCommon(a:what)
+endfunc
+
+func! GCUpperCommon(what)
+  let col = col(".") - strlen(a:what)
   if col > 1 && getline('.')[col - 2] != ' '
     " no space before the typed text
     let g:got_char = 999
@@ -64,34 +88,15 @@ func! GCUpperDot(what)
   return toupper(a:what)
 endfunc
 
-" Does not replace when a dot is typed.
-func! GCUpper(what)
-  if v:char != ' ' && v:char != "\r" && v:char != "\x1b" && v:char != ')'
-    " no space after the typed text
-    let g:got_char = v:char
-    return a:what
-  endif
-  return GCUpperDot(a:what)
-endfunc
-
-" Only replaces when a space is typed.
-func! GCUpperSpace(what)
-  if v:char != ' '
-    " no space after the typed text
-    let g:got_char = v:char
-    return a:what
-  endif
-  return GCUpperDot(a:what)
-endfunc
-
 iabbr <buffer> <expr> alias GCUpperSpace("alias")
 iabbr <buffer> <expr> arg GCUpperDot("arg")
-iabbr <buffer> <expr> bad GCUpper("bad")
 iabbr <buffer> <expr> break GCUpper("break")
 iabbr <buffer> <expr> case GCUpperSpace("case")
 iabbr <buffer> <expr> catch GCUpperSpace("catch")
 iabbr <buffer> <expr> check GCUpperDot("check")
 iabbr <buffer> <expr> class GCUpperSpace("class")
+iabbr <buffer> <expr> interface GCUpperSpace("interface")
+iabbr <buffer> <expr> implements GCUpperSpace("implements")
 iabbr <buffer> <expr> shared GCUpperSpace("shared")
 iabbr <buffer> <expr> continue GCUpper("continue")
 iabbr <buffer> <expr> default GCUpper("default")
--- a/runtime/indent/zimbu.vim
+++ b/runtime/indent/zimbu.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	Zimbu
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2011 Jun 19
+" Last Change:	2012 Sep 08
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -101,7 +101,7 @@ func GetZimbuIndent(lnum)
     endwhile
   endif
 
-  if prevline =~ '^\s*\(IF\|\|ELSEIF\|ELSE\|GENERATE_IF\|\|GENERATE_ELSEIF\|GENERATE_ELSE\|WHILE\|REPEAT\|TRY\|CATCH\|FINALLY\|FOR\|DO\|SWITCH\|CASE\|DEFAULT\|FUNC\|VIRTUAL\|ABSTRACT\|DEFINE\|REPLACE\|FINAL\|PROC\|MAIN\|NEW\|ENUM\|CLASS\|BITS\|MODULE\|SHARED\)\>'
+  if prevline =~ '^\s*\(IF\|\|ELSEIF\|ELSE\|GENERATE_IF\|\|GENERATE_ELSEIF\|GENERATE_ELSE\|WHILE\|REPEAT\|TRY\|CATCH\|FINALLY\|FOR\|DO\|SWITCH\|CASE\|DEFAULT\|FUNC\|VIRTUAL\|ABSTRACT\|DEFINE\|REPLACE\|FINAL\|PROC\|MAIN\|NEW\|ENUM\|CLASS\|INTERFACE\|BITS\|MODULE\|SHARED\)\>'
     let plindent += &sw
   endif
   if thisline =~ '^\s*\(}\|ELSEIF\>\|ELSE\>\|CATCH\|FINALLY\|GENERATE_ELSEIF\>\|GENERATE_ELSE\>\|UNTIL\>\)'
--- a/runtime/scripts.vim
+++ b/runtime/scripts.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types in scripts
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2010 Sep 22
+" Last change:	2012 Aug 30
 
 " This file is called by an autocommand for every file that has just been
 " loaded into a buffer.  It checks if the type of file can be recognized by
@@ -198,7 +198,8 @@ else
     " - "=== ", line of "=", "---", "+++ " (SVK diff)
     " - "=== ", "--- ", "+++ " (bzr diff, common case)
     " - "=== (removed|added|renamed|modified)" (bzr diff, alternative)
-  elseif s:line1 =~ '^\(diff\>\|Only in \|\d\+\(,\d\+\)\=[cda]\d\+\>\|# It was generated by makepatch \|Index:\s\+\f\+\r\=$\|===== \f\+ \d\+\.\d\+ vs edited\|==== //\f\+#\d\+\)'
+    " - "# HG changeset patch" in first line (Mercurial export format)
+  elseif s:line1 =~ '^\(diff\>\|Only in \|\d\+\(,\d\+\)\=[cda]\d\+\>\|# It was generated by makepatch \|Index:\s\+\f\+\r\=$\|===== \f\+ \d\+\.\d\+ vs edited\|==== //\f\+#\d\+\|# HG changeset patch\)'
 	\ || (s:line1 =~ '^--- ' && s:line2 =~ '^+++ ')
 	\ || (s:line1 =~ '^\* looking for ' && s:line2 =~ '^\* comparing to ')
 	\ || (s:line1 =~ '^\*\*\* ' && s:line2 =~ '^--- ')
--- a/runtime/syntax/cl.vim
+++ b/runtime/syntax/cl.vim
@@ -1,25 +1,25 @@
 " Vim syntax file
-" Language:		CL
-"			(pronounced alphabetically, and NOT known as Clever)
-"			(CL was created by Multibase, http://www.mbase.com.au)
+" Language:				CL
+" 					(pronounced alphabetically, and NOT known as Clever)
+" 					(CL was created by Multibase, http://www.mbase.com.au)
 " Filename extensions:	*.ent
-"			*.eni
+"					*.eni
 " Maintainer:		Philip Uren	<philuSPAX@ieee.org> Remove SPAX spam block
-" Version:              4
-" Last Change:		May 11 2012
+" Version:              5
+" Last Change:		Aug 16 2012
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
 if version < 600
-    syntax clear
+	syntax clear
 elseif exists("b:current_syntax")
-    finish
+	finish
 endif
 
 if version >= 600
-    setlocal iskeyword=@,48-57,_,-,
+	setlocal iskeyword=@,48-57,_,-,
 else
-    set iskeyword=@,48-57,_,-,
+	set iskeyword=@,48-57,_,-,
 endif
 
 syn case ignore
@@ -27,87 +27,87 @@ syn case ignore
 syn sync lines=300
 
 "If/else/elsif/endif and while/wend mismatch errors
-syn match   clifError	    "\<wend\>"
-syn match   clifError	    "\<elsif\>"
-syn match   clifError	    "\<else\>"
-syn match   clifError	    "\<endif\>"
+syn match	clifError	"\<wend\>"
+syn match	clifError	"\<elsif\>"
+syn match	clifError	"\<else\>"
+syn match	clifError	"\<endif\>"
 
-syn match   clSpaceError    "\s\+$"
+syn match	clSpaceError	"\s\+$"
 
 " If and while regions
-syn region  clLoop	transparent matchgroup=clWhile start="\<while\>" matchgroup=clWhile end="\<wend\>" contains=ALLBUT,clBreak,clProcedure
-syn region  clIf	transparent matchgroup=clConditional start="\<if\>" matchgroup=clConditional end="\<endif\>"   contains=ALLBUT,clBreak,clProcedure
+syn region	clLoop		transparent matchgroup=clWhile start="\<while\>" matchgroup=clWhile end="\<wend\>" contains=ALLBUT,clBreak,clProcedure
+syn region	clIf		transparent matchgroup=clConditional start="\<if\>" matchgroup=clConditional end="\<endif\>"   contains=ALLBUT,clBreak,clProcedure
 
 " Make those TODO notes and debugging stand out!
-syn keyword clTodo	contained   TODO BUG DEBUG FIX
-syn match   clNeedsWork	contained   "NEED[S]*\s\s*WORK"
-syn keyword clDebug	contained   debug
+syn keyword	clTodo		contained	TODO BUG DEBUG FIX
+syn match	clNeedsWork	contained	"NEED[S]*\s\s*WORK"
+syn keyword	clDebug		contained	debug
 
-syn match   clComment	"#.*$"	    contains=clTodo,clNeedsWork
-syn region  clProcedure	oneline	    start="^\s*[{}]" end="$"
-syn match   clInclude	"^\s*include\s.*"
+syn match	clComment	"#.*$"		contains=clTodo,clNeedsWork,@Spell
+syn region	clProcedure	oneline		start="^\s*[{}]" end="$"
+syn match	clInclude	"^\s*include\s.*"
 
 " We don't put "debug" in the clSetOptions;
 " we contain it in clSet so we can make it stand out.
-syn keyword clSetOptions    transparent aauto abort align convert E fill fnum goback hangup justify null_exit output rauto rawprint rawdisplay repeat skip tab trim
-syn match   clSet	"^\s*set\s.*" contains=clSetOptions,clDebug
+syn keyword	clSetOptions	transparent aauto abort align convert E fill fnum goback hangup justify null_exit output rauto rawprint rawdisplay repeat skip tab trim
+syn match	clSet		"^\s*set\s.*" contains=clSetOptions,clDebug
 
-syn match   clPreProc	"^\s*#P.*"
+syn match	clPreProc	"^\s*#P.*"
 
-syn keyword clConditional   else elsif
-syn keyword clWhile	continue endloop
+syn keyword	clConditional	else elsif
+syn keyword	clWhile		continue endloop
 " 'break' needs to be a region so we can sync on it above.
-syn region  clBreak	oneline start="^\s*break" end="$"
+syn region	clBreak		oneline start="^\s*break" end="$"
 
-syn match   clOperator	"[!;|)(:.><+*=-]"
+syn match	clOperator	"[!;|)(:.><+*=-]"
 
-syn match   clNumber	"\<\d\+\(u\=l\=\|lu\|f\)\>"
+syn match	clNumber	"\<\d\+\(u\=l\=\|lu\|f\)\>"
 
-syn region  clString	matchgroup=clQuote  start=+"+ end=+"+	skip=+\\"+
-syn region  clString	matchgroup=clQuote  start=+'+ end=+'+	skip=+\\'+
+syn region	clString	matchgroup=clQuote	start=+"+ end=+"+	skip=+\\"+ contains=@Spell
+syn region	clString	matchgroup=clQuote	start=+'+ end=+'+	skip=+\\'+ contains=@Spell
 
-syn keyword clReserved	ERROR EXIT INTERRUPT LOCKED LREPLY MODE MCOL MLINE MREPLY NULL REPLY V1 V2 V3 V4 V5 V6 V7 V8 V9 ZERO BYPASS GOING_BACK AAUTO ABORT ABORT ALIGN BIGE CONVERT FNUM GOBACK HANGUP JUSTIFY NEXIT OUTPUT RAUTO RAWDISPLAY RAWPRINT REPEAT SKIP TAB TRIM LCOUNT PCOUNT PLINES SLINES SCOLS MATCH LMATCH
+syn keyword	clReserved	ERROR EXIT INTERRUPT LOCKED LREPLY MODE MCOL MLINE MREPLY NULL REPLY V1 V2 V3 V4 V5 V6 V7 V8 V9 ZERO BYPASS GOING_BACK AAUTO ABORT ABORT ALIGN BIGE CONVERT FNUM GOBACK HANGUP JUSTIFY NEXIT OUTPUT RAUTO RAWDISPLAY RAWPRINT REPEAT SKIP TAB TRIM LCOUNT PCOUNT PLINES SLINES SCOLS MATCH LMATCH
 
-syn keyword clFunction	asc asize chr name random slen srandom day getarg getcgi getenv lcase scat sconv sdel skey smult srep substr sword trim ucase match
+syn keyword	clFunction	asc asize chr name random slen srandom day getarg getcgi getenv lcase scat sconv sdel skey smult srep substr sword trim ucase match
 
-syn keyword clStatement	clear clear_eol clear_eos close copy create unique with where empty define define ldefine delay_form delete escape exit_block exit_do exit_process field fork format get getfile getnext getprev goto head join maintain message no_join on_eop on_key on_exit on_delete openin openout openapp pause popenin popenout popenio print put range read redisplay refresh restart_block screen select sleep text unlock write and not or do
+syn keyword	clStatement	clear clear_eol clear_eos close copy create unique with where empty define define ldefine delay_form delete escape exit_block exit_do exit_process field fork format get getfile getnext getprev goto head join maintain message no_join on_eop on_key on_exit on_delete openin openout openapp pause popenin popenout popenio print put range read redisplay refresh restart_block screen select sleep text unlock write and not or do
 
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already
 " For version 5.8 and later: only when an item doesn't have highlighting yet
-if  version >= 508 || !exists("did_cl_syntax_inits")
-    if	version < 508
-	let did_cl_syntax_inits = 1
-	command -nargs=+ HiLink hi link <args>
-    else
-	command -nargs=+ HiLink hi def link <args>
-    endif
+if	version >= 508 || !exists("did_cl_syntax_inits")
+	if	version < 508
+		let did_cl_syntax_inits = 1
+		command -nargs=+ HiLink hi link <args>
+	else
+		command -nargs=+ HiLink hi def link <args>
+	endif
 
-    HiLink clifError	Error
-    HiLink clSpaceError	Error
-    HiLink clWhile	Repeat
-    HiLink clConditional    Conditional
-    HiLink clDebug	Debug
-    HiLink clNeedsWork	Todo
-    HiLink clTodo	Todo
-    HiLink clComment	Comment
-    HiLink clProcedure	Procedure
-    HiLink clBreak	Procedure
-    HiLink clInclude	Include
-    HiLink clSetOption	Statement
-    HiLink clSet	Identifier
-    HiLink clPreProc	PreProc
-    HiLink clOperator	Operator
-    HiLink clNumber	Number
-    HiLink clString	String
-    HiLink clQuote	Delimiter
-    HiLink clReserved	Identifier
-    HiLink clFunction	Function
-    HiLink clStatement	Statement
+	HiLink clifError	Error
+	HiLink clSpaceError	Error
+	HiLink clWhile		Repeat
+	HiLink clConditional	Conditional
+	HiLink clDebug		Debug
+	HiLink clNeedsWork	Todo
+	HiLink clTodo		Todo
+	HiLink clComment	Comment
+	HiLink clProcedure	Procedure
+	HiLink clBreak		Procedure
+	HiLink clInclude	Include
+	HiLink clSetOption	Statement
+	HiLink clSet		Identifier
+	HiLink clPreProc	PreProc
+	HiLink clOperator	Operator
+	HiLink clNumber		Number
+	HiLink clString		String
+	HiLink clQuote		Delimiter
+	HiLink clReserved	Identifier
+	HiLink clFunction	Function
+	HiLink clStatement	Statement
 
-    delcommand HiLink
+	delcommand HiLink
 endif
 
 let b:current_syntax = "cl"
 
-" vim: ts=8 sw=4
+" vim: ts=8 sw=8
--- a/runtime/syntax/css.vim
+++ b/runtime/syntax/css.vim
@@ -1,10 +1,11 @@
 " Vim syntax file
-" Language:	Cascading Style Sheets
-" Maintainer:	Claudio Fleiner <claudio@fleiner.com>
-" URL:		http://www.fleiner.com/vim/syntax/css.vim
-" Last Change:	2011 Dec 14
-" CSS2 by Nikolai Weibull
-" Full CSS2, HTML4 support by Yeti
+" Language:     Cascading Style Sheets
+" Previous Contributor List:
+"               Claudio Fleiner <claudio@fleiner.com> (Maintainer)
+"               Yeti            (Add full CSS2, HTML4 support)
+"               Nikolai Weibull (Add CSS2 support)
+" Maintainer:   Jules Wang      <w.jq0722@gmail.com>
+" Last Change:  2012 Aug 21
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -19,6 +20,7 @@ endif
 
 syn case ignore
 
+" All HTML4 tags
 syn keyword cssTagName abbr acronym address applet area a b base
 syn keyword cssTagName basefont bdo big blockquote body br button
 syn keyword cssTagName caption center cite code col colgroup dd del
@@ -27,16 +29,32 @@ syn keyword cssTagName frameset h1 h2 h3
 syn keyword cssTagName iframe img input ins isindex kbd label legend li
 syn keyword cssTagName link map menu meta noframes noscript ol optgroup
 syn keyword cssTagName option p param pre q s samp script select small
-syn keyword cssTagName span strike strong style sub sup tbody td
+syn keyword cssTagName span strike strong style sub sup table tbody td
 syn keyword cssTagName textarea tfoot th thead title tr tt ul u var
-syn match cssTagName "\<table\>"
+syn keyword cssTagName object
+
+" HTML5 new tags 5*6=30
+syn keyword cssTagName article aside audio bdi canvas command
+syn keyword cssTagName datalist details embed figcaption figure footer
+syn keyword cssTagName header hgroup keygen mark meter nav
+syn keyword cssTagName output progress rt rp ruby section
+syn keyword cssTagName source summary time track video wbr
+
+" Tags not supported in HTML5
+syn keyword cssDeprecated acronym applet basefont big center dir
+syn keyword cssDeprecated font frame frameset noframes strike tt
+
+"syn match cssTagName "\<table\>"
 syn match cssTagName "\*"
 
-syn match cssTagName "@page\>" nextgroup=cssDefinition
+" selectors
+syn match cssSelectorOp "[,>+]"
+syn match cssSelectorOp2 "[~|^$*]\?=" contained
+" FIXME: add HTML5 attribute
+syn region cssAttributeSelector matchgroup=cssSelectorOp start="\[" end="]" transparent contains=cssUnicodeEscape,cssSelectorOp2,cssStringQ,cssStringQQ
 
-syn match cssSelectorOp "[+>.]"
-syn match cssSelectorOp2 "[~|]\?=" contained
-syn region cssAttributeSelector matchgroup=cssSelectorOp start="\[" end="]" transparent contains=cssUnicodeEscape,cssSelectorOp2,cssStringQ,cssStringQQ
+" .class and #id
+syn match cssClassName "\.[A-Za-z][A-Za-z0-9_-]\+"
 
 try
 syn match cssIdentifier "#[A-Za-z-_@][A-Za-z-0-9_@-]*"
@@ -44,15 +62,18 @@ catch /^.*/
 syn match cssIdentifier "#[A-Za-z_@][A-Za-z0-9_@-]*"
 endtry
 
+syn match cssTagName "@page\>" nextgroup=cssDefinition
+" FIXME: use cssVendor here
+syn match cssTagName "@\(-\(webkit\|moz\|o\|ms\)-\)\=keyframes\>" nextgroup=cssDefinition
 
 syn match cssMedia "@media\>" nextgroup=cssMediaType skipwhite skipnl
 syn keyword cssMediaType contained screen print aural braile embosed handheld projection ty tv all nextgroup=cssMediaComma,cssMediaBlock skipwhite skipnl
-syn match cssMediaComma "," nextgroup=cssMediaType skipwhite skipnl
+"syn match cssMediaComma "," nextgroup=cssMediaType skipwhite skipnl
 syn region cssMediaBlock transparent matchgroup=cssBraces start='{' end='}' contains=cssTagName,cssError,cssComment,cssDefinition,cssURL,cssUnicodeEscape,cssIdentifier
 
 syn match cssValueInteger contained "[-+]\=\d\+"
 syn match cssValueNumber contained "[-+]\=\d\+\(\.\d*\)\="
-syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\)"
+syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\)"
 syn match cssValueAngle contained "[-+]\=\d\+\(\.\d*\)\=\(deg\|grad\|rad\)"
 syn match cssValueTime contained "+\=\d\+\(\.\d*\)\=\(ms\|s\)"
 syn match cssValueFrequency contained "+\=\d\+\(\.\d*\)\=\(Hz\|kHz\)"
@@ -73,20 +94,78 @@ syn keyword cssColor contained aqua blac
 syn case match
 syn keyword cssColor contained ActiveBorder ActiveCaption AppWorkspace ButtonFace ButtonHighlight ButtonShadow ButtonText CaptionText GrayText Highlight HighlightText InactiveBorder InactiveCaption InactiveCaptionText InfoBackground InfoText Menu MenuText Scrollbar ThreeDDarkShadow ThreeDFace ThreeDHighlight ThreeDLightShadow ThreeDShadow Window WindowFrame WindowText Background
 syn case ignore
+
+syn match cssImportant contained "!\s*important\>"
+
 syn match cssColor contained "\<transparent\>"
 syn match cssColor contained "\<white\>"
 syn match cssColor contained "#[0-9A-Fa-f]\{3\}\>"
 syn match cssColor contained "#[0-9A-Fa-f]\{6\}\>"
-"syn match cssColor contained "\<rgb\s*(\s*\d\+\(\.\d*\)\=%\=\s*,\s*\d\+\(\.\d*\)\=%\=\s*,\s*\d\+\(\.\d*\)\=%\=\s*)"
-syn region cssURL contained matchgroup=cssFunctionName start="\<url\s*(" end=")" oneline keepend
-syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip\|attr\|counter\|rect\)\s*(" end=")" oneline keepend
 
-syn match cssImportant contained "!\s*important\>"
+syn region cssURL contained matchgroup=cssFunctionName start="\<url\s*(" end=")" oneline keepend
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip\|attr\|counter\|rect\|cubic-bezier\)\s*(" end=")" oneline keepend
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgba\|hsl\|hsla\)\s*(" end=")" oneline keepend
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(linear\|radial\)-gradient\s*(" end=")" oneline keepend
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(matrix\(3d\)\=\|scale\(3d\|X\|Y|\Z\)\=\|translate\(3d\|X\|Y|\Z\)\=\|skew\(X\|Y\)\=\|rotate\(3d\|X\|Y|\Z\)\=\|perspective\)\s*(" end=")" oneline keepend
 
-syn keyword cssCommonAttr contained auto none inherit
+" Prop and Attr
+" Reference: http://www.w3schools.com/cssref/default.asp
+syn keyword cssCommonAttr contained auto none inherit all
 syn keyword cssCommonAttr contained top bottom
 syn keyword cssCommonAttr contained medium normal
 
+
+syn match cssAnimationProp contained "\<animation\(-\(name\|duration\|timing-function\|delay\|iteration-cout\|play-state\)\)\=\>"
+
+
+syn keyword cssAnimationAttr contained infinite alternate paused running
+" bugfix: escape linear-gradient
+syn match cssAnimationAttr contained "\<linear\(-gradient\)\@!\>"
+syn match cssAnimationAttr contained "\<ease\(-\(in-out\|out\|in\)\)\=\>"
+
+syn match cssBackgroundProp contained "\<background\(-\(color\|image\|attachment\|position\|clip\|origin\|size\)\)\=\>"
+syn keyword cssBackgroundAttr contained center fixed over contain
+syn match cssBackgroundAttr contained "\<no-repeat\>"
+syn match cssBackgroundAttr contained "\<repeat\(-[xy]\)\=\>"
+syn match cssBackgroundAttr contained "\<\(border\|content\|padding\)-box\>"
+
+
+syn match cssBorderOutlineProp contained "\<border\(-\(top\|right\|bottom\|left\)\)\=\(-\(width\|color\|style\)\)\=\>"
+syn match cssBorderOutlineProp contained "\<outline\(-\(width\|style\|color\)\)\=\>"
+syn match cssBorderOutlineProp contained "\<border-\(top\|bottom\)-\(left\|right\)\(-radius\)\=\>"
+syn match cssBorderOutlineProp contained "\<border-image\(-\(outset\|repeat\|slice\|source\|width\)\)\=\>"
+syn match cssBorderOutlineProp contained "\<border-radius\>"
+syn keyword cssBorderOutlineAttr contained thin thick medium
+syn keyword cssBorderOutlineAttr contained dotted dashed solid double groove ridge inset outset
+syn keyword cssBorderOutlineAttr contained hidden visible scroll collapse
+syn keyword cssBorderOutlineAttr contained stretch round
+
+
+syn match cssBoxProp contained "\<overflow\(-\(x\|y\|style\)\)\=\>"
+syn match cssBoxProp contained "\<rotation\(-point\)=\>"
+syn keyword cssBoxAttr contained visible hidden scroll auto
+syn match cssBoxAttr contained "\<no-\(display\|content\)\>"
+
+syn keyword cssColorProp contained opacity
+syn match cssColorProp contained "\<color-profile\>"
+syn match cssColorProp contained "\<rendering-intent\>"
+
+
+syn match cssDimensionProp contained "\<\(min\|max\)-\(width\|height\)\>"
+syn keyword cssDimensionProp contained height
+syn keyword cssDimensionProp contained width
+
+" shadow and sizing are in other property groups
+syn match cssFlexibleBoxProp contained "\<box-\(align\|direction\|flex\|ordinal-group\|orient\|pack\|shadow\|sizing\)\>"
+syn keyword cssFlexibleBoxAttr contained start end center baseline stretch
+syn keyword cssFlexibleBoxAttr contained normal reverse
+syn keyword cssFlexibleBoxAttr contained single mulitple
+syn keyword cssFlexibleBoxAttr contained horizontal
+" bugfix: escape vertial-align
+syn match cssFlexibleBoxAttr contained "\<vertical\(-align\)\@!\>"
+syn match cssFlexibleBoxAttr contained "\<\(inline\|block\)-axis\>"
+
+
 syn match cssFontProp contained "\<font\(-\(family\|style\|variant\|weight\|size\(-adjust\)\=\|stretch\)\)\=\>"
 syn match cssFontAttr contained "\<\(sans-\)\=\<serif\>"
 syn match cssFontAttr contained "\<small\(-\(caps\|caption\)\)\=\>"
@@ -95,67 +174,92 @@ syn match cssFontAttr contained "\<messa
 syn match cssFontAttr contained "\<status-bar\>"
 syn match cssFontAttr contained "\<\(\(ultra\|extra\|semi\|status-bar\)-\)\=\(condensed\|expanded\)\>"
 syn keyword cssFontAttr contained cursive fantasy monospace italic oblique
-syn keyword cssFontAttr contained bold bolder lighter larger smaller
-syn keyword cssFontAttr contained icon menu
-syn match cssFontAttr contained "\<caption\>"
-syn keyword cssFontAttr contained large smaller larger
-syn keyword cssFontAttr contained narrower wider
+syn keyword cssFontAttr contained bold bolder light lighter larger smaller
+syn keyword cssFontAttr contained icon menu caption
+syn keyword cssFontAttr contained large smaller larger narrower wider
+syn keyword cssFontAttr contained Courier Arial Georgia Times
+
+
+syn keyword cssGeneratedContentProp contained content quotes crop
+syn match cssGeneratedContentProp contained "\<counter-\(reset\|increment\)\>"
+syn match cssGeneratedContentProp contained "\<move-to\>"
+syn match cssGeneratedContentProp contained "\<page-policy\>"
+syn match cssGeneratedContentAttr contained "\<\(no-\)\=\(open\|close\)-quote\>"
+
+
+syn match cssGridProp contained "\<grid-\(columns\|rows\)\>"
+
+syn match cssHyerlinkProp contained "\<target\(-\(name\|new\|position\)\)\=\>"
+
+syn match cssListProp contained "\<list-style\(-\(type\|position\|image\)\)\=\>"
+syn match cssListAttr contained "\<\(lower\|upper\)-\(roman\|alpha\|greek\|latin\)\>"
+syn match cssListAttr contained "\<\(hiragana\|katakana\)\(-iroha\)\=\>"
+syn match cssListAttr contained "\<\(decimal\(-leading-zero\)\=\|cjk-ideographic\)\>"
+syn keyword cssListAttr contained disc circle square hebrew armenian georgian
+syn keyword cssListAttr contained inside outside
+
+
+syn match cssMarginProp contained "\<margin\(-\(top\|right\|bottom\|left\)\)\=\>"
+
+syn match cssMultiColumnProp contained "\<column\(-\(\break-\(after\|before\)\|count\|gap\|rule\(-\(color\|style\|width\)\)\=\)\|span\|width\)\=\>"
 
-syn keyword cssColorProp contained color
-syn match cssColorProp contained "\<background\(-\(color\|image\|attachment\|position\)\)\=\>"
-syn keyword cssColorAttr contained center scroll fixed
-syn match cssColorAttr contained "\<repeat\(-[xy]\)\=\>"
-syn match cssColorAttr contained "\<no-repeat\>"
+
+syn match cssPaddingProp contained "\<padding\(-\(top\|right\|bottom\|left\)\)\=\>"
+
+syn keyword cssPositioningProp contained bottom clear clip display float left
+syn keyword cssPositioningProp contained position right top visibility
+syn match cssPositioningProp contained "\<z-index\>"
+syn keyword cssPositioningAttr contained block inline compact
+syn match cssPositioningAttr contained "\<table\(-\(row-gorup\|\(header\|footer\)-group\|row\|column\(-group\)\=\|cell\|caption\)\)\=\>"
+syn keyword cssPositioningAttr contained left right both
+syn match cssPositioningAttr contained "\<list-item\>"
+syn match cssPositioningAttr contained "\<inline-\(block\|table\)\>"
+syn keyword cssPositioningAttr contained static relative absolute fixed
 
+syn match cssPrintProp contained "\<page\(-break-\(before\|after\|inside\)\)\=\>"
+syn keyword cssPrintProp contained orphans widows
+syn keyword cssPrintAttr contained landscape portrait crop cross always avoid
+
+syn match cssTableProp contained "\<\(caption-side\|table-layout\|border-collapse\|border-spacing\|empty-cells\)\>"
+syn keyword cssTableAttr contained fixed collapse separate show hide once always
+
+
+syn keyword cssTextProp contained color direction
 syn match cssTextProp "\<\(\(word\|letter\)-spacing\|text\(-\(decoration\|transform\|align\|index\|shadow\)\)\=\|vertical-align\|unicode-bidi\|line-height\)\>"
+syn match cssTextProp contained "\<text-\(justify\|\outline\|overflow\|warp\|align-last\)\>"
+syn match cssTextProp contained "\<word-\(break\|\wrap\)\>"
+syn match cssTextProp contained "\<white-space\>"
+syn match cssTextProp contained "\<hanging-punctuation\>"
+syn match cssTextProp contained "\<punctuation-trim\>"
 syn match cssTextAttr contained "\<line-through\>"
 syn match cssTextAttr contained "\<text-indent\>"
 syn match cssTextAttr contained "\<\(text-\)\=\(top\|bottom\)\>"
+syn keyword cssTextAttr contained ltr rtl embed nowrap
 syn keyword cssTextAttr contained underline overline blink sub super middle
-syn keyword cssTextAttr contained capitalize uppercase lowercase center justify baseline sub super
-
-syn match cssBoxProp contained "\<\(margin\|padding\|border\)\(-\(top\|right\|bottom\|left\)\)\=\>"
-syn match cssBoxProp contained "\<border-\(\(\(top\|right\|bottom\|left\)-\)\=\(width\|color\|style\)\)\=\>"
-syn match cssBoxProp contained "\<\(width\|z-index\)\>"
-syn match cssBoxProp contained "\<\(min\|max\)-\(width\|height\)\>"
-syn keyword cssBoxProp contained width height float clear overflow clip visibility
-syn keyword cssBoxAttr contained thin thick both
-syn keyword cssBoxAttr contained dotted dashed solid double groove ridge inset outset
-syn keyword cssBoxAttr contained hidden visible scroll collapse
-
-syn keyword cssGeneratedContentProp contained content quotes
-syn match cssGeneratedContentProp contained "\<counter-\(reset\|increment\)\>"
-syn match cssGeneratedContentProp contained "\<list-style\(-\(type\|position\|image\)\)\=\>"
-syn match cssGeneratedContentAttr contained "\<\(no-\)\=\(open\|close\)-quote\>"
-syn match cssAuralAttr contained "\<lower\>"
-syn match cssGeneratedContentAttr contained "\<\(lower\|upper\)-\(roman\|alpha\|greek\|latin\)\>"
-syn match cssGeneratedContentAttr contained "\<\(hiragana\|katakana\)\(-iroha\)\=\>"
-syn match cssGeneratedContentAttr contained "\<\(decimal\(-leading-zero\)\=\|cjk-ideographic\)\>"
-syn keyword cssGeneratedContentAttr contained disc circle square hebrew armenian georgian
-syn keyword cssGeneratedContentAttr contained inside outside
+syn keyword cssTextAttr contained capitalize uppercase lowercase
+syn keyword cssTextAttr contained center justify baseline sub super
+syn match cssTextAttr contained "\<pre\(-\(line\|wrap\)\)\=\>"
+syn match cssTextAttr contained "\<\(allow\|force\)-end\>"
+syn keyword cssTextAttr contained start end adjacent
+syn match cssTextAttr contained "\<inter-\(word\|ideographic\|cluster\)\>"
+syn keyword cssTextAttr contained distribute kashida first last
+syn keyword cssTextAttr contained clip ellipsis unrestricted suppress
+syn match cssTextAttr contained "\<break-all\>"
+syn match cssTextAttr contained "\<break-word\>"
+syn keyword cssTextAttr contained hyphenate
 
-syn match cssPagingProp contained "\<page\(-break-\(before\|after\|inside\)\)\=\>"
-syn keyword cssPagingProp contained size marks inside orphans widows
-syn keyword cssPagingAttr contained landscape portrait crop cross always avoid
+
+syn match cssTransformProp contained "\<transform\(-\(origin\|style\)\)\=\>"
+syn match cssTransformProp contained "\<perspective\(-origin\)\=\>"
+syn match cssTransformProp contained "\<backface-visibility\>"
 
-syn keyword cssUIProp contained cursor
-syn match cssUIProp contained "\<outline\(-\(width\|style\|color\)\)\=\>"
-syn match cssUIAttr contained "\<[ns]\=[ew]\=-resize\>"
-syn keyword cssUIAttr contained default crosshair pointer move wait help
-syn keyword cssUIAttr contained thin thick
-syn keyword cssUIAttr contained dotted dashed solid double groove ridge inset outset
-syn keyword cssUIAttr contained invert
+syn match cssTransitionProp contained "\<transition\(-\(delay\|duration\|property\|timing-function\)\)\=\>"
 
-syn match cssRenderAttr contained "\<marker\>"
-syn match cssRenderProp contained "\<\(display\|marker-offset\|unicode-bidi\|white-space\|list-item\|run-in\|inline-table\)\>"
-syn keyword cssRenderProp contained position top bottom direction
-syn match cssRenderProp contained "\<\(left\|right\)\>"
-syn keyword cssRenderAttr contained block inline compact
-syn match cssRenderAttr contained "\<table\(-\(row-gorup\|\(header\|footer\)-group\|row\|column\(-group\)\=\|cell\|caption\)\)\=\>"
-syn keyword cssRenderAttr contained static relative absolute fixed
-syn keyword cssRenderAttr contained ltr rtl embed bidi-override pre nowrap
-syn match cssRenderAttr contained "\<bidi-override\>"
-
+syn match cssUIProp contained "\<nav-\(down\|index\|left\|right\|up\)\=\>"
+syn match cssUIProp contained "\<outline-offset\>"
+syn match cssUIProp contained "\<box-sizing\>"
+syn keyword cssUIProp contained appearance icon resize
+syn keyword cssUIAttr contained window button menu field
 
 syn match cssAuralProp contained "\<\(pause\|cue\)\(-\(before\|after\)\)\=\>"
 syn match cssAuralProp contained "\<\(play-during\|speech-rate\|voice-family\|pitch\(-range\)\=\|speak\(-\(punctuation\|numerals\)\)\=\)\>"
@@ -171,30 +275,54 @@ syn keyword cssAuralAttr contained below
 syn match cssAuralAttr contained "\<\(x-\)\=\(slow\|fast\)\>"
 syn keyword cssAuralAttr contained faster slower
 syn keyword cssAuralAttr contained male female child code digits continuous
+syn match cssAuralAttr contained "\<lower\>"
 
-syn match cssTableProp contained "\<\(caption-side\|table-layout\|border-collapse\|border-spacing\|empty-cells\|speak-header\)\>"
-syn keyword cssTableAttr contained fixed collapse separate show hide once always
+" cursor
+syn keyword cssUIProp contained cursor
+syn match cssUIAttr contained "\<[ns]\=[ew]\=-resize\>"
+syn keyword cssUIAttr contained crosshair default help move pointer
+syn keyword cssUIAttr contained progress wait
+
+" FIXME: I could not find them in reference
+syn keyword cssUIAttr contained invert maker size zoom
+syn match cssRenderAttr contained "\<run-in\>"
+syn match cssRenderAttr contained "\<text-rendering\>"
+syn match cssRenderAttr contained "\<font-smoothing\>"
+syn match cssRenderProp contained "\<marker-offset\>"
+syn match cssRenderAttr contained "\<bidi-override\>"
+
 
 " FIXME: This allows cssMediaBlock before the semicolon, which is wrong.
 syn region cssInclude start="@import" end=";" contains=cssComment,cssURL,cssUnicodeEscape,cssMediaType
 syn match cssBraces contained "[{}]"
 syn match cssError contained "{@<>"
-syn region cssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape
+syn region cssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition
 syn match cssBraceError "}"
 
+" Pseudo class
 syn match cssPseudoClass ":[A-Za-z0-9_-]*" contains=cssPseudoClassId,cssUnicodeEscape
-syn keyword cssPseudoClassId contained link visited active hover focus before after left right
+syn keyword cssPseudoClassId link visited active hover focus before after left right lang
 syn match cssPseudoClassId contained "\<first\(-\(line\|letter\|child\)\)\=\>"
-syn region cssPseudoClassLang matchgroup=cssPseudoClassId start=":lang(" end=")" oneline
+" FIXME: handle functions.
+"syn region cssPseudoClassLang matchgroup=cssPseudoClassId start="lang(" end=")"
+syn match cssPseudoClassId contained "\<\(last\|only\|nth\|nth-last\)-child\>"
+syn match cssPseudoClassId contained "\<\(first\|last\|only\|nth\|nth-last\)-of-type\>"
+syn keyword cssPseudoClassId root empty target enable disabled checked not invalid
+syn match cssPseudoClassId contained  "::\(-moz-\)\=selection"
 
+" Comment
 syn region cssComment start="/\*" end="\*/" contains=@Spell
+syn region cssComment start="//" skip="\\$" end="$" keepend contains=@Spell
 
 syn match cssUnicodeEscape "\\\x\{1,6}\s\?"
 syn match cssSpecialCharQQ +\\"+ contained
 syn match cssSpecialCharQ +\\'+ contained
 syn region cssStringQQ start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cssUnicodeEscape,cssSpecialCharQQ
 syn region cssStringQ start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=cssUnicodeEscape,cssSpecialCharQ
-syn match cssClassName "\.[A-Za-z][A-Za-z0-9_-]\+"
+
+" Vendor Prefix
+syn match cssVendor contained "\(-\(webkit\|moz\|o\|ms\)-\)"
+
 
 if main_syntax == "css"
   syn sync minlines=10
@@ -212,31 +340,75 @@ if version >= 508 || !exists("did_css_sy
   endif
 
   HiLink cssComment Comment
+  HiLink cssVendor Comment
   HiLink cssTagName Statement
+  HiLink cssDeprecated Error
   HiLink cssSelectorOp Special
   HiLink cssSelectorOp2 Special
+
+  HiLink cssAnimationProp StorageClass
+  HiLink cssBackgroundProp StorageClass
+  HiLink cssBorderOutlineProp StorageClass
+  HiLink cssBoxProp StorageClass
+  HiLink cssColorProp StorageClass
+  HiLink cssContentForPagedMediaProp StorageClass
+  HiLink cssDimensionProp StorageClass
+  HiLink cssFlexibleBoxProp StorageClass
   HiLink cssFontProp StorageClass
-  HiLink cssColorProp StorageClass
+  HiLink cssGeneratedContentProp StorageClass
+  HiLink cssGridProp StorageClass
+  HiLink cssHyerlinkProp StorageClass
+  HiLink cssLineboxProp StorageClass
+  HiLink cssListProp StorageClass
+  HiLink cssMarginProp StorageClass
+  HiLink cssMarqueeProp StorageClass
+  HiLink cssMultiColumnProp StorageClass
+  HiLink cssPaddingProp StorageClass
+  HiLink cssPagedMediaProp StorageClass
+  HiLink cssPositioningProp StorageClass
+  HiLink cssPrintProp StorageClass
+  HiLink cssRubyProp StorageClass
+  HiLink cssSpeechProp StorageClass
+  HiLink cssTableProp StorageClass
   HiLink cssTextProp StorageClass
-  HiLink cssBoxProp StorageClass
-  HiLink cssRenderProp StorageClass
+  HiLink cssTransformProp StorageClass
+  HiLink cssTransitionProp StorageClass
+  HiLink cssUIProp StorageClass
   HiLink cssAuralProp StorageClass
   HiLink cssRenderProp StorageClass
-  HiLink cssGeneratedContentProp StorageClass
-  HiLink cssPagingProp StorageClass
-  HiLink cssTableProp StorageClass
-  HiLink cssUIProp StorageClass
-  HiLink cssFontAttr Type
-  HiLink cssColorAttr Type
-  HiLink cssTextAttr Type
+
+  HiLink cssAnimationAttr Type
+  HiLink cssBackgroundAttr Type
+  HiLink cssBorderOutlineAttr Type
   HiLink cssBoxAttr Type
-  HiLink cssRenderAttr Type
-  HiLink cssAuralAttr Type
+  HiLink cssColorAttr Type
+  HiLink cssContentForPagedMediaAttr Type
+  HiLink cssDimensionAttr Type
+  HiLink cssFlexibleBoxAttr Type
+  HiLink cssFontAttr Type
   HiLink cssGeneratedContentAttr Type
-  HiLink cssPagingAttr Type
+  HiLink cssGridAttr Type
+  HiLink cssHyerlinkAttr Type
+  HiLink cssLineboxAttr Type
+  HiLink cssListAttr Type
+  HiLink cssMarginAttr Type
+  HiLink cssMarqueeAttr Type
+  HiLink cssMultiColumnAttr Type
+  HiLink cssPaddingAttr Type
+  HiLink cssPagedMediaAttr Type
+  HiLink cssPositioningAttr Type
+  HiLink cssPrintAttr Type
+  HiLink cssRubyAttr Type
+  HiLink cssSpeechAttr Type
   HiLink cssTableAttr Type
+  HiLink cssTextAttr Type
+  HiLink cssTransformAttr Type
+  HiLink cssTransitionAttr Type
   HiLink cssUIAttr Type
+  HiLink cssAuralAttr Type
+  HiLink cssRenderAttr Type
   HiLink cssCommonAttr Type
+
   HiLink cssPseudoClassId PreProc
   HiLink cssPseudoClassLang Constant
   HiLink cssValueLength Number
--- a/runtime/syntax/hgcommit.vim
+++ b/runtime/syntax/hgcommit.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	hg (Mercurial) commit file
 " Maintainer:	Ken Takata <kentkt at csc dot jp>
-" Last Change:	2012 Aug 2
+" Last Change:	2012 Aug 23
 " Filenames:	hg-editor-*.txt
 " License:	VIM License
 " URL:		https://github.com/k-takata/hg-vim
@@ -10,12 +10,12 @@ if exists("b:current_syntax")
   finish
 endif
 
-syn match hgcommitComment "^HG:.*$"
-syn match hgcommitUser    "^HG: user: \zs.*$"   contained containedin=hgcommitComment
-syn match hgcommitBranch  "^HG: branch \zs.*$"  contained containedin=hgcommitComment
-syn match hgcommitAdded   "^HG: \zsadded .*$"   contained containedin=hgcommitComment
-syn match hgcommitChanged "^HG: \zschanged .*$" contained containedin=hgcommitComment
-syn match hgcommitRemoved "^HG: \zsremoved .*$" contained containedin=hgcommitComment
+syn match hgcommitComment "^HG:.*$"             contains=@NoSpell
+syn match hgcommitUser    "^HG: user: \zs.*$"   contains=@NoSpell contained containedin=hgcommitComment
+syn match hgcommitBranch  "^HG: branch \zs.*$"  contains=@NoSpell contained containedin=hgcommitComment
+syn match hgcommitAdded   "^HG: \zsadded .*$"   contains=@NoSpell contained containedin=hgcommitComment
+syn match hgcommitChanged "^HG: \zschanged .*$" contains=@NoSpell contained containedin=hgcommitComment
+syn match hgcommitRemoved "^HG: \zsremoved .*$" contains=@NoSpell contained containedin=hgcommitComment
 
 hi def link hgcommitComment Comment
 hi def link hgcommitUser    String
--- a/runtime/syntax/progress.vim
+++ b/runtime/syntax/progress.vim
@@ -3,20 +3,20 @@
 " Filename extensions:	*.p (collides with Pascal),
 "			*.i (collides with assembler)
 "			*.w (collides with cweb)
-" Maintainer:		Philip Uren	    <philuSPAX@ieee.org> Remove SPAX spam block
-" Contributors:         Chris Ruprecht	    <chris@ruprecht.org>
-"			Philip Uren	    <philu@computer.org>
-"			Mikhail Kuperblum   <mikhail@whasup.com>
-"			John Florian	    <jflorian@voyager.net>
-" Version:              11
-" Last Change:		May 11 2012
+" Maintainer:		Philip Uren	<philuSPAX@ieee.org> Remove SPAX spam block
+" Contributors:         Chris Ruprecht	<chris@ruprecht.org>
+"					Philip Uren		<philu@computer.org>
+"					Mikhail Kuperblum	<mikhail@whasup.com>
+"					John Florian		<jflorian@voyager.net>
+" Version:              12
+" Last Change:		Aug 16 2012
 
 " For version 5.x: Clear all syntax item
 " For version 6.x: Quit when a syntax file was already loaded
 if version < 600
-    syntax clear
+	syntax clear
 elseif exists("b:current_syntax")
-    finish
+	finish
 endif
 
 let s:cpo_save = &cpo
@@ -34,7 +34,7 @@ set expandtab
 syn case ignore
 
 " Progress Blocks of code and mismatched "end." errors.
-syn match   ProgressEndError	    "\<end\>"
+syn match   ProgressEndError		"\<end\>"
 syn region ProgressDoBlock transparent matchgroup=ProgressDo start="\<do\>" matchgroup=ProgressDo end="\<end\>" contains=ALLBUT,ProgressProcedure,ProgressFunction
 syn region ProgressForBlock transparent matchgroup=ProgressFor start="\<for\>" matchgroup=ProgressFor end="\<end\>" contains=ALLBUT,ProgressProcedure,ProgressFunction
 syn region ProgressRepeatBlock transparent matchgroup=ProgressRepeat start="\<repeat\>" matchgroup=ProgressRepeat end="\<end\>" contains=ALLBUT,ProgressProcedure,ProgressFunction
@@ -44,20 +44,20 @@ syn region ProgressCaseBlock transparent
 " and they could go in ProgressReserved,
 " but I found it more helpful to highlight them in a different color.
 syn keyword ProgressConditional	if else then when otherwise
-syn keyword ProgressFor		    each where
+syn keyword ProgressFor				each where
 
 " Make those TODO and debugging notes stand out!
-syn keyword ProgressTodo	    contained	TODO BUG FIX
-syn keyword ProgressDebug	    contained	DEBUG
+syn keyword ProgressTodo			contained	TODO BUG FIX
+syn keyword ProgressDebug			contained	DEBUG
 syn keyword ProgressDebug			debugger
 
 " If you like to highlight the whole line of
 " the start and end of procedures
 " to make the whole block of code stand out:
-syn match ProgressProcedure	"^\s*procedure.*"
-syn match ProgressProcedure	"^\s*end\s\s*procedure.*"
-syn match ProgressFunction	"^\s*function.*"
-syn match ProgressFunction	"^\s*end\s\s*function.*"
+syn match ProgressProcedure		"^\s*procedure.*"
+syn match ProgressProcedure		"^\s*end\s\s*procedure.*"
+syn match ProgressFunction		"^\s*function.*"
+syn match ProgressFunction		"^\s*end\s\s*function.*"
 " ... otherwise use this:
 " syn keyword ProgressFunction	procedure function
 
@@ -99,14 +99,14 @@ syn keyword ProgressReserved	window-maxi
 " Strings. Handles embedded quotes.
 " Note that, for some reason, Progress doesn't use the backslash, "\"
 " as the escape character; it uses tilde, "~".
-syn region ProgressString   matchgroup=ProgressQuote	start=+"+ end=+"+   skip=+\~'\|\~\~+
-syn region ProgressString   matchgroup=ProgressQuote	start=+'+ end=+'+   skip=+\~'\|\~\~+
+syn region ProgressString	matchgroup=ProgressQuote	start=+"+ end=+"+	skip=+\~'\|\~\~+ contains=@Spell
+syn region ProgressString	matchgroup=ProgressQuote	start=+'+ end=+'+	skip=+\~'\|\~\~+ contains=@Spell
 
 syn match  ProgressIdentifier		"\<[a-zA-Z_][a-zA-Z0-9_]*\>()"
 
 " syn match  ProgressDelimiter		"()"
 
-syn match  ProgressMatrixDelimiter  "[][]"
+syn match  ProgressMatrixDelimiter	"[][]"
 " If you prefer you can highlight the range:
 "syn match  ProgressMatrixDelimiter	"[\d\+\.\.\d\+]"
 
@@ -114,7 +114,7 @@ syn match  ProgressNumber		"\<\-\=\d\+\(
 syn match  ProgressByte			"\$[0-9a-fA-F]\+"
 
 " More values: Logicals, and Progress's unknown value, ?.
-syn match   ProgressNumber		"?"
+syn match   ProgressNumber				"?"
 syn keyword ProgressNumber		true false yes no
 
 " If you don't like tabs:
@@ -123,9 +123,9 @@ syn match ProgressShowTab "\t"
 " If you don't like white space on the end of lines, uncomment this:
 " syn match   ProgressSpaceError "\s\+$"
 
-syn region ProgressComment	start="/\*"  end="\*/" contains=ProgressComment,ProgressTodo,ProgressDebug
-syn region ProgressInclude	start="^[   ]*[{]" end="[}]" contains=ProgressPreProc,ProgressOperator,ProgressString,ProgressComment
-syn region ProgressPreProc	start="&" end="\>" contained
+syn region ProgressComment		start="/\*"  end="\*/" contains=ProgressComment,ProgressTodo,ProgressDebug,@Spell
+syn region ProgressInclude		start="^[ 	]*[{]" end="[}]" contains=ProgressPreProc,ProgressOperator,ProgressString,ProgressComment
+syn region ProgressPreProc		start="&" end="\>" contained
 
 " This next line works reasonably well.
 " syn match ProgressOperator        "[!;|)(:.><+*=-]"
@@ -277,7 +277,7 @@ syn keyword ProgressOperator	write-fragm
 syn keyword ProgressOperator	xml-data-type xml-node-name xml-node-type xml-schema-pat[h] xml-suppress-namespace-processing y y-of year year-offset yes-no
 syn keyword ProgressOperator	yes-no-cancel
 
-syn keyword ProgressType    char[acter] int[eger] int64 dec[imal] log[ical] da[te] datetime datetime-tz
+syn keyword ProgressType	char[acter] int[eger] int64 dec[imal] log[ical] da[te] datetime datetime-tz
 
 syn sync lines=800
 
@@ -285,40 +285,40 @@ syn sync lines=800
 " For version 5.7 and earlier: only when not done already
 " For version 5.8 and later: only when an item doesn't have highlighting yet
 if version >= 508 || !exists("did_progress_syntax_inits")
-    if version < 508
-	let did_progress_syntax_inits = 1
-	command -nargs=+ HiLink hi link <args>
-    else
-	command -nargs=+ HiLink hi def link <args>
-    endif
+	if version < 508
+		let did_progress_syntax_inits = 1
+		command -nargs=+ HiLink hi link <args>
+	else
+		command -nargs=+ HiLink hi def link <args>
+	endif
 
-    " The default methods for highlighting. Can be overridden later.
-    HiLink ProgressByte		    Number
-    HiLink ProgressCase		    Repeat
-    HiLink ProgressComment	    Comment
-    HiLink ProgressConditional	    Conditional
-    HiLink ProgressDebug		Debug
-    HiLink ProgressDo			Repeat
-    HiLink ProgressEndError	    Error
-    HiLink ProgressFor		    Repeat
-    HiLink ProgressFunction	    Procedure
-    HiLink ProgressIdentifier		Identifier
-    HiLink ProgressInclude	    Include
-    HiLink ProgressMatrixDelimiter  Identifier
-    HiLink ProgressNumber		Number
-    HiLink ProgressOperator	    Operator
-    HiLink ProgressPreProc	    PreProc
-    HiLink ProgressProcedure		Procedure
-    HiLink ProgressQuote		Delimiter
-    HiLink ProgressRepeat		Repeat
-    HiLink ProgressReserved	    Statement
-    HiLink ProgressSpaceError		Error
-    HiLink ProgressString		String
-    HiLink ProgressTodo		    Todo
-    HiLink ProgressType		    Statement
-    HiLink ProgressShowTab	    Error
+	" The default methods for highlighting. Can be overridden later.
+	HiLink ProgressByte		Number
+	HiLink ProgressCase		Repeat
+	HiLink ProgressComment		Comment
+	HiLink ProgressConditional	Conditional
+	HiLink ProgressDebug		Debug
+	HiLink ProgressDo		Repeat
+	HiLink ProgressEndError		Error
+	HiLink ProgressFor		Repeat
+	HiLink ProgressFunction		Procedure
+	HiLink ProgressIdentifier	Identifier
+	HiLink ProgressInclude		Include
+	HiLink ProgressMatrixDelimiter	Identifier
+	HiLink ProgressNumber		Number
+	HiLink ProgressOperator		Operator
+	HiLink ProgressPreProc		PreProc
+	HiLink ProgressProcedure	Procedure
+	HiLink ProgressQuote		Delimiter
+	HiLink ProgressRepeat		Repeat
+	HiLink ProgressReserved		Statement
+	HiLink ProgressSpaceError	Error
+	HiLink ProgressString		String
+	HiLink ProgressTodo		Todo
+	HiLink ProgressType		Statement
+	HiLink ProgressShowTab		Error
 
-    delcommand HiLink
+	delcommand HiLink
 endif
 
 let b:current_syntax = "progress"
@@ -326,4 +326,4 @@ let b:current_syntax = "progress"
 let &cpo = s:cpo_save
 unlet s:cpo_save
 
-" vim: ts=8 sw=4
+" vim: ts=8 sw=8
--- a/runtime/tutor/tutor.vim
+++ b/runtime/tutor/tutor.vim
@@ -1,7 +1,7 @@
 " Vim tutor support file
 " Author: Eduardo F. Amatria <eferna1@platea.pntic.mec.es>
 " Maintainer: Bram Moolenaar
-" Last Change:	2008 Jul 21
+" Last Change:	2012 Sep 21
 
 " This Vim script is used for detecting if a translation of the
 " tutor file exist, i.e., a tutor.xx file, where xx is the language.
@@ -72,14 +72,20 @@ if s:ext =~? '\.ko'
   endif
 endif
 
-" The Chinese tutor is available in two encodings, guess which one to use
+" The Chinese tutor is available in three encodings, guess which one to use
 " This segment is from the above lines and modified by
 " Mendel L Chan <beos@turbolinux.com.cn> for Chinese vim tutorial
+" When 'encoding' is utf-8, choose between China (simplified) and Taiwan
+" (traditional) based on the language, suggested by Alick Zhao.
 if s:ext =~? '\.zh'
   if &enc =~ 'big5\|cp950'
     let s:ext = ".zh.big5"
   elseif &enc != 'utf-8'
     let s:ext = ".zh.euc"
+  elseif s:ext =~? 'zh_tw' || (exists("s:lang") && s:lang =~? 'zh_tw')
+    let s:ext = ".zh_tw"
+  else
+    let s:ext = ".zh_cn"
   endif
 endif
 
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/tutor.zh_cn.utf-8
@@ -0,0 +1,851 @@
+===============================================================================
+=      欢     迎     阅     读   《 V I M  教  程 》   ——     版本 1.5      =
+===============================================================================
+     vim 是一个具有很多命令的功能非常强大的编辑器。限于篇幅,在本教程当中
+     就不详细介绍了。本教程的设计目标是讲述一些必要的基本命令,而掌握好这
+     些命令,您就能够很容易将vim当作一个通用的万能编辑器来使用了。
+
+     完成本教程的内容大约需要25-30分钟,取决于您训练的时间。
+
+     每一节的命令操作将会更改本文。推荐您复制本文的一个副本,然后在副本上
+     进行训练(如果您是通过"vimtutor"来启动教程的,那么本文就已经是副本了)。
+
+     切记一点∶本教程的设计思路是在使用中进行学习的。也就是说,您需要通过
+     执行命令来学习它们本身的正确用法。如果您只是阅读而不操作,那么您可能
+     会很快遗忘这些命令的!
+
+     好了,现在请确定您的Shift-Lock(大小写锁定键)还没有按下,然后按键盘上
+     的字母键 j 足够多的次数来移动光标,直到第一节的内容能够完全充满屏幕。
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			第一讲第一节∶移动光标
+
+
+   ※※ 要移动光标,请依照说明分别按下 h、j、k、l 键。 ※※
+
+	     ^
+	     k		    提示∶ h 的键位于左边,每次按下就会向左移动。
+       < h	 l >		   l 的键位于右边,每次按下就会向右移动。
+	     j			   j 键看起来很象一支尖端方向朝下的箭头。
+	     v
+
+  1. 请随意在屏幕内移动光标,直至您觉得舒服为止。
+
+  2. 按下下行键(j),直到出现光标重复下行。
+
+---> 现在您应该已经学会如何移动到下一讲吧。
+
+  3. 现在请使用下行键,将光标移动到第二讲。
+
+提示∶如果您不敢确定您所按下的字母,请按下<ESC>键回到正常(Normal)模式。
+      然后再次从键盘输入您想要的命令。
+
+提示∶光标键应当也能正常工作的。但是使用hjkl键,在习惯之后您就能够快速
+      地在屏幕内四处移动光标了。
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			第一讲第二节∶VIM的进入和退出
+
+
+  !! 特别提示∶敬请阅读完整本一节的内容,然后才能执行以下所讲解的命令。
+
+  1. 请按<ESC>键(这是为了确保您处在正常模式)。
+
+  2. 然后输入∶			:q! <回车>
+
+---> 这种方式的退出编辑器绝不会保存您进入编辑器以来所做的改动。
+     如果您想保存更改再退出,请输入∶
+				:wq  <回车>
+
+  3. 如果您看到了命令行提示符,请输入能够带您回到本教程的命令,那就是∶
+
+		vimtutor <回车>
+
+     通常情况下您也可以用这种方式∶
+
+		vim tutor <回车>
+
+---> 这里的 'vim' 表示进入vim编辑器,而 'tutor'则是您准备要编辑的文件。
+
+  4. 如果您自信已经牢牢记住了这些步骤的话,请从步骤1执行到步骤3退出,然
+     后再次进入编辑器。接着将光标移动到第一讲第三节来继续我们的教程讲解。
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			第一讲第三节∶文本编辑之删除
+
+
+   ** 在正常(Normal)模式下,可以按下 x 键来删除光标所在位置的字符。**
+
+  1. 请将光标移动到本节中下面标记有 ---> 的那一行。
+
+  2. 为了修正输入错误,请将光标移至准备删除的字符的位置处。
+
+  3. 然后按下 x 键将错误字符删除掉。
+
+  4. 重复步骤2到步骤4,直到句子修正为止。
+
+---> The ccow jumpedd ovverr thhe mooon.
+
+  5. 好了,该行已经修正了,下一节内容是第一讲第四节。
+
+特别提示∶在您浏览本教程时,不要强行记忆。记住一点∶在使用中学习。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     第一讲第四节∶文本编辑之插入
+
+
+	 ** 在正常模式下,可以按下 i 键来插入文本。**
+
+  1. 请将光标移动到本节中下面标记有 ---> 的第一行。
+
+  2. 为了使得第一行内容雷同于第二行,请将光标移至文本第一个字符准备插入
+     的位置。
+
+  3. 然后按下 i 键,接着输入必要的文本字符。
+
+  4. 所有文本都修正完毕,请按下 <ESC> 键返回正常模式。
+     重复步骤2至步骤4以便修正句子。
+
+---> There is text misng this .
+---> There is some text missing from this line.
+
+  5. 如果您对文本插入操作已经很满意,请接着阅读下面的小结。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       第一讲小结
+
+
+  1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。
+	 h (左移)	j (下行)       k (上行)	    l (右移)
+
+  2. 欲进入vim编辑器(从命令行提示符),请输入∶vim 文件名 <回车>
+
+  3. 欲退出vim编辑器,请输入以下命令放弃所有修改∶
+
+	<ESC>   :q!	 <回车>
+
+     或者输入以下命令保存所有修改∶
+
+	<ESC>   :wq	 <回车>
+
+  4. 在正常模式下删除光标所在位置的字符,请按∶ x
+
+  5. 在正常模式下要在光标所在位置开始插入文本,请按∶
+
+	 i     输入必要文本	<ESC>
+
+特别提示∶按下 <ESC> 键会带您回到正常模式或者取消一个不期望或者部分完成
+的命令。
+
+好了,第一讲到此结束。下面接下来继续第二讲的内容。
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			第二讲第一节∶删除类命令
+
+
+	    ** 输入 dw 可以从光标处删除至一个单字/单词的末尾。**
+
+  1. 请按下 <ESC> 键确保您处于正常模式。
+
+  2. 请将光标移动到本节中下面标记有 ---> 的那一行。
+
+  3. 请将光标移至准备要删除的单词的开始。
+
+  4. 接着输入 dw 删除掉该单词。
+
+  特别提示∶您所输入的 dw 会在您输入的同时出现在屏幕的最后一行。如果您输
+  入有误,请按下 <ESC> 键取消,然后重新再来。
+
+---> There are a some words fun that don't belong paper in this sentence.
+
+  5. 重复步骤3至步骤4,直至句子修正完毕。接着继续第二讲第二节内容。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      第二讲第二节∶其他删除类命令
+
+
+		   ** 输入 d$ 从当前光标删除到行末。**
+
+  1. 请按下 <ESC> 键确保您处于正常模式。
+
+  2. 请将光标移动到本节中下面标记有 ---> 的那一行。
+
+  3. 请将光标移动到该行的尾部(也就是在第一个点号‘.’后面)。
+
+  4. 然后输入 d$ 从光标处删至当前行尾部。
+
+---> Somebody typed the end of this line twice. end of this line twice.
+
+
+  5. 请继续学习第二讲第三节就知道是怎么回事了。
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     第二讲第三节∶关于命令和对象
+
+
+  删除命令 d 的格式如下∶
+
+	 [number]   d	object	    或者     d	 [number]   object
+
+  其意如下∶
+    number - 代表执行命令的次数(可选项,缺省设置为 1 )。
+    d - 代表删除。
+    object - 代表命令所要操作的对象(下面有相关介绍)。
+
+  一个简短的对象列表∶
+    w - 从当前光标当前位置直到单字/单词末尾,包括空格。
+    e - 从当前光标当前位置直到单字/单词末尾,但是 *不* 包括空格。
+    $ - 从当前光标当前位置直到当前行末。
+
+特别提示∶
+    对于勇于探索者,请在正常模式下面仅按代表相应对象的键而不使用命令,则
+    将看到光标的移动正如上面的对象列表所代表的一样。
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		第二讲第四节∶对象命令的特殊情况
+
+
+	       ** 输入 dd 可以删除整一个当前行。 **
+
+  鉴于整行删除的高频度,VIM 的设计者决定要简化整行删除,仅需要在同一行上
+  击打两次 d 就可以删除掉光标所在的整行了。
+
+  1. 请将光标移动到本节中下面的短句段落中的第二行。
+  2. 输入 dd 删除该行。
+  3. 然后移动到第四行。
+  4. 接着输入 2dd (还记得前面讲过的 number-command-object 吗?) 删除两行。
+
+      1)  Roses are red,
+      2)  Mud is fun,
+      3)  Violets are blue,
+      4)  I have a car,
+      5)  Clocks tell time,
+      6)  Sugar is sweet
+      7)  And so are you.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 第二讲第五节∶撤消类命令
+
+
+	 ** 输入 u 来撤消最后执行的命令,输入 U 来修正整行。**
+
+  1. 请将光标移动到本节中下面标记有 ---> 的那一行,并将其置于第一个错误
+     处。
+  2. 输入 x 删除第一个不想保留的字母。
+  3. 然后输入 u 撤消最后执行的(一次)命令。
+  4. 这次要使用 x 修正本行的所有错误。
+  5. 现在输入一个大写的 U ,恢复到该行的原始状态。
+  6. 接着多次输入 u 以撤消 U 以及更前的命令。
+  7. 然后多次输入 CTRL-R (先按下 CTRL 键不放开,接着输入 R 键) ,这样就
+     可以执行恢复命令,也就是撤消掉撤消命令。
+
+---> Fiix the errors oon thhis line and reeplace them witth undo.
+
+  8. 这些都是非常有用的命令。下面是第二讲的小结了。
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       第二讲小结
+
+
+  1. 欲从当前光标删除至单字/单词末尾,请输入∶dw
+
+  2. 欲从当前光标删除至当前行末尾,请输入∶d$
+
+  3. 欲删除整行,请输入∶dd
+
+  4. 在正常模式下一个命令的格式是∶
+
+       [number]   command   object     或者     command	[number]   object
+     其意是∶
+       number - 代表的是命令执行的次数
+       command - 代表要做的事情,比如 d 代表删除
+       object - 代表要操作的对象,比如 w 代表单字/单词,$ 代表到行末等等。
+		$ (to the end of line), etc.
+
+  5. 欲撤消以前的操作,请输入∶u (小写的u)
+     欲撤消在一行中所做的改动,请输入∶U (大写的U)
+     欲撤消以前的撤消命令,恢复以前的操作结果,请输入∶CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 第三讲第一节∶置入类命令
+
+
+	       ** 输入 p 将最后一次删除的内容置入光标之后 **
+
+  1. 请将光标移动到本节中下面示范段落的首行。
+
+  2. 输入 dd 将该行删除,这样会将该行保存到vim的缓冲区中。
+
+  3. 接着将光标移动到准备置入的位置的上方。记住∶是上方哦。
+
+  4. 然后在正常模式下(<ESC>键进入),输入 p 将该行粘贴置入。
+
+  5. 重复步骤2至步骤4,将所有的行依序放置到正确的位置上。
+
+     d) Can you learn too?
+     b) Violets are blue,
+     c) Intelligence is learned,
+     a) Roses are red,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       第三讲第二节∶替换类命令
+
+
+	  ** 输入 r 和一个字符替换光标所在位置的字符。**
+
+  1. 请将光标移动到本节中下面标记有 ---> 的第一行。
+
+  2. 请移动光标到第一个错误的适当位置。
+
+  3. 接着输入 r ,这样就能将错误替换掉了。
+
+  4. 重复步骤2和步骤3,直到第一行已经修改完毕。
+
+--->  Whan this lime was tuoed in, someone presswd some wrojg keys!
+--->  When this line was typed in, someone pressed some wrong keys!
+
+  5. 然后我们继续学校第三讲第三节。
+
+特别提示∶切记您要在使用中学习,而不是在记忆中学习。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			第三讲第三节∶更改类命令
+
+
+	   ** 要改变一个单字/单词的部分或者全部,请输入 cw **
+
+  1. 请将光标移动到本节中下面标记有 ---> 的第一行。
+
+  2. 接着把光标放在单词 lubw 的字母 u 的位置那里。
+
+  3. 然后输入 cw 就可以修正该单词了(在本例这里是输入 ine 。)
+
+  4. 最后按 <ESC> 键,然后光标定位到下一个错误第一个准备更改的字母处。
+
+  5. 重复步骤3和步骤4,直到第一个句子完全雷同第二个句子。
+
+---> This lubw has a few wptfd that mrrf changing usf the change command.
+---> This line has a few words that need changing using the change command.
+
+提示∶请注意 cw 命令不仅仅是替换了一个单词,也让您进入文本插入状态了。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       第三讲第四节∶使用c指令的其他更改类命令
+
+
+	     ** 更改类指令可以使用同删除类命令所使用的对象参数。**
+
+  1. 更改类指令的工作方式跟删除类命令是一致的。操作格式是∶
+
+       [number]   c   object	   或者	    c	[number]   object
+
+  2. 对象参数也是一样的,比如 w 代表单字/单词,$代表行末等等。
+
+  3. 请将光标移动到本节中下面标记有 ---> 的第一行。
+
+  4. 接着将光标移动到第一个错误处。
+
+  5. 然后输入 c$ 使得该行剩下的部分更正得同第二行一样。最后按 <ESC> 键。
+
+---> The end of this line needs some help to make it like the second.
+---> The end of this line needs to be corrected using the  c$  command.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       第三讲小结
+
+
+  1. 要重新置入已经删除的文本内容,请输入小写字母 p。该操作可以将已删除
+     的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置
+     于当前光标所在行的下一行。
+
+  2. 要替换光标所在位置的字符,请输入小写的 r 和要替换掉原位置字符的新字
+     符即可。
+
+  3. 更改类命令允许您改变指定的对象,从当前光标所在位置直到对象的末尾。
+     比如输入 cw 可以替换当前光标到单词的末尾的内容;输入 c$ 可以替换当
+     前光标到行末的内容。
+
+  4. 更改类命令的格式是∶
+
+	 [number]   c	object	      或者	c   [number]   object
+
+下面我们继续学习下一讲。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     第四讲第一节∶定位及文件状态
+
+
+  ** 输入 CTRL-g 显示当前编辑文件中当前光标所在行位置以及文件状态信息。
+     输入 SHIFT-G 则直接跳转到文件中的某一指定行。**
+
+  提示∶切记要先通读本节内容,之后才可以执行以下步骤!!!
+
+  1. 按下 CTRL 键不放开然后按 g 键。然后就会看到页面最底部出现一个状态信
+     息行,显示的内容是当前编辑的文件名和文件的总行数。请记住步骤3的行号。
+
+  2. 按下 SHIFT-G 键可以使得当前光标直接跳转到文件最后一行。
+
+  3. 输入您曾停留的行号,然后按下 SHIFT-G。这样就可以返回到您第一次按下
+     CTRL-g 时所在的行好了。注意∶输入行号时,行号是不会在屏幕上显示出来
+     的。
+
+  4. 如果愿意,您可以继续执行步骤1至步骤三。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			第四讲第二节∶搜索类命令
+
+
+     ** 输入 / 以及尾随的字符串可以用以在当前文件中查找该字符串。**
+
+  1. 在正常模式下输入 / 字符。您此时会注意到该字符和光标都会出现在屏幕底
+     部,这跟 : 命令是一样的。
+
+  2. 接着输入 errroor <回车>。那个errroor就是您要查找的字符串。
+
+  3. 要查找同上一次的字符串,只需要按 n 键。要向相反方向查找同上一次的字
+     符串,请输入 Shift-N 即可。
+
+  4. 如果您想逆向查找字符串,请使用 ? 代替 / 进行。
+
+---> When the search reaches the end of the file it will continue at the start.
+
+  "errroor" is not the way to spell error;  errroor is an error.
+
+  提示∶如果查找已经到达文件末尾,查找会自动从文件头部继续查找。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   第四讲第三节∶配对括号的查找
+
+
+	      ** 按 % 可以查找配对的括号 )、]、}。**
+
+  1. 把光标放在本节下面标记有 --> 那一行中的任何一个 (、[ 或 { 处。
+
+  2. 接着按 % 字符。
+
+  3. 此时光标的位置应当是在配对的括号处。
+
+  4. 再次按 % 就可以跳回配对的第一个括号处。
+
+---> This ( is a test line with ('s, ['s ] and {'s } in it. ))
+
+提示∶在程序调试时,这个功能用来查找不配对的括号是很有用的。
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      第四讲第四节∶修正错误的方法之一
+
+
+		** 输入 :s/old/new/g 可以替换 old 为 new。**
+
+  1. 请将光标移动到本节中下面标记有 ---> 的那一行。
+
+  2. 输入 :s/thee/the <回车> 。请注意该命令只改变光标所在行的第一个匹配
+     串。
+
+  3. 输入 :s/thee/the/g	则是替换全行的匹配串。
+
+---> the best time to see thee flowers is in thee spring.
+
+  4. 要替换两行之间出现的每个匹配串,请输入 :#,#s/old/new/g (#,#代表的是
+     两行的行号)。输入 :%s/old/new/g 则是替换整个文件中的每个匹配串。
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       第四讲小结
+
+
+  1. Ctrl-g 用于显示当前光标所在位置和文件状态信息。Shift-G 用于将光标跳
+     转至文件最后一行。先敲入一个行号然后按 Shift-G 则是将光标移动至该行
+     号代表的行。
+
+  2. 输入 / 然后紧随一个字符串是则是在当前所编辑的文档中向后查找该字符串。
+     输入问号 ? 然后紧随一个字符串是则是在当前所编辑的文档中向前查找该字
+     符串。完成一次查找之后按 n 键则是重复上一次的命令,可在同一方向上查
+     找下一个字符串所在;或者按 Shift-N 向相反方向查找下该字符串所在。
+
+  3. 如果光标当前位置是括号(、)、[、]、{、},按 % 可以将光标移动到配对的
+     括号上。
+
+  4. 在一行内替换头一个字符串 old 为新的字符串 new,请输入  :s/old/new
+     在一行内替换所有的字符串 old 为新的字符串 new,请输入  :s/old/new/g
+     在两行内替换所有的字符串 old 为新的字符串 new,请输入  :#,#s/old/new/g
+     在文件内替换所有的字符串 old 为新的字符串 new,请输入  :%s/old/new/g
+     进行全文替换时询问用户确认每个替换需添加 c 选项,请输入 :%s/old/new/gc
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		第五讲第一节∶在 VIM 内执行外部命令的方法
+
+
+	   ** 输入 :! 然后紧随著输入一个外部命令可以执行该外部命令。**
+
+  1. 按下我们所熟悉的 : 命令设置光标到屏幕底部。这样就可以让您输入命令了。
+
+  2. 接着输入感叹号 ! 这个字符,这样就允许您执行外部的 shell 命令了。
+
+  3. 我们以 ls 命令为例。输入 !ls <回车> 。该命令就会列举出您当前目录的
+     内容,就如同您在命令行提示符下输入 ls 命令的结果一样。如果 !ls 没起
+     作用,您可以试试 :!dir 看看。
+
+---> 提示∶ 所有的外部命令都可以以这种方式执行。
+
+---> 提示∶ 所有的 : 命令都必须以 <回车> 告终。
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      第五讲第二节∶关于保存文件的更多信息
+
+
+	     ** 要将对文件的改动保存到文件中,请输入 :w FILENAME 。**
+
+  1. 输入 :!dir 或者 :!ls 获知当前目录的内容。您应当已知道最后还得敲
+     <回车> 吧。
+
+  2. 选择一个尚未存在文件名,比如 TEST 。
+
+  3. 接着输入 :w TEST  (此处 TEST 是您所选择的文件名。)
+
+  4. 该命令会以 TEST 为文件名保存整个文件 (VIM 教程)。为了确保正确保存,
+     请再次输入 :!dir 查看您的目录列表内容。
+
+---> 请注意∶如果您退出 VIM 然后在以文件名 TEST 为参数进入,那么该文件内
+     容应该同您保存时的文件内容是完全一样的。
+
+  5. 现在您可以通过输入 :!rm TEST 来删除 TEST 文件了。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    第五讲第三节∶一个具有选择性的保存命令
+
+
+		** 要保存文件的部分内容,请输入 :#,# w FILENAME **
+
+  1. 再来执行一次 :!dir 或者 :!ls 获知当前目录的内容,然后选择一个合适的
+     不重名的文件名,比如 TEST 。
+
+  2. 接着将光标移动至本页的最顶端,然后按 CTRL-g 找到该行的行号。别忘了
+     行号哦。
+
+  3. 接着把光标移动至本页的最底端,再按一次 CTRL-g 。也别忘了这个行好哦。
+
+  4. 为了只保存文章的某个部分,请输入 :#,# w TEST 。这里的 #,# 就是上面
+     要求您记住的行号(顶端行号,底端行号),而 TEST 就是选定的文件名。
+
+  5. 最后,用 :!dir 确认文件是否正确保存。但是这次先别删除掉。
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   第五讲第四节∶提取和合并文件
+
+
+       ** 要向当前文件中插入另外的文件的内容,请输入 :r FILENAME **
+
+  1. 请键入 :!dir 确认您前面创建的 TEST 文件还在。
+
+  2. 然后将光标移动至当前页面的顶端。
+
+特别提示∶ 执行步骤3之后您将看到第五讲第三节,请届时再往下移动回到这里来。
+
+  3. 接着通过 :r TEST 将前面创建的名为 TEST 的文件提取进来。
+
+特别提示∶您所提取进来的文件将从光标所在位置处开始置入。
+
+  4. 为了确认文件已经提取成功,移动光标回到原来的位置就可以注意有两份第
+     五讲第三节,一份是原本,另外一份是来自文件的副本。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       第五讲小结
+
+
+  1. :!command 用于执行一个外部命令 command。
+
+     请看一些实际例子∶
+	  :!dir  -  用于显示当前目录的内容。
+	  :!rm FILENAME  -	用于删除名为 FILENAME 的文件。
+
+  2. :w FILENAME  可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文
+     件中。
+
+  3. :#,#w FILENAME 可将当前编辑文件第 # 行至第 # 行的内容保存到文件
+     FILENAME 中。
+
+  4. :r FILENAME 可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置
+     后面。
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 第六讲第一节∶打开类命令
+
+
+	 ** 输入 o 将在光标的下方打开新的一行并进入插入模式。**
+
+  1. 请将光标移动到本节中下面标记有 ---> 的那一行。
+
+  2. 接着输入小写的 o 在光标 *下方* 打开新的一行并进入插入模式。
+
+  3. 然后复制标记有 ---> 的行并按 <ESC> 键退出插入模式而进入正常模式。
+
+---> After typing  o  the cursor is placed on the open line in Insert mode.
+
+  4. 为了在光标 *上方* 打开新的一行,只需要输入大写的 O 而不是小写的 o
+     就可以了。请在下行测试一下吧。当光标处在在该行上时,按 Shift-O可以
+     在该行上方新开一行。
+
+Open up a line above this by typing Shift-O while the cursor is on this line.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			第六讲第二节∶光标后插入类命令
+
+
+		     ** 输入 a 将可在光标之后插入文本。 **
+
+  1. 请在正常模式下通过输入 $ 将光标移动到本节中下面标记有 ---> 的第一行
+     的末尾。
+
+  2. 接着输入小写的 a 则可在光标之后插入文本了。大写的 A 则可以直接在行
+     末插入文本。
+
+提示∶输入大写 A 的操作方法可以在行末插入文本,避免了输入 i,光标定位到
+      最后一个字符,输入的文本,<ESC> 回复正常模式,箭头右键移动光标以及
+      x 删除当前光标所在位置字符等等诸多繁杂的操作。
+
+  3. 操作之后第一行就可以补充完整了。请注意光标后插入文本与插入模式是基
+     本完全一致的,只是文本插入的位置定位稍有不同罢了。
+
+---> This line will allow you to practice
+---> This line will allow you to practice appending text to the end of a line.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    第六讲第三节∶另外一个置换类命令的版本
+
+
+		      ** 输入大写的 R 可连续替换多个字符。**
+
+  1. 请将光标移动到本节中下面标记有 ---> 的第一行。
+
+  2. 移动光标到第一行中不同于标有 ---> 的第二行的第一个单词的开始,即单
+     词 last 处。
+
+  3. 然后输入大写的 R 开始把第一行中的不同于第二行的剩余字符逐一输入,就
+     可以全部替换掉原有的字符而使得第一行完全雷同第二行了。
+
+---> To make the first line the same as the last on this page use the keys.
+---> To make the first line the same as the second, type R and the new text.
+
+  4. 请注意∶如果您按 <ESC> 退出置换模式回复正常模式,尚未替换的文本将仍
+     然保持原状。
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    第六讲第四节∶设置类命令的选项
+
+
+		  ** 设置可使查找或者替换可忽略大小写的选项 **
+
+
+  1. 要查找单词 ignore 可在正常模式下输入 /ignore 。要重复查找该词,可以
+     重复按 n 键。
+
+  2. 然后设置 ic 选项(ic就是英文忽略大小写Ignore Case的首字母缩写词),即
+     输入∶
+	:set ic
+
+  3. 现在可以通过键入 n 键再次查找单词 ignore。重复查找可以重复键入 n 键。
+
+  4. 然后设置 hlsearch 和 incsearch 这两个选项,输入以下内容∶
+     :set hls is
+
+  5. 现在可以再次输入查找命令,看看会有什么效果∶
+     /ignore
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       第六讲小结
+
+
+  1. 输入小写的 o 可以在光标下方打开新的一行并将光标置于新开的行首,进入
+     插入模式。
+     输入大写的 O 可以在光标上方打开新的一行并将光标置于新开的行首,进入
+     插入模式。
+
+  2. 输入小写的 a 可以在光标所在位置之后插入文本。
+     输入大写的 A 可以在光标所在行的行末之后插入文本。
+
+  3. 输入大写的 R 将进入替换模式,直至按 <ESC> 键退出替换模式而进入正常
+     模式。
+
+  4. 输入 :set xxx 可以设置 xxx 选项。
+
+
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       第七讲∶在线帮助命令
+
+		      ** 使用在线帮助系统 **
+
+  Vim 拥有一个细致全面的在线帮助系统。要启动该帮助系统,请选择如下三种方
+  法之一∶
+	- 按下 <HELP> 键 (如果键盘上有的话)
+	- 按下 <F1> 键 (如果键盘上有的话)
+	- 输入	:help <回车>
+
+  输入 :q <回车> 可以关闭帮助窗口。
+
+  提供一个正确的参数给":help"命令,您可以找到关于该主题的帮助。请试验以
+  下参数(可别忘了按回车键哦。:)∶
+
+	  :help w <回车>
+	  :help c_<T <回车>
+	  :help insert-index <回车>
+	  :help user-manual <回车>
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       第八讲∶创建一个启动脚本
+
+			  ** 启用vim的功能 **
+
+  Vim的功能特性要比vi多得多,但大部分功能都没有缺省激活。为了启动更多的
+  功能,您得创建一个vimrc文件。
+
+  1. 开始编辑vimrc文件,这取决于您所使用的操作系统∶
+
+     :edit ~/.vimrc		这是Unix系统所使用的命令
+     :edit $VIM/_vimrc		这是Windows系统所使用的命令
+
+  2. 接着导入vimrc范例文件∶
+
+     :read $VIMRUNTIME/vimrc_example.vim
+
+  3. 保存文件,命令为∶
+
+     :write
+
+  在下次您启动vim的时候,编辑器就会有了语法高亮的功能。您可以继续把您喜
+  欢的其它功能设置添加到这个vimrc文件中。
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  vim 教程到此结束。本教程只是为了简明地介绍一下vim编辑器,但已足以让您
+  很容易学会使用本编辑器了。毋庸质疑,vim还有很多很多的命令,本教程所介
+  绍的还差得远著呢。所以您要精通的话,还望继续努力哦。下一步您可以阅读
+  vim手册,使用的命令是∶
+	:help user-manual
+
+  为了更进一步的参考和学习,以下这本书值得推荐∶
+
+	Vim - Vi Improved - 作者∶Steve Oualline
+	出版社∶New Riders
+
+  这是第一本完全讲解vim的书籍。对于初学者特别有用。其中还包含有大量实例
+  和图示。欲知详情,请访问 http://iccf-holland.org/click5.html
+
+  以下这本书比较老了而且内容主要是vi而不是vim,但是也值得推荐∶
+
+	Learning the Vi Editor - 作者∶Linda Lamb
+	出版社∶O'Reilly & Associates Inc.
+
+  这是一本不错的书,通过它您几乎能够了解到全部vi能够做到的事情。此书的第
+  六个版本也包含了一些关于vim的信息。
+
+  本教程是由来自Calorado School of Minese的Michael C. Pierce、Robert K.
+  Ware 所编写的,其中来自Colorado State University的Charles Smith提供了
+  很多创意。编者通信地址是∶
+
+	bware@mines.colorado.edu
+
+  本教程已由Bram Moolenaar专为vim进行修订。
+
+
+
+  译制者附言∶
+  ===========
+      简体中文教程翻译版之译制者为梁昌泰 <beos@turbolinux.com.cn>,还有
+      另外一个联系地址∶linuxrat@gnuchina.org。
+
+      繁体中文教程是从简体中文教程翻译版使用 Debian GNU/Linux 中文项目小
+      组的于广辉先生编写的中文汉字转码器  autoconvert 转换而成的,并对转
+      换的结果做了一些细节的改动。
+
+  变更记录∶
+  =========
+      2002年08月30日 梁昌泰 <beos@turbolinux.com.cn>
+      感谢 RMS@SMTH 的指正,将多处错误修正。
+
+      2002年04月22日 梁昌泰 <linuxrat@gnuchina.org>
+      感谢 xuandong@sh163.net 的指正,将两处错别字修正。
+
+      2002年03月18日 梁昌泰 <linuxrat@gnuchina.org>
+      根据Bram Molenaar先生在2002年03月16日的来信要求,将vimtutor1.4中译
+      版升级到vimtutor1.5。
+
+      2001年11月15日 梁昌泰 <linuxrat@gnuchina.org>
+      将vimtutor1.4中译版提交给Bram Molenaar和Sven Guckes。
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/tutor.zh_tw.utf-8
@@ -0,0 +1,852 @@
+===============================================================================
+=      歡     迎     閱     讀   《 V I M  教  程 》   ──     版本 1.5      =
+===============================================================================
+     vim 是一個具有很多命令的功能非常強大的編輯器。限于篇幅,在本教程當中
+     不就詳細介紹了。本教程的設計目標是講述一些必要的基本命令,而掌握好這
+     些命令,您就能夠很容易將vim當作一個通用的萬能編輯器來使用了。
+
+     完成本教程的內容大約需要25-30分鐘,取決于您訓練的時間。
+
+     每一節的命令操作將會更改本文。推薦您復制本文的一個副本,然後在副本上
+     進行訓練(如果您是通過"vimtutor"來啟動教程的,那麼本文就已經是副本了)。
+
+     切記一點︰本教程的設計思路是在使用中進行學習的。也就是說,您需要通過
+     執行命令來學習它們本身的正確用法。如果您只是閱讀而不操作,那麼您可能
+     會很快遺忘這些命令的!
+
+     好了,現在請確定您的Shift-Lock(大小寫鎖定鍵)還沒有按下,然後按鍵盤上
+     的字母鍵 j 足夠多的次數來移動光標,直到第一節的內容能夠完全充滿屏幕。
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			第一講第一節︰移動光標
+
+
+   ※※ 要移動光標,請依照說明分別按下 h、j、k、l 鍵。 ※※
+
+	     ^
+	     k		    提示︰ h 的鍵位于左邊,每次按下就會向左移動。
+       < h	 l >		   l 的鍵位于右邊,每次按下就會向右移動。
+	     j			   j 鍵看起來很象一支尖端方向朝下的箭頭。
+	     v
+
+  1. 請隨意在屏幕內移動光標,直至您覺得舒服為止。
+
+  2. 按下下行鍵(j),直到出現光標重復下行。
+
+---> 現在您應該已經學會如何移動到下一講吧。
+
+  3. 現在請使用下行鍵,將光標移動到第二講。
+
+提示︰如果您不敢確定您所按下的字母,請按下<ESC>鍵回到正常(Normal)模式。
+      然後再次從鍵盤輸入您想要的命令。
+
+提示︰光標鍵應當也能正常工作的。但是使用hjkl鍵,在習慣之後您就能夠快速
+      地在屏幕內四處移動光標了。
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			第一講第二節︰VIM的進入和退出
+
+
+  !! 特別提示︰敬請閱讀完整本一節的內容,然後才能執行以下所講解的命令。
+
+  1. 請按<ESC>鍵(這是為了確保您處在正常模式)。
+
+  2. 然後輸入︰			:q! <回車>
+
+---> 這種方式的退出編輯器絕不會保存您進入編輯器以來所做的改動。
+     如果您想保存更改再退出,請輸入︰
+				:wq  <回車>
+
+  3. 如果您看到了命令行提示符,請輸入能夠帶您回到本教程的命令,那就是︰
+
+		vimtutor <回車>
+
+     通常情況下您也可以用這種方式︰
+
+		vim tutor <回車>
+
+---> 這裡的 'vim' 表示進入vim編輯器,而 'tutor'則是您準備要編輯的文件。
+
+  4. 如果您自信已經牢牢記住了這些步驟的話,請從步驟1執行到步驟3退出,然
+     後再次進入編輯器。接著將光標移動到第一講第三節來繼續我們的教程講解。
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			第一講第三節︰文本編輯之刪除
+
+
+   ** 在正常(Normal)模式下,可以按下 x 鍵來刪除光標所在位置的字符。**
+
+  1. 請將光標移動到本節中下面標記有 ---> 的那一行。
+
+  2. 為了修正輸入錯誤,請將光標移至準備刪除的字符的位置處。
+
+  3. 然後按下 x 鍵將錯誤字符刪除掉。
+
+  4. 重復步驟2到步驟4,直到句子修正為止。
+
+---> The ccow jumpedd ovverr thhe mooon.
+
+  5. 好了,該行已經修正了,下一節內容是第一講第四節。
+
+特別提示︰在您瀏覽本教程時,不要強行記憶。記住一點︰在使用中學習。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     第一講第四節︰文本編輯之插入
+
+
+	 ** 在正常模式下,可以按下 i 鍵來插入文本。**
+
+  1. 請將光標移動到本節中下面標記有 ---> 的第一行。
+
+  2. 為了使得第一行內容雷同于第二行,請將光標移至文本第一個字符準備插入
+     的位置。
+
+  3. 然後按下 i 鍵,接著輸入必要的文本字符。
+
+  4. 所有文本都修正完畢,請按下 <ESC> 鍵返回正常模式。
+     重復步驟2至步驟4以便修正句子。
+
+---> There is text misng this .
+---> There is some text missing from this line.
+
+  5. 如果您對文本插入操作已經很滿意,請接著閱讀下面的小結。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       第一講小結
+
+
+  1. 光標在屏幕文本中的移動既可以用箭頭鍵,也可以使用 hjkl 字母鍵。
+	 h (左移)	j (下行)       k (上行)	    l (右移)
+
+  2. 欲進入vim編輯器(從命令行提示符),請輸入︰vim 文件名 <回車>
+
+  3. 欲退出vim編輯器,請輸入以下命令放棄所有修改︰
+
+	<ESC>   :q!	 <回車>
+
+     或者輸入以下命令保存所有修改︰
+
+	<ESC>   :wq	 <回車>
+
+  4. 在正常模式下刪除光標所在位置的字符,請按︰ x
+
+  5. 在正常模式下要在光標所在位置開始插入文本,請按︰
+
+	 i     輸入必要文本	<ESC>
+
+特別提示︰按下 <ESC> 鍵會帶您回到正常模式或者取消一個不期望或者部分完成
+的命令。
+
+好了,第一講到此結束。下面接下來繼續第二講的內容。
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			第二講第一節︰刪除類命令
+
+
+	    ** 輸入 dw 可以從光標處刪除至一個單字/單詞的末尾。**
+
+  1. 請按下 <ESC> 鍵確保您處于正常模式。
+
+  2. 請將光標移動到本節中下面標記有 ---> 的那一行。
+
+  3. 請將光標移至準備要刪除的單詞的開始。
+
+  4. 接著輸入 dw 刪除掉該單詞。
+
+  特別提示︰您所輸入的 dw 會在您輸入的同時出現在屏幕的最後一行。如果您輸
+  入有誤,請按下 <ESC> 鍵取消,然後重新再來。
+
+---> There are a some words fun that don't belong paper in this sentence.
+
+  5. 重復步驟3至步驟4,直至句子修正完畢。接著繼續第二講第二節內容。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      第二講第二節︰其他刪除類命令
+
+
+		   ** 輸入 d$ 從當前光標刪除到行末。**
+
+  1. 請按下 <ESC> 鍵確保您處于正常模式。
+
+  2. 請將光標移動到本節中下面標記有 ---> 的那一行。
+
+  3. 請將光標移動到該行的尾部(也就是在第一個點號‘.’後面)。
+
+  4. 然後輸入 d$ 從光標處刪至當前行尾部。
+
+---> Somebody typed the end of this line twice. end of this line twice.
+
+
+  5. 請繼續學習第二講第三節就知道是怎麼回事了。
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     第二講第三節︰關于命令和對象
+
+
+  刪除命令 d 的格式如下︰
+
+	 [number]   d	object	    或者     d	 [number]   object
+
+  其意如下︰
+    number - 代表執行命令的次數(可選項,缺省設置為 1 )。
+    d - 代表刪除。
+    object - 代表命令所要操作的對象(下面有相關介紹)。
+
+  一個簡短的對象列表︰
+    w - 從當前光標當前位置直到單字/單詞末尾,包括空格。
+    e - 從當前光標當前位置直到單字/單詞末尾,但是 *不* 包括空格。
+    $ - 從當前光標當前位置直到當前行末。
+
+特別提示︰
+    對于勇于探索者,請在正常模式下面僅按代表相應對象的鍵而不使用命令,則
+    將看到光標的移動正如上面的對象列表所代表的一樣。
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		第二講第四節︰對象命令的特殊情況
+
+
+	       ** 輸入 dd 可以刪除整一個當前行。 **
+
+  鑒于整行刪除的高頻度,VIM 的設計者決定要簡化整行刪除,僅需要在同一行上
+  擊打兩次 d 就可以刪除掉光標所在的整行了。
+
+  1. 請將光標移動到本節中下面的短句段落中的第二行。
+  2. 輸入 dd 刪除該行。
+  3. 然後移動到第四行。
+  4. 接著輸入 2dd (還記得前面講過的 number-command-object 嗎?) 刪除兩行。
+
+      1)  Roses are red,
+      2)  Mud is fun,
+      3)  Violets are blue,
+      4)  I have a car,
+      5)  Clocks tell time,
+      6)  Sugar is sweet
+      7)  And so are you.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 第二講第五節︰撤消類命令
+
+
+	 ** 輸入 u 來撤消最後執行的命令,輸入 U 來修正整行。**
+
+  1. 請將光標移動到本節中下面標記有 ---> 的那一行,並將其置于第一個錯誤
+     處。
+  2. 輸入 x 刪除第一個不想保留的字母。
+  3. 然後輸入 u 撤消最後執行的(一次)命令。
+  4. 這次要使用 x 修正本行的所有錯誤。
+  5. 現在輸入一個大寫的 U ,恢復到該行的原始狀態。
+  6. 接著多次輸入 u 以撤消 U 以及更前的命令。
+  7. 然後多次輸入 CTRL-R (先按下 CTRL 鍵不放開,接著輸入 R 鍵) ,這樣就
+     可以執行恢復命令,也就是撤消掉撤消命令。
+
+---> Fiix the errors oon thhis line and reeplace them witth undo.
+
+  8. 這些都是非常有用的命令。下面是第二講的小結了。
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       第二講小結
+
+
+  1. 欲從當前光標刪除至單字/單詞末尾,請輸入︰dw
+
+  2. 欲從當前光標刪除至當前行末尾,請輸入︰d$
+
+  3. 欲刪除整行,請輸入︰dd
+
+  4. 在正常模式下一個命令的格式是︰
+
+       [number]   command   object     或者     command	[number]   object
+     其意是︰
+       number - 代表的是命令執行的次數
+       command - 代表要做的事情,比如 d 代表刪除
+       object - 代表要操作的對象,比如 w 代表單字/單詞,$ 代表到行末等等。
+		$ (to the end of line), etc.
+
+  5. 欲撤消以前的操作,請輸入︰u (小寫的u)
+     欲撤消在一行中所做的改動,請輸入︰U (大寫的U)
+     欲撤消以前的撤消命令,恢復以前的操作結果,請輸入︰CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 第三講第一節︰置入類命令
+
+
+	       ** 輸入 p 將最後一次刪除的內容置入光標之後 **
+
+  1. 請將光標移動到本節中下面示范段落的首行。
+
+  2. 輸入 dd 將該行刪除,這樣會將該行保存到vim的緩沖區中。
+
+  3. 接著將光標移動到準備置入的位置的上方。記住︰是上方哦。
+
+  4. 然後在正常模式下(<ESC>鍵進入),輸入 p 將該行粘貼置入。
+
+  5. 重復步驟2至步驟4,將所有的行依序放置到正確的位置上。
+
+     d) Can you learn too?
+     b) Violets are blue,
+     c) Intelligence is learned,
+     a) Roses are red,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       第三講第二節︰替換類命令
+
+
+	  ** 輸入 r 和一個字符替換光標所在位置的字符。**
+
+  1. 請將光標移動到本節中下面標記有 ---> 的第一行。
+
+  2. 請移動光標到第一個錯誤的適當位置。
+
+  3. 接著輸入 r ,這樣就能將錯誤替換掉了。
+
+  4. 重復步驟2和步驟3,直到第一行已經修改完畢。
+
+--->  Whan this lime was tuoed in, someone presswd some wrojg keys!
+--->  When this line was typed in, someone pressed some wrong keys!
+
+  5. 然後我們繼續學校第三講第三節。
+
+特別提示︰切記您要在使用中學習,而不是在記憶中學習。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			第三講第三節︰更改類命令
+
+
+	   ** 要改變一個單字/單詞的部分或者全部,請輸入 cw **
+
+  1. 請將光標移動到本節中下面標記有 ---> 的第一行。
+
+  2. 接著把光標放在單詞 lubw 的字母 u 的位置那裡。
+
+  3. 然後輸入 cw 就可以修正該單詞了(在本例這裡是輸入 ine 。)
+
+  4. 最後按 <ESC> 鍵,然後光標定位到下一個錯誤第一個準備更改的字母處。
+
+  5. 重復步驟3和步驟4,直到第一個句子完全雷同第二個句子。
+
+---> This lubw has a few wptfd that mrrf changing usf the change command.
+---> This line has a few words that need changing using the change command.
+
+提示︰請注意 cw 命令不僅僅是替換了一個單詞,也讓您進入文本插入狀態了。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       第三講第四節︰使用c指令的其他更改類命令
+
+
+	     ** 更改類指令可以使用同刪除類命令所使用的對象參數。**
+
+  1. 更改類指令的工作方式跟刪除類命令是一致的。操作格式是︰
+
+       [number]   c   object	   或者	    c	[number]   object
+
+  2. 對象參數也是一樣的,比如 w 代表單字/單詞,$代表行末等等。
+
+  3. 請將光標移動到本節中下面標記有 ---> 的第一行。
+
+  4. 接著將光標移動到第一個錯誤處。
+
+  5. 然後輸入 c$ 使得該行剩下的部分更正得同第二行一樣。最後按 <ESC> 鍵。
+
+---> The end of this line needs some help to make it like the second.
+---> The end of this line needs to be corrected using the  c$  command.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       第三講小結
+
+
+  1. 要重新置入已經刪除的文本內容,請輸入小寫字母 p。該操作可以將已刪除
+     的文本內容置于光標之後。如果最後一次刪除的是一個整行,那麼該行將置
+     于當前光標所在行的下一行。
+
+  2. 要替換光標所在位置的字符,請輸入小寫的 r 和要替換掉原位置字符的新字
+     符即可。
+
+  3. 更改類命令允許您改變指定的對象,從當前光標所在位置直到對象的末尾。
+     比如輸入 cw 可以替換當前光標到單詞的末尾的內容;輸入 c$ 可以替換當
+     前光標到行末的內容。
+
+  4. 更改類命令的格式是︰
+
+	 [number]   c	object	      或者	c   [number]   object
+
+下面我們繼續學習下一講。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     第四講第一節︰定位及文件狀態
+
+
+  ** 輸入 CTRL-g 顯示當前編輯文件中當前光標所在行位置以及文件狀態信息。
+     輸入 SHIFT-G 則直接跳轉到文件中的某一指定行。**
+
+  提示︰切記要先通讀本節內容,之後才可以執行以下步驟!!!
+
+  1. 按下 CTRL 鍵不放開然後按 g 鍵。然後就會看到頁面最底部出現一個狀態信
+     息行,顯示的內容是當前編輯的文件名和文件的總行數。請記住步驟3的行號。
+
+  2. 按下 SHIFT-G 鍵可以使得當前光標直接跳轉到文件最後一行。
+
+  3. 輸入您曾停留的行號,然後按下 SHIFT-G。這樣就可以返回到您第一次按下
+     CTRL-g 時所在的行好了。注意︰輸入行號時,行號是不會在屏幕上顯示出來
+     的。
+
+  4. 如果願意,您可以繼續執行步驟1至步驟三。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			第四講第二節︰搜索類命令
+
+
+     ** 輸入 / 以及尾隨的字符串可以用以在當前文件中查找該字符串。**
+
+  1. 在正常模式下輸入 / 字符。您此時會注意到該字符和光標都會出現在屏幕底
+     部,這跟 : 命令是一樣的。
+
+  2. 接著輸入 errroor <回車>。那個errroor就是您要查找的字符串。
+
+  3. 要查找同上一次的字符串,只需要按 n 鍵。要向相反方向查找同上一次的字
+     符串,請輸入 Shift-N 即可。
+
+  4. 如果您想逆向查找字符串,請使用 ? 代替 / 進行。
+
+---> When the search reaches the end of the file it will continue at the start.
+
+  "errroor" is not the way to spell error;  errroor is an error.
+
+  提示︰如果查找已經到達文件末尾,查找會自動從文件頭部繼續查找。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   第四講第三節︰配對括號的查找
+
+
+	      ** 按 % 可以查找配對的括號 )、]、}。**
+
+  1. 把光標放在本節下面標記有 --> 那一行中的任何一個 (、[ 或 { 處。
+
+  2. 接著按 % 字符。
+
+  3. 此時光標的位置應當是在配對的括號處。
+
+  4. 再次按 % 就可以跳回配對的第一個括號處。
+
+---> This ( is a test line with ('s, ['s ] and {'s } in it. ))
+
+提示︰在程序調試時,這個功能用來查找不配對的括號是很有用的。
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      第四講第四節︰修正錯誤的方法之一
+
+
+		** 輸入 :s/old/new/g 可以替換 old 為 new。**
+
+  1. 請將光標移動到本節中下面標記有 ---> 的那一行。
+
+  2. 輸入 :s/thee/the <回車> 。請注意該命令只改變光標所在行的第一個匹配
+     串。
+
+  3. 輸入 :s/thee/the/g	則是替換全行的匹配串。
+
+---> the best time to see thee flowers is in thee spring.
+
+  4. 要替換兩行之間出現的每個匹配串,請輸入 :#,#s/old/new/g (#,#代表的是
+     兩行的行號)。輸入 :%s/old/new/g 則是替換整個文件中的每個匹配串。
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       第四講小結
+
+
+  1. Ctrl-g 用于顯示當前光標所在位置和文件狀態信息。Shift-G 用于將光標跳
+     轉至文件最後一行。先敲入一個行號然後按 Shift-G 則是將光標移動至該行
+     號代表的行。
+
+  2. 輸入 / 然後緊隨一個字符串是則是在當前所編輯的文檔中向後查找該字符串。
+     輸入問號 ? 然後緊隨一個字符串是則是在當前所編輯的文檔中向前查找該字
+     符串。完成一次查找之後按 n 鍵則是重復上一次的命令,可在同一方向上查
+     找下一個字符串所在;或者按 Shift-N 向相反方向查找下該字符串所在。
+
+  3. 如果光標當前位置是括號(、)、[、]、{、},按 % 可以將光標移動到配對的
+     括號上。
+
+  4. 在一行內替換頭一個字符串 old 為新的字符串 new,請輸入  :s/old/new
+     在一行內替換所有的字符串 old 為新的字符串 new,請輸入  :s/old/new/g
+     在兩行內替換所有的字符串 old 為新的字符串 new,請輸入  :#,#s/old/new/g
+     在文件內替換所有的字符串 old 為新的字符串 new,請輸入  :%s/old/new/g
+     進行全文替換時詢問用戶確認每個替換需添加 c 選項,請輸入 :%s/old/new/gc
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		第五講第一節︰在 VIM 內執行外部命令的方法
+
+
+	   ** 輸入 :! 然後緊隨著輸入一個外部命令可以執行該外部命令。**
+
+  1. 按下我們所熟悉的 : 命令設置光標到屏幕底部。這樣就可以讓您輸入命令了。
+
+  2. 接著輸入感嘆號 ! 這個字符,這樣就允許您執行外部的 shell 命令了。
+
+  3. 我們以 ls 命令為例。輸入 !ls <回車> 。該命令就會列舉出您當前目錄的
+     內容,就如同您在命令行提示符下輸入 ls 命令的結果一樣。如果 !ls 沒起
+     作用,您可以試試 :!dir 看看。
+
+---> 提示︰ 所有的外部命令都可以以這種方式執行。
+
+---> 提示︰ 所有的 : 命令都必須以 <回車> 告終。
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      第五講第二節︰關于保存文件的更多信息
+
+
+	     ** 要將對文件的改動保存到文件中,請輸入 :w FILENAME **
+
+  1. 輸入 :!dir 或者 :!ls 獲知當前目錄的內容。您應當已知道最後還得敲
+     <回車> 吧。
+
+  2. 選擇一個尚未存在文件名,比如 TEST 。
+
+  3. 接著輸入 :w TEST  (此處 TEST 是您所選擇的文件名。)
+
+  4. 該命令會以 TEST 為文件名保存整個文件 (VIM 教程)。為了確保正確保存,
+     請再次輸入 :!dir 查看您的目錄列表內容。
+
+---> 請注意︰如果您退出 VIM 然後在以文件名 TEST 為參數進入,那麼該文件內
+     容應該同您保存時的文件內容是完全一樣的。
+
+  5. 現在您可以通過輸入 :!rm TEST 來刪除 TEST 文件了。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    第五講第三節︰一個具有選擇性的保存命令
+
+
+		** 要保存文件的部分內容,請輸入 :#,# w FILENAME **
+
+  1. 再來執行一次 :!dir 或者 :!ls 獲知當前目錄的內容,然後選擇一個合適的
+     不重名的文件名,比如 TEST 。
+
+  2. 接著將光標移動至本頁的最頂端,然後按 CTRL-g 找到該行的行號。別忘了
+     行號哦。
+
+  3. 接著把光標移動至本頁的最底端,再按一次 CTRL-g 。也別忘了這個行好哦。
+
+  4. 為了只保存文章的某個部分,請輸入 :#,# w TEST 。這裡的 #,# 就是上面
+     要求您記住的行號(頂端行號,底端行號),而 TEST 就是選定的文件名。
+
+  5. 最後,用 :!dir 確認文件是否正確保存。但是這次先別刪除掉。
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   第五講第四節︰提取和合並文件
+
+
+       ** 要向當前文件中插入另外的文件的內容,請輸入 :r FILENAME **
+
+  1. 請鍵入 :!dir 確認您前面創建的 TEST 文件還在。
+
+  2. 然後將光標移動至當前頁面的頂端。
+
+特別提示︰ 執行步驟3之後您將看到第五講第三節,請屆時再往下移動回到這裡來。
+
+  3. 接著通過 :r TEST 將前面創建的名為 TEST 的文件提取進來。
+
+特別提示︰您所提取進來的文件將從光標所在位置處開始置入。
+
+  4. 為了確認文件已經提取成功,移動光標回到原來的位置就可以注意有兩份第
+     五講第三節,一份是原本,另外一份是來自文件的副本。
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       第五講小結
+
+
+  1. :!command 用于執行一個外部命令 command。
+
+     請看一些實際例子︰
+	 :!dir		-  用于顯示當前目錄的內容。
+	 :!rm FILENAME	-  用于刪除名為 FILENAME 的文件。
+
+  2. :w FILENAME  可將當前 VIM 中正在編輯的文件保存到名為 FILENAME
+     的文件中。
+
+  3. :#,#w FILENAME 可將當前編輯文件第 # 行至第 # 行的內容保存到文件
+     FILENAME 中。
+
+  4. :r FILENAME 可提取磁盤文件 FILENAME 並將其插入到當前文件的光標位置
+     後面。
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 第六講第一節︰打開類命令
+
+
+	 ** 輸入 o 將在光標的下方打開新的一行並進入插入模式。**
+
+  1. 請將光標移動到本節中下面標記有 ---> 的那一行。
+
+  2. 接著輸入小寫的 o 在光標 *下方* 打開新的一行並進入插入模式。
+
+  3. 然後復制標記有 ---> 的行並按 <ESC> 鍵退出插入模式而進入正常模式。
+
+---> After typing  o  the cursor is placed on the open line in Insert mode.
+
+  4. 為了在光標 *上方* 打開新的一行,只需要輸入大寫的 O 而不是小寫的 o
+     就可以了。請在下行測試一下吧。當光標處在在該行上時,按 Shift-O可以
+     在該行上方新開一行。
+
+Open up a line above this by typing Shift-O while the cursor is on this line.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			第六講第二節︰光標後插入類命令
+
+
+		     ** 輸入 a 將可在光標之後插入文本。 **
+
+  1. 請在正常模式下通過輸入 $ 將光標移動到本節中下面標記有 ---> 的第一行
+     的末尾。
+
+  2. 接著輸入小寫的 a 則可在光標之後插入文本了。大寫的 A 則可以直接在行
+     末插入文本。
+
+提示︰輸入大寫 A 的操作方法可以在行末插入文本,避免了輸入 i,光標定位到
+      最後一個字符,輸入的文本,<ESC> 回復正常模式,箭頭右鍵移動光標以及
+      x 刪除當前光標所在位置字符等等諸多繁雜的操作。
+
+  3. 操作之後第一行就可以補充完整了。請注意光標後插入文本與插入模式是基
+     本完全一致的,只是文本插入的位置定位稍有不同罷了。
+
+---> This line will allow you to practice
+---> This line will allow you to practice appending text to the end of a line.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    第六講第三節︰另外一個置換類命令的版本
+
+
+		      ** 輸入大寫的 R 可連續替換多個字符。**
+
+  1. 請將光標移動到本節中下面標記有 ---> 的第一行。
+
+  2. 移動光標到第一行中不同于標有 ---> 的第二行的第一個單詞的開始,即單
+     詞 last 處。
+
+  3. 然後輸入大寫的 R 開始把第一行中的不同于第二行的剩余字符逐一輸入,就
+     可以全部替換掉原有的字符而使得第一行完全雷同第二行了。
+
+---> To make the first line the same as the last on this page use the keys.
+---> To make the first line the same as the second, type R and the new text.
+
+  4. 請注意︰如果您按 <ESC> 退出置換模式回復正常模式,尚未替換的文本將仍
+     然保持原狀。
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    第六講第四節︰設置類命令的選項
+
+
+		  ** 設置可使查找或者替換可忽略大小寫的選項 **
+
+
+  1. 要查找單詞 ignore 可在正常模式下輸入 /ignore 。要重復查找該詞,可以
+     重復按 n 鍵。
+
+  2. 然後設置 ic 選項(ic就是英文忽略大小寫Ignore Case的首字母縮寫詞),即
+     輸入︰
+	:set ic
+
+  3. 現在可以通過鍵入 n 鍵再次查找單詞 ignore。重復查找可以重復鍵入 n 鍵。
+
+  4. 然後設置 hlsearch 和 incsearch 這兩個選項,輸入以下內容︰
+     :set hls is
+
+  5. 現在可以再次輸入查找命令,看看會有什麼效果︰
+     /ignore
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       第六講小結
+
+
+  1. 輸入小寫的 o 可以在光標下方打開新的一行並將光標置于新開的行首,進入
+     插入模式。
+     輸入大寫的 O 可以在光標上方打開新的一行並將光標置于新開的行首,進入
+     插入模式。
+
+  2. 輸入小寫的 a 可以在光標所在位置之後插入文本。
+     輸入大寫的 A 可以在光標所在行的行末之後插入文本。
+
+  3. 輸入大寫的 R 將進入替換模式,直至按 <ESC> 鍵退出替換模式而進入正常
+     模式。
+
+  4. 輸入 :set xxx 可以設置 xxx 選項。
+
+
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       第七講︰在線幫助命令
+
+		      ** 使用在線幫助系統 **
+
+  Vim 擁有一個細致全面的在線幫助系統。要啟動該幫助系統,請選擇如下三種方
+  法之一︰
+	- 按下 <HELP> 鍵 (如果鍵盤上有的話)
+	- 按下 <F1> 鍵 (如果鍵盤上有的話)
+	- 輸入	:help <回車>
+
+  輸入 :q <回車> 可以關閉幫助窗口。
+
+  提供一個正確的參數給":help"命令,您可以找到關于該主題的幫助。請試驗以
+  下參數(可別忘了按回車鍵哦。:)︰
+
+	  :help w <回車>
+	  :help c_<T <回車>
+	  :help insert-index <回車>
+	  :help user-manual <回車>
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      第八講︰創建一個啟動腳本
+
+			 ** 啟用vim的功能 **
+
+  Vim的功能特性要比vi多得多,但大部分功能都沒有缺省激活。為了啟動更多的
+  功能,您得創建一個vimrc文件。
+
+  1. 開始編輯vimrc文件,這取決于您所使用的操作系統︰
+
+     :edit ~/.vimrc		這是Unix系統所使用的命令
+     :edit $VIM/_vimrc		這是Windows系統所使用的命令
+
+  2. 接著導入vimrc范例文件︰
+
+     :read $VIMRUNTIME/vimrc_example.vim
+
+  3. 保存文件,命令為︰
+
+     :write
+
+  在下次您啟動vim的時候,編輯器就會有了語法高亮的功能。您可以繼續把您喜
+  歡的其它功能設置添加到這個vimrc文件中。
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  vim 教程到此結束。本教程只是為了簡明地介紹一下vim編輯器,但已足以讓您
+  很容易學會使用本編輯器了。毋庸質疑,vim還有很多很多的命令,本教程所介
+  紹的還差得遠著呢。所以您要精通的話,還望繼續努力哦。下一步您可以閱讀
+  vim手冊,使用的命令是︰
+	:help user-manual
+
+  為了更進一步的參考和學習,以下這本書值得推薦︰
+
+	Vim - Vi Improved - 作者︰Steve Oualline
+	出版社︰New Riders
+
+  這是第一本完全講解vim的書籍。對于初學者特別有用。其中還包含有大量實例
+  和圖示。欲知詳情,請訪問 http://iccf-holland.org/click5.html
+
+  以下這本書比較老了而且內容主要是vi而不是vim,但是也值得推薦︰
+
+	Learning the Vi Editor - 作者︰Linda Lamb
+	出版社︰O'Reilly & Associates Inc.
+
+  這是一本不錯的書,通過它您幾乎能夠了解到全部vi能夠做到的事情。此書的第
+  六個版本也包含了一些關于vim的信息。
+
+  本教程是由來自Calorado School of Minese的Michael C. Pierce、Robert K.
+  Ware 所編寫的,其中來自Colorado State University的Charles Smith提供了
+  很多創意。編者通信地址是︰
+
+	bware@mines.colorado.edu
+
+  本教程已由Bram Moolenaar專為vim進行修訂。
+
+
+
+  譯制者附言︰
+  ===========
+      簡體中文教程翻譯版之譯制者為梁昌泰 <beos@turbolinux.com.cn>,還有
+      另外一個聯系地址︰linuxrat@gnuchina.org。
+
+      繁體中文教程是從簡體中文教程翻譯版使用 Debian GNU/Linux 中文項目小
+      組的于廣輝先生編寫的中文漢字轉碼器  autoconvert 轉換而成的,並對轉
+      換的結果做了一些細節的改動。
+
+  變更記錄︰
+  =========
+      2002年08月30日 梁昌泰 <beos@turbolinux.com.cn>
+      感謝 RMS@SMTH 的指正,將多處錯誤修正。
+
+      2002年04月22日 梁昌泰 <linuxrat@gnuchina.org>
+      感謝 xuandong@sh163.net 的指正,將兩處錯別字修正。
+
+      2002年03月18日 梁昌泰 <linuxrat@gnuchina.org>
+      根據Bram Molenaar先生在2002年03月16日的來信要求,將vimtutor1.4中譯
+      版升級到vimtutor1.5。
+
+      2001年11月15日 梁昌泰 <linuxrat@gnuchina.org>
+      將vimtutor1.4中譯版提交給Bram Molenaar和Sven Guckes。
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~