changeset 2034:7bc41231fbc7

Update runtime files.
author Bram Moolenaar <bram@zimbu.org>
date Wed, 06 Jan 2010 20:54:52 +0100
parents de5a43c5eedc
children ca7d02cd5e49
files runtime/autoload/ada.vim runtime/autoload/adacomplete.vim runtime/autoload/decada.vim runtime/autoload/getscript.vim runtime/autoload/gnat.vim runtime/autoload/netrw.vim runtime/autoload/netrwFileHandlers.vim runtime/autoload/netrwSettings.vim runtime/autoload/rubycomplete.vim runtime/autoload/spellfile.vim runtime/autoload/sqlcomplete.vim runtime/autoload/tar.vim runtime/autoload/vimball.vim runtime/colors/desert.vim runtime/compiler/decada.vim runtime/compiler/eruby.vim runtime/compiler/fortran_g77.vim runtime/compiler/gcc.vim runtime/compiler/gnat.vim runtime/compiler/jikes.vim runtime/compiler/rspec.vim runtime/compiler/ruby.vim runtime/compiler/rubyunit.vim runtime/compiler/splint.vim runtime/filetype.vim runtime/ftplugin/abaqus.vim runtime/ftplugin/ada.vim runtime/ftplugin/ant.vim runtime/ftplugin/aspvbs.vim runtime/ftplugin/bst.vim runtime/ftplugin/changelog.vim runtime/ftplugin/cobol.vim runtime/ftplugin/config.vim runtime/ftplugin/csc.vim runtime/ftplugin/csh.vim runtime/ftplugin/dosbatch.vim runtime/ftplugin/dtd.vim runtime/ftplugin/eruby.vim runtime/ftplugin/git.vim runtime/ftplugin/gitcommit.vim runtime/ftplugin/gitconfig.vim runtime/ftplugin/gitrebase.vim runtime/ftplugin/gitsendemail.vim runtime/ftplugin/html.vim runtime/ftplugin/java.vim runtime/ftplugin/jsp.vim runtime/ftplugin/mail.vim runtime/ftplugin/man.vim runtime/ftplugin/pascal.vim runtime/ftplugin/perl.vim runtime/ftplugin/php.vim runtime/ftplugin/ruby.vim runtime/ftplugin/sgml.vim runtime/ftplugin/sh.vim runtime/ftplugin/sql.vim runtime/ftplugin/svg.vim runtime/ftplugin/tcl.vim runtime/ftplugin/tcsh.vim runtime/ftplugin/verilog.vim runtime/ftplugin/vim.vim runtime/ftplugin/xhtml.vim runtime/ftplugin/xml.vim runtime/ftplugin/xsd.vim runtime/ftplugin/xslt.vim runtime/indent/ada.vim runtime/indent/bst.vim runtime/indent/cmake.vim runtime/indent/cobol.vim runtime/indent/cpp.vim runtime/indent/cuda.vim runtime/indent/eiffel.vim runtime/indent/eruby.vim runtime/indent/gitconfig.vim runtime/indent/mail.vim runtime/indent/php.vim runtime/indent/ruby.vim runtime/indent/sh.vim runtime/indent/xml.vim runtime/keymap/dvorak.vim runtime/lang/menu_cs_cz.iso_8859-2.vim runtime/lang/menu_czech_czech_republic.1250.vim runtime/lang/menu_czech_czech_republic.ascii.vim runtime/lang/menu_es_es.latin1.vim runtime/lang/menu_ko_kr.euckr.vim runtime/lang/menu_ko_kr.utf-8.vim runtime/lang/menu_ko_kr.vim runtime/lang/menu_ru_ru.koi8-r.vim runtime/lang/menu_ru_ru.vim runtime/macros/matchit.vim runtime/menu.vim runtime/plugin/getscriptPlugin.vim runtime/plugin/gzip.vim runtime/plugin/matchparen.vim runtime/plugin/netrwPlugin.vim runtime/plugin/tarPlugin.vim runtime/plugin/vimballPlugin.vim runtime/scripts.vim runtime/spell/README.txt runtime/spell/fixdup.vim runtime/syntax/2html.vim runtime/syntax/ada.vim runtime/syntax/ant.vim runtime/syntax/aspvbs.vim runtime/syntax/bindzone.vim runtime/syntax/bst.vim runtime/syntax/bzr.vim runtime/syntax/c.vim runtime/syntax/catalog.vim runtime/syntax/cl.vim runtime/syntax/cmake.vim runtime/syntax/cobol.vim runtime/syntax/config.vim runtime/syntax/cs.vim runtime/syntax/debchangelog.vim runtime/syntax/debcontrol.vim runtime/syntax/debsources.vim runtime/syntax/def.vim runtime/syntax/django.vim runtime/syntax/docbk.vim runtime/syntax/dosbatch.vim runtime/syntax/doxygen.vim runtime/syntax/dsl.vim runtime/syntax/elf.vim runtime/syntax/erlang.vim runtime/syntax/eruby.vim runtime/syntax/focexec.vim runtime/syntax/form.vim runtime/syntax/forth.vim runtime/syntax/fortran.vim runtime/syntax/fstab.vim runtime/syntax/gdb.vim runtime/syntax/git.vim runtime/syntax/gitcommit.vim runtime/syntax/gitconfig.vim runtime/syntax/gitrebase.vim runtime/syntax/groovy.vim runtime/syntax/haskell.vim runtime/syntax/help.vim runtime/syntax/hog.vim runtime/syntax/initng.vim runtime/syntax/java.vim runtime/syntax/kconfig.vim runtime/syntax/kscript.vim runtime/syntax/lex.vim runtime/syntax/lhaskell.vim runtime/syntax/lilo.vim runtime/syntax/lisp.vim runtime/syntax/logtalk.vim runtime/syntax/lout.vim runtime/syntax/mail.vim runtime/syntax/man.vim runtime/syntax/masm.vim runtime/syntax/master.vim runtime/syntax/matlab.vim runtime/syntax/maxima.vim runtime/syntax/mgl.vim runtime/syntax/mma.vim runtime/syntax/mysql.vim runtime/syntax/ncf.vim runtime/syntax/netrc.vim runtime/syntax/netrw.vim runtime/syntax/opl.vim runtime/syntax/papp.vim runtime/syntax/po.vim runtime/syntax/progress.vim runtime/syntax/prolog.vim runtime/syntax/pyrex.vim runtime/syntax/python.vim runtime/syntax/rcs.vim runtime/syntax/readline.vim runtime/syntax/remind.vim runtime/syntax/rhelp.vim runtime/syntax/rnoweb.vim runtime/syntax/rst.vim runtime/syntax/ruby.vim runtime/syntax/samba.vim runtime/syntax/scheme.vim runtime/syntax/sdc.vim runtime/syntax/sgml.vim runtime/syntax/sgmllnx.vim runtime/syntax/sh.vim runtime/syntax/sisu.vim runtime/syntax/spec.vim runtime/syntax/splint.vim runtime/syntax/spyce.vim runtime/syntax/sqlanywhere.vim runtime/syntax/sshconfig.vim runtime/syntax/sshdconfig.vim runtime/syntax/svn.vim runtime/syntax/tads.vim runtime/syntax/taskdata.vim runtime/syntax/taskedit.vim runtime/syntax/tcl.vim runtime/syntax/tcsh.vim runtime/syntax/tex.vim runtime/syntax/tilde.vim runtime/syntax/uil.vim runtime/syntax/updatedb.vim runtime/syntax/vhdl.vim runtime/syntax/vim.vim runtime/syntax/xdefaults.vim runtime/syntax/xml.vim runtime/syntax/xquery.vim runtime/syntax/xsd.vim runtime/syntax/xslt.vim runtime/syntax/yacc.vim runtime/tutor/Makefile runtime/tutor/tutor.bj runtime/tutor/tutor.bj.utf-8 runtime/tutor/tutor.eo runtime/tutor/tutor.eo.utf-8 runtime/tutor/tutor.es runtime/tutor/tutor.es.utf-8 runtime/tutor/tutor.fr runtime/tutor/tutor.fr.utf-8 runtime/tutor/tutor.hu runtime/tutor/tutor.hu.cp1250 runtime/tutor/tutor.hu.utf-8 runtime/tutor/tutor.ja.euc runtime/tutor/tutor.ja.sjis runtime/tutor/tutor.ja.utf-8 runtime/tutor/tutor.nb runtime/tutor/tutor.nb.utf-8 runtime/tutor/tutor.pl runtime/tutor/tutor.pl.cp1250 runtime/tutor/tutor.pl.utf-8 runtime/vimrc_example.vim
diffstat 227 files changed, 11385 insertions(+), 4029 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/autoload/ada.vim
+++ b/runtime/autoload/ada.vim
@@ -1,15 +1,15 @@
 "------------------------------------------------------------------------------
 "  Description: Perform Ada specific completion & tagging.
 "     Language: Ada (2005)
-"	   $Id$
+"	   $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $
 "   Maintainer: Martin Krischik <krischik@users.sourceforge.net>
 "		Taylor Venable <taylor@metasyntax.net>
 "		Neil Bird <neil@fnxweb.com>
 "		Ned Okie <nokie@radford.edu>
-"      $Author$
-"	 $Date$
+"      $Author: krischik $
+"	 $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
 "      Version: 4.6
-"    $Revision$
+"    $Revision: 887 $
 "     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/ada.vim $
 "      History: 24.05.2006 MK Unified Headers
 "		26.05.2006 MK ' should not be in iskeyword.
--- a/runtime/autoload/adacomplete.vim
+++ b/runtime/autoload/adacomplete.vim
@@ -1,12 +1,12 @@
 "------------------------------------------------------------------------------
 "  Description: Vim Ada omnicompletion file
 "     Language:	Ada (2005)
-"	   $Id$
+"	   $Id: adacomplete.vim 887 2008-07-08 14:29:01Z krischik $
 "   Maintainer:	Martin Krischik
-"      $Author$
-"	 $Date$
+"      $Author: krischik $
+"	 $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
 "      Version: 4.6
-"    $Revision$
+"    $Revision: 887 $
 "     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $
 "      History: 24.05.2006 MK Unified Headers
 "		26.05.2006 MK improved search for begin of word.
--- a/runtime/autoload/decada.vim
+++ b/runtime/autoload/decada.vim
@@ -1,13 +1,13 @@
 "------------------------------------------------------------------------------
 "  Description: Vim Ada/Dec Ada compiler file
 "     Language: Ada (Dec Ada)
-"          $Id$
+"          $Id: decada.vim 887 2008-07-08 14:29:01Z krischik $
 "    Copyright: Copyright (C) 2006 Martin Krischik
 "   Maintainer:	Martin Krischik <krischik@users.sourceforge.net>
-"      $Author$
-"        $Date$
+"      $Author: krischik $
+"        $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
 "      Version: 4.6      
-"    $Revision$
+"    $Revision: 887 $
 "     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/decada.vim $
 "      History: 21.07.2006 MK New Dec Ada
 "               15.10.2006 MK Bram's suggestion for runtime integration
--- a/runtime/autoload/getscript.vim
+++ b/runtime/autoload/getscript.vim
@@ -1,8 +1,8 @@
 " ---------------------------------------------------------------------
 " getscript.vim
 "  Author:	Charles E. Campbell, Jr.
-"  Date:	Jul 10, 2008
-"  Version:	31
+"  Date:	Dec 28, 2009
+"  Version:	32
 "  Installing:	:help glvs-install
 "  Usage:	:help glvs
 "
@@ -12,19 +12,24 @@
 " Initialization:	{{{1
 " if you're sourcing this file, surely you can't be
 " expecting vim to be in its vi-compatible mode!
+if exists("g:loaded_getscript")
+ finish
+endif
+let g:loaded_getscript= "v32"
 if &cp
  echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)"
  finish
 endif
+if v:version < 702
+ echohl WarningMsg
+ echo "***warning*** this version of getscript needs vim 7.2"
+ echohl Normal
+ finish
+endif
 let s:keepcpo = &cpo
 set cpo&vim
 "DechoTabOn
 
-if exists("g:loaded_getscript")
- finish
-endif
-let g:loaded_getscript= "v31"
-
 " ---------------------------
 " Global Variables: {{{1
 " ---------------------------
@@ -40,25 +45,6 @@ if !exists("g:getscript_cygwin")
   let g:getscript_cygwin= 0
  endif
 endif
-" shell quoting character {{{2
-if exists("g:netrw_shq") && !exists("g:getscript_shq")
- let g:getscript_shq= g:netrw_shq
-elseif !exists("g:getscript_shq")
- if exists("&shq") && &shq != ""
-  let g:getscript_shq= &shq
- elseif exists("&sxq") && &sxq != ""
-  let g:getscript_shq= &sxq
- elseif has("win32") || has("win95") || has("win64") || has("win16")
-  if g:getscript_cygwin
-   let g:getscript_shq= "'"
-  else
-   let g:getscript_shq= '"'
-  endif
- else
-  let g:getscript_shq= "'"
- endif
-" call Decho("g:getscript_shq<".g:getscript_shq.">")
-endif
 
 " wget vs curl {{{2
 if !exists("g:GetLatestVimScripts_wget")
@@ -112,7 +98,9 @@ if g:GetLatestVimScripts_allowautoinstal
   endif
  endif
 
- if exists('$HOME') && isdirectory(expand("$HOME")."/".s:dotvim)
+ if exists("g:GetLatestVimScripts_autoinstalldir") && isdirectory(g:GetLatestVimScripts_autoinstalldir)
+  let s:autoinstall= g:GetLatestVimScripts_autoinstalldir"
+ elseif exists('$HOME') && isdirectory(expand("$HOME")."/".s:dotvim)
   let s:autoinstall= $HOME."/".s:dotvim
  endif
 " call Decho("s:autoinstall<".s:autoinstall.">")
@@ -165,7 +153,6 @@ fun! getscript#GetLatestVimScripts()
 "   call Dret("GetLatestVimScripts : unable to find a GetLatest subdirectory")
    return
   endif
-
   if filewritable(datadir) != 2
    echoerr "(getLatestVimScripts) Your ".datadir." isn't writable"
 "   call Dret("GetLatestVimScripts : non-writable directory<".datadir.">")
@@ -182,21 +169,29 @@ fun! getscript#GetLatestVimScripts()
 "   call Dret("GetLatestVimScripts : non-writable datafile<".datafile.">")
    return
   endif
+  " --------------------
+  " Passed sanity checks
+  " --------------------
+
 "  call Decho("datadir  <".datadir.">")
 "  call Decho("datafile <".datafile.">")
 
-  " don't let any events interfere (like winmanager's, taglist's, etc)
-  let eikeep= &ei
-  let hlskeep= &hls
-  set ei=all hls&vim
+  " don't let any event handlers interfere (like winmanager's, taglist's, etc)
+  let eikeep  = &ei
+  let hlskeep = &hls
+  let acdkeep = &acd
+  set ei=all hls&vim noacd
 
-  " record current directory, change to datadir, open split window with
-  " datafile
+  " Edit the datafile (ie. GetLatestVimScripts.dat):
+  " 1. record current directory (origdir),
+  " 2. change directory to datadir,
+  " 3. split window
+  " 4. edit datafile
   let origdir= getcwd()
 "  call Decho("exe cd ".fnameescape(substitute(datadir,'\','/','ge')))
   exe "cd ".fnameescape(substitute(datadir,'\','/','ge'))
   split
-"  call Decho("exe e ".fnameescape(substitute(datafile,'\','/','ge')))
+"  call Decho("exe  e ".fnameescape(substitute(datafile,'\','/','ge')))
   exe "e ".fnameescape(substitute(datafile,'\','/','ge'))
   res 1000
   let s:downloads = 0
@@ -207,69 +202,68 @@ fun! getscript#GetLatestVimScripts()
 "  call Decho("searching plugins for GetLatestVimScripts dependencies")
   let lastline    = line("$")
 "  call Decho("lastline#".lastline)
-  let plugins     = split(globpath(&rtp,"plugin/*.vim"),'\n')
+  let firstdir    = substitute(&rtp,',.*$','','')
+  let plugins     = split(globpath(firstdir,"plugin/*.vim"),'\n')
+  let plugins     = plugins + split(globpath(firstdir,"AsNeeded/*.vim"),'\n')
   let foundscript = 0
-  let firstdir= ""
-
-  for plugin in plugins
-"   call Decho("plugin<".plugin.">")
 
-   " don't process plugins in system directories
-   if firstdir == ""
-    let firstdir= substitute(plugin,'[/\\][^/\\]\+$','','')
-"    call Decho("setting firstdir<".firstdir.">")
-   else
-    let curdir= substitute(plugin,'[/\\][^/\\]\+$','','')
-"    call Decho("curdir<".curdir.">")
-    if curdir != firstdir
-"     call Decho("skipping subsequent plugins: curdir<".curdir."> != firstdir<".firstdir.">")
-     break
-    endif
-   endif
+  " this loop updates the GetLatestVimScripts.dat file
+  " with dependencies explicitly mentioned in the plugins
+  " via   GetLatestVimScripts: ... lines
+  " It reads the plugin script at the end of the GetLatestVimScripts.dat
+  " file, examines it, and then removes it.
+  for plugin in plugins
+"   call Decho(" ")
+"   call Decho("plugin<".plugin.">")
 
    " read plugin in
    " evidently a :r creates a new buffer (the "#" buffer) that is subsequently unused -- bwiping it
    $
-"   call Decho(" ")
 "   call Decho(".dependency checking<".plugin."> line$=".line("$"))
-"   call Decho("exe silent r ".fnameescape(plugin))
+"   call Decho("..exe silent r ".fnameescape(plugin))
    exe "silent r ".fnameescape(plugin)
    exe "silent bwipe ".bufnr("#")
 
    while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0
-    let newscript= substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e')
-    let llp1     = lastline+1
-"    call Decho("..newscript<".newscript.">")
-
-    " don't process ""GetLatestVimScripts lines -- those that have been doubly-commented out
-    if newscript !~ '^"'
-     " found a "GetLatestVimScripts: # #" line in the script; check if its already in the datafile
-     let curline     = line(".")
-     let noai_script = substitute(newscript,'\s*:AutoInstall:\s*','','e')
-     exe llp1
-     let srchline    = search('\<'.noai_script.'\>','bW')
-"     call Decho("..noai_script<".noai_script."> srch=".srchline."curline#".line(".")." lastline#".lastline)
+    let depscript   = substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e')
+    let depscriptid = substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\(\d\+\)\s\+.*$','\1','')
+    let llp1        = lastline+1
+"    call Decho("..depscript<".depscript.">")
 
-     if srchline == 0
-      " found a new script to permanently include in the datafile
-      let keep_rega   = @a
-      let @a          = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','')
-      exe lastline."put a"
-      echomsg "Appending <".@a."> to ".datafile." for ".newscript
-"      call Decho("..APPEND (".noai_script.")<".@a."> to GetLatestVimScripts.dat")
-      let @a          = keep_rega
-      let lastline    = llp1
-      let curline     = curline     + 1
-      let foundscript = foundscript + 1
-"     else	" Decho
-"      call Decho("..found <".noai_script."> (already in datafile at line#".srchline.")")
-     endif
+    " found a "GetLatestVimScripts: # #" line in the script;
+    " check if its already in the datafile by searching backwards from llp1,
+    " the (prior to reading in the plugin script) last line plus one of the GetLatestVimScripts.dat file,
+    " for the script-id with no wrapping allowed.
+    let curline     = line(".")
+    let noai_script = substitute(depscript,'\s*:AutoInstall:\s*','','e')
+    exe llp1
+    let srchline    = search('^\s*'.depscriptid.'\s\+\d\+\s\+.*$','bW')
+    if srchline == 0
+     " this second search is taken when, for example, a   0 0 scriptname  is to be skipped over
+     let srchline= search('\<'.noai_script.'\>','bW')
+    endif
+"    call Decho("..noai_script<".noai_script."> depscriptid#".depscriptid." srchline#".srchline." curline#".line(".")." lastline#".lastline)
 
-     let curline = curline + 1
-     exe curline
+    if srchline == 0
+     " found a new script to permanently include in the datafile
+     let keep_rega   = @a
+     let @a          = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','')
+     echomsg "Appending <".@a."> to ".datafile." for ".depscript
+"     call Decho("..Appending <".@a."> to ".datafile." for ".depscript)
+     exe lastline."put a"
+     let @a          = keep_rega
+     let lastline    = llp1
+     let curline     = curline     + 1
+     let foundscript = foundscript + 1
+"    else	" Decho
+"     call Decho("..found <".noai_script."> (already in datafile at line#".srchline.")")
     endif
+
+    let curline = curline + 1
+    exe curline
    endwhile
 
+   " llp1: last line plus one
    let llp1= lastline + 1
 "   call Decho(".deleting lines: ".llp1.",$d")
    exe "silent! ".llp1.",$d"
@@ -282,7 +276,9 @@ fun! getscript#GetLatestVimScripts()
    setlocal nomod
   endif
 
+  " --------------------------------------------------------------------
   " Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat
+  " --------------------------------------------------------------------
 "  call Decho("begin: checking out-of-date scripts using datafile<".datafile.">")
   setlocal lz
   1
@@ -322,8 +318,9 @@ fun! getscript#GetLatestVimScripts()
 
   " restore events and current directory
   exe "cd ".fnameescape(substitute(origdir,'\','/','ge'))
-  let &ei= eikeep
-  let &hls= hlskeep
+  let &ei  = eikeep
+  let &hls = hlskeep
+  let &acd = acdkeep
   setlocal nolz
 "  call Dredir("BUFFER TEST (GetLatestVimScripts 2)","ls!")
 "  call Dret("GetLatestVimScripts : did ".s:downloads." downloads")
@@ -333,7 +330,7 @@ endfun
 "  GetOneScript: (Get Latest Vim Script) this function operates {{{1
 "    on the current line, interpreting two numbers and text as
 "    ScriptID, SourceID, and Filename.
-"    It downloads any scripts that have newer versions from vim.sf.net.
+"    It downloads any scripts that have newer versions from vim.sourceforge.net.
 fun! s:GetOneScript(...)
 "   call Dfunc("GetOneScript()")
 
@@ -391,6 +388,7 @@ fun! s:GetOneScript(...)
 "   call Decho("fname   <".fname.">")
   endif
 
+  " plugin author protection from downloading his/her own scripts atop their latest work
   if scriptid == 0 || srcid == 0
    " When looking for :AutoInstall: lines, skip scripts that have   0 0 scriptname
    let @a= rega
@@ -416,21 +414,21 @@ fun! s:GetOneScript(...)
 "  call Decho('considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid)
   echo 'considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid
 
-  " grab a copy of the plugin's vim.sf.net webpage
-  let scriptaddr = 'http://vim.sf.net/script.php?script_id='.scriptid
+  " grab a copy of the plugin's vim.sourceforge.net webpage
+  let scriptaddr = 'http://vim.sourceforge.net/script.php?script_id='.scriptid
   let tmpfile    = tempname()
   let v:errmsg   = ""
 
   " make up to three tries at downloading the description
   let itry= 1
   while itry <= 3
-"   call Decho("try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr)
+"   call Decho(".try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr)
    if has("win32") || has("win16") || has("win95")
-"    call Decho("new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile).' '.s:Escape(scriptaddr)."|bw!")
-    new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile).' '.s:Escape(scriptaddr)|bw!
+"    call Decho(".new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile).' '.shellescape(scriptaddr)."|bw!")
+    new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile).' '.shellescape(scriptaddr)|bw!
    else
-"    call Decho("exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile)." ".s:Escape(scriptaddr))
-    exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile)." ".s:Escape(scriptaddr)
+"    call Decho(".exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile)." ".shellescape(scriptaddr))
+    exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile)." ".shellescape(scriptaddr)
    endif
    if itry == 1
     exe "silent vsplit ".fnameescape(tmpfile)
@@ -495,8 +493,7 @@ fun! s:GetOneScript(...)
   let latestsrcid = latestsrcid + 0
 "  call Decho("srcid=".srcid." latestsrcid=".latestsrcid." sname<".sname.">")
 
-  " has the plugin's most-recent srcid increased, which indicates
-  " that it has been updated
+  " has the plugin's most-recent srcid increased, which indicates that it has been updated
   if latestsrcid > srcid
 "   call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."]: need to update <".sname.">")
 
@@ -506,65 +503,103 @@ fun! s:GetOneScript(...)
     let sname= "NEW_".sname
    endif
 
+   " -----------------------------------------------------------------------------
    " the plugin has been updated since we last obtained it, so download a new copy
-"   call Decho("...downloading new <".sname.">")
-   echomsg "...downloading new <".sname.">"
+   " -----------------------------------------------------------------------------
+"   call Decho(".downloading new <".sname.">")
+   echomsg ".downloading new <".sname.">"
    if has("win32") || has("win16") || has("win95")
-"    call Decho("new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid)."|q")
-    new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid)|q
+"    call Decho(".new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id='.latestsrcid)."|q")
+    new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id='.latestsrcid)|q
    else
-"    call Decho("exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id='))
-    exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id=').latestsrcid
+"    call Decho(".exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id='))
+    exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id=').latestsrcid
    endif
 
+   " --------------------------------------------------------------------------
    " AutoInstall: only if doautoinstall has been requested by the plugin itself
+   " --------------------------------------------------------------------------
    if doautoinstall
-"    call Decho("attempting to do autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname))
+"    call Decho(" ")
+"    call Decho("Autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname))
     if filereadable(sname)
-"     call Decho("exe silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." ".s:Escape(s:autoinstall))
-     exe "silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." ".s:Escape(s:autoinstall)
+"     call Decho("<".sname."> is readable")
+"     call Decho("exe silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall))
+     exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall)
      let curdir    = escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #")
      let installdir= curdir."/Installed"
      if !isdirectory(installdir)
       call mkdir(installdir)
      endif
-"    call Decho("exe cd ".fnameescape(s:autoinstall))
+"     call Decho("curdir<".curdir."> installdir<".installdir.">")
+"     call Decho("exe cd ".fnameescape(s:autoinstall))
      exe "cd ".fnameescape(s:autoinstall)
+
+     " determine target directory for moves
+     let firstdir= substitute(&rtp,',.*$','','')
+     let pname   = substitute(sname,'\..*','.vim','')
+"     call Decho("determine tgtdir: is <".firstdir.'/AsNeeded/'.pname." readable?")
+     if filereadable(firstdir.'/AsNeeded/'.pname)
+      let tgtdir= "AsNeeded"
+     else
+      let tgtdir= "plugin"
+     endif
+"     call Decho("tgtdir<".tgtdir.">  pname<".pname.">")
      
      " decompress
      if sname =~ '\.bz2$'
 "      call Decho("decompress: attempt to bunzip2 ".sname)
-      exe "silent !bunzip2 ".s:Escape(sname)
+      exe "silent !bunzip2 ".shellescape(sname)
       let sname= substitute(sname,'\.bz2$','','')
 "      call Decho("decompress: new sname<".sname."> after bunzip2")
      elseif sname =~ '\.gz$'
 "      call Decho("decompress: attempt to gunzip ".sname)
-      exe "silent !gunzip ".s:Escape(sname)
+      exe "silent !gunzip ".shellescape(sname)
       let sname= substitute(sname,'\.gz$','','')
 "      call Decho("decompress: new sname<".sname."> after gunzip")
+     else
+"      call Decho("no decompression needed")
      endif
      
      " distribute archive(.zip, .tar, .vba) contents
      if sname =~ '\.zip$'
 "      call Decho("dearchive: attempt to unzip ".sname)
-      exe "silent !unzip -o ".s:Escape(sname)
+      exe "silent !unzip -o ".shellescape(sname)
      elseif sname =~ '\.tar$'
 "      call Decho("dearchive: attempt to untar ".sname)
-      exe "silent !tar -xvf ".s:Escape(sname)
+      exe "silent !tar -xvf ".shellescape(sname)
      elseif sname =~ '\.vba$'
 "      call Decho("dearchive: attempt to handle a vimball: ".sname)
       silent 1split
+      if exists("g:vimball_home")
+       let oldvimballhome= g:vimball_home
+      endif
+      let g:vimball_home= s:autoinstall
       exe "silent e ".fnameescape(sname)
       silent so %
       silent q
+      if exists("oldvimballhome")
+       let g:vimball_home= oldvimballhome
+      else
+       unlet g:vimball_home
+      endif
+     else
+"      call Decho("no dearchiving needed")
      endif
      
+     " ---------------------------------------------
+     " move plugin to plugin/ or AsNeeded/ directory
+     " ---------------------------------------------
      if sname =~ '.vim$'
-"      call Decho("dearchive: attempt to simply move ".sname." to plugin")
-      exe "silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." plugin"
+"      call Decho("dearchive: attempt to simply move ".sname." to ".tgtdir)
+      exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".tgtdir
      else
 "      call Decho("dearchive: move <".sname."> to installdir<".installdir.">")
-      exe "silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." ".installdir
+      exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".installdir
+     endif
+     if tgtdir != "plugin"
+"      call Decho("exe silent !".g:GetLatestVimScripts_mv." plugin/".shellescape(pname)." ".tgtdir)
+      exe "silent !".g:GetLatestVimScripts_mv." plugin/".shellescape(pname)." ".tgtdir
      endif
      
      " helptags step
@@ -600,20 +635,6 @@ fun! s:GetOneScript(...)
 endfun
 
 " ---------------------------------------------------------------------
-" s:Escape: makes a string safe&suitable for the shell {{{2
-fun! s:Escape(name)
-"  call Dfunc("s:Escape(name<".a:name.">)")
-  if exists("*shellescape")
-   " shellescape() was added by patch 7.0.111
-   let name= shellescape(a:name)
-  else
-   let name= g:getscript_shq . a:name . g:getscript_shq
-  endif
-"  call Dret("s:Escape ".name)
-  return name
-endfun
-
-" ---------------------------------------------------------------------
 " Restore Options: {{{1
 let &cpo= s:keepcpo
 unlet s:keepcpo
--- a/runtime/autoload/gnat.vim
+++ b/runtime/autoload/gnat.vim
@@ -1,14 +1,14 @@
 "------------------------------------------------------------------------------
 "  Description: Vim Ada/GNAT compiler file
 "     Language: Ada (GNAT)
-"          $Id$
+"          $Id: gnat.vim 887 2008-07-08 14:29:01Z krischik $
 "    Copyright: Copyright (C) 2006 Martin Krischik
 "   Maintainer:	Martin Krischi <krischik@users.sourceforge.net>k
 "		Ned Okie <nokie@radford.edu>
-"      $Author$
-"        $Date$
+"      $Author: krischik $
+"        $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
 "      Version: 4.6
-"    $Revision$
+"    $Revision: 887 $
 "     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/gnat.vim $
 "      History: 24.05.2006 MK Unified Headers
 "		16.07.2006 MK Ada-Mode as vim-ball
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,10 +1,10 @@
 " netrw.vim: Handles file transfer and remote directory listing across
 "            AUTOLOAD SECTION
-" Date:		Aug 08, 2008
-" Version:	132
+" Date:		Dec 28, 2009
+" Version:	136
 " Maintainer:	Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
-" Copyright:    Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
+" Copyright:    Copyright (C) 1999-2009 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
 "               with or without modifications, provided that this copyright
 "               notice is copied with it. Like anything else that's free,
@@ -22,12 +22,18 @@
 if &cp || exists("g:loaded_netrw")
   finish
 endif
+let g:loaded_netrw = "v136"
+if v:version < 702
+ echohl WarningMsg
+ echo "***warning*** this version of netrw needs vim 7.2"
+ echohl Normal
+ finish
+endif
 if !exists("s:NOTE")
  let s:NOTE    = 0
  let s:WARNING = 1
  let s:ERROR   = 2
 endif
-let g:loaded_netrw = "v132"
 
 " sanity checks
 if v:version < 700
@@ -45,25 +51,41 @@ setlocal cpo&vim
 " ======================
 
 " ---------------------------------------------------------------------
+" NetrwInit: initializes variables if they haven't been defined {{{2
+"            Loosely,  varname = value.
+fun s:NetrwInit(varname,value)
+  if !exists(a:varname)
+   if type(a:value) == 0
+    exe "let ".a:varname."=".a:value
+   elseif type(a:value) == 1
+    exe "let ".a:varname."="."'".a:value."'"
+   else
+    exe "let ".a:varname."=".a:value
+   endif
+  endif
+endfun
+
+" ---------------------------------------------------------------------
 "  Netrw Constants: {{{2
-if !exists("g:NETRW_BOOKMARKMAX")
- let g:NETRW_BOOKMARKMAX= 0
-endif
-if !exists("g:NETRW_DIRHIST_CNT")
- let g:NETRW_DIRHIST_CNT= 0
-endif
+call s:NetrwInit("g:netrw_dirhist_cnt",0)
 if !exists("s:LONGLIST")
- let s:THINLIST = 0
- let s:LONGLIST = 1
- let s:WIDELIST = 2
- let s:TREELIST = 3
- let s:MAXLIST  = 4
+ call s:NetrwInit("s:THINLIST",0)
+ call s:NetrwInit("s:LONGLIST",1)
+ call s:NetrwInit("s:WIDELIST",2)
+ call s:NetrwInit("s:TREELIST",3)
+ call s:NetrwInit("s:MAXLIST" ,4)
 endif
 
 " ---------------------------------------------------------------------
 " Default values for netrw's global protocol variables {{{2
 if !exists("g:netrw_dav_cmd")
+ if executable("cadaver")
   let g:netrw_dav_cmd	= "cadaver"
+ elseif executable("curl")
+  let g:netrw_dav_cmd	= "curl"
+ else
+  let g:netrw_dav_cmd   = ""
+ endif
 endif
 if !exists("g:netrw_fetch_cmd")
  if executable("fetch")
@@ -78,35 +100,28 @@ endif
 if !exists("g:netrw_http_cmd")
  if executable("elinks")
   let g:netrw_http_cmd = "elinks"
-  let g:netrw_http_xcmd= "-dump >"
+  call s:NetrwInit("g:netrw_http_xcmd","-source >")
  elseif executable("links")
   let g:netrw_http_cmd = "links"
-  let g:netrw_http_xcmd= "-dump >"
+  call s:NetrwInit("g:netrw_http_xcmd","-source >")
  elseif executable("curl")
-  let g:netrw_http_cmd	= "curl -o"
+  let g:netrw_http_cmd	= "curl"
+  call s:NetrwInit("g:netrw_http_xcmd","-o")
  elseif executable("wget")
-  let g:netrw_http_cmd	= "wget -q -O"
+  let g:netrw_http_cmd	= "wget"
+  call s:NetrwInit("g:netrw_http_xcmd","-q -O")
  elseif executable("fetch")
-  let g:netrw_http_cmd	= "fetch -o"
+  let g:netrw_http_cmd	= "fetch"
+  call s:NetrwInit("g:netrw_http_xcmd","-o")
  else
   let g:netrw_http_cmd	= ""
  endif
 endif
-if !exists("g:netrw_rcp_cmd")
-  let g:netrw_rcp_cmd	= "rcp"
-endif
-if !exists("g:netrw_rsync_cmd")
-  let g:netrw_rsync_cmd	= "rsync"
-endif
-if !exists("g:netrw_scp_cmd")
-  let g:netrw_scp_cmd	= "scp -q"
-endif
-if !exists("g:netrw_sftp_cmd")
-  let g:netrw_sftp_cmd	= "sftp"
-endif
-if !exists("g:netrw_ssh_cmd")
- let g:netrw_ssh_cmd= "ssh"
-endif
+call s:NetrwInit("g:netrw_rcp_cmd"  , "rcp")
+call s:NetrwInit("g:netrw_rsync_cmd", "rsync")
+call s:NetrwInit("g:netrw_scp_cmd"  , "scp -q")
+call s:NetrwInit("g:netrw_sftp_cmd" , "sftp")
+call s:NetrwInit("g:netrw_ssh_cmd"  , "ssh")
 
 if (has("win32") || has("win95") || has("win64") || has("win16"))
   \ && exists("g:netrw_use_nt_rcp")
@@ -134,40 +149,24 @@ if !exists("g:netrw_cygwin")
  endif
 endif
 " Default values - a-c ---------- {{{3
-if !exists("g:netrw_alto")
- let g:netrw_alto= &sb
-endif
-if !exists("g:netrw_altv")
- let g:netrw_altv= &spr
-endif
-if !exists("g:netrw_browse_split")
- let g:netrw_browse_split= 0
-endif
-if !exists("g:netrw_chgwin")
- let g:netrw_chgwin    = -1
-endif
-if !exists("g:netrw_compress")
- let g:netrw_compress= "gzip"
-endif
-if !exists("g:netrw_ctags")
- let g:netrw_ctags= "ctags"
+call s:NetrwInit("g:netrw_alto"        , &sb)
+call s:NetrwInit("g:netrw_altv"        , &spr)
+call s:NetrwInit("g:netrw_banner"      , 1)
+call s:NetrwInit("g:netrw_browse_split", 0)
+call s:NetrwInit("g:netrw_chgwin"      , -1)
+call s:NetrwInit("g:netrw_compress"    , "gzip")
+call s:NetrwInit("g:netrw_ctags"       , "ctags")
+if !exists("g:netrw_cursorline")
+ let g:netrw_cursorline= 1
+ let s:netrw_usercul   = &cursorline
+ let s:netrw_usercuc   = &cursorcolumn
 endif
 " Default values - d-g ---------- {{{3
-if !exists("g:NETRW_DIRHIST_CNT")
- let g:NETRW_DIRHIST_CNT= 0
-endif
-if !exists("g:netrw_decompress")
- let g:netrw_decompress= { ".gz" : "gunzip" , ".bz2" : "bunzip2" , ".zip" : "unzip" , ".tar" : "tar -xf"}
-endif
-if !exists("g:netrw_dirhistmax")
- let g:netrw_dirhistmax= 10
-endif
-if !exists("g:netrw_fastbrowse")
- let g:netrw_fastbrowse= 1
-endif
-if !exists("g:netrw_ftp_browse_reject")
- let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$'
-endif
+call s:NetrwInit("g:netrw_dirhist_cnt"      , 0)
+call s:NetrwInit("g:netrw_decompress"       , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf"}')
+call s:NetrwInit("g:netrw_dirhistmax"       , 10)
+call s:NetrwInit("g:netrw_fastbrowse"       , 1)
+call s:NetrwInit("g:netrw_ftp_browse_reject", '^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$')
 if !exists("g:netrw_ftp_list_cmd")
  if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)
   let g:netrw_ftp_list_cmd     = "ls -lF"
@@ -179,13 +178,9 @@ if !exists("g:netrw_ftp_list_cmd")
   let g:netrw_ftp_sizelist_cmd = "dir"
  endif
 endif
-if !exists("g:netrw_ftpmode")
- let g:netrw_ftpmode= "binary"
-endif
+call s:NetrwInit("g:netrw_ftpmode",'binary')
 " Default values - h-lh ---------- {{{3
-if !exists("g:netrw_hide")
- let g:netrw_hide= 1
-endif
+call s:NetrwInit("g:netrw_hide",1)
 if !exists("g:netrw_ignorenetrc")
  if &shell =~ '\c\<\%(cmd\|4nt\)\.exe$'
   let g:netrw_ignorenetrc= 1
@@ -193,9 +188,7 @@ if !exists("g:netrw_ignorenetrc")
   let g:netrw_ignorenetrc= 0
  endif
 endif
-if !exists("g:netrw_keepdir")
- let g:netrw_keepdir= 1
-endif
+call s:NetrwInit("g:netrw_keepdir",1)
 if !exists("g:netrw_list_cmd")
  if g:netrw_scp_cmd =~ '^pscp' && executable("pscp")
   " provide a 'pscp' listing command
@@ -211,9 +204,7 @@ if !exists("g:netrw_list_cmd")
   let g:netrw_list_cmd= ""
  endif
 endif
-if !exists("g:netrw_list_hide")
- let g:netrw_list_hide= ""
-endif
+call s:NetrwInit("g:netrw_list_hide","")
 " Default values - lh-lz ---------- {{{3
 if !exists("g:netrw_localcopycmd")
  if has("win32") || has("win95") || has("win64") || has("win16")
@@ -228,9 +219,7 @@ if !exists("g:netrw_localcopycmd")
   let g:netrw_localcopycmd= ""
  endif
 endif
-if !exists("g:netrw_local_mkdir")
- let g:netrw_local_mkdir= "mkdir"
-endif
+call s:NetrwInit("g:netrw_local_mkdir","mkdir")
 if !exists("g:netrw_localmovecmd")
  if has("win32") || has("win95") || has("win64") || has("win16")
   if g:netrw_cygwin
@@ -244,128 +233,66 @@ if !exists("g:netrw_localmovecmd")
   let g:netrw_localmovecmd= ""
  endif
 endif
-if !exists("g:netrw_local_rmdir")
- let g:netrw_local_rmdir= "rmdir"
-endif
-if !exists("g:netrw_liststyle")
- let g:netrw_liststyle= s:THINLIST
-endif
+call s:NetrwInit("g:netrw_local_rmdir", "rmdir")
+call s:NetrwInit("g:netrw_liststyle"  , s:THINLIST)
+" sanity checks
 if g:netrw_liststyle < 0 || g:netrw_liststyle >= s:MAXLIST
- " sanity check
  let g:netrw_liststyle= s:THINLIST
 endif
 if g:netrw_liststyle == s:LONGLIST && g:netrw_scp_cmd !~ '^pscp'
  let g:netrw_list_cmd= g:netrw_list_cmd." -l"
 endif
 " Default values - m-r ---------- {{{3
-if !exists("g:netrw_markfileesc")
- let g:netrw_markfileesc= '*./[\~'
-endif
-if !exists("g:netrw_maxfilenamelen")
- let g:netrw_maxfilenamelen= 32
-endif
-if !exists("g:netrw_menu")
- let g:netrw_menu= 1
+call s:NetrwInit("g:netrw_markfileesc"   , '*./[\~')
+call s:NetrwInit("g:netrw_maxfilenamelen", 32)
+call s:NetrwInit("g:netrw_menu"          , 1)
+call s:NetrwInit("g:netrw_mkdir_cmd"     , g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir")
+call s:NetrwInit("g:netrw_mousemaps"     , (exists("&mouse") && &mouse =~ '[anh]'))
+call s:NetrwInit("g:netrw_retmap"        , 0)
+if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)
+ call s:NetrwInit("g:netrw_chgperm"       , "chmod PERM FILENAME")
+elseif has("win32") || has("win95") || has("win64") || has("win16")
+ call s:NetrwInit("g:netrw_chgperm"       , "cacls FILENAME /e /p PERM")
+else
+ call s:NetrwInit("g:netrw_chgperm"       , "chmod PERM FILENAME")
 endif
-if !exists("g:netrw_mkdir_cmd")
- let g:netrw_mkdir_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir"
-endif
-if !exists("g:netrw_mousemaps")
- if exists("&mouse") && &mouse =~ '[anh]'
-  let g:netrw_mousemaps= 1
+call s:NetrwInit("g:netrw_preview"       , 0)
+call s:NetrwInit("g:netrw_scpport"       , "-P")
+call s:NetrwInit("g:netrw_sshport"       , "-p")
+call s:NetrwInit("g:netrw_rename_cmd"    , g:netrw_ssh_cmd." USEPORT HOSTNAME mv")
+call s:NetrwInit("g:netrw_rm_cmd"        , g:netrw_ssh_cmd." USEPORT HOSTNAME rm")
+call s:NetrwInit("g:netrw_rmdir_cmd"     , g:netrw_ssh_cmd." USEPORT HOSTNAME rmdir")
+call s:NetrwInit("g:netrw_rmf_cmd"       , g:netrw_ssh_cmd." USEPORT HOSTNAME rm -f")
+" Default values - s ---------- {{{3
+" g:netrw_sepchr: picking a character that doesn't appear in filenames that can be used to separate priority from filename
+call s:NetrwInit("g:netrw_sepchr"        , (&enc == "euc-jp")? "\<Char-0x01>" : "\<Char-0xff>")
+call s:NetrwInit("s:netrw_silentxfer"    , (exists("g:netrw_silent") && g:netrw_silent != 0)? "silent " : "")
+call s:NetrwInit("g:netrw_sort_by"       , "name") " alternatives: date                                      , size
+call s:NetrwInit("g:netrw_sort_options"  , "")
+call s:NetrwInit("g:netrw_sort_direction", "normal") " alternative: reverse  (z y x ...)
+if !exists("g:netrw_sort_sequence")
+ if has("unix")
+  let g:netrw_sort_sequence= '[\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
  else
-  let g:netrw_mousemaps= 0
+  let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
  endif
 endif
-if !exists("g:netrw_retmap")
- let g:netrw_retmap= 0
-endif
-if !exists("g:netrw_preview")
- let g:netrw_preview= 0
-endif
-if !exists("g:netrw_scpport")
- let g:netrw_scpport= "-P"
-endif
-if !exists("g:netrw_sshport")
- let g:netrw_sshport= "-p"
-endif
-if !exists("g:netrw_rename_cmd")
- let g:netrw_rename_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mv"
-endif
-if !exists("g:netrw_rm_cmd")
- let g:netrw_rm_cmd    = g:netrw_ssh_cmd." USEPORT HOSTNAME rm"
-endif
-if !exists("g:netrw_rmdir_cmd")
- let g:netrw_rmdir_cmd = g:netrw_ssh_cmd." USEPORT HOSTNAME rmdir"
-endif
-if !exists("g:netrw_rmf_cmd")
- let g:netrw_rmf_cmd    = g:netrw_ssh_cmd." USEPORT HOSTNAME rm -f"
-endif
-" Default values - s ---------- {{{3
- " set up shell quoting character
-if exists("g:netrw_silent") && g:netrw_silent != 0
- let s:netrw_silentxfer= "silent "
-else
- let s:netrw_silentxfer= ""
-endif
-if !exists("g:netrw_sort_by")
- " alternatives: date size
- let g:netrw_sort_by= "name"
-endif
-if !exists("g:netrw_sort_options")
- let g:netrw_sort_options= ""
-endif
-if !exists("g:netrw_sort_direction")
- " alternative: reverse  (z y x ...)
- let g:netrw_sort_direction= "normal"
-endif
-if !exists("g:netrw_sort_sequence")
- let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
-endif
-if !exists("g:netrw_special_syntax")
- let g:netrw_special_syntax= 0
-endif
-if !exists("g:netrw_ssh_browse_reject")
-  let g:netrw_ssh_browse_reject='^total\s\+\d\+$'
-endif
-if !has("patch192")
- if !exists("g:netrw_use_noswf")
-  let g:netrw_use_noswf= 1
- endif
-else
-  let g:netrw_use_noswf= 0
-endif
+call s:NetrwInit("g:netrw_special_syntax"   , 0)
+call s:NetrwInit("g:netrw_ssh_browse_reject", '^total\s\+\d\+$')
+call s:NetrwInit("g:netrw_use_noswf"        , 0)
 " Default values - t-w ---------- {{{3
-if !exists("g:netrw_timefmt")
- let g:netrw_timefmt= "%c"
-endif
-if !exists("g:netrw_xstrlen")
- let g:netrw_xstrlen= 1
-endif
-if !exists("g:NetrwTopLvlMenu")
- let g:NetrwTopLvlMenu= "Netrw."
-endif
-if !exists("g:netrw_use_errorwindow")
- let g:netrw_use_errorwindow= 1
-endif
-if !exists("g:netrw_win95ftp")
- let g:netrw_win95ftp= 1
-endif
-if !exists("g:netrw_winsize")
- let g:netrw_winsize= ""
-endif
+call s:NetrwInit("g:netrw_timefmt","%c")
+call s:NetrwInit("g:netrw_xstrlen",0)
+call s:NetrwInit("g:NetrwTopLvlMenu","Netrw.")
+call s:NetrwInit("g:netrw_use_errorwindow",1)
+call s:NetrwInit("g:netrw_win95ftp",1)
+call s:NetrwInit("g:netrw_winsize","")
 " ---------------------------------------------------------------------
 " Default values for netrw's script variables: {{{2
-if !exists("g:netrw_fname_escape")
- let g:netrw_fname_escape= ' ?&;%'
-endif
-if !exists("g:netrw_glob_escape")
-  let g:netrw_glob_escape= '[]*?`{~$'
-endif
-if !exists("g:netrw_tmpfile_escape")
- let g:netrw_tmpfile_escape= ' &;'
-endif
-let s:netrw_map_escape = "<|\n\r\\\<C-V>\""
+call s:NetrwInit("g:netrw_fname_escape",' ?&;%')
+call s:NetrwInit("g:netrw_glob_escape",'[]*?`{~$')
+call s:NetrwInit("g:netrw_tmpfile_escape",' &;')
+call s:NetrwInit("s:netrw_map_escape","<|\n\r\\\<C-V>\"")
 
 " BufEnter event ignored by decho when following variable is true
 "  Has a side effect that doau BufReadPost doesn't work, so
@@ -384,7 +311,7 @@ let s:netrw_map_escape = "<|\n\r\\\<C-V>
 "             NetrwBrowse.
 "             vt: normally its "w:" or "s:" (a variable type)
 fun! s:NetrwOptionSave(vt)
-"  call Dfunc("s:NetrwOptionSave(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">")
+"  call Dfunc("s:NetrwOptionSave(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">"." winnr($)=".winnr("$"))
 
 "  call Decho(a:vt."netrw_optionsave".(exists("{a:vt}netrw_optionsave")? ("=".{a:vt}netrw_optionsave) : " doesn't exist"))
   if !exists("{a:vt}netrw_optionsave")
@@ -430,7 +357,7 @@ endfun
 " ------------------------------------------------------------------------
 " s:NetrwOptionRestore: restore options {{{2
 fun! s:NetrwOptionRestore(vt)
-"  call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%"))
+"  call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")." winnr($)=".winnr("$"))
   if !exists("{a:vt}netrw_optionsave")
 "   call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
 "   call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist")
@@ -503,8 +430,8 @@ endfun
 " ---------------------------------------------------------------------
 " s:NetrwSafeOptions: sets options to help netrw do its job {{{2
 fun! s:NetrwSafeOptions()
-"  call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">")
-"  call Decho("window's ft=".&ft)
+"  call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%"))."> winnr($)=".winnr("$"))
+"  call Decho("win#".winnr()."'s ft=".&ft)
   setlocal cino=
   setlocal com=
   setlocal cpo-=aA
@@ -513,9 +440,16 @@ fun! s:NetrwSafeOptions()
   setlocal fo=nroql2
   setlocal tw=0
   setlocal report=10000
+  setlocal isk+=@ isk+=* isk+=/
   if g:netrw_use_noswf && has("win32") && !has("win95")
    setlocal noswf
   endif
+
+  " allow the user to override safe options
+  if &ft == "netrw"
+   silent keepalt keepjumps doau FileType netrw
+  endif
+
 "  call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist"))
 "  call Dret("s:NetrwSafeOptions")
 endfun
@@ -566,6 +500,16 @@ fun! netrw#NetrwClean(sys)
 "  call Dret("netrw#NetrwClean")
 endfun
 
+" ---------------------------------------------------------------------
+" netrw#Nread: {{{2
+fun! netrw#Nread(mode,fname)
+"  call Dfunc("netrw#Nread(mode=".a:mode." fname<".a:fname.">)")
+  call netrw#NetrwSavePosn()
+  call netrw#NetRead(a:mode,a:fname)
+  call netrw#NetrwRestorePosn()
+"  call Dret("netrw#Nread")
+endfun
+
 " ------------------------------------------------------------------------
 "  Netrw Transfer Functions: {{{1
 " ===============================
@@ -579,11 +523,11 @@ endfun
 fun! netrw#NetRead(mode,...)
 "  call Dfunc("netrw#NetRead(mode=".a:mode.",...) a:0=".a:0." ".g:loaded_netrw)
 
-  " save options {{{3
+  " NetRead: save options {{{3
   call s:NetrwOptionSave("w:")
   call s:NetrwSafeOptions()
 
-  " interpret mode into a readcmd {{{3
+  " NetRead: interpret mode into a readcmd {{{3
   if     a:mode == 0 " read remote file before current line
    let readcmd = "0r"
   elseif a:mode == 1 " read file after current line
@@ -599,7 +543,7 @@ fun! netrw#NetRead(mode,...)
   let ichoice = (a:0 == 0)? 0 : 1
 "  call Decho("readcmd<".readcmd."> ichoice=".ichoice)
 
-  " Get Temporary Filename {{{3
+  " NetRead: get temporary filename {{{3
   let tmpfile= s:GetTempfile("")
   if tmpfile == ""
 "   call Dret("netrw#NetRead : unable to get a tempfile!")
@@ -666,8 +610,12 @@ fun! netrw#NetRead(mode,...)
 "   call Decho("choice<" . choice . ">")
    let ichoice= ichoice + 1
 
-   " Determine method of read (ftp, rcp, etc) {{{3
+   " NetRead: Determine method of read (ftp, rcp, etc) {{{3
    call s:NetrwMethod(choice)
+   if !exists("b:netrw_method") || b:netrw_method < 0
+"    call Dfunc("netrw#NetRead : unsupported method")
+    return
+   endif
    let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix
 
    " Check if NetrwBrowse() should be handling this request
@@ -680,14 +628,14 @@ fun! netrw#NetRead(mode,...)
    endif
 
    " ============
-   " Perform Protocol-Based Read {{{3
+   " NetRead: Perform Protocol-Based Read {{{3
    " ===========================
    if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
     echo "(netrw) Processing your read request..."
    endif
 
    ".........................................
-   " rcp:  NetRead Method #1 {{{3
+   " NetRead: (rcp)  NetRead Method #1 {{{3
    if  b:netrw_method == 1 " read with rcp
 "    call Decho("read via rcp (method #1)")
    " ER: nothing done with g:netrw_uid yet?
@@ -709,12 +657,12 @@ fun! netrw#NetRead(mode,...)
     endif
    endif
 "   call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
-   exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
+   exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)
    let result           = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
    let b:netrw_lastfile = choice
 
    ".........................................
-   " ftp + <.netrc>:  NetRead Method #2 {{{3
+   " NetRead: (ftp + <.netrc>)  NetRead Method #2 {{{3
    elseif b:netrw_method  == 2		" read with ftp + <.netrc>
 "     call Decho("read via ftp+.netrc (method #2)")
      let netrw_fname= b:netrw_fname
@@ -745,7 +693,8 @@ fun! netrw#NetRead(mode,...)
      endif
      call s:SaveBufVars()
      bd!
-     if bufname("%") == "" && line("$") == 1 && getline("$") == ""
+     if bufname("%") == "" && getline("$") == "" && line('$') == 1
+      " needed when one sources a file in a nolbl setting window via ftp
       q!
      endif
      call s:RestoreBufVars()
@@ -753,7 +702,7 @@ fun! netrw#NetRead(mode,...)
      let b:netrw_lastfile = choice
 
    ".........................................
-   " ftp + machine,id,passwd,filename:  NetRead Method #3 {{{3
+   " NetRead: (ftp + machine,id,passwd,filename)  NetRead Method #3 {{{3
    elseif b:netrw_method == 3		" read with ftp + machine, id, passwd, and fname
     " Construct execution string (four lines) which will be passed through filter
 "    call Decho("read via ftp+mipf (method #3)")
@@ -809,7 +758,7 @@ fun! netrw#NetRead(mode,...)
     let b:netrw_lastfile = choice
 
    ".........................................
-   " scp: NetRead Method #4 {{{3
+   " NetRead: (scp) NetRead Method #4 {{{3
    elseif     b:netrw_method  == 4	" read with scp
 "    call Decho("read via scp (method #4)")
     if exists("g:netrw_port") && g:netrw_port != ""
@@ -817,13 +766,13 @@ fun! netrw#NetRead(mode,...)
     else
      let useport= ""
     endif
-"    call Decho("exe s:netrw_silentxfer.!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
+"    call Decho("exe ".s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
     exe s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)
     let result           = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
     let b:netrw_lastfile = choice
 
    ".........................................
-   " http: NetRead Method #5 (wget) {{{3
+   " NetRead: (http) NetRead Method #5 (wget) {{{3
    elseif     b:netrw_method  == 5
 "    call Decho("read via http (method #5)")
     if g:netrw_http_cmd == ""
@@ -863,33 +812,43 @@ fun! netrw#NetRead(mode,...)
     setlocal ro
 
    ".........................................
-   " cadaver: NetRead Method #6 {{{3
+   " NetRead: (dav) NetRead Method #6 {{{3
    elseif     b:netrw_method  == 6
 "    call Decho("read via cadaver (method #6)")
 
-    " Construct execution string (four lines) which will be passed through filter
-    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
-    new
-    setlocal ff=unix
-    if exists("g:netrw_port") && g:netrw_port != ""
-     put ='open '.g:netrw_machine.' '.g:netrw_port
+    if !executable(g:netrw_dav_cmd)
+     call netrw#ErrorMsg(s:ERROR,g:netrw_dav_cmd." is not executable",73)
+"     call Dret("netrw#NetRead : ".g:netrw_dav_cmd." not executable")
+     return
+    endif
+    if g:netrw_dav_cmd =~ "curl"
+"     call Decho("exe ".s:netrw_silentxfer."!".g:netrw_dav_cmd." ".shellescape("dav://".g:netrw_machine.b:netrw_fname,1)." ".shellescape(tmpfile,1))
+     exe s:netrw_silentxfer."!".g:netrw_dav_cmd." ".shellescape("dav://".g:netrw_machine.b:netrw_fname,1)." ".shellescape(tmpfile,1)
     else
-     put ='open '.g:netrw_machine
-    endif
-    put ='user '.g:netrw_uid.' '.s:netrw_passwd
-    put ='get '.netrw_fname.' '.tmpfile
-    put ='quit'
-
-    " perform cadaver operation:
-    norm! 1Gdd
+     " Construct execution string (four lines) which will be passed through filter
+     let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
+     new
+     setlocal ff=unix
+     if exists("g:netrw_port") && g:netrw_port != ""
+      put ='open '.g:netrw_machine.' '.g:netrw_port
+     else
+      put ='open '.g:netrw_machine
+     endif
+     put ='user '.g:netrw_uid.' '.s:netrw_passwd
+     put ='get '.netrw_fname.' '.tmpfile
+     put ='quit'
+
+     " perform cadaver operation:
+     norm! 1Gdd
 "    call Decho("executing: %!".g:netrw_dav_cmd)
-    exe s:netrw_silentxfer."%!".g:netrw_dav_cmd
-    bd!
+     exe s:netrw_silentxfer."%!".g:netrw_dav_cmd
+     bd!
+    endif
     let result           = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
     let b:netrw_lastfile = choice
 
    ".........................................
-   " rsync: NetRead Method #7 {{{3
+   " NetRead: (rsync) NetRead Method #7 {{{3
    elseif     b:netrw_method  == 7
 "    call Decho("read via rsync (method #7)")
 "    call Decho("exe ".s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
@@ -898,7 +857,7 @@ fun! netrw#NetRead(mode,...)
     let b:netrw_lastfile = choice
 
    ".........................................
-   " fetch: NetRead Method #8 {{{3
+   " NetRead: (fetch) NetRead Method #8 {{{3
    "    fetch://[user@]host[:http]/path
    elseif     b:netrw_method  == 8
 "    call Decho("read via fetch (method #8)")
@@ -928,7 +887,7 @@ fun! netrw#NetRead(mode,...)
     setlocal ro
 
    ".........................................
-   " sftp: NetRead Method #9 {{{3
+   " NetRead: (sftp) NetRead Method #9 {{{3
    elseif     b:netrw_method  == 9
 "    call Decho("read via sftp (method #9)")
 "    call Decho("exe ".s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".tmpfile)
@@ -937,13 +896,13 @@ fun! netrw#NetRead(mode,...)
     let b:netrw_lastfile = choice
 
    ".........................................
-   " Complain {{{3
+   " NetRead: Complain {{{3
    else
     call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",8)
    endif
   endwhile
 
-  " cleanup {{{3
+  " NetRead: cleanup {{{3
   if exists("b:netrw_method")
 "   call Decho("cleanup b:netrw_method and b:netrw_fname")
    unlet b:netrw_method
@@ -951,7 +910,7 @@ fun! netrw#NetRead(mode,...)
   endif
   if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't'
 "   call Decho("cleanup by deleting tmpfile<".tmpfile.">")
-   call s:NetrwDelete(fnameescape(tmpfile))
+   call s:NetrwDelete(tmpfile)
   endif
   call s:NetrwOptionRestore("w:")
 
@@ -963,12 +922,12 @@ endfun
 fun! netrw#NetWrite(...) range
 "  call Dfunc("netrw#NetWrite(a:0=".a:0.") ".g:loaded_netrw)
 
-  " option handling
+  " NetWrite: option handling {{{3
   let mod= 0
   call s:NetrwOptionSave("w:")
   call s:NetrwSafeOptions()
 
-  " Get Temporary Filename {{{3
+  " NetWrite: Get Temporary Filename {{{3
   let tmpfile= s:GetTempfile("")
   if tmpfile == ""
 "   call Dret("netrw#NetWrite : unable to get a tempfile!")
@@ -1007,7 +966,7 @@ fun! netrw#NetWrite(...) range
    0file!
   endif
 
-  " While choice loop: {{{3
+  " NetWrite: while choice loop: {{{3
   while ichoice <= a:0
 
    " Process arguments: {{{4
@@ -1065,9 +1024,13 @@ fun! netrw#NetWrite(...) range
 
    " Determine method of write (ftp, rcp, etc) {{{4
    call s:NetrwMethod(choice)
+   if !exists("b:netrw_method") || b:netrw_method < 0
+"    call Dfunc("netrw#NetWrite : unsupported method")
+    return
+   endif
 
    " =============
-   " Perform Protocol-Based Write {{{4
+   " NetWrite: Perform Protocol-Based Write {{{3
    " ============================
    if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
     echo "(netrw) Processing your write request..."
@@ -1075,7 +1038,7 @@ fun! netrw#NetWrite(...) range
    endif
 
    ".........................................
-   " rcp: NetWrite Method #1 {{{4
+   " NetWrite: (rcp) NetWrite Method #1 {{{3
    if  b:netrw_method == 1
 "    call Decho("write via rcp (method #1)")
     if s:netrw_has_nt_rcp == 1
@@ -1096,11 +1059,17 @@ fun! netrw#NetWrite(...) range
     let b:netrw_lastfile = choice
 
    ".........................................
-   " ftp + <.netrc>: NetWrite Method #2 {{{4
+   " NetWrite: (ftp + <.netrc>) NetWrite Method #2 {{{3
    elseif b:netrw_method == 2
 "    call Decho("write via ftp+.netrc (method #2)")
-    let netrw_fname= b:netrw_fname
-    new
+    let netrw_fname = b:netrw_fname
+
+    " formerly just a "new...bd!", that changed the window sizes when equalalways.  Using enew workaround instead
+    let bhkeep      = &l:bh
+    let curbuf      = bufnr("%")
+    setlocal bh=hide
+    enew
+
 "    call Decho("filter input window#".winnr())
     setlocal ff=unix
     put =g:netrw_ftpmode
@@ -1126,17 +1095,29 @@ fun! netrw#NetWrite(...) range
      endif
      let mod=1
     endif
-    bd!
+
+    " remove enew buffer (quietly)
+    let filtbuf= bufnr("%")
+    exe curbuf."b!"
+    let &l:bh            = bhkeep
+    exe filtbuf."bw!"
+
     let b:netrw_lastfile = choice
 
    ".........................................
-   " ftp + machine, id, passwd, filename: NetWrite Method #3 {{{4
+   " NetWrite: (ftp + machine, id, passwd, filename) NetWrite Method #3 {{{3
    elseif b:netrw_method == 3
-    " Construct execution string (four lines) which will be passed through filter
+    " Construct execution string (three or more lines) which will be passed through filter
 "    call Decho("read via ftp+mipf (method #3)")
-    let netrw_fname= b:netrw_fname
-    new
+    let netrw_fname = b:netrw_fname
+    let bhkeep      = &l:bh
+
+    " formerly just a "new...bd!", that changed the window sizes when equalalways.  Using enew workaround instead
+    let curbuf      = bufnr("%")
+    setlocal bh=hide
+    enew
     setlocal ff=unix
+
     if exists("g:netrw_port") && g:netrw_port != ""
      put ='open '.g:netrw_machine.' '.g:netrw_port
 "     call Decho("filter input: ".getline('.'))
@@ -1153,6 +1134,12 @@ fun! netrw#NetWrite(...) range
      put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
 "     call Decho("filter input: ".getline('.'))
     endif
+    put =g:netrw_ftpmode
+"    call Decho("filter input: ".getline('$'))
+    if exists("g:netrw_ftpextracmd")
+     put =g:netrw_ftpextracmd
+"     call Decho("filter input: ".getline("$"))
+    endif
     put ='put \"'.tmpfile.'\" \"'.netrw_fname.'\"'
 "    call Decho("filter input: ".getline('.'))
     " save choice/id/password for future use
@@ -1172,10 +1159,15 @@ fun! netrw#NetWrite(...) range
      endif
      let mod=1
     endif
-    bd!
+
+    " remove enew buffer (quietly)
+    let filtbuf= bufnr("%")
+    exe curbuf."b!"
+    let &l:bh= bhkeep
+    exe filtbuf."bw!"
 
    ".........................................
-   " scp: NetWrite Method #4 {{{4
+   " NetWrite: (scp) NetWrite Method #4 {{{3
    elseif     b:netrw_method == 4
 "    call Decho("write via scp (method #4)")
     if exists("g:netrw_port") && g:netrw_port != ""
@@ -1188,7 +1180,7 @@ fun! netrw#NetWrite(...) range
     let b:netrw_lastfile = choice
 
    ".........................................
-   " http: NetWrite Method #5 {{{4
+   " NetWrite: (http) NetWrite Method #5 {{{3
    elseif     b:netrw_method == 5
 "    call Decho("write via http (method #5)")
     if !exists("g:netrw_quiet")
@@ -1196,13 +1188,19 @@ fun! netrw#NetWrite(...) range
     endif
 
    ".........................................
-   " dav: NetWrite Method #6 (cadaver) {{{4
+   " NetWrite: (dav) NetWrite Method #6 (cadaver) {{{3
    elseif     b:netrw_method == 6
 "    call Decho("write via cadaver (method #6)")
 
     " Construct execution string (four lines) which will be passed through filter
-    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
-    new
+    let netrw_fname = escape(b:netrw_fname,g:netrw_fname_escape)
+    let bhkeep      = &l:bh
+
+    " formerly just a "new...bd!", that changed the window sizes when equalalways.  Using enew workaround instead
+    let curbuf      = bufnr("%")
+    setlocal bh=hide
+    enew
+
     setlocal ff=unix
     if exists("g:netrw_port") && g:netrw_port != ""
      put ='open '.g:netrw_machine.' '.g:netrw_port
@@ -1218,11 +1216,17 @@ fun! netrw#NetWrite(...) range
     norm! 1Gdd
 "    call Decho("executing: %!".g:netrw_dav_cmd)
     exe s:netrw_silentxfer."%!".g:netrw_dav_cmd
-    bd!
+
+    " remove enew buffer (quietly)
+    let filtbuf= bufnr("%")
+    exe curbuf."b!"
+    let &l:bh            = bhkeep
+    exe filtbuf."bw!"
+
     let b:netrw_lastfile = choice
 
    ".........................................
-   " rsync: NetWrite Method #7 {{{4
+   " NetWrite: (rsync) NetWrite Method #7 {{{3
    elseif     b:netrw_method == 7
 "    call Decho("write via rsync (method #7)")
 "    call Decho("executing: !".g:netrw_rsync_cmd." ".shellescape(tmpfile,1)." ".shellescape(g:netrw_machine.":".b:netrw_fname,1))
@@ -1230,7 +1234,7 @@ fun! netrw#NetWrite(...) range
     let b:netrw_lastfile = choice
 
    ".........................................
-   " sftp: NetWrite Method #9 {{{4
+   " NetWrite: (sftp) NetWrite Method #9 {{{3
    elseif     b:netrw_method == 9
 "    call Decho("read via sftp (method #9)")
     let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
@@ -1239,24 +1243,32 @@ fun! netrw#NetWrite(...) range
     else
      let uid_machine = g:netrw_machine
     endif
-    new
+
+    " formerly just a "new...bd!", that changed the window sizes when equalalways.  Using enew workaround instead
+    let bhkeep = &l:bh
+    let curbuf = bufnr("%")
+    setlocal bh=hide
+    enew
+
     setlocal ff=unix
-    put ='put \"'.escape(tmpfile,'\').'\" '.netrw_fname
+    call setline(1,'put "'.escape(tmpfile,'\').'" '.netrw_fname)
 "    call Decho("filter input: ".getline('.'))
-    norm! 1Gdd
 "    call Decho("executing: %!".g:netrw_sftp_cmd.' '.shellescape(uid_machine,1))
     exe s:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.shellescape(uid_machine,1)
-    bd!
-    let b:netrw_lastfile= choice
+    let filtbuf= bufnr("%")
+    exe curbuf."b!"
+    let &l:bh            = bhkeep
+    exe filtbuf."bw!"
+    let b:netrw_lastfile = choice
 
    ".........................................
-   " Complain {{{4
+   " NetWrite: Complain {{{3
    else
     call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",17)
    endif
   endwhile
 
-  " Cleanup: {{{3
+  " NetWrite: Cleanup: {{{3
 "  call Decho("cleanup")
   if s:FileReadable(tmpfile)
 "   call Decho("tmpfile<".tmpfile."> readable, will now delete it")
@@ -1269,6 +1281,7 @@ fun! netrw#NetWrite(...) range
    let &mod= mod
   endif
 
+  " restore equalalways
 "  call Dret("netrw#NetWrite")
 endfun
 
@@ -1370,11 +1383,7 @@ fun! s:NetrwGetFile(readcmd, tfile, meth
    " rename buffer back to remote filename
 "   call Decho("exe silent! keepalt file ".fnameescape(rfile))
    exe "silent! keepalt file ".fnameescape(rfile)
-   if a:method == 5
-    set ft=html
-   else
-    filetype detect
-   endif
+   filetype detect
 "   call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!")
    let line1 = 1
    let line2 = line("$")
@@ -1406,7 +1415,7 @@ fun! s:NetrwGetFile(readcmd, tfile, meth
 "   call Decho("NetReadFixup() not called, doesn't exist  (line1=".line1." line2=".line2.")")
   endif
 
-  if has("gui") && has("menu") && has("gui_running") && &go =~ 'm'
+  if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
    " update the Buffers menu
    call s:UpdateBuffersMenu()
   endif
@@ -1422,18 +1431,34 @@ endfun
 
 " ------------------------------------------------------------------------
 " s:NetrwMethod:  determine method of transfer {{{2
-"  method == 1: rcp
-"	     2: ftp + <.netrc>
-"	     3: ftp + machine, id, password, and [path]filename
-"	     4: scp
-"	     5: http (wget)
-"	     6: cadaver
-"	     7: rsync
-"	     8: fetch
-"	     9: sftp
-fun! s:NetrwMethod(choice)  " globals: method machine id passwd fname
+" Input:
+"   choice = url   [protocol:]//[userid@]hostname[:port]/[path-to-file]
+" Output:
+"  b:netrw_method= 1: rcp                                             
+"                  2: ftp + <.netrc>                                  
+"	           3: ftp + machine, id, password, and [path]filename 
+"	           4: scp                                             
+"	           5: http (wget)                                     
+"	           6: dav
+"	           7: rsync                                           
+"	           8: fetch                                           
+"	           9: sftp                                            
+"  g:netrw_machine= hostname
+"  b:netrw_fname  = filename
+"  g:netrw_port   = optional port number (for ftp)
+"  g:netrw_choice = copy of input url (choice)
+fun! s:NetrwMethod(choice)
 "   call Dfunc("NetrwMethod(a:choice<".a:choice.">)")
 
+   " record current g:netrw_machine, if any
+   " curmachine used if protocol == ftp and no .netrc
+   if exists("g:netrw_machine")
+    let curmachine= g:netrw_machine
+"    call Decho("curmachine<".curmachine.">")
+   else
+    let curmachine= "N O T A HOST"
+   endif
+
   " initialization
   let b:netrw_method  = 0
   let g:netrw_machine = ""
@@ -1449,7 +1474,7 @@ fun! s:NetrwMethod(choice)  " globals: m
   " rcphf    : [user@]host:filename		     Use rcp
   " scpurm   : scp://[user@]host[[#:]port]/filename  Use scp
   " httpurm  : http://[user@]host/filename	     Use wget
-  " davurm   : dav[s]://host[:port]/path             Use cadaver
+  " davurm   : dav[s]://host[:port]/path             Use cadaver/curl
   " rsyncurm : rsync://host[:port]/path              Use rsync
   " fetchurm : fetch://[user@]host[:http]/filename   Use fetch (defaults to ftp, override for http)
   " sftpurm  : sftp://[user@]host/filename  Use scp
@@ -1518,9 +1543,14 @@ fun! s:NetrwMethod(choice)  " globals: m
    let g:netrw_machine= substitute(a:choice,ftpurm,'\3',"")
    let g:netrw_port   = substitute(a:choice,ftpurm,'\4',"")
    let b:netrw_fname  = substitute(a:choice,ftpurm,'\5',"")
+"   call Decho("g:netrw_machine<".g:netrw_machine.">")
    if userid != ""
     let g:netrw_uid= userid
    endif
+   if exists("s:netrw_passwd") && curmachine != g:netrw_machine
+    " if there's a change in hostname, require password re-entry
+    unlet s:netrw_passwd
+   endif
    if exists("g:netrw_uid") && exists("s:netrw_passwd")
     let b:netrw_method = 3
    else
@@ -1592,7 +1622,7 @@ fun! s:NetrwMethod(choice)  " globals: m
 
   else
    if !exists("g:netrw_quiet")
-    call netrw#ErrorMsg(s:WARNING,"cannot determine method",45)
+    call netrw#ErrorMsg(s:WARNING,"cannot determine method (format: protocol://[user@]hostname[:port]/[path])",45)
    endif
    let b:netrw_method  = -1
   endif
@@ -1626,10 +1656,24 @@ endfun
 if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp
  fun! NetReadFixup(method, line1, line2)
 "   call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
+
+   " sanity checks -- attempt to convert inputs to integers
+   let method = a:method + 0
+   let line1  = a:line1 + 0
+   let line2  = a:line2 + 0
+   if type(method) != 0 || type(line1) != 0 || type(line2) != 0 || method < 0 || line1 <= 0 || line2 <= 0
+"    call Dret("NetReadFixup")
+    return
+   endif
+
    if method == 3   " ftp (no <.netrc>)
     let fourblanklines= line2 - 3
-    silent fourblanklines.",".line2."g/^\s*/d"
-   endif
+    if fourblanklines >= line1
+     exe "silent ".fourblanklines.",".line2."g/^\s*$/d"
+     call histdel("/",-1)
+    endif
+   endif
+
 "   call Dret("NetReadFixup")
  endfun
 endif
@@ -1678,7 +1722,7 @@ fun! s:BrowserMaps(islocal)
    nnoremap <buffer> <silent> <cr>	:call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr>
    nnoremap <buffer> <silent> -		:exe "norm! 0"<bar>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,'../'))<cr>
    nnoremap <buffer> <silent> a		:call <SID>NetrwHide(1)<cr>
-   nnoremap <buffer> <silent> mb	:<c-u>call <SID>NetrwBookmarkDir(0,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> mb	:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
    nnoremap <buffer> <silent> mc	:<c-u>call <SID>NetrwMarkFileCopy(1)<cr>
    nnoremap <buffer> <silent> md	:<c-u>call <SID>NetrwMarkFileDiff(1)<cr>
    nnoremap <buffer> <silent> me	:<c-u>call <SID>NetrwMarkFileEdit(1)<cr>
@@ -1694,25 +1738,28 @@ fun! s:BrowserMaps(islocal)
    nnoremap <buffer> <silent> mu	:<c-u>call <SID>NetrwUnMarkFile(1)<cr>
    nnoremap <buffer> <silent> mx	:<c-u>call <SID>NetrwMarkFileExe(1)<cr>
    nnoremap <buffer> <silent> mz	:<c-u>call <SID>NetrwMarkFileCompress(1)<cr>
-   nnoremap <buffer> <silent> gb	:<c-u>call <SID>NetrwBookmarkDir(1,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> gb	:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
    nnoremap <buffer> <silent> gh	:<c-u>call <SID>NetrwHidden(1)<cr>
+   nnoremap <buffer> <silent> gp	:<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr>
    nnoremap <buffer> <silent> c		:exe "keepjumps lcd ".fnameescape(b:netrw_curdir)<cr>
    nnoremap <buffer> <silent> C		:let g:netrw_chgwin= winnr()<cr>
    nnoremap <buffer> <silent> d		:call <SID>NetrwMakeDir("")<cr>
    nnoremap <buffer> <silent> i		:call <SID>NetrwListStyle(1)<cr>
+   nnoremap <buffer> <silent> I		:call <SID>NetrwBannerCtrl(1)<cr>
    nnoremap <buffer> <silent> o		:call <SID>NetrwSplit(3)<cr>
    nnoremap <buffer> <silent> O		:call <SID>NetrwObtain(1)<cr>
    nnoremap <buffer> <silent> p		:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
    nnoremap <buffer> <silent> P		:call <SID>NetrwPrevWinOpen(1)<cr>
-   nnoremap <buffer> <silent> qb	:<c-u>call <SID>NetrwBookmarkDir(2,b:netrw_curdir)<cr>
-   nnoremap <buffer> <silent> mB	:<c-u>call <SID>NetrwBookmarkDir(6,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> qb	:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> mB	:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
    nnoremap <buffer> <silent> qf	:<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr>
    nnoremap <buffer> <silent> r		:let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr>
    nnoremap <buffer> <silent> s		:call <SID>NetrwSortStyle(1)<cr>
    nnoremap <buffer> <silent> S		:call <SID>NetSortSequence(1)<cr>
    nnoremap <buffer> <silent> t		:call <SID>NetrwSplit(4)<cr>
-   nnoremap <buffer> <silent> u		:<c-u>call <SID>NetrwBookmarkDir(4,expand("%"))<cr>
-   nnoremap <buffer> <silent> U		:<c-u>call <SID>NetrwBookmarkDir(5,expand("%"))<cr>
+   nnoremap <buffer> <silent> T		:call <SID>NetrwSplit(4)<bar>norm! gT<cr>
+   nnoremap <buffer> <silent> u		:<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
+   nnoremap <buffer> <silent> U		:<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
    nnoremap <buffer> <silent> v		:call <SID>NetrwSplit(5)<cr>
    nnoremap <buffer> <silent> x		:call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
    nnoremap <buffer> <silent> %		:call <SID>NetrwOpenFile(1)<cr>
@@ -1754,7 +1801,7 @@ fun! s:BrowserMaps(islocal)
    nnoremap <buffer> <silent> <c-l>	:call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
    nnoremap <buffer> <silent> -		:exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'../'))<cr>
    nnoremap <buffer> <silent> a		:call <SID>NetrwHide(0)<cr>
-   nnoremap <buffer> <silent> mb	:<c-u>call <SID>NetrwBookmarkDir(0,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> mb	:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
    nnoremap <buffer> <silent> mc	:<c-u>call <SID>NetrwMarkFileCopy(0)<cr>
    nnoremap <buffer> <silent> md	:<c-u>call <SID>NetrwMarkFileDiff(0)<cr>
    nnoremap <buffer> <silent> me	:<c-u>call <SID>NetrwMarkFileEdit(0)<cr>
@@ -1770,23 +1817,26 @@ fun! s:BrowserMaps(islocal)
    nnoremap <buffer> <silent> mu	:<c-u>call <SID>NetrwUnMarkFile(0)<cr>
    nnoremap <buffer> <silent> mx	:<c-u>call <SID>NetrwMarkFileExe(0)<cr>
    nnoremap <buffer> <silent> mz	:<c-u>call <SID>NetrwMarkFileCompress(0)<cr>
-   nnoremap <buffer> <silent> gb	:<c-u>call <SID>NetrwBookmarkDir(1,b:netrw_cur)<cr>
+   nnoremap <buffer> <silent> gb	:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_cur)<cr>
    nnoremap <buffer> <silent> gh	:<c-u>call <SID>NetrwHidden(0)<cr>
+   nnoremap <buffer> <silent> gp	:<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr>
    nnoremap <buffer> <silent> C		:let g:netrw_chgwin= winnr()<cr>
    nnoremap <buffer> <silent> i		:call <SID>NetrwListStyle(0)<cr>
+   nnoremap <buffer> <silent> I		:call <SID>NetrwBannerCtrl(1)<cr>
    nnoremap <buffer> <silent> o		:call <SID>NetrwSplit(0)<cr>
    nnoremap <buffer> <silent> O		:call <SID>NetrwObtain(0)<cr>
    nnoremap <buffer> <silent> p		:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
    nnoremap <buffer> <silent> P		:call <SID>NetrwPrevWinOpen(0)<cr>
-   nnoremap <buffer> <silent> qb	:<c-u>call <SID>NetrwBookmarkDir(2,b:netrw_curdir)<cr>
-   nnoremap <buffer> <silent> mB	:<c-u>call <SID>NetrwBookmarkDir(6,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> qb	:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> mB	:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
    nnoremap <buffer> <silent> qf	:<c-u>call <SID>NetrwFileInfo(0,<SID>NetrwGetWord())<cr>
    nnoremap <buffer> <silent> r		:let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
    nnoremap <buffer> <silent> s		:call <SID>NetrwSortStyle(0)<cr>
    nnoremap <buffer> <silent> S		:call <SID>NetSortSequence(0)<cr>
    nnoremap <buffer> <silent> t		:call <SID>NetrwSplit(1)<cr>
-   nnoremap <buffer> <silent> u		:<c-u>call <SID>NetrwBookmarkDir(4,b:netrw_curdir)<cr>
-   nnoremap <buffer> <silent> U		:<c-u>call <SID>NetrwBookmarkDir(5,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> T		:call <SID>NetrwSplit(1)<bar>norm! gT<cr>
+   nnoremap <buffer> <silent> u		:<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> U		:<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr>
    nnoremap <buffer> <silent> v		:call <SID>NetrwSplit(2)<cr>
    nnoremap <buffer> <silent> x		:call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr>
    nnoremap <buffer> <silent> %		:call <SID>NetrwOpenFile(0)<cr>
@@ -1836,7 +1886,7 @@ fun! s:ExplorePatHls(pattern)
 endfun
 
 " ---------------------------------------------------------------------
-"  s:NetrwBookmarkDir: {{{2
+"  s:NetrwBookHistHandler: {{{2
 "    0: (user: <mb>)   bookmark current directory
 "    1: (user: <gb>)   change to the bookmarked directory
 "    2: (user: <qb>)   list bookmarks
@@ -1844,32 +1894,27 @@ endfun
 "    4: (user: <u>)    go up   (previous) bookmark
 "    5: (user: <U>)    go down (next)     bookmark
 "    6: (user: <mB>)   delete bookmark
-fun! s:NetrwBookmarkDir(chg,curdir)
-"  call Dfunc("NetrwBookmarkDir(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." bookmax=".g:NETRW_BOOKMARKMAX." histmax=".g:netrw_dirhistmax)
+fun! s:NetrwBookHistHandler(chg,curdir)
+"  call Dfunc("NetrwBookHistHandler(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." histcnt=".g:netrw_dirhist_cnt." histmax=".g:netrw_dirhistmax)
 
   if a:chg == 0
    " bookmark the current directory
 "   call Decho("(user: <b>) bookmark the current directory")
-   if v:count > 0
-    " handle bookmark# specified via the count
-    let g:NETRW_BOOKMARKDIR_{v:count}= a:curdir
-    if !exists("g:NETRW_BOOKMARKMAX")
-     let g:NETRW_BOOKMARKMAX= v:count
-    elseif v:count > g:NETRW_BOOKMARKMAX
-     let g:NETRW_BOOKMARKMAX= v:count
-    endif
-   else
-    " handle no count specified
-    let g:NETRW_BOOKMARKMAX                       = g:NETRW_BOOKMARKMAX + 1
-    let g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX} = a:curdir
+   if !exists("g:netrw_bookmarklist")
+    let g:netrw_bookmarklist= []
+   endif
+   if index(g:netrw_bookmarklist,a:curdir) == -1
+    " curdir not currently in g:netrw_bookmarklist, so include it
+    call add(g:netrw_bookmarklist,a:curdir)
+    call sort(g:netrw_bookmarklist)
    endif
    echo "bookmarked the current directory"
 
   elseif a:chg == 1
    " change to the bookmarked directory
-"   call Decho("(user: <B>) change to the bookmarked directory")
-   if exists("g:NETRW_BOOKMARKDIR_{v:count}")
-    exe "e ".fnameescape(g:NETRW_BOOKMARKDIR_{v:count})
+"   call Decho("(user: <".v:count."mb>) change to the bookmarked directory")
+   if exists("g:netrw_bookmarklist[v:count-1]")
+    exe "e ".fnameescape(g:netrw_bookmarklist[v:count-1])
    else
     echomsg "Sorry, bookmark#".v:count." doesn't exist!"
    endif
@@ -1879,29 +1924,27 @@ fun! s:NetrwBookmarkDir(chg,curdir)
    let didwork= 0
    " list user's bookmarks
 "   call Decho("(user: <q>) list user's bookmarks")
-   if exists("g:NETRW_BOOKMARKMAX")
-"    call Decho("list bookmarks [0,".g:NETRW_BOOKMARKMAX."]")
-    let cnt= 0
-    while cnt <= g:NETRW_BOOKMARKMAX
-     if exists("g:NETRW_BOOKMARKDIR_{cnt}")
-"      call Decho("Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt})
-      echo "Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt}
-      let didwork= 1
-     endif
-     let cnt= cnt + 1
-    endwhile
+   if exists("g:netrw_bookmarklist")
+"    call Decho('list '.len(g:netrw_bookmarklist).' bookmarks')
+    let cnt= 1
+    for bmd in g:netrw_bookmarklist
+"     call Decho("Netrw Bookmark#".cnt.": ".g:netrw_bookmarklist[cnt-1])
+     echo "Netrw Bookmark#".cnt.": ".g:netrw_bookmarklist[cnt-1]
+     let didwork = 1
+     let cnt     = cnt + 1
+    endfor
    endif
 
    " list directory history
-   let cnt     = g:NETRW_DIRHIST_CNT
+   let cnt     = g:netrw_dirhist_cnt
    let first   = 1
    let histcnt = 0
-   while ( first || cnt != g:NETRW_DIRHIST_CNT )
-"    call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:NETRW_DIRHIST_CNT)
+   while ( first || cnt != g:netrw_dirhist_cnt )
+"    call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:netrw_dirhist_cnt)
     let histcnt= histcnt + 1
-    if exists("g:NETRW_DIRHIST_{cnt}")
-"     call Decho("Netrw  History#".histcnt.": ".g:NETRW_DIRHIST_{cnt})
-     echo "Netrw  History#".histcnt.": ".g:NETRW_DIRHIST_{cnt}
+    if exists("g:netrw_dirhist_{cnt}")
+"     call Decho("Netrw  History#".histcnt.": ".g:netrw_dirhist_{cnt})
+     echo "Netrw  History#".histcnt.": ".g:netrw_dirhist_{cnt}
      let didwork= 1
     endif
     let first = 0
@@ -1917,22 +1960,21 @@ fun! s:NetrwBookmarkDir(chg,curdir)
   elseif a:chg == 3
    " saves most recently visited directories (when they differ)
 "   call Decho("(browsing) record curdir history")
-   if !exists("g:NETRW_DIRHIST_0") || g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} != a:curdir
-    let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
-"    let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= substitute(a:curdir,'[/\\]$','','e')
-    let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= a:curdir
-"    call Decho("save dirhist#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
+   if !exists("g:netrw_dirhist_cnt") || !exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") || g:netrw_dirhist_{g:netrw_dirhist_cnt} != a:curdir
+    let g:netrw_dirhist_cnt                   = ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
+    let g:netrw_dirhist_{g:netrw_dirhist_cnt} = a:curdir
+"    call Decho("save dirhist#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
    endif
 
   elseif a:chg == 4
    " u: change to the previous directory stored on the history list
 "   call Decho("(user: <u>) chg to prev dir from history")
-   let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax
-   if g:NETRW_DIRHIST_CNT < 0
-    let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax
-   endif
-   if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}")
-"    call Decho("changedir u#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
+   let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax
+   if g:netrw_dirhist_cnt < 0
+    let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax
+   endif
+   if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}")
+"    call Decho("changedir u#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
     if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
      setlocal ma noro
 "     call Decho("setlocal ma noro")
@@ -1940,19 +1982,19 @@ fun! s:NetrwBookmarkDir(chg,curdir)
      setlocal nomod
 "     call Decho("setlocal nomod")
     endif
-"    "    call Decho("exe e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}))
-    exe "e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})
+"    "    call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}))
+    exe "e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})
    else
-    let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
+    let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
     echo "Sorry, no predecessor directory exists yet"
    endif
 
   elseif a:chg == 5
    " U: change to the subsequent directory stored on the history list
 "   call Decho("(user: <U>) chg to next dir from history")
-   let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
-   if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}")
-"    call Decho("changedir U#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
+   let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
+   if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}")
+"    call Decho("changedir U#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
     if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
      setlocal ma noro
 "     call Decho("setlocal ma noro")
@@ -1961,57 +2003,108 @@ fun! s:NetrwBookmarkDir(chg,curdir)
      setlocal nomod
 "     call Decho("setlocal nomod")
     endif
-"    call Decho("exe e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}))
-    exe "e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})
+"    call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}))
+    exe "e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})
    else
-    let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax
-    if g:NETRW_DIRHIST_CNT < 0
-     let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax
+    let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax
+    if g:netrw_dirhist_cnt < 0
+     let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax
     endif
     echo "Sorry, no successor directory exists yet"
    endif
 
   elseif a:chg == 6
-   if v:count > 0 && v:count == g:NETRW_BOOKMARKMAX
-    " delete the v:count'th bookmark
-"    call Decho("delete bookmark#".v:count."<".g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}.">")
-    unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}
-    let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1
-
-   elseif v:count > 0
-"    call Decho("delete by shifting bookmark#".v:count."<".g:NETRW_BOOKMARKDIR_{v:count}.">")
-    let cnt= v:count
-    while cnt < g:NETRW_BOOKMARKMAX
-     let g:NETRW_BOOKMARKDIR_{cnt} = g:NETRW_BOOKMARKDIR_{(cnt+1)}
-     let cnt                       = cnt + 1
-    endwhile
-    unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}
-    let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1
-
-   elseif exists("b:netrw_curdir")
-    " look for current directory amongst the bookmarks and remove that bookmark
-"    call Decho("search for bookmark<".b:netrw_curdir.">")
-    let cnt= 1
-    while cnt <= g:NETRW_BOOKMARKMAX
-"     call Decho("checking: g:NETRW_BOOKMARKDIR_".cnt."<".g:NETRW_BOOKMARKDIR_{cnt}.">")
-     if g:NETRW_BOOKMARKDIR_{cnt} == b:netrw_curdir
-      if cnt < g:NETRW_BOOKMARKMAX
-"       call Decho("delete bookmark#".cnt."<".b:netrw_curdir.">")
-       while cnt < g:NETRW_BOOKMARMAX
-        let g:NETRW_BOOKMARKDIR_{cnt} = g:NETRW_BOOKMARKDIR_{(cnt+1)}
-        let cnt                       = cnt + 1
-       endwhile
-      endif
-      unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}
-      let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1
-     endif
-     let cnt= cnt + 1
-    endwhile
-   endif
-
+   " delete the v:count'th bookmark
+"   call Decho("delete bookmark#".v:count."<".g:netrw_bookmarklist[v:count-1].">")
+   let savefile= s:NetrwHome()."/.netrwbook"
+   if filereadable(savefile)
+    call s:NetrwBookHistSave() " done here to merge bookmarks first
+    call delete(savefile)
+   endif
+   call remove(g:netrw_bookmarklist,v:count-1)
   endif
   call s:NetrwBookmarkMenu()
-"  call Dret("NetrwBookmarkDir")
+"  call Dret("NetrwBookHistHandler")
+endfun
+
+" ---------------------------------------------------------------------
+" s:NetrwBookHistRead: this function reads bookmarks and history {{{2
+"                      Sister function: s:NetrwBookHistSave()
+fun! s:NetrwBookHistRead()
+"  call Dfunc("s:NetrwBookHistRead()")
+  if !exists("s:netrw_initbookhist")
+   let home    = s:NetrwHome()
+   let savefile= home."/.netrwbook"
+   if filereadable(savefile)
+"    call Decho("sourcing .netrwbook")
+    exe "so ".savefile
+   endif
+   let savefile= home."/.netrwhist"
+   if filereadable(savefile)
+"    call Decho("sourcing .netrwhist")
+    exe "so ".savefile
+   endif
+   let s:netrw_initbookhist= 1
+   au VimLeave * call s:NetrwBookHistSave()
+  endif
+"  call Dret("s:NetrwBookHistRead")
+endfun
+
+" ---------------------------------------------------------------------
+" s:NetrwBookHistSave: this function saves bookmarks and history {{{2
+"                      Sister function: s:NetrwBookHistRead()
+"                      I used to do this via viminfo but that appears to
+"                      be unreliable for long-term storage
+"                      COMBAK: does $HOME work under windows???
+fun! s:NetrwBookHistSave()
+"  call Dfunc("s:NetrwBookHistSave() dirhistmax=".g:netrw_dirhistmax)
+  let savefile= s:NetrwHome()."/.netrwhist"
+  1split
+  call s:NetrwEnew()
+  setlocal cino= com= cpo-=aA fo=nroql2 tw=0 report=10000 noswf
+  setlocal nocin noai noci magic nospell nohid wig= noaw
+  setlocal ma noro write
+  if exists("&acd") | setlocal noacd | endif
+  silent %d
+
+  " save .netrwhist -- no attempt to merge
+  silent! file .netrwhist
+  call setline(1,"let g:netrw_dirhistmax  =".g:netrw_dirhistmax)
+  call setline(2,"let g:netrw_dirhist_cnt =".g:netrw_dirhist_cnt)
+  let lastline = line("$")
+  let cnt      = 1
+  while cnt <= g:netrw_dirhist_cnt
+   call setline((cnt+lastline),'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'")
+   let cnt= cnt + 1
+  endwhile
+  exe "silent! w! ".savefile
+
+  silent %d
+  if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != []
+   " merge and write .netrwbook
+   let savefile= s:NetrwHome()."/.netrwbook"
+
+   if filereadable(savefile)
+    let booklist= deepcopy(g:netrw_bookmarklist)
+    exe "silent so ".savefile
+    for bdm in booklist
+     if index(g:netrw_bookmarklist,bdm) == -1
+      call add(g:netrw_bookmarklist,bdm)
+     endif
+    endfor
+    call sort(g:netrw_bookmarklist)
+    exe "silent! w! ".savefile
+   endif
+
+   " construct and save .netrwbook
+   call setline(1,"let g:netrw_bookmarklist= ".string(g:netrw_bookmarklist))
+   exe "silent! w! ".savefile
+  endif
+  let bgone= bufnr("%")
+  q!
+  exe bgone."bwipe!"
+
+"  call Dret("s:NetrwBookHistSave")
 endfun
 
 " ---------------------------------------------------------------------
@@ -2024,6 +2117,18 @@ fun! s:NetrwBrowse(islocal,dirname)
 "  call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%").">")
 "  call Decho("tab#".tabpagenr()." win#".winnr())
 "  call Dredir("ls!")
+  if !exists("s:netrw_initbookhist")
+   call s:NetrwBookHistRead()
+  endif
+"  call FOTEST(7)
+
+  " simplify the dirname (especially for ".."s in dirnames)
+  if a:dirname !~ '^\a\+://'
+   let dirname= simplify(a:dirname)
+  else
+   let dirname= a:dirname
+  endif
+"  call FOTEST(8)
 
   if exists("s:netrw_skipbrowse")
    unlet s:netrw_skipbrowse
@@ -2043,37 +2148,40 @@ fun! s:NetrwBrowse(islocal,dirname)
   endif
 
   call s:NetrwOptionSave("w:")
-  call s:NetrwSafeOptions()
+"  call FOTEST(9)
 
   " re-instate any marked files
   if exists("s:netrwmarkfilelist_{bufnr('%')}")
 "   call Decho("clearing marked files")
    exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
   endif
+"  call FOTEST(10)
 
   if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep
 "   call Decho("handle w:netrw_acdkeep:")
-"   call Decho("keepjumps lcd ".fnameescape(a:dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")")
-   exe 'keepjumps lcd '.fnameescape(a:dirname)
+"   call Decho("keepjumps lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")")
+   exe 'keepjumps lcd '.fnameescape(dirname)
+   call s:NetrwSafeOptions()
 "   call Decho("getcwd<".getcwd().">")
 
-  elseif !a:islocal && a:dirname !~ '[\/]$' && a:dirname !~ '^"'
+  elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"'
    " looks like a regular file, attempt transfer
-"   call Decho("attempt transfer as regular file<".a:dirname.">")
+"   call Decho("attempt transfer as regular file<".dirname.">")
 
    " remove any filetype indicator from end of dirname, except for the {{{3
    " "this is a directory" indicator (/).
    " There shouldn't be one of those here, anyway.
-   let path= substitute(a:dirname,'[*=@|]\r\=$','','e')
+   let path= substitute(dirname,'[*=@|]\r\=$','','e')
 "   call Decho("new path<".path.">")
-   call s:RemotePathAnalysis(a:dirname)
+   call s:RemotePathAnalysis(dirname)
 
    " remote-read the requested file into current buffer {{{3
    mark '
-   call s:NetrwEnew(a:dirname)
+   call s:NetrwEnew(dirname)
+   call s:NetrwSafeOptions()
    setlocal ma noro
 "   call Decho("setlocal ma noro")
-   let b:netrw_curdir= a:dirname
+   let b:netrw_curdir= dirname
 "   call Decho("exe silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)." (bt=".&bt.")")
    exe "silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)
    exe "silent keepalt doau BufReadPre ".fnameescape(s:fname)
@@ -2092,17 +2200,19 @@ fun! s:NetrwBrowse(islocal,dirname)
 "   call Dret("s:NetrwBrowse : file<".s:fname.">")
    return
   endif
+"  call FOTEST(11)
 
   " use buffer-oriented WinVars if buffer ones exist but window ones don't {{{3
   call s:UseBufWinVars()
 
   " set up some variables {{{3
   let b:netrw_browser_active = 1
-  let dirname                = a:dirname
+  let dirname                = dirname
   let s:last_sort_by         = g:netrw_sort_by
 
   " set up menu {{{3
   call s:NetrwMenu(1)
+"  call FOTEST(12)
 
   " set up buffer {{{3
   let reusing= s:NetrwGetBuffer(a:islocal,dirname)
@@ -2122,6 +2232,7 @@ fun! s:NetrwBrowse(islocal,dirname)
 "   call Dret("s:NetrwBrowse : re-using buffer")
    return
   endif
+""  call FOTEST(13) " PROBLEM WITH LISTING
 
   " set b:netrw_curdir to the new directory name {{{3
 "  call Decho("set b:netrw_curdir to the new directory name:")
@@ -2143,6 +2254,7 @@ fun! s:NetrwBrowse(islocal,dirname)
    let b:netrw_curdir= b:netrw_curdir.'/'
   endif
 "  call Decho("b:netrw_curdir<".b:netrw_curdir.">")
+""  call FOTEST(14) " PROBLEM WITH LISTING
 
   " ------------
   " (local only) {{{3
@@ -2183,11 +2295,11 @@ fun! s:NetrwBrowse(islocal,dirname)
   else
 "   call Decho("remote only:")
 
-   " analyze a:dirname and g:netrw_list_cmd {{{4
-"   call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist")."> a:dirname<".a:dirname.">")
-   if a:dirname =~ "^NetrwTreeListing\>"
+   " analyze dirname and g:netrw_list_cmd {{{4
+"   call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist")."> dirname<".dirname.">")
+   if dirname =~ "^NetrwTreeListing\>"
     let dirname= b:netrw_curdir
-"    call Decho("(dirname was ".a:dirname.") dirname<".dirname.">")
+"    call Decho("(dirname was ".dirname.") dirname<".dirname.">")
    elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
     let dirname= substitute(b:netrw_curdir,'\\','/','g')
     if dirname !~ '/$'
@@ -2196,7 +2308,7 @@ fun! s:NetrwBrowse(islocal,dirname)
     let b:netrw_curdir = dirname
 "    call Decho("(liststyle is TREELIST) dirname<".dirname.">")
    else
-    let dirname = substitute(a:dirname,'\\','/','g')
+    let dirname = substitute(dirname,'\\','/','g')
 "    call Decho("(normal) dirname<".dirname.">")
    endif
 
@@ -2214,12 +2326,23 @@ fun! s:NetrwBrowse(islocal,dirname)
    let b:netrw_curdir= dirname
 "   call Decho("b:netrw_curdir<".b:netrw_curdir."> (remote)")
   endif  " (additional remote handling)
+""  call FOTEST(15) " PROBLEM WITH LISTING
 
   " -----------------------
   " Directory Listing: {{{3
   " -----------------------
   call s:BrowserMaps(a:islocal)
+""  call FOTEST(16) " PROBLEM WITH LISTING
   call s:PerformListing(a:islocal)
+"  call FOTEST(17)
+
+  " The s:LocalBrowseShellCmdRefresh() function is called by an autocmd
+  " installed by s:LocalFastBrowser() when g:netrw_fastbrowse <= 1 (ie. slow, medium speed).
+  " However, s:NetrwBrowse() causes the ShellCmdPost event itself to fire once; setting
+  " the variable below avoids that second refresh of the screen.  The s:LocalBrowseShellCmdRefresh()
+  " function gets called due to that autocmd; it notices that the following variable is set
+  " and skips the refresh and sets s:locbrowseshellcmd to zero. Oct 13, 2008
+  let s:locbrowseshellcmd= 1
 
 "  call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
 "  call Dret("s:NetrwBrowse : did PerformListing")
@@ -2274,13 +2397,14 @@ fun! s:NetrwGetBuffer(islocal,dirname)
 "  call Decho("--re-use a buffer if possible--")
   if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
    " find NetrwTreeList buffer if there is one
+"   call Decho("find NetrwTreeList buffer if there is one")
    if exists("w:netrw_treebufnr") && w:netrw_treebufnr > 0
 "    call Decho("  re-use w:netrw_treebufnr=".w:netrw_treebufnr)
     let eikeep= &ei
     set ei=all
     exe "b ".w:netrw_treebufnr
     let &ei= eikeep
-"    call Dret("s:NetrwGetBuffer : bufnum#".bufnum."<NetrwTreeListing>")
+"    call Dret("s:NetrwGetBuffer : bufnum#".w:netrw_treebufnr."<NetrwTreeListing>")
     return
    endif
    let bufnum= -1
@@ -2297,7 +2421,7 @@ fun! s:NetrwGetBuffer(islocal,dirname)
 "   call Decho("  bufnr(dirname<".escape(dirname,'\').">)=".bufnum)
 
    if bufnum < 0 && dirname !~ '/$'
-    " trying appending a trailing /
+    " try appending a trailing /
 "    call Decho("  try appending a trailing / to dirname<".dirname.">")
     let bufnum= bufnr(escape(dirname.'/','\'))
     if bufnum > 0
@@ -2306,7 +2430,7 @@ fun! s:NetrwGetBuffer(islocal,dirname)
    endif
 
    if bufnum < 0 && dirname =~ '/$'
-    " trying removing a trailing /
+    " try removing a trailing /
 "    call Decho("  try removing a trailing / from dirname<".dirname.">")
     let bufnum= bufnr(escape(substitute(dirname,'/$','',''),'\'))
     if bufnum > 0
@@ -2318,17 +2442,26 @@ fun! s:NetrwGetBuffer(islocal,dirname)
    " note: !~ was used just below, but that means using ../ to go back would match (ie. abc/def/  and abc/ matches)
    if bufnum > 0 && bufname(bufnum) != dirname && bufname(bufnum) != '.'
     " handle approximate matches
-"    call Decho("  handling approx match: bufnum#%d<".bufname(bufnum)."> approx=dirname<".dirname.">")
+"    call Decho("  handling approx match: bufnum#".bufnum."<".bufname(bufnum)."> approx-dirname<".dirname.">")
     let ibuf    = 1
     let buflast = bufnr("$")
 "    call Decho("  findbuf2: buflast=".buflast)
     while ibuf <= buflast
      let bname= substitute(bufname(ibuf),'\\','/','g')
      let bname= substitute(bname,'.\zs/$','','')
-"     call Decho("  findbuf3: dirname<".dirname."> bufname(".ibuf.")<".bname.">")
-     if bname != '' && dirname =~ '/'.bname.'/\=$' | break | endif
-     if bname   =~ '^'.dirname.'/\=$' | break | endif
-     if dirname =~ '^'.bname.'/$'     | break | endif
+"     call Decho("  findbuf3: while [ibuf=",ibuf."]<=[buflast=".buflast."]: dirname<".dirname."> bufname(".ibuf.")<".bname.">")
+     if bname   != '' && dirname =~ '/'.bname.'/\=$' && dirname !~ '^/'
+"      call Decho("  findbuf3: passes test 1 : dirname<".dirname.'> =~ /'.bname.'/\=$ && dirname !~ ^/')
+      break
+     endif
+     if bname   =~ '^'.dirname.'/\=$'
+"      call Decho('  findbuf3: passes test 2 : bname<'.bname.'>=~^'.dirname.'/\=$')
+      break
+     endif
+     if dirname =~ '^'.bname.'/$'
+"      call Decho('  findbuf3: passes test 3 : dirname<'.dirname.'>=~^'.bname.'/$')
+      break
+     endif
      let ibuf= ibuf + 1
     endwhile
     if ibuf > buflast
@@ -2510,6 +2643,7 @@ fun! s:NetrwGetWord()
    if !exists("b:netrw_cpf")
     let b:netrw_cpf= 0
     exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
+    call histdel("/",-1)
 "   call Decho("computed cpf=".b:netrw_cpf)
    endif
 
@@ -2621,6 +2755,22 @@ fun! s:NetrwListStyle(islocal)
   let svpos= netrw#NetrwSavePosn()
   call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
   call netrw#NetrwRestorePosn(svpos)
+  if w:netrw_liststyle != s:WIDELIST
+   if g:netrw_cursorline == 2
+    setlocal cursorline
+    let &cursorcolumn= s:netrw_usercuc
+   elseif g:netrw_cursorline
+    setlocal cursorline
+"    call Decho("setlocal cursorline")
+   endif
+  else
+   if g:netrw_cursorline == 2
+    setlocal cursorline cursorcolumn
+"    call Decho("setlocal cursorline cursorcolumn")
+   elseif g:netrw_cursorline
+    let &cursorline= s:netrw_usercul
+   endif
+  endif
 
   " keep cursor on the filename
   silent keepjumps $
@@ -2634,6 +2784,29 @@ fun! s:NetrwListStyle(islocal)
 endfun
 
 " ---------------------------------------------------------------------
+" s:NetrwBannerCtrl: toggles the display of the banner {{{2
+fun! s:NetrwBannerCtrl(islocal)
+"  call Dfunc("s:NetrwBannerCtrl(islocal=".a:islocal.") g:netrw_banner=".g:netrw_banner)
+
+  " toggle the banner (enable/suppress)
+  let g:netrw_banner= !g:netrw_banner
+
+  " refresh the listing
+  let svpos= netrw#NetrwSavePosn()
+  call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+
+  " keep cursor on the filename
+  let fname= s:NetrwGetWord()
+  silent keepjumps $
+  let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc')
+"  call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'))
+  if result <= 0 && exists("w:netrw_bannercnt")
+   exe "keepjumps ".w:netrw_bannercnt
+  endif
+"  call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner)
+endfun
+
+" ---------------------------------------------------------------------
 " s:NetrwBookmarkMenu: Uses menu priorities {{{2
 "                      .2.[cnt] for bookmarks, and
 "                      .3.[cnt] for history
@@ -2642,37 +2815,47 @@ fun! s:NetrwBookmarkMenu()
   if !exists("s:netrw_menucnt")
    return
   endif
-"  call Dfunc("NetrwBookmarkMenu() bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." menucnt=".s:netrw_menucnt)
+"  call Dfunc("NetrwBookmarkMenu()  histcnt=".g:netrw_dirhist_cnt." menucnt=".s:netrw_menucnt)
 
   " the following test assures that gvim is running, has menus available, and has menus enabled.
   if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
    if exists("g:NetrwTopLvlMenu")
 "    call Decho("removing ".g:NetrwTopLvlMenu."Bookmarks menu item(s)")
     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks'
+    exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete'
+   endif
+   if !exists("s:netrw_initbookhist")
+    call s:NetrwBookHistRead()
    endif
 
    " show bookmarked places
-   let cnt       = 1
-   while cnt <= g:NETRW_BOOKMARKMAX
-    if exists("g:NETRW_BOOKMARKDIR_{cnt}")
-     let bmdir= escape(g:NETRW_BOOKMARKDIR_{cnt},'. ')
-"     call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmdir.'	:e '.bmdir)
-     exe 'silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmdir.'	:e '.bmdir."\<cr>"
-    endif
-    let cnt= cnt + 1
-   endwhile
+   if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != []
+    let cnt= 1
+    for bmd in g:netrw_bookmarklist
+"     call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmd.'	:e '.bmd)
+     let bmd= escape(bmd,'. ')
+
+     " show bookmarks for goto menu
+     exe 'silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmd.'	:e '.bmd."\<cr>"
+
+     " show bookmarks for deletion menu
+     exe 'silent! menu '.g:NetrwMenuPriority.".8.2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete.'.bmd.'	'.cnt."mB"
+     let cnt= cnt + 1
+    endfor
+
+   endif
 
    " show directory browsing history
-   let cnt     = g:NETRW_DIRHIST_CNT
+   let cnt     = g:netrw_dirhist_cnt
    let first   = 1
    let histcnt = 0
-   while ( first || cnt != g:NETRW_DIRHIST_CNT )
+   while ( first || cnt != g:netrw_dirhist_cnt )
     let histcnt  = histcnt + 1
-    let priority = g:NETRW_DIRHIST_CNT + histcnt
-    if exists("g:NETRW_DIRHIST_{cnt}")
-     let bmdir= escape(g:NETRW_DIRHIST_{cnt},'/&? ')
-"     call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.'	:e '.bmdir)
-     exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.'	:e '.bmdir."\<cr>"
+    let priority = g:netrw_dirhist_cnt + histcnt
+    if exists("g:netrw_dirhist_{cnt}")
+     let histdir= escape(g:netrw_dirhist_{cnt},'./&? ')
+"     call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.'	:e '.histdir)
+     exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.'	:e '.histdir."\<cr>"
     endif
     let first = 0
     let cnt   = ( cnt - 1 ) % g:netrw_dirhistmax
@@ -2680,6 +2863,7 @@ fun! s:NetrwBookmarkMenu()
      let cnt= cnt + g:netrw_dirhistmax
     endif
    endwhile
+
   endif
 "  call Dret("NetrwBookmarkMenu")
 endfun
@@ -2702,6 +2886,19 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
    return
   endif
 
+  " check if the status bar was clicked on instead of a file/directory name
+  call feedkeys("\<LeftMouse>")
+  let c= getchar()
+  let mouse_lnum = v:mouse_lnum
+  let wlastline  = line('w$')
+  let lastline   = line('$')
+"  call Decho("v:mouse_lnum=".mouse_lnum." line(w$)=".wlastline." line($)=".lastline)
+  if mouse_lnum == wlastline + 1
+"   call Decho("appears to be a status bar leftmouse click")
+   " appears to be a status bar leftmouse click
+   return
+  endif
+
   call s:NetrwOptionSave("s:")
   call s:NetrwSafeOptions()
   let nbcd_curpos                = netrw#NetrwSavePosn()
@@ -2737,6 +2934,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
     else
      let dirname= s:NetrwTreeDir()."/".newdir
     endif
+"    call Decho("dirname<".dirname.">")
 "    call Decho("tree listing")
    elseif newdir =~ '^\(/\|\a:\)'
     let dirname= newdir
@@ -2751,10 +2949,14 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
     if !exists("s:didsplit")
      if     g:netrw_browse_split == 1
       new
-      wincmd _
+      if !&ea
+       wincmd _
+      endif
      elseif g:netrw_browse_split == 2
       rightb vert new
-      wincmd |
+      if !&ea
+       wincmd |
+      endif
      elseif g:netrw_browse_split == 3
       tabnew
      elseif g:netrw_browse_split == 4
@@ -2781,6 +2983,22 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
 "     call Decho("remote file: NetrwBrowse will edit it")
     endif
     let dolockout= 1
+
+    " handle g:Netrw_funcref -- call external-to-netrw functions
+    "   This code will handle g:Netrw_funcref as an individual function reference
+    "   or as a list of function references.  It will ignore anything that's not
+    "   a function reference.  See  :help Funcref  for information about function references.
+    if exists("g:Netrw_funcref")
+     if type(g:Netrw_funcref) == 2
+      call g:Netrw_funcref()
+     elseif type(g:Netrw_funcref) == 3
+      for Fncref in g:Netrw_funcref
+       if type(FncRef) == 2
+        call FncRef()
+       endif
+      endfor
+     endif
+    endif
    endif
 
   elseif newdir =~ '^/'
@@ -2887,15 +3105,16 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
     " close tree listing for selected subdirectory
 "    call Decho("closing selected subdirectory<".dirname.">")
     call remove(w:netrw_treedict,treedir)
-"    call Decho("removed     entry<".dirname."> from treedict")
+"    call Decho("removed     entry<".treedir."> from treedict")
 "    call Decho("yielding treedict<".string(w:netrw_treedict).">")
-    let dirname= w:netrw_treetop
+    let dirname           = w:netrw_treetop
    else
     " go down one directory
     let dirname= substitute(treedir,'/*$','/','')
 "    call Decho("go down one dir: treedir<".treedir.">")
    endif
    call s:SetRexDir(a:islocal,dirname)
+   let s:treeforceredraw = 1
 
   else
    " go down one directory
@@ -2916,17 +3135,40 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
 endfun
 
 " ---------------------------------------------------------------------
-" s:NetrwBrowseX:  allows users to write custom functions to operate on {{{2
-"              files given their extension.  Passes 0=local, 1=remote
+" s:NetrwBrowseX:  (implements "x") executes a special "viewer" script or program for the {{{2
+"              given filename; typically this means given their extension.
+"              0=local, 1=remote
 fun! netrw#NetrwBrowseX(fname,remote)
 "  call Dfunc("NetrwBrowseX(fname<".a:fname."> remote=".a:remote.")")
 
+  " special core dump handler
+  if a:fname =~ '/core\(\.\d\+\)\=$'
+   if exists("g:Netrw_corehandler")
+    if type(g:Netrw_corehandler) == 2
+     " g:Netrw_corehandler is a function reference (see :help Funcref)
+"     call Decho("g:Netrw_corehandler is a funcref")
+     call g:Netrw_corehandler(a:fname)
+    elseif type(g:netrw_corehandler) == 3)
+     " g:Netrw_corehandler is a List of function references (see :help Funcref)
+"     call Decho("g:Netrw_corehandler is a List")
+     for Fncref in g:Netrw_corehandler
+      if type(FncRef) == 2
+       call FncRef(a:fname)
+      endif
+     endfor
+    endif
+"    call Dret("NetrwBrowseX : coredump handler invoked")
+    return
+   endif
+  endif
+
   " set up the filename
   " (lower case the extension, make a local copy of a remote file)
   let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e')
   if has("win32") || has("win95") || has("win64") || has("win16")
    let exten= substitute(exten,'^.*$','\L&\E','')
   endif
+"  call Decho("exten<".exten.">")
 
   " seems kde systems often have gnome-open due to dependencies, even though
   " gnome-open's subsidiary display tools are largely absent.  Kde systems
@@ -2945,16 +3187,25 @@ fun! netrw#NetrwBrowseX(fname,remote)
 
   if a:remote == 1
    " create a local copy
-   let fname= fnamemodify(tempname(),":r").".".exten
-"   call Decho("a:remote=".a:remote.": create a local copy of <".fname."> as <".fname.">")
-   exe "silent keepjumps bot 1new ".fnameescape(fname)
+"   call Decho("a:remote=".a:remote.": create a local copy of <".a:fname.">")
    setlocal bh=delete
-"   call Decho("read <".fnameescape(fname).">, now writing: exe w! ".fnameescape(fname))
-   exe "silent! w! ".fnameescape(fname)
-   q
+   call netrw#NetRead(3,a:fname)
+   " attempt to rename tempfile
+   let basename= substitute(a:fname,'^\(.*\)/\(.*\)\.\([^.]*\)$','\2','')
+   let newname= substitute(s:netrw_tmpfile,'^\(.*\)/\(.*\)\.\([^.]*\)$','\1/'.basename.'.\3','')
+"   call Decho("basename<".basename.">")
+"   call Decho("newname <".newname.">")
+   if rename(s:netrw_tmpfile,newname) == 0
+    " renaming succeeded
+    let fname= newname
+   else
+    " renaming failed
+    let fname= s:netrw_tmpfile
+   endif
   else
    let fname= a:fname
   endif
+"  call Decho("fname<".fname.">")
 "  call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten))
 
   " set up redirection
@@ -2973,6 +3224,7 @@ fun! netrw#NetrwBrowseX(fname,remote)
 
   " extract any viewing options.  Assumes that they're set apart by quotes.
   if exists("g:netrw_browsex_viewer")
+"   call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">")
    if g:netrw_browsex_viewer =~ '\s'
     let viewer  = substitute(g:netrw_browsex_viewer,'\s.*$','','')
     let viewopt = substitute(g:netrw_browsex_viewer,'^\S\+\s*','','')." "
@@ -3004,8 +3256,15 @@ fun! netrw#NetrwBrowseX(fname,remote)
    let ret= v:shell_error
 
   elseif has("win32") || has("win64")
-"   call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1))
-   exe 'silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)
+   if executable("start")
+"    call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1))
+    exe 'silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)
+   elseif executable("rundll32")
+"    call Decho('exe silent !rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1))
+    exe 'silent !rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)
+   else
+    call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74)
+   endif
    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let ret= v:shell_error
 
@@ -3060,19 +3319,72 @@ fun! netrw#NetrwBrowseX(fname,remote)
 endfun
 
 " ---------------------------------------------------------------------
+" s:NetrwChgPerm: (implements "gp") change file permission {{{2
+fun! s:NetrwChgPerm(islocal,curdir)
+"  call Dfunc("s:NetrwChgPerm(islocal=".a:islocal." curdir<".a:curdir.">)")
+  call inputsave()
+  let newperm= input("Enter new permission: ")
+  call inputrestore()
+  let chgperm= substitute(g:netrw_chgperm,'\<FILENAME\>',shellescape(expand("<cfile>")),'')
+  let chgperm= substitute(chgperm,'\<PERM\>',shellescape(newperm),'')
+"  call Decho("chgperm<".chgperm.">")
+  call system(chgperm)
+  if v:shell_error != 0
+   call netrw#ErrorMsg(1,"changing permission on file<".expand("<cfile>")."> seems to have failed",75)
+  endif
+  if a:islocal
+   call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+  endif
+"  call Dret("s:NetrwChgPerm")
+endfun
+
+" ---------------------------------------------------------------------
+" s:NetrwClearExplore: clear explore variables (if any) {{{2
+fun! s:NetrwClearExplore()
+"  call Dfunc("s:NetrwClearExplore()")
+  2match none
+  if exists("s:explore_match")        |unlet s:explore_match        |endif
+  if exists("s:explore_indx")         |unlet s:explore_indx         |endif
+  if exists("s:netrw_explore_prvdir") |unlet s:netrw_explore_prvdir |endif
+  if exists("s:dirstarstar")          |unlet s:dirstarstar          |endif
+  if exists("s:explore_prvdir")       |unlet s:explore_prvdir       |endif
+  if exists("w:netrw_explore_indx")   |unlet w:netrw_explore_indx   |endif
+  if exists("w:netrw_explore_listlen")|unlet w:netrw_explore_listlen|endif
+  if exists("w:netrw_explore_list")   |unlet w:netrw_explore_list   |endif
+  if exists("w:netrw_explore_bufnr")  |unlet w:netrw_explore_bufnr  |endif
+"   redraw!
+  echo " "
+  echo " "
+"  call Dret("s:NetrwClearExplore")
+endfun
+
+" ---------------------------------------------------------------------
 " netrw#Explore: launch the local browser in the directory of the current file {{{2
-"          dosplit==0: the window will be split iff the current file has
-"                      been modified
-"          dosplit==1: the window will be split before running the local
-"                      browser
+"          indx:  == -1: Nexplore
+"                 == -2: Pexplore
+"                 ==  +: this is overloaded:
+"                      * If Nexplore/Pexplore is in use, then this refers to the
+"                        indx'th item in the w:netrw_explore_list[] of items which
+"                        matched the */pattern **/pattern *//pattern **//pattern
+"                      * If Hexplore or Vexplore, then this will override
+"                        g:netrw_winsize to specify the qty of rows or columns the
+"                        newly split window should have.
+"          dosplit==0: the window will be split iff the current file has been modified
+"          dosplit==1: the window will be split before running the local browser
+"          style == 0: Explore     style == 1: Explore!
+"                == 2: Hexplore    style == 3: Hexplore!
+"                == 4: Vexplore    style == 5: Vexplore!
+"                == 6: Texplore
 fun! netrw#Explore(indx,dosplit,style,...)
 "  call Dfunc("netrw#Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.",a:1<".a:1.">) &modified=".&modified." a:0=".a:0)
   if !exists("b:netrw_curdir")
    let b:netrw_curdir= getcwd()
 "   call Decho("set b:netrw_curdir<".b:netrw_curdir."> (used getcwd)")
   endif
-  let curfile= b:netrw_curdir
-"  call Decho("curfile<".curfile.">")
+  let curdir     = b:netrw_curdir
+  let curfiledir = substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e')
+"  call Decho("curdir<".curdir.">  curfiledir<".curfiledir.">")
+"  call FOTEST(1)
 
   " save registers
   silent! let keepregstar = @*
@@ -3083,30 +3395,34 @@ fun! netrw#Explore(indx,dosplit,style,..
   if a:dosplit || &modified || a:style == 6
 "   call Decho("case: dosplit=".a:dosplit." modified=".&modified." a:style=".a:style)
    call s:SaveWinVars()
+   let winsize= g:netrw_winsize
+   if a:indx > 0
+    let winsize= a:indx
+   endif
 
    if a:style == 0      " Explore, Sexplore
 "    call Decho("style=0: Explore or Sexplore")
-    exe g:netrw_winsize."wincmd s"
+    exe winsize."wincmd s"
 
    elseif a:style == 1  "Explore!, Sexplore!
 "    call Decho("style=1: Explore! or Sexplore!")
-    exe g:netrw_winsize."wincmd v"
+    exe winsize."wincmd v"
 
    elseif a:style == 2  " Hexplore
 "    call Decho("style=2: Hexplore")
-    exe "bel ".g:netrw_winsize."wincmd s"
+    exe "bel ".winsize."wincmd s"
 
    elseif a:style == 3  " Hexplore!
 "    call Decho("style=3: Hexplore!")
-    exe "abo ".g:netrw_winsize."wincmd s"
+    exe "abo ".winsize."wincmd s"
 
    elseif a:style == 4  " Vexplore
 "    call Decho("style=4: Vexplore")
-    exe "lefta ".g:netrw_winsize."wincmd v"
+    exe "lefta ".winsize."wincmd v"
 
    elseif a:style == 5  " Vexplore!
 "    call Decho("style=5: Vexplore!")
-    exe "rightb ".g:netrw_winsize."wincmd v"
+    exe "rightb ".winsize."wincmd v"
 
    elseif a:style == 6  " Texplore
     call s:SaveBufVars()
@@ -3117,6 +3433,7 @@ fun! netrw#Explore(indx,dosplit,style,..
    call s:RestoreWinVars()
   endif
   norm! 0
+"  call FOTEST(2)
 
   if a:0 > 0
 "   call Decho("case [a:0=".a:0."]>0: a:1<".a:1.">")
@@ -3131,28 +3448,18 @@ fun! netrw#Explore(indx,dosplit,style,..
 "    call Decho("using dirname<".dirname.">  (case: ".(exists("b:netrw_curdir")? "b:netrw_curdir" : "getcwd()").")")
    elseif a:1 =~ '\$'
     let dirname= expand(a:1)
+"    call Decho("using user-specified dirname<".dirname."> with $env-var")
    else
     let dirname= a:1
-"    call Decho("using dirname<".dirname.">")
+"    call Decho("using user-specified dirname<".dirname.">")
    endif
   else
    " clear explore
-"   call Decho("clearing explore variables")
-   2match none
-   if exists("s:explore_match")        |unlet s:explore_match        |endif
-   if exists("s:explore_indx")         |unlet s:explore_indx         |endif
-   if exists("s:dirstarstar")          |unlet s:dirstarstar          |endif
-   if exists("s:dirstarstar")          |unlet s:dirstarstar          |endif
-   if exists("w:netrw_explore_indx")   |unlet w:netrw_explore_indx   |endif
-   if exists("w:netrw_explore_listlen")|unlet w:netrw_explore_listlen|endif
-   if exists("w:netrw_explore_list")   |unlet w:netrw_explore_list   |endif
-   if exists("w:netrw_explore_bufnr")  |unlet w:netrw_explore_bufnr  |endif
-"   redraw!
-   echo " "
-   echo " "
+   call s:NetrwClearExplore()
 "   call Dret("netrw#Explore : cleared list")
    return
   endif
+"  call FOTEST(3)
 
   if dirname =~ '/\*\*/'
    " handle .../**/.../filepat
@@ -3192,15 +3499,19 @@ fun! netrw#Explore(indx,dosplit,style,..
    " starpat=4: Explore **/filepat  (recursive descent search for filenames matching filepat)
    let starpat= 4
 "   call Decho("case Explore **/filepat (starpat=".starpat.")")
+
   else
    let starpat= 0
-  endif
+"   call Decho("default case: starpat=".starpat)
+  endif
+"  call FOTEST(4)
 
   if starpat == 0 && a:indx >= 0
    " [Explore Hexplore Vexplore Sexplore] [dirname]
-"   call Decho("case dirname<".dirname."> a:indx=".a:indx.": Explore Hexplore Vexplore Sexplore")
+"   call Decho("case starpat==0 && a:indx=".a:indx.": dirname<".dirname."> Explore Hexplore Vexplore Sexplore")
    if dirname == ""
-    let dirname= substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e')
+    let dirname= curfiledir
+"    call Decho("empty dirname, using current file's directory<".dirname.">")
    endif
    if dirname =~ '^scp:' || dirname =~ '^ftp:'
 "    call Decho("calling NetrwBrowse(0,dirname<".dirname.">)")
@@ -3211,11 +3522,11 @@ fun! netrw#Explore(indx,dosplit,style,..
     call netrw#LocalBrowseCheck(dirname)
    endif
 
-"   call Decho("curfile<".curfile.">")
+"   call Decho("curdir<".curdir.">")
    if has("win32") || has("win95") || has("win64") || has("win16")
-    call search('\<'.substitute(curfile,'^.*[/\\]','','e').'\>','cW')
+    call search('\<'.substitute(curdir,'^.*[/\\]','','e').'\>','cW')
    else
-    call search('\<'.substitute(curfile,'^.*/','','e').'\>','cW')
+    call search('\<'.substitute(curdir,'^.*/','','e').'\>','cW')
    endif
 
   " starpat=1: Explore *//pattern  (current directory only search for files containing pattern)
@@ -3224,7 +3535,7 @@ fun! netrw#Explore(indx,dosplit,style,..
   " starpat=4: Explore **/filepat  (recursive descent search for filenames matching filepat)
   elseif a:indx <= 0
    " Nexplore, Pexplore, Explore: handle starpat
-"   call Decho("case Nexplore, Pexplore, <s-down>, <s-up>: starpat=".starpat." a:indx=".a:indx)
+"   call Decho("case a:indx<=0: Nexplore, Pexplore, <s-down>, <s-up> starpat=".starpat." a:indx=".a:indx)
    if !mapcheck("<s-up>","n") && !mapcheck("<s-down>","n") && exists("b:netrw_curdir")
 "    call Decho("set up <s-up> and <s-down> maps")
     let s:didstarstar= 1
@@ -3237,9 +3548,10 @@ fun! netrw#Explore(indx,dosplit,style,..
     if !exists("w:netrw_explore_indx")
      let w:netrw_explore_indx= 0
     endif
+
     let indx = a:indx
 "    call Decho("starpat=".starpat.": set indx= [a:indx=".indx."]")
-"
+
     if indx == -1
      " Nexplore
 "     call Decho("case Nexplore with starpat=".starpat.": (indx=".indx.")")
@@ -3290,6 +3602,7 @@ fun! netrw#Explore(indx,dosplit,style,..
      " Explore -- initialize
      " build list of files to Explore with Nexplore/Pexplore
 "     call Decho("starpat=".starpat.": case Explore: initialize (indx=".indx.")")
+     call s:NetrwClearExplore()
      let w:netrw_explore_indx= 0
      if !exists("b:netrw_curdir")
       let b:netrw_curdir= getcwd()
@@ -3300,17 +3613,24 @@ fun! netrw#Explore(indx,dosplit,style,..
      if starpat == 1
       " starpat=1: Explore *//pattern  (current directory only search for files containing pattern)
 "      call Decho("starpat=".starpat.": build *//pattern list")
-      exe "vimgrep /".pattern."/gj ".fnameescape(b:netrw_curdir)."/*"
-      let w:netrw_explore_list = map(getqflist(),'bufname(v:val.bufnr)')
+"      call Decho("pattern<".pattern.">")
+      try
+       exe "noautocmd vimgrep /".pattern."/gj ".fnameescape(b:netrw_curdir)."/*"
+      catch /^Vim\%((\a\+)\)\=:E480/
+       call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76)
+"       call Dret("netrw#Explore : unable to find pattern<".pattern.">")
+       return
+      endtry
+      let w:netrw_explore_list = s:NetrwExploreListUniq(map(getqflist(),'bufname(v:val.bufnr)'))
       if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
 
      elseif starpat == 2
       " starpat=2: Explore **//pattern (recursive descent search for files containing pattern)
 "      call Decho("starpat=".starpat.": build **//pattern list")
       try
-       exe "silent vimgrep /".pattern."/gj "."**/*"
+       exe "silent noautocmd vimgrep /".pattern."/gj "."**/*"
       catch /^Vim\%((\a\+)\)\=:E480/
-      	call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45)
+       call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45)
        if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
        silent! let @* = keepregstar
        silent! let @+ = keepregstar
@@ -3320,19 +3640,22 @@ fun! netrw#Explore(indx,dosplit,style,..
       endtry
       let s:netrw_curdir       = b:netrw_curdir
       let w:netrw_explore_list = getqflist()
-      let w:netrw_explore_list = map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)')
+      let w:netrw_explore_list = s:NetrwExploreListUniq(map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)'))
 
      elseif starpat == 3
       " starpat=3: Explore */filepat   (search in current directory for filenames matching filepat)
 "      call Decho("starpat=".starpat.": build */filepat list")
-      let dirname             = substitute(dirname,'^\*/','','')
-      let w:netrw_explore_list= split(expand(b:netrw_curdir."/".dirname),'\n')
-      if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif
+      let filepat= substitute(dirname,'^\*/','','')
+      let filepat= substitute(filepat,'^[%#<]','\\&','')
+"      call Decho("b:netrw_curdir<".b:netrw_curdir.">")
+"      call Decho("filepat<".filepat.">")
+      let w:netrw_explore_list= s:NetrwExploreListUniq(split(expand(b:netrw_curdir."/".filepat),'\n'))
+      if &hls | let keepregslash= s:ExplorePatHls(filepat) | endif
 
      elseif starpat == 4
       " starpat=4: Explore **/filepat  (recursive descent search for filenames matching filepat)
 "      call Decho("starpat=".starpat.": build **/filepat list")
-      let w:netrw_explore_list= split(expand(b:netrw_curdir."/".dirname),'\n')
+      let w:netrw_explore_list= s:NetrwExploreListUniq(split(expand(b:netrw_curdir."/".dirname),'\n'))
       if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif
      endif " switch on starpat to build w:netrw_explore_list
 
@@ -3352,7 +3675,7 @@ fun! netrw#Explore(indx,dosplit,style,..
 
     " NetrwStatusLine support - for exploring support
     let w:netrw_explore_indx= indx
-"    call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
+"    call Decho("w:netrw_explore_list<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
 
     " wrap the indx around, but issue a note
     if indx >= w:netrw_explore_listlen || indx < 0
@@ -3360,7 +3683,6 @@ fun! netrw#Explore(indx,dosplit,style,..
      let indx                = (indx < 0)? ( w:netrw_explore_listlen - 1 ) : 0
      let w:netrw_explore_indx= indx
      call netrw#ErrorMsg(s:NOTE,"no more files match Explore pattern",43)
-     sleep 1
     endif
 
     exe "let dirfile= w:netrw_explore_list[".indx."]"
@@ -3397,7 +3719,7 @@ fun! netrw#Explore(indx,dosplit,style,..
    endif
 
   else
-"   call Decho("case Explore newdir<".dirname.">")
+"   call Decho("default case: Explore newdir<".dirname.">")
    if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && dirname =~ '/'
     silent! unlet w:netrw_treedict
     silent! unlet w:netrw_treetop
@@ -3409,14 +3731,19 @@ fun! netrw#Explore(indx,dosplit,style,..
     call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,newdir))
    endif
   endif
+"  call FOTEST(5)
 
   " visual display of **/ **// */ Exploration files
+"  call Decho("w:netrw_explore_indx=".(exists("w:netrw_explore_indx")? w:netrw_explore_indx : "doesn't exist"))
+"  call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "n/a").">")
   if exists("w:netrw_explore_indx") && exists("b:netrw_curdir")
+"   call Decho("s:explore_prvdir<".(exists("s:explore_prvdir")? s:explore_prvdir : "-doesn't exist-"))
    if !exists("s:explore_prvdir") || s:explore_prvdir != b:netrw_curdir
     " only update match list if current directory isn't the same as before
+"    call Decho("only update match list if current directory not the same as before")
     let s:explore_prvdir = b:netrw_curdir
     let s:explore_match  = ""
-    let dirlen           = strlen(b:netrw_curdir)
+    let dirlen           = s:Strlen(b:netrw_curdir)
     if b:netrw_curdir !~ '/$'
      let dirlen= dirlen + 1
     endif
@@ -3425,15 +3752,15 @@ fun! netrw#Explore(indx,dosplit,style,..
 "     call Decho("fname<".fname.">")
      if fname =~ '^'.b:netrw_curdir
       if s:explore_match == ""
-       let s:explore_match= '\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
+       let s:explore_match= '\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc).'\>'
       else
-       let s:explore_match= s:explore_match.'\|\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
+       let s:explore_match= s:explore_match.'\|\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc).'\>'
       endif
      elseif fname !~ '^/' && fname != prvfname
       if s:explore_match == ""
-       let s:explore_match= '\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
+       let s:explore_match= '\<'.escape(fname,g:netrw_markfileesc).'\>'
       else
-       let s:explore_match= s:explore_match.'\|\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
+       let s:explore_match= s:explore_match.'\|\<'.escape(fname,g:netrw_markfileesc).'\>'
       endif
      endif
      let prvfname= fname
@@ -3449,6 +3776,7 @@ fun! netrw#Explore(indx,dosplit,style,..
    echo " "
 "   call Decho("cleared explore match list")
   endif
+"  call FOTEST(6)
 
   silent! let @* = keepregstar
   silent! let @+ = keepregstar
@@ -3457,6 +3785,24 @@ fun! netrw#Explore(indx,dosplit,style,..
 endfun
 
 " ---------------------------------------------------------------------
+" s:NetrwExploreListUniq: {{{2
+fun! s:NetrwExploreListUniq(explist)
+"  call Dfunc("s:NetrwExploreListUniq(explist)")
+
+  " this assumes that the list is already sorted
+  let newexplist= []
+  for member in a:explist
+   if !exists("uniqmember") || member != uniqmember
+    let uniqmember = member
+    let newexplist = newexplist + [ member ]
+   endif
+  endfor
+
+"  call Dret("s:NetrwExploreListUniq")
+  return newexplist
+endfun
+
+" ---------------------------------------------------------------------
 " s:NetrwHide: this function is invoked by the "a" map for browsing {{{2
 "          and switches the hiding mode.  The actual hiding is done by
 "          s:NetrwListHide().
@@ -3490,9 +3836,7 @@ fun! s:NetrwHide(islocal)
 "     call Decho("hide: g:netrw_list_hide<".g:netrw_list_hide.">")
     endif
    endfor
-   unlet s:netrwmarkfilelist_{bufnr("%")}
-   unlet s:netrwmarkfilemtch_{bufnr("%")}
-   2match none
+   call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir)
    let g:netrw_hide= 1
 
   else
@@ -3522,7 +3866,7 @@ fun! s:NetrwHidden(islocal)
   if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+'
    " remove pattern from hiding list
    let g:netrw_list_hide= substitute(g:netrw_list_hide,'\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+','','')
-  elseif strlen(g:netrw_list_hide) >= 1
+  elseif s:Strlen(g:netrw_list_hide) >= 1
    let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+'
   else
    let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+'
@@ -3535,6 +3879,41 @@ fun! s:NetrwHidden(islocal)
 endfun
 
 " ---------------------------------------------------------------------
+"  s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2
+fun! s:NetrwHome()
+  if exists("g:netrw_home")
+   let home= g:netrw_home
+  else
+   " go to vim plugin home
+   for home in split(&rtp,',') + ['']
+    if isdirectory(home) && filewritable(home) | break | endif
+     let basehome= substitute(home,'[/\\]\.vim$','','')
+    if isdirectory(basehome) && filewritable(basehome)
+     let home= basehome."/.vim"
+     break
+    endif
+   endfor
+   if home == ""
+    " just pick the first directory
+    let home= substitute(&rtp,',.*$','','')
+   endif
+   if (has("win32") || has("win95") || has("win64") || has("win16"))
+    let home= substitute(home,'/','\\','g')
+   endif
+  endif
+  " insure that the home directory exists
+  if !isdirectory(home)
+   if exists("g:netrw_mkdir")
+    call system(g:netrw_mkdir." ".shellescape(home))
+   else
+    call mkdir(home)
+   endif
+  endif
+  let g:netrw_home= home
+  return home
+endfun
+
+" ---------------------------------------------------------------------
 " s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2
 fun! s:NetrwLeftmouse(islocal)
 "  call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")")
@@ -3749,6 +4128,7 @@ fun! s:NetrwMarkFile(islocal,fname)
 "  call Dfunc("s:NetrwMarkFile(islocal=".a:islocal." fname<".a:fname.">)")
   let curbufnr= bufnr("%")
   let curdir  = b:netrw_curdir
+  let trailer = '[@=|\/\*]\=\>'
   if exists("s:netrwmarkfilelist_{curbufnr}")
    " markfile list exists
 "   call Decho("starting s:netrwmarkfilelist_{curbufnr}<".string(s:netrwmarkfilelist_{curbufnr}).">")
@@ -3759,7 +4139,7 @@ fun! s:NetrwMarkFile(islocal,fname)
     " append filename to buffer's markfilelist
 "    call Decho("append filename<".a:fname."> to local markfilelist_".curbufnr."<".string(s:netrwmarkfilelist_{curbufnr}).">")
     call add(s:netrwmarkfilelist_{curbufnr},a:fname)
-    let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|\<'.escape(a:fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
+    let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|\<'.escape(a:fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").trailer
 
    else
     " remove filename from buffer's markfilelist
@@ -3767,7 +4147,7 @@ fun! s:NetrwMarkFile(islocal,fname)
     call filter(s:netrwmarkfilelist_{curbufnr},'v:val != a:fname')
     if s:netrwmarkfilelist_{curbufnr} == []
      " local markfilelist is empty; remove it entirely
-"     call Decho("markfile list now empty, unlet s:netrwmarkfilelist_".curbufnr." and ...mtch_".curbufnr)
+"     call Decho("markfile list now empty")
      call s:NetrwUnmarkList(curbufnr,curdir)
     else
      " rebuild match list to display markings correctly
@@ -3776,9 +4156,9 @@ fun! s:NetrwMarkFile(islocal,fname)
      let first                           = 1
      for fname in s:netrwmarkfilelist_{curbufnr}
       if first
-       let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
+       let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").trailer
       else
-       let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
+       let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").trailer
       endif
       let first= 0
      endfor
@@ -3799,7 +4179,7 @@ fun! s:NetrwMarkFile(islocal,fname)
    if a:fname =~ '/$'
     let s:netrwmarkfilemtch_{curbufnr}= '\<'.escape(a:fname,g:netrw_markfileesc)
    else
-    let s:netrwmarkfilemtch_{curbufnr}= '\<'.escape(a:fname,g:netrw_markfileesc).'\>'
+    let s:netrwmarkfilemtch_{curbufnr}= '\<'.escape(a:fname,g:netrw_markfileesc).trailer
    endif
 "   call Decho("ending s:netrwmarkfilemtch_".curbufnr."<".s:netrwmarkfilemtch_{curbufnr}.">")
   endif
@@ -3830,7 +4210,9 @@ fun! s:NetrwMarkFile(islocal,fname)
   " set up 2match'ing to netrwmarkfilemtch list
   if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != ""
 "   call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/")
-   exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/"
+   if exists("g:did_drchip_netrwlist_syntax")
+    exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/"
+   endif
   else
 "   call Decho("2match none")
    2match none
@@ -3858,7 +4240,7 @@ fun! s:NetrwMarkFileCompress(islocal)
     for sfx in sort(keys(g:netrw_decompress))
      if fname =~ '\'.sfx.'$'
       " fname has a suffix indicating that its compressed; apply associated decompression routine
-      let exe= s:WinPath(g:netrw_decompress[sfx])
+      let exe= netrw#WinPath(g:netrw_decompress[sfx])
 "      call Decho("fname<".fname."> is compressed so decompress with <".exe.">")
       if a:islocal
        if g:netrw_keepdir
@@ -3883,10 +4265,10 @@ fun! s:NetrwMarkFileCompress(islocal)
      unlet exe
     elseif a:islocal
      " fname not a compressed file, so compress it
-     call system(s:WinPath(g:netrw_compress)." ".shellescape(s:ComposePath(b:netrw_curdir,fname)))
+     call system(netrw#WinPath(g:netrw_compress)." ".shellescape(s:ComposePath(b:netrw_curdir,fname)))
     else
      " fname not a compressed file, so compress it
-     call s:RemoteSystem(s:WinPath(g:netrw_compress)." ".shellescape(fname))
+     call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".shellescape(fname))
     endif
    endfor
    call s:NetrwUnmarkList(curbufnr,curdir)
@@ -3927,7 +4309,7 @@ fun! s:NetrwMarkFileCopy(islocal)
 "   call Decho("copy from local to local")
    let args= join(map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),"shellescape(b:netrw_curdir.\"/\".v:val)"))
 "   call Decho("system(".g:netrw_localcopycmd." ".args." ".shellescape(s:netrwmftgt).")")
-   call system(s:WinPath(g:netrw_localcopycmd)." ".args." ".shellescape(s:netrwmftgt))
+   call system(netrw#WinPath(g:netrw_localcopycmd)." ".args." ".shellescape(s:netrwmftgt))
 
   elseif  a:islocal && !s:netrwmftgt_islocal
    " Copy marked files, local directory to remote directory
@@ -3982,7 +4364,9 @@ fun! s:NetrwMarkFileCopy(islocal)
   if a:islocal
    call s:NetrwRefreshDir(a:islocal,b:netrw_curdir)
   endif
-  call s:LocalBrowseShellCmdRefresh()
+  if g:netrw_fastbrowse <= 1
+   call s:LocalBrowseShellCmdRefresh()
+  endif
   
 "  call Dret("s:NetrwMarkFileCopy 1")
   return 1
@@ -4064,10 +4448,10 @@ fun! s:NetrwMarkFileExe(islocal)
    for fname in s:netrwmarkfilelist_{curbufnr}
     if a:islocal
      if g:netrw_keepdir
-      let fname= shellescape(s:WinPath(s:ComposePath(curdir,fname)))
+      let fname= shellescape(netrw#WinPath(s:ComposePath(curdir,fname)))
      endif
     else
-     let fname= shellescape(s:WinPath(b:netrw_curdir.fname))
+     let fname= shellescape(netrw#WinPath(b:netrw_curdir.fname))
     endif
     if cmd =~ '%'
      let xcmd= substitute(cmd,'%',fname,'g')
@@ -4185,7 +4569,13 @@ fun! s:NetrwMarkFileGrep(islocal)
 
    " use vimgrep for both local and remote
 "   call Decho("exe vimgrep".pat." ".netrwmarkfilelist)
-   exe "vimgrep".pat." ".netrwmarkfilelist
+   try
+    exe "noautocmd vimgrep".pat." ".netrwmarkfilelist
+    catch /^Vim\%((\a\+)\)\=:E480/
+     call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76)
+"     call Dret("s:NetrwMarkFileGrep : unable to find pattern<".pattern.">")
+     return
+   endtry
 
    2match none
    call netrw#NetrwRestorePosn(svpos)
@@ -4290,7 +4680,9 @@ fun! s:NetrwMarkFileMove(islocal)
   if a:islocal
    call s:NetrwRefreshDir(a:islocal,b:netrw_curdir)
   endif
-  call s:LocalBrowseShellCmdRefresh()
+  if g:netrw_fastbrowse <= 1
+   call s:LocalBrowseShellCmdRefresh()
+  endif
   
 "  call Dret("s:NetrwMarkFileMove")
 endfun
@@ -4342,24 +4734,15 @@ fun! s:NetrwMarkFileRegexp(islocal)
    " get the matching list of files using local glob()
 "   call Decho("handle local regexp")
    let dirname  = escape(b:netrw_curdir,g:netrw_glob_escape)
-   let filelist = glob(s:ComposePath(dirname,regexp))
-   if filelist != ""
-    let filelist= filelist."\n"
-   endif
+   let files = glob(s:ComposePath(dirname,regexp))
+"   call Decho("files<".files.">")
+   let filelist= split(files,"\n")
 
   " mark the list of files
-  while filelist != ""
-   if filelist =~ '\n'
-    let filename = substitute(filelist,'\n.*$','','e')
-    let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e')
-   else
-    let filename = filelist
-    let filelist = ""
-   endif
-"   call Decho("filelist<".filelist.">")
-"   call Decho("filename<".filename.">")
-   call s:NetrwMarkFile(a:islocal,substitute(filename,'^.*/','',''))
-  endwhile
+  for fname in filelist
+"   call Decho("fname<".fname.">")
+   call s:NetrwMarkFile(a:islocal,substitute(fname,'^.*/','',''))
+  endfor
 
   else
 "   call Decho("handle remote regexp")
@@ -4371,7 +4754,8 @@ fun! s:NetrwMarkFileRegexp(islocal)
    set ei=all ma
 "   call Decho("set ei=all ma")
    1split
-   enew
+   call s:NetrwEnew()
+   call s:NetrwSafeOptions()
    silent norm! "ap
    2
    let bannercnt= search('^" =====','W')
@@ -4379,16 +4763,21 @@ fun! s:NetrwMarkFileRegexp(islocal)
    set bt=nofile
    if     g:netrw_liststyle == s:LONGLIST
     silent %s/\s\{2,}\S.*$//e
+    call histdel("/",-1)
    elseif g:netrw_liststyle == s:WIDELIST
     silent %s/\s\{2,}/\r/ge
+    call histdel("/",-1)
    elseif g:netrw_liststyle == s:TREELIST
     silent %s/^| //e
     silent! g/^ .*$/d
+    call histdel("/",-1)
+    call histdel("/",-1)
    endif
    " convert regexp into the more usual glob-style format
    let regexp= substitute(regexp,'\*','.*','g')
 "   call Decho("regexp<".regexp.">")
    exe "silent! v/".escape(regexp,'/')."/d"
+   call histdel("/",-1)
    let filelist= getline(1,line("$"))
    q!
    for filename in filelist
@@ -4459,6 +4848,7 @@ fun! s:NetrwMarkFileTag(islocal)
     let path= substitute(curdir,'^\(.*\)/[^/]*$','\1/','')
 "    call Decho("curdir<".curdir."> path<".path.">")
     exe '%s/\t\(\S\+\)\t/\t'.escape(path,"/\n\r\\").'\1\t/e'
+    call histdel("/",-1)
     wq!
    endif
    2match none
@@ -4518,7 +4908,7 @@ fun! s:NetrwMarkFileTgt(islocal)
   endif
   let s:netrwmftgt_islocal= a:islocal
 
-  if g:netrw_fastbrowse > 0
+  if g:netrw_fastbrowse <= 1
    call s:LocalBrowseShellCmdRefresh()
   endif
   call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
@@ -4653,20 +5043,17 @@ fun! s:NetrwMenu(domenu)
 "    call Decho("initialize menu")
     let s:netrw_menu_enabled= 1
     exe 'silent! menu '.g:NetrwMenuPriority.'.1     '.g:NetrwTopLvlMenu.'Help<tab><F1>	<F1>'
-    call s:NetrwBookmarkMenu() " provide some history!  uses priorities 2,3, reserves 4
     exe 'silent! menu '.g:NetrwMenuPriority.'.5     '.g:NetrwTopLvlMenu.'-Sep1-	:'
     exe 'silent! menu '.g:NetrwMenuPriority.'.6     '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>-	-'
     exe 'silent! menu '.g:NetrwMenuPriority.'.7     '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x	x'
     exe 'silent! menu '.g:NetrwMenuPriority.'.8.1   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Current\ Directory<tab>mb	mb'
-    exe 'silent! menu '.g:NetrwMenuPriority.'.8.2   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete<tab>mB	mB'
-    exe 'silent! menu '.g:NetrwMenuPriority.'.8.3   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Bookmark<tab>gb	gb'
     exe 'silent! menu '.g:NetrwMenuPriority.'.8.4   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Prev\ Dir\ (History)<tab>u	u'
     exe 'silent! menu '.g:NetrwMenuPriority.'.8.5   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Next\ Dir\ (History)<tab>U	U'
     exe 'silent! menu '.g:NetrwMenuPriority.'.8.6   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.List<tab>qb	qb'
-    exe 'silent! menu '.g:NetrwMenuPriority.'.9.1   '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List<tab>'."<ctrl-h>	\<Plug>NetrwHideEdit"
+    exe 'silent! menu '.g:NetrwMenuPriority.'.9.1   '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List<tab><ctrl-h>'."	\<c-h>'"
     exe 'silent! menu '.g:NetrwMenuPriority.'.9.2   '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ Sorting\ Sequence<tab>S	S'
     exe 'silent! menu '.g:NetrwMenuPriority.'.9.3   '.g:NetrwTopLvlMenu.'Browsing\ Control.Quick\ Hide/Unhide\ Dot\ Files<tab>'."gh	gh"
-    exe 'silent! menu '.g:NetrwMenuPriority.'.9.4   '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l>	\<Plug>NetrwRefresh"
+    exe 'silent! menu '.g:NetrwMenuPriority.'.9.4   '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l>	\<c-l>"
     exe 'silent! menu '.g:NetrwMenuPriority.'.9.5   '.g:NetrwTopLvlMenu.'Browsing\ Control.Settings/Options<tab>:NetrwSettings	'.":NetrwSettings\<cr>"
     exe 'silent! menu '.g:NetrwMenuPriority.'.10    '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D	D'
     exe 'silent! menu '.g:NetrwMenuPriority.'.11.1  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Current\ Window<tab><cr>	'."\<cr>"
@@ -4677,8 +5064,8 @@ fun! s:NetrwMenu(domenu)
     exe 'silent! menu '.g:NetrwMenuPriority.'.12.1  '.g:NetrwTopLvlMenu.'Explore.Directory\ Name	:Explore '
     exe 'silent! menu '.g:NetrwMenuPriority.'.12.2  '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (curdir\ only)<tab>:Explore\ */	:Explore */'
     exe 'silent! menu '.g:NetrwMenuPriority.'.12.2  '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (+subdirs)<tab>:Explore\ **/	:Explore **/'
-    exe 'silent! menu '.g:NetrwMenuPriority.'.12.3  '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ Pattern\ (curdir\ only)<tab>:Explore\ *//	:Explore *//'
-    exe 'silent! menu '.g:NetrwMenuPriority.'.12.4  '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ Pattern\ (+subdirs)<tab>:Explore\ **//	:Explore **//'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.12.3  '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (curdir\ only)<tab>:Explore\ *//	:Explore *//'
+    exe 'silent! menu '.g:NetrwMenuPriority.'.12.4  '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (+subdirs)<tab>:Explore\ **//	:Explore **//'
     exe 'silent! menu '.g:NetrwMenuPriority.'.12.4  '.g:NetrwTopLvlMenu.'Explore.Next\ Match<tab>:Nexplore	:Nexplore<cr>'
     exe 'silent! menu '.g:NetrwMenuPriority.'.12.4  '.g:NetrwTopLvlMenu.'Explore.Prev\ Match<tab>:Pexplore	:Pexplore<cr>'
     exe 'silent! menu '.g:NetrwMenuPriority.'.13    '.g:NetrwTopLvlMenu.'Make\ Subdirectory<tab>d	d'
@@ -4704,6 +5091,7 @@ fun! s:NetrwMenu(domenu)
     exe 'silent! menu '.g:NetrwMenuPriority.'.16.4  '.g:NetrwTopLvlMenu.'Style.Sorting\ Method\ (name-time-size)<tab>s	s'
     exe 'silent! menu '.g:NetrwMenuPriority.'.17    '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R	R'
     exe 'silent! menu '.g:NetrwMenuPriority.'.18    '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c	c'
+    call s:NetrwBookmarkMenu() " provide some history!  uses priorities 2,3, reserves 4, 8.2.x
     let s:netrw_menucnt= 28
 
    elseif !a:domenu
@@ -4731,8 +5119,8 @@ fun! s:NetrwObtain(islocal)
 "  call Dfunc("NetrwObtain(islocal=".a:islocal.")")
 
   if exists("s:netrwmarkfilelist_{bufnr('%')}")
-   let islocal= s:netrwmarkfilelist_{bufnr("%")}[1] !~ '^\a\+://'
-   call netrw#NetrwObtain(islocal,s:netrwmarkfilelist_{bufnr("%")})
+   let islocal= s:netrwmarkfilelist_{bufnr('%')}[1] !~ '^\a\+://'
+   call netrw#NetrwObtain(islocal,s:netrwmarkfilelist_{bufnr('%')})
    call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir)
   else
    call netrw#NetrwObtain(a:islocal,expand("<cWORD>"))
@@ -4769,7 +5157,7 @@ fun! netrw#NetrwObtain(islocal,fname,...
   endif
 "  call Decho("tgtdir<".tgtdir.">")
 
-  if b:netrw_islocal
+  if exists("b:netrw_islocal") && b:netrw_islocal
    " obtain a file from local b:netrw_curdir to (local) tgtdir
 "   call Decho("obtain a file from local ".b:netrw_curdir." to ".tgtdir)
    if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir
@@ -4921,6 +5309,14 @@ fun! netrw#NetrwObtain(islocal,fname,...
       call netrw#ErrorMsg(s:ERROR,getline(1),5)
      endif
     endif
+   elseif !exists("b:netrw_method") || b:netrw_method < 0
+"    call Dfunc("netrw#NetrwObtain : unsupported method")
+    return
+   endif
+
+   " restore status line
+   if type(a:fname) == 1 && exists("s:netrw_users_stl")
+    call s:SetupNetrwStatusLine(s:netrw_users_stl)
    endif
 
   endif
@@ -4989,8 +5385,8 @@ fun! s:NetrwPrevWinOpen(islocal)
     let &ei= eikeep
 "    call Decho("bnr=".bnr." bnrcnt=".bnrcnt." buftype=".&bt." winnr#".winnr())
     if bnrcnt == 1
-     let bufname= bufname(winbufnr(winnr()))
-     let choice= confirm("Save modified file<".bufname.">?","&Yes\n&No\n&Cancel")
+     let bufname = bufname(winbufnr(winnr()))
+     let choice  = confirm("Save modified file<".bufname.">?","&Yes\n&No\n&Cancel")
 "     call Decho("bufname<".bufname."> choice=".choice." winnr#".winnr())
 
      if choice == 1
@@ -5138,6 +5534,7 @@ fun! s:NetrwUpload(fname,tgt,...)
      endif
      " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
      silent g/Local directory now/d
+     call histdel("/",-1)
      if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
       call netrw#ErrorMsg(s:ERROR,getline(1),14)
      else
@@ -5196,6 +5593,7 @@ fun! s:NetrwUpload(fname,tgt,...)
      exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
      " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
      silent g/Local directory now/d
+     call histdel("/",-1)
      if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
       let debugkeep= &debug
       setlocal debug=msg
@@ -5205,6 +5603,9 @@ fun! s:NetrwUpload(fname,tgt,...)
      else
       bw!|q
      endif
+    elseif !exists("b:netrw_method") || b:netrw_method < 0
+"     call Dfunc("netrw#NetrwUpload : unsupported method")
+     return
     endif
    else
     call netrw#ErrorMsg(s:ERROR,"can't obtain files with protocol from<".a:tgt.">",63)
@@ -5325,13 +5726,12 @@ fun! s:NetrwSetSort()
     let seq     = seqlist
     let seqlist = ""
    endif
-   let sepchr= "\<Char-0xff>"
    if priority < 10
-    let spriority= "00".priority.sepchr
+    let spriority= "00".priority.g:netrw_sepchr
    elseif priority < 100
-    let spriority= "0".priority.sepchr
+    let spriority= "0".priority.g:netrw_sepchr
    else
-    let spriority= priority.sepchr
+    let spriority= priority.g:netrw_sepchr
    endif
 "   call Decho("priority=".priority." spriority<".spriority."> seq<".seq."> seqlist<".seqlist.">")
 
@@ -5345,14 +5745,17 @@ fun! s:NetrwSetSort()
     let starpriority= spriority
    else
     exe 'silent keepjumps '.w:netrw_bannercnt.',$g/'.seq.'/s/^/'.spriority.'/'
+    call histdel("/",-1)
     " sometimes multiple sorting patterns will match the same file or directory.
     " The following substitute is intended to remove the excess matches.
-    exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^\d\{3}'.sepchr.'\d\{3}\//s/^\d\{3}'.sepchr.'\(\d\{3}\/\).\@=/\1/e'
+    exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^\d\{3}'.g:netrw_sepchr.'\d\{3}\//s/^\d\{3}'.g:netrw_sepchr.'\(\d\{3}\/\).\@=/\1/e'
+    call histdel("/",-1)
    endif
    let priority = priority + 1
   endwhile
   if exists("starpriority")
-   exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}'.sepchr.'/s/^/'.starpriority.'/'
+   exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}'.g:netrw_sepchr.'/s/^/'.starpriority.'/'
+   call histdel("/",-1)
   endif
 
   " Following line associated with priority -- items that satisfy a priority
@@ -5361,7 +5764,8 @@ fun! s:NetrwSetSort()
   " priority pattern needs to be retained.  So, at this point, these excess
   " priority prefixes need to be removed, but not directories that happen to
   " be just digits themselves.
-  exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}'.sepchr.'\)\%(\d\{3}'.sepchr.'\)\+\ze./\1/e'
+  exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}'.g:netrw_sepchr.'\)\%(\d\{3}'.g:netrw_sepchr.'\)\+\ze./\1/e'
+  call histdel("/",-1)
 
 "  call Dret("SetSort")
 endfun
@@ -5405,12 +5809,12 @@ fun! s:NetrwSplit(mode)
 
   elseif a:mode == 1
    " remote and t
-   let cursorword  = s:NetrwGetWord()
+   let newdir  = s:NetrwBrowseChgDir(0,s:NetrwGetWord())
 "   call Decho("tabnew")
    tabnew
    let s:didsplit= 1
    call s:RestoreWinVars()
-   call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,cursorword))
+   call s:NetrwBrowse(0,newdir)
    unlet s:didsplit
 
   elseif a:mode == 2
@@ -5433,8 +5837,8 @@ fun! s:NetrwSplit(mode)
 
   elseif a:mode == 4
    " local and t
-   let netrw_curdir= b:netrw_curdir
    let cursorword  = s:NetrwGetWord()
+   let netrw_curdir= s:NetrwTreeDir()
 "   call Decho("tabnew")
    tabnew
    let b:netrw_curdir= netrw_curdir
@@ -5505,12 +5909,13 @@ fun! s:NetrwTreeDir()
   if w:netrw_liststyle == s:TREELIST
 "   call Decho("w:netrrw_liststyle is TREELIST:")
 "   call Decho("line#".line(".")." getline(.)<".getline('.')."> treecurpos<".string(s:treecurpos).">")
+
+   " extract tree directory if on a line specifying a subdirectory (ie. ends with "/")
    if getline('.') =~ '/$'
     let treedir= substitute(getline('.'),'^\%(| \)*\([^|].\{-}\)$','\1','e')
    else
     let treedir= ""
    endif
-
 "   call Decho("treedir<".treedir.">")
 
    " detect user attempting to close treeroot
@@ -5525,11 +5930,11 @@ fun! s:NetrwTreeDir()
 
    " elide all non-depth information
    let depth = substitute(getline('.'),'^\(\%(| \)*\)[^|].\{-}$','\1','e')
-"   call Decho("depth<".depth."> 1st subst")
+"   call Decho("depth<".depth."> 1st subst (non-depth info removed)")
 
    " elide first depth
    let depth = substitute(depth,'^| ','','')
-"   call Decho("depth<".depth."> 2nd subst")
+"   call Decho("depth<".depth."> 2nd subst (first depth removed)")
 
    " construct treedir by searching backwards at correct depth
 "   call Decho("constructing treedir<".treedir."> depth<".depth.">")
@@ -5548,11 +5953,6 @@ fun! s:NetrwTreeDir()
   endif
   let treedir= substitute(treedir,'//$','/','')
 
-"  " now force a refresh
-"" call DECHO("clear buffer<".expand("%")."> with :%d")
-"  setlocal ma noro
-"  keepjumps %d
-
 "  call Dret("NetrwTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">")
   return treedir
 endfun
@@ -5663,30 +6063,32 @@ fun! s:NetrwWideListing()
   if w:netrw_liststyle == s:WIDELIST
 "   call Dfunc("NetrwWideListing() w:netrw_liststyle=".w:netrw_liststyle.' fo='.&fo.' l:fo='.&l:fo)
    " look for longest filename (cpf=characters per filename)
-   " cpf: characters per file
-   " fpl: files per line
-   " fpc: files per column
+   " cpf: characters per filename
+   " fpl: filenames per line
+   " fpc: filenames per column
    setlocal ma noro
 "   call Decho("setlocal ma noro")
    let b:netrw_cpf= 0
    if line("$") >= w:netrw_bannercnt
     exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
+    call histdel("/",-1)
    else
 "    call Dret("NetrwWideListing")
     return
    endif
-"   call Decho("max file strlen+1=".b:netrw_cpf)
-   let b:netrw_cpf= b:netrw_cpf + 1
+   let b:netrw_cpf= b:netrw_cpf + 2
+"   call Decho("b:netrw_cpf=max_filename_length+2=".b:netrw_cpf)
 
    " determine qty files per line (fpl)
    let w:netrw_fpl= winwidth(0)/b:netrw_cpf
    if w:netrw_fpl <= 0
     let w:netrw_fpl= 1
    endif
-"   call Decho("fpl= ".winwidth(0)."/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl)
+"   call Decho("fpl= [winwidth=".winwidth(0)."]/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl)
 
    " make wide display
    exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'s",submatch(0)),"\\")/'
+   call histdel("/",-1)
    let fpc         = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl
    let newcolstart = w:netrw_bannercnt + fpc
    let newcolend   = newcolstart + fpc - 1
@@ -5706,6 +6108,7 @@ fun! s:NetrwWideListing()
    endwhile
    silent! let @*= keepregstar
    exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e'
+   call histdel("/",-1)
    setlocal noma nomod ro
 "   call Dret("NetrwWideListing")
   endif
@@ -5733,16 +6136,21 @@ fun! s:PerformListing(islocal)
   endif
 
   " save current directory on directory history list
-  call s:NetrwBookmarkDir(3,b:netrw_curdir)
+  call s:NetrwBookHistHandler(3,b:netrw_curdir)
 
   " Set up the banner {{{3
-"  call Decho("set up banner")
-  keepjumps put ='\" ============================================================================'
-  keepjumps put ='\" Netrw Directory Listing                                        (netrw '.g:loaded_netrw.')'
-  keepjumps put ='\"   '.b:netrw_curdir
-  keepjumps 1d
-  let w:netrw_bannercnt= 3
-  exe "keepjumps ".w:netrw_bannercnt
+  if g:netrw_banner
+"   call Decho("set up banner")
+   keepjumps put ='\" ============================================================================'
+   keepjumps put ='\" Netrw Directory Listing                                        (netrw '.g:loaded_netrw.')'
+   keepjumps put ='\"   '.b:netrw_curdir
+   keepjumps 1d
+   let w:netrw_bannercnt= 3
+   exe "keepjumps ".w:netrw_bannercnt
+  else
+   keepjumps 1
+   let w:netrw_bannercnt= 1
+  endif
 
   let sortby= g:netrw_sort_by
   if g:netrw_sort_direction =~ "^r"
@@ -5750,55 +6158,63 @@ fun! s:PerformListing(islocal)
   endif
 
   " Sorted by... {{{3
-"  call Decho("handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">")
-  if g:netrw_sort_by =~ "^n"
+  if g:netrw_banner
+"   call Decho("handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">")
+   if g:netrw_sort_by =~ "^n"
 "   call Decho("directories will be sorted by name")
-   " sorted by name
-   keepjumps put ='\"   Sorted by      '.sortby
-   keepjumps put ='\"   Sort sequence: '.g:netrw_sort_sequence
-   let w:netrw_bannercnt= w:netrw_bannercnt + 2
-  else
+    " sorted by name
+    keepjumps put ='\"   Sorted by      '.sortby
+    keepjumps put ='\"   Sort sequence: '.g:netrw_sort_sequence
+    let w:netrw_bannercnt= w:netrw_bannercnt + 2
+   else
 "   call Decho("directories will be sorted by size or time")
-   " sorted by size or date
-   keepjumps put ='\"   Sorted by '.sortby
-   let w:netrw_bannercnt= w:netrw_bannercnt + 1
-  endif
-  exe "keepjumps ".w:netrw_bannercnt
+    " sorted by size or date
+    keepjumps put ='\"   Sorted by '.sortby
+    let w:netrw_bannercnt= w:netrw_bannercnt + 1
+   endif
+   exe "keepjumps ".w:netrw_bannercnt
+  endif
 
   " show copy/move target, if any
-  if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal")
-"   call Decho("show copy/move target<".s:netrwmftgt.">")
-   keepjumps put =''
-   if s:netrwmftgt_islocal
-    call setline(line("."),'"   Copy/Move Tgt: '.s:netrwmftgt.' (local)')
+  if g:netrw_banner
+   if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal")
+"    call Decho("show copy/move target<".s:netrwmftgt.">")
+    keepjumps put =''
+    if s:netrwmftgt_islocal
+     call setline(line("."),'"   Copy/Move Tgt: '.s:netrwmftgt.' (local)')
+    else
+     call setline(line("."),'"   Copy/Move Tgt: '.s:netrwmftgt.' (remote)')
+    endif
+    let w:netrw_bannercnt= w:netrw_bannercnt + 1
    else
-    call setline(line("."),'"   Copy/Move Tgt: '.s:netrwmftgt.' (remote)')
-   endif
-   let w:netrw_bannercnt= w:netrw_bannercnt + 1
-  else
-"   call Decho("s:netrwmftgt does not exist, don't make Copy/Move Tgt")
-  endif
-  exe "keepjumps ".w:netrw_bannercnt
+"    call Decho("s:netrwmftgt does not exist, don't make Copy/Move Tgt")
+   endif
+   exe "keepjumps ".w:netrw_bannercnt
+  endif
 
   " Hiding...  -or-  Showing... {{{3
-"  call Decho("handle hiding/showing (g:netrw_hide=".g:netrw_list_hide." g:netrw_list_hide<".g:netrw_list_hide.">)")
-  if g:netrw_list_hide != "" && g:netrw_hide
-   if g:netrw_hide == 1
-    keepjumps put ='\"   Hiding:        '.g:netrw_list_hide
-   else
-    keepjumps put ='\"   Showing:       '.g:netrw_list_hide
-   endif
-   let w:netrw_bannercnt= w:netrw_bannercnt + 1
-  endif
-  exe "keepjumps ".w:netrw_bannercnt
-  keepjumps put ='\"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:exec'
-  keepjumps put ='\" ============================================================================'
-  let w:netrw_bannercnt= w:netrw_bannercnt + 2
+  if g:netrw_banner
+"   call Decho("handle hiding/showing (g:netrw_hide=".g:netrw_list_hide." g:netrw_list_hide<".g:netrw_list_hide.">)")
+   if g:netrw_list_hide != "" && g:netrw_hide
+    if g:netrw_hide == 1
+     keepjumps put ='\"   Hiding:        '.g:netrw_list_hide
+    else
+     keepjumps put ='\"   Showing:       '.g:netrw_list_hide
+    endif
+    let w:netrw_bannercnt= w:netrw_bannercnt + 1
+   endif
+   exe "keepjumps ".w:netrw_bannercnt
+   keepjumps put ='\"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:exec'
+   keepjumps put ='\" ============================================================================'
+   let w:netrw_bannercnt= w:netrw_bannercnt + 2
+  endif
 
   " bannercnt should index the line just after the banner
-  let w:netrw_bannercnt= w:netrw_bannercnt + 1
-  exe "keepjumps ".w:netrw_bannercnt
-"  call Decho("bannercnt=".w:netrw_bannercnt." (should index line just after banner) line($)=".line("$"))
+  if g:netrw_banner
+   let w:netrw_bannercnt= w:netrw_bannercnt + 1
+   exe "keepjumps ".w:netrw_bannercnt
+"   call Decho("bannercnt=".w:netrw_bannercnt." (should index line just after banner) line($)=".line("$"))
+  endif
 
   " set up syntax highlighting {{{3
 "  call Decho("set up syntax highlighting")
@@ -5816,23 +6232,23 @@ fun! s:PerformListing(islocal)
   else " remote
    call s:NetrwRemoteListing()
   endif
-"  call Decho("w:netrw_bannercnt=".w:netrw_bannercnt." (banner complete)")
+"  call Decho("g:netrw_banner=".g:netrw_banner." w:netrw_bannercnt=".w:netrw_bannercnt." (banner complete)")
 
   " manipulate the directory listing (hide, sort) {{{3
-  if line("$") >= w:netrw_bannercnt
+  if !g:netrw_banner || line("$") >= w:netrw_bannercnt
 "   call Decho("manipulate directory listing (hide)")
 "   call Decho("g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">")
    if g:netrw_hide && g:netrw_list_hide != ""
     call s:NetrwListHide()
    endif
-   if line("$") >= w:netrw_bannercnt
+   if !g:netrw_banner || line("$") >= w:netrw_bannercnt
 "    call Decho("manipulate directory listing (sort) : g:netrw_sort_by<".g:netrw_sort_by.">")
 
     if g:netrw_sort_by =~ "^n"
      " sort by name
      call s:NetrwSetSort()
 
-     if w:netrw_bannercnt < line("$")
+     if !g:netrw_banner || w:netrw_bannercnt < line("$")
 "      call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")")
       if g:netrw_sort_direction =~ 'n'
        " normal direction sorting
@@ -5844,11 +6260,11 @@ fun! s:PerformListing(islocal)
      endif
      " remove priority pattern prefix
 "     call Decho("remove priority pattern prefix")
-     let sepchr= "\<Char-0xff>"
-     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}'.sepchr.'//e'
+     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e'
+     call histdel("/",-1)
 
     elseif a:islocal
-     if w:netrw_bannercnt < line("$")
+     if !g:netrw_banner || w:netrw_bannercnt < line("$")
 "      call Decho("g:netrw_sort_direction=".g:netrw_sort_direction)
       if g:netrw_sort_direction =~ 'n'
 "       call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort')
@@ -5857,13 +6273,17 @@ fun! s:PerformListing(islocal)
 "       call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort!')
        exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
       endif
+     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
+     call histdel("/",-1)
      endif
-     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
     endif
 
    elseif g:netrw_sort_direction =~ 'r'
 "    call Decho('reverse the sorted listing')
-    exe 'silent keepjumps '.w:netrw_bannercnt.'g/^/m '.w:netrw_bannercnt
+    if !g:netrw_banner || w:netrw_bannercnt < line('$')
+     exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^/m '.w:netrw_bannercnt
+     call histdel("/",-1)
+    endif
    endif
   endif
 
@@ -5872,7 +6292,7 @@ fun! s:PerformListing(islocal)
   call s:NetrwWideListing()
   call s:NetrwTreeListing(b:netrw_curdir)
 
-  if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt
+  if exists("w:netrw_bannercnt") && (line("$") > w:netrw_bannercnt || !g:netrw_banner)
    " place cursor on the top-left corner of the file listing
 "   call Decho("place cursor on top-left corner of file listing")
    exe 'silent keepjumps '.w:netrw_bannercnt
@@ -6006,8 +6426,10 @@ fun! s:NetrwRemoteListing()
     " cleanup
     if g:netrw_ftp_browse_reject != ""
      exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d"
+     call histdel("/",-1)
     endif
     silent! keepjumps %s/\r$//e
+    call histdel("/",-1)
 
     " if there's no ../ listed, then put ./ and ../ in
     let line1= line(".")
@@ -6025,11 +6447,15 @@ fun! s:NetrwRemoteListing()
     if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup
 "     call Decho("M$ ftp cleanup")
      exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+//'
+     call histdel("/",-1)
     else " normal ftp cleanup
 "     call Decho("normal ftp cleanup")
      exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
      exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
      exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
+     call histdel("/",-1)
+     call histdel("/",-1)
+     call histdel("/",-1)
     endif
    endif
 
@@ -6045,8 +6471,12 @@ fun! s:NetrwRemoteListing()
     g/^Listing directory/d
     g/^d[-rwx][-rwx][-rwx]/s+$+/+e
     silent g/^l[-rwx][-rwx][-rwx]/s+$+@+e
+    call histdel("/",-1)
+    call histdel("/",-1)
+    call histdel("/",-1)
     if g:netrw_liststyle != s:LONGLIST
      g/^[dlsp-][-rwx][-rwx][-rwx]/s/^.*\s\(\S\+\)$/\1/e
+     call histdel("/",-1)
     endif
    else
     if s:path == ""
@@ -6063,6 +6493,7 @@ fun! s:NetrwRemoteListing()
    if g:netrw_ftp_browse_reject != ""
 "    call Decho("(cleanup) exe silent! g/".g:netrw_ssh_browse_reject."/keepjumps d")
     exe "silent! g/".g:netrw_ssh_browse_reject."/keepjumps d"
+    call histdel("/",-1)
    endif
   endif
 
@@ -6099,6 +6530,9 @@ fun! s:NetrwRemoteListing()
     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/ -> .*$//e'
     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
     exe 'silent keepjumps '.w:netrw_bannercnt
+    call histdel("/",-1)
+    call histdel("/",-1)
+    call histdel("/",-1)
    endif
   endif
 
@@ -6118,6 +6552,7 @@ fun! s:NetrwRemoteRm(usrhost,path) range
   let all= 0
   if exists("s:netrwmarkfilelist_{bufnr('%')}")
    " remove all marked files
+"   call Decho("remove all marked files with bufnr#".bufnr("%"))
    for fname in s:netrwmarkfilelist_{bufnr("%")}
     let ok= s:NetrwRemoteRmFile(a:path,fname,all)
     if ok =~ 'q\%[uit]'
@@ -6126,12 +6561,11 @@ fun! s:NetrwRemoteRm(usrhost,path) range
      let all= 1
     endif
    endfor
-   unlet s:netrwmarkfilelist_{bufnr("%")}
-   unlet s:netrwmarkfilemtch_{bufnr("%")}
-   2match none
+   call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir)
 
   else
    " remove files specified by range
+"   call Decho("remove files specified by range")
 
    " preparation for removing multiple files/directories
    let ctr= a:firstline
@@ -6245,14 +6679,14 @@ fun! s:NetrwRemoteRmFile(path,rmfile,all
      call s:NetrwRemoteFtpCmd(a:path,"rmdir ".a:rmfile)
     else
      let rmfile          = substitute(a:path.a:rmfile,'/$','','')
-     let netrw_rmdir_cmd = s:MakeSshCmd(s:WinPath(g:netrw_rmdir_cmd)).' '.shellescape(s:WinPath(rmfile))
+     let netrw_rmdir_cmd = s:MakeSshCmd(netrw#WinPath(g:netrw_rmdir_cmd)).' '.shellescape(netrw#WinPath(rmfile))
 "      call Decho("attempt to remove dir: system(".netrw_rmdir_cmd.")")
      let ret= system(netrw_rmdir_cmd)
 "      call Decho("returned=".ret." errcode=".v:shell_error)
 
      if v:shell_error != 0
 "      call Decho("v:shell_error not 0")
-      let netrw_rmf_cmd= s:MakeSshCmd(s:WinPath(g:netrw_rmf_cmd)).' '.shellescape(s:WinPath(substitute(rmfile,'[\/]$','','e')))
+      let netrw_rmf_cmd= s:MakeSshCmd(netrw#WinPath(g:netrw_rmf_cmd)).' '.shellescape(netrw#WinPath(substitute(rmfile,'[\/]$','','e')))
 "      call Decho("2nd attempt to remove dir: system(".netrw_rmf_cmd.")")
       let ret= system(netrw_rmf_cmd)
 "      call Decho("returned=".ret." errcode=".v:shell_error)
@@ -6353,13 +6787,17 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd)
   " cleanup for Windows
   if has("win32") || has("win95") || has("win64") || has("win16")
    silent! keepjumps %s/\r$//e
+   call histdel("/",-1)
   endif
   if a:listcmd == "dir"
    " infer directory/link based on the file permission string
    silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@
    silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/
+   call histdel("/",-1)
+   call histdel("/",-1)
    if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST
     exe "silent! keepjumps ".w:netrw_bannercnt.',$s/^\%(\S\+\s\+\)\{8}//e'
+    call histdel("/",-1)
    endif
   endif
 
@@ -6412,8 +6850,8 @@ fun! s:NetrwRemoteRename(usrhost,path) r
     else
      let oldname= shellescape(a:path.oldname)
      let newname= shellescape(a:path.newname)
-"     call Decho("system(s:WinPath(".rename_cmd.") ".oldname.' '.newname.")")
-     let ret    = system(s:WinPath(rename_cmd).' '.oldname.' '.newname)
+"     call Decho("system(netrw#WinPath(".rename_cmd.") ".oldname.' '.newname.")")
+     let ret    = system(netrw#WinPath(rename_cmd).' '.oldname.' '.newname)
     endif
 
    endfor
@@ -6437,8 +6875,8 @@ fun! s:NetrwRemoteRename(usrhost,path) r
     else
      let oldname= shellescape(a:path.oldname)
      let newname= shellescape(a:path.newname)
-"     call Decho("system(s:WinPath(".rename_cmd.") ".oldname.' '.newname.")")
-     let ret    = system(s:WinPath(rename_cmd).' '.oldname.' '.newname)
+"     call Decho("system(netrw#WinPath(".rename_cmd.") ".oldname.' '.newname.")")
+     let ret    = system(netrw#WinPath(rename_cmd).' '.oldname.' '.newname)
     endif
 
     let ctr= ctr + 1
@@ -6466,13 +6904,16 @@ fun! netrw#LocalBrowseCheck(dirname)
   " The &ft == "netrw" test was installed because the BufEnter event
   " would hit when re-entering netrw windows, creating unexpected
   " refreshes (and would do so in the middle of NetrwSaveOptions(), too)
-"  call Decho("netrw#LocalBrowseCheck: isdir<".a:dirname.">=".isdirectory(a:dirname))
+"  call Decho("netrw#LocalBrowseCheck: isdir<".a:dirname.">=".isdirectory(a:dirname).((exists("s:treeforceredraw")? " treeforceredraw" : "")))
   if isdirectory(a:dirname)
 "   call Decho(" ft<".&ft."> b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : " doesn't exist")."> dirname<".a:dirname.">"." line($)=".line("$"))
    if &ft != "netrw" || (exists("b:netrw_curdir") && b:netrw_curdir != a:dirname)
     silent! call s:NetrwBrowse(1,a:dirname)
    elseif &ft == "netrw" && line("$") == 1
     silent! call s:NetrwBrowse(1,a:dirname)
+   elseif exists("s:treeforceredraw")
+    unlet s:treeforceredraw
+    silent! call s:NetrwBrowse(1,a:dirname)
    endif
   endif
   " not a directory, ignore it
@@ -6492,7 +6933,7 @@ fun! s:LocalListing()
 
   " get the list of files contained in the current directory
   let dirname    = escape(b:netrw_curdir,g:netrw_glob_escape)
-  let dirnamelen = strlen(b:netrw_curdir)
+  let dirnamelen = s:Strlen(b:netrw_curdir)
   let filelist   = glob(s:ComposePath(dirname,"*"))
 "  call Decho("glob(dirname<".dirname."/*>)=".filelist)
   if filelist != ""
@@ -6608,7 +7049,7 @@ fun! s:LocalListing()
 
    if w:netrw_liststyle == s:LONGLIST
     let sz   = getfsize(filename)
-    let fsz  = strpart("               ",1,15-s:Strlen(sz)).sz
+    let fsz  = strpart("               ",1,15-strlen(sz)).sz
     let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename))
 "    call Decho("sz=".sz." fsz=".fsz)
    endif
@@ -6617,7 +7058,7 @@ fun! s:LocalListing()
     " sort by time (handles time up to 1 quintillion seconds, US)
 "    call Decho("getftime(".filename.")=".getftime(filename))
     let t  = getftime(filename)
-    let ft = strpart("000000000000000000",1,18-s:Strlen(t)).t
+    let ft = strpart("000000000000000000",1,18-strlen(t)).t
 "    call Decho("exe keepjumps put ='".ft.'/'.filename."'")
     let ftpfile= ft.'/'.pfile
     keepjumps silent! put=ftpfile
@@ -6626,7 +7067,7 @@ fun! s:LocalListing()
     " sort by size (handles file sizes up to 1 quintillion bytes, US)
 "    call Decho("getfsize(".filename.")=".getfsize(filename))
     let sz   = getfsize(filename)
-    let fsz  = strpart("000000000000000000",1,18-s:Strlen(sz)).sz
+    let fsz  = strpart("000000000000000000",1,18-strlen(sz)).sz
 "    call Decho("exe keepjumps put ='".fsz.'/'.filename."'")
     let fszpfile= fsz.'/'.pfile
     keepjumps silent! put =fszpfile
@@ -6639,7 +7080,9 @@ fun! s:LocalListing()
   endwhile
 
   " cleanup any windows mess at end-of-line
+  silent! keepjumps g/^$/d
   silent! keepjumps %s/\r$//e
+  call histdel("/",-1)
   exe "setlocal ts=".g:netrw_maxfilenamelen
 "  call Decho("setlocal ts=".g:netrw_maxfilenamelen)
 
@@ -6659,9 +7102,17 @@ fun! s:LocalBrowseShellCmdRefresh()
    return
   endif
   if !exists("w:netrw_bannercnt")
-"   call Dret("LocalBrowseShellCmdRefresh : don't refresh when focus not on netrw windwo")
+"   call Dret("LocalBrowseShellCmdRefresh : don't refresh when focus not on netrw window")
    return
   endif
+  if exists("s:locbrowseshellcmd")
+   if s:locbrowseshellcmd
+    let s:locbrowseshellcmd= 0
+"    call Dret("LocalBrowseShellCmdRefresh : NetrwBrowse itself caused the refresh")
+    return
+   endif
+   let s:locbrowseshellcmd= 0
+  endif
   let itab       = 1
   let buftablist = []
   while itab <= tabpagenr("$")
@@ -6815,8 +7266,8 @@ fun! s:NetrwLocalRmFile(path,fname,all)
    let rmfile= substitute(rmfile,'[\/]$','','e')
 
    if all || ok =~ 'y\%[es]' || ok == ""
-"    call Decho("1st attempt: system(s:WinPath(".g:netrw_local_rmdir.') '.shellescape(rmfile).')')
-    call system(s:WinPath(g:netrw_local_rmdir).' '.shellescape(rmfile))
+"    call Decho("1st attempt: system(netrw#WinPath(".g:netrw_local_rmdir.') '.shellescape(rmfile).')')
+    call system(netrw#WinPath(g:netrw_local_rmdir).' '.shellescape(rmfile))
 "    call Decho("v:shell_error=".v:shell_error)
 
     if v:shell_error != 0
@@ -6874,9 +7325,7 @@ fun! s:NetrwLocalRename(path) range
     endif
     call rename(oldname,newname)
    endfor
-   2match none
-   unlet s:netrwmarkfilelist_{bufnr("%")}
-   unlet s:netrwmarkfilemtch_{bufnr("%")}
+   call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir)
   
   else
 
@@ -6955,9 +7404,11 @@ fun! s:LocalFastBrowser()
    augroup AuNetrwShellCmd
     au!
     if (has("win32") || has("win95") || has("win64") || has("win16"))
+"     call Decho("autocmd: ShellCmdPost * call s:LocalBrowseShellCmdRefresh()")
      au ShellCmdPost			*	call s:LocalBrowseShellCmdRefresh()
     else
      au ShellCmdPost,FocusGained	*	call s:LocalBrowseShellCmdRefresh()
+"     call Decho("autocmd: ShellCmdPost,FocusGained * call s:LocalBrowseShellCmdRefresh()")
     endif
    augroup END
   endif
@@ -6984,7 +7435,7 @@ endfun
 "   0=note     = s:NOTE
 "   1=warning  = s:WARNING
 "   2=error    = s:ERROR
-"  Jul 08, 2008 : max errnum currently is 71
+"  Dec 03, 2009 : max errnum currently is 76
 fun! netrw#ErrorMsg(level,msg,errnum)
 "  call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow)
 
@@ -7017,7 +7468,8 @@ fun! netrw#ErrorMsg(level,msg,errnum)
    else
 "    call Decho("create a NetrwMessage buffer window")
     bo 1split
-    enew
+    call s:NetrwEnew()
+    call s:NetrwSafeOptions()
     setlocal bt=nofile
     file NetrwMessage
 "    call Decho("setlocal ma noro")
@@ -7101,6 +7553,7 @@ fun! netrw#NetrwSavePosn()
   let w:netrw_winnr= winnr()
   let w:netrw_line = line(".")
   let w:netrw_col  = virtcol(".")
+"  call Decho("currently, win#".w:netrw_winnr." line#".w:netrw_line." col#".w:netrw_col)
 
   " Save top-of-screen line
   norm! H0
@@ -7130,7 +7583,7 @@ fun! s:ComposePath(base,subdir)
 
   if(has("amiga"))
 "   call Decho("amiga")
-   let ec = a:base[strlen(a:base)-1]
+   let ec = a:base[s:Strlen(a:base)-1]
    if ec != '/' && ec != ':'
     let ret = a:base . "/" . a:subdir
    else
@@ -7141,6 +7594,14 @@ fun! s:ComposePath(base,subdir)
 "   call Decho("windows")
    let ret= a:subdir
 
+  elseif a:base =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16"))
+"   call Decho("windows")
+   if a:base =~ '[/\\]$'
+    let ret= a:base.a:subdir
+   else
+    let ret= a:base."/".a:subdir
+   endif
+
   elseif a:base =~ '^\a\+://'
 "   call Decho("remote linux/macos")
    let urlbase = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\1','')
@@ -7212,7 +7673,7 @@ fun! s:GetTempfile(fname)
    endif
 
    " let netrw#NetSource() know about the tmpfile
-   let s:netrw_tmpfile= tmpfile " used by netrw#NetSource()
+   let s:netrw_tmpfile= tmpfile " used by netrw#NetSource() and netrw#NetrwBrowseX()
 "   call Decho("tmpfile<".tmpfile."> s:netrw_tmpfile<".s:netrw_tmpfile.">")
 
    " o/s dependencies
@@ -7301,7 +7762,7 @@ endfun
 fun! s:NetrwDelete(path)
 "  call Dfunc("s:NetrwDelete(path<".a:path.">)")
 
-  let path = s:WinPath(a:path)
+  let path = netrw#WinPath(a:path)
   if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16"))
    if exists("+shellslash")
     let sskeep= &shellslash
@@ -7317,7 +7778,7 @@ fun! s:NetrwDelete(path)
    let result= delete(path)
   endif
   if result < 0
-   call Netrw#ErrorMsg(s:WARNING,"delete(".path.") failed!",71)
+   call netrw#ErrorMsg(s:WARNING,"delete(".path.") failed!",71)
   endif
 
 "  call Dret("s:NetrwDelete ".result)
@@ -7326,8 +7787,9 @@ endfun
 
 " ---------------------------------------------------------------------
 " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2
-fun! s:NetrwEnew(curdir)
-"  call Dfunc("s:NetrwEnew(curdir<".a:curdir.">) buf#".bufnr("%")."<".bufname("%").">")
+fun! s:NetrwEnew(...)
+"  call Dfunc("s:NetrwEnew() a:0=".a:0)
+"  call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">")
 
   " grab a function-local-variable copy of buffer variables
   if exists("b:netrw_bannercnt")      |let netrw_bannercnt       = b:netrw_bannercnt      |endif
@@ -7370,14 +7832,16 @@ fun! s:NetrwEnew(curdir)
   if exists("netrw_option")         |let b:netrw_option          = netrw_option         |endif
   if exists("netrw_prvdir")         |let b:netrw_prvdir          = netrw_prvdir         |endif
 
-  let b:netrw_curdir= a:curdir
-  if b:netrw_curdir =~ '/$'
-   if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
-    file NetrwTreeListing
-    nno <silent> <buffer> [	:silent call <SID>TreeListMove('[')<cr>
-    nno <silent> <buffer> ]	:silent call <SID>TreeListMove(']')<cr>
-   else
-    exe "silent! keepalt file ".fnameescape(b:netrw_curdir)
+  if a:0 > 0
+   let b:netrw_curdir= a:1
+   if b:netrw_curdir =~ '/$'
+    if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
+     file NetrwTreeListing
+     nno <silent> <buffer> [	:silent call <SID>TreeListMove('[')<cr>
+     nno <silent> <buffer> ]	:silent call <SID>TreeListMove(']')<cr>
+    else
+     exe "silent! keepalt file ".fnameescape(b:netrw_curdir)
+    endif
    endif
   endif
 
@@ -7511,13 +7975,16 @@ fun! s:NetrwRexplore(islocal,dirname)
    call netrw#NetrwRestorePosn(s:nbcd_curpos_{bufnr('%')})
    unlet s:nbcd_curpos_{bufnr('%')}
   endif
+  if exists("s:explore_match")
+   exe "2match netrwMarkFile /".s:explore_match."/"
+  endif
 "  call Dret("s:NetrwRexplore")
 endfun
 
 " ---------------------------------------------------------------------
 " s:SaveBufVars: {{{2
 fun! s:SaveBufVars()
-"  call Dfunc("s:SaveBufVars()")
+"  call Dfunc("s:SaveBufVars() buf#".bufnr("%"))
 
   if exists("b:netrw_curdir")        |let s:netrw_curdir         = b:netrw_curdir        |endif
   if exists("b:netrw_lastfile")      |let s:netrw_lastfile       = b:netrw_lastfile      |endif
@@ -7532,7 +7999,7 @@ endfun
 " ---------------------------------------------------------------------
 " s:SaveWinVars: (used by Explore() and NetrwSplit()) {{{2
 fun! s:SaveWinVars()
-"  call Dfunc("s:SaveWinVars()")
+"  call Dfunc("s:SaveWinVars() win#".winnr())
   if exists("w:netrw_bannercnt")      |let s:bannercnt       = w:netrw_bannercnt      |endif
   if exists("w:netrw_col")            |let s:col             = w:netrw_col            |endif
   if exists("w:netrw_curdir")         |let s:curdir          = w:netrw_curdir         |endif
@@ -7562,7 +8029,7 @@ endfun
 "   variables are not inherited by the new window.  SetBufWinVars() and
 "   UseBufWinVars() get around that.
 fun! s:SetBufWinVars()
-"  call Dfunc("s:SetBufWinVars()")
+"  call Dfunc("s:SetBufWinVars() win#".winnr())
   if exists("w:netrw_liststyle")      |let b:netrw_liststyle      = w:netrw_liststyle      |endif
   if exists("w:netrw_bannercnt")      |let b:netrw_bannercnt      = w:netrw_bannercnt      |endif
   if exists("w:netrw_method")         |let b:netrw_method         = w:netrw_method         |endif
@@ -7584,8 +8051,7 @@ fun! s:SetRexDir(islocal,dirname)
   if a:islocal
    exe 'com! Rexplore call s:NetrwRexplore(1,"'.escape(a:dirname,'"\').'")'
    if g:netrw_retmap
-    silent! unmap <2-leftmouse>
-    if !hasmapto("<Plug>NetrwReturn")
+    if !hasmapto("<Plug>NetrwReturn") && maparg("<2-leftmouse>","n") == ""
      nmap <unique> <silent> <2-leftmouse>	<Plug>NetrwReturn
     endif
     let dir = escape(a:dirname, s:netrw_map_escape)
@@ -7594,8 +8060,7 @@ fun! s:SetRexDir(islocal,dirname)
   else
    exe 'com! Rexplore call s:NetrwRexplore(0,"'.escape(a:dirname,'"\').'")'
    if g:netrw_retmap
-    silent! unmap <2-leftmouse>
-    if !hasmapto("<Plug>NetrwReturn")
+    if !hasmapto("<Plug>NetrwReturn") && maparg("<2-leftmouse>","n") == ""
      nmap <unique> <silent> <2-leftmouse>	<Plug>NetrwReturn
     endif
     let dir = escape(a:dirname, s:netrw_map_escape)
@@ -7608,9 +8073,9 @@ endfun
 " ---------------------------------------------------------------------
 " s:Strlen: this function returns the length of a string, even if its {{{2
 "           using two-byte etc characters.
-"           Currently, its only used if g:Align_xstrlen is set to a
-"           nonzero value.  Solution from Nicolai Weibull, vim docs
-"           (:help strlen()), Tony Mechelynck, and my own invention.
+"           Solution from Nicolai Weibull, vim docs (:help strlen()), Tony Mechelynck,
+"           and a bit from me.
+"           if g:netrw_xstrlen is zero (default), then the builtin strlen() function is used.
 fun! s:Strlen(x)
 "  call Dfunc("s:Strlen(x<".a:x.">")
   if g:netrw_xstrlen == 1
@@ -7638,7 +8103,7 @@ fun! s:Strlen(x)
 
   else
    " at least give a decent default
-   ret= strlen(a:x)
+   let ret= strlen(a:x)
   endif
 "  call Dret("s:Strlen ".ret)
   return ret
@@ -7707,7 +8172,7 @@ endfun
 "                      Buffers.Refresh; hence, s:NetrwBMShow() utilizes a "cheat" to call that function anyway.
 fun! s:UpdateBuffersMenu()
 "  call Dfunc("s:UpdateBuffersMenu()")
-  if has("gui") && has("menu") && has("gui_running") && &go =~ 'm'
+  if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
    try
     silent emenu Buffers.Refresh\ menu
    catch /^Vim\%((\a\+)\)\=:E/
@@ -7737,12 +8202,14 @@ fun! s:UseBufWinVars()
 endfun
 
 " ---------------------------------------------------------------------
-" s:WinPath: {{{2
-fun! s:WinPath(path)
-"  call Dfunc("s:WinPath(path<".a:path.">)")
-  if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16"))
+" netrw#WinPath: tries to insure that the path is windows-acceptable, whether cygwin is used or not {{{2
+fun! netrw#WinPath(path)
+"  call Dfunc("netrw#WinPath(path<".a:path.">)")
+  if (!g:netrw_cygwin || &shell !~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$') && (has("win32") || has("win95") || has("win64") || has("win16"))
+   " remove cygdrive prefix, if present
+   let path = substitute(a:path,'/cygdrive/\(.\)','\1:','')
    " remove trailing slash (Win95)
-   let path = substitute(a:path, '\(\\\|/\)$', '', 'g')
+   let path = substitute(path, '\(\\\|/\)$', '', 'g')
    " remove escaped spaces
    let path = substitute(path, '\ ', ' ', 'g')
    " convert slashes to backslashes
@@ -7750,7 +8217,7 @@ fun! s:WinPath(path)
   else
    let path= a:path
   endif
-"  call Dret("s:WinPath <".path.">")
+"  call Dret("netrw#WinPath <".path.">")
   return path
 endfun
 
--- a/runtime/autoload/netrwFileHandlers.vim
+++ b/runtime/autoload/netrwFileHandlers.vim
@@ -1,9 +1,9 @@
 " netrwFileHandlers: contains various extension-based file handlers for
 "                    netrw's browsers' x command ("eXecute launcher")
 " Author:	Charles E. Campbell, Jr.
-" Date:		May 30, 2006
-" Version:	9
-" Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
+" Date:		Sep 30, 2008
+" Version:	10
+" Copyright:    Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
 "               with or without modifications, provided that this copyright
 "               notice is copied with it. Like anything else that's free,
@@ -20,9 +20,15 @@
 if exists("g:loaded_netrwFileHandlers") || &cp
  finish
 endif
+let g:loaded_netrwFileHandlers= "v10"
+if v:version < 702
+ echohl WarningMsg
+ echo "***warning*** this version of netrwFileHandlers needs vim 7.2"
+ echohl Normal
+ finish
+endif
 let s:keepcpo= &cpo
 set cpo&vim
-let g:loaded_netrwFileHandlers= "v9"
 
 " ---------------------------------------------------------------------
 " netrwFileHandlers#Invoke: {{{1
@@ -73,10 +79,10 @@ fun! s:NFH_html(pagefile)
 
   if executable("mozilla")
 "   call Decho("executing !mozilla ".page)
-   exe "!mozilla ".g:netrw_shq.page.g:netrw_shq
+   exe "!mozilla ".shellescape(page,1)
   elseif executable("netscape")
 "   call Decho("executing !netscape ".page)
-   exe "!netscape ".g:netrw_shq..page.g:netrw_shq
+   exe "!netscape ".shellescape(page,1)
   else
 "   call Dret("s:NFH_html 0")
    return 0
@@ -96,10 +102,10 @@ fun! s:NFH_htm(pagefile)
 
   if executable("mozilla")
 "   call Decho("executing !mozilla ".page)
-   exe "!mozilla ".g:netrw_shq.page.g:netrw_shq
+   exe "!mozilla ".shellescape(page,1)
   elseif executable("netscape")
 "   call Decho("executing !netscape ".page)
-   exe "!netscape ".g:netrw_shq.page.g:netrw_shq
+   exe "!netscape ".shellescape(page,1)
   else
 "   call Dret("s:NFH_htm 0")
    return 0
@@ -115,10 +121,10 @@ fun! s:NFH_jpg(jpgfile)
 "  call Dfunc("s:NFH_jpg(jpgfile<".a:jpgfile.">)")
 
   if executable("gimp")
-   exe "silent! !gimp -s ".g:netrw_shq.a:jpgfile.g:netrw_shq
+   exe "silent! !gimp -s ".shellescape(a:jpgfile,1)
   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
 "   call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'"))
-   exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:jpgfile.g:netrw_shq
+   exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:jpgfile,1)
   else
 "   call Dret("s:NFH_jpg 0")
    return 0
@@ -134,9 +140,9 @@ fun! s:NFH_gif(giffile)
 "  call Dfunc("s:NFH_gif(giffile<".a:giffile.">)")
 
   if executable("gimp")
-   exe "silent! !gimp -s ".g:netrw_shq.a:giffile.g:netrw_shq
+   exe "silent! !gimp -s ".shellescape(a:giffile,1)
   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:giffile.g:netrw_shq
+   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:giffile,1)
   else
 "   call Dret("s:NFH_gif 0")
    return 0
@@ -152,9 +158,9 @@ fun! s:NFH_png(pngfile)
 "  call Dfunc("s:NFH_png(pngfile<".a:pngfile.">)")
 
   if executable("gimp")
-   exe "silent! !gimp -s ".g:netrw_shq.a:pngfile.g:netrw_shq
+   exe "silent! !gimp -s ".shellescape(a:pngfile,1)
   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:pngfile.g:netrw_shq
+   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:pngfile,1)
   else
 "   call Dret("s:NFH_png 0")
    return 0
@@ -170,9 +176,9 @@ fun! s:NFH_pnm(pnmfile)
 "  call Dfunc("s:NFH_pnm(pnmfile<".a:pnmfile.">)")
 
   if executable("gimp")
-   exe "silent! !gimp -s ".g:netrw_shq.a:pnmfile.g:netrw_shq
+   exe "silent! !gimp -s ".shellescape(a:pnmfile,1)
   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:pnmfile.g:netrw_shq
+   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:pnmfile,1)
   else
 "   call Dret("s:NFH_pnm 0")
    return 0
@@ -190,7 +196,7 @@ fun! s:NFH_bmp(bmpfile)
   if executable("gimp")
    exe "silent! !gimp -s ".a:bmpfile
   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:bmpfile.g:netrw_shq
+   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:bmpfile,1)
   else
 "   call Dret("s:NFH_bmp 0")
    return 0
@@ -205,9 +211,9 @@ endfun
 fun! s:NFH_pdf(pdf)
 "  call Dfunc("s:NFH_pdf(pdf<".a:pdf.">)")
   if executable("gs")
-   exe 'silent! !gs '.g:netrw_shq.a:pdf.g:netrw_shq
+   exe 'silent! !gs '.shellescape(a:pdf,1)
   elseif executable("pdftotext")
-   exe 'silent! pdftotext -nopgbrk '.g:netrw_shq.a:pdf.g:netrw_shq
+   exe 'silent! pdftotext -nopgbrk '.shellescape(a:pdf,1)
   else
 "  call Dret("s:NFH_pdf 0")
    return 0
@@ -223,7 +229,7 @@ fun! s:NFH_doc(doc)
 "  call Dfunc("s:NFH_doc(doc<".a:doc.">)")
 
   if executable("oowriter")
-   exe 'silent! !oowriter '.g:netrw_shq.a:doc.g:netrw_shq
+   exe 'silent! !oowriter '.shellescape(a:doc,1)
    redraw!
   else
 "  call Dret("s:NFH_doc 0")
@@ -240,7 +246,7 @@ fun! s:NFH_sxw(sxw)
 "  call Dfunc("s:NFH_sxw(sxw<".a:sxw.">)")
 
   if executable("oowriter")
-   exe 'silent! !oowriter '.g:netrw_shq.a:sxw.g:netrw_shq
+   exe 'silent! !oowriter '.shellescape(a:sxw,1)
    redraw!
   else
 "   call Dret("s:NFH_sxw 0")
@@ -257,7 +263,7 @@ fun! s:NFH_xls(xls)
 "  call Dfunc("s:NFH_xls(xls<".a:xls.">)")
 
   if executable("oocalc")
-   exe 'silent! !oocalc '.g:netrw_shq.a:xls.g:netrw_shq
+   exe 'silent! !oocalc '.shellescape(a:xls,1)
    redraw!
   else
 "  call Dret("s:NFH_xls 0")
@@ -274,15 +280,15 @@ fun! s:NFH_ps(ps)
 "  call Dfunc("s:NFH_ps(ps<".a:ps.">)")
   if executable("gs")
 "   call Decho("exe silent! !gs ".a:ps)
-   exe "silent! !gs ".g:netrw_shq.a:ps.g:netrw_shq
+   exe "silent! !gs ".shellescape(a:ps,1)
    redraw!
   elseif executable("ghostscript")
 "   call Decho("exe silent! !ghostscript ".a:ps)
-   exe "silent! !ghostscript ".g:netrw_shq.a:ps.g:netrw_shq
+   exe "silent! !ghostscript ".shellescape(a:ps,1)
    redraw!
   elseif executable("gswin32")
-"   call Decho("exe silent! !gswin32 ".g:netrw_shq.a:ps.g:netrw_shq)
-   exe "silent! !gswin32 ".g:netrw_shq.a:ps.g:netrw_shq
+"   call Decho("exe silent! !gswin32 ".shellescape(a:ps,1))
+   exe "silent! !gswin32 ".shellescape(a:ps,1)
    redraw!
   else
 "   call Dret("s:NFH_ps 0")
@@ -298,16 +304,16 @@ endfun
 fun! s:NFH_eps(eps)
 "  call Dfunc("s:NFH_eps()")
   if executable("gs")
-   exe "silent! !gs ".g:netrw_shq.a:eps.g:netrw_shq
+   exe "silent! !gs ".shellescape(a:eps,1)
    redraw!
   elseif executable("ghostscript")
-   exe "silent! !ghostscript ".g:netrw_shq.a:eps.g:netrw_shq
+   exe "silent! !ghostscript ".shellescape(a:eps,1)
    redraw!
   elseif executable("ghostscript")
-   exe "silent! !ghostscript ".g:netrw_shq.a:eps.g:netrw_shq
+   exe "silent! !ghostscript ".shellescape(a:eps,1)
    redraw!
   elseif executable("gswin32")
-   exe "silent! !gswin32 ".g:netrw_shq.a:eps.g:netrw_shq
+   exe "silent! !gswin32 ".shellescape(a:eps,1)
    redraw!
   else
 "   call Dret("s:NFH_eps 0")
--- a/runtime/autoload/netrwSettings.vim
+++ b/runtime/autoload/netrwSettings.vim
@@ -1,7 +1,7 @@
 " netrwSettings.vim: makes netrw settings simpler
-" Date:		Jul 02, 2008
+" Date:		Sep 03, 2008
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
-" Version:	12
+" Version:	13
 " Copyright:    Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
 "               with or without modifications, provided that this copyright
@@ -19,7 +19,13 @@
 if exists("g:loaded_netrwSettings") || &cp
   finish
 endif
-let g:loaded_netrwSettings  = "v12"
+let g:loaded_netrwSettings = "v13"
+if v:version < 700
+ echohl WarningMsg
+ echo "***warning*** this version of netrwSettings needs vim 7.0"
+ echohl Normal
+ finish
+endif
 
 " ---------------------------------------------------------------------
 " NetrwSettings: {{{1
@@ -100,6 +106,7 @@ fun! netrwSettings#NetrwSettings()
    put = 'let g:netrw_browsex_viewer    = (not defined)'
   endif
   put = 'let g:netrw_compress          = '.g:netrw_compress
+  put = 'let g:netrw_cursorline        = '.g:netrw_cursorline
   let decompressline= line("$")
   put ='let g:netrw_decompress...'
   put = 'let g:netrw_dirhistmax        = '.g:netrw_dirhistmax
@@ -138,6 +145,7 @@ fun! netrwSettings#NetrwSettings()
   put = 'let g:netrw_special_syntax    = '.g:netrw_special_syntax
   put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject
   put = 'let g:netrw_scpport           = '.g:netrw_scpport
+  put = 'let g:netrw_sepchr            = '.g:netrw_sepchr
   put = 'let g:netrw_sshport           = '.g:netrw_sshport
   put = 'let g:netrw_timefmt           = '.g:netrw_timefmt
   let tmpfileescline= line("$")
--- a/runtime/autoload/rubycomplete.vim
+++ b/runtime/autoload/rubycomplete.vim
@@ -1,7 +1,7 @@
 " Vim completion script
 " Language:             Ruby
 " Maintainer:           Mark Guzman <segfault@hasno.info>
-" Info:                 $Id$
+" Info:                 $Id: rubycomplete.vim,v 1.41 2008/06/30 06:50:45 segy Exp $
 " URL:                  http://vim-ruby.rubyforge.org
 " Anon CVS:             See above site
 " Release Coordinator:  Doug Kearns <dougkearns@gmail.com>
--- a/runtime/autoload/spellfile.vim
+++ b/runtime/autoload/spellfile.vim
@@ -1,6 +1,6 @@
 " Vim script to download a missing spell file
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2008 Jun 27
+" Last Change:	2008 Nov 29
 
 if !exists('g:spellfile_URL')
   " Prefer using http:// when netrw should be able to use it, since
@@ -39,19 +39,22 @@ function! spellfile#LoadFile(lang)
   let s:donedict[a:lang . &enc] = 1
 
   " Find spell directories we can write in.
-  let dirlist = []
-  let dirchoices = '&Cancel'
-  for dir in split(globpath(&rtp, 'spell'), "\n")
-    if filewritable(dir) == 2
-      call add(dirlist, dir)
-      let dirchoices .= "\n&" . len(dirlist)
-    endif
-  endfor
+  let [dirlist, dirchoices] = spellfile#GetDirChoices()
   if len(dirlist) == 0
-    if &verbose
+    let dir_to_create = spellfile#WritableSpellDir()
+    if &verbose || dir_to_create != ''
       echomsg 'spellfile#LoadFile(): There is no writable spell directory.'
     endif
-    return
+    if dir_to_create != ''
+      if confirm("Shall I create " . dir_to_create, "&Yes\n&No", 2) == 1
+	" After creating the directory it should show up in the list.
+	call mkdir(dir_to_create, "p")
+	let [dirlist, dirchoices] = spellfile#GetDirChoices()
+      endif
+    endif
+    if len(dirlist) == 0
+      return
+    endif
   endif
 
   let msg = 'Cannot find spell file for "' . a:lang . '" in ' . &enc
@@ -177,3 +180,29 @@ function! spellfile#Nread(fname)
     unlet g:netrw_use_errorwindow
   endif
 endfunc
+
+" Get a list of writable spell directories and choices for confirm().
+function! spellfile#GetDirChoices()
+  let dirlist = []
+  let dirchoices = '&Cancel'
+  for dir in split(globpath(&rtp, 'spell'), "\n")
+    if filewritable(dir) == 2
+      call add(dirlist, dir)
+      let dirchoices .= "\n&" . len(dirlist)
+    endif
+  endfor
+  return [dirlist, dirchoices]
+endfunc
+
+function! spellfile#WritableSpellDir()
+  if has("unix")
+    " For Unix always use the $HOME/.vim directory
+    return $HOME . "/.vim/spell"
+  endif
+  for dir in split(&rtp, ',')
+    if filewritable(dir) == 2
+      return dir . "/spell"
+    endif
+  endfor
+  return ''
+endfunction
--- a/runtime/autoload/sqlcomplete.vim
+++ b/runtime/autoload/sqlcomplete.vim
@@ -1,13 +1,19 @@
 " Vim OMNI completion script for SQL
 " Language:    SQL
-" Maintainer:  David Fishburn <fishburn@ianywhere.com>
-" Version:     6.0
-" Last Change: Thu 03 Apr 2008 10:37:54 PM Eastern Daylight Time
+" Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
+" Version:     7.0
+" Last Change: 2009 Jan 04
 " Usage:       For detailed help
 "              ":help sql.txt" 
 "              or ":help ft-sql-omni" 
 "              or read $VIMRUNTIME/doc/sql.txt
 
+" History
+" Version 7.0
+"     Better handling of object names
+" Version 6.0
+"     Supports object names with spaces "my table name"
+"
 " Set completion with CTRL-X CTRL-O to autoloaded function.
 " This check is in place in case this script is
 " sourced directly instead of using the autoload feature. 
@@ -22,7 +28,7 @@ endif
 if exists('g:loaded_sql_completion')
     finish 
 endif
-let g:loaded_sql_completion = 50
+let g:loaded_sql_completion = 70
 
 " Maintains filename of dictionary
 let s:sql_file_table        = ""
@@ -106,10 +112,23 @@ function! sqlcomplete#Complete(findstart
             let begindot = 1
         endif
         while start > 0
-            if line[start - 1] =~ '\(\w\|\s\+\)'
+            " Additional code was required to handle objects which 
+            " can contain spaces like "my table name".
+            if line[start - 1] !~ '\(\w\|\.\)'
+                " If the previous character is not a period or word character
+                break
+            " elseif line[start - 1] =~ '\(\w\|\s\+\)'
+            "     let start -= 1
+            elseif line[start - 1] =~ '\w'
+                " If the previous character is word character continue back
                 let start -= 1
             elseif line[start - 1] =~ '\.' && 
                         \ compl_type =~ 'column\|table\|view\|procedure'
+                " If the previous character is a period and we are completing
+                " an object which can be specified with a period like this:
+                "     table_name.column_name
+                "     owner_name.table_name
+
                 " If lastword has already been set for column completion
                 " break from the loop, since we do not also want to pickup
                 " a table name if it was also supplied.
@@ -184,9 +203,10 @@ function! sqlcomplete#Complete(findstart
         endif
 
         let compl_type_uc = substitute(compl_type, '\w\+', '\u&', '')
-        if s:sql_file_{compl_type} == ""
-            let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc)
-        endif
+        " Same call below, no need to do it twice
+        " if s:sql_file_{compl_type} == ""
+        "     let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc)
+        " endif
         let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc)
         if s:sql_file_{compl_type} != ""
             if filereadable(s:sql_file_{compl_type})
@@ -312,9 +332,16 @@ function! sqlcomplete#Complete(findstart
     endif
 
     if base != ''
-        " Filter the list based on the first few characters the user
-        " entered
-        let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\([^.]*\\)\\?'.base.'\\)"'
+        " Filter the list based on the first few characters the user entered.
+        " Check if the text matches at the beginning 
+        " or 
+        " Match to a owner.table or alias.column type match
+        " or
+        " Handle names with spaces "my table name"
+        let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|^\\(\\w\\+\\.\\)\\?'.base.'\\)"'
+        " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\)"'
+        " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\(\\.\\)\\?'.base.'\\)"'
+        " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\([^.]*\\)\\?'.base.'\\)"'
         let compl_list = filter(deepcopy(compl_list), expr)
     endif
 
--- a/runtime/autoload/tar.vim
+++ b/runtime/autoload/tar.vim
@@ -1,13 +1,13 @@
 " tar.vim: Handles browsing tarfiles
 "            AUTOLOAD PORTION
-" Date:			Aug 08, 2008
-" Version:		23 + modifications by Bram
+" Date:			Dec 28, 2009
+" Version:		24
 " Maintainer:	Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
 " License:		Vim License  (see vim's :help license)
 "
 "	Contains many ideas from Michael Toren's <tar.vim>
 "
-" Copyright:    Copyright (C) 2005-2008 Charles E. Campbell, Jr. {{{1
+" Copyright:    Copyright (C) 2005-2009 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
 "               with or without modifications, provided that this copyright
 "               notice is copied with it. Like anything else that's free,
@@ -16,19 +16,22 @@
 "               By using this plugin, you agree that in no event will the
 "               copyright holder be liable for any damages resulting from
 "               the use of this software.
-
+"     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 " ---------------------------------------------------------------------
 " Load Once: {{{1
+if &cp || exists("g:loaded_tar")
+ finish
+endif
+let g:loaded_tar= "v24"
+if v:version < 702
+ echohl WarningMsg
+ echo "***warning*** this version of tar needs vim 7.2"
+ echohl Normal
+ finish
+endif
 let s:keepcpo= &cpo
 set cpo&vim
-if &cp || exists("g:loaded_tar") || v:version < 700
- finish
-endif
-let g:loaded_tar= "v23b"
 "call Decho("loading autoload/tar.vim")
-if v:version < 701 || (v:version == 701 && !has("patch299"))
- echoerr "(autoload/tar.vim) need vim v7.1 with patchlevel 299"
-endif
 
 " ---------------------------------------------------------------------
 "  Default Settings: {{{1
@@ -44,7 +47,22 @@ endif
 if !exists("g:tar_writeoptions")
  let g:tar_writeoptions= "uf"
 endif
-
+if !exists("g:tar_copycmd")
+ if !exists("g:netrw_localcopycmd")
+  if has("win32") || has("win95") || has("win64") || has("win16")
+   if g:netrw_cygwin
+    let g:netrw_localcopycmd= "cp"
+   else
+    let g:netrw_localcopycmd= "copy"
+   endif
+  elseif has("unix") || has("macunix")
+   let g:netrw_localcopycmd= "cp"
+  else
+   let g:netrw_localcopycmd= ""
+  endif
+ endif
+ let g:tar_copycmd= g:netrw_localcopycmd
+endif
 if !exists("g:netrw_cygwin")
  if has("win32") || has("win95") || has("win64") || has("win16")
   if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$'
@@ -56,6 +74,9 @@ if !exists("g:netrw_cygwin")
   let g:netrw_cygwin= 0
  endif
 endif
+if !exists("g:tar_extractcmd")
+ let g:tar_extractcmd= "tar -xf"
+endif
 
 " set up shell quoting character
 if !exists("g:tar_shq")
@@ -88,7 +109,6 @@ fun! tar#Browse(tarfile)
   if !executable(g:tar_cmd)
    redraw!
    echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
-"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let &report= repkeep
 "   call Dret("tar#Browse")
    return
@@ -99,7 +119,6 @@ fun! tar#Browse(tarfile)
     " if its an url, don't complain, let url-handlers such as vim do its thing
     redraw!
     echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None
-"    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    endif
    let &report= repkeep
 "   call Dret("tar#Browse : file<".a:tarfile."> not readable")
@@ -130,37 +149,38 @@ fun! tar#Browse(tarfile)
   let tarfile= a:tarfile
   if has("win32") && executable("cygpath")
    " assuming cygwin
-   let tarfile=substitute(system("cygpath -u ".s:Escape(tarfile,0)),'\n$','','e')
+   let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
   endif
   let curlast= line("$")
   if tarfile =~# '\.\(gz\|tgz\)$'
-"   call Decho("1: exe silent r! gzip -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
-   exe "silent r! gzip -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
+"   call Decho("1: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
+   exe "silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
   elseif tarfile =~# '\.lrp'
-"   call Decho("2: exe silent r! cat -- ".s:Escape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ")
-   exe "silent r! cat -- ".s:Escape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - "
+"   call Decho("2: exe silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ")
+   exe "silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - "
   elseif tarfile =~# '\.bz2$'
-"   call Decho("3: exe silent r! bzip2 -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
-   exe "silent r! bzip2 -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
+"   call Decho("3: exe silent r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
+   exe "silent r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
+  elseif tarfile =~# '\.lzma$'
+"   call Decho("3: exe silent r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
+   exe "silent r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
   else
    if tarfile =~ '^\s*-'
-    " A file name starting with a dash may be taken as an option.  Prepend ./ to avoid that.
+    " A file name starting with a dash is taken as an option.  Prepend ./ to avoid that.
     let tarfile = substitute(tarfile, '-', './-', '')
    endif
-"   call Decho("4: exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".s:Escape(tarfile,1))
-   exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".s:Escape(tarfile,1)
+"   call Decho("4: exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,0))
+   exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,1)
   endif
   if v:shell_error != 0
    redraw!
    echohl WarningMsg | echo "***warning*** (tar#Browse) please check your g:tar_browseoptions<".g:tar_browseoptions.">"
-"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 "   call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
    return
   endif
   if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~ '\c\%(warning\|error\|inappropriate\|unrecognized\)')
    redraw!
    echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None
-"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    silent %d
    let eikeep= &ei
    set ei=BufReadCmd,FileReadCmd
@@ -189,7 +209,7 @@ fun! s:TarBrowseSelect()
 
   if !exists("g:tar_secure") && fname =~ '^\s*-\|\s\+-'
    redraw!
-   echohl WarningMsg | echo '***error*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"; See :help tar-options'
+   echohl WarningMsg | echo '***warning*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"'
 "   call Dret('tar#BrowseSelect : rejecting tarfile member<'.fname.'> because of embedded "-"')
    return
   endif
@@ -206,7 +226,7 @@ fun! s:TarBrowseSelect()
   let curfile= expand("%")
   if has("win32") && executable("cygpath")
    " assuming cygwin
-   let tarfile=substitute(system("cygpath -u ".s:Escape(tarfile,0)),'\n$','','e')
+   let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
   endif
 
   new
@@ -231,21 +251,24 @@ fun! tar#Read(fname,mode)
   let fname   = substitute(a:fname,'tarfile:.\{-}::\(.*\)$','\1','')
   if has("win32") && executable("cygpath")
    " assuming cygwin
-   let tarfile=substitute(system("cygpath -u ".s:Escape(tarfile,0)),'\n$','','e')
+   let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
   endif
 "  call Decho("tarfile<".tarfile.">")
 "  call Decho("fname<".fname.">")
 
-  if      fname =~ '\.gz$'  && executable("zcat")
+  if  fname =~ '\.bz2$' && executable("bzcat")
+   let decmp= "|bzcat"
+   let doro = 1
+  elseif      fname =~ '\.gz$'  && executable("zcat")
    let decmp= "|zcat"
    let doro = 1
-  elseif  fname =~ '\.bz2$' && executable("bzcat")
-   let decmp= "|bzcat"
+  elseif  fname =~ '\.lzma$' && executable("lzcat")
+   let decmp= "|lzcat"
    let doro = 1
   else
    let decmp=""
    let doro = 0
-   if fname =~ '\.gz$\|\.bz2$\|\.Z$\|\.zip$'
+   if fname =~ '\.bz2$\|\.gz$\|\.lzma$\|\.zip$\|\.Z$'
     setlocal bin
    endif
   endif
@@ -255,22 +278,25 @@ fun! tar#Read(fname,mode)
   else
    let tar_secure= " "
   endif
-  if tarfile =~# '\.\(gz\|tgz\)$'
-"   call Decho("5: exe silent r! gzip -d -c -- ".s:Escape(tarfile,1)."| ".g:tar_cmd.' -'.g:tar_readoptions.' - '.tar_secure.s:Escape(fname,1))
-   exe "silent r! gzip -d -c -- ".s:Escape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp
+  if tarfile =~# '\.bz2$'
+"   call Decho("7: exe silent r! bzip2 -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
+   exe "silent r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
+  elseif tarfile =~# '\.\(gz\|tgz\)$'
+"   call Decho("5: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd.' -'.g:tar_readoptions.' - '.tar_secure.shellescape(fname,1))
+   exe "silent r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
   elseif tarfile =~# '\.lrp$'
-"   call Decho("6: exe silent r! cat ".s:Escape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp)
-   exe "silent r! cat -- ".s:Escape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp
-  elseif tarfile =~# '\.bz2$'
-"   call Decho("7: exe silent r! bzip2 -d -c ".s:Escape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp)
-   exe "silent r! bzip2 -d -c -- ".s:Escape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp
+"   call Decho("6: exe silent r! cat ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
+   exe "silent r! cat -- ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
+  elseif tarfile =~# '\.lzma$'
+"   call Decho("7: exe silent r! lzma -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
+   exe "silent r! lzma -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
   else
    if tarfile =~ '^\s*-'
-    " A file name starting with a dash may be taken as an option.  Prepend ./ to avoid that.
+    " A file name starting with a dash is taken as an option.  Prepend ./ to avoid that.
     let tarfile = substitute(tarfile, '-', './-', '')
    endif
-"   call Decho("8: exe silent r! ".g:tar_cmd." -".g:tar_readoptions." "s:Escape(tarfile,1).tar_secure..s:Escape(fname,1).decmp)
-   exe "silent r! ".g:tar_cmd." -".g:tar_readoptions." ".s:Escape(tarfile,1).tar_secure.s:Escape(fname,1).decmp
+"   call Decho("8: exe silent r! ".g:tar_cmd." -".g:tar_readoptions.tar_secure.shellescape(tarfile,1)." ".shellescape(fname,1).decmp)
+   exe "silent r! ".g:tar_cmd." -".g:tar_readoptions.shellescape(tarfile,1)." ".tar_secure.shellescape(fname,1).decmp
   endif
 
   if doro
@@ -298,7 +324,7 @@ fun! tar#Write(fname)
 
   if !exists("g:tar_secure") && a:fname =~ '^\s*-\|\s\+-'
    redraw!
-   echohl WarningMsg | echo '***error*** (tar#Write) rejecting tarfile member<'.a:fname.'> because of embedded "-"; See :help tar-options'
+   echohl WarningMsg | echo '***warning*** (tar#Write) rejecting tarfile member<'.a:fname.'> because of embedded "-"'
 "   call Dret('tar#Write : rejecting tarfile member<'.fname.'> because of embedded "-"')
    return
   endif
@@ -307,7 +333,6 @@ fun! tar#Write(fname)
   if !executable(g:tar_cmd)
    redraw!
    echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
-"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let &report= repkeep
 "   call Dret("tar#Write")
    return
@@ -315,7 +340,6 @@ fun! tar#Write(fname)
   if !exists("*mkdir")
    redraw!
    echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None
-"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let &report= repkeep
 "   call Dret("tar#Write")
    return
@@ -336,7 +360,6 @@ fun! tar#Write(fname)
   catch /^Vim\%((\a\+)\)\=:E344/
    redraw!
    echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None
-"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let &report= repkeep
 "   call Dret("tar#Write")
    return
@@ -355,29 +378,33 @@ fun! tar#Write(fname)
   let fname   = substitute(w:tarfile,'tarfile:.\{-}::\(.*\)$','\1','')
 
   " handle compressed archives
-  if tarfile =~# '\.gz'
-   call system("gzip -d -- ".s:Escape(tarfile,0))
+  if tarfile =~# '\.bz2'
+   call system("bzip2 -d -- ".shellescape(tarfile,0))
+   let tarfile = substitute(tarfile,'\.bz2','','e')
+   let compress= "bzip2 -- ".shellescape(tarfile,0)
+"   call Decho("compress<".compress.">")
+  elseif tarfile =~# '\.gz'
+   call system("gzip -d -- ".shellescape(tarfile,0))
    let tarfile = substitute(tarfile,'\.gz','','e')
-   let compress= "gzip -- ".s:Escape(tarfile,0)
+   let compress= "gzip -- ".shellescape(tarfile,0)
+"   call Decho("compress<".compress.">")
+  elseif tarfile =~# '\.lzma'
+   call system("lzma -d -- ".shellescape(tarfile,0))
+   let tarfile = substitute(tarfile,'\.lzma','','e')
+   let compress= "lzma -- ".shellescape(tarfile,0)
 "   call Decho("compress<".compress.">")
   elseif tarfile =~# '\.tgz'
-   call system("gzip -d -- ".s:Escape(tarfile,0))
+   call system("gzip -d -- ".shellescape(tarfile,0))
    let tarfile = substitute(tarfile,'\.tgz','.tar','e')
-   let compress= "gzip -- ".s:Escape(tarfile,0)
+   let compress= "gzip -- ".shellescape(tarfile,0)
    let tgz     = 1
 "   call Decho("compress<".compress.">")
-  elseif tarfile =~# '\.bz2'
-   call system("bzip2 -d -- ".s:Escape(tarfile,0))
-   let tarfile = substitute(tarfile,'\.bz2','','e')
-   let compress= "bzip2 -- ".s:Escape(tarfile,0)
-"   call Decho("compress<".compress.">")
   endif
 "  call Decho("tarfile<".tarfile.">")
 
   if v:shell_error != 0
    redraw!
    echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
-"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   else
 
 "   call Decho("tarfile<".tarfile."> fname<".fname.">")
@@ -385,7 +412,7 @@ fun! tar#Write(fname)
    if fname =~ '/'
     let dirpath = substitute(fname,'/[^/]\+$','','e')
     if executable("cygpath")
-     let dirpath = substitute(system("cygpath ".s:Escape(dirpath, 0)),'\n','','e')
+     let dirpath = substitute(system("cygpath ".shellescape(dirpath, 0)),'\n','','e')
     endif
     call mkdir(dirpath,"p")
    endif
@@ -405,25 +432,23 @@ fun! tar#Write(fname)
    endif
    exe "w! ".fnameescape(fname)
    if executable("cygpath")
-    let tarfile = substitute(system("cygpath ".s:Escape(tarfile,0)),'\n','','e')
+    let tarfile = substitute(system("cygpath ".shellescape(tarfile,0)),'\n','','e')
    endif
  
    " delete old file from tarfile
-"   call Decho("system(".g:tar_cmd." --delete -f ".s:Escape(tarfile,0)." -- ".s:Escape(fname,0).")")
-   call system(g:tar_cmd." --delete -f ".s:Escape(tarfile,0).tar_secure.s:Escape(fname,0))
+"   call Decho("system(".g:tar_cmd." --delete -f ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")")
+   call system(g:tar_cmd." --delete -f ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
    if v:shell_error != 0
     redraw!
     echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
-"    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    else
  
     " update tarfile with new file 
-"    call Decho(g:tar_cmd." -".g:tar_writeoptions." ".s:Escape(tarfile,0).tar_secure.s:Escape(fname,0))
-    call system(g:tar_cmd." -".g:tar_writeoptions." ".s:Escape(tarfile,0).tar_secure.s:Escape(fname,0))
+"    call Decho(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
+    call system(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
     if v:shell_error != 0
      redraw!
      echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
-"     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
     elseif exists("compress")
 "     call Decho("call system(".compress.")")
      call system(compress)
@@ -439,13 +464,13 @@ fun! tar#Write(fname)
 "    call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">")
     let tblfile= s:tblfile_{winnr()}
     1split|enew
-    let binkeep= &binary
+    let binkeep= &l:binary
     let eikeep = &ei
     set binary ei=all
     exe "e! ".fnameescape(tarfile)
     call netrw#NetWrite(tblfile)
-    let &ei     = eikeep
-    let &binary = binkeep
+    let &ei       = eikeep
+    let &l:binary = binkeep
     q!
     unlet s:tblfile_{winnr()}
    endif
@@ -462,38 +487,98 @@ fun! tar#Write(fname)
 endfun
 
 " ---------------------------------------------------------------------
-" Rmdir: {{{2
+" s:Rmdir: {{{2
 fun! s:Rmdir(fname)
 "  call Dfunc("Rmdir(fname<".a:fname.">)")
   if has("unix")
-   call system("/bin/rm -rf -- ".s:Escape(a:fname,0))
+   call system("/bin/rm -rf -- ".shellescape(a:fname,0))
   elseif has("win32") || has("win95") || has("win64") || has("win16")
    if &shell =~? "sh$"
-    call system("/bin/rm -rf -- ".s:Escape(a:fname,0))
+    call system("/bin/rm -rf -- ".shellescape(a:fname,0))
    else
-    call system("del /S ".s:Escape(a:fname,0))
+    call system("del /S ".shellescape(a:fname,0))
    endif
   endif
 "  call Dret("Rmdir")
 endfun
 
 " ---------------------------------------------------------------------
-" s:Escape: {{{2
-fun s:Escape(name,isfilt)
-  " shellescape() was added by patch 7.0.111
-  if exists("*shellescape")
-   if a:isfilt
-    let qnameq= shellescape(a:name,1)
+" tar#Vimuntar: installs a tarball in the user's .vim / vimfiles directory {{{2
+fun! tar#Vimuntar(...)
+"  call Dfunc("tar#Vimuntar() a:0=".a:0." a:1<".(exists("a:1")? a:1 : "-n/a-").">")
+  let tarball = expand("%")
+"  call Decho("tarball<".tarball.">")
+  let tarbase = substitute(tarball,'\..*$','','')
+"  call Decho("tarbase<".tarbase.">")
+  let tarhome = expand("%:p")
+  if has("win32") || has("win95") || has("win64") || has("win16")
+   let tarhome= substitute(tarhome,'\\','/','g')
+  endif
+  let tarhome= substitute(tarhome,'/[^/]*$','','')
+"  call Decho("tarhome<".tarhome.">")
+  let tartail = expand("%:t")
+"  call Decho("tartail<".tartail.">")
+  let curdir  = getcwd()
+"  call Decho("curdir <".curdir.">")
+  " set up vimhome
+  if a:0 > 0 && a:1 != ""
+   let vimhome= a:1
+  else
+   let vimhome= vimball#VimballHome()
+  endif
+"  call Decho("vimhome<".vimhome.">")
+
+"  call Decho("curdir<".curdir."> vimhome<".vimhome.">")
+  if simplify(curdir) != simplify(vimhome)
+   " copy (possibly compressed) tarball to .vim/vimfiles
+"   call Decho(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome))
+   call system(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome))
+"   call Decho("exe cd ".fnameescape(vimhome))
+   exe "cd ".fnameescape(vimhome)
+  endif
+"  call Decho("getcwd<".getcwd().">")
+
+  " if necessary, decompress the tarball; then, extract it
+  if tartail =~ '\.tgz'
+   if executable("gunzip")
+    silent exe "!gunzip ".shellescape(tartail)
+   elseif executable("gzip")
+    silent exe "!gzip -d ".shellescape(tartail)
    else
-    let qnameq= shellescape(a:name)
+    echoerr "unable to decompress<".tartail."> on this sytem"
+    if simplify(curdir) != simplify(tarhome)
+     " remove decompressed tarball, restore directory
+"     call Decho("delete(".tartail.".tar)")
+     call delete(tartail.".tar")
+"     call Decho("exe cd ".fnameescape(curdir))
+     exe "cd ".fnameescape(curdir)
+    endif
+"    call Dret("tar#Vimuntar")
+    return
    endif
   else
-   let qnameq= g:tar_shq . a:name . g:tar_shq
+   call vimball#Decompress(tartail,0)
   endif
-  return qnameq
+  let extractcmd= netrw#WinPath(g:tar_extractcmd)
+"  call Decho("system(".extractcmd." ".shellescape(tarbase.".tar").")")
+  call system(extractcmd." ".shellescape(tarbase.".tar"))
+
+  " set up help
+  if filereadable("doc/".tarbase.".txt")
+"   call Decho("exe helptags ".getcwd()."/doc")
+   exe "helptags ".getcwd()."/doc"
+  endif
+
+  if simplify(tarhome) != simplify(vimhome)
+   " remove decompressed tarball, restore directory
+   call delete(vimhome."/".tarbase.".tar")
+   exe "cd ".fnameescape(curdir)
+  endif
+
+"  call Dret("tar#Vimuntar")
 endfun
 
-" ---------------------------------------------------------------------
+" =====================================================================
 " Modelines And Restoration: {{{1
 let &cpo= s:keepcpo
 unlet s:keepcpo
--- a/runtime/autoload/vimball.vim
+++ b/runtime/autoload/vimball.vim
@@ -1,9 +1,9 @@
 " vimball.vim : construct a file containing both paths and files
 " Author:	Charles E. Campbell, Jr.
-" Date:		Jul 30, 2008
-" Version:	29
+" Date:		Dec 28, 2009
+" Version:	30
 " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
-" Copyright: (c) 2004-2008 by Charles E. Campbell, Jr.
+" Copyright: (c) 2004-2009 by Charles E. Campbell, Jr.
 "            The VIM LICENSE applies to Vimball.vim, and Vimball.txt
 "            (see |copyright|) except use "Vimball" instead of "Vim".
 "            No warranty, express or implied.
@@ -11,11 +11,17 @@
 
 " ---------------------------------------------------------------------
 "  Load Once: {{{1
-if &cp || exists("g:loaded_vimball") || v:version < 700
+if &cp || exists("g:loaded_vimball")
  finish
 endif
-let s:keepcpo        = &cpo
-let g:loaded_vimball = "v29"
+let g:loaded_vimball = "v30"
+if v:version < 702
+ echohl WarningMsg
+ echo "***warning*** this version of vimball needs vim 7.2"
+ echohl Normal
+ finish
+endif
+let s:keepcpo= &cpo
 set cpo&vim
 "DechoTabOn
 
@@ -52,30 +58,6 @@ if !exists("s:USAGE")
    call vimball#ShowMesg(s:WARNING,"(vimball) g:vimball_mkdir undefined")
   endif
  endif
-
- " set up shell quoting character
- if exists("g:vimball_shq") && !exists("g:netrw_shq")
-  let g:netrw_shq= g:vimball_shq
- endif
- if !exists("g:netrw_shq")
-  if exists("&shq") && &shq != ""
-   let g:netrw_shq= &shq
-  elseif has("win32") || has("win95") || has("win64") || has("win16")
-   if g:netrw_cygwin
-    let g:netrw_shq= "'"
-   else
-    let g:netrw_shq= '"'
-   endif
-  else
-   let g:netrw_shq= "'"
-  endif
-" call Decho("g:netrw_shq<".g:netrw_shq.">")
- endif
-
- " set up escape string (used to protect paths)
- if !exists("g:vimball_path_escape")
-  let g:vimball_path_escape= ' ;#%'
- endif
 endif
 
 " =====================================================================
@@ -106,8 +88,8 @@ fun! vimball#MkVimball(line1,line2,write
    let vbname= vbname.'.vba'
   endif
 "  call Decho("vbname<".vbname.">")
-  if a:1 =~ '[\/]'
-   call vimball#ShowMesg(s:ERROR,"(MkVimball) vimball name<".a:1."> should not include slashes")
+  if !a:writelevel && a:1 =~ '[\/]'
+   call vimball#ShowMesg(s:ERROR,"(MkVimball) vimball name<".a:1."> should not include slashes; use ! to insist")
 "   call Dret("MkVimball : vimball name<".a:1."> should not include slashes")
    return
   endif
@@ -125,7 +107,7 @@ fun! vimball#MkVimball(line1,line2,write
    let home= expand(a:2)
   else
    " use first existing directory from rtp
-   let home= s:VimballHome()
+   let home= vimball#VimballHome()
   endif
 
   " save current directory
@@ -218,7 +200,7 @@ fun! vimball#Vimball(really,...)
    return
   endif
 
-  if getline(1) !~ '^" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.$'
+  if getline(1) !~ '^" Vimball Archiver'
    echoerr "(Vimball) The current file does not appear to be a Vimball!"
 "   call Dret("vimball#Vimball")
    return
@@ -240,7 +222,7 @@ fun! vimball#Vimball(really,...)
   if a:0 > 0
    let home= expand(a:1)
   else
-   let home= s:VimballHome()
+   let home= vimball#VimballHome()
   endif
 "  call Decho("home<".home.">")
 
@@ -272,7 +254,9 @@ fun! vimball#Vimball(really,...)
   while 1 < linenr && linenr < line("$")
    let fname   = substitute(getline(linenr),'\t\[\[\[1$','','')
    let fname   = substitute(fname,'\\','/','g')
-   let fsize   = getline(linenr+1)+0
+"   let fsize   = getline(linenr+1)+0
+   let fsize   = substitute(getline(linenr+1),'^\(\d\+\).\{-}$','\1','')+0
+   let fenc    = substitute(getline(linenr+1),'^\d\+\s*\(\S\+\)$','\1','')
    let filecnt = filecnt + 1
 "   call Decho("fname<".fname."> fsize=".fsize." filecnt=".filecnt)
 
@@ -307,7 +291,7 @@ fun! vimball#Vimball(really,...)
      if !isdirectory(dirname)
 "      call Decho("making <".dirname.">")
       if exists("g:vimball_mkdir")
-	   call system(g:vimball_mkdir." ".s:Escape(dirname))
+	   call system(g:vimball_mkdir." ".shellescape(dirname))
       else
        call mkdir(dirname)
       endif
@@ -337,9 +321,13 @@ fun! vimball#Vimball(really,...)
    if a:really
     let fnamepath= home."/".fname
 "    call Decho("exe w! ".fnameescape(fnamepath))
-	exe "silent w! ".fnameescape(fnamepath)
-    echo "wrote ".fnamepath
-	call s:RecordInVar(home,"call delete('".fnameescape(fnamepath)."')")
+	if fenc != ""
+	 exe "silent w! ++enc=".fnameescape(fenc)." ".fnameescape(fnamepath)
+	else
+	 exe "silent w! ".fnameescape(fnamepath)
+	endif
+	echo "wrote ".fnameescape(fnamepath)
+	call s:RecordInVar(home,"call delete('".fnamepath."')")
    endif
 
    " return to tab with vimball
@@ -418,7 +406,7 @@ fun! vimball#RmVimball(...)
   if a:0 >= 2
    let home= expand(a:2)
   else
-   let home= s:VimballHome()
+   let home= vimball#VimballHome()
   endif
   let curdir = getcwd()
 "  call Decho("home   <".home.">")
@@ -432,19 +420,20 @@ fun! vimball#RmVimball(...)
    keepalt keepjumps 1split 
    silent! keepalt keepjumps e .VimballRecord
    let keepsrch= @/
-"   call Decho("search for ^".curfile.".vba:")
-"   call Decho("search for ^".curfile."[-0-9.]*.vba:")
-   if search('^'.curfile.": ".'cw')
+"   call Decho('search for ^\M'.curfile.'.\m: ')
+"   call Decho('search for ^\M'.curfile.'.\mvba: ')
+"   call Decho('search for ^\M'.curfile.'\m[-0-9.]*\.vba: ')
+   if search('^\M'.curfile."\m: ".'cw')
 	let foundit= 1
-   elseif search('^'.curfile.".vba: ",'cw')
+   elseif search('^\M'.curfile.".\mvba: ",'cw')
 	let foundit= 1
-   elseif search('^'.curfile.'[-0-9.]*.vba: ','cw')
+   elseif search('^\M'.curfile.'\m[-0-9.]*\.vba: ','cw')
 	let foundit= 1
    else
     let foundit = 0
    endif
    if foundit
-	let exestring  = substitute(getline("."),'^'.curfile.'\S\{-}\.vba: ','','')
+	let exestring  = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vba: ','','')
     let s:VBRstring= substitute(exestring,'call delete(','','g')
     let s:VBRstring= substitute(s:VBRstring,"[')]",'','g')
 "	call Decho("exe ".exestring)
@@ -472,62 +461,62 @@ endfun
 
 " ---------------------------------------------------------------------
 " vimball#Decompress: attempts to automatically decompress vimballs {{{2
-fun! vimball#Decompress(fname)
-"  call Dfunc("Decompress(fname<".a:fname.">)")
+fun! vimball#Decompress(fname,...)
+"  call Dfunc("Decompress(fname<".a:fname.">) a:0=".a:0)
 
   " decompression:
   if     expand("%") =~ '.*\.gz'  && executable("gunzip")
    " handle *.gz with gunzip
-   silent exe "!gunzip ".s:Escape(a:fname)
+   silent exe "!gunzip ".shellescape(a:fname)
    if v:shell_error != 0
 	call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) gunzip may have failed with <".a:fname.">")
    endif
    let fname= substitute(a:fname,'\.gz$','','')
    exe "e ".escape(fname,' \')
-   call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
+   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
 
   elseif expand("%") =~ '.*\.gz' && executable("gzip")
    " handle *.gz with gzip -d
-   silent exe "!gzip -d ".s:Escape(a:fname)
+   silent exe "!gzip -d ".shellescape(a:fname)
    if v:shell_error != 0
 	call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "gzip -d" may have failed with <'.a:fname.">")
    endif
    let fname= substitute(a:fname,'\.gz$','','')
    exe "e ".escape(fname,' \')
-   call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
+   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
 
   elseif expand("%") =~ '.*\.bz2' && executable("bunzip2")
    " handle *.bz2 with bunzip2
-   silent exe "!bunzip2 ".s:Escape(a:fname)
+   silent exe "!bunzip2 ".shellescape(a:fname)
    if v:shell_error != 0
 	call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip2 may have failed with <".a:fname.">")
    endif
    let fname= substitute(a:fname,'\.bz2$','','')
    exe "e ".escape(fname,' \')
-   call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
+   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
 
   elseif expand("%") =~ '.*\.bz2' && executable("bzip2")
    " handle *.bz2 with bzip2 -d
-   silent exe "!bzip2 -d ".s:Escape(a:fname)
+   silent exe "!bzip2 -d ".shellescape(a:fname)
    if v:shell_error != 0
 	call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip2 -d" may have failed with <'.a:fname.">")
    endif
    let fname= substitute(a:fname,'\.bz2$','','')
    exe "e ".escape(fname,' \')
-   call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
+   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
 
   elseif expand("%") =~ '.*\.zip' && executable("unzip")
    " handle *.zip with unzip
-   silent exe "!unzip ".s:Escape(a:fname)
+   silent exe "!unzip ".shellescape(a:fname)
    if v:shell_error != 0
 	call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) unzip may have failed with <".a:fname.">")
    endif
    let fname= substitute(a:fname,'\.zip$','','')
    exe "e ".escape(fname,' \')
-   call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
+   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
   endif
 
-  set noma bt=nofile fmr=[[[,]]] fdm=marker
+  if a:0 == 0| setlocal noma bt=nofile fmr=[[[,]]] fdm=marker | endif
 
 "  call Dret("Decompress")
 endfun
@@ -536,20 +525,21 @@ endfun
 " vimball#ShowMesg: {{{2
 fun! vimball#ShowMesg(level,msg)
 "  call Dfunc("vimball#ShowMesg(level=".a:level." msg<".a:msg.">)")
+
   let rulerkeep   = &ruler
   let showcmdkeep = &showcmd
   set noruler noshowcmd
   redraw!
 
   if &fo =~ '[ta]'
-   echomsg "***vimball*** " a:msg
+   echomsg "***vimball*** ".a:msg
   else
    if a:level == s:WARNING || a:level == s:USAGE
     echohl WarningMsg
    elseif a:level == s:ERROR
     echohl Error
    endif
-   echomsg "***vimball*** " a:msg
+   echomsg "***vimball*** ".a:msg
    echohl None
   endif
 
@@ -646,9 +636,9 @@ fun! s:RecordInFile(home)
 endfun
 
 " ---------------------------------------------------------------------
-" s:VimballHome: determine/get home directory path (usually from rtp) {{{2
-fun! s:VimballHome()
-"  call Dfunc("VimballHome()")
+" vimball#VimballHome: determine/get home directory path (usually from rtp) {{{2
+fun! vimball#VimballHome()
+"  call Dfunc("vimball#VimballHome()")
   if exists("g:vimball_home")
    let home= g:vimball_home
   else
@@ -674,14 +664,14 @@ fun! s:VimballHome()
   if !isdirectory(home)
    if exists("g:vimball_mkdir")
 "	call Decho("home<".home."> isn't a directory -- making it now with g:vimball_mkdir<".g:vimball_mkdir.">")
-"    call Decho("system(".g:vimball_mkdir." ".s:Escape(home).")")
-    call system(g:vimball_mkdir." ".s:Escape(home))
+"    call Decho("system(".g:vimball_mkdir." ".shellescape(home).")")
+    call system(g:vimball_mkdir." ".shellescape(home))
    else
 "	call Decho("home<".home."> isn't a directory -- making it now with mkdir()")
     call mkdir(home)
    endif
   endif
-"  call Dret("VimballHome <".home.">")
+"  call Dret("vimball#VimballHome <".home.">")
   return home
 endfun
 
@@ -743,20 +733,5 @@ fun! vimball#RestoreSettings()
 endfun
 
 " ---------------------------------------------------------------------
-" s:Escape: {{{2
-fun s:Escape(name)
-  " shellescape() was added by patch 7.0.111
-  if exists("*shellescape")
-    return shellescape(a:name)
-  endif
-  return g:netrw_shq . a:name . g:netrw_shq
-endfun
-
-" ---------------------------------------------------------------------
-"  Restore:
-let &cpo= s:keepcpo
-unlet s:keepcpo
-
-" ---------------------------------------------------------------------
 " Modelines: {{{1
 " vim: fdm=marker
--- a/runtime/colors/desert.vim
+++ b/runtime/colors/desert.vim
@@ -1,9 +1,9 @@
 " Vim color file
 " Maintainer:	Hans Fugal <hans@fugal.net>
-" Last Change:	$Date$
-" Last Change:	$Date$
+" Last Change:	$Date: 2004/06/13 19:30:30 $
+" Last Change:	$Date: 2004/06/13 19:30:30 $
 " URL:		http://hans.fugal.net/vim/colors/desert.vim
-" Version:	$Id$
+" Version:	$Id: desert.vim,v 1.1 2004/06/13 19:30:30 vimboss Exp $
 
 " cool help screens
 " :he group-name
--- a/runtime/compiler/decada.vim
+++ b/runtime/compiler/decada.vim
@@ -1,13 +1,13 @@
 "------------------------------------------------------------------------------
 "  Description: Vim Ada/Dec Ada compiler file
 "     Language: Ada (Dec Ada)
-"          $Id$
+"          $Id: decada.vim 887 2008-07-08 14:29:01Z krischik $
 "    Copyright: Copyright (C) 2006 Martin Krischik
 "   Maintainer:	Martin Krischik <krischik@users.sourceforge.net>
-"      $Author$
-"        $Date$
+"      $Author: krischik $
+"        $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
 "      Version: 4.6
-"    $Revision$
+"    $Revision: 887 $
 "     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/decada.vim $
 "      History: 21.07.2006 MK New Dec Ada
 "               15.10.2006 MK Bram's suggestion for runtime integration
--- a/runtime/compiler/eruby.vim
+++ b/runtime/compiler/eruby.vim
@@ -1,7 +1,7 @@
 " Vim compiler file
 " Language:		eRuby
 " Maintainer:		Doug Kearns <dougkearns@gmail.com>
-" Info:			$Id$
+" Info:			$Id: eruby.vim,v 1.7 2008/06/29 04:18:42 tpope Exp $
 " URL:			http://vim-ruby.rubyforge.org
 " Anon CVS:		See above site
 " Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
--- a/runtime/compiler/fortran_g77.vim
+++ b/runtime/compiler/fortran_g77.vim
@@ -1,8 +1,8 @@
 " Vim compiler file
 " Compiler:     g77 (GNU Fortran)
 " Maintainer:   Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-" Last Change:  $Date$
-" $Revision$
+" Last Change:  $Date: 2004/06/13 18:17:36 $
+" $Revision: 1.1 $
 
 if exists("current_compiler")
   finish
--- a/runtime/compiler/gcc.vim
+++ b/runtime/compiler/gcc.vim
@@ -1,7 +1,7 @@
 " Vim compiler file
 " Compiler:         GNU C Compiler
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-12-20
+" Latest Revision:  2009-05-01
 
 if exists("current_compiler")
   finish
@@ -12,10 +12,13 @@ let s:cpo_save = &cpo
 set cpo-=C
 
 CompilerSet errorformat=
+      \%*[^\"]\"%f\"%*\\D%l:%c:\ %m,
       \%*[^\"]\"%f\"%*\\D%l:\ %m,
+      \\"%f\"%*\\D%l:%c:\ %m,
       \\"%f\"%*\\D%l:\ %m,
       \%-G%f:%l:\ %trror:\ (Each\ undeclared\ identifier\ is\ reported\ only\ once,
       \%-G%f:%l:\ %trror:\ for\ each\ function\ it\ appears\ in.),
+      \%f:%l:%c:\ %m,
       \%f:%l:\ %m,
       \\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
       \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
--- a/runtime/compiler/gnat.vim
+++ b/runtime/compiler/gnat.vim
@@ -1,14 +1,14 @@
 "------------------------------------------------------------------------------
 "  Description: Vim Ada/GNAT compiler file
 "     Language: Ada (GNAT)
-"          $Id$
+"          $Id: gnat.vim 887 2008-07-08 14:29:01Z krischik $
 "    Copyright: Copyright (C) 2006 Martin Krischik
 "   Maintainer:	Martin Krischi <krischik@users.sourceforge.net>k
 "		Ned Okie <nokie@radford.edu>
-"      $Author$
-"        $Date$
+"      $Author: krischik $
+"        $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
 "      Version: 4.6
-"    $Revision$
+"    $Revision: 887 $
 "     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/gnat.vim $
 "      History: 24.05.2006 MK Unified Headers
 "		16.07.2006 MK Ada-Mode as vim-ball
--- a/runtime/compiler/jikes.vim
+++ b/runtime/compiler/jikes.vim
@@ -1,8 +1,8 @@
 " Vim Compiler File
 " Compiler:	Jikes
 " Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Change:	2004 Mar 27
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/compiler
+" Last Change:	20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/compiler
 
 if exists("current_compiler")
   finish
--- a/runtime/compiler/rspec.vim
+++ b/runtime/compiler/rspec.vim
@@ -1,7 +1,7 @@
 " Vim compiler file
 " Language:		RSpec
 " Maintainer:		Tim Pope <vimNOSPAM@tpope.info>
-" Info:			$Id$
+" Info:			$Id: rspec.vim,v 1.2 2008/06/29 04:18:42 tpope Exp $
 " URL:			http://vim-ruby.rubyforge.org
 " Anon CVS:		See above site
 " Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
--- a/runtime/compiler/ruby.vim
+++ b/runtime/compiler/ruby.vim
@@ -2,7 +2,7 @@
 " Language:		Ruby
 " Function:		Syntax check and/or error reporting
 " Maintainer:		Tim Hammerquist <timh at rubyforge.org>
-" Info:			$Id$
+" Info:			$Id: ruby.vim,v 1.13 2008/06/29 04:18:43 tpope Exp $
 " URL:			http://vim-ruby.rubyforge.org
 " Anon CVS:		See above site
 " Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
--- a/runtime/compiler/rubyunit.vim
+++ b/runtime/compiler/rubyunit.vim
@@ -1,7 +1,7 @@
 " Vim compiler file
 " Language:		Test::Unit - Ruby Unit Testing Framework
 " Maintainer:		Doug Kearns <dougkearns@gmail.com>
-" Info:			$Id$
+" Info:			$Id: rubyunit.vim,v 1.12 2008/06/29 04:18:43 tpope Exp $
 " URL:			http://vim-ruby.rubyforge.org
 " Anon CVS:		See above site
 " Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
--- a/runtime/compiler/splint.vim
+++ b/runtime/compiler/splint.vim
@@ -3,7 +3,7 @@
 " Maintainer:   Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
 " Splint Home:	http://www.splint.org/
 " Last Change:  2005 Apr 21
-" $Revision$
+" $Revision: 1.3 $
 
 if exists("current_compiler")
   finish
--- 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:	2008 Aug 03
+" Last Change:	2009 Dec 24
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -110,12 +110,15 @@ au BufNewFile,BufRead build.xml			setf a
 au BufNewFile,BufRead proftpd.conf*		call s:StarSetf('apachestyle')
 
 " Apache config file
-au BufNewFile,BufRead .htaccess			 setf apache
-au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/apache2/*.conf* call s:StarSetf('apache')
+au BufNewFile,BufRead .htaccess,/etc/httpd/*.conf		 setf apache
+au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/apache2/*.conf*,/etc/httpd/conf.d/*.conf* call s:StarSetf('apache')
 
 " XA65 MOS6510 cross assembler
 au BufNewFile,BufRead *.a65			setf a65
 
+" Applescript
+au BufNewFile,BufRead *.scpt			setf applescript
+
 " Applix ELF
 au BufNewFile,BufRead *.am
 	\ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif
@@ -350,10 +353,9 @@ au BufNewFile,BufRead *.cpp
 	\ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif
 
 " C++
+au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.ipp,*.moc,*.tcc,*.inl setf cpp
 if has("fname_case")
-  au BufNewFile,BufRead *.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
-else
-  au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
+  au BufNewFile,BufRead *.C,*.H setf cpp
 endif
 
 " .h files can be C, Ch C++, ObjC or ObjC++.
@@ -364,9 +366,9 @@ au BufNewFile,BufRead *.h			call s:FThea
 func! s:FTheader()
   if match(getline(1, min([line("$"), 200])), '^@\(interface\|end\|class\)') > -1
     setf objc
-  elseif exists("c_syntax_for_h")
+  elseif exists("g:c_syntax_for_h")
     setf c
-  elseif exists("ch_syntax_for_h")
+  elseif exists("g:ch_syntax_for_h")
     setf ch
   else
     setf cpp
@@ -669,8 +671,9 @@ au BufNewFile,BufRead *.factor			setf fa
 " Fetchmail RC file
 au BufNewFile,BufRead .fetchmailrc		setf fetchmail
 
-" FlexWiki
-au BufNewFile,BufRead *.wiki			setf flexwiki
+" FlexWiki - disabled, because it has side effects when a .wiki file
+" is not actually FlexWiki
+"au BufNewFile,BufRead *.wiki			setf flexwiki
 
 " Focus Executable
 au BufNewFile,BufRead *.fex,*.focexec		setf focexec
@@ -704,12 +707,12 @@ au BufNewFile,BufRead .gdbinit			setf gd
 au BufNewFile,BufRead *.mo,*.gdmo		setf gdmo
 
 " Gedcom
-au BufNewFile,BufRead *.ged			setf gedcom
+au BufNewFile,BufRead *.ged,lltxxxxx.txt	setf gedcom
 
 " Git
-autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG    setf gitcommit
-autocmd BufNewFile,BufRead *.git/config,.gitconfig setf gitconfig
-autocmd BufNewFile,BufRead git-rebase-todo         setf gitrebase
+autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG setf gitcommit
+autocmd BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules setf gitconfig
+autocmd BufNewFile,BufRead git-rebase-todo      setf gitrebase
 autocmd BufNewFile,BufRead .msg.[0-9]*
       \ if getline(1) =~ '^From.*# This line is ignored.$' |
       \   setf gitsendemail |
@@ -896,7 +899,7 @@ au BufNewFile,BufRead *.java,*.jav		setf
 au BufNewFile,BufRead *.jj,*.jjt		setf javacc
 
 " JavaScript, ECMAScript
-au BufNewFile,BufRead *.js,*.javascript,*.es	setf javascript
+au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx	setf javascript
 
 " Java Server Pages
 au BufNewFile,BufRead *.jsp			setf jsp
@@ -1043,7 +1046,7 @@ func! s:FTm()
   let n = 1
   while n < 10
     let line = getline(n)
-    if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)'
+    if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\|//\)'
       setf objc
       return
     endif
@@ -1070,6 +1073,9 @@ au BufNewFile,BufRead *.nb			setf mma
 " Maya Extension Language
 au BufNewFile,BufRead *.mel			setf mel
 
+" Mercurial config (looks like generic config file)
+au BufNewFile,BufRead *.hgrc,*hgrc		setf cfg
+
 " Messages
 au BufNewFile,BufRead /var/log/messages,/var/log/messages.*[0-9]  setf messages
 
@@ -1260,7 +1266,7 @@ if has("fname_case")
 else
   au BufNewFile,BufRead *.pl			call s:FTpl()
 endif
-au BufNewFile,BufRead *.plx			setf perl
+au BufNewFile,BufRead *.plx,*.al		setf perl
 
 func! s:FTpl()
   if exists("g:filetype_pl")
@@ -1552,6 +1558,7 @@ endfunc
 
 " Remind
 au BufNewFile,BufRead .reminders*		call s:StarSetf('remind')
+au BufNewFile,BufRead *.remind,*.rem		setf remind
 
 " Resolv.conf
 au BufNewFile,BufRead resolv.conf		setf resolv
@@ -1586,7 +1593,7 @@ au BufNewFile,BufRead *.builder,*.rxml,*
 " Rantfile and Rakefile is like Ruby
 au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake	setf ruby
 
-" S-lang (or shader language!)
+" S-lang (or shader language, or SmallLisp)
 au BufNewFile,BufRead *.sl			setf slang
 
 " Samba config
@@ -1685,7 +1692,15 @@ func! SetFileTypeSH(name)
   if expand("<amatch>") =~ g:ft_ignore_pat
     return
   endif
-  if a:name =~ '\<ksh\>'
+  if a:name =~ '\<csh\>'
+    " Some .sh scripts contain #!/bin/csh.
+    call SetFileTypeShell("csh")
+    return
+  elseif a:name =~ '\<tcsh\>'
+    " Some .sh scripts contain #!/bin/tcsh.
+    call SetFileTypeShell("tcsh")
+    return
+  elseif a:name =~ '\<ksh\>'
     let b:is_kornshell = 1
     if exists("b:is_bash")
       unlet b:is_bash
@@ -1823,10 +1838,15 @@ au BufNewFile,BufRead *.rules			call s:F
 
 let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*'
 func! s:FTRules()
-  if expand('<amatch>:p') =~ '^/etc/udev/\%(rules\.d/\)\=.*\.rules$'
+  let path = expand('<amatch>:p')
+  if path =~ '^/etc/udev/\%(rules\.d/\)\=.*\.rules$'
     setf udevrules
     return
   endif
+  if path =~ '^/etc/ufw/'
+    setf conf  " Better than hog
+    return
+  endif
   try
     let config_lines = readfile('/etc/udev/udev.conf')
   catch /^Vim\%((\a\+)\)\=:E484/
@@ -1909,6 +1929,9 @@ au BufNewFile,BufRead *.cm			setf voscm
 " Sysctl
 au BufNewFile,BufRead /etc/sysctl.conf		setf sysctl
 
+" Synopsys Design Constraints
+au BufNewFile,BufRead *.sdc			setf sdc
+
 " Sudoers
 au BufNewFile,BufRead /etc/sudoers,sudoers.tmp	setf sudoers
 
@@ -1944,6 +1967,10 @@ au BufNewFile,BufRead tags			setf tags
 " TAK
 au BufNewFile,BufRead *.tak			setf tak
 
+" Task
+au BufRead,BufNewFile {pending,completed,undo}.data  setf taskdata
+au BufRead,BufNewFile *.task                    setf taskedit
+
 " Tcl (JACL too)
 au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl	setf tcl
 
@@ -2079,8 +2106,13 @@ au BufNewFile,BufRead *.vim,*.vba,.exrc,
 " Viminfo file
 au BufNewFile,BufRead .viminfo,_viminfo		setf viminfo
 
-" Virata Config Script File
-au BufRead,BufNewFile *.hw,*.module,*.pkg	setf virata
+" Virata Config Script File or Drupal module
+au BufRead,BufNewFile *.hw,*.module,*.pkg
+	\ if getline(1) =~ '<?php' |
+	\   setf php |
+	\ else |
+	\   setf virata |
+	\ endif
 
 " Visual Basic (also uses *.bas) or FORM
 au BufNewFile,BufRead *.frm			call s:FTVB("form")
@@ -2325,6 +2357,9 @@ au BufNewFile,BufRead *fvwm2rc*
 	\|  let b:fvwm_version = 2 | call s:StarSetf('fvwm')
 	\|endif
 
+" Gedcom
+au BufNewFile,BufRead /tmp/lltmp*		call s:StarSetf('gedcom')
+
 " GTK RC
 au BufNewFile,BufRead .gtkrc*,gtkrc*		call s:StarSetf('gtkrc')
 
--- a/runtime/ftplugin/abaqus.vim
+++ b/runtime/ftplugin/abaqus.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:     Abaqus finite element input file (www.abaqus.com)
 " Maintainer:   Carl Osterwisch <osterwischc@asme.org>
-" Last Change:  2004 Jul 06
+" Last Change:  2008 Oct 5
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin") | finish | endif
@@ -13,13 +13,6 @@ let b:did_ftplugin = 1
 let s:cpo_save = &cpoptions
 set cpoptions&vim
 
-" Folding
-if version >= 600
-    " Fold all lines that do not begin with *
-    setlocal foldexpr=getline(v:lnum)[0]!=\"\*\"
-    setlocal foldmethod=expr
-endif
-
 " Set the format of the include file specification for Abaqus
 " Used in :check gf ^wf [i and other commands
 setlocal include=\\<\\cINPUT\\s*=
@@ -42,29 +35,43 @@ setlocal define=^\\*\\a.*\\c\\(NAME\\\|N
 " Abaqus keywords and identifiers may include a - character
 setlocal iskeyword+=-
 
+let b:undo_ftplugin = "setlocal include< includeexpr< isfname<"
+    \ . " comments< commentstring< define< iskeyword<"
+
+if has("folding")
+    " Fold all lines that do not begin with *
+    setlocal foldexpr=getline(v:lnum)[0]!=\"\*\"
+    setlocal foldmethod=expr
+    let b:undo_ftplugin .= " foldexpr< foldmethod<"
+endif
+
 " Set the file browse filter (currently only supported under Win32 gui)
 if has("gui_win32") && !exists("b:browsefilter")
     let b:browsefilter = "Abaqus Input Files (*.inp *.inc)\t*.inp;*.inc\n" .
     \ "Abaqus Results (*.dat)\t*.dat\n" .
     \ "Abaqus Messages (*.pre *.msg *.sta)\t*.pre;*.msg;*.sta\n" .
     \ "All Files (*.*)\t*.*\n"
+    let b:undo_ftplugin .= "|unlet b:browsefilter"
 endif
 
-" Define keys used to move [count] sections backward or forward.
-" TODO: Make this do something intelligent in visual mode.
-nnoremap <silent> <buffer> [[ :call <SID>Abaqus_Jump('?^\*\a?')<CR>
-nnoremap <silent> <buffer> ]] :call <SID>Abaqus_Jump('/^\*\a/')<CR>
-function! <SID>Abaqus_Jump(motion) range
-    let s:count = v:count1
-    mark '
-    while s:count > 0
-        silent! execute a:motion
-        let s:count = s:count - 1
-    endwhile
-endfunction
+" Define patterns for the matchit plugin
+if exists("loaded_matchit") && !exists("b:match_words")
+    let b:match_ignorecase = 1
+    let b:match_words = 
+    \ '\*part:\*end\s*part,' .
+    \ '\*assembly:\*end\s*assembly,' .
+    \ '\*instance:\*end\s*instance,' .
+    \ '\*step:\*end\s*step'
+    let b:undo_ftplugin .= "|unlet b:match_ignorecase b:match_words"
+endif
+
+" Define keys used to move [count] keywords backward or forward.
+noremap <silent><buffer> [[ ?^\*\a<CR>:nohlsearch<CR>
+noremap <silent><buffer> ]] /^\*\a<CR>:nohlsearch<CR>
 
 " Define key to toggle commenting of the current line or range
-noremap <silent> <buffer> <m-c> :call <SID>Abaqus_ToggleComment()<CR>j
+noremap <silent><buffer> <LocalLeader><LocalLeader> 
+    \ :call <SID>Abaqus_ToggleComment()<CR>j
 function! <SID>Abaqus_ToggleComment() range
     if strpart(getline(a:firstline), 0, 2) == "**"
         " Un-comment all lines in range
@@ -75,5 +82,8 @@ function! <SID>Abaqus_ToggleComment() ra
     endif
 endfunction
 
+let b:undo_ftplugin .= "|unmap <buffer> [[|unmap <buffer> ]]"
+    \ . "|unmap <buffer> <LocalLeader><LocalLeader>"
+
 " Restore saved compatibility options
 let &cpoptions = s:cpo_save
--- a/runtime/ftplugin/ada.vim
+++ b/runtime/ftplugin/ada.vim
@@ -1,14 +1,14 @@
 "------------------------------------------------------------------------------
 "  Description: Perform Ada specific completion & tagging.
 "     Language: Ada (2005)
-"	   $Id$
+"	   $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $
 "   Maintainer: Martin Krischik <krischik@users.sourceforge.net>
 "		Taylor Venable <taylor@metasyntax.net>
 "		Neil Bird <neil@fnxweb.com>
-"      $Author$
-"	 $Date$
+"      $Author: krischik $
+"	 $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
 "      Version: 4.6
-"    $Revision$
+"    $Revision: 887 $
 "     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/ftplugin/ada.vim $
 "      History: 24.05.2006 MK Unified Headers
 "		26.05.2006 MK ' should not be in iskeyword.
--- a/runtime/ftplugin/ant.vim
+++ b/runtime/ftplugin/ant.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	ant
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2003 Sep 29
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 
--- a/runtime/ftplugin/aspvbs.vim
+++ b/runtime/ftplugin/aspvbs.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	aspvbs
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2004 Jun 28
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 
--- a/runtime/ftplugin/bst.vim
+++ b/runtime/ftplugin/bst.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	bst
 " Author:	Tim Pope <vimNOSPAM@tpope.info>
-" $Id$
+" $Id: bst.vim,v 1.1 2007/05/05 17:37:57 vimboss Exp $
 
 if exists("b:did_ftplugin")
     finish
--- 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:  2007-05-21
+" Latest Revision:  2009-05-25
 " Variables:
 "   g:changelog_timeformat (deprecated: use g:changelog_dateformat instead) -
 "       description: the timeformat used in ChangeLog entries.
@@ -46,73 +46,78 @@ if &filetype == 'changelog'
     endif
   endif
 
-  " Try to figure out a reasonable username of the form:
-  "   Full Name <user@host>.
-  if !exists('g:changelog_username')
-    if exists('$EMAIL') && $EMAIL != ''
-      let g:changelog_username = $EMAIL
-    elseif exists('$EMAIL_ADDRESS') && $EMAIL_ADDRESS != ''
-      " This is some Debian junk if I remember correctly.
-      let g:changelog_username = $EMAIL_ADDRESS
-    else
-      " Get the users login name.
-      let login = system('whoami')
-      if v:shell_error
-        let login = 'unknown'
-      else
-        let newline = stridx(login, "\n")
-        if newline != -1
-          let login = strpart(login, 0, newline)
-        endif
-      endif
+  function! s:username()
+    if exists('g:changelog_username')
+      return g:changelog_username
+    elseif $EMAIL != ""
+      return $EMAIL
+    elseif $EMAIL_ADDRESS != ""
+      return $EMAIL_ADDRESS
+    endif
+    
+    let login = s:login()
+    return printf('%s <%s@%s>', s:name(login), login, s:hostname())
+  endfunction
+
+  function! s:login()
+    return s:trimmed_system_with_default('whoami', 'unknown')
+  endfunction
+
+  function! s:trimmed_system_with_default(command, default)
+    return s:first_line(s:system_with_default(a:command, a:default))
+  endfunction
+
+  function! s:system_with_default(command, default)
+    let output = system(a:command)
+    if v:shell_error
+      return default
+    endif
+    return output
+  endfunction
+
+  function! s:first_line(string)
+    return substitute(a:string, '\n.*$', "", "")
+  endfunction
 
-      " Try to get the full name from gecos field in /etc/passwd.
-      if filereadable('/etc/passwd')
-        for line in readfile('/etc/passwd')
-          if line =~ '^' . login
-            let name = substitute(line,'^\%([^:]*:\)\{4}\([^:]*\):.*$','\1','')
-            " Only keep stuff before the first comma.
-            let comma = stridx(name, ',')
-            if comma != -1
-              let name = strpart(name, 0, comma)
-            endif
-            " And substitute & in the real name with the login of our user.
-            let amp = stridx(name, '&')
-            if amp != -1
-              let name = strpart(name, 0, amp) . toupper(login[0]) .
-                       \ strpart(login, 1) . strpart(name, amp + 1)
-            endif
-          endif
-        endfor
+  function! s:name(login)
+    for name in [s:gecos_name(a:login), $NAME, s:capitalize(a:login)]
+      if name != ""
+        return name
       endif
+    endfor
+  endfunction
+
+  function! s:gecos_name(login)
+    for line in s:try_reading_file('/etc/passwd')
+      if line =~ '^' . a:login . ':'
+        return substitute(s:passwd_field(line, 5), '&', s:capitalize(a:login), "")
+      endif
+    endfor
+    return ""
+  endfunction
 
-      " If we haven't found a name, try to gather it from other places.
-      if !exists('name')
-        " Maybe the environment has something of interest.
-        if exists("$NAME")
-          let name = $NAME
-        else
-          " No? well, use the login name and capitalize first
-          " character.
-          let name = toupper(login[0]) . strpart(login, 1)
-        endif
-      endif
+  function! s:try_reading_file(path)
+    try
+      return readfile(a:path)
+    endtry
+    return []
+  endfunction
 
-      " Get our hostname.
-      let hostname = system('hostname')
-      if v:shell_error
-        let hostname = 'localhost'
-      else
-        let newline = stridx(hostname, "\n")
-        if newline != -1
-          let hostname = strpart(hostname, 0, newline)
-        endif
-      endif
+  function! s:passwd_field(line, field)
+    let fields = split(a:line, ':', 1)
+    if len(fields) < field
+      return ""
+    endif
+    return fields[field - 1]
+  endfunction
 
-      " And finally set the username.
-      let g:changelog_username = name . '  <' . login . '@' . hostname . '>'
-    endif
-  endif
+  function! s:capitalize(word)
+    return toupper(a:word[0]) . strpart(a:word, 1)
+  endfunction
+
+  function! s:hostname()
+    return s:trimmed_system_with_default('hostname', 'localhost')
+  endfunction
 
   " Format used for new date entries.
   if !exists('g:changelog_new_date_format')
@@ -178,7 +183,7 @@ if &filetype == 'changelog'
       " Ok, now we look for the end of the date entry, and add an entry.
       call cursor(nextnonblank(line('.') + 1), 1)
       if search(g:changelog_date_end_entry_search, 'W') > 0
-        let p = line('.') - 1
+	let p = (line('.') == line('$')) ? line('.') : line('.') - 1
       else
         let p = line('.')
       endif
@@ -217,7 +222,7 @@ if &filetype == 'changelog'
   endfunction
 
   if exists(":NewChangelogEntry") != 2
-    map <buffer> <silent> <Leader>o <Esc>:call <SID>new_changelog_entry()<CR>
+    noremap <buffer> <silent> <Leader>o <Esc>:call <SID>new_changelog_entry()<CR>
     command! -nargs=0 NewChangelogEntry call s:new_changelog_entry()
   endif
 
@@ -236,14 +241,48 @@ if &filetype == 'changelog'
   let &cpo = s:cpo_save
   unlet s:cpo_save
 else
+  let s:cpo_save = &cpo
+  set cpo&vim
+
   " Add the Changelog opening mapping
-  nmap <silent> <Leader>o :call <SID>open_changelog()<CR>
+  nnoremap <silent> <Leader>o :call <SID>open_changelog()<CR>
 
   function! s:open_changelog()
-    if !filereadable('ChangeLog')
+    let path = expand('%:p:h')
+    if exists('b:changelog_path')
+      let changelog = b:changelog_path
+    else
+      if exists('b:changelog_name')
+        let name = b:changelog_name
+      else
+        let name = 'ChangeLog'
+      endif
+      while isdirectory(path)
+        let changelog = path . '/' . name
+        if filereadable(changelog)
+          break
+        endif
+        let parent = substitute(path, '/\+[^/]*$', "", "")
+        if path == parent
+          break
+        endif
+        let path = parent
+      endwhile
+    endif
+    if !filereadable(changelog)
       return
     endif
-    let buf = bufnr('ChangeLog')
+
+    if exists('b:changelog_entry_prefix')
+      let prefix = call(b:changelog_entry_prefix, [])
+    else
+      let prefix = substitute(strpart(expand('%:p'), strlen(path)), '^/\+', "", "") . ':'
+    endif
+    if !empty(prefix)
+      let prefix = ' ' . prefix
+    endif
+
+    let buf = bufnr(changelog)
     if buf != -1
       if bufwinnr(buf) != -1
         execute bufwinnr(buf) . 'wincmd w'
@@ -251,9 +290,12 @@ else
         execute 'sbuffer' buf
       endif
     else
-      split ChangeLog
+      execute 'split' fnameescape(changelog)
     endif
 
-    call s:new_changelog_entry()
+    call s:new_changelog_entry(prefix)
   endfunction
+
+  let &cpo = s:cpo_save
+  unlet s:cpo_save
 endif
--- a/runtime/ftplugin/cobol.vim
+++ b/runtime/ftplugin/cobol.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	cobol
 " Author:	Tim Pope <vimNOSPAM@tpope.info>
-" $Id$
+" $Id: cobol.vim,v 1.1 2007/05/05 17:24:38 vimboss Exp $
 
 " Insert mode mappings: <C-T> <C-D> <Tab>
 " Normal mode mappings: < > << >> [[ ]] [] ][
--- a/runtime/ftplugin/config.vim
+++ b/runtime/ftplugin/config.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	config
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2004 Jul 08
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 
--- a/runtime/ftplugin/csc.vim
+++ b/runtime/ftplugin/csc.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	csc
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2003 Sep 29
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
--- a/runtime/ftplugin/csh.vim
+++ b/runtime/ftplugin/csh.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	csh
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2003 Sep 29
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
--- a/runtime/ftplugin/dosbatch.vim
+++ b/runtime/ftplugin/dosbatch.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:    MS-DOS .bat files
 " Maintainer:  Mike Williams <mrw@eandem.co.uk>
-" Last Change: 5th February 2003
+" Last Change: 27th May 2009
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -12,10 +12,10 @@ endif
 let b:did_ftplugin = 1
 
 " BAT comment formatting
-setlocal comments=b:rem,b:@rem,b:REM,b:@REM,b:::
+setlocal comments=b:rem,b:@rem,b:REM,b:@REM,:::
 setlocal formatoptions-=t formatoptions+=rol
 
 " Define patterns for the browse file filter
 if has("gui_win32") && !exists("b:browsefilter")
-  let b:browsefilter = "DOS Batch Files (*.bat, *.btm, *.cmd)\t*.bat;*.btm;*.cmd\nAll Files (*.*)\t*.*\n"
+  let b:browsefilter = "DOS Batch Files (*.bat, *.cmd)\t*.bat;*.cmd\nAll Files (*.*)\t*.*\n"
 endif
--- a/runtime/ftplugin/dtd.vim
+++ b/runtime/ftplugin/dtd.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	dtd
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 30 Jun 2008
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
--- a/runtime/ftplugin/eruby.vim
+++ b/runtime/ftplugin/eruby.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin
 " Language:		eRuby
 " Maintainer:		Tim Pope <vimNOSPAM@tpope.info>
-" Info:			$Id$
+" Info:			$Id: eruby.vim,v 1.12 2008/06/29 04:18:43 tpope Exp $
 " URL:			http://vim-ruby.rubyforge.org
 " Anon CVS:		See above site
 " Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
--- a/runtime/ftplugin/git.vim
+++ b/runtime/ftplugin/git.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin
 " Language:	generic git output
-" Maintainer:	Tim Pope <vimNOSPAM@tpope.info>
-" Last Change:	2008 Jul 30
+" Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
+" Last Change:	2009 Dec 24
 
 " Only do this when not done yet for this buffer
 if (exists("b:did_ftplugin"))
@@ -29,6 +29,9 @@ if exists('*shellescape') && exists('b:g
 else
     setlocal keywordprg=git\ show
 endif
+if has('gui_running')
+  let &l:keywordprg = substitute(&l:keywordprg,'^git\>','git --no-pager','')
+endif
 
 setlocal includeexpr=substitute(v:fname,'^[^/]\\+/','','')
 let b:undo_ftplugin = "setl keywordprg< path< includeexpr<"
--- a/runtime/ftplugin/gitcommit.vim
+++ b/runtime/ftplugin/gitcommit.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin
-" Language:	git config file
-" Maintainer:	Tim Pope <vimNOSPAM@tpope.info>
-" Last Change:	2008 Jun 04
+" Language:	git commit file
+" Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
+" Last Change:	2009 Dec 24
 
 " Only do this when not done yet for this buffer
 if (exists("b:did_ftplugin"))
--- a/runtime/ftplugin/gitconfig.vim
+++ b/runtime/ftplugin/gitconfig.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin
 " Language:	git config file
-" Maintainer:	Tim Pope <vimNOSPAM@tpope.info>
-" Last Change:	2007 Dec 16
+" Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
+" Last Change:	2009 Dec 24
 
 " Only do this when not done yet for this buffer
 if (exists("b:did_ftplugin"))
--- a/runtime/ftplugin/gitrebase.vim
+++ b/runtime/ftplugin/gitrebase.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin
 " Language:	git rebase --interactive
-" Maintainer:	Tim Pope <vimNOSPAM@tpope.info>
-" Last Change:	2008 Apr 16
+" Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
+" Last Change:	2009 Dec 24
 
 " Only do this when not done yet for this buffer
 if (exists("b:did_ftplugin"))
@@ -22,12 +22,13 @@ function! s:choose(word)
 endfunction
 
 function! s:cycle()
-    call s:choose(get({'s':'edit','p':'squash'},getline('.')[0],'pick'))
+    call s:choose(get({'s':'edit','p':'squash','e':'reword'},getline('.')[0],'pick'))
 endfunction
 
 command! -buffer -bar Pick   :call s:choose('pick')
 command! -buffer -bar Squash :call s:choose('squash')
 command! -buffer -bar Edit   :call s:choose('edit')
+command! -buffer -bar Reword :call s:choose('reword')
 command! -buffer -bar Cycle  :call s:cycle()
 " The above are more useful when they are mapped; for example:
 "nnoremap <buffer> <silent> S :Cycle<CR>
--- a/runtime/ftplugin/gitsendemail.vim
+++ b/runtime/ftplugin/gitsendemail.vim
@@ -1,6 +1,6 @@
 " Vim filetype plugin
 " Language:	git send-email message
-" Maintainer:	Tim Pope <vimNOSPAM@tpope.info>
-" Last Change:	2007 Dec 16
+" Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
+" Last Change:	2009 Dec 24
 
 runtime! ftplugin/mail.vim
--- a/runtime/ftplugin/html.vim
+++ b/runtime/ftplugin/html.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	html
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2007 Nov 20
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
--- a/runtime/ftplugin/java.vim
+++ b/runtime/ftplugin/java.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	Java
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Change:  2005 Mar 28
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Change:  20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
--- a/runtime/ftplugin/jsp.vim
+++ b/runtime/ftplugin/jsp.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	jsp
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2005 Oct 10
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 
--- a/runtime/ftplugin/mail.vim
+++ b/runtime/ftplugin/mail.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	Mail
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2007 Apr 30
+" Last Change:	2009 Jun 03
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -23,7 +23,7 @@ endif
 " Set 'formatoptions' to break text lines and keep the comment leader ">".
 setlocal fo+=tcql
 
-" Add mappings, unless the user didn't want this.
+" Add mappings, unless the user doesn't want this.
 if !exists("no_plugin_maps") && !exists("no_mail_maps")
   " Quote text by inserting "> "
   if !hasmapto('<Plug>MailQuote')
--- a/runtime/ftplugin/man.vim
+++ b/runtime/ftplugin/man.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	man
-" Maintainer:	Nam SungHyun <namsh@kldp.org>
-" Last Change:	2007 Nov 30
+" Maintainer:	SungHyun Nam <goweol@gmail.com>
+" Last Change:	2008 Sep 17
 
 " To make the ":Man" command available before editing a manual page, source
 " this script from your startup vimrc file.
--- a/runtime/ftplugin/pascal.vim
+++ b/runtime/ftplugin/pascal.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	pascal
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2005 Sep 05
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
--- a/runtime/ftplugin/perl.vim
+++ b/runtime/ftplugin/perl.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	Perl
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Change:  17 Jul 2008
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Change:  20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
--- a/runtime/ftplugin/php.vim
+++ b/runtime/ftplugin/php.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	php
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2007 Nov 10
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 
--- a/runtime/ftplugin/ruby.vim
+++ b/runtime/ftplugin/ruby.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin
 " Language:		Ruby
 " Maintainer:		Gavin Sinclair <gsinclair at gmail.com>
-" Info:			$Id$
+" Info:			$Id: ruby.vim,v 1.40 2008/06/29 04:18:43 tpope Exp $
 " URL:			http://vim-ruby.rubyforge.org
 " Anon CVS:		See above site
 " Release Coordinator:  Doug Kearns <dougkearns@gmail.com>
--- a/runtime/ftplugin/sgml.vim
+++ b/runtime/ftplugin/sgml.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	sgml
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2003 Sep 30
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 
--- a/runtime/ftplugin/sh.vim
+++ b/runtime/ftplugin/sh.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	sh
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2003 Sep 29
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
--- a/runtime/ftplugin/sql.vim
+++ b/runtime/ftplugin/sql.vim
@@ -1,8 +1,8 @@
 " SQL filetype plugin file
 " Language:    SQL (Common for Oracle, Microsoft SQL Server, Sybase)
-" Version:     4.0
+" Version:     6.0
 " Maintainer:  David Fishburn <fishburn at ianywhere dot com>
-" Last Change: Wed 27 Feb 2008 04:35:21 PM Eastern Standard Time
+" Last Change: 2009 Aug 04
 " Download:    http://vim.sourceforge.net/script.php?script_id=454
 
 " For more details please use:
@@ -29,6 +29,27 @@
 "
 " To change the default dialect, add the following to your vimrc:
 "    let g:sql_type_default = 'sqlanywhere'
+"
+" This file also creates a command, SQLGetType, which allows you to 
+" determine what the current dialect is in use.
+"     :SQLGetType
+"
+" History
+"
+" Version 6.0
+" 
+" NF: Adds the command SQLGetType
+"
+" Version 5.0
+" 
+" NF: Adds the ability to choose the keys to control SQL completion, just add 
+"     the following to your .vimrc:
+"    let g:ftplugin_sql_omni_key       = '<C-C>'
+"    let g:ftplugin_sql_omni_key_right = '<Right>'
+"    let g:ftplugin_sql_omni_key_left  = '<Left>'
+"
+" BF: format-options - Auto-wrap comments using textwidth was turned off 
+"                      by mistake.
 
 
 " Only do this when not done yet for this buffer
@@ -44,7 +65,7 @@ set cpo=
 " c     Auto-wrap comments using textwidth, inserting the current comment
 "       leader automatically.
 setlocal formatoptions-=t
-setlocal formatoptions-=c
+setlocal formatoptions+=c
 
 " Functions/Commands to allow the user to change SQL syntax dialects
 " through the use of :SQLSetType <tab> for completion.
@@ -154,6 +175,20 @@ if !exists("*SQL_SetType")
 
 endif
 
+" Functions/Commands to allow the user determine current SQL syntax dialect
+" This works with both Vim 6 and 7.
+
+if !exists("*SQL_GetType")
+    function SQL_GetType()
+        if exists('b:sql_type_override') 
+            echomsg "Current SQL dialect in use:".b:sql_type_override
+        else
+            echomsg "Current SQL dialect in use:".g:sql_type_default        
+        endif
+    endfunction
+    command! -nargs=0 SQLGetType :call SQL_GetType()
+endif
+
 if exists("b:sql_type_override")
     " echo 'sourcing buffer ftplugin/'.b:sql_type_override.'.vim'
     if globpath(&runtimepath, 'ftplugin/'.b:sql_type_override.'.vim') != ''
@@ -311,6 +346,19 @@ if !exists('g:ftplugin_sql_objects')
                 \ ',index,subscription,synchronization,view,variable'
 endif
 
+" Key to trigger SQL completion
+if !exists('g:ftplugin_sql_omni_key')
+    let g:ftplugin_sql_omni_key = '<C-C>'
+endif
+" Key to trigger drill into column list
+if !exists('g:ftplugin_sql_omni_key_right')
+    let g:ftplugin_sql_omni_key_right = '<Right>'
+endif
+" Key to trigger drill out of column list
+if !exists('g:ftplugin_sql_omni_key_left')
+    let g:ftplugin_sql_omni_key_left = '<Left>'
+endif
+
 " Replace all ,'s with bars, except ones with numbers after them.
 " This will most likely be a \{,1} string.
 let s:ftplugin_sql_objects = 
@@ -382,32 +430,32 @@ if exists('&omnifunc')
     if !exists('g:omni_sql_no_default_maps')
         " Static maps which use populate the completion list
         " using Vim's syntax highlighting rules
-        imap <buffer> <c-c>a <C-\><C-O>:call sqlcomplete#Map('syntax')<CR><C-X><C-O>
-        imap <buffer> <c-c>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O>
-        imap <buffer> <c-c>f <C-\><C-O>:call sqlcomplete#Map('sqlFunction')<CR><C-X><C-O>
-        imap <buffer> <c-c>o <C-\><C-O>:call sqlcomplete#Map('sqlOption')<CR><C-X><C-O>
-        imap <buffer> <c-c>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O>
-        imap <buffer> <c-c>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O>
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'a <C-\><C-O>:call sqlcomplete#Map("syntax")<CR><C-X><C-O>'
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'k <C-\><C-O>:call sqlcomplete#Map("sqlKeyword")<CR><C-X><C-O>'
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'f <C-\><C-O>:call sqlcomplete#Map("sqlFunction")<CR><C-X><C-O>'
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'o <C-\><C-O>:call sqlcomplete#Map("sqlOption")<CR><C-X><C-O>'
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'T <C-\><C-O>:call sqlcomplete#Map("sqlType")<CR><C-X><C-O>'
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'s <C-\><C-O>:call sqlcomplete#Map("sqlStatement")<CR><C-X><C-O>'
         " Dynamic maps which use populate the completion list
         " using the dbext.vim plugin
-        imap <buffer> <c-c>t <C-\><C-O>:call sqlcomplete#Map('table')<CR><C-X><C-O>
-        imap <buffer> <c-c>p <C-\><C-O>:call sqlcomplete#Map('procedure')<CR><C-X><C-O>
-        imap <buffer> <c-c>v <C-\><C-O>:call sqlcomplete#Map('view')<CR><C-X><C-O>
-        imap <buffer> <c-c>c <C-\><C-O>:call sqlcomplete#Map('column')<CR><C-X><C-O>
-        imap <buffer> <c-c>l <C-\><C-O>:call sqlcomplete#Map('column_csv')<CR><C-X><C-O>
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'t <C-\><C-O>:call sqlcomplete#Map("table")<CR><C-X><C-O>'
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'p <C-\><C-O>:call sqlcomplete#Map("procedure")<CR><C-X><C-O>'
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'v <C-\><C-O>:call sqlcomplete#Map("view")<CR><C-X><C-O>'
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'c <C-\><C-O>:call sqlcomplete#Map("column")<CR><C-X><C-O>'
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'l <C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>'
         " The next 3 maps are only to be used while the completion window is
         " active due to the <CR> at the beginning of the map
-        imap <buffer> <c-c>L <C-Y><C-\><C-O>:call sqlcomplete#Map('column_csv')<CR><C-X><C-O>
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'L <C-Y><C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>'
         " <C-Right> is not recognized on most Unix systems, so only create
         " these additional maps on the Windows platform.
         " If you would like to use these maps, choose a different key and make
         " the same map in your vimrc.
-        if has('win32')
-            imap <buffer> <c-right>  <C-R>=sqlcomplete#DrillIntoTable()<CR>
-            imap <buffer> <c-left>  <C-R>=sqlcomplete#DrillOutOfColumns()<CR>
-        endif
+        " if has('win32')
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key_right.' <C-R>=sqlcomplete#DrillIntoTable()<CR>'
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key_left.'  <C-R>=sqlcomplete#DrillOutOfColumns()<CR>'
+        " endif
         " Remove any cached items useful for schema changes
-        imap <buffer> <c-c>R <C-\><C-O>:call sqlcomplete#Map('resetCache')<CR><C-X><C-O>
+        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'R <C-\><C-O>:call sqlcomplete#Map("resetCache")<CR><C-X><C-O>'
     endif
 
     if b:sql_compl_savefunc != ""
--- a/runtime/ftplugin/svg.vim
+++ b/runtime/ftplugin/svg.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	svg
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2003 Sep 29
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/tcl.vim
@@ -0,0 +1,36 @@
+" Vim filetype plugin file
+" Language:         Tcl
+" Maintainer:       Robert L Hicks <sigzero@gmail.com>
+" Latest Revision:  2009-05-01
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+" Make sure the continuation lines below do not cause problems in
+" compatibility mode.
+let s:cpo_save = &cpo
+set cpo-=C
+
+setlocal comments=:#
+setlocal commentstring=#%s
+setlocal formatoptions+=croql
+
+" Change the browse dialog on Windows to show mainly Tcl-related files
+if has("gui_win32")
+    let b:browsefilter = "Tcl Source Files (.tcl)\t*.tcl\n" .
+                \ "Tcl Test Files (.test)\t*.test\n" .
+                \ "All Files (*.*)\t*.*\n"
+endif
+
+"-----------------------------------------------------------------------------
+
+" Undo the stuff we changed.
+let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< kp<" .
+	    \	      " | unlet! b:browsefilter"
+
+" Restore the saved compatibility options.
+let &cpo = s:cpo_save
+
+" vim: set et ts=4 sw=4 tw=78:
--- a/runtime/ftplugin/tcsh.vim
+++ b/runtime/ftplugin/tcsh.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	tcsh
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2003 Sep 29
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 
--- a/runtime/ftplugin/verilog.vim
+++ b/runtime/ftplugin/verilog.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	Verilog HDL
 " Maintainer:	Chih-Tsun Huang <cthuang@larc.ee.nthu.edu.tw>
-" Last Change:	Mon Sep  5 11:05:54 CST 2005 and 2006 April 30
+" Last Change:	Wed Sep  3 15:24:49 CST 2008
 " URL:		http://larc.ee.nthu.edu.tw/~cthuang/vim/ftplugin/verilog.vim
 
 " Only do this when not done yet for this buffer
@@ -12,6 +12,10 @@ endif
 " Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
+" Set 'cpoptions' to allow line continuations
+let s:cpo_save = &cpo
+set cpo&vim
+
 " Undo the plugin effect
 let b:undo_ftplugin = "setlocal fo< com< tw<"
     \ . "| unlet! b:browsefilter b:match_ignorecase b:match_words"
@@ -28,8 +32,6 @@ if &textwidth == 0
   setlocal tw=78
 endif
 
-set cpo-=C
-
 " Win32 can filter files in the browse dialog
 if has("gui_win32") && !exists("b:browsefilter")
   let b:browsefilter = "Verilog Source Files (*.v)\t*.v\n" .
@@ -49,3 +51,7 @@ if exists("loaded_matchit")
     \ '\<task\>:\<endtask\>,' .
     \ '\<specify\>:\<endspecify\>'
 endif
+
+" Reset 'cpoptions' back to the user's setting
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/ftplugin/vim.vim
+++ b/runtime/ftplugin/vim.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin
 " Language:	Vim
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2008 Feb 27
+" Last Change:	2009 Jan 22
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -11,16 +11,20 @@ endif
 " Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
-let cpo_save = &cpo
+let s:cpo_save = &cpo
 set cpo-=C
 
-let b:undo_ftplugin = "setl fo< com< tw< commentstring<"
+let b:undo_ftplugin = "setl fo< isk< com< tw< commentstring<"
 	\ . "| unlet! b:match_ignorecase b:match_words b:match_skip"
 
 " Set 'formatoptions' to break comment lines but not other lines,
 " and insert the comment leader when hitting <CR> or using "o".
 setlocal fo-=t fo+=croql
 
+" To allow tag lookup via CTRL-] for autoload functions, '#' must be a
+" keyword character.  E.g., for netrw#Nread().
+setlocal isk+=#
+
 " Set 'comments' to format dashed lists in comments
 setlocal com=sO:\"\ -,mO:\"\ \ ,eO:\"\",:\"
 
@@ -53,8 +57,7 @@ if exists("loaded_matchit")
   let b:match_ignorecase = 0
   let b:match_words =
 	\ '\<fu\%[nction]\>:\<retu\%[rn]\>:\<endf\%[unction]\>,' .
-	\ '\<wh\%[ile]\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<endw\%[hile]\>,' .
-	\ '\<for\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<endfo\%[r]\>,' .
+ 	\ '\<\(wh\%[ile]\|for\)\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<end\(w\%[hile]\|fo\%[r]\)\>,' .
 	\ '\<if\>:\<el\%[seif]\>:\<en\%[dif]\>,' .
 	\ '\<try\>:\<cat\%[ch]\>:\<fina\%[lly]\>:\<endt\%[ry]\>,' .
 	\ '\<aug\%[roup]\s\+\%(END\>\)\@!\S:\<aug\%[roup]\s\+END\>,' .
@@ -64,7 +67,8 @@ if exists("loaded_matchit")
 	\ synIDattr(synID(line("."),col("."),1),"name") =~? "comment\\|string"'
 endif
 
-let &cpo = cpo_save
+let &cpo = s:cpo_save
+unlet s:cpo_save
 
 " removed this, because 'cpoptions' is a global option.
 " setlocal cpo+=M		" makes \%( match \)
--- a/runtime/ftplugin/xhtml.vim
+++ b/runtime/ftplugin/xhtml.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	xhtml
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2004 Jul 08
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 
--- a/runtime/ftplugin/xml.vim
+++ b/runtime/ftplugin/xml.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	xml
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 30 Jun 2008
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
--- a/runtime/ftplugin/xsd.vim
+++ b/runtime/ftplugin/xsd.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	xsd
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2003 Sep 29
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 
--- a/runtime/ftplugin/xslt.vim
+++ b/runtime/ftplugin/xslt.vim
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
 " Language:	xslt
-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2004 Jul 08
-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
+" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Last Changed: 20 Jan 2009
+" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
 
--- a/runtime/indent/ada.vim
+++ b/runtime/indent/ada.vim
@@ -1,15 +1,15 @@
 "------------------------------------------------------------------------------
 "  Description: Vim Ada indent file
 "     Language: Ada (2005)
-"	   $Id$
+"	   $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $
 "    Copyright: Copyright (C) 2006 Martin Krischik
 "   Maintainer: Martin Krischik <krischik@users.sourceforge.net>
 "		Neil Bird <neil@fnxweb.com>
 "		Ned Okie <nokie@radford.edu>
-"      $Author$
-"	 $Date$
+"      $Author: krischik $
+"	 $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
 "      Version: 4.6
-"    $Revision$
+"    $Revision: 887 $
 "     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/indent/ada.vim $
 "      History: 24.05.2006 MK Unified Headers
 "		16.07.2006 MK Ada-Mode as vim-ball
--- a/runtime/indent/bst.vim
+++ b/runtime/indent/bst.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	bst
 " Author:	Tim Pope <vimNOSPAM@tpope.info>
-" $Id$
+" $Id: bst.vim,v 1.1 2007/05/05 18:11:12 vimboss Exp $
 
 if exists("b:did_indent")
     finish
--- a/runtime/indent/cmake.vim
+++ b/runtime/indent/cmake.vim
@@ -1,10 +1,10 @@
 " =============================================================================
 " 
 "   Program:   CMake - Cross-Platform Makefile Generator
-"   Module:    $RCSfile$
+"   Module:    $RCSfile: cmake-indent.vim,v $
 "   Language:  VIM
-"   Date:      $Date$
-"   Version:   $Revision$
+"   Date:      $Date: 2006/09/23 21:09:08 $
+"   Version:   $Revision: 1.7 $
 " 
 " =============================================================================
 
@@ -12,8 +12,8 @@
 " Language:     CMake (ft=cmake)
 " Author:       Andy Cedilnik <andy.cedilnik@kitware.com>
 " Maintainer:   Andy Cedilnik <andy.cedilnik@kitware.com>
-" Last Change:  $Date$
-" Version:      $Revision$
+" Last Change:  $Date: 2006/09/23 21:09:08 $
+" Version:      $Revision: 1.7 $
 "
 " Licence:      The CMake license applies to this file. See
 "               http://www.cmake.org/HTML/Copyright.html
--- a/runtime/indent/cobol.vim
+++ b/runtime/indent/cobol.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	cobol
 " Author:	Tim Pope <vimNOSPAM@tpope.info>
-" $Id$
+" $Id: cobol.vim,v 1.1 2007/05/05 18:08:19 vimboss Exp $
 
 if exists("b:did_indent")
     finish
--- a/runtime/indent/cpp.vim
+++ b/runtime/indent/cpp.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	C++
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2001 Jun 12
+" Last Change:	2008 Nov 29
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -11,3 +11,5 @@ let b:did_indent = 1
 
 " C++ indenting is built-in, thus this is very simple
 setlocal cindent
+
+let b:undo_indent = "setl cin<"
new file mode 100644
--- /dev/null
+++ b/runtime/indent/cuda.vim
@@ -0,0 +1,15 @@
+" Vim indent file
+" Language:	CUDA
+" Maintainer:	Bram Moolenaar <Bram@vim.org>
+" Last Change:	2008 Nov 29
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+   finish
+endif
+let b:did_indent = 1
+
+" It's just like C indenting
+setlocal cindent
+
+let b:undo_indent = "setl cin<"
--- a/runtime/indent/eiffel.vim
+++ b/runtime/indent/eiffel.vim
@@ -2,8 +2,8 @@
 " Language:	Eiffel
 " Maintainer:	Jocelyn Fiat <eiffel@djoce.net>
 " Previous-Maintainer:	David Clarke <gadicath@dishevelled.net>
-" $Date$
-" $Revision$
+" $Date: 2004/12/09 21:33:52 $
+" $Revision: 1.3 $
 " URL: http://www.djoce.net/page/vim/
 " Last Change:	2004 Sept 14 : removed specific value for tab (sw)
 
--- a/runtime/indent/eruby.vim
+++ b/runtime/indent/eruby.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:		eRuby
 " Maintainer:		Tim Pope <vimNOSPAM@tpope.info>
-" Info:			$Id$
+" Info:			$Id: eruby.vim,v 1.16 2008/06/29 04:18:43 tpope Exp $
 " URL:			http://vim-ruby.rubyforge.org
 " Anon CVS:		See above site
 " Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
--- a/runtime/indent/gitconfig.vim
+++ b/runtime/indent/gitconfig.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	git config file
-" Maintainer:	Tim Pope <vimNOSPAM@tpope.info>
-" Last Change:	2008 Jun 04
+" Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
+" Last Change:	2009 Dec 24
 
 if exists("b:did_indent")
   finish
new file mode 100644
--- /dev/null
+++ b/runtime/indent/mail.vim
@@ -0,0 +1,13 @@
+" Vim indent file
+" Language:	Mail
+" Maintainer:	Bram Moolenaar
+" Last Change:	2009 Jun 03
+
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+
+" What works best is auto-indenting, disable other indenting.
+" For formatting see the ftplugin.
+setlocal autoindent nosmartindent nocindent indentexpr=
--- a/runtime/indent/php.vim
+++ b/runtime/indent/php.vim
@@ -2,17 +2,10 @@
 " Language:	PHP
 " Author:	John Wellesz <John.wellesz (AT) teaser (DOT) fr>
 " URL:		http://www.2072productions.com/vim/indent/php.vim
-" Last Change:  2008 June 7th
+" Last Change:  2008 November 22nd
 " Newsletter:   http://www.2072productions.com/?to=php-indent-for-vim-newsletter.php
-" Version:	1.28
+" Version:	1.30
 "
-"  If you find a bug, please e-mail me at John.wellesz (AT) teaser (DOT) fr
-"  with an example of code that breaks the algorithm.
-"
-"  ---> The change log and all the comments have been removed from this file.
-"
-"  For a complete change log and fully commented code, download the script on
-"  2072productions.com at the URI provided above.
 "
 "  If you find a bug, please e-mail me at John.wellesz (AT) teaser (DOT) fr
 "  with an example of code that breaks the algorithm.
@@ -24,7 +17,7 @@
 " NOTE: This script must be used with PHP syntax ON and with the php syntax
 "	script by Lutz Eymers (http://www.isp.de/data/php.vim ) or with the
 "	script by Peter Hodge (http://www.vim.org/scripts/script.php?script_id=1571 )
-"	the later is bunbdled by default with vim 7.
+"	the later is bunbdled by default with Vim 7.
 "
 "
 "	In the case you have syntax errors in your script such as HereDoc end
@@ -33,50 +26,19 @@
 "	they are followed by a ';').
 "
 "
-" NOTE: If you are editing file in Unix file format and that (by accident)
-" there are '\r' before new lines, this script won't be able to proceed
-" correctly and will make many mistakes because it won't be able to match
-" '\s*$' correctly.
-" So you have to remove those useless characters first with a command like:
-"
-" :%s /\r$//g
-"
-" or simply 'let' the option PHP_removeCRwhenUnix to 1 and the script will
-" silently remove them when VIM load this script (at each bufread).
-"
-"
-" Options: PHP_autoformatcomment = 0 to not enable autoformating of comment by
-"		    default, if set to 0, this script will let the 'formatoptions' setting intact.
-"
-" Options: PHP_default_indenting = # of sw (default is 0), # of sw will be
-"		   added to the indent of each line of PHP code.
+" NOTE: If you are editing files in Unix file format and that (by accident)
+"	there are '\r' before new lines, this script won't be able to proceed
+"	correctly and will make many mistakes because it won't be able to match
+"	'\s*$' correctly.
+"	So you have to remove those useless characters first with a command like:
 "
-" Options: PHP_removeCRwhenUnix = 1 to make the script automatically remove CR
-"		   at end of lines (by default this option is unset), NOTE that you
-"		   MUST remove CR when the fileformat is UNIX else the indentation
-"		   won't be correct!
+"	:%s /\r$//g
 "
-" Options: PHP_BracesAtCodeLevel = 1 to indent the '{' and '}' at the same
-"		   level than the code they contain.
-"		   Exemple:
-"			Instead of:
-"				if ($foo)
-"				{
-"					foo();
-"				}
+"	or simply 'let' the option PHP_removeCRwhenUnix to 1 and the script will
+"	silently remove them when VIM load this script (at each bufread).
 "
-"			You will write:
-"				if ($foo)
-"					{
-"					foo();
-"					}
-"
-"			NOTE: The script will be a bit slower if you use this option because
-"			some optimizations won't be available.
-"
-" Options: PHP_vintage_case_default_indent = 1 (defaults to 0) to add a meaningless indent
-"		    befaore 'case:' and 'default":' statement in switch block
-"
+" Options: See :help php-indent for available options.
+
 
 if exists("b:did_indent")
     finish
@@ -145,6 +107,7 @@ if &fileformat == "unix" && exists("PHP_
 endif
 
 if exists("*GetPhpIndent")
+    call ResetPhpOptions()
     finish " XXX
 endif
 
@@ -317,14 +280,13 @@ endfunction " }}}
 let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\|else\)'
 let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|else\>\|while\>\|switch\>\|for\%(each\)\=\>\|declare\>\|class\>\|interface\>\|abstract\>\|try\>\|catch\>\)'
 
-let s:autorestoptions = 0
-if ! s:autorestoptions
-    au BufWinEnter,Syntax	*.php,*.php3,*.php4,*.php5	call ResetOptions()
-    let s:autorestoptions = 1
+let s:autoresetoptions = 0
+if ! s:autoresetoptions
+    let s:autoresetoptions = 1
 endif
 
-function! ResetOptions()
-    if ! b:optionsset
+function! ResetPhpOptions()
+    if ! b:optionsset && &filetype == "php" 
 	if b:PHP_autoformatcomment
 
 	    setlocal comments=s1:/*,mb:*,ex:*/,://,:#
@@ -341,6 +303,8 @@ function! ResetOptions()
     endif
 endfunc
 
+call ResetPhpOptions()
+
 function! GetPhpIndent()
 
     let b:GetLastRealCodeLNum_ADD = 0
@@ -360,7 +324,7 @@ function! GetPhpIndent()
     if !b:PHP_indentinghuge && b:PHP_lastindented > b:PHP_indentbeforelast
 	if b:PHP_indentbeforelast
 	    let b:PHP_indentinghuge = 1
-	    echom 'Large indenting detected, speed optimizations engaged (v1.28)'
+	    echom 'Large indenting detected, speed optimizations engaged (v1.30)'
 	endif
 	let b:PHP_indentbeforelast = b:PHP_lastindented
     endif
@@ -693,6 +657,7 @@ function! GetPhpIndent()
 
     if !LastLineClosed
 
+
 	if last_line =~# '[{(]'.endline || last_line =~? '\h\w*\s*(.*,$' && pline !~ '[,(]'.endline
 
 	    if !b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{'
@@ -715,11 +680,11 @@ function! GetPhpIndent()
 	elseif last_line =~ '^\s*'.s:blockstart
 	    let ind = ind + &sw
 
-	elseif last_line =~# defaultORcase
+	elseif last_line =~# defaultORcase && cline !~# defaultORcase
 	    let ind = ind + &sw
 
 
-	elseif pline =~ '\%(;\%(\s*?>\)\=\|<<<''\=\a\w*''\=$\|^\s*}\|{\)'.endline . '\|' . defaultORcase
+	elseif pline =~ '\%(;\%(\s*?>\)\=\|<<<''\=\a\w*''\=$\|^\s*}\|{\)'.endline . '\|' . defaultORcase && cline !~# defaultORcase
 
 	    let ind = ind + &sw
 	endif
--- a/runtime/indent/ruby.vim
+++ b/runtime/indent/ruby.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:		Ruby
 " Maintainer:		Nikolai Weibull <now at bitwi.se>
-" Info:			$Id$
+" Info:			$Id: ruby.vim,v 1.47 2008/06/29 04:18:43 tpope Exp $
 " URL:			http://vim-ruby.rubyforge.org
 " Anon CVS:		See above site
 " Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
--- a/runtime/indent/sh.vim
+++ b/runtime/indent/sh.vim
@@ -1,7 +1,7 @@
 " Vim indent file
-" Language:	    Shell Script
+" Language:         Shell Script
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-19
+" Latest Revision:  2010-01-06
 
 if exists("b:did_indent")
   finish
@@ -9,8 +9,10 @@ endif
 let b:did_indent = 1
 
 setlocal indentexpr=GetShIndent()
-setlocal indentkeys+==then,=do,=else,=elif,=esac,=fi,=fin,=fil,=done
+setlocal indentkeys+=0=then,0=do,0=else,0=elif,0=fi,0=esac,0=done,),0=;;,0=;&
+setlocal indentkeys+=0=fin,0=fil,0=fip,0=fir,0=fix
 setlocal indentkeys-=:,0#
+setlocal nosmartindent
 
 if exists("*GetShIndent")
   finish
@@ -19,34 +21,138 @@ endif
 let s:cpo_save = &cpo
 set cpo&vim
 
-function GetShIndent()
+function s:buffer_shiftwidth()
+  return &shiftwidth
+endfunction
+
+let s:sh_indent_defaults = {
+      \ 'default': function('s:buffer_shiftwidth'),
+      \ 'continuation-line': function('s:buffer_shiftwidth'),
+      \ 'case-labels': function('s:buffer_shiftwidth'),
+      \ 'case-statements': function('s:buffer_shiftwidth'),
+      \ 'case-breaks': 0 }
+
+function! s:indent_value(option)
+  let Value = exists('b:sh_indent_options')
+            \ && has_key(b:sh_indent_options, a:option) ?
+            \ b:sh_indent_options[a:option] :
+            \ s:sh_indent_defaults[a:option]
+  if type(Value) == type(function('type'))
+    return Value()
+  endif
+  return Value
+endfunction
+
+function! GetShIndent()
   let lnum = prevnonblank(v:lnum - 1)
   if lnum == 0
     return 0
   endif
 
-  " Add a 'shiftwidth' after if, while, else, case, until, for, function()
-  " Skip if the line also contains the closure for the above
+  let pnum = prevnonblank(lnum - 1)
+
   let ind = indent(lnum)
   let line = getline(lnum)
-  if line =~ '^\s*\(if\|then\|do\|else\|elif\|case\|while\|until\|for\)\>'
-	\ || line =~ '^\s*\<\k\+\>\s*()\s*{'
-	\ || line =~ '^\s*{'
-    if line !~ '\(esac\|fi\|done\)\>\s*$' && line !~ '}\s*$'
-      let ind = ind + &sw
+  if line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\)\>'
+    if line !~ '\<\%(fi\|esac\|done\)\>\s*\%(#.*\)\=$'
+      let ind += s:indent_value('default')
+    endif
+  elseif s:is_case_label(line, pnum)
+    if !s:is_case_ended(line)
+      let ind += s:indent_value('case-statements')
     endif
+  elseif line =~ '^\s*\<\k\+\>\s*()\s*{' || line =~ '^\s*{'
+    if line !~ '}\s*\%(#.*\)\=$'
+      let ind += s:indent_value('default')
+    endif
+  elseif s:is_continuation_line(line)
+    if pnum == 0 || !s:is_continuation_line(getline(pnum))
+      let ind += s:indent_value('continuation-line')
+    endif
+  elseif pnum != 0 && s:is_continuation_line(getline(pnum))
+    let ind = indent(s:find_continued_lnum(pnum))
   endif
 
-  " Subtract a 'shiftwidth' on a then, do, else, esac, fi, done
-  " Retain the indentation level if line matches fin (for find)
+  let pine = line
   let line = getline(v:lnum)
-  if (line =~ '^\s*\(then\|do\|else\|elif\|esac\|fi\|done\)\>' || line =~ '^\s*}')
-	\ && line !~ '^\s*fi[ln]\>'
-    let ind = ind - &sw
+  if line =~ '^\s*\%(then\|do\|else\|elif\|fi\|done\)\>' || line =~ '^\s*}'
+    let ind -= s:indent_value('default')
+  elseif line =~ '^\s*esac\>'
+    let ind -= (s:is_case_label(pine, lnum) && s:is_case_ended(pine) ?
+             \ 0 : s:indent_value('case-statements')) +
+             \ s:indent_value('case-labels')
+    if s:is_case_break(pine)
+      let ind += s:indent_value('case-breaks')
+    endif
+  elseif s:is_case_label(line, lnum)
+    if s:is_case(pine)
+      let ind = indent(lnum) + s:indent_value('case-labels')
+    else
+      let ind -= s:indent_value('case-statements') - s:indent_value('case-breaks')
+    endif
+  elseif s:is_case_break(line)
+    let ind -= s:indent_value('case-breaks')
   endif
 
   return ind
 endfunction
 
+function! s:is_continuation_line(line)
+  return a:line =~ '\%(\%(^\|[^\\]\)\\\|&&\|||\)$'
+endfunction
+
+function! s:find_continued_lnum(lnum)
+  let i = a:lnum
+  while i > 1 && s:is_continuation_line(getline(i - 1))
+    let i -= 1
+  endwhile
+  return i
+endfunction
+
+function! s:is_case_label(line, pnum)
+  if a:line !~ '^\s*(\=.*)'
+    return 0
+  endif
+
+  if a:pnum > 0
+    let pine = getline(a:pnum)
+    if !(s:is_case(pine) || s:is_case_ended(pine))
+      return 0
+    endif
+  endif
+
+  let suffix = substitute(a:line, '^\s*(\=', "", "")
+  let nesting = 0
+  let i = 0
+  let n = strlen(suffix)
+  while i < n
+    let c = suffix[i]
+    let i += 1
+    if c == '\\'
+      let i += 1
+    elseif c == '('
+      let nesting += 1
+    elseif c == ')'
+      if nesting == 0
+        return 1
+      endif
+      let nesting -= 1
+    endif
+  endwhile
+  return 0
+endfunction
+
+function! s:is_case(line)
+  return a:line =~ '^\s*case\>'
+endfunction
+
+function! s:is_case_break(line)
+  return a:line =~ '^\s*;[;&]'
+endfunction
+
+function! s:is_case_ended(line)
+  return s:is_case_break(a:line) || a:line =~ ';[;&]\s*\%(#.*\)\=$'
+endfunction
+
 let &cpo = s:cpo_save
 unlet s:cpo_save
--- a/runtime/indent/xml.vim
+++ b/runtime/indent/xml.vim
@@ -1,10 +1,11 @@
 " Language:	xml
 " Maintainer:	Johannes Zellner <johannes@zellner.org>
-" Last Change:	Tue, 27 Apr 2004 14:54:59 CEST
+" Last Change:	2009-05-26 00:17:25
 " Notes:	1) does not indent pure non-xml code (e.g. embedded scripts)
 "		2) will be confused by unbalanced tags in comments
 "		or CDATA sections.
-" TODO:		implement pre-like tags, see xml_indent_open / xml_indent_close
+"		2009-05-26 patch by Nikolai Weibull
+" TODO: 	implement pre-like tags, see xml_indent_open / xml_indent_close
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -46,6 +47,9 @@ fun! <SID>XmlIndentSynCheck(lnum)
 	if '' != syn1 && syn1 !~ 'xml' && '' != syn2 && syn2 !~ 'xml'
 	    " don't indent pure non-xml code
 	    return 0
+	elseif syn1 =~ '^xmlComment' && syn2 =~ '^xmlComment'
+	    " indent comments specially
+	    return -1
 	endif
     endif
     return 1
@@ -74,8 +78,12 @@ fun! XmlIndentGet(lnum, use_syntax_check
     endif
 
     if a:use_syntax_check
-	if 0 == <SID>XmlIndentSynCheck(lnum) || 0 == <SID>XmlIndentSynCheck(a:lnum)
+	let check_lnum = <SID>XmlIndentSynCheck(lnum)
+	let check_alnum = <SID>XmlIndentSynCheck(a:lnum)
+	if 0 == check_lnum || 0 == check_alnum
 	    return indent(a:lnum)
+	elseif -1 == check_lnum || -1 == check_alnum
+	    return -1
 	endif
     endif
 
new file mode 100644
--- /dev/null
+++ b/runtime/keymap/dvorak.vim
@@ -0,0 +1,82 @@
+" Maintainer:   Ashish SHUKLA <wahjava@members.fsf.org>
+" Last Changed: 2009 Jul 04
+"
+" All characters are ASCII, conversion to another encoding (e.g., UTF-8)
+" should work.
+
+let b:keymap_name = "en-dv"
+
+loadkeymap
+q	'
+w	,
+e	.
+r	p
+t	y
+y	f
+u	g
+i	c
+o	r
+p	l
+[	/
+]	=
+\\	\\
+a	a
+s	o
+d	e
+f	u
+g	i
+h	d
+j	h
+k	t
+l	n
+;	s
+'	-
+z	;
+x	q
+c	j
+v	k
+b	x
+n	b
+m	m
+,	w
+.	v
+/	z
+Z	:
+X	Q
+C	J
+V	K
+B	X
+N	B
+M	M
+<	W
+>	V
+?	Z
+A	A
+S	O
+D	E
+F	U
+G	I
+H	D
+J	H
+K	T
+L	N
+:	S
+\"	_
+Q	"
+W	<
+E	>
+R	P
+T	Y
+Y	F
+U	G
+I	C
+O	R
+P	L
+{	?
+}	+
+|	|
+-	[
+_	{
+=	]
++	}
+
--- a/runtime/lang/menu_cs_cz.iso_8859-2.vim
+++ b/runtime/lang/menu_cs_cz.iso_8859-2.vim
@@ -1,8 +1,8 @@
 " Menu Translations:	Czech for ISO-8859-2
 " Maintainer:		Jiri Brezina <brzj@seznam.cz>
 " vim:set foldmethod=marker:
-" $Revision$
-" $Date$
+" $Revision: 1.3 $
+" $Date: 2005/12/19 22:08:24 $
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
--- a/runtime/lang/menu_czech_czech_republic.1250.vim
+++ b/runtime/lang/menu_czech_czech_republic.1250.vim
@@ -1,8 +1,8 @@
 " Menu Translations:	Czech for MS-Windows
 " Maintainer:		Jiri Brezina <brzj@seznam.cz>
 " vim:set foldmethod=marker:
-" $Revision$
-" $Date$
+" $Revision: 1.3 $
+" $Date: 2005/12/19 22:13:30 $
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
--- a/runtime/lang/menu_czech_czech_republic.ascii.vim
+++ b/runtime/lang/menu_czech_czech_republic.ascii.vim
@@ -1,8 +1,8 @@
 " Menu Translations:	Czech for systems without localization
 " Maintainer:		Jiri Brezina <brzj@seznam.cz>
 " vim:set foldmethod=marker:
-" $Revision$
-" $Date$
+" $Revision: 1.3 $
+" $Date: 2005/12/19 22:06:56 $
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
--- a/runtime/lang/menu_es_es.latin1.vim
+++ b/runtime/lang/menu_es_es.latin1.vim
@@ -1,7 +1,8 @@
 " Menu Translations:	Espaol
-" Maintainer:		Alejandro Lpez-Valencia <dradul@users.sourceforge.net>
-" Version:		6.4.p0-1
-" Last Change:		2005 Dec 01
+" Previous translator:	Alejandro Lpez-Valencia <dradul@users.sourceforge.net>
+" Last translator:	Omar Campagne Polaino <ocampagne@gmail.com>
+" Version:		7.2.245
+" Last Change:		2009 Sep 03
 "
 
 " Quit when menu translations have already been done.
@@ -28,13 +29,14 @@ menutrans O&rphans		Ayude\ a\ los\ nios\ &hurfanos
 menutrans Co&pying		&Trminos\ de\ Licencia
 menutrans Sponsor/Register	Benefactor/Regstrese
 menutrans &Version		&Versin\ e\ \informacin\ de\ configuracin
-menutrans &About		&Acerca\ de\ Vim.
+menutrans &About		&Acerca\ de\ Vim
 
 " File menu
 menutrans &File				&Archivo
 menutrans &Open\.\.\.<Tab>:e		&Abrir\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	A&brir\ en\ otra\ ventana\.\.\.<Tab>:sp
 menutrans &New<Tab>:enew		&Nuevo<Tab>:enew
+menutrans Open\ Tab\.\.\.<Tab>:tabnew	Abrir\ pes&taa\.\.\.<Tab>:tabnew
 menutrans &Close<Tab>:close		&Cerrar<Tab>:close
 menutrans &Save<Tab>:w			&Guardar<Tab>:w
 menutrans Save\ &As\.\.\.<Tab>:sav	Guardar\ &como\.\.\.<Tab>:sav
@@ -65,11 +67,12 @@ menutrans Find\ and\ Rep&lace<Tab>:%s	Bu
 menutrans Find\ and\ Rep&lace		Buscar\ y\ R&eemplazar
 menutrans Find\ and\ Rep&lace<Tab>:s	Buscar\ y\ R&eemplazar<Tab>:s
 menutrans Settings\ &Window		&Ventana\ de\ opciones
+menutrans Startup\ &Settings		Opciones\ de\ arranque	 
 
 " Edit/Global Settings
 menutrans &Global\ Settings		Opciones\ &globales
 
-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	Activar/Desactivar\ &realzado\ de\ sintaxis<Tab>:set\ hls!
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	Activar/Desactivar\ &resaltado\ de\ sintaxis<Tab>:set\ hls!
 menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		Activar/Desactivar\ &ignorar\ maysculas\ y\ minsculas<Tab>:set\ ic!
 menutrans Toggle\ &Showmatch<Tab>:set\ sm!		Activar/Desactivar\ &mostrar\ coincidencias<Tab>:set\ sm!
 
@@ -95,11 +98,11 @@ menutrans Toggle\ &Bottom\ Scrollbar	Ocu
 menutrans Toggle\ &Left\ Scrollbar	Ocultar/Mostrar\ barra\ de\ desplazamiento\ i&zquierda
 menutrans Toggle\ &Right\ Scrollbar	Ocultar/Mostrar\ barra\ de\ desplazamiento\ &derecha
 
-let g:menutrans_path_dialog = "Introduzca la ruta de bsqueda para los ficheros.\nSepare los nombres de los directorios con una coma."
-let g:menutrans_tags_dialog = "Introduzca los nombres de los fichero de tags.\nSepare los nombres con una coma."
+let g:menutrans_path_dialog = "Introduzca la ruta de bsqueda para los archivos.\nSepare los nombres de los directorios con una coma."
+let g:menutrans_tags_dialog = "Introduzca los nombres de los archivos de tags.\nSepare los nombres con una coma."
 
 " Edit/File Settings
-menutrans F&ile\ Settings		Opciones\ del\ &fichero
+menutrans F&ile\ Settings		Opciones\ del\ &archivo
 
 " Boolean options
 menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	Activar/Desactivar\ &numeracin\ de\ lneas<Tab>:set\ nu!
@@ -118,8 +121,8 @@ menutrans Soft\ &Tabstop		&Tabulado\ blando
 menutrans Te&xt\ Width\.\.\.		Anchura\ del\ te&xto\.\.\.
 let g:menutrans_textwidth_dialog = "Introduzca el nuevo ancho del texto (0 para desactivar el quiebre de lnea): "
 
-menutrans &File\ Format\.\.\.		&Formato\ del\ fichero\.\.\.
-let g:menutrans_fileformat_dialog = "Seleccione el formato para escribir el fichero"
+menutrans &File\ Format\.\.\.		&Formato\ del\ archivo\.\.\.
+let g:menutrans_fileformat_dialog = "Seleccione el formato para escribir el archivo"
 
 menutrans C&olor\ Scheme		Esquema\ de\ c&olores
 menutrans blue		azul
@@ -154,7 +157,7 @@ menutrans slovak	eslovaco
 menutrans &Tools			&Herramientas
 menutrans &Jump\ to\ this\ tag<Tab>g^]	&Saltar\ a\ este\ etiqueta<Tab>g^]
 menutrans Jump\ &back<Tab>^T		Saltar\ &atrs<Tab>^T
-menutrans Build\ &Tags\ File		Crear\ fichero\ de\ &etiquetas\
+menutrans Build\ &Tags\ File		Crear\ archivo\ de\ &etiquetas\
 menutrans &Diff				Modo\ de\ &diferencias
 menutrans &Folding			&Plegado
 menutrans &Make<Tab>:make		Ejecutar\ &Make<Tab>:make
@@ -169,6 +172,24 @@ menutrans &Set\ Compiler		Esco&ger\ el\ 
 menutrans &Convert\ to\ HEX<Tab>:%!xxd	Convertir\ a\ formato\ &hexadecimal<Tab>:%!xxd
 menutrans Conve&rt\ back<Tab>:%!xxd\ -r	&Convertir\ al\ formato\ original<Tab>:%!xxd\ -r
 
+" Tools.Spelling Menu
+menutrans &Spelling				Correccin\ ortogrfica
+menutrans &Spell\ Check\ On			&Activar\ correccin\ ortogrfica
+menutrans Spell\ Check\ &Off			&Desactivar\ correccin\ ortogrfica
+menutrans To\ &Next\ error<Tab>]s		&Siguiente\ error<Tab>]s
+menutrans To\ &Previous\ error<Tab>[s  		Error\ &precedente<Tab>[s 
+menutrans Suggest\ &Corrections<Tab>z=		Sugerir\ &correccin<Tab>z=
+menutrans &Repeat\ correction<Tab>:spellrepall	&Repetir\ correccin<Tab>:spellrepall
+an 40.335.205 &Tools.&Spelling.Castellano\ (es)	:set spl=es spell<CR>
+menutrans Set\ language\ to\ "en"		Ingls
+menutrans Set\ language\ to\ "en_au"		Ingls\ (en_au)
+menutrans Set\ language\ to\ "en_ca"		Ingls\ (en_ca)
+menutrans Set\ language\ to\ "en_gb"		Ingls\ (en_gb)
+menutrans Set\ language\ to\ "en_nz"		Ingls\ (en_nz)
+menutrans Set\ language\ to\ "en_us"		Ingls\ (en_us)
+
+menutrans &Find\ More\ Languages		&Buscar\ otras\ lenguas
+
 " Tools.Fold Menu
 menutrans &Enable/Disable\ folds<Tab>zi		&Activar/Desactivar\ pliegues<Tab>zi
 menutrans &View\ Cursor\ Line<Tab>zv		&Ver\ lnea\ del\ cursor<Tab>zv
@@ -182,7 +203,7 @@ menutrans Fold\ Met&hod				&Mtodo\ de\ plegado
 " create and delete folds
 menutrans Create\ &Fold<Tab>zf			Crear\ &pliegue<Tab>zf
 menutrans &Delete\ Fold<Tab>zd			&Suprimir\ pliegue<Tab>zd
-menutrans Delete\ &All\ Folds<Tab>zD		Suprimir\ &todos\ los\ pligues<Tab>zD
+menutrans Delete\ &All\ Folds<Tab>zD		Suprimir\ &todos\ los\ pliegues<Tab>zD
 " moving around in folds
 menutrans Fold\ col&umn\ width			A&nchura\ de\ columna\ del\ pliegue
 
@@ -203,7 +224,7 @@ menutrans &Delete		&Suprimir
 menutrans &Alternate		&Alternar
 menutrans &Next			Si&guiente
 menutrans &Previous		&Previo
-let g:menutrans_no_file = "[Sin fichero]"
+let g:menutrans_no_file = "[Sin archivo]"
 
 " Window menu
 menutrans &Window			&Ventana
@@ -211,7 +232,7 @@ menutrans &New<Tab>^Wn			Ventana\ &nueva
 menutrans S&plit<Tab>^Ws		&Dividir\ la\ ventana<Tab>^Ws
 menutrans Sp&lit\ To\ #<Tab>^W^^	D&ividir\ en\ el\ marcador\ (#)<Tab>^W^^
 menutrans Split\ &Vertically<Tab>^Wv    Dividir\ &verticalmente<Tab>^Wv
-menutrans Split\ File\ E&xplorer	&Abrir\ el\ Explorador\ de\ ficheros
+menutrans Split\ File\ E&xplorer	&Abrir\ el\ Explorador\ de\ archivos
 menutrans &Close<Tab>^Wc		&Cerrar\ esta\ ventana<Tab>^Wc
 menutrans Close\ &Other(s)<Tab>^Wo	Cerrar\ &otra(s)\ ventana(s)<Tab>^Wo
 menutrans Move\ &To			Mov&er\ a
@@ -245,9 +266,9 @@ if has("toolbar")
     delfun Do_toolbar_tmenu
   endif
   fun Do_toolbar_tmenu()
-    tmenu ToolBar.Open		Abrir fichero
-    tmenu ToolBar.Save		Guardar fichero
-    tmenu ToolBar.SaveAll	Guardar todos los ficheros
+    tmenu ToolBar.Open		Abrir archivo
+    tmenu ToolBar.Save		Guardar archivo
+    tmenu ToolBar.SaveAll	Guardar todos los archivos
     tmenu ToolBar.Print		Imprimir
     tmenu ToolBar.Undo		Deshacer
     tmenu ToolBar.Redo		Rehacer
@@ -273,7 +294,7 @@ if has("toolbar")
     tmenu ToolBar.RunScript	Ejecutar un archivo de rdenes
     tmenu ToolBar.Make		Ejecutar Make
     tmenu ToolBar.Shell		Abrir un intrprete de comandos
-    tmenu ToolBar.RunCtags	Generar un fichero de etiquetas
+    tmenu ToolBar.RunCtags	Generar un archivo de etiquetas
     tmenu ToolBar.TagJump	Saltar a una etiqueta
     tmenu ToolBar.Help		Ayuda
     tmenu ToolBar.FindHelp	Buscar en la ayuda...
@@ -282,15 +303,15 @@ endif
 
 " Syntax menu
 menutrans &Syntax			&Sintaxis
-menutrans &Show\ filetypes\ in\ menu	&Mostrar\ listas\ de\ tipo\ de\ fichero
+menutrans &Show\ filetypes\ in\ menu	&Mostrar\ listas\ de\ tipo\ de\ archivo
 menutrans Set\ '&syntax'\ only		Activar\ slo\ sintaxis
-menutrans Set\ '&filetype'\ too		Activar\ tambin\ tipo\ de\ fichero
+menutrans Set\ '&filetype'\ too		Activar\ tambin\ tipo\ de\ archivo
 menutrans &Off				&Desactivar\ sintaxis
-menutrans &Manual			sintaxis\ &manual
-menutrans A&utomatic			sintaxis\ a&utomtica
-menutrans on/off\ for\ &This\ file	Activar/Desactivar\ en\ es&te\ fichero
+menutrans &Manual			Sintaxis\ &manual
+menutrans A&utomatic			Sintaxis\ a&utomtica
+menutrans on/off\ for\ &This\ file	Activar/Desactivar\ en\ es&te\ archivo
 menutrans Co&lor\ test			&Prueba\ de\ colores
-menutrans &Highlight\ test		Prueba\ de\ &realzado
+menutrans &Highlight\ test		Prueba\ de\ &resaltado
 menutrans &Convert\ to\ HTML		&Convertir\ a\ HTML
 
 " Find Help dialog text
--- a/runtime/lang/menu_ko_kr.euckr.vim
+++ b/runtime/lang/menu_ko_kr.euckr.vim
@@ -1,6 +1,6 @@
 " Menu Translations:	Korean
-" Maintainer:		Nam SungHyun <namsh@kldp.org>
-" Last Change:		2003 Apr 25
+" Maintainer:		SungHyun Nam <goweol@gmail.com>
+" Last Change:		2008 Sep 17
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
--- a/runtime/lang/menu_ko_kr.utf-8.vim
+++ b/runtime/lang/menu_ko_kr.utf-8.vim
@@ -1,6 +1,6 @@
 " Menu Translations:	Korean
-" Maintainer:		Nam SungHyun <namsh@kldp.org>
-" Last Change:		2003 Apr 25
+" Maintainer:		SungHyun Nam <goweol@gmail.com>
+" Last Change:		2008 Sep 17
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
--- a/runtime/lang/menu_ko_kr.vim
+++ b/runtime/lang/menu_ko_kr.vim
@@ -1,5 +1,5 @@
 " Menu Translations:	Korean
-" Translated By:	Nam SungHyun <namsh@kldp.org>
-" Last Change:		2003 Feb 24
+" Translated By:	SungHyun Nam <goweol@gmail.com>
+" Last Change:		2008 Sep 17
 
 source <sfile>:p:h/menu_ko_kr.euckr.vim
--- a/runtime/lang/menu_ru_ru.koi8-r.vim
+++ b/runtime/lang/menu_ru_ru.koi8-r.vim
@@ -3,7 +3,7 @@
 " Last Change:		26 Apr 2004
 " URL:			cvs://cvs.sf.net:/cvsroot/ruvim/extras/menu/menu_ru_ru.vim
 "
-" $Id$
+" $Id: menu_ru_ru.koi8-r.vim,v 1.2 2004/06/16 11:19:21 vimboss Exp $
 "
 " Adopted for RuVim project by Vassily Ragosin.
 " First translation: Tim Alexeevsky <realtim [at] mail.ru>,
--- a/runtime/lang/menu_ru_ru.vim
+++ b/runtime/lang/menu_ru_ru.vim
@@ -3,7 +3,7 @@
 " Last Change:		26 Apr 2004
 " URL:			cvs://cvs.sf.net:/cvsroot/ruvim/extras/menu/menu_ru_ru.vim
 "
-" $Id$
+" $Id: menu_ru_ru.vim,v 1.1 2004/06/13 16:09:10 vimboss Exp $
 "
 " Adopted for RuVim project by Vassily Ragosin.
 " First translation: Tim Alexeevsky <realtim [at] mail.ru>,
--- a/runtime/macros/matchit.vim
+++ b/runtime/macros/matchit.vim
@@ -357,7 +357,7 @@ fun! s:InsertRefs(groupBR, prefix, group
       execute s:Ref(ini, d, "start", "len")
       let ini = strpart(ini, 0, start) . backref . strpart(ini, start+len)
       let tailBR = substitute(tailBR, s:notslash . '\zs\\' . d,
-	\ escape(backref, '\\'), 'g')
+	\ escape(backref, '\\&'), 'g')
     endif
     let d = d-1
   endwhile
--- a/runtime/menu.vim
+++ b/runtime/menu.vim
@@ -2,7 +2,7 @@
 " You can also use this as a start for your own set of menus.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2008 Jun 30
+" Last Change:	2009 Feb 26
 
 " Note that ":an" (short for ":anoremenu") is often used to make a menu work
 " in all modes and avoid side effects from mappings defined by the user.
@@ -138,6 +138,7 @@ endfunc
 func! s:FnameEscape(fname)
   if exists('*fnameescape')
     return fnameescape(a:fname)
+  endif
   return escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
 endfunc
 
@@ -1016,10 +1017,9 @@ else
   tmenu ToolBar.Copy		Copy to clipboard
   tmenu ToolBar.Paste		Paste from Clipboard
   if !has("gui_athena")
-    tmenu ToolBar.Find		Find...
+    tmenu ToolBar.Replace	Find / Replace...
     tmenu ToolBar.FindNext	Find Next
     tmenu ToolBar.FindPrev	Find Previous
-    tmenu ToolBar.Replace		Find / Replace...
   endif
   tmenu ToolBar.LoadSesn	Choose a session to load
   tmenu ToolBar.SaveSesn	Save current session
--- a/runtime/plugin/getscriptPlugin.vim
+++ b/runtime/plugin/getscriptPlugin.vim
@@ -19,7 +19,7 @@ if &cp || exists("g:loaded_getscriptPlug
  endif
  finish
 endif
-let g:loaded_getscriptPlugin = "v31"
+let g:loaded_getscriptPlugin = "v32"
 let s:keepcpo                = &cpo
 set cpo&vim
 
--- a/runtime/plugin/gzip.vim
+++ b/runtime/plugin/gzip.vim
@@ -1,6 +1,6 @@
 " Vim plugin for editing compressed files.
 " Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2005 Jul 26
+" Last Change: 2009 Jul 01
 
 " Exit quickly when:
 " - this plugin was already loaded
@@ -20,17 +20,21 @@ augroup gzip
   "
   " Set binary mode before reading the file.
   " Use "gzip -d", gunzip isn't always available.
-  autocmd BufReadPre,FileReadPre	*.gz,*.bz2,*.Z setlocal bin
+  autocmd BufReadPre,FileReadPre	*.gz,*.bz2,*.Z,*.lzma setlocal bin
   autocmd BufReadPost,FileReadPost	*.gz  call gzip#read("gzip -dn")
   autocmd BufReadPost,FileReadPost	*.bz2 call gzip#read("bzip2 -d")
   autocmd BufReadPost,FileReadPost	*.Z   call gzip#read("uncompress")
+  autocmd BufReadPost,FileReadPost	*.lzma call gzip#read("lzma -d")
   autocmd BufWritePost,FileWritePost	*.gz  call gzip#write("gzip")
   autocmd BufWritePost,FileWritePost	*.bz2 call gzip#write("bzip2")
   autocmd BufWritePost,FileWritePost	*.Z   call gzip#write("compress -f")
+  autocmd BufWritePost,FileWritePost	*.lzma call gzip#write("lzma -z")
   autocmd FileAppendPre			*.gz  call gzip#appre("gzip -dn")
   autocmd FileAppendPre			*.bz2 call gzip#appre("bzip2 -d")
   autocmd FileAppendPre			*.Z   call gzip#appre("uncompress")
+  autocmd FileAppendPre			*.lzma call gzip#appre("lzma -d")
   autocmd FileAppendPost		*.gz  call gzip#write("gzip")
   autocmd FileAppendPost		*.bz2 call gzip#write("bzip2")
   autocmd FileAppendPost		*.Z   call gzip#write("compress -f")
+  autocmd FileAppendPost		*.lzma call gzip#write("lzma -z")
 augroup END
--- a/runtime/plugin/matchparen.vim
+++ b/runtime/plugin/matchparen.vim
@@ -1,6 +1,6 @@
 " Vim plugin for showing matching parens
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2008 Feb 27
+" Last Change: 2008 Sep 03
 
 " Exit quickly when:
 " - this plugin was already loaded (or disabled)
@@ -21,7 +21,7 @@ if exists("*s:Highlight_Matching_Pair")
   finish
 endif
 
-let cpo_save = &cpo
+let s:cpo_save = &cpo
 set cpo-=C
 
 " The function that is invoked (very often) to define a ":match" highlighting
@@ -147,4 +147,5 @@ command! NoMatchParen windo 3match none 
 	  \ au! matchparen
 command! DoMatchParen runtime plugin/matchparen.vim | windo doau CursorMoved
 
-let &cpo = cpo_save
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/plugin/netrwPlugin.vim
+++ b/runtime/plugin/netrwPlugin.vim
@@ -1,6 +1,6 @@
 " netrwPlugin.vim: Handles file transfer and remote directory listing across a network
 "            PLUGIN SECTION
-" Date:		Aug 01, 2008
+" Date:		Aug 10, 2008
 " Maintainer:	Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
 " Copyright:    Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
@@ -16,19 +16,16 @@
 "  But be doers of the Word, and not only hearers, deluding your own selves {{{1
 "  (James 1:22 RSV)
 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-" ---------------------------------------------------------------------
 " Load Once: {{{1
 if &cp || exists("g:loaded_netrwPlugin")
  finish
 endif
-let g:loaded_netrwPlugin = "v132"
-let s:keepcpo            = &cpo
-if v:version < 700
- echohl WarningMsg | echo "***netrw*** you need vim version 7.0 for this version of netrw" | echohl None
+let g:loaded_netrwPlugin = "v136"
+if v:version < 702
+ echohl WarningMsg | echo "***netrw*** you need vim version 7.2 for this version of netrw" | echohl None
  finish
 endif
-let s:keepcpo= &cpo
+let s:keepcpo = &cpo
 set cpo&vim
 
 " ---------------------------------------------------------------------
@@ -52,8 +49,8 @@ augroup Network
   au BufReadCmd  file://*		exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://\(.*\)','\1',""))|exe "bwipe ".fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>")))
   au BufReadCmd  file://localhost/*	exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://localhost/\(.*\)','\1',""))|exe "bwipe ".fnameescape(substitute(expand("<amatch>"),'file://\(\k\+@\)\=','',''))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>")))
  endif
- au BufReadCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|exe '2Nread '.fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>"))
- au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe "silent doau FileReadPre ".fnameescape(expand("<amatch>"))|exe 'Nread '.fnameescape(expand("<amatch>"))|exe "silent doau FileReadPost ".fnameescape(expand("<amatch>"))
+ au BufReadCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(2,expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>"))
+ au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe "silent doau FileReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(1,expand("<amatch>"))|exe "silent doau FileReadPost ".fnameescape(expand("<amatch>"))
  au BufWriteCmd  ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://*		exe "silent doau BufWritePre ".fnameescape(expand("<amatch>"))|exe 'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau BufWritePost ".fnameescape(expand("<amatch>"))
  au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://*		exe "silent doau FileWritePre ".fnameescape(expand("<amatch>"))|exe "'[,']".'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau FileWritePost ".fnameescape(expand("<amatch>"))
  try
@@ -156,24 +153,6 @@ fun! NetUserPass(...)
 endfun
 
 " ------------------------------------------------------------------------
-" NetReadFixup: this sort of function is typically written by the user {{{1
-"               to handle extra junk that their system's ftp dumps
-"               into the transfer.  This function is provided as an
-"               example and as a fix for a Windows 95 problem: in my
-"               experience, win95's ftp always dumped four blank lines
-"               at the end of the transfer.
-if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp
- fun! NetReadFixup(method, line1, line2)
-"   call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
-   if method == 3   " ftp (no <.netrc>)
-    let fourblanklines= line2 - 3
-    silent fourblanklines.",".line2."g/^\s*/d"
-   endif
-"   call Dret("NetReadFixup")
- endfun
-endif
-
-" ------------------------------------------------------------------------
 " Modelines And Restoration: {{{1
 let &cpo= s:keepcpo
 unlet s:keepcpo
--- a/runtime/plugin/tarPlugin.vim
+++ b/runtime/plugin/tarPlugin.vim
@@ -14,7 +14,7 @@
 if &cp || exists("g:loaded_tarPlugin")
  finish
 endif
-let g:loaded_tarPlugin = "v23"
+let g:loaded_tarPlugin = "v24"
 let s:keepcpo          = &cpo
 set cpo&vim
 
@@ -34,13 +34,15 @@ augroup tar
    au FileWriteCmd tarfile::*/*	call tar#Write(expand("<amatch>"))
   endif
 
-  au BufReadCmd   *.tar.gz	call tar#Browse(expand("<amatch>"))
-  au BufReadCmd   *.tar		call tar#Browse(expand("<amatch>"))
-  au BufReadCmd   *.lrp		call tar#Browse(expand("<amatch>"))
-  au BufReadCmd   *.tar.bz2	call tar#Browse(expand("<amatch>"))
-  au BufReadCmd   *.tar.Z	call tar#Browse(expand("<amatch>"))
-  au BufReadCmd   *.tgz		call tar#Browse(expand("<amatch>"))
+  au BufReadCmd   *.tar.gz		call tar#Browse(expand("<amatch>"))
+  au BufReadCmd   *.tar			call tar#Browse(expand("<amatch>"))
+  au BufReadCmd   *.lrp			call tar#Browse(expand("<amatch>"))
+  au BufReadCmd   *.tar.bz2		call tar#Browse(expand("<amatch>"))
+  au BufReadCmd   *.tar.Z		call tar#Browse(expand("<amatch>"))
+  au BufReadCmd   *.tgz			call tar#Browse(expand("<amatch>"))
+  au BufReadCmd   *.tar.lzma	call tar#Browse(expand("<amatch>"))
 augroup END
+com! -nargs=? -complete=file Vimuntar call tar#Vimuntar(<q-args>)
 
 " ---------------------------------------------------------------------
 " Restoration And Modelines: {{{1
--- a/runtime/plugin/vimballPlugin.vim
+++ b/runtime/plugin/vimballPlugin.vim
@@ -1,6 +1,6 @@
 " vimballPlugin : construct a file containing both paths and files
 " Author: Charles E. Campbell, Jr.
-" Copyright: (c) 2004-2007 by Charles E. Campbell, Jr.
+" Copyright: (c) 2004-2009 by Charles E. Campbell, Jr.
 "            The VIM LICENSE applies to Vimball.vim, and Vimball.txt
 "            (see |copyright|) except use "Vimball" instead of "Vim".
 "            No warranty, express or implied.
@@ -16,18 +16,18 @@
 if &cp || exists("g:loaded_vimballPlugin")
  finish
 endif
-let g:loaded_vimballPlugin = "v29"
+let g:loaded_vimballPlugin = "v30"
 let s:keepcpo              = &cpo
 set cpo&vim
 
 " ------------------------------------------------------------------------------
 " Public Interface: {{{1
 com! -ra   -complete=file -na=+ -bang MkVimball call vimball#MkVimball(<line1>,<line2>,<bang>0,<f-args>)
-com! -na=? -complete=dir  UseVimball  call vimball#Vimball(1,<f-args>)
-com! -na=0                VimballList call vimball#Vimball(0)
-com! -na=* -complete=dir  RmVimball   call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings()
-au BufEnter  *.vba.gz,*.vba.bz2,*.vba.zip call vimball#Decompress(expand("<amatch>"))
-au BufEnter  *.vba setlocal ff=unix noma bt=nofile fmr=[[[,]]] fdm=marker|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")
+com! -na=? -complete=dir  UseVimball			call vimball#Vimball(1,<f-args>)
+com! -na=0                VimballList			call vimball#Vimball(0)
+com! -na=* -complete=dir  RmVimball				call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings()
+au SourceCmd  *.vba.gz,*.vba.bz2,*.vba.zip		call vimball#Decompress(expand("<amatch>"))|call vimball#Vimball(1)
+au BufEnter  *.vba,*.vba.gz,*.vba.bz2,*.vba.zip	setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'| setlocal ff=unix|endif|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")
 
 " =====================================================================
 " Restoration And Modelines: {{{1
--- 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:	2008 Aug 09
+" Last change:	2009 Dec 24
 
 " 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
@@ -318,30 +318,31 @@ else
     set ft=scheme
 
   " Git output
-  elseif s:line1 =~ '^\(commit\|tree\|object\) \x\{40\}$\|^tag \S\+$'
+  elseif s:line1 =~ '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$'
     set ft=git
 
   " CVS diff
   else
-    let lnum = 1
-    while getline(lnum) =~ "^? " && lnum < line("$")
-      let lnum = lnum + 1
+    let s:lnum = 1
+    while getline(s:lnum) =~ "^? " && s:lnum < line("$")
+      let s:lnum += 1
     endwhile
-    if getline(lnum) =~ '^Index:\s\+\f\+$'
+    if getline(s:lnum) =~ '^Index:\s\+\f\+$'
       set ft=diff
 
       " locale input files: Formal Definitions of Cultural Conventions
       " filename must be like en_US, fr_FR@euro or en_US.UTF-8
     elseif expand("%") =~ '\a\a_\a\a\($\|[.@]\)\|i18n$\|POSIX$\|translit_'
-      let lnum = 1
-      while lnum < 100 && lnum < line("$")
-	if getline(lnum) =~ '^LC_\(IDENTIFICATION\|CTYPE\|COLLATE\|MONETARY\|NUMERIC\|TIME\|MESSAGES\|PAPER\|TELEPHONE\|MEASUREMENT\|NAME\|ADDRESS\)$'
+      let s:lnum = 1
+      while s:lnum < 100 && s:lnum < line("$")
+	if getline(s:lnum) =~ '^LC_\(IDENTIFICATION\|CTYPE\|COLLATE\|MONETARY\|NUMERIC\|TIME\|MESSAGES\|PAPER\|TELEPHONE\|MEASUREMENT\|NAME\|ADDRESS\)$'
 	  setf fdcc
 	  break
 	endif
-	let lnum = lnum + 1
+	let s:lnum += 1
       endwhile
     endif
+    unlet s:lnum
 
   endif
 
--- a/runtime/spell/README.txt
+++ b/runtime/spell/README.txt
@@ -72,7 +72,7 @@ 2. Tweak the .aff and .dic files to gene
    change too much, the OpenOffice people are not stupid.  However, you may
    want to remove obvious mistakes.  And remove single-letter words that
    aren't really words, they mess up the suggestions (English has this
-   problem).  You can use the "fixdup" Vim script to find duplicate words.
+   problem).  You can use the "fixdup.vim" Vim script to find duplicate words.
 
 3. Make the diff file.  "aap diff" will do this for you.  If a diff would be
    too big you might consider writing a Vim script to do systematic changes.
new file mode 100644
--- /dev/null
+++ b/runtime/spell/fixdup.vim
@@ -0,0 +1,27 @@
+" Vim script to fix duplicate words in a .dic file  vim: set ft=vim:
+"
+" Usage: Edit the .dic file and source this script.
+
+let deleted = 0
+
+" Start below the word count.
+let lnum = 2
+while lnum <= line('$')
+  let word = getline(lnum)
+  if word !~ '/'
+    if search('^' . word . '/', 'w') != 0
+      let deleted += 1
+      exe lnum . "d"
+      continue		" don't increment lnum, it's already at the next word
+    endif
+  endif
+  let lnum += 1
+endwhile
+
+if deleted == 0
+  echomsg "No duplicate words found"
+elseif deleted == 1
+  echomsg "Deleted 1 duplicate word"
+else
+  echomsg printf("Deleted %d duplicate words", deleted)
+endif
--- a/runtime/syntax/2html.vim
+++ b/runtime/syntax/2html.vim
@@ -1,13 +1,18 @@
 " Vim syntax support file
 " Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2008 Jul 17
+" Last Change: 2009 Jul 14
 "	       (modified by David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>)
 "	       (XHTML support by Panagiotis Issaris <takis@lumumba.luc.ac.be>)
 "	       (made w3 compliant by Edd Barrett <vext01@gmail.com>)
 "	       (added html_font. Edd Barrett <vext01@gmail.com>)
+"	       (dynamic folding by Ben Fritz <fritzophrenic@gmail.com>)
 
 " Transform a file into HTML, using the current syntax highlighting.
 
+" this file uses line continuations
+let s:cpo_sav = &cpo
+set cpo-=C
+
 " Number lines when explicitely requested or when `number' is set
 if exists("html_number_lines")
   let s:numblines = html_number_lines
@@ -22,6 +27,37 @@ else
   let s:htmlfont = "monospace"
 endif
 
+" make copies of the user-defined settings that we may overrule
+if exists("html_dynamic_folds")
+  let s:html_dynamic_folds = 1
+endif
+if exists("html_hover_unfold")
+  let s:html_hover_unfold = 1
+endif
+if exists("html_use_css")
+  let s:html_use_css = 1
+endif
+
+" hover opening implies dynamic folding
+if exists("s:html_hover_unfold")
+  let s:html_dynamic_folds = 1
+endif
+
+" dynamic folding with no foldcolumn implies hover opens
+if exists("s:html_dynamic_folds") && exists("html_no_foldcolumn")
+  let s:html_hover_unfold = 1
+endif
+
+" ignore folding overrides dynamic folding
+if exists("html_ignore_folding") && exists("s:html_dynamic_folds")
+  unlet s:html_dynamic_folds
+endif
+
+" dynamic folding implies css
+if exists("s:html_dynamic_folds")
+  let s:html_use_css = 1
+endif
+
 " When not in gui we can only guess the colors.
 if has("gui_running")
   let s:whatterm = "gui"
@@ -62,7 +98,7 @@ else
   endfun
 endif
 
-if !exists("html_use_css")
+if !exists("s:html_use_css")
   " Return opening HTML tag for given highlight id
   function! s:HtmlOpening(id)
     let a = ""
@@ -150,6 +186,26 @@ function! s:CSS1(id)
   return a
 endfun
 
+if exists("s:html_dynamic_folds")
+
+  " compares two folds as stored in our list of folds
+  " A fold is "less" than another if it starts at an earlier line number,
+  " or ends at a later line number, ties broken by fold level
+  function! s:FoldCompare(f1, f2)
+    if a:f1.firstline != a:f2.firstline
+      " put it before if it starts earlier
+      return a:f1.firstline - a:f2.firstline
+    elseif a:f1.lastline != a:f2.lastline
+      " put it before if it ends later
+      return a:f2.lastline - a:f1.lastline
+    else
+      " if folds begin and end on the same lines, put lowest fold level first
+      return a:f1.level - a:f2.level
+    endif
+  endfunction
+
+endif
+
 " Figure out proper MIME charset from the 'encoding' option.
 if exists("html_use_encoding")
   let s:html_encoding = html_use_encoding
@@ -223,13 +279,13 @@ else
   let s:tag_close = '>'
 endif
 
-" Cache html_no_pre incase we have to turn it on for non-css mode
+" Cache html_no_pre in case we have to turn it on for non-css mode
 if exists("html_no_pre")
   let s:old_html_no_pre = html_no_pre
 endif
 
-if !exists("html_use_css")
-  " Cant put font tags in <pre>
+if !exists("s:html_use_css")
+  " Can't put font tags in <pre>
   let html_no_pre=1
 endif
 
@@ -251,9 +307,86 @@ if s:html_encoding != ""
   exe "normal! a<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:html_encoding . '"' . s:tag_close . "\n\e"
 endif
 
-if exists("html_use_css")
-  exe "normal! a<style type=\"text/css\">\n<!--\n-->\n</style>\n\e"
+if exists("s:html_use_css")
+  if exists("s:html_dynamic_folds")
+    if exists("s:html_hover_unfold")
+      " if we are doing hover_unfold, use css 2 with css 1 fallback for IE6
+      exe "normal! a".
+	  \ "<style type=\"text/css\">\n<!--\n".
+	  \ ".FoldColumn { text-decoration: none; white-space: pre; }\n\n".
+	  \ "body * { margin: 0; padding: 0; }\n".
+	  \ "\n".
+	  \ ".open-fold   > .Folded { display: none;  }\n".
+	  \ ".open-fold   > .fulltext { display: inline; }\n".
+	  \ ".closed-fold > .fulltext { display: none;  }\n".
+	  \ ".closed-fold > .Folded { display: inline; }\n".
+	  \ "\n".
+	  \ ".open-fold   > .toggle-open   { display: none;   }\n".
+	  \ ".open-fold   > .toggle-closed { display: inline; }\n".
+	  \ ".closed-fold > .toggle-open   { display: inline; }\n".
+	  \ ".closed-fold > .toggle-closed { display: none;   }\n"
+      exe "normal! a\n/* opening a fold while hovering won't be supported by IE6 and other\n".
+	  \ "similar browsers, but it should fail gracefully. */\n".
+	  \ ".closed-fold:hover > .fulltext { display: inline; }\n".
+	  \ ".closed-fold:hover > .toggle-filler { display: none; }\n".
+	  \ ".closed-fold:hover > .Folded { display: none; }\n"
+      exe "normal! a-->\n</style>\n"
+      exe "normal! a<!--[if lt IE 7]>".
+	  \ "<style type=\"text/css\">\n".
+	  \ ".open-fold   .Folded      { display: none; }\n".
+	  \ ".open-fold   .fulltext      { display: inline; }\n".
+	  \ ".open-fold   .toggle-open   { display: none; }\n".
+	  \ ".closed-fold .toggle-closed { display: inline; }\n".
+	  \ "\n".
+	  \ ".closed-fold .fulltext      { display: none; }\n".
+	  \ ".closed-fold .Folded      { display: inline; }\n".
+	  \ ".closed-fold .toggle-open   { display: inline; }\n".
+	  \ ".closed-fold .toggle-closed { display: none; }\n".
+	  \ "</style>\n".
+	  \ "<![endif]-->\n"
+    else
+      " if we aren't doing hover_unfold, use CSS 1 only
+      exe "normal! a<style type=\"text/css\">\n<!--\n".
+	    \ ".FoldColumn { text-decoration: none; white-space: pre; }\n\n".
+	    \ ".open-fold   .Folded      { display: none; }\n".
+	    \ ".open-fold   .fulltext      { display: inline; }\n".
+	    \ ".open-fold   .toggle-open   { display: none; }\n".
+	    \ ".closed-fold .toggle-closed { display: inline; }\n".
+	    \ "\n".
+	    \ ".closed-fold .fulltext      { display: none; }\n".
+	    \ ".closed-fold .Folded      { display: inline; }\n".
+	    \ ".closed-fold .toggle-open   { display: inline; }\n".
+	    \ ".closed-fold .toggle-closed { display: none; }\n".
+	    \ "-->\n</style>\n"
+    endif
+  else
+    " if we aren't doing any dynamic folding, no need for any special rules
+    exe "normal! a<style type=\"text/css\">\n<!--\n-->\n</style>\n\e"
+  endif
 endif
+
+" insert javascript to toggle folds open and closed
+if exists("s:html_dynamic_folds")
+  exe "normal! a\n".
+	\ "<script type='text/javascript'>\n".
+	\ "<!--\n".
+	\ "function toggleFold(objID)\n".
+	\ "{\n".
+	\ "  var fold;\n".
+	\ "  fold = document.getElementById(objID);\n".
+	\ "  if(fold.className == 'closed-fold')\n".
+	\ "  {\n".
+	\ "    fold.className = 'open-fold';\n".
+	\ "  }\n".
+	\ "  else if (fold.className == 'open-fold')\n".
+	\ "  {\n".
+	\ "    fold.className = 'closed-fold';\n".
+	\ "  }\n".
+	\ "}\n".
+	\ "-->\n".
+	\ "</script>\n\e"
+endif
+
 if exists("html_no_pre")
   exe "normal! a</head>\n<body>\n\e"
 else
@@ -265,7 +398,81 @@ exe s:orgwin . "wincmd w"
 " List of all id's
 let s:idlist = ","
 
-" Loop over all lines in the original text.
+" First do some preprocessing for dynamic folding. Do this for the entire file
+" so we don't accidentally start within a closed fold or something.
+let s:allfolds = []
+
+if exists("s:html_dynamic_folds")
+  let s:lnum = 1
+  let s:end = line('$')
+  " save the fold text and set it to the default so we can find fold levels
+  let s:foldtext_save = &foldtext
+  set foldtext&
+
+  " we will set the foldcolumn in the html to the greater of the maximum fold
+  " level and the current foldcolumn setting
+  let s:foldcolumn = &foldcolumn
+
+  " get all info needed to describe currently closed folds
+  while s:lnum < s:end
+    if foldclosed(s:lnum) == s:lnum
+      " default fold text has '+-' and then a number of dashes equal to fold
+      " level, so subtract 2 from index of first non-dash after the dashes
+      " in order to get the fold level of the current fold
+      let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
+      if s:level+1 > s:foldcolumn
+	let s:foldcolumn = s:level+1
+      endif
+      " store fold info for later use
+      let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
+      call add(s:allfolds, s:newfold)
+      " open the fold so we can find any contained folds
+      execute s:lnum."foldopen"
+    else
+      let s:lnum = s:lnum + 1
+    endif
+  endwhile
+
+  " close all folds to get info for originally open folds
+  silent! %foldclose!
+  let s:lnum = 1
+
+  " the originally open folds will be all folds we encounter that aren't
+  " already in the list of closed folds
+  while s:lnum < s:end
+    if foldclosed(s:lnum) == s:lnum
+      " default fold text has '+-' and then a number of dashes equal to fold
+      " level, so subtract 2 from index of first non-dash after the dashes
+      " in order to get the fold level of the current fold
+      let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
+      if s:level+1 > s:foldcolumn
+	let s:foldcolumn = s:level+1
+      endif
+      let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
+      " only add the fold if we don't already have it
+      if empty(s:allfolds) || index(s:allfolds, s:newfold) == -1
+	let s:newfold.type = "open-fold"
+	call add(s:allfolds, s:newfold)
+      endif
+      " open the fold so we can find any contained folds
+      execute s:lnum."foldopen"
+    else
+      let s:lnum = s:lnum + 1
+    endif
+  endwhile
+
+  " sort the folds so that we only ever need to look at the first item in the
+  " list of folds
+  call sort(s:allfolds, "s:FoldCompare")
+
+  let &foldtext = s:foldtext_save
+  unlet s:foldtext_save
+
+  " close all folds again so we can get the fold text as we go
+  silent! %foldclose! 
+endif
+
+" Now loop over all lines in the original text to convert to html.
 " Use html_start_line and html_end_line if they are set.
 if exists("html_start_line")
   let s:lnum = html_start_line
@@ -284,6 +491,15 @@ else
   let s:end = line("$")
 endif
 
+" stack to keep track of all the folds containing the current line
+let s:foldstack = []
+
+if s:numblines
+  let s:margin = strlen(s:end) + 1
+else
+  let s:margin = 0
+endif
+
 if has('folding') && !exists('html_ignore_folding')
   let s:foldfillchar = &fillchars[matchend(&fillchars, 'fold:')]
   if s:foldfillchar == ''
@@ -295,6 +511,7 @@ if s:difffillchar == ''
   let s:difffillchar = '-'
 endif
 
+let s:foldId = 0
 
 while s:lnum <= s:end
 
@@ -303,12 +520,7 @@ while s:lnum <= s:end
   if s:filler > 0
     let s:n = s:filler
     while s:n > 0
-      if s:numblines
-	" Indent if line numbering is on
-	let s:new = repeat(s:LeadingSpace, strlen(s:end) + 1) . repeat(s:difffillchar, 3)
-      else
-	let s:new = repeat(s:difffillchar, 3)
-      endif
+      let s:new = repeat(s:difffillchar, 3)
 
       if s:n > 2 && s:n < s:filler && !exists("html_whole_filler")
 	let s:new = s:new . " " . s:filler . " inserted lines "
@@ -317,10 +529,16 @@ while s:lnum <= s:end
 
       if !exists("html_no_pre")
 	" HTML line wrapping is off--go ahead and fill to the margin
-	let s:new = s:new . repeat(s:difffillchar, &columns - strlen(s:new))
+	let s:new = s:new . repeat(s:difffillchar, &columns - strlen(s:new) - s:margin)
+      else
+	let s:new = s:new . repeat(s:difffillchar, 3)
       endif
 
       let s:new = s:HtmlFormat(s:new, "DiffDelete")
+      if s:numblines
+	" Indent if line numbering is on; must be after escaping.
+	let s:new = repeat(s:LeadingSpace, s:margin) . s:new
+      endif
       exe s:newwin . "wincmd w"
       exe "normal! a" . s:new . s:HtmlEndline . "\n\e"
       exe s:orgwin . "wincmd w"
@@ -333,16 +551,18 @@ while s:lnum <= s:end
 
   " Start the line with the line number.
   if s:numblines
-    let s:new = repeat(' ', strlen(s:end) - strlen(s:lnum)) . s:lnum . ' '
+    let s:numcol = repeat(' ', s:margin - 1 - strlen(s:lnum)) . s:lnum . ' '
   else
-    let s:new = ""
+    let s:numcol = ""
   endif
 
-  if has('folding') && !exists('html_ignore_folding') && foldclosed(s:lnum) > -1
+  let s:new = ""
+
+  if has('folding') && !exists('html_ignore_folding') && foldclosed(s:lnum) > -1 && !exists('s:html_dynamic_folds')
     "
-    " This is the beginning of a folded block
+    " This is the beginning of a folded block (with no dynamic folding)
     "
-    let s:new = s:new . foldtextresult(s:lnum)
+    let s:new = s:numcol . foldtextresult(s:lnum)
     if !exists("html_no_pre")
       " HTML line wrapping is off--go ahead and fill to the margin
       let s:new = s:new . repeat(s:foldfillchar, &columns - strlen(s:new))
@@ -355,14 +575,96 @@ while s:lnum <= s:end
 
   else
     "
-    " A line that is not folded.
+    " A line that is not folded, or doing dynamic folding.
     "
     let s:line = getline(s:lnum)
-
     let s:len = strlen(s:line)
 
+    if exists("s:html_dynamic_folds")
+      " First insert a closing for any open folds that end on this line
+      while !empty(s:foldstack) && get(s:foldstack,0).lastline == s:lnum-1
+	let s:new = s:new."</span></span>"
+	call remove(s:foldstack, 0)
+      endwhile
+
+      " Now insert an opening any new folds that start on this line
+      let s:firstfold = 1
+      while !empty(s:allfolds) && get(s:allfolds,0).firstline == s:lnum
+	let s:foldId = s:foldId + 1
+	let s:new = s:new . "<span id='fold".s:foldId."' class='".s:allfolds[0].type."'>"
+
+	" Unless disabled, add a fold column for the opening line of a fold.
+	"
+	" Note that dynamic folds require using css so we just use css to take
+	" care of the leading spaces rather than using &nbsp; in the case of
+	" html_no_pre to make it easier
+	if !exists("html_no_foldcolumn")
+	  " add fold column that can open the new fold
+	  if s:allfolds[0].level > 1 && s:firstfold
+	    let s:new = s:new . "<a class='toggle-open FoldColumn' href='javascript:toggleFold(\"fold".s:foldstack[0].id."\")'>"
+	    let s:new = s:new . repeat('|', s:allfolds[0].level - 1) . "</a>"
+	  endif
+	  let s:new = s:new . "<a class='toggle-open FoldColumn' href='javascript:toggleFold(\"fold".s:foldId."\")'>+</a>"
+	  let s:new = s:new . "<a class='toggle-open "
+	  " If this is not the last fold we're opening on this line, we need
+	  " to keep the filler spaces hidden if the fold is opened by mouse
+	  " hover. If it is the last fold to open in the line, we shouldn't hide
+	  " them, so don't apply the toggle-filler class.
+	  if get(s:allfolds, 1, {'firstline': 0}).firstline == s:lnum
+	    let s:new = s:new . "toggle-filler "
+	  endif
+	  let s:new = s:new . "FoldColumn' href='javascript:toggleFold(\"fold".s:foldId."\")'>"
+	  let s:new = s:new . repeat(" ", s:foldcolumn - s:allfolds[0].level) . "</a>"
+
+	  " add fold column that can close the new fold
+	  let s:new = s:new . "<a class='toggle-closed FoldColumn' href='javascript:toggleFold(\"fold".s:foldId."\")'>"
+	  if s:firstfold
+	    let s:new = s:new . repeat('|', s:allfolds[0].level - 1)
+	  endif
+	  let s:new = s:new . "-"
+	  " only add spaces if we aren't opening another fold on the same line
+	  if get(s:allfolds, 1, {'firstline': 0}).firstline != s:lnum
+	    let s:new = s:new . repeat(" ", s:foldcolumn - s:allfolds[0].level)
+	  endif
+	  let s:new = s:new . "</a>"
+	  let s:firstfold = 0
+	endif
+
+	" add fold text, moving the span ending to the next line so collapsing
+	" of folds works correctly
+	let s:new = s:new . substitute(s:HtmlFormat(s:numcol . foldtextresult(s:lnum), "Folded"), '</span>', s:HtmlEndline.'\r\0', '')
+	let s:new = s:new . "<span class='fulltext'>"
+
+	" open the fold now that we have the fold text to allow retrieval of
+	" fold text for subsequent folds
+	execute s:lnum."foldopen"
+	call insert(s:foldstack, remove(s:allfolds,0))
+	let s:foldstack[0].id = s:foldId
+      endwhile
+
+      " Unless disabled, add a fold column for other lines.
+      "
+      " Note that dynamic folds require using css so we just use css to take
+      " care of the leading spaces rather than using &nbsp; in the case of
+      " html_no_pre to make it easier
+      if !exists("html_no_foldcolumn")
+	if empty(s:foldstack)
+	  " add the empty foldcolumn for unfolded lines
+	  let s:new = s:new . s:HtmlFormat(repeat(' ', s:foldcolumn), "FoldColumn")
+	else
+	  " add the fold column for folds not on the opening line
+	  if get(s:foldstack, 0).firstline < s:lnum
+	    let s:new = s:new . "<a class='FoldColumn' href='javascript:toggleFold(\"fold".s:foldstack[0].id."\")'>"
+	    let s:new = s:new . repeat('|', s:foldstack[0].level)
+	    let s:new = s:new . repeat(' ', s:foldcolumn - s:foldstack[0].level) . "</a>"
+	  endif
+	endif
+      endif
+    endif
+
+    " Now continue with the unfolded line text
     if s:numblines
-      let s:new = s:HtmlFormat(s:new, "lnr")
+      let s:new = s:new . s:HtmlFormat(s:numcol, "lnr")
     endif
 
     " Get the diff attribute, if any.
@@ -380,7 +682,7 @@ while s:lnum <= s:end
 	while s:col <= s:len && s:id == diff_hlID(s:lnum, s:col) | let s:col = s:col + 1 | endwhile
 	if s:len < &columns && !exists("html_no_pre")
 	  " Add spaces at the end to mark the changed line.
-	  let s:line = s:line . repeat(' ', &columns - s:len)
+	  let s:line = s:line . repeat(' ', &columns - virtcol([s:lnum, s:len]) - s:margin)
 	  let s:len = &columns
 	endif
       else
@@ -393,11 +695,27 @@ while s:lnum <= s:end
 
       " Expand tabs
       let s:expandedtab = strpart(s:line, s:startcol - 1, s:col - s:startcol)
-      let idx = stridx(s:expandedtab, "\t")
-      while idx >= 0
-	let i = &ts - ((idx + s:startcol - 1) % &ts)
-	let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', i), '')
-	let idx = stridx(s:expandedtab, "\t")
+      let s:offset = 0
+      let s:idx = stridx(s:expandedtab, "\t")
+      while s:idx >= 0
+	if has("multi_byte_encoding")
+	  if s:startcol + s:idx == 1
+	    let s:i = &ts
+	  else
+	    if s:idx == 0
+	      let s:prevc = matchstr(s:line, '.\%' . (s:startcol + s:idx + s:offset) . 'c')
+	    else
+	      let s:prevc = matchstr(s:expandedtab, '.\%' . (s:idx + 1) . 'c')
+	    endif
+	    let s:vcol = virtcol([s:lnum, s:startcol + s:idx + s:offset - len(s:prevc)])
+	    let s:i = &ts - (s:vcol % &ts)
+	  endif
+	  let s:offset -= s:i - 1
+	else
+	  let s:i = &ts - ((s:idx + s:startcol - 1) % &ts)
+	endif
+	let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', s:i), '')
+	let s:idx = stridx(s:expandedtab, "\t")
       endwhile
 
       " Output the text with the same synID, with class set to {s:id_name}
@@ -415,8 +733,22 @@ endwhile
 " Finish with the last line
 exe s:newwin . "wincmd w"
 
+if exists("s:html_dynamic_folds")
+  " finish off any open folds
+  while !empty(s:foldstack)
+    exe "normal! a</span></span>"
+    call remove(s:foldstack, 0)
+  endwhile
+
+  " add fold column to the style list if not already there
+  let s:id = hlID('FoldColumn')
+  if stridx(s:idlist, "," . s:id . ",") == -1
+    let s:idlist = s:idlist . s:id . ","
+  endif
+endif
+
 " Close off the font tag that encapsulates the whole <body>
-if !exists("html_use_css")
+if !exists("s:html_use_css")
   exe "normal! a</font>\e"
 endif
 
@@ -428,7 +760,7 @@ endif
 
 
 " Now, when we finally know which, we define the colors and styles
-if exists("html_use_css")
+if exists("s:html_use_css")
   1;/<style type="text/+1
 endif
 
@@ -445,7 +777,7 @@ endif
 " Normal/global attributes
 " For Netscape 4, set <body> attributes too, though, strictly speaking, it's
 " incorrect.
-if exists("html_use_css")
+if exists("s:html_use_css")
   if exists("html_no_pre")
     execute "normal! A\nbody { color: " . s:fgc . "; background-color: " . s:bgc . "; font-family: ". s:htmlfont ."; }\e"
   else
@@ -455,12 +787,12 @@ if exists("html_use_css")
     execute "normal! ^cwbody\e"
   endif
 else
-    execute '%s:<body>:<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"><font face="'. s:htmlfont .'">'
+  execute '%s:<body>:<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"><font face="'. s:htmlfont .'">'
 endif
 
 " Line numbering attributes
 if s:numblines
-  if exists("html_use_css")
+  if exists("s:html_use_css")
     execute "normal! A\n.lnr { " . s:CSS1(hlID("LineNr")) . "}\e"
   else
     execute '%s+^<span class="lnr">\([^<]*\)</span>+' . s:HtmlOpening(hlID("LineNr")) . '\1' . s:HtmlClosing(hlID("LineNr")) . '+g'
@@ -479,14 +811,14 @@ while s:idlist != ""
   " If the class has some attributes, export the style, otherwise DELETE all
   " its occurences to make the HTML shorter
   if s:attr != ""
-    if exists("html_use_css")
+    if exists("s:html_use_css")
       execute "normal! A\n." . s:id_name . " { " . s:attr . "}"
     else
       execute '%s+<span class="' . s:id_name . '">\([^<]*\)</span>+' . s:HtmlOpening(s:id) . '\1' . s:HtmlClosing(s:id) . '+g'
     endif
   else
     execute '%s+<span class="' . s:id_name . '">\([^<]*\)</span>+\1+ge'
-    if exists("html_use_css")
+    if exists("s:html_use_css")
       1;/<style type="text/+1
     endif
   endif
@@ -531,16 +863,28 @@ endif
 " Save a little bit of memory (worth doing?)
 unlet s:htmlfont
 unlet s:old_et s:old_paste s:old_icon s:old_report s:old_title s:old_search
-unlet s:whatterm s:idlist s:lnum s:end s:fgc s:bgc s:old_magic
+unlet s:whatterm s:idlist s:lnum s:end s:margin s:fgc s:bgc s:old_magic
 unlet! s:col s:id s:attr s:len s:line s:new s:expandedtab s:numblines
-unlet s:orgwin s:newwin s:orgbufnr
+unlet! s:orgwin s:newwin s:orgbufnr s:idx s:i s:offset
 if !v:profiling
   delfunc s:HtmlColor
   delfunc s:HtmlFormat
   delfunc s:CSS1
-  if !exists("html_use_css")
+  if !exists("s:html_use_css")
     delfunc s:HtmlOpening
     delfunc s:HtmlClosing
   endif
 endif
-silent! unlet s:diffattr s:difffillchar s:foldfillchar s:HtmlSpace s:LeadingSpace s:HtmlEndline
+silent! unlet s:diffattr s:difffillchar s:foldfillchar s:HtmlSpace s:LeadingSpace s:HtmlEndline s:firstfold s:foldcolumn
+unlet s:foldstack s:allfolds s:foldId s:numcol
+
+if exists("s:html_dynamic_folds")
+  delfunc s:FoldCompare
+endif
+
+silent! unlet s:html_dynamic_folds s:html_hover_unfold s:html_use_css
+
+let &cpo = s:cpo_sav
+unlet s:cpo_sav
+
+" vim: noet sw=2 sts=2
--- a/runtime/syntax/ada.vim
+++ b/runtime/syntax/ada.vim
@@ -1,16 +1,16 @@
 "----------------------------------------------------------------------------
 "  Description: Vim Ada syntax file
 "     Language: Ada (2005)
-"	   $Id$
+"	   $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $
 "    Copyright: Copyright (C) 2006 Martin Krischik
 "   Maintainer: Martin Krischik
 "		David A. Wheeler <dwheeler@dwheeler.com>
 "		Simon Bradley <simon.bradley@pitechnology.com>
 " Contributors: Preben Randhol.
-"      $Author$
-"	 $Date$
+"      $Author: krischik $
+"	 $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
 "      Version: 4.6
-"    $Revision$
+"    $Revision: 887 $
 "     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/syntax/ada.vim $
 "		http://www.dwheeler.com/vim
 "      History: 24.05.2006 MK Unified Headers
--- a/runtime/syntax/ant.vim
+++ b/runtime/syntax/ant.vim
@@ -3,7 +3,7 @@
 " Maintainer:	Johannes Zellner <johannes@zellner.org>
 " Last Change:	Tue Apr 27 13:05:59 CEST 2004
 " Filenames:	build.xml
-" $Id$
+" $Id: ant.vim,v 1.1 2004/06/13 18:13:18 vimboss Exp $
 
 " Quit when a syntax file was already loaded
 if exists("b:current_syntax")
--- a/runtime/syntax/aspvbs.vim
+++ b/runtime/syntax/aspvbs.vim
@@ -4,7 +4,7 @@
 " URL:		http://tritarget.com/pub/vim/syntax/aspvbs.vim (broken)
 " Last Change:	2006 Jun 19
 " 		by Dan Casey
-" Version:	$Revision$
+" Version:	$Revision: 1.3 $
 " Thanks to Jay-Jay <vim@jay-jay.net> for a syntax sync hack, hungarian
 " notation, and extra highlighting.
 " Thanks to patrick dehne <patrick@steidle.net> for the folding code.
--- a/runtime/syntax/bindzone.vim
+++ b/runtime/syntax/bindzone.vim
@@ -7,7 +7,7 @@
 " Based on an earlier version by Вячеслав Горбанев (Slava Gorbanev), with
 " heavy modifications.
 " 
-" $Id$
+" $Id: bindzone.vim,v 1.2 2006/04/20 22:06:21 vimboss Exp $
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/bst.vim
+++ b/runtime/syntax/bst.vim
@@ -2,7 +2,7 @@
 " Language:     BibTeX Bibliography Style
 " Maintainer:   Tim Pope <vimNOSPAM@tpope.info>
 " Filenames:    *.bst
-" $Id$
+" $Id: bst.vim,v 1.2 2007/05/05 18:24:42 vimboss Exp $
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/bzr.vim
+++ b/runtime/syntax/bzr.vim
@@ -2,9 +2,14 @@
 " Language:     Bazaar (bzr) commit file
 " Maintainer:   Dmitry Vasiliev <dima at hlabs dot spb dot ru>
 " URL:          http://www.hlabs.spb.ru/vim/bzr.vim
-" Revision:     $Id$
+" Last Change:  2009-01-27
 " Filenames:    bzr_log.*
-" Version:      1.1
+" Version:      1.2.1
+"
+" Thanks:
+"
+"    Gioele Barabucci
+"       for idea of diff highlighting
 
 " For version 5.x: Clear all syntax items.
 " For version 6.x: Quit when a syntax file was already loaded.
@@ -14,13 +19,21 @@ elseif exists("b:current_syntax")
   finish
 endif
 
-syn region bzrRegion   start="^-\{14} This line and the following will be ignored -\{14}$" end="\%$" contains=ALL contains=@NoSpell
+if exists("bzr_highlight_diff")
+  syn include @Diff syntax/diff.vim
+endif
+
 syn match bzrRemoved   "^removed:$" contained
 syn match bzrAdded     "^added:$" contained
 syn match bzrRenamed   "^renamed:$" contained
 syn match bzrModified  "^modified:$" contained
 syn match bzrUnchanged "^unchanged:$" contained
 syn match bzrUnknown   "^unknown:$" contained
+syn cluster Statuses contains=bzrRemoved,bzrAdded,bzrRenamed,bzrModified,bzrUnchanged,bzrUnknown
+if exists("bzr_highlight_diff")
+  syn cluster Statuses add=@Diff
+endif
+syn region bzrRegion   start="^-\{14} This line and the following will be ignored -\{14}$" end="\%$" contains=@NoSpell,@Statuses
 
 " Synchronization.
 syn sync clear
@@ -37,7 +50,6 @@ if version >= 508 || !exists("did_bzr_sy
     command -nargs=+ HiLink hi def link <args>
   endif
 
-  HiLink bzrRegion     Comment
   HiLink bzrRemoved    Constant
   HiLink bzrAdded      Identifier
   HiLink bzrModified   Special
--- a/runtime/syntax/c.vim
+++ b/runtime/syntax/c.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	C
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2008 Mar 19
+" Last Change:	2009 Nov 17
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
@@ -16,8 +16,13 @@ syn keyword	cRepeat		while for do
 
 syn keyword	cTodo		contained TODO FIXME XXX
 
+" It's easy to accidentally add a space after a backslash that was intended
+" for line continuation.  Some compilers allow it, which makes it
+" unpredicatable and should be avoided.
+syn match	cBadContinuation contained "\\\s\+$"
+
 " cCommentGroup allows adding matches for special things in comments
-syn cluster	cCommentGroup	contains=cTodo
+syn cluster	cCommentGroup	contains=cTodo,cBadContinuation
 
 " String and Character constants
 " Highlight special characters (those which have a backslash) differently
@@ -265,7 +270,7 @@ if !exists("c_no_c99") " ISO C99
 endif
 
 " Accept %: for # (C99)
-syn region	cPreCondit	start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=cComment,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
+syn region	cPreCondit	start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$"  contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
 syn match	cPreCondit	display "^\s*\(%:\|#\)\s*\(else\|endif\)\>"
 if !exists("c_no_if0")
   if !exists("c_no_if0_fold")
@@ -281,7 +286,7 @@ syn match	cIncluded	display contained "<
 syn match	cInclude	display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded
 "syn match cLineSkip	"\\$"
 syn cluster	cPreProcGroup	contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti
-syn region	cDefine		start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 keepend contains=ALLBUT,@cPreProcGroup,@Spell
+syn region	cDefine		start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
 syn region	cPreProc	start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
 
 " Highlight User Labels
@@ -359,6 +364,7 @@ hi def link cString		String
 hi def link cComment		Comment
 hi def link cSpecial		SpecialChar
 hi def link cTodo		Todo
+hi def link cBadContinuation	Error
 hi def link cCppSkip		cCppOut
 hi def link cCppOut2		cCppOut
 hi def link cCppOut		Comment
--- a/runtime/syntax/catalog.vim
+++ b/runtime/syntax/catalog.vim
@@ -3,7 +3,7 @@
 " Maintainer:	Johannes Zellner <johannes@zellner.org>
 " Last Change:	Fr, 04 Nov 2005 12:46:45 CET
 " Filenames:	/etc/sgml.catalog
-" $Id$
+" $Id: catalog.vim,v 1.2 2005/11/23 21:11:10 vimboss Exp $
 
 " Quit when a syntax file was already loaded
 if exists("b:current_syntax")
--- a/runtime/syntax/cl.vim
+++ b/runtime/syntax/cl.vim
@@ -3,7 +3,7 @@
 " Filename extensions: *.ent, *.eni
 " Maintainer:	Philip Uren <philuSPAX@ieee.org> - Remove SPAX spam block
 " Last update:	Wed Apr 12 08:47:18 EST 2006
-" $Id$
+" $Id: cl.vim,v 1.3 2006/04/12 21:43:28 vimboss Exp $
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/cmake.vim
+++ b/runtime/syntax/cmake.vim
@@ -1,10 +1,10 @@
 " =============================================================================
 "
 "   Program:   CMake - Cross-Platform Makefile Generator
-"   Module:    $RCSfile$
+"   Module:    $RCSfile: cmake-syntax.vim,v $
 "   Language:  VIM
-"   Date:      $Date$
-"   Version:   $Revision$
+"   Date:      $Date: 2006/09/23 21:09:08 $
+"   Version:   $Revision: 1.6 $
 "
 " =============================================================================
 
@@ -12,8 +12,8 @@
 " Language:     CMake
 " Author:       Andy Cedilnik <andy.cedilnik@kitware.com>
 " Maintainer:   Andy Cedilnik <andy.cedilnik@kitware.com>
-" Last Change:  $Date$
-" Version:      $Revision$
+" Last Change:  $Date: 2006/09/23 21:09:08 $
+" Version:      $Revision: 1.6 $
 "
 " Licence:      The CMake license applies to this file. See
 "               http://www.cmake.org/HTML/Copyright.html
--- a/runtime/syntax/cobol.vim
+++ b/runtime/syntax/cobol.vim
@@ -4,7 +4,7 @@
 "     (formerly Davyd Ondrejko <vondraco@columbus.rr.com>)
 "     (formerly Sitaram Chamarty <sitaram@diac.com> and
 "		    James Mitchell <james_mitchell@acm.org>)
-" $Id$
+" $Id: cobol.vim,v 1.2 2007/05/05 18:23:43 vimboss Exp $
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/config.vim
+++ b/runtime/syntax/config.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:		configure.in script: M4 with sh
 " Maintainer:	Christian Hammesr <ch@lathspell.westend.com>
-" Last Change:	2001 May 09
+" Last Change:	2008 Sep 03
 
 " Well, I actually even do not know much about m4. This explains why there
 " is probably very much missing here, yet !
@@ -26,7 +26,7 @@ syn match   confignumber    "[-+]\=\<\d\
 syn keyword configkeyword   if then else fi test for in do done
 syn keyword configspecial   cat rm eval
 syn region  configstring    start=+"+ skip=+\\"+ end=+"+
-syn region  configstring    start=+`+ skip=+\\'+ end=+'+
+syn region  configstring    start=+'+ skip=+\\'+ end=+'+
 syn region  configstring    start=+`+ skip=+\\'+ end=+`+
 
 " Define the default highlighting.
--- a/runtime/syntax/cs.vim
+++ b/runtime/syntax/cs.vim
@@ -2,9 +2,9 @@
 " Language:	C#
 " Maintainer:	Anduin Withers <awithers@anduin.com>
 " Former Maintainer:	Johannes Zellner <johannes@zellner.org>
-" Last Change:	Sun Apr 30 19:26:18 PDT 2006
+" Last Change:	Fri Aug 14 13:56:37 PDT 2009
 " Filenames:	*.cs
-" $Id$
+" $Id: cs.vim,v 1.4 2006/05/03 21:20:02 vimboss Exp $
 "
 " REFERENCES:
 " [1] ECMA TC39: C# Language Specification (WD13Oct01.doc)
@@ -78,8 +78,8 @@ syn keyword csXmlTag		contained list lis
 syn cluster xmlTagHook add=csXmlTag
 
 syn match   csXmlCommentLeader	+\/\/\/+    contained
-syn match   csXmlComment	+\/\/\/.*$+ contains=csXmlCommentLeader,@csXml
-syntax include @csXml <sfile>:p:h/xml.vim
+syn match   csXmlComment	+\/\/\/.*$+ contains=csXmlCommentLeader,@csXml,@Spell
+syntax include @csXml syntax/xml.vim
 hi def link xmlRegion Comment
 
 
@@ -100,7 +100,7 @@ syn match   csSpecialChar	contained +\\[
 " unicode characters
 syn match   csUnicodeNumber	+\\\(u\x\{4}\|U\x\{8}\)+ contained contains=csUnicodeSpecifier
 syn match   csUnicodeSpecifier	+\\[uU]+ contained
-syn region  csVerbatimString	start=+@"+ end=+"+ end=+$+ skip=+""+ contains=csVerbatimSpec,@Spell
+syn region  csVerbatimString	start=+@"+ end=+"+ skip=+""+ contains=csVerbatimSpec,@Spell
 syn match   csVerbatimSpec	+@"+he=s+1 contained
 syn region  csString		start=+"+  end=+"+ end=+$+ contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
 syn match   csCharacter		"'[^']*'" contains=csSpecialChar,csSpecialCharError
--- a/runtime/syntax/debchangelog.vim
+++ b/runtime/syntax/debchangelog.vim
@@ -3,7 +3,7 @@
 " Maintainer:  Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
 " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
 "                     Wichert Akkerman <wakkerma@debian.org>
-" Last Change: 2008-01-16
+" Last Change: 2009 Jun 05
 " URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/syntax/debchangelog.vim;hb=debian
 
 " Standard syntax initialization
@@ -17,9 +17,9 @@ endif
 syn case ignore
 
 " Define some common expressions we can use later on
-syn match debchangelogName	contained "^[[:alpha:]][[:alnum:].+-]\+ "
+syn match debchangelogName	contained "^[[:alnum:]][[:alnum:].+-]\+ "
 syn match debchangelogUrgency	contained "; urgency=\(low\|medium\|high\|critical\|emergency\)\( \S.*\)\="
-syn match debchangelogTarget	contained "\v %(%(old)=stable|frozen|unstable|%(testing-|%(old)=stable-)=proposed-updates|experimental|%(sarge|etch|lenny)-%(backports|volatile)|%(testing|%(old)=stable)-security|%(dapper|feisty|gutsy|hardy|intrepid)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
+syn match debchangelogTarget	contained "\v %(frozen|unstable|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(etch|lenny)-%(backports|volatile)|%(dapper|hardy|intrepid|jaunty|karmic)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
 syn match debchangelogVersion	contained "(.\{-})"
 syn match debchangelogCloses	contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
 syn match debchangelogLP	contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
--- a/runtime/syntax/debcontrol.vim
+++ b/runtime/syntax/debcontrol.vim
@@ -3,7 +3,7 @@
 " Maintainer:  Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
 " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
 "                     Wichert Akkerman <wakkerma@debian.org>
-" Last Change: 2008-02-23
+" Last Change: 2009 July 14
 " URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/ftplugin/debcontrol.vim;hb=debian
 
 " Comments are very welcome - but please make sure that you are commenting on
@@ -28,10 +28,10 @@ syn match debControlComma ", *"
 syn match debControlSpace " "
 
 " Define some common expressions we can use later on
-syn match debcontrolArchitecture contained "\(all\|any\|alpha\|amd64\|arm\(e[bl]\)\=\|hppa\|i386\|ia64\|m32r\|m68k\|mipsel\|mips\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc64\|sparc\|hurd-i386\|kfreebsd-\(i386\|gnu\)\|knetbsd-i386\|netbsd-\(alpha\|i386\)\)"
+syn match debcontrolArchitecture contained "\(all\|any\|alpha\|amd64\|arm\(e[bl]\)\=\|avr32\|hppa\|i386\|ia64\|m32r\|m68k\|mipsel\|mips\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc64\|sparc\|hurd-i386\|kfreebsd-\(i386\|amd64\|gnu\)\|knetbsd-i386\|netbsd-\(alpha\|i386\)\)"
 syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+"
 syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)"
-syn match debcontrolSection contained "\(\(contrib\|non-free\|non-US/main\|non-US/contrib\|non-US/non-free\|restricted\|universe\|multiverse\)/\)\=\(admin\|base\|comm\|devel\|doc\|editors\|electronics\|embedded\|games\|gnome\|graphics\|hamradio\|interpreters\|kde\|libs\|libdevel\|mail\|math\|misc\|net\|news\|oldlibs\|otherosfs\|perl\|python\|science\|shells\|sound\|text\|tex\|utils\|web\|x11\|debian-installer\)"
+syn match debcontrolSection contained "\v((contrib|non-free|non-US/main|non-US/contrib|non-US/non-free|restricted|universe|multiverse)/)?(admin|cli-mono|comm|database|debian-installer|debug|devel|doc|editors|electronics|embedded|fonts|games|gnome|gnustep|gnu-r|graphics|hamradio|haskell|httpd|interpreters|java|kde|kernel|libs|libdevel|lisp|localization|mail|math|misc|net|news|ocaml|oldlibs|otherosfs|perl|php|python|ruby|science|shells|sound|text|tex|utils|vcs|video|web|x11|xfce|zope)"
 syn match debcontrolPackageType contained "u\?deb"
 syn match debcontrolVariable contained "\${.\{-}}"
 syn match debcontrolDmUpload contained "\cyes"
@@ -41,7 +41,7 @@ syn match debcontrolDmUpload contained "
 syn match debcontrolHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
 syn match debcontrolVcsSvn contained "\vsvn%(\+ssh)?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
 syn match debcontrolVcsCvs contained "\v%(\-d *)?:pserver:[^@]+\@[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?:/[^[:space:]]*%( [^[:space:]]+)?$"
-syn match debcontrolVcsGit contained "\vgit://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
+syn match debcontrolVcsGit contained "\v%(git|http)://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
 
 " An email address
 syn match	debcontrolEmail	"[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
@@ -53,7 +53,7 @@ syn match debcontrolComment "^#.*$"
 syn case ignore
 
 " List of all legal keys
-syn match debcontrolKey contained "^\(Source\|Package\|Section\|Priority\|Maintainer\|Uploaders\|Build-Depends\|Build-Conflicts\|Build-Depends-Indep\|Build-Conflicts-Indep\|Standards-Version\|Pre-Depends\|Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Essential\|Architecture\|Description\|Bugs\|Origin\|Enhances\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|XC-Package-Type\|\%(XS-\)\=DM-Upload-Allowed\): *"
+syn match debcontrolKey contained "^\%(Source\|Package\|Section\|Priority\|\%(XSBC-Original-\)\=Maintainer\|Uploaders\|Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|Standards-Version\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Essential\|Architecture\|Description\|Bugs\|Origin\|X[SB]-Python-Version\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|XC-Package-Type\|\%(XS-\)\=DM-Upload-Allowed\): *"
 
 " Fields for which we do strict syntax checking
 syn region debcontrolStrictField start="^Architecture" end="$" contains=debcontrolKey,debcontrolArchitecture,debcontrolSpace oneline
@@ -62,15 +62,15 @@ syn region debcontrolStrictField start="
 syn region debcontrolStrictField start="^Section" end="$" contains=debcontrolKey,debcontrolSection oneline
 syn region debcontrolStrictField start="^XC-Package-Type" end="$" contains=debcontrolKey,debcontrolPackageType oneline
 syn region debcontrolStrictField start="^Homepage" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
-syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
-syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend
-syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend
-syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend
-syn region debcontrolStrictField start="^\%(XS-\)\?DM-Upload-Allowed" end="$" contains=debcontrolKey,debcontrolDmUpload oneline
+syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
+syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend
+syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend
+syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend
+syn region debcontrolStrictField start="^\%(XS-\)\=DM-Upload-Allowed" end="$" contains=debcontrolKey,debcontrolDmUpload oneline
 
 " Catch-all for the other legal fields
-syn region debcontrolField start="^\(Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X\(S\|B\)-Python-Version\|XSBC-Original-Maintainer\|\(XS-\)\?Vcs-Mtn\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline
-syn region debcontrolMultiField start="^\(Build-\(Conflicts\|Depends\)\(-Indep\)\=\|\(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Uploaders\|Description\):" skip="^ " end="^$"me=s-1 end="^[^ ]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable
+syn region debcontrolField start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline
+syn region debcontrolMultiField start="^\%(Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Uploaders\|Description\):" skip="^ " end="^$"me=s-1 end="^[^ #]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment
 
 " Associate our matches and regions with pretty colours
 if version >= 508 || !exists("did_debcontrol_syn_inits")
--- a/runtime/syntax/debsources.vim
+++ b/runtime/syntax/debsources.vim
@@ -2,7 +2,7 @@
 " Language:     Debian sources.list
 " Maintainer:   Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
 " Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
-" Last Change: 2008-04-25
+" Last Change: 2009 Apr 17
 " URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/syntax/debsources.vim;hb=debian
 
 " Standard syntax initialization
@@ -19,11 +19,11 @@ syn case match
 syn match debsourcesKeyword        /\(deb-src\|deb\|main\|contrib\|non-free\|restricted\|universe\|multiverse\)/
 
 " Match comments
-syn match debsourcesComment        /#.*/
+syn match debsourcesComment        /#.*/  contains=@Spell
 
 " Match uri's
 syn match debsourcesUri            +\(http://\|ftp://\|[rs]sh://\|debtorrent://\|\(cdrom\|copy\|file\):\)[^' 	<>"]\++
-syn match debsourcesDistrKeyword   +\([[:alnum:]_./]*\)\(sarge\|etch\|lenny\|\(old\)\=stable\|testing\|unstable\|sid\|experimental\|dapper\|feisty\|gutsy\|hardy\|intrepid\)\([-[:alnum:]_./]*\)+
+syn match debsourcesDistrKeyword   +\([[:alnum:]_./]*\)\(etch\|lenny\|squeeze\|\(old\)\=stable\|testing\|unstable\|sid\|experimental\|dapper\|hardy\|intrepid\|jaunty\|karmic\)\([-[:alnum:]_./]*\)+
 
 " Associate our matches and regions with pretty colours
 hi def link debsourcesLine            Error
--- a/runtime/syntax/def.vim
+++ b/runtime/syntax/def.vim
@@ -2,8 +2,8 @@
 " Language:	Microsoft Module-Definition (.def) File
 " Orig Author:	Rob Brady <robb@datatone.com>
 " Maintainer:	Wu Yongwei <wuyongwei@gmail.com>
-" Last Change:	$Date$
-" $Revision$
+" Last Change:	$Date: 2007/10/02 13:51:24 $
+" $Revision: 1.2 $
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/django.vim
+++ b/runtime/syntax/django.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Django template
 " Maintainer:	Dave Hodder <dmh@dmh.org.uk>
-" Last Change:	2007 Apr 21
+" Last Change:	2008 Dec 18
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -18,8 +18,9 @@ syn match djangoError "%}\|}}\|#}"
 
 " Django template built-in tags and parameters
 " 'comment' doesn't appear here because it gets special treatment
+syn keyword djangoStatement contained autoescape on off endautoescape
 syn keyword djangoStatement contained and as block endblock by cycle debug else
-syn keyword djangoStatement contained extends filter endfilter firstof for
+syn keyword djangoStatement contained extends filter endfilter firstof for empty
 syn keyword djangoStatement contained endfor if endif ifchanged endifchanged
 syn keyword djangoStatement contained ifequal endifequal ifnotequal
 syn keyword djangoStatement contained endifnotequal in include load not now or
@@ -35,15 +36,15 @@ syn keyword djangoStatement contained ge
 " Django templete built-in filters
 syn keyword djangoFilter contained add addslashes capfirst center cut date
 syn keyword djangoFilter contained default default_if_none dictsort
-syn keyword djangoFilter contained dictsortreversed divisibleby escape
+syn keyword djangoFilter contained dictsortreversed divisibleby escape escapejs
 syn keyword djangoFilter contained filesizeformat first fix_ampersands
-syn keyword djangoFilter contained floatformat get_digit join length length_is
+syn keyword djangoFilter contained floatformat force_escape get_digit iriencode join last length length_is
 syn keyword djangoFilter contained linebreaks linebreaksbr linenumbers ljust
 syn keyword djangoFilter contained lower make_list phone2numeric pluralize
-syn keyword djangoFilter contained pprint random removetags rjust slice slugify
+syn keyword djangoFilter contained pprint random removetags rjust safe slice slugify
 syn keyword djangoFilter contained stringformat striptags
 syn keyword djangoFilter contained time timesince timeuntil title
-syn keyword djangoFilter contained truncatewords unordered_list upper urlencode
+syn keyword djangoFilter contained truncatewords truncatewords_html unordered_list upper urlencode
 syn keyword djangoFilter contained urlize urlizetrunc wordcount wordwrap yesno
 
 " Keywords to highlight within comments
--- a/runtime/syntax/docbk.vim
+++ b/runtime/syntax/docbk.vim
@@ -2,8 +2,8 @@
 " Language:	DocBook
 " Maintainer:	Devin Weaver <vim@tritarget.com>
 " URL:		http://tritarget.com/pub/vim/syntax/docbk.vim
-" Last Change:	$Date$
-" Version:	$Revision$
+" Last Change:	$Date: 2005/06/23 22:31:01 $
+" Version:	$Revision: 1.2 $
 " Thanks to Johannes Zellner <johannes@zellner.org> for the default to XML
 " suggestion.
 
--- a/runtime/syntax/dosbatch.vim
+++ b/runtime/syntax/dosbatch.vim
@@ -2,7 +2,7 @@
 " Language:	MSDOS batch file (with NT command extensions)
 " Maintainer:	Mike Williams <mrw@eandem.co.uk>
 " Filenames:    *.bat
-" Last Change:	10th May 2008
+" Last Change:	6th September 2009
 " Web Page:     http://www.eandem.co.uk/mrw/vim
 "
 " Options Flags:
@@ -36,7 +36,7 @@ syn keyword dosbatchRepeat	for
 syn case match
 syn keyword dosbatchOperator    EQU NEQ LSS LEQ GTR GEQ
 syn case ignore
-syn match dosbatchOperator      "\s[-+\*/%]\s"
+syn match dosbatchOperator      "\s[-+\*/%!~]\s"
 syn match dosbatchOperator      "="
 syn match dosbatchOperator      "[-+\*/%]="
 syn match dosbatchOperator      "\s\(&\||\|^\|<<\|>>\)=\=\s"
@@ -51,10 +51,10 @@ syn match dosbatchEchoOperator  "\<echo\
 syn match dosbatchCmd		"(\s*'[^']*'"lc=1 contains=dosbatchString,dosbatchVariable,dosBatchArgument,@dosbatchNumber,dosbatchImplicit,dosbatchStatement,dosbatchConditional,dosbatchRepeat,dosbatchOperator
 
 " Numbers - surround with ws to not include in dir and filenames
-syn match dosbatchInteger       "[[:space:]=(/:]\d\+"lc=1
-syn match dosbatchHex		"[[:space:]=(/:]0x\x\+"lc=1
-syn match dosbatchBinary	"[[:space:]=(/:]0b[01]\+"lc=1
-syn match dosbatchOctal		"[[:space:]=(/:]0\o\+"lc=1
+syn match dosbatchInteger       "[[:space:]=(/:,!~-]\d\+"lc=1
+syn match dosbatchHex		"[[:space:]=(/:,!~-]0x\x\+"lc=1
+syn match dosbatchBinary	"[[:space:]=(/:,!~-]0b[01]\+"lc=1
+syn match dosbatchOctal		"[[:space:]=(/:,!~-]0\o\+"lc=1
 syn cluster dosbatchNumber      contains=dosbatchInteger,dosbatchHex,dosbatchBinary,dosbatchOctal
 
 " Command line switches
@@ -69,15 +69,15 @@ syn match dosbatchSpecialChar   "%%"
 syn match dosbatchIdentifier    contained "\s\h\w*\>"
 syn match dosbatchVariable	"%\h\w*%"
 syn match dosbatchVariable	"%\h\w*:\*\=[^=]*=[^%]*%"
-syn match dosbatchVariable	"%\h\w*:\~\d\+,\d\+%" contains=dosbatchInteger
+syn match dosbatchVariable	"%\h\w*:\~[-]\=\d\+\(,[-]\=\d\+\)\=%" contains=dosbatchInteger
 syn match dosbatchVariable	"!\h\w*!"
-syn match dosbatchVariable	"!\h\w*:\*\=[^=]*=[^%]*!"
-syn match dosbatchVariable	"!\h\w*:\~\d\+,\d\+!" contains=dosbatchInteger
+syn match dosbatchVariable	"!\h\w*:\*\=[^=]*=[^!]*!"
+syn match dosbatchVariable	"!\h\w*:\~[-]\=\d\+\(,[-]\=\d\+\)\=!" contains=dosbatchInteger
 syn match dosbatchSet		"\s\h\w*[+-]\==\{-1}" contains=dosbatchIdentifier,dosbatchOperator
 
 " Args to bat files and for loops, etc
 syn match dosbatchArgument	"%\(\d\|\*\)"
-syn match dosbatchArgument	"%%[a-z]\>"
+syn match dosbatchArgument	"%[a-z]\>"
 if dosbatch_cmdextversion == 1
   syn match dosbatchArgument	"%\~[fdpnxs]\+\(\($PATH:\)\=[a-z]\|\d\)\>"
 else
@@ -92,7 +92,9 @@ syn match dosbatchLabel		":\h\w*\>"
 
 " Comments - usual rem but also two colons as first non-space is an idiom
 syn match dosbatchComment	"^rem\($\|\s.*$\)"lc=3 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+syn match dosbatchComment	"^@rem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
 syn match dosbatchComment	"\srem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+syn match dosbatchComment	"\s@rem\($\|\s.*$\)"lc=5 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
 syn match dosbatchComment	"\s*:\s*:.*$" contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
 
 " Comments in ()'s - still to handle spaces before rem
--- a/runtime/syntax/doxygen.vim
+++ b/runtime/syntax/doxygen.vim
@@ -2,8 +2,8 @@
 " Language:     doxygen on top of c, cpp, idl, java, php
 " Maintainer:   Michael Geddes <vimmer@frog.wheelycreek.net>
 " Author:       Michael Geddes
-" Last Change:  July 2008
-" Version:      1.22
+" Last Change:  Jan 2009
+" Version:      1.23
 "
 " Copyright 2004-2008 Michael Geddes
 " Please feel free to use, modify & distribute all or part of this script,
@@ -239,7 +239,7 @@ endif
   " #Link hilighting.
   syn match doxygenHashLink /\([a-zA-Z_][0-9a-zA-Z_]*\)\?#\(\.[0-9a-zA-Z_]\@=\|[a-zA-Z0-9_]\+\|::\|()\)\+/ contained contains=doxygenHashSpecial
   syn match doxygenHashSpecial /#/ contained
-  syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@]\+/ contained
+  syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@~]\+/ contained
 
   " Handle \page.  This does not use doxygenBrief.
   syn match doxygenPage "[\\@]page\>"me=s+1 contained skipwhite nextgroup=doxygenPagePage
--- a/runtime/syntax/dsl.vim
+++ b/runtime/syntax/dsl.vim
@@ -3,7 +3,7 @@
 " Maintainer:	Johannes Zellner <johannes@zellner.org>
 " Last Change:	Tue, 27 Apr 2004 14:54:59 CEST
 " Filenames:	*.dsl
-" $Id$
+" $Id: dsl.vim,v 1.1 2004/06/13 19:13:31 vimboss Exp $
 
 if exists("b:current_syntax") | finish | endif
 
--- a/runtime/syntax/elf.vim
+++ b/runtime/syntax/elf.vim
@@ -4,7 +4,7 @@
 " Last Change: Son 22 Jun 2003 20:43:14 CEST
 " Filenames:   *.ab,*.am
 " URL:	       http://www.cvjb.de/comp/vim/elf.vim
-" $Id$
+" $Id: elf.vim,v 1.1 2004/06/13 19:52:27 vimboss Exp $
 "
 " ELF: Extensible Language Facility
 "      This is the Applix Inc., Macro and Builder programming language.
--- a/runtime/syntax/erlang.vim
+++ b/runtime/syntax/erlang.vim
@@ -50,7 +50,7 @@ if ! exists ("erlang_characters")
     " Operators
     syn match   erlangOperator         "+\|-\|\*\|\/"
     syn keyword erlangOperator         div rem or xor bor bxor bsl bsr
-    syn keyword erlangOperator         and band not bnot
+    syn keyword erlangOperator         and band not bnot andalso orelse
     syn match   erlangOperator         "==\|/=\|=:=\|=/=\|<\|=<\|>\|>="
     syn match   erlangOperator         "++\|--\|=\|!\|<-"
 
@@ -123,7 +123,7 @@ endif
 
 if ! exists ("erlang_keywords")
     " Constants and Directives
-    syn match   erlangDirective  "-behaviour\|-behaviour"
+    syn match   erlangDirective  "-behaviour\|-behavior"
     syn match   erlangDirective  "-compile\|-define\|-else\|-endif\|-export\|-file"
     syn match   erlangDirective  "-ifdef\|-ifndef\|-import\|-include_lib\|-include"
     syn match   erlangDirective  "-module\|-record\|-undef"
--- a/runtime/syntax/eruby.vim
+++ b/runtime/syntax/eruby.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:		eRuby
 " Maintainer:		Tim Pope <vimNOSPAM@tpope.info>
-" Info:			$Id$
+" Info:			$Id: eruby.vim,v 1.23 2008/06/29 04:18:43 tpope Exp $
 " URL:			http://vim-ruby.rubyforge.org
 " Anon CVS:		See above site
 " Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
--- a/runtime/syntax/focexec.vim
+++ b/runtime/syntax/focexec.vim
@@ -1,9 +1,9 @@
 " Vim syntax file
 " Language:	Focus Executable
 " Maintainer:	Rob Brady <robb@datatone.com>
-" Last Change:	$Date$
+" Last Change:	$Date: 2004/06/13 15:38:04 $
 " URL:		http://www.datatone.com/~robb/vim/syntax/focexec.vim
-" $Revision$
+" $Revision: 1.1 $
 
 " this is a very simple syntax file - I will be improving it
 " one thing is how to do computes
--- a/runtime/syntax/form.vim
+++ b/runtime/syntax/form.vim
@@ -1,7 +1,10 @@
 " Vim syntax file
 " Language:	FORM
+" Version: 2.0
 " Maintainer:	Michael M. Tung <michael.tung@uni-mainz.de>
-" Last Change:	2001 May 10
+" Last Change: <Thu Oct 23 13:11:21 CEST 2008>
+" Past Change: <October 2008 Thomas Reiter thomasr@nikhef.nl>
+" Past Change: <Wed, 2005/05/25 09:24:58 arwagner wptx44>
 
 " First public release based on 'Symbolic Manipulation with FORM'
 " by J.A.M. Vermaseren, CAN, Netherlands, 1991.
@@ -18,30 +21,73 @@ endif
 
 syn case ignore
 
-" A bunch of useful FORM keywords
+" a bunch of useful FORM keywords
 syn keyword formType		global local
 syn keyword formHeaderStatement	symbol symbols cfunction cfunctions
 syn keyword formHeaderStatement	function functions vector vectors
-syn keyword formHeaderStatement	set sets index indices
+syn keyword formHeaderStatement tensor tensors ctensor ctensors
+syn keyword formHeaderStatement	set sets index indices table ctable
 syn keyword formHeaderStatement	dimension dimensions unittrace
-syn keyword formStatement	id identify drop skip
-syn keyword formStatement	write nwrite
-syn keyword formStatement	format print nprint load save
-syn keyword formStatement	bracket brackets
-syn keyword formStatement	multiply count match only discard
-syn keyword formStatement	trace4 traceN contract symmetrize antisymmetrize
-syn keyword formConditional	if else endif while
+syn keyword formConditional	if else elseif endif while
 syn keyword formConditional	repeat endrepeat label goto
+syn keyword formConditional     argument endargument exit
+syn keyword formConditional     inexpression inside term
+syn keyword formConditional     endinexpression endinside endterm
+syn keyword formStatement       abrackets also antibrackets antisymmetrize
+syn keyword formStatement       argexplode argimplode apply auto autodeclare
+syn keyword formStatement       brackets chainin chainout chisholm cleartable
+syn keyword formStatement       collect commuting compress contract
+syn keyword formStatement       cyclesymmetrize deallocatetable delete
+syn keyword formStatement       dimension discard disorder drop factarg fill
+syn keyword formStatement       fillexpression fixindex format funpowers hide
+syn keyword formStatement       identify idnew idold ifmatch inparallel
+syn keyword formStatement       insidefirst keep load makeinteger many metric
+syn keyword formStatement       moduleoption modulus multi multiply ndrop
+syn keyword formStatement       nfunctions nhide normalize notinparallel
+syn keyword formStatement       nprint nskip ntable ntensors nunhide nwrite
+syn keyword formStatement       off on once only polyfun pophide print
+syn keyword formStatement       printtable propercount pushhide ratio
+syn keyword formStatement       rcyclesymmetrize redefine renumber
+syn keyword formStatement       replaceinarg replaceloop save select
+syn keyword formStatement       setexitflag skip slavepatchsize sort splitarg
+syn keyword formStatement       splitfirstarg splitlastarg sum symmetrize
+syn keyword formStatement       tablebase testuse threadbucketsize totensor
+syn keyword formStatement       tovector trace4 tracen tryreplace unhide
+syn keyword formStatement       unittrace vectors write
+" for compatibility with older FORM versions:
+syn keyword formStatement       id bracket count match traceN
 
 " some special functions
-syn keyword formStatement	g_ gi_ g5_ g6_ g7_ 5_ 6_ 7_
-syn keyword formStatement	e_ d_ delta_ theta_ sum_ sump_
+syn keyword formStatement       abs_ bernoulli_ binom_ conjg_ count_
+syn keyword formStatement       d_ dd_ delta_ deltap_ denom_ distrib_
+syn keyword formStatement       dum_ dummy_ dummyten_ e_ exp_ fac_
+syn keyword formStatement       factorin_ firstbracket_ g5_ g6_ g7_
+syn keyword formStatement       g_ gcd_ gi_ integer_ invfac_ match_
+syn keyword formStatement       max_ maxpowerof_ min_ minpowerof_
+syn keyword formStatement       mod_ nargs_ nterms_ pattern_ poly_
+syn keyword formStatement       polyadd_ polydiv_ polygcd_ polyintfac_
+syn keyword formStatement       polymul_ polynorm_ polyrem_ polysub_
+syn keyword formStatement       replace_ reverse_ root_ setfun_ sig_
+syn keyword formStatement       sign_ sum_ sump_ table_ tbl_ term_
+syn keyword formStatement       termsin_ termsinbracket_ theta_ thetap_ 
+syn keyword formStatement	5_ 6_ 7_
+
+syn keyword formReserved        sqrt_ ln_ sin_ cos_ tan_ asin_ acos_
+syn keyword formReserved        atan_ atan2_ sinh_ cosh_ tanh_ asinh_
+syn keyword formReserved        acosh_ atanh_ li2_ lin_ 
+
+syn keyword formTodo            contained TODO FIXME XXX
+
+syn match   formSpecial         display contained "\\\(n\|t\|b\|\\\|\"\)"
+syn match   formSpecial         display contained "%\(%\|e\|E\|s\|f\|\$\)"
+syn match   formSpecial         "\<N\d\+_[?]"
 
 " pattern matching for keywords
-syn match   formComment		"^\ *\*.*$"
-syn match   formComment		"\;\ *\*.*$"
-syn region  formString		start=+"+  end=+"+
+syn match   formComment		"^\ *\*.*$" contains=formTodo
+syn match   formComment		"\;\ *\*.*$" contains=formTodo
+syn region  formString		start=+"+  end=+"+ contains=formSpecial
 syn region  formString		start=+'+  end=+'+
+syn region  formNestedString	start=+`+  end=+'+ contains=formNestedString
 syn match   formPreProc		"^\=\#[a-zA-z][a-zA-Z0-9]*\>"
 syn match   formNumber		"\<\d\+\>"
 syn match   formNumber		"\<\d\+\.\d*\>"
@@ -50,6 +96,13 @@ syn match   formNumber		"-\d" contains=N
 syn match   formNumber		"-\.\d" contains=Number
 syn match   formNumber		"i_\+\>"
 syn match   formNumber		"fac_\+\>"
+" pattern matching wildcards
+syn match   formNumber		"?[A-z0-9]*"
+" dollar-variables (new in 3.x)
+syn match   formNumber		"\\$[A-z0-9]*"
+" scalar products
+syn match   formNumber		"^\=[a-zA-z][a-zA-Z0-9]*\.[a-zA-z][a-zA-Z0-9]*\>"
+
 syn match   formDirective	"^\=\.[a-zA-z][a-zA-Z0-9]*\>"
 
 " hi User Labels
@@ -74,6 +127,10 @@ if version >= 508 || !exists("did_form_s
   HiLink formDirective		PreProc
   HiLink formType		Type
   HiLink formString		String
+  HiLink formNestedString	String
+  HiLink formReserved           Error
+  HiLink formTodo               Todo
+  HiLink formSpecial            SpecialChar
 
   if !exists("form_enhanced_color")
     HiLink formHeaderStatement	Statement
--- a/runtime/syntax/forth.vim
+++ b/runtime/syntax/forth.vim
@@ -5,7 +5,7 @@
 " Filenames:   *.fs,*.ft
 " URL:	       http://www.cvjb.de/comp/vim/forth.vim
 
-" $Id$
+" $Id: forth.vim,v 1.11 2008/02/09 13:17:01 bruessow Exp $
 
 " The list of keywords is incomplete, compared with the offical ANS
 " wordlist. If you use this language, please improve it, and send me
--- a/runtime/syntax/fortran.vim
+++ b/runtime/syntax/fortran.vim
@@ -2,7 +2,7 @@
 " Language:	Fortran95 (and Fortran90, Fortran77, F and elf90)
 " Version:	0.88
 " URL:		http://www.unb.ca/chem/ajit/syntax/fortran.vim
-" Last Change:	2006 Apr. 22
+" Last Change:	2008 Nov 01
 " Maintainer:	Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/>
 " Usage:	Do :help fortran-syntax from Vim
 " Credits:
@@ -300,7 +300,7 @@ if (b:fortran_fixed_source == 1)
     syn match fortranLabelError	"^.\{-,4}[^0-9 ]" contains=fortranTab
     syn match fortranLabelError	"^.\{4}\d\S"
   endif
-  syn match fortranComment		excludenl "^[!c*].*$" contains=@fortranCommentGroup
+  syn match fortranComment		excludenl "^[!c*].*$" contains=@fortranCommentGroup,@spell
   syn match fortranLeftMargin		transparent "^ \{5}"
   syn match fortranContinueMark		display "^.\{5}\S"lc=5
 else
--- a/runtime/syntax/fstab.vim
+++ b/runtime/syntax/fstab.vim
@@ -2,14 +2,15 @@
 " Language: fstab file
 " Maintaner: Radu Dineiu <radu.dineiu@gmail.com>
 " URL: http://ld.yi.org/vim/fstab.vim
-" Last Change: 2008 Jan 16
-" Version: 0.92
+" Last Change: 2009 Feb 04
+" Version: 0.93
 "
 " Credits:
 "   David Necas (Yeti) <yeti@physics.muni.cz>
 "   Stefano Zacchiroli <zack@debian.org>
 "   Georgi Georgiev <chutz@gg3.net>
 "   James Vega <jamessan@debian.org>
+"   Elias Probst <mail@eliasprobst.eu>
 "
 " Options:
 "   let fstab_unknown_fs_errors = 1
@@ -46,7 +47,7 @@ syn keyword fsMountPointKeyword containe
 " Type
 syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown
 syn match fsTypeUnknown /\s\+\zs\w\+/ contained
-syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs
+syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 ext4 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs
 
 " Options
 " -------
@@ -91,7 +92,21 @@ syn match fsOptionsKeywords contained /\
 syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber
 syn keyword fsOptionsExt3Journal contained update inum
 syn keyword fsOptionsExt3Data contained journal ordered writeback
-syn keyword fsOptionsKeywords contained noload
+syn keyword fsOptionsKeywords contained noload user_xattr nouser_xattr acl noacl
+
+" Options: ext4
+syn match fsOptionsKeywords contained /\<journal=/ nextgroup=fsOptionsExt4Journal
+syn match fsOptionsKeywords contained /\<data=/ nextgroup=fsOptionsExt4Data
+syn match fsOptionsKeywords contained /\<barrier=/ nextgroup=fsOptionsExt4Barrier
+syn match fsOptionsKeywords contained /\<journal_dev=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<resuid=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<resgid=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<sb=/ nextgroup=fsOptionsNumber
+syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber
+syn keyword fsOptionsExt4Journal contained update inum
+syn keyword fsOptionsExt4Data contained journal ordered writeback
+syn match fsOptionsExt4Barrier /[0-1]/
+syn keyword fsOptionsKeywords contained noload extents orlov oldalloc user_xattr nouser_xattr acl noacl reservation noreservation bsddf minixdf check=none nocheck debug grpid nogroupid sysvgroups bsdgroups quota noquota grpquota usrquota bh nobh
 
 " Options: fat
 syn match fsOptionsKeywords contained /\<blocksize=/ nextgroup=fsOptionsSize
@@ -241,6 +256,9 @@ if version >= 508 || !exists("did_config
 	HiLink fsOptionsExt2Errors String
 	HiLink fsOptionsExt3Journal String
 	HiLink fsOptionsExt3Data String
+	HiLink fsOptionsExt4Journal String
+	HiLink fsOptionsExt4Data String
+	HiLink fsOptionsExt4Barrier Number
 	HiLink fsOptionsFatCheck String
 	HiLink fsOptionsConv String
 	HiLink fsOptionsFatType Number
--- a/runtime/syntax/gdb.vim
+++ b/runtime/syntax/gdb.vim
@@ -2,7 +2,7 @@
 " Language:	GDB command files
 " Maintainer:	Claudio Fleiner <claudio@fleiner.com>
 " URL:		http://www.fleiner.com/vim/syntax/gdb.vim
-" Last Change:	2003 Jan 04
+" Last Change:	2009 May 25
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -35,7 +35,7 @@ syn match gdbStatement "^\s*info" nextgr
 " some commonly used abreviations
 syn keyword gdbStatement c disp undisp disas p
 
-syn region gdbDocument matchgroup=gdbFuncDef start="\<document\>.*$" matchgroup=gdbFuncDef end="^end$"
+syn region gdbDocument matchgroup=gdbFuncDef start="\<document\>.*$" matchgroup=gdbFuncDef end="^end\s*$"
 
 syn match gdbStatement "\<add-shared-symbol-files\>"
 syn match gdbStatement "\<add-symbol-file\>"
--- a/runtime/syntax/git.vim
+++ b/runtime/syntax/git.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	generic git output
-" Maintainer:	Tim Pope <vimNOSPAM@tpope.info>
-" Last Change:	2008 Mar 21
+" Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
+" Last Change:	2009 Dec 24
 
 if exists("b:current_syntax")
     finish
@@ -13,14 +13,19 @@ syn sync minlines=50
 syn include @gitDiff syntax/diff.vim
 
 syn region gitHead start=/\%^/ end=/^$/
-syn region gitHead start=/\%(^commit \x\{40\}$\)\@=/ end=/^$/
+syn region gitHead start=/\%(^commit \x\{40\}\%(\s*(.*)\)\=$\)\@=/ end=/^$/
 
 " For git reflog and git show ...^{tree}, avoid sync issues
 syn match gitHead /^\d\{6\} \%(\w\{4} \)\=\x\{40\}\%( [0-3]\)\=\t.*/
 syn match gitHead /^\x\{40\} \x\{40}\t.*/
 
-syn region gitDiff start=/^\%(diff --git \)\@=/ end=/^\%(diff --git \|$\)\@=/ contains=@gitDiff fold
-syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --git \|$\)\@=/ contains=@gitDiff
+syn region gitDiff start=/^\%(diff --git \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff fold
+syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --\%(git\|cc\|combined\) \|$\)\@=/ contains=@gitDiff
+
+syn region gitDiffMerge start=/^\%(diff --\%(cc\|combined\) \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
+syn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
+syn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge
+syn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge
 
 syn match  gitKeyword /^\%(object\|type\|tag\|commit\|tree\|parent\|encoding\)\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite
 syn match  gitKeyword /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite
@@ -29,8 +34,6 @@ syn match  gitMode    /^\d\{6\}/ contain
 syn match  gitIdentityKeyword /^\%(author\|committer\|tagger\)\>/ contained containedin=gitHead nextgroup=gitIdentity skipwhite
 syn match  gitIdentityHeader /^\%(Author\|Commit\|Tagger\):/ contained containedin=gitHead nextgroup=gitIdentity skipwhite
 syn match  gitDateHeader /^\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitHead nextgroup=gitDate skipwhite
-syn match  gitIdentity /\S.\{-\} <[^>]*>/ contained nextgroup=gitDate skipwhite
-syn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity
 
 syn match  gitReflogHeader /^Reflog:/ contained containedin=gitHead nextgroup=gitReflogMiddle skipwhite
 syn match  gitReflogHeader /^Reflog message:/ contained containedin=gitHead skipwhite
@@ -42,14 +45,20 @@ syn match  gitDate      /\<\d\+ \l\+ ago
 syn match  gitType      /\<\%(tag\|commit\|tree\|blob\)\>/     contained nextgroup=gitHash skipwhite
 syn match  gitStage     /\<\d\t\@=/                            contained
 syn match  gitReference /\S\+\S\@!/                            contained
-syn match  gitHash      /\<\x\{40\}\>/                         contained nextgroup=gitIdentity,gitStage skipwhite
+syn match  gitHash      /\<\x\{40\}\>/                         contained nextgroup=gitIdentity,gitStage,gitHash skipwhite
 syn match  gitHash      /^\<\x\{40\}\>/ containedin=gitHead contained nextgroup=gitHash skipwhite
+syn match  gitHashAbbrev /\<\x\{4,40\}\>/           contained nextgroup=gitHashAbbrev skipwhite
 syn match  gitHashAbbrev /\<\x\{4,39\}\.\.\./he=e-3 contained nextgroup=gitHashAbbrev skipwhite
-syn match  gitHashAbbrev /\<\x\{40\}\>/             contained nextgroup=gitHashAbbrev skipwhite
+
+syn match  gitIdentity /\S.\{-\} <[^>]*>/ contained nextgroup=gitDate skipwhite
+syn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity
+
+syn match  gitNotesHeader /^Notes:\ze\n    /
 
 hi def link gitDateHeader        gitIdentityHeader
 hi def link gitIdentityHeader    gitIdentityKeyword
 hi def link gitIdentityKeyword   Label
+hi def link gitNotesHeader       gitKeyword
 hi def link gitReflogHeader      gitKeyword
 hi def link gitKeyword           Keyword
 hi def link gitIdentity          String
@@ -63,5 +72,7 @@ hi def link gitReflogMiddle      gitRefe
 hi def link gitReference         Function
 hi def link gitStage             gitType
 hi def link gitType              Type
+hi def link gitDiffAdded         diffAdded
+hi def link gitDiffRemoved       diffRemoved
 
 let b:current_syntax = "git"
--- a/runtime/syntax/gitcommit.vim
+++ b/runtime/syntax/gitcommit.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	git commit file
-" Maintainer:	Tim Pope <vimNOSPAM@tpope.info>
+" Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
 " Filenames:	*.git/COMMIT_EDITMSG
-" Last Change:	2008 Apr 09
+" Last Change:	2009 Dec 24
 
 if exists("b:current_syntax")
     finish
@@ -16,48 +16,66 @@ if has("spell")
 endif
 
 syn include @gitcommitDiff syntax/diff.vim
-syn region gitcommitDiff start=/\%(^diff --git \)\@=/ end=/^$\|^#\@=/ contains=@gitcommitDiff
+syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^$\|^#\@=/ contains=@gitcommitDiff
 
 syn match   gitcommitFirstLine	"\%^[^#].*"  nextgroup=gitcommitBlank skipnl
-syn match   gitcommitSummary  	"^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell
+syn match   gitcommitSummary	"^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell
 syn match   gitcommitOverflow	".*" contained contains=@Spell
 syn match   gitcommitBlank	"^[^#].*" contained contains=@Spell
 syn match   gitcommitComment	"^#.*"
-syn region  gitcommitHead	start=/^#   / end=/^#$/ contained transparent
+syn match   gitcommitHead	"^\%(#   .*\n\)\+#$" contained transparent
 syn match   gitcommitOnBranch	"\%(^# \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
-syn match   gitcommitBranch	"\S\+" contained
+syn match   gitcommitOnBranch	"\%(^# \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
+syn match   gitcommitBranch	"[^ \t']\+" contained
+syn match   gitcommitNoBranch	"\%(^# \)\@<=Not currently on any branch." contained containedin=gitcommitComment
 syn match   gitcommitHeader	"\%(^# \)\@<=.*:$"	contained containedin=gitcommitComment
+syn region  gitcommitAuthor	matchgroup=gitCommitHeader start=/\%(^# \)\@<=Author:/ end=/$/ keepend oneline contained containedin=gitcommitComment transparent
+syn match   gitcommitNoChanges	"\%(^# \)\@<=No changes$" contained containedin=gitcommitComment
 
 syn region  gitcommitUntracked	start=/^# Untracked files:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUntrackedFile fold
 syn match   gitcommitUntrackedFile  "\t\@<=.*"	contained
 
 syn region  gitcommitDiscarded	start=/^# Changed but not updated:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitDiscardedType fold
 syn region  gitcommitSelected	start=/^# Changes to be committed:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitSelectedType fold
+syn region  gitcommitUnmerged	start=/^# Unmerged paths:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUnmergedType fold
 
 syn match   gitcommitDiscardedType	"\t\@<=[a-z][a-z ]*[a-z]: "he=e-2	contained containedin=gitcommitComment nextgroup=gitcommitDiscardedFile skipwhite
 syn match   gitcommitSelectedType	"\t\@<=[a-z][a-z ]*[a-z]: "he=e-2	contained containedin=gitcommitComment nextgroup=gitcommitSelectedFile skipwhite
+syn match   gitcommitUnmergedType	"\t\@<=[a-z][a-z ]*[a-z]: "he=e-2	contained containedin=gitcommitComment nextgroup=gitcommitUnmergedFile skipwhite
 syn match   gitcommitDiscardedFile	".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitDiscardedArrow
 syn match   gitcommitSelectedFile	".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow
+syn match   gitcommitUnmergedFile	".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow
 syn match   gitcommitDiscardedArrow	" -> " contained nextgroup=gitcommitDiscardedFile
 syn match   gitcommitSelectedArrow	" -> " contained nextgroup=gitcommitSelectedFile
+syn match   gitcommitUnmergedArrow	" -> " contained nextgroup=gitcommitSelectedFile
+
+syn match   gitcommitWarning		"\%^[^#].*: needs merge$" nextgroup=gitcommitWarning skipnl
+syn match   gitcommitWarning		"^[^#].*: needs merge$" nextgroup=gitcommitWarning skipnl contained
+syn match   gitcommitWarning		"^\%(no changes added to commit\|nothing \%(added \)\=to commit\)\>.*\%$"
 
 hi def link gitcommitSummary		Keyword
 hi def link gitcommitComment		Comment
 hi def link gitcommitUntracked		gitcommitComment
 hi def link gitcommitDiscarded		gitcommitComment
 hi def link gitcommitSelected		gitcommitComment
+hi def link gitcommitUnmerged		gitcommitComment
 hi def link gitcommitOnBranch		Comment
 hi def link gitcommitBranch		Special
+hi def link gitcommitNoBranch		gitCommitBranch
 hi def link gitcommitDiscardedType	gitcommitType
 hi def link gitcommitSelectedType	gitcommitType
+hi def link gitcommitUnmergedType	gitcommitType
 hi def link gitcommitType		Type
+hi def link gitcommitNoChanges		gitcommitHeader
 hi def link gitcommitHeader		PreProc
 hi def link gitcommitUntrackedFile	gitcommitFile
 hi def link gitcommitDiscardedFile	gitcommitFile
 hi def link gitcommitSelectedFile	gitcommitFile
+hi def link gitcommitUnmergedFile	gitcommitFile
 hi def link gitcommitFile		Constant
 hi def link gitcommitDiscardedArrow	gitcommitArrow
 hi def link gitcommitSelectedArrow	gitcommitArrow
+hi def link gitcommitUnmergedArrow	gitcommitArrow
 hi def link gitcommitArrow		gitcommitComment
 "hi def link gitcommitOverflow		Error
 hi def link gitcommitBlank		Error
--- a/runtime/syntax/gitconfig.vim
+++ b/runtime/syntax/gitconfig.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	git config file
-" Maintainer:	Tim Pope <vimNOSPAM@tpope.info>
+" Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
 " Filenames:	gitconfig, .gitconfig, *.git/config
-" Last Change:	2008 Jun 04
+" Last Change:	2009 Dec 24
 
 if exists("b:current_syntax")
     finish
--- a/runtime/syntax/gitrebase.vim
+++ b/runtime/syntax/gitrebase.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	git rebase --interactive
-" Maintainer:	Tim Pope <vimNOSPAM@tpope.info>
+" Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
 " Filenames:	git-rebase-todo
-" Last Change:	2008 Apr 16
+" Last Change:	2009 Dec 24
 
 if exists("b:current_syntax")
     finish
@@ -14,6 +14,7 @@ syn match   gitrebaseHash   "\v<\x{7,40}
 syn match   gitrebaseCommit "\v<\x{7,40}>"  nextgroup=gitrebaseSummary skipwhite
 syn match   gitrebasePick   "\v^p%(ick)=>"   nextgroup=gitrebaseCommit skipwhite
 syn match   gitrebaseEdit   "\v^e%(dit)=>"   nextgroup=gitrebaseCommit skipwhite
+syn match   gitrebaseReword "\v^r%(eword)=>" nextgroup=gitrebaseCommit skipwhite
 syn match   gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite
 syn match   gitrebaseSummary ".*"               contains=gitrebaseHash contained
 syn match   gitrebaseComment "^#.*"             contains=gitrebaseHash
@@ -23,9 +24,10 @@ hi def link gitrebaseCommit         gitr
 hi def link gitrebaseHash           Identifier
 hi def link gitrebasePick           Statement
 hi def link gitrebaseEdit           PreProc
+hi def link gitrebaseReword         Special
 hi def link gitrebaseSquash         Type
 hi def link gitrebaseSummary        String
 hi def link gitrebaseComment        Comment
-hi def link gitrebaseSquashError     Error
+hi def link gitrebaseSquashError    Error
 
 let b:current_syntax = "gitrebase"
--- a/runtime/syntax/groovy.vim
+++ b/runtime/syntax/groovy.vim
@@ -228,6 +228,7 @@ if !exists("groovy_ignore_groovydoc") &&
   " syntax include @groovyHtml <sfile>:p:h/html.vim
    syntax include @groovyHtml runtime! syntax/html.vim
   unlet b:current_syntax
+  syntax spell default  " added by Bram
   syn region  groovyDocComment    start="/\*\*"  end="\*/" keepend contains=groovyCommentTitle,@groovyHtml,groovyDocTags,groovyTodo,@Spell
   syn region  groovyCommentTitle  contained matchgroup=groovyDocComment start="/\*\*"   matchgroup=groovyCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@groovyHtml,groovyCommentStar,groovyTodo,@Spell,groovyDocTags
 
--- a/runtime/syntax/haskell.vim
+++ b/runtime/syntax/haskell.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:		Haskell
 " Maintainer:		Haskell Cafe mailinglist <haskell-cafe@haskell.org>
-" Last Change:		2004 Feb 23
+" Last Change:		2008 Dec 15
 " Original Author:	John Williams <jrw@pobox.com>
 "
 " Thanks to Ryan Crumley for suggestions and John Meacham for
@@ -30,6 +30,7 @@
 "	       in eol comment character class
 " 2004 Feb 23: Made the leading comments somewhat clearer where it comes
 "	       to attribution of work.
+" 2008 Dec 15: Added comments as contained element in import statements
 
 " Remove any old syntax stuff hanging around
 if version < 600
@@ -67,7 +68,7 @@ syn match   hsFloat		"\<[0-9]\+\.[0-9]\+
 " because otherwise they would match as keywords at the start of a
 " "literate" comment (see lhs.vim).
 syn match hsModule		"\<module\>"
-syn match hsImport		"\<import\>.*"he=s+6 contains=hsImportMod
+syn match hsImport		"\<import\>.*"he=s+6 contains=hsImportMod,hsLineComment,hsBlockComment
 syn match hsImportMod		contained "\<\(as\|qualified\|hiding\)\>"
 syn match hsInfix		"\<\(infix\|infixl\|infixr\)\>"
 syn match hsStructure		"\<\(class\|data\|deriving\|instance\|default\|where\)\>"
--- a/runtime/syntax/help.vim
+++ b/runtime/syntax/help.vim
@@ -1,14 +1,14 @@
 " Vim syntax file
 " Language:	Vim help file
 " Maintainer:	Bram Moolenaar (Bram@vim.org)
-" Last Change:	2006 May 13
+" Last Change:	2009 May 18
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
   finish
 endif
 
-syn match helpHeadline		"^[-A-Z .]\+[ \t]\+\*"me=e-1
+syn match helpHeadline		"^[-A-Z .][-A-Z0-9 .()]*[ \t]\+\*"me=e-1
 syn match helpSectionDelim	"^=\{3,}.*===$"
 syn match helpSectionDelim	"^-\{3,}.*--$"
 syn region helpExample		matchgroup=helpIgnore start=" >$" start="^>$" end="^[^ \t]"me=e-1 end="^<"
--- a/runtime/syntax/hog.vim
+++ b/runtime/syntax/hog.vim
@@ -1,7 +1,7 @@
 " Snort syntax file
 " Language:	  Snort Configuration File (see: http://www.snort.org)
 " Maintainer:	  Phil Wood, cornett@arpa.net
-" Last Change:	  $Date$
+" Last Change:	  $Date: 2004/06/13 17:41:17 $
 " Filenames:	  *.hog *.rules snort.conf vision.conf
 " URL:		  http://home.lanl.gov/cpw/vim/syntax/hog.vim
 " Snort Version:  1.8 By Martin Roesch (roesch@clark.net, www.snort.org)
--- a/runtime/syntax/initng.vim
+++ b/runtime/syntax/initng.vim
@@ -4,7 +4,7 @@
 " URL:		http://glen.alkohol.ee/pld/initng/
 " License:	GPL v2
 " Version:	0.13
-" Last Change:	$Date$
+" Last Change:	$Date: 2007/05/05 17:17:40 $
 "
 " Syntax highlighting for initng .i files. Inherits from sh.vim and adds
 " in the hiliting to start/stop {} blocks. Requires vim 6.3 or later.
--- a/runtime/syntax/java.vim
+++ b/runtime/syntax/java.vim
@@ -2,7 +2,7 @@
 " Language:     Java
 " Maintainer:   Claudio Fleiner <claudio@fleiner.com>
 " URL:		http://www.fleiner.com/vim/syntax/java.vim
-" Last Change:  2007 Dec 21
+" Last Change:  2009 Mar 14
 
 " Please check :help java.vim for comments on some of the options available.
 
@@ -15,6 +15,7 @@ if !exists("main_syntax")
   endif
   " we define it here so that included files can test for it
   let main_syntax='java'
+  syn region javaFold start="{" end="}" transparent fold
 endif
 
 " don't use standard HiLink, it will not work with included syntax files
@@ -58,7 +59,7 @@ syn match   javaTypedef		"\.\s*\<class\>
 syn keyword javaClassDecl	enum
 syn match   javaClassDecl	"^class\>"
 syn match   javaClassDecl	"[^.]\s*\<class\>"ms=s+1
-syn match   javaAnnotation      "@[_$a-zA-Z][_$a-zA-Z0-9_]*\>"
+syn match   javaAnnotation      "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>"
 syn match   javaClassDecl       "@interface\>"
 syn keyword javaBranch		break continue nextgroup=javaUserLabelRef skipwhite
 syn match   javaUserLabelRef	"\k\+" contained
@@ -121,11 +122,6 @@ syn match   javaUserLabel       "^\s*[_$
 syn keyword javaLabel		default
 
 if !exists("java_allow_cpp_keywords")
-  " The default used to be to highlight C++ keywords.  But several people
-  " don't like that, so default to not highlighting these.
-  let java_allow_cpp_keywords = 1
-endif
-if !java_allow_cpp_keywords
   syn keyword javaError auto delete extern friend inline redeclared
   syn keyword javaError register signed sizeof struct template typedef union
   syn keyword javaError unsigned operator
@@ -161,6 +157,11 @@ if !exists("java_ignore_javadoc") && mai
   " syntax coloring for javadoc comments (HTML)
   syntax include @javaHtml <sfile>:p:h/html.vim
   unlet b:current_syntax
+  " HTML enables spell checking for all text that is not in a syntax item. This
+  " is wrong for Java (all identifiers would be spell-checked), so it's undone
+  " here.
+  syntax spell default
+
   syn region  javaDocComment    start="/\*\*"  end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell
   syn region  javaCommentTitle  contained matchgroup=javaDocComment start="/\*\*"   matchgroup=javaCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@javaHtml,javaCommentStar,javaTodo,@Spell,javaDocTags,javaDocSeeTag
 
@@ -179,7 +180,7 @@ syn match   javaComment		 "/\*\*/"
 " Strings and constants
 syn match   javaSpecialError     contained "\\."
 syn match   javaSpecialCharError contained "[^']"
-syn match   javaSpecialChar      contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
+syn match   javaSpecialChar      contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\+\x\{4\}\)"
 syn region  javaString		start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
 " next line disabled, it can cause a crash for a long line
 "syn match   javaStringError	  +"\([^"\\]\|\\.\)*$+
@@ -192,7 +193,7 @@ syn match   javaNumber		 "\<\d\+[eE][-+]
 syn match   javaNumber		 "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
 
 " unicode characters
-syn match   javaSpecial "\\u\d\{4\}"
+syn match   javaSpecial "\\u\+\d\{4\}"
 
 syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
 
--- a/runtime/syntax/kconfig.vim
+++ b/runtime/syntax/kconfig.vim
@@ -1,6 +1,6 @@
 " Vim syntax file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-14
+" Latest Revision:  2009-05-25
 
 if exists("b:current_syntax")
   finish
@@ -666,9 +666,9 @@ syn keyword kconfigTodo               co
 
 syn match   kconfigComment            display '#.*$' contains=kconfigTodo
 
-syn keyword kconfigKeyword            config menuconfig comment menu mainmenu
+syn keyword kconfigKeyword            config menuconfig comment mainmenu
 
-syn keyword kconfigConditional        choice endchoice if endif
+syn keyword kconfigConditional        menu endmenu choice endchoice if endif
 
 syn keyword kconfigPreProc            source
                                       \ nextgroup=kconfigPath
--- a/runtime/syntax/kscript.vim
+++ b/runtime/syntax/kscript.vim
@@ -2,7 +2,7 @@
 " Language:	kscript
 " Maintainer:	Thomas Capricelli <orzel@yalbi.com>
 " URL:		http://aquila.rezel.enst.fr/thomas/vim/kscript.vim
-" CVS:		$Id$
+" CVS:		$Id: kscript.vim,v 1.1 2004/06/13 17:40:02 vimboss Exp $
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/lex.vim
+++ b/runtime/syntax/lex.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Lex
-" Maintainer:	Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change:	Sep 06, 2005
-" Version:	7
+" Maintainer:	Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
+" Last Change:	Sep 11, 2009
+" Version:	10
 " URL:	http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 "
 " Option:
@@ -16,7 +16,7 @@ elseif exists("b:current_syntax")
   finish
 endif
 
-" Read the C syntax to start with
+" Read the C/C++ syntax to start with
 if version >= 600
   if exists("lex_uses_cpp")
     runtime! syntax/cpp.vim
@@ -36,32 +36,60 @@ endif
 " --- Lex stuff ---
 " --- ========= ---
 
-"I'd prefer to use lex.* , but it doesn't handle forward definitions yet
+"I'd prefer to use lex.* , but vim doesn't handle forward definitions yet
 syn cluster lexListGroup		contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatString,lexPatTag,lexPatTag,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,lexPatCode,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
-syn cluster lexListPatCodeGroup	contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatTag,lexPatTag,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
+syn cluster lexListPatCodeGroup	contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatTag,lexPatTag,lexPatTagZoneStart,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
 
 " Abbreviations Section
-syn region lexAbbrvBlock	start="^\(\h\+\s\|%{\)" end="^\ze%%$"	skipnl	nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState
+if has("folding")
+ syn region lexAbbrvBlock	fold start="^\(\h\+\s\|%{\)"	end="^\ze%%$"	skipnl	nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState
+else
+ syn region lexAbbrvBlock	start="^\(\h\+\s\|%{\)"	end="^\ze%%$"	skipnl	nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState
+endif
 syn match  lexAbbrv		"^\I\i*\s"me=e-1			skipwhite	contained nextgroup=lexAbbrvRegExp
 syn match  lexAbbrv		"^%[sx]"					contained
 syn match  lexAbbrvRegExp	"\s\S.*$"lc=1				contained nextgroup=lexAbbrv,lexInclude
-syn region lexInclude	matchgroup=lexSep	start="^%{" end="%}"	contained	contains=ALLBUT,@lexListGroup
-syn region lexAbbrvComment	start="^\s\+/\*"	end="\*/"			contains=@Spell
-syn region lexStartState	matchgroup=lexAbbrv	start="^%\a\+"	end="$"			contained
+if has("folding")
+ syn region lexInclude	fold matchgroup=lexSep	start="^%{"	end="%}"	contained	contains=ALLBUT,@lexListGroup
+ syn region lexAbbrvComment	fold			start="^\s\+/\*"	end="\*/"	contains=@Spell
+ syn region lexStartState	fold matchgroup=lexAbbrv	start="^%\a\+"	end="$"	contained
+else
+ syn region lexInclude	matchgroup=lexSep		start="^%{"	end="%}"	contained	contains=ALLBUT,@lexListGroup
+ syn region lexAbbrvComment				start="^\s\+/\*"	end="\*/"	contains=@Spell
+ syn region lexStartState	matchgroup=lexAbbrv		start="^%\a\+"	end="$"	contained
+endif
 
 "%% : Patterns {Actions}
-syn region lexPatBlock	matchgroup=Todo	start="^%%$" matchgroup=Todo end="^%%$"	skipnl skipwhite contains=lexPat,lexPatTag,lexPatComment
-syn region lexPat		start=+\S+ skip="\\\\\|\\."	end="\s"me=e-1	contained nextgroup=lexMorePat,lexPatSep contains=lexPatString,lexSlashQuote,lexBrace
-syn region lexBrace	start="\[" skip=+\\\\\|\\+		end="]"		contained
-syn region lexPatString	matchgroup=String start=+"+	skip=+\\\\\|\\"+	matchgroup=String end=+"+	contained
-syn match  lexPatTag	"^<\I\i*\(,\I\i*\)*>*"			contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep
+if has("folding")
+ syn region lexPatBlock	fold matchgroup=Todo	start="^%%$" matchgroup=Todo	end="^%%$"	skipnl skipwhite	contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat
+ syn region lexPat		fold			start=+\S+ skip="\\\\\|\\."	end="\s"me=e-1		contained nextgroup=lexMorePat,lexPatSep contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace
+ syn region lexBrace	fold			start="\[" skip=+\\\\\|\\+	end="]"			contained
+ syn region lexPatString	fold matchgroup=String	start=+"+	skip=+\\\\\|\\"+	matchgroup=String end=+"+	contained
+else
+ syn region lexPatBlock	matchgroup=Todo		start="^%%$" matchgroup=Todo	end="^%%$"	skipnl skipwhite	contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat
+ syn region lexPat					start=+\S+ skip="\\\\\|\\."	end="\s"me=e-1		contained nextgroup=lexMorePat,lexPatSep contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace
+ syn region lexBrace				start="\[" skip=+\\\\\|\\+	end="]"			contained
+ syn region lexPatString	matchgroup=String		start=+"+	skip=+\\\\\|\\"+	matchgroup=String end=+"+	contained
+endif
+syn match  lexPatTag	"^<\I\i*\(,\I\i*\)*>"			contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep
+syn match  lexPatTagZone	"^<\I\i*\(,\I\i*\)*>\s*\ze{"		contained nextgroup=lexPatTagZoneStart
 syn match  lexPatTag	+^<\I\i*\(,\I\i*\)*>*\(\\\\\)*\\"+		contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep
-syn region lexPatComment	start="^\s*/\*" end="\*/"		skipnl	contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
+if has("folding")
+ syn region  lexPatTagZoneStart matchgroup=lexPatTag	fold	start='{' end='}'	contained contains=lexPat,lexPatComment
+ syn region lexPatComment	start="\s\+/\*" end="\*/"	fold	skipnl	contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
+else
+ syn region  lexPatTagZoneStart matchgroup=lexPatTag		start='{' end='}'	contained contains=lexPat,lexPatComment
+ syn region lexPatComment	start="\s\+/\*" end="\*/"		skipnl	contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
+endif
 syn match  lexPatCodeLine	".*$"					contained contains=ALLBUT,@lexListGroup
 syn match  lexMorePat	"\s*|\s*$"			skipnl	contained nextgroup=lexPat,lexPatTag,lexPatComment
 syn match  lexPatSep	"\s\+"					contained nextgroup=lexMorePat,lexPatCode,lexPatCodeLine
 syn match  lexSlashQuote	+\(\\\\\)*\\"+				contained
-syn region lexPatCode matchgroup=Delimiter start="{" matchgroup=Delimiter end="}"	skipnl contained contains=ALLBUT,@lexListPatCodeGroup
+if has("folding")
+ syn region lexPatCode matchgroup=Delimiter start="{" end="}"	fold	skipnl contained contains=ALLBUT,@lexListPatCodeGroup
+else
+ syn region lexPatCode matchgroup=Delimiter start="{" end="}"		skipnl contained contains=ALLBUT,@lexListPatCodeGroup
+endif
 
 syn keyword lexCFunctions	BEGIN	input	unput	woutput	yyleng	yylook	yytext
 syn keyword lexCFunctions	ECHO	output	winput	wunput	yyless	yymore	yywrap
@@ -80,9 +108,10 @@ syn sync match lexSyncPat	groupthere lex
 syn sync match lexSyncPat	groupthere lexPatBlock	"^%%$"
 
 " The default highlighting.
-hi def link lexSlashQuote	lexPat
+hi def link lexAbbrvComment	lexPatComment
 hi def link lexBrace	lexPat
-hi def link lexAbbrvComment	lexPatComment
+hi def link lexPatTagZone	lexPatTag
+hi def link lexSlashQuote	lexPat
 
 hi def link lexAbbrvRegExp	Macro
 hi def link lexAbbrv	SpecialChar
--- a/runtime/syntax/lhaskell.vim
+++ b/runtime/syntax/lhaskell.vim
@@ -4,8 +4,8 @@
 "			\begin{code} \end{code} blocks
 " Maintainer:		Haskell Cafe mailinglist <haskell-cafe@haskell.org>
 " Original Author:	Arthur van Leeuwen <arthurvl@cs.uu.nl>
-" Last Change:		2008 Jul 01
-" Version:		1.02
+" Last Change:		2009 May 08
+" Version:		1.04
 "
 " Thanks to Ian Lynagh for thoughtful comments on initial versions and
 " for the inspiration for writing this in the first place.
@@ -29,8 +29,10 @@
 " 2004 February 20: Cleaned up the guessing and overriding a bit
 " 2004 February 23: Cleaned up syntax highlighting for \begin{code} and
 "		    \end{code}, added some clarification to the attributions
-" 2008 July 1:      Removed % from guess list, as it totally breaks  plain
-"		    text markup guessing
+" 2008 July 1:      Removed % from guess list, as it totally breaks plain
+"                   text markup guessing
+" 2009 April 29:    Fixed highlighting breakage in TeX mode, 
+"                   thanks to Kalman Noel
 "
 
 
@@ -73,14 +75,14 @@ call cursor(1,1)
 "   - \begin{env}       (for env != code)
 "   - \part, \chapter, \section, \subsection, \subsubsection, etc
 if b:lhs_markup == "unknown"
-    if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub \)*section\|\\chapter|\\part','W') != 0
+    if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub\)*section\|\\chapter|\\part','W') != 0
 	let b:lhs_markup = "tex"
     else
 	let b:lhs_markup = "plain"
     endif
 endif
 
-" If user wants us to highlight TeX syntax or guess thinks it's TeX,  read it.
+" If user wants us to highlight TeX syntax or guess thinks it's TeX, read it.
 if b:lhs_markup == "tex"
     if version < 600
 	source <sfile>:p:h/tex.vim
@@ -91,6 +93,9 @@ if b:lhs_markup == "tex"
 	" Tex.vim removes "_" from 'iskeyword', but we need it for Haskell.
 	setlocal isk+=_
     endif
+    syntax cluster lhsTeXContainer contains=tex.*Zone,texAbstract
+else
+    syntax cluster lhsTeXContainer contains=.*
 endif
 
 " Literate Haskell is Haskell in between text, so at least read Haskell
@@ -101,8 +106,8 @@ else
     syntax include @haskellTop syntax/haskell.vim
 endif
 
-syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack
-syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,@beginCode
+syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack containedin=@lhsTeXContainer
+syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,@beginCode containedin=@lhsTeXContainer
 
 syntax match lhsBirdTrack "^>" contained
 
--- a/runtime/syntax/lilo.vim
+++ b/runtime/syntax/lilo.vim
@@ -1,10 +1,8 @@
 " Vim syntax file
-" This is a GENERATED FILE. Please always refer to source file at the URI below.
 " Language: lilo configuration (lilo.conf)
-" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
-" Last Change: 2004-07-20
-" URL: http://trific.ath.cx/Ftp/vim/syntax/lilo.vim
-
+" Maintainer: help wanted!
+" Previous Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2009-01-27
 
 " Setup
 if version >= 600
@@ -64,7 +62,7 @@ syn keyword liloDiskOpt sectors heads cy
 
 " String
 syn keyword liloOption menu-title nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
-syn keyword liloKernelOpt append nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
+syn keyword liloKernelOpt append addappend nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
 syn keyword liloImageOpt fallback literal nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
 
 " Hex number
--- a/runtime/syntax/lisp.vim
+++ b/runtime/syntax/lisp.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    Lisp
 " Maintainer:  Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change: Oct 19, 2007
-" Version:     20
+" Last Change: Mar 05, 2009
+" Version:     21
 " URL:	       http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 "
 "  Thanks to F Xavier Noria for a list of 978 Common Lisp symbols
@@ -534,7 +534,8 @@ endif
 
 " ---------------------------------------------------------------------
 " Numbers: supporting integers and floating point numbers {{{1
-syn match lispNumber		"-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\(e[-+]\=\d\+\)\="
+syn match lispNumber		"-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\([dDeEfFlL][-+]\=\d\+\)\="
+syn match lispNumber		"-\=\(\d\+/\d\+\)"
 
 syn match lispSpecial		"\*\w[a-z_0-9-]*\*"
 syn match lispSpecial		!#|[^()'`,"; \t]\+|#!
--- a/runtime/syntax/logtalk.vim
+++ b/runtime/syntax/logtalk.vim
@@ -2,7 +2,7 @@
 "
 " Language:	Logtalk
 " Maintainer:	Paulo Moura <pmoura@logtalk.org>
-" Last Change:	June 16, 2008
+" Last Change:	Oct 31, 2008
 
 
 " Quit when a syntax file was already loaded:
@@ -51,9 +51,9 @@ syn region	logtalkExtCall		matchgroup=lo
 
 " Logtalk opening entity directives
 
-syn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- object("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel
-syn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- protocol("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
-syn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- category("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
+syn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- object("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment
+syn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- protocol("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
+syn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- category("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
 
 
 " Logtalk closing entity directives
--- a/runtime/syntax/lout.vim
+++ b/runtime/syntax/lout.vim
@@ -4,7 +4,7 @@
 " Last Change: Son 22 Jun 2003 20:43:26 CEST
 " Filenames:   *.lout,*.lt
 " URL:			http://www.cvjb.de/comp/vim/lout.vim
-" $Id$
+" $Id: lout.vim,v 1.1 2004/06/13 17:52:18 vimboss Exp $
 "
 " Lout: Basser Lout document formatting system.
 
--- a/runtime/syntax/mail.vim
+++ b/runtime/syntax/mail.vim
@@ -2,7 +2,7 @@
 " Language:		Mail file
 " Previous Maintainer:	Felix von Leitner <leitner@math.fu-berlin.de>
 " Maintainer:		Gautam Iyer <gi1242@users.sourceforge.net>
-" Last Change:		Thu 17 Jan 2008 11:25:44 AM PST
+" Last Change:		Thu 06 Nov 2008 10:10:55 PM PST
 
 " Quit when a syntax file was already loaded
 if exists("b:current_syntax")
@@ -24,28 +24,35 @@ syn case match
 " emails
 " According to RFC 2822 any printable ASCII character can appear in a field
 " name, except ':'.
-syn region	mailHeader	contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1
+syn region	mailHeader	contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1 fold
 syn match	mailHeaderKey	contained contains=mailEmail,@NoSpell "^From\s.*\d\d\d\d$"
+
+" Nothing else depends on case. 
+syn case ignore
+
+" Headers in properly quoted (with "> " or ">") emails are matched
+syn region	mailHeader	keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1 fold
+
 " Usenet headers
 syn match	mailHeaderKey	contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(Newsgroups|Followup-To|Message-ID|Supersedes|Control):.*$"
 
-syn case ignore
-" Nothing else depends on case. Headers in properly quoted (with "> " or ">")
-" emails are matched
-syn region	mailHeader	keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1
 
 syn region	mailHeaderKey	contained contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> ?)*)@<=(to|b?cc):" skip=",$" end="$"
-syn match	mailHeaderKey	contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$"
+syn match	mailHeaderKey	contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$" fold
 syn match	mailHeaderKey	contained contains=@NoSpell "\v(^(\> ?)*)@<=date:"
-syn match	mailSubject	contained "\v^subject:.*$"
+syn match	mailSubject	contained "\v^subject:.*$" fold
 syn match	mailSubject	contained contains=@NoSpell "\v(^(\> ?)+)@<=subject:.*$"
 
 " Anything in the header between < and > is an email address
 syn match	mailHeaderEmail	contained contains=@NoSpell "<.\{-}>"
 
 " Mail Signatures. (Begin with "-- ", end with change in quote level)
-syn region	mailSignature	keepend contains=@mailLinks,@mailQuoteExps start="^--\s$" end="^$" end="^\(> \?\)\+"me=s-1
-syn region	mailSignature	keepend contains=@mailLinks,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)--\s$" end="^\z1$" end="^\z1\@!"me=s-1 end="^\z1\(> \?\)\+"me=s-1
+syn region	mailSignature	keepend contains=@mailLinks,@mailQuoteExps start="^--\s$" end="^$" end="^\(> \?\)\+"me=s-1 fold
+syn region	mailSignature	keepend contains=@mailLinks,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)--\s$" end="^\z1$" end="^\z1\@!"me=s-1 end="^\z1\(> \?\)\+"me=s-1 fold
+
+" Treat verbatim Text special.
+syn region	mailVerbatim	contains=@NoSpell keepend start="^#v+$" end="^#v-$" fold 
+syn region	mailVerbatim	contains=@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)#v+$" end="\z1#v-$" fold 
 
 " URLs start with a known protocol or www,web,w3.
 syn match mailURL contains=@NoSpell `\v<(((https?|ftp|gopher)://|(mailto|file|news):)[^' 	<>"]+|(www|web|w3)[a-z0-9_-]*\.[a-z0-9._-]+\.[^' 	<>"]+)[a-z0-9/]`
@@ -59,13 +66,13 @@ syn match mailQuoteExp4	contained "\v^(\
 syn match mailQuoteExp5	contained "\v^(\> ?){5}"
 syn match mailQuoteExp6	contained "\v^(\> ?){6}"
 
-" Even and odd quoted lines. order is imporant here!
-syn match mailQuoted1	contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\([a-z]\+>\|[]|}>]\).*$"
-syn match mailQuoted2	contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{2}.*$"
-syn match mailQuoted3	contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{3}.*$"
-syn match mailQuoted4	contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{4}.*$"
-syn match mailQuoted5	contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{5}.*$"
-syn match mailQuoted6	contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{6}.*$"
+" Even and odd quoted lines. Order is important here!
+syn region	mailQuoted6	keepend contains=mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{5}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
+syn region	mailQuoted5	keepend contains=mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{4}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
+syn region	mailQuoted4	keepend contains=mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{3}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
+syn region	mailQuoted3	keepend contains=mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{2}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
+syn region	mailQuoted2	keepend contains=mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{1}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
+syn region	mailQuoted1	keepend contains=mailQuoted2,mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z([a-z]\+>\|[]|}>]\)" end="^\z1\@!" fold
 
 " Need to sync on the header. Assume we can do that within 100 lines
 if exists("mail_minlines")
@@ -75,6 +82,7 @@ else
 endif
 
 " Define the default highlighting.
+hi def link mailVerbatim	Special
 hi def link mailHeader		Statement
 hi def link mailHeaderKey	Type
 hi def link mailSignature	PreProc
--- a/runtime/syntax/man.vim
+++ b/runtime/syntax/man.vim
@@ -1,9 +1,9 @@
 " Vim syntax file
 " Language:	Man page
-" Maintainer:	Nam SungHyun <namsh@kldp.org>
+" Maintainer:	SungHyun Nam <goweol@gmail.com>
 " Previous Maintainer:	Gautam H. Mudunuri <gmudunur@informatica.com>
 " Version Info:
-" Last Change:	2007 Dec 30
+" Last Change:	2008 Sep 17
 
 " Additional highlighting by Johannes Tanzler <johannes.tanzler@aon.at>:
 "	* manSubHeading
--- a/runtime/syntax/masm.vim
+++ b/runtime/syntax/masm.vim
@@ -2,8 +2,8 @@
 " Language:	Microsoft Macro Assembler (80x86)
 " Orig Author:	Rob Brady <robb@datatone.com>
 " Maintainer:	Wu Yongwei <wuyongwei@gmail.com>
-" Last Change:	$Date$
-" $Revision$
+" Last Change:	$Date: 2007/04/21 13:20:15 $
+" $Revision: 1.44 $
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/master.vim
+++ b/runtime/syntax/master.vim
@@ -1,9 +1,9 @@
 " Vim syntax file
 " Language:	Focus Master File
 " Maintainer:	Rob Brady <robb@datatone.com>
-" Last Change:	$Date$
+" Last Change:	$Date: 2004/06/13 15:54:03 $
 " URL: http://www.datatone.com/~robb/vim/syntax/master.vim
-" $Revision$
+" $Revision: 1.1 $
 
 " this is a very simple syntax file - I will be improving it
 " add entire DEFINE syntax
--- a/runtime/syntax/matlab.vim
+++ b/runtime/syntax/matlab.vim
@@ -1,8 +1,15 @@
 " Vim syntax file
 " Language:	Matlab
-" Maintainer:	Preben 'Peppe' Guldberg <peppe-vim@wielders.org>
+" Maintainer:	Maurizio Tranchero - maurizio.tranchero@gmail.com
+" Credits:	Preben 'Peppe' Guldberg <peppe-vim@wielders.org>
 "		Original author: Mario Eusebio
-" Last Change:	30 May 2003
+" Change History:
+" 		Sat Jul 25 16:14:55 CEST 2009
+"		- spell check enabled only for comments (thanks to James Vega)
+"
+" 		Tue Apr 21 10:03:31 CEST 2009
+"		- added object oriented support
+"		- added multi-line comments %{ ...\n... %}
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -16,6 +23,9 @@ syn keyword matlabStatement		return
 syn keyword matlabLabel			case switch
 syn keyword matlabConditional		else elseif end if otherwise
 syn keyword matlabRepeat		do for while
+" MT_ADDON - added exception-specific keywords
+syn keyword matlabExceptions		try catch
+syn keyword matlabOO			classdef properties events methods
 
 syn keyword matlabTodo			contained  TODO
 
@@ -31,7 +41,8 @@ syn match matlabLineContinuation	"\.\{3}
 "syn match matlabIdentifier		"\<\a\w*\>"
 
 " String
-syn region matlabString			start=+'+ end=+'+	oneline
+" MT_ADDON - added 'skip' in order to deal with 'tic' escaping sequence 
+syn region matlabString			start=+'+ end=+'+	oneline skip=+''+ contains=@Spell
 
 " If you don't like tabs
 syn match matlabTab			"\t"
@@ -50,7 +61,10 @@ syn match matlabTransposeOperator	"[])a-
 
 syn match matlabSemicolon		";"
 
-syn match matlabComment			"%.*$"	contains=matlabTodo,matlabTab
+syn match matlabComment			"%.*$"	contains=matlabTodo,matlabTab,@Spell
+" MT_ADDON - correctly highlights words after '...' as comments
+syn match matlabComment			"\.\.\..*$"	contains=matlabTodo,matlabTab,@Spell
+syn region matlabMultilineComment	start=+%{+ end=+%}+ contains=matlabTodo,matlabTab,@Spell
 
 syn keyword matlabOperator		break zeros default margin round ones rand
 syn keyword matlabOperator		ceil floor size clear zeros eye mean std cov
@@ -75,10 +89,11 @@ if version >= 508 || !exists("did_matlab
   endif
 
   HiLink matlabTransposeOperator	matlabOperator
-  HiLink matlabOperator		Operator
-  HiLink matlabLineContinuation	Special
+  HiLink matlabOperator			Operator
+  HiLink matlabLineContinuation		Special
   HiLink matlabLabel			Label
   HiLink matlabConditional		Conditional
+  HiLink matlabExceptions		Conditional
   HiLink matlabRepeat			Repeat
   HiLink matlabTodo			Todo
   HiLink matlabString			String
@@ -86,12 +101,14 @@ if version >= 508 || !exists("did_matlab
   HiLink matlabTransposeOther		Identifier
   HiLink matlabNumber			Number
   HiLink matlabFloat			Float
-  HiLink matlabFunction		Function
+  HiLink matlabFunction			Function
   HiLink matlabError			Error
-  HiLink matlabImplicit		matlabStatement
+  HiLink matlabImplicit			matlabStatement
   HiLink matlabStatement		Statement
+  HiLink matlabOO			Statement
   HiLink matlabSemicolon		SpecialChar
   HiLink matlabComment			Comment
+  HiLink matlabMultilineComment		Comment
 
   HiLink matlabArithmeticOperator	matlabOperator
   HiLink matlabRelationalOperator	matlabOperator
--- a/runtime/syntax/maxima.vim
+++ b/runtime/syntax/maxima.vim
@@ -227,7 +227,7 @@ syn match maximaFloat /\<\d\+[BbDdEeSs][
 " Comments:
 " maxima supports /* ... */ (like C)
 syn keyword maximaTodo contained	TODO Todo DEBUG
-syn region  maximaCommentBlock	start="/\*" end="\*/"	contains=maximaString,maximaTodo
+syn region  maximaCommentBlock	start="/\*" end="\*/"	contains=maximaString,maximaTodo,maximaCommentBlock
 
 " synchronizing
 syn sync match maximaSyncComment	grouphere maximaCommentBlock "/*"
--- a/runtime/syntax/mgl.vim
+++ b/runtime/syntax/mgl.vim
@@ -4,7 +4,7 @@
 " Last Change:	2006 Feb 21
 " Maintainer:  Gero Kuhlmann <gero@gkminix.han.de>
 "
-" $Id$
+" $Id: mgl.vim,v 1.1 2006/02/21 22:08:20 vimboss Exp $
 "
 if version < 600
   syntax clear
--- a/runtime/syntax/mma.vim
+++ b/runtime/syntax/mma.vim
@@ -4,7 +4,7 @@
 " Last Change:  Thu May 19 21:36:04 CDT 2005
 " Source:       http://members.wri.com/layland/vim/syntax/mma.vim
 "               http://vim.sourceforge.net/scripts/script.php?script_id=1273
-" Id:           $Id$
+" Id:           $Id: mma.vim,v 1.4 2006/04/14 20:40:38 vimboss Exp $
 " NOTE:
 " 
 " Empty .m files will automatically be presumed as Matlab files
--- a/runtime/syntax/mysql.vim
+++ b/runtime/syntax/mysql.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:     mysql
 " Maintainer:   Kenneth J. Pronovici <pronovic@ieee.org>
-" Last Change:  $LastChangedDate: 2007-12-19 10:59:39 -0600 (Wed, 19 Dec 2007) $
+" Last Change:  $LastChangedDate: 2009-06-29 23:08:37 -0500 (Mon, 29 Jun 2009) $
 " Filenames:    *.mysql
 " URL:          ftp://cedar-solutions.com/software/mysql.vim
 " Note:         The definitions below are taken from the mysql user manual as of April 2002, for version 3.23
@@ -36,7 +36,7 @@ syn keyword mysqlKeyword         match m
 syn keyword mysqlKeyword         natural no
 syn keyword mysqlKeyword         on optimize option optionally order outer outfile
 syn keyword mysqlKeyword         pack_keys partial password primary privileges procedure process processlist
-syn keyword mysqlKeyword         read references reload rename replace restrict returns revoke row rows
+syn keyword mysqlKeyword         read references reload rename replace restrict returns revoke right row rows
 syn keyword mysqlKeyword         second select show shutdown soname sql_big_result sql_big_selects sql_big_tables sql_log_off
 syn keyword mysqlKeyword         sql_log_update sql_low_priority_updates sql_select_limit sql_small_result sql_warnings starting
 syn keyword mysqlKeyword         status straight_join string
@@ -57,7 +57,7 @@ syn region mysqlString           start=+
 " Numbers and hexidecimal values
 syn match mysqlNumber            "-\=\<[0-9]*\>"
 syn match mysqlNumber            "-\=\<[0-9]*\.[0-9]*\>"
-syn match mysqlNumber            "-\=\<[0-9]*e[+-]\=[0-9]*\>"
+syn match mysqlNumber            "-\=\<[0-9][0-9]*e[+-]\=[0-9]*\>"
 syn match mysqlNumber            "-\=\<[0-9]*\.[0-9]*e[+-]\=[0-9]*\>"
 syn match mysqlNumber            "\<0x[abcdefABCDEF0-9]*\>"
 
--- a/runtime/syntax/ncf.vim
+++ b/runtime/syntax/ncf.vim
@@ -2,7 +2,7 @@
 " Language:     Novell "NCF" Batch File
 " Maintainer:   Jonathan J. Miner <miner@doit.wisc.edu>
 " Last Change:	Tue, 04 Sep 2001 16:20:33 CDT
-" $Id$
+" $Id: ncf.vim,v 1.1 2004/06/13 16:31:58 vimboss Exp $
 
 " Remove any old syntax stuff hanging around
 if version < 600
--- a/runtime/syntax/netrc.vim
+++ b/runtime/syntax/netrc.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         netrc(5) configuration file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-19
+" Latest Revision:  2010-01-03
 
 if exists("b:current_syntax")
   finish
@@ -11,12 +11,13 @@ let s:cpo_save = &cpo
 set cpo&vim
 
 syn keyword netrcKeyword    machine nextgroup=netrcMachine skipwhite skipnl
-syn keyword netrcKeyword    login nextgroup=netrcLogin,netrcSpecial
-                            \ skipwhite skipnl
+syn keyword netrcKeyword    account
+                          \ login
+                          \ nextgroup=netrcLogin,netrcSpecial skipwhite skipnl
 syn keyword netrcKeyword    password nextgroup=netrcPassword skipwhite skipnl
 syn keyword netrcKeyword    default
-syn keyword netrcKeyword    macdef nextgroup=netrcInit,netrcMacroName
-                            \ skipwhite skipnl
+syn keyword netrcKeyword    macdef
+                          \ nextgroup=netrcInit,netrcMacroName skipwhite skipnl
 syn region  netrcMacro      contained start='.' end='^$'
 
 syn match   netrcMachine    contained display '\S\+'
@@ -25,14 +26,14 @@ syn match   netrcLogin      contained di
 syn match   netrcLogin      contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
 syn match   netrcPassword   contained display '\S\+'
 syn match   netrcPassword   contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
-syn match   netrcMacroName  contained display '\S\+' nextgroup=netrcMacro
-                            \ skipwhite skipnl
+syn match   netrcMacroName  contained display '\S\+'
+                          \ nextgroup=netrcMacro skipwhite skipnl
 syn match   netrcMacroName  contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
-                            \ nextgroup=netrcMacro skipwhite skipnl
+                          \ nextgroup=netrcMacro skipwhite skipnl
 
 syn keyword netrcSpecial    contained anonymous
-syn match   netrcInit       contained '\<init$' nextgroup=netrcMacro
-                            \ skipwhite skipnl
+syn match   netrcInit       contained '\<init$'
+                          \ nextgroup=netrcMacro skipwhite skipnl
 
 syn sync fromstart
 
--- a/runtime/syntax/netrw.vim
+++ b/runtime/syntax/netrw.vim
@@ -1,7 +1,7 @@
 " Language   : Netrw Remote-Directory Listing Syntax
 " Maintainer : Charles E. Campbell, Jr.
-" Last change: Feb 06, 2008
-" Version    : 12
+" Last change: Jan 14, 2009
+" Version    : 16
 " ---------------------------------------------------------------------
 
 " Syntax Clearing: {{{1
@@ -16,85 +16,91 @@ endif
 syn cluster NetrwGroup		contains=netrwHide,netrwSortBy,netrwSortSeq,netrwQuickHelp,netrwVersion,netrwCopyTgt
 syn cluster NetrwTreeGroup	contains=netrwDir,netrwSymLink,netrwExe
 
-syn match  netrwSpecial		"\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)"		contains=netrwClassify
-syn match  netrwDir		"\.\{1,2}/"						contains=netrwClassify
-syn match  netrwDir		"\%(\S\+ \)*\S\+/"					contains=netrwClassify
-syn match  netrwSizeDate	"\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s"			contains=netrwDateSep skipwhite nextgroup=netrwTime
-syn match  netrwSymLink		"\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)"  			contains=netrwClassify
-syn match  netrwExe		"\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" 			contains=netrwClassify
-syn match  netrwTreeBar		"^\%(| \)*"						contains=netrwTreeBarSpace	nextgroup=@netrwTreeGroup
-syn match  netrwTreeBarSpace	" "				contained
+syn match  netrwPlain		"\(\S\+ \)*\S\+"					contains=@NoSpell
+syn match  netrwSpecial		"\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)"		contains=netrwClassify,@NoSpell
+syn match  netrwDir		"\.\{1,2}/"						contains=netrwClassify,@NoSpell
+syn match  netrwDir		"\%(\S\+ \)*\S\+/"					contains=netrwClassify,@NoSpell
+syn match  netrwSizeDate	"\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s"	skipwhite	contains=netrwDateSep,@NoSpell	nextgroup=netrwTime
+syn match  netrwSymLink		"\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)"  			contains=netrwClassify,@NoSpell
+syn match  netrwExe		"\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" 			contains=netrwClassify,@NoSpell
+syn match  netrwTreeBar		"^\%([-+|] \)\+"					contains=netrwTreeBarSpace	nextgroup=@netrwTreeGroup
+syn match  netrwTreeBarSpace	" "					contained
 
-syn match  netrwClassify	"[*=|@/]\ze\%(\s\{2,}\|$\)"	contained
-syn match  netrwDateSep		"/"				contained
-syn match  netrwTime		"\d\{1,2}:\d\{2}:\d\{2}"	contained		contains=netrwTimeSep
+syn match  netrwClassify	"[*=|@/]\ze\%(\s\{2,}\|$\)"		contained
+syn match  netrwDateSep		"/"					contained
+syn match  netrwTime		"\d\{1,2}:\d\{2}:\d\{2}"		contained	contains=netrwTimeSep
 syn match  netrwTimeSep		":"
 
-syn match  netrwComment		'".*\%(\t\|$\)'						contains=@NetrwGroup
-syn match  netrwHide		'^"\s*\(Hid\|Show\)ing:'	skipwhite nextgroup=netrwHidePat
+syn match  netrwComment		'".*\%(\t\|$\)'						contains=@NetrwGroup,@NoSpell
+syn match  netrwHide		'^"\s*\(Hid\|Show\)ing:'	skipwhite		contains=@NoSpell		nextgroup=netrwHidePat
 syn match  netrwSlash		"/"				contained
-syn match  netrwHidePat		"[^,]\+"			contained skipwhite nextgroup=netrwHideSep
-syn match  netrwHideSep		","				contained transparent skipwhite nextgroup=netrwHidePat
-syn match  netrwSortBy		"Sorted by"			contained transparent skipwhite nextgroup=netrwList
-syn match  netrwSortSeq		"Sort sequence:"		contained transparent skipwhite nextgroup=netrwList
-syn match  netrwCopyTgt		"Copy/Move Tgt:"		contained transparent skipwhite nextgroup=netrwList
-syn match  netrwList		".*$"				contained		contains=netrwComma
+syn match  netrwHidePat		"[^,]\+"			contained skipwhite	contains=@NoSpell		nextgroup=netrwHideSep
+syn match  netrwHideSep		","				contained skipwhite					nextgroup=netrwHidePat
+syn match  netrwSortBy		"Sorted by"			contained transparent skipwhite				nextgroup=netrwList
+syn match  netrwSortSeq		"Sort sequence:"		contained transparent skipwhite			 	nextgroup=netrwList
+syn match  netrwCopyTgt		"Copy/Move Tgt:"		contained transparent skipwhite				nextgroup=netrwList
+syn match  netrwList		".*$"				contained		contains=netrwComma,@NoSpell
 syn match  netrwComma		","				contained
-syn region netrwQuickHelp	matchgroup=Comment start="Quick Help:\s\+" end="$"	contains=netrwHelpCmd keepend contained
-syn match  netrwHelpCmd		"\S\ze:"			contained skipwhite nextgroup=netrwCmdSep
+syn region netrwQuickHelp	matchgroup=Comment start="Quick Help:\s\+" end="$"	contains=netrwHelpCmd,@NoSpell	keepend contained
+syn match  netrwHelpCmd		"\S\ze:"			contained skipwhite	contains=@NoSpell		nextgroup=netrwCmdSep
 syn match  netrwCmdSep		":"				contained nextgroup=netrwCmdNote
-syn match  netrwCmdNote		".\{-}\ze  "			contained
-syn match  netrwVersion		"(netrw.*)"			contained
+syn match  netrwCmdNote		".\{-}\ze  "			contained		contains=@NoSpell
+syn match  netrwVersion		"(netrw.*)"			contained		contains=@NoSpell
 
 " -----------------------------
 " Special filetype highlighting {{{1
 " -----------------------------
 if exists("g:netrw_special_syntax") && netrw_special_syntax
- syn match netrwBak		"\(\S\+ \)*\S\+\.bak\>"				contains=netrwTreeBar
- syn match netrwCompress	"\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>"	contains=netrwTreeBar
- syn match netrwData		"\(\S\+ \)*\S\+\.dat\>"				contains=netrwTreeBar
- syn match netrwHdr		"\(\S\+ \)*\S\+\.h\>"				contains=netrwTreeBar
- syn match netrwLib		"\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>"		contains=netrwTreeBar
- syn match netrwMakeFile	"\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>"	contains=netrwTreeBar
- syn match netrwObj		"\(\S\+ \)*\S*\.\%(o\|obj\)\>"			contains=netrwTreeBar
- syn match netrwTags    	"\<tags\>"					contains=netrwTreeBar
- syn match netrwTags		"\<\(ANmenu\|ANtags\)\>"			contains=netrwTreeBar
- syn match netrwTilde		"\(\S\+ \)*\S\+\~\>"				contains=netrwTreeBar
- syn match netrwTmp		"\<tmp\(\S\+ \)*\S\+\>\|\(\S\+ \)*\S*tmp\>"	contains=netrwTreeBar
+ syn match netrwBak		"\(\S\+ \)*\S\+\.bak\>"				contains=netrwTreeBar,@NoSpell
+ syn match netrwCompress	"\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>"	contains=netrwTreeBar,@NoSpell
+ if has("unix")
+  syn match netrwCoreDump	"\<core\%(\.\d\+\)\=\>"				contains=netrwTreeBar,@NoSpell
+ endif
+ syn match netrwData		"\(\S\+ \)*\S\+\.dat\>"				contains=netrwTreeBar,@NoSpell
+ syn match netrwHdr		"\(\S\+ \)*\S\+\.h\>"				contains=netrwTreeBar,@NoSpell
+ syn match netrwLib		"\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>"		contains=netrwTreeBar,@NoSpell
+ syn match netrwMakeFile	"\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>"	contains=netrwTreeBar,@NoSpell
+ syn match netrwObj		"\(\S\+ \)*\S*\.\%(o\|obj\)\>"			contains=netrwTreeBar,@NoSpell
+ syn match netrwTags    	"\<tags\>"					contains=netrwTreeBar,@NoSpell
+ syn match netrwTags		"\<\(ANmenu\|ANtags\)\>"			contains=netrwTreeBar,@NoSpell
+ syn match netrwTilde		"\(\S\+ \)*\S\+\~\>"				contains=netrwTreeBar,@NoSpell
+ syn match netrwTmp		"\<tmp\(\S\+ \)*\S\+\>\|\(\S\+ \)*\S*tmp\>"	contains=netrwTreeBar,@NoSpell
 endif
 
 " ---------------------------------------------------------------------
 " Highlighting Links: {{{1
 if !exists("did_drchip_netrwlist_syntax")
  let did_drchip_netrwlist_syntax= 1
- hi link netrwClassify	Function
- hi link netrwCmdSep	Delimiter
- hi link netrwComment	Comment
- hi link netrwDir	Directory
- hi link netrwHelpCmd	Function
- hi link netrwHidePat	Statement
- hi link netrwList	Statement
- hi link netrwVersion	Identifier
- hi link netrwSymLink	Question
- hi link netrwExe	PreProc
- hi link netrwDateSep	Delimiter
+ hi default link netrwClassify	Function
+ hi default link netrwCmdSep	Delimiter
+ hi default link netrwComment	Comment
+ hi default link netrwDir	Directory
+ hi default link netrwHelpCmd	Function
+ hi default link netrwHidePat	Statement
+ hi default link netrwHideSep	netrwComment
+ hi default link netrwList	Statement
+ hi default link netrwVersion	Identifier
+ hi default link netrwSymLink	Question
+ hi default link netrwExe	PreProc
+ hi default link netrwDateSep	Delimiter
 
- hi link netrwTreeBar	Special
- hi link netrwTimeSep	netrwDateSep
- hi link netrwComma	netrwComment
- hi link netrwHide	netrwComment
- hi link netrwMarkFile	Identifier
+ hi default link netrwTreeBar	Special
+ hi default link netrwTimeSep	netrwDateSep
+ hi default link netrwComma	netrwComment
+ hi default link netrwHide	netrwComment
+ hi default link netrwMarkFile	Identifier
 
  " special syntax highlighting (see :he g:netrw_special_syntax)
- hi link netrwBak	NonText
- hi link netrwCompress	Folded
- hi link netrwData	DiffChange
- hi link netrwLib	DiffChange
- hi link netrwMakefile	DiffChange
- hi link netrwObj	Folded
- hi link netrwTilde	Folded
- hi link netrwTmp	Folded
- hi link netrwTags	Folded
+ hi default link netrwBak	NonText
+ hi default link netrwCompress	Folded
+ hi default link netrwCoreDump	WarningMsg
+ hi default link netrwData	DiffChange
+ hi default link netrwLib	DiffChange
+ hi default link netrwMakefile	DiffChange
+ hi default link netrwObj	Folded
+ hi default link netrwTilde	Folded
+ hi default link netrwTmp	Folded
+ hi default link netrwTags	Folded
 endif
 
 " Current Syntax: {{{1
--- a/runtime/syntax/opl.vim
+++ b/runtime/syntax/opl.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	OPL
 " Maintainer:	Czo <Olivier.Sirol@lip6.fr>
-" $Id$
+" $Id: opl.vim,v 1.1 2004/06/13 17:34:11 vimboss Exp $
 
 " Open Psion Language... (EPOC16/EPOC32)
 
--- a/runtime/syntax/papp.vim
+++ b/runtime/syntax/papp.vim
@@ -2,7 +2,7 @@
 "
 " Language:	papp
 " Maintainer:	Marc Lehmann <pcg@goof.com>
-" Last Change:	2003 May 11
+" Last Change:	2009 Nov 11
 " Filenames:    *.papp *.pxml *.pxsl
 " URL:		http://papp.plan9.de/
 
@@ -37,6 +37,7 @@ if exists("papp_include_html")
     syn include @PAppHtml syntax/html.vim
   endif
   unlet b:current_syntax
+  syntax spell default  " added by Bram
 endif
 
 if version < 600
--- a/runtime/syntax/po.vim
+++ b/runtime/syntax/po.vim
@@ -1,10 +1,10 @@
 " Vim syntax file
 " Language:	po (gettext)
 " Maintainer:	Dwayne Bailey <dwayne@translate.org.za>
-" Last Change:	2008 Jan 08
+" Last Change:	2008 Sep 17
 " Contributors: Dwayne Bailey (Most advanced syntax highlighting)
 "               Leonardo Fontenelle (Spell checking)
-"               Nam SungHyun <namsh@kldp.org> (Original maintainer)
+"               SungHyun Nam <goweol@gmail.com> (Original maintainer)
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/progress.vim
+++ b/runtime/syntax/progress.vim
@@ -8,7 +8,7 @@
 "			Mikhail Kuperblum	<mikhail@whasup.com>
 "			John Florian		<jflorian@voyager.net>
 " Last Change:		Wed Apr 12 08:55:35 EST 2006
-" $Id$
+" $Id: progress.vim,v 1.3 2006/04/12 21:48:47 vimboss Exp $
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/prolog.vim
+++ b/runtime/syntax/prolog.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    PROLOG
 " Maintainers: Thomas Koehler <jean-luc@picard.franken.de>
-" Last Change: 2008 April 5
-" URL:	       http://gott-gehabt/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim
+" Last Change: 2009 Dec 04
+" URL:	       http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim
 
 " There are two sets of highlighting in here:
 " If the "prolog_highlighting_clean" variable exists, it is rather sparse.
@@ -63,7 +63,7 @@ if !exists("prolog_highlighting_clean")
   syn match   prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|<\|>\|="
   syn match   prologAsIs     "===\|\\===\|<=\|=>"
 
-  syn match   prologNumber	      "\<[0123456789]*\>"
+  syn match   prologNumber	      "\<[0123456789]*\>'\@!"
   syn match   prologCommentError      "\*/"
   syn match   prologSpecialCharacter  ";"
   syn match   prologSpecialCharacter  "!"
--- a/runtime/syntax/pyrex.vim
+++ b/runtime/syntax/pyrex.vim
@@ -2,7 +2,7 @@
 " Language:	Pyrex
 " Maintainer:	Marco Barisione <marco.bari@people.it>
 " URL:		http://marcobari.altervista.org/pyrex_vim.html
-" Last Change:	2004 May 16
+" Last Change:	2009 Nov 09
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -25,7 +25,7 @@ syn keyword pyrexStatement      cdef typ
 syn keyword pyrexType		int long short float double char object void
 syn keyword pyrexType		signed unsigned
 syn keyword pyrexStructure	struct union enum
-syn keyword pyrexPrecondit	include cimport
+syn keyword pyrexInclude	include cimport
 syn keyword pyrexAccess		public private property readonly extern
 " If someome wants Python's built-ins highlighted probably he
 " also wants Pyrex's built-ins highlighted
@@ -35,9 +35,9 @@ endif
 
 " This deletes "from" from the keywords and re-adds it as a
 " match with lower priority than pyrexForFrom
-syn clear   pythonPreCondit
-syn keyword pythonPreCondit     import
-syn match   pythonPreCondit     "from"
+syn clear   pythonInclude
+syn keyword pythonInclude     import
+syn match   pythonInclude     "from"
 
 " With "for[^:]*\zsfrom" VIM does not match "for" anymore, so
 " I used the slower "\@<=" form
@@ -54,7 +54,7 @@ if version >= 508 || !exists("did_pyrex_
   HiLink pyrexStatement		Statement
   HiLink pyrexType		Type
   HiLink pyrexStructure		Structure
-  HiLink pyrexPrecondit		PreCondit
+  HiLink pyrexInclude		PreCondit
   HiLink pyrexAccess		pyrexStatement
   if exists("python_highlight_builtins") || exists("pyrex_highlight_builtins")
       HiLink pyrexBuiltin	Function
--- a/runtime/syntax/python.vim
+++ b/runtime/syntax/python.vim
@@ -1,143 +1,252 @@
 " Vim syntax file
 " Language:	Python
 " Maintainer:	Neil Schemenauer <nas@python.ca>
-" Updated:	2006-10-15
-"		Added Python 2.4 features 2006 May 4 (Dmitry Vasiliev)
-"
-" Options to control Python syntax highlighting:
+" Last Change:	2009-10-13
+" Credits:	Zvezdan Petkovic <zpetkovic@acm.org>
+"		Neil Schemenauer <nas@python.ca>
+"		Dmitry Vasiliev
 "
-" For highlighted numbers:
-"
-"    let python_highlight_numbers = 1
+"		This version is a major rewrite by Zvezdan Petkovic.
 "
-" For highlighted builtin functions:
-"
-"    let python_highlight_builtins = 1
+"		- introduced highlighting of doctests
+"		- updated keywords, built-ins, and exceptions
+"		- corrected regular expressions for
 "
-" For highlighted standard exceptions:
+"		  * functions
+"		  * decorators
+"		  * strings
+"		  * escapes
+"		  * numbers
+"		  * space error
 "
-"    let python_highlight_exceptions = 1
-"
-" Highlight erroneous whitespace:
+"		- corrected synchronization
+"		- more highlighting is ON by default, except
+"		- space error highlighting is OFF by default
 "
-"    let python_highlight_space_errors = 1
+" Optional highlighting can be controlled using these variables.
 "
-" If you want all possible Python highlighting (the same as setting the
-" preceding options):
+"   let python_no_builtin_highlight = 1
+"   let python_no_doctest_code_highlight = 1
+"   let python_no_doctest_highlight = 1
+"   let python_no_exception_highlight = 1
+"   let python_no_number_highlight = 1
+"   let python_space_error_highlight = 1
 "
-"    let python_highlight_all = 1
+" All the options above can be switched on together.
+"
+"   let python_highlight_all = 1
 "
 
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
+" 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
 elseif exists("b:current_syntax")
   finish
 endif
 
-
-syn keyword pythonStatement	break continue del
-syn keyword pythonStatement	except exec finally
-syn keyword pythonStatement	pass print raise
-syn keyword pythonStatement	return try with
-syn keyword pythonStatement	global assert
-syn keyword pythonStatement	lambda yield
-syn keyword pythonStatement	def class nextgroup=pythonFunction skipwhite
-syn match   pythonFunction	"[a-zA-Z_][a-zA-Z0-9_]*" contained
+" Keep Python keywords in alphabetical order inside groups for easy
+" comparison with the table in the 'Python Language Reference'
+" http://docs.python.org/reference/lexical_analysis.html#keywords.
+" Groups are in the order presented in NAMING CONVENTIONS in syntax.txt.
+" Exceptions come last at the end of each group (class and def below).
+"
+" Keywords 'with' and 'as' are new in Python 2.6
+" (use 'from __future__ import with_statement' in Python 2.5).
+"
+" Some compromises had to be made to support both Python 3.0 and 2.6.
+" We include Python 3.0 features, but when a definition is duplicated,
+" the last definition takes precedence.
+"
+" - 'False', 'None', and 'True' are keywords in Python 3.0 but they are
+"   built-ins in 2.6 and will be highlighted as built-ins below.
+" - 'exec' is a built-in in Python 3.0 and will be highlighted as
+"   built-in below.
+" - 'nonlocal' is a keyword in Python 3.0 and will be highlighted.
+" - 'print' is a built-in in Python 3.0 and will be highlighted as
+"   built-in below (use 'from __future__ import print_function' in 2.6)
+"
+syn keyword pythonStatement	False, None, True
+syn keyword pythonStatement	as assert break continue del exec global
+syn keyword pythonStatement	lambda nonlocal pass print return with yield
+syn keyword pythonStatement	class def nextgroup=pythonFunction skipwhite
+syn keyword pythonConditional	elif else if
 syn keyword pythonRepeat	for while
-syn keyword pythonConditional	if elif else
 syn keyword pythonOperator	and in is not or
-" AS will be a keyword in Python 3
-syn keyword pythonPreCondit	import from as
-syn match   pythonComment	"#.*$" contains=pythonTodo,@Spell
-syn keyword pythonTodo		TODO FIXME XXX contained
+syn keyword pythonException	except finally raise try
+syn keyword pythonInclude	from import
 
 " Decorators (new in Python 2.4)
 syn match   pythonDecorator	"@" display nextgroup=pythonFunction skipwhite
+" The zero-length non-grouping match before the function name is
+" extremely important in pythonFunction.  Without it, everything is
+" interpreted as a function inside the contained environment of
+" doctests.
+" A dot must be allowed because of @MyClass.myfunc decorators.
+syn match   pythonFunction
+      \ "\%(\%(def\s\|class\s\|@\)\s*\)\@<=\h\%(\w\|\.\)*" contained
 
-" strings
-syn region pythonString		matchgroup=Normal start=+[uU]\='+ end=+'+ skip=+\\\\\|\\'+ contains=pythonEscape,@Spell
-syn region pythonString		matchgroup=Normal start=+[uU]\="+ end=+"+ skip=+\\\\\|\\"+ contains=pythonEscape,@Spell
-syn region pythonString		matchgroup=Normal start=+[uU]\="""+ end=+"""+ contains=pythonEscape,@Spell
-syn region pythonString		matchgroup=Normal start=+[uU]\='''+ end=+'''+ contains=pythonEscape,@Spell
-syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]'+ end=+'+ skip=+\\\\\|\\'+ contains=@Spell
-syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]"+ end=+"+ skip=+\\\\\|\\"+ contains=@Spell
-syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]"""+ end=+"""+ contains=@Spell
-syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]'''+ end=+'''+ contains=@Spell
-syn match  pythonEscape		+\\[abfnrtv'"\\]+ contained
-syn match  pythonEscape		"\\\o\{1,3}" contained
-syn match  pythonEscape		"\\x\x\{2}" contained
-syn match  pythonEscape		"\(\\u\x\{4}\|\\U\x\{8}\)" contained
-syn match  pythonEscape		"\\$"
+syn match   pythonComment	"#.*$" contains=pythonTodo,@Spell
+syn keyword pythonTodo		FIXME NOTE NOTES TODO XXX contained
+
+" Triple-quoted strings can contain doctests.
+syn region  pythonString
+      \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
+      \ contains=pythonEscape,@Spell
+syn region  pythonString
+      \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
+      \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell
+syn region  pythonRawString
+      \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
+      \ contains=@Spell
+syn region  pythonRawString
+      \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend
+      \ contains=pythonSpaceError,pythonDoctest,@Spell
+
+syn match   pythonEscape	+\\[abfnrtv'"\\]+ contained
+syn match   pythonEscape	"\\\o\{1,3}" contained
+syn match   pythonEscape	"\\x\x\{2}" contained
+syn match   pythonEscape	"\%(\\u\x\{4}\|\\U\x\{8}\)" contained
+" Python allows case-insensitive Unicode IDs: http://www.unicode.org/charts/
+syn match   pythonEscape	"\\N{\a\+\%(\s\a\+\)*}" contained
+syn match   pythonEscape	"\\$"
 
 if exists("python_highlight_all")
-  let python_highlight_numbers = 1
-  let python_highlight_builtins = 1
-  let python_highlight_exceptions = 1
-  let python_highlight_space_errors = 1
+  if exists("python_no_builtin_highlight")
+    unlet python_no_builtin_highlight
+  endif
+  if exists("python_no_doctest_code_highlight")
+    unlet python_no_doctest_code_highlight
+  endif
+  if exists("python_no_doctest_highlight")
+    unlet python_no_doctest_highlight
+  endif
+  if exists("python_no_exception_highlight")
+    unlet python_no_exception_highlight
+  endif
+  if exists("python_no_number_highlight")
+    unlet python_no_number_highlight
+  endif
+  let python_space_error_highlight = 1
 endif
 
-if exists("python_highlight_numbers")
+" It is very important to understand all details before changing the
+" regular expressions below or their order.
+" The word boundaries are *not* the floating-point number boundaries
+" because of a possible leading or trailing decimal point.
+" The expressions below ensure that all valid number literals are
+" highlighted, and invalid number literals are not.  For example,
+"
+" - a decimal point in '4.' at the end of a line is highlighted,
+" - a second dot in 1.0.0 is not highlighted,
+" - 08 is not highlighted,
+" - 08e0 or 08j are highlighted,
+"
+" and so on, as specified in the 'Python Language Reference'.
+" http://docs.python.org/reference/lexical_analysis.html#numeric-literals
+if !exists("python_no_number_highlight")
   " numbers (including longs and complex)
-  syn match   pythonNumber	"\<0x\x\+[Ll]\=\>"
-  syn match   pythonNumber	"\<\d\+[LljJ]\=\>"
-  syn match   pythonNumber	"\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>"
-  syn match   pythonNumber	"\<\d\+\.\([eE][+-]\=\d\+\)\=[jJ]\=\>"
-  syn match   pythonNumber	"\<\d\+\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>"
+  syn match   pythonNumber	"\<0[oO]\=\o\+[Ll]\=\>"
+  syn match   pythonNumber	"\<0[xX]\x\+[Ll]\=\>"
+  syn match   pythonNumber	"\<0[bB][01]\+[Ll]\=\>"
+  syn match   pythonNumber	"\<\%([1-9]\d*\|0\)[Ll]\=\>"
+  syn match   pythonNumber	"\<\d\+[jJ]\>"
+  syn match   pythonNumber	"\<\d\+[eE][+-]\=\d\+[jJ]\=\>"
+  syn match   pythonNumber
+	\ "\<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@="
+  syn match   pythonNumber
+	\ "\%(^\|\W\)\@<=\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>"
 endif
 
-if exists("python_highlight_builtins")
-  " builtin functions, types and objects, not really part of the syntax
-  syn keyword pythonBuiltin	True False bool enumerate set frozenset help
-  syn keyword pythonBuiltin	reversed sorted sum
-  syn keyword pythonBuiltin	Ellipsis None NotImplemented __import__ abs
-  syn keyword pythonBuiltin	apply buffer callable chr classmethod cmp
-  syn keyword pythonBuiltin	coerce compile complex delattr dict dir divmod
-  syn keyword pythonBuiltin	eval execfile file filter float getattr globals
-  syn keyword pythonBuiltin	hasattr hash hex id input int intern isinstance
-  syn keyword pythonBuiltin	issubclass iter len list locals long map max
-  syn keyword pythonBuiltin	min object oct open ord pow property range
-  syn keyword pythonBuiltin	raw_input reduce reload repr round setattr
-  syn keyword pythonBuiltin	slice staticmethod str super tuple type unichr
-  syn keyword pythonBuiltin	unicode vars xrange zip
+" Group the built-ins in the order in the 'Python Library Reference' for
+" easier comparison.
+" http://docs.python.org/library/constants.html
+" http://docs.python.org/library/functions.html
+" http://docs.python.org/library/functions.html#non-essential-built-in-functions
+" Python built-in functions are in alphabetical order.
+if !exists("python_no_builtin_highlight")
+  " built-in constants
+  " 'False', 'True', and 'None' are also reserved words in Python 3.0
+  syn keyword pythonBuiltin	False True None
+  syn keyword pythonBuiltin	NotImplemented Ellipsis __debug__
+  " built-in functions
+  syn keyword pythonBuiltin	abs all any bin bool chr classmethod
+  syn keyword pythonBuiltin	compile complex delattr dict dir divmod
+  syn keyword pythonBuiltin	enumerate eval filter float format
+  syn keyword pythonBuiltin	frozenset getattr globals hasattr hash
+  syn keyword pythonBuiltin	help hex id input int isinstance
+  syn keyword pythonBuiltin	issubclass iter len list locals map max
+  syn keyword pythonBuiltin	min next object oct open ord pow print
+  syn keyword pythonBuiltin	property range repr reversed round set
+  syn keyword pythonBuiltin	setattr slice sorted staticmethod str
+  syn keyword pythonBuiltin	sum super tuple type vars zip __import__
+  " Python 2.6 only
+  syn keyword pythonBuiltin	basestring callable cmp execfile file
+  syn keyword pythonBuiltin	long raw_input reduce reload unichr
+  syn keyword pythonBuiltin	unicode xrange
+  " Python 3.0 only
+  syn keyword pythonBuiltin	ascii bytearray bytes exec memoryview
+  " non-essential built-in functions; Python 2.6 only
+  syn keyword pythonBuiltin	apply buffer coerce intern
 endif
 
-if exists("python_highlight_exceptions")
-  " builtin exceptions and warnings
-  syn keyword pythonException	ArithmeticError AssertionError AttributeError
-  syn keyword pythonException	DeprecationWarning EOFError EnvironmentError
-  syn keyword pythonException	Exception FloatingPointError IOError
-  syn keyword pythonException	ImportError IndentationError IndexError
-  syn keyword pythonException	KeyError KeyboardInterrupt LookupError
-  syn keyword pythonException	MemoryError NameError NotImplementedError
-  syn keyword pythonException	OSError OverflowError OverflowWarning
-  syn keyword pythonException	ReferenceError RuntimeError RuntimeWarning
-  syn keyword pythonException	StandardError StopIteration SyntaxError
-  syn keyword pythonException	SyntaxWarning SystemError SystemExit TabError
-  syn keyword pythonException	TypeError UnboundLocalError UnicodeError
-  syn keyword pythonException	UnicodeEncodeError UnicodeDecodeError
-  syn keyword pythonException	UnicodeTranslateError
-  syn keyword pythonException	UserWarning ValueError Warning WindowsError
-  syn keyword pythonException	ZeroDivisionError
+" From the 'Python Library Reference' class hierarchy at the bottom.
+" http://docs.python.org/library/exceptions.html
+if !exists("python_no_exception_highlight")
+  " builtin base exceptions (only used as base classes for other exceptions)
+  syn keyword pythonExceptions	BaseException Exception
+  syn keyword pythonExceptions	ArithmeticError EnvironmentError
+  syn keyword pythonExceptions	LookupError
+  " builtin base exception removed in Python 3.0
+  syn keyword pythonExceptions	StandardError
+  " builtin exceptions (actually raised)
+  syn keyword pythonExceptions	AssertionError AttributeError BufferError
+  syn keyword pythonExceptions	EOFError FloatingPointError GeneratorExit
+  syn keyword pythonExceptions	IOError ImportError IndentationError
+  syn keyword pythonExceptions	IndexError KeyError KeyboardInterrupt
+  syn keyword pythonExceptions	MemoryError NameError NotImplementedError
+  syn keyword pythonExceptions	OSError OverflowError ReferenceError
+  syn keyword pythonExceptions	RuntimeError StopIteration SyntaxError
+  syn keyword pythonExceptions	SystemError SystemExit TabError TypeError
+  syn keyword pythonExceptions	UnboundLocalError UnicodeError
+  syn keyword pythonExceptions	UnicodeDecodeError UnicodeEncodeError
+  syn keyword pythonExceptions	UnicodeTranslateError ValueError VMSError
+  syn keyword pythonExceptions	WindowsError ZeroDivisionError
+  " builtin warnings
+  syn keyword pythonExceptions	BytesWarning DeprecationWarning FutureWarning
+  syn keyword pythonExceptions	ImportWarning PendingDeprecationWarning
+  syn keyword pythonExceptions	RuntimeWarning SyntaxWarning UnicodeWarning
+  syn keyword pythonExceptions	UserWarning Warning
 endif
 
-if exists("python_highlight_space_errors")
+if exists("python_space_error_highlight")
   " trailing whitespace
-  syn match   pythonSpaceError   display excludenl "\S\s\+$"ms=s+1
+  syn match   pythonSpaceError	display excludenl "\s\+$"
   " mixed tabs and spaces
-  syn match   pythonSpaceError   display " \+\t"
-  syn match   pythonSpaceError   display "\t\+ "
+  syn match   pythonSpaceError	display " \+\t"
+  syn match   pythonSpaceError	display "\t\+ "
 endif
 
-" This is fast but code inside triple quoted strings screws it up. It
-" is impossible to fix because the only way to know if you are inside a
-" triple quoted string is to start from the beginning of the file. If
-" you have a fast machine you can try uncommenting the "sync minlines"
-" and commenting out the rest.
-syn sync match pythonSync grouphere NONE "):$"
-syn sync maxlines=200
-"syn sync minlines=2000
+" Do not spell doctests inside strings.
+" Notice that the end of a string, either ''', or """, will end the contained
+" doctest too.  Thus, we do *not* need to have it as an end pattern.
+if !exists("python_no_doctest_highlight")
+  if !exists("python_no_doctest_code_higlight")
+    syn region pythonDoctest
+	  \ start="^\s*>>>\s" end="^\s*$"
+	  \ contained contains=ALLBUT,pythonDoctest,@Spell
+    syn region pythonDoctestValue
+	  \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$"
+	  \ contained
+  else
+    syn region pythonDoctest
+	  \ start="^\s*>>>" end="^\s*$"
+	  \ contained contains=@NoSpell
+  endif
+endif
+
+" Sync at the beginning of class, function, or method definition.
+syn sync match pythonSync grouphere NONE "^\s*\%(def\|class\)\s\+\h\w*\s*("
 
 if version >= 508 || !exists("did_python_syn_inits")
   if version <= 508
@@ -147,35 +256,40 @@ if version >= 508 || !exists("did_python
     command -nargs=+ HiLink hi def link <args>
   endif
 
-  " The default methods for highlighting.  Can be overridden later
+  " The default highlight links.  Can be overridden later.
   HiLink pythonStatement	Statement
-  HiLink pythonFunction		Function
   HiLink pythonConditional	Conditional
   HiLink pythonRepeat		Repeat
+  HiLink pythonOperator		Operator
+  HiLink pythonException	Exception
+  HiLink pythonInclude		Include
+  HiLink pythonDecorator	Define
+  HiLink pythonFunction		Function
+  HiLink pythonComment		Comment
+  HiLink pythonTodo		Todo
   HiLink pythonString		String
   HiLink pythonRawString	String
   HiLink pythonEscape		Special
-  HiLink pythonOperator		Operator
-  HiLink pythonPreCondit	PreCondit
-  HiLink pythonComment		Comment
-  HiLink pythonTodo		Todo
-  HiLink pythonDecorator	Define
-  if exists("python_highlight_numbers")
-    HiLink pythonNumber	Number
+  if !exists("python_no_number_highlight")
+    HiLink pythonNumber		Number
   endif
-  if exists("python_highlight_builtins")
+  if !exists("python_no_builtin_highlight")
     HiLink pythonBuiltin	Function
   endif
-  if exists("python_highlight_exceptions")
-    HiLink pythonException	Exception
+  if !exists("python_no_exception_highlight")
+    HiLink pythonExceptions	Structure
   endif
-  if exists("python_highlight_space_errors")
+  if exists("python_space_error_highlight")
     HiLink pythonSpaceError	Error
   endif
+  if !exists("python_no_doctest_highlight")
+    HiLink pythonDoctest	Special
+    HiLink pythonDoctestValue	Define
+  endif
 
   delcommand HiLink
 endif
 
 let b:current_syntax = "python"
 
-" vim: ts=8
+" vim:set sw=2 sts=2 ts=8 noet:
--- a/runtime/syntax/rcs.vim
+++ b/runtime/syntax/rcs.vim
@@ -2,7 +2,7 @@
 " Language:     RCS file
 " Maintainer:   Dmitry Vasiliev <dima at hlabs dot spb dot ru>
 " URL:          http://www.hlabs.spb.ru/vim/rcs.vim
-" Revision:     $Id$
+" Revision:     $Id: rcs.vim,v 1.2 2006/03/27 16:41:00 vimboss Exp $
 " Filenames:    *,v
 " Version:      1.11
 
--- a/runtime/syntax/readline.vim
+++ b/runtime/syntax/readline.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         readline(3) configuration file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2007-06-17
+" Latest Revision:  2009-05-25
 "   readline_has_bash - if defined add support for bash specific
 "                       settings/functions
 
@@ -128,6 +128,7 @@ syn keyword readlineFunctions   containe
                                 \ arrow-key-prefix vi-back-to-indent vi-bword
                                 \ vi-bWord vi-eword vi-eWord vi-fword vi-fWord
                                 \ vi-next-word
+                                \ vi-movement-mode
 
 if exists("readline_has_bash")
   syn keyword readlineFunctions contained
--- a/runtime/syntax/remind.vim
+++ b/runtime/syntax/remind.vim
@@ -1,12 +1,13 @@
 " Vim syntax file
 " Language:	Remind
 " Maintainer:	Davide Alberani <alberanid@libero.it>
-" Last Change:	10 May 2006
-" Version:	0.3
+" Last Change:	18 Sep 2009
+" Version:	0.5
 " URL:		http://erlug.linux.it/~da/vim/syntax/remind.vim
 "
-" remind is a sophisticated reminder service; you can download remind from:
-" http://www.roaringpenguin.com/penguin/open_source_remind.php
+" remind is a sophisticated reminder service
+" you can download remind from:
+"   http://www.roaringpenguin.com/penguin/open_source_remind.php
 
 if version < 600
   syntax clear
@@ -14,24 +15,30 @@ elseif exists("b:current_syntax")
   finish
 endif
 
-" shut case off
+" shut case off.
 syn case ignore
 
 syn keyword remindCommands	REM OMIT SET FSET UNSET
-syn keyword remindExpiry	UNTIL SCANFROM SCAN WARN SCHED
+syn keyword remindExpiry	UNTIL FROM SCANFROM SCAN WARN SCHED
 syn keyword remindTag		PRIORITY TAG
 syn keyword remindTimed		AT DURATION
 syn keyword remindMove		ONCE SKIP BEFORE AFTER
-syn keyword remindSpecial	INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP
+syn keyword remindSpecial	INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP COLOR
 syn keyword remindRun		MSG MSF RUN CAL SATISFY SPECIAL PS PSFILE SHADE MOON
 syn keyword remindConditional	IF ELSE ENDIF IFTRIG
+syn keyword remindDebug		DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE
 syn match remindComment		"#.*$"
 syn region remindString		start=+'+ end=+'+ skip=+\\\\\|\\'+ oneline
 syn region remindString		start=+"+ end=+"+ skip=+\\\\\|\\"+ oneline
-syn keyword remindDebug		DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE
 syn match remindVar		"\$[_a-zA-Z][_a-zA-Z0-9]*"
 syn match remindSubst		"%[^ ]"
 syn match remindAdvanceNumber	"\(\*\|+\|-\|++\|--\)[0-9]\+"
+" XXX: use different separators for dates and times?
+syn match remindDateSeparators	"[/:@\.-]" contained
+syn match remindTimes		"[0-9]\{1,2}[:\.][0-9]\{1,2}" contains=remindDateSeparators
+" XXX: why not match only valid dates?  Ok, checking for 'Feb the 30' would
+"       be impossible, but at least check for valid months and times.
+syn match remindDates		"'[0-9]\{4}[/-][0-9]\{1,2}[/-][0-9]\{1,2}\(@[0-9]\{1,2}[:\.][0-9]\{1,2}\)\?'" contains=remindDateSeparators
 " This will match trailing whitespaces that seem to break rem2ps.
 " Courtesy of Michael Dunn.
 syn match remindWarning		display excludenl "\S\s\+$"ms=s+1
@@ -54,11 +61,14 @@ if version >= 508 || !exists("did_remind
   HiLink remindRun		Function
   HiLink remindConditional	Conditional
   HiLink remindComment		Comment
+  HiLink remindTimes		String
   HiLink remindString		String
   HiLink remindDebug		Debug
   HiLink remindVar		Identifier
   HiLink remindSubst		Constant
   HiLink remindAdvanceNumber	Number
+  HiLink remindDateSeparators	Comment
+  HiLink remindDates		String
   HiLink remindWarning		Error
 
   delcommand HiLink
--- a/runtime/syntax/rhelp.vim
+++ b/runtime/syntax/rhelp.vim
@@ -1,13 +1,14 @@
 " Vim syntax file
 " Language:    R Help File
 " Maintainer:  Johannes Ranke <jranke@uni-bremen.de>
-" Last Change: 2008 Apr 10
-" Version:     0.7.1
-" SVN:		   $Id$
+" Last Change: 2009 Mai 12
+" Version:     0.7.2
+" SVN:		   $Id: rhelp.vim 86 2009-05-12 19:23:47Z ranke $
 " Remarks:     - Now includes R syntax highlighting in the appropriate
 "                sections if an r.vim file is in the same directory or in the
 "                default debian location.
 "              - There is no Latex markup in equations
+"              - Thanks to Will Gray for finding and fixing a bug
 
 " Version Clears: {{{1
 " For version 5.x: Clear all syntax items
@@ -57,7 +58,7 @@ syn match rhelpKeyword  ">"
 
 " Links {{{1
 syn region rhelpLink matchgroup=rhelpSection start="\\link{" end="}" contained keepend
-syn region rhelpLink matchgroup=rhelpSection start="\\link\[.*\]{" end="}" contained keepend
+syn region rhelpLink matchgroup=rhelpSection start="\\link\[.\{-}\]{" end="}" contained keepend
 syn region rhelpLink matchgroup=rhelpSection start="\\linkS4class{" end="}" contained keepend
 
 " Type Styles {{{1
--- a/runtime/syntax/rnoweb.vim
+++ b/runtime/syntax/rnoweb.vim
@@ -1,9 +1,9 @@
 " Vim syntax file
 " Language:    R noweb Files
 " Maintainer:  Johannes Ranke <jranke@uni-bremen.de>
-" Last Change: 2007 Mr 30
-" Version:     0.8
-" SVN:	       $Id$
+" Last Change: 2009 May 05
+" Version:     0.9
+" SVN:	       $Id: rnoweb.vim 84 2009-05-03 19:52:47Z ranke $
 " Remarks:     - This file is inspired by the proposal of 
 "				 Fernando Henrique Ferraz Pereira da Rosa <feferraz@ime.usp.br>
 "			     http://www.ime.usp.br/~feferraz/en/sweavevim.html
@@ -25,6 +25,7 @@ runtime syntax/tex.vim
 unlet b:current_syntax
 
 syn cluster texMatchGroup add=@rnoweb
+syn cluster texMathMatchGroup add=rnowebSexpr
 syn cluster texEnvGroup add=@rnoweb
 syn cluster texFoldGroup add=@rnoweb
 syn cluster texDocGroup		add=@rnoweb
--- a/runtime/syntax/rst.vim
+++ b/runtime/syntax/rst.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         reStructuredText documentation format
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-07-04
+" Latest Revision:  2009-05-25
 
 if exists("b:current_syntax")
   finish
@@ -12,12 +12,9 @@ set cpo&vim
 
 syn case ignore
 
-" FIXME: The problem with these two is that Vim doesn’t seem to like
-" matching across line boundaries.
-"
-" syn match   rstSections /^.*\n[=`:.'"~^_*+#-]\+$/
+syn match   rstSections "^\%(\([=`:.'"~^_*+#-]\)\1\+\n\)\=.\+\n\([=`:.'"~^_*+#-]\)\2\+$"
 
-" syn match   rstTransition  /^\s*[=`:.'"~^_*+#-]\{4,}\s*$/
+syn match   rstTransition  /^[=`:.'"~^_*+#-]\{4,}\s*$/
 
 syn cluster rstCruft                contains=rstEmphasis,rstStrongEmphasis,
       \ rstInterpretedText,rstInlineLiteral,rstSubstitutionReference,
@@ -144,8 +141,8 @@ syn sync minlines=50
 
 hi def link rstTodo                         Todo
 hi def link rstComment                      Comment
-"hi def link rstSections                     Type
-"hi def link rstTransition                   Type
+hi def link rstSections                     Type
+hi def link rstTransition                   Type
 hi def link rstLiteralBlock                 String
 hi def link rstQuotedLiteralBlock           String
 hi def link rstDoctestBlock                 PreProc
--- a/runtime/syntax/ruby.vim
+++ b/runtime/syntax/ruby.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:		Ruby
 " Maintainer:		Doug Kearns <dougkearns@gmail.com>
-" Info:			$Id$
+" Info:			$Id: ruby.vim,v 1.152 2008/06/29 04:33:41 tpope Exp $
 " URL:			http://vim-ruby.rubyforge.org
 " Anon CVS:		See above site
 " Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
--- a/runtime/syntax/samba.vim
+++ b/runtime/syntax/samba.vim
@@ -2,8 +2,10 @@
 " Language:	samba configuration files (smb.conf)
 " Maintainer:	Rafael Garcia-Suarez <rgarciasuarez@free.fr>
 " URL:		http://rgarciasuarez.free.fr/vim/syntax/samba.vim
-" Last change:	2004 September 21
-
+" Last change:	2009 Aug 06
+"
+"               New maintainer wanted!
+"
 " Don't forget to run your config file through testparm(1)!
 
 " For version 5.x: Clear all syntax items
@@ -51,7 +53,7 @@ syn keyword sambaKeyword contained messa
 syn keyword sambaKeyword contained netbios nis notify nt null offset ok ole
 syn keyword sambaKeyword contained only open oplock oplocks options order os
 syn keyword sambaKeyword contained output packet page panic passwd password
-syn keyword sambaKeyword contained passwords path permissions pipe port
+syn keyword sambaKeyword contained passwords path permissions pipe port ports
 syn keyword sambaKeyword contained postexec postscript prediction preexec
 syn keyword sambaKeyword contained prefered preferred preload preserve print
 syn keyword sambaKeyword contained printable printcap printer printers
--- a/runtime/syntax/scheme.vim
+++ b/runtime/syntax/scheme.vim
@@ -1,6 +1,6 @@
 " Vim syntax file
-" Language:	Scheme (R5RS)
-" Last Change:	2007 Jun 16
+" Language:	Scheme (R5RS + some R6RS extras)
+" Last Change:	2009 Nov 27
 " Maintainer:	Sergey Khorev <sergey.khorev@gmail.com>
 " Original author:	Dirk van Deun <dirk@igwe.vub.ac.be>
 
@@ -26,8 +26,8 @@ syn case ignore
 
 " Fascist highlighting: everything that doesn't fit the rules is an error...
 
-syn match	schemeError	oneline    ![^ \t()\[\]";]*!
-syn match	schemeError	oneline    ")"
+syn match	schemeError	![^ \t()\[\]";]*!
+syn match	schemeError	")"
 
 " Quoted and backquoted stuff
 
@@ -71,6 +71,8 @@ syn keyword schemeSyntax lambda and or i
 syn keyword schemeSyntax begin do delay set! else =>
 syn keyword schemeSyntax quote quasiquote unquote unquote-splicing
 syn keyword schemeSyntax define-syntax let-syntax letrec-syntax syntax-rules
+" R6RS
+syn keyword schemeSyntax define-record-type fields protocol
 
 syn keyword schemeFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car!
 syn keyword schemeFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr
@@ -109,30 +111,39 @@ syn keyword schemeFunc char-ready? load 
 syn keyword schemeFunc dynamic-wind port? values call-with-values
 syn keyword schemeFunc scheme-report-environment null-environment
 syn keyword schemeFunc interaction-environment
+" R6RS
+syn keyword schemeFunc make-eq-hashtable make-eqv-hashtable make-hashtable
+syn keyword schemeFunc hashtable? hashtable-size hashtable-ref hashtable-set!
+syn keyword schemeFunc hashtable-delete! hashtable-contains? hashtable-update!
+syn keyword schemeFunc hashtable-copy hashtable-clear! hashtable-keys
+syn keyword schemeFunc hashtable-entries hashtable-equivalence-function hashtable-hash-function
+syn keyword schemeFunc hashtable-mutable? equal-hash string-hash string-ci-hash symbol-hash 
+syn keyword schemeFunc find for-all exists filter partition fold-left fold-right
+syn keyword schemeFunc remp remove remv remq memp assp cons*
 
 " ... so that a single + or -, inside a quoted context, would not be
 " interpreted as a number (outside such contexts, it's a schemeFunc)
 
-syn match	schemeDelimiter	oneline    !\.[ \t\[\]()";]!me=e-1
-syn match	schemeDelimiter	oneline    !\.$!
+syn match	schemeDelimiter	!\.[ \t\[\]()";]!me=e-1
+syn match	schemeDelimiter	!\.$!
 " ... and a single dot is not a number but a delimiter
 
 " This keeps all other stuff unhighlighted, except *stuff* and <stuff>:
 
-syn match	schemeOther	oneline    ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*,
-syn match	schemeError	oneline    ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
+syn match	schemeOther	,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*,
+syn match	schemeError	,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
 
-syn match	schemeOther	oneline    "\.\.\."
-syn match	schemeError	oneline    !\.\.\.[^ \t\[\]()";]\+!
+syn match	schemeOther	"\.\.\."
+syn match	schemeError	!\.\.\.[^ \t\[\]()";]\+!
 " ... a special identifier
 
-syn match	schemeConstant	oneline    ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t\[\]()";],me=e-1
-syn match	schemeConstant	oneline    ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*$,
-syn match	schemeError	oneline    ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
+syn match	schemeConstant	,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*[ \t\[\]()";],me=e-1
+syn match	schemeConstant	,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*$,
+syn match	schemeError	,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
 
-syn match	schemeConstant	oneline    ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t\[\]()";],me=e-1
-syn match	schemeConstant	oneline    ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$,
-syn match	schemeError	oneline    ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
+syn match	schemeConstant	,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t\[\]()";],me=e-1
+syn match	schemeConstant	,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$,
+syn match	schemeError	,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
 
 " Non-quoted lists, and strings:
 
@@ -153,23 +164,27 @@ syn match	schemeComment	";.*$"
 " Writing out the complete description of Scheme numerals without
 " using variables is a day's work for a trained secretary...
 
-syn match	schemeOther	oneline    ![+-][ \t\[\]()";]!me=e-1
-syn match	schemeOther	oneline    ![+-]$!
+syn match	schemeOther	![+-][ \t\[\]()";]!me=e-1
+syn match	schemeOther	![+-]$!
 "
 " This is a useful lax approximation:
-syn match	schemeNumber	oneline    "[-#+0-9.][-#+/0-9a-f@i.boxesfdl]*"
-syn match	schemeError	oneline    ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t\[\]()";][^ \t\[\]()";]*!
+syn match	schemeNumber	"[-#+.]\=[0-9][-#+/0-9a-f@i.boxesfdl]*"
+syn match	schemeError	![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t\[\]()";][^ \t\[\]()";]*!
 
-syn match	schemeBoolean	oneline    "#[tf]"
-syn match	schemeError	oneline    !#[tf][^ \t\[\]()";]\+!
+syn match	schemeBoolean	"#[tf]"
+syn match	schemeError	!#[tf][^ \t\[\]()";]\+!
 
-syn match	schemeChar	oneline    "#\\"
-syn match	schemeChar	oneline    "#\\."
-syn match       schemeError	oneline    !#\\.[^ \t\[\]()";]\+!
-syn match	schemeChar	oneline    "#\\space"
-syn match	schemeError	oneline    !#\\space[^ \t\[\]()";]\+!
-syn match	schemeChar	oneline    "#\\newline"
-syn match	schemeError	oneline    !#\\newline[^ \t\[\]()";]\+!
+syn match	schemeCharacter	"#\\"
+syn match	schemeCharacter	"#\\."
+syn match       schemeError	!#\\.[^ \t\[\]()";]\+!
+syn match	schemeCharacter	"#\\space"
+syn match	schemeError	!#\\space[^ \t\[\]()";]\+!
+syn match	schemeCharacter	"#\\newline"
+syn match	schemeError	!#\\newline[^ \t\[\]()";]\+!
+
+" R6RS
+syn match schemeCharacter "#\\x[0-9a-fA-F]\+"
+
 
 if exists("b:is_mzscheme") || exists("is_mzscheme")
     " MzScheme extensions
@@ -177,11 +192,11 @@ if exists("b:is_mzscheme") || exists("is
     syn region	schemeComment start="#|" end="|#"
 
     " #%xxx are the special MzScheme identifiers
-    syn match schemeOther oneline    "#%[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+    syn match schemeOther "#%[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
     " anything limited by |'s is identifier
-    syn match schemeOther oneline    "|[^|]\+|"
+    syn match schemeOther "|[^|]\+|"
 
-    syn match	schemeChar	oneline    "#\\\%(return\|tab\)"
+    syn match	schemeCharacter	"#\\\%(return\|tab\)"
 
     " Modules require stmt
     syn keyword schemeExtSyntax module require dynamic-require lib prefix all-except prefix-all-except rename
@@ -234,8 +249,8 @@ if exists("b:is_chicken") || exists("is_
     " multiline comment
     syntax region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeMultilineComment
 
-    syn match schemeOther oneline    "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
-    syn match schemeExtSyntax oneline    "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+    syn match schemeOther "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+    syn match schemeExtSyntax "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
 
     syn keyword schemeExtSyntax unit uses declare hide foreign-declare foreign-parse foreign-parse/spec
     syn keyword schemeExtSyntax foreign-lambda foreign-lambda* define-external define-macro load-library
@@ -266,7 +281,7 @@ if exists("b:is_chicken") || exists("is_
     endif
 
     " suggested by Alex Queiroz
-    syn match schemeExtSyntax oneline    "#![-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+    syn match schemeExtSyntax "#![-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
     syn region schemeString start=+#<#\s*\z(.*\)+ end=+^\z1$+ 
 endif
 
@@ -290,7 +305,7 @@ if version >= 508 || !exists("did_scheme
   HiLink schemeFunc		Function
 
   HiLink schemeString		String
-  HiLink schemeChar		Character
+  HiLink schemeCharacter	Character
   HiLink schemeNumber		Number
   HiLink schemeBoolean		Boolean
 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/sdc.vim
@@ -0,0 +1,41 @@
+" Vim syntax file
+" Language:     SDC - Synopsys Design Constraints
+" Maintainer:   Maurizio Tranchero - maurizio.tranchero@gmail.com
+" Last Change:  Thu Mar  25 17:35:16 CET 2009
+" Credits:      based on TCL Vim syntax file
+" Version:	0.3
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+  finish
+endif
+
+" Read the TCL syntax to start with
+runtime! syntax/tcl.vim
+
+" SDC-specific keywords
+syn keyword sdcCollections	foreach_in_collection
+syn keyword sdcObjectsQuery	get_clocks get_ports
+syn keyword sdcObjectsInfo	get_point_info get_node_info get_path_info
+syn keyword sdcObjectsInfo	get_timing_paths set_attribute
+syn keyword sdcConstraints	set_false_path
+syn keyword sdcNonIdealities	set_min_delay set_max_delay
+syn keyword sdcNonIdealities	set_input_delay set_output_delay
+syn keyword sdcNonIdealities	set_load set_min_capacitance set_max_capacitance
+syn keyword sdcCreateOperations	create_clock create_timing_netlist update_timing_netlist
+
+" command flags highlighting
+syn match sdcFlags		"[[:space:]]-[[:alpha:]]*\>"
+
+" Define the default highlighting.
+hi def link sdcCollections      Repeat
+hi def link sdcObjectsInfo      Operator
+hi def link sdcCreateOperations	Operator
+hi def link sdcObjectsQuery	Operator
+hi def link sdcConstraints	Operator
+hi def link sdcNonIdealities	Operator
+hi def link sdcFlags		Special
+
+let b:current_syntax = "sdc"
+
+" vim: ts=8
--- a/runtime/syntax/sgml.vim
+++ b/runtime/syntax/sgml.vim
@@ -3,7 +3,7 @@
 " Maintainer:	Johannes Zellner <johannes@zellner.org>
 " Last Change:	Tue, 27 Apr 2004 15:05:21 CEST
 " Filenames:	*.sgml,*.sgm
-" $Id$
+" $Id: sgml.vim,v 1.1 2004/06/13 17:52:57 vimboss Exp $
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/sgmllnx.vim
+++ b/runtime/syntax/sgmllnx.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	SGML-linuxdoc (supported by old sgmltools-1.x)
 "		(for more information, visit www.sgmltools.org)
-" Maintainer:	Nam SungHyun <namsh@kldp.org>
-" Last Change:	2001 Apr 26
+" Maintainer:	SungHyun Nam <goweol@gmail.com>
+" Last Change:	2008 Sep 17
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/sh.vim
+++ b/runtime/syntax/sh.vim
@@ -2,8 +2,8 @@
 " Language:		shell (sh) Korn shell (ksh) bash (sh)
 " Maintainer:		Dr. Charles E. Campbell, Jr.  <NdrOchipS@PcampbellAfamily.Mbiz>
 " Previous Maintainer:	Lennart Schultz <Lennart.Schultz@ecmwf.int>
-" Last Change:		Jul 11, 2008
-" Version:		102
+" Last Change:		Nov 17, 2009
+" Version:		110
 " URL:		http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 " For options and settings, please use:      :help ft-sh-syntax
 " This file includes many ideas from ric Brunet (eric.brunet@ens.fr)
@@ -67,13 +67,13 @@ syn case match
 
 " Clusters: contains=@... clusters {{{1
 "==================================
-syn cluster shErrorList	contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError
+syn cluster shErrorList	contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError,shOK
 if exists("b:is_kornshell")
  syn cluster ErrorList add=shDTestError
 endif
-syn cluster shArithParenList	contains=shArithmetic,shDeref,shDerefSimple,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen
+syn cluster shArithParenList	contains=shArithmetic,shCaseEsac,shDeref,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement
 syn cluster shArithList	contains=@shArithParenList,shParenError
-syn cluster shCaseEsacList	contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial
+syn cluster shCaseEsacList	contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange
 syn cluster shCaseList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
 syn cluster shColonList	contains=@shCaseList
 syn cluster shCommandSubList	contains=shArithmetic,shDeref,shDerefSimple,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shSingleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias,shTest,shCtrlSeq,shSpecial
@@ -84,7 +84,7 @@ syn cluster shDerefVarList	contains=shDe
 syn cluster shEchoList	contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shExpr,shExSingleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote
 syn cluster shExprList1	contains=shCharClass,shNumber,shOperator,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq
 syn cluster shExprList2	contains=@shExprList1,@shCaseList,shTest
-syn cluster shFunctionList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq
+syn cluster shFunctionList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq
 if exists("b:is_kornshell") || exists("b:is_bash")
  syn cluster shFunctionList	add=shRepeat
  syn cluster shFunctionList	add=shDblBrace,shDblParen
@@ -94,19 +94,18 @@ syn cluster shHereList	contains=shBeginH
 syn cluster shHereListDQ	contains=shBeginHere,@shDblQuoteList,shHerePayload
 syn cluster shIdList	contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shRedir,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial
 syn cluster shLoopList	contains=@shCaseList,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac,shTest,@shErrorList,shSet
-syn cluster shSubShList	contains=@shCaseList,shOperator
+syn cluster shSubShList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator
 syn cluster shTestList	contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shDoubleQuote,shExpr,shExpr,shNumber,shOperator,shExSingleQuote,shSingleQuote,shTestOpr,shTest,shCtrlSeq
 
-
 " Echo: {{{1
 " ====
 " This one is needed INSIDE a CommandSub, so that `echo bla` be correct
-syn region shEcho matchgroup=shStatement start="\<echo\>"  skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment
-syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment
-syn match  shEchoQuote contained	'\%(\\\\\)*\\["`']'
+syn region shEcho matchgroup=shStatement start="\<echo\>"  skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment
+syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment
+syn match  shEchoQuote contained	'\%(\\\\\)*\\["`'()]'
 
 " This must be after the strings, so that ... \" will be correct
-syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shDoubleQuote,shCharClass,shCtrlSeq
+syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shDoubleQuote,shCharClass,shCtrlSeq
 
 " Alias: {{{1
 " =====
@@ -125,6 +124,7 @@ syn match   shCaseError ";;"
 syn match   shEsacError "\<esac\>"
 syn match   shCurlyError "}"
 syn match   shParenError ")"
+syn match   shOK	'\.\(done\|fi\|in\|esac\)'
 if exists("b:is_kornshell")
  syn match     shDTestError "]]"
 endif
@@ -152,14 +152,13 @@ syn match   shPattern	"\<\S\+\())\)\@="	
 
 " Subshells: {{{1
 " ==========
-syn region shExpr  transparent matchgroup=shExprRegion  start="{" end="}"	contains=@shExprList2
-syn region shSubSh transparent matchgroup=shSubShRegion start="(" end=")"	contains=@shSubShList
+syn region shExpr  transparent matchgroup=shExprRegion  start="{" end="}"	contains=@shExprList2 nextgroup=shMoreSpecial
+syn region shSubSh transparent matchgroup=shSubShRegion start="(" end=")"	contains=@shSubShList nextgroup=shMoreSpecial
 
 " Tests: {{{1
 "=======
-"syn region  shExpr transparent matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList
-syn region shExpr	matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList
-syn region shTest	transparent matchgroup=shStatement start="\<test\>" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1
+syn region shExpr	matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList,shSpecial
+syn region shTest	transparent matchgroup=shStatement start="\<test\s" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1
 syn match  shTestOpr	contained	"<=\|>=\|!=\|==\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]"
 syn match  shTestOpr	contained	'=' skipwhite nextgroup=shTestDoubleQuote,shTestSingleQuote,shTestPattern
 syn match  shTestPattern	contained	'\w\+'
@@ -203,10 +202,11 @@ syn match  shComma     contained	","
 " ====
 syn match   shCaseBar	contained skipwhite "\(^\|[^\\]\)\(\\\\\)*\zs|"		nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote
 syn match   shCaseStart	contained skipwhite skipnl "("			nextgroup=shCase,shCaseBar
-syn region  shCase	contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)"  end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
 if (g:sh_fold_enabled % (s:sh_fold_ifdofor * 2))/s:sh_fold_ifdofor
+ syn region  shCase	fold contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)"  end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
  syn region  shCaseEsac	fold matchgroup=shConditional start="\<case\>" end="\<esac\>"	contains=@shCaseEsacList
 else
+ syn region  shCase	contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)"  end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
  syn region  shCaseEsac	matchgroup=shConditional start="\<case\>" end="\<esac\>"	contains=@shCaseEsacList
 endif
 syn keyword shCaseIn	contained skipwhite skipnl in			nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote
@@ -218,6 +218,7 @@ endif
 syn region  shCaseSingleQuote	matchgroup=shOperator start=+'+ end=+'+		contains=shStringSpecial		skipwhite skipnl nextgroup=shCaseBar	contained
 syn region  shCaseDoubleQuote	matchgroup=shOperator start=+"+ skip=+\\\\\|\\.+ end=+"+	contains=@shDblQuoteList,shStringSpecial	skipwhite skipnl nextgroup=shCaseBar	contained
 syn region  shCaseCommandSub	start=+`+ skip=+\\\\\|\\.+ end=+`+		contains=@shCommandSubList		skipwhite skipnl nextgroup=shCaseBar	contained
+syn region  shCaseRange	matchgroup=Delimiter start=+\[+ skip=+\\\\+ end=+]+	contained
 
 " Misc: {{{1
 "======
@@ -256,34 +257,36 @@ endif
 
 syn match   shSource	"^\.\s"
 syn match   shSource	"\s\.\s"
-syn region  shColon	start="^\s*:" end="$\|" end="#"me=e-1 contains=@shColonList
+"syn region  shColon	start="^\s*:" end="$" end="\s#"me=e-2 contains=@shColonList
+syn region  shColon	start="^\s*\zs:" end="$" end="\s#"me=e-2
 
 " String And Character Constants: {{{1
 "================================
 syn match   shNumber	"-\=\<\d\+\>#\="
 syn match   shCtrlSeq	"\\\d\d\d\|\\[abcfnrtv0]"		contained
 if exists("b:is_bash")
- syn match   shSpecial	"\\\o\o\o\|\\x\x\x\|\\c.\|\\[abefnrtv]"	contained
+ syn match   shSpecial	"\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]"	contained
 endif
 if exists("b:is_bash")
  syn region  shExSingleQuote	matchgroup=shOperator start=+\$'+ skip=+\\\\\|\\.+ end=+'+	contains=shStringSpecial,shSpecial
 else
  syn region  shExSingleQuote	matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+	contains=shStringSpecial
 endif
-syn region  shSingleQuote	matchgroup=shOperator start=+'+ end=+'+		contains=shStringSpecial,@Spell
+syn region  shSingleQuote	matchgroup=shOperator start=+'+ end=+'+		contains=@Spell
 syn region  shDoubleQuote	matchgroup=shOperator start=+"+ skip=+\\"+ end=+"+	contains=@shDblQuoteList,shStringSpecial,@Spell
 syn match   shStringSpecial	"[^[:print:] \t]"	contained
 syn match   shStringSpecial	"\%(\\\\\)*\\[\\"'`$()#]"
-syn match   shSpecial	"[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]"
+syn match   shSpecial	"[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shMoreSpecial
 syn match   shSpecial	"^\%(\\\\\)*\\[\\"'`$()#]"
+syn match   shMoreSpecial	"\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shMoreSpecial contained
 
 " Comments: {{{1
 "==========
-syn cluster    shCommentGroup	contains=shTodo,@Spell
-syn keyword    shTodo	contained	COMBAK FIXME TODO XXX
-syn match      shComment	"^\s*\zs#.*$"	contains=@shCommentGroup
-syn match      shComment	"\s\zs#.*$"	contains=@shCommentGroup
-syn match      shQuickComment	contained	"#.*$"
+syn cluster	shCommentGroup	contains=shTodo,@Spell
+syn keyword	shTodo	contained		COMBAK FIXME TODO XXX
+syn match	shComment		"^\s*\zs#.*$"	contains=@shCommentGroup
+syn match	shComment		"\s\zs#.*$"	contains=@shCommentGroup
+syn match	shQuickComment	contained	"#.*$"
 
 " Here Documents: {{{1
 " =========================================
@@ -338,13 +341,13 @@ syn match  shSetOption	"\s\zs[-+][a-zA-Z
 syn match  shVariable	"\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze="	nextgroup=shSetIdentifier
 syn match  shSetIdentifier	"="		contained	nextgroup=shPattern,shDeref,shDerefSimple,shDoubleQuote,shSingleQuote,shExSingleQuote
 if exists("b:is_bash")
- syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$"	matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze#\|=" contains=@shIdList
- syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="\ze[;|)]\|$"			matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList
+ syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$"	matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList
+ syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="\ze[;|)]\|$"			matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
 elseif exists("b:is_kornshell")
- syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$"		matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList
- syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="$"				matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList
+ syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$"		matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
+ syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="$"				matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
 else
- syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$"		matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList
+ syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$"		matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
 endif
 
 " Functions: {{{1
@@ -492,7 +495,7 @@ hi def link shCaseIn	shConditional
 hi def link shCaseSingleQuote	shSingleQuote
 hi def link shCaseStart	shConditional
 hi def link shCmdSubRegion	shShellVariables
-hi def link shColon	shStatement
+hi def link shColon	shComment
 hi def link shDerefOp	shOperator
 hi def link shDerefPOL	shDerefOp
 hi def link shDerefPPS	shDerefOp
@@ -511,6 +514,7 @@ hi def link shFunction	Function
 hi def link shHereDoc	shString
 hi def link shHerePayload	shHereDoc
 hi def link shLoop	shStatement
+hi def link shMoreSpecial	shSpecial
 hi def link shOption	shCommandSub
 hi def link shPattern	shString
 hi def link shParen	shArithmetic
--- a/runtime/syntax/sisu.vim
+++ b/runtime/syntax/sisu.vim
@@ -1,6 +1,6 @@
 "SiSU Vim syntax file
 "SiSU Maintainer: Ralph Amissah <ralph@amissah.com>
-"SiSU Markup:     SiSU (sisu-0.66.0, 2008-02-24)
+"SiSU Markup:     SiSU (sisu-0.69.0, 2008-09-16)
 "(originally looked at Ruby Vim by Mirko Nasato)
 
 if version < 600
@@ -81,6 +81,7 @@ syn region sisu_normal contains=sisu_str
 syn region sisu_comment matchgroup=sisu_comment start="^%\{1,2\} " end="$"
 "font face curly brackets
 "syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline
+syn region sisu_index matchgroup=sisu_index_block start="^={" end="}"
 syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*"
 syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!"
 syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_"
@@ -162,7 +163,6 @@ hi def link sisu_linked           String
 hi def link sisu_fontface         Include
 hi def link sisu_strikeout        DiffDelete
 hi def link sisu_content_alt      Special
-hi def link sisu_sem_content      String
 hi def link sisu_sem_content      SpecialKey
 hi def link sisu_sem_block        Special
 hi def link sisu_sem_marker       Visual
@@ -173,6 +173,8 @@ hi def link sisu_sem_ex_marker_block Fol
 hi def link sisu_sem_ex_content   Comment
 "hi def link sisu_sem_ex_content   SpecialKey
 hi def link sisu_sem_ex_block     Comment
+hi def link sisu_index            SpecialKey
+hi def link sisu_index_block      Visual
 hi def link sisu_content_endnote  Special
 hi def link sisu_control          Define
 hi def link sisu_ocn              Include
--- a/runtime/syntax/spec.vim
+++ b/runtime/syntax/spec.vim
@@ -1,8 +1,7 @@
 " Filename:    spec.vim
 " Purpose:     Vim syntax file
 " Language:    SPEC: Build/install scripts for Linux RPM packages
-" Maintainer:  Donovan Rebbechi elflord@pegasus.rutgers.edu
-" URL:	       http://pegasus.rutgers.edu/~elflord/vim/syntax/spec.vim
+" Maintainer:  Donovan Rebbechi elflord@panix.com
 " Last Change: Fri Dec 3 11:54 EST 2004 Marcin Dalecki
 
 " For version 5.x: Clear all syntax items
--- a/runtime/syntax/splint.vim
+++ b/runtime/syntax/splint.vim
@@ -2,8 +2,8 @@
 " Language:	splint (C with lclint/splint Annotations)
 " Maintainer:	Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
 " Splint Home:	http://www.splint.org/
-" Last Change:	$Date$
-" $Revision$
+" Last Change:	$Date: 2004/06/13 20:08:47 $
+" $Revision: 1.1 $
 
 " Note:		Splint annotated files are not detected by default.
 "		If you want to use this file for highlighting C code,
--- a/runtime/syntax/spyce.vim
+++ b/runtime/syntax/spyce.vim
@@ -2,7 +2,7 @@
 " Language:	   SPYCE
 " Maintainer:	 Rimon Barr <rimon AT acm DOT org>
 " URL:		     http://spyce.sourceforge.net
-" Last Change: 2003 May 11
+" Last Change: 2009 Nov 11
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -25,6 +25,7 @@ if version < 600
 else
   runtime! syntax/html.vim
   unlet b:current_syntax
+  syntax spell default  " added by Bram
 endif
 
 " include python
--- a/runtime/syntax/sqlanywhere.vim
+++ b/runtime/syntax/sqlanywhere.vim
@@ -2,10 +2,11 @@
 " Vim syntax file
 " Language:    SQL, Adaptive Server Anywhere
 " Maintainer:  David Fishburn <fishburn at ianywhere dot com>
-" Last Change: Tue 29 Jan 2008 12:54:19 PM Eastern Standard Time
-" Version:     10.0.1
+" Last Change: 2009 Mar 15
+" Version:     11.0.1
 
-" Description: Updated to Adaptive Server Anywhere 10.0.1
+" Description: Updated to Adaptive Server Anywhere 11.0.1
+"              Updated to Adaptive Server Anywhere 10.0.1
 "              Updated to Adaptive Server Anywhere  9.0.2
 "              Updated to Adaptive Server Anywhere  9.0.1
 "              Updated to Adaptive Server Anywhere  9.0.0
@@ -54,20 +55,24 @@ syn keyword sqlFunction	 get_identity lo
 syn keyword sqlFunction	 strtouuid varexists
 
 " 9.0.1 functions
-syn keyword sqlFunction	 acos asin atan atn2 cast ceiling convert cos cot 
+syn keyword sqlFunction	 acos asin atan atn2 cast ceiling convert cos cot
 syn keyword sqlFunction	 char_length coalesce dateformat datetime degrees exp
-syn keyword sqlFunction	 floor getdate insertstr 
+syn keyword sqlFunction	 floor getdate insertstr
 syn keyword sqlFunction	 log log10 lower mod pi power
-syn keyword sqlFunction	 property radians replicate round sign sin 
+syn keyword sqlFunction	 property radians replicate round sign sin
 syn keyword sqlFunction	 sqldialect tan truncate truncnum
 syn keyword sqlFunction	 base64_encode base64_decode
 syn keyword sqlFunction	 hash compress decompress encrypt decrypt
 
+" 11.0.1 functions
+syn keyword sqlFunction	 connection_extended_property text_handle_vector_match
+syn keyword sqlFunction	 read_client_file write_client_file
+
 " string functions
 syn keyword sqlFunction	 ascii char left ltrim repeat
 syn keyword sqlFunction	 space right rtrim trim lcase ucase
 syn keyword sqlFunction	 locate charindex patindex replace
-syn keyword sqlFunction	 errormsg csconvert 
+syn keyword sqlFunction	 errormsg csconvert
 
 " property functions
 syn keyword sqlFunction	 db_id db_name property_name
@@ -358,125 +363,135 @@ syn keyword sqlFunction	 next_http_heade
 syn keyword sqlFunction	 sa_set_http_header sa_set_http_option
 syn keyword sqlFunction	 sa_http_variable_info sa_http_header_info
 
-" http functions 9.0.1 
+" http functions 9.0.1
 syn keyword sqlFunction	 http_encode http_decode
 syn keyword sqlFunction	 html_encode html_decode
 
 " keywords
-syn keyword sqlKeyword	 absolute accent action activ add address after
-syn keyword sqlKeyword	 algorithm allow_dup_row
-syn keyword sqlKeyword	 alter and any as append asc ascii ase at atomic
-syn keyword sqlKeyword	 attach attended audit authorization 
+syn keyword sqlKeyword	 absolute accent action active add address aes_decrypt
+syn keyword sqlKeyword	 after aggregate algorithm allow_dup_row allowed
+syn keyword sqlKeyword	 alter and ansi_substring any as append apply asc ascii ase
+syn keyword sqlKeyword	 assign at atan2 atomic attach attended audit authorization
 syn keyword sqlKeyword	 autoincrement autostop batch bcp before
-syn keyword sqlKeyword	 between blank blanks block
-syn keyword sqlKeyword	 both bottom unbounded break bufferpool
+syn keyword sqlKeyword	 between bit_and bit_length bit_or bit_substr bit_xor
+syn keyword sqlKeyword	 blank blanks block
+syn keyword sqlKeyword	 both bottom unbounded break breaker bufferpool
 syn keyword sqlKeyword	 build bulk by byte bytes cache calibrate calibration
 syn keyword sqlKeyword	 cancel capability cascade cast
-syn keyword sqlKeyword	 catalog changes char char_convert check checksum
+syn keyword sqlKeyword	 catalog ceil changes char char_convert check checksum
 syn keyword sqlKeyword	 class classes client cmp
-syn keyword sqlKeyword	 cluster clustered collation column columns
+syn keyword sqlKeyword	 cluster clustered collation
+syn keyword sqlKeyword	 column columns
 syn keyword sqlKeyword	 command comment committed comparisons
 syn keyword sqlKeyword	 compatible component compressed compute computes
-syn keyword sqlKeyword	 concat confirm conflict connection
+syn keyword sqlKeyword	 concat configuration confirm conflict connection
 syn keyword sqlKeyword	 console consolidate consolidated
-syn keyword sqlKeyword	 constraint constraints continue
-syn keyword sqlKeyword	 convert copy count crc cross cube
+syn keyword sqlKeyword	 constraint constraints content continue
+syn keyword sqlKeyword	 convert coordinator copy count count_set_bits
+syn keyword sqlKeyword	 crc createtime cross cube cume_dist
 syn keyword sqlKeyword	 current cursor data data database
 syn keyword sqlKeyword	 current_timestamp current_user
-syn keyword sqlKeyword	 datatype dba dbfile
-syn keyword sqlKeyword	 dbspace dbspacename debug decoupled
-syn keyword sqlKeyword	 decrypted default defaults deferred definition
+syn keyword sqlKeyword	 databases datatype dba dbfile
+syn keyword sqlKeyword	 dbspace dbspaces dbspacename debug decoupled
+syn keyword sqlKeyword	 decrypted default defaults default_dbspace deferred
+syn keyword sqlKeyword	 definer definition
 syn keyword sqlKeyword	 delay deleting delimited dependencies desc
 syn keyword sqlKeyword	 description detach deterministic directory
-syn keyword sqlKeyword	 disable disabled distinct do domain download
+syn keyword sqlKeyword	 disable disabled distinct do domain download duplicate
 syn keyword sqlKeyword	 dsetpass dttm dynamic each editproc ejb
-syn keyword sqlKeyword	 else elseif enable encapsulated encrypted end 
-syn keyword sqlKeyword	 encoding endif engine erase error escape escapes event
-syn keyword sqlKeyword	 every except exception exclude exclusive exec 
-syn keyword sqlKeyword	 existing exists expanded express
+syn keyword sqlKeyword	 else elseif empty enable encapsulated encrypted end
+syn keyword sqlKeyword	 encoding endif engine environment erase error escape escapes event
+syn keyword sqlKeyword	 event_parameter every except exception exclude excluded exclusive exec
+syn keyword sqlKeyword	 existing exists expanded expiry express exprtype extended_property
 syn keyword sqlKeyword	 external externlogin factor failover false
-syn keyword sqlKeyword	 fastfirstrow fieldproc file filler
-syn keyword sqlKeyword	 fillfactor finish first first_keyword 
-syn keyword sqlKeyword	 following force foreign format 
-syn keyword sqlKeyword	 freepage french fresh full function go global
-syn keyword sqlKeyword	 group handler hash having header hexadecimal 
-syn keyword sqlKeyword	 hidden high history hold holdlock
-syn keyword sqlKeyword	 hours id identified identity ignore
+syn keyword sqlKeyword	 fastfirstrow fieldproc file files filler
+syn keyword sqlKeyword	 fillfactor finish first first_keyword first_value
+syn keyword sqlKeyword	 following force foreign format forxml forxml_sep fp frame
+syn keyword sqlKeyword	 freepage french fresh full function gb get_bit go global
+syn keyword sqlKeyword	 group handler hash having header hexadecimal
+syn keyword sqlKeyword	 hidden high history hg hng hold holdlock host
+syn keyword sqlKeyword	 hours http_body http_session_timeout id identified identity ignore
 syn keyword sqlKeyword	 ignore_dup_key ignore_dup_row immediate
-syn keyword sqlKeyword	 in inactive inactivity incremental index info 
+syn keyword sqlKeyword	 in inactiv inactive inactivity included incremental
+syn keyword sqlKeyword	 index index_enabled index_lparen indexonly info
 syn keyword sqlKeyword	 inline inner inout insensitive inserting
 syn keyword sqlKeyword	 instead integrated
-syn keyword sqlKeyword	 internal into introduced iq is isolation jar java
+syn keyword sqlKeyword	 internal intersection into introduced invoker iq is isolation
+syn keyword sqlKeyword	 jar java java_location java_main_userid java_vm_options
 syn keyword sqlKeyword	 jconnect jdk join kb key keep kerberos language last
-syn keyword sqlKeyword	 last_keyword lateral left level like
-syn keyword sqlKeyword	 limit local location log 
-syn keyword sqlKeyword	 logging login logscan long low lru main
-syn keyword sqlKeyword	 match materialized max maximum membership 
-syn keyword sqlKeyword	 minutes mirror mode modify monitor  mru
-syn keyword sqlKeyword	 name named national native natural new next no
+syn keyword sqlKeyword	 last_keyword last_value lateral ld left len lf ln level like
+syn keyword sqlKeyword	 limit local location log
+syn keyword sqlKeyword	 logging login logscan long low lru main manual mark
+syn keyword sqlKeyword	 match matched materialized max maximum mb membership
+syn keyword sqlKeyword	 merge metadata methods minimum minutes mirror mode modify monitor move mru
+syn keyword sqlKeyword	 multiplex name named national native natural new next no
 syn keyword sqlKeyword	 noholdlock nolock nonclustered none not
-syn keyword sqlKeyword	 notify null nulls of off old on
-syn keyword sqlKeyword	 only optimization optimizer option
+syn keyword sqlKeyword	 notify null nullable_constant nulls object oem_string of off offline
+syn keyword sqlKeyword	 old on online only openstring optimization optimizer option
 syn keyword sqlKeyword	 or order others out outer over
 syn keyword sqlKeyword	 package packetsize padding page pages
-syn keyword sqlKeyword	 paglock parallel part partition partner password path
-syn keyword sqlKeyword	 pctfree plan preceding precision prefetch prefix
-syn keyword sqlKeyword	 preserve preview primary 
-syn keyword sqlKeyword	 prior priqty private privileges procedure profile
-syn keyword sqlKeyword	 public publication publish publisher
-syn keyword sqlKeyword	 quote quotes range readcommitted readonly
+syn keyword sqlKeyword	 paglock parallel part partial partition partitions partner password path
+syn keyword sqlKeyword	 pctfree plan policy populate port postfilter preceding precision
+syn keyword sqlKeyword	 prefetch prefilter prefix preserve preview primary
+syn keyword sqlKeyword	 prior priority priqty private privileges procedure profile
+syn keyword sqlKeyword	 property_is_cumulative property_is_numeric public publication publish publisher
+syn keyword sqlKeyword	 quiesce quote quotes range readclientfile readcommitted reader readfile readonly
 syn keyword sqlKeyword	 readpast readuncommitted readwrite rebuild
 syn keyword sqlKeyword	 received recompile recover recursive references
-syn keyword sqlKeyword	 referencing refresh relative relocate
+syn keyword sqlKeyword	 referencing refresh regex regexp regexp_substr relative relocate
 syn keyword sqlKeyword	 rename repeatable repeatableread
-syn keyword sqlKeyword	 replicate rereceive resend reserve reset
+syn keyword sqlKeyword	 replicate request_timeout required rereceive resend reserve reset
 syn keyword sqlKeyword	 resizing resolve resource respect
 syn keyword sqlKeyword	 restrict result retain
-syn keyword sqlKeyword	 returns right 
-syn keyword sqlKeyword	 rollup root row rowlock rows save 
-syn keyword sqlKeyword	 schedule schema scripted scroll seconds secqty
+syn keyword sqlKeyword	 returns reverse right role
+syn keyword sqlKeyword	 rollup root row row_number rowlock rows save
+syn keyword sqlKeyword	 sa_index_hash sa_internal_fk_verify sa_internal_termbreak
+syn keyword sqlKeyword	 sa_order_preserving_hash sa_order_preserving_hash_big sa_order_preserving_hash_prefix
+syn keyword sqlKeyword	 schedule schema scope scripted scroll seconds secqty security
 syn keyword sqlKeyword	 send sensitive sent serializable
-syn keyword sqlKeyword	 server server session sets 
+syn keyword sqlKeyword	 server server session set_bit set_bits sets
 syn keyword sqlKeyword	 share simple since site size skip
-syn keyword sqlKeyword	 snapshot soapheader some sorted_data 
-syn keyword sqlKeyword	 sqlcode sqlid sqlstate stacker stale statement
-syn keyword sqlKeyword	 statistics status stogroup store
-syn keyword sqlKeyword	 strip subpages subscribe subscription
-syn keyword sqlKeyword	 subtransaction synchronization
+syn keyword sqlKeyword	 snapshot soapheader soap_header split some sorted_data
+syn keyword sqlKeyword	 sqlcode sqlid sqlflagger sqlstate sqrt square
+syn keyword sqlKeyword	 stacker stale statement statistics status stddev_pop stddev_samp
+syn keyword sqlKeyword	 stemmer stogroup stoplist store
+syn keyword sqlKeyword	 strip stripesizekb striping subpages subscribe subscription
+syn keyword sqlKeyword	 subtransaction suser_id suser_name synchronization
 syn keyword sqlKeyword	 syntax_error table tablock
-syn keyword sqlKeyword	 tablockx tb temp template temporary then
-syn keyword sqlKeyword	 ties timezone to top tracing
-syn keyword sqlKeyword	 transaction transactional tries true 
+syn keyword sqlKeyword	 tablockx tb temp template temporary term then
+syn keyword sqlKeyword	 ties timezone to to_char to_nchar top traced_plan tracing
+syn keyword sqlKeyword	 transfer transaction transactional tries true
 syn keyword sqlKeyword	 tsequal type tune uncommitted unconditionally
-syn keyword sqlKeyword	 unenforced unique union unknown unload 
-syn keyword sqlKeyword	 updating updlock upgrade upload use user
+syn keyword sqlKeyword	 unenforced unicode unique union unistr unknown unlimited unload
+syn keyword sqlKeyword	 unpartition unquiesce updatetime updating updlock upgrade upload
+syn keyword sqlKeyword	 upper use user
 syn keyword sqlKeyword	 using utc utilities validproc
 syn keyword sqlKeyword	 value values varchar variable
-syn keyword sqlKeyword	 varying vcat verify view virtual wait 
-syn keyword sqlKeyword	 warning web when where window with with_auto
+syn keyword sqlKeyword	 varying var_pop var_samp vcat verify versions view virtual wait
+syn keyword sqlKeyword	 warning wd web when where window with with_auto
 syn keyword sqlKeyword	 with_auto with_cube with_rollup without
-syn keyword sqlKeyword	 with_lparen within word work workload writefile 
-syn keyword sqlKeyword	 writers writeserver xlock zeros
+syn keyword sqlKeyword	 with_lparen within word work workload write writefile
+syn keyword sqlKeyword	 writeclientfile writer writers writeserver xlock zeros
 " XML function support
-syn keyword sqlFunction	 openxml xmlelement xmlforest xmlgen xmlconcat xmlagg 
-syn keyword sqlFunction	 xmlattributes 
+syn keyword sqlFunction	 openxml xmlelement xmlforest xmlgen xmlconcat xmlagg
+syn keyword sqlFunction	 xmlattributes
 syn keyword sqlKeyword	 raw auto elements explicit
 " HTTP support
-syn keyword sqlKeyword	 authorization secure url service
+syn keyword sqlKeyword	 authorization secure url service next_soap_header
 " HTTP 9.0.2 new procedure keywords
 syn keyword sqlKeyword	 namespace certificate clientport proxy
 " OLAP support 9.0.0
-syn keyword sqlKeyword	 covar_pop covar_samp corr regr_slope regr_intercept 
+syn keyword sqlKeyword	 covar_pop covar_samp corr regr_slope regr_intercept
 syn keyword sqlKeyword	 regr_count regr_r2 regr_avgx regr_avgy
 syn keyword sqlKeyword	 regr_sxx regr_syy regr_sxy
 
 " Alternate keywords
 syn keyword sqlKeyword	 character dec options proc reference
-syn keyword sqlKeyword	 subtrans tran syn keyword 
+syn keyword sqlKeyword	 subtrans tran syn keyword
 
 
 syn keyword sqlOperator	 in any some all between exists
-syn keyword sqlOperator	 like escape not is and or 
+syn keyword sqlOperator	 like escape not is and or
 syn keyword sqlOperator  intersect minus
 syn keyword sqlOperator  prior distinct
 
@@ -496,43 +511,38 @@ syn keyword sqlStatement validate waitfo
 
 
 syn keyword sqlType	 char long varchar text
-syn keyword sqlType	 bigint decimal double float int integer numeric 
+syn keyword sqlType	 bigint decimal double float int integer numeric
 syn keyword sqlType	 smallint tinyint real
 syn keyword sqlType	 money smallmoney
-syn keyword sqlType	 bit 
-syn keyword sqlType	 date datetime smalldate time timestamp 
+syn keyword sqlType	 bit
+syn keyword sqlType	 date datetime smalldate time timestamp
 syn keyword sqlType	 binary image varbinary uniqueidentifier
 syn keyword sqlType	 xml unsigned
 " New types 10.0.0
 syn keyword sqlType	 varbit nchar nvarchar
 
 syn keyword sqlOption    Allow_nulls_by_default
+syn keyword sqlOption    Allow_read_client_file
+syn keyword sqlOption    Allow_snapshot_isolation
+syn keyword sqlOption    Allow_write_client_file
 syn keyword sqlOption    Ansi_blanks
 syn keyword sqlOption    Ansi_close_cursors_on_rollback
-syn keyword sqlOption    Ansi_integer_overflow
 syn keyword sqlOption    Ansi_permissions
+syn keyword sqlOption    Ansi_substring
 syn keyword sqlOption    Ansi_update_constraints
 syn keyword sqlOption    Ansinull
-syn keyword sqlOption    Assume_distinct_servers
 syn keyword sqlOption    Auditing
 syn keyword sqlOption    Auditing_options
-syn keyword sqlOption    Auto_commit
-syn keyword sqlOption    Auto_refetch
-syn keyword sqlOption    Automatic_timestamp
 syn keyword sqlOption    Background_priority
-syn keyword sqlOption    Bell
-syn keyword sqlOption    Blob_threshold
 syn keyword sqlOption    Blocking
 syn keyword sqlOption    Blocking_timeout
 syn keyword sqlOption    Chained
-syn keyword sqlOption    Char_OEM_Translation
 syn keyword sqlOption    Checkpoint_time
 syn keyword sqlOption    Cis_option
 syn keyword sqlOption    Cis_rowset_size
 syn keyword sqlOption    Close_on_endtrans
-syn keyword sqlOption    Command_delimiter
-syn keyword sqlOption    Commit_on_exit
-syn keyword sqlOption    Compression
+syn keyword sqlOption    Collect_statistics_on_dml_updates
+syn keyword sqlOption    Conn_auditing
 syn keyword sqlOption    Connection_authentication
 syn keyword sqlOption    Continue_after_raiserror
 syn keyword sqlOption    Conversion_error
@@ -543,125 +553,90 @@ syn keyword sqlOption    Date_format
 syn keyword sqlOption    Date_order
 syn keyword sqlOption    Debug_messages
 syn keyword sqlOption    Dedicated_task
+syn keyword sqlOption    Default_dbspace
 syn keyword sqlOption    Default_timestamp_increment
 syn keyword sqlOption    Delayed_commit_timeout
 syn keyword sqlOption    Delayed_commits
-syn keyword sqlOption    Delete_old_logs
-syn keyword sqlOption    Describe_Java_Format
-syn keyword sqlOption    Divide_by_zero_error
-syn keyword sqlOption    Echo
 syn keyword sqlOption    Escape_character
 syn keyword sqlOption    Exclude_operators
 syn keyword sqlOption    Extended_join_syntax
-syn keyword sqlOption    External_remote_options
 syn keyword sqlOption    Fire_triggers
 syn keyword sqlOption    First_day_of_week
-syn keyword sqlOption    Float_as_double
 syn keyword sqlOption    For_xml_null_treatment
 syn keyword sqlOption    Force_view_creation
 syn keyword sqlOption    Global_database_id
-syn keyword sqlOption    Headings
-syn keyword sqlOption    Input_format
+syn keyword sqlOption    Http_session_timeout
 syn keyword sqlOption    Integrated_server_name
 syn keyword sqlOption    Isolation_level
-syn keyword sqlOption    ISQL_command_timing
-syn keyword sqlOption    ISQL_escape_character
-syn keyword sqlOption    ISQL_field_separator
-syn keyword sqlOption    ISQL_log
-syn keyword sqlOption    ISQL_plan
-syn keyword sqlOption    ISQL_plan_cursor_sensitivity
-syn keyword sqlOption    ISQL_plan_cursor_writability
-syn keyword sqlOption    ISQL_quote
-syn keyword sqlOption    Java_heap_size
-syn keyword sqlOption    Java_input_output
-syn keyword sqlOption    Java_namespace_size
-syn keyword sqlOption    Java_page_buffer_size
+syn keyword sqlOption    Java_location
+syn keyword sqlOption    Java_main_userid
+syn keyword sqlOption    Java_vm_options
 syn keyword sqlOption    Lock_rejected_rows
 syn keyword sqlOption    Log_deadlocks
-syn keyword sqlOption    Log_detailed_plans
-syn keyword sqlOption    Log_max_requests
 syn keyword sqlOption    Login_mode
 syn keyword sqlOption    Login_procedure
+syn keyword sqlOption    Materialized_view_optimization
+syn keyword sqlOption    Max_client_statements_cached
 syn keyword sqlOption    Max_cursor_count
 syn keyword sqlOption    Max_hash_size
 syn keyword sqlOption    Max_plans_cached
+syn keyword sqlOption    Max_priority
+syn keyword sqlOption    Max_query_tasks
 syn keyword sqlOption    Max_recursive_iterations
 syn keyword sqlOption    Max_statement_count
-syn keyword sqlOption    Max_work_table_hash_size
+syn keyword sqlOption    Max_temp_space
 syn keyword sqlOption    Min_password_length
 syn keyword sqlOption    Nearest_century
 syn keyword sqlOption    Non_keywords
-syn keyword sqlOption    NULLS
-syn keyword sqlOption    ODBC_describe_binary_as_varbinary
-syn keyword sqlOption    ODBC_distinguish_char_and_varchar
-syn keyword sqlOption    On_Charset_conversion_failure
-syn keyword sqlOption    On_error
+syn keyword sqlOption    Odbc_describe_binary_as_varbinary
+syn keyword sqlOption    Odbc_distinguish_char_and_varchar
+syn keyword sqlOption    Oem_string
+syn keyword sqlOption    On_charset_conversion_failure
 syn keyword sqlOption    On_tsql_error
-syn keyword sqlOption    Optimistic_wait_for_commit
 syn keyword sqlOption    Optimization_goal
 syn keyword sqlOption    Optimization_level
-syn keyword sqlOption    Optimization_logging
 syn keyword sqlOption    Optimization_workload
-syn keyword sqlOption    Output_format
-syn keyword sqlOption    Output_length
-syn keyword sqlOption    Output_nulls
-syn keyword sqlOption    Percent_as_comment
 syn keyword sqlOption    Pinned_cursor_percent_of_cache
+syn keyword sqlOption    Post_login_procedure
 syn keyword sqlOption    Precision
 syn keyword sqlOption    Prefetch
 syn keyword sqlOption    Preserve_source_format
 syn keyword sqlOption    Prevent_article_pkey_update
-syn keyword sqlOption    Qualify_owners
-syn keyword sqlOption    Query_plan_on_open
-syn keyword sqlOption    Quiet
-syn keyword sqlOption    Quote_all_identifiers
+syn keyword sqlOption    Priority
+syn keyword sqlOption    Query_mem_timeout
 syn keyword sqlOption    Quoted_identifier
 syn keyword sqlOption    Read_past_deleted
 syn keyword sqlOption    Recovery_time
 syn keyword sqlOption    Remote_idle_timeout
 syn keyword sqlOption    Replicate_all
-syn keyword sqlOption    Replication_error
-syn keyword sqlOption    Replication_error_piece
+syn keyword sqlOption    Request_timeout
 syn keyword sqlOption    Return_date_time_as_string
-syn keyword sqlOption    Return_java_as_string
-syn keyword sqlOption    RI_Trigger_time
 syn keyword sqlOption    Rollback_on_deadlock
 syn keyword sqlOption    Row_counts
-syn keyword sqlOption    Save_remote_passwords
 syn keyword sqlOption    Scale
-syn keyword sqlOption    Screen_format
-syn keyword sqlOption    Sort_Collation
-syn keyword sqlOption    SQL_flagger_error_level
-syn keyword sqlOption    SQL_flagger_warning_level
-syn keyword sqlOption    SQLConnect
-syn keyword sqlOption    SQLStart
-syn keyword sqlOption    SR_Date_Format
-syn keyword sqlOption    SR_Time_Format
-syn keyword sqlOption    SR_TimeStamp_Format
-syn keyword sqlOption    Statistics
+syn keyword sqlOption    Secure_feature_key
+syn keyword sqlOption    Sort_collation
+syn keyword sqlOption    Sql_flagger_error_level
+syn keyword sqlOption    Sql_flagger_warning_level
 syn keyword sqlOption    String_rtruncation
-syn keyword sqlOption    Subscribe_by_remote
 syn keyword sqlOption    Subsume_row_locks
-syn keyword sqlOption    Suppress_TDS_debugging
-syn keyword sqlOption    TDS_Empty_string_is_null
+syn keyword sqlOption    Suppress_tds_debugging
+syn keyword sqlOption    Synchronize_mirror_on_commit
+syn keyword sqlOption    Tds_empty_string_is_null
 syn keyword sqlOption    Temp_space_limit_check
-syn keyword sqlOption    Thread_count
-syn keyword sqlOption    Thread_stack
-syn keyword sqlOption    Thread_swaps
 syn keyword sqlOption    Time_format
 syn keyword sqlOption    Time_zone_adjustment
 syn keyword sqlOption    Timestamp_format
-syn keyword sqlOption    Truncate_date_values
 syn keyword sqlOption    Truncate_timestamp_values
-syn keyword sqlOption    Truncate_with_auto_commit
-syn keyword sqlOption    Truncation_length
-syn keyword sqlOption    Tsql_hex_constant
+syn keyword sqlOption    Tsql_outer_joins
 syn keyword sqlOption    Tsql_variables
+syn keyword sqlOption    Updatable_statement_isolation
 syn keyword sqlOption    Update_statistics
+syn keyword sqlOption    Upgrade_database_capability
 syn keyword sqlOption    User_estimates
-syn keyword sqlOption    Verify_all_columns
-syn keyword sqlOption    Verify_threshold
+syn keyword sqlOption    Verify_password_function
 syn keyword sqlOption    Wait_for_commit
+syn keyword sqlOption    Webservice_namespace_host
 
 " Strings and characters:
 syn region sqlString		start=+"+    end=+"+ contains=@Spell
--- a/runtime/syntax/sshconfig.vim
+++ b/runtime/syntax/sshconfig.vim
@@ -1,23 +1,21 @@
 " Vim syntax file
-" This is a GENERATED FILE. Please always refer to source file at the URI below.
-" Language: OpenSSH server configuration file (ssh_config)
-" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
-" Last Change: 2006-03-05
-" URL: http://trific.ath.cx/Ftp/vim/syntax/sshconfig.vim
+" Language: OpenSSH client configuration file (ssh_config)
+" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2009-07-09
 
 " Setup
 if version >= 600
-	if exists("b:current_syntax")
-		finish
-	endif
+  if exists("b:current_syntax")
+    finish
+  endif
 else
-	syntax clear
+  syntax clear
 endif
 
 if version >= 600
-	setlocal iskeyword=_,-,a-z,A-Z,48-57
+  setlocal iskeyword=_,-,a-z,A-Z,48-57
 else
-	set iskeyword=_,-,a-z,A-Z,48-57
+  set iskeyword=_,-,a-z,A-Z,48-57
 endif
 
 syn case ignore
@@ -28,19 +26,21 @@ syn keyword sshconfigTodo TODO FIXME NOT
 
 " Constants
 syn keyword sshconfigYesNo yes no ask
-syn keyword sshconfigCipher blowfish des 3des
+syn keyword sshconfigYesNo any auto
 syn keyword sshconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc
 syn keyword sshconfigCipher aes192-cbc aes256-cbc aes128-ctr aes256-ctr
 syn keyword sshconfigCipher arcfour arcfour128 arcfour256 cast128-cbc
 syn keyword sshconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96
 syn keyword sshconfigMAC hmac-md5-96
+syn match sshconfigMAC "\<umac-64@openssh\.com\>"
 syn keyword sshconfigHostKeyAlg ssh-rsa ssh-dss
 syn keyword sshconfigPreferredAuth hostbased publickey password
 syn keyword sshconfigPreferredAuth keyboard-interactive
 syn keyword sshconfigLogLevel QUIET FATAL ERROR INFO VERBOSE
 syn keyword sshconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3
-syn keyword sshconfigSysLogFacility DAEMON USER AUTH LOCAL0 LOCAL1 LOCAL2
-syn keyword sshconfigSysLogFacility LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
+syn keyword sshconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1
+syn keyword sshconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
+syn match sshconfigVar "%[rhpldun]\>"
 syn match sshconfigSpecial "[*?]"
 syn match sshconfigNumber "\d\+"
 syn match sshconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>"
@@ -49,57 +49,68 @@ syn match sshconfigHostPort "\<\(\x\{,4}
 
 " Keywords
 syn keyword sshconfigHostSect Host
-syn keyword sshconfigKeyword AddressFamily BatchMode BindAddress
+syn keyword sshconfigKeyword AddressFamily
+syn keyword sshconfigKeyword BatchMode BindAddress
 syn keyword sshconfigKeyword ChallengeResponseAuthentication CheckHostIP
 syn keyword sshconfigKeyword Cipher Ciphers ClearAllForwardings
 syn keyword sshconfigKeyword Compression CompressionLevel ConnectTimeout
 syn keyword sshconfigKeyword ConnectionAttempts ControlMaster
-syn keyword sshconfigKeyword ControlPath DynamicForward EnableSSHKeysign
-syn keyword sshconfigKeyword EscapeChar ForwardAgent ForwardX11
-syn keyword sshconfigKeyword ForwardX11Trusted GSSAPIAuthentication
+syn keyword sshconfigKeyword ControlPath DynamicForward
+syn keyword sshconfigKeyword EnableSSHKeysign EscapeChar ExitOnForwardFailure
+syn keyword sshconfigKeyword ForwardAgent ForwardX11
+syn keyword sshconfigKeyword ForwardX11Trusted
+syn keyword sshconfigKeyword GSSAPIAuthentication
 syn keyword sshconfigKeyword GSSAPIDelegateCredentials GatewayPorts
-syn keyword sshconfigKeyword GlobalKnownHostsFile HostKeyAlgorithms
-syn keyword sshconfigKeyword HashKnownHosts KbdInteractiveDevices
+syn keyword sshconfigKeyword GlobalKnownHostsFile
+syn keyword sshconfigKeyword HostKeyAlgorithms HashKnownHosts
 syn keyword sshconfigKeyword HostKeyAlias HostName HostbasedAuthentication
-syn keyword sshconfigKeyword IdentitiesOnly IdentityFile LocalForward
-syn keyword sshconfigKeyword LogLevel MACs NoHostAuthenticationForLocalhost
-syn keyword sshconfigKeyword NumberOfPasswordPrompts PasswordAuthentication
+syn keyword sshconfigKeyword IdentitiesOnly IdentityFile
+syn keyword sshconfigKeyword KbdInteractiveAuthentication KbdInteractiveDevices
+syn keyword sshconfigKeyword LocalCommand LocalForward LogLevel
+syn keyword sshconfigKeyword MACs
+syn keyword sshconfigKeyword NoHostAuthenticationForLocalhost
+syn keyword sshconfigKeyword NumberOfPasswordPrompts
+syn keyword sshconfigKeyword PasswordAuthentication PermitLocalCommand
 syn keyword sshconfigKeyword Port PreferredAuthentications Protocol
 syn keyword sshconfigKeyword ProxyCommand PubkeyAuthentication
-syn keyword sshconfigKeyword RSAAuthentication RemoteForward
-syn keyword sshconfigKeyword RhostsAuthentication RhostsRSAAuthentication
+syn keyword sshconfigKeyword PermitLocalCommand
+syn keyword sshconfigKeyword RSAAuthentication RemoteForward RekeyLimit
+syn keyword sshconfigKeyword RhostsRSAAuthentication
 syn keyword sshconfigKeyword SendEnv ServerAliveCountMax ServerAliveInterval
 syn keyword sshconfigKeyword SmartcardDevice StrictHostKeyChecking
+syn keyword sshconfigKeyword Tunnel TunnelDevice
 syn keyword sshconfigKeyword TCPKeepAlive UsePrivilegedPort User
-syn keyword sshconfigKeyword UserKnownHostsFile VerifyHostKeyDNS XAuthLocation
+syn keyword sshconfigKeyword UserKnownHostsFile
+syn keyword sshconfigKeyword VerifyHostKeyDNS VisualHostKey
+syn keyword sshconfigKeyword XAuthLocation
 
 " Define the default highlighting
 if version >= 508 || !exists("did_sshconfig_syntax_inits")
-	if version < 508
-		let did_sshconfig_syntax_inits = 1
-		command -nargs=+ HiLink hi link <args>
-	else
-		command -nargs=+ HiLink hi def link <args>
-	endif
+  if version < 508
+    let did_sshconfig_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
 
-	HiLink sshconfigComment Comment
-	HiLink sshconfigTodo Todo
-	HiLink sshconfigHostPort sshconfigConstant
-	HiLink sshconfigNumber sshconfigConstant
-	HiLink sshconfigConstant Constant
-	HiLink sshconfigYesNo sshconfigEnum
-	HiLink sshconfigCipher sshconfigEnum
-	HiLink sshconfigMAC sshconfigEnum
-	HiLink sshconfigHostKeyAlg sshconfigEnum
-	HiLink sshconfigLogLevel sshconfigEnum
-	HiLink sshconfigSysLogFacility sshconfigEnum
-	HiLink sshconfigPreferredAuth sshconfigEnum
-	HiLink sshconfigEnum Function
-	HiLink sshconfigSpecial Special
-	HiLink sshconfigKeyword Keyword
-	HiLink sshconfigHostSect Type
-	delcommand HiLink
+  HiLink sshconfigComment        Comment
+  HiLink sshconfigTodo           Todo
+  HiLink sshconfigHostPort       sshconfigConstant
+  HiLink sshconfigNumber         sshconfigConstant
+  HiLink sshconfigConstant       Constant
+  HiLink sshconfigYesNo          sshconfigEnum
+  HiLink sshconfigCipher         sshconfigEnum
+  HiLink sshconfigMAC            sshconfigEnum
+  HiLink sshconfigHostKeyAlg     sshconfigEnum
+  HiLink sshconfigLogLevel       sshconfigEnum
+  HiLink sshconfigSysLogFacility sshconfigEnum
+  HiLink sshconfigPreferredAuth  sshconfigEnum
+  HiLink sshconfigVar            sshconfigEnum
+  HiLink sshconfigEnum           Identifier
+  HiLink sshconfigSpecial        Special
+  HiLink sshconfigKeyword        Keyword
+  HiLink sshconfigHostSect       Type
+  delcommand HiLink
 endif
 
 let b:current_syntax = "sshconfig"
-
--- a/runtime/syntax/sshdconfig.vim
+++ b/runtime/syntax/sshdconfig.vim
@@ -1,23 +1,21 @@
 " Vim syntax file
-" This is a GENERATED FILE. Please always refer to source file at the URI below.
 " Language: OpenSSH server configuration file (sshd_config)
-" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
-" Last Change: 2006-03-05
-" URL: http://trific.ath.cx/Ftp/vim/syntax/sshdconfig.vim
+" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2009-07-09
 
 " Setup
 if version >= 600
-	if exists("b:current_syntax")
-		finish
-	endif
+  if exists("b:current_syntax")
+    finish
+  endif
 else
-	syntax clear
+  syntax clear
 endif
 
 if version >= 600
-	setlocal iskeyword=_,-,a-z,A-Z,48-57
+  setlocal iskeyword=_,-,a-z,A-Z,48-57
 else
-	set iskeyword=_,-,a-z,A-Z,48-57
+  set iskeyword=_,-,a-z,A-Z,48-57
 endif
 
 syn case ignore
@@ -27,78 +25,87 @@ syn match sshdconfigComment "#.*$" conta
 syn keyword sshdconfigTodo TODO FIXME NOT contained
 
 " Constants
-syn keyword sshdconfigYesNo yes no
+syn keyword sshdconfigYesNo yes no none
+syn keyword sshdconfigAddressFamily any inet inet6
 syn keyword sshdconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc
 syn keyword sshdconfigCipher aes192-cbc aes256-cbc aes128-ctr aes256-ctr
 syn keyword sshdconfigCipher arcfour arcfour128 arcfour256 cast128-cbc
 syn keyword sshdconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96
 syn keyword sshdconfigMAC hmac-md5-96
+syn match sshdconfigMAC "\<umac-64@openssh\.com\>"
 syn keyword sshdconfigRootLogin without-password forced-commands-only
 syn keyword sshdconfigLogLevel QUIET FATAL ERROR INFO VERBOSE
 syn keyword sshdconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3
-syn keyword sshdconfigSysLogFacility DAEMON USER AUTH LOCAL0 LOCAL1 LOCAL2
-syn keyword sshdconfigSysLogFacility LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
+syn keyword sshdconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1
+syn keyword sshdconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
 syn match sshdconfigSpecial "[*?]"
 syn match sshdconfigNumber "\d\+"
 syn match sshdconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>"
 syn match sshdconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>"
+" FIXME: this matches quite a few things which are NOT valid IPv6 addresses
 syn match sshdconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}:\d\+\>"
 syn match sshdconfigTime "\<\(\d\+[sSmMhHdDwW]\)\+\>"
 
 " Keywords
-syn keyword sshdconfigKeyword AcceptEnv AddressFamily
+syn keyword sshdconfigMatch Host User Group Address
+syn keyword sshdconfigKeyword AcceptEnv AddressFamily AllowAgentForwarding
 syn keyword sshdconfigKeyword AllowGroups AllowTcpForwarding
-syn keyword sshdconfigKeyword AllowUsers AuthorizedKeysFile Banner
-syn keyword sshdconfigKeyword ChallengeResponseAuthentication
+syn keyword sshdconfigKeyword AllowUsers AuthorizedKeysFile
+syn keyword sshdconfigKeyword Banner
+syn keyword sshdconfigKeyword ChallengeResponseAuthentication ChrootDirectory
 syn keyword sshdconfigKeyword Ciphers ClientAliveCountMax
 syn keyword sshdconfigKeyword ClientAliveInterval Compression
-syn keyword sshdconfigKeyword DenyGroups DenyUsers GSSAPIAuthentication
-syn keyword sshdconfigKeyword GSSAPICleanupCredentials GatewayPorts
-syn keyword sshdconfigKeyword HostKey HostbasedAuthentication
+syn keyword sshdconfigKeyword DenyGroups DenyUsers
+syn keyword sshdconfigKeyword ForceCommand
+syn keyword sshdconfigKeyword GatewayPorts GSSAPIAuthentication
+syn keyword sshdconfigKeyword GSSAPICleanupCredentials
+syn keyword sshdconfigKeyword HostbasedAuthentication HostKey
 syn keyword sshdconfigKeyword IgnoreRhosts IgnoreUserKnownHosts
-syn keyword sshdconfigKeyword KerberosAuthentication KerberosOrLocalPasswd
-syn keyword sshdconfigKeyword KerberosTgtPassing KerberosTicketCleanup
-syn keyword sshdconfigKeyword KerberosGetAFSToken
-syn keyword sshdconfigKeyword KeyRegenerationInterval ListenAddress
-syn keyword sshdconfigKeyword LogLevel LoginGraceTime MACs MaxAuthTries
-syn keyword sshdconfigKeyword MaxStartups PasswordAuthentication
-syn keyword sshdconfigKeyword PermitEmptyPasswords PermitRootLogin
+syn keyword sshdconfigKeyword KerberosAuthentication KerberosGetAFSToken
+syn keyword sshdconfigKeyword KerberosOrLocalPasswd KerberosTicketCleanup
+syn keyword sshdconfigKeyword KeyRegenerationInterval
+syn keyword sshdconfigKeyword ListenAddress LoginGraceTime LogLevel
+syn keyword sshdconfigKeyword MACs Match MaxAuthTries MaxSessions MaxStartups
+syn keyword sshdconfigKeyword PasswordAuthentication PermitEmptyPasswords
+syn keyword sshdconfigKeyword PermitRootLogin PermitOpen PermitTunnel
 syn keyword sshdconfigKeyword PermitUserEnvironment PidFile Port
 syn keyword sshdconfigKeyword PrintLastLog PrintMotd Protocol
-syn keyword sshdconfigKeyword PubkeyAuthentication RSAAuthentication
-syn keyword sshdconfigKeyword RhostsAuthentication RhostsRSAAuthentication
-syn keyword sshdconfigKeyword ServerKeyBits StrictModes Subsystem
-syn keyword sshdconfigKeyword ShowPatchLevel
-syn keyword sshdconfigKeyword SyslogFacility TCPKeepAlive UseDNS
-syn keyword sshdconfigKeyword UseLogin UsePAM UsePrivilegeSeparation
+syn keyword sshdconfigKeyword PubkeyAuthentication
+syn keyword sshdconfigKeyword RhostsRSAAuthentication RSAAuthentication
+syn keyword sshdconfigKeyword ServerKeyBits ShowPatchLevel StrictModes
+syn keyword sshdconfigKeyword Subsystem SyslogFacility
+syn keyword sshdconfigKeyword TCPKeepAlive
+syn keyword sshdconfigKeyword UseDNS UseLogin UsePAM UsePrivilegeSeparation
 syn keyword sshdconfigKeyword X11DisplayOffset X11Forwarding
 syn keyword sshdconfigKeyword X11UseLocalhost XAuthLocation
 
 " Define the default highlighting
 if version >= 508 || !exists("did_sshdconfig_syntax_inits")
-	if version < 508
-		let did_sshdconfig_syntax_inits = 1
-		command -nargs=+ HiLink hi link <args>
-	else
-		command -nargs=+ HiLink hi def link <args>
-	endif
+  if version < 508
+    let did_sshdconfig_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
 
-	HiLink sshdconfigComment Comment
-	HiLink sshdconfigTodo Todo
-	HiLink sshdconfigHostPort sshdconfigConstant
-	HiLink sshdconfigTime sshdconfigConstant
-	HiLink sshdconfigNumber sshdconfigConstant
-	HiLink sshdconfigConstant Constant
-	HiLink sshdconfigYesNo sshdconfigEnum
-	HiLink sshdconfigCipher sshdconfigEnum
-	HiLink sshdconfigMAC sshdconfigEnum
-	HiLink sshdconfigRootLogin sshdconfigEnum
-	HiLink sshdconfigLogLevel sshdconfigEnum
-	HiLink sshdconfigSysLogFacility sshdconfigEnum
-	HiLink sshdconfigEnum Function
-	HiLink sshdconfigSpecial Special
-	HiLink sshdconfigKeyword Keyword
-	delcommand HiLink
+  HiLink sshdconfigComment        Comment
+  HiLink sshdconfigTodo           Todo
+  HiLink sshdconfigHostPort       sshdconfigConstant
+  HiLink sshdconfigTime           sshdconfigConstant
+  HiLink sshdconfigNumber         sshdconfigConstant
+  HiLink sshdconfigConstant       Constant
+  HiLink sshdconfigYesNo          sshdconfigEnum
+  HiLink sshdconfigAddressFamily  sshdconfigEnum
+  HiLink sshdconfigCipher         sshdconfigEnum
+  HiLink sshdconfigMAC            sshdconfigEnum
+  HiLink sshdconfigRootLogin      sshdconfigEnum
+  HiLink sshdconfigLogLevel       sshdconfigEnum
+  HiLink sshdconfigSysLogFacility sshdconfigEnum
+  HiLink sshdconfigEnum           Function
+  HiLink sshdconfigSpecial        Special
+  HiLink sshdconfigKeyword        Keyword
+  HiLink sshdconfigMatch          Type
+  delcommand HiLink
 endif
 
 let b:current_syntax = "sshdconfig"
--- a/runtime/syntax/svn.vim
+++ b/runtime/syntax/svn.vim
@@ -2,7 +2,7 @@
 " Language:     Subversion (svn) commit file
 " Maintainer:   Dmitry Vasiliev <dima at hlabs dot spb dot ru>
 " URL:          http://www.hlabs.spb.ru/vim/svn.vim
-" Revision:     $Id$
+" Revision:     $Id: svn.vim 683 2008-07-30 11:52:38Z hdima $
 " Filenames:    svn-commit*.tmp
 " Version:      1.6
 
--- a/runtime/syntax/tads.vim
+++ b/runtime/syntax/tads.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	TADS
 " Maintainer:	Amir Karger <karger@post.harvard.edu>
-" $Date$
-" $Revision$
+" $Date: 2004/06/13 19:28:45 $
+" $Revision: 1.1 $
 " Stolen from: Bram Moolenaar's C language file
 " Newest version at: http://www.hec.utah.edu/~karger/vim/syntax/tads.vim
 " History info at the bottom of the file
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/taskdata.vim
@@ -0,0 +1,43 @@
+" Vim syntax file
+" Language:	task data
+" Maintainer:	John Florian <jflorian@doubledog.org>
+" Updated:	Wed Jul  8 19:46:20 EDT 2009
+
+
+" 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
+elseif exists("b:current_syntax")
+  finish
+endif
+
+" Key Names for values.
+syn keyword taskdataKey		description due end entry imask mask parent
+syn keyword taskdataKey		priority project recur start status tags uuid
+syn match taskdataKey		"annotation_\d\+"
+syn match taskdataUndo		"^time.*$"
+syn match taskdataUndo		"^\(old \|new \|---\)"
+
+" Values associated with key names.
+"
+" Strings
+syn region taskdataString	matchgroup=Normal start=+"+ end=+"+
+			\	contains=taskdataEncoded,taskdataUUID,@Spell
+"
+" Special Embedded Characters (e.g., "&comma;")
+syn match taskdataEncoded	"&\a\+;" contained
+" UUIDs
+syn match taskdataUUID		"\x\{8}-\(\x\{4}-\)\{3}\x\{12}" contained
+
+
+" The default methods for highlighting.  Can be overridden later.
+hi def link taskdataEncoded	Function
+hi def link taskdataKey		Statement
+hi def link taskdataString 	String
+hi def link taskdataUUID 	Special
+hi def link taskdataUndo 	Type
+
+let b:current_syntax = "taskdata"
+
+" vim:noexpandtab
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/taskedit.vim
@@ -0,0 +1,35 @@
+" Vim syntax file
+" Language:	support for 'task 42 edit'
+" Maintainer:	John Florian <jflorian@doubledog.org>
+" Updated:	Wed Jul  8 19:46:32 EDT 2009
+
+
+" 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
+elseif exists("b:current_syntax")
+  finish
+endif
+
+syn match taskeditHeading	"^\s*#\s*Name\s\+Editable details\s*$" contained
+syn match taskeditHeading	"^\s*#\s*-\+\s\+-\+\s*$" contained
+syn match taskeditReadOnly	"^\s*#\s*\(UU\)\?ID:.*$" contained
+syn match taskeditReadOnly	"^\s*#\s*Status:.*$" contained
+syn match taskeditReadOnly	"^\s*#\s*i\?Mask:.*$" contained
+syn match taskeditKey		"^ *.\{-}:" nextgroup=taskeditString
+syn match taskeditComment	"^\s*#.*$"
+			\	contains=taskeditReadOnly,taskeditHeading
+syn match taskeditString	".*$" contained contains=@Spell
+
+
+" The default methods for highlighting.  Can be overridden later.
+hi def link taskeditComment	Comment
+hi def link taskeditHeading	Function
+hi def link taskeditKey		Statement
+hi def link taskeditReadOnly	Special
+hi def link taskeditString	String
+
+let b:current_syntax = "taskedit"
+
+" vim:noexpandtab
--- a/runtime/syntax/tcl.vim
+++ b/runtime/syntax/tcl.vim
@@ -1,13 +1,16 @@
 " Vim syntax file
-" Language:	TCL/TK
-" Maintainer:	Brett Cannon <brett@python.org>
+" Language:	Tcl/Tk
+" Maintainer:	Taylor Venable <taylor@metasyntax.net>
+" 		(previously Brett Cannon <brett@python.org>)
 " 		(previously Dean Copsey <copsey@cs.ucdavis.edu>)
 "		(previously Matt Neumann <mattneu@purpleturtle.com>)
 "		(previously Allan Kelly <allan@fruitloaf.co.uk>)
 " Original:	Robin Becker <robin@jessikat.demon.co.uk>
-" Last Change:	2006 Nov 17
+" Last Change:	2009/04/06 02:38:36
+" Version:	1.13
+" URL:		http://real.metasyntax.net:2357/cvs/cvsweb.cgi/Config/vim/syntax/tcl.vim
 "
-" Keywords TODO: format clock click anchor
+" Keywords TODO: click anchor
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -17,19 +20,40 @@ elseif exists("b:current_syntax")
   finish
 endif
 
-" A bunch of useful keywords
-syn keyword tclStatement  tell socket subst open eof pwd glob list exec pid
-syn keyword tclStatement  auto_load_index time unknown eval lrange fblocked
-syn keyword tclStatement  lsearch auto_import gets lappend proc variable llength
-syn keyword tclStatement  auto_execok return linsert error catch clock info
-syn keyword tclStatement  split array fconfigure concat join lreplace source
-syn keyword tclStatement  fcopy global auto_qualify update close cd auto_load
-syn keyword tclStatement  file append format read package set binary namespace
-syn keyword tclStatement  scan trace seek flush after vwait uplevel lset rename
-syn keyword tclStatement  fileevent regexp upvar unset encoding expr load regsub
-syn keyword tclStatement interp exit puts incr lindex lsort tclLog string
+" Basic Tcl commands: http://www.tcl.tk/man/tcl8.5/TclCmd/contents.htm
+syn keyword tclCommand		after append apply array bgerror binary catch cd chan clock
+syn keyword tclCommand		close concat dde dict encoding eof error eval exec exit
+syn keyword tclCommand		expr fblocked fconfigure fcopy file fileevent filename flush
+syn keyword tclCommand		format gets glob global history incr info interp join
+syn keyword tclCommand		lappend lassign lindex linsert list llength load lrange lrepeat
+syn keyword tclCommand		lreplace lreverse lsearch lset lsort memory namespace open package
+syn keyword tclCommand		pid proc puts pwd read regexp registry regsub rename return
+syn keyword tclCommand		scan seek set socket source split string subst tell time
+syn keyword tclCommand		trace unknown unload unset update uplevel upvar variable vwait
+
+" The 'Tcl Standard Library' commands: http://www.tcl.tk/man/tcl8.5/TclCmd/library.htm
+syn keyword tclCommand		auto_execok auto_import auto_load auto_mkindex auto_mkindex_old
+syn keyword tclCommand		auto_qualify auto_reset parray tcl_endOfWord tcl_findLibrary
+syn keyword tclCommand		tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter
+syn keyword tclCommand		tcl_wordBreakBefore
+
+" Commands that were added in Tcl 8.6
+
+syn keyword tclCommand		my oo::copy oo::define oo::objdefine self
+syn keyword tclCommand		coroutine tailcall throw yield
+
+" Global variables used by Tcl: http://www.tcl.tk/man/tcl8.5/TclCmd/tclvars.htm
+syn keyword tclVars		env errorCode errorInfo tcl_library tcl_patchLevel tcl_pkgPath
+syn keyword tclVars		tcl_platform tcl_precision tcl_rcFileName tcl_traceCompile
+syn keyword tclVars		tcl_traceExec tcl_wordchars tcl_nonwordchars tcl_version argc argv
+syn keyword tclVars		argv0 tcl_interactive geometry
+
+" Strings which expr accepts as boolean values, aside from zero / non-zero.
+syn keyword tclBoolean		true false on off yes no
+
 syn keyword tclLabel		case default
 syn keyword tclConditional	if then else elseif switch
+syn keyword tclConditional	try finally
 syn keyword tclRepeat		while for foreach break continue
 syn keyword tcltkSwitch	contained	insert create polygon fill outline tag
 
@@ -63,9 +87,14 @@ syn keyword tcltkWidgetSwitch contained 
 syn keyword tcltkWidgetSwitch contained delete names types create
 " variable reference
 	" ::optional::namespaces
-syn match tclVarRef "$\(\(::\)\?\([[:alnum:]_.]*::\)*\)\a[a-zA-Z0-9_.]*"
+syn match tclVarRef "$\(\(::\)\?\([[:alnum:]_]*::\)*\)\a[[:alnum:]_]*"
 	" ${...} may contain any character except '}'
 syn match tclVarRef "${[^}]*}"
+
+" The syntactic unquote-splicing replacement for [expand].
+syn match tclExpand '\s{\*}'
+syn match tclExpand '^{\*}'
+
 " menu, mane add
 syn keyword tcltkWidgetSwitch contained active end last none cascade checkbutton command radiobutton separator
 syn keyword tcltkWidgetSwitch contained activebackground actveforeground accelerator background bitmap columnbreak
@@ -130,11 +159,10 @@ syn region tcltkCommand matchgroup=tcltk
 
 " EXPR
 " commands associated with expr
-syn keyword tcltkMaths	contained	acos	cos	hypot	sinh
-syn keyword tcltkMaths	contained	asin	cosh	log	sqrt
-syn keyword tcltkMaths	contained	atan	exp	log10	tan
-syn keyword tcltkMaths	contained	atan2	floor	pow	tanh
-syn keyword tcltkMaths	contained	ceil	fmod	sin
+syn keyword tcltkMaths contained	abs acos asin atan atan2 bool ceil cos cosh double entier
+syn keyword tcltkMaths contained	exp floor fmod hypot int isqrt log log10 max min pow rand
+syn keyword tcltkMaths contained	round sin sinh sqrt srand tan tanh wide
+
 syn region tcltkCommand matchgroup=tcltkCommandColor start="\<expr\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1  contains=tclLineContinue,tcltkMaths,tclNumber,tclVarRef,tclString,tcltlWidgetSwitch,tcltkCommand,tcltkPackConf
 
 " format
@@ -165,17 +193,26 @@ syn region tcltkCommand matchgroup=tcltk
 
 syn keyword tclTodo contained	TODO
 
+" Sequences which are backslash-escaped: http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm#M16
+" Octal, hexadecimal, unicode codepoints, and the classics.
+" Tcl takes as many valid characters in a row as it can, so \xAZ in a string is newline followed by 'Z'.
+syn match   tclSpecial contained '\\\([0-7]\{1,3}\|x\x\{1,2}\|u\x\{1,4}\|[abfnrtv]\)'
+syn match   tclSpecial contained '\\[\[\]\{\}\"\$]'
 
-" String and Character contstants
-" Highlight special characters (those which have a backslash) differently
-syn match   tclSpecial contained "\\\d\d\d\=\|\\."
+" Command appearing inside another command or inside a string.
+syn region tclEmbeddedStatement	start='\[' end='\]' contained contains=tclCommand,tclNumber,tclLineContinue,tclString,tclVarRef,tclEmbeddedStatement
 " A string needs the skip argument as it may legitimately contain \".
 " Match at start of line
 syn region  tclString		  start=+^"+ end=+"+ contains=tclSpecial skip=+\\\\\|\\"+
 "Match all other legal strings.
-syn region  tclString		  start=+[^\\]"+ms=s+1  end=+"+ contains=tclSpecial skip=+\\\\\|\\"+
+syn region  tclString		  start=+[^\\]"+ms=s+1  end=+"+ contains=tclSpecial,tclVarRef,tclEmbeddedStatement skip=+\\\\\|\\"+
 
-syn match   tclLineContinue "\\\s*$"
+" Line continuation is backslash immediately followed by newline.
+syn match tclLineContinue '\\$'
+
+if exists('g:tcl_warn_continuation')
+    syn match tclNotLineContinue '\\\s\+$'
+endif
 
 "integer number, or floating point number without a dot and with "f".
 syn case ignore
@@ -208,13 +245,13 @@ if version >= 508 || !exists("did_tcl_sy
   endif
 
   HiLink tcltkSwitch		Special
+  HiLink tclExpand		Special
   HiLink tclLabel		Label
   HiLink tclConditional		Conditional
   HiLink tclRepeat		Repeat
   HiLink tclNumber		Number
   HiLink tclError		Error
-  HiLink tclStatement		Statement
-  "HiLink tclStatementColor	Statement
+  HiLink tclCommand		Statement
   HiLink tclString		String
   HiLink tclComment		Comment
   HiLink tclSpecial		Special
@@ -223,6 +260,9 @@ if version >= 508 || !exists("did_tcl_sy
   HiLink tcltkCommandColor	Statement
   HiLink tcltkWidgetColor	Structure
   HiLink tclLineContinue	WarningMsg
+if exists('g:tcl_warn_continuation')
+  HiLink tclNotLineContinue	ErrorMsg
+endif
   HiLink tcltkStringSwitch	Special
   HiLink tcltkArraySwitch	Special
   HiLink tcltkLsortSwitch	Special
@@ -232,7 +272,6 @@ if version >= 508 || !exists("did_tcl_sy
   HiLink tcltkNamespaceSwitch	Special
   HiLink tcltkWidgetSwitch	Special
   HiLink tcltkPackConfColor	Identifier
-  "HiLink tcltkLsort		Statement
   HiLink tclVarRef		Identifier
 
   delcommand HiLink
@@ -240,4 +279,4 @@ endif
 
 let b:current_syntax = "tcl"
 
-" vim: ts=8
+" vim: ts=8 noet
--- a/runtime/syntax/tcsh.vim
+++ b/runtime/syntax/tcsh.vim
@@ -1,6 +1,6 @@
 " tcsh.vim: Vim syntax file for tcsh scripts
-" Maintainer:	Gautam Iyer <gi1242@users.sourceforge.net>
-" Modified:	Sat 16 Jun 2007 04:52:12 PM PDT
+" Maintainer:	Gautam Iyer <gi1242@gmail.com>
+" Modified:	Thu 17 Dec 2009 06:05:07 PM EST
 "
 " Description: We break up each statement into a "command" and an "end" part.
 " All groups are either a "command" or part of the "end" of a statement (ie
@@ -60,7 +60,7 @@ syn region  tcshEnvEnd	contained transpa
 " alias and unalias (contains special aliases)
 syn keyword tcshAliases contained beepcmd cwdcmd jobcmd helpcommand periodic precmd postcmd shell
 syn keyword tcshBuiltin	nextgroup=tcshAliCmd skipwhite alias unalias
-syn match   tcshAliCmd	contained nextgroup=tcshAliEnd skipwhite '\v[\w-]+' contains=tcshAliases
+syn match   tcshAliCmd	contained nextgroup=tcshAliEnd skipwhite '\v(\w|-)+' contains=tcshAliases
 syn region  tcshAliEnd	contained transparent matchgroup=tcshBuiltin start='' skip='\\$' end='$\|;' contains=@tcshStatementEnds
 
 " if statements
@@ -197,7 +197,11 @@ syn match tcshSpecial	contained '\v\\%([
 
 " ----- Synchronising -----
 if exists('tcsh_minlines')
-    exec 'syn sync minlines=' . tcsh_minlines
+    if tcsh_minlines == 'fromstart'
+	syn sync fromstart
+    else
+	exec 'syn sync minlines=' . tcsh_minlines
+    endif
 else
     syn sync minlines=100	" Some completions can be quite long
 endif
--- a/runtime/syntax/tex.vim
+++ b/runtime/syntax/tex.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	TeX
 " Maintainer:	Dr. Charles E. Campbell, Jr. <NdrchipO@ScampbellPfamily.AbizM>
-" Last Change:	Jun 03, 2008
-" Version:	41
+" Last Change:	Dec 28, 2009
+" Version:	46
 " URL:		http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 "
 " Notes: {{{1
@@ -103,6 +103,7 @@ endif
 syn cluster texEnvGroup		contains=texMatcher,texMathDelim,texSpecialChar,texStatement
 syn cluster texFoldGroup	contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texSectionMarker,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract
 syn cluster texMatchGroup	contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,@Spell
+syn cluster texStyleGroup	contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,@Spell,texStyleMatcher
 syn cluster texRefGroup		contains=texMatcher,texComment,texDelimiter
 if !exists("tex_no_math")
  syn cluster texMathZones	contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ
@@ -179,24 +180,24 @@ syn match texLigature		"\\\([ijolL]\|ae\
 
 " \begin{}/\end{} section markers: {{{1
 syn match  texSectionMarker	"\\begin\>\|\\end\>" nextgroup=texSectionName
-syn region texSectionName	matchgroup=Delimiter start="{" end="}"  contained nextgroup=texSectionModifier
-syn region texSectionModifier	matchgroup=Delimiter start="\[" end="]" contained
+syn region texSectionName	matchgroup=Delimiter start="{" end="}"  contained	nextgroup=texSectionModifier	contains=texComment
+syn region texSectionModifier	matchgroup=Delimiter start="\[" end="]" contained	contains=texComment
 
 " \documentclass, \documentstyle, \usepackage: {{{1
 syn match  texDocType		"\\documentclass\>\|\\documentstyle\>\|\\usepackage\>"	nextgroup=texSectionName,texDocTypeArgs
-syn region texDocTypeArgs	matchgroup=Delimiter start="\[" end="]"			contained	nextgroup=texSectionName
+syn region texDocTypeArgs	matchgroup=Delimiter start="\[" end="]"			contained	nextgroup=texSectionName	contains=texComment
 
 " Preamble syntax-based folding support: {{{1
 if g:tex_fold_enabled && has("folding")
- syn region texPreamble	transparent fold	start='\zs\\documentclass\>' end='\ze\\begin{document}'	contains=@texMatchGroup
+ syn region texPreamble	transparent fold	start='\zs\\documentclass\>' end='\ze\\begin{document}'	contains=texStyle,@texMatchGroup
 endif
 
 " TeX input: {{{1
 syn match texInput		"\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7				contains=texStatement
-syn match texInputFile		"\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}"	contains=texStatement,texInputCurlies
+syn match texInputFile		"\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}"	contains=texStatement,texInputCurlies,texInputFileOpt
 syn match texInputFile		"\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}"		contains=texStatement,texInputCurlies,texInputFileOpt
 syn match texInputCurlies	"[{}]"								contained
-syn region texInputFileOpt	matchgroup=Delimiter start="\[" end="\]"			contained
+syn region texInputFileOpt	matchgroup=Delimiter start="\[" end="\]"			contained	contains=texComment
 
 " Type Styles (LaTeX 2.09): {{{1
 syn match texTypeStyle		"\\rm\>"
@@ -309,7 +310,7 @@ if !exists("tex_no_math")
    exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
    exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
    exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
-   exe 'HiLink '.grpname.' texMath'
+   exe 'hi def link '.grpname.' texMath'
    if a:starform
     let grpname  = "texMathZone".a:sfx.'S'
     let syncname = "texSyncMathZone".a:sfx.'S'
@@ -317,7 +318,7 @@ if !exists("tex_no_math")
     exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
     exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
     exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
-    exe 'HiLink '.grpname.' texMath'
+    exe 'hi def link '.grpname.' texMath'
    endif
  endfun
 
@@ -399,7 +400,7 @@ endif
 " Separate lines used for verb` and verb# so that the end conditions {{{1
 " will appropriately terminate.  Ideally vim would let me save a
 " character from the start pattern and re-use it in the end-pattern.
-syn region texZone		start="\\begin{verbatim}"		end="\\end{verbatim}\|%stopzone\>"	contains=@Spell
+syn region texZone		start="\\begin{[vV]erbatim}"		end="\\end{[vV]erbatim}\|%stopzone\>"	contains=@Spell
 " listings package:
 syn region texZone		start="\\begin{lstlisting}"		end="\\end{lstlisting}\|%stopzone\>"	contains=@Spell
 " moreverb package:
@@ -456,6 +457,14 @@ syn match  texLength		"\<\d\+\([.,]\d\+\
 " TeX String Delimiters: {{{1
 syn match texString		"\(``\|''\|,,\)"
 
+" makeatletter -- makeatother sections
+if !exists("g:tex_no_error")
+ syn region texStyle			matchgroup=texStatement start='\\makeatletter' end='\\makeatother'	contains=@texStyleGroup contained
+ syn match  texStyleStatement		"\\[a-zA-Z@]\+"	contained
+ syn region texStyleMatcher		matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]"	end="}"		contains=@texStyleGroup,texError	contained
+ syn region texStyleMatcher		matchgroup=Delimiter start="\["				end="]"		contains=@texStyleGroup,texError	contained
+endif
+
 " LaTeX synchronization: {{{1
 syn sync maxlines=200
 syn sync minlines=50
@@ -507,6 +516,7 @@ if did_tex_syntax_inits == 1
    HiLink texMathDelimSet2	texMathDelim
    HiLink texMathDelimKey	texMathDelim
    HiLink texMathMatcher	texMath
+   HiLink texMathZoneV		texMath
    HiLink texMathZoneW		texMath
    HiLink texMathZoneX		texMath
    HiLink texMathZoneY		texMath
@@ -516,6 +526,7 @@ if did_tex_syntax_inits == 1
   HiLink texSectionMarker	texCmdName
   HiLink texSectionName		texSection
   HiLink texSpaceCode		texStatement
+  HiLink texStyleStatement	texStatement
   HiLink texTypeSize		texType
   HiLink texTypeStyle		texType
 
--- a/runtime/syntax/tilde.vim
+++ b/runtime/syntax/tilde.vim
@@ -3,7 +3,7 @@
 " Language:	Tilde
 " Maintainer:	Tobias Rundstrm <tobi@tildesoftware.net>
 " URL:		http://www.tildesoftware.net
-" CVS:		$Id$
+" CVS:		$Id: tilde.vim,v 1.1 2004/06/13 19:31:51 vimboss Exp $
 
 if exists("b:current_syntax")
   finish
--- a/runtime/syntax/uil.vim
+++ b/runtime/syntax/uil.vim
@@ -1,8 +1,9 @@
 " Vim syntax file
 " Language:	Motif UIL (User Interface Language)
 " Maintainer:	Thomas Koehler <jean-luc@picard.franken.de>
-" Last Change:	2002 Sep 20
-" URL:		http://jeanluc-picard.de/vim/syntax/uil.vim
+" Last Change:	2009 Dec 04
+" URL:		http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/uil.vim
+
 
 " Quit when a syntax file was already loaded
 if version < 600
--- a/runtime/syntax/updatedb.vim
+++ b/runtime/syntax/updatedb.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         updatedb.conf(5) configuration file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2007-10-25
+" Latest Revision:  2009-05-25
 
 if exists("b:current_syntax")
   finish
@@ -18,7 +18,11 @@ syn region  updatedbComment display onel
 syn match   updatedbBegin   display '^'
                             \ nextgroup=updatedbName,updatedbComment skipwhite
 
-syn keyword updatedbName    contained PRUNEFS PRUNEPATHS PRUNE_BIND_MOUNTS
+syn keyword updatedbName    contained
+                            \ PRUNEFS
+                            \ PRUNENAMES
+                            \ PRUNEPATHS
+                            \ PRUNE_BIND_MOUNTS
                             \ nextgroup=updatedbNameEq
 
 syn match   updatedbNameEq  contained display '=' nextgroup=updatedbValue
--- a/runtime/syntax/vhdl.vim
+++ b/runtime/syntax/vhdl.vim
@@ -2,7 +2,7 @@
 " Language:	VHDL
 " Maintainer:	Czo <Olivier.Sirol@lip6.fr>
 " Credits:	Stephan Hegel <stephan.hegel@snc.siemens.com.cn>
-" $Id$
+" $Id: vhdl.vim,v 1.1 2004/06/13 15:34:56 vimboss Exp $
 
 " VHSIC Hardware Description Language
 " Very High Scale Integrated Circuit
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Vim 7.2 script
 " Maintainer:	Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change:	July 29, 2008
-" Version:	7.2-82
+" Last Change:	Nov 18, 2009
+" Version:	7.2-95
 " Automatically generated keyword lists: {{{1
 
 " Quit when a syntax file was already loaded {{{2
@@ -16,11 +16,11 @@ syn keyword vimTodo contained	COMBAK	FIX
 syn cluster vimCommentGroup	contains=vimTodo,@Spell
 
 " regular vim commands {{{2
-syn keyword vimCommand contained	abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echom[sg] em[enu] endt[ry] exu[sage] fin[d] foldc[lose] fu[nction] ha[rdcopy] helpt[ags] if is[earch] ju[mps] kee[pmarks] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lla[st] lmapc[lear] lnf[ile] loc[kmarks] lpf[ile] lt[ag] mak[e] menut[ranslate] mkvie[w] mzf[ile] n[ext] nu[mber] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sn[ext] snor[emap] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] verb[ose] vim[grep] vmapc[lear] wh[ile] win[size] wq wv[iminfo] xm[ap] XMLent xnoremenu
-syn keyword vimCommand contained	abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echon emenu* endw[hile] f[ile] fini[sh] folddoc[losed] go[to] h[elp] hid[e] ij[ump] isp[lit] k laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] lh[elpgrep] lli[st] lnew[er] lNf[ile] lockv[ar] lp[revious] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] N[ext] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] smapc[lear] sN[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] ve[rsion] vimgrepa[dd] vne[w] winc[md] wn[ext] wqa[ll] X xmapc[lear] XMLns xunme
-syn keyword vimCommand contained	al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] e[dit] endfo[r] ene[w] files fir[st] foldd[oopen] gr[ep] helpf[ind] his[tory] il[ist] iuna[bbrev] keepalt lad[dexpr] later lcl[ose] lf[ile] lg[etfile] l[ist] lmak[e] lne[xt] ln[oremap] lol[der] lr[ewind] lvimgrepa[dd] marks mks[ession] mod[e] nbkey nmapc[lear] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] sme sni[ff] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] vert[ical] vi[sual] vs[plit] windo wN[ext] w[rite] xa[ll] xme xn[oremap] xunmenu
-syn keyword vimCommand contained	arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier el[se] endf[unction] ex filetype fix[del] foldo[pen] grepa[dd] helpg[rep] iabc[lear] imapc[lear] j[oin] keepj[umps] laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] ll lm[ap] lN[ext] lo[adview] lop[en] ls lw[indow] mat[ch] mksp[ell] m[ove] new noh[lsearch] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] smenu sno[magic] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] up[date] vie[w] viu[sage] wa[ll] winp[os] wp[revious] ws[verb] x[it] xmenu xnoreme y[ank]
-syn keyword vimCommand contained	argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] en[dif] exi[t] fina[lly] fo[ld] for 
+syn keyword vimCommand contained	abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echom[sg] em[enu] en[dif] ex files fini[sh] foldc[lose] for grepa[dd] helpg[rep] iabc[lear] imapc[lear] j[oin] keepj[umps] laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] ll lmapc[lear] lnf[ile] lockv[ar] lp[revious] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] N[ext] ol[dfiles] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sN[ext] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] vert[ical] vi[sual] vs[plit] windo wN[ext] w[rite] xa[ll] xmenu xnoremenu
+syn keyword vimCommand contained	abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echon emenu* endt[ry] exi[t] filetype fir[st] folddoc[losed] fu[nction] ha[rdcopy] helpt[ags] if is[earch] ju[mps] kee[pmarks] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lla[st] lnew[er] lNf[ile] lol[der] lr[ewind] lvimgrepa[dd] marks mks[ession] mod[e] nbkey nmapc[lear] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] sme sni[ff] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] up[date] vie[w] viu[sage] wa[ll] winp[os] wp[revious] ws[verb] x[it] XMLent xunme
+syn keyword vimCommand contained	al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] e[dit] endfo[r] endw[hile] exu[sage] fina[lly] fix[del] foldd[oopen] go[to] h[elp] hid[e] ij[ump] isp[lit] k laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] lh[elpgrep] lli[st] lne[xt] lo[adview] lop[en] ls lw[indow] mat[ch] mksp[ell] m[ove] new noh[lsearch] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] smenu sno[magic] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] verb[ose] vim[grep] vmapc[lear] wh[ile] win[size] wq wv[iminfo] xmapc[lear] XMLns xunmenu
+syn keyword vimCommand contained	arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier el[se] endf[unction] ene[w] f[ile] fin[d] fo[ld] foldo[pen] gr[ep] helpf[ind] his[tory] il[ist] iuna[bbrev] keepalt lad[dexpr] later lcl[ose] lf[ile] lg[etfile] l[ist] lmak[e] lN[ext] loc[kmarks] lpf[ile] lt[ag] mak[e] menut[ranslate] mkvie[w] mzf[ile] n[ext] nu[mber] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] sn[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] ve[rsion] vimgrepa[dd] vne[w] winc[md] wn[ext] wqa[ll] X xme xnoreme y[ank]
+syn keyword vimCommand contained	argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] 
 syn match   vimCommand contained	"\<z[-+^.=]"
 
 " vimOptions are caught only when contained in a vimSet {{{2
@@ -33,7 +33,7 @@ syn keyword vimOption contained	allowrev
 syn keyword vimOption contained	altkeymap arabic autowrite backupcopy bdir bin bomb bt cd ci cinw co completefunc cp cscopetag csto debug dict dir eb enc errorbells expandtab fdl fenc fileformat fml foldignore foldopen fs gfn grepprg guiheadroom helplang history hls imactivatekey iminsert inde insertmode iskeyword keymodel laststatus lisp lpl magic maxfuncdepth menuitems mm modifiable mousem mps number opendevice paste pex pmbcs printencoding prompt rdt ri 
 
 " vimOptions: These are the turn-off setting variants {{{2
-syn keyword vimOption contained	noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobk nobuflisted nocin noconfirm nocopyindent nocscopeverbose nocuc nocursorline nodg nodisable noeb noedcompatible noendofline noequalalways noesckeys noex noexrc nofk nofoldenable nogdefault nohid nohk nohkmapp nohls noic noignorecase noimc noimd noinf noinsertmode nojoinspaces nolazyredraw nolinebreak nolist nolpl noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw noremap norevins norightleft norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx novisualbell nowarn noweirdinvert nowfw nowinfixheight nowiv nowrap nowrite nowritebackup
+syn keyword vimOption contained	noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobk nobuflisted nocin noconfirm nocopyindent nocscopeverbose nocuc nocursorline nodg noimdisable noeb noedcompatible noendofline noequalalways noesckeys noex noexrc nofk nofoldenable nogdefault nohid nohk nohkmapp nohls noic noignorecase noimc noimd noinf noinsertmode nojoinspaces nolazyredraw nolinebreak nolist nolpl noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw noremap norevins norightleft norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx novisualbell nowarn noweirdinvert nowfw nowinfixheight nowiv nowrap nowrite nowritebackup
 syn keyword vimOption contained	noai noaltkeymap noar noarabicshape noautochdir noautowrite noawa nobeval nobiosk nobl nocf nocindent noconsk nocp nocst nocul nodeco nodiff noea noed noek noeol noerrorbells noet noexpandtab nofen nofkmap nogd noguipty nohidden nohkmap nohkp nohlsearch noicon noim noimcmdline noincsearch noinfercase nois nojs nolbr nolisp noloadplugins nolz nomacatsui nomh nomod nomodifiable nomore nomousefocus nonu noodev nopaste nopreserveindent noprompt noreadonly norestorescreen nori norightleftcmd norlc nors noruler nosc noscrollbind nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast novb nowa nowb nowfh nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows
 syn keyword vimOption contained	noakm noanti noarab noari noautoindent noautowriteall nobackup nobin nobioskey nobomb noci nocompatible noconskey nocscopetag nocsverb nocursorcolumn nodelcombine nodigraph 
 
@@ -62,7 +62,7 @@ syn case ignore
 syn keyword vimAutoEvent contained	BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre Cmd-event CmdwinEnter CmdwinLeave ColorScheme CursorHold CursorHoldI CursorMoved CursorMovedI EncodingChanged FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertEnter InsertLeave MenuPopup QuickFixCmdPost QuickFixCmdPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabEnter TabLeave TermChanged TermResponse User UserGettingBored VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave 
 
 " Highlight commonly used Groupnames {{{2
-syn keyword vimGroup contained	Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo 
+syn keyword vimGroup contained	Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo None
 
 " Default highlighting groups {{{2
 syn keyword vimHLGroup contained	Cursor CursorColumn CursorIM CursorLine DiffAdd DiffChange DiffDelete DiffText Directory ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu 
@@ -99,8 +99,9 @@ syn match vimNumber	"#\x\{6}"
 syn match vimCmdSep	"[:|]\+"	skipwhite nextgroup=vimAddress,vimAutoCmd,vimCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd
 syn match vimIsCommand	"\<\h\w*\>"	contains=vimCommand
 syn match vimVar		"\<[bwglsav]:\K\k*\>"
-syn match vimVar contained	"\<\K\k*\>"
-syn keyword vimCommand contained	in
+syn match vimVar        contained	"\<\K\k*\>"
+syn match vimFBVar      contained   "\<[bwglsav]:\K\k*\>"
+syn keyword vimCommand  contained	in
 
 " Insertions And Appends: insert append {{{2
 " =======================
@@ -127,7 +128,7 @@ syn keyword vimFTOption contained	detect
 
 " Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
 " ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
-syn cluster vimAugroupList	contains=vimIsCommand,vimFunction,vimFunctionError,vimLineComment,vimSpecFile,vimOper,vimNumber,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
+syn cluster vimAugroupList	contains=vimIsCommand,vimFuncName,vimFunction,vimFunctionError,vimLineComment,vimSpecFile,vimOper,vimNumber,vimOperParen,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
 if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'a'
  syn region  vimAugroup	fold start="\<aug\%[roup]\>\s\+\K\k*" end="\<aug\%[roup]\>\s\+[eE][nN][dD]\>"	contains=vimAugroupKey,vimAutoCmd,@vimAugroupList keepend
 else
@@ -141,156 +142,154 @@ syn keyword vimAugroupKey contained	aug[
 
 " Operators: {{{2
 " =========
-syn cluster vimOperGroup	contains=vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue
-syn match  vimOper	"\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}"	skipwhite nextgroup=vimString,vimSpecFile
-syn match  vimOper	"||\|&&\|[-+.]"	skipwhite nextgroup=vimString,vimSpecFile
-syn region vimOperParen 	oneline matchgroup=vimOper start="(" end=")" contains=@vimOperGroup
-syn region vimOperParen	oneline matchgroup=vimSep  start="{" end="}" contains=@vimOperGroup nextgroup=vimVar
+syn cluster	vimOperGroup	contains=vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue
+syn match	vimOper	"\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}"	skipwhite nextgroup=vimString,vimSpecFile
+syn match	vimOper	"||\|&&\|[-+.]"	skipwhite nextgroup=vimString,vimSpecFile
+syn region	vimOperParen 	oneline matchgroup=vimParenSep	start="(" end=")" contains=@vimOperGroup
+syn region	vimOperParen	oneline matchgroup=vimSep	start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
 if !exists("g:vimsyn_noerror")
- syn match  vimOperError	")"
+ syn match	vimOperError	")"
 endif
 
 " Functions : Tag is provided for those who wish to highlight tagged functions {{{2
 " =========
-syn cluster vimFuncList	contains=vimCommand,vimFuncKey,Tag,vimFuncSID
-syn cluster vimFuncBodyList	contains=vimAddress,vimAutoCmd,vimCmplxRepeat,vimComment,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimFunc,vimFunction,vimFunctionError,vimFuncVar,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUserCommand
-if !exists("g:vimsyn_noerror")
- syn match   vimFunctionError	"\<fu\%[nction]!\=\s\+\zs\U\i\{-}\ze\s*("                	contains=vimFuncKey,vimFuncBlank nextgroup=vimFuncBody
-endif
-syn match   vimFunction	"\<fu\%[nction]!\=\s\+\(\(<[sS][iI][dD]>\|[Ss]:\|\u\|\i\+#\)\i*\|\(g:\)\=\(\I\i*\.\)\+\I\i*\)\ze\s*("	contains=@vimFuncList nextgroup=vimFuncBody
+syn cluster	vimFuncList	contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID
+syn cluster	vimFuncBodyList	contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimHighlight,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUserCommand
+syn match	vimFunction	"\<fu\%[nction]!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*("	contains=@vimFuncList nextgroup=vimFuncBody
+
 if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'f'
- syn region  vimFuncBody  contained	fold start="\ze("	matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"		contains=@vimFuncBodyList
+ syn region	vimFuncBody  contained	fold start="\ze("	matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"		contains=@vimFuncBodyList
 else                                                                                                          
- syn region  vimFuncBody  contained	start="\ze("	matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"		contains=@vimFuncBodyList
+ syn region	vimFuncBody  contained	start="\ze("	matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"		contains=@vimFuncBodyList
 endif
-syn match   vimFuncVar   contained	"a:\(\I\i*\|\d\+\)"
-syn match   vimFuncSID   contained	"\c<sid>\|\<s:"
-syn keyword vimFuncKey   contained	fu[nction]
-syn match   vimFuncBlank contained	"\s\+"
+syn match	vimFuncVar   contained	"a:\(\K\k*\|\d\+\)"
+syn match	vimFuncSID   contained	"\c<sid>\|\<s:"
+syn keyword	vimFuncKey   contained	fu[nction]
+syn match	vimFuncBlank contained	"\s\+"
 
-syn keyword vimPattern   contained	start	skip	end
+syn keyword	vimPattern   contained	start	skip	end
 
 " Special Filenames, Modifiers, Extension Removal: {{{2
 " ===============================================
-syn match vimSpecFile	"<c\(word\|WORD\)>"	nextgroup=vimSpecFileMod,vimSubst
-syn match vimSpecFile	"<\([acs]file\|amatch\|abuf\)>"	nextgroup=vimSpecFileMod,vimSubst
-syn match vimSpecFile	"\s%[ \t:]"ms=s+1,me=e-1	nextgroup=vimSpecFileMod,vimSubst
-syn match vimSpecFile	"\s%$"ms=s+1	nextgroup=vimSpecFileMod,vimSubst
-syn match vimSpecFile	"\s%<"ms=s+1,me=e-1	nextgroup=vimSpecFileMod,vimSubst
-syn match vimSpecFile	"#\d\+\|[#%]<\>"	nextgroup=vimSpecFileMod,vimSubst
-syn match vimSpecFileMod	"\(:[phtre]\)\+"	contained
+syn match	vimSpecFile	"<c\(word\|WORD\)>"	nextgroup=vimSpecFileMod,vimSubst
+syn match	vimSpecFile	"<\([acs]file\|amatch\|abuf\)>"	nextgroup=vimSpecFileMod,vimSubst
+syn match	vimSpecFile	"\s%[ \t:]"ms=s+1,me=e-1	nextgroup=vimSpecFileMod,vimSubst
+syn match	vimSpecFile	"\s%$"ms=s+1	nextgroup=vimSpecFileMod,vimSubst
+syn match	vimSpecFile	"\s%<"ms=s+1,me=e-1	nextgroup=vimSpecFileMod,vimSubst
+syn match	vimSpecFile	"#\d\+\|[#%]<\>"	nextgroup=vimSpecFileMod,vimSubst
+syn match	vimSpecFileMod	"\(:[phtre]\)\+"	contained
 
 " User-Specified Commands: {{{2
 " =======================
-syn cluster vimUserCmdList	contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFilter,vimFunc,vimFunction,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine
-syn keyword vimUserCommand	contained	com[mand]
-syn match   vimUserCmd	"\<com\%[mand]!\=\>.*$"	contains=vimUserAttrb,vimUserCommand,@vimUserCmdList
-syn match   vimUserAttrb	contained	"-n\%[args]=[01*?+]"	contains=vimUserAttrbKey,vimOper
-syn match   vimUserAttrb	contained	"-com\%[plete]="	contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
-syn match   vimUserAttrb	contained	"-ra\%[nge]\(=%\|=\d\+\)\="	contains=vimNumber,vimOper,vimUserAttrbKey
-syn match   vimUserAttrb	contained	"-cou\%[nt]=\d\+"	contains=vimNumber,vimOper,vimUserAttrbKey
-syn match   vimUserAttrb	contained	"-bang\=\>"	contains=vimOper,vimUserAttrbKey
-syn match   vimUserAttrb	contained	"-bar\>"	contains=vimOper,vimUserAttrbKey
-syn match   vimUserAttrb	contained	"-re\%[gister]\>"	contains=vimOper,vimUserAttrbKey
+syn cluster	vimUserCmdList	contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFilter,vimFunc,vimFuncName,vimFunction,vimFunctionError,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine
+syn keyword	vimUserCommand	contained	com[mand]
+syn match	vimUserCmd	"\<com\%[mand]!\=\>.*$"	contains=vimUserAttrb,vimUserCommand,@vimUserCmdList
+syn match	vimUserAttrb	contained	"-n\%[args]=[01*?+]"	contains=vimUserAttrbKey,vimOper
+syn match	vimUserAttrb	contained	"-com\%[plete]="	contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
+syn match	vimUserAttrb	contained	"-ra\%[nge]\(=%\|=\d\+\)\="	contains=vimNumber,vimOper,vimUserAttrbKey
+syn match	vimUserAttrb	contained	"-cou\%[nt]=\d\+"	contains=vimNumber,vimOper,vimUserAttrbKey
+syn match	vimUserAttrb	contained	"-bang\=\>"	contains=vimOper,vimUserAttrbKey
+syn match	vimUserAttrb	contained	"-bar\>"	contains=vimOper,vimUserAttrbKey
+syn match	vimUserAttrb	contained	"-re\%[gister]\>"	contains=vimOper,vimUserAttrbKey
 if !exists("g:vimsyn_noerror")
- syn match   vimUserCmdError	contained	"\S\+\>"
+ syn match	vimUserCmdError	contained	"\S\+\>"
 endif
 syn case ignore
-syn keyword vimUserAttrbKey   contained	bar	ban[g]	cou[nt]	ra[nge] com[plete]	n[args]	re[gister]
-syn keyword vimUserAttrbCmplt contained	augroup buffer command dir environment event expression file function help highlight mapping menu option something tag tag_listfiles var
-syn keyword vimUserAttrbCmplt contained	custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
-syn match   vimUserAttrbCmpltFunc contained	",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\u\w*\)\+\|\u\w*\)"hs=s+1 nextgroup=vimUserCmdError
+syn keyword	vimUserAttrbKey   contained	bar	ban[g]	cou[nt]	ra[nge] com[plete]	n[args]	re[gister]
+syn keyword	vimUserAttrbCmplt contained	augroup buffer command dir environment event expression file function help highlight mapping menu option shellcmd something tag tag_listfiles var
+syn keyword	vimUserAttrbCmplt contained	custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
+syn match	vimUserAttrbCmpltFunc contained	",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\u\w*\)\+\|\u\w*\)"hs=s+1 nextgroup=vimUserCmdError
 
 syn case match
-syn match   vimUserAttrbCmplt contained	"custom,\u\w*"
+syn match	vimUserAttrbCmplt contained	"custom,\u\w*"
 
 " Lower Priority Comments: after some vim commands... {{{2
 " =======================
-syn match  vimComment	excludenl +\s"[^\-:.%#=*].*$+lc=1	contains=@vimCommentGroup,vimCommentString
-syn match  vimComment	+\<endif\s\+".*$+lc=5	contains=@vimCommentGroup,vimCommentString
-syn match  vimComment	+\<else\s\+".*$+lc=4	contains=@vimCommentGroup,vimCommentString
-syn region vimCommentString	contained oneline start='\S\s\+"'ms=e	end='"'
+syn match	vimComment	excludenl +\s"[^\-:.%#=*].*$+lc=1	contains=@vimCommentGroup,vimCommentString
+syn match	vimComment	+\<endif\s\+".*$+lc=5	contains=@vimCommentGroup,vimCommentString
+syn match	vimComment	+\<else\s\+".*$+lc=4	contains=@vimCommentGroup,vimCommentString
+syn region	vimCommentString	contained oneline start='\S\s\+"'ms=e	end='"'
 
 " Environment Variables: {{{2
 " =====================
-syn match vimEnvvar	"\$\I\i*"
-syn match vimEnvvar	"\${\I\i*}"
+syn match	vimEnvvar	"\$\I\i*"
+syn match	vimEnvvar	"\${\I\i*}"
 
 " In-String Specials: {{{2
 " Try to catch strings, if nothing else matches (therefore it must precede the others!)
 "  vimEscapeBrace handles ["]  []"] (ie. "s don't terminate string inside [])
-syn region vimEscapeBrace	oneline   contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
-syn match  vimPatSepErr	contained	"\\)"
-syn match  vimPatSep	contained	"\\|"
-syn region vimPatSepZone	oneline   contained   matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\]['"]"	contains=@vimStringGroup
-syn region vimPatRegion	contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)"	contains=@vimSubstList oneline
-syn match  vimNotPatSep	contained	"\\\\"
-syn cluster vimStringGroup	contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
-syn region vimString	oneline keepend	start=+[^:a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+	contains=@vimStringGroup
-syn region vimString	oneline keepend	start=+[^:a-zA-Z>!\\@]'+lc=1 end=+'+
-syn region vimString	oneline	start=+=!+lc=1	skip=+\\\\\|\\!+ end=+!+	contains=@vimStringGroup
-syn region vimString	oneline	start="=+"lc=1	skip="\\\\\|\\+" end="+"	contains=@vimStringGroup
-syn region vimString	oneline	start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/"	contains=@vimStringGroup
-syn match  vimString	contained	+"[^"]*\\$+	skipnl nextgroup=vimStringCont
-syn match  vimStringCont	contained	+\(\\\\\|.\)\{-}[^\\]"+
+syn region	vimEscapeBrace	oneline   contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
+syn match	vimPatSepErr	contained	"\\)"
+syn match	vimPatSep	contained	"\\|"
+syn region	vimPatSepZone	oneline   contained   matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\]['"]"	contains=@vimStringGroup
+syn region	vimPatRegion	contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)"	contains=@vimSubstList oneline
+syn match	vimNotPatSep	contained	"\\\\"
+syn cluster	vimStringGroup	contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
+syn region	vimString	oneline keepend	start=+[^:a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+	contains=@vimStringGroup
+syn region	vimString	oneline keepend	start=+[^:a-zA-Z>!\\@]'+lc=1 end=+'+
+syn region	vimString	oneline	start=+=!+lc=1	skip=+\\\\\|\\!+ end=+!+	contains=@vimStringGroup
+syn region	vimString	oneline	start="=+"lc=1	skip="\\\\\|\\+" end="+"	contains=@vimStringGroup
+syn region	vimString	oneline	start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/"	contains=@vimStringGroup
+syn match	vimString	contained	+"[^"]*\\$+	skipnl nextgroup=vimStringCont
+syn match	vimStringCont	contained	+\(\\\\\|.\)\{-}[^\\]"+
 
 " Substitutions: {{{2
 " =============
-syn cluster vimSubstList	contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
-syn cluster vimSubstRepList	contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
-syn cluster vimSubstList	add=vimCollection
-syn match   vimSubst	"\(:\+\s*\|^\s*\||\s*\)\<s\%[ubstitute][:[:alpha:]]\@!" nextgroup=vimSubstPat
-syn match   vimSubst	"s\%[ubstitute][:[:alpha:]]\@!"	nextgroup=vimSubstPat contained
-syn match   vimSubst	"/\zss\%[ubstitute]\ze/"	nextgroup=vimSubstPat
-syn match   vimSubst1       contained	"s\%[ubstitute]\>"	nextgroup=vimSubstPat
-syn region  vimSubstPat     contained	matchgroup=vimSubstDelim start="\z([^a-zA-Z( \t[\]&]\)"rs=s+1 skip="\\\\\|\\\z1" end="\z1"re=e-1,me=e-1	 contains=@vimSubstList	nextgroup=vimSubstRep4	oneline
-syn region  vimSubstRep4    contained	matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList	nextgroup=vimSubstFlagErr	oneline
-syn region  vimCollection   contained transparent	start="\\\@<!\[" skip="\\\[" end="\]"	contains=vimCollClass
-syn match   vimCollClassErr contained	"\[:.\{-\}:\]"
-syn match   vimCollClass    contained transparent	"\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|return\|tab\|escape\|backspace\):\]"
-syn match   vimSubstSubstr  contained	"\\z\=\d"
-syn match   vimSubstTwoBS   contained	"\\\\"
-syn match   vimSubstFlagErr contained	"[^< \t\r|]\+" contains=vimSubstFlags
-syn match   vimSubstFlags   contained	"[&cegiIpr]\+"
+syn cluster	vimSubstList	contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
+syn cluster	vimSubstRepList	contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
+syn cluster	vimSubstList	add=vimCollection
+syn match	vimSubst	"\(:\+\s*\|^\s*\||\s*\)\<s\%[ubstitute][:[:alpha:]]\@!" nextgroup=vimSubstPat
+syn match	vimSubst	"s\%[ubstitute][:#[:alpha:]]\@!"	nextgroup=vimSubstPat contained
+syn match	vimSubst	"/\zss\%[ubstitute]\ze/"	nextgroup=vimSubstPat
+syn match	vimSubst1       contained	"s\%[ubstitute]\>"	nextgroup=vimSubstPat
+syn region	vimSubstPat     contained	matchgroup=vimSubstDelim start="\z([^a-zA-Z( \t[\]&]\)"rs=s+1 skip="\\\\\|\\\z1" end="\z1"re=e-1,me=e-1	 contains=@vimSubstList	nextgroup=vimSubstRep4	oneline
+syn region	vimSubstRep4    contained	matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList	nextgroup=vimSubstFlagErr	oneline
+syn region	vimCollection   contained transparent	start="\\\@<!\[" skip="\\\[" end="\]"	contains=vimCollClass
+syn match	vimCollClassErr contained	"\[:.\{-\}:\]"
+syn match	vimCollClass    contained transparent	"\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|return\|tab\|escape\|backspace\):\]"
+syn match	vimSubstSubstr  contained	"\\z\=\d"
+syn match	vimSubstTwoBS   contained	"\\\\"
+syn match	vimSubstFlagErr contained	"[^< \t\r|]\+" contains=vimSubstFlags
+syn match	vimSubstFlags   contained	"[&cegiIpr]\+"
 
 " 'String': {{{2
-syn match  vimString	"[^(,]'[^']\{-}\zs'"
+syn match	vimString	"[^(,]'[^']\{-}\zs'"
 
 " Marks, Registers, Addresses, Filters: {{{2
-syn match  vimMark	"'[a-zA-Z0-9]\ze[-+,!]"	nextgroup=vimOper,vimMarkNumber,vimSubst
-syn match  vimMark	"'[<>]\ze[-+,!]"		nextgroup=vimOper,vimMarkNumber,vimSubst
-syn match  vimMark	",\zs'[<>]\ze"		nextgroup=vimOper,vimMarkNumber,vimSubst
-syn match  vimMark	"[!,:]\zs'[a-zA-Z0-9]"	nextgroup=vimOper,vimMarkNumber,vimSubst
-syn match  vimMark	"\<norm\%[al]\s\zs'[a-zA-Z0-9]"	nextgroup=vimOper,vimMarkNumber,vimSubst
-syn match  vimMarkNumber	"[-+]\d\+"		nextgroup=vimSubst contained contains=vimOper
-syn match  vimPlainMark contained	"'[a-zA-Z0-9]"
+syn match	vimMark	"'[a-zA-Z0-9]\ze[-+,!]"	nextgroup=vimOper,vimMarkNumber,vimSubst
+syn match	vimMark	"'[<>]\ze[-+,!]"		nextgroup=vimOper,vimMarkNumber,vimSubst
+syn match	vimMark	",\zs'[<>]\ze"		nextgroup=vimOper,vimMarkNumber,vimSubst
+syn match	vimMark	"[!,:]\zs'[a-zA-Z0-9]"	nextgroup=vimOper,vimMarkNumber,vimSubst
+syn match	vimMark	"\<norm\%[al]\s\zs'[a-zA-Z0-9]"	nextgroup=vimOper,vimMarkNumber,vimSubst
+syn match	vimMarkNumber	"[-+]\d\+"		nextgroup=vimSubst contained contains=vimOper
+syn match	vimPlainMark contained	"'[a-zA-Z0-9]"
 
-syn match  vimRegister	'[^,;]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":]'
-syn match  vimRegister	'\<norm\s\+\zs"[a-zA-Z0-9]'
-syn match  vimRegister	'\<normal\s\+\zs"[a-zA-Z0-9]'
-syn match  vimRegister	'@"'
-syn match  vimPlainRegister contained	'"[a-zA-Z0-9\-:.%#*+=]'
+syn match	vimRegister	'[^,;[{]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":]'
+syn match	vimRegister	'\<norm\s\+\zs"[a-zA-Z0-9]'
+syn match	vimRegister	'\<normal\s\+\zs"[a-zA-Z0-9]'
+syn match	vimRegister	'@"'
+syn match	vimPlainRegister contained	'"[a-zA-Z0-9\-:.%#*+=]'
 
-syn match  vimAddress	",\zs[.$]"	skipwhite nextgroup=vimSubst1
-syn match  vimAddress	"%\ze\a"	skipwhite nextgroup=vimString,vimSubst1
+syn match	vimAddress	",\zs[.$]"	skipwhite nextgroup=vimSubst1
+syn match	vimAddress	"%\ze\a"	skipwhite nextgroup=vimString,vimSubst1
 
-syn match  vimFilter contained	"^!.\{-}\(|\|$\)"		contains=vimSpecFile
-syn match  vimFilter contained	"\A!.\{-}\(|\|$\)"ms=s+1	contains=vimSpecFile
+syn match	vimFilter contained	"^!.\{-}\(|\|$\)"		contains=vimSpecFile
+syn match	vimFilter contained	"\A!.\{-}\(|\|$\)"ms=s+1	contains=vimSpecFile
 
 " Complex repeats (:h complex-repeat) {{{2
-"syn match  vimCmplxRepeat	'[^a-zA-Z_/\\()]q[0-9a-zA-Z"]'lc=1
-"syn match  vimCmplxRepeat	'@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\)'
+syn match	vimCmplxRepeat	'[^a-zA-Z_/\\()]q[0-9a-zA-Z"]'lc=1
+syn match	vimCmplxRepeat	'@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\)'
 
 " Set command and associated set-options (vimOptions) with comment {{{2
-syn region vimSet		matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|set\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod
-syn region vimSetEqual  contained	start="="	skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation oneline
-syn region vimSetString contained	start=+="+hs=s+1	skip=+\\\\\|\\"+  end=+"+	contains=vimCtrlChar
-syn match  vimSetSep    contained	"[,:]"
-syn match  vimSetMod	contained	"&vim\|[!&]\|all&"
+syn region	vimSet		matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|set\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod
+syn region	vimSetEqual	contained	start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation oneline
+syn region	vimSetString	contained	start=+="+hs=s+1	skip=+\\\\\|\\"+  end=+"+	contains=vimCtrlChar
+syn match	vimSetSep	contained	"[,:]"
+syn match	vimSetMod	contained	"&vim\=\|[!&?<]\|all&"
 
 " Let {{{2
 " ===
-syn keyword vimLet	let	unl[et]	skipwhite nextgroup=vimVar
+syn keyword	vimLet	let	unl[et]	skipwhite nextgroup=vimVar,vimFuncVar
 
 " Abbreviations {{{2
 " =============
@@ -298,232 +297,235 @@ syn keyword vimAbb	ab[breviate] ca[bbrev
 
 " Autocmd {{{2
 " =======
-syn match   vimAutoEventList	contained	"\(!\s\+\)\=\(\a\+,\)*\a\+"	contains=vimAutoEvent nextgroup=vimAutoCmdSpace
-syn match   vimAutoCmdSpace	contained	"\s\+"	nextgroup=vimAutoCmdSfxList
-syn match   vimAutoCmdSfxList	contained	"\S*"
-syn keyword vimAutoCmd	au[tocmd] do[autocmd] doautoa[ll]	skipwhite nextgroup=vimAutoEventList
+syn match	vimAutoEventList	contained	"\(!\s\+\)\=\(\a\+,\)*\a\+"	contains=vimAutoEvent nextgroup=vimAutoCmdSpace
+syn match	vimAutoCmdSpace	contained	"\s\+"	nextgroup=vimAutoCmdSfxList
+syn match	vimAutoCmdSfxList	contained	"\S*"
+syn keyword	vimAutoCmd	au[tocmd] do[autocmd] doautoa[ll]	skipwhite nextgroup=vimAutoEventList
 
 " Echo and Execute -- prefer strings! {{{2
 " ================
-syn region  vimEcho	oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimString,varVar
-syn region  vimExecute	oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimIsCommand,vimString,vimOper,vimVar,vimNotation,vimOperParen
-syn match   vimEchoHL	"echohl\="	skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone
+syn region	vimEcho	oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimFuncVar,vimString,vimVar
+syn region	vimExecute	oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimFuncVar,vimIsCommand,vimOper,vimNotation,vimOperParen,vimString,vimVar
+syn match	vimEchoHL	"echohl\="	skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone
 syn case ignore
-syn keyword vimEchoHLNone	none
+syn keyword	vimEchoHLNone	none
 syn case match
 
 " Maps {{{2
 " ====
-syn match   vimMap	"\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
-syn keyword vimMap	cm[ap] cno[remap] im[ap] ino[remap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] snor[emap] vm[ap] vn[oremap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
-syn keyword vimMap	mapc[lear]
-syn match   vimMapLhs    contained	"\S\+"	contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
-syn match   vimMapBang   contained	"!"	skipwhite nextgroup=vimMapMod,vimMapLhs
-syn match   vimMapMod    contained	"\c<\(buffer\|expr\|\(local\)\=leader\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
-syn match   vimMapRhs    contained  ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend
-syn match   vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue
+syn match	vimMap		"\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
+syn keyword	vimMap		cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] smap snor[emap] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+syn keyword	vimMap		mapc[lear]
+syn keyword	vimUnmap		cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+syn match	vimMapLhs	contained	"\S\+"			contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
+syn match	vimMapBang	contained	"!"			skipwhite nextgroup=vimMapMod,vimMapLhs
+syn match	vimMapMod	contained	"\c<\(buffer\|expr\|\(local\)\=leader\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
+syn match	vimMapRhs	contained	".*" contains=vimNotation,vimCtrlChar	skipnl nextgroup=vimMapRhsExtend
+syn match	vimMapRhsExtend	contained	"^\s*\\.*$"			contains=vimContinue
 syn case ignore
-syn keyword vimMapModKey contained	buffer	expr	leader	localleader	plug	script	sid	silent	unique
+syn keyword	vimMapModKey	contained	buffer	expr	leader	localleader	plug	script	sid	silent	unique
 syn case match
 
 " Menus {{{2
 " =====
-syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod
-syn keyword vimCommand	am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList
-syn match   vimMenuName	"[^ \t\\<]\+"	contained nextgroup=vimMenuNameMore,vimMenuMap
-syn match   vimMenuPriority	"\d\+\(\.\d\+\)*"	contained skipwhite nextgroup=vimMenuName
-syn match   vimMenuNameMore	"\c\\\s\|<tab>\|\\\."	contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation
-syn match   vimMenuMod    contained	"\c<\(script\|silent\)\+>"  skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList
-syn match   vimMenuMap	"\s"	contained skipwhite nextgroup=vimMenuRhs
-syn match   vimMenuRhs	".*$"	contained contains=vimString,vimComment,vimIsCommand
-syn match   vimMenuBang	"!"	contained skipwhite nextgroup=@vimMenuList
+syn cluster	vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod
+syn keyword	vimCommand	am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList
+syn match	vimMenuName	"[^ \t\\<]\+"	contained nextgroup=vimMenuNameMore,vimMenuMap
+syn match	vimMenuPriority	"\d\+\(\.\d\+\)*"	contained skipwhite nextgroup=vimMenuName
+syn match	vimMenuNameMore	"\c\\\s\|<tab>\|\\\."	contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation
+syn match	vimMenuMod    contained	"\c<\(script\|silent\)\+>"  skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList
+syn match	vimMenuMap	"\s"	contained skipwhite nextgroup=vimMenuRhs
+syn match	vimMenuRhs	".*$"	contained contains=vimString,vimComment,vimIsCommand
+syn match	vimMenuBang	"!"	contained skipwhite nextgroup=@vimMenuList
 
 " Angle-Bracket Notation (tnx to Michael Geddes) {{{2
 " ======================
 syn case ignore
-syn match vimNotation	"\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|space\|k\=\(page\)\=\(\|down\|up\)\)>" contains=vimBracket
-syn match vimNotation	"\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>"	contains=vimBracket
-syn match vimNotation	"\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>"		contains=vimBracket
-syn match vimNotation	'\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1			contains=vimBracket
-syn match vimNotation	'\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|f-args\|lt\)>'	contains=vimBracket
-syn match vimNotation	"\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>"		contains=vimBracket
-syn match vimBracket contained	"[\\<>]"
+syn match	vimNotation	"\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|space\|k\=\(page\)\=\(\|down\|up\)\)>" contains=vimBracket
+syn match	vimNotation	"\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>"	contains=vimBracket
+syn match	vimNotation	"\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>"		contains=vimBracket
+syn match	vimNotation	'\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1			contains=vimBracket
+syn match	vimNotation	'\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|f-args\|lt\)>'	contains=vimBracket
+syn match	vimNotation	"\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>"		contains=vimBracket
+syn match	vimBracket contained	"[\\<>]"
 syn case match
 
 " User Function Highlighting {{{2
 " (following Gautam Iyer's suggestion)
 " ==========================
-syn match vimFunc		"\%(\%([gGsS]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*("		contains=vimFuncName,vimUserFunc,vimExecute
-syn match vimUserFunc contained	"\%(\%([gGsS]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>"	contains=vimNotation
-syn match vimNotFunc	"\<if\>\|\<el\%[seif]\>"
+syn match vimFunc		"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*("		contains=vimFuncName,vimUserFunc,vimExecute
+syn match vimUserFunc contained	"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>"	contains=vimNotation
+syn match vimNotFunc	"\<if\>\|\<el\%[seif]\>\|\<return\>\|\<while\>"
 
 " Errors And Warnings: {{{2
 " ====================
 if !exists("g:vimsyn_noerror")
- syn match vimElseIfErr	"\<else\s\+if\>"
- syn match vimBufnrWarn	/\<bufnr\s*(\s*["']\.['"]\s*)/
+ syn match	vimFunctionError	"\s\zs[a-z0-9]\i\{-}\ze\s*("			contained contains=vimFuncKey,vimFuncBlank
+" syn match	vimFunctionError	"\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)[0-9]\i\{-}\ze\s*("	contained contains=vimFuncKey,vimFuncBlank
+ syn match	vimElseIfErr	"\<else\s\+if\>"
+ syn match	vimBufnrWarn	/\<bufnr\s*(\s*["']\.['"]\s*)/
 endif
 
 " Norm {{{2
 " ====
-syn match vimNorm		"\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
-syn match vimNormCmds contained	".*$"
+syn match	vimNorm		"\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
+syn match	vimNormCmds contained	".*$"
 
 " Syntax {{{2
 "=======
-syn match   vimGroupList	contained	"@\=[^ \t,]*"	contains=vimGroupSpecial,vimPatSep
-syn match   vimGroupList	contained	"@\=[^ \t,]*,"	nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
-syn keyword vimGroupSpecial	contained	ALL	ALLBUT
+syn match	vimGroupList	contained	"@\=[^ \t,]*"	contains=vimGroupSpecial,vimPatSep
+syn match	vimGroupList	contained	"@\=[^ \t,]*,"	nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
+syn keyword	vimGroupSpecial	contained	ALL	ALLBUT	CONTAINED	TOP
 if !exists("g:vimsyn_noerror")
- syn match   vimSynError	contained	"\i\+"
- syn match   vimSynError	contained	"\i\+="	nextgroup=vimGroupList
+ syn match	vimSynError	contained	"\i\+"
+ syn match	vimSynError	contained	"\i\+="	nextgroup=vimGroupList
 endif
-syn match   vimSynContains	contained	"\<contain\(s\|edin\)="	nextgroup=vimGroupList
-syn match   vimSynKeyContainedin	contained	"\<containedin="	nextgroup=vimGroupList
-syn match   vimSynNextgroup	contained	"nextgroup="	nextgroup=vimGroupList
+syn match	vimSynContains	contained	"\<contain\(s\|edin\)="	nextgroup=vimGroupList
+syn match	vimSynKeyContainedin	contained	"\<containedin="	nextgroup=vimGroupList
+syn match	vimSynNextgroup	contained	"nextgroup="	nextgroup=vimGroupList
 
-syn match   vimSyntax	"\<sy\%[ntax]\>"	contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
-syn match   vimAuSyntax	contained	"\s+sy\%[ntax]"	contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
+syn match	vimSyntax	"\<sy\%[ntax]\>"	contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
+syn match	vimAuSyntax	contained	"\s+sy\%[ntax]"	contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
 
 " Syntax: case {{{2
-syn keyword vimSynType	contained	case	skipwhite nextgroup=vimSynCase,vimSynCaseError
+syn keyword	vimSynType	contained	case	skipwhite nextgroup=vimSynCase,vimSynCaseError
 if !exists("g:vimsyn_noerror")
- syn match   vimSynCaseError	contained	"\i\+"
+ syn match	vimSynCaseError	contained	"\i\+"
 endif
-syn keyword vimSynCase	contained	ignore	match
+syn keyword	vimSynCase	contained	ignore	match
 
 " Syntax: clear {{{2
-syn keyword vimSynType	contained	clear	skipwhite nextgroup=vimGroupList
+syn keyword	vimSynType	contained	clear	skipwhite nextgroup=vimGroupList
 
 " Syntax: cluster {{{2
-syn keyword vimSynType	contained	cluster	skipwhite nextgroup=vimClusterName
-syn region  vimClusterName	contained	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
-syn match   vimGroupAdd	contained	"add="	nextgroup=vimGroupList
-syn match   vimGroupRem	contained	"remove="	nextgroup=vimGroupList
+syn keyword	vimSynType	contained	cluster	skipwhite nextgroup=vimClusterName
+syn region	vimClusterName	contained	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
+syn match	vimGroupAdd	contained	"add="	nextgroup=vimGroupList
+syn match	vimGroupRem	contained	"remove="	nextgroup=vimGroupList
 
 " Syntax: include {{{2
-syn keyword vimSynType	contained	include	skipwhite nextgroup=vimGroupList
+syn keyword	vimSynType	contained	include	skipwhite nextgroup=vimGroupList
 
 " Syntax: keyword {{{2
-syn cluster vimSynKeyGroup	contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
-syn keyword vimSynType	contained	keyword	skipwhite nextgroup=vimSynKeyRegion
-syn region  vimSynKeyRegion	contained oneline keepend	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
-syn match   vimSynKeyOpt	contained	"\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
+syn cluster	vimSynKeyGroup	contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
+syn keyword	vimSynType	contained	keyword	skipwhite nextgroup=vimSynKeyRegion
+syn region	vimSynKeyRegion	contained oneline keepend	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
+syn match	vimSynKeyOpt	contained	"\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
 
 " Syntax: match {{{2
-syn cluster vimSynMtchGroup	contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation
-syn keyword vimSynType	contained	match	skipwhite nextgroup=vimSynMatchRegion
-syn region  vimSynMatchRegion	contained keepend	matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
-syn match   vimSynMtchOpt	contained	"\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
+syn cluster	vimSynMtchGroup	contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation
+syn keyword	vimSynType	contained	match	skipwhite nextgroup=vimSynMatchRegion
+syn region	vimSynMatchRegion	contained keepend	matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
+syn match	vimSynMtchOpt	contained	"\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
 if has("conceal")
- syn match   vimSynMtchOpt	contained	"\<cchar="	nextgroup=VimSynMtchCchar
- syn match   vimSynMtchCchar	contained	"."
+ syn match	vimSynMtchOpt	contained	"\<cchar="	nextgroup=VimSynMtchCchar
+ syn match	vimSynMtchCchar	contained	"\S"
 endif
 
 " Syntax: off and on {{{2
-syn keyword vimSynType	contained	enable	list	manual	off	on	reset
+syn keyword	vimSynType	contained	enable	list	manual	off	on	reset
 
 " Syntax: region {{{2
-syn cluster vimSynRegPatGroup	contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
-syn cluster vimSynRegGroup	contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
-syn keyword vimSynType	contained	region	skipwhite nextgroup=vimSynRegion
-syn region  vimSynRegion	contained keepend	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
-syn match   vimSynRegOpt	contained	"\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
-syn match   vimSynReg	contained	"\(start\|skip\|end\)="he=e-1	nextgroup=vimSynRegPat
-syn match   vimSynMtchGrp	contained	"matchgroup="	nextgroup=vimGroup,vimHLGroup
-syn region  vimSynRegPat	contained extend	start="\z([-`~!@#$%^&*_=+;:'",./?]\)"  skip="\\\\\|\\\z1"  end="\z1"  contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
-syn match   vimSynPatMod	contained	"\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
-syn match   vimSynPatMod	contained	"\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
-syn match   vimSynPatMod	contained	"lc=\d\+"
-syn match   vimSynPatMod	contained	"lc=\d\+," nextgroup=vimSynPatMod
-syn region  vimSynPatRange	contained	start="\["	skip="\\\\\|\\]"   end="]"
-syn match   vimSynNotPatRange	contained	"\\\\\|\\\["
-syn match   vimMtchComment	contained	'"[^"]\+$'
+syn cluster	vimSynRegPatGroup	contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
+syn cluster	vimSynRegGroup	contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
+syn keyword	vimSynType	contained	region	skipwhite nextgroup=vimSynRegion
+syn region	vimSynRegion	contained keepend	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
+syn match	vimSynRegOpt	contained	"\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
+syn match	vimSynReg	contained	"\(start\|skip\|end\)="he=e-1	nextgroup=vimSynRegPat
+syn match	vimSynMtchGrp	contained	"matchgroup="	nextgroup=vimGroup,vimHLGroup
+syn region	vimSynRegPat	contained extend	start="\z([-`~!@#$%^&*_=+;:'",./?]\)"  skip="\\\\\|\\\z1"  end="\z1"  contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
+syn match	vimSynPatMod	contained	"\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
+syn match	vimSynPatMod	contained	"\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
+syn match	vimSynPatMod	contained	"lc=\d\+"
+syn match	vimSynPatMod	contained	"lc=\d\+," nextgroup=vimSynPatMod
+syn region	vimSynPatRange	contained	start="\["	skip="\\\\\|\\]"   end="]"
+syn match	vimSynNotPatRange	contained	"\\\\\|\\\["
+syn match	vimMtchComment	contained	'"[^"]\+$'
 
 " Syntax: sync {{{2
 " ============
 syn keyword vimSynType	contained	sync	skipwhite	nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
 if !exists("g:vimsyn_noerror")
- syn match   vimSyncError	contained	"\i\+"
+ syn match	vimSyncError	contained	"\i\+"
 endif
-syn keyword vimSyncC	contained	ccomment	clear	fromstart
-syn keyword vimSyncMatch	contained	match	skipwhite	nextgroup=vimSyncGroupName
-syn keyword vimSyncRegion	contained	region	skipwhite	nextgroup=vimSynReg
-syn match   vimSyncLinebreak	contained	"\<linebreaks="	skipwhite	nextgroup=vimNumber
-syn keyword vimSyncLinecont	contained	linecont	skipwhite	nextgroup=vimSynRegPat
-syn match   vimSyncLines	contained	"\(min\|max\)\=lines="	nextgroup=vimNumber
-syn match   vimSyncGroupName	contained	"\k\+"	skipwhite	nextgroup=vimSyncKey
-syn match   vimSyncKey	contained	"\<groupthere\|grouphere\>"	skipwhite nextgroup=vimSyncGroup
-syn match   vimSyncGroup	contained	"\k\+"	skipwhite	nextgroup=vimSynRegPat,vimSyncNone
-syn keyword vimSyncNone	contained	NONE
+syn keyword	vimSyncC	contained	ccomment	clear	fromstart
+syn keyword	vimSyncMatch	contained	match	skipwhite	nextgroup=vimSyncGroupName
+syn keyword	vimSyncRegion	contained	region	skipwhite	nextgroup=vimSynReg
+syn match	vimSyncLinebreak	contained	"\<linebreaks="	skipwhite	nextgroup=vimNumber
+syn keyword	vimSyncLinecont	contained	linecont	skipwhite	nextgroup=vimSynRegPat
+syn match	vimSyncLines	contained	"\(min\|max\)\=lines="	nextgroup=vimNumber
+syn match	vimSyncGroupName	contained	"\k\+"	skipwhite	nextgroup=vimSyncKey
+syn match	vimSyncKey	contained	"\<groupthere\|grouphere\>"	skipwhite nextgroup=vimSyncGroup
+syn match	vimSyncGroup	contained	"\k\+"	skipwhite	nextgroup=vimSynRegPat,vimSyncNone
+syn keyword	vimSyncNone	contained	NONE
 
 " Additional IsCommand, here by reasons of precedence {{{2
 " ====================
-syn match vimIsCommand	"<Bar>\s*\a\+"	transparent contains=vimCommand,vimNotation
+syn match	vimIsCommand	"<Bar>\s*\a\+"	transparent contains=vimCommand,vimNotation
 
 " Highlighting {{{2
 " ============
-syn cluster vimHighlightCluster	contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
-syn match   vimHighlight	"\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
-syn match   vimHiBang	contained	"!"	  skipwhite nextgroup=@vimHighlightCluster
-
-syn match   vimHiGroup	contained	"\i\+"
+syn cluster	vimHighlightCluster		contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
+syn match	vimHighlight	"\<hi\%[ghlight]\>"	skipwhite nextgroup=vimHiBang,@vimHighlightCluster
+syn match	vimHiBang	contained	"!"	skipwhite nextgroup=@vimHighlightCluster
+       	
+syn match	vimHiGroup	contained	"\i\+"
 syn case ignore
-syn keyword vimHiAttrib	contained	none bold inverse italic reverse standout underline undercurl
-syn keyword vimFgBgAttrib	contained	none bg background fg foreground
+syn keyword	vimHiAttrib	contained	none bold inverse italic reverse standout underline undercurl
+syn keyword	vimFgBgAttrib	contained	none bg background fg foreground
 syn case match
-syn match   vimHiAttribList	contained	"\i\+"	contains=vimHiAttrib
-syn match   vimHiAttribList	contained	"\i\+,"he=e-1	contains=vimHiAttrib nextgroup=vimHiAttribList
+syn match	vimHiAttribList	contained	"\i\+"	contains=vimHiAttrib
+syn match	vimHiAttribList	contained	"\i\+,"he=e-1	contains=vimHiAttrib nextgroup=vimHiAttribList
 syn case ignore
-syn keyword vimHiCtermColor	contained	black blue brown cyan darkBlue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred magenta red white yellow
+syn keyword	vimHiCtermColor	contained	black blue brown cyan darkBlue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred magenta red white yellow
 
 syn case match
-syn match   vimHiFontname	contained	"[a-zA-Z\-*]\+"
-syn match   vimHiGuiFontname	contained	"'[a-zA-Z\-* ]\+'"
-syn match   vimHiGuiRgb	contained	"#\x\{6}"
+syn match	vimHiFontname	contained	"[a-zA-Z\-*]\+"
+syn match	vimHiGuiFontname	contained	"'[a-zA-Z\-* ]\+'"
+syn match	vimHiGuiRgb	contained	"#\x\{6}"
 if !exists("g:vimsyn_noerror")
- syn match   vimHiCtermError	contained	"[^0-9]\i*"
+ syn match	vimHiCtermError	contained	"[^0-9]\i*"
 endif
 
 " Highlighting: hi group key=arg ... {{{2
-syn cluster vimHiCluster contains=vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
-syn region vimHiKeyList	contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||"	contains=@vimHiCluster
+syn cluster	vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
+syn region	vimHiKeyList	contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||"	contains=@vimHiCluster
 if !exists("g:vimsyn_noerror")
- syn match  vimHiKeyError	contained	"\i\+="he=e-1
+ syn match	vimHiKeyError	contained	"\i\+="he=e-1
 endif
-syn match  vimHiTerm	contained	"\cterm="he=e-1		nextgroup=vimHiAttribList
-syn match  vimHiStartStop	contained	"\c\(start\|stop\)="he=e-1	nextgroup=vimHiTermcap,vimOption
-syn match  vimHiCTerm	contained	"\ccterm="he=e-1		nextgroup=vimHiAttribList
-syn match  vimHiCtermFgBg	contained	"\ccterm[fb]g="he=e-1	nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
-syn match  vimHiGui	contained	"\cgui="he=e-1		nextgroup=vimHiAttribList
-syn match  vimHiGuiFont	contained	"\cfont="he=e-1		nextgroup=vimHiFontname
-syn match  vimHiGuiFgBg	contained	"\cgui\%([fb]g\|sp\)="he=e-1	nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
-syn match  vimHiTermcap	contained	"\S\+"		contains=vimNotation
+syn match	vimHiTerm	contained	"\cterm="he=e-1		nextgroup=vimHiAttribList
+syn match	vimHiStartStop	contained	"\c\(start\|stop\)="he=e-1	nextgroup=vimHiTermcap,vimOption
+syn match	vimHiCTerm	contained	"\ccterm="he=e-1		nextgroup=vimHiAttribList
+syn match	vimHiCtermFgBg	contained	"\ccterm[fb]g="he=e-1	nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
+syn match	vimHiGui	contained	"\cgui="he=e-1		nextgroup=vimHiAttribList
+syn match	vimHiGuiFont	contained	"\cfont="he=e-1		nextgroup=vimHiFontname
+syn match	vimHiGuiFgBg	contained	"\cgui\%([fb]g\|sp\)="he=e-1	nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
+syn match	vimHiTermcap	contained	"\S\+"		contains=vimNotation
 
 " Highlight: clear {{{2
-syn keyword vimHiClear	contained	clear	nextgroup=vimHiGroup
+syn keyword	vimHiClear	contained	clear	nextgroup=vimHiGroup
 
 " Highlight: link {{{2
-syn region vimHiLink	contained oneline matchgroup=vimCommand start="\<\(def\s\+\)\=link\>\|\<def\>" end="$"	contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
+syn region	vimHiLink	contained oneline matchgroup=vimCommand start="\<\(def\s\+\)\=link\>\|\<def\>" end="$"	contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
 
 " Control Characters {{{2
 " ==================
-syn match vimCtrlChar	"[--]"
+syn match	vimCtrlChar	"[--]"
 
 " Beginners - Patterns that involve ^ {{{2
 " =========
-syn match  vimLineComment	+^[ \t:]*".*$+	contains=@vimCommentGroup,vimCommentString,vimCommentTitle
-syn match  vimCommentTitle	'"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1	contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
-syn match  vimContinue	"^\s*\\"
-syn region vimString	start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
-syn match  vimCommentTitleLeader	'"\s\+'ms=s+1	contained
+syn match	vimLineComment	+^[ \t:]*".*$+	contains=@vimCommentGroup,vimCommentString,vimCommentTitle
+syn match	vimCommentTitle	'"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1	contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
+syn match	vimContinue	"^\s*\\"
+syn region	vimString	start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
+syn match	vimCommentTitleLeader	'"\s\+'ms=s+1	contained
 
 " Searches And Globals: {{{2
 " ====================
-syn match vimSearch	'^\s*[/?].*'		contains=vimSearchDelim
-syn match vimSearchDelim	'^\s*\zs[/?]\|[/?]$'	contained
-syn region vimGlobal	matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/'
-syn region vimGlobal	matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/'
+syn match	vimSearch	'^\s*[/?].*'		contains=vimSearchDelim
+syn match	vimSearchDelim	'^\s*\zs[/?]\|[/?]$'	contained
+syn region	vimGlobal	matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/'
+syn region	vimGlobal	matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/'
 
 " Scripts  : perl,ruby : Benoit Cerrina {{{2
 " =======    python,tcl: Johannes Zellner
@@ -541,94 +543,127 @@ if !exists("g:vimsyn_embed")
 endif
 
 " [-- perl --] {{{3
-if (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(expand("<sfile>:p:h")."/perl.vim")
+let s:perlpath= expand("<sfile>:p:h")."/perl.vim"
+if !filereadable(s:perlpath)
+ let s:perlpath= globpath(&rtp,"syntax/perl.vim")
+endif
+if (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(s:perlpath)
  unlet! b:current_syntax
- syn include @vimPerlScript <sfile>:p:h/perl.vim
+ exe "syn include @vimPerlScript ".s:perlpath
  if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'p'
-  syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript
-  syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
+  syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimPerlScript
+  syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+	contains=@vimPerlScript
  else
-  syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript
-  syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
+  syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimPerlScript
+  syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+		contains=@vimPerlScript
  endif
+ syn cluster vimFuncBodyList	add=vimPerlRegion
 else
  syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
  syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
 endif
+unlet s:perlpath
 
 " [-- ruby --] {{{3
-if (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(expand("<sfile>:p:h")."/ruby.vim")
+let s:rubypath= expand("<sfile>:p:h")."/ruby.vim"
+if !filereadable(s:rubypath)
+ let s:rubypath= globpath(&rtp,"syntax/ruby.vim")
+endif
+if (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(s:rubypath)
  unlet! b:current_syntax
- syn include @vimRubyScript <sfile>:p:h/ruby.vim
+ exe "syn include @vimRubyScript ".s:rubypath
  if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'r'
-  syn region vimRubyRegion fold matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript
+  syn region vimRubyRegion fold matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimRubyScript
  else
-  syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript
+  syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimRubyScript
  endif
- syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
+ syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+		contains=@vimRubyScript
+ syn cluster vimFuncBodyList	add=vimRubyRegion
 else
  syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
  syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
 endif
+unlet s:rubypath
 
 " [-- python --] {{{3
-if (g:vimsyn_embed =~ 'P' && has("python")) && filereadable(expand("<sfile>:p:h")."/python.vim")
+let s:pythonpath= expand("<sfile>:p:h")."/python.vim"
+if !filereadable(s:pythonpath)
+ let s:pythonpath= globpath(&rtp,"syntax/python.vim")
+endif
+if (g:vimsyn_embed =~ 'P' && has("python")) && filereadable(s:pythonpath)
  unlet! b:current_syntax
- syn include @vimPythonScript <sfile>:p:h/python.vim
+ exe "syn include @vimPythonScript ".s:pythonpath
  if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'P'
-  syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
-  syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
+  syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimPythonScript
+  syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+	contains=@vimPythonScript
  else
-  syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
-  syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
+  syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimPythonScript
+  syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+	contains=@vimPythonScript
  endif
+ syn cluster vimFuncBodyList	add=vimPythonRegion
 else
  syn region vimEmbedError start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+
  syn region vimEmbedError start=+py\%[thon]\s*<<\s*$+ end=+\.$+
 endif
+unlet s:pythonpath
 
 " [-- tcl --] {{{3
 if has("win32") || has("win95") || has("win64") || has("win16")
  " apparently has("tcl") has been hanging vim on some windows systems with cygwin
- let trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
+ let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
 else
- let trytcl= 1
+ let s:trytcl= 1
 endif
-if trytcl
- if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(expand("<sfile>:p:h")."/tcl.vim")
+if s:trytcl
+ let s:tclpath= expand("<sfile>:p:h")."/tcl.vim"
+ if !filereadable(s:tclpath)
+  let s:tclpath= globpath(&rtp,"syntax/tcl.vim")
+ endif
+ if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(s:tclpath)
   unlet! b:current_syntax
-  syn include @vimTclScript <sfile>:p:h/tcl.vim
+  exe "syn include @vimTclScript ".s:tclpath
   if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 't'
-   syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
-   syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
+   syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimTclScript
+   syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+	contains=@vimTclScript
   else
-   syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
-   syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
+   syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimTclScript
+   syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+		contains=@vimTclScript
   endif
+  syn cluster vimFuncBodyList	add=vimTclScript
+ else
+  syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
+  syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
  endif
+ unlet s:tclpath
 else
  syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
  syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
 endif
-unlet trytcl
+unlet s:trytcl
 
 " [-- mzscheme --] {{{3
-if (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(expand("<sfile>:p:h")."/scheme.vim")
+let s:mzschemepath= expand("<sfile>:p:h")."/scheme.vim"
+if !filereadable(s:mzschemepath)
+ let s:mzschemepath= globpath(&rtp,"syntax/scheme.vim")
+endif
+if (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
  unlet! b:current_syntax
  let iskKeep= &isk
- syn include @vimMzSchemeScript <sfile>:p:h/scheme.vim
+ exe "syn include @vimMzSchemeScript ".s:mzschemepath
  let &isk= iskKeep
  if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'm'
-  syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
-  syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
+  syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimMzSchemeScript
+  syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+		contains=@vimMzSchemeScript
  else
-  syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
-  syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
+  syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+		contains=@vimMzSchemeScript
+  syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+		contains=@vimMzSchemeScript
  endif
+ syn cluster vimFuncBodyList	add=vimMzSchemeRegion
 else
  syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
  syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
 endif
+unlet s:mzschemepath
 
 " Synchronize (speed) {{{2
 "============
@@ -643,6 +678,7 @@ endif
 syn sync linecont	"^\s\+\\"
 syn sync match vimAugroupSyncA	groupthere NONE	"\<aug\%[roup]\>\s\+[eE][nN][dD]"
 
+" ====================
 " Highlighting Settings {{{2
 " ====================
 
@@ -709,15 +745,15 @@ hi def link vimMenuMod	vimMapMod
 hi def link vimMenuNameMore	vimMenuName
 hi def link vimMtchComment	vimComment
 hi def link vimNorm	vimCommand
+hi def link vimNotFunc	vimCommand
 hi def link vimNotPatSep	vimString
+hi def link vimPatSepErr	vimPatSep
 hi def link vimPatSepR	vimPatSep
+hi def link vimPatSepZone	vimString
 hi def link vimPatSepZ	vimPatSep
-hi def link vimPatSepErr	vimPatSep
-hi def link vimPatSepZone	vimString
 hi def link vimPlainMark	vimMark
 hi def link vimPlainRegister	vimRegister
 hi def link vimSearch	vimString
-hi def link vimSearchDelim	Statement
 hi def link vimSetMod	vimOption
 hi def link vimSetString	vimString
 hi def link vimSpecFileMod	vimSpecFile
@@ -738,11 +774,11 @@ hi def link vimSynRegOpt	vimSynOption
 hi def link vimSynRegPat	vimString
 hi def link vimSyntax	vimCommand
 hi def link vimSynType	vimSpecial
+hi def link vimUnmap	vimMap
 hi def link vimUserAttrbCmplt	vimSpecial
 hi def link vimUserAttrbKey	vimOption
 hi def link vimUserAttrb	vimSpecial
 hi def link vimUserCommand	vimCommand
-hi def link vimUserFunc	Normal
 
 hi def link vimAutoEvent	Type
 hi def link vimBracket	Delimiter
@@ -759,24 +795,25 @@ hi def link vimFold	Folded
 hi def link vimFuncName	Function
 hi def link vimFuncSID	Special
 hi def link vimFuncVar	Identifier
+hi def link vimGroupSpecial	Special
 hi def link vimGroup	Type
-hi def link vimGroupSpecial	Special
-hi def link vimHLMod	PreProc
 hi def link vimHiAttrib	PreProc
 hi def link vimHiTerm	Type
+hi def link vimHLMod	PreProc
 hi def link vimKeyword	Statement
 hi def link vimMark	Number
 hi def link vimMenuName	PreProc
 hi def link vimNotation	Special
-hi def link vimNotFunc	vimCommand
 hi def link vimNumber	Number
+hi def link vimOperError	Error
 hi def link vimOper	Operator
 hi def link vimOption	PreProc
-hi def link vimOperError	Error
+hi def link vimParenSep	Delimiter
 hi def link vimPatSep	SpecialChar
 hi def link vimPattern	Type
 hi def link vimRegister	SpecialChar
 hi def link vimScriptDelim	Comment
+hi def link vimSearchDelim	Statement
 hi def link vimSep	Delimiter
 hi def link vimSetSep	Statement
 hi def link vimSpecFile	Identifier
@@ -786,18 +823,19 @@ hi def link vimString	String
 hi def link vimSubstDelim	Delimiter
 hi def link vimSubstFlags	Special
 hi def link vimSubstSubstr	SpecialChar
+hi def link vimSynCaseError	Error
 hi def link vimSynCase	Type
-hi def link vimSynCaseError	Error
-hi def link vimSynError	Error
-hi def link vimSynOption	Special
-hi def link vimSynReg	Type
 hi def link vimSyncC	Type
 hi def link vimSyncError	Error
 hi def link vimSyncKey	Type
 hi def link vimSyncNone	Type
+hi def link vimSynError	Error
+hi def link vimSynOption	Special
+hi def link vimSynReg	Type
 hi def link vimTodo	Todo
+hi def link vimUserAttrbCmpltFunc	Special
 hi def link vimUserCmdError	Error
-hi def link vimUserAttrbCmpltFunc	Special
+hi def link vimUserFunc	Normal
 hi def link vimWarn	WarningMsg
 
 " Current Syntax Variable: {{{2
--- a/runtime/syntax/xdefaults.vim
+++ b/runtime/syntax/xdefaults.vim
@@ -4,7 +4,7 @@
 "		Author and previous maintainer:
 "		Gautam H. Mudunuri <gmudunur@informatica.com>
 " Last Change:	Di, 09 Mai 2006 23:10:23 CEST
-" $Id$
+" $Id: xdefaults.vim,v 1.2 2007/05/05 17:19:40 vimboss Exp $
 "
 " REFERENCES:
 "   xrdb manual page
--- a/runtime/syntax/xml.vim
+++ b/runtime/syntax/xml.vim
@@ -3,9 +3,9 @@
 " Maintainer:	Johannes Zellner <johannes@zellner.org>
 "		Author and previous maintainer:
 "		Paul Siegmann <pauls@euronet.nl>
-" Last Change:	Mi, 13 Apr 2005 22:40:09 CEST
+" Last Change:	2009-07-13 21:26:55
 " Filenames:	*.xml
-" $Id$
+" $Id: xml.vim,v 1.3 2006/04/11 21:32:00 vimboss Exp $
 
 " CONFIGURATION:
 "   syntax folding can be turned on by
@@ -216,7 +216,7 @@ if exists('g:xml_syntax_folding')
     syn region  xmlComment
 	\ start=+<!+
 	\ end=+>+
-	\ contains=xmlCommentPart,xmlCommentError
+	\ contains=xmlCommentStart,xmlCommentError
 	\ extend
 	\ fold
 
@@ -228,11 +228,12 @@ else
     syn region  xmlComment
 	\ start=+<!+
 	\ end=+>+
-	\ contains=xmlCommentPart,xmlCommentError
+	\ contains=xmlCommentStart,xmlCommentError
 	\ extend
 
 endif
 
+syn match xmlCommentStart   contained "<!" nextgroup=xmlCommentPart
 syn keyword xmlTodo         contained TODO FIXME XXX
 syn match   xmlCommentError contained "[^><!]"
 syn region  xmlCommentPart
@@ -320,6 +321,7 @@ hi def link xmlAttrib		Type
 
 hi def link xmlString		String
 hi def link xmlComment		Comment
+hi def link xmlCommentStart	xmlComment
 hi def link xmlCommentPart	Comment
 hi def link xmlCommentError	Error
 hi def link xmlError		Error
--- a/runtime/syntax/xquery.vim
+++ b/runtime/syntax/xquery.vim
@@ -4,7 +4,7 @@
 " Last Change:	mar jui 12 18:04:05 CEST 2005
 " Filenames:	*.xq
 " URL:		http://jmvanel.free.fr/vim/xquery.vim
-" $Id$
+" $Id: xquery.vim,v 1.1 2005/07/18 21:44:56 vimboss Exp $
 
 " REFERENCES:
 "   [1] http://www.w3.org/TR/xquery/
--- a/runtime/syntax/xsd.vim
+++ b/runtime/syntax/xsd.vim
@@ -3,7 +3,7 @@
 " Maintainer:	Johannes Zellner <johannes@zellner.org>
 " Last Change:	Tue, 27 Apr 2004 14:54:59 CEST
 " Filenames:	*.xsd
-" $Id$
+" $Id: xsd.vim,v 1.1 2004/06/13 18:20:48 vimboss Exp $
 
 " REFERENCES:
 "   [1] http://www.w3.org/TR/xmlschema-0
--- a/runtime/syntax/xslt.vim
+++ b/runtime/syntax/xslt.vim
@@ -3,7 +3,7 @@
 " Maintainer:	Johannes Zellner <johannes@zellner.org>
 " Last Change:	Sun, 28 Oct 2001 21:22:24 +0100
 " Filenames:	*.xsl
-" $Id$
+" $Id: xslt.vim,v 1.1 2004/06/13 15:52:10 vimboss Exp $
 
 " REFERENCES:
 "   [1] http://www.w3.org/TR/xslt
--- a/runtime/syntax/yacc.vim
+++ b/runtime/syntax/yacc.vim
@@ -1,95 +1,85 @@
 " Vim syntax file
 " Language:	Yacc
 " Maintainer:	Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change:	Jan 09, 2008
-" Version:	5
+" Last Change:	Oct 21, 2008
+" Version:	7
 " URL:	http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 "
 " Options: {{{1
 "   g:yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C
-"   g:yacc_minlines : see :help :he syn-sync-minlines -- default 50
-"   g:yacc_maxlines : see :help :he syn-sync-maxlines -- default 200
 
 " ---------------------------------------------------------------------
-" For version 5.x: Clear all syntax items {{{1
-" For version 6.x: Quit when a syntax file was already loaded
+" this version of syntax/yacc.vim requires 6.0 or later
 if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
-  finish
+ finish
+endif
+if exists("b:current_syntax")
+ syntax clear
+endif
+
+" ---------------------------------------------------------------------
+"  Folding Support {{{1
+if has("folding")
+ com! -nargs=+ HiFold	<args> fold
+else
+ com! -nargs=+ HiFold	<args>
 endif
 
 " ---------------------------------------------------------------------
 " Read the C syntax to start with {{{1
-if version >= 600
-  if exists("g:yacc_uses_cpp")
-    runtime! syntax/cpp.vim
-  else
-    runtime! syntax/c.vim
-  endif
-elseif exists("g:yacc_uses_cpp")
-  so <sfile>:p:h/cpp.vim
+if exists("g:yacc_uses_cpp")
+ syn include @yaccCode	<sfile>:p:h/cpp.vim
 else
-  so <sfile>:p:h/c.vim
+ syn include @yaccCode	<sfile>:p:h/c.vim
 endif
 
 " ---------------------------------------------------------------------
-" Clusters {{{1
-syn cluster	yaccActionGroup	contains=yaccDelim,cInParen,cTodo,cIncluded,yaccDelim,yaccCurlyError,yaccUnionCurly,yaccUnion,cUserLabel,cOctalZero,cCppOut2,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCommentStartError,cParenError
-syn cluster	yaccUnionGroup	contains=yaccKey,cComment,yaccCurly,cType,cStructure,cStorageClass,yaccUnionCurly
+"  Yacc Clusters: {{{1
+syn cluster yaccInitCluster	contains=yaccKey,yaccKeyActn,yaccBrkt,yaccType,yaccString,yaccUnionStart,yaccHeader2,yaccComment
+syn cluster yaccRulesCluster	contains=yaccNonterminal,yaccString
+
+" ---------------------------------------------------------------------
+"  Yacc Sections: {{{1
+HiFold syn	region	yaccInit	start='.'ms=s-1,rs=s-1	matchgroup=yaccSectionSep	end='^%%$'me=e-2,re=e-2	contains=@yaccInitCluster	nextgroup=yaccRules	skipwhite skipempty contained
+HiFold syn	region	yaccInit2      start='\%^.'ms=s-1,rs=s-1	matchgroup=yaccSectionSep	end='^%%$'me=e-2,re=e-2	contains=@yaccInitCluster	nextgroup=yaccRules	skipwhite skipempty
+HiFold syn	region	yaccHeader2	matchgroup=yaccSep	start="^\s*\zs%{"	end="^\s*%}"		contains=@yaccCode	nextgroup=yaccInit	skipwhite skipempty contained
+HiFold syn	region	yaccHeader	matchgroup=yaccSep	start="^\s*\zs%{"	end="^\s*%}"		contains=@yaccCode	nextgroup=yaccInit	skipwhite skipempty
+HiFold syn	region	yaccRules	matchgroup=yaccSectionSep	start='^%%$'		end='^%%$'me=e-2,re=e-2	contains=@yaccRulesCluster	nextgroup=yaccEndCode	skipwhite skipempty contained
+HiFold syn	region	yaccEndCode	matchgroup=yaccSectionSep	start='^%%$'		end='\%$'		contains=@yaccCode	contained
 
 " ---------------------------------------------------------------------
-" Yacc stuff {{{1
-syn match	yaccDelim	"^\s*[:|;]"
-syn match	yaccOper	"@\d\+"
+" Yacc Commands: {{{1
+syn	match	yaccDelim	"[:|]"	contained
+syn	match	yaccOper	"@\d\+"	contained
 
-syn match	yaccKey	"^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>"
-syn match	yaccKey	"\s%\(prec\|expect\)\>"
-syn match	yaccKey	"\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"
-syn keyword	yaccKeyActn	yyerrok yyclearin
+syn	match	yaccKey	"^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>"	contained
+syn	match	yaccKey	"\s%\(prec\|expect\)\>"	contained
+syn	match	yaccKey	"\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"	contained
+syn	keyword	yaccKeyActn	yyerrok yyclearin	contained
 
-syn match	yaccUnionStart	"^%union"	skipwhite skipnl nextgroup=yaccUnion
-syn region	yaccUnion	contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}"	contains=@yaccUnionGroup
-syn region	yaccUnionCurly	contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccUnionGroup
-syn match	yaccBrkt	contained "[<>]"
-syn match	yaccType	"<[a-zA-Z_][a-zA-Z0-9_]*>"	contains=yaccBrkt
-syn match	yaccDefinition	"^[A-Za-z][A-Za-z0-9_]*\_s*:"
+syn	match	yaccUnionStart	"^%union"	skipwhite skipnl nextgroup=yaccUnion	contained
+HiFold syn	region	yaccUnion	matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccCode	contained
+syn	match	yaccBrkt	"[<>]"	contained
+syn	match	yaccType	"<[a-zA-Z_][a-zA-Z0-9_]*>"	contains=yaccBrkt	contained
 
-" ---------------------------------------------------------------------
-" special Yacc separators {{{1
-syn match	yaccSectionSep	"^[ \t]*%%"
-syn match	yaccSep	"^[ \t]*%{"
-syn match	yaccSep	"^[ \t]*%}"
+HiFold syn	region	yaccNonterminal	start="^\s*\a\w*\ze\_s*\(/\*\_.\{-}\*/\)\=\_s*:"	matchgroup=yaccDelim end=";"	matchgroup=yaccSectionSep end='^%%$'me=e-2,re=e-2 contains=yaccAction,yaccDelim,yaccString,yaccComment	contained
+syn	region	yaccComment	start="/\*"	end="\*/"
+syn	match	yaccString	"'[^']*'"	contained
+
 
 " ---------------------------------------------------------------------
 " I'd really like to highlight just the outer {}.  Any suggestions??? {{{1
-syn match	yaccCurlyError	"[{}]"
-syn region	yaccAction	matchgroup=yaccCurly start="{" end="}" contains=ALLBUT,@yaccActionGroup
+syn	match	yaccCurlyError	"[{}]"
+HiFold syn	region	yaccAction	matchgroup=yaccCurly start="{" end="}" contains=@yaccCode	contained
 
 " ---------------------------------------------------------------------
 " Yacc synchronization: {{{1
-if exists("g:yacc_maxlines")
- exe "syn sync maxlines=".g:yacc_maxlines
-else
- syn sync maxlines=200
-endif
-if exists("g:yacc_minlines")
- exe "syn sync minlines=".g:yacc_minlines
-else
- syn sync minlines=50
-endif
+syn sync fromstart
 
 " ---------------------------------------------------------------------
 " Define the default highlighting. {{{1
-" 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_yacc_syn_inits")
-  if version < 508
-    let did_yacchdl_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+if !exists("did_yacc_syn_inits")
+  command -nargs=+ HiLink hi def link <args>
 
   " Internal yacc highlighting links {{{2
   HiLink yaccBrkt	yaccStmt
@@ -98,13 +88,15 @@ if version >= 508 || !exists("did_yacc_s
   HiLink yaccUnionStart	yaccKey
 
   " External yacc highlighting links {{{2
+  HiLink yaccComment	Comment
   HiLink yaccCurly	Delimiter
   HiLink yaccCurlyError	Error
-  HiLink yaccDefinition	Function
-  HiLink yaccDelim	Function
+  HiLink yaccNonterminal	Function
+  HiLink yaccDelim	Delimiter
   HiLink yaccKeyActn	Special
   HiLink yaccSectionSep	Todo
   HiLink yaccSep	Delimiter
+  HiLink yaccString	String
   HiLink yaccStmt	Statement
   HiLink yaccType	Type
 
@@ -113,6 +105,10 @@ if version >= 508 || !exists("did_yacc_s
 
   delcommand HiLink
 endif
+
+" ---------------------------------------------------------------------
+"  Cleanup: {{{1
+delcommand HiFold
 let b:current_syntax = "yacc"
 
 " ---------------------------------------------------------------------
--- a/runtime/tutor/Makefile
+++ b/runtime/tutor/Makefile
@@ -6,9 +6,11 @@
 # Similarly for Russian and Korean
 
 all: tutor.utf-8 \
+	tutor.bj \
 	tutor.ca.utf-8 \
 	tutor.de.utf-8 \
 	tutor.el tutor.el.cp737 \
+	tutor.eo \
 	tutor.es.utf-8 \
 	tutor.fr.utf-8 \
 	tutor.hr tutor.hr.cp1250 \
@@ -17,6 +19,8 @@ all: tutor.utf-8 \
 	tutor.ja.sjis tutor.ja.euc \
 	tutor.ko.euc \
 	tutor.no.utf-8 \
+	tutor.nb \
+	tutor.nb.utf-8 \
 	tutor.ru tutor.ru.cp1251 \
 	tutor.sv.utf-8 \
 	tutor.zh.utf-8
@@ -24,9 +28,15 @@ all: tutor.utf-8 \
 tutor.utf-8: tutor
 	iconv -f ISO-8859-1 -t UTF-8 tutor > tutor.utf-8
 
+tutor.bj: tutor.bj.utf-8
+	iconv -f UTF-8 -t ISO-8859-1 tutor.bj.utf-8 > tutor.bj
+
 tutor.ca.utf-8: tutor.ca
 	iconv -f ISO-8859-1 -t UTF-8 tutor.ca > tutor.ca.utf-8
 
+tutor.eo: tutor.eo.utf-8
+	iconv -f UTF-8 -t ISO-8859-3 tutor.eo.utf-8 > tutor.eo
+
 tutor.de.utf-8: tutor.de
 	iconv -f ISO-8859-1 -t UTF-8 tutor.de > tutor.de.utf-8
 
@@ -66,6 +76,13 @@ tutor.ko.euc: tutor.ko.utf-8
 tutor.no.utf-8: tutor.no
 	iconv -f ISO-8859-1 -t UTF-8 tutor.no > tutor.no.utf-8
 
+# nb is an alias for no
+tutor.nb: tutor.no
+	cp tutor.no tutor.nb
+
+tutor.nb.utf-8: tutor.no.utf-8
+	cp tutor.no.utf-8 tutor.nb.utf-8
+
 tutor.ru: tutor.ru.utf-8
 	iconv -f UTF-8 -t KOI8-R tutor.ru.utf-8 > tutor.ru
 
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/tutor.bj
@@ -0,0 +1,987 @@
+===============================================================================
+=    G o t i k a m   i n   n   W I M M - S c h a i n e r   -   Fassung 1.7D   =
+===============================================================================
+
+   Dyr Wimm ist ayn gro mchtigs Blat, ds was mit aynn Wsn Befelh aufwartt; z
+   vil,  d myn s allsand  in aynn Schainer  wie dnn daader  unterbrng.  Der
+   Schainer ist yso aufbaut,  d yr halt netty die Befelh allsand bringt, wost
+   brauchst, dst mit iem fr s Eerste wirklich bbs anfangen kanst.
+   Durchhinarechtn kanst di, wennst willst, in ayner halbetn Stund; ds haisst,
+   wennst di nit groo mit n Prbln und Tftln aufhaltst.
+
+   OBACHT:
+   Die Faudungen,  wost daader finddst,  gaand istig  s Gwort ndern.  Dsswgn
+   machst eyn n Bstn glei  ayn Aamum von derer Dautticht daader.  Haast alsnan
+   ds Gwort daader  mit n Befelh "vimtutor bj"  ausherlaassn,  ist s ee schoon
+   ayn Aamum.
+   Mir kan s  nit oft gnueg  sagn,  d  der Schainer daader  istig  gan n ebn
+   ghoert.  Also muesst schoon aau die Befelh ausfern,  wennst ys gscheid ler-
+   nen willst. Mit n Lsn yllain ist s +nit taan!
+
+   Ietz schaust grad non, d dein Fststlltastn nit druckt ist; und aft geest
+   glei aynmaal mit dyr j-Tastn abwrts (yso laaufft ds nmlich),  hinst dst
+   de gantze Letzn 1.1 auf n Bildschirm haast.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Letzn 1.1: MIT N MRKL UMAYNANDFARN
+
+**  Dyrmitst mit n Mrkl umaynandkimmst, druck h, j, k und l wie unt zaigt.  **
+            ^            Ayn slsbrugg:
+            k            De Tastn  h  ist winster und +geet aau gan winster.
+   < h             l >   S  l  leit zesm und richtt si gan zesm.
+            j            S  j  kan myn wie aynn Pfeil gan unt seghn.
+            v            Mit n  k  kimmst gan n KOPF.            
+  1. Ietz ruedertst ainfach mit n Mrkl auf n Bildschirm umaynand,  hinst dst
+     di sicher felst.
+  2. Halt  d Abhin-Tastn (j)  druckt;  aft rumplt s  ainfach weiter.  Netty yso
+     kimmst gan dyr naehstn Letzn.
+     
+  3. Wie gsait, ietz bewgst di also mit derer Tastn gan dyr Letzn 1.2.
+
+Non bbs: Allweil, wenn dyr niemer ganz wol ist, wasst bbenn druckt haast, aft
+          zipfst  <ESC>;  naacherd bist wider ganz gwon in dyr Befelhs-Artweis.
+
+      
+          Nbnbei gsait kimmst gwonerweil aau mit de Pfeiltastnen weiter.  Aber
+          hjkl  seind z haissn s Wimm-Urgstain;  und de "Hrtn" seind ganz dyr-
+          fr, d myn bei +dene bleibt. Prblt s ainfach aus!
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Letzn 1.2: NN WIMM AUSSCHALTTN
+
+
+  ALSO, EE WENNST BBS VON DAA UNT AUSFERST,  LIS LIEBER ZEERST DE GANTZE LET-
+  ZN!
+
+  1. Druck d <ESC>-Tastn, dyrmitst aau gwi in dyr Befelhs-Artweis bist.
+  
+  2. Demmlt  :q! <EIN>.
+     Daa dyrmit  benddst ys Blat  und verwirffst  allss,  wasst bbenn  gndert
+     haast.
+
+  3. Balst nn Eingib seghst, gib d Faudung ein,  wo di zo dnn Schainer brun-
+     gen haat, also    vimtutor bj <EIN>.
+
+  4. Also, wenn ietz allsse sitzt, naacherd ferst d Schritt 1 hinst 3 aus, mit
+     wasst ys Blat verlaasst und aft wider einhinkimmst.
+
+Anmrkung: Mit  :q! <EIN> verwirffst allss, wasst gndert older enther gschribn
+           haast. In aynn ttlych Letznen lernst acht, wiest ds allss in ayner
+           Dautticht speichertst.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Letzn 1.3: GWORT BARECHTN - LSCHN 
+
+         
+         ** Druck  x  , dyrmitst ds Zaichen unter n Mrkl lschst. **
+
+  1. Bewg di mit n Mrkl auf de mit  ---> angmrkte Zeil unt.
+
+  2. Zo n Faeler Verbssern  farst mit n Mrkl  netty  auf ds Zaichen,  ds wo
+     glscht ghoert.
+
+  3. Druck de Tastn  x  , dst ds berflssige Zaichen lschst.
+
+  4. Ietz tuest so lang weiter mit 2 hinst 4, hinst d dyr Saz stimmt.
+
+---> De Kkuue sprangg bber nn Maanad.
+
+  5. Wenn ietz de Zeil verbssert ist, geest gan dyr Letzn 1.4. weiter.
+
+Und ganz wichtig:  Dyrweilst dnn Schainer durcharechtst,  versuech nit bbenn,
+                   allss auswendig z lernen;  nn, lern ainfach mit n Anwenddn!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Letzn 1.4: GWORT BARECHTN - EINFEGN
+
+
+                  **  Druck  i  , dyrmitst bbs einfegst. **
+
+  1. Bewg nn Mrkl zo dyr eerstn untignen Zeil, wo mit ---> angeet.
+
+  2. Dyrmitst  de eerste Zeil  wie de zwaitte machst,  bewg nn Mrkl  auf ds
+     eerste Zaichen NAACH derer Stll, daa wo s Gwort eingfegt werdn sollt.
+
+  3. Druck  i  und gib ds ein, was abgeet.
+
+  4. Wenn ieweils ayn Faeler verweitert ist, aft druck <ESC>; und dyrmit kimmst
+     gan dyr Befelhsartweis zrugg.
+     So, und ietz tuest ainfach yso weiter, hinst d dyr Saz stimmt.
+
+---> Daader gt dd bbs b.
+---> Daader geet diend bbs ab.
+
+  5. Balst mainst,  dst ys Gwort-Einfegn kanst, aft geest gan dyr Letzn 1.5.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Letzn 1.5: GWORT BARECHTN - ANFEGN
+
+
+                      ** Druck  A  gan n Gwort Anfegn. **
+
+  1. Gee mit n Mrkl gan dyr eerstn untignen Zeil, wo ayn ---> dyrvor haat.
+     Daa ist s gleich, wo gnaun dyr Mrkl in derer Zeil steet.  
+
+  2. Demmlt  A  und gib de entsprchetn Ergntzungen ein.
+
+  3. Wennst  mit n Anfegn frtig bist,  aft druckst <ESC>,  dst wider eyn de
+     Befelhsartweis zruggkimmst.
+
+  4. So,  und ietz geest aft non gan dyr zwaittn  mit ---> angmrktn Zeil;  und
+     daadl machst ys netty yso.
+
+---> In derer Zeil gee  
+     In derer Zeil geet ayn Weeng ayn Gwort ab.
+---> Aau daader stee
+     Aau daader steet bbs Unvollstndigs. 
+
+  5. Wennst s Anfegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6.  
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Letzn 1.6: AYN DAUTTICHT BARECHTN
+
+
+     ** Mit  :wq  speichertst ayn Dautticht und verlaasst nn Wimm ganz. **
+
+  !! OBACHT:  Ee wennst mit dnn alln daa unt weitertuest, lis zeerst de gantze
+     Letzn durch!!
+
+  1. Verlaa also s Blat, wie s in dyr Letzn 1.2. haisst, mit  :q!  !
+
+  2. Gib d Faudung eyn n Eingib ein:  vim Schainer <EIN> . 'vim' ruefft s Blat
+     auf,  und 'Schainer'  haisst de Dautticht,  wost barechtn  willst.  Dyrmit
+     haast also ayn Dautticht, d wost barechtn kanst.
+
+  3. Ietz  fegst bbs ein older lschst bbs,  wiest ys in de vorignen Letznen
+     glernt haast.
+
+  4. Speichert de gnderte Dautticht und verlaa nn Wimm mit  :wq  <EIN>  .
+
+  5. Schmei nn Wimmschainer neu an und gee gan dyr folgetn Zammenfassung.
+
+  6. Aft dst  de obignen Schritt glsn und kppt haast,  kanst ys durchfern.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ZAMMENFASSUNG VON DYR LETZN 1
+
+
+  1. Dyr Mrkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert.
+              h (winst)     j (ab)        k (auf)       l (zes)
+
+  2. Um nn Wimm umbb n Eingib aus z ginnen, demmlt: vim DAUTTICHT <EIN> .
+
+  3. Willst nn Wimm verlaassn und aau allss verwerffen, aft gibst ein:
+                <ESC>  :q!  <EIN> .
+     Gan n Verlaassn und Speichern aber zipfst <ESC>  :wq  <EIN>.
+
+  4. Willst ds Zaichen lschn, daa wo dyr Mrkl drauf ist, demmltst  x  .
+
+  5. Willst bbs vor n Mrkl eingbn, zipfst  i  und drafter  <ESC>  .
+     Mechst ys aber eyn s Zeilnend anhinhngen, benutzt ys   A  .
+     Und ainfach naach n Mrkl fegst ys mit  a  ein  .
+
+Anmrkung:  Druckst <ESC>, kimmst eyn de Befelhsartweis zrugg older brichst ayn
+            Faudung ab, d wo dyr schiefgangen ist.
+
+     Ietz tue mit dyr Letzn 2 weiter.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                           Letzn 2.1.: LSHFAUDUNGEN
+
+
+                 ** Demmlt  dw  , dyrmitst ayn Wort lschst **
+
+  1. Druck  <ESC>, dyrmit s aau gwi ist, dst in dyr Befelhsartweis bist.
+
+  2. Bewg nn Mrkl zo dyr mit ---> angmrktn Zeil unt.
+
+  3. Und daa geest ietz auf n Anfang von aynn Wort, ds wo glscht ghoert.
+
+  4. Zipf  dw  , dst ds gantze Wort lschst.
+
+  Nbnbei:  Dyr Buechstabn  d  erscheint auf dyr lsstn Zeil  von n Bildschirm,
+            sobaldst n eingibst. Dyr Wimm wartt ietz drauf, d bbs kimmt, al-
+            so  daader ayn  w  .  Seghst  freilich  bbs Anderts  wie ayn  d  ,
+            naacherd haast  bbs Falschs  demmlt.  Druck aft  <ESC>  und prblt
+            s non aynmaal.
+---> Ayn ttlych Wrter lustig ghoernd nit Fisper eyn dnn Saz einhin.
+
+  5. fert  d Schritt  3 und 4,  hinst d  dyr Saz psst,  und gee aft gan dyr
+     Letzn 2.2.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Letzn 2.2.: NON MEERER LSHFAUDUNGEN
+
+
+            ** Gib  d$  ein, dst hinst eyn s Zeilnend lschst. **
+
+  1. Druck <ESC> , dyrmitst aau gwi in dyr Befelhsartweis bist.
+
+  2. Bewg nn Mrkl hinst eyn de mit ---> angmrkte Zeil untn.
+
+  3. Gee mit n Mrkl auf s End von dyr faelerfreien Zeil, NAACH n eerstn  .   .
+
+  4. Zipf  d$  , dst hinst eyn s End von dyr Zeil lschst.
+  
+---> bber haat s End von dyr Zeil doplt eingbn. doplt eingbn.
+
+
+  5. Gee weiter  gan dyr Letzn 2.3,  dyrmitst versteest,  was daader ablaaufft.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Letzn 2.3: PFEMERER UND WOLENDER
+
+
+  Vil Faudungen,   wo s Gwort ndernd, stznd si aus aynn Pfemerer und aynn Wo-
+  lend zamm. Bal i also bbs lschn will, schreib i ainsting  d  und aft s "Wo-
+  lend", ds haisst also, "wolend", "wohin" d i will - older was i halt gnaun
+  lschn will.
+
+
+
+
+
+
+  Daader also, was i wie lschn kan:
+    w - hinst eyn n Anfang von n naehstn Wort AANE dnn sein eersts Zaichen.
+    e - gan n End von n ietzundn Wort MIT dnn seinn lsstn Zaichen.
+    $ - zo n End von dyr Zeil MIT derer irn lsstn Zaichen.
+
+  Also lscht de Tastnfolg  de  umbb n Mrkl hinst eyn s Wortend.
+Anmrkung:   Gib i grad  ds zwaitte Zaichen  yllain ein,  ruckt halt dyr Mrkl
+             entsprchet weiter.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   Letzn 2.4: MIT AYNN ZLER D WOLENDER FERN
+
+
+      ** Gib i ayn Zal vor aynn Wolend ein, werd ds Sel halt widerholt. **
+
+  1. Bewg nn Mrkl gan n Anfang von dyr Zeil mit ---> dyrvor unt.
+
+  2. Zipf  2w  , dst mit n Mrkl zwai Wrter weitergeest.
+
+  3. Zipf  3e  , dst mit n Mrkl auf s End von n drittn Wort kimmst.
+
+  4. Zipf  0  (aynn Nuller), dst eyn n Anfang von dyr Zeil hinkimmst.
+
+  5. Widerhol d Schritt 2 und 3 mit verschaidne Zler.
+
+  ---> Ds ist ietz grad ayn Zeil zo n drinn Umaynanderruedern.
+
+  6. Gee weiter gan dyr Letzn 2.5.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                 Letzn 2.5: DURCH AYNN ZLER GLEI MEERER LSCHN
+
+
+              ** Ayn Zal vor aynn Pfemerer fert dnn um seln Werd. **
+
+  Also, i mecht lschn,  und zwaar bbs Bestimmts,  und ds so und so oft:  Daa
+  dyrzue benutz i aynn Zler:
+                              d  Zler  Wolend (also nn Bewgungsschrit)
+
+  1. Bewg nn Mrkl  gan n eerstn Wort in GROOSSBUECHSTABN in dyr mit ---> an-
+     gmrktn Zeil.
+
+  2. Demmlt  d2w  , dyrmitst de ganz groogschribnen Wrter lschst.
+
+  3. fert  d Schritt 1 und 2  mit dnn entsprchetn Zler,  dyrmitst de drauf-
+     folgetn  ganz grogschribnen Wrter  mit ayner ainzignen Faudung  lschst:
+
+
+--->  D ABC DE Zeil FGHI JK LMN OP mit Wrter ist Q RS TUV ietz berichtigt.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                          Letzn 2.6: ARECHTN AUF ZEILN
+
+
+               ** Zipf  dd  , um ayn gantze Zeil z lschn. **
+
+  Weil s gro oft vrkimmt,  d myn gantze Zeiln lscht,  kaamend schoon d Ent-
+  wickler von n Urwimm daa drauf,  d myn ainfach  dd  gan dnn Zwk schreibt.
+
+
+  1. Bewg nn Mrkl gan dyr zwaittn Zeil in n untignen "Gedicht".
+  2. Zipf  dd  ,  um d Zeil z lschn.
+  3. Ietz bewgst di gan dyr viertn Zeil.
+  4. Zipf  2dd  , um zwo Zeiln zo n Lschn.
+
+--->  1)  Roosn seind root;
+--->  2)  Drunter ist s Koot.
+--->  3)  Veigerln seind blau.
+--->  4)  Umgrabn tuet s d Sau.
+--->  5)  D Ur sait de Zeit,
+--->  6)  Sait, d s mi freut,
+--->  7)  Dirndl, dein Gschau.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Letzn 2.7: RUGGGNGIG MACHEN (RUGGLN) 
+
+
+             ** Zipf  u  , dyrmitst de lsstn Faudungen ruggltst **
+              ** older  U  , um ayn gantze Zeil widerherzstlln. **
+
+  1. Bewg nn Mrkl  gan dyr mit ---> angmrktn Zeil unt  und gee dyrmit auf n
+     eerstn Faeler.
+  2. Zipf  x  , dst ds eerste z vile Zaichen lschst.
+  3. Ietz demmlt  u  , dyrmitst de lsste Faudung ruggltst.
+  4. Ietz behb  allsand Faeler  auf dyr Zeil  mit dyr Hilf  von n Befelh  x  .
+  5. Aft gibst ayn  U  (groo) ein,  dst de Zeil wider yso hinbringst,  wie s
+     gwsn ist.
+  6. So,  und ietz  demmltst  so oft  u  , hinst dst s  U  und de andern Fau-
+     dungen rugggngig gmacht haast.
+  7. Und ietzet widerum  schreibst  so oft  <STRG>r  , hinst dst  allsand Be-
+     felh widerhergstllt, z haissn allsse rugg-grugglt haast  (also d Rugggn-
+     gigmachungen rugggngig gmacht).
+---> Beerichtig d Faeller voon dehrer Zeiil  und sttll s mitt n Ruggruggln wi-
+     der her.
+  8. Die Faudungen seind gro wichtig; s helffend ainn nrrisch weiter.
+     Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ZAMMENFASSUNG VON DYR LETZN 2
+
+
+  1. Um von n Mrkl aus hinst eyn s naehste Wort zo n Lschn, zipf:  dw
+  2. Um umbb n Mrkl hinst eyn s End von dyr Zeil zo n Lschn, demmlt  d$
+  3. Dyrmitst ayn gantze Zeil lschst, gib ein:  dd
+  4. Mechst ayn Bewgung, ayn "Wolend", fters,  stll de entsprchete Zal dyr-
+     vor:  3dw  older aau:  d3w
+  5. Dyr Pfueg fr ayn nderungsfaudung lautt yso:
+               Pfemerer   [Zal]   Bewgungsschrit (Wolend)
+     Und ds haisst:
+      Dyr PFEMERER gibt an, WAS taan ghoert, bbenn   d   =  lschn (delete).
+      [ZAL] - Ayn Zal KAN myn angbn, wenn myn halt ayn Wolend fter habn will.
+      S WOLEND,  also dyr Schrit WOHIN, besagt,  auf was i aushin will,  bbenn
+      auf ayn Wort (  w  ), s End von dyr Zeil (  $  ) und so weiter.
+
+  6. Dst eyn n Anfang von dyr Zeil hinkimmst, schreib aynn Nuller:  0
+
+  7. Um bbs Vorigs wider z ruggln, gib ein:                u (klain also)
+     Um allsand nderungen in ayner Zeil z ruggln, haast:   U (also groo)
+     Um "rugg-z-ruggln", also allss wider herzstlln, zipf: <STRG>r   
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                           Letzn 3.1: ANFEGN (put) 
+
+
+     ** Zipf  p  , dyrmitst bbs gnetty Glschts naach n Mrkl anfegst. **
+
+  1. Bewg nn Mrkl gan dyr eerstn untignen Zeil mit   --->   dyrvor.
+
+  2. Zipf  dd  , um sele Zeil z lschn  und dyrmit  in aynn Wimm-"Roster"  zo n
+     speichern.
+
+  3. Bewg nn Mrkl gan dyr Zeil c),  BER derer, daa wo de glschte Zeil ein-
+     hinkemmen sollt.
+
+  4. So,  und ietz gibst ainfach  p  ein,  und schoon haast d Zeil unter derer
+     mit n Mrkl drinn.
+  5. fert  d Schritt 2 hinst 4,  hinst dst  allsand Zeiln  yso naachynaynand
+     haast, wie s hinghoernd.
+
+---> d) Kanst du ds aau?
+---> b) Veigerln seind blau.
+---> c) Bedachtn kan myn lernen.
+---> a) Roosn seind root.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Letzn 3.2: ERSTZN (replace)
+
+
+      ** Zipf  rx  , um ds Zaichen unter n Mrkl durch  x  z erstzn. **
+
+  1. Bewg nn Mrkl zo dyr eerstn untignen Zeil mit   --->   dyrvor.
+
+  2. Bewg nn Mrkl, hinst d yr auf n eerstn Faeler steet.
+
+  3. Zipf  r  und drafter ds Zaichen, wo dyrfr daa hinghoert.
+
+  4. Widerhol d Schritt 2 und 3,  hinst dst de eerste Zeil  gmae dyr zwaittn
+     berichtigt haast:
+--->  Wie d Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft!
+--->  Wie d Zeil eingbn wurd, wurdnd ainige falsche Tastnen zipft!
+
+  5. Ietz tue mit dyr Letzn 3.3 weiter.
+
+Anmrkung: Vergi nit drauf, dst mit n Anwenddn lernen solltst und nit bbenn
+           mit n Auswendiglernen!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                          Letzn 3.3: NDERN (change)
+
+
+              ** Um hinst eyn s Wortend z ndern, zipf  ce  . **
+
+  1. Gee mit n Mrkl auf de eerste mit ---> angmrkte Zeil.
+
+  2. Ietz farst netty auf s  "s"  von Wstwr hin.
+
+  3. Zipf  ce  ein und aft d Wortberichtigung, daader also  rter  .
+
+  4. Druck <ESC> und bewg nn Mrkl gan n naehstn Zaichen,  wo gndert ghoert.
+
+  5. fert  d Schritt 3 und 4,  hinst d  dyr eerste Saz  wie dyr zwaitte ist.
+
+---> Ainige Wstwr von derer Zlww ghhnnd mit n ndern-Pfemerer gaauu.
+---> Ainige Wrter von derer Zeil ghoernd mit n ndern-Pfemerer gndert.
+
+ce  lscht also s Wort und schlaaufft di eyn d Eingaab-Artweis.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                  Letzn 3.4.: NON MEERER NDERUNGEN PFELFS  c
+
+
+   ** D Lshfaudung  c  arechtt mit de nmlichnen Wolender wie d mit  d  **
+
+  1. Dyr nder-Pfemerer arechtt anleich wie d Lshfaudung mit   d  ,  und zwaar
+     yso:
+         c    [Zal]   Bewgungsschritt (Wolend)
+
+  2. D Wolender  seind  de gleichn,  bbenn  w  fr Wort und  $ fr s Zeilnend.
+
+
+  3. Bewg di zo dyr eerstn untignen Zeil mit ---> .
+
+  4. Ietz geest auf dnn eerstn Faeler.
+
+  5. Zipf  c$  , gib nn Rest von dyr Zeil wie in dyr zwaittn ein und druck aft
+     <ESC>.
+---> S End von derer Zeil sollt an de zwaitte daader anglichen werdn.
+---> S End von derer Zeil sollt mit n Befelh  c$  berichtigt werdn.
+
+Denk allweil dran,  dst iederzeit  mit dyr Ruggtastn Faeler ausbssern kanst.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ZAMMENFASSUNG VON DYR LETZN 3
+
+
+  1. Um ayn  vorher glschts Gwort  anzfegn,  zipf  p  .  Daa dyrmit  werd ds
+     gantze Gwort  NAACH n Mrkl  angfegt.  Wenn s ayn gantze Zeil  gwsn ist,
+     werd d sel als de Zeil unterhalb n Mrkl eingfegt.
+
+  2. Um ds Zaichen  unter n Mrkl,  also wo dyr Mrkl ist,  z erstzn, zipf  r
+     und aft ds Zaichen, wost daadl habn willst.
+
+  3. Dyr nderungspfemerer ( c = change) laasst ainn umbb n Mrkl hinst eyn s
+     End von n Wolend ndern. Zipf  ce  , dyrmitst umbb n Mrkl hinst eyn s End
+     von n Wort ndertst, und  c$  hinst eyn s End von dyr Zeil.
+
+  4. Fr d nderung lautt dyr Pfueg:
+
+     c   [Zal]   Wolend
+
+Ietz tue mit dyr naehstn Letzn weiter.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                 Letzn 4.1: MRKLSTLLUNG UND DAUTTICHTDARSTAND
+
+** Demmlt <STRG>g, dst nn Befand und Darstand von dyr Dautticht anzaigst. **
+  ** Zipf  G  , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. **
+
+Anmrkung: Lis d gantze Letzn daader durch, ee wennst iewign bbs unternimmst!
+
+  1. Druck  <STRG>g  .  Auf ds hin erscheint auf derer Seitt ganz unt ayn Dar-
+     standsmeldung  mit n Dauttichtnam  und n Befand  innerhalb  dyr Dautticht.
+     Mrk dyr de Zeilnnummer fr n Schrit 3.
+
+Anmrkung:  Mglicherweis  seghst aau nn Mrklbefand  in n zesmen untern Bild-
+            schirmgg. Aft ist s "Lindl" (ruler) eingstllt; schau dyrzue mit
+            n Befelh   :help 'ruler'   naach.
+  2. Druck  G  , um an s End von dyr Dautticht z kemmen.
+     gg  gibst ein, dst gan n Anfang von dyr Dautticht aufhinkimmst.
+
+  3. Gib d Nummer von derer Zeil ein, daa wost vorher warst,  und aft non  G  .
+     Ds bringt di zrugg gan seler Zeil,  daa wost stuenddst,  wiest ds eerste
+     Maal <STRG>g gadruckst.
+
+  4. Wennst di sicher gnueg felst, aft fer d Schritt 1 hinst 3 aus.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Letzn 4.2: DYR BEFELH ZO N SUECHEN 
+               
+
+  ** Zipf  /  und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. **
+
+  1. Du gibst also in dyr Befelhsartweis s Zaichen  /  ein. Ds sel wie aau dyr
+     Mrkl erscheinend drauf unt auf n Schirm, netty wie bei dyr Faudung  :  .
+
+  2. Ietz zipf 'Faeeler' <EIN>. Netty um ds 'Faeeler' willst ietz suechen.
+
+  3. Willst um gnaun dnn Ausdruk weitersuechen, zipf ainfach  n  (wie next).
+     Willst hinzrugg suechen, aft gibst  N  ein.
+
+  4. Um von Haus aus zruggaus z suechen, nimm  ?  statt  /  her.
+
+  5. Dyrmitst wider daa hinkimmst, wost herkemmen bist, druck <STRG>o,  und ds
+     fter,  wennst weiter zrugg willst.  Mit <STRG>i widerum  kimmst vorwrts.
+
+--->  Aynn Faeler schreibt myn nit "Faeeler"; Faeeler ist ayn Faeler
+
+Anmrkung:  Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi-
+            der weiter dyrmit,  men Sach  dyr Schaltter 'wrapscan' wr auf aus.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Letzn 4.3: DE GGNKLAMMERN FINDDN
+
+
+   ** Zipf  %  , um de entsprchete Klammer  )  ,  ]  older  }  z finddn. **
+
+  1. Stz nn Mrkl  auf iewign aine  von dene drei Klammern  (  ,  [  older  {
+     in dyr untignen Zeil, wo mit ---> angmrkt ist.
+
+  2. Ietzet zipf s Zaichen  %  .
+
+  3. Dyr Mrkl geet ietz auf de pssete schliessete Klammer.
+
+  4. Ietz demmlt  %  , und dyrmit kimmst gan dyr ffneretn Klammer zrugg.
+
+  5. Stz nn Mrkl auf ayn anderne Klammer von   ({[]})   und prblt   %  aus.
+
+---> Ds ( ist  bloo ayn Pochzeil ( mit [ verschaidne ] { Klammern } drinn. ))
+
+Anmrkung:  Um d Mglichkeit gaast bsunders froo sein,  wennst aynmaal in aynn
+            Spaichgwort verzweiflt ayn faelete Ggnklammer suechst!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                 Letzn 4.4: D ERSTZUNGSFAUDUNG (substitute)
+
+
+        ** Zipf  :s/alt/neu/g  , um 'alt' durch 'neu' zo n Erstzn. **
+
+  1. Gee mit n Mrkl zo dyr unt steehetn mit ---> angmrktn Zeil.
+
+  2. Zipf  :s/dee/de <EIN>  . Der Befelh erstzt alsnan grad ds +eerste "dee",
+     wo vrkimmt.
+
+  3. Ietz prblt s mit  :s/dee/de/g  . Ds zuestzliche  g  ("Pflok"  nennt myn
+     bbs Slchers) bewirkt, d allss, was dyrmit kennzaichnet ist,  innerhalb
+     von dyr ainn Zeil erstzt werd.
+
+---> Dee schoenste Zeit, d myn dee Blemln anschaut, ist dee schoene Lan-
+     gesszeit.
+  4. Um ietz  allsand Suechbegriff  innerhalb von zwo Zeiln  zo n ndern,  zipf
+     :#,#s/alt/neu/g  ,  wobei # ieweils fr de eerste und lsste Zeil von dnn
+     Pfraich steet.
+     :%s/alt/neu/g  zipfst, dst d Vrkemmen in dyr gantzn Dautticht ndertst.
+        Mit  :%s/alt/neu/gc  finddst allsand Vrkemmen in dyr gsamtn Dautticht;
+     daa werst aber zeerst non gfraagt, obst ys erstzn willst older nity.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ZAMMENFASSUNG VON DYR LETZN 4
+                        
+  1. <STRG>g   zaigt dnn ietzundn Dauttichtbefand  und nn Darstand dyrvon an.
+           G  bringt di an s End von dyr Dautticht.
+     <Zal> G  bringt di gan dyr entsprchetn Zeilnnummer.
+          gg  bringt di zo dyr eerstn Zeil.
+          
+  2. D Eingaab von  /  mit aynn Ausdruk suecht VRSHLING um dnn Ausdruk.
+     Gibst  ?  und aynn Suechbegrif ein, suecht s um dnn RSHLING.
+     Zipf naach ayner Suech  n  ;  naacherd werd in de gleiche Richtung weiter-
+     gsuecht. Mit  N geet s umkeerter weiter.
+     <STRG>o bringt di zo lterne Befndd zrugg, <STRG>i zo neuerne.
+
+  3. D Eingaab von  % , wenn dyr Mrkl auf ainer von dene Klammern steet:   ({[
+     )]}  , bringt di zo dyr Ggnklammer.
+
+  4. Um ds eerste Vrkemmen  von "alt"  in ayner Zeil  durch "neu"  z erstzn,
+     zipf   :s/alt/neu   .
+     Um allsand in ayner Zeil z erstzn, zipf   :s/alt/neu/g   .
+     Mechst allss in zwo Zeiln erstzn, demmlt zo n Beispil  :5,6s/alt/neu/g  .
+     Mechst allss in dyr gantzn Dautticht erstzn, gib ein:   :%s/alt/neu/g   .
+     Willst ayn ieds Maal bstaetln, hng 'c' wie confirm hint anhin.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+            Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFERN 
+            
+
+  ** Willst ayn Gffaudung ausfern, gib ainfach d sel naach   :!   ein. **
+ 
+  1. Zipf  dnn bekanntn Befelh   :  ,  dyrmitst  mit n Mrkl  auf n Bildschirm
+     ganz abhin kimmst. Draufhin kanst aynn gwonen Gfbefelh eingbn.
+
+  2. Zeerst  kimmt aber non ayn Ruefzaichen   !   .  Und ietz haast de Mglich-
+     keit, ayn beliebige ausserige Gffaudung auszfern.
+
+  3. Als Beispil zipf   :!ls <EIN>  ; und schoon haast ayn Auflistung von deinn
+     Verzaichniss,  netty  wie wennst  ganz gwon  in n Eingib wrst.  Geet   ls
+     aus iewign aynn Grund nit, aft prblt s mit  :!dir <EIN>  .
+
+Also non aynmaal: Mit dnn Angang kan ayn iede beliebige ausserige Faudung aus-
+                  gfert werdn, aau mit Auerwerdd.
+
+Und wolgmrkt:    Allsand Befelh, wo mit  :  angeend,  messend mit <EIN> bst-
+                  tigt werdn. Ds dyrsagn myr vrba niemer.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+           Letzn 5.2: NON MEERER DRBER, WIE MYN DAUTTICHTN SCHREIBT
+
+
+      ** Um bbs Gnderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM. **
+
+  1. Zipf  :!dir   older  :!ls  ,  dst dyr ayn Auflistung von deinn Verzaich-
+     niss ausherlaasst.  Dst dyrnaach <EIN> eingbn muesst, waisst ee schoon.
+
+  2. Suech dyr aynn Dauttichtnam aus, dnn wo s non nit geit, bbenn POCH.
+
+  3. Ietz demmlt:  :w POCH   (also mit POCH als dnn neuen Dauttichtnam).
+
+  4. Ds speichert ietz de gantze Dautticht, also nn Wimmschainer,  unter dnn
+     Nam POCH. Ds kanst leicht berpreffen, indem dst ainfach  :!ls   older
+     :!dir  zipfst und dyrmit deinn Verzaichnissinhalt seghst.
+
+Anmrkung:  Stigst ietz aus n Wimm aus und gnnst n aft wider mit   vim POCH  ,
+            naacherd wr d Dautticht ayn gnaune Aamum von n Schainer dyrselbn,
+            wiest n gspeichert haast.
+
+  5. Ietz verweitert d Dautticht - fallsst s Fenstl haast - , mit   :!del POCH
+     beziehungsweis bei aynn Ainslgebu mit   :!rm POCH   .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+            Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN
+
+** Um aynn Tail von dyr Dautticht z speichern, zipf  v [Wolend] :w DAUTTICHT **
+
+  1. Ruck nn Mrkl auf netty d Zeil daader.
+
+  2. Demmlt  v  und gee mit n Mrkl  auf dnn fmftn Auflistungspunt untet.  Du
+     seghst glei, d s Gwort vrherghbt erscheint.
+
+  3. Druck s Zaichen  :  . Ganz unt auf n Bildschirm erscheint  :'<,'>  .
+
+  4. Zipf  w POCH  , wobei s dnn Dauttichtnam POCH  non nit geit.  Vergwi di,
+     dst ds  :'<,'>w POCH aau +seghst, ee wennst <EIN> druckst.
+
+  5. Dyr Wimm schreibt de ausgwaltn Zeil  eyn de Dautticht POCH einhin.  Benutz
+     :!dir  older  :!ls  ,  dst ds berpreffst. Lsh s fein nit bbenn! Mir
+     brauchend s nmlich fr de naehste Letzn.
+
+Anmrkung:  Druckt myn  v  , ginnt d Sichtisch-Auswal. Du kanst mit n Mrkl um-
+            aynandfarn,  um d Auswal  z verndern.  Drafter kan myn mit yn aynn
+            Pfemerer  mit dnn Gwort  bbs machen.  Zo n Beispil lscht  d  ds
+            Gwort.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+               Letzn 5.4: EINLSN UND ZAMMENFERN VON DAUTTICHTN   
+
+
+    ** Um nn Inhalt von ayner Dautticht einzlsn, zipf  :r DAUTTICHTNAM  **
+
+  1. Stz nn Mrkl ber d Zeil daader.
+
+OBACHT:  Aft dst nn Schrit 2  ausgfert haast,  seghst auf aynmaal  bbs aus
+         dyr Letzn 5.3.  Bewg di naacherd wider abwrts, dyrmitst d Letzn wi-
+         derfinddst.
+  2. Ietz  lis  dein Dautticht  POCH ein,  indem dst d Faudung   :r POCH aus-
+     ferst,  wobei wie gsait POCH  fr dnn  von dir  ausgsuechtn Dauttichtnam
+     steet. De einglsne Dautticht werd unterhalb dyr Mrklzeil eingfegt.
+
+  3. Um zo n berpreffen,  ob de Dautticht  aau gwi einglsn ist,  gee zrugg;
+     und du seghst,  d s ietz zwo Ausfrtigungen  von dyr Letzn 5.3. geit,  s
+     Urniss und de eingfegte Dauttichtfassung.
+
+Anmrkung:  Du kanst aau  d Ausgaab von aynn Ausserigbefelh einlsn.  Zo n Bei-
+            spil list   :r !ls  d Ausgaab von dyr Faudung  ls   ein und fegt s
+            unterhalb n Mrkl ein.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ZAMMENFASSUNG VON DYR LETZN 5
+
+
+  1. :!FAUDUNG fert aynn ausserignen Befelh aus.
+
+      Daader ayn ttlych gwnddte Beispiler:
+      (Fenstl)              (Ainsl - Leinsl)
+      :!dir                 :!ls                - listt s Verzaichniss auf.
+      :!del DAUTTICHT       :!rm DAUTTICHT      - verweitert sele Dautticht.
+
+  2. :w DAUTTICHT  speichert de ietzunde Wimmdautticht  unter dnn besagtn Nam.
+
+  3. v  WOLEND  :w DAUTTICHTNAM   schreibt de sichtisch ausgwaltn Zeiln  eyn de
+     Dautticht mit seln Nam.
+
+  4. :r DAUTTICHTNAM  ladt sele Dautticht  und fegt s  unterhalb n Mrklbefand
+     ein.
+
+  5. :r !dir   list d Ausgaab  von dyr Faudung   dir   und fegt s  unterhalb n
+     Mrklbefand ein.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Letzn 6.1: ZEIL FFNEN (open)
+
+
+        ** Zipf o, um ayn Zeil unterhalb n Mrkl z ffnen und eyn d **
+                        ** Einfegartweis z kemmen. **
+
+  1. Bewg nn Mrkl zo dyr eerstn mit ---> angmrktn Zeil unt.
+
+  2. Zipf o (klain),  um ayn Zeil  UNTERHALB n Mrkl z ffnen  und mit dyr Ein-
+     fegartweis weiterztuen.
+
+  3. Ietz zipf ayn Weeng ayn Gwort und druck <ESC>,  um d Einfegartweis z ver-
+     laassn.
+---> Mit  o  werd dyr Mrkl auf de offene Zeil in dyr Einfegartweis gstzt.
+
+  4. Um ayn Zeil OBERHALB n Mrkl aufzmachen,  gib ainfach aynn groosss O statt
+     yn aynn klainen ein. Versuech ds auf dyr untignen Zeil.
+
+---> ffnet ayn Zeil ber derer daader mit  O  ,  wenn dyr Mrkl auf derer Zeil
+     ist.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Letzn 6.2: GWORT ANFEGN (append)
+
+
+                ** Zipf  a  , um bbs NAACH n Mrkl einzfegn. **
+
+  1. Bewg nn Mrkl gan n Anfang von dyr eerstn ebungszeil mit ---> unt.
+
+  2. Druck  e  , hinst d dyr Mrkl an n End von  Zei  steet.
+
+  3. Zipf ayn klains  a  , um bbs NAACH n Mrkl anzfegn.
+
+  4. Vergntz ds Wort wie in dyr Zeil drunter.  Druck <ESC>, um d Schreib-Art-
+     weis z verlaassn.
+
+  5. Bewg di mit  e   zo n naehstn ungantzn Wort  und widerhol d Schritt 3 und
+     4.
+
+---> D Ze biett ayn Glgn , ayn Gwort in ayner Zeil anzf.
+---> D Zeil biett ayn Glgnet, ayn Gwort in ayner Zeil anzfegn.
+
+Anmrkung:   a  ,  i  und  A  bringend ainn gleichermaan eyn d Einfegartweis;
+             dyr ainzige Unterschaid ist, WO mit n Einfegn angfangt werd.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+              Letzn 6.3: AYN ANDERNE WEIS ZO N ERSTZN (replace)
+
+
+ ** Demmlt ayn groosss  R  , um meerer als wie grad ain Zaichen z erstzn. **
+
+  1. Bewg nn Mrkl zo dyr eerstn untignen, mit ---> angmrktn Zeil.
+     Gee mit n Mrkl gan n Anfang von n eerstn  xxx  .
+
+  2. Ietz druck  R   und zipf sele Zal,  wo drunter  in dyr zwaittn Zeil steet,
+     yso d de sel s xxx erstzt.
+
+  3. Druck <ESC> ,  um d Erstzungsartweis  z verlaassn.  Du gspannst,  d dyr
+     Rest von dyr Zeil unverndert bleibt.
+
+  4. fert die Schritt, um ds berblibne xxx z erstzn.
+
+---> S Zunddn von 123 zo xxx ergibt xxx.
+---> S Zunddn von 123 zo 456 ergibt 579.
+
+Anmrkung: D Erstzungsartweis ist wie d Einfegartweis,  aber ayn ieds eindem-
+           mlte Zaichen lscht ayn vorhanddns.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Letzn 6.4: GWORT AAMEN UND EINFEGN
+
+ ** Benutz nn Pfemerer  y  , um bbs z aamen, und  p  , um bbs einzfegn. **
+
+  1. Gee zo dyr mit  --->  angmrktn Zeil unt  und stz nn Mrkl  hinter "a)".
+
+  2. Ginn d Sichtisch-Artweis mit   v   und bewg nn Mrkl gnaun vor "eerste".
+  
+  3. Zipf  y  , um dnn vrherghbtn Tail z aamen.
+
+  4. Bewg nn Mrkl gan n End von dyr naehstn Zeil:  j$
+
+  5. Demmlt  p  , um ds Gwort einzfegn, und aft:  a zwaitte <ESC>  .
+
+  6. Benutz d Sichtischartweis, um " Eintrag." auszwaln,  aam s pfelfs  y,  be-
+     wg di gan n End von dyr naehstn Zeil mit  j$   und feg s Gwort dortn mit
+     p  an.
+
+--->  a) ds ist dyr eerste Eintrag.
+      b)
+
+Anmrkung: Du kanst  y  aau als Pfemerer verwenddn;  yw  aamt ain Wort.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                           Letzn 6.5: SCHALTTER STZN
+
+** Stz aynn Schaltter yso,  d ayn Suech older Erstzung Groo- und Klain- **
+                            ** schreibung bergeet. **
+                            
+  1. Suech um 'bergee", indem dst   /bergee   eingibst.
+     Widerhol d Suech ayn ttlych Maal, indem dst de Tastn  n  druckst.
+
+  2. Stz de Zwisl - nn Schaltter - 'ic' (ignore case), indem dst  :set ic
+     eingibst.
+  3. Ietz suech wider um 'bergee' und tue aau wider mit  n  weiter.  Daa fallt
+     dyr auf, d ietz bbenn aau  bergee  und  BERGEE  hergeet.
+
+  4. Stz de Zwisln 'hlsearch' und 'incsearch' pfelfs:   :set hls is
+
+  5. Widerhol d Suech und bobacht, was ietz gschieght:   /bergee <EIN>
+
+  6. Dst groo und klain wider gwon unterscheidst, zipf:   :set noic
+
+Anmrkung:  Mechst de Trffer niemer vrherghbt seghn,  gib ein:   :nohlsearch
+Anmrkung:  Sollt klain/groo bei ayner ainzignen Suech wurst sein,  benutz  \c
+            in n Suechausdruk:   /bergee\c <EIN>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ZAMMENFASSUNG VON DYR LETZN 6
+
+  1. Zipf  o  ,  um ayn Zeil  UNTERHALB n Mrkl z ffnen und d Einfegartweis z
+                 ginnen.
+     Zipf  O  ,  um ayn Zeil OBERHALB n Mrkl z ffnen.
+
+  2. Zipf  a  ,  um NAACH n Mrkl ayn Gwort einzfegn.
+     Zipf  A  ,  um ayn Gwort naach n Zeilnend anzfegn.
+
+  3. D Faudung  e  bringt di gan n End von aynn Wort.
+
+  4. Dyr Pfemerer  y  (yank) aamt bbs,  p  (put) fegt ds ein.
+
+  5. Ayn groosss  R  geet eyn d Erstzungsartweis,  hinst d myn <ESC> druckt.
+
+  6. D Eingaab von ":set xxx"  stzt de Zwisl "xxx".  Ayn ttlych Zwisln seind:
+     'ic' 'ignorecase'   Groo/klain wurst bei ayner Suech
+     'is' 'incsearch'    Zaig aau schoon ayn Tailberainstimmung
+     'hls' 'hlsearch'    Hb allsand pssetn Ausdrck vrher
+     Dyr Schaltternam kan in dyr Kurz- older Langform angbn werdn.
+
+  7. Stll yn ayner Zwisl "no" voran, dst ys abschalttst:   :set noic
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Letzn 7.1: AYN HILFGWORT AUFRUEFFEN
+
+
+            ** Nutz ds einbaute Hilfgebu, de "Betribsanlaittung" **
+
+  Eyn n Wimm  ist ayn ausferliche "Gebrauchsanweisung"  einbaut.  Fr s Eerste
+  prblt ainfach ains von dene dreu aus:
+    - Druck d <HILF>-Tastn, wennst bbenn aine haast.
+    - Druck de Tastn <F1>, fallsst ys haast.
+    - Zipf   :help <EIN>
+
+  Lis di eyn s Hilffenster ein, dyrmitst draufkimmst, wie ds mit dyr Hilf geet.
+  Demmlt  <STRG>w w  , um von ainn Fenster zo n andern zo n Springen.
+  Demmlt   :q <EIN>  , um s Hilffenster zo n Schliessn.
+
+  Du kanst zo so guet wie allssand ayn Hilf finddn,  indem dst yn dyr Faudung
+  :help   aynn Auerwerd naachstllst und istig <EIN> nit vergisst.  Prblt ds:
+
+     :help w
+     :help c_CTRL-D
+     :help insert-index
+     :help user-manual
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Letzn 7.2: ERSTLL AYN GIN-SCHRIPF
+
+
+            ** Mutz nn Wimm mit de einbautn Faehigkeitn auf **
+
+  Dyr Wimm besitzt ayn Wsn Schftungen,  wo ber n Urwimm aushingeend, aber de
+  meerern dyrvon  seind in dyr Vorgaab ausgschaltt.  Dyrmitst meerer aus n Wimm
+  ausherholst, erstllst ayn "vimrc"-Dautticht.
+
+  1. Lg ayn "vimrc"-Dautticht an;  ds geet  ie naach Betribsgebu  verschidn:
+     :e ~/.vimrc     fr s Ainsl
+     :e $VIM/_vimrc  bei n Fenstl
+
+  2. Ietz lis nn Inhalt von dyr Beispil-"vimrc"-Dautticht ein:
+     :r $VIMRUNTIME/vimrc_example.vim
+
+  3. Speichert de Dautticht mit:
+     :w
+
+  4. Bei n naehstn Gin von n Wimm  ist aft d Fegnussvrherhbung  zuegschaltt.
+     Du kanst dyr allss  eyn d Dautticht  einhinschreibn,  wasst bstndig habn
+     willst. Meerer dyrzue erfarst unter:   :help vimrc-intro
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              Letzn 7.3: VERGNTZN
+
+
+               ** Befelhszeilnvergntzung mit <STRG>d und <TAB> **
+
+  1. Vergwi di, d dyr Wimm nit auf n Urwimm-"Glais" fart:   :set nocp
+
+  2. Schaug naach, wlcherne Dauttichtn d s in n Verzaichniss geit:   :!ls
+     older   :!dir
+  3. Zipf nn Anfang von ayner Faudung:   :e
+
+  4. Druck  <STRG>d  ,  und dyr Wimm zaigt ayn Listn von Faudungen,  wo mit "e"
+     angeend.
+  5. Druck  <TAB>  ,  und dyr Wimm vervollstndigt  nn Faudungsnam zo ":edit".
+
+  6. Feg  ayn Laerzaichen  und nn Anfang  von ayner  besteehetn Dautticht an:
+     :edit DAU
+
+  7. Druck <TAB>.  Dyr Wimm vergntzt nn Nam,  ds haisst,  wenn yr aindeuttig
+     ist.
+Anmrkung:  D Vergntzung  geit s fr aynn Hauffen Faudungen.  Versuech ainfach
+           <STRG>d  und  <TAB>.  Bsunders ntzlich ist ds bei   :help  .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ZAMMENFASSUNG VON DYR LETZN 7
+
+
+  1. Zipf  :help   older druck <F1> older <HILF>,  um ayn Hilffenster z ffnen.
+
+  2. Zipf  :help FAUDUNG  , um auf ayn Hilf gan aynn Befelh z kemmen.
+
+  3. Zipf  <STRG>w w  , um zo n andern Fenster z springen.
+
+  4. Zipf  :q  , um s Hilffenster z schliessn.
+
+  5. Erstll ayn vimrc-Ginschripf  zuer Sicherung von deine Mtzneinstllungen.
+
+  6. Druck <STRG>d, aft dst naach  :  mit ayner Faudung angfangt haast,  dyr-
+     mitst mgliche Vergntzungen anzaigt kriegst.
+     Druck <TAB> fr ain Vervollstndigung yllain.
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Ds wr ietzet s End von n Wimmschainer.  Gangen ist s daa drum,  aynn kurtzn
+  und bndignen berblik ber s Blat  WIMM z lifern,  netty vil gnueg,  d myn
+  fr s Eerste  wirklich bbs  dyrmit anfangen kan.  Dyrmit ist s aber auf kain
+  Weitn non nit taan;  dyr Wimm haat schoon non vil meerer  auf Lager.  Lis als
+  Naehsts aynmaal s Benutzerhandbuech:   :help user-manual   .
+
+  Zo n Weiterlsn und Weiterlernen wr ds Buech daader zo n Empfelhen:
+    Vim - Vi Improved - von n OUALLINE Steve
+    Verlaag: New Riders
+  Ds ist ds eerste Buech, wo ganz yn n Wimm gwidmt ist, netty ds Grechte fr
+  Anfnger. Es haat ayn Wsn Beispiler und aau Bilder drinn.
+  See http://iccf-holland.org/click5.html
+
+  Ds folgete Buech  ist schoon lter und meerer  ber n Urwimm  als wie ber n
+  Wimm,  aber aau zo n Empfelhen:   Textbearbeitung mit dem vi-Editor - von dyr
+  LAMB Linda und n ROBBINS Arnold  -  Verlaag O'Reilly  - Buechlaittzal (ISBN):
+  3897211262
+  In dnn Buech  kan myn fast allss finddn,  was myn mit n Urwimm angeen mecht.
+  De sxte Ausgaab enthaltt aau schoon bbs ber n Wimm.
+  Als ietzunde Bezugniss  fr d Fassung  6.2  und ayn pfrenge Einferung  dient
+  ds folgete Buech:
+    vim ge-packt  von n WOBST Reinhard
+    mitp-Verlaag, Buechlaittzal 3-8266-1425-9
+  Trotz dyr recht pfrengen Darstllung  ist s durch seine viln ntzlichnen Bei-
+  spiler aau fr Einsteiger grad grecht.  Probhaeupster und de Beispilschripfer
+  seind zesig zo n Kriegn; see http://iccf-holland.org/click5.html
+
+  Verfasst habnd dnn Schainer dyr PIERCE Michael C. und WARE Robert K. von dyr
+  Kolraader Knappnschuel (Colorado School of Mines). Er beruet auf Entwrff, wo
+  dyr SMITH Charles  von dyr  Kolraader Allschuel  (Colorado State  University)
+  zuer Verfegung gstllt haat. Gundpost: bware@mines.colorado.edu.
+  Fr n Wimm haat n dyr MOOLENAAR Bram barechtt.
+  De bairische berstzung stammt von n HELL Sepp 2009. Sein Gundpostbrcht ist
+  sturmibund@t-online.de 
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  
+
+ 
+
+
+
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/tutor.bj.utf-8
@@ -0,0 +1,987 @@
+===============================================================================
+=    G o t i k a m   i n   n   W I M M - S c h a i n e r   -   Fassung 1.7D   =
+===============================================================================
+
+   Dyr Wimm ist ayn gro mächtigs Blat, dös was mit aynn Wösn Befelh aufwartt; z
+   vil,  däß myn s allsand  in aynn Schainer  wie dönn daader  unterbräng.  Der
+   Schainer ist yso aufbaut,  däß yr halt netty die Befelh allsand bringt, wost
+   brauchst, däßst mit iem für s Eerste wirklich öbbs anfangen kanst.
+   Durchhinarechtn kanst di, wennst willst, in ayner halbetn Stund; dös haisst,
+   wennst di nit grooß mit n Pröbln und Tüftln aufhaltst.
+
+   OBACHT:
+   Die Faudungen,  wost daader finddst,  gaand istig  s Gwort öndern.  Dösswögn
+   machst eyn n Böstn glei  ayn Aamum von derer Dautticht daader.  Haast alsnan
+   dös Gwort daader  mit n Befelh "vimtutor bj"  ausherlaassn,  ist s ee schoon
+   ayn Aamum.
+   Mir kan s  nit oft gnueg  sagn,  däß  der Schainer daader  istig  gan n Üebn
+   ghoert.  Also muesst schoon aau die Befelh ausfüern,  wennst ys gscheid ler-
+   nen willst. Mit n Lösn yllain ist s +nit taan!
+
+   Ietz schaust grad non, däß dein Föststölltastn nit druckt ist; und aft geest
+   glei aynmaal mit dyr j-Tastn abwärts (yso laaufft dös nömlich),  hinst däßst
+   de gantze Letzn 1.1 auf n Bildschirm haast.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Letzn 1.1: MIT N MÖRKL UMAYNANDFARN
+
+**  Dyrmitst mit n Mörkl umaynandkimmst, druck h, j, k und l wie unt zaigt.  **
+            ^            Ayn Öslsbrugg:
+            k            De Tastn  h  ist winster und +geet aau gan winster.
+   < h             l >   S  l  leit zesm und richtt si gan zesm.
+            j            S  j  kan myn wie aynn Pfeil gan unt seghn.
+            v            Mit n  k  kimmst gan n KOPF.            
+  1. Ietz ruedertst ainfach mit n Mörkl auf n Bildschirm umaynand,  hinst däßst
+     di sicher füelst.
+  2. Halt  d Abhin-Tastn (j)  druckt;  aft rumplt s  ainfach weiter.  Netty yso
+     kimmst gan dyr naehstn Letzn.
+     
+  3. Wie gsait, ietz bewögst di also mit derer Tastn gan dyr Letzn 1.2.
+
+Non öbbs: Allweil, wenn dyr niemer ganz wol ist, wasst öbbenn druckt haast, aft
+          zipfst  <ESC>;  naacherd bist wider ganz gwon in dyr Befelhs-Artweis.
+
+      
+          Nöbnbei gsait kimmst gwonerweil aau mit de Pfeiltastnen weiter.  Aber
+          hjkl  seind z haissn s Wimm-Urgstain;  und de "Hörtn" seind ganz dyr-
+          für, däß myn bei +dene bleibt. Pröblt s ainfach aus!
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Letzn 1.2: ÖNN WIMM AUSSCHALTTN
+
+
+  ALSO, EE WENNST ÖBBS VON DAA UNT AUSFÜERST,  LIS LIEBER ZEERST DE GANTZE LET-
+  ZN!
+
+  1. Druck d <ESC>-Tastn, dyrmitst aau gwiß in dyr Befelhs-Artweis bist.
+  
+  2. Demmlt  :q! <EIN>.
+     Daa dyrmit  benddst ys Blat  und verwirffst  allss,  wasst öbbenn  göndert
+     haast.
+
+  3. Balst önn Eingib seghst, gib dö Faudung ein,  wo di zo dönn Schainer brun-
+     gen haat, also    vimtutor bj <EIN>.
+
+  4. Also, wenn ietz allsse sitzt, naacherd füerst d Schritt 1 hinst 3 aus, mit
+     wasst ys Blat verlaasst und aft wider einhinkimmst.
+
+Anmörkung: Mit  :q! <EIN> verwirffst allss, wasst göndert older enther gschribn
+           haast. In aynn Öttlych Letznen lernst acht, wiest dös allss in ayner
+           Dautticht speichertst.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Letzn 1.3: GWORT BARECHTN - LÖSCHN 
+
+         
+         ** Druck  x  , dyrmitst dös Zaichen unter n Mörkl löschst. **
+
+  1. Bewög di mit n Mörkl auf de mit  ---> angmörkte Zeil unt.
+
+  2. Zo n Faeler Verbössern  farst mit n Mörkl  netty  auf dös Zaichen,  dös wo
+     glöscht ghoert.
+
+  3. Druck de Tastn  x  , däßst dös überflüssige Zaichen löschst.
+
+  4. Ietz tuest so lang weiter mit 2 hinst 4, hinst däß dyr Saz stimmt.
+
+---> De Kkuue sprangg übber nn Maanad.
+
+  5. Wenn ietz de Zeil verbössert ist, geest gan dyr Letzn 1.4. weiter.
+
+Und ganz wichtig:  Dyrweilst dönn Schainer durcharechtst,  versuech nit öbbenn,
+                   allss auswendig z lernen;  nän, lern ainfach mit n Anwenddn!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Letzn 1.4: GWORT BARECHTN - EINFÜEGN
+
+
+                  **  Druck  i  , dyrmitst öbbs einfüegst. **
+
+  1. Bewög önn Mörkl zo dyr eerstn untignen Zeil, wo mit ---> angeet.
+
+  2. Dyrmitst  de eerste Zeil  wie de zwaitte machst,  bewög önn Mörkl  auf dös
+     eerste Zaichen NAACH derer Stöll, daa wo s Gwort eingfüegt werdn sollt.
+
+  3. Druck  i  und gib dös ein, was abgeet.
+
+  4. Wenn ieweils ayn Faeler verweitert ist, aft druck <ESC>; und dyrmit kimmst
+     gan dyr Befelhsartweis zrugg.
+     So, und ietz tuest ainfach yso weiter, hinst däß dyr Saz stimmt.
+
+---> Daader gt dd öbbs b.
+---> Daader geet diend öbbs ab.
+
+  5. Balst mainst,  däßst ys Gwort-Einfüegn kanst, aft geest gan dyr Letzn 1.5.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Letzn 1.5: GWORT BARECHTN - ANFÜEGN
+
+
+                      ** Druck  A  gan n Gwort Anfüegn. **
+
+  1. Gee mit n Mörkl gan dyr eerstn untignen Zeil, wo ayn ---> dyrvor haat.
+     Daa ist s gleich, wo gnaun dyr Mörkl in derer Zeil steet.  
+
+  2. Demmlt  A  und gib de entspröchetn Ergöntzungen ein.
+
+  3. Wennst  mit n Anfüegn förtig bist,  aft druckst <ESC>,  däßst wider eyn de
+     Befelhsartweis zruggkimmst.
+
+  4. So,  und ietz geest aft non gan dyr zwaittn  mit ---> angmörktn Zeil;  und
+     daadl machst ys netty yso.
+
+---> In derer Zeil gee  
+     In derer Zeil geet ayn Weeng ayn Gwort ab.
+---> Aau daader stee
+     Aau daader steet öbbs Unvollstöndigs. 
+
+  5. Wennst s Anfüegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6.  
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Letzn 1.6: AYN DAUTTICHT BARECHTN
+
+
+     ** Mit  :wq  speichertst ayn Dautticht und verlaasst önn Wimm ganz. **
+
+  !! OBACHT:  Ee wennst mit dönn alln daa unt weitertuest, lis zeerst de gantze
+     Letzn durch!!
+
+  1. Verlaaß also s Blat, wie s in dyr Letzn 1.2. haisst, mit  :q!  !
+
+  2. Gib dö Faudung eyn n Eingib ein:  vim Schainer <EIN> . 'vim' ruefft s Blat
+     auf,  und 'Schainer'  haisst de Dautticht,  wost barechtn  willst.  Dyrmit
+     haast also ayn Dautticht, dö wost barechtn kanst.
+
+  3. Ietz  füegst öbbs ein older löschst öbbs,  wiest ys in de vorignen Letznen
+     glernt haast.
+
+  4. Speichert de gönderte Dautticht und verlaaß önn Wimm mit  :wq  <EIN>  .
+
+  5. Schmeiß önn Wimmschainer neu an und gee gan dyr folgetn Zammenfassung.
+
+  6. Aft däßst  de obignen Schritt glösn und käppt haast,  kanst ys durchfüern.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ZAMMENFASSUNG VON DYR LETZN 1
+
+
+  1. Dyr Mörkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert.
+              h (winst)     j (ab)        k (auf)       l (zes)
+
+  2. Um önn Wimm umbb n Eingib aus z ginnen, demmlt: vim DAUTTICHT <EIN> .
+
+  3. Willst önn Wimm verlaassn und aau allss verwerffen, aft gibst ein:
+                <ESC>  :q!  <EIN> .
+     Gan n Verlaassn und Speichern aber zipfst <ESC>  :wq  <EIN>.
+
+  4. Willst dös Zaichen löschn, daa wo dyr Mörkl drauf ist, demmltst  x  .
+
+  5. Willst öbbs vor n Mörkl eingöbn, zipfst  i  und drafter  <ESC>  .
+     Mechst ys aber eyn s Zeilnend anhinhöngen, benutzt ys   A  .
+     Und ainfach naach n Mörkl füegst ys mit  a  ein  .
+
+Anmörkung:  Druckst <ESC>, kimmst eyn de Befelhsartweis zrugg older brichst ayn
+            Faudung ab, dö wo dyr schiefgangen ist.
+
+     Ietz tue mit dyr Letzn 2 weiter.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                           Letzn 2.1.: LÖSHFAUDUNGEN
+
+
+                 ** Demmlt  dw  , dyrmitst ayn Wort löschst **
+
+  1. Druck  <ESC>, dyrmit s aau gwiß ist, däßst in dyr Befelhsartweis bist.
+
+  2. Bewög önn Mörkl zo dyr mit ---> angmörktn Zeil unt.
+
+  3. Und daa geest ietz auf n Anfang von aynn Wort, dös wo glöscht ghoert.
+
+  4. Zipf  dw  , däßst dös gantze Wort löschst.
+
+  Nöbnbei:  Dyr Buechstabn  d  erscheint auf dyr lösstn Zeil  von n Bildschirm,
+            sobaldst n eingibst. Dyr Wimm wartt ietz drauf, däß öbbs kimmt, al-
+            so  daader ayn  w  .  Seghst  freilich  öbbs Anderts  wie ayn  d  ,
+            naacherd haast  öbbs Falschs  demmlt.  Druck aft  <ESC>  und pröblt
+            s non aynmaal.
+---> Ayn Öttlych Wörter lustig ghoernd nit Fisper eyn dönn Saz einhin.
+
+  5. Äfert  d Schritt  3 und 4,  hinst däß  dyr Saz pässt,  und gee aft gan dyr
+     Letzn 2.2.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Letzn 2.2.: NON MEERER LÖSHFAUDUNGEN
+
+
+            ** Gib  d$  ein, däßst hinst eyn s Zeilnend löschst. **
+
+  1. Druck <ESC> , dyrmitst aau gwiß in dyr Befelhsartweis bist.
+
+  2. Bewög önn Mörkl hinst eyn de mit ---> angmörkte Zeil untn.
+
+  3. Gee mit n Mörkl auf s End von dyr faelerfreien Zeil, NAACH n eerstn  .   .
+
+  4. Zipf  d$  , däßst hinst eyn s End von dyr Zeil löschst.
+  
+---> Öbber haat s End von dyr Zeil doplt eingöbn. doplt eingöbn.
+
+
+  5. Gee weiter  gan dyr Letzn 2.3,  dyrmitst versteest,  was daader ablaaufft.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Letzn 2.3: PFEMERER UND WOLENDER
+
+
+  Vil Faudungen,   wo s Gwort öndernd, sötznd si aus aynn Pfemerer und aynn Wo-
+  lend zamm. Bal i also öbbs löschn will, schreib i ainsting  d  und aft s "Wo-
+  lend", dös haisst also, "wolend", "wohin" däß i will - older was i halt gnaun
+  löschn will.
+
+
+
+
+
+
+  Daader also, was i wie löschn kan:
+    w - hinst eyn n Anfang von n naehstn Wort AANE dönn sein eersts Zaichen.
+    e - gan n End von n ietzundn Wort MIT dönn seinn lösstn Zaichen.
+    $ - zo n End von dyr Zeil MIT derer irn lösstn Zaichen.
+
+  Also löscht de Tastnfolg  de  umbb n Mörkl hinst eyn s Wortend.
+Anmörkung:   Gib i grad  dös zwaitte Zaichen  yllain ein,  ruckt halt dyr Mörkl
+             entspröchet weiter.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   Letzn 2.4: MIT AYNN ZÖLER D WOLENDER ÄFERN
+
+
+      ** Gib i ayn Zal vor aynn Wolend ein, werd dös Sel halt widerholt. **
+
+  1. Bewög önn Mörkl gan n Anfang von dyr Zeil mit ---> dyrvor unt.
+
+  2. Zipf  2w  , däßst mit n Mörkl zwai Wörter weitergeest.
+
+  3. Zipf  3e  , däßst mit n Mörkl auf s End von n drittn Wort kimmst.
+
+  4. Zipf  0  (aynn Nuller), däßst eyn n Anfang von dyr Zeil hinkimmst.
+
+  5. Widerhol d Schritt 2 und 3 mit verschaidne Zöler.
+
+  ---> Dös ist ietz grad ayn Zeil zo n drinn Umaynanderruedern.
+
+  6. Gee weiter gan dyr Letzn 2.5.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                 Letzn 2.5: DURCH AYNN ZÖLER GLEI MEERER LÖSCHN
+
+
+              ** Ayn Zal vor aynn Pfemerer äfert dönn um seln Werd. **
+
+  Also, i mecht löschn,  und zwaar öbbs Bestimmts,  und dös so und so oft:  Daa
+  dyrzue benutz i aynn Zöler:
+                              d  Zöler  Wolend (also önn Bewögungsschrit)
+
+  1. Bewög önn Mörkl  gan n eerstn Wort in GROOSSBUECHSTABN in dyr mit ---> an-
+     gmörktn Zeil.
+
+  2. Demmlt  d2w  , dyrmitst de ganz grooßgschribnen Wörter löschst.
+
+  3. Äfert  d Schritt 1 und 2  mit dönn entspröchetn Zöler,  dyrmitst de drauf-
+     folgetn  ganz großgschribnen Wörter  mit ayner ainzignen Faudung  löschst:
+
+
+--->  Dö ABC DE Zeil FGHI JK LMN OP mit Wörter ist Q RS TUV ietz berichtigt.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                          Letzn 2.6: ARECHTN AUF ZEILN
+
+
+               ** Zipf  dd  , um ayn gantze Zeil z löschn. **
+
+  Weil s gro oft vürkimmt,  däß myn gantze Zeiln löscht,  kaamend schoon d Ent-
+  wickler von n Urwimm daa drauf,  däß myn ainfach  dd  gan dönn Zwök schreibt.
+
+
+  1. Bewög önn Mörkl gan dyr zwaittn Zeil in n untignen "Gedicht".
+  2. Zipf  dd  ,  um dö Zeil z löschn.
+  3. Ietz bewögst di gan dyr viertn Zeil.
+  4. Zipf  2dd  , um zwo Zeiln zo n Löschn.
+
+--->  1)  Roosn seind root;
+--->  2)  Drunter ist s Koot.
+--->  3)  Veigerln seind blau.
+--->  4)  Umgrabn tuet s d Sau.
+--->  5)  D Ur sait de Zeit,
+--->  6)  Sait, däß s mi freut,
+--->  7)  Dirndl, dein Gschau.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Letzn 2.7: RUGGGÖNGIG MACHEN (RUGGLN) 
+
+
+             ** Zipf  u  , dyrmitst de lösstn Faudungen ruggltst **
+              ** older  U  , um ayn gantze Zeil widerherzstölln. **
+
+  1. Bewög önn Mörkl  gan dyr mit ---> angmörktn Zeil unt  und gee dyrmit auf n
+     eerstn Faeler.
+  2. Zipf  x  , däßst dös eerste z vile Zaichen löschst.
+  3. Ietz demmlt  u  , dyrmitst de lösste Faudung ruggltst.
+  4. Ietz behöb  allsand Faeler  auf dyr Zeil  mit dyr Hilf  von n Befelh  x  .
+  5. Aft gibst ayn  U  (grooß) ein,  däßst de Zeil wider yso hinbringst,  wie s
+     gwösn ist.
+  6. So,  und ietz  demmltst  so oft  u  , hinst däßst s  U  und de andern Fau-
+     dungen rugggöngig gmacht haast.
+  7. Und ietzet widerum  schreibst  so oft  <STRG>r  , hinst däßst  allsand Be-
+     felh widerhergstöllt, z haissn allsse rugg-grugglt haast  (also d Rugggön-
+     gigmachungen rugggöngig gmacht).
+---> Beerichtig d Faeller voon dehrer Zeiil  und sttöll s mitt n Ruggruggln wi-
+     der her.
+  8. Die Faudungen seind gro wichtig; sö helffend ainn närrisch weiter.
+     Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ZAMMENFASSUNG VON DYR LETZN 2
+
+
+  1. Um von n Mörkl aus hinst eyn s naehste Wort zo n Löschn, zipf:  dw
+  2. Um umbb n Mörkl hinst eyn s End von dyr Zeil zo n Löschn, demmlt  d$
+  3. Dyrmitst ayn gantze Zeil löschst, gib ein:  dd
+  4. Mechst ayn Bewögung, ayn "Wolend", öfters,  stöll de entspröchete Zal dyr-
+     vor:  3dw  older aau:  d3w
+  5. Dyr Pfueg für ayn Önderungsfaudung lautt yso:
+               Pfemerer   [Zal]   Bewögungsschrit (Wolend)
+     Und dös haisst:
+      Dyr PFEMERER gibt an, WAS taan ghoert, öbbenn   d   =  löschn (»delete«).
+      [ZAL] - Ayn Zal KAN myn angöbn, wenn myn halt ayn Wolend öfter habn will.
+      S WOLEND,  also dyr Schrit WOHIN, besagt,  auf was i aushin will,  öbbenn
+      auf ayn Wort (  w  ), s End von dyr Zeil (  $  ) und so weiter.
+
+  6. Däßst eyn n Anfang von dyr Zeil hinkimmst, schreib aynn Nuller:  0
+
+  7. Um öbbs Vorigs wider z ruggln, gib ein:                u (klain also)
+     Um allsand Önderungen in ayner Zeil z ruggln, haast:   U (also grooß)
+     Um "rugg-z-ruggln", also allss wider herzstölln, zipf: <STRG>r   
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                           Letzn 3.1: ANFÜEGN (»put«) 
+
+
+     ** Zipf  p  , dyrmitst öbbs gnetty Glöschts naach n Mörkl anfüegst. **
+
+  1. Bewög önn Mörkl gan dyr eerstn untignen Zeil mit   --->   dyrvor.
+
+  2. Zipf  dd  , um sele Zeil z löschn  und dyrmit  in aynn Wimm-"Roster"  zo n
+     speichern.
+
+  3. Bewög önn Mörkl gan dyr Zeil c),  ÜBER derer, daa wo de glöschte Zeil ein-
+     hinkemmen sollt.
+
+  4. So,  und ietz gibst ainfach  p  ein,  und schoon haast dö Zeil unter derer
+     mit n Mörkl drinn.
+  5. Äfert  d Schritt 2 hinst 4,  hinst däßst  allsand Zeiln  yso naachynaynand
+     haast, wie s hinghoernd.
+
+---> d) Kanst du dös aau?
+---> b) Veigerln seind blau.
+---> c) Bedachtn kan myn lernen.
+---> a) Roosn seind root.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Letzn 3.2: ERSÖTZN (»replace«)
+
+
+      ** Zipf  rx  , um dös Zaichen unter n Mörkl durch  x  z ersötzn. **
+
+  1. Bewög önn Mörkl zo dyr eerstn untignen Zeil mit   --->   dyrvor.
+
+  2. Bewög önn Mörkl, hinst däß yr auf n eerstn Faeler steet.
+
+  3. Zipf  r  und drafter dös Zaichen, wo dyrfür daa hinghoert.
+
+  4. Widerhol d Schritt 2 und 3,  hinst däßst de eerste Zeil  gmaeß dyr zwaittn
+     berichtigt haast:
+--->  Wie dö Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft!
+--->  Wie dö Zeil eingöbn wurd, wurdnd ainige falsche Tastnen zipft!
+
+  5. Ietz tue mit dyr Letzn 3.3 weiter.
+
+Anmörkung: Vergiß nit drauf, däßst mit n Anwenddn lernen solltst und nit öbbenn
+           mit n Auswendiglernen!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                          Letzn 3.3: ÖNDERN (»change«)
+
+
+              ** Um hinst eyn s Wortend z öndern, zipf  ce  . **
+
+  1. Gee mit n Mörkl auf de eerste mit ---> angmörkte Zeil.
+
+  2. Ietz farst netty auf s  "s"  von Wstwr hin.
+
+  3. Zipf  ce  ein und aft d Wortberichtigung, daader also  örter  .
+
+  4. Druck <ESC> und bewög önn Mörkl gan n naehstn Zaichen,  wo göndert ghoert.
+
+  5. Äfert  d Schritt 3 und 4,  hinst däß  dyr eerste Saz  wie dyr zwaitte ist.
+
+---> Ainige Wstwr von derer Zlww ghhnnd mit n Öndern-Pfemerer gaauu.
+---> Ainige Wörter von derer Zeil ghoernd mit n Öndern-Pfemerer göndert.
+
+ce  löscht also s Wort und schlaaufft di eyn d Eingaab-Artweis.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                  Letzn 3.4.: NON MEERER ÖNDERUNGEN PFELFS  c
+
+
+   ** D Löshfaudung  c  arechtt mit de nömlichnen Wolender wie dö mit  d  **
+
+  1. Dyr Önder-Pfemerer arechtt anleich wie d Löshfaudung mit   d  ,  und zwaar
+     yso:
+         c    [Zal]   Bewögungsschritt (Wolend)
+
+  2. D Wolender  seind  de gleichn,  öbbenn  w  für Wort und  $ für s Zeilnend.
+
+
+  3. Bewög di zo dyr eerstn untignen Zeil mit ---> .
+
+  4. Ietz geest auf dönn eerstn Faeler.
+
+  5. Zipf  c$  , gib önn Rest von dyr Zeil wie in dyr zwaittn ein und druck aft
+     <ESC>.
+---> S End von derer Zeil sollt an de zwaitte daader anglichen werdn.
+---> S End von derer Zeil sollt mit n Befelh  c$  berichtigt werdn.
+
+Denk allweil dran,  däßst iederzeit  mit dyr Ruggtastn Faeler ausbössern kanst.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ZAMMENFASSUNG VON DYR LETZN 3
+
+
+  1. Um ayn  vorher glöschts Gwort  anzfüegn,  zipf  p  .  Daa dyrmit  werd dös
+     gantze Gwort  NAACH n Mörkl  angfüegt.  Wenn s ayn gantze Zeil  gwösn ist,
+     werd dö sel als de Zeil unterhalb n Mörkl eingfüegt.
+
+  2. Um dös Zaichen  unter n Mörkl,  also wo dyr Mörkl ist,  z ersötzn, zipf  r
+     und aft dös Zaichen, wost daadl habn willst.
+
+  3. Dyr Önderungspfemerer ( c = »change«) laasst ainn umbb n Mörkl hinst eyn s
+     End von n Wolend öndern. Zipf  ce  , dyrmitst umbb n Mörkl hinst eyn s End
+     von n Wort öndertst, und  c$  hinst eyn s End von dyr Zeil.
+
+  4. Für d Önderung lautt dyr Pfueg:
+
+     c   [Zal]   Wolend
+
+Ietz tue mit dyr naehstn Letzn weiter.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                 Letzn 4.1: MÖRKLSTÖLLUNG UND DAUTTICHTDARSTAND
+
+** Demmlt <STRG>g, däßst önn Befand und Darstand von dyr Dautticht anzaigst. **
+  ** Zipf  G  , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. **
+
+Anmörkung: Lis dö gantze Letzn daader durch, ee wennst iewign öbbs unternimmst!
+
+  1. Druck  <STRG>g  .  Auf dös hin erscheint auf derer Seitt ganz unt ayn Dar-
+     standsmeldung  mit n Dauttichtnam  und n Befand  innerhalb  dyr Dautticht.
+     Mörk dyr de Zeilnnummer für n Schrit 3.
+
+Anmörkung:  Müglicherweis  seghst aau önn Mörklbefand  in n zesmen untern Bild-
+            schirmögg. Aft ist s "Lindl" (»ruler«) eingstöllt; schau dyrzue mit
+            n Befelh   :help 'ruler'   naach.
+  2. Druck  G  , um an s End von dyr Dautticht z kemmen.
+     gg  gibst ein, däßst gan n Anfang von dyr Dautticht aufhinkimmst.
+
+  3. Gib d Nummer von derer Zeil ein, daa wost vorher warst,  und aft non  G  .
+     Dös bringt di zrugg gan seler Zeil,  daa wost stuenddst,  wiest dös eerste
+     Maal <STRG>g gadruckst.
+
+  4. Wennst di sicher gnueg füelst, aft füer d Schritt 1 hinst 3 aus.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Letzn 4.2: DYR BEFELH ZO N SUECHEN 
+               
+
+  ** Zipf  /  und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. **
+
+  1. Du gibst also in dyr Befelhsartweis s Zaichen  /  ein. Dös sel wie aau dyr
+     Mörkl erscheinend drauf unt auf n Schirm, netty wie bei dyr Faudung  :  .
+
+  2. Ietz zipf 'Faeeler' <EIN>. Netty um dös 'Faeeler' willst ietz suechen.
+
+  3. Willst um gnaun dönn Ausdruk weitersuechen, zipf ainfach  n  (wie »next«).
+     Willst hinzrugg suechen, aft gibst  N  ein.
+
+  4. Um von Haus aus zruggaus z suechen, nimm  ?  statt  /  her.
+
+  5. Dyrmitst wider daa hinkimmst, wost herkemmen bist, druck <STRG>o,  und dös
+     öfter,  wennst weiter zrugg willst.  Mit <STRG>i widerum  kimmst vorwärts.
+
+--->  Aynn Faeler schreibt myn nit "Faeeler"; Faeeler ist ayn Faeler
+
+Anmörkung:  Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi-
+            der weiter dyrmit,  men Sach  dyr Schaltter 'wrapscan' wär auf aus.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Letzn 4.3: DE GÖGNKLAMMERN FINDDN
+
+
+   ** Zipf  %  , um de entspröchete Klammer  )  ,  ]  older  }  z finddn. **
+
+  1. Sötz önn Mörkl  auf iewign aine  von dene drei Klammern  (  ,  [  older  {
+     in dyr untignen Zeil, wo mit ---> angmörkt ist.
+
+  2. Ietzet zipf s Zaichen  %  .
+
+  3. Dyr Mörkl geet ietz auf de pässete schliessete Klammer.
+
+  4. Ietz demmlt  %  , und dyrmit kimmst gan dyr öffneretn Klammer zrugg.
+
+  5. Sötz önn Mörkl auf ayn anderne Klammer von   ({[]})   und pröblt   %  aus.
+
+---> Dös ( ist  blooß ayn Pochzeil ( mit [ verschaidne ] { Klammern } drinn. ))
+
+Anmörkung:  Um dö Müglichkeit gaast bsunders froo sein,  wennst aynmaal in aynn
+            Spaichgwort verzweiflt ayn faelete Gögnklammer suechst!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                 Letzn 4.4: D ERSÖTZUNGSFAUDUNG (»substitute«)
+
+
+        ** Zipf  :s/alt/neu/g  , um 'alt' durch 'neu' zo n Ersötzn. **
+
+  1. Gee mit n Mörkl zo dyr unt steehetn mit ---> angmörktn Zeil.
+
+  2. Zipf  :s/dee/de <EIN>  . Der Befelh ersötzt alsnan grad dös +eerste "dee",
+     wo vürkimmt.
+
+  3. Ietz pröblt s mit  :s/dee/de/g  . Dös zuesötzliche  g  ("Pflok"  nennt myn
+     öbbs Sölchers) bewirkt, däß allss, was dyrmit kennzaichnet ist,  innerhalb
+     von dyr ainn Zeil ersötzt werd.
+
+---> Dee schoenste Zeit, däß myn dee Blüemln anschaut, ist dee schoene Lan-
+     gesszeit.
+  4. Um ietz  allsand Suechbegriff  innerhalb von zwo Zeiln  zo n Öndern,  zipf
+     :#,#s/alt/neu/g  ,  wobei # ieweils für de eerste und lösste Zeil von dönn
+     Pfraich steet.
+     :%s/alt/neu/g  zipfst, däßst d Vürkemmen in dyr gantzn Dautticht öndertst.
+        Mit  :%s/alt/neu/gc  finddst allsand Vürkemmen in dyr gsamtn Dautticht;
+     daa werst aber zeerst non gfraagt, obst ys ersötzn willst older nity.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ZAMMENFASSUNG VON DYR LETZN 4
+                        
+  1. <STRG>g   zaigt dönn ietzundn Dauttichtbefand  und önn Darstand dyrvon an.
+           G  bringt di an s End von dyr Dautticht.
+     <Zal> G  bringt di gan dyr entspröchetn Zeilnnummer.
+          gg  bringt di zo dyr eerstn Zeil.
+          
+  2. D Eingaab von  /  mit aynn Ausdruk suecht VÜRSHLING um dönn Ausdruk.
+     Gibst  ?  und aynn Suechbegrif ein, suecht s um dönn ÄRSHLING.
+     Zipf naach ayner Suech  n  ;  naacherd werd in de gleiche Richtung weiter-
+     gsuecht. Mit  N geet s umkeerter weiter.
+     <STRG>o bringt di zo ölterne Befändd zrugg, <STRG>i zo neuerne.
+
+  3. D Eingaab von  % , wenn dyr Mörkl auf ainer von dene Klammern steet:   ({[
+     )]}  , bringt di zo dyr Gögnklammer.
+
+  4. Um dös eerste Vürkemmen  von "alt"  in ayner Zeil  durch "neu"  z ersötzn,
+     zipf   :s/alt/neu   .
+     Um allsand in ayner Zeil z ersötzn, zipf   :s/alt/neu/g   .
+     Mechst allss in zwo Zeiln ersötzn, demmlt zo n Beispil  :5,6s/alt/neu/g  .
+     Mechst allss in dyr gantzn Dautticht ersötzn, gib ein:   :%s/alt/neu/g   .
+     Willst ayn ieds Maal bstaetln, höng 'c' wie »confirm« hint anhin.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+            Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFÜERN 
+            
+
+  ** Willst ayn Gfäßfaudung ausfüern, gib ainfach dö sel naach   :!   ein. **
+ 
+  1. Zipf  dönn bekanntn Befelh   :  ,  dyrmitst  mit n Mörkl  auf n Bildschirm
+     ganz abhin kimmst. Draufhin kanst aynn gwonen Gfäßbefelh eingöbn.
+
+  2. Zeerst  kimmt aber non ayn Ruefzaichen   !   .  Und ietz haast de Müglich-
+     keit, ayn beliebige ausserige Gfäßfaudung auszfüern.
+
+  3. Als Beispil zipf   :!ls <EIN>  ; und schoon haast ayn Auflistung von deinn
+     Verzaichniss,  netty  wie wennst  ganz gwon  in n Eingib wärst.  Geet   ls
+     aus iewign aynn Grund nit, aft pröblt s mit  :!dir <EIN>  .
+
+Also non aynmaal: Mit dönn Angang kan ayn iede beliebige ausserige Faudung aus-
+                  gfüert werdn, aau mit Auerwerdd.
+
+Und wolgmörkt:    Allsand Befelh, wo mit  :  angeend,  müessend mit <EIN> bstö-
+                  tigt werdn. Dös dyrsagn myr vürbaß niemer.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+           Letzn 5.2: NON MEERER DRÜBER, WIE MYN DAUTTICHTN SCHREIBT
+
+
+      ** Um öbbs Gönderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM. **
+
+  1. Zipf  :!dir   older  :!ls  ,  däßst dyr ayn Auflistung von deinn Verzaich-
+     niss ausherlaasst.  Däßst dyrnaach <EIN> eingöbn muesst, waisst ee schoon.
+
+  2. Suech dyr aynn Dauttichtnam aus, dönn wo s non nit geit, öbbenn POCH.
+
+  3. Ietz demmlt:  :w POCH   (also mit POCH als dönn neuen Dauttichtnam).
+
+  4. Dös speichert ietz de gantze Dautticht, also önn Wimmschainer,  unter dönn
+     Nam POCH. Dös kanst leicht überprüeffen, indem däßst ainfach  :!ls   older
+     :!dir  zipfst und dyrmit deinn Verzaichnissinhalt seghst.
+
+Anmörkung:  Stigst ietz aus n Wimm aus und gännst n aft wider mit   vim POCH  ,
+            naacherd wär dö Dautticht ayn gnaune Aamum von n Schainer dyrselbn,
+            wiest n gspeichert haast.
+
+  5. Ietz verweitert dö Dautticht - fallsst s Fenstl haast - , mit   :!del POCH
+     beziehungsweis bei aynn Ainslgebäu mit   :!rm POCH   .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+            Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN
+
+** Um aynn Tail von dyr Dautticht z speichern, zipf  v [Wolend] :w DAUTTICHT **
+
+  1. Ruck önn Mörkl auf netty dö Zeil daader.
+
+  2. Demmlt  v  und gee mit n Mörkl  auf dönn fümftn Auflistungspunt untet.  Du
+     seghst glei, däß s Gwort vürherghöbt erscheint.
+
+  3. Druck s Zaichen  :  . Ganz unt auf n Bildschirm erscheint  :'<,'>  .
+
+  4. Zipf  w POCH  , wobei s dönn Dauttichtnam POCH  non nit geit.  Vergwiß di,
+     däßst dös  :'<,'>w POCH aau +seghst, ee wennst <EIN> druckst.
+
+  5. Dyr Wimm schreibt de ausgwaltn Zeil  eyn de Dautticht POCH einhin.  Benutz
+     :!dir  older  :!ls  ,  däßst dös überprüeffst. Lösh s fein nit öbbenn! Mir
+     brauchend s nömlich für de naehste Letzn.
+
+Anmörkung:  Druckt myn  v  , ginnt d Sichtisch-Auswal. Du kanst mit n Mörkl um-
+            aynandfarn,  um d Auswal  z veröndern.  Drafter kan myn mit yn aynn
+            Pfemerer  mit dönn Gwort  öbbs machen.  Zo n Beispil löscht  d  dös
+            Gwort.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+               Letzn 5.4: EINLÖSN UND ZAMMENFÜERN VON DAUTTICHTN   
+
+
+    ** Um önn Inhalt von ayner Dautticht einzlösn, zipf  :r DAUTTICHTNAM  **
+
+  1. Sötz önn Mörkl über dö Zeil daader.
+
+OBACHT:  Aft däßst önn Schrit 2  ausgfüert haast,  seghst auf aynmaal  öbbs aus
+         dyr Letzn 5.3.  Bewög di naacherd wider abwärts, dyrmitst dö Letzn wi-
+         derfinddst.
+  2. Ietz  lis  dein Dautticht  POCH ein,  indem däßst d Faudung   :r POCH aus-
+     füerst,  wobei wie gsait POCH  für dönn  von dir  ausgsuechtn Dauttichtnam
+     steet. De einglösne Dautticht werd unterhalb dyr Mörklzeil eingfüegt.
+
+  3. Um zo n Überprüeffen,  ob de Dautticht  aau gwiß einglösn ist,  gee zrugg;
+     und du seghst,  däß s ietz zwo Ausförtigungen  von dyr Letzn 5.3. geit,  s
+     Urniss und de eingfüegte Dauttichtfassung.
+
+Anmörkung:  Du kanst aau  d Ausgaab von aynn Ausserigbefelh einlösn.  Zo n Bei-
+            spil list   :r !ls  d Ausgaab von dyr Faudung  ls   ein und füegt s
+            unterhalb n Mörkl ein.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ZAMMENFASSUNG VON DYR LETZN 5
+
+
+  1. :!FAUDUNG füert aynn ausserignen Befelh aus.
+
+      Daader ayn Öttlych gwänddte Beispiler:
+      (Fenstl)              (Ainsl - Leinsl)
+      :!dir                 :!ls                - listt s Verzaichniss auf.
+      :!del DAUTTICHT       :!rm DAUTTICHT      - verweitert sele Dautticht.
+
+  2. :w DAUTTICHT  speichert de ietzunde Wimmdautticht  unter dönn besagtn Nam.
+
+  3. v  WOLEND  :w DAUTTICHTNAM   schreibt de sichtisch ausgwaltn Zeiln  eyn de
+     Dautticht mit seln Nam.
+
+  4. :r DAUTTICHTNAM  ladt sele Dautticht  und füegt s  unterhalb n Mörklbefand
+     ein.
+
+  5. :r !dir   list d Ausgaab  von dyr Faudung   dir   und füegt s  unterhalb n
+     Mörklbefand ein.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Letzn 6.1: ZEIL ÖFFNEN (»open«)
+
+
+        ** Zipf o, um ayn Zeil unterhalb n Mörkl z öffnen und eyn d **
+                        ** Einfüegartweis z kemmen. **
+
+  1. Bewög önn Mörkl zo dyr eerstn mit ---> angmörktn Zeil unt.
+
+  2. Zipf o (klain),  um ayn Zeil  UNTERHALB n Mörkl z öffnen  und mit dyr Ein-
+     füegartweis weiterztuen.
+
+  3. Ietz zipf ayn Weeng ayn Gwort und druck <ESC>,  um d Einfüegartweis z ver-
+     laassn.
+---> Mit  o  werd dyr Mörkl auf de offene Zeil in dyr Einfüegartweis gsötzt.
+
+  4. Um ayn Zeil OBERHALB n Mörkl aufzmachen,  gib ainfach aynn groosss O statt
+     yn aynn klainen ein. Versuech dös auf dyr untignen Zeil.
+
+---> Öffnet ayn Zeil über derer daader mit  O  ,  wenn dyr Mörkl auf derer Zeil
+     ist.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Letzn 6.2: GWORT ANFÜEGN (»append«)
+
+
+                ** Zipf  a  , um öbbs NAACH n Mörkl einzfüegn. **
+
+  1. Bewög önn Mörkl gan n Anfang von dyr eerstn Üebungszeil mit ---> unt.
+
+  2. Druck  e  , hinst däß dyr Mörkl an n End von  Zei  steet.
+
+  3. Zipf ayn klains  a  , um öbbs NAACH n Mörkl anzfüegn.
+
+  4. Vergöntz dös Wort wie in dyr Zeil drunter.  Druck <ESC>, um d Schreib-Art-
+     weis z verlaassn.
+
+  5. Bewög di mit  e   zo n naehstn ungantzn Wort  und widerhol d Schritt 3 und
+     4.
+
+---> Dö Ze biett ayn Glögn , ayn Gwort in ayner Zeil anzfü.
+---> Dö Zeil biett ayn Glögnet, ayn Gwort in ayner Zeil anzfüegn.
+
+Anmörkung:   a  ,  i  und  A  bringend ainn gleichermaaßn eyn d Einfüegartweis;
+             dyr ainzige Unterschaid ist, WO mit n Einfüegn angfangt werd.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+              Letzn 6.3: AYN ANDERNE WEIS ZO N ERSÖTZN (»replace«)
+
+
+ ** Demmlt ayn groosss  R  , um meerer als wie grad ain Zaichen z ersötzn. **
+
+  1. Bewög önn Mörkl zo dyr eerstn untignen, mit ---> angmörktn Zeil.
+     Gee mit n Mörkl gan n Anfang von n eerstn  xxx  .
+
+  2. Ietz druck  R   und zipf sele Zal,  wo drunter  in dyr zwaittn Zeil steet,
+     yso däß de sel s xxx ersötzt.
+
+  3. Druck <ESC> ,  um d Ersötzungsartweis  z verlaassn.  Du gspannst,  däß dyr
+     Rest von dyr Zeil unveröndert bleibt.
+
+  4. Äfert die Schritt, um dös überblibne xxx z ersötzn.
+
+---> S Zunddn von 123 zo xxx ergibt xxx.
+---> S Zunddn von 123 zo 456 ergibt 579.
+
+Anmörkung: D Ersötzungsartweis ist wie d Einfüegartweis,  aber ayn ieds eindem-
+           mlte Zaichen löscht ayn vorhanddns.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Letzn 6.4: GWORT AAMEN UND EINFÜEGN
+
+ ** Benutz önn Pfemerer  y  , um öbbs z aamen, und  p  , um öbbs einzfüegn. **
+
+  1. Gee zo dyr mit  --->  angmörktn Zeil unt  und sötz önn Mörkl  hinter "a)".
+
+  2. Ginn d Sichtisch-Artweis mit   v   und bewög önn Mörkl gnaun vor "eerste".
+  
+  3. Zipf  y  , um dönn vürherghöbtn Tail z aamen.
+
+  4. Bewög önn Mörkl gan n End von dyr naehstn Zeil:  j$
+
+  5. Demmlt  p  , um dös Gwort einzfüegn, und aft:  a zwaitte <ESC>  .
+
+  6. Benutz d Sichtischartweis, um " Eintrag." auszwaln,  aam s pfelfs  y,  be-
+     wög di gan n End von dyr naehstn Zeil mit  j$   und füeg s Gwort dortn mit
+     p  an.
+
+--->  a) dös ist dyr eerste Eintrag.
+      b)
+
+Anmörkung: Du kanst  y  aau als Pfemerer verwenddn;  yw  aamt ain Wort.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                           Letzn 6.5: SCHALTTER SÖTZN
+
+** Sötz aynn Schaltter yso,  däß ayn Suech older Ersötzung Grooß- und Klain- **
+                            ** schreibung übergeet. **
+                            
+  1. Suech um 'übergee", indem däßst   /übergee   eingibst.
+     Widerhol d Suech ayn Öttlych Maal, indem däßst de Tastn  n  druckst.
+
+  2. Sötz de Zwisl - önn Schaltter - 'ic' (»ignore case«), indem däßst  :set ic
+     eingibst.
+  3. Ietz suech wider um 'übergee' und tue aau wider mit  n  weiter.  Daa fallt
+     dyr auf, däß ietz öbbenn aau  Übergee  und  ÜBERGEE  hergeet.
+
+  4. Sötz de Zwisln 'hlsearch' und 'incsearch' pfelfs:   :set hls is
+
+  5. Widerhol d Suech und bobacht, was ietz gschieght:   /übergee <EIN>
+
+  6. Däßst grooß und klain wider gwon unterscheidst, zipf:   :set noic
+
+Anmörkung:  Mechst de Tröffer niemer vürherghöbt seghn,  gib ein:   :nohlsearch
+Anmörkung:  Sollt klain/grooß bei ayner ainzignen Suech wurst sein,  benutz  \c
+            in n Suechausdruk:   /übergee\c <EIN>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ZAMMENFASSUNG VON DYR LETZN 6
+
+  1. Zipf  o  ,  um ayn Zeil  UNTERHALB n Mörkl z öffnen und d Einfüegartweis z
+                 ginnen.
+     Zipf  O  ,  um ayn Zeil OBERHALB n Mörkl z öffnen.
+
+  2. Zipf  a  ,  um NAACH n Mörkl ayn Gwort einzfüegn.
+     Zipf  A  ,  um ayn Gwort naach n Zeilnend anzfüegn.
+
+  3. D Faudung  e  bringt di gan n End von aynn Wort.
+
+  4. Dyr Pfemerer  y  (»yank«) aamt öbbs,  p  (»put«) füegt dös ein.
+
+  5. Ayn groosss  R  geet eyn d Ersötzungsartweis,  hinst däß myn <ESC> druckt.
+
+  6. D Eingaab von ":set xxx"  sötzt de Zwisl "xxx".  Ayn Öttlych Zwisln seind:
+     'ic' 'ignorecase'   Grooß/klain wurst bei ayner Suech
+     'is' 'incsearch'    Zaig aau schoon ayn Tailüberainstimmung
+     'hls' 'hlsearch'    Höb allsand pässetn Ausdrück vürher
+     Dyr Schaltternam kan in dyr Kurz- older Langform angöbn werdn.
+
+  7. Stöll yn ayner Zwisl "no" voran, däßst ys abschalttst:   :set noic
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Letzn 7.1: AYN HILFGWORT AUFRUEFFEN
+
+
+            ** Nutz dös einbaute Hilfgebäu, de "Betribsanlaittung" **
+
+  Eyn n Wimm  ist ayn ausfüerliche "Gebrauchsanweisung"  einbaut.  Für s Eerste
+  pröblt ainfach ains von dene dreu aus:
+    - Druck d <HILF>-Tastn, wennst öbbenn aine haast.
+    - Druck de Tastn <F1>, fallsst ys haast.
+    - Zipf   :help <EIN>
+
+  Lis di eyn s Hilffenster ein, dyrmitst draufkimmst, wie dös mit dyr Hilf geet.
+  Demmlt  <STRG>w w  , um von ainn Fenster zo n andern zo n Springen.
+  Demmlt   :q <EIN>  , um s Hilffenster zo n Schliessn.
+
+  Du kanst zo so guet wie allssand ayn Hilf finddn,  indem däßst yn dyr Faudung
+  :help   aynn Auerwerd naachstöllst und istig <EIN> nit vergisst.  Pröblt dös:
+
+     :help w
+     :help c_CTRL-D
+     :help insert-index
+     :help user-manual
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Letzn 7.2: ERSTÖLL AYN GIN-SCHRIPF
+
+
+            ** Mutz önn Wimm mit de einbautn Faehigkeitn auf **
+
+  Dyr Wimm besitzt ayn Wösn Schäftungen,  wo über n Urwimm aushingeend, aber de
+  meerern dyrvon  seind in dyr Vorgaab ausgschaltt.  Dyrmitst meerer aus n Wimm
+  ausherholst, erstöllst ayn "vimrc"-Dautticht.
+
+  1. Lög ayn "vimrc"-Dautticht an;  dös geet  ie naach Betribsgebäu  verschidn:
+     :e ~/.vimrc     für s Ainsl
+     :e $VIM/_vimrc  bei n Fenstl
+
+  2. Ietz lis önn Inhalt von dyr Beispil-"vimrc"-Dautticht ein:
+     :r $VIMRUNTIME/vimrc_example.vim
+
+  3. Speichert de Dautticht mit:
+     :w
+
+  4. Bei n naehstn Gin von n Wimm  ist aft d Füegnussvürherhöbung  zuegschaltt.
+     Du kanst dyr allss  eyn dö Dautticht  einhinschreibn,  wasst bständig habn
+     willst. Meerer dyrzue erfarst unter:   :help vimrc-intro
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              Letzn 7.3: VERGÖNTZN
+
+
+               ** Befelhszeilnvergöntzung mit <STRG>d und <TAB> **
+
+  1. Vergwiß di, däß dyr Wimm nit auf n Urwimm-"Glais" fart:   :set nocp
+
+  2. Schaug naach, wölcherne Dauttichtn däß s in n Verzaichniss geit:   :!ls
+     older   :!dir
+  3. Zipf önn Anfang von ayner Faudung:   :e
+
+  4. Druck  <STRG>d  ,  und dyr Wimm zaigt ayn Listn von Faudungen,  wo mit "e"
+     angeend.
+  5. Druck  <TAB>  ,  und dyr Wimm vervollstöndigt  önn Faudungsnam zo ":edit".
+
+  6. Füeg  ayn Laerzaichen  und önn Anfang  von ayner  besteehetn Dautticht an:
+     :edit DAU
+
+  7. Druck <TAB>.  Dyr Wimm vergöntzt önn Nam,  dös haisst,  wenn yr aindeuttig
+     ist.
+Anmörkung:  D Vergöntzung  geit s für aynn Hauffen Faudungen.  Versuech ainfach
+           <STRG>d  und  <TAB>.  Bsunders nützlich ist dös bei   :help  .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ZAMMENFASSUNG VON DYR LETZN 7
+
+
+  1. Zipf  :help   older druck <F1> older <HILF>,  um ayn Hilffenster z öffnen.
+
+  2. Zipf  :help FAUDUNG  , um auf ayn Hilf gan aynn Befelh z kemmen.
+
+  3. Zipf  <STRG>w w  , um zo n andern Fenster z springen.
+
+  4. Zipf  :q  , um s Hilffenster z schliessn.
+
+  5. Erstöll ayn vimrc-Ginschripf  zuer Sicherung von deine Mötzneinstöllungen.
+
+  6. Druck <STRG>d, aft däßst naach  :  mit ayner Faudung angfangt haast,  dyr-
+     mitst mügliche Vergöntzungen anzaigt kriegst.
+     Druck <TAB> für ain Vervollstöndigung yllain.
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Dös wär ietzet s End von n Wimmschainer.  Gangen ist s daa drum,  aynn kurtzn
+  und bündignen Überblik über s Blat  WIMM z lifern,  netty vil gnueg,  däß myn
+  für s Eerste  wirklich öbbs  dyrmit anfangen kan.  Dyrmit ist s aber auf kain
+  Weitn non nit taan;  dyr Wimm haat schoon non vil meerer  auf Lager.  Lis als
+  Naehsts aynmaal s Benutzerhandbuech:   :help user-manual   .
+
+  Zo n Weiterlösn und Weiterlernen wör dös Buech daader zo n Empfelhen:
+    Vim - Vi Improved - von n OUALLINE Steve
+    Verlaag: New Riders
+  Dös ist dös eerste Buech, wo ganz yn n Wimm gwidmt ist, netty dös Grechte für
+  Anfönger. Es haat ayn Wösn Beispiler und aau Bilder drinn.
+  See http://iccf-holland.org/click5.html
+
+  Dös folgete Buech  ist schoon ölter und meerer  über n Urwimm  als wie über n
+  Wimm,  aber aau zo n Empfelhen:   Textbearbeitung mit dem vi-Editor - von dyr
+  LAMB Linda und n ROBBINS Arnold  -  Verlaag O'Reilly  - Buechlaittzal (ISBN):
+  3897211262
+  In dönn Buech  kan myn fast allss finddn,  was myn mit n Urwimm angeen mecht.
+  De söxte Ausgaab enthaltt aau schoon öbbs über n Wimm.
+  Als ietzunde Bezugniss  für d Fassung  6.2  und ayn pfrenge Einfüerung  dient
+  dös folgete Buech:
+    vim ge-packt  von n WOBST Reinhard
+    mitp-Verlaag, Buechlaittzal 3-8266-1425-9
+  Trotz dyr recht pfrengen Darstöllung  ist s durch seine viln nützlichnen Bei-
+  spiler aau für Einsteiger grad grecht.  Probhaeupster und de Beispilschripfer
+  seind zesig zo n Kriegn; see http://iccf-holland.org/click5.html
+
+  Verfasst habnd dönn Schainer dyr PIERCE Michael C. und WARE Robert K. von dyr
+  Kolraader Knappnschuel (Colorado School of Mines). Er beruet auf Entwürff, wo
+  dyr SMITH Charles  von dyr  Kolraader Allschuel  (Colorado State  University)
+  zuer Verfüegung gstöllt haat. Gundpost: bware@mines.colorado.edu.
+  Für n Wimm haat n dyr MOOLENAAR Bram barechtt.
+  De bairische Übersötzung stammt von n HELL Sepp 2009. Sein Gundpostbrächt ist
+  sturmibund@t-online.de 
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  
+
+ 
+
+
+
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/tutor.eo
@@ -0,0 +1,989 @@
+==============================================================================
+=  B o n v e n o n  al  la  I n s t r u i l o  de  V I M  -  Versio 1.7.eo.2 =
+==============================================================================
+
+   Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili
+   por ion klarigi en instruilo kiel i tiu. i tiu instruilo estas
+   fasonita por priskribi sufiajn komandojn, por ke vi kapablu uzi Vim
+   kun sufia facileco.
+
+   La tempo bezonata por plenumi la kurson estas 25-30 minutoj, kaj dependas
+   de kiom da tempo estas uzata por eksperimenti.
+
+   ATENTU:
+   La komandoj en la lecionoj anos la tekston. Kopiu tiun i dosieron
+   por ekzerci vin (se vi lanis "vimtutor", tiam estas jam kopio).
+
+   Gravas memori, ke i tiu instruilo estas organizata por instrui per
+   la uzo. Tio signifas, ke vi devas plenumi la komandojn por bone lerni
+   ilin. Se vi nur legas la tekston, vi forgesos la komandojn!
+
+   Nun, certigu, ke la majuskla baskulo NE estas en reimo majuskla,
+   kaj premu la klavon  j  sufie da fojoj por movi la kursoron, kaj por
+   ke la leciono 1.1 plenigu la ekranon.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Leciono 1.1:  MOVI LA KURSORON
+
+
+  ** Por movi la kursoron, premu la h,j,k,l klavojn kiel montrite. **
+         ^
+         k        Konsilo: La klavo h estas la plej liva kaj movas liven.
+   < h       l >           La klavo l estas la plej dekstra kaj movas dekstren.
+         j                 La klavo j aspektas kiel malsuprena sago.
+         v
+  1. Movu la kursoron sur la ekrano is kiam vi sentas vin komforta.
+
+  2. Premu la klavon (j) is kiam i ripetas.
+     Vi nun scias, kiel movii al la sekvanta leciono
+
+  3. Uzante la malsuprenan klavon, moviu al la leciono 1.2.
+
+RIMARKO: Se vi dubas pri tio, kion vi premis, premu <ESK> por reiri al
+         la normala reimo. Tiam repremu la deziratan komandon.
+
+RIMARKO: La klavoj de la kursoro devus anka funkcii. Sed uzante hjkl,
+         vi kapablos movii pli rapide post kiam vi kutimios.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                           Leciono 1.2:  ELIRI EL VIM
+
+
+  !! RIMARKO: Anta ol plenumi iujn subajn paojn ajn, legu la tutan lecionon!!
+
+  1. Premu la klavon <ESK> (por certigi, ke vi estas en normala reimo).
+
+  2. Tajpu:       :q! <Enenklavo>.
+     Tio eliras el la rekdaktilo, SEN konservi la anojn, kiujn vi faris.
+
+  3. Kiam vi vidas la elinviton, tajpu la komandon kiun vi uzis por eniri
+     en i tiu instruilo. Tio estus:   vimtutor <Enenklavo>
+
+  4. Se vi memoris tiujn paojn kaj sentas vin memfida, plenumu la paojn
+     1 is 3 por eliri kaj reeniri la redaktilon.
+
+RIMARKO: :q! <Enenklavo> eliras sen konservi la anojn, kiujn vi faris.
+         Post kelkaj lecionoj, vi lernos kiel konservi la anojn al dosiero.
+
+  5. Movu la kursoron suben is la leciono 1.3.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   Leciono 1.3:  REDAKTO DE TEKSTO - FORVIO
+
+
+             ** Premu  x  por forvii la signon sub la kursoro. **
+
+  1. Movu la kursoron al la suba linio markita per --->.
+
+  2. Por korekti la erarojn, movu la kursoron is kiam i estas sur la
+     forvienda signo.
+
+  3. Premu la klavon  x  por forvii la nedeziratan signon.
+
+  4. Ripetu paojn 2 is 4 is kiam la frazo estas usta.
+
+
+---> La boovinno saaltiss ssur laa luuno.
+
+  5. Post kiam la linio estas usta, iru al la leciono 1.4
+
+RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Leciono 1.4:  REDAKTO DE TEKSTO - ENMETO
+
+
+                      ** Premu  i  por enmeti tekston. **
+
+  1. Movu la kursoron al la unua suba linio markita per --->.
+
+  2. Por igi la unuan linion sama kiel la dua, movu la kursoron sur la unuan
+     signon post kie la teksto estas enmetenda.
+
+  3. Premu  i  kaj tajpu la bezonatajn aldonojn.
+
+  4. Premu <ESK> kiam la eraroj estas korektitaj por reiri al la normala
+     reimo. Ripetu la paojn 2 is 4 por korekti la frazon.
+
+---> Mank en i linio.
+---> Mankas tekston en i tiu linio.
+
+  5. Kiam vi sentas vin komforta pri enmeto de teksto, moviu al la
+     leciono 1.5.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                  Leciono 1.5:  REDAKTO DE TEKSTO - POSTALDONO
+
+
+                    ** Premu  A  por postaldoni tekston. **
+
+  1. Movu la kursoron al la unua suba linio markita per --->.
+     Ne gravas sur kiu signo estas la kursoro.
+
+  2. Premu majusklan  A  kaj tajpu la bezonatajn aldonojn.
+
+  3. Post kiam la teksto estas aldonita, premu <ESK> por reiri al la normala
+     reimo.
+
+  4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la
+     paojn 2 kaj 3 por korekti la frazon.
+
+---> Mankas teksto el ti
+     Mankas teksto el tiu linio.
+---> Mankas anka teks
+     Mankas anka teksto i tie.
+
+  5 Kiam vi sentas vin komforta pri postaldono de teksto, moviu al la
+    leciono 1.6
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Leciono 1.6:  REDAKTI DOSIERON
+
+                ** Uzu  :wq  por konservi dosieron kaj eliri. **
+
+  !! RIMARKO: Anta ol plenumi iun suban paon ajn, legu la tutan lecionon!!
+
+  1. Eliru el la instruilo kiel vi faris en la leciono 1.2:  :q!
+
+  2. e la elinvito, tajpu i tiun komandon:  vim tutor <Enenklavo>
+     'vim' estas la komando por lani la redaktilon Vim, 'tutor' estas la
+     dosiernomo de la dosiero, kiun vi volas redakti.  Uzu dosieron, kiu
+     aneblas.
+
+  3. Enmetu kaj forviu tekston, kiel vi lernis en la antaaj lecionoj.
+
+  4. Konservu la dosieron kun anoj kaj eliru el Vim per:  :wq  <Enenklavo>
+
+  5. Relanu la instruilon vimtutor kaj moviu suben al la sekvanta resumo.
+
+  6. Post kiam vi legis la suprajn paojn, kaj komprenis ilin: faru ilin.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                Leciono 1 RESUMO
+
+
+  1. La kursoro movias a per la sagoklavoj, a per la klavoj hjkl.
+        h (liven)     j (suben)      k (supren)     l (dekstren)
+
+  2. Por lani Vim el la elinvito, tajpu:  vim DOSIERNOMO <Enenklavo>
+
+  3. Por eliri el Vim, tajpu:  <ESK>  :q! <Enenklavo>  por rezigni la anojn
+
+  4. Por forvii la signojn e la pozicio de la kursoro, tajpu:  x
+
+  5. Por enmeti a postaldoni tekston, tajpu:
+          i  tajpu enmetendan tekston        <ESK>
+             enmetas tekston anta la kursoro
+
+          A  tajpu la postaldonendan tekston <ESK>
+             postaldonas post la kursoro
+
+RIMARKO: Premo de <ESK> iras al la normala reimo, a rezignas la
+         nedeziratan a parte plenumita komando.
+
+Nun darigu al la leciono 2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Leciono 2.1: KOMANDOJ DE FORVIO
+
+
+                      ** Tajpu  dw  por forvii vorton. **
+
+  1. Premu  <ESK>  por certigi, ke vi estas en normala reimo.
+
+  2. Movu la kursoron al la linio markita per --->.
+
+  3. Movu la kursoron al la komenco de vorto, kiu forviendas.
+
+  4. Tajpu   dw   por forvii la vorton.
+
+  RIMARKO: La litero  d  aperos en la lasta linio sur la ekrano kiam vi
+           tajpas in. Vim atendas is kiam vi tajpas  w .  Se vi vidas
+           alian signon ol  d  vi tajpis ion mise; premu  <ESK>  kaj
+           rekomencu.
+
+---> Estas iuj vortoj kiuj Zamenhof ne devus esti akuzativo en i tiu frazo.
+
+  5. Ripetu paojn 3 kaj 4 is kiam la frazo estas usta kaj moviu al la
+     leciono 2.2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leciono 2.2: PLIAJ KOMANDOJ DE FORVIO
+
+
+               ** Tajpu  d$  por forvii la finon de la linio. **
+
+  1. Premu  <ESK>  por certigi, ke vi estas en normala reimo.
+
+  2. Movu la kursoron sur la suban linion markita per --->.
+
+  3. Movu la kursoron e la fino de la usta linio (POST la unua . ).
+
+  4. Tajpu   d$   por forivi is la fino de la linio.
+
+---> Iu tajpis la finon de i tiu linio dufoje. fino de i tiu linio dufoje.
+
+
+  5. Moviu al la leciono 2.3 por kompreni kio okazas.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leciono 2.3: PRI OPERATOROJ KAJ MOVOJ
+
+
+  Multaj komandoj, kiuj anas la tekston, estas faritaj de operatoro kaj
+  movo. La formato de komando de forvio per la operatoro de forvio  d
+  estas kiel sekvas:
+
+       d   movo
+
+  Kie:
+    d      - estas la operatoro de movo
+    movo   - estas tio, pri kio la operatoro operacios (listigita sube)
+
+  Mallonga listo de movoj:
+    w - is la komenco de la sekvanta vorto, krom ia unua signo.
+    e - is la fino de la nuna vorto, krom la lasta signo.
+    $ - is la fino de la linio, krom la lasta signo.
+
+  Do tajpo de   'de'   forvios ekde la kursoro is la fino de la vorto.
+
+RIMARKO: Premo de nur la movo en Normala reimo sen operatoro movos
+         la kursoron kiel specifite.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Leciono 2.4: UZI NOMBRON POR MOVO
+
+             ** Tajpo de nombro anta movo ripetas in lafoje. **
+
+  1. Movu la kursoron e la komenco de la suba linio markita per --->.
+
+  2. Tajpu  2w  por movi la kursoron je du vortoj antaen.
+
+  3. Tajpu  3e  por movi la kursoron e la fino de la tria vorto antaen.
+
+  4. Tajpu  0  (nul) por movii e la komenco de la linio.
+
+
+  5. Ripetu paojn 2 is 3 kun malsamaj nombroj.
+
+---> Tio estas nur linio kun vortoj, kie vi povas movii.
+
+  6. Moviu al la leciono 2.5.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Leciono 2.5: UZI NOMBRON POR FORVII PLI
+
+
+            ** Tajpo de nombro kun operatoro ripetas in lafoje. **
+
+  En la kombinao de la operatoro de forvio, kaj movo kiel menciita
+  i-supre, eblas aldoni nombron anta la movo por pli forvii:
+        d  nombro   movo
+
+  1. Movu la kursoron e la unua MAJUSKLA vorto en la linio markita per --->.
+
+  2. Tajpu  d2w  por forvii la du MAJUSKLAJN vortojn
+
+  3. Ripetu paojn 1 is 2 per malsama nombro por forvii la sinsekvajn
+     MAJUSKLAJN vortojn per unu komando
+
+---> Tiu AB CDE linio FGHI JK LMN OP de vortoj estas Q RS TUV purigita.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Leciono 2.6: OPERACII SUR LINIOJ
+
+
+                   ** Tajpu  dd  por forvii tutan linion. **
+
+  Pro la ofteco de forvio de tuta linio, la verkisto de Vi decidis, ke
+  estus pli facile simple tajpi du d-ojn  por forvii linion.
+
+  1. Movu la kursoron sur la duan linion en la suba frazo.
+  2. Tajpu  dd  por forvii la linion.
+  3. Nun moviu al la kvara linio.
+  4. Tajpu   2dd   por forvii du liniojn.
+
+---> 1)  Rozoj estas ruaj,
+---> 2)  limo estas amuza,
+---> 3)  Violoj estas bluaj,
+---> 4)  Mi havas aton,
+---> 5)  Horlooj diras kioma horo estas,
+---> 6)  Sukero estas dola,
+---> 7)  Kaj tiel vi estas.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Leciono 2.7: LA KOMANDO DE MALFARO
+
+
+ ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. **
+
+  1. Movu la kursoron e la suba linio markita per ---> kaj metu in sur
+     la unuan eraron.
+  2. Tajpu  x  por forvii la unuan nedeziratan signon.
+  3. Nun tajpu  u  por malfari la lastan plenumitan komandon.
+  4. i-foje, riparu iujn erarojn en la linio kaj ia originala stato.
+  5. Nun tajpu majusklan  U  por igi la linion al ia antaa stato.
+  6. Nun tajpu  u  kelkfoje por malfari la  U  kaj antaajn komandojn.
+  7. Nun tajpu CTRL-R (premante la CTRL klavon dum vi premas R) kelkfoje
+     por refari la komandojn (malfari la malfarojn).
+
+---> Koorektii la erarojn sur tiuu i liniio kaj remettu illlin per malfaro.
+
+  8. Tiuj estas tre utilaj komandoj.  Nun moviu al la leciono 2 RESUMO.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                Leciono 2 RESUMO
+
+
+  1. Por forvii ekde la kursoro is la sekvanta vorto, tajpu:    dw
+  2. Por forvii ekde la kursoro is la fino de la linio, tajpu:  d$
+  3. Por forvii tutan linion, tajpu:                             dd
+
+  4. Por ripeti movon, antametu nombron:                         2w
+  5. La formato de ana komando estas:
+           operatoro   [nombro]   movo
+
+     kie:
+       operatoro - estas tio, kio farendas, kiel  d  por forvii
+       [nombro]  - estas opcia nombro por ripeti la movon
+       movo      - movas sur la teksto por operacii, kiel ekzemple  w (vorto),
+                   $ (is fino de linio), ktp.
+
+  6. Por movii al la komenco de la linio, uzu nul:  0
+
+  7. Por malfari antaajn agojn, tajpu:               u (minuskla u)
+     Por malfari iujn anojn sur la linio, tajpu:   U (majuskla U)
+     Por refari la malfarojn, tajpu:                  CTRL-R
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Leciono 3.1 LA KOMANDO DE METO
+
+
+    ** Tajpu  p  por meti tekston forviitan antae post la kursoro. **
+
+  1. Movu la kursoron e la unua ---> suba linio.
+
+  2. Tajpu  dd  por forvii la linion kaj konservi in ene de reistro de Vim.
+
+  3. Movu la kursoron e la linio c), SUPER kie la forviita linio devus esti.
+
+  4. Tajpu  p  por meti la linion sub la kursoron.
+
+  5. Ripetu la paojn 2 is 4 por meti iujn liniojn en la usta ordo.
+
+---> d) u anka vi povas lerni?
+---> b) Violoj estas bluaj,
+---> c) Inteligenteco lerneblas,
+---> a) Rozoj estas ruaj,
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leciono 3.2 LA KOMANDO DE ANSTATAIGO
+
+
+       ** Tajpu  rx  por anstataigi la signon e la kursoro per  x . **
+
+
+  1. Movu la kursoron e la unua suba linio markita per --->.
+
+  2. Movu la kursoron is la unua eraro.
+
+  3. Tajpu  r  kaj la signon, kiu devus esti tie.
+
+  4. Ripetu paojn 2 kaj 3 is kiam la unua linio egalas la duan.
+
+---> Kiem tiu lanio estis tajpita, iu pramis la nauftajn klovojn!
+---> Kiam tiu linio estis tajpita, iu premis la neustajn klavojn!
+
+  5. Nun moviu al la leciono 3.3.
+
+Rimarko: Memoru, ke vi devus lerni per uzo, kaj ne per memorado.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Leciono 3.3 LA OPERATORO DE ANO
+
+
+              ** Por ani is la fino de la vorto, tajpu  ce . **
+
+  1. Movu la kursoron e la unua suba linio markita per --->.
+
+  2. Metu la kursoron sur la  d  en  lduzw
+
+  3. Tajpu  ce  kaj la ustan vorton (en tiu i kazo, tajpu inio ).
+
+  4. Premu <ESK> kaj moviu al la sekvanta signo, kiu bezonas anon.
+
+  5. Ripetu la paojn 3 kaj 4 is kiam la unua frazo egalas la duan.
+
+---> Tiu lduzw havas kelkajn vortojn, kiii bezas anon per la anooto.
+---> Tiu linio havas kelkajn vortojn, kiuj bezonas anon per la anoperatoro.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Leciono 3.4 PLIAJ ANOJ PER c
+
+
+       ** La operatoro de ano uzeblas kun la sama movo kiel forvio. **
+
+  1. La operatoro de ano funkcias sammaniere kiel forvio. La formato estas:
+
+       c    [nombro]   movo
+
+  2. La movoj estas samaj, kiel ekzemple   w (vorto) kaj $ (fino de linio).
+
+  3. Moviu e la unua suba linio markita per --->.
+
+  4. Movu la kursoron al la unua eraro.
+
+  5. Tajpu  c$  kaj tajpu la reston de la linio kiel la dua kaj premu <ESK>.
+
+---> La fino de i tiu linio bezonas helpon por igi in same kiel la dua.
+---> La fino de i tiu linio bezonas korektojn per uzo de la komando  c$
+
+RIMARKO:  Vi povas uzi la klavon Retropao por korekti erarojn dum vi tajpas.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                Leciono 3 RESUMO
+
+
+  1. Por remeti tekston, kiun vi us forviis, tajpu  p. Tio metas la
+     forviitan tekston POST la kursoro (se linio estis forviita, i
+     iros en la linion sub la kursoro).
+
+  2. Por anstataigi la signon sub la kursoro, tajpu  r  kaj tiam la signon
+     kion vi deziras havi tie.
+
+  3. La operatoro de ano ebligas al vi ani ekde la kursoro, is kie
+     la movo iras.  Ekz. tajpu  ce  por ani ekde la kursoro is la fino
+     de la vorto,  c$  por ani is la fino de la linio.
+
+  4. La formato de ano estas:
+
+         c    [nombro]   movo
+
+Nun darigu al la sekvanta leciono.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+              Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO
+
+
+  ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton.
+     Tajpu  G  por movii al linio en la dosiero. **
+
+  RIMARKO: Legu la tutan lecionon anta ol plenumi iun paon ajn!!
+
+  1. Premu la klavon Ctrl kaj premu  g . Oni nomas tion CTRL-G.
+     Mesao aperos e la suba parto de la pao kun la dosiernomo kaj la
+     pozicio en la dosiero. Memoru la numeron de la linio por pao 3.
+
+  RIMARKO: Vi eble vidas la pozicion de la kursoro e la suba dekstra
+           angulo de la ekrano. Tio okazas kiam la agordo 'ruler' estas
+           altita (vidu  :help 'ruler')
+
+  2. Premu  G  por movii e la subo de la dosiero.
+     Tajpu gg  por movii e la komenco de la dosiero.
+
+  3. Tajpu la numeron de la linio kie vi estis kaj poste G .  Tio removos
+     vin al la linio, kie vi estis kiam vi unue premis CTRL-G.
+
+  4. Se vi sentas vin komforta, plenumu paojn 1 is 3.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Leciono 4.2 LA KOMANDO DE SERO
+
+
+             ** Tajpu  /  kaj poste frazon por seri la frazon. **
+
+  1. En normala reimo, tajpu la  /  signon.  Rimarku, ke i kaj la kursoro
+     aperas e la suba parto de la ekrano kiel por la  :  komando.
+
+  2. Nun tajpu 'errarro' <Enenklavo>.
+     Tio estas la vorto, kion vi volas seri.
+
+  3. Por seri la saman frazon denove, simple tajpu  n .
+     Por seri la saman frazon denove en la retrodirekto, tajpu  N .
+
+  4. Por seri frazon en la retrodirekto, uzu  ?  anstata  / .
+
+  5. Por reiri tien, el kie vi venis, premu  CTRL-O (Premu Ctrl kaj o
+     literon o).  Ripetu por pli retroiri.  CTRL-I iras antaen.
+
+---> "errarro" ne estas maniero por literumi eraro; errarro estas eraro.
+
+RIMARKO: Kiam la sero atingas la finon de la dosiero, i daras e la
+         komenco, krom se la agordo 'wrapscan' estas malaltita.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leciono 4.3 SERO DE KONGRUAJ KRAMPOJ
+
+
+                 ** Tajpu  %  por trovi kongruan ), ] a  } **
+
+  1. Poziciu la kursoron sur iun (, [ a { en la linio markita per --->.
+
+  2. Nun tajpu la  %  signon.
+
+  3. La kursoro movias al la kongrua krampo.
+
+  4. Tajpu  %  por movi la kursoron al la alia kongrua krampo.
+
+  5. Movu la kursoron al la alia (, ), [, ], {, } kaj observu tion,
+     kion  %  faras.
+
+---> i tiu ( estas testa linio kun (-oj, [-oj, ]-oj kaj {-oj, }-oj en i. ))
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leciono 4.4 LA KOMANDO DE ANSTATAIGO
+
+
+     ** Tajpu  :s/malnova/nova/g  por anstataigi 'nova' per 'malnova'. **
+
+  1. Movu la kursoron al la suba linio markita per --->.
+
+  2. Tajpu  :s/laa/la <Enenklavo> .  Rimarku, ke la komando anas nur la
+     unuan okazaon de "laa" en la linio.
+
+  3. Nun tajpu  :s/laa/la/g .  Aldono de  g  opcio signifas mallokan
+     anstataigon en la linio. i anas iujn okazaojn de "laa" en la
+     linio.
+
+---> laa plej bona tempo por vidi florojn estas en laa printempo.
+
+  4. Por ani iujn okazaojn de iu ena signo inter du linioj,
+     tajpu    :#,#s/malnova/nova/g   kie #,# estas la numeroj de linioj de la
+                                     intervalo de la linioj kie la anstataigo
+                                     okazos.
+     Tajpu    :%s/malnova/nova/g     por ani iujn okazaojn en la tuta
+                                     dosiero.
+     Tajpu    :s/malnova/nova/gc     por trovi iujn okazaojn en la tuta
+                                     dosiero, kun invitilo u anstataigi
+                                     a ne.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                Leciono 4 RESUMO
+
+  1. CTRL-G  vidigas vian pozicion en la dosiero kaj la staton de la dosiero.
+            G  movas la kursoron al la fino de la dosiero.
+     numero G  movas la kursoron al numero de tiu linio.
+           gg  movas la kursoron al la unua linio.
+
+  2. Tajpo de  /  kaj frazon seras la frazon antaen.
+     Tajpo de  ?  kaj frazon seras la frazon malantaen.
+     Post sero, tajpu n por trovi la sekvantan okazaon en la sama direkto a
+     N por seri en la mala direkto.
+     CTRL-O movas vin al la antaaj pozicioj, CTRL-I al la novaj pozicioj.
+
+  3. Tajpo de  %  kiam la kursoro estas sur (,),[,],{ a } movias al ia
+     kongruo.
+
+  4. Por anstataigi 'nova' en la unua 'malnova' en linio :s/malnova/nova
+     Por anstataigi 'nova' en iuj 'malnova'-oj en linio :s/malnova/nova/g
+     Por anstataigi frazon inter du #-aj linioj          :#,#s/malnova/nova/g
+     Por anstataigi iujn okazaojn en la dosiero        :%s/malnova/nova/g
+     Por demandi konfirmon iu-foje, aldonu 'c'           :%s/malnova/nova/gc
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON
+
+
+     ** Tajpu  :!  sekvata de ekstera komando por plenumi la komandon. **
+
+  1. Tajpu la konatan komandon  :  por pozicii la kursoron e la suba parto
+     de la ekrano. Tio ebligas tajpadon de komando en komanda linio.
+
+  2. Nun tajpu la  !  (krisigno) signon. Tio ebligas al vi plenumi iun
+     eksteran elan komandon ajn.
+
+  3. Ekzemple, tajpu  ls  post ! kaj tajpu <Enenklavo>. Tio listigos la
+     enhavon de la dosierujo, same kiel se vi estis en ela invito.
+     A uzu  :!dir  se ls ne funkcias.
+
+RIMARKO: Eblas plenumi iun eksteran komandon ajn tiamaniere, anka kun
+         argumentoj.
+
+RIMARKO: iuj  :  komandoj devas finii per tajpo de <Enenklavo>
+         Ekde nun, ni ne plu mencios tion.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Leciono 5.2 PLI PRI KONSERVO DE DOSIERO
+
+
+   ** Por konservi la faritajn anojn en la teksto, tajpu  :w DOSIERNOMO. **
+
+  1. Tajpu  !dir  a  !ls  por akiri liston de via dosierujo.
+     Vi jam scias, ke vi devas tajpi <Enenklavo> post tio.
+
+  2. Elektu dosieron, kiu ne jam ekzistas, kiel ekzemple TESTO.
+
+  3. Nun tajpu:   :w TESTO   (kie TESTO estas la elektita dosiernomo)
+
+  4. Tio konservas la tutan dosieron (instruilon de Vim) kun la nomo TESTO.
+     Por kontroli tion, tajpu   :!dir   a   !ls   denove por vidigi vian
+     dosierujon.
+
+RIMARKO: Se vi volus eliri el Vim kaj restartigi in denove per  vim TESTO,
+         la dosiero estus precize same kiel kopio de la instruilo kiam vi
+         konservis in.
+
+  5. Nun forviu la dosieron tajpante (MS-DOS):     :!del TESTO
+                                   a (UNIKSO):     :!rm TESTO
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Leciono 5.3 APARTIGI KONSERVENDAN TESTON
+
+
+    ** Por konservi parton de la dosiero, tajpu   v  movo  :w DOSIERNOMO **
+
+  1. Movu la kursoron al tiu linio.
+
+  2. Premu  v  kaj movu la kursoron al la kvina suba ero.  Rimarku, ke la
+     teksto emfazias.
+
+  3. Premu la  :  signon.  e la fino de la ekrano  :'<,'>  aperos.
+
+  4. Tajpu  w TESTO  , kie TESTO estas dosiernomo, kiu ne jam ekzistas.
+     Kontrolu, ke vi vidas  :'<,'>w TESTO  anta premi <Enenklavo>.
+
+  5. Vim konservos la apartigitajn liniojn al la dosiero TESTO.  Uzu  :dir
+     a  :!ls  por vidigi in.  Ne forviu in.  Ni uzos in en la sekvanta
+     leciono.
+
+RIMARKO: Premo de  v  komencas Viduman apartigon.  Vi povas movi la kursoron
+         por pligrandigi a malpligrandigi la apartigon. Tiam vi povas uzi
+         operatoron por plenumi ion kun la teksto.  Ekzemple,  d  forvias
+         la tekston.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   Leciono 5.4 AKIRI KAJ KUNFANDI DOSIEROJN
+
+
+         ** Por enmeti la enhavon de dosiero, tajpu  :r DOSIERNOMON **
+
+  1. Movu la kursoron us super i tiu linio.
+
+RIMARKO: Post plenumo de pao 2, vi vidos tekston el la leciono 5.3.  Tiam
+         moviu SUBEN por vidi tiun lecionon denove.
+
+  2. Nun akiru vian dosieron TESTO uzante la komandon   :r TESTO   kie TESTO
+     estas la nomo de la dosiero, kiun vi uzis.
+     La dosiero, kion vi akiras, estas metita sub la linio de la kursoro.
+
+  3. Por kontroli, u la dosiero akiriis, retromovu la kursoron kaj rimarku,
+     ke estas nun du kopioj de la leciono 5.3, la originala kaj la versio mem
+     de la dosiero.
+
+RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple,
+        :r !ls  legas la eliron de la komando ls kaj metas in sub la
+        kursoron.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                Leciono 5 RESUMO
+
+
+  1.  :!komando  plenumas eksteran komandon.
+
+      Iuj utilaj ekzemploj estas:
+        (MS-DOS)           (UNIKSO)
+         :!dir              :!ls            - listigas dosierujon
+         :!del DOSIERNOMO   :!rm DOSIERNOMO - forvias la dosieron DOSIERNOMO
+
+  2.  :w DOSIERNOMO  konservas la nunan dosieron de Vim al disko kun la
+      nomo DOSIERNOMO.
+
+  3.  v  movo  :w DOSIERNOMO  konservas la Viduman apartigon de linioj en
+      dosiero DOSIERNOMO.
+
+  4. :r DOSIERNOMO  akiras la dosieron DOSIERNOMO el la disko kaj metas
+     in sub la pozicion de la kursoro.
+
+  5. :r !dir  legas la eligon de la komando dir kaj metas in sub la
+     pozicion de la kursoro.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Leciono 6.1 LA KOMANDO DE MALFERMO
+
+
+  ** Tajpu o por malfermi linion sub la kursoro kaj eniri Enmetan reimon. **
+
+  1. Movu la kursoron al la suba linio markita per --->.
+
+  2. Tajpu la minusklan literon  o  por malfermi linion SUB la kursoro kaj
+     eniri la Enmetan reimon.
+
+  3. Nun tajpu tekston kaj premu <ESK> por eliri la Enmetan reimon.
+
+---> Post tajpo de  o  la kursoro movias al la malfermata linio en
+     Enmeta reimo.
+
+  4. Por malfermi linion SUPER la kursoro, nur tajpu majusklan  O  ,
+     anstata minusklan  o.  Provu tion per la suba linio.
+
+---> Malfermu linion SUPER tiu tajpante O dum la kursoro estas sur tiu linio.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Leciono 6.2 LA KOMANDO DE POSTALDONO
+
+
+                  ** Tajpu  a  por enmeti POST la kursoro. **
+
+  1. Movu la kursoron e la komenco de la linio markita per --->.
+
+  2. Premu  e  is kiam la kursoro estas e la fino de  li.
+
+  3. Tajpu  a  (minuskle) por aldoni tekston POST la kursoro.
+
+  4. Kompletigu la vorton same kiel la linio sub i.  Premu <ESK> por
+     eliri la Enmetan reimon.
+
+  5. Uzu  e  por movii al la sekvanta nekompleta vorto kaj ripetu
+     paojn 3 kaj 4.
+
+---> i tiu lin ebligos vin ekz vin postal tekston al linio.
+---> i tiu linio ebligos vin ekzerci vin postaldoni tekston al linio.
+
+RIMARKO: iu  a, i kaj A  iras al la sama Enmeta reimo, la nura malsamo
+         estas tie, kie la signoj estas enmetitaj.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Leciono 6.3 ALIA MANIERO POR ANSTATAIGI
+
+
+          ** Tajpu majusklan  R  por anstataigi pli ol unu signo. **
+
+  1. Movu la kursoron al la unua suba linio markita per --->.  Movu la
+     kursoron al la komenco de la unua  xxx .
+
+  2. Nun premu  R  kaj tajpu la nombron sub i en la dua linio, por ke i
+     anstataigu la xxx .
+
+  3. Premu <ESK> por foriri la Anstataigan reimon. Rimarku, ke la cetera
+     parto de la linio restas neanata.
+
+  4. Ripetu la paojn por anstataigi la restantajn xxx.
+
+---> Aldono de 123 al xxx donas al vi xxx.
+---> Aldono de 123 al 456 donas al vi 579.
+
+RIMARKO: Anstataiga reimo estas same kiel Enmeta reimo, sed iu signo
+         tajpita forvias ekzistan signon.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Leciono 6.4 KOPII KAJ ALGLUI TEKSTON
+
+
+     ** Uzu la  y  operatoron por kopii tekston, kaj  p  por alglui in **
+
+
+  1. Iru al la linio markita per ---> sube kaj poziciu la kursoron post "a)".
+
+  2. Komencu la Viduman reimon per  v  kaj movu la kursoron us anta "unua".
+
+  3. Tajpu  y  por kopii la emfazitan tekston.
+
+  4. Movu la kursoron e la fino de la linio:  j$
+
+  5. Tajpu  p  por alglui la tekston.  Tiam tajpu:  a dua <ESK> .
+
+  6. Uzu Viduman reimon por apartigi " ero.", kopiu in per  y , moviu
+     e la fino de la sekvanta linio per  j$  kaj algluu la tekston tie
+     per  p .
+
+---> a) tio estas la unua ero.
+     b)
+
+RIMARKO: vi povas anka uzi  y  kiel operatoro;  yw  kopias unu vorton.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                           Leciono 6.5 AGORDI OPCION
+
+
+         ** Agordu opcion por ke sero a anstataigo ignoru usklecon **
+
+  1. Seru 'ignori' per tajpo de /ignori <Enenklavo>
+     Ripetu plurfoje premante  n .
+
+  2. altu la opcion 'ic' (ignori usklecon) per:   :set ic
+
+  3. Nun seru 'ignori' denove premante  n
+     Rimarku, ke Ignori kaj IGNORI estas nun troveblas.
+
+  4. altu la opciojn 'hlsearch' kaj 'incsearch':   :set hls is
+
+  5. Nun retajpu la seran komandon kaj vidu kio okazas:  /ignore <Enenklavo>
+
+  6. Por malalti ignoron de uskleco:  :set noic
+
+RIMARKO: Por forigi emfazon de kongruo, tajpu:   :nohlsearch
+RIMARKO: Se vi deziras ignori usklecon por nur unu sera komando, uzu  \c
+         en la frazo:  /ignore\c  <Enenklavo>
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                Leciono 6 RESUMO
+
+  1. Tajpu  o  por malfermi linion SUB la kursoro kaj eki en Enmeta reimo.
+  1. Tajpu  O  por malfermi linion SUPER la kursoro.
+
+  2. Tajpu  a  por enmeti tekston POST la kursoro.
+     Tajpu  A  por enmeti tekston post la fino de la linio.
+
+  3. La  e  komando movas la kursoron al la fino de vorto.
+
+  4. la  y  operatoro kopias tekston,  p  algluas in.
+
+  5. Tajpo de majuskla  R  eniras la Anstataigan reimon is kiam
+     <ESK> estas premita.
+
+  6. Tajpo de ":set xxx" altas la opcion "xxx".  Iuj opcioj estas:
+        'ic' 'ignorecase'     ignori usklecon dum sero
+        'is' 'incsearch'      montru partan kongruon dum sero
+        'hls' 'hlsearch'      emfazas iujn kongruajn frazojn
+     Vi povas uzi a la longan, a la mallongan nomon de opcio.
+
+  7. Antaaldonu "no" por malalti la opcion:  :set noic
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                            Leciono 7.1 AKIRI HELPON
+
+
+                          ** Uzu la helpan sistemon **
+
+  Vim havas ampleksan helpan sistemon. Por komencii, provu unu el la tiuj
+  tri:
+        - premu la klavon <HELPO> (se vi havas in)
+        - premu la klavon <F1> (se vi havas in)
+        - tajpu   :help <Enenklavo>
+
+  Legu la tekston en la helpfenestro por trovi kiel helpo funkcias.
+  Tajpu  CTRL-W CTRL-W      por salti de unu fenestro al la alia.
+  Tajpu    :q <Enenklavo>   por fermi la helpan fenestron.
+
+  Vi povas trovi helpon pri io ajn aldonante argumenton al la komando
+  ":help".  Provu tiujn (ne forgesu premi <Enenklavo>):
+
+        :help w
+        :help c_CTRL-D
+        :help insert-index
+        :help user-manual
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Leciono 7.2 KREI STARTAN SKRIPTON
+
+
+                         ** Ebligu kapablojn de Vim **
+
+  Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defalte
+  malaltitaj.  Por ekuzi la kapablojn, vi devas krei dosieron "vimrc.
+
+  1. Ekredaktu la dosieron "vimrc".  Tio dependas de via sistemo:
+      :e ~/.vimrc          por Unikso
+      :e $VIM/_vimrc       por MS-Vindozo
+
+  2. Nun legu la enhavon de la ekzempla "vimrc"
+      :r $VIMRUNTIME/vimrc_example.vim
+
+  3. Konservu la dosieron per:
+      :w
+
+  La sekvantan fojon, kiam vi lanas Vim, i uzos sintaksan emfazon.
+  Vi povas aldoni iujn viajn preferatajn agordojn al tiu dosiero "vimrc".
+  Por pli da informoj, tajpu  :help vimrc-intro
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                             Leciono 7.3 KOMPLETIGO
+
+
+             ** Kompletigo de komanda linio per CTRL-D kaj <TAB> **
+
+  1. Certigu ke Vim estas en kongrua reimo:  :set nocp
+
+  2. Rigardu tiujn dosierojn, kiuj ekzistas en la dosierujo:  :!ls  a  :!dir
+
+  3. Tajpu la komencon de komando:  :e
+
+  4. Premu  CTRL-D  kaj Vim montros liston de komandoj, kiuj komencas per "e".
+
+  5. Premu <TAB>  kaj Vim kompletigos la nomon de la komando al ":edit".
+
+  6. Nun aldonu spaceton kaj la komencon de ekzistanta nomo:  :edit DOSI
+
+  7. Premu <TAB>.  Vim kompletigos la nomon (se i estas unika)
+
+RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj
+         <TAB>.  Estas aparte utila por  :help .
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                Leciono 7 RESUMO
+
+
+  1. Tajpu  :help  a premu <F1> a <Helpo>  por malfermi helpan fenestron.
+
+  2. Tajpu  :help kmd  por trovi helpon pri  kmd.
+
+  3. Tajpu  CTRL-W CTRL-W  por salti al alia fenestro.
+
+  4. Tajpu  :q  to fermi la helpan fenestron.
+
+  5. Kreu komencan skripton vimrc por konservi viajn agordojn.
+
+  6. Kiam vi tajpas  :  komandon, premu CTRL-D por vidi iujn kompleteblojn.
+     Premu <TAB> por uzi unu kompletigon.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Tio konkludas la instruilon de Vim.  i celis doni mallongan superrigardon
+  de la redaktilo Vim, nur tio kio sufias por ebligi al vi facilan uzon de
+  la redaktilo. Estas nepre nekompleta, ar Vim havas multajn multajn pliajn
+  komandojn. Legu la manlibron: ":help user-manual".
+
+  Tiu instruilo estis verkita de Michael C. Pierce kaj Robert K. Ware,
+  el la Koloradia Lernejo de Minejoj (Colorado School of Mines) uzante
+  ideojn provizitajn de Charles Smith el la Stata Universitato de Koloradio
+  (Colorado State University)
+
+  Retpoto: bware@mines.colorado.edu.
+
+  Modifita por Vim de Bram Moolenaar.
+
+  Tradukita en Esperanto de Dominique Pell, 2008-04-01
+  Retpoto: dominique.pelle@gmail.com
+  Lasta ano: 2009-02-01
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.eo.utf-8
+++ b/runtime/tutor/tutor.eo.utf-8
@@ -1,5 +1,5 @@
 ==============================================================================
-=   B o n v e n o n  al  la  I n s t r u i l o  de  V I M  -  Versio 1.0.eo  =
+=  B o n v e n o n  al  la  I n s t r u i l o  de  V I M  -  Versio 1.7.eo.2 =
 ==============================================================================
 
    Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili
@@ -54,15 +54,15 @@ RIMARKO: La klavoj de la kursoro devus ankaŭ funkcii. Sed uzante hjkl,
   1. Premu la klavon <ESK> (por certigi, ke vi estas en normala reĝimo).
 
   2. Tajpu:       :q! <Enenklavo>.
-     Tio eliras el la rekdaktilo, SEN konservi la ŝanĝojn, kion vi faris.
+     Tio eliras el la rekdaktilo, SEN konservi la ŝanĝojn, kiujn vi faris.
 
-  3. Kiam vi vidas la ŝelinviton, tajpu la komandon kiun vi uzis por eniri 
+  3. Kiam vi vidas la ŝelinviton, tajpu la komandon kiun vi uzis por eniri
      en ĉi tiu instruilo. Tio estus:   vimtutor <Enenklavo>
 
   4. Se vi memoris tiujn paŝojn kaj sentas vin memfida, plenumu la paŝojn
      1 ĝis 3 por eliri kaj reeniri la redaktilon.
 
-RIMARKO: :q! <Enenklavo> eliras sen konservi la ŝanĝojn kion vi faris. 
+RIMARKO: :q! <Enenklavo> eliras sen konservi la ŝanĝojn, kiujn vi faris.
          Post kelkaj lecionoj, vi lernos kiel konservi la ŝanĝojn al dosiero.
 
   5. Movu la kursoron suben ĝis la leciono 1.3.
@@ -79,7 +79,7 @@ RIMARKO: :q! <Enenklavo> eliras sen konservi la ŝanĝojn kion vi faris.
      forviŝenda signo.
 
   3. Premu la klavon  x  por forviŝi la nedeziratan signon.
- 
+
   4. Ripetu paŝojn 2 ĝis 4 ĝis kiam la frazo estas ĝusta.
 
 
@@ -99,7 +99,7 @@ RIMARKO: Trairante la instruilon, ne pro
 
   1. Movu la kursoron al la unua suba linio markita per --->.
 
-  2. Por igi la unuan linion sama ol la dua, movu la kursoron sur la unuan
+  2. Por igi la unuan linion sama kiel la dua, movu la kursoron sur la unuan
      signon post kie la teksto estas enmetenda.
 
   3. Premu  i  kaj tajpu la bezonatajn aldonojn.
@@ -124,12 +124,12 @@ RIMARKO: Trairante la instruilon, ne pro
   1. Movu la kursoron al la unua suba linio markita per --->.
      Ne gravas sur kiu signo estas la kursoro.
 
-  2. Premu  A  kaj tajpu la bezonatajn aldonojn.
+  2. Premu majusklan  A  kaj tajpu la bezonatajn aldonojn.
 
   3. Post kiam la teksto estas aldonita, premu <ESK> por reiri al la normala
      reĝimo.
 
-  4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la 
+  4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la
      paŝojn 2 kaj 3 por korekti la frazon.
 
 ---> Mankas teksto el ti
@@ -157,7 +157,7 @@ RIMARKO: Trairante la instruilon, ne pro
 
   3. Enmetu kaj forviŝu tekston, kiel vi lernis en la antaŭaj lecionoj.
 
-  4. Konservu la dosieron kun ŝanĝoj kaj eliru el Vim per:  :qw  <Enenklavo>
+  4. Konservu la dosieron kun ŝanĝoj kaj eliru el Vim per:  :wq  <Enenklavo>
 
   5. Relanĉu la instruilon vimtutor kaj moviĝu suben al la sekvanta resumo.
 
@@ -167,6 +167,7 @@ RIMARKO: Trairante la instruilon, ne pro
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                 Leciono 1 RESUMO
 
+
   1. La kursoro moviĝas aŭ per la sagoklavoj, aŭ per la klavoj hjkl.
         h (liven)     j (suben)      k (supren)     l (dekstren)
 
@@ -217,6 +218,7 @@ Nun daŭrigu al la leciono 2.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      Leciono 2.2: PLIAJ KOMANDOJ DE FORVIŜO
 
+
                ** Tajpu  d$  por forviŝi la finon de la linio. **
 
   1. Premu  <ESK>  por certigi, ke vi estas en normala reĝimo.
@@ -249,7 +251,7 @@ Nun daŭrigu al la leciono 2.
     movo   - estas tio, pri kio la operatoro operacios (listigita sube)
 
   Mallonga listo de movoj:
-    w - ĝis la komenco de la sekvanta vorto, krom ĝian unuan signon.
+    w - ĝis la komenco de la sekvanta vorto, krom ĝia unua signo.
     e - ĝis la fino de la nuna vorto, krom la lasta signo.
     $ - ĝis la fino de la linio, krom la lasta signo.
 
@@ -283,6 +285,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     Leciono 2.5: UZI NOMBRON POR FORVIŜI PLI
 
+
             ** Tajpo de nombro kun operatoro ripetas ĝin laŭfoje. **
 
   En la kombinaĵo de la operatoro de forviŝo, kaj movo kiel menciita
@@ -302,6 +305,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     Leciono 2.6: OPERACII SUR LINIOJ
 
+
                    ** Tajpu  dd  por forviŝi tutan linion. **
 
   Pro la ofteco de forviŝo de tuta linio, la verkisto de Vi decidis, ke
@@ -324,6 +328,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        Leciono 2.7: LA KOMANDO DE MALFARO
 
+
  ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. **
 
   1. Movu la kursoron ĉe la suba linio markita per ---> kaj metu ĝin sur
@@ -344,6 +349,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                 Leciono 2 RESUMO
 
+
   1. Por forviŝi ekde la kursoro ĝis la sekvanta vorto, tajpu:    dw
   2. Por forviŝi ekde la kursoro ĝis la fino de la linio, tajpu:  d$
   3. Por forviŝi tutan linion, tajpu:                             dd
@@ -368,6 +374,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          Leciono 3.1 LA KOMANDO DE METO
 
+
     ** Tajpu  p  por meti tekston forviŝitan antaŭe post la kursoro. **
 
   1. Movu la kursoron ĉe la unua ---> suba linio.
@@ -389,6 +396,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      Leciono 3.2 LA KOMANDO DE ANSTATAŬIGO
 
+
        ** Tajpu  rx  por anstataŭigi la signon ĉe la kursoro per  x . **
 
 
@@ -402,7 +410,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos
 
 ---> Kiem tiu lanio estis tajpita, iu pramis la naĝuftajn klovojn!
 ---> Kiam tiu linio estis tajpita, iu premis la neĝustajn klavojn!
-  
+
   5. Nun moviĝu al la leciono 3.3.
 
 Rimarko: Memoru, ke vi devus lerni per uzo, kaj ne per memorado.
@@ -411,6 +419,7 @@ Rimarko: Memoru, ke vi devus lerni per u
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        Leciono 3.3 LA OPERATORO DE ŜANĜO
 
+
               ** Por ŝanĝi ĝis la fino de la vorto, tajpu  ce . **
 
   1. Movu la kursoron ĉe la unua suba linio markita per --->.
@@ -430,7 +439,8 @@ Rimarko: Memoru, ke vi devus lerni per u
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          Leciono 3.4 PLIAJ ŜANĜOJ PER c
 
-        ** La operatoro de ŝanĝo uzeblas kun la sama movo ol forviŝo. **
+
+       ** La operatoro de ŝanĝo uzeblas kun la sama movo kiel forviŝo. **
 
   1. La operatoro de ŝanĝo funkcias sammaniere kiel forviŝo. La formato estas:
 
@@ -453,6 +463,7 @@ RIMARKO:  Vi povas uzi la klavon Retropaŝo por korekti erarojn dum vi tajpas.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                 Leciono 3 RESUMO
 
+
   1. Por remeti tekston, kiun vi ĵus forviŝis, tajpu  p. Tio metas la
      forviŝitan tekston POST la kursoro (se linio estis forviŝita, ĝi
      iros en la linion sub la kursoro).
@@ -474,6 +485,7 @@ Nun daŭrigu al la sekvanta leciono.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO
 
+
   ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton.
      Tajpu  G  por moviĝi al linio en la dosiero. **
 
@@ -483,7 +495,7 @@ Nun daŭrigu al la sekvanta leciono.
      Mesaĝo aperos ĉe la suba parto de la paĝo kun la dosiernomo kaj la
      pozicio en la dosiero. Memoru la numeron de la linio por paŝo 3.
 
-  RIMARKO: Vi eble vidas la pozicion de la kursoro ĉe la suba dekstra 
+  RIMARKO: Vi eble vidas la pozicion de la kursoro ĉe la suba dekstra
            angulo de la ekrano. Tio okazas kiam la agordo 'ruler' estas
            ŝaltita (vidu  :help 'ruler')
 
@@ -499,6 +511,7 @@ Nun daŭrigu al la sekvanta leciono.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                         Leciono 4.2 LA KOMANDO DE SERĈO
 
+
              ** Tajpu  /  kaj poste frazon por serĉi la frazon. **
 
   1. En normala reĝimo, tajpu la  /  signon.  Rimarku, ke ĝi kaj la kursoro
@@ -524,7 +537,8 @@ RIMARKO: Kiam la serĉo atingas la finon de la dosiero, ĝi daŭras ĉe la
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      Leciono 4.3 SERĈO DE KONGRUAJ KRAMPOJ
 
-                 ** Tajpu  %  por trovi kongruan ), [ aŭ  } **
+
+                 ** Tajpu  %  por trovi kongruan ), ] aŭ  } **
 
   1. Poziciu la kursoron sur iun (, [ aŭ { en la linio markita per --->.
 
@@ -548,7 +562,7 @@ RIMARKO: Kiam la serĉo atingas la finon de la dosiero, ĝi daŭras ĉe la
 
   1. Movu la kursoron al la suba linio markita per --->.
 
-  2. Tajpu  :s/laa/la <Enenklavo> .  Rimarku, ke la komando ŝanĝas nur la 
+  2. Tajpu  :s/laa/la <Enenklavo> .  Rimarku, ke la komando ŝanĝas nur la
      unuan okazaĵon de "laa" en la linio.
 
   3. Nun tajpu  :s/laa/la/g .  Aldono de  g  opcio signifas mallokan
@@ -573,7 +587,7 @@ RIMARKO: Kiam la serĉo atingas la finon de la dosiero, ĝi daŭras ĉe la
 
   1. CTRL-G  vidigas vian pozicion en la dosiero kaj la staton de la dosiero.
             G  movas la kursoron al la fino de la dosiero.
-     numero G  movas la kursoron al tiu numero de linio.
+     numero G  movas la kursoron al numero de tiu linio.
            gg  movas la kursoron al la unua linio.
 
   2. Tajpo de  /  kaj frazon serĉas la frazon antaŭen.
@@ -595,6 +609,7 @@ RIMARKO: Kiam la serĉo atingas la finon de la dosiero, ĝi daŭras ĉe la
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON
 
+
      ** Tajpu  :!  sekvata de ekstera komando por plenumi la komandon. **
 
   1. Tajpu la konatan komandon  :  por pozicii la kursoron ĉe la suba parto
@@ -603,7 +618,7 @@ RIMARKO: Kiam la serĉo atingas la finon de la dosiero, ĝi daŭras ĉe la
   2. Nun tajpu la  !  (krisigno) signon. Tio ebligas al vi plenumi iun
      eksteran ŝelan komandon ajn.
 
-  3. Ekzemple, tajpu  ls  post ! kaj tajpu <Enenklavo>. Tio listigos la 
+  3. Ekzemple, tajpu  ls  post ! kaj tajpu <Enenklavo>. Tio listigos la
      enhavon de la dosierujo, same kiel se vi estis en ŝela invito.
      Aŭ uzu  :!dir  se ls ne funkcias.
 
@@ -617,6 +632,7 @@ RIMARKO: Ĉiuj  :  komandoj devas finiĝi per tajpo de <Enenklavo>
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     Leciono 5.2 PLI PRI KONSERVO DE DOSIERO
 
+
    ** Por konservi la faritajn ŝanĝojn en la teksto, tajpu  :w DOSIERNOMO. **
 
   1. Tajpu  !dir  aŭ  !ls  por akiri liston de via dosierujo.
@@ -626,7 +642,7 @@ RIMARKO: Ĉiuj  :  komandoj devas finiĝi per tajpo de <Enenklavo>
 
   3. Nun tajpu:   :w TESTO   (kie TESTO estas la elektita dosiernomo)
 
-  4. Tio konservas la tutan dosieron (instruilo de Vim) per la nomo TESTO.
+  4. Tio konservas la tutan dosieron (instruilon de Vim) kun la nomo TESTO.
      Por kontroli tion, tajpu   :!dir   aŭ   !ls   denove por vidigi vian
      dosierujon.
 
@@ -641,11 +657,12 @@ RIMARKO: Se vi volus eliri el Vim kaj restartigi ĝin denove per  vim TESTO,
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     Leciono 5.3 APARTIGI KONSERVENDAN TESTON
 
+
     ** Por konservi parton de la dosiero, tajpu   v  movo  :w DOSIERNOMO **
 
   1. Movu la kursoron al tiu linio.
-  
-  2. Premu  v  kaj movu la kursoron al la kvina suba ero.  Rimarku, ke la 
+
+  2. Premu  v  kaj movu la kursoron al la kvina suba ero.  Rimarku, ke la
      teksto emfaziĝas.
 
   3. Premu la  :  signon.  Ĉe la fino de la ekrano  :'<,'>  aperos.
@@ -654,10 +671,10 @@ RIMARKO: Se vi volus eliri el Vim kaj restartigi ĝin denove per  vim TESTO,
      Kontrolu, ke vi vidas  :'<,'>w TESTO  antaŭ premi <Enenklavo>.
 
   5. Vim konservos la apartigitajn liniojn al la dosiero TESTO.  Uzu  :dir
-     aŭ  :!ls  por vidigi ĝin.  Ne jam forviŝu ĝin.  Ni uzos ĝin en la
-     sekvanta leciono.
+     aŭ  :!ls  por vidigi ĝin.  Ne forviŝu ĝin.  Ni uzos ĝin en la sekvanta
+     leciono.
 
-RIMARKO: PREMO DE  v  komencas Viduman apartigon.  Vi povas movi la kursoron
+RIMARKO: Premo de  v  komencas Viduman apartigon.  Vi povas movi la kursoron
          por pligrandigi aŭ malpligrandigi la apartigon. Tiam vi povas uzi
          operatoron por plenumi ion kun la teksto.  Ekzemple,  d  forviŝas
          la tekston.
@@ -682,7 +699,7 @@ RIMARKO: Post plenumo de paŝo 2, vi vidos tekston el la leciono 5.3.  Tiam
      ke estas nun du kopioj de la leciono 5.3, la originala kaj la versio mem
      de la dosiero.
 
-RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, 
+RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple,
         :r !ls  legas la eliron de la komando ls kaj metas ĝin sub la
         kursoron.
 
@@ -701,7 +718,7 @@ RIMARKO: Vi nun povas legi la eliron de 
   2.  :w DOSIERNOMO  konservas la nunan dosieron de Vim al disko kun la
       nomo DOSIERNOMO.
 
-  3.  v  movo  :w DOSIERNOMO  konservas la Viduman apartigo de linioj en
+  3.  v  movo  :w DOSIERNOMO  konservas la Viduman apartigon de linioj en
       dosiero DOSIERNOMO.
 
   4. :r DOSIERNOMO  akiras la dosieron DOSIERNOMO el la disko kaj metas
@@ -748,7 +765,7 @@ RIMARKO: Vi nun povas legi la eliron de 
   4. Kompletigu la vorton same kiel la linio sub ĝi.  Premu <ESK> por
      eliri la Enmetan reĝimon.
 
-  5. Uzu  e  por moviĝi al la sekvanta nekompleta vorto kaj ripetu   
+  5. Uzu  e  por moviĝi al la sekvanta nekompleta vorto kaj ripetu
      paŝojn 3 kaj 4.
 
 ---> Ĉi tiu lin ebligos vin ekz vin postal tekston al linio.
@@ -804,7 +821,7 @@ RIMARKO: Anstataŭiga reĝimo estas same kiel Enmeta reĝimo, sed ĉiu signo
      per  p .
 
 ---> a) tio estas la unua ero.
-     b) 
+     b)
 
 RIMARKO: vi povas ankaŭ uzi  y  kiel operatoro;  yw  kopias unu vorton.
 
@@ -812,7 +829,8 @@ RIMARKO: vi povas ankaŭ uzi  y  kiel operatoro;  yw  kopias unu vorton.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            Leciono 6.5 AGORDI OPCION
 
-         ** Agordu opcion por ke serĉo aŭ anstataŭgo ignoru usklecon **
+
+         ** Agordu opcion por ke serĉo aŭ anstataŭigo ignoru usklecon **
 
   1. Serĉu 'ignori' per tajpo de /ignori <Enenklavo>
      Ripetu plurfoje premante  n .
@@ -857,9 +875,11 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu  \c
 
   7. Antaŭaldonu "no" por malŝalti la opcion:  :set noic
 
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             Leciono 7.1 AKIRI HELPON
 
+
                           ** Uzu la helpan sistemon **
 
   Vim havas ampleksan helpan sistemon. Por komenciĝi, provu unu el la tiuj
@@ -884,22 +904,23 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu  \c
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        Leciono 7.2 KREI STARTAN SKRIPTON
 
-                          ** Ebligu eblecojn de Vim **
+
+                         ** Ebligu kapablojn de Vim **
 
-  Vim havas multe pli da eblecoj ol Vi, sed la plej multaj estas defaŭlte
-  malŝaltitaj.  Por ekuzi la eblecojn, vi devas krei dosieron "vimrc.
+  Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defaŭlte
+  malŝaltitaj.  Por ekuzi la kapablojn, vi devas krei dosieron "vimrc.
 
   1. Ekredaktu la dosieron "vimrc".  Tio dependas de via sistemo:
       :e ~/.vimrc          por Unikso
       :e $VIM/_vimrc       por MS-Vindozo
 
-  2. Nun legu la enhavon de la ekzempla "vimrc" 
+  2. Nun legu la enhavon de la ekzempla "vimrc"
       :r $VIMRUNTIME/vimrc_example.vim
 
   3. Konservu la dosieron per:
       :w
 
-  La sekvanta fojo, kiam vi lanĉas Vim, ĝi uzos sintaksan emfazon.
+  La sekvantan fojon, kiam vi lanĉas Vim, ĝi uzos sintaksan emfazon.
   Vi povas aldoni ĉiujn viajn preferatajn agordojn al tiu dosiero "vimrc".
   Por pli da informoj, tajpu  :help vimrc-intro
 
@@ -907,6 +928,7 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu  \c
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                              Leciono 7.3 KOMPLETIGO
 
+
              ** Kompletigo de komanda linio per CTRL-D kaj <TAB> **
 
   1. Certigu ke Vim estas en kongrua reĝimo:  :set nocp
@@ -962,6 +984,6 @@ RIMARKO: Kompletigo funkcias por multaj 
 
   Tradukita en Esperanto de Dominique Pellé, 2008-04-01
   Retpoŝto: dominique.pelle@gmail.com
-  Lasta ŝanĝo: 2008-04-02
+  Lasta ŝanĝo: 2009-02-01
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.es
+++ b/runtime/tutor/tutor.es
@@ -117,7 +117,7 @@ NOTA: A medida que vaya avanzando en est
 			    RESUMEN DE LA LECCIN 1
 
 
-  1. El cursor se mueve utilizamdo las teclas de las flechas o las teclas hjkl.
+  1. El cursor se mueve utilizando las teclas de las flechas o las teclas hjkl.
 	 h (izquierda)	   j (abajo)	  k (arriba)	  l (derecha)
 
   2. Para acceder a Vim (desde el smbolo del sistema %) escriba:
--- a/runtime/tutor/tutor.es.utf-8
+++ b/runtime/tutor/tutor.es.utf-8
@@ -117,7 +117,7 @@ NOTA: A medida que vaya avanzando en est
 			    RESUMEN DE LA LECCIÓN 1
 
 
-  1. El cursor se mueve utilizamdo las teclas de las flechas o las teclas hjkl.
+  1. El cursor se mueve utilizando las teclas de las flechas o las teclas hjkl.
 	 h (izquierda)	   j (abajo)	  k (arriba)	  l (derecha)
 
   2. Para acceder a Vim (desde el símbolo del sistema %) escriba:
--- a/runtime/tutor/tutor.fr
+++ b/runtime/tutor/tutor.fr
@@ -1,5 +1,5 @@
 ===============================================================================
-= B i e n v e n u e  dans le  T u t o r i e l  de  V I M  -  Version 1.5.fr.2 =
+= B i e n v e n u e  dans le  T u t o r i e l  de  V I M  -  Version 1.7.fr.1 =
 ===============================================================================
 
      Vim est un diteur trs puissant qui a trop de commandes pour pouvoir
@@ -7,93 +7,100 @@
      dcrire suffisamment afin de vous permettre d'utiliser simplement Vim.
 
      Le temps requis pour suivre ce cours est d'environ 25  30 minutes, selon
-     le temps que vous passerez  exprimenter.  Les commandes utilises dans
-     les leons modifieront le texte. Faites une copie de ce fichier afin de
-     vous entraner dessus (si vous avez lanc "vimtutor" ceci est dj une
-     copie).
+     le temps que vous passerez  exprimenter.
+
+     ATTENTION :
+     Les commandes utilises dans les leons modifieront le texte. Faites une
+     copie de ce fichier afin de vous entraner dessus (si vous avez lanc
+     "vimtutor" ceci est dj une copie).
 
      Il est important de garder en tte que ce cours est conu pour apprendre
-     par la pratique.  Cela signifie que vous devez excuter les commandes
-     pour les apprendre correctement.  Si vous vous contentez de lire le
-     texte, vous oublierez les commandes !
+     par la pratique. Cela signifie que vous devez excuter les commandes
+     pour les apprendre correctement. Si vous vous contentez de lire le texte,
+     vous oublierez les commandes !
 
-     Maintenant, vrifiez que votre clavier n'est PAS verouill en majuscules,
-     et appuyez la touche  j  le nombre de fois suffisant pour que la leon
-     1.1 remplisse compltement l'cran.
+     Maintenant, vrifiez que votre clavier n'est PAS verrouill en
+     majuscules, et appuyez la touche  j  le nombre de fois suffisant pour
+     que la Leon 1.1 remplisse compltement l'cran.
+
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		      Leon 1.1 : DPLACEMENT DU CURSEUR
+                      Leon 1.1 : DPLACEMENT DU CURSEUR
 
 
   ** Pour dplacer le curseur, appuyez les touches h,j,k,l comme indiqu. **
-	    ^
-	    k	     Astuce:  La touche h est  gauche et dplace  gauche.
-      < h      l >	      La touche l est  droite et dplace  droite.
-	   j		      La touche j ressemble  une flche vers le bas.
-	   v
+          ^
+          k        Astuce :  La touche h est  gauche et dplace  gauche.
+    < h       l >            La touche l est  droite et dplace  droite.
+          j                  La touche j ressemble  une flche vers le bas.
+          v
   1. Dplacez le curseur sur l'cran jusqu' vous sentir  l'aise.
 
   2. Maintenez la touche Bas (j) enfonce jusqu' ce qu'elle se rpte.
----> Maintenant vous tes capable de vous dplacer jusqu' la leon suivante.
+     Maintenant vous tes capable de vous dplacer jusqu' la leon suivante.
 
   3. En utilisant la touche Bas, allez  la Leon 1.2.
 
-Note: Si jamais vous doutez de ce que vous venez de taper, appuyez <chap>
-      pour revenir en mode Normal. Puis retapez la commande que vous vouliez.
+NOTE : Si jamais vous doutez de ce que vous venez de taper, appuyez <chap>
+       pour revenir en mode Normal. Puis retapez la commande que vous vouliez.
 
-Note: Les touches flches devraient galement fonctionner. Mais en utilisant
-      hjkl vous pourrez vous dplacer beaucoup plus rapidement, une fois que
-      vous aurez pris l'habitude.
+NOTE : Les touches flches devraient galement fonctionner. Mais en utilisant
+       hjkl vous pourrez vous dplacer beaucoup plus rapidement, une fois que
+       vous aurez pris l'habitude.
+
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		     Leon 1.2 : ENTRE ET SORTIE DE VIM
+                     Leon 1.2 : SORTIR DE VIM
 
 
- !! NOTE: Avant d'effectuer les tapes ci-dessous, lisez toute cette leon !!
+ !! NOTE : Avant d'effectuer les tapes ci-dessous, lisez toute cette leon !!
 
-  1. Appuyez la touche	<chap>  (pour tre sr d'tre en mode Normal).
-
-  2. Tapez:			:q! <Entre>
+  1. Appuyez la touche  <chap>  (pour tre sr d'tre en mode Normal).
 
----> Ceci quitte l'diteur SANS sauver les changements que vous avez faits.
-     Si vous voulez enregistrer les changements et sortir, tapez:
-				:wq <Entre>
+  2. Tapez :  :q! <Entre>
+     Ceci quitte l'diteur SANS enregistrer les changements que vous avez
+     faits.
 
-  3. Lorsque l'invite du 'shell' vous sera prsente, tapez la commande qui
-     vous a amen dans ce tutoriel.  Cela pourrait tre:    vimtutor <Entre>
-     Normalement, vous utiliseriez:			    vim tutor <Entre>
-
----> 'vim' lance l'diteur, 'tutor' est le fichier que vous souhaitez diter.
+  3. Lorsque l'invite du shell vous sera prsente, tapez la commande qui
+     vous a men dans ce tutoriel. Cela pourrait tre :    vimtutor <Entre>
 
   4. Si vous avez mmoris ces tapes et tes confiant, effectuez les tapes
-     1  3 pour sortir puis rentrer dans l'diteur.  Dplacez ensuite le
-      curseur jusqu' la Leon 1.3.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		  Leon 1.3 : DITION DE TEXTE - EFFACEMENT
+     1  3 pour sortir puis rentrer dans l'diteur.
+
+NOTE :  :q! <Entre> annule tous le changements que vous avez fait. Dans
+         quelques leons, vous apprendrez  enregistrer les changements.
+
+  5. Dplacez le curseur  la Leon 1.3.
 
 
- ** En mode Normal, appuyez  x	pour effacer le caractre sous le curseur. **
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                  Leon 1.3 : DITION DE TEXTE - EFFACEMENT
+
+
+         ** Appuyez   x   pour effacer le caractre sous le curseur. **
 
   1. Dplacez le curseur sur la ligne marque ---> ci-dessous.
 
   2. Pour corriger les erreurs, dplacez le curseur jusqu' ce qu'il soit
      sur un caractre  effacer.
 
-  3. Appuyez la touche	x  pour effacer le caractre redondant.
+  3. Appuyez la touche  x  pour effacer le caractre redondant.
 
   4. Rptez les tapes 2  4 jusqu' ce que la phrase soit correcte.
 
 ---> La vvache  saut au-ddessus dde la luune.
 
-  5. Maintenant que la ligne est correcte, passez  la leon 1.4.
+  5. Maintenant que la ligne est correcte, passez  la Leon 1.4.
 
-NOTE: En avanant dans ce cours, n'essayez pas de mmoriser, apprenez par
-      la pratique.
+NOTE : En avanant dans ce cours, n'essayez pas de mmoriser, apprenez par
+       la pratique.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		   Leon 1.4 : DITION DE TEXTE - INSERTION
+                    Leon 1.4 : DITION DE TEXTE - INSERTION
 
 
-	   ** En mode Normal, appuyez  i  pour insrer du texte. **
+                    ** Appuyez  i  pour insrer du texte. **
 
   1. Dplacez le curseur sur la premire ligne marque ---> ci-dessous.
 
@@ -108,38 +115,94 @@ NOTE: En avanant dans ce cours, n'essayez pas de mmoriser, apprenez par
 ---> Il mnqe caractres cette .
 ---> Il manque des caractres dans cette ligne.
 
-  5. Une fois que vous tes  l'aise avec l'insertion de texte, allez au
-     rsum ci-dessous.
+  5. Une fois que vous tes  l'aise avec l'insertion de texte, allez  la
+     Leon 1.5.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leon 1.5 : DITION DE TEXTE - AJOUTER
+
+
+                    ** Appuyez  A  pour ajouter du text. **
+
+  1. Dplacez le curseur sur la premire ligne ci-dessous marque --->.
+     Peu importe sur quel caractre se trouve le curseur sur cette ligne.
+
+  2. Appuyez  A  et tapez les ajouts ncessaires.
+
+  3. Quand le texte a t ajout, appuyez <chap> pour revenir en mode
+     Normal.
+
+  4. Dplacez le curseur sur la seconde ligne marque ---> et rptez les
+     tapes 2 et 3 pour corriger la phrase.
+
+---> Il manque du texte  partir de cet
+     Il manque du texte  partir de cette ligne.
+---> Il manque aussi du te
+     Il manque aussi du texte ici.
+
+  5. Quand vous vous sentez suffisamment  l'aise pour ajouter du texte,
+     allez  la Leon 1.6.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			     RSUM DE LA LEON 1
+                         Leon 1.6 : DITER UN FICHIER
+
+
+          ** Utilisez  :wq  pour enregistrer un fichier et sortir. **
+
+!! NOTE : Lisez toute la leon avant d'excuter les instructions ci-dessous !!
+
+  1. Sortez de ce tutoriel comme vous l'avez fait dans la Leon 1.2 :  :q!
+     Ou, si vous avez accs  un autre terminal, excutez y les actions
+     qui suivent.
+
+  2.  l'invite du shell, tapez cette commande :  vim tutor <Entre>
+     'vim' est la commande pour dmarrer l'diteur Vim, 'tutor' est le
+     nom du fichier que vous souhaitez diter. Utilisez un fichier qui peut
+     tre modifi.
+
+  3. Insrez et effacez du texte comme vous l'avez appris dans les leons
+     prcdentes.
+
+  4. Enregistrez le fichier avec les changements et sortez de Vim avec :
+       :wq <Entre>
+
+  5. Si vous avez quitt vimtutor  l'tape 1, recommencez vimtutor et
+     dplacez-vous en bas vers le rsum suivant.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                             RSUM DE LA LEON 1
+
 
   1. Le curseur se dplace avec les touches flches ou les touches hjkl.
-	 h (gauche)	j (bas)        k (haut)       l (droite)
+           h (gauche)      j (bas)      k (haut)      l (droite)
 
-  2. Pour entrer dans Vim ( l'invite %) tapez:  vim FICHIER <Entre>
+  2. Pour dmarrer Vim  l'invite du shell tapez :  vim FICHIER <Entre>
 
-  3. Pour quitter Vim tapez:  <chap> :q! <Entre>  pour perdre tous les
-						    changements.
-		   OU tapez:  <chap> :wq <Entre>  pour enregistrer les
-						    changements.
+  3. Pour quitter Vim tapez :  <chap> :q! <Entre>  pour perdre tous les
+                                                     changements.
+                   OU tapez :  <chap> :wq <Entre>  pour enregistrer les
+                                                     changements.
 
-  4. Pour effacer un caractre sous le curseur en mode Normal tapez:  x
+  4. Pour effacer un caractre sous le curseur tapez :  x
 
-  5. Pour insrer du texte au niveau du curseur en mode Normal tapez:
-	 i   tapez le texte   <chap>
+  5. Pour insrer ou ajouter du texte tapez :
+         i   tapez le texte  insrer avant le curseur   <chap>
+         A   tapez le texte  ajouter aprs le curseur   <chap>
 
-NOTE: Appuyer  <chap>	vous place en mode Normal ou annule une commande
-      partiellement tape dont vous ne voudriez plus.
+NOTE : Appuyer  <chap>  vous place en mode Normal ou annule une commande
+       partiellement tape dont vous ne voulez plus.
 
-Passez maintenant  la Leon 2.
+Passez maintenant  la leon 2.
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			   Leon 2.1 : EFFACEMENTS
+                       Leon 2.1 : COMMANDES D'EFFACEMENT
 
 
-	    ** Tapez  dw  pour effacer jusqu' la fin d'un mot. **
+                     ** Tapez  dw  pour effacer un mot. **
 
   1. Appuyez  <chap>  pour tre sr d'tre en mode Normal.
 
@@ -147,91 +210,139 @@ Passez maintenant  la Leon 2.
 
   3. Placez le curseur sur le dbut d'un mot qui a besoin d'tre effac.
 
-  4. Tapez  dw	pour faire disparatre ce mot.
+  4. Tapez  dw  pour faire disparatre ce mot.
 
-NOTE: Les lettres  dw  apparatront sur la dernire ligne de l'cran lors de
-      votre frappe. Si vous avez mal tap quelque chose, appuyez <chap> et
-      recommencez.
+NOTE : La lettre  d  apparatra sur la dernire ligne de l'cran lors de
+       votre frappe. Vim attend que vous tapiez  w . Si vous voyez un autre
+       caractre que  d  vous avez tap autre chose ; appuyez <chap> et
+       recommencez.
 
 ---> Il y a quelques drle mots qui n'ont rien  faire papier sur cette ligne.
 
   5. Rptez les tapes 3 et 4 jusqu' ce que la phrase soit correcte et allez
       la Leon 2.2.
 
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			Leon 2.2 : PLUS D'EFFACEMENTS
+                  Leon 2.2 : PLUS DE COMMANDES D'EFFACEMENTS
 
 
-	  ** Tapez  d$	pour effacer jusqu' la fin de la ligne. **
+          ** Tapez  d$  pour effacer jusqu' la fin de la ligne. **
 
   1. Appuyez  <chap>  pour tre sr d'tre en mode Normal.
 
   2. Dplacez le curseur sur la ligne marque ---> ci-dessous.
 
-  3. Dplacez le curseur jusqu' la fin correcte de la ligne
-     (APRS le premier . ).
+  3. Dplacez le curseur jusqu' la fin de la ligne correcte (APRS le
+     premier . ).
 
-  4. Tapez  d$	pour effacer jusqu' la fin de la ligne.
+  4. Tapez  d$  pour effacer jusqu' la fin de la ligne.
 
 ---> Quelqu'un a tap la fin de cette ligne deux fois. cette ligne deux fois.
 
   5. Allez  la Leon 2.3 pour comprendre ce qui se passe.
 
 
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+             Leon 2.3 :  PROPOS DES OPRATEURS ET DES MOUVEMENTS
 
 
+  Plusieurs commandes qui changent le texte sont constitues d'un oprateur
+  et d'un mouvement. Le format pour une commande d'effacement avec l'oprateur
+  d  d'effacement est le suivant :
+
+        d   mouvement
+
+  O :
+    d         - est l'oprateur d'effacement
+    mouvement - est le mouvement sur lequel agit l'oprateur (lists
+                ci-dessous)
+
+  Une courte liste de mouvements :
+    w - jusqu'au dbut du prochain mot, en EXCLUANT son premier caractre.
+    e - jusqu' la fin du mot courant, en EXCLUANT son denier caractre.
+    $ - jusqu' la fin de la ligne, en INCLUANT son dernier caractre.
+
+  Ainsi, taper  de  va effacer depuis le curseur jusqu' la fin du mot.
+
+NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, dplace le
+       curseur comme indiqu.
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		   Leon 2.3 : DES COMMANDES ET DES OBJETS
+            Leon 2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT
 
 
-  Le format de la commande d'effacement  d  est le suivant:
+       ** Taper un nombre avant un mouvement le rpte autant de fois. **
 
-	 [nombre]  d  objet	   OU	     d	[nombre]  objet
-  o:
-    nombre - est combien de fois excuter la commande (optionnel, dfaut: 1).
-    d - est la commande d'effacement.
-    objet - est ce sur quoi la commande va oprer (liste ci-dessous).
+  1. Dplacez le curseur au dbut de la ligne marque ---> ci-dessous.
+
+  2. Tapez  2w  pour dplacer le curseur de 2 mots vers l'avant.
 
-  Une courte liste d'objets:
-    w - du curseur jusqu' la fin du mot, y compris l'espace qui suit.
-    e - du curseur jusqu' la fin du mot, SANS l'espace qui suit.
-    $ - du curseur jusqu' la fin de la ligne.
+  3. Tapez  3e  pour dplacer le curseur  la fin du troisime mot vers
+     l'avant.
+
+  4. Tapez  0  (zro) pour dplacer au dbut de la ligne.
 
-NOTE: Pour les aventureux, le seul appui d' objet  en mode Normal, sans
-      commande, dplace le curseur comme indiqu dans la liste des objets.
+  5. Rptez les tapes 2 et 3 avec des quantificateurs diffrents.
 
+---> Ceci est juste une ligne avec des mots o vous pouvez vous dplacer.
 
+  6. Dplacez-vous  la Leon 2.5.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		 Leon 2.4 : UNE EXCEPTION  'COMMANDE-OBJET'
+            Leon 2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS
+
+
+       ** Taper un nombre avec un oprateur le rpte autant de fois. **
+
+  Outre la combinaison de l'oprateur d'effacement avec un dplacement
+  mentionn ci-dessus, vous pouvez insrer un nombre (quantificateur)
+  pour effacez encore plus :
+       d   nombre   dplacement
+
+  1. Dplacez le curseur vers le premier mot en MAJUSCULES dans la ligne
+     marque --->.
 
-	      ** Tapez	dd  pour effacer une ligne complte. **
+  2. Tapez  d2w  pour effacer les deux mots en MAJUSCULES.
+
+  3. Rptez les tapes 1 et 2 avec des quantificateurs diffrents pour
+     effacer les mots suivants en MAJUSCULES  l'aide d'une commande.
+
+---> Cette ABC DE ligne FGHI JK LMN OP de mots est Q RS TUV nettoye.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Leon 2.6 : OPREZ SUR DES LIGNES
+
+
+              ** Tapez   dd   pour effacer une ligne complte. **
 
   Vu le nombre de fois o l'on efface des lignes compltes, les concepteurs
-  de Vi ont dcid qu'il serait plus facile de taper simplement deux d  la
-  suite pour effacer une ligne.
+  de Vi ont dcid qu'il serait plus facile de taper simplement deux  d
+  pour effacer une ligne.
 
   1. Placez le curseur sur la seconde ligne de la phrase ci-dessous.
-  2. Tapez  dd	pour effacer la ligne.
+  2. Tapez  dd  pour effacer la ligne.
   3. Maintenant allez  la quatrime ligne.
-  4. Tapez  2dd  (rappelez-vous, nombre-commande-objet) pour effacer les
-     deux lignes.
+  4. Tapez   2dd   pour effacer deux lignes.
 
-      1)  Les roses sont rouges,
-      2)  La boue c'est drle,
-      3)  Les violettes sont bleues,
-      4)  J'ai une voiture,
-      5)  Les horloges donnent l'heure,
-      6)  Le sucre est doux
-      7)  Tout comme vous.
+--->  1)  Les roses sont rouges,
+--->  2)  La boue c'est drle,
+--->  3)  Les violettes sont bleues,
+--->  4)  J'ai une voiture,
+--->  5)  Les horloges donnent l'heure,
+--->  6)  Le sucre est doux
+--->  7)  Tout comme vous.
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			    Leon 2.5 : L'ANNULATION
+                            Leon 2.7 : L'ANNULATION
+
 
-	    ** Tapez  u  pour annuler les dernires commandes. **
-	       ** Tapez  U  pour rcuprer toute une ligne. **
+            ** Tapez  u  pour annuler les dernires commandes. **
+               ** Tapez  U  pour rcuprer toute une ligne. **
 
   1. Dplacez le curseur sur la ligne marque ---> ci-dessous et placez-le sur
      la premire erreur.
@@ -239,10 +350,10 @@ NOTE: Pour les aventureux, le seul appui
   3. Puis tapez  u  pour annuler la dernire commande excute.
   4. Cette fois, corrigez toutes les erreurs de la ligne avec la commande  x .
   5. Puis tapez un  U  majuscule pour remettre la ligne dans son tat initial.
-  6. Puis tapez  u  deux-trois fois pour annuler le  U	et les commandes
+  6. Puis tapez  u  deux-trois fois pour annuler le  U  et les commandes
      prcdentes.
-  7. Maintenant tapez  Ctrl-R  (maintenez la touche Ctrl enfonce pendant que
-     vous appuyez sur R) deux-trois fois pour refaire les commandes (annuler
+  7. Maintenant tapez  CTRL-R  (maintenez la touche CTRL enfonce pendant que
+     vous appuyez R) deux-trois fois pour refaire les commandes (annuler
      les annulations).
 
 ---> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'.
@@ -250,57 +361,64 @@ NOTE: Pour les aventureux, le seul appui
   8. Ce sont des commandes trs utiles. Maintenant, allez au rsum de la
      Leon 2.
 
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			     RSUM DE LA LEON 2
+                             RSUM DE LA LEON 2
 
 
-  1. Pour effacer du curseur jusqu' la fin d'un mot tapez:	dw
+  1. Pour effacer du curseur jusqu'au mot suivant tapez :         dw
 
-  2. Pour effacer du curseur jusqu' la fin d'une ligne tapez:	d$
+  2. Pour effacer du curseur jusqu' la fin d'une ligne tapez :   d$
+
+  3. Pour effacer toute une ligne tapez :                         dd
 
-  3. Pour effacer toute une ligne tapez:  dd
+  4. Pour rpter un dplacement ajoutez un quantificateur :      2w
 
-  4. Le format d'une commande en mode Normal est:
+  5. Le format d'une commande de changement est :
+
+       oprateur   [nombre]   dplacement
 
-       [nombre]  commande  objet     OU     commande  [nombre]	objet
-     o:
-       nombre - est combien de fois rpter la commande
-       commande - est ce qu'il faut faire, par exemple	d  pour effacer
-       objet - est ce sur quoi la commande devrait agir, par exemple w (mot),
-	       $ (jusqu' la fin de la ligne), etc.
+     O :
+       oprateur   - est ce qu'il faut faire, comme  d  pour effacer.
+       [nombre]    - un quantificateur optionnel pour rpter le dplacement.
+       dplacement - dplace le long du texte  oprer, tel que  w  (mot),
+                     $ (jusqu' la fin de ligne), etc.
 
-  5. Pour annuler des actions prcdentes, tapez:	     u	(u minuscule)
-     Pour annuler tous les changements sur une ligne tapez:  U	(U majuscule)
-     Pour annuler l'annulation tapez:			     Ctrl-R
+  6. Pour se dplacer au dbut de ligne, utilisez un zro :  0
+
+  5. Pour annuler des actions prcdentes, tapez :            u (u minuscule)
+     Pour annuler tous les changements sur une ligne tapez :  U (U majuscule)
+     Pour annuler l'annulation tapez :                        CTRL-R
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			     Leon 3.1 : LE COLLAGE
+                             Leon 3.1 : LE COLLAGE
 
 
-   ** Tapez  p	pour placer aprs le curseur ce qui vient d'tre effac. **
+   ** Tapez  p  pour placer aprs le curseur ce qui vient d'tre effac. **
 
-  1. Placez le curseur sur la premire ligne du "pome" ci-dessous.
+  1. Placez le curseur sur la premire ligne ci-dessous marque --->.
 
-  2. Tapez  dd	pour effacer la ligne et la placer dans le tampon de Vim.
+  2. Tapez  dd  pour effacer la ligne et la placer dans un registre de Vim.
 
-  3. Dplacez le curseur sur la ligne qui PRCDE l'endroit o vous voulez
-     remettre la ligne efface.
+  3. Dplacez le curseur sur la ligne c) au dessus o vous voulez remettre la
+     ligne efface.
 
-  4. En mode Normal, tapez  p  pour remettre la ligne.
+  4. En mode Normal, tapez   p   pour remettre la ligne en dessous du curseur.
 
   5. Rptez les tapes 2  4 pour mettre toutes les lignes dans le bon ordre.
 
-     d) Et vous, qu'apprenez-vous ?
-     b) Les violettes sont bleues,
-     c) L'intelligence s'apprend,
-     a) Les roses sont rouges,
+---> d) Et vous, qu'apprenez-vous ?
+---> b) Les violettes sont bleues,
+---> c) L'intelligence s'apprend,
+---> a) Les roses sont rouges,
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			 Leon 3.2 : LE REMPLACEMENT
+                    Leon 3.2 : LA COMMANDE DE REMPLACEMENT
 
 
- ** Tapez  r  et un caractre pour remplacer le caractre sous le curseur. **
+     ** Tapez  rx  pour remplacer un caractre sous le curseur par  x . **
 
   1. Dplacez le curseur sur la premire ligne marque ---> ci-dessous.
 
@@ -308,31 +426,32 @@ NOTE: Pour les aventureux, le seul appui
 
   3. Tapez  r  suivi du caractre qui doit corriger l'erreur.
 
-  4. Rptez les tapes 2 et 3 jusqu' ce que la premire ligne soit correcte.
+  4. Rptez les tapes 2 et 3 jusqu' ce que la premire ligne soit gale
+      la seconde.
 
 --->  Quand cette ligne a t sauvie, quelqu'un a lait des faunes de frappe !
 --->  Quand cette ligne a t saisie, quelqu'un a fait des fautes de frappe !
 
   5. Maintenant, allez  la Leon 3.3.
 
-NOTE: N'oubliez pas que vous devriez apprendre par la pratique, pas par
-      mmorisation.
+NOTE : N'oubliez pas que vous devriez apprendre par la pratique, pas par
+       mmorisation.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			  Leon 3.3 : LE CHANGEMENT
+                     Leon 3.3 : L'OPRATEUR DE CHANGEMENT
 
 
-	    ** Pour changer tout ou partie d'un mot, tapez  cw .**
+            ** Pour changer jusqu' la fin d'un mot, tapez  ce .**
 
   1. Dplacez le curseur sur la premire ligne marque ---> ci-dessous.
 
-  2. Placez le curseur sur le u de luhko.
+  2. Placez le curseur sur le  u  de luhko.
 
-  3. Tapez  cw	et corrigez le mot (dans notre cas, tapez  'igne'.)
+  3. Tapez  ce  et corrigez le mot (dans notre cas, tapez  'igne'.)
 
-  4. Appuyez <chap> et placez-vous sur l'erreur suivante (le premier
-     caractre qui doit tre chang).
+  4. Appuyez <chap> et placez-vous sur le prochain caractre qui doit
+     tre chang).
 
   5. Rptez les tapes 3 et 4 jusqu' ce que la premire phrase soit
      identique  la seconde.
@@ -340,171 +459,189 @@ NOTE: N'oubliez pas que vous devriez app
 ---> Cette luhko contient quelques myqa qui ont ricne d'tre chantufip.
 ---> Cette ligne contient quelques mots qui ont besoin d'tre changs.
 
-Notez que  cw  efface le mot et vous place ensuite en mode Insertion.
+Notez que  ce  efface le mot et vous place ensuite en mode Insertion.
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		    Leon 3.4 : PLUS DE CHANGEMENTS AVEC c
+                    Leon 3.4 : PLUS DE CHANGEMENTS AVEC c
 
 
-    ** Le changement fonctionne avec les mmes objets que l'effacement. **
+    ** L'oprateur de changement fonctionne avec les mmes dplacements
+       que l'effacement. **
 
-  1. Le changement fonctionne de la mme manire que l'effacement.
-     Le format est:
+  1. L'oprateur de changement fonctionne de la mme manire que
+     l'effacement. Le format est :
 
-	 [nombre]  c  objet	   OU	     c	[nombre]  objet
+         c   [nombre]   dplacement
 
-  2. Les objets sont galement les mmes:  w (mot), $ (fin de ligne), etc.
+  2. Les dplacements sont identiques :  w (mot) et  $ (fin de ligne).
 
-  3. Dplacez-vous  la premire ligne marque ---> ci-dessous.
+  3. Dplacez-vous sur la premire ligne marque ---> ci-dessous.
 
   4. Placez le curseur sur la premire erreur.
 
-  5. Tapez  c$	pour changer la fin de la ligne, rendez-l identique  la
-     seconde ligne, puis tapez <chap>.
+  5. Tapez  c$  et tapez le reste de la ligne afin qu'elle soit identique
+      la seconde ligne, puis tapez <chap>.
 
 ---> La fin de cette ligne doit tre rendue identique  la seconde.
----> La fin de cette ligne doit tre corrige avec la commande	c$ .
+---> La fin de cette ligne doit tre corrige avec la commande  c$ .
+
+NOTE :  Vous pouvez utilisez la touche Retour Arrire pour corriger les
+        erreurs lorsque vous tapez.
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			     RSUM DE LA LEON 3
+                             RSUM DE LA LEON 3
 
 
-  1. Pour remettre du texte qui vient d'tre effac, tapez  p . Cela Place le
+  1. Pour remettre le texte qui a dj t effac, tapez  p . Cela Place le
      texte effac APRS le curseur (si une ligne complte a t efface, elle
      sera place sous la ligne du curseur).
 
   2. Pour remplacer le caractre sous le curseur, tapez  r  suivi du caractre
      qui remplacera l'original.
 
-  3. Le changement vous permet de changer l'objet spcifi, du curseur jusqu'
-     la fin de l'objet. Par exemple, tapez  cw	pour changer du curseur
-     jusqu' la fin du mot,  c$  pour changer jusqu' la fin d'une ligne.
+  3. L'oprateur de changement vous permet de changer depuis la position du
+     curseur jusqu'o le dplacement vous amne. Par exemple, tapez  ce
+     pour changer du curseur jusqu' la fin du mot,  c$  pour changer jusqu'
+     la fin d'une ligne.
 
-  4. Le format pour le changement est:
+  4. Le format pour le changement est :
 
-	 [nombre]  c  objet	   OU	     c	[nombre]  objet
+         c   [nombre]   dplacement
 
 Passez maintenant  la leon suivante.
 
 
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		   Leon 4.1 : POSITION ET TAT DU FICHIER
+               Leon 4.1 : POSITION DU CURSEUR ET TAT DU FICHIER
 
 
-  ** Tapez Ctrl-G pour afficher votre position dans le fichier et son tat.
-     Utilisez Maj-G pour vous rendre  une ligne donne du fichier. **
+  ** Tapez CTRL-G pour afficher votre position dans le fichier et son tat.
+     Tapez  G  pour vous rendre  une ligne donne du fichier. **
+
+NOTE : Lisez toute cette leon avant d'effectuer l'une des tapes !!
 
-  Note: Lisez toute cette leon avant d'effectuer l'une des tapes !
+  1. Maintenez enfonce la touche CTRL et appuyez sur  g . On appelle cela
+     CTRL-G. Une ligne d'tat va apparatre en bas de l'cran avec le nom
+     du fichier et le numro de la ligne o vous tes. Notez ce numro, il
+     servira lors de l'tape 3.
 
-  1. Maintenez enfonce la touche Ctrl et appuyez sur  G .  Une ligne d'tat
-     va apparatre en bas de l'cran avec le nom du fichier et le numro de la
-     ligne o vous tes.  Notez ce numro, il servira lors de l'tape 3.
+NOTE : Vous pouvez peut-tre voir le curseur en bas  droite de l'cran.
+       Ceci arrive quand l'option 'ruler' est active (voir  :help 'ruler')
 
-  2. Tapez  G  majuscule (Maj-G) pour vous rendre  la fin du fichier.
+  2. Tapez  G   pour vous dplacer  la fin du fichier.
+     Tapez  gg  pour vous dplacer au dbut du fichier.
 
-  3. Tapez le numro de la ligne o vous tiez suivi de Maj-G.	Cela vous
-     ramnera  la ligne o vous tiez au dpart.
-     (Lorsque vous tapez les chiffres, ils n'apparaissent PAS  l'cran).
+  3. Tapez le numro de la ligne o vous tiez suivi de   G . Cela vous
+     ramnera  la ligne o vous tiez au dpart quand vous aviez appuy
+     CTRL-G.
 
   4. Si vous vous sentez prt  faire ceci, effectuez les tapes 1  3.
 
 
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			    Leon 4.2 : LA RECHERCHE
+                            Leon 4.2 : LA RECHERCHE
 
 
-	  ** Tapez  /  suivi d'un texte pour rechercher ce texte. **
+          ** Tapez  /  suivi d'un texte pour rechercher ce texte. **
 
   1. Tapez le caractre  /  en mode Normal. Notez que celui-ci et le curseur
      apparaissent en bas de l'cran, comme lorsque l'on utilise  : .
 
-  2. Puis tapez 'errreuur' <Entre>.  C'est le mot que vous voulez rechercher.
+  2. Puis tapez 'errreuur' <Entre>. C'est le mot que vous voulez rechercher.
 
-  3. Pour rechercher  nouveau le mme texte, tapez simplement	n .
-     Pour rechercher le mme texte dans la direction oppose, tapez  Maj-N .
+  3. Pour rechercher  nouveau le mme texte, tapez simplement  n .
+     Pour rechercher le mme texte dans la direction oppose, tapez  N .
 
-  4. Si vous voulez rechercher un texte vers le haut du fichier, utilisez  ?
-      la place de  / .
+  4. Pour rechercher une phrase dans la direction oppose, utilisez  ?
+     au lieu de  / .
 
----> erreur ne s'crit pas "errreuur"; errreuur est une erreur.
+---> erreur ne s'crit pas "errreuur" ; errreuur est une erreur.
 
-Note: Quand la recherche atteint la fin du fichier, elle reprend au dbut.
-
+NOTE : Quand la recherche atteint la fin du fichier, elle reprend au dbut
+       sauf si l'option 'wrapscan' est dactive.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-	    Leon 4.3 : RECHERCHE DES PARENTHSES CORRESPONDANTES
+            Leon 4.3 : RECHERCHE DES PARENTHSES CORRESPONDANTES
 
 
-	   ** Tapez  %	pour trouver des ), ] ou } correspondants. **
+           ** Tapez  %  pour trouver des ), ] ou } correspondants. **
 
   1. Placez le curseur sur l'un des (, [ ou { de la ligne marque --->
      ci-dessous.
 
   2. Puis tapez le caractre  % .
 
-  3. Le curseur devrait se placer sur la parenthse correspondante.
+  3. Le curseur se dplacera sur la parenthse out crochet correspondant.
 
-  4. Tapez  %  pour replacer le curseur sur l'autre parenthse.
+  4. Tapez  %  pour replacer le curseur sur la parenthse ou crochet
+     correspondant.
+
+  5. Dplacez le curseur sur un autre (,),[,],{ ou } et regardez ce que
+     fait  % .
 
 ---> Voici ( une ligne de test contenant des (, des [ ] et des { } )).
 
-Note: Cette fonctionnalit est trs utile lors du dbogage d'un programme qui
-      contient des parenthses dsquilibres !
-
-
+NOTE : Cette fonctionnalit est trs utile lors du dbogage d'un programme qui
+       contient des parenthses dsquilibres !
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-	       Leon 4.4 : UNE MANIRE DE CORRIGER LES ERREURS
+                    Leon 4.4 : LA COMMANDE DE SUBSTITUTION
 
 
-  ** Tapez  :s/ancien/nouveau/g  pour remplacer 'ancien' par 'nouveau'.  **
+    ** Tapez  :s/ancien/nouveau/g  pour remplacer 'ancien' par 'nouveau'. **
 
   1. Dplacez le curseur sur la ligne marque ---> ci-dessous.
 
   2. Tapez  :s/lee/le <Entre> . Notez que cette commande change seulement la
-     premire occurence sur la ligne.
+     premire occurrence de "lee" dans la ligne.
 
-  3. Puis tapez  :s/lee/le/g  qui ordonne de faire une substitution globale
-     sur la ligne. Cela change toutes les occurences sur la ligne
+  3. Puis tapez  :s/lee/le/g . L'ajout du drapeau  g  ordonne de faire une
+     substitution globale sur la ligne, et change toutes les occurrences de
+     "lee" sur la ligne.
+
+---> lee meilleur moment pour regarder lees fleurs est pendant lee printemps.
 
----> lee meilleur moment pour regarder lees fleurs est pendant lee Printemps.
-
-  4. Pour changer toutes les occurences d'un texte, entre deux lignes,
-     tapez  :#,#s/ancien/nouveau/g  o #,# sont les numros des deux lignes.
-     Tapez  :%s/ancien/nouveau/g    pour changer chaque occurence dans tout
-				    le fichier.
+  4. Pour changer toutes les occurrences d'un texte, entre deux lignes,
+     tapez  :#,#s/ancien/nouveau/g  o #,# sont les numros de lignes de la
+                                    plage o la substitution doit tre faite.
+     Tapez  :%s/ancien/nouveau/g    pour changer toutes les occurrences dans
+                                    tout le fichier.
+     Tapez  :%s/ancien/nouveau/gc   pour trouver toutes les occurrences dans
+                                    tout le fichier avec une invite pour
+                                    confirmer ou infirmer chaque substitution.
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			     RSUM DE LA LEON 4
+                             RSUM DE LA LEON 4
 
 
-  1. Ctrl-G  affiche votre position dans le fichier et l'tat de celui-ci.
-     Maj-G  vous place  la fin du fichier. Un numro de ligne suivi de Maj-G
-     vous place  cette ligne.
+  1. CTRL-G       affiche la position dans le fichier et l'tat de celui-ci.
+               G  dplace  la fin du fichier.
+     nombre    G  dplace au numro de ligne.
+              gg  dplace  la premire ligne.
 
   2. Taper  /  suivi d'un texte recherche ce texte vers l'AVANT.
      Taper  ?  suivi d'un texte recherche ce texte vers l'ARRIRE.
-     Aprs une recherche tapez	n  pour trouver l'occurence suivante dans la
-     mme direction ou	Maj-N  pour rechercher dans la direction oppose.
+     Aprs une recherche tapez  n  pour trouver l'occurrence suivante dans la
+     mme direction ou  Maj-N  pour rechercher dans la direction oppose.
 
   3. Taper  %  lorsque le curseur est sur  (, ), [, ], { ou }  dplace
      celui-ci sur le caractre correspondant.
 
-  4. Pour remplacer le premier aa par bb sur une ligne tapez	 :s/aa/bb
-     Pour remplacer tous les aa par bb sur une ligne tapez	 :s/aa/bb/g
-     Pour remplacer du texte entre deux numros de ligne tapez	 :#,#s/aa/bb/g
-     Pour remplacer toutes les occurences dans le fichier tapez  :%s/aa/bb/g
-     Pour demander une confirmation  chaque fois ajoutez 'c'	 :%s/aa/bb/gc
+  4. Pour remplacer le premier aa par bb sur une ligne tapez     :s/aa/bb
+     Pour remplacer tous les aa par bb sur une ligne tapez       :s/aa/bb/g
+     Pour remplacer du texte entre deux numros de ligne tapez   :#,#s/aa/bb/g
+     Pour remplacer toutes les occurrences dans le fichier tapez :%s/aa/bb/g
+     Pour demander une confirmation  chaque fois ajoutez 'c'    :%s/aa/bb/gc
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-	      Leon 5.1 : COMMENT EXCUTER UNE COMMANDE EXTERNE
+              Leon 5.1 : COMMENT EXCUTER UNE COMMANDE EXTERNE
 
 
  ** Tapez  :!  suivi d'une commande externe pour excuter cette commande. **
@@ -516,294 +653,386 @@ Note: Cette fonctionnalit est trs utile lors du dbogage d'un programme qui
      n'importe quelle commande valide pour votre interprteur (shell).
 
   3. Par exemple, tapez  ls  aprs le  !  et appuyez <Entre>. Ceci affichera
-     la liste des fichiers du dossier courant, comme si vous aviez tap la
-     commande  l'invite du shell. Utilisez  :!dir  si	:!ls  ne marche pas.
+     la liste des fichiers du rpertoire courant, comme si vous aviez tap la
+     commande  l'invite du shell. Utilisez  :!dir  si  :!ls  ne marche pas.
 
-Note:  Il est possible d'excuter n'importe quelle commande externe de cette
-       manire.
+NOTE :  Il est possible d'excuter n'importe quelle commande externe de cette
+        manire, avec ou sans argument.
 
-Note:  Toutes les commandes  :  doivent finir par la frappe de <Entre>.
-
+NOTE :  Toutes les commandes  :  doivent finir par la frappe de <Entre>.
+         partir de maintenant, nous ne le mentionnerons plus.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-	 Leon 5.2 : PLUS DE DTAILS SUR L'ENREGISTREMENT DE FICHIERS
+         Leon 5.2 : PLUS DE DTAILS SUR L'ENREGISTREMENT DE FICHIERS
 
 
- ** Pour enregistrer les changements faits au fichier, tapez  :w FICHIER . **
+ ** Pour enregistrer les changements faits au texte, tapez  :w FICHIER . **
 
-  1. Tapez  :!dir  ou  :!ls  pour avoir la liste des fichiers du dossier
-     courant. Vous savez dj qu'il faut appuyer <Entre> aprs cela.
+  1. Tapez  :!dir  ou  :!ls  pour avoir la liste des fichiers dans le
+     rpertoire courant. Vous savez dj qu'il faut appuyer <Entre> aprs
+     cela.
 
   2. Choisissez un nom de fichier qui n'existe pas encore, par exemple TEST.
 
   3. Puis tapez  :w TEST  (o TEST est le nom que vous avez choisi).
 
-  4. Cela sauvegarde tout le fichier (Tutoriel Vim) sous le nom TEST.
-     Pour le vrifier, tapez  :!dir  pour revisualiser le contenu du dossier.
+  4. Cela enregistre tout le fichier (Tutoriel Vim) sous le nom TEST.
+     Pour le vrifier, tapez  :!dir  ou  :!ls  de nouveau pour revisualiser
+     votre rpertoire.
 
-Notez que si vous quittez Vim et y retournez avec le fichier TEST, celui-ci
-sera une copie exacte du cours au moment o vous l'avez sauv.
+NOTE : Si vous quittez Vim et le redmarrez de nouveau avec le fichier TEST,
+       celui-ci sera une copie exacte de ce cours au moment o vous l'avez
+       enregistr.
 
-  5. Maintenant, effacez le fichier en tapant (MS-DOS):    :!del TEST
-					   ou (Unix):	   :!rm TEST
+  5. Maintenant, effacez le fichier en tapant (MS-DOS) :   :!del TEST
+                                           ou (Unix) :     :!rm TEST
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		    Leon 5.3 : UN ENREGISTREMENT SLECTIF
+                  Leon 5.3 : SLECTION DU TEXTE  ENREGISTRER
 
 
-     ** Pour enregistrer une portion de fichier, tapez	:#,#w FICHIER **
+                  ** Pour enregistrer une portion du fichier,
+                      tapez :   v  dplacement  :w FICHIER  **
+
+  1. Dplacez le curseur sur cette ligne.
 
-  1. Tapez  nouveau  :!dir  ou  :!ls  pour visualiser le contenu du dossier
-     courant et choisissez un nom de fichier, tel que TEST.
+  2. Appuyez  v  et dplacez le curseur vers la cinquime ligne plus bas.
+     Remarquez que le texte est en surbrillance.
 
-  2. Dplacez le curseur jusqu'en haut de cette page et tapez  Ctrl-G  pour
-     connatre le numro de cette ligne. NOTEZ CE NUMRO !
+  3. Appuyez  :  . En bas de l'cran  :'<,'> va apparatre.
 
-  3. Puis rendez-vous au bas de cette page et tapez  nouveau  Ctrl-G .
-     NOTEZ GALEMENT CE NUMRO !
+  4. Tapez   w TEST  , o TEST est un nom de fichier qui n'existe pas.
+     Vrifiez que vous voyez  :'<,'>w TEST  avant de d'appuyer sur Entre.
 
-  4. Pour enregistrer SEULEMENT une portion d'un fichier, tapez  :#,#w TEST
-     o #,# sont les deux numros que vous avez nots (haut,bas) et TEST est
-     le nom du fichier.
+  5. Vim va enregistrer les lignes slectionnes dans le fichier TEST.
+     Utilisez  :!dir  ou  !ls pour le voir. Ne l'effacez pas encore !
+     Nous allons l'utiliser dans la leon suivante.
 
-  5. Une fois encore, vrifiez la prsence du fichier avec  :!dir  mais NE
-     L'EFFACEZ PAS.
+NOTE : L'appui de  v  dmarre la slection Visuelle. Vous pouvez dplacer le
+       curseur pour agrandir ou rtrcir la slection. Puis vous pouvez
+       utiliser un oprateur pour faire quelque chose sur le texte. Par
+       exemple,  d  efface le texte.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		 Leon 5.4 : RCUPRATION ET FUSION DE FICHIERS
+                 Leon 5.4 : RCUPRATION ET FUSION DE FICHIERS
 
 
-	** Pour insrer le contenu d'un fichier, tapez	:r FICHIER **
+        ** Pour insrer le contenu d'un fichier, tapez  :r FICHIER **
 
-  1. Tapez  :!dir  pour vrifier que votre fichier TEST est encore l.
-
-  2. Placez le curseur en haut de cette page.
+  1. Placez le curseur juste au dessus de cette ligne.
 
-NOTE:  Aprs avoir suivi l'tape 3 vous verrez  l'cran la Leon 5.3.
-       Dplacez-vous vers le bas jusqu' revenir  cette leon.
+NOTE :  Aprs avoir excut l'tape 2 vous verrez du texte de la Leon 5.3.
+        Puis dplacez vous vers le bas pour voir cette leon  nouveau.
 
-  3. Maintenant rcuprez votre fichier TEST en utilisant la commande  :r TEST
+  2. Maintenant rcuprez votre fichier TEST en utilisant la commande  :r TEST
      o TEST est le nom de votre fichier.
-
-NOTE:  Le fichier que vous rcuprez est plac l o se trouve le curseur.
+     Le fichier que vous rcuprez est plac au dessous de la ligne du curseur.
 
   4. Pour vrifier que le fichier a bien t insr, remontez et vrifiez
      qu'il y a maintenant deux copies de la Leon 5.3, l'originale et celle
      contenue dans le fichier.
 
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			     RSUM DE LA LEON 5
-
-
-  1.  :!commande  excute une commande externe.
-
-      Quelques exemples pratiques:
-	(MS-DOS)	(Unix)
-	 :!dir		 :!ls		 affiche le contenu du dossier courant.
-	 :!del FICHIER   :!rm FICHIER    efface FICHIER.
-
-  2.  :w FICHIER  enregistre le fichier Vim courant sur le disque avec pour
-		  nom FICHIER.
-
-  3.  :#,#w FICHIER  enregistre les lignes #  # dans le fichier FICHIER.
-
-  4.  :r FICHIER  rcupre le fichier FICHIER et l'insre dans le fichier
-		  courant  partir de la position du curseur.
-
-
-
+NOTE :  Vous pouvez aussi lire la sortie d'une commande externe. Par exemple,
+        :r !ls  lit la sortie de la commande ls et la place sous la ligne du
+        curseur.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			    Leon 6.1 : L'OUVERTURE
+                             RSUM DE LA LEON 5
+
+
+  1. :!commande  excute une commande externe.
+
+     Quelques exemples pratiques :
+      (MS-DOS)        (Unix)
+       :!dir           :!ls          affiche le contenu du rpertoire courant.
+       :!del FICHIER   :!rm FICHIER  efface FICHIER.
+
+  2. :w FICHIER  enregistre le fichier Vim courant sur le disque avec pour
+                  nom FICHIER.
+
+  3. v  dplacement  :w FICHIER sauvegarde les lignes de la slection Visuelle
+     dans le fichier FICHIER.
+
+  4. :r FICHIER  rcupre le contenu du fichier FICHIER et l'insre sous la
+     position du curseur.
+
+  5. :r !dir  lit la sortie de la commande dir et l'insre sous la position
+     du curseur.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Leon 6.1 : LA COMMANDE D'OUVERTURE
 
 
 ** Tapez  o  pour ouvrir une ligne sous le curseur et y aller en Insertion. **
 
   1. Dplacez le curseur sur la ligne marque ---> ci-dessous.
 
-  2. Tapez  o  (minuscule) pour ouvrir une ligne SOUS le curseur et vous y
-     placer en mode Insertion.
+  2. Tapez la lettre   o   minuscule pour ouvrir une ligne SOUS le curseur et
+     vous y placer en mode Insertion.
 
-  3. Puis recopiez la ligne marque ---> et appuyez sur <chap> pour quitter
-     le mode Insertion.
+  3. Puis tapez du texte et appuyez <chap> pour sortir du mode Insertion.
 
----> En tapant	o  le curseur se met sur la ligne ouverte, en mode Insertion.
+---> En tapant  o  le curseur se met sur la ligne ouverte, en mode Insertion.
 
   4. Pour ouvrir une ligne au DESSUS du curseur, tapez simplement un  O
      majuscule, plutt qu'un  o  minuscule. Faites un essai sur la ligne
      ci-dessous.
-Ouvrez une ligne ci-dessus en tapant MAJ-O lorsque le curseur est ici.
 
+---> Ouvrez une ligne ci-dessus en tapant O lorsque le curseur est ici.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			      Leon 6.2 : L'AJOUT
+                        Leon 6.2 : LA COMMANDE D'AJOUT
 
 
-	    ** Tapez  a  pour insrer du texte APRS le curseur. **
+            ** Tapez  a  pour insrer du texte APRS le curseur. **
+
+  1. Placez le curseur au dbut de la ligne marque ---> ci-dessous.
 
-  1. Placez le curseur  la fin de la premire ligne marque ---> ci-dessous
-     en tapant	$  en mode Normal.
+  2. Appuyez  e  jusqu' ce que le curseur soit sur la fin de  li .
 
-  2. Tapez un  a  (minuscule) pour ajouter du texte APRS le caractre situ
-     sous le curseur. ( A  majuscule ajoute du texte  la fin de la ligne).
+  3. Appuyez  a  (minuscule) pour ajouter du texte APRS le curseur.
 
-Note: Ceci vite de taper  i , le dernier caractre, le texte  insrer,
-      <chap>, curseur--droite, et finalement	x , juste pour ajouter du
-      texte  la fin d'une ligne !
+  4. Compltez le mot comme dans la ligne dessous. Appuyez <chap> pour
+     sortir du mode Insertion.
+
+  5. Utilisez  e  pour vous dplacer vers le mot incomplet suivant et
+     rptez les tapes 3 et 4.
 
-  3. Maintenant, compltez la premire ligne. Notez galement que l'ajout est
-     identique au mode Insertion, hormis la position o le texte est insr.
+---> Cette li vous perm de pratiq l'ajout de t dans une ligne.
+---> Cette ligne vous permet de pratiquer l'ajout de texte dans une ligne.
 
----> Cette ligne vous permet de pratiquer
----> Cette ligne vous permet de pratiquer l'ajout de texte en fin de ligne.
+NOTE :  a, i, A vont tous dans le mme mode Insertion, la seule diffrence
+        est l'endroit o les caractres sont insrs.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		Leon 6.3 : UNE AUTRE VERSION DU REMPLACEMENT
+                   Leon 6.3 : UNE AUTRE MANIRE DE REMPLACER
 
 
        ** Tapez un  R  majuscule pour remplacer plus d'un caractre. **
 
   1. Dplacez le curseur sur la premire ligne marque ---> ci-dessous.
+     Dplacez le curseur sur le dbut du premier xxx .
 
-  2. Placez le curseur au dbut du premier mot qui diffre de la seconde ligne
-     marque ---> (le mot 'celle').
+  2. Appuyez maintenant  R  et tapez le nombre dessous dans la deuxime ligne,
+     de manire  remplacer le xxx .
+
+  3. Appuyez <chap> pour quitter le mode Remplacement. Notez que le reste de
+     la ligne demeure inchang.
 
-  3. Puis tapez  R  et remplacez le reste du texte de la premire ligne en
-     tapant par dessus celui-ci, de manire  rendre la premire ligne
-     identique  la seconde.
+  4. Rptez les tapes pour remplacer les xxx restants.
+
 
----> Pour rendre cette ligne identique  celle du dessous utilisez le clavier.
----> Pour rendre cette ligne identique  la seconde, tapez R et la correction.
+---> L'ajout de 123  xxx donne xxx.
+---> L'ajout de 123  456 donne 579.
 
-  4. Notez que lorsque vous appuyez <chap>, le texte qui n'a pas encore t
-     remplac reste.
-
+NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les
+       caractres taps effacent un caractre existant.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		       Leon 6.4 : RGLAGE DES OPTIONS
+                     Leon 6.4 : COPIER ET COLLER DU TEXTE
 
 
-  ** Rglons une option afin que la recherche et la substitution ignorent la
-     casse des caractres. **
+   ** Utilisez l'oprateur  y  pour copier du texte et  p  pour le coller **
+
+  1. Allez  la ligne marque ---> ci-dessous et placez le curseur aprs "a)".
+
+  2. Dmarrez le mode Visuel avec  v  et dplacez le curseur juste devant
+     "premier".
+
+  3. Tapez  y  pour copier le texte en surbrillance.
+
+  4. Dplacez la curseur  la fin de la ligne suivante :   j$
+
+  5. Tapez  p  pour coller le texte. Puis tapez :  un second <chap> .
 
-  1. Recherchez 'ignore' en tapant  /ignore .
+  6. Utilisez le mode Visuel pour slectionner "lment", copiez le avec  y  ,
+     dplacez vous  la fin de la ligne suivant avec  j$  et collez le texte
+      cet endroit avec  p .
+
+--->  a) ceci est le premier lment.
+      b)
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Leon 6.4 : RGLAGE DES OPTIONS
+
+
+    ** Rglons une option afin que la recherche et la substitution ignore la
+       casse des caractres. **
+
+  1. Recherchez 'ignore' en tapant :   /ignore <Entre>
      Rptez ceci plusieurs fois en utilisant la touche  n .
 
-  2. Activez l'option 'ic' (Ignorer casse) en tapant  :set ic .
+  2. Activez l'option 'ic' (ignorer casse) en tapant  :set ic .
 
-  3. Puis poursuivez votre recherche en utilisant  n .
-     Rptez cette recherche plusieurs fois avec la touche  n .
+  3. Puis cherchez 'ignore' de nouveau en utilisant  n .
+     Remarquez que Ignore et IGNORE sont maintenant aussi trouvs.
 
   4. Activez les options 'hlsearch' et 'incsearch' avec  :set hls is .
 
   5. Puis recommencez une recherche, et faites bien attention  ce qui se
-     produit:  /ignore .
+     produit :  /ignore <Entre>
+
+  6. Pour dsactiver 'ignorer casse', entrez :  :set noic
 
-  6. Pour interrompre la mise en surbrillance des rsultats, tapez:
-     :nohlsearch
+NOTE : Pour enlever la surbrillance des rsultats, entrez :   :nohlsearch
+
+NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez
+       \c  dans la phrase :   /ignore\c  <Entre>
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			     RSUM DE LA LEON 6
+                             RSUM DE LA LEON 6
 
 
-  1. Taper  o  ouvre une ligne SOUS le curseur et y place celui-ci en mode
-     Insertion. Taper un  O  majuscule ouvre une ligne au DESSUS de la ligne
-     o se trouve le curseur.
+  1. Taper  o  ouvre une ligne SOUS le curseur et dmarre le mode Insertion.
+     Taper  O  ouvre une ligne au DESSUS du curseur.
+
+  2. Taper  a  pour insrer du texte APRS le curseur.
+     Taper  A  pour insrer du texte aprs la fin de ligne.
+
+  3. Taper  e  dplace  la fin du mot.
+
+  4. Taper  y  copie du texte,  p  le colle.
 
-  2. Tapez un  a  pour insrer du texte APRS le caractre o se trouve le
-     curseur. Taper un	A  majuscule ajoute du texte automatiquement  la fin
-     de la ligne.
+  5. Taper  R  majuscule active le mode Remplacement jusqu' ce qu' <chap>
+     soit appuy.
 
-  3. Taper un  R  majuscule active le mode Remplacement jusqu' ce que la
-     touche  <chap>  soit appuye pour en sortir.
+  6. Taper  ":set xxx"  active l'option "xxx". Quelques options sont :
+        'ic'  'ingnorecase' pour ignorer la casse lors des recherches.
+        'is'  'incsearch'   pour montrer les appariements partiels.
+        'hls' 'hlsearch'    pour mettre en surbrillance les appariements.
 
-  4. Taper  :set xxx  active l'option 'xxx'.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Leon 7.1 : OBTENIR DE L'AIDE
 
 
+                  ** Utiliser le systme d'aide en ligne. **
+
+  Vim a un systme complet d'aide en ligne. Pour y accder, essayez l'une de
+  ces trois mthodes :
+        - appuyez la touche <Help> (si vous en avez une)
+        - appuyez la touche <F1> (si vous en avez une)
+        - tapez  :help <Entre>
 
 
+  Lisez le texte dans la fentre d'aide pour savoir comment fonctionne l'aide.
+  Tapez  CTRL-W CTRL-W   pour sauter d'une fentre  l'autre.
+  Tapez  :q <Entre>     pour fermer la fentre d'aide.
 
+  Vous pouvez accder  l'aide sur  peu prs n'importe quel sujet en donnant
+  des arguments  la commande  :help . Essayez par exemple (n'oubliez pas
+  d'appuyer sur <Entre>) :
+
+        :help w
+        :help c_CTRL-D
+        :help c_<T
+        :help insert-index
+        :help user-manual
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		     Leon 7 : ACCDER  L'AIDE EN LIGNE
+                    Leon 7.2 : CRER UN SCRIPT DE DMARRAGE
 
-		  ** Utiliser le systme d'aide en ligne. **
+                   ** Activer les fonctionnalits de Vim. **
 
-  Vim a un systme complet d'aide en ligne.  Pour y accder, essayez l'une de
-  ces trois mthodes:
-	- appuyez la touche <Help> (si vous en avez une)
-	- appuyez la touche <F1> (si vous en avez une)
-	- tapez  :help <Entre>
+  Vim a beaucoup plus de fonctionnalits que Vi, mais la plupart de celles-ci
+  sont dsactives par dfaut. Pour commencer  les utiliser, vous devez
+  crer un fichier "vimrc".
 
-  Tapez  :q <Entre>  pour fermer la fentre d'aide.
+  1. Commencez  diter le fichier "vimrc". Ceci dpend de votre systme :
+        :edit ~/.vimrc         pour Unix
+        :edit $VIM/_vimrc      pour MS-Windows
+
+  2. Lisez maintenant le fichier d'exemple "vimrc" :
+        :r $VIMRUNTIME/vimrc_example.vim
 
-  Vous pouvez accder  l'aide sur  peu prs n'importe quel sujet en donnant
-  des arguments  la commande  :help . Essayez par exemple (n'oubliez pas
-  d'appuyer sur <Entre>):
+  3. Enregistrez le fichier avec :
+        :w
 
-	:help w
-	:help c_<T
-	:help insert-index
-	:help user-manual
+  La prochaine fois que vous dmarrerez Vim, la coloration syntaxique sera
+  active. Vous pouvez ajouter tous vos rglages prfrs dans ce fichier
+  "vimrc". Pour plus d'informations, tapez  :help vimrc-intro
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		    Leon 8 : CRER UN SCRIPT DE DMARRAGE
+                            Leon 7.3 : COMPLTEMENT
+
 
-		  ** Activer les fonctionnalits de Vim. **
+          ** Compltement de ligne de commande avec CTRL-D et <TAB> **
+
+  1. Mettez Vim soit en mode non compatible :   set nocp
+
+  2. Regardez quels fichiers existent dans le rpertoire :  !ls  ou  !dir
 
-  Vim a beaucoup plus de fonctionnalits que Vi, mais la plupart de celles-ci
-  sont dsactives par dfaut.  Pour commencer  les utiliser, vous devez
-  crer un fichier "vimrc".
+  3. Tapez le dbut d'une commande :   :e
+
+  4. Appuyez  CTRL-D  et Vim affichera une liste de commandes qui commencent
+     par "e".
+
+  5. Appuyez  <TAB>  et Vim compltera le nom de la commande :  ":edit"
+
+  6. Ajoutez maintenant un espace et le dbut d'un fichier existant :
+     :edit  FIC
+
+  7  Appuyez  <TAB>. Vim va complter le nom (s'il est unique).
 
-  1. Commencez  diter le fichier "vimrc". Ceci dpend de votre systme:
-	:edit ~/.vimrc			pour Unix
-	:edit $VIM/_vimrc		pour MS-Windows
+NOTE : Le compltement fonctionne pour de nombreuse commandes. Essayez
+       d'appuyer CTRL-D et <TAB>. C'est utile en particulier pour  :help .
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              RSUM DE LA LEON 7
+
+
+  1. Tapez  :help  ou appuyez <F1> ou <Aide> pour ouvrir la fentre d'aide.
 
-  2. Intgrez maintenant le texte du fichier "vimrc" d'exemple:
-	:read $VIMRUNTIME/vimrc_example.vim
+  2. Tapez  :help cmd  pour trouver l'aide sur  cmd .
+
+  3. Tapez  CTRL-W CTRL-W  pour sauter  une autre fentre.
 
-  3. Enregistrez le fichier avec:
-	:write
+  4. Tapez  :q  pour fermer la fentre d'aide.
 
-  La prochaine fois que vous dmarrerez Vim, le surlignage syntactique sera
-  activ. Vous pouvez ajouter tous vos rglages prfrs dans ce fichier.
+  5. Crez un script de dmarrage vimrc pour conserver vos rglages prfrs.
+
+  6. Quand vous tapez une commande  :  appuyez CTRL-D pour voir les
+     compltements possibles. Appuyez <TAB> pour utiliser un compltement.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  Ceci conclut le Tutoriel Vim.  Le but tait de vous donner un bref aperu de
+  Ceci conclut le Tutoriel Vim. Le but tait de vous donner un bref aperu de
   l'diteur Vim, juste assez pour vous permettre d'utiliser l'diteur
-  relativement facilement.  Il est loin d'tre complet, vu que Vim a beaucoup
-  beaucoup plus de commandes.  Un Manuel de l'utilisateur est disponible en
-  anglais:  :help user-manual .
+  relativement facilement. Il est loin d'tre complet, vu que Vim a beaucoup
+  beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en
+  anglais :  :help user-manual .
 
   Pour continuer  dcouvrir et  apprendre Vim, il existe un livre traduit en
   franais. Il parle plus de Vi que de Vim, mais pourra vous tre utile.
-	L'diteur Vi - Collection Prcis et concis - par Arnold Robbins
-	diteur: O'Reilly France
-	ISBN: 2-84177-102-4
+        L'diteur Vi - Collection Prcis et concis - par Arnold Robbins
+        diteur : O'Reilly France
+        ISBN : 2-84177-102-4
 
   Deux livres en anglais sont galement mentionns dans la version originale
   de ce tutoriel, dont un qui traite spcifiquement de Vim. Merci de vous y
-  rfrer si vous tes intress.
+  rfrer si vous tes intresss.
 
   Ce tutoriel a t crit par Michael C. Pierce et Robert K. Ware de l'cole
   des Mines du Colorado et reprend des ides fournies par Charles Smith,
-  Universt d'tat du Colorado.  E-mail: bware@mines.colorado.edu.
+  Universit d'tat du Colorado. E-mail : bware@mines.colorado.edu.
 
   Modifi pour Vim par Bram Moolenar.
+  Traduit en Franais par Adrien Beau, en avril 2001.
+  Dernires mises  jour par Dominique Pell.
 
-  Traduit en Franais par Adrien Beau, en avril 2001.
-  E-mail:	version.francaise@free.fr
-  Last Change:	2003 May 29
+  E-mail :      dominique.pelle@gmail.com
+  Last Change : 2008 Nov 23
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.fr.utf-8
+++ b/runtime/tutor/tutor.fr.utf-8
@@ -1,5 +1,5 @@
 ===============================================================================
-= B i e n v e n u e  dans le  T u t o r i e l  de  V I M  -  Version 1.5.fr.2 =
+= B i e n v e n u e  dans le  T u t o r i e l  de  V I M  -  Version 1.7.fr.1 =
 ===============================================================================
 
      Vim est un éditeur très puissant qui a trop de commandes pour pouvoir
@@ -7,93 +7,100 @@
      décrire suffisamment afin de vous permettre d'utiliser simplement Vim.
 
      Le temps requis pour suivre ce cours est d'environ 25 à 30 minutes, selon
-     le temps que vous passerez à expérimenter.  Les commandes utilisées dans
-     les leçons modifieront le texte. Faites une copie de ce fichier afin de
-     vous entraîner dessus (si vous avez lancé "vimtutor" ceci est déjà une
-     copie).
+     le temps que vous passerez à expérimenter.
+
+     ATTENTION :
+     Les commandes utilisées dans les leçons modifieront le texte. Faites une
+     copie de ce fichier afin de vous entraîner dessus (si vous avez lancé
+     "vimtutor" ceci est déjà une copie).
 
      Il est important de garder en tête que ce cours est conçu pour apprendre
-     par la pratique.  Cela signifie que vous devez exécuter les commandes
-     pour les apprendre correctement.  Si vous vous contentez de lire le
-     texte, vous oublierez les commandes !
+     par la pratique. Cela signifie que vous devez exécuter les commandes
+     pour les apprendre correctement. Si vous vous contentez de lire le texte,
+     vous oublierez les commandes !
 
-     Maintenant, vérifiez que votre clavier n'est PAS verouillé en majuscules,
-     et appuyez la touche  j  le nombre de fois suffisant pour que la leçon
-     1.1 remplisse complètement l'écran.
+     Maintenant, vérifiez que votre clavier n'est PAS verrouillé en
+     majuscules, et appuyez la touche  j  le nombre de fois suffisant pour
+     que la Leçon 1.1 remplisse complètement l'écran.
+
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		      Leçon 1.1 : DÉPLACEMENT DU CURSEUR
+                      Leçon 1.1 : DÉPLACEMENT DU CURSEUR
 
 
   ** Pour déplacer le curseur, appuyez les touches h,j,k,l comme indiqué. **
-	    ^
-	    k	     Astuce:  La touche h est à gauche et déplace à gauche.
-      < h      l >	      La touche l est à droite et déplace à droite.
-	   j		      La touche j ressemble à une flèche vers le bas.
-	   v
+          ^
+          k        Astuce :  La touche h est à gauche et déplace à gauche.
+    < h       l >            La touche l est à droite et déplace à droite.
+          j                  La touche j ressemble à une flèche vers le bas.
+          v
   1. Déplacez le curseur sur l'écran jusqu'à vous sentir à l'aise.
 
   2. Maintenez la touche Bas (j) enfoncée jusqu'à ce qu'elle se répète.
----> Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante.
+     Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante.
 
   3. En utilisant la touche Bas, allez à la Leçon 1.2.
 
-Note: Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap>
-      pour revenir en mode Normal. Puis retapez la commande que vous vouliez.
+NOTE : Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap>
+       pour revenir en mode Normal. Puis retapez la commande que vous vouliez.
 
-Note: Les touches fléchées devraient également fonctionner. Mais en utilisant
-      hjkl vous pourrez vous déplacer beaucoup plus rapidement, une fois que
-      vous aurez pris l'habitude.
+NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisant
+       hjkl vous pourrez vous déplacer beaucoup plus rapidement, une fois que
+       vous aurez pris l'habitude.
+
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		     Leçon 1.2 : ENTRÉE ET SORTIE DE VIM
+                     Leçon 1.2 : SORTIR DE VIM
 
 
- !! NOTE: Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !!
+ !! NOTE : Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !!
 
-  1. Appuyez la touche	<Échap>  (pour être sûr d'être en mode Normal).
-
-  2. Tapez:			:q! <Entrée>
+  1. Appuyez la touche  <Échap>  (pour être sûr d'être en mode Normal).
 
----> Ceci quitte l'éditeur SANS sauver les changements que vous avez faits.
-     Si vous voulez enregistrer les changements et sortir, tapez:
-				:wq <Entrée>
+  2. Tapez :  :q! <Entrée>
+     Ceci quitte l'éditeur SANS enregistrer les changements que vous avez
+     faits.
 
-  3. Lorsque l'invite du 'shell' vous sera présentée, tapez la commande qui
-     vous a amené dans ce tutoriel.  Cela pourrait être:    vimtutor <Entrée>
-     Normalement, vous utiliseriez:			    vim tutor <Entrée>
-
----> 'vim' lance l'éditeur, 'tutor' est le fichier que vous souhaitez éditer.
+  3. Lorsque l'invite du shell vous sera présentée, tapez la commande qui
+     vous a mené dans ce tutoriel. Cela pourrait être :    vimtutor <Entrée>
 
   4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes
-     1 à 3 pour sortir puis rentrer dans l'éditeur.  Déplacez ensuite le
-      curseur jusqu'à la Leçon 1.3.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		  Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT
+     1 à 3 pour sortir puis rentrer dans l'éditeur.
+
+NOTE :  :q! <Entrée> annule tous le changements que vous avez fait. Dans
+         quelques leçons, vous apprendrez à enregistrer les changements.
+
+  5. Déplacez le curseur à la Leçon 1.3.
 
 
- ** En mode Normal, appuyez  x	pour effacer le caractère sous le curseur. **
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                  Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT
+
+
+         ** Appuyez   x   pour effacer le caractère sous le curseur. **
 
   1. Déplacez le curseur sur la ligne marquée ---> ci-dessous.
 
   2. Pour corriger les erreurs, déplacez le curseur jusqu'à ce qu'il soit
      sur un caractère à effacer.
 
-  3. Appuyez la touche	x  pour effacer le caractère redondant.
+  3. Appuyez la touche  x  pour effacer le caractère redondant.
 
   4. Répétez les étapes 2 à 4 jusqu'à ce que la phrase soit correcte.
 
 ---> La vvache à sautéé au-ddessus dde la luune.
 
-  5. Maintenant que la ligne est correcte, passez à la leçon 1.4.
+  5. Maintenant que la ligne est correcte, passez à la Leçon 1.4.
 
-NOTE: En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par
-      la pratique.
+NOTE : En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par
+       la pratique.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		   Leçon 1.4 : ÉDITION DE TEXTE - INSERTION
+                    Leçon 1.4 : ÉDITION DE TEXTE - INSERTION
 
 
-	   ** En mode Normal, appuyez  i  pour insérer du texte. **
+                    ** Appuyez  i  pour insérer du texte. **
 
   1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous.
 
@@ -108,38 +115,94 @@ NOTE: En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par
 ---> Il mnqe caractères cette .
 ---> Il manque des caractères dans cette ligne.
 
-  5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez au
-     résumé ci-dessous.
+  5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez à la
+     Leçon 1.5.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leçon 1.5 : ÉDITION DE TEXTE - AJOUTER
+
+
+                    ** Appuyez  A  pour ajouter du text. **
+
+  1. Déplacez le curseur sur la première ligne ci-dessous marquée --->.
+     Peu importe sur quel caractère se trouve le curseur sur cette ligne.
+
+  2. Appuyez  A  et tapez les ajouts nécessaires.
+
+  3. Quand le texte a été ajouté, appuyez <Échap> pour revenir en mode
+     Normal.
+
+  4. Déplacez le curseur sur la seconde ligne marquée ---> et répétez les
+     étapes 2 et 3 pour corriger la phrase.
+
+---> Il manque du texte à partir de cet
+     Il manque du texte à partir de cette ligne.
+---> Il manque aussi du te
+     Il manque aussi du texte ici.
+
+  5. Quand vous vous sentez suffisamment à l'aise pour ajouter du texte,
+     allez à la Leçon 1.6.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			     RÉSUMÉ DE LA LEÇON 1
+                         Leçon 1.6 : ÉDITER UN FICHIER
+
+
+          ** Utilisez  :wq  pour enregistrer un fichier et sortir. **
+
+!! NOTE : Lisez toute la leçon avant d'exécuter les instructions ci-dessous !!
+
+  1. Sortez de ce tutoriel comme vous l'avez fait dans la Leçon 1.2 :  :q!
+     Ou, si vous avez accès à un autre terminal, exécutez y les actions
+     qui suivent.
+
+  2. À l'invite du shell, tapez cette commande :  vim tutor <Entrée>
+     'vim' est la commande pour démarrer l'éditeur Vim, 'tutor' est le
+     nom du fichier que vous souhaitez éditer. Utilisez un fichier qui peut
+     être modifié.
+
+  3. Insérez et effacez du texte comme vous l'avez appris dans les leçons
+     précédentes.
+
+  4. Enregistrez le fichier avec les changements et sortez de Vim avec :
+       :wq <Entrée>
+
+  5. Si vous avez quitté vimtutor à l'étape 1, recommencez vimtutor et
+     déplacez-vous en bas vers le résumé suivant.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                             RÉSUMÉ DE LA LEÇON 1
+
 
   1. Le curseur se déplace avec les touches fléchées ou les touches hjkl.
-	 h (gauche)	j (bas)        k (haut)       l (droite)
+           h (gauche)      j (bas)      k (haut)      l (droite)
 
-  2. Pour entrer dans Vim (à l'invite %) tapez:  vim FICHIER <Entrée>
+  2. Pour démarrer Vim à l'invite du shell tapez :  vim FICHIER <Entrée>
 
-  3. Pour quitter Vim tapez:  <Échap> :q! <Entrée>  pour perdre tous les
-						    changements.
-		   OU tapez:  <Échap> :wq <Entrée>  pour enregistrer les
-						    changements.
+  3. Pour quitter Vim tapez :  <Échap> :q! <Entrée>  pour perdre tous les
+                                                     changements.
+                   OU tapez :  <Échap> :wq <Entrée>  pour enregistrer les
+                                                     changements.
 
-  4. Pour effacer un caractère sous le curseur en mode Normal tapez:  x
+  4. Pour effacer un caractère sous le curseur tapez :  x
 
-  5. Pour insérer du texte au niveau du curseur en mode Normal tapez:
-	 i   tapez le texte   <Échap>
+  5. Pour insérer ou ajouter du texte tapez :
+         i   tapez le texte à insérer avant le curseur   <Échap>
+         A   tapez le texte à ajouter après le curseur   <Échap>
 
-NOTE: Appuyer  <Échap>	vous place en mode Normal ou annule une commande
-      partiellement tapée dont vous ne voudriez plus.
+NOTE : Appuyer  <Échap>  vous place en mode Normal ou annule une commande
+       partiellement tapée dont vous ne voulez plus.
 
-Passez maintenant à la Leçon 2.
+Passez maintenant à la leçon 2.
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			   Leçon 2.1 : EFFACEMENTS
+                       Leçon 2.1 : COMMANDES D'EFFACEMENT
 
 
-	    ** Tapez  dw  pour effacer jusqu'à la fin d'un mot. **
+                     ** Tapez  dw  pour effacer un mot. **
 
   1. Appuyez  <Échap>  pour être sûr d'être en mode Normal.
 
@@ -147,91 +210,139 @@ Passez maintenant à la Leçon 2.
 
   3. Placez le curseur sur le début d'un mot qui a besoin d'être effacé.
 
-  4. Tapez  dw	pour faire disparaître ce mot.
+  4. Tapez  dw  pour faire disparaître ce mot.
 
-NOTE: Les lettres  dw  apparaîtront sur la dernière ligne de l'écran lors de
-      votre frappe. Si vous avez mal tapé quelque chose, appuyez <Échap> et
-      recommencez.
+NOTE : La lettre  d  apparaîtra sur la dernière ligne de l'écran lors de
+       votre frappe. Vim attend que vous tapiez  w . Si vous voyez un autre
+       caractère que  d  vous avez tapé autre chose ; appuyez <Échap> et
+       recommencez.
 
 ---> Il y a quelques drôle mots qui n'ont rien à faire papier sur cette ligne.
 
   5. Répétez les étapes 3 et 4 jusqu'à ce que la phrase soit correcte et allez
      à la Leçon 2.2.
 
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			Leçon 2.2 : PLUS D'EFFACEMENTS
+                  Leçon 2.2 : PLUS DE COMMANDES D'EFFACEMENTS
 
 
-	  ** Tapez  d$	pour effacer jusqu'à la fin de la ligne. **
+          ** Tapez  d$  pour effacer jusqu'à la fin de la ligne. **
 
   1. Appuyez  <Échap>  pour être sûr d'être en mode Normal.
 
   2. Déplacez le curseur sur la ligne marquée ---> ci-dessous.
 
-  3. Déplacez le curseur jusqu'à la fin correcte de la ligne
-     (APRÈS le premier . ).
+  3. Déplacez le curseur jusqu'à la fin de la ligne correcte (APRÈS le
+     premier . ).
 
-  4. Tapez  d$	pour effacer jusqu'à la fin de la ligne.
+  4. Tapez  d$  pour effacer jusqu'à la fin de la ligne.
 
 ---> Quelqu'un a tapé la fin de cette ligne deux fois. cette ligne deux fois.
 
   5. Allez à la Leçon 2.3 pour comprendre ce qui se passe.
 
 
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+             Leçon 2.3 : À PROPOS DES OPÉRATEURS ET DES MOUVEMENTS
 
 
+  Plusieurs commandes qui changent le texte sont constituées d'un opérateur
+  et d'un mouvement. Le format pour une commande d'effacement avec l'opérateur
+  d  d'effacement est le suivant :
+
+        d   mouvement
+
+  Où :
+    d         - est l'opérateur d'effacement
+    mouvement - est le mouvement sur lequel agit l'opérateur (listés
+                ci-dessous)
+
+  Une courte liste de mouvements :
+    w - jusqu'au début du prochain mot, en EXCLUANT son premier caractère.
+    e - jusqu'à la fin du mot courant, en EXCLUANT son denier caractère.
+    $ - jusqu'à la fin de la ligne, en INCLUANT son dernier caractère.
+
+  Ainsi, taper  de  va effacer depuis le curseur jusqu'à la fin du mot.
+
+NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le
+       curseur comme indiqué.
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		   Leçon 2.3 : DES COMMANDES ET DES OBJETS
+            Leçon 2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT
 
 
-  Le format de la commande d'effacement  d  est le suivant:
+       ** Taper un nombre avant un mouvement le répète autant de fois. **
 
-	 [nombre]  d  objet	   OU	     d	[nombre]  objet
-  où:
-    nombre - est combien de fois exécuter la commande (optionnel, défaut: 1).
-    d - est la commande d'effacement.
-    objet - est ce sur quoi la commande va opérer (liste ci-dessous).
+  1. Déplacez le curseur au début de la ligne marquée ---> ci-dessous.
+
+  2. Tapez  2w  pour déplacer le curseur de 2 mots vers l'avant.
 
-  Une courte liste d'objets:
-    w - du curseur jusqu'à la fin du mot, y compris l'espace qui suit.
-    e - du curseur jusqu'à la fin du mot, SANS l'espace qui suit.
-    $ - du curseur jusqu'à la fin de la ligne.
+  3. Tapez  3e  pour déplacer le curseur à la fin du troisième mot vers
+     l'avant.
+
+  4. Tapez  0  (zéro) pour déplacer au début de la ligne.
 
-NOTE: Pour les aventureux, le seul appui d' objet  en mode Normal, sans
-      commande, déplace le curseur comme indiqué dans la liste des objets.
+  5. Répétez les étapes 2 et 3 avec des quantificateurs différents.
 
+---> Ceci est juste une ligne avec des mots où vous pouvez vous déplacer.
 
+  6. Déplacez-vous à la Leçon 2.5.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		 Leçon 2.4 : UNE EXCEPTION À 'COMMANDE-OBJET'
+            Leçon 2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS
+
+
+       ** Taper un nombre avec un opérateur le répète autant de fois. **
+
+  Outre la combinaison de l'opérateur d'effacement avec un déplacement
+  mentionné ci-dessus, vous pouvez insérer un nombre (quantificateur)
+  pour effacez encore plus :
+       d   nombre   déplacement
+
+  1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne
+     marquée --->.
 
-	      ** Tapez	dd  pour effacer une ligne complète. **
+  2. Tapez  d2w  pour effacer les deux mots en MAJUSCULES.
+
+  3. Répétez les étapes 1 et 2 avec des quantificateurs différents pour
+     effacer les mots suivants en MAJUSCULES à l'aide d'une commande.
+
+---> Cette ABC DE ligne FGHI JK LMN OP de mots est Q RS TUV nettoyée.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Leçon 2.6 : OPÉREZ SUR DES LIGNES
+
+
+              ** Tapez   dd   pour effacer une ligne complète. **
 
   Vu le nombre de fois où l'on efface des lignes complètes, les concepteurs
-  de Vi ont décidé qu'il serait plus facile de taper simplement deux d à la
-  suite pour effacer une ligne.
+  de Vi ont décidé qu'il serait plus facile de taper simplement deux  d
+  pour effacer une ligne.
 
   1. Placez le curseur sur la seconde ligne de la phrase ci-dessous.
-  2. Tapez  dd	pour effacer la ligne.
+  2. Tapez  dd  pour effacer la ligne.
   3. Maintenant allez à la quatrième ligne.
-  4. Tapez  2dd  (rappelez-vous, nombre-commande-objet) pour effacer les
-     deux lignes.
+  4. Tapez   2dd   pour effacer deux lignes.
 
-      1)  Les roses sont rouges,
-      2)  La boue c'est drôle,
-      3)  Les violettes sont bleues,
-      4)  J'ai une voiture,
-      5)  Les horloges donnent l'heure,
-      6)  Le sucre est doux
-      7)  Tout comme vous.
+--->  1)  Les roses sont rouges,
+--->  2)  La boue c'est drôle,
+--->  3)  Les violettes sont bleues,
+--->  4)  J'ai une voiture,
+--->  5)  Les horloges donnent l'heure,
+--->  6)  Le sucre est doux
+--->  7)  Tout comme vous.
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			    Leçon 2.5 : L'ANNULATION
+                            Leçon 2.7 : L'ANNULATION
+
 
-	    ** Tapez  u  pour annuler les dernières commandes. **
-	       ** Tapez  U  pour récupérer toute une ligne. **
+            ** Tapez  u  pour annuler les dernières commandes. **
+               ** Tapez  U  pour récupérer toute une ligne. **
 
   1. Déplacez le curseur sur la ligne marquée ---> ci-dessous et placez-le sur
      la première erreur.
@@ -239,10 +350,10 @@ NOTE: Pour les aventureux, le seul appui
   3. Puis tapez  u  pour annuler la dernière commande exécutée.
   4. Cette fois, corrigez toutes les erreurs de la ligne avec la commande  x .
   5. Puis tapez un  U  majuscule pour remettre la ligne dans son état initial.
-  6. Puis tapez  u  deux-trois fois pour annuler le  U	et les commandes
+  6. Puis tapez  u  deux-trois fois pour annuler le  U  et les commandes
      précédentes.
-  7. Maintenant tapez  Ctrl-R  (maintenez la touche Ctrl enfoncée pendant que
-     vous appuyez sur R) deux-trois fois pour refaire les commandes (annuler
+  7. Maintenant tapez  CTRL-R  (maintenez la touche CTRL enfoncée pendant que
+     vous appuyez R) deux-trois fois pour refaire les commandes (annuler
      les annulations).
 
 ---> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'.
@@ -250,57 +361,64 @@ NOTE: Pour les aventureux, le seul appui
   8. Ce sont des commandes très utiles. Maintenant, allez au résumé de la
      Leçon 2.
 
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			     RÉSUMÉ DE LA LEÇON 2
+                             RÉSUMÉ DE LA LEÇON 2
 
 
-  1. Pour effacer du curseur jusqu'à la fin d'un mot tapez:	dw
+  1. Pour effacer du curseur jusqu'au mot suivant tapez :         dw
 
-  2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez:	d$
+  2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez :   d$
+
+  3. Pour effacer toute une ligne tapez :                         dd
 
-  3. Pour effacer toute une ligne tapez:  dd
+  4. Pour répéter un déplacement ajoutez un quantificateur :      2w
 
-  4. Le format d'une commande en mode Normal est:
+  5. Le format d'une commande de changement est :
+
+       opérateur   [nombre]   déplacement
 
-       [nombre]  commande  objet     OU     commande  [nombre]	objet
-     où:
-       nombre - est combien de fois répéter la commande
-       commande - est ce qu'il faut faire, par exemple	d  pour effacer
-       objet - est ce sur quoi la commande devrait agir, par exemple w (mot),
-	       $ (jusqu'à la fin de la ligne), etc.
+     Où :
+       opérateur   - est ce qu'il faut faire, comme  d  pour effacer.
+       [nombre]    - un quantificateur optionnel pour répéter le déplacement.
+       déplacement - déplace le long du texte à opérer, tel que  w  (mot),
+                     $ (jusqu'à la fin de ligne), etc.
 
-  5. Pour annuler des actions précédentes, tapez:	     u	(u minuscule)
-     Pour annuler tous les changements sur une ligne tapez:  U	(U majuscule)
-     Pour annuler l'annulation tapez:			     Ctrl-R
+  6. Pour se déplacer au début de ligne, utilisez un zéro :  0
+
+  5. Pour annuler des actions précédentes, tapez :            u (u minuscule)
+     Pour annuler tous les changements sur une ligne tapez :  U (U majuscule)
+     Pour annuler l'annulation tapez :                        CTRL-R
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			     Leçon 3.1 : LE COLLAGE
+                             Leçon 3.1 : LE COLLAGE
 
 
-   ** Tapez  p	pour placer après le curseur ce qui vient d'être effacé. **
+   ** Tapez  p  pour placer après le curseur ce qui vient d'être effacé. **
 
-  1. Placez le curseur sur la première ligne du "poème" ci-dessous.
+  1. Placez le curseur sur la première ligne ci-dessous marquée --->.
 
-  2. Tapez  dd	pour effacer la ligne et la placer dans le tampon de Vim.
+  2. Tapez  dd  pour effacer la ligne et la placer dans un registre de Vim.
 
-  3. Déplacez le curseur sur la ligne qui PRÉCÈDE l'endroit où vous voulez
-     remettre la ligne effacée.
+  3. Déplacez le curseur sur la ligne c) au dessus où vous voulez remettre la
+     ligne effacée.
 
-  4. En mode Normal, tapez  p  pour remettre la ligne.
+  4. En mode Normal, tapez   p   pour remettre la ligne en dessous du curseur.
 
   5. Répétez les étapes 2 à 4 pour mettre toutes les lignes dans le bon ordre.
 
-     d) Et vous, qu'apprenez-vous ?
-     b) Les violettes sont bleues,
-     c) L'intelligence s'apprend,
-     a) Les roses sont rouges,
+---> d) Et vous, qu'apprenez-vous ?
+---> b) Les violettes sont bleues,
+---> c) L'intelligence s'apprend,
+---> a) Les roses sont rouges,
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			 Leçon 3.2 : LE REMPLACEMENT
+                    Leçon 3.2 : LA COMMANDE DE REMPLACEMENT
 
 
- ** Tapez  r  et un caractère pour remplacer le caractère sous le curseur. **
+     ** Tapez  rx  pour remplacer un caractère sous le curseur par  x . **
 
   1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous.
 
@@ -308,31 +426,32 @@ NOTE: Pour les aventureux, le seul appui
 
   3. Tapez  r  suivi du caractère qui doit corriger l'erreur.
 
-  4. Répétez les étapes 2 et 3 jusqu'à ce que la première ligne soit correcte.
+  4. Répétez les étapes 2 et 3 jusqu'à ce que la première ligne soit égale
+     à la seconde.
 
 --->  Quand cette ligne a été sauvie, quelqu'un a lait des faunes de frappe !
 --->  Quand cette ligne a été saisie, quelqu'un a fait des fautes de frappe !
 
   5. Maintenant, allez à la Leçon 3.3.
 
-NOTE: N'oubliez pas que vous devriez apprendre par la pratique, pas par
-      mémorisation.
+NOTE : N'oubliez pas que vous devriez apprendre par la pratique, pas par
+       mémorisation.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			  Leçon 3.3 : LE CHANGEMENT
+                     Leçon 3.3 : L'OPÉRATEUR DE CHANGEMENT
 
 
-	    ** Pour changer tout ou partie d'un mot, tapez  cw .**
+            ** Pour changer jusqu'à la fin d'un mot, tapez  ce .**
 
   1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous.
 
-  2. Placez le curseur sur le u de luhko.
+  2. Placez le curseur sur le  u  de luhko.
 
-  3. Tapez  cw	et corrigez le mot (dans notre cas, tapez  'igne'.)
+  3. Tapez  ce  et corrigez le mot (dans notre cas, tapez  'igne'.)
 
-  4. Appuyez <Échap> et placez-vous sur l'erreur suivante (le premier
-     caractère qui doit être changé).
+  4. Appuyez <Échap> et placez-vous sur le prochain caractère qui doit
+     être changé).
 
   5. Répétez les étapes 3 et 4 jusqu'à ce que la première phrase soit
      identique à la seconde.
@@ -340,171 +459,189 @@ NOTE: N'oubliez pas que vous devriez app
 ---> Cette luhko contient quelques myqa qui ont ricne d'être chantufip.
 ---> Cette ligne contient quelques mots qui ont besoin d'être changés.
 
-Notez que  cw  efface le mot et vous place ensuite en mode Insertion.
+Notez que  ce  efface le mot et vous place ensuite en mode Insertion.
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		    Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c
+                    Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c
 
 
-    ** Le changement fonctionne avec les mêmes objets que l'effacement. **
+    ** L'opérateur de changement fonctionne avec les mêmes déplacements
+       que l'effacement. **
 
-  1. Le changement fonctionne de la même manière que l'effacement.
-     Le format est:
+  1. L'opérateur de changement fonctionne de la même manière que
+     l'effacement. Le format est :
 
-	 [nombre]  c  objet	   OU	     c	[nombre]  objet
+         c   [nombre]   déplacement
 
-  2. Les objets sont également les mêmes:  w (mot), $ (fin de ligne), etc.
+  2. Les déplacements sont identiques :  w (mot) et  $ (fin de ligne).
 
-  3. Déplacez-vous à la première ligne marquée ---> ci-dessous.
+  3. Déplacez-vous sur la première ligne marquée ---> ci-dessous.
 
   4. Placez le curseur sur la première erreur.
 
-  5. Tapez  c$	pour changer la fin de la ligne, rendez-là identique à la
-     seconde ligne, puis tapez <Échap>.
+  5. Tapez  c$  et tapez le reste de la ligne afin qu'elle soit identique
+     à la seconde ligne, puis tapez <Échap>.
 
 ---> La fin de cette ligne doit être rendue identique à la seconde.
----> La fin de cette ligne doit être corrigée avec la commande	c$ .
+---> La fin de cette ligne doit être corrigée avec la commande  c$ .
+
+NOTE :  Vous pouvez utilisez la touche Retour Arrière pour corriger les
+        erreurs lorsque vous tapez.
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			     RÉSUMÉ DE LA LEÇON 3
+                             RÉSUMÉ DE LA LEÇON 3
 
 
-  1. Pour remettre du texte qui vient d'être effacé, tapez  p . Cela Place le
+  1. Pour remettre le texte qui a déjà été effacé, tapez  p . Cela Place le
      texte effacé APRÈS le curseur (si une ligne complète a été effacée, elle
      sera placée sous la ligne du curseur).
 
   2. Pour remplacer le caractère sous le curseur, tapez  r  suivi du caractère
      qui remplacera l'original.
 
-  3. Le changement vous permet de changer l'objet spécifié, du curseur jusqu'à
-     la fin de l'objet. Par exemple, tapez  cw	pour changer du curseur
-     jusqu'à la fin du mot,  c$  pour changer jusqu'à la fin d'une ligne.
+  3. L'opérateur de changement vous permet de changer depuis la position du
+     curseur jusqu'où le déplacement vous amène. Par exemple, tapez  ce
+     pour changer du curseur jusqu'à la fin du mot,  c$  pour changer jusqu'à
+     la fin d'une ligne.
 
-  4. Le format pour le changement est:
+  4. Le format pour le changement est :
 
-	 [nombre]  c  objet	   OU	     c	[nombre]  objet
+         c   [nombre]   déplacement
 
 Passez maintenant à la leçon suivante.
 
 
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		   Leçon 4.1 : POSITION ET ÉTAT DU FICHIER
+               Leçon 4.1 : POSITION DU CURSEUR ET ÉTAT DU FICHIER
 
 
-  ** Tapez Ctrl-G pour afficher votre position dans le fichier et son état.
-     Utilisez Maj-G pour vous rendre à une ligne donnée du fichier. **
+  ** Tapez CTRL-G pour afficher votre position dans le fichier et son état.
+     Tapez  G  pour vous rendre à une ligne donnée du fichier. **
+
+NOTE : Lisez toute cette leçon avant d'effectuer l'une des étapes !!
 
-  Note: Lisez toute cette leçon avant d'effectuer l'une des étapes !
+  1. Maintenez enfoncée la touche CTRL et appuyez sur  g . On appelle cela
+     CTRL-G. Une ligne d'état va apparaître en bas de l'écran avec le nom
+     du fichier et le numéro de la ligne où vous êtes. Notez ce numéro, il
+     servira lors de l'étape 3.
 
-  1. Maintenez enfoncée la touche Ctrl et appuyez sur  G .  Une ligne d'état
-     va apparaître en bas de l'écran avec le nom du fichier et le numéro de la
-     ligne où vous êtes.  Notez ce numéro, il servira lors de l'étape 3.
+NOTE : Vous pouvez peut-être voir le curseur en bas à droite de l'écran.
+       Ceci arrive quand l'option 'ruler' est activée (voir  :help 'ruler')
 
-  2. Tapez  G  majuscule (Maj-G) pour vous rendre à la fin du fichier.
+  2. Tapez  G   pour vous déplacer à la fin du fichier.
+     Tapez  gg  pour vous déplacer au début du fichier.
 
-  3. Tapez le numéro de la ligne où vous étiez suivi de Maj-G.	Cela vous
-     ramènera à la ligne où vous étiez au départ.
-     (Lorsque vous tapez les chiffres, ils n'apparaissent PAS à l'écran).
+  3. Tapez le numéro de la ligne où vous étiez suivi de   G . Cela vous
+     ramènera à la ligne où vous étiez au départ quand vous aviez appuyé
+     CTRL-G.
 
   4. Si vous vous sentez prêt à faire ceci, effectuez les étapes 1 à 3.
 
 
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			    Leçon 4.2 : LA RECHERCHE
+                            Leçon 4.2 : LA RECHERCHE
 
 
-	  ** Tapez  /  suivi d'un texte pour rechercher ce texte. **
+          ** Tapez  /  suivi d'un texte pour rechercher ce texte. **
 
   1. Tapez le caractère  /  en mode Normal. Notez que celui-ci et le curseur
      apparaissent en bas de l'écran, comme lorsque l'on utilise  : .
 
-  2. Puis tapez 'errreuur' <Entrée>.  C'est le mot que vous voulez rechercher.
+  2. Puis tapez 'errreuur' <Entrée>. C'est le mot que vous voulez rechercher.
 
-  3. Pour rechercher à nouveau le même texte, tapez simplement	n .
-     Pour rechercher le même texte dans la direction opposée, tapez  Maj-N .
+  3. Pour rechercher à nouveau le même texte, tapez simplement  n .
+     Pour rechercher le même texte dans la direction opposée, tapez  N .
 
-  4. Si vous voulez rechercher un texte vers le haut du fichier, utilisez  ?
-     à la place de  / .
+  4. Pour rechercher une phrase dans la direction opposée, utilisez  ?
+     au lieu de  / .
 
----> erreur ne s'écrit pas "errreuur"; errreuur est une erreur.
+---> erreur ne s'écrit pas "errreuur" ; errreuur est une erreur.
 
-Note: Quand la recherche atteint la fin du fichier, elle reprend au début.
-
+NOTE : Quand la recherche atteint la fin du fichier, elle reprend au début
+       sauf si l'option 'wrapscan' est déactivée.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-	    Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES
+            Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES
 
 
-	   ** Tapez  %	pour trouver des ), ] ou } correspondants. **
+           ** Tapez  %  pour trouver des ), ] ou } correspondants. **
 
   1. Placez le curseur sur l'un des (, [ ou { de la ligne marquée --->
      ci-dessous.
 
   2. Puis tapez le caractère  % .
 
-  3. Le curseur devrait se placer sur la parenthèse correspondante.
+  3. Le curseur se déplacera sur la parenthèse out crochet correspondant.
 
-  4. Tapez  %  pour replacer le curseur sur l'autre parenthèse.
+  4. Tapez  %  pour replacer le curseur sur la parenthèse ou crochet
+     correspondant.
+
+  5. Déplacez le curseur sur un autre (,),[,],{ ou } et regardez ce que
+     fait  % .
 
 ---> Voici ( une ligne de test contenant des (, des [ ] et des { } )).
 
-Note: Cette fonctionnalité est très utile lors du débogage d'un programme qui
-      contient des parenthèses déséquilibrées !
-
-
+NOTE : Cette fonctionnalité est très utile lors du débogage d'un programme qui
+       contient des parenthèses déséquilibrées !
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-	       Leçon 4.4 : UNE MANIÈRE DE CORRIGER LES ERREURS
+                    Leçon 4.4 : LA COMMANDE DE SUBSTITUTION
 
 
-  ** Tapez  :s/ancien/nouveau/g  pour remplacer 'ancien' par 'nouveau'.  **
+    ** Tapez  :s/ancien/nouveau/g  pour remplacer 'ancien' par 'nouveau'. **
 
   1. Déplacez le curseur sur la ligne marquée ---> ci-dessous.
 
   2. Tapez  :s/lee/le <Entrée> . Notez que cette commande change seulement la
-     première occurence sur la ligne.
+     première occurrence de "lee" dans la ligne.
 
-  3. Puis tapez  :s/lee/le/g  qui ordonne de faire une substitution globale
-     sur la ligne. Cela change toutes les occurences sur la ligne
+  3. Puis tapez  :s/lee/le/g . L'ajout du drapeau  g  ordonne de faire une
+     substitution globale sur la ligne, et change toutes les occurrences de
+     "lee" sur la ligne.
+
+---> lee meilleur moment pour regarder lees fleurs est pendant lee printemps.
 
----> lee meilleur moment pour regarder lees fleurs est pendant lee Printemps.
-
-  4. Pour changer toutes les occurences d'un texte, entre deux lignes,
-     tapez  :#,#s/ancien/nouveau/g  où #,# sont les numéros des deux lignes.
-     Tapez  :%s/ancien/nouveau/g    pour changer chaque occurence dans tout
-				    le fichier.
+  4. Pour changer toutes les occurrences d'un texte, entre deux lignes,
+     tapez  :#,#s/ancien/nouveau/g  où #,# sont les numéros de lignes de la
+                                    plage où la substitution doit être faite.
+     Tapez  :%s/ancien/nouveau/g    pour changer toutes les occurrences dans
+                                    tout le fichier.
+     Tapez  :%s/ancien/nouveau/gc   pour trouver toutes les occurrences dans
+                                    tout le fichier avec une invite pour
+                                    confirmer ou infirmer chaque substitution.
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			     RÉSUMÉ DE LA LEÇON 4
+                             RÉSUMÉ DE LA LEÇON 4
 
 
-  1. Ctrl-G  affiche votre position dans le fichier et l'état de celui-ci.
-     Maj-G  vous place à la fin du fichier. Un numéro de ligne suivi de Maj-G
-     vous place à cette ligne.
+  1. CTRL-G       affiche la position dans le fichier et l'état de celui-ci.
+               G  déplace à la fin du fichier.
+     nombre    G  déplace au numéro de ligne.
+              gg  déplace à la première ligne.
 
   2. Taper  /  suivi d'un texte recherche ce texte vers l'AVANT.
      Taper  ?  suivi d'un texte recherche ce texte vers l'ARRIÈRE.
-     Après une recherche tapez	n  pour trouver l'occurence suivante dans la
-     même direction ou	Maj-N  pour rechercher dans la direction opposée.
+     Après une recherche tapez  n  pour trouver l'occurrence suivante dans la
+     même direction ou  Maj-N  pour rechercher dans la direction opposée.
 
   3. Taper  %  lorsque le curseur est sur  (, ), [, ], { ou }  déplace
      celui-ci sur le caractère correspondant.
 
-  4. Pour remplacer le premier aa par bb sur une ligne tapez	 :s/aa/bb
-     Pour remplacer tous les aa par bb sur une ligne tapez	 :s/aa/bb/g
-     Pour remplacer du texte entre deux numéros de ligne tapez	 :#,#s/aa/bb/g
-     Pour remplacer toutes les occurences dans le fichier tapez  :%s/aa/bb/g
-     Pour demander une confirmation à chaque fois ajoutez 'c'	 :%s/aa/bb/gc
+  4. Pour remplacer le premier aa par bb sur une ligne tapez     :s/aa/bb
+     Pour remplacer tous les aa par bb sur une ligne tapez       :s/aa/bb/g
+     Pour remplacer du texte entre deux numéros de ligne tapez   :#,#s/aa/bb/g
+     Pour remplacer toutes les occurrences dans le fichier tapez :%s/aa/bb/g
+     Pour demander une confirmation à chaque fois ajoutez 'c'    :%s/aa/bb/gc
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-	      Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE
+              Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE
 
 
  ** Tapez  :!  suivi d'une commande externe pour exécuter cette commande. **
@@ -516,294 +653,386 @@ Note: Cette fonctionnalité est très utile lors du débogage d'un programme qui
      n'importe quelle commande valide pour votre interpréteur (shell).
 
   3. Par exemple, tapez  ls  après le  !  et appuyez <Entrée>. Ceci affichera
-     la liste des fichiers du dossier courant, comme si vous aviez tapé la
-     commande à l'invite du shell. Utilisez  :!dir  si	:!ls  ne marche pas.
+     la liste des fichiers du répertoire courant, comme si vous aviez tapé la
+     commande à l'invite du shell. Utilisez  :!dir  si  :!ls  ne marche pas.
 
-Note:  Il est possible d'exécuter n'importe quelle commande externe de cette
-       manière.
+NOTE :  Il est possible d'exécuter n'importe quelle commande externe de cette
+        manière, avec ou sans argument.
 
-Note:  Toutes les commandes  :  doivent finir par la frappe de <Entrée>.
-
+NOTE :  Toutes les commandes  :  doivent finir par la frappe de <Entrée>.
+        À partir de maintenant, nous ne le mentionnerons plus.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-	 Leçon 5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS
+         Leçon 5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS
 
 
- ** Pour enregistrer les changements faits au fichier, tapez  :w FICHIER . **
+ ** Pour enregistrer les changements faits au texte, tapez  :w FICHIER . **
 
-  1. Tapez  :!dir  ou  :!ls  pour avoir la liste des fichiers du dossier
-     courant. Vous savez déjà qu'il faut appuyer <Entrée> après cela.
+  1. Tapez  :!dir  ou  :!ls  pour avoir la liste des fichiers dans le
+     répertoire courant. Vous savez déjà qu'il faut appuyer <Entrée> après
+     cela.
 
   2. Choisissez un nom de fichier qui n'existe pas encore, par exemple TEST.
 
   3. Puis tapez  :w TEST  (où TEST est le nom que vous avez choisi).
 
-  4. Cela sauvegarde tout le fichier (Tutoriel Vim) sous le nom TEST.
-     Pour le vérifier, tapez  :!dir  pour revisualiser le contenu du dossier.
+  4. Cela enregistre tout le fichier (Tutoriel Vim) sous le nom TEST.
+     Pour le vérifier, tapez  :!dir  ou  :!ls  de nouveau pour revisualiser
+     votre répertoire.
 
-Notez que si vous quittez Vim et y retournez avec le fichier TEST, celui-ci
-sera une copie exacte du cours au moment où vous l'avez sauvé.
+NOTE : Si vous quittez Vim et le redémarrez de nouveau avec le fichier TEST,
+       celui-ci sera une copie exacte de ce cours au moment où vous l'avez
+       enregistré.
 
-  5. Maintenant, effacez le fichier en tapant (MS-DOS):    :!del TEST
-					   ou (Unix):	   :!rm TEST
+  5. Maintenant, effacez le fichier en tapant (MS-DOS) :   :!del TEST
+                                           ou (Unix) :     :!rm TEST
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		    Leçon 5.3 : UN ENREGISTREMENT SÉLECTIF
+                  Leçon 5.3 : SÉLECTION DU TEXTE À ENREGISTRER
 
 
-     ** Pour enregistrer une portion de fichier, tapez	:#,#w FICHIER **
+                  ** Pour enregistrer une portion du fichier,
+                      tapez :   v  déplacement  :w FICHIER  **
+
+  1. Déplacez le curseur sur cette ligne.
 
-  1. Tapez à nouveau  :!dir  ou  :!ls  pour visualiser le contenu du dossier
-     courant et choisissez un nom de fichier, tel que TEST.
+  2. Appuyez  v  et déplacez le curseur vers la cinquième ligne plus bas.
+     Remarquez que le texte est en surbrillance.
 
-  2. Déplacez le curseur jusqu'en haut de cette page et tapez  Ctrl-G  pour
-     connaître le numéro de cette ligne. NOTEZ CE NUMÉRO !
+  3. Appuyez  :  . En bas de l'écran  :'<,'> va apparaître.
 
-  3. Puis rendez-vous au bas de cette page et tapez à nouveau  Ctrl-G .
-     NOTEZ ÉGALEMENT CE NUMÉRO !
+  4. Tapez   w TEST  , où TEST est un nom de fichier qui n'existe pas.
+     Vérifiez que vous voyez  :'<,'>w TEST  avant de d'appuyer sur Entrée.
 
-  4. Pour enregistrer SEULEMENT une portion d'un fichier, tapez  :#,#w TEST
-     où #,# sont les deux numéros que vous avez notés (haut,bas) et TEST est
-     le nom du fichier.
+  5. Vim va enregistrer les lignes sélectionnées dans le fichier TEST.
+     Utilisez  :!dir  ou  !ls pour le voir. Ne l'effacez pas encore !
+     Nous allons l'utiliser dans la leçon suivante.
 
-  5. Une fois encore, vérifiez la présence du fichier avec  :!dir  mais NE
-     L'EFFACEZ PAS.
+NOTE : L'appui de  v  démarre la sélection Visuelle. Vous pouvez déplacer le
+       curseur pour agrandir ou rétrécir la sélection. Puis vous pouvez
+       utiliser un opérateur pour faire quelque chose sur le texte. Par
+       exemple,  d  efface le texte.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		 Leçon 5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS
+                 Leçon 5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS
 
 
-	** Pour insérer le contenu d'un fichier, tapez	:r FICHIER **
+        ** Pour insérer le contenu d'un fichier, tapez  :r FICHIER **
 
-  1. Tapez  :!dir  pour vérifier que votre fichier TEST est encore là.
-
-  2. Placez le curseur en haut de cette page.
+  1. Placez le curseur juste au dessus de cette ligne.
 
-NOTE:  Après avoir suivi l'étape 3 vous verrez à l'écran la Leçon 5.3.
-       Déplacez-vous vers le bas jusqu'à revenir à cette leçon.
+NOTE :  Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3.
+        Puis déplacez vous vers le bas pour voir cette leçon à nouveau.
 
-  3. Maintenant récupérez votre fichier TEST en utilisant la commande  :r TEST
+  2. Maintenant récupérez votre fichier TEST en utilisant la commande  :r TEST
      où TEST est le nom de votre fichier.
-
-NOTE:  Le fichier que vous récupérez est placé là où se trouve le curseur.
+     Le fichier que vous récupérez est placé au dessous de la ligne du curseur.
 
   4. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez
      qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle
      contenue dans le fichier.
 
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			     RÉSUMÉ DE LA LEÇON 5
-
-
-  1.  :!commande  exécute une commande externe.
-
-      Quelques exemples pratiques:
-	(MS-DOS)	(Unix)
-	 :!dir		 :!ls		 affiche le contenu du dossier courant.
-	 :!del FICHIER   :!rm FICHIER    efface FICHIER.
-
-  2.  :w FICHIER  enregistre le fichier Vim courant sur le disque avec pour
-		  nom FICHIER.
-
-  3.  :#,#w FICHIER  enregistre les lignes # à # dans le fichier FICHIER.
-
-  4.  :r FICHIER  récupère le fichier FICHIER et l'insère dans le fichier
-		  courant à partir de la position du curseur.
-
-
-
+NOTE :  Vous pouvez aussi lire la sortie d'une commande externe. Par exemple,
+        :r !ls  lit la sortie de la commande ls et la place sous la ligne du
+        curseur.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			    Leçon 6.1 : L'OUVERTURE
+                             RÉSUMÉ DE LA LEÇON 5
+
+
+  1. :!commande  exécute une commande externe.
+
+     Quelques exemples pratiques :
+      (MS-DOS)        (Unix)
+       :!dir           :!ls          affiche le contenu du répertoire courant.
+       :!del FICHIER   :!rm FICHIER  efface FICHIER.
+
+  2. :w FICHIER  enregistre le fichier Vim courant sur le disque avec pour
+                  nom FICHIER.
+
+  3. v  déplacement  :w FICHIER sauvegarde les lignes de la sélection Visuelle
+     dans le fichier FICHIER.
+
+  4. :r FICHIER  récupère le contenu du fichier FICHIER et l'insère sous la
+     position du curseur.
+
+  5. :r !dir  lit la sortie de la commande dir et l'insère sous la position
+     du curseur.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Leçon 6.1 : LA COMMANDE D'OUVERTURE
 
 
 ** Tapez  o  pour ouvrir une ligne sous le curseur et y aller en Insertion. **
 
   1. Déplacez le curseur sur la ligne marquée ---> ci-dessous.
 
-  2. Tapez  o  (minuscule) pour ouvrir une ligne SOUS le curseur et vous y
-     placer en mode Insertion.
+  2. Tapez la lettre   o   minuscule pour ouvrir une ligne SOUS le curseur et
+     vous y placer en mode Insertion.
 
-  3. Puis recopiez la ligne marquée ---> et appuyez sur <Échap> pour quitter
-     le mode Insertion.
+  3. Puis tapez du texte et appuyez <Échap> pour sortir du mode Insertion.
 
----> En tapant	o  le curseur se met sur la ligne ouverte, en mode Insertion.
+---> En tapant  o  le curseur se met sur la ligne ouverte, en mode Insertion.
 
   4. Pour ouvrir une ligne au DESSUS du curseur, tapez simplement un  O
      majuscule, plutôt qu'un  o  minuscule. Faites un essai sur la ligne
      ci-dessous.
-Ouvrez une ligne ci-dessus en tapant MAJ-O lorsque le curseur est ici.
 
+---> Ouvrez une ligne ci-dessus en tapant O lorsque le curseur est ici.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			      Leçon 6.2 : L'AJOUT
+                        Leçon 6.2 : LA COMMANDE D'AJOUT
 
 
-	    ** Tapez  a  pour insérer du texte APRÈS le curseur. **
+            ** Tapez  a  pour insérer du texte APRÈS le curseur. **
+
+  1. Placez le curseur au début de la ligne marquée ---> ci-dessous.
 
-  1. Placez le curseur à la fin de la première ligne marquée ---> ci-dessous
-     en tapant	$  en mode Normal.
+  2. Appuyez  e  jusqu'à ce que le curseur soit sur la fin de  li .
 
-  2. Tapez un  a  (minuscule) pour ajouter du texte APRÈS le caractère situé
-     sous le curseur. ( A  majuscule ajoute du texte à la fin de la ligne).
+  3. Appuyez  a  (minuscule) pour ajouter du texte APRÈS le curseur.
 
-Note: Ceci évite de taper  i , le dernier caractère, le texte à insérer,
-      <Échap>, curseur-à-droite, et finalement	x , juste pour ajouter du
-      texte à la fin d'une ligne !
+  4. Complétez le mot comme dans la ligne dessous. Appuyez <Échap> pour
+     sortir du mode Insertion.
+
+  5. Utilisez  e  pour vous déplacer vers le mot incomplet suivant et
+     répétez les étapes 3 et 4.
 
-  3. Maintenant, complétez la première ligne. Notez également que l'ajout est
-     identique au mode Insertion, hormis la position où le texte est inséré.
+---> Cette li vous perm de pratiq l'ajout de t dans une ligne.
+---> Cette ligne vous permet de pratiquer l'ajout de texte dans une ligne.
 
----> Cette ligne vous permet de pratiquer
----> Cette ligne vous permet de pratiquer l'ajout de texte en fin de ligne.
+NOTE :  a, i, A vont tous dans le même mode Insertion, la seule différence
+        est l'endroit où les caractères sont insérés.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		Leçon 6.3 : UNE AUTRE VERSION DU REMPLACEMENT
+                   Leçon 6.3 : UNE AUTRE MANIÈRE DE REMPLACER
 
 
        ** Tapez un  R  majuscule pour remplacer plus d'un caractère. **
 
   1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous.
+     Déplacez le curseur sur le début du premier xxx .
 
-  2. Placez le curseur au début du premier mot qui diffère de la seconde ligne
-     marquée ---> (le mot 'celle').
+  2. Appuyez maintenant  R  et tapez le nombre dessous dans la deuxième ligne,
+     de manière à remplacer le xxx .
+
+  3. Appuyez <Échap> pour quitter le mode Remplacement. Notez que le reste de
+     la ligne demeure inchangé.
 
-  3. Puis tapez  R  et remplacez le reste du texte de la première ligne en
-     tapant par dessus celui-ci, de manière à rendre la première ligne
-     identique à la seconde.
+  4. Répétez les étapes pour remplacer les xxx restants.
+
 
----> Pour rendre cette ligne identique à celle du dessous utilisez le clavier.
----> Pour rendre cette ligne identique à la seconde, tapez R et la correction.
+---> L'ajout de 123 à xxx donne xxx.
+---> L'ajout de 123 à 456 donne 579.
 
-  4. Notez que lorsque vous appuyez <Échap>, le texte qui n'a pas encore été
-     remplacé reste.
-
+NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les
+       caractères tapés effacent un caractère existant.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		       Leçon 6.4 : RÉGLAGE DES OPTIONS
+                     Leçon 6.4 : COPIER ET COLLER DU TEXTE
 
 
-  ** Réglons une option afin que la recherche et la substitution ignorent la
-     casse des caractères. **
+   ** Utilisez l'opérateur  y  pour copier du texte et  p  pour le coller **
+
+  1. Allez à la ligne marquée ---> ci-dessous et placez le curseur après "a)".
+
+  2. Démarrez le mode Visuel avec  v  et déplacez le curseur juste devant
+     "premier".
+
+  3. Tapez  y  pour copier le texte en surbrillance.
+
+  4. Déplacez la curseur à la fin de la ligne suivante :   j$
+
+  5. Tapez  p  pour coller le texte. Puis tapez :  un second <Échap> .
 
-  1. Recherchez 'ignore' en tapant  /ignore .
+  6. Utilisez le mode Visuel pour sélectionner "élément", copiez le avec  y  ,
+     déplacez vous à la fin de la ligne suivant avec  j$  et collez le texte
+     à cet endroit avec  p .
+
+--->  a) ceci est le premier élément.
+      b)
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Leçon 6.4 : RÉGLAGE DES OPTIONS
+
+
+    ** Réglons une option afin que la recherche et la substitution ignore la
+       casse des caractères. **
+
+  1. Recherchez 'ignore' en tapant :   /ignore <Entrée>
      Répétez ceci plusieurs fois en utilisant la touche  n .
 
-  2. Activez l'option 'ic' (Ignorer casse) en tapant  :set ic .
+  2. Activez l'option 'ic' (ignorer casse) en tapant  :set ic .
 
-  3. Puis poursuivez votre recherche en utilisant  n .
-     Répétez cette recherche plusieurs fois avec la touche  n .
+  3. Puis cherchez 'ignore' de nouveau en utilisant  n .
+     Remarquez que Ignore et IGNORE sont maintenant aussi trouvés.
 
   4. Activez les options 'hlsearch' et 'incsearch' avec  :set hls is .
 
   5. Puis recommencez une recherche, et faites bien attention à ce qui se
-     produit:  /ignore .
+     produit :  /ignore <Entrée>
+
+  6. Pour désactiver 'ignorer casse', entrez :  :set noic
 
-  6. Pour interrompre la mise en surbrillance des résultats, tapez:
-     :nohlsearch
+NOTE : Pour enlever la surbrillance des résultats, entrez :   :nohlsearch
+
+NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez
+       \c  dans la phrase :   /ignore\c  <Entrée>
+
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			     RÉSUMÉ DE LA LEÇON 6
+                             RÉSUMÉ DE LA LEÇON 6
 
 
-  1. Taper  o  ouvre une ligne SOUS le curseur et y place celui-ci en mode
-     Insertion. Taper un  O  majuscule ouvre une ligne au DESSUS de la ligne
-     où se trouve le curseur.
+  1. Taper  o  ouvre une ligne SOUS le curseur et démarre le mode Insertion.
+     Taper  O  ouvre une ligne au DESSUS du curseur.
+
+  2. Taper  a  pour insérer du texte APRÈS le curseur.
+     Taper  A  pour insérer du texte après la fin de ligne.
+
+  3. Taper  e  déplace à la fin du mot.
+
+  4. Taper  y  copie du texte,  p  le colle.
 
-  2. Tapez un  a  pour insérer du texte APRÈS le caractère où se trouve le
-     curseur. Taper un	A  majuscule ajoute du texte automatiquement à la fin
-     de la ligne.
+  5. Taper  R  majuscule active le mode Remplacement jusqu'à ce qu' <Échap>
+     soit appuyé.
 
-  3. Taper un  R  majuscule active le mode Remplacement jusqu'à ce que la
-     touche  <Échap>  soit appuyée pour en sortir.
+  6. Taper  ":set xxx"  active l'option "xxx". Quelques options sont :
+        'ic'  'ingnorecase' pour ignorer la casse lors des recherches.
+        'is'  'incsearch'   pour montrer les appariements partiels.
+        'hls' 'hlsearch'    pour mettre en surbrillance les appariements.
 
-  4. Taper  :set xxx  active l'option 'xxx'.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Leçon 7.1 : OBTENIR DE L'AIDE
 
 
+                  ** Utiliser le système d'aide en ligne. **
+
+  Vim a un système complet d'aide en ligne. Pour y accéder, essayez l'une de
+  ces trois méthodes :
+        - appuyez la touche <Help> (si vous en avez une)
+        - appuyez la touche <F1> (si vous en avez une)
+        - tapez  :help <Entrée>
 
 
+  Lisez le texte dans la fenêtre d'aide pour savoir comment fonctionne l'aide.
+  Tapez  CTRL-W CTRL-W   pour sauter d'une fenêtre à l'autre.
+  Tapez  :q <Entrée>     pour fermer la fenêtre d'aide.
 
+  Vous pouvez accéder à l'aide sur à peu près n'importe quel sujet en donnant
+  des arguments à la commande  :help . Essayez par exemple (n'oubliez pas
+  d'appuyer sur <Entrée>) :
+
+        :help w
+        :help c_CTRL-D
+        :help c_<T
+        :help insert-index
+        :help user-manual
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		     Leçon 7 : ACCÉDER À L'AIDE EN LIGNE
+                    Leçon 7.2 : CRÉER UN SCRIPT DE DÉMARRAGE
 
-		  ** Utiliser le système d'aide en ligne. **
+                   ** Activer les fonctionnalités de Vim. **
 
-  Vim a un système complet d'aide en ligne.  Pour y accéder, essayez l'une de
-  ces trois méthodes:
-	- appuyez la touche <Help> (si vous en avez une)
-	- appuyez la touche <F1> (si vous en avez une)
-	- tapez  :help <Entrée>
+  Vim a beaucoup plus de fonctionnalités que Vi, mais la plupart de celles-ci
+  sont désactivées par défaut. Pour commencer à les utiliser, vous devez
+  créer un fichier "vimrc".
 
-  Tapez  :q <Entrée>  pour fermer la fenêtre d'aide.
+  1. Commencez à éditer le fichier "vimrc". Ceci dépend de votre système :
+        :edit ~/.vimrc         pour Unix
+        :edit $VIM/_vimrc      pour MS-Windows
+
+  2. Lisez maintenant le fichier d'exemple "vimrc" :
+        :r $VIMRUNTIME/vimrc_example.vim
 
-  Vous pouvez accéder à l'aide sur à peu près n'importe quel sujet en donnant
-  des arguments à la commande  :help . Essayez par exemple (n'oubliez pas
-  d'appuyer sur <Entrée>):
+  3. Enregistrez le fichier avec :
+        :w
 
-	:help w
-	:help c_<T
-	:help insert-index
-	:help user-manual
+  La prochaine fois que vous démarrerez Vim, la coloration syntaxique sera
+  activée. Vous pouvez ajouter tous vos réglages préférés dans ce fichier
+  "vimrc". Pour plus d'informations, tapez  :help vimrc-intro
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		    Leçon 8 : CRÉER UN SCRIPT DE DÉMARRAGE
+                            Leçon 7.3 : COMPLÈTEMENT
+
 
-		  ** Activer les fonctionnalités de Vim. **
+          ** Complètement de ligne de commande avec CTRL-D et <TAB> **
+
+  1. Mettez Vim soit en mode non compatible :   set nocp
+
+  2. Regardez quels fichiers existent dans le répertoire :  !ls  ou  !dir
 
-  Vim a beaucoup plus de fonctionnalités que Vi, mais la plupart de celles-ci
-  sont désactivées par défaut.  Pour commencer à les utiliser, vous devez
-  créer un fichier "vimrc".
+  3. Tapez le début d'une commande :   :e
+
+  4. Appuyez  CTRL-D  et Vim affichera une liste de commandes qui commencent
+     par "e".
+
+  5. Appuyez  <TAB>  et Vim complétera le nom de la commande :  ":edit"
+
+  6. Ajoutez maintenant un espace et le début d'un fichier existant :
+     :edit  FIC
+
+  7  Appuyez  <TAB>. Vim va compléter le nom (s'il est unique).
 
-  1. Commencez à éditer le fichier "vimrc". Ceci dépend de votre système:
-	:edit ~/.vimrc			pour Unix
-	:edit $VIM/_vimrc		pour MS-Windows
+NOTE : Le complètement fonctionne pour de nombreuse commandes. Essayez
+       d'appuyer CTRL-D et <TAB>. C'est utile en particulier pour  :help .
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              RÉSUMÉ DE LA LEÇON 7
+
+
+  1. Tapez  :help  ou appuyez <F1> ou <Aide> pour ouvrir la fenêtre d'aide.
 
-  2. Intégrez maintenant le texte du fichier "vimrc" d'exemple:
-	:read $VIMRUNTIME/vimrc_example.vim
+  2. Tapez  :help cmd  pour trouver l'aide sur  cmd .
+
+  3. Tapez  CTRL-W CTRL-W  pour sauter à une autre fenêtre.
 
-  3. Enregistrez le fichier avec:
-	:write
+  4. Tapez  :q  pour fermer la fenêtre d'aide.
 
-  La prochaine fois que vous démarrerez Vim, le surlignage syntactique sera
-  activé. Vous pouvez ajouter tous vos réglages préférés dans ce fichier.
+  5. Créez un script de démarrage vimrc pour conserver vos réglages préférés.
+
+  6. Quand vous tapez une commande  :  appuyez CTRL-D pour voir les
+     complètements possibles. Appuyez <TAB> pour utiliser un complètement.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  Ceci conclut le Tutoriel Vim.  Le but était de vous donner un bref aperçu de
+  Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de
   l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur
-  relativement facilement.  Il est loin d'être complet, vu que Vim a beaucoup
-  beaucoup plus de commandes.  Un Manuel de l'utilisateur est disponible en
-  anglais:  :help user-manual .
+  relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup
+  beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en
+  anglais :  :help user-manual .
 
   Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en
   français. Il parle plus de Vi que de Vim, mais pourra vous être utile.
-	L'éditeur Vi - Collection Précis et concis - par Arnold Robbins
-	Éditeur: O'Reilly France
-	ISBN: 2-84177-102-4
+        L'éditeur Vi - Collection Précis et concis - par Arnold Robbins
+        Éditeur : O'Reilly France
+        ISBN : 2-84177-102-4
 
   Deux livres en anglais sont également mentionnés dans la version originale
   de ce tutoriel, dont un qui traite spécifiquement de Vim. Merci de vous y
-  référer si vous êtes intéressé.
+  référer si vous êtes intéressés.
 
   Ce tutoriel a été écrit par Michael C. Pierce et Robert K. Ware de l'École
   des Mines du Colorado et reprend des idées fournies par Charles Smith,
-  Universté d'État du Colorado.  E-mail: bware@mines.colorado.edu.
+  Université d'État du Colorado. E-mail : bware@mines.colorado.edu.
 
   Modifié pour Vim par Bram Moolenar.
+  Traduit en Français par Adrien Beau, en avril 2001.
+  Dernières mises à jour par Dominique Pellé.
 
-  Traduit en Français par Adrien Beau, en avril 2001.
-  E-mail:	version.francaise@free.fr
-  Last Change:	2003 May 29
+  E-mail :      dominique.pelle@gmail.com
+  Last Change : 2008 Nov 23
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.hu
+++ b/runtime/tutor/tutor.hu
@@ -1,5 +1,5 @@
 ===============================================================================
-=     d v  z  l j  k   a   V I M   T u t o r b a n  -    1.5-s  verzi ===
+==  d v  z  l j  k   a   V I M - o k t a t  b a n  -    1.5-s  verzi  ==
 ===============================================================================
 
      A Vim egy nagyon hatkony szerkeszt, amelnyek rengeteg utastsa
@@ -38,7 +38,7 @@
   2. Tartsa lenyomva a lefelt (j), akkor ismtldik!
 ---> Most tudja, hogyan mehet a kvetkez leckre.
 
-  3. A lefel fomb hasznlatval menjen a 1.2. leckre!
+  3. A lefel gomb hasznlatval menjen a 1.2. leckre!
 
 Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az <ESC>-et, hogy
       norml mdba kerljn, s ismtelje meg a parancsot!
@@ -60,8 +60,8 @@ Megj: A kurzor gomboknak is mkdnik kell, de a hjkl hasznlatval
      Ha menteni szeretn a vltozsokat s kilpni, rja:
 				:wq  <ENTER>
 
-  3. Amikor a shell promptot ltja, rja be a parancsot, amely ebbe a
-     tutorba hozza:
+  3. Amikor a shell promptot ltja, rja be a parancsot, amely ebbe az
+     oktatba hozza:
      Ez valsznleg:	vimtutor <ENTER>
      Normlis esetben ezt rn:	vim tutor.hu <ENTER>
 
@@ -230,7 +230,7 @@ MEGJ:  Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			 2.5.  lecke: A VISSZAVONS (UNDO) PARANCS
+		   2.5.  lecke: A VISSZAVONS (UNDO) PARANCS
 
 
 ** u gpelsvel visszavonhat az utols parancs, U az egsz sort helyrelltja. **
@@ -245,9 +245,9 @@ MEGJ:  Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl
   7. CTRL-R (CTRL gomb lenyomsa mellett ssn R-t) prszor csinlja jra a
      visszavont parancsokat (redo)!
 
----> Javtsd a hhibkaat ebbben a sooorban majd lltsa visszaaa az eredetit.
+---> Javtsa a hhibkaat ebbben a sooorban majd lltsa visszaaa az eredetit.
 
-  8. Ezek nagyon hasznos parancsok. Most ugarjon a 2. lecke sszefoglaljra.
+  8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke sszefoglaljra.
 
 
 
@@ -257,7 +257,7 @@ MEGJ:  Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl
 
   1. Trls a kurzortl a sz vgig:    dw
 
-  2. Trls a kurzortl a sz vgig:    d$
+  2. Trls a kurzortl a sor vgig:    d$
 
   3. Egsz sor trlse:    dd
 
@@ -275,7 +275,7 @@ MEGJ:  Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl
      Visszavonsok visszavonsa:	     CTRL-R
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			 3.1.  lecke: A PUT PARANCS
+		3.1.  lecke: A BEILLESZTS (PUT) PARANCS
 
 
   ** p  letsvel az utolsnak trltet a kurzor utn illeszhetjk. **
@@ -284,8 +284,8 @@ MEGJ:  Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl
 
   2. dd letsvel trljk a sort s eltroldik a Vim pufferben.
 
-  3. Mozgassuk a kurzort AFL a sor fl, ahov mozgatni szeretnnk a
-     trlt sort.
+  3. Mozgassuk a kurzort azeltt a  sor ELTTI sorba, ahov mozgatni
+     szeretnnk a trlt sort.
 
   4. Norml mdban rjunk  p   bett a trlt sor beillesztshez.
 
@@ -299,7 +299,7 @@ MEGJ:  Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		       3.2.  lecke: A REPLACE PARANCS
+		       3.2.  lecke: AZ TRS (REPLACE) PARANCS
 
 
 ** r  s  a karakterek letsvel a kurzor alatti karaktert megvltoztatjuk. **
@@ -321,7 +321,7 @@ MEGJ: Emlkezzen, hogy nem memorizlssal, hanem gyakorlssal tanuljon.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			3.3.  lecke: A CHANGE PARANCS
+			3.3.  lecke: A CSERE (CHANGE) PARANCS
 
 
 	   ** A sz egy rsznek megvltoztatshoz rjuk:  cw . **
@@ -415,7 +415,7 @@ Ugorjunk a kvetkez leckre!
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			4.2.  lecke: A SEARCH PARANCS
+			4.2.  lecke: A KERESS (SEARCH) PARANCS
 
 
   ** / majd a kvnt kifejezs bersval kereshetjk meg a kifejezst. **
@@ -459,7 +459,7 @@ Megj: Ez nagyon hasznos, ha olyan progra
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		      4.4.  lecke: A HIBK KIJAVTSNAK EGY MDJA
+		  4.4.  lecke: A HIBK KIJAVTSNAK EGY MDJA
 
 
     ** :s/j/rgi/g begpelsvel az 'j'-ra cserljk a 'rgi'-t. **
@@ -470,10 +470,10 @@ Megj: Ez nagyon hasznos, ha olyan progra
      sorban.
 
   3. Most ezt rjuk:	 :s/eggy/egg/g	   amely globlisan helyettest
-     a sorban.
+     a sorban, azaz minden elfordulst.
      Ez a sorban minden elfordulst helyettest.
 
----> eggy hegy meggy, szembe jn eggy msik heggy.
+---> eggy heggy meggy, szembe jn eggy msik heggy.
 
   4. Kt sor kztt a karaktersor minden elfordulsnak helyettestse:
      :#,#s/rgi/j/g    ahol #,# a kt sor sorszma.
@@ -530,7 +530,7 @@ Megj:  Minden  :  parancs utn <ENTER>-t kell tni.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		      5.2.  lecke: BVEBBEN A FJLOK RSRL
+		 5.2.  lecke: BVEBBEN A FJLOK RSRL
 
 
      ** A fjlok vltozsait gy rhatjuk ki  :w FJLNV. **
@@ -542,12 +542,12 @@ Megj:  Minden  :  parancs utn <ENTER>-t kell tni.
 
   3. rja:	:w TESZT   (ahol TESZT a vlasztott fjlnv)!
 
-  4. Ez elmenti a teljes fjlt (a Vim Tutort) TESZT nven.
+  4. Ez elmenti a teljes fjlt (a Vim oktatjt) TESZT nven.
      Ellenrzskpp rjuk ismt    :!dir   hogy lssuk a knyvtrat!
      (Felfel gombbal : utn az elz utastsok visszahozhatak.)
 
 Megj: Ha n kilpne a Vimbl s s visszatrne a TESZT fjlnvvel, akkor a
-      fjl a tutor mentskori pontos msolata lenne.
+      fjl az oktat mentskori pontos msolata lenne.
 
   5. Tvoltsa el a fjlt  (MS-DOS):	:!del TESZT
 			vagy (Unix):	:!rm TESZT
@@ -626,7 +626,7 @@ MEGJ:  A fjl, amit beillesztett a kurzora alatt helyezkedik el.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			 6.1.  lecke: A OPEN PARANCS
+		   6.1.  lecke: A MEGNYITS (OPEN) PARANCS
 
 
 ** o  bersval nyithat egy j sort a kurzor alatt s vlthat beszr mdba **
@@ -684,16 +684,17 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben
 
   1. Mozgassuk a kurzort az els ---> kezdet sorra!
 
-  2. Place the cursor at the beginning of the first word that is different
-     from the second line marked ---> (the word 'last').
+  2. Helyezze a kurzort az els sz elejre amely eltr a msodik
+     ---> kezdet sor tartalmtl (a 'az utolsval' rsztl).
+
+  3. Nyomjon R karaktert s rja t a szveg maradkt az els sorban
+     gy, hogy a  kt sor egyez legyen.
 
-  3. Now type  R  and replace the remainder of the text on the first line by
-     typing over the old text to make the first line the same as the second.
+---> Az els sort tegye azonoss az utolsval: hasznlja a gombokat.
+---> Az els sort tegye azonoss a msodikkal: rjon R-t s az j szveget.
 
----> 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. Note that when you press <ESC> to exit, any unaltered text remains.
+  4. Jegyezzk meg, ha <ESC>-et nyomok, akkor a vltozatlanuk hagyott
+     szvegek vltozatlanok maradnak.
 
 
 
@@ -726,16 +727,16 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben
 			       6. LECKE SSZEFOGLALJA
 
 
-  1. Typing  o	opens a line BELOW the cursor and places the cursor on the open
-     line in Insert mode.
-     Typing a capital  O  opens the line ABOVE the line the cursor is on.
+  1. o	bersval j sort nyitunk meg a sor ALATT s a kurzor az j
+     sorban lesz beszrs-mdban.
+     Nagy  O  a sor FELETT nyit j sort, s oda kerl a kurzor.
 
-  2. Type an  a  to insert text AFTER the character the cursor is on.
-     Typing a capital  A  automatically appends text to the end of the line.
+  2. a  bersval az aktulis karaktertl UTN (jobbra) szrhatunk be szveget.
+     Nagy A  automatikusan a sor legvghez adja hozz a szveget.
 
-  3. Typing a capital  R  enters Replace mode until  <ESC>  is pressed to exit.
+  3. A nagy  R  betsvel tr (replace) mdba kerlnk  <ESC> lenyomsig.
 
-  4. Typing ":set xxx" sets the option "xxx"
+  4. ":set xxx" bersval az "xxx" opci llthat be.
 
 
 
@@ -746,7 +747,7 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		       7. lecke: ON-LINE HELP PARANCSOK
+		     7. lecke: AZ ON-LINE SG PARANCSAI
 
 
 		    ** Az online sgrendszer hasznlata **
@@ -801,8 +802,9 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben
   tudknak: ":help user-manual". (egyelre nem tud magyarul)
 
   Tovbbi magyar olvasnivalk rhetek el az albbi oldalrl.
-  http://ubuntu.hu/index.php?title=Vim
+  http://wiki.hup.hu/index.php/Vim
 
+  Angol olvasmnyok:
   For further reading and studying, this book is recommended:
 	Vim - Vi Improved - by Steve Oualline
 	Publisher: New Riders
@@ -816,8 +818,13 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben
   It is a good book to get to know almost anything you want to do with Vi.
   The sixth edition also includes information on Vim.
 
-  This tutorial was written by Michael C. Pierce and Robert K. Ware,
-  Colorado School of Mines using ideas supplied by Charles Smith,
-  Colorado State University.  E-mail: bware@mines.colorado.edu.
+  Ezt az oktatt Michael C. Pierce s Robert K. Ware rta, a Colorado
+  School of Mines dolgozi Charles Smith (Colorado State University)
+  tmogatsval.
 
-  Modified for Vim by Bram Moolenaar.
+  E-mail: bware@mines.colorado.edu.
+
+  A Vimhez idomtotta Bram Moolenaar.
+
+  Magyartotta: Horvth rpd <horvath.arpad@roik.bmf.hu>, 2006-2008
+
--- a/runtime/tutor/tutor.hu.cp1250
+++ b/runtime/tutor/tutor.hu.cp1250
@@ -1,5 +1,5 @@
 ===============================================================================
-=     d v  z  l j  k   a   V I M   T u t o r b a n  -    1.5-s  verzi ===
+==  d v  z  l j  k   a   V I M - o k t a t  b a n  -    1.5-s  verzi  ==
 ===============================================================================
 
      A Vim egy nagyon hatkony szerkeszt, amelnyek rengeteg utastsa
@@ -38,7 +38,7 @@
   2. Tartsa lenyomva a lefelt (j), akkor ismtldik!
 ---> Most tudja, hogyan mehet a kvetkez leckre.
 
-  3. A lefel fomb hasznlatval menjen a 1.2. leckre!
+  3. A lefel gomb hasznlatval menjen a 1.2. leckre!
 
 Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az <ESC>-et, hogy
       norml mdba kerljn, s ismtelje meg a parancsot!
@@ -60,8 +60,8 @@ Megj: A kurzor gomboknak is mkdnik kell, de a hjkl hasznlatval
      Ha menteni szeretn a vltozsokat s kilpni, rja:
 				:wq  <ENTER>
 
-  3. Amikor a shell promptot ltja, rja be a parancsot, amely ebbe a
-     tutorba hozza:
+  3. Amikor a shell promptot ltja, rja be a parancsot, amely ebbe az
+     oktatba hozza:
      Ez valsznleg:	vimtutor <ENTER>
      Normlis esetben ezt rn:	vim tutor.hu <ENTER>
 
@@ -230,7 +230,7 @@ MEGJ:  Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			 2.5.  lecke: A VISSZAVONS (UNDO) PARANCS
+		   2.5.  lecke: A VISSZAVONS (UNDO) PARANCS
 
 
 ** u gpelsvel visszavonhat az utols parancs, U az egsz sort helyrelltja. **
@@ -245,9 +245,9 @@ MEGJ:  Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl
   7. CTRL-R (CTRL gomb lenyomsa mellett ssn R-t) prszor csinlja jra a
      visszavont parancsokat (redo)!
 
----> Javtsd a hhibkaat ebbben a sooorban majd lltsa visszaaa az eredetit.
+---> Javtsa a hhibkaat ebbben a sooorban majd lltsa visszaaa az eredetit.
 
-  8. Ezek nagyon hasznos parancsok. Most ugarjon a 2. lecke sszefoglaljra.
+  8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke sszefoglaljra.
 
 
 
@@ -257,7 +257,7 @@ MEGJ:  Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl
 
   1. Trls a kurzortl a sz vgig:    dw
 
-  2. Trls a kurzortl a sz vgig:    d$
+  2. Trls a kurzortl a sor vgig:    d$
 
   3. Egsz sor trlse:    dd
 
@@ -275,7 +275,7 @@ MEGJ:  Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl
      Visszavonsok visszavonsa:	     CTRL-R
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			 3.1.  lecke: A PUT PARANCS
+		3.1.  lecke: A BEILLESZTS (PUT) PARANCS
 
 
   ** p  letsvel az utolsnak trltet a kurzor utn illeszhetjk. **
@@ -284,8 +284,8 @@ MEGJ:  Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl
 
   2. dd letsvel trljk a sort s eltroldik a Vim pufferben.
 
-  3. Mozgassuk a kurzort AFL a sor fl, ahov mozgatni szeretnnk a
-     trlt sort.
+  3. Mozgassuk a kurzort azeltt a  sor ELTTI sorba, ahov mozgatni
+     szeretnnk a trlt sort.
 
   4. Norml mdban rjunk  p   bett a trlt sor beillesztshez.
 
@@ -299,7 +299,7 @@ MEGJ:  Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		       3.2.  lecke: A REPLACE PARANCS
+		       3.2.  lecke: AZ TRS (REPLACE) PARANCS
 
 
 ** r  s  a karakterek letsvel a kurzor alatti karaktert megvltoztatjuk. **
@@ -321,7 +321,7 @@ MEGJ: Emlkezzen, hogy nem memorizlssal, hanem gyakorlssal tanuljon.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			3.3.  lecke: A CHANGE PARANCS
+			3.3.  lecke: A CSERE (CHANGE) PARANCS
 
 
 	   ** A sz egy rsznek megvltoztatshoz rjuk:  cw . **
@@ -415,7 +415,7 @@ Ugorjunk a kvetkez leckre!
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			4.2.  lecke: A SEARCH PARANCS
+			4.2.  lecke: A KERESS (SEARCH) PARANCS
 
 
   ** / majd a kvnt kifejezs bersval kereshetjk meg a kifejezst. **
@@ -459,7 +459,7 @@ Megj: Ez nagyon hasznos, ha olyan progra
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		      4.4.  lecke: A HIBK KIJAVTSNAK EGY MDJA
+		  4.4.  lecke: A HIBK KIJAVTSNAK EGY MDJA
 
 
     ** :s/j/rgi/g begpelsvel az 'j'-ra cserljk a 'rgi'-t. **
@@ -470,10 +470,10 @@ Megj: Ez nagyon hasznos, ha olyan progra
      sorban.
 
   3. Most ezt rjuk:	 :s/eggy/egg/g	   amely globlisan helyettest
-     a sorban.
+     a sorban, azaz minden elfordulst.
      Ez a sorban minden elfordulst helyettest.
 
----> eggy hegy meggy, szembe jn eggy msik heggy.
+---> eggy heggy meggy, szembe jn eggy msik heggy.
 
   4. Kt sor kztt a karaktersor minden elfordulsnak helyettestse:
      :#,#s/rgi/j/g    ahol #,# a kt sor sorszma.
@@ -530,7 +530,7 @@ Megj:  Minden  :  parancs utn <ENTER>-t kell tni.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		      5.2.  lecke: BVEBBEN A FJLOK RSRL
+		 5.2.  lecke: BVEBBEN A FJLOK RSRL
 
 
      ** A fjlok vltozsait gy rhatjuk ki  :w FJLNV. **
@@ -542,12 +542,12 @@ Megj:  Minden  :  parancs utn <ENTER>-t kell tni.
 
   3. rja:	:w TESZT   (ahol TESZT a vlasztott fjlnv)!
 
-  4. Ez elmenti a teljes fjlt (a Vim Tutort) TESZT nven.
+  4. Ez elmenti a teljes fjlt (a Vim oktatjt) TESZT nven.
      Ellenrzskpp rjuk ismt    :!dir   hogy lssuk a knyvtrat!
      (Felfel gombbal : utn az elz utastsok visszahozhatak.)
 
 Megj: Ha n kilpne a Vimbl s s visszatrne a TESZT fjlnvvel, akkor a
-      fjl a tutor mentskori pontos msolata lenne.
+      fjl az oktat mentskori pontos msolata lenne.
 
   5. Tvoltsa el a fjlt  (MS-DOS):	:!del TESZT
 			vagy (Unix):	:!rm TESZT
@@ -626,7 +626,7 @@ MEGJ:  A fjl, amit beillesztett a kurzora alatt helyezkedik el.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			 6.1.  lecke: A OPEN PARANCS
+		   6.1.  lecke: A MEGNYITS (OPEN) PARANCS
 
 
 ** o  bersval nyithat egy j sort a kurzor alatt s vlthat beszr mdba **
@@ -684,16 +684,17 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben
 
   1. Mozgassuk a kurzort az els ---> kezdet sorra!
 
-  2. Place the cursor at the beginning of the first word that is different
-     from the second line marked ---> (the word 'last').
+  2. Helyezze a kurzort az els sz elejre amely eltr a msodik
+     ---> kezdet sor tartalmtl (a 'az utolsval' rsztl).
+
+  3. Nyomjon R karaktert s rja t a szveg maradkt az els sorban
+     gy, hogy a  kt sor egyez legyen.
 
-  3. Now type  R  and replace the remainder of the text on the first line by
-     typing over the old text to make the first line the same as the second.
+---> Az els sort tegye azonoss az utolsval: hasznlja a gombokat.
+---> Az els sort tegye azonoss a msodikkal: rjon R-t s az j szveget.
 
----> 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. Note that when you press <ESC> to exit, any unaltered text remains.
+  4. Jegyezzk meg, ha <ESC>-et nyomok, akkor a vltozatlanuk hagyott
+     szvegek vltozatlanok maradnak.
 
 
 
@@ -726,16 +727,16 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben
 			       6. LECKE SSZEFOGLALJA
 
 
-  1. Typing  o	opens a line BELOW the cursor and places the cursor on the open
-     line in Insert mode.
-     Typing a capital  O  opens the line ABOVE the line the cursor is on.
+  1. o	bersval j sort nyitunk meg a sor ALATT s a kurzor az j
+     sorban lesz beszrs-mdban.
+     Nagy  O  a sor FELETT nyit j sort, s oda kerl a kurzor.
 
-  2. Type an  a  to insert text AFTER the character the cursor is on.
-     Typing a capital  A  automatically appends text to the end of the line.
+  2. a  bersval az aktulis karaktertl UTN (jobbra) szrhatunk be szveget.
+     Nagy A  automatikusan a sor legvghez adja hozz a szveget.
 
-  3. Typing a capital  R  enters Replace mode until  <ESC>  is pressed to exit.
+  3. A nagy  R  betsvel tr (replace) mdba kerlnk  <ESC> lenyomsig.
 
-  4. Typing ":set xxx" sets the option "xxx"
+  4. ":set xxx" bersval az "xxx" opci llthat be.
 
 
 
@@ -746,7 +747,7 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		       7. lecke: ON-LINE HELP PARANCSOK
+		     7. lecke: AZ ON-LINE SG PARANCSAI
 
 
 		    ** Az online sgrendszer hasznlata **
@@ -801,8 +802,9 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben
   tudknak: ":help user-manual". (egyelre nem tud magyarul)
 
   Tovbbi magyar olvasnivalk rhetek el az albbi oldalrl.
-  http://ubuntu.hu/index.php?title=Vim
+  http://wiki.hup.hu/index.php/Vim
 
+  Angol olvasmnyok:
   For further reading and studying, this book is recommended:
 	Vim - Vi Improved - by Steve Oualline
 	Publisher: New Riders
@@ -816,8 +818,13 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben
   It is a good book to get to know almost anything you want to do with Vi.
   The sixth edition also includes information on Vim.
 
-  This tutorial was written by Michael C. Pierce and Robert K. Ware,
-  Colorado School of Mines using ideas supplied by Charles Smith,
-  Colorado State University.  E-mail: bware@mines.colorado.edu.
+  Ezt az oktatt Michael C. Pierce s Robert K. Ware rta, a Colorado
+  School of Mines dolgozi Charles Smith (Colorado State University)
+  tmogatsval.
 
-  Modified for Vim by Bram Moolenaar.
+  E-mail: bware@mines.colorado.edu.
+
+  A Vimhez idomtotta Bram Moolenaar.
+
+  Magyartotta: Horvth rpd <horvath.arpad@roik.bmf.hu>, 2006-2008
+
--- a/runtime/tutor/tutor.hu.utf-8
+++ b/runtime/tutor/tutor.hu.utf-8
@@ -1,5 +1,5 @@
 ===============================================================================
-=    Ü d v ö z ö l j ü k   a   V I M   T u t o r b a n  -    1.5-ös  verzió ===
+== Ü d v ö z ö l j ü k   a   V I M - o k t a t ó b a n  -    1.5-ös  verzió  ==
 ===============================================================================
 
      A Vim egy nagyon hatékony szerkesztő, amelnyek rengeteg utasítása
@@ -38,7 +38,7 @@
   2. Tartsa lenyomva a lefelét (j), akkor ismétlődik!
 ---> Most tudja, hogyan mehet a következő leckére.
 
-  3. A lefelé fomb használatával menjen a 1.2. leckére!
+  3. A lefelé gomb használatával menjen a 1.2. leckére!
 
 Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az <ESC>-et, hogy
       normál módba kerüljön, és ismételje meg a parancsot!
@@ -60,8 +60,8 @@ Megj: A kurzor gomboknak is működniük kell, de a hjkl használatával
      Ha menteni szeretné a változásokat és kilépni, írja:
 				:wq  <ENTER>
 
-  3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe a
-     tutorba hozza:
+  3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe az
+     oktatóba hozza:
      Ez valószínűleg:	vimtutor <ENTER>
      Normális esetben ezt írná:	vim tutor.hu <ENTER>
 
@@ -230,7 +230,7 @@ MEGJ:  Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			 2.5.  lecke: A VISSZAVONÁS (UNDO) PARANCS
+		   2.5.  lecke: A VISSZAVONÁS (UNDO) PARANCS
 
 
 ** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. **
@@ -245,9 +245,9 @@ MEGJ:  Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül
   7. CTRL-R (CTRL gomb lenyomása mellett üssön R-t) párszor csinálja újra a
      visszavont parancsokat (redo)!
 
----> Javíítsd a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit.
+---> Javíítsa a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit.
 
-  8. Ezek nagyon hasznos parancsok. Most ugarjon a 2. lecke összefoglalójára.
+  8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke összefoglalójára.
 
 
 
@@ -257,7 +257,7 @@ MEGJ:  Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül
 
   1. Törlés a kurzortól a szó végéig:    dw
 
-  2. Törlés a kurzortól a szó végéig:    d$
+  2. Törlés a kurzortól a sor végéig:    d$
 
   3. Egész sor törlése:    dd
 
@@ -275,7 +275,7 @@ MEGJ:  Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül
      Visszavonások visszavonása:	     CTRL-R
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			 3.1.  lecke: A PUT PARANCS
+		3.1.  lecke: A BEILLESZTÉS (PUT) PARANCS
 
 
   ** p  leütésével az utolsónak töröltet a kurzor után illeszhetjük. **
@@ -284,8 +284,8 @@ MEGJ:  Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül
 
   2. dd leütésével töröljük a sort és eltérolódik a Vim pufferében.
 
-  3. Mozgassuk a kurzort AFÖLÉ a sor fölé, ahová mozgatni szeretnénk a
-     törölt sort.
+  3. Mozgassuk a kurzort azelőtt a  sor ELŐTTI sorba, ahová mozgatni
+     szeretnénk a törölt sort.
 
   4. Normál módban írjunk  p   betűt a törölt sor beillesztéséhez.
 
@@ -299,7 +299,7 @@ MEGJ:  Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		       3.2.  lecke: A REPLACE PARANCS
+		       3.2.  lecke: AZ ÁTÍRÁS (REPLACE) PARANCS
 
 
 ** r  és  a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. **
@@ -321,7 +321,7 @@ MEGJ: Emlékezzen, hogy nem memorizálással, hanem gyakorlással tanuljon.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			3.3.  lecke: A CHANGE PARANCS
+			3.3.  lecke: A CSERE (CHANGE) PARANCS
 
 
 	   ** A szó egy részének megváltoztatásához írjuk:  cw . **
@@ -415,7 +415,7 @@ Ugorjunk a következő leckére!
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			4.2.  lecke: A SEARCH PARANCS
+			4.2.  lecke: A KERESÉS (SEARCH) PARANCS
 
 
   ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. **
@@ -459,7 +459,7 @@ Megj: Ez nagyon hasznos, ha olyan progra
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		      4.4.  lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA
+		  4.4.  lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA
 
 
     ** :s/új/régi/g begépelésével az 'új'-ra cseréljük a 'régi'-t. **
@@ -470,10 +470,10 @@ Megj: Ez nagyon hasznos, ha olyan progra
      sorban.
 
   3. Most ezt írjuk:	 :s/eggy/egg/g	   amely globálisan helyettesít
-     a sorban.
+     a sorban, azaz minden előfordulást.
      Ez a sorban minden előfordulást helyettesít.
 
----> eggy hegy meggy, szembe jön eggy másik heggy.
+---> eggy heggy meggy, szembe jön eggy másik heggy.
 
   4. Két sor között a karaktersor minden előfordulásának helyettesítése:
      :#,#s/régi/új/g    ahol #,# a két sor sorszáma.
@@ -530,7 +530,7 @@ Megj:  Minden  :  parancs után <ENTER>-t kell ütni.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		      5.2.  lecke: BŐVEBBEN A FÁJLOK ÍRÁSÁRÓL
+		 5.2.  lecke: BŐVEBBEN A FÁJLOK ÍRÁSÁRÓL
 
 
      ** A fájlok változásait így írhatjuk ki  :w FÁJLNÉV. **
@@ -542,12 +542,12 @@ Megj:  Minden  :  parancs után <ENTER>-t kell ütni.
 
   3. Írja:	:w TESZT   (ahol TESZT a választott fájlnév)!
 
-  4. Ez elmenti a teljes fájlt (a Vim Tutort) TESZT néven.
+  4. Ez elmenti a teljes fájlt (a Vim oktatóját) TESZT néven.
      Ellenőrzésképp írjuk ismét    :!dir   hogy lássuk a könyvtárat!
      (Felfelé gombbal : után az előző utasítások visszahozhatóak.)
 
 Megj: Ha Ön kilépne a Vimből és és visszatérne a TESZT fájlnévvel, akkor a
-      fájl a tutor mentéskori pontos másolata lenne.
+      fájl az oktató mentéskori pontos másolata lenne.
 
   5. Távolítsa el a fájlt  (MS-DOS):	:!del TESZT
 			vagy (Unix):	:!rm TESZT
@@ -626,7 +626,7 @@ MEGJ:  A fájl, amit beillesztett a kurzora alatt helyezkedik el.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			 6.1.  lecke: A OPEN PARANCS
+		   6.1.  lecke: A MEGNYITÁS (OPEN) PARANCS
 
 
 ** o  beírásával nyithat egy új sort a kurzor alatt és válthat beszúró módba **
@@ -684,16 +684,17 @@ Megj: A Vimben a sor legvégére is lehet állni, azonba ez elődjében
 
   1. Mozgassuk a kurzort az első ---> kezdetű sorra!
 
-  2. Place the cursor at the beginning of the first word that is different
-     from the second line marked ---> (the word 'last').
+  2. Helyezze a kurzort az első szó elejére amely eltér a második
+     ---> kezdetű sor tartalmától (a 'az utolsóval' résztől).
+
+  3. Nyomjon R karaktert és írja ét a szöveg maradékát az első sorban
+     úgy, hogy a  két sor egyező legyen.
 
-  3. Now type  R  and replace the remainder of the text on the first line by
-     typing over the old text to make the first line the same as the second.
+---> Az első sort tegye azonossá az utolsóval: használja a gombokat.
+---> Az első sort tegye azonossá a másodikkal: írjon R-t és az új szöveget.
 
----> 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. Note that when you press <ESC> to exit, any unaltered text remains.
+  4. Jegyezzük meg, ha <ESC>-et nyomok, akkor a változatlanuk hagyott
+     szövegek változatlanok maradnak.
 
 
 
@@ -726,16 +727,16 @@ Megj: A Vimben a sor legvégére is lehet állni, azonba ez elődjében
 			       6. LECKE ÖSSZEFOGLALÓJA
 
 
-  1. Typing  o	opens a line BELOW the cursor and places the cursor on the open
-     line in Insert mode.
-     Typing a capital  O  opens the line ABOVE the line the cursor is on.
+  1. o	beírásával új sort nyitunk meg a sor ALATT és a kurzor az új
+     sorban lesz beszúrás-módban.
+     Nagy  O  a sor FELETT nyit új sort, és oda kerül a kurzor.
 
-  2. Type an  a  to insert text AFTER the character the cursor is on.
-     Typing a capital  A  automatically appends text to the end of the line.
+  2. a  beírásával az aktuális karaktertől UTÁN (jobbra) szúrhatunk be szöveget.
+     Nagy A  automatikusan a sor legvégéhez adja hozzá a szöveget.
 
-  3. Typing a capital  R  enters Replace mode until  <ESC>  is pressed to exit.
+  3. A nagy  R  beütésével átíró (replace) módba kerülünk  <ESC> lenyomásáig.
 
-  4. Typing ":set xxx" sets the option "xxx"
+  4. ":set xxx" beírásával az "xxx" opció állítható be.
 
 
 
@@ -746,7 +747,7 @@ Megj: A Vimben a sor legvégére is lehet állni, azonba ez elődjében
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		       7. lecke: ON-LINE HELP PARANCSOK
+		     7. lecke: AZ ON-LINE SÚGÓ PARANCSAI
 
 
 		    ** Az online súgórendszer használata **
@@ -801,8 +802,9 @@ Megj: A Vimben a sor legvégére is lehet állni, azonba ez elődjében
   tudóknak: ":help user-manual". (egyelőre nem tud magyarul)
 
   További magyar olvasnivalók érhetőek el az alábbi oldalról.
-  http://ubuntu.hu/index.php?title=Vim
+  http://wiki.hup.hu/index.php/Vim
 
+  Angol olvasmányok:
   For further reading and studying, this book is recommended:
 	Vim - Vi Improved - by Steve Oualline
 	Publisher: New Riders
@@ -816,8 +818,13 @@ Megj: A Vimben a sor legvégére is lehet állni, azonba ez elődjében
   It is a good book to get to know almost anything you want to do with Vi.
   The sixth edition also includes information on Vim.
 
-  This tutorial was written by Michael C. Pierce and Robert K. Ware,
-  Colorado School of Mines using ideas supplied by Charles Smith,
-  Colorado State University.  E-mail: bware@mines.colorado.edu.
+  Ezt az oktatót Michael C. Pierce és Robert K. Ware írta, a Colorado
+  School of Mines dolgozói Charles Smith (Colorado State University)
+  támogatásával.
 
-  Modified for Vim by Bram Moolenaar.
+  E-mail: bware@mines.colorado.edu.
+
+  A Vimhez idomította Bram Moolenaar.
+
+  Magyarította: Horváth Árpád <horvath.arpad@roik.bmf.hu>, 2006-2008
+
--- a/runtime/tutor/tutor.ja.euc
+++ b/runtime/tutor/tutor.ja.euc
@@ -257,7 +257,7 @@ NOTE: ͤϡΡޥ⡼ɤˤƥޥɤʤ˥⡼򲡤
 
       ** Ԥ֤Υ⡼˿ͤ򥿥פޤ **
 
-  1. ʲ ---> ȼ줿ȤƬ˥ưޤ
+  1. ʲ ---> ȼ줿ԤƬ˥ưޤ
 
   2. 2dw 򥿥פñ2ʬưޤ
 
@@ -741,7 +741,7 @@ NOTE: ޥɤνϤɤ߹ळȤޤ㤨С
 
       ** μΰ֤ƥȤɲäˤ a ȥפޤ **
 
-  1.  ---> Ǽ줿Ȥذưޤ礦
+  1.  ---> Ǽ줿Ԥذưޤ礦
 
   2. e 򲡤 li νüޤǥưޤ
 
@@ -764,7 +764,7 @@ Note: a, i  A Ʊ⡼ɤذܤޤʸ֤ۤʤ
 
 	  ** 1ʸʾ֤ˤʸ R ȥפޤ礦 **
 
-  1. ʲ ---> ȼ줿Ȥ˥ưޤǽ xxx Ƭ˰ư
+  1. ʲ ---> ȼ줿Ԥ˥ưޤǽ xxx Ƭ˰ư
      ޤ
 
   2. R 򲡤ơ2ܤοͤ򥿥פ뤳Ȥǡxxx ִޤ
--- a/runtime/tutor/tutor.ja.sjis
+++ b/runtime/tutor/tutor.ja.sjis
@@ -257,7 +257,7 @@ NOTE: `ĺAm[}[hɂăR}hȂɃ[V
 
       ** sJԂ̃[V̑Oɐl^Cv܂B **
 
-  1. ȉ ---> ƎꂽƂ̐擪ɃJ[\ړ܂B
+  1. ȉ ---> Ǝꂽs̐擪ɃJ[\ړ܂B
 
   2. 2dw ^CvĒP2•ړ܂B
 
@@ -741,7 +741,7 @@ NOTE: OR}h̏o͂ǂݍނƂo܂BႦ΁A
 
       ** J[\̎̈ʒueLXgljɂ a ƃ^Cv܂ **
 
-  1. J[\ ---> ŎꂽƂֈړ܂傤B
+  1. J[\ ---> Ŏꂽsֈړ܂傤B
 
   2. e  li ̏I[܂ŃJ[\ړ܂B
 
@@ -764,7 +764,7 @@ Note: a, i  A ͓}[hֈڂ܂A}ʒuقȂ
 
 	  ** 1ȏuɂ͑啶 R ƃ^Cv܂傤 **
 
-  1. ȉ ---> ƎꂽƂɃJ[\ړ܂Bŏ xxx ̐擪Ɉړ
+  1. ȉ ---> ƎꂽsɃJ[\ړ܂Bŏ xxx ̐擪Ɉړ
      ܂B
 
   2. R āA2sڂ̐l^Cv邱ƂŁAxxx u܂B
--- a/runtime/tutor/tutor.ja.utf-8
+++ b/runtime/tutor/tutor.ja.utf-8
@@ -257,7 +257,7 @@ NOTE: 冒険したい人は、ノーマルモードにてコマンドなしにモーションを押して
 
       ** 何回も行いたい繰り返しのモーションの前に数値をタイプします。 **
 
-  1. 以下の ---> と示された業の先頭にカーソルを移動します。
+  1. 以下の ---> と示された行の先頭にカーソルを移動します。
 
   2. 2dw をタイプして単語2つ分移動します。
 
@@ -741,7 +741,7 @@ NOTE: 外部コマンドの出力を読み込むことも出来ます。例えば、
 
       ** カーソルの次の位置からテキストを追加するには a とタイプします **
 
-  1. カーソルを ---> で示された業へ移動しましょう。
+  1. カーソルを ---> で示された行へ移動しましょう。
 
   2. e を押して li の終端部までカーソルを移動します。
 
@@ -764,7 +764,7 @@ Note: a, i と A は同じ挿入モードへ移りますが、文字が挿入される位置だけが異なり
 
 	  ** 1文字以上を置き換えるには大文字の R とタイプしましょう **
 
-  1. 以下の ---> と示された業にカーソルを移動します。最初の xxx の先頭に移動し
+  1. 以下の ---> と示された行にカーソルを移動します。最初の xxx の先頭に移動し
      ます。
 
   2. R を押して、2行目の数値をタイプすることで、xxx が置換されます。
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/tutor.nb
@@ -0,0 +1,973 @@
+===============================================================================
+= V e l k o m m e n   t i l   i n n f  r i n g e n   i   V i m  --  Ver. 1.7 =
+===============================================================================
+
+     Vim er en meget kraftig editor med mange kommandoer, alt for mange til 
+     kunne g gjennom alle i en innfring som denne. Den er beregnet p 
+     sette deg inn i bruken av nok kommandoer s du vil vre i stand til lett
+      kunne bruke Vim som en editor til alle forml.
+
+     Tiden som kreves for  g gjennom denne innfringen tar ca. 25-30
+     minutter, avhengig av hvor mye tid du bruker til eksperimentering.
+
+     MERK:
+     Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne
+     filen som du kan ve deg p (hvis du kjrte vimtutor-kommandoen, er
+     dette allerede en kopi).
+
+     Det er viktig  huske at denne innfringen er beregnet p lring gjennom
+     bruk. Det betyr at du m utfre kommandoene for  lre dem skikkelig.
+     Hvis du bare leser teksten, vil du glemme kommandoene!
+
+     Frst av alt, sjekk at Caps Lock IKKE er aktiv og trykk j-tasten for
+      flytte markren helt til leksjon 1.1 fyller skjermen.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 1.1:  FLYTTING AV MARKREN
+
+
+       ** For  flytte markren, trykk tastene h, j, k, l som vist. **
+	     ^
+	     k		Tips: h-tasten er til venstre og flytter til venstre.
+       < h	 l >	      l-tasten er til hyre og flytter til hyre.
+	     j		      j-tasten ser ut som en pil som peker nedover.
+	     v
+  1. Flytt markren rundt p skjermen til du har ftt det inn i fingrene.
+
+  2. Hold inne nedovertasten (j) til den repeterer.
+     N vet du hvordan du beveger deg til neste leksjon.
+
+  3. G til leksjon 1.2 ved hjelp av nedovertasten.
+
+Merk: Hvis du blir usikker p noe du har skrevet, trykk <ESC> for  g til
+      normalmodus. Skriv deretter kommandoen du nsket p nytt.
+
+Merk: Piltastene skal ogs virke. Men ved  bruke hjkl vil du vre i stand til
+       bevege markren mye raskere nr du er blitt vant til det. Helt sant!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  Leksjon 1.2: AVSLUTTE VIM
+
+
+  !! MERK: Fr du utfrer noen av punktene nedenfor, les hele leksjonen!!
+
+  1. Trykk <ESC>-tasten (for  forsikre deg om at du er i normalmodus).
+
+  2. Skriv:	:q! <ENTER>.
+     Dette avslutter editoren og FORKASTER alle forandringer som du har gjort.
+
+  3. Nr du ser kommandolinjen i skallet, skriv kommandoen som startet denne
+     innfringen. Den er:   vimtutor <ENTER>
+
+  4. Hvis du er sikker p at du husker dette, utfr punktene 1 til 3 for 
+     avslutte og starte editoren p nytt.
+
+MERK:  :q! <ENTER>  forkaster alle forandringer som du gjorde. I lpet av noen
+       f leksjoner vil du lre hvordan du lagrer forandringene til en fil.
+
+  5. Flytt markren ned til leksjon 1.3.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Leksjon 1.3: REDIGERING AV TEKST -- SLETTING
+
+
+	     ** Trykk  x  for  slette tegnet under markren. **
+
+  1. Flytt markren til den frste linjen merket med  --->.
+
+  2. For  ordne feilene p linjen, flytt markren til den er opp tegnet som
+     skal slettes.
+
+  3. Trykk tasten  x  for  slette det unskede tegnet.
+
+  4. Repeter punkt 2 til 4 til setningen er lik den som er under.
+
+---> Hessstennnn brrrsnudddde ii gaaata.
+---> Hesten brsnudde i gata.
+
+  5. N som linjen er korrekt, g til leksjon 1.4.
+
+MERK: Nr du gr gjennom innfringen, ikke bare prv  huske kommandoene, men
+      bruk dem helt til de sitter.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING
+
+
+		    ** Trykk  i  for  sette inn tekst. **
+
+  1. Flytt markren til den frste linjen som er merket med --->.
+
+  2. For  gjre den frste linjen lik den andre, flytt markren til den str
+     p tegnet ETTER posisjonen der teksten skal settes inn.
+
+  3. Trykk  i  og skriv inn teksten som mangler.
+
+  4. Etterhvert som hver feil er fikset, trykk <ESC> for  returnere til
+     normalmodus. Repeter punkt 2 til 4 til setningen er korrekt.
+
+---> Det er tkst som mnglr .
+---> Det er ganske mye tekst som mangler her.
+
+  5. Nr du fler deg komfortabel med  sette inn tekst, g til oppsummeringen
+     nedenfor.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL
+
+
+		    ** Trykk  A  for  legge til tekst. **
+
+  1. Flytt markren til den frste linjen nedenfor merket --->.
+     Det har ikke noe  si hvor markren er plassert p den linjen.
+
+  2. Trykk  A  og skriv inn det som skal legges til.
+
+  3. Nr teksten er lagt til, trykk <ESC> for  returnere til normalmodusen.
+
+  4. Flytt markren til den andre linjen markert med ---> og repeter steg 2 og
+     3 for  reparere denne setningen.
+
+---> Det mangler noe tekst p
+     Det mangler noe tekst p denne linjen.
+---> Det mangler ogs litt tek
+     Det mangler ogs litt tekst p denne linjen.
+
+  5. Nr du fler at du behersker  legge til tekst, g til leksjon 1.6.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Leksjon 1.6: REDIGERE EN FIL
+
+
+	       ** Bruk	:wq  for  lagre en fil og avslutte. **
+
+  !! MERK: Fr du utfrer noen av stegene nedenfor, les hele denne leksjonen!!
+
+  1. Avslutt denne innfringen som du gjorde i leksjon 1.2:  :q!
+
+  2. Skriv denne kommandoen p kommandolinja:  vim tutor <ENTER>
+     vim er kommandoen for  starte Vim-editoren, tutor er navnet p fila
+     som du vil redigere. Bruk en fil som kan forandres.
+
+  3. Sett inn og slett tekst som du lrte i de foregende leksjonene.
+
+  4. Lagre filen med forandringene og avslutt Vim med:	:wq <ENTER>
+
+  5. Start innfringen p nytt og flytt ned til oppsummeringen som flger.
+
+  6. Etter  ha lest og forsttt stegene ovenfor: Sett i gang.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 1
+
+
+  1. Markren beveges ved hjelp av piltastene eller hjkl-tastene.
+	 h (venstre)	 j (ned)     k (opp)	 l (hyre)
+
+  2. For  starte Vim fra skall-kommandolinjen, skriv:	vim FILNAVN <ENTER>
+
+  3. For  avslutte Vim, skriv:  <ESC> :q! <ENTER>  for  forkaste endringer.
+		   ELLER skriv:  <ESC> :wq <ENTER>  for  lagre forandringene.
+
+  4. For  slette tegnet under markren, trykk:  x
+
+  5. For  sette inn eller legge til tekst, trykk:
+	 i    skriv innsatt tekst  <ESC>	sett inn fr markren
+	 A    skriv tillagt tekst  <ESC>	legg til p slutten av linjen
+
+MERK: Nr du trykker <ESC> gr du til normalmodus eller du avbryter en unsket
+      og delvis fullfrt kommando.
+
+  N kan du g videre til leksjon 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Leksjon 2.1: SLETTEKOMMANDOER
+
+
+		    ** Trykk  dw  for  slette et ord. **
+
+  1. Trykk <ESC> for  vre sikker p at du er i normalmodus.
+
+  2. Flytt markren til den frste linjen nedenfor merket --->.
+
+  3. Flytt markren til begynnelsen av ordet som skal slettes.
+
+  4. Trykk  dw	og ordet vil forsvinne.
+
+MERK: Bokstaven  d  vil komme til syne p den nederste linjen p skjermen nr
+      du skriver den. Vim venter p at du skal skrive w . Hvis du ser et annet
+      tegn enn	d  har du skrevet noe feil; trykk <ESC> og start p nytt.
+
+---> Det er agurk tre ord eple som ikke hrer pre hjemme i denne setningen.
+---> Det er tre ord som ikke hrer hjemme i denne setningen.
+
+  5. Repeter punkt 3 og 4 til den frste setningen er lik den andre. G
+     deretter til leksjon 2.2.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leksjon 2.2: FLERE SLETTEKOMMANDOER
+
+
+	     ** Trykk  d$  for  slette til slutten av linjen. **
+
+  1. Trykk <ESC> for  vre sikker p at du er i normalmodus.
+
+  2. Flytt markren til linjen nedenfor merket --->.
+
+  3. Flytt markren til punktet der linjen skal kuttes (ETTER frste punktum).
+
+  4. Trykk  d$	for  slette alt til slutten av linjen.
+
+---> Noen skrev slutten p linjen en gang for mye. linjen en gang for mye.
+
+  5. G til leksjon 2.3 for  forst hva som skjer.
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leksjon 2.3: OM OPERATORER OG BEVEGELSER
+
+
+  Mange kommandoer som forandrer teksten er laget ut i fra en operator og en
+  bevegelse. Formatet for en slettekommando med sletteoperatoren  d  er:
+
+	d   bevegelse
+
+  Der:
+    d	      - er sletteoperatoren.
+    bevegelse - er hva operatoren vil opere p (listet nedenfor).
+
+  En kort liste med bevegelser:
+    w - til starten av det neste ordet, UNNTATT det frste tegnet.
+    e - til slutten av det nvrende ordet, INKLUDERT det siste tegnet.
+    $ - til slutten av linjen, INKLUDERT det siste tegnet.
+
+  Ved  skrive	de  vil alts alt fra markren til slutten av ordet bli
+  slettet.
+
+MERK:  Ved  skrive kun bevegelsen i normalmodusen uten en operator vil
+       markren flyttes som spesifisert.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE
+
+
+ ** Ved  skrive et tall foran en bevegelse repeterer den s mange ganger. **
+
+  1. Flytt markren til starten av linjen markert ---> nedenfor.
+
+  2. Skriv  2w	for  flytte markren to ord framover.
+
+  3. Skriv  3e	for  flytte markren framover til slutten av det tredje
+     ordet.
+
+  4. Skriv  0  (null) for  flytte til starten av linjen.
+
+  5. Repeter steg 2 og 3 med forskjellige tall.
+
+---> Dette er en linje med noen ord som du kan bevege deg rundt p.
+
+  6. G videre til leksjon 2.5.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Leksjon 2.5: BRUK AV ANTALL FOR  SLETTE MER
+
+
+     ** Et tall sammen med en operator repeterer den s mange ganger. **
+
+  I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du
+  inn antall fr bevegelsen for  slette mer:
+	 d  nummer  bevegelse
+
+  1. Flytt markren til det frste ordet med STORE BOKSTAVER p linjen markert
+     med --->.
+
+  2. Skriv  2dw  for  slette de to ordene med store bokstaver.
+
+  3. Repeter steg 1 og 2 med forskjelling antall for  slette de etterflgende
+     ordene som har store bokstaver.
+
+---> Denne ABC DE linjen FGHI JK LMN OP er n Q RS TUV litt mer lesbar.
+
+MERK: Et antall mellom operatoren  d  og bevegelsen virker p samme mte som 
+      bruke bevegelsen uten en operator.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Leksjon 2.6: OPERERE P LINJER
+
+
+		 ** Trykk  dd  for  slette en hel linje. **
+
+  P grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at
+  det vil vre lettere  rett og slett trykke to d-er for  slette en linje.
+
+  1. Flytt markren til den andre linjen i verset nedenfor.
+  2. Trykk  dd	  slette linjen.
+  3. Flytt deretter til den fjerde linjen.
+  4. Trykk  2dd  for  slette to linjer.
+
+--->  1) Roser er rde,
+--->  2) Gjrme er gy,
+--->  3) Fioler er bl,
+--->  4) Jeg har en bil,
+--->  5) Klokker viser tiden,
+--->  6) Druer er ste
+--->  7) Og du er likes.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Leksjon 2.7: ANGRE-KOMMANDOEN
+
+
+  ** Trykk  u  for  angre siste kommando,  U  for  fikse en hel linje. **
+
+  1. Flytt markren til linjen nedenfor merket ---> og plasser den p den
+     frste feilen.
+  2. Trykk  x  for  slette det frste unskede tegnet.
+  3. Trykk s  u  for  angre den siste utfrte kommandoen.
+  4. Deretter ordner du alle feilene p linjene ved  bruke kommandoen	x  .
+  5. Trykk n en stor  U  for  sette linjen tilbake til det den var
+     originalt.
+  6. Trykk  u  noen ganger for  angre	U  og foregende kommandoer.
+  7. Deretter trykker du  CTRL-R  (hold CTRL nede mens du trykker R) noen
+     ganger for  gjenopprette kommandoene (omgjre angrekommandoene).
+
+---> RReparer feiilene p denne linnnjen oog erssstatt dem meed angre.
+
+  8. Dette er meget nyttige kommandoer. N kan du g til oppsummeringen av
+     leksjon 2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 2
+
+
+  1. For  slette fra markren fram til det neste ordet, trykk:  dw
+  2. For  slette fra markren til slutten av en linje, trykk:	d$
+  3. For  slette en hel linje, trykk:	dd
+
+  4. For  repetere en bevegelse, sett et nummer foran:  2w
+  5. Formatet for en forandringskommando er:
+	       operator  [nummer]  bevegelse
+     der:
+       operator  - hva som skal gjres, f.eks.	d  for  slette
+       [nummer]  - et valgfritt antall for  repetere bevegelsen
+       bevegelse - hva kommandoen skal operere p, eksempelvis	w  (ord),
+		   $  (til slutten av linjen) og s videre.
+
+  6. For  g til starten av en linje, bruk en null:  0
+
+  7. For  angre tidligere endringer, skriv:		u  (liten u)
+     For  angre alle forandringer p en linje, skriv:	U  (stor U)
+     For  omgjre angringen, trykk:			CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 3.1: LIM INN-KOMMANDOEN
+
+
+    ** Trykk  p  for  lime inn tidligere slettet tekst etter markren **
+
+  1. Flytt markren til den frste linjen med ---> nedenfor.
+
+  2. Trykk  dd	for  slette linjen og lagre den i et Vim-register.
+
+  3. Flytt markren til c)-linjen, OVER posisjonen linjen skal settes inn.
+
+  4. Trykk  p  for  legge linjen under markren.
+
+  5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkeflge.
+
+---> d) Kan du ogs lre?
+---> b) Fioler er bl,
+---> c) Intelligens m lres,
+---> a) Roser er rde,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 3.2: ERSTATT-KOMMANDOEN
+
+
+	 ** Trykk  rx  for  erstatte tegnet under markren med x. **
+
+  1. Flytt markren til den frste linjen nedenfor merket --->.
+
+  2. Flytt markren s den str opp den frste feilen.
+
+  3. Trykk  r  og deretter tegnet som skal vre der.
+
+  4. Repeter punkt 2 og 3 til den frste linjen er lik den andre.
+
+---> Da dfnne lynjxn ble zkrevet, var det nen som tjykket feite taster!
+---> Da denne linjen ble skrevet, var det noen som trykket feile taster!
+
+  5. G videre til leksjon 3.2.
+
+MERK: Husk at du br lre ved  BRUKE, ikke pugge.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 3.3: FORANDRE-OPERATOREN
+
+
+	   ** For  forandre til slutten av et ord, trykk  ce . **
+
+  1. Flytt markren til den frste linjen nedenfor som er merket --->.
+
+  2. Plasser markren p  u  i lubjwr.
+
+  3. Trykk  ce	og det korrekte ordet (i dette tilfellet, skriv injen).
+
+  4. Trykk <ESC> og g til det neste tegnet som skal forandres.
+
+  5. Repeter punkt 3 og 4 helt til den frste setningen er lik den andre.
+
+---> Denne lubjwr har noen wgh som m forkwp med forkzryas-kommandoen.
+---> Denne linjen har noen ord som m forandres med forandre-kommandoen.
+
+Vr oppmerksom p at  ce  sletter ordet og gr inn i innsettingsmodus.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c
+
+
+ ** Forandringskommandoen blir brukt med de samme bevegelser som slett. **
+
+  1. Forandringsoperatoren fungerer p samme mte som slett. Formatet er:
+
+	 c    [nummer]	 bevegelse
+
+  2. Bevegelsene er de samme, som for eksempel	w  (ord) og  $	(slutten av en
+     linje).
+
+  3. G til den frste linjen nedenfor som er merket --->.
+
+  4. Flytt markren til den frste feilen.
+
+  5. Skriv  c$	og skriv resten av linjen lik den andre og trykk <ESC>.
+
+---> Slutten p denne linjen trenger litt hjelp for  gjre den lik den neste.
+---> Slutten p denne linjen trenger  bli rettet ved bruk av c$-kommandoen.
+
+MERK: Du kan bruke slettetasten for  rette feil mens du skriver.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 3
+
+
+  1. For  legge tilbake tekst som nettopp er blitt slettet, trykk  p  . Dette
+     limer inn den slettede teksten ETTER markren (hvis en linje ble slettet
+     vil den bli limt inn p linjen under markren).
+
+  2. For  erstatte et tegn under markren, trykk  r  og deretter tegnet som
+     du vil ha der.
+
+  3. Forandringsoperatoren lar deg forandre fra markren til dit bevegelsen
+     tar deg. Det vil si, skriv  ce  for  forandre fra markren til slutten
+     av ordet,	c$  for  forandre til slutten av linjen.
+
+  4. Formatet for forandre er:
+
+	 c   [nummer]	bevegelse
+
+N kan du g til neste leksjon.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	     Leksjon 4.1: POSISJONERING AV MARKREN OG FILSTATUS
+
+	** Trykk CTRL-G for  vise posisjonen i filen og filstatusen.
+	   Trykk  G  for  g til en spesifikk linje i filen. **
+
+  Merk: Les hele leksjonen fr du utfrer noen av punktene!
+
+  1. Hold nede Ctrl-tasten og trykk  g	. Vi kaller dette CTRL-G. En melding
+     vil komme til syne p bunnen av skjermen med filnavnet og posisjonen i
+     filen. Husk linjenummeret for bruk i steg 3.
+
+Merk: Du kan se markrposisjonen i nederste hyre hjrne av skjermen. Dette
+      skjer nr ruler-valget er satt (forklart i leksjon 6).
+
+  2. Trykk  G  for  g til bunnen av filen.
+     Skriv  gg	for  g til begynnelsen av filen.
+
+  3. Skriv inn linjenummeret du var p og deretter  G . Dette vil fre deg
+     tilbake til linjen du var p da du frst trykket CTRL-G.
+
+  4. Utfr steg 1 til 3 hvis du fler deg sikker p prosedyren.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Leksjon 4.2: SKEKOMMANDOEN
+
+      ** Skriv	/  etterfulgt av en skestreng som du vil lete etter. **
+
+  1. Trykk  /  nr du er i normalmodusen. Legg merke til at skrstreken og
+     markren kommer til syne p bunnen av skjermen i likhet med
+     :-kommandoene.
+
+  2. Skriv feeeiil og trykk <ENTER>. Dette er teksten du vil lete etter.
+
+  3. For  finne neste forekomst av skestrengen, trykk  n .
+     For  lete etter samme sketeksten i motsatt retning, trykk  N .
+
+  4. For  lete etter en tekst bakover i filen, bruk  ?  istedenfor  /	.
+
+  5. For  g tilbake til der du kom fra, trykk  CTRL-O  (Hold Ctrl nede mens
+     du trykker bokstaven  o ). Repeter for  g enda lengre tilbake. CTRL-I
+     gr framover.
+
+---> feeeiil er ikke mten  skrive feil p, feeeiil er helt feil.
+Merk: Nr skingen nr slutten av filen, vil den fortsette fra starten unntatt
+      hvis wrapscan-valget er resatt.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leksjon 4.3: FINN SAMSVARENDE PARENTESER
+
+
+	  ** Trykk  %  for  finne en samsvarende ), ] eller } . **
+
+  1. Plasser markren p en (, [ eller { p linjen nedenfor merket --->.
+
+  2. Trykk  %  .
+
+  3. Markren vil g til den samsvarende parentesen eller hakeparentesen.
+
+  4. Trykk  %  for  flytte markren til den andre samsvarende parentesen.
+
+  5. Flytt markren til en annen (, ), [, ], { eller } og se hva  %  gjr.
+
+---> Dette ( er en testlinje med (, [ ] og { } i den )).
+
+Merk: Dette er veldig nyttig til feilsking i programmer som har ubalansert
+      antall parenteser!
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Leksjon 4.4: ERSTATT-KOMMANDOEN
+
+
+	** Skriv  :s/gammel/ny/g  for  erstatte gammel med ny. **
+
+  1. Flytt markren til linjen nedenfor som er merket med --->.
+
+  2. Skriv  :s/deen/den/ <ENTER>  . Legg merke til at denne kommandoen bare
+     forandrer den frste forekomsten av deen p linjen.
+
+  3. Skriv  :s/deen/den/g . Nr g-flagget legges til, betyr dette global
+     erstatning p linjen og erstatter alle forekomster av deen p linjen.
+
+---> deen som kan kaste deen tyngste steinen lengst er deen beste
+
+  4. For  erstatte alle forekomster av en tekststreng mellom to linjer,
+     skriv  :#,#s/gammel/ny/g  der #,# er linjenumrene p de to linjene for
+			       linjeomrdet erstatningen skal gjres.
+     Skriv  :%s/gammel/ny/g    for  erstatte tekst i hele filen.
+     Skriv  :%s/gammel/ny/gc   for  finne alle forekomster i hele filen, og
+			       deretter sprre om teksten skal erstattes eller
+			       ikke.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 4
+
+
+  1. Ctrl-G viser nvrende posisjon i filen og filstatusen.
+	     G	gr til slutten av filen.
+     nummer  G	gr til det linjenummeret.
+	    gg	gr til den frste linjen.
+
+  2. Skriv  /  etterfulgt av en sketekst for  lete FRAMOVER etter teksten.
+     Skriv  ?  etterfulgt av en sketekst for  lete BAKOVER etter teksten.
+     Etter et sk kan du trykke  n  for  finne neste forekomst i den samme
+     retningen eller  N  for  lete i motsatt retning.
+     CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner.
+
+  3. Skriv  %  nr markren str p en (, ), [, ], { eller } for  finne den
+     som samsvarer.
+
+  4. Erstatte gammel med frste ny p en linje:  :s/gammel/ny
+     Erstatte alle gammel med ny p en linje:    :s/gammel/ny/g
+     Erstatte tekst mellom to linjenumre:	     :#,#s/gammel/ny/g
+     Erstatte alle forekomster i en fil:	     :%s/gammel/ny/g
+     For  godkjenne hver erstatning, legg til c:  :%s/gammel/ny/gc
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	       Leksjon 5.1: HVORDAN UTFRE EN EKSTERN KOMMANDO
+
+
+    ** Skriv  :!  etterfulgt av en ekstern kommando for  utfre denne. **
+
+  1. Skriv den velkjente kommandoen  :	 for  plassere markren p bunnen av
+     skjermen. Dette lar deg skrive en kommandolinjekommando.
+
+  2. N kan du skrive tegnet  !  . Dette lar deg utfre en hvilken som helst
+     ekstern kommando.
+
+  3. Som et eksempel, skriv  ls  etter utropstegnet og trykk <ENTER>. Du vil
+     n f en liste over filene i katalogen, akkurat som om du hadde kjrt
+     kommandoen direkte fra kommandolinjen i skallet. Eller bruk  :!dir  hvis
+     ls ikke virker.
+
+MERK: Det er mulig  kjre alle eksterne kommandoer p denne mten, ogs med
+      parametere.
+
+MERK: Alle :-kommandoer m avsluttes med <ENTER>. Fra dette punktet er det
+      ikke alltid vi nevner det.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leksjon 5.2: MER OM LAGRING AV FILER
+
+
+      ** For  lagre endringene gjort i en tekst, skriv  :w FILNAVN. **
+
+  1. Skriv  :!dir  eller  :!ls	for  f en liste over filene i katalogen. Du
+     vet allerede at du m trykke <ENTER> etter dette.
+
+  2. Velg et filnavn p en fil som ikke finnes, som for eksempel  TEST .
+
+  3. Skriv  :w TEST  (der TEST er filnavnet du velger).
+
+  4. Dette lagrer hele filen (denne innfringen) under navnet TEST . For 
+     sjekke dette, skriv  :!dir  eller	:!ls  igjen for  se innholdet av
+     katalogen.
+
+Merk: Hvis du n hadde avsluttet Vim og startet p nytt igjen med vim TEST,
+      ville filen vrt en eksakt kopi av innfringen da du lagret den.
+
+  5. Fjern filen ved  skrive  :!rm TEST  hvis du er p et Unix-lignende
+     operativsystem, eller  :!del TEST	hvis du bruker MS-DOS.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES
+
+
+     ** For  lagre en del av en fil, skriv  v	bevegelse  :w FILNAVN **
+
+  1. Flytt markren til denne linjen.
+
+  2. Trykk  v  og flytt markren til det femte elementet nedenfor. Legg merke
+     til at teksten blir markert.
+
+  3. Trykk  :  (kolon). P bunnen av skjermen vil  :'<,'>  komme til syne.
+
+  4. Trykk  w TEST  , der TEST er et filnavn som ikke finnes enda. Kontroller
+     at du ser	:'<,'>w TEST  fr du trykker Enter.
+
+  5. Vim vil skrive de valgte linjene til filen TEST. Bruk  :!dir  eller  !ls
+     for  se den. Ikke slett den enda! Vi vil bruke den i neste leksjon.
+
+MERK: Ved  trykke  v  startes visuelt valg. Du kan flytte markren rundt for
+       gjre det valgte omrdet strre eller mindre. Deretter kan du bruke en
+      operator for  gjre noe med teksten. For eksempel sletter  d  teksten.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leksjon 5.4: HENTING OG SAMMENSLING AV FILER
+
+
+ ** For  lese inn en annen fil inn i nvrende buffer, skriv  :r FILNAVN  **
+
+  1. Plasser markren like over denne linjen.
+
+MERK: Etter  ha utfrt steg 2 vil du se teksten fra leksjon 5.3. G deretter
+      NED for  se denne leksjonen igjen.
+
+  2. Hent TEST-filen ved  bruke kommandoen  :r TEST  der TEST er navnet p
+     filen du brukte. Filen du henter blir plassert nedenfor markrlinjen.
+
+  3. For  sjekke at filen ble hentet, g tilbake og se at det er to kopier av
+     leksjon 5.3, originalen og denne versjonen.
+
+MERK: Du kan ogs lese utdataene av en ekstern kommando. For eksempel,	:r !ls
+      leser utdataene av ls-kommandoen og legger dem nedenfor markren.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 5
+
+
+  1.  :!kommando  utfrer en ekstern kommandio.
+
+      Noen nyttige eksempler er:
+	 (MS-DOS)	  (Unix)
+	  :!dir		   :!ls		  - List filene i katalogen.
+	  :!del FILNAVN    :!rm FILNAVN   - Slett filen FILNAVN.
+
+  2.  :w FILNAVN  skriver den nvrende Vim-filen disken med navnet FILNAVN .
+
+  3.  v  bevegelse  :w FILNAVN	lagrer de visuelt valgte linjene til filen
+     FILNAVN.
+
+  4.  :r FILNAVN  henter filen FILNAVN og legger den inn nedenfor markren.
+
+  5.  :r !dir  leser utdataene fra dir-kommandoen og legger dem nedenfor
+     markrposisjonen.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leksjon 6.1: PNE LINJE-KOMMANDOEN
+
+
+    ** Skriv  o  for  pne opp for en ny linje etter markren og g til
+       innsettingsmodus **
+
+  1. Flytt markren til linjen nedenfor merket --->.
+
+  2. Skriv  o  (liten o) for  pne opp en linje NEDENFOR markren og g inn i
+     innsettingsmodus.
+
+  3. Skriv litt tekst og trykk <ESC> for  g ut av innsettingsmodusen.
+
+---> Etter at  o  er skrevet blir markren plassert p den tomme linjen.
+
+  4. For  pne en ny linje OVER markren, trykk rett og slett en stor	O
+     istedenfor en liten  o . Prv dette p linjen nedenfor.
+
+---> Lag ny linje over denne ved  trykke O mens markren er p denne linjen.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 6.2: LEGG TIL-KOMMANDOEN
+
+
+	    ** Skriv  a  for  legge til tekst ETTER markren. **
+
+  1. Flytt markren til starten av linjen merket ---> nedenfor.
+
+  2. Trykk  e  til markren er p slutten av li.
+
+  3. Trykk  a  (liten a) for  legge til tekst ETTER markren.
+
+  4. Fullfr ordet snn som p linjen nedenfor. Trykk <ESC> for  g ut av
+     innsettingsmodusen.
+
+  5. Bruk  e  for  g til det neste ufullstendige ordet og repeter steg 3 og
+     4.
+
+---> Denne li lar deg ve p  leg til tek p en linje.
+---> Denne linjen lar deg ve p  legge til tekst p en linje.
+
+Merk: a, i og A gr alle til den samme innsettingsmodusen, den eneste
+      forskjellen er hvor tegnene blir satt inn.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leksjon 6.3: EN ANNEN MTE  ERSTATTE P
+
+
+	   ** Skriv en stor  R	for  erstatte mer enn ett tegn. **
+
+  1. Flytt markren til den frste linjen nedenfor merket --->. Flytt markren
+     til begynnelsen av den frste xxx-en.
+
+  2. Trykk  R  og skriv inn tallet som str nedenfor p den andre linjen s
+     det erstatter xxx.
+
+  3. Trykk <ESC> for  g ut av erstatningsmodusen. Legg merke til at resten
+     av linjen forblir uforandret.
+
+  4. Repeter stegene for  erstatte den gjenvrende xxx.
+
+---> Ved  legge 123 til xxx fr vi xxx.
+---> Ved  legge 123 til 456 fr vi 579.
+
+MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives
+      erstatter et eksisterende tegn.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Leksjon 6.4: KOPIERE OG LIME INN TEKST
+
+
+    ** Bruk y-operatoren for  kopiere tekst og  p  for  lime den inn **
+
+  1. G til linjen merket ---> nedenfor og plasser markren etter a).
+
+  2. G inn i visuell modus med  v  og flytt markren til like fr frste.
+
+  3. Trykk  y  for  kopiere (engelsk: yank) den uthevede teksten.
+
+  4. Flytt markren til slutten av den neste linjen:  j$
+
+  5. Trykk  p  for  lime inn teksten. Trykk deretter:	a andre <ESC> .
+
+  6. Bruk visuell modus for  velge  valget., kopier det med	y , g til
+     slutten av den neste linjen med  j$  og legg inn teksten der med  p .
+
+---> a) Dette er det frste valget.
+     b)
+
+Merk: Du kan ogs bruke  y  som en operator;  yw  kopierer ett ord.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    Leksjon 6.5: SETT VALG
+
+
+  ** Sett et valg s sk eller erstatning ignorerer store/sm bokstaver. **
+
+  1. Let etter ignore ved  skrive:  /ignore <ENTER>
+     Repeter flere ganger ved  trykke	n .
+
+  2. Sett ic-valget (Ignore Case) ved  skrive:  :set ic
+
+  3. Sk etter ignore igjen ved  trykke  n .
+     Legg merke til at bde Ignore og IGNORE blir funnet.
+
+  4. Sett hlsearch- og incsearch-valgene:  :set hls is
+
+  5. Skriv skekommandoen igjen og se hva som skjer:  /ignore <ENTER>
+
+  6. For  sl av ignorering av store/sm bokstaver, skriv:  :set noic
+
+Merk: For  fjerne uthevingen av treff, skriv:	:nohlsearch
+Merk: Hvis du vil ignorere store/sm bokstaver for kun en skekommando, bruk
+      \c  i uttrykket:	/ignore\c <ENTER>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 6
+
+  1. Trykk  o  for  legge til en linje NEDENFOR markren og g inn i
+     innsettingsmodus.
+     Trykk  O  for  pne en linje OVER markren.
+
+  2. Skriv  a  for  sette inn tekst ETTER markren.
+     Skriv  A  for  sette inn tekst etter slutten av linjen.
+
+  3. Kommandoen  e  gr til slutten av et ord.
+
+  4. Operatoren  y  (yank) kopierer tekst,  p  (paste) limer den inn.
+
+  5. Ved  trykke  R  gr du inn i erstatningsmodus helt til  <ESC>  trykkes.
+
+  6. Skriv :set xxx for  sette valget xxx. Noen valg er:
+	ic ignorecase	ignorer store/sm bokstaver under sk
+	is incsearch	vis delvise treff for en sketekst
+	hls hlsearch	uthev alle sketreff
+
+  7. Legg til no foran valget for  sl det av:  :set noic
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    Leksjon 7.1: F HJELP
+
+
+		   ** Bruk det innebygde hjelpesystemet. **
+
+  Vim har et omfattende innebygget hjelpesystem. For  starte det, prv en av
+  disse mtene:
+    - Trykk Hjelp-tasten (hvis du har en)
+    - Trykk F1-tasten (hvis du har en)
+    - Skriv  :help <ENTER>
+
+  Les teksten i hjelpevinduet for  finne ut hvordan hjelpen virker.
+  Skriv  CTRL-W CTRL-W	for  hoppe fra et vindu til et annet
+  Skriv  :q <ENTER>	for  lukke hjelpevinduet.
+
+  Du kan f hjelp for omtrent alle temaer om Vim ved  skrive et parameter til
+  :help-kommandoen. Prv disse (ikke glem  trykke <ENTER>):
+
+    :help w
+    :help c_CTRL-D
+    :help insert-index
+    :help user-manual
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leksjon 7.2: LAG ET OPPSTARTSSKRIPT
+
+
+			** Sl p funksjoner i Vim **
+
+  Vim har mange flere funksjoner enn Vi, men flesteparten av dem er sltt av
+  som standard. For  begynne  bruke flere funksjoner m du lage en
+  vimrc-fil.
+
+  1. Start redigeringen av vimrc-filen. Dette avhenger av systemet ditt:
+	:e ~/.vimrc	  for Unix
+	:e $VIM/_vimrc	  for MS Windows
+
+  2. Les inn eksempelfilen for vimrc:
+	:r $VIMRUNTIME/vimrc_example.vim
+
+  3. Lagre filen med:
+	:w
+
+  Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til
+  alle dine foretrukne oppsett i denne vimrc-filen.
+  For mer informasjon, skriv  :help vimrc-intro
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			   Leksjon 7.3: FULLFRING
+
+
+	      ** Kommandolinjefullfring med CTRL-D og <TAB> **
+
+  1. Vr sikker p at Vim ikke er i Vi-kompatibel modus:  :set nocp
+
+  2. Se hvilke filer som er i katalogen:  :!ls	eller  :!dir
+
+  3. Skriv starten p en kommando:  :e
+
+  4. Trykk  CTRL-D  og Vim vil vise en liste over kommandoer som starter med
+     e.
+
+  5. Trykk  <TAB>  og Vim vil fullfre kommandonavnet til :edit.
+
+  6. Legg til et mellomrom og starten p et eksisterende filnavn:  :edit FIL
+
+  7. Trykk <TAB>. Vim vil fullfre navnet (hvis det er unikt).
+
+MERK: Fullfring fungerer for mange kommandoer. Prv ved  trykke CTRL-D og
+      <TAB>. Det er spesielt nyttig for bruk sammen med  :help .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 7
+
+
+  1. Skriv  :help  eller trykk <F1> eller <Help> for  pne et hjelpevindu.
+
+  2. Skriv  :help kommando  for  f hjelp om  kommando .
+
+  3. Trykk  CTRL-W CTRL-W  for  hoppe til et annet vindu.
+
+  4. Trykk  :q	for  lukke hjelpevinduet.
+
+  5. Opprett et vimrc-oppstartsskript for  lagre favorittvalgene dine.
+
+  6. Nr du skriver en :-kommando, trykk CTRL-D for  se mulige
+     fullfringer. Trykk <TAB> for  bruke en fullfring.
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Her slutter innfringen i Vim. Den var ment som en rask oversikt over
+  editoren, akkurat nok til  la deg sette i gang med enkel bruk. Den er p
+  langt nr komplett, da Vim har mange flere kommandoer. Les bruksanvisningen
+  ved  skrive	:help user-manual  .
+
+  For videre lesing og studier, kan denne boken anbefales:
+      Vim - Vi Improved av Steve Oualline
+      Utgiver: New Riders
+  Den frste boken som er fullt og helt dedisert til Vim. Spesielt nyttig for
+  nybegynnere. Inneholder mange eksempler og illustrasjoner.
+  Se http://iccf-holland.org/click5.html
+
+  Denne boken er eldre og handler mer om Vi enn Vim, men anbefales ogs:
+      Learning the Vi Editor av Linda Lamb
+      Utgiver: O'Reilly & Associates Inc.
+  Det er en god bok for  f vite omtrent hva som helst om Vi.
+  Den sjette utgaven inneholder ogs informasjon om Vim.
+
+  Denne innfringen er skrevet av Michael C. Pierce og Robert K. Ware,
+  Colorado School of Mines med ider av Charles Smith, Colorado State
+  University. E-mail: bware@mines.colorado.edu .
+
+  Modifisert for Vim av Bram Moolenaar.
+  Oversatt av yvind A. Holm. E-mail: vimtutor _AT_ sunbase.org
+  Id: tutor.no 406 2007-03-18 22:48:36Z sunny
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+vim: set ts=8 :
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/tutor.nb.utf-8
@@ -0,0 +1,973 @@
+===============================================================================
+= V e l k o m m e n   t i l   i n n f ø r i n g e n   i   V i m  --  Ver. 1.7 =
+===============================================================================
+
+     Vim er en meget kraftig editor med mange kommandoer, alt for mange til å
+     kunne gå gjennom alle i en innføring som denne. Den er beregnet på å
+     sette deg inn i bruken av nok kommandoer så du vil være i stand til lett
+     å kunne bruke Vim som en editor til alle formål.
+
+     Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30
+     minutter, avhengig av hvor mye tid du bruker til eksperimentering.
+
+     MERK:
+     Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne
+     filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er
+     dette allerede en kopi).
+
+     Det er viktig å huske at denne innføringen er beregnet på læring gjennom
+     bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig.
+     Hvis du bare leser teksten, vil du glemme kommandoene!
+
+     Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for
+     å flytte markøren helt til leksjon 1.1 fyller skjermen.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 1.1:  FLYTTING AV MARKØREN
+
+
+       ** For å flytte markøren, trykk tastene h, j, k, l som vist. **
+	     ^
+	     k		Tips: h-tasten er til venstre og flytter til venstre.
+       < h	 l >	      l-tasten er til høyre og flytter til høyre.
+	     j		      j-tasten ser ut som en pil som peker nedover.
+	     v
+  1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene.
+
+  2. Hold inne nedovertasten (j) til den repeterer.
+     Nå vet du hvordan du beveger deg til neste leksjon.
+
+  3. Gå til leksjon 1.2 ved hjelp av nedovertasten.
+
+Merk: Hvis du blir usikker på noe du har skrevet, trykk <ESC> for å gå til
+      normalmodus. Skriv deretter kommandoen du ønsket på nytt.
+
+Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til
+      å bevege markøren mye raskere når du er blitt vant til det. Helt sant!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  Leksjon 1.2: AVSLUTTE VIM
+
+
+  !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!!
+
+  1. Trykk <ESC>-tasten (for å forsikre deg om at du er i normalmodus).
+
+  2. Skriv:	:q! <ENTER>.
+     Dette avslutter editoren og FORKASTER alle forandringer som du har gjort.
+
+  3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne
+     innføringen. Den er:   vimtutor <ENTER>
+
+  4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å
+     avslutte og starte editoren på nytt.
+
+MERK:  :q! <ENTER>  forkaster alle forandringer som du gjorde. I løpet av noen
+       få leksjoner vil du lære hvordan du lagrer forandringene til en fil.
+
+  5. Flytt markøren ned til leksjon 1.3.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Leksjon 1.3: REDIGERING AV TEKST -- SLETTING
+
+
+	     ** Trykk  x  for å slette tegnet under markøren. **
+
+  1. Flytt markøren til den første linjen merket med  --->.
+
+  2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som
+     skal slettes.
+
+  3. Trykk tasten  x  for å slette det uønskede tegnet.
+
+  4. Repeter punkt 2 til 4 til setningen er lik den som er under.
+
+---> Hessstennnn brrråsnudddde ii gaaata.
+---> Hesten bråsnudde i gata.
+
+  5. Nå som linjen er korrekt, gå til leksjon 1.4.
+
+MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men
+      bruk dem helt til de sitter.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING
+
+
+		    ** Trykk  i  for å sette inn tekst. **
+
+  1. Flytt markøren til den første linjen som er merket med --->.
+
+  2. For å gjøre den første linjen lik den andre, flytt markøren til den står
+     på tegnet ETTER posisjonen der teksten skal settes inn.
+
+  3. Trykk  i  og skriv inn teksten som mangler.
+
+  4. Etterhvert som hver feil er fikset, trykk <ESC> for å returnere til
+     normalmodus. Repeter punkt 2 til 4 til setningen er korrekt.
+
+---> Det er tkst som mnglr .
+---> Det er ganske mye tekst som mangler her.
+
+  5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen
+     nedenfor.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL
+
+
+		    ** Trykk  A  for å legge til tekst. **
+
+  1. Flytt markøren til den første linjen nedenfor merket --->.
+     Det har ikke noe å si hvor markøren er plassert på den linjen.
+
+  2. Trykk  A  og skriv inn det som skal legges til.
+
+  3. Når teksten er lagt til, trykk <ESC> for å returnere til normalmodusen.
+
+  4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og
+     3 for å reparere denne setningen.
+
+---> Det mangler noe tekst p
+     Det mangler noe tekst på denne linjen.
+---> Det mangler også litt tek
+     Det mangler også litt tekst på denne linjen.
+
+  5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Leksjon 1.6: REDIGERE EN FIL
+
+
+	       ** Bruk	:wq  for å lagre en fil og avslutte. **
+
+  !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!!
+
+  1. Avslutt denne innføringen som du gjorde i leksjon 1.2:  :q!
+
+  2. Skriv denne kommandoen på kommandolinja:  vim tutor <ENTER>
+     «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila
+     som du vil redigere. Bruk en fil som kan forandres.
+
+  3. Sett inn og slett tekst som du lærte i de foregående leksjonene.
+
+  4. Lagre filen med forandringene og avslutt Vim med:	:wq <ENTER>
+
+  5. Start innføringen på nytt og flytt ned til oppsummeringen som følger.
+
+  6. Etter å ha lest og forstått stegene ovenfor: Sett i gang.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 1
+
+
+  1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene.
+	 h (venstre)	 j (ned)     k (opp)	 l (høyre)
+
+  2. For å starte Vim fra skall-kommandolinjen, skriv:	vim FILNAVN <ENTER>
+
+  3. For å avslutte Vim, skriv:  <ESC> :q! <ENTER>  for å forkaste endringer.
+		   ELLER skriv:  <ESC> :wq <ENTER>  for å lagre forandringene.
+
+  4. For å slette tegnet under markøren, trykk:  x
+
+  5. For å sette inn eller legge til tekst, trykk:
+	 i    skriv innsatt tekst  <ESC>	sett inn før markøren
+	 A    skriv tillagt tekst  <ESC>	legg til på slutten av linjen
+
+MERK: Når du trykker <ESC> går du til normalmodus eller du avbryter en uønsket
+      og delvis fullført kommando.
+
+  Nå kan du gå videre til leksjon 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Leksjon 2.1: SLETTEKOMMANDOER
+
+
+		    ** Trykk  dw  for å slette et ord. **
+
+  1. Trykk <ESC> for å være sikker på at du er i normalmodus.
+
+  2. Flytt markøren til den første linjen nedenfor merket --->.
+
+  3. Flytt markøren til begynnelsen av ordet som skal slettes.
+
+  4. Trykk  dw	og ordet vil forsvinne.
+
+MERK: Bokstaven  d  vil komme til syne på den nederste linjen på skjermen når
+      du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet
+      tegn enn	d  har du skrevet noe feil; trykk <ESC> og start på nytt.
+
+---> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen.
+---> Det er tre ord som ikke hører hjemme i denne setningen.
+
+  5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå
+     deretter til leksjon 2.2.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leksjon 2.2: FLERE SLETTEKOMMANDOER
+
+
+	     ** Trykk  d$  for å slette til slutten av linjen. **
+
+  1. Trykk <ESC> for å være sikker på at du er i normalmodus.
+
+  2. Flytt markøren til linjen nedenfor merket --->.
+
+  3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum).
+
+  4. Trykk  d$	for å slette alt til slutten av linjen.
+
+---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye.
+
+  5. Gå til leksjon 2.3 for å forstå hva som skjer.
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leksjon 2.3: OM OPERATORER OG BEVEGELSER
+
+
+  Mange kommandoer som forandrer teksten er laget ut i fra en operator og en
+  bevegelse. Formatet for en slettekommando med sletteoperatoren  d  er:
+
+	d   bevegelse
+
+  Der:
+    d	      - er sletteoperatoren.
+    bevegelse - er hva operatoren vil opere på (listet nedenfor).
+
+  En kort liste med bevegelser:
+    w - til starten av det neste ordet, UNNTATT det første tegnet.
+    e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet.
+    $ - til slutten av linjen, INKLUDERT det siste tegnet.
+
+  Ved å skrive	de  vil altså alt fra markøren til slutten av ordet bli
+  slettet.
+
+MERK:  Ved å skrive kun bevegelsen i normalmodusen uten en operator vil
+       markøren flyttes som spesifisert.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE
+
+
+ ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. **
+
+  1. Flytt markøren til starten av linjen markert ---> nedenfor.
+
+  2. Skriv  2w	for å flytte markøren to ord framover.
+
+  3. Skriv  3e	for å flytte markøren framover til slutten av det tredje
+     ordet.
+
+  4. Skriv  0  (null) for å flytte til starten av linjen.
+
+  5. Repeter steg 2 og 3 med forskjellige tall.
+
+---> Dette er en linje med noen ord som du kan bevege deg rundt på.
+
+  6. Gå videre til leksjon 2.5.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER
+
+
+     ** Et tall sammen med en operator repeterer den så mange ganger. **
+
+  I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du
+  inn antall før bevegelsen for å slette mer:
+	 d  nummer  bevegelse
+
+  1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert
+     med --->.
+
+  2. Skriv  2dw  for å slette de to ordene med store bokstaver.
+
+  3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende
+     ordene som har store bokstaver.
+
+---> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar.
+
+MERK: Et antall mellom operatoren  d  og bevegelsen virker på samme måte som å
+      bruke bevegelsen uten en operator.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Leksjon 2.6: OPERERE PÅ LINJER
+
+
+		 ** Trykk  dd  for å slette en hel linje. **
+
+  På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at
+  det vil være lettere å rett og slett trykke to d-er for å slette en linje.
+
+  1. Flytt markøren til den andre linjen i verset nedenfor.
+  2. Trykk  dd	 å slette linjen.
+  3. Flytt deretter til den fjerde linjen.
+  4. Trykk  2dd  for å slette to linjer.
+
+--->  1) Roser er røde,
+--->  2) Gjørme er gøy,
+--->  3) Fioler er blå,
+--->  4) Jeg har en bil,
+--->  5) Klokker viser tiden,
+--->  6) Druer er søte
+--->  7) Og du er likeså.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Leksjon 2.7: ANGRE-KOMMANDOEN
+
+
+  ** Trykk  u  for å angre siste kommando,  U  for å fikse en hel linje. **
+
+  1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den
+     første feilen.
+  2. Trykk  x  for å slette det første uønskede tegnet.
+  3. Trykk så  u  for å angre den siste utførte kommandoen.
+  4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen	x  .
+  5. Trykk nå en stor  U  for å sette linjen tilbake til det den var
+     originalt.
+  6. Trykk  u  noen ganger for å angre	U  og foregående kommandoer.
+  7. Deretter trykker du  CTRL-R  (hold CTRL nede mens du trykker R) noen
+     ganger for å gjenopprette kommandoene (omgjøre angrekommandoene).
+
+---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre.
+
+  8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av
+     leksjon 2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 2
+
+
+  1. For å slette fra markøren fram til det neste ordet, trykk:  dw
+  2. For å slette fra markøren til slutten av en linje, trykk:	d$
+  3. For å slette en hel linje, trykk:	dd
+
+  4. For å repetere en bevegelse, sett et nummer foran:  2w
+  5. Formatet for en forandringskommando er:
+	       operator  [nummer]  bevegelse
+     der:
+       operator  - hva som skal gjøres, f.eks.	d  for å slette
+       [nummer]  - et valgfritt antall for å repetere bevegelsen
+       bevegelse - hva kommandoen skal operere på, eksempelvis	w  (ord),
+		   $  (til slutten av linjen) og så videre.
+
+  6. For å gå til starten av en linje, bruk en null:  0
+
+  7. For å angre tidligere endringer, skriv:		u  (liten u)
+     For å angre alle forandringer på en linje, skriv:	U  (stor U)
+     For å omgjøre angringen, trykk:			CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 3.1: «LIM INN»-KOMMANDOEN
+
+
+    ** Trykk  p  for å lime inn tidligere slettet tekst etter markøren **
+
+  1. Flytt markøren til den første linjen med ---> nedenfor.
+
+  2. Trykk  dd	for å slette linjen og lagre den i et Vim-register.
+
+  3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn.
+
+  4. Trykk  p  for å legge linjen under markøren.
+
+  5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge.
+
+---> d) Kan du også lære?
+---> b) Fioler er blå,
+---> c) Intelligens må læres,
+---> a) Roser er røde,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 3.2: «ERSTATT»-KOMMANDOEN
+
+
+	 ** Trykk  rx  for å erstatte tegnet under markøren med x. **
+
+  1. Flytt markøren til den første linjen nedenfor merket --->.
+
+  2. Flytt markøren så den står oppå den første feilen.
+
+  3. Trykk  r  og deretter tegnet som skal være der.
+
+  4. Repeter punkt 2 og 3 til den første linjen er lik den andre.
+
+---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster!
+---> Da denne linjen ble skrevet, var det noen som trykket feile taster!
+
+  5. Gå videre til leksjon 3.2.
+
+MERK: Husk at du bør lære ved å BRUKE, ikke pugge.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 3.3: «FORANDRE»-OPERATOREN
+
+
+	   ** For å forandre til slutten av et ord, trykk  ce . **
+
+  1. Flytt markøren til den første linjen nedenfor som er merket --->.
+
+  2. Plasser markøren på  u  i «lubjwr».
+
+  3. Trykk  ce	og det korrekte ordet (i dette tilfellet, skriv «injen»).
+
+  4. Trykk <ESC> og gå til det neste tegnet som skal forandres.
+
+  5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre.
+
+---> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen.
+---> Denne linjen har noen ord som må forandres med «forandre»-kommandoen.
+
+Vær oppmerksom på at  ce  sletter ordet og går inn i innsettingsmodus.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c
+
+
+ ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». **
+
+  1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er:
+
+	 c    [nummer]	 bevegelse
+
+  2. Bevegelsene er de samme, som for eksempel	w  (ord) og  $	(slutten av en
+     linje).
+
+  3. Gå til den første linjen nedenfor som er merket --->.
+
+  4. Flytt markøren til den første feilen.
+
+  5. Skriv  c$	og skriv resten av linjen lik den andre og trykk <ESC>.
+
+---> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste.
+---> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen.
+
+MERK: Du kan bruke slettetasten for å rette feil mens du skriver.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 3
+
+
+  1. For å legge tilbake tekst som nettopp er blitt slettet, trykk  p  . Dette
+     limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet
+     vil den bli limt inn på linjen under markøren).
+
+  2. For å erstatte et tegn under markøren, trykk  r  og deretter tegnet som
+     du vil ha der.
+
+  3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen
+     tar deg. Det vil si, skriv  ce  for å forandre fra markøren til slutten
+     av ordet,	c$  for å forandre til slutten av linjen.
+
+  4. Formatet for «forandre» er:
+
+	 c   [nummer]	bevegelse
+
+Nå kan du gå til neste leksjon.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	     Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS
+
+	** Trykk CTRL-G for å vise posisjonen i filen og filstatusen.
+	   Trykk  G  for å gå til en spesifikk linje i filen. **
+
+  Merk: Les hele leksjonen før du utfører noen av punktene!
+
+  1. Hold nede Ctrl-tasten og trykk  g	. Vi kaller dette CTRL-G. En melding
+     vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i
+     filen. Husk linjenummeret for bruk i steg 3.
+
+Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette
+      skjer når «ruler»-valget er satt (forklart i leksjon 6).
+
+  2. Trykk  G  for å gå til bunnen av filen.
+     Skriv  gg	for å gå til begynnelsen av filen.
+
+  3. Skriv inn linjenummeret du var på og deretter  G . Dette vil føre deg
+     tilbake til linjen du var på da du først trykket CTRL-G.
+
+  4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Leksjon 4.2: SØKEKOMMANDOEN
+
+      ** Skriv	/  etterfulgt av en søkestreng som du vil lete etter. **
+
+  1. Trykk  /  når du er i normalmodusen. Legg merke til at skråstreken og
+     markøren kommer til syne på bunnen av skjermen i likhet med
+     «:»-kommandoene.
+
+  2. Skriv «feeeiil» og trykk <ENTER>. Dette er teksten du vil lete etter.
+
+  3. For å finne neste forekomst av søkestrengen, trykk  n .
+     For å lete etter samme søketeksten i motsatt retning, trykk  N .
+
+  4. For å lete etter en tekst bakover i filen, bruk  ?  istedenfor  /	.
+
+  5. For å gå tilbake til der du kom fra, trykk  CTRL-O  (Hold Ctrl nede mens
+     du trykker bokstaven  o ). Repeter for å gå enda lengre tilbake. CTRL-I
+     går framover.
+
+---> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil.
+Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt
+      hvis «wrapscan»-valget er resatt.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leksjon 4.3: FINN SAMSVARENDE PARENTESER
+
+
+	  ** Trykk  %  for å finne en samsvarende ), ] eller } . **
+
+  1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->.
+
+  2. Trykk  %  .
+
+  3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen.
+
+  4. Trykk  %  for å flytte markøren til den andre samsvarende parentesen.
+
+  5. Flytt markøren til en annen (, ), [, ], { eller } og se hva  %  gjør.
+
+---> Dette ( er en testlinje med (, [ ] og { } i den )).
+
+Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert
+      antall parenteser!
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Leksjon 4.4: ERSTATT-KOMMANDOEN
+
+
+	** Skriv  :s/gammel/ny/g  for å erstatte «gammel» med «ny». **
+
+  1. Flytt markøren til linjen nedenfor som er merket med --->.
+
+  2. Skriv  :s/deen/den/ <ENTER>  . Legg merke til at denne kommandoen bare
+     forandrer den første forekomsten av «deen» på linjen.
+
+  3. Skriv  :s/deen/den/g . Når g-flagget legges til, betyr dette global
+     erstatning på linjen og erstatter alle forekomster av «deen» på linjen.
+
+---> deen som kan kaste deen tyngste steinen lengst er deen beste
+
+  4. For å erstatte alle forekomster av en tekststreng mellom to linjer,
+     skriv  :#,#s/gammel/ny/g  der #,# er linjenumrene på de to linjene for
+			       linjeområdet erstatningen skal gjøres.
+     Skriv  :%s/gammel/ny/g    for å erstatte tekst i hele filen.
+     Skriv  :%s/gammel/ny/gc   for å finne alle forekomster i hele filen, og
+			       deretter spørre om teksten skal erstattes eller
+			       ikke.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 4
+
+
+  1. Ctrl-G viser nåværende posisjon i filen og filstatusen.
+	     G	går til slutten av filen.
+     nummer  G	går til det linjenummeret.
+	    gg	går til den første linjen.
+
+  2. Skriv  /  etterfulgt av en søketekst for å lete FRAMOVER etter teksten.
+     Skriv  ?  etterfulgt av en søketekst for å lete BAKOVER etter teksten.
+     Etter et søk kan du trykke  n  for å finne neste forekomst i den samme
+     retningen eller  N  for å lete i motsatt retning.
+     CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner.
+
+  3. Skriv  %  når markøren står på en (, ), [, ], { eller } for å finne den
+     som samsvarer.
+
+  4. Erstatte «gammel» med første «ny» på en linje:  :s/gammel/ny
+     Erstatte alle «gammel» med «ny» på en linje:    :s/gammel/ny/g
+     Erstatte tekst mellom to linjenumre:	     :#,#s/gammel/ny/g
+     Erstatte alle forekomster i en fil:	     :%s/gammel/ny/g
+     For å godkjenne hver erstatning, legg til «c»:  :%s/gammel/ny/gc
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	       Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO
+
+
+    ** Skriv  :!  etterfulgt av en ekstern kommando for å utføre denne. **
+
+  1. Skriv den velkjente kommandoen  :	 for å plassere markøren på bunnen av
+     skjermen. Dette lar deg skrive en kommandolinjekommando.
+
+  2. Nå kan du skrive tegnet  !  . Dette lar deg utføre en hvilken som helst
+     ekstern kommando.
+
+  3. Som et eksempel, skriv  ls  etter utropstegnet og trykk <ENTER>. Du vil
+     nå få en liste over filene i katalogen, akkurat som om du hadde kjørt
+     kommandoen direkte fra kommandolinjen i skallet. Eller bruk  :!dir  hvis
+     «ls» ikke virker.
+
+MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med
+      parametere.
+
+MERK: Alle «:»-kommandoer må avsluttes med <ENTER>. Fra dette punktet er det
+      ikke alltid vi nevner det.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leksjon 5.2: MER OM LAGRING AV FILER
+
+
+      ** For å lagre endringene gjort i en tekst, skriv  :w FILNAVN. **
+
+  1. Skriv  :!dir  eller  :!ls	for å få en liste over filene i katalogen. Du
+     vet allerede at du må trykke <ENTER> etter dette.
+
+  2. Velg et filnavn på en fil som ikke finnes, som for eksempel  TEST .
+
+  3. Skriv  :w TEST  (der TEST er filnavnet du velger).
+
+  4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å
+     sjekke dette, skriv  :!dir  eller	:!ls  igjen for å se innholdet av
+     katalogen.
+
+Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST»,
+      ville filen vært en eksakt kopi av innføringen da du lagret den.
+
+  5. Fjern filen ved å skrive  :!rm TEST  hvis du er på et Unix-lignende
+     operativsystem, eller  :!del TEST	hvis du bruker MS-DOS.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES
+
+
+     ** For å lagre en del av en fil, skriv  v	bevegelse  :w FILNAVN **
+
+  1. Flytt markøren til denne linjen.
+
+  2. Trykk  v  og flytt markøren til det femte elementet nedenfor. Legg merke
+     til at teksten blir markert.
+
+  3. Trykk  :  (kolon). På bunnen av skjermen vil  :'<,'>  komme til syne.
+
+  4. Trykk  w TEST  , der TEST er et filnavn som ikke finnes enda. Kontroller
+     at du ser	:'<,'>w TEST  før du trykker Enter.
+
+  5. Vim vil skrive de valgte linjene til filen TEST. Bruk  :!dir  eller  !ls
+     for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon.
+
+MERK: Ved å trykke  v  startes visuelt valg. Du kan flytte markøren rundt for
+      å gjøre det valgte området større eller mindre. Deretter kan du bruke en
+      operator for å gjøre noe med teksten. For eksempel sletter  d  teksten.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER
+
+
+ ** For å lese inn en annen fil inn i nåværende buffer, skriv  :r FILNAVN  **
+
+  1. Plasser markøren like over denne linjen.
+
+MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter
+      NED for å se denne leksjonen igjen.
+
+  2. Hent TEST-filen ved å bruke kommandoen  :r TEST  der TEST er navnet på
+     filen du brukte. Filen du henter blir plassert nedenfor markørlinjen.
+
+  3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av
+     leksjon 5.3, originalen og denne versjonen.
+
+MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel,	:r !ls
+      leser utdataene av ls-kommandoen og legger dem nedenfor markøren.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 5
+
+
+  1.  :!kommando  utfører en ekstern kommandio.
+
+      Noen nyttige eksempler er:
+	 (MS-DOS)	  (Unix)
+	  :!dir		   :!ls		  - List filene i katalogen.
+	  :!del FILNAVN    :!rm FILNAVN   - Slett filen FILNAVN.
+
+  2.  :w FILNAVN  skriver den nåværende Vim-filen disken med navnet FILNAVN .
+
+  3.  v  bevegelse  :w FILNAVN	lagrer de visuelt valgte linjene til filen
+     FILNAVN.
+
+  4.  :r FILNAVN  henter filen FILNAVN og legger den inn nedenfor markøren.
+
+  5.  :r !dir  leser utdataene fra «dir»-kommandoen og legger dem nedenfor
+     markørposisjonen.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN
+
+
+    ** Skriv  o  for å «åpne opp» for en ny linje etter markøren og gå til
+       innsettingsmodus **
+
+  1. Flytt markøren til linjen nedenfor merket --->.
+
+  2. Skriv  o  (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i
+     innsettingsmodus.
+
+  3. Skriv litt tekst og trykk <ESC> for å gå ut av innsettingsmodusen.
+
+---> Etter at  o  er skrevet blir markøren plassert på den tomme linjen.
+
+  4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor	O
+     istedenfor en liten  o . Prøv dette på linjen nedenfor.
+
+---> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 6.2: «LEGG TIL»-KOMMANDOEN
+
+
+	    ** Skriv  a  for å legge til tekst ETTER markøren. **
+
+  1. Flytt markøren til starten av linjen merket ---> nedenfor.
+
+  2. Trykk  e  til markøren er på slutten av «li».
+
+  3. Trykk  a  (liten a) for å legge til tekst ETTER markøren.
+
+  4. Fullfør ordet sånn som på linjen nedenfor. Trykk <ESC> for å gå ut av
+     innsettingsmodusen.
+
+  5. Bruk  e  for å gå til det neste ufullstendige ordet og repeter steg 3 og
+     4.
+
+---> Denne li lar deg øve på å leg til tek på en linje.
+---> Denne linjen lar deg øve på å legge til tekst på en linje.
+
+Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste
+      forskjellen er hvor tegnene blir satt inn.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ
+
+
+	   ** Skriv en stor  R	for å erstatte mer enn ett tegn. **
+
+  1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren
+     til begynnelsen av den første «xxx»-en.
+
+  2. Trykk  R  og skriv inn tallet som står nedenfor på den andre linjen så
+     det erstatter xxx.
+
+  3. Trykk <ESC> for å gå ut av erstatningsmodusen. Legg merke til at resten
+     av linjen forblir uforandret.
+
+  4. Repeter stegene for å erstatte den gjenværende xxx.
+
+---> Ved å legge 123 til xxx får vi xxx.
+---> Ved å legge 123 til 456 får vi 579.
+
+MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives
+      erstatter et eksisterende tegn.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Leksjon 6.4: KOPIERE OG LIME INN TEKST
+
+
+    ** Bruk y-operatoren for å kopiere tekst og  p  for å lime den inn **
+
+  1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)».
+
+  2. Gå inn i visuell modus med  v  og flytt markøren til like før «første».
+
+  3. Trykk  y  for å kopiere (engelsk: «yank») den uthevede teksten.
+
+  4. Flytt markøren til slutten av den neste linjen:  j$
+
+  5. Trykk  p  for å lime inn teksten. Trykk deretter:	a andre <ESC> .
+
+  6. Bruk visuell modus for å velge « valget.», kopier det med	y , gå til
+     slutten av den neste linjen med  j$  og legg inn teksten der med  p .
+
+---> a) Dette er det første valget.
+     b)
+
+Merk: Du kan også bruke  y  som en operator;  yw  kopierer ett ord.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    Leksjon 6.5: SETT VALG
+
+
+  ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. **
+
+  1. Let etter «ignore» ved å skrive:  /ignore <ENTER>
+     Repeter flere ganger ved å trykke	n .
+
+  2. Sett «ic»-valget (Ignore Case) ved å skrive:  :set ic
+
+  3. Søk etter «ignore» igjen ved å trykke  n .
+     Legg merke til at både «Ignore» og «IGNORE» blir funnet.
+
+  4. Sett «hlsearch»- og «incsearch»-valgene:  :set hls is
+
+  5. Skriv søkekommandoen igjen og se hva som skjer:  /ignore <ENTER>
+
+  6. For å slå av ignorering av store/små bokstaver, skriv:  :set noic
+
+Merk: For å fjerne uthevingen av treff, skriv:	:nohlsearch
+Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk
+      \c  i uttrykket:	/ignore\c <ENTER>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 6
+
+  1. Trykk  o  for å legge til en linje NEDENFOR markøren og gå inn i
+     innsettingsmodus.
+     Trykk  O  for å åpne en linje OVER markøren.
+
+  2. Skriv  a  for å sette inn tekst ETTER markøren.
+     Skriv  A  for å sette inn tekst etter slutten av linjen.
+
+  3. Kommandoen  e  går til slutten av et ord.
+
+  4. Operatoren  y  («yank») kopierer tekst,  p  («paste») limer den inn.
+
+  5. Ved å trykke  R  går du inn i erstatningsmodus helt til  <ESC>  trykkes.
+
+  6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er:
+	«ic» «ignorecase»	ignorer store/små bokstaver under søk
+	«is» «incsearch»	vis delvise treff for en søketekst
+	«hls» «hlsearch»	uthev alle søketreff
+
+  7. Legg til «no» foran valget for å slå det av:  :set noic
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    Leksjon 7.1: FÅ HJELP
+
+
+		   ** Bruk det innebygde hjelpesystemet. **
+
+  Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av
+  disse måtene:
+    - Trykk Hjelp-tasten (hvis du har en)
+    - Trykk F1-tasten (hvis du har en)
+    - Skriv  :help <ENTER>
+
+  Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker.
+  Skriv  CTRL-W CTRL-W	for å hoppe fra et vindu til et annet
+  Skriv  :q <ENTER>	for å lukke hjelpevinduet.
+
+  Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til
+  «:help»-kommandoen. Prøv disse (ikke glem å trykke <ENTER>):
+
+    :help w
+    :help c_CTRL-D
+    :help insert-index
+    :help user-manual
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leksjon 7.2: LAG ET OPPSTARTSSKRIPT
+
+
+			** Slå på funksjoner i Vim **
+
+  Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av
+  som standard. For å begynne å bruke flere funksjoner må du lage en
+  «vimrc»-fil.
+
+  1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt:
+	:e ~/.vimrc	  for Unix
+	:e $VIM/_vimrc	  for MS Windows
+
+  2. Les inn eksempelfilen for «vimrc»:
+	:r $VIMRUNTIME/vimrc_example.vim
+
+  3. Lagre filen med:
+	:w
+
+  Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til
+  alle dine foretrukne oppsett i denne «vimrc»-filen.
+  For mer informasjon, skriv  :help vimrc-intro
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			   Leksjon 7.3: FULLFØRING
+
+
+	      ** Kommandolinjefullføring med CTRL-D og <TAB> **
+
+  1. Vær sikker på at Vim ikke er i Vi-kompatibel modus:  :set nocp
+
+  2. Se hvilke filer som er i katalogen:  :!ls	eller  :!dir
+
+  3. Skriv starten på en kommando:  :e
+
+  4. Trykk  CTRL-D  og Vim vil vise en liste over kommandoer som starter med
+     «e».
+
+  5. Trykk  <TAB>  og Vim vil fullføre kommandonavnet til «:edit».
+
+  6. Legg til et mellomrom og starten på et eksisterende filnavn:  :edit FIL
+
+  7. Trykk <TAB>. Vim vil fullføre navnet (hvis det er unikt).
+
+MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og
+      <TAB>. Det er spesielt nyttig for bruk sammen med  :help .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 7
+
+
+  1. Skriv  :help  eller trykk <F1> eller <Help> for å åpne et hjelpevindu.
+
+  2. Skriv  :help kommando  for å få hjelp om  kommando .
+
+  3. Trykk  CTRL-W CTRL-W  for å hoppe til et annet vindu.
+
+  4. Trykk  :q	for å lukke hjelpevinduet.
+
+  5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine.
+
+  6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige
+     fullføringer. Trykk <TAB> for å bruke en fullføring.
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Her slutter innføringen i Vim. Den var ment som en rask oversikt over
+  editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på
+  langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen
+  ved å skrive	:help user-manual  .
+
+  For videre lesing og studier, kan denne boken anbefales:
+      «Vim - Vi Improved» av Steve Oualline
+      Utgiver: New Riders
+  Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for
+  nybegynnere. Inneholder mange eksempler og illustrasjoner.
+  Se http://iccf-holland.org/click5.html
+
+  Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også:
+      «Learning the Vi Editor» av Linda Lamb
+      Utgiver: O'Reilly & Associates Inc.
+  Det er en god bok for å få vite omtrent hva som helst om Vi.
+  Den sjette utgaven inneholder også informasjon om Vim.
+
+  Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware,
+  Colorado School of Mines med idéer av Charles Smith, Colorado State
+  University. E-mail: bware@mines.colorado.edu .
+
+  Modifisert for Vim av Bram Moolenaar.
+  Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org
+  Id: tutor.no 406 2007-03-18 22:48:36Z sunny
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+vim: set ts=8 :
--- a/runtime/tutor/tutor.pl
+++ b/runtime/tutor/tutor.pl
@@ -2,9 +2,9 @@
 =    W i t a j   w   t u t o r i a l u   V I M - a      -    Wersja  1.7.     =
 ===============================================================================
 
-     Vim to potny edytor, ktry posiada wiele polece, zbyt duo by
+     Vim to potny edytor, ktry posiada wiele polece, zbyt duo, by
      wyjani je wszystkie w tym tutorialu. Ten przewodnik ma nauczy
-     Ci posugiwa si wystarczajco wieloma komendami by mg atwo
+     Ci posugiwa si wystarczajco wieloma komendami, by mg atwo
      uywa Vima jako edytora oglnego przeznaczenia.
 
      Czas potrzebny na ukoczenie tutoriala to 25 do 30 minut i zaley
@@ -13,14 +13,14 @@
 	 UWAGA:
 	 Polecenia wykonywane w czasie lekcji zmodyfikuj tekst. Zrb
 	 wczeniej kopi tego pliku do wicze (jeli zacze komend
-	 "vimtutor" to ju pracujesz na kopii).
+	 "vimtutor", to ju pracujesz na kopii).
 
-	 Pamitaj e przewodnik ten zosta zaprojektowany do nauki poprzez
-	 wiczenia. Oznacza to, e musisz wykonywa polecenia by nauczy si ich
-	 prawidowo. Jeli bdziesz jedynie czyta tekst szybko zapomnisz wiele
+	 Pamitaj, e przewodnik ten zosta zaprojektowany do nauki poprzez
+	 wiczenia. Oznacza to, e musisz wykonywa polecenia, by nauczy si ich
+	 prawidowo. Jeli bdziesz jedynie czyta tekst, szybko zapomnisz wiele
 	 polece!
 
-     Teraz upewnij si, e nie masz wcinitego CapsLocka i wciskaj  j
+     Teraz upewnij si, e nie masz wcinitego Caps Locka i wciskaj  j
      tak dugo dopki Lekcja 1.1. nie wypeni cakowicie ekranu.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -40,28 +40,28 @@
 
   3. Uywajc strzaki w d przejd do nastpnej lekcji.
 
-Uwaga: Jeli nie jeste pewien czego co wpisae, wcinij <ESC> by wrci do
+Uwaga: Jeli nie jeste pewien czego co wpisae, wcinij <ESC>, by wrci do
        trybu Normal. Wtedy powtrz polecenie.
 
 Uwaga: Klawisze kursora take powinny dziaa, ale uywajc  hjkl  bdziesz
-       w stanie porusza si o wiele szybciej jak si tylko przyzwyczaisz.
+       w stanie porusza si o wiele szybciej, jak si tylko przyzwyczaisz.
        Naprawd!
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		    Lekcja 1.2.: WYCHODZENIE Z VIM-a
 
- !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca lekcj.!!
+ !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca lekcj !!
 
   1. Wcinij <ESC> (aby upewni si, e jeste w trybie Normal).
   2. Wpisz:			:q!<ENTER>.
-     To spowoduje wyjcie z edytora PORZUCAJC wszelkie zmiany jakie
-     zdye zrobi. Jeli chcesz zapamita zmiany i wyj
+     To spowoduje wyjcie z edytora PORZUCAJC wszelkie zmiany, jakie
+     zdye zrobi. Jeli chcesz zapamita zmiany i wyj,
      wpisz:			:wq<ENTER>
 
   3. Kiedy widzisz znak zachty powoki wpisz komend, eby wrci
      do tutoriala. Czyli:	vimtutor<ENTER>
 
-  4. Jeli chcesz zapamita polecenia, wykonaj kroki 1. do 3. aby
+  4. Jeli chcesz zapamita polecenia, wykonaj kroki 1. do 3., aby
      wyj i wrci do edytora.
 
 UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobie. W nastpnych
@@ -85,7 +85,7 @@ UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobie. W nastpnych
 
 ---> Kkrowa prrzeskoczya prrzez ksiiycc.
 
-  5. Teraz kiedy zdanie jest poprawione przejd do Lekcji 1.4.
+  5. Teraz, kiedy zdanie jest poprawione, przejd do Lekcji 1.4.
 
 UWAGA: Ucz si przez wiczenie, nie wkuwanie.
 
@@ -101,18 +101,18 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie.
 
   1. Przenie kursor do pierwszej linii poniej oznaczonej --->.
 
-  2. Aby poprawi pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym
+  2. Aby poprawi pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym,
      gdzie tekst ma by wstawiony.
 
   3. Wcinij  i  a nastpnie wpisz konieczne poprawki.
 
-  4. Po poprawieniu bdu wcinij <ESC> by wrci do trybu Normal.
-     Powtarzaj kroki 2. do 4. aby poprawi cae zdanie.
+  4. Po poprawieniu bdu wcinij <ESC>, by wrci do trybu Normal.
+     Powtarzaj kroki 2. do 4., aby poprawi cae zdanie.
 
 ---> W tej brkje troch .
 ---> W tej linii brakuje troch tekstu.
 
-  5. Kiedy czujesz si swobodnie wstawiajc tekst przejd do
+  5. Kiedy czujesz si swobodnie wstawiajc tekst, przejd do
      podsumowania poniej.
 
 
@@ -129,7 +129,7 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie.
 
   3. Kiedy tekst zosta dodany, wcinij <ESC> i wr do trybu Normalnego.
 
-  4. Przenie kursor do drugiej linii oznaczonej ---> i powtrz kroki 2 i 3
+  4. Przenie kursor do drugiej linii oznaczonej ---> i powtrz kroki 2. i 3.,
      aby poprawi zdanie.
 
 ---> Brakuje tu tro
@@ -137,27 +137,27 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie.
 ---> Tu te troch bra
      Tu te troch brakuje.
 
-  5. Kiedy ju utrwalie wiczenie przejd do lekcji 1.6.
+  5. Kiedy ju utrwalie wiczenie, przejd do lekcji 1.6.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			  Lekcja 1.6.: EDYCJA PLIKU
 
 		  ** Uyj  :wq  aby zapisa plik i wyj. **
 
-   !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczyaj ca lekcj !!
+   !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj ca lekcj !!
 
   1. Zakocz tutorial tak jak w lekcji 1.2.:  :q!
-     Lub jeli masz dostp do innego terminala zrb kolejne kroki tam.
+     lub, jeli masz dostp do innego terminala, wykonaj kolejne kroki tam.
 
   2. W powoce wydaj polecenie:  vim tutor<ENTER>
-     "vim" jest poleceniem uruchamiajcym edytor Vim. 'tutor' to nazwa pliku
-     jaki chcesz edytowa. Uyj pliku jaki moe zosta zmieniony.
+     "vim" jest poleceniem uruchamiajcym edytor Vim. 'tutor' to nazwa pliku,
+     jaki chcesz edytowa. Uyj pliku, ktry moe zosta zmieniony.
 
-  3. Dodaj i usu tekst tak jak si nauczye w poprzednich lekcjach.
+  3. Dodaj i usu tekst tak, jak si nauczye w poprzednich lekcjach.
 
   4. Zapisz plik ze zmianami i opu Vima:  :wq<ENTER>
 
-  5. Jeli zakoczye vimtutor w kroku 1. uruchom go ponownie i przejd
+  5. Jeli zakoczye vimtutor w kroku 1., uruchom go ponownie i przejd
      do podsumowania poniej.
 
   6. Po przeczytaniu wszystkich krokw i ich zrozumieniu: wykonaj je.
@@ -168,14 +168,14 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie.
   1. Poruszasz kursorem uywajc "strzaek" i klawiszy  hjkl .
        h (w lewo)	 j (w d)	 k (do gry)		l (w prawo)
 
-  2. By wej do Vima (z powoki) wpisz:
+  2. By wej do Vima, (z powoki) wpisz:
 			    vim NAZWA_PLIKU<ENTER>
 
-  3. By wyj z Vima wpisz:
-			    <ESC> :q!<ENTER>  by usunc wszystkie zmiany.
+  3. By wyj z Vima, wpisz:
+			    <ESC> :q!<ENTER>  by usun wszystkie zmiany.
 	     LUB:	    <ESC> :wq<ENTER>  by zmiany zachowa.
 
-  4. By usun znak pod kursorem wcinij:  x
+  4. By usun znak pod kursorem, wcinij:  x
 
   5. By wstawi tekst przed kursorem lub doda:
 	i   wpisz tekst   <ESC>         wstawi przed kursorem
@@ -189,18 +189,18 @@ Teraz moemy kontynuowa i przej do Lekcji 2.
 		  Lekcja 2.1.: POLECENIE DELETE (usuwanie)
 
 
-		      ** Wpisz  dw  by usunc wyraz. **
+		      ** Wpisz  dw  by usun wyraz. **
 
-  1. Wcinij  <ESC>  by upewni si, e jeste w trybie Normal.
+  1. Wcinij  <ESC>, by upewni si, e jeste w trybie Normal.
 
   2. Przenie kursor do linii poniej oznaczonej --->.
 
-  3. Przesu kursor na pocztek wyrazu, ktre chcesz usun.
+  3. Przesu kursor na pocztek wyrazu, ktry chcesz usun.
 
   4. Wpisz   dw   by usun wyraz.
 
   UWAGA: Litera  d  pojawi si na dole ekranu. Vim czeka na wpisanie  w .
-	 Jeli zobaczysz inny znak oznacza to, e wpisae co le, wcinij
+	 Jeli zobaczysz inny znak, oznacza to, e wpisae co le; wcinij
 	 <ESC> i zacznij od pocztku.
 
 ---> Jest tu par papier wyrazw, ktre kamie nie nale do noyce tego zdania.
@@ -225,7 +225,7 @@ Teraz moemy kontynuowa i przej do Lekcji 2.
 ---> Kto wpisa koniec tego zdania dwukrotnie. zdania dwukrotnie.
 
 
-  5. Przejd do Lekcji 2.3. by zrozumie co si stao.
+  5. Przejd do Lekcji 2.3., by zrozumie co si stao.
 
 
 
@@ -235,12 +235,12 @@ Teraz moemy kontynuowa i przej do Lekcji 2.
 		     Lekcja 2.3.: O OPERATORACH I RUCHACH
 
 
-  Wiele polece zmieniajcych tekst s zoone z operatora i ruchu.
-  Format dla polecenia usuwajcego z operatorem  d  jest taki:
+  Wiele polece zmieniajcych tekst jest zoonych z operatora i ruchu.
+  Format dla polecenia usuwajcego z operatorem  d  jest nastpujcy:
 
 	    d  ruch
 
-  Gdzie:
+  gdzie:
    d      - operator usuwania.
    ruch   - na czym polecenie bdzie wykonywane (lista poniej).
 
@@ -252,7 +252,7 @@ Teraz moemy kontynuowa i przej do Lekcji 2.
 W ten sposb wpisanie  de  usunie znaki od kursora do koca wyrazu.
 
 UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor
-       tak jak to okrelono.
+       tak, jak to okrelono.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		    Lekcja 2.4.: UYCIE MNONIKA DLA RUCHU
@@ -266,32 +266,32 @@ UWAGA: Wpisanie tylko ruchu w trybie Nor
 
   3. Wpisz  3e  aby przenie kursor do koca trzeciego wyrazu w przd.
 
-  4. Wpisz  0  (zero) aby przenie kursor do pocztku linii.
+  4. Wpisz  0  (zero), aby przenie kursor na pocztek linii.
 
   5. Powtrz kroki 2. i 3. z innymi liczbami.
 
 
- ---> To jest zwyky wiersz z wyrazami po ktrych moesz si porusza.
+ ---> To jest zwyky wiersz z wyrazami, po ktrych moesz si porusza.
 
   6. Przejd do lekcji 2.5.
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		Lekcja 2.5.: UYCIE MNONIKA BY WICEJ USUN
+		Lekcja 2.5.: UYCIE MNONIKA, BY WICEJ USUN
 
 
     ** Wpisanie liczby z operatorem powtarza go odpowiedni ilo razy. **
 
   W wyej wspomnianej kombinacji operatora usuwania i ruchu podaj mnonik
-  przed ruchem by wicej usun:
+  przed ruchem, by wicej usun:
 	d  liczba  ruch
 
   1. Przenie kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->.
 
   2. Wpisz  2dw  aby usun dwa wyrazy KAPITALIKAMI.
 
-  3. Powtarzaj kroki 1. i 2. z innymi mnonikami aby usun kolejne wyrazy
+  3. Powtarzaj kroki 1. i 2. z innymi mnonikami, aby usun kolejne wyrazy
      KAPITALIKAMI jednym poleceniem
 
 ---> ta ASD WE linia QWE ASDF ZXCV FG wyrazw zostaa ERT FGH CF oczyszczona.
@@ -312,7 +312,7 @@ UWAGA:  Mnonik pomidzy operatorem  d  i ruchem dziaa podobnie do ruchu bez
   1. Przenie kursor do drugiego zdania z wierszyka poniej.
   2. Wpisz  dd  aby usun wiersz.
   3. Teraz przenie si do czwartego wiersza.
-  4. Wpisz  2dd  aby usunc dwa wiersze.
+  4. Wpisz  2dd  aby usun dwa wiersze.
 
 --->  1)  Re s czerwone,
 --->  2)  Boto jest fajne,
@@ -335,12 +335,12 @@ UWAGA:  Mnonik pomidzy operatorem  d  i ruchem dziaa podobnie do ruchu bez
   2. Wpisz  x  aby usun pierwszy niechciany znak.
   3. Teraz wcinij  u  aby cofn skutki ostatniego polecenia.
   4. Tym razem popraw wszystkie bdy w linii uywajc polecenia  x .
-  5. Teraz wcinij wielkie U aby przywrci lini do oryginalnego stanu.
-  6. Teraz wcinij  u  kilka razy by cofn  U  i poprzednie polecenia.
+  5. Teraz wcinij wielkie  U  aby przywrci lini do oryginalnego stanu.
+  6. Teraz wcinij  u  kilka razy, by cofn  U  i poprzednie polecenia.
   7. Teraz wpisz CTRL-R (trzymaj rwnoczenie wcinite klawisze CTRL i R)
      kilka razy, by cofn cofnicia.
 
----> Poopraw bldyyy w teej liniii i zaamiie je prrzez coofnij.
+---> Poopraw bdyyy w teej liniii i zaamiie je prrzez coofnij.
 
   8. To s bardzo poyteczne polecenia.
 
@@ -350,22 +350,22 @@ UWAGA:  Mnonik pomidzy operatorem  d  i ruchem dziaa podobnie do ruchu bez
 			     LEKCJA 2. PODSUMOWANIE
 
 
-  1. By usun znaki od kursora do nastpnego wyrazu wpisz:   dw
-  2. By usun znaki od kursora do koca linii wpisz:    d$
+  1. By usun znaki od kursora do nastpnego wyrazu, wpisz:   dw
+  2. By usun znaki od kursora do koca linii, wpisz:    d$
   3. By usun ca lini:    dd
-  4. By powtrzy ruch poprzed go liczb:    2w
+  4. By powtrzy ruch, poprzed go liczb:    2w
   5. Format polecenia zmiany to:
                 operator  [liczba]  ruch
   gdzie:
-   operator  - to co trzeba zrobi (np.  d  dla usuwania)
+   operator  - to, co trzeba zrobi (np.  d  dla usuwania)
    [liczba]  - opcjonalne, ile razy powtrzy ruch
    ruch      - przenosi nad tekstem do operowania, takim jak  w (wyraz),
-	       $  (do koca linii), etc.
+	       $  (do koca linii) etc.
 
-  6. By przej do pocztku linii uyj zera:  0
-  7. By cofn poprzednie polecenie, wpisz:	  u (mae u)
-     By cofn wszystkie zmiany w linii wpisz:	  U (wielkie U)
-     By cofn cofnicia wpisz:			  CTRL-R
+  6. By przej do pocztku linii, uyj zera:  0
+  7. By cofn poprzednie polecenie, wpisz:	  u  (mae u)
+     By cofn wszystkie zmiany w linii, wpisz:	  U  (wielkie U)
+     By cofn cofnicie, wpisz:			  CTRL-R
 
 
 
@@ -379,7 +379,7 @@ UWAGA:  Mnonik pomidzy operatorem  d  i ruchem dziaa podobnie do ruchu bez
 
   2. Wpisz  dd  aby usun lini i przechowa j w rejestrze Vima.
 
-  3. Przenie kursor do linii c), POWYEJ tej gdzie usunita linia powinna
+  3. Przenie kursor do linii c), POWYEJ tej, gdzie usunita linia powinna
      si znajdowa.
 
   4. Wcinij  p  by wstawi lini poniej kursora.
@@ -404,21 +404,21 @@ UWAGA:  Mnonik pomidzy operatorem  d  i ruchem dziaa podobnie do ruchu bez
 
   3. Wpisz  r  a potem znak jaki powinien go zastpi.
 
-  4. Powtarzaj kroki 2. i 3. dopki pierwsza linia nie bdzie taka jak druga.
+  4. Powtarzaj kroki 2. i 3. dopki pierwsza linia nie bdzie taka, jak druga.
 
---->  Kjedy ten wiersz bi wstkiwany kto wcizn per zych klawirzy!
---->  Kiedy ten wiersz by wstukiwany kto wcisn par zych klawiszy!
+--->  Kjedy ten wiersz bi wstkiwany, kto wcizn per zych klawirzy!
+--->  Kiedy ten wiersz by wstukiwany, kto wcisn par zych klawiszy!
 
   5. Teraz czas na Lekcj 3.3.
 
 
-UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo.
+UWAGA: Pamitaj, by uczy si wiczc, a nie pamiciowo.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		     Lekcja 3.3.: OPERATOR CHANGE (zmie)
 
-		 ** By zmieni do koca wyrazu wpisz  ce . **
+		 ** By zmieni do koca wyrazu, wpisz  ce . **
 
   1. Przenie kursor do pierwszej linii poniej oznaczonej --->.
 
@@ -428,7 +428,7 @@ UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo.
 
   4. Wcinij <ESC> i przejd do nastpnej planowanej zmiany.
 
-  5. Powtarzaj kroki 3. i 4. dopki pierwsze zdanie nie bdzie takie same
+  5. Powtarzaj kroki 3. i 4. dopki pierwsze zdanie nie bdzie takie same,
      jak drugie.
 
 ---> Ta lunos ma pire sw, ktre tina zbnic uifajonc pcmazu zmie.
@@ -442,13 +442,13 @@ UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo.
 		      Lekcja 3.4.: WICEJ ZMIAN UYWAJC c
 
 
-	** Polecenie change uywa takich samych ruchw jak delete. **
+	** Polecenie change uywa takich samych ruchw, jak delete. **
 
-  1. Operator change dziaa tak samo jak delete. Format wyglda tak:
+  1. Operator change dziaa tak samo, jak delete. Format wyglda tak:
 
 	    c   [liczba]   ruch
 
-  2. Ruchy s take takie same, np.:  w  (wyraz),  $  (koniec linii), etc.
+  2. Ruchy s take takie same, np.:  w  (wyraz),  $  (koniec linii) etc.
 
   3. Przenie si do pierwszej linii poniej oznaczonej --->
 
@@ -456,7 +456,7 @@ UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo.
 
   5. Wpisz  c$ , popraw koniec wiersza i wcinij <ESC>.
 
----> Koniec tego wiersza musi by poprawiony aby wyglda tak jak drugi.
+---> Koniec tego wiersza musi by poprawiony, aby wyglda tak, jak drugi.
 ---> Koniec tego wiersza musi by poprawiony uywajc polecenia  c$ .
 
 UWAGA:  Moesz uywa <BS> aby poprawia bdy w czasie pisania.
@@ -469,11 +469,11 @@ UWAGA:  Moesz uywa <BS> aby poprawia bdy w czasie pisania.
      polecenie wstawia skasowany tekst PO kursorze (jeli caa linia
      zostaa usunita, zostanie ona umieszczona w linii poniej kursora).
 
-  2. By zamieni znak pod kursorem wcinij  r  a potem znak, ktry ma zastpi
+  2. By zamieni znak pod kursorem, wcinij  r  a potem znak, ktry ma zastpi
      oryginalny.
 
-  3. Operator change pozwala Ci na zastpienie od kursora do miejsca gdzie
-     zabraby ci ruch. Np. wpisz  ce  aby zamieni tekst od kursora do koca
+  3. Operator change pozwala Ci na zastpienie od kursora do miejsca, gdzie
+     zabraby Ci ruch. Np. wpisz  ce  aby zamieni tekst od kursora do koca
      wyrazu,  c$  aby zmieni tekst do koca linii.
 
   4. Format do polecenia change (zmie):
@@ -497,12 +497,12 @@ UWAGA:  Moesz uywa <BS> aby poprawia bdy w czasie pisania.
      Zapamitaj numer linii dla potrzeb kroku 3.
 
 UWAGA: Moesz te zobaczy pozycj kursora w prawym, dolnym rogu ekranu.
-       Dzieje si tak kiedy ustawiona jest opcja 'ruler' (wyjanione w lekcji 6.).
+       Dzieje si tak kiedy ustawiona jest opcja 'ruler' (wicej w lekcji 6.).
 
   2. Wcinij G aby przej na koniec pliku.
      Wcinij  gg  aby przej do pocztku pliku.
 
-  3. Wpisz numer linii, w ktrej bye a potem  G . To przeniesie ci
+  3. Wpisz numer linii, w ktrej bye a potem  G . To przeniesie Ci
      z powrotem do linii, w ktrej bye kiedy wcisne CTRL-G.
 
   4. Jeli czujesz si wystarczajco pewnie, wykonaj kroki 1-3.
@@ -511,10 +511,10 @@ UWAGA: Moesz te zobaczy pozycj kursora w prawym, dolnym rogu ekranu.
 			 Lekcja 4.2.: POLECENIE SZUKAJ
 
 
-	     ** Wpisz  /  a nastpnie wyraenie aby je znale. **
+	     ** Wpisz  /  a nastpnie wyraenie, aby je znale. **
 
-  1. W trybie Normal wpisz  / . Zauwa, e znak ten, oraz kursor pojawi
-     si na dole ekranu tak samo jak polecenie  : .
+  1. W trybie Normal wpisz  / . Zauwa, e znak ten oraz kursor pojawi
+     si na dole ekranu tak samo, jak polecenie  : .
 
   2. Teraz wpisz  bond<ENTER> .  To jest sowo, ktrego chcesz szuka.
 
@@ -523,11 +523,11 @@ UWAGA: Moesz te zobaczy pozycj kursora w prawym, dolnym rogu ekranu.
 
   4. Jeli chcesz szuka frazy do tyu, uyj polecenia  ?  zamiast  / .
 
-  5. Aby wrci gdzie bye wcinij  CTRL-O. Powtarzaj by wrci dalej. CTRL-I
+  5. Aby wrci gdzie bye, wcinij  CTRL-O. Powtarzaj, by wrci dalej. CTRL-I
      idzie do przodu.
 
-Uwaga:  'bond' to nie jest metoda by przeliterowa bd; 'bond' to bd.
-Uwaga:  Kiedy szukanie osignie koniec pliku bdzie kontynuowao od pocztku
+Uwaga:  'bond' to nie jest metoda, by przeliterowa bd; 'bond' to bd.
+Uwaga:  Kiedy szukanie osignie koniec pliku, bdzie kontynuowane od pocztku
         o ile opcja 'wrapscan' nie zostaa przestawiona.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -571,16 +571,16 @@ Uwaga: Ta funkcja jest bardzo uyteczna w debuggowaniu programu
 
   4. Aby zmieni wszystkie wystpienia acucha znakw pomidzy dwoma liniami,
      wpisz: :#,#s/stare/nowe/g gdzie #,# s numerami linii ograniczajcych
-                               region gdzie ma nastpi zamiana.
+                               region, gdzie ma nastpi zamiana.
      wpisz  :%s/stare/nowe/g   by zmieni wszystkie wystpienia w caym pliku.
      wpisz  :%s/stare/nowe/gc  by zmieni wszystkie wystpienia w caym
-                               pliku, proszc o potwierdzenie za kadym razem
+                               pliku, proszc o potwierdzenie za kadym razem.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			     LEKCJA 4. PODSUMOWANIE
 
   1. CTRL-G   pokae Twoj pozycj w pliku i status pliku.  SHIFT-G przenosi
-	      ci do koca pliku.
+	      Ci do koca pliku.
      G        przenosi do koca pliku.
      liczba G przenosi do linii [liczba].
      gg       przenosi do pierwszej linii.
@@ -588,22 +588,22 @@ Uwaga: Ta funkcja jest bardzo uyteczna w debuggowaniu programu
   2. Wpisanie  /  a nastpnie acucha znakw szuka acucha DO PRZODU.
      Wpisanie  ?  a nastpnie acucha znakw szuka acucha DO TYU.
      Po wyszukiwaniu wcinij  n  by znale nastpne wystpienie szukanej
-     frazy tym samym kierunku lub  N  by szuka w kierunku przeciwnym.
+     frazy w tym samym kierunku lub  N  by szuka w kierunku przeciwnym.
      CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych.
 
   3. Wpisanie  %  gdy kursor znajduje si na (,),[,],{, lub } lokalizuje
      parujcy znak.
 
-  4. By zamieni pierwszy stary na nowy w linii wpisz      :s/stary/nowy
-     By zamieni wszystkie stary na nowy w linii wpisz     :s/stary/nowy/g
+  4. By zamieni pierwszy stary na nowy w linii, wpisz      :s/stary/nowy
+     By zamieni wszystkie stary na nowy w linii, wpisz     :s/stary/nowy/g
      By zamieni frazy pomidzy dwoma liniami # wpisz      :#,#s/stary/nowy/g
-     By zamieni wszystkie wystpienia w pliku wpisz       :%s/stary/nowy/g
-     By Vim prosi Ci o potwierdzenie dodaj 'c'	   :%s/stary/nowy/gc
+     By zamieni wszystkie wystpienia w pliku, wpisz       :%s/stary/nowy/g
+     By Vim prosi Ci o potwierdzenie, dodaj 'c'	   :%s/stary/nowy/gc
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		 Lekcja 5.1.: JAK WYKONA POLECENIA ZEWNTRZNE
+		 Lekcja 5.1.: JAK WYKONA POLECENIA ZEWNTRZNE?
 
 
-	** Wpisz  :!  a nastpnie zewntrzne polecenie by je wykona. **
+	** Wpisz  :!  a nastpnie zewntrzne polecenie, by je wykona. **
 
   1. Wpisz znajome polecenie  :  by ustawi kursor na dole ekranu. To pozwala
      na wprowadzenie komendy linii polece.
@@ -626,20 +626,20 @@ Uwaga:  Wszystkie polecenia  :  musz by zakoczone <ENTER>.
 		    Lekcja 5.2.: WICEJ O ZAPISYWANIU PLIKW
 
 
-	   ** By zachowa zmiany w tekci wpisz :w NAZWA_PLIKU . **
+	   ** By zachowa zmiany w tekcie, wpisz :w NAZWA_PLIKU . **
 
   1. Wpisz  :!dir  lub  :!ls  by zobaczy spis plikw w katalogu.
-     Ju wiesz, e musisz wcisn <ENTER> po tym.
+     Ju wiesz, e musisz po tym wcisn <ENTER>.
 
-  2. Wybierz nazw pliku jaka jeszcze nie istnieje, np. TEST.
+  2. Wybierz nazw pliku, jaka jeszcze nie istnieje, np. TEST.
 
   3. Teraz wpisz:   :w TEST   (gdzie TEST jest nazw pliku jak wybrae.)
 
   4. To polecenie zapamita cay plik (Vim Tutor) pod nazw TEST.
-     By to sprawdzi wpisz  :!dir  lub  :!ls , eby znowu zobaczy list plikw.
+     By to sprawdzi, wpisz  :!dir  lub  :!ls  eby znowu zobaczy list plikw.
 
 Uwaga: Zauwa, e gdyby teraz wyszed z Vima, a nastpnie wszed ponownie
-       poleceniem  vim TEST , plik byby dokadn kopi tutoriala kiedy go
+       poleceniem  vim TEST , plik byby dokadn kopi tutoriala, kiedy go
        zapisywae.
 
   5. Teraz usu plik wpisujc (MS-DOS):		   :!del TEST
@@ -649,7 +649,7 @@ Uwaga: Zauwa, e gdyby teraz wyszed z Vima, a nastpnie wszed ponownie
 		    Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU
 
 
-	  ** By zachowa cz pliku wpisz  v ruch :w NAZWA_PLIKU **
+	  ** By zachowa cz pliku, wpisz  v ruch :w NAZWA_PLIKU **
 
   1. Przenie kursor do tego wiersza.
 
@@ -664,26 +664,26 @@ Uwaga: Zauwa, e gdyby teraz wyszed z Vima, a nastpnie wszed ponownie
   5. Vim zapisze wybrane linie do pliku TEST. Uyj  :!dir  lub  :!ls , eby to
      zobaczy. Jeszcze go nie usuwaj! Uyjemy go w nastpnej lekcji.
 
-UWAGA: Wcinicie  v  zaczyna tryb Wizualny. Moesz porusza kursorem by
-       zmieni rozmiary zaznaczenia. Moesz te uy operatora by zrobi co
+UWAGA: Wcinicie  v  zaczyna tryb Wizualny. Moesz porusza kursorem, by
+       zmieni rozmiary zaznaczenia. Moesz te uy operatora, by zrobi co
        z tekstem. Na przykad  d  usuwa tekst.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		   Lekcja 5.4.: WSTAWIANIE I CZENIE PLIKW
 
 
-	    ** By wstawi zawarto pliku wpisz   :r NAZWA_PLIKU **
+	    ** By wstawi zawarto pliku, wpisz   :r NAZWA_PLIKU **
 
   1. Umie kursor tu powyej tej linii.
 
 UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejd
-       do DOU by zobaczy ponownie t lekcj.
+       do DOU, by zobaczy ponownie t lekcj.
 
   2. Teraz wczytaj plik TEST uywajc polecenia  :r TEST , gdzie TEST
      jest nazw pliku.
      Wczytany plik jest umieszczony poniej linii z kursorem.
 
-  3. By sprawdzi czy plik zosta wczytany cofnij kursor i zobacz, e
+  3. By sprawdzi czy plik zosta wczytany, cofnij kursor i zobacz, e
      teraz s dwie kopie Lekcji 5.3., orygina i kopia z pliku.
 
 UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad
@@ -723,14 +723,14 @@ UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad
 
   1. Przenie kursor do linii poniej oznaczonej --->.
 
-  2. Wpisz  o  (mae) by otworzy lini PONIEJ kursora i przenie si
+  2. Wpisz  o  (mae), by otworzy lini PONIEJ kursora i przenie si
      do trybu Insert (wprowadzanie).
 
   3. Wpisz troch tekstu i wcinij <ESC> by wyj z trybu Insert (wprowadzanie).
 
 ---> Po wciniciu  o  kursor znajdzie si w otwartej linii w trybie Insert.
 
-  4. By otworzy lini POWYEJ kursora wcinij wielkie  O  zamiast maego
+  4. By otworzy lini POWYEJ kursora, wcinij wielkie  O  zamiast maego
      o . Wyprbuj to na linii poniej.
 
 ---> Otwrz lini powyej wciskajc SHIFT-O gdy kursor bdzie na tej linii.
@@ -747,9 +747,9 @@ UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad
 
   2. Wciskaj  e  dopki kursor nie bdzie na kocu li .
 
-  3. Wpisz  a  (mae) aby doda tekst ZA znakiem pod kursorem.
+  3. Wpisz  a  (mae), aby doda tekst ZA znakiem pod kursorem.
 
-  4. Dokocz wyraz tak jak w linii poniej. Wcinij <ESC> aby opuci tryb
+  4. Dokocz wyraz tak, jak w linii poniej. Wcinij <ESC> aby opuci tryb
      Insert.
 
   5. Uyj  e  by przej do kolejnego niedokoczonego wyrazu i powtarzaj kroki
@@ -758,7 +758,7 @@ UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad
 ---> Ta li poz Ci wi dodaw teks do ko lin
 ---> Ta linia pozwoli Ci wiczy dodawanie tekstu do koca linii.
 
-Uwaga:  a ,  i  oraz  A  prowadz do trybu Insert, jedyn rnic jest miejsce
+Uwaga:  a ,  i  oraz  A  prowadz do trybu Insert, jedyn rnic jest miejsce,
        gdzie nowe znaki bd dodawane.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		   Lekcja 6.3.: INNA WERSJA REPLACE (zamiana)
@@ -791,16 +791,16 @@ UWAGA: Tryb Replace jest jak tryb Insert, ale kady znak usuwa istniejcy
 
   1. Przejd do linii oznaczonej ---> i umie kursor za "a)".
 
-  2. Wejd w tryb Visual  v  i przenie kursor na pocztek "pierwszy".
+  2. Wejd w tryb Wizualny  v  i przenie kursor na pocztek "pierwszy".
 
-  3. Wcinij  y  aby yankowa (kopiowa) podwietlony tekst.
+  3. Wcinij  y  aby kopiowa (yankowa) podwietlony tekst.
 
   4. Przenie kursor do koca nastpnej linii:  j$
 
-  5. Wcinij  p  aby wpakowa (paste) tekst.  Dodaj:  a drugi<ESC> .
+  5. Wcinij  p  aby wklei (wpakowa) tekst.  Dodaj:  a drugi<ESC> .
 
-  6. Uyj trybu Wizualnego aby wybra " element.", yankuj go  y , przejd do
-     koca nastpnej linii  j$ i upakuj tam tekst z  p .
+  6. Uyj trybu Wizualnego, aby wybra " element.", yankuj go  y , przejd do
+     koca nastpnej linii  j$  i upakuj tam tekst z  p .
 
 --->  a) to jest pierwszy element.
       b)
@@ -810,7 +810,7 @@ Uwaga: moesz uy  y  jako operatora;  yw  kopiuje jeden wyraz.
 			 Lekcja 6.5.: USTAWIANIE OPCJI
 
 
-** Ustawianie opcji tak by szukaj lub substytucja ignoroway wielko liter **
+** Ustawianie opcji tak, by szukaj lub substytucja ignoroway wielko liter **
 
   1. Szukaj 'ignore' wpisujc:    /ignore<ENTER>
      Powtrz szukanie kilka razy naciskajc klawisz  n .
@@ -828,7 +828,7 @@ Uwaga: moesz uy  y  jako operatora;  yw  kopiuje jeden wyraz.
 
   6. Aby wyczy ignorowanie wielkoci liter:  :set noic
 
-Uwaga: Aby usun podwietlanie dopasowa wpisz:   :nohlsearch
+Uwaga: Aby usun podwietlanie dopasowa, wpisz:   :nohlsearch
 Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER>
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			     LEKCJA 6. PODSUMOWANIE
@@ -837,36 +837,36 @@ Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER>
   1. Wpisanie  o  otwiera lini PONIEJ kursora.
      Wpisanie  O  otwiera lini POWYEJ kursora.
 
-  2. Wpisanie  a  by wstawi tekst ZA znakiem na, ktrym jest kursor.
+  2. Wpisanie  a  wstawia tekst ZA znakiem, na ktrym jest kursor.
      Wpisanie  A  dodaje tekst na kocu linii.
 
   3. Polecenie  e  przenosi do koca wyrazu.
-  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja, paste) go.
+  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja) go.
   5. Wpisanie wielkiego  R  wprowadza w tryb Replace (zamiana) dopki
      nie zostanie wcinity <ESC>.
-  6. Wpisanie ":set xxx" ustawia opcj "xxx". Nietkre opcje:
+  6. Wpisanie ":set xxx" ustawia opcj "xxx". Niektre opcje:
 	'ic'  'ignorecase'	ignoruj wielko znakw
 	'is'  'incsearch'	poka czciowe dopasowania
 	'hls' 'hlsearch'	podwietl wszystkie dopasowania
-     Moesz uy zarwno dugiej jak i krtkiej formy.
-  7. Dodaj "no" aby wyczy opcj:   :set noic
+     Moesz uy zarwno dugiej, jak i krtkiej formy.
+  7. Dodaj "no", aby wyczy opcj:   :set noic
 
 
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			LEKCJA 7.1. JAK UZYSKA POMOC
+			 LEKCJA 7.1. JAK UZYSKA POMOC?
 
 		      ** Uycie systemu pomocy on-line **
 
-  Vim posiada bardzo dobry system pomocy on-line. By zacz sprbuj jednej
+  Vim posiada bardzo dobry system pomocy on-line. By zacz, sprbuj jednej
   z trzech moliwoci:
 	- wcinij klawisz <HELP> (jeli taki masz)
 	- wcinij klawisz <F1> (jeli taki masz)
 	- wpisz   :help<ENTER>
 
-  Przeczytaj tekst w oknie pomocy  aby dowiedzie si jak dziaa pomoc.
+  Przeczytaj tekst w oknie pomocy, aby dowiedzie si jak dziaa pomoc.
   wpisz CTRL-W CTRL-W    aby przeskoczy z jednego okna do innego
   wpisz :q<ENTER>        aby zamkn okno pomocy.
 
@@ -894,10 +894,10 @@ Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER>
   3. Zapisz plik:
      :w
 
-  Nastpnym razem gdy zaczniesz prac w Vimie bdzie on uywa podwietlania
+  Nastpnym razem, gdy zaczniesz prac w Vimie bdzie on uywa podwietlania
   skadni. Moesz doda wszystkie swoje ulubione ustawienia do tego pliku
   "vimrc".
-  Aby uzyska wicej informacji wpisz     :help vimrc-intro
+  Aby uzyska wicej informacji, wpisz     :help vimrc-intro
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			  Lekcja 7.3.: UZUPENIANIE
@@ -907,11 +907,11 @@ Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER>
 
   1. Upewnij si, e Vim nie jest w trybie kompatybilnoci:   :set nocp
 
-  2. Zerknij jakie pliki s w biecm katalogu:   :!ls   lub   :!dir
+  2. Zerknij, jakie pliki s w biecym katalogu:   :!ls   lub   :!dir
 
   3. Wpisz pocztek polecenia:   :e
 
-  4. Wcinij  CTRL-D  i Vim pokae list polece jakie zaczynaj si na "e".
+  4. Wcinij  CTRL-D  i Vim pokae list polece, jakie zaczynaj si na "e".
 
   5. Wcinij  <TAB>  i Vim uzupeni polecenie do ":edit".
 
@@ -925,7 +925,7 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>.
 			    Lekcja 7. PODSUMOWANIE
 
 
-  1. Wpisz  :help  lub wcinij <F1> lub <Help> aby otworzy okno pomocy.
+  1. Wpisz  :help  albo wcinij <F1> lub <Help> aby otworzy okno pomocy.
 
   2. Wpisz  :help cmd  aby uzyska pomoc o  cmd .
 
@@ -945,14 +945,14 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  Tutaj si koczy tutorial Vima. Zosta on pomylany tak aby da krtki
+  Tutaj si koczy tutorial Vima. Zosta on pomylany tak, aby da krtki
   przegld jego moliwoci, wystarczajcy by mg go uywa. Jest on
-  daleki od kompletnoci poniewa Vim ma o wiele, wiele wicej polece.
+  daleki od kompletnoci, poniewa Vim ma o wiele, wiele wicej polece.
 
   Dla dalszej nauki rekomendujemy ksik:
 	Vim - Vi Improved - autor Steve Oualline
 	Wydawca: New Riders
-  Pierwsza ksizka cakowicie powicona Vimowi. Uyteczna zwaszcza dla
+  Pierwsza ksika cakowicie powicona Vimowi. Uyteczna zwaszcza dla
   pocztkujcych. Zawiera wiele przykadw i ilustracji.
   Zobacz http://iccf-holland.org./click5.html
 
@@ -960,7 +960,7 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>.
   polecenia:
 	Learning the Vi Editor - autor Linda Lamb
 	Wydawca: O'Reilly & Associates Inc.
-  To dobra ksika by dowiedzie si niemal wszystkiego co chciaby zrobi
+  To dobra ksika, by dowiedzie si niemal wszystkiego, co chciaby zrobi
   z Vi. Szsta edycja zawiera te informacje o Vimie.
 
   Po polsku wydano:
@@ -991,4 +991,5 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>.
   rev. Marzec 2002
   2nd rev. Wrzesie 2004
   3rd rev. Marzec 2006
+  4th rev. Grudzie 2008
   Wszelkie uwagi prosz kierowa na: mikmach@wp.pl
--- a/runtime/tutor/tutor.pl.cp1250
+++ b/runtime/tutor/tutor.pl.cp1250
@@ -2,9 +2,9 @@
 =    W i t a j   w   t u t o r i a l u   V I M - a      -    Wersja  1.7.     =
 ===============================================================================
 
-     Vim to potny edytor, ktry posiada wiele polece, zbyt duo by
+     Vim to potny edytor, ktry posiada wiele polece, zbyt duo, by
      wyjani je wszystkie w tym tutorialu. Ten przewodnik ma nauczy
-     Ci posugiwa si wystarczajco wieloma komendami by mg atwo
+     Ci posugiwa si wystarczajco wieloma komendami, by mg atwo
      uywa Vima jako edytora oglnego przeznaczenia.
 
      Czas potrzebny na ukoczenie tutoriala to 25 do 30 minut i zaley
@@ -13,14 +13,14 @@
 	 UWAGA:
 	 Polecenia wykonywane w czasie lekcji zmodyfikuj tekst. Zrb
 	 wczeniej kopi tego pliku do wicze (jeli zacze komend
-	 "vimtutor" to ju pracujesz na kopii).
+	 "vimtutor", to ju pracujesz na kopii).
 
-	 Pamitaj e przewodnik ten zosta zaprojektowany do nauki poprzez
-	 wiczenia. Oznacza to, e musisz wykonywa polecenia by nauczy si ich
-	 prawidowo. Jeli bdziesz jedynie czyta tekst szybko zapomnisz wiele
+	 Pamitaj, e przewodnik ten zosta zaprojektowany do nauki poprzez
+	 wiczenia. Oznacza to, e musisz wykonywa polecenia, by nauczy si ich
+	 prawidowo. Jeli bdziesz jedynie czyta tekst, szybko zapomnisz wiele
 	 polece!
 
-     Teraz upewnij si, e nie masz wcinitego CapsLocka i wciskaj  j
+     Teraz upewnij si, e nie masz wcinitego Caps Locka i wciskaj  j
      tak dugo dopki Lekcja 1.1. nie wypeni cakowicie ekranu.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -40,28 +40,28 @@
 
   3. Uywajc strzaki w d przejd do nastpnej lekcji.
 
-Uwaga: Jeli nie jeste pewien czego co wpisae, wcinij <ESC> by wrci do
+Uwaga: Jeli nie jeste pewien czego co wpisae, wcinij <ESC>, by wrci do
        trybu Normal. Wtedy powtrz polecenie.
 
 Uwaga: Klawisze kursora take powinny dziaa, ale uywajc  hjkl  bdziesz
-       w stanie porusza si o wiele szybciej jak si tylko przyzwyczaisz.
+       w stanie porusza si o wiele szybciej, jak si tylko przyzwyczaisz.
        Naprawd!
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		    Lekcja 1.2.: WYCHODZENIE Z VIM-a
 
- !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca lekcj.!!
+ !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca lekcj !!
 
   1. Wcinij <ESC> (aby upewni si, e jeste w trybie Normal).
   2. Wpisz:			:q!<ENTER>.
-     To spowoduje wyjcie z edytora PORZUCAJC wszelkie zmiany jakie
-     zdye zrobi. Jeli chcesz zapamita zmiany i wyj
+     To spowoduje wyjcie z edytora PORZUCAJC wszelkie zmiany, jakie
+     zdye zrobi. Jeli chcesz zapamita zmiany i wyj,
      wpisz:			:wq<ENTER>
 
   3. Kiedy widzisz znak zachty powoki wpisz komend, eby wrci
      do tutoriala. Czyli:	vimtutor<ENTER>
 
-  4. Jeli chcesz zapamita polecenia, wykonaj kroki 1. do 3. aby
+  4. Jeli chcesz zapamita polecenia, wykonaj kroki 1. do 3., aby
      wyj i wrci do edytora.
 
 UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobie. W nastpnych
@@ -85,7 +85,7 @@ UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobie. W nastpnych
 
 ---> Kkrowa prrzeskoczya prrzez ksiiycc.
 
-  5. Teraz kiedy zdanie jest poprawione przejd do Lekcji 1.4.
+  5. Teraz, kiedy zdanie jest poprawione, przejd do Lekcji 1.4.
 
 UWAGA: Ucz si przez wiczenie, nie wkuwanie.
 
@@ -101,18 +101,18 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie.
 
   1. Przenie kursor do pierwszej linii poniej oznaczonej --->.
 
-  2. Aby poprawi pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym
+  2. Aby poprawi pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym,
      gdzie tekst ma by wstawiony.
 
   3. Wcinij  i  a nastpnie wpisz konieczne poprawki.
 
-  4. Po poprawieniu bdu wcinij <ESC> by wrci do trybu Normal.
-     Powtarzaj kroki 2. do 4. aby poprawi cae zdanie.
+  4. Po poprawieniu bdu wcinij <ESC>, by wrci do trybu Normal.
+     Powtarzaj kroki 2. do 4., aby poprawi cae zdanie.
 
 ---> W tej brkje troch .
 ---> W tej linii brakuje troch tekstu.
 
-  5. Kiedy czujesz si swobodnie wstawiajc tekst przejd do
+  5. Kiedy czujesz si swobodnie wstawiajc tekst, przejd do
      podsumowania poniej.
 
 
@@ -129,7 +129,7 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie.
 
   3. Kiedy tekst zosta dodany, wcinij <ESC> i wr do trybu Normalnego.
 
-  4. Przenie kursor do drugiej linii oznaczonej ---> i powtrz kroki 2 i 3
+  4. Przenie kursor do drugiej linii oznaczonej ---> i powtrz kroki 2. i 3.,
      aby poprawi zdanie.
 
 ---> Brakuje tu tro
@@ -137,27 +137,27 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie.
 ---> Tu te troch bra
      Tu te troch brakuje.
 
-  5. Kiedy ju utrwalie wiczenie przejd do lekcji 1.6.
+  5. Kiedy ju utrwalie wiczenie, przejd do lekcji 1.6.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			  Lekcja 1.6.: EDYCJA PLIKU
 
 		  ** Uyj  :wq  aby zapisa plik i wyj. **
 
-   !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczyaj ca lekcj !!
+   !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj ca lekcj !!
 
   1. Zakocz tutorial tak jak w lekcji 1.2.:  :q!
-     Lub jeli masz dostp do innego terminala zrb kolejne kroki tam.
+     lub, jeli masz dostp do innego terminala, wykonaj kolejne kroki tam.
 
   2. W powoce wydaj polecenie:  vim tutor<ENTER>
-     "vim" jest poleceniem uruchamiajcym edytor Vim. 'tutor' to nazwa pliku
-     jaki chcesz edytowa. Uyj pliku jaki moe zosta zmieniony.
+     "vim" jest poleceniem uruchamiajcym edytor Vim. 'tutor' to nazwa pliku,
+     jaki chcesz edytowa. Uyj pliku, ktry moe zosta zmieniony.
 
-  3. Dodaj i usu tekst tak jak si nauczye w poprzednich lekcjach.
+  3. Dodaj i usu tekst tak, jak si nauczye w poprzednich lekcjach.
 
   4. Zapisz plik ze zmianami i opu Vima:  :wq<ENTER>
 
-  5. Jeli zakoczye vimtutor w kroku 1. uruchom go ponownie i przejd
+  5. Jeli zakoczye vimtutor w kroku 1., uruchom go ponownie i przejd
      do podsumowania poniej.
 
   6. Po przeczytaniu wszystkich krokw i ich zrozumieniu: wykonaj je.
@@ -168,14 +168,14 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie.
   1. Poruszasz kursorem uywajc "strzaek" i klawiszy  hjkl .
        h (w lewo)	 j (w d)	 k (do gry)		l (w prawo)
 
-  2. By wej do Vima (z powoki) wpisz:
+  2. By wej do Vima, (z powoki) wpisz:
 			    vim NAZWA_PLIKU<ENTER>
 
-  3. By wyj z Vima wpisz:
-			    <ESC> :q!<ENTER>  by usunc wszystkie zmiany.
+  3. By wyj z Vima, wpisz:
+			    <ESC> :q!<ENTER>  by usun wszystkie zmiany.
 	     LUB:	    <ESC> :wq<ENTER>  by zmiany zachowa.
 
-  4. By usun znak pod kursorem wcinij:  x
+  4. By usun znak pod kursorem, wcinij:  x
 
   5. By wstawi tekst przed kursorem lub doda:
 	i   wpisz tekst   <ESC>         wstawi przed kursorem
@@ -189,18 +189,18 @@ Teraz moemy kontynuowa i przej do Lekcji 2.
 		  Lekcja 2.1.: POLECENIE DELETE (usuwanie)
 
 
-		      ** Wpisz  dw  by usunc wyraz. **
+		      ** Wpisz  dw  by usun wyraz. **
 
-  1. Wcinij  <ESC>  by upewni si, e jeste w trybie Normal.
+  1. Wcinij  <ESC>, by upewni si, e jeste w trybie Normal.
 
   2. Przenie kursor do linii poniej oznaczonej --->.
 
-  3. Przesu kursor na pocztek wyrazu, ktre chcesz usun.
+  3. Przesu kursor na pocztek wyrazu, ktry chcesz usun.
 
   4. Wpisz   dw   by usun wyraz.
 
   UWAGA: Litera  d  pojawi si na dole ekranu. Vim czeka na wpisanie  w .
-	 Jeli zobaczysz inny znak oznacza to, e wpisae co le, wcinij
+	 Jeli zobaczysz inny znak, oznacza to, e wpisae co le; wcinij
 	 <ESC> i zacznij od pocztku.
 
 ---> Jest tu par papier wyrazw, ktre kamie nie nale do noyce tego zdania.
@@ -225,7 +225,7 @@ Teraz moemy kontynuowa i przej do Lekcji 2.
 ---> Kto wpisa koniec tego zdania dwukrotnie. zdania dwukrotnie.
 
 
-  5. Przejd do Lekcji 2.3. by zrozumie co si stao.
+  5. Przejd do Lekcji 2.3., by zrozumie co si stao.
 
 
 
@@ -235,12 +235,12 @@ Teraz moemy kontynuowa i przej do Lekcji 2.
 		     Lekcja 2.3.: O OPERATORACH I RUCHACH
 
 
-  Wiele polece zmieniajcych tekst s zoone z operatora i ruchu.
-  Format dla polecenia usuwajcego z operatorem  d  jest taki:
+  Wiele polece zmieniajcych tekst jest zoonych z operatora i ruchu.
+  Format dla polecenia usuwajcego z operatorem  d  jest nastpujcy:
 
 	    d  ruch
 
-  Gdzie:
+  gdzie:
    d      - operator usuwania.
    ruch   - na czym polecenie bdzie wykonywane (lista poniej).
 
@@ -252,7 +252,7 @@ Teraz moemy kontynuowa i przej do Lekcji 2.
 W ten sposb wpisanie  de  usunie znaki od kursora do koca wyrazu.
 
 UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor
-       tak jak to okrelono.
+       tak, jak to okrelono.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		    Lekcja 2.4.: UYCIE MNONIKA DLA RUCHU
@@ -266,32 +266,32 @@ UWAGA: Wpisanie tylko ruchu w trybie Nor
 
   3. Wpisz  3e  aby przenie kursor do koca trzeciego wyrazu w przd.
 
-  4. Wpisz  0  (zero) aby przenie kursor do pocztku linii.
+  4. Wpisz  0  (zero), aby przenie kursor na pocztek linii.
 
   5. Powtrz kroki 2. i 3. z innymi liczbami.
 
 
- ---> To jest zwyky wiersz z wyrazami po ktrych moesz si porusza.
+ ---> To jest zwyky wiersz z wyrazami, po ktrych moesz si porusza.
 
   6. Przejd do lekcji 2.5.
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		Lekcja 2.5.: UYCIE MNONIKA BY WICEJ USUN
+		Lekcja 2.5.: UYCIE MNONIKA, BY WICEJ USUN
 
 
     ** Wpisanie liczby z operatorem powtarza go odpowiedni ilo razy. **
 
   W wyej wspomnianej kombinacji operatora usuwania i ruchu podaj mnonik
-  przed ruchem by wicej usun:
+  przed ruchem, by wicej usun:
 	d  liczba  ruch
 
   1. Przenie kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->.
 
   2. Wpisz  2dw  aby usun dwa wyrazy KAPITALIKAMI.
 
-  3. Powtarzaj kroki 1. i 2. z innymi mnonikami aby usun kolejne wyrazy
+  3. Powtarzaj kroki 1. i 2. z innymi mnonikami, aby usun kolejne wyrazy
      KAPITALIKAMI jednym poleceniem
 
 ---> ta ASD WE linia QWE ASDF ZXCV FG wyrazw zostaa ERT FGH CF oczyszczona.
@@ -312,7 +312,7 @@ UWAGA:  Mnonik pomidzy operatorem  d  i ruchem dziaa podobnie do ruchu bez
   1. Przenie kursor do drugiego zdania z wierszyka poniej.
   2. Wpisz  dd  aby usun wiersz.
   3. Teraz przenie si do czwartego wiersza.
-  4. Wpisz  2dd  aby usunc dwa wiersze.
+  4. Wpisz  2dd  aby usun dwa wiersze.
 
 --->  1)  Re s czerwone,
 --->  2)  Boto jest fajne,
@@ -335,12 +335,12 @@ UWAGA:  Mnonik pomidzy operatorem  d  i ruchem dziaa podobnie do ruchu bez
   2. Wpisz  x  aby usun pierwszy niechciany znak.
   3. Teraz wcinij  u  aby cofn skutki ostatniego polecenia.
   4. Tym razem popraw wszystkie bdy w linii uywajc polecenia  x .
-  5. Teraz wcinij wielkie U aby przywrci lini do oryginalnego stanu.
-  6. Teraz wcinij  u  kilka razy by cofn  U  i poprzednie polecenia.
+  5. Teraz wcinij wielkie  U  aby przywrci lini do oryginalnego stanu.
+  6. Teraz wcinij  u  kilka razy, by cofn  U  i poprzednie polecenia.
   7. Teraz wpisz CTRL-R (trzymaj rwnoczenie wcinite klawisze CTRL i R)
      kilka razy, by cofn cofnicia.
 
----> Poopraw bldyyy w teej liniii i zaamiie je prrzez coofnij.
+---> Poopraw bdyyy w teej liniii i zaamiie je prrzez coofnij.
 
   8. To s bardzo poyteczne polecenia.
 
@@ -350,22 +350,22 @@ UWAGA:  Mnonik pomidzy operatorem  d  i ruchem dziaa podobnie do ruchu bez
 			     LEKCJA 2. PODSUMOWANIE
 
 
-  1. By usun znaki od kursora do nastpnego wyrazu wpisz:   dw
-  2. By usun znaki od kursora do koca linii wpisz:    d$
+  1. By usun znaki od kursora do nastpnego wyrazu, wpisz:   dw
+  2. By usun znaki od kursora do koca linii, wpisz:    d$
   3. By usun ca lini:    dd
-  4. By powtrzy ruch poprzed go liczb:    2w
+  4. By powtrzy ruch, poprzed go liczb:    2w
   5. Format polecenia zmiany to:
                 operator  [liczba]  ruch
   gdzie:
-   operator  - to co trzeba zrobi (np.  d  dla usuwania)
+   operator  - to, co trzeba zrobi (np.  d  dla usuwania)
    [liczba]  - opcjonalne, ile razy powtrzy ruch
    ruch      - przenosi nad tekstem do operowania, takim jak  w (wyraz),
-	       $  (do koca linii), etc.
+	       $  (do koca linii) etc.
 
-  6. By przej do pocztku linii uyj zera:  0
-  7. By cofn poprzednie polecenie, wpisz:	  u (mae u)
-     By cofn wszystkie zmiany w linii wpisz:	  U (wielkie U)
-     By cofn cofnicia wpisz:			  CTRL-R
+  6. By przej do pocztku linii, uyj zera:  0
+  7. By cofn poprzednie polecenie, wpisz:	  u  (mae u)
+     By cofn wszystkie zmiany w linii, wpisz:	  U  (wielkie U)
+     By cofn cofnicie, wpisz:			  CTRL-R
 
 
 
@@ -379,7 +379,7 @@ UWAGA:  Mnonik pomidzy operatorem  d  i ruchem dziaa podobnie do ruchu bez
 
   2. Wpisz  dd  aby usun lini i przechowa j w rejestrze Vima.
 
-  3. Przenie kursor do linii c), POWYEJ tej gdzie usunita linia powinna
+  3. Przenie kursor do linii c), POWYEJ tej, gdzie usunita linia powinna
      si znajdowa.
 
   4. Wcinij  p  by wstawi lini poniej kursora.
@@ -404,21 +404,21 @@ UWAGA:  Mnonik pomidzy operatorem  d  i ruchem dziaa podobnie do ruchu bez
 
   3. Wpisz  r  a potem znak jaki powinien go zastpi.
 
-  4. Powtarzaj kroki 2. i 3. dopki pierwsza linia nie bdzie taka jak druga.
+  4. Powtarzaj kroki 2. i 3. dopki pierwsza linia nie bdzie taka, jak druga.
 
---->  Kjedy ten wiersz bi wstkiwany kto wcizn per zych klawirzy!
---->  Kiedy ten wiersz by wstukiwany kto wcisn par zych klawiszy!
+--->  Kjedy ten wiersz bi wstkiwany, kto wcizn per zych klawirzy!
+--->  Kiedy ten wiersz by wstukiwany, kto wcisn par zych klawiszy!
 
   5. Teraz czas na Lekcj 3.3.
 
 
-UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo.
+UWAGA: Pamitaj, by uczy si wiczc, a nie pamiciowo.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		     Lekcja 3.3.: OPERATOR CHANGE (zmie)
 
-		 ** By zmieni do koca wyrazu wpisz  ce . **
+		 ** By zmieni do koca wyrazu, wpisz  ce . **
 
   1. Przenie kursor do pierwszej linii poniej oznaczonej --->.
 
@@ -428,7 +428,7 @@ UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo.
 
   4. Wcinij <ESC> i przejd do nastpnej planowanej zmiany.
 
-  5. Powtarzaj kroki 3. i 4. dopki pierwsze zdanie nie bdzie takie same
+  5. Powtarzaj kroki 3. i 4. dopki pierwsze zdanie nie bdzie takie same,
      jak drugie.
 
 ---> Ta lunos ma pire sw, ktre tina zbnic uifajonc pcmazu zmie.
@@ -442,13 +442,13 @@ UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo.
 		      Lekcja 3.4.: WICEJ ZMIAN UYWAJC c
 
 
-	** Polecenie change uywa takich samych ruchw jak delete. **
+	** Polecenie change uywa takich samych ruchw, jak delete. **
 
-  1. Operator change dziaa tak samo jak delete. Format wyglda tak:
+  1. Operator change dziaa tak samo, jak delete. Format wyglda tak:
 
 	    c   [liczba]   ruch
 
-  2. Ruchy s take takie same, np.:  w  (wyraz),  $  (koniec linii), etc.
+  2. Ruchy s take takie same, np.:  w  (wyraz),  $  (koniec linii) etc.
 
   3. Przenie si do pierwszej linii poniej oznaczonej --->
 
@@ -456,7 +456,7 @@ UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo.
 
   5. Wpisz  c$ , popraw koniec wiersza i wcinij <ESC>.
 
----> Koniec tego wiersza musi by poprawiony aby wyglda tak jak drugi.
+---> Koniec tego wiersza musi by poprawiony, aby wyglda tak, jak drugi.
 ---> Koniec tego wiersza musi by poprawiony uywajc polecenia  c$ .
 
 UWAGA:  Moesz uywa <BS> aby poprawia bdy w czasie pisania.
@@ -469,11 +469,11 @@ UWAGA:  Moesz uywa <BS> aby poprawia bdy w czasie pisania.
      polecenie wstawia skasowany tekst PO kursorze (jeli caa linia
      zostaa usunita, zostanie ona umieszczona w linii poniej kursora).
 
-  2. By zamieni znak pod kursorem wcinij  r  a potem znak, ktry ma zastpi
+  2. By zamieni znak pod kursorem, wcinij  r  a potem znak, ktry ma zastpi
      oryginalny.
 
-  3. Operator change pozwala Ci na zastpienie od kursora do miejsca gdzie
-     zabraby ci ruch. Np. wpisz  ce  aby zamieni tekst od kursora do koca
+  3. Operator change pozwala Ci na zastpienie od kursora do miejsca, gdzie
+     zabraby Ci ruch. Np. wpisz  ce  aby zamieni tekst od kursora do koca
      wyrazu,  c$  aby zmieni tekst do koca linii.
 
   4. Format do polecenia change (zmie):
@@ -497,12 +497,12 @@ UWAGA:  Moesz uywa <BS> aby poprawia bdy w czasie pisania.
      Zapamitaj numer linii dla potrzeb kroku 3.
 
 UWAGA: Moesz te zobaczy pozycj kursora w prawym, dolnym rogu ekranu.
-       Dzieje si tak kiedy ustawiona jest opcja 'ruler' (wyjanione w lekcji 6.).
+       Dzieje si tak kiedy ustawiona jest opcja 'ruler' (wicej w lekcji 6.).
 
   2. Wcinij G aby przej na koniec pliku.
      Wcinij  gg  aby przej do pocztku pliku.
 
-  3. Wpisz numer linii, w ktrej bye a potem  G . To przeniesie ci
+  3. Wpisz numer linii, w ktrej bye a potem  G . To przeniesie Ci
      z powrotem do linii, w ktrej bye kiedy wcisne CTRL-G.
 
   4. Jeli czujesz si wystarczajco pewnie, wykonaj kroki 1-3.
@@ -511,10 +511,10 @@ UWAGA: Moesz te zobaczy pozycj kursora w prawym, dolnym rogu ekranu.
 			 Lekcja 4.2.: POLECENIE SZUKAJ
 
 
-	     ** Wpisz  /  a nastpnie wyraenie aby je znale. **
+	     ** Wpisz  /  a nastpnie wyraenie, aby je znale. **
 
-  1. W trybie Normal wpisz  / . Zauwa, e znak ten, oraz kursor pojawi
-     si na dole ekranu tak samo jak polecenie  : .
+  1. W trybie Normal wpisz  / . Zauwa, e znak ten oraz kursor pojawi
+     si na dole ekranu tak samo, jak polecenie  : .
 
   2. Teraz wpisz  bond<ENTER> .  To jest sowo, ktrego chcesz szuka.
 
@@ -523,11 +523,11 @@ UWAGA: Moesz te zobaczy pozycj kursora w prawym, dolnym rogu ekranu.
 
   4. Jeli chcesz szuka frazy do tyu, uyj polecenia  ?  zamiast  / .
 
-  5. Aby wrci gdzie bye wcinij  CTRL-O. Powtarzaj by wrci dalej. CTRL-I
+  5. Aby wrci gdzie bye, wcinij  CTRL-O. Powtarzaj, by wrci dalej. CTRL-I
      idzie do przodu.
 
-Uwaga:  'bond' to nie jest metoda by przeliterowa bd; 'bond' to bd.
-Uwaga:  Kiedy szukanie osignie koniec pliku bdzie kontynuowao od pocztku
+Uwaga:  'bond' to nie jest metoda, by przeliterowa bd; 'bond' to bd.
+Uwaga:  Kiedy szukanie osignie koniec pliku, bdzie kontynuowane od pocztku
         o ile opcja 'wrapscan' nie zostaa przestawiona.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -571,16 +571,16 @@ Uwaga: Ta funkcja jest bardzo uyteczna w debuggowaniu programu
 
   4. Aby zmieni wszystkie wystpienia acucha znakw pomidzy dwoma liniami,
      wpisz: :#,#s/stare/nowe/g gdzie #,# s numerami linii ograniczajcych
-                               region gdzie ma nastpi zamiana.
+                               region, gdzie ma nastpi zamiana.
      wpisz  :%s/stare/nowe/g   by zmieni wszystkie wystpienia w caym pliku.
      wpisz  :%s/stare/nowe/gc  by zmieni wszystkie wystpienia w caym
-                               pliku, proszc o potwierdzenie za kadym razem
+                               pliku, proszc o potwierdzenie za kadym razem.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			     LEKCJA 4. PODSUMOWANIE
 
   1. CTRL-G   pokae Twoj pozycj w pliku i status pliku.  SHIFT-G przenosi
-	      ci do koca pliku.
+	      Ci do koca pliku.
      G        przenosi do koca pliku.
      liczba G przenosi do linii [liczba].
      gg       przenosi do pierwszej linii.
@@ -588,22 +588,22 @@ Uwaga: Ta funkcja jest bardzo uyteczna w debuggowaniu programu
   2. Wpisanie  /  a nastpnie acucha znakw szuka acucha DO PRZODU.
      Wpisanie  ?  a nastpnie acucha znakw szuka acucha DO TYU.
      Po wyszukiwaniu wcinij  n  by znale nastpne wystpienie szukanej
-     frazy tym samym kierunku lub  N  by szuka w kierunku przeciwnym.
+     frazy w tym samym kierunku lub  N  by szuka w kierunku przeciwnym.
      CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych.
 
   3. Wpisanie  %  gdy kursor znajduje si na (,),[,],{, lub } lokalizuje
      parujcy znak.
 
-  4. By zamieni pierwszy stary na nowy w linii wpisz      :s/stary/nowy
-     By zamieni wszystkie stary na nowy w linii wpisz     :s/stary/nowy/g
+  4. By zamieni pierwszy stary na nowy w linii, wpisz      :s/stary/nowy
+     By zamieni wszystkie stary na nowy w linii, wpisz     :s/stary/nowy/g
      By zamieni frazy pomidzy dwoma liniami # wpisz      :#,#s/stary/nowy/g
-     By zamieni wszystkie wystpienia w pliku wpisz       :%s/stary/nowy/g
-     By Vim prosi Ci o potwierdzenie dodaj 'c'	   :%s/stary/nowy/gc
+     By zamieni wszystkie wystpienia w pliku, wpisz       :%s/stary/nowy/g
+     By Vim prosi Ci o potwierdzenie, dodaj 'c'	   :%s/stary/nowy/gc
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		 Lekcja 5.1.: JAK WYKONA POLECENIA ZEWNTRZNE
+		 Lekcja 5.1.: JAK WYKONA POLECENIA ZEWNTRZNE?
 
 
-	** Wpisz  :!  a nastpnie zewntrzne polecenie by je wykona. **
+	** Wpisz  :!  a nastpnie zewntrzne polecenie, by je wykona. **
 
   1. Wpisz znajome polecenie  :  by ustawi kursor na dole ekranu. To pozwala
      na wprowadzenie komendy linii polece.
@@ -626,20 +626,20 @@ Uwaga:  Wszystkie polecenia  :  musz by zakoczone <ENTER>.
 		    Lekcja 5.2.: WICEJ O ZAPISYWANIU PLIKW
 
 
-	   ** By zachowa zmiany w tekci wpisz :w NAZWA_PLIKU . **
+	   ** By zachowa zmiany w tekcie, wpisz :w NAZWA_PLIKU . **
 
   1. Wpisz  :!dir  lub  :!ls  by zobaczy spis plikw w katalogu.
-     Ju wiesz, e musisz wcisn <ENTER> po tym.
+     Ju wiesz, e musisz po tym wcisn <ENTER>.
 
-  2. Wybierz nazw pliku jaka jeszcze nie istnieje, np. TEST.
+  2. Wybierz nazw pliku, jaka jeszcze nie istnieje, np. TEST.
 
   3. Teraz wpisz:   :w TEST   (gdzie TEST jest nazw pliku jak wybrae.)
 
   4. To polecenie zapamita cay plik (Vim Tutor) pod nazw TEST.
-     By to sprawdzi wpisz  :!dir  lub  :!ls , eby znowu zobaczy list plikw.
+     By to sprawdzi, wpisz  :!dir  lub  :!ls  eby znowu zobaczy list plikw.
 
 Uwaga: Zauwa, e gdyby teraz wyszed z Vima, a nastpnie wszed ponownie
-       poleceniem  vim TEST , plik byby dokadn kopi tutoriala kiedy go
+       poleceniem  vim TEST , plik byby dokadn kopi tutoriala, kiedy go
        zapisywae.
 
   5. Teraz usu plik wpisujc (MS-DOS):		   :!del TEST
@@ -649,7 +649,7 @@ Uwaga: Zauwa, e gdyby teraz wyszed z Vima, a nastpnie wszed ponownie
 		    Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU
 
 
-	  ** By zachowa cz pliku wpisz  v ruch :w NAZWA_PLIKU **
+	  ** By zachowa cz pliku, wpisz  v ruch :w NAZWA_PLIKU **
 
   1. Przenie kursor do tego wiersza.
 
@@ -664,26 +664,26 @@ Uwaga: Zauwa, e gdyby teraz wyszed z Vima, a nastpnie wszed ponownie
   5. Vim zapisze wybrane linie do pliku TEST. Uyj  :!dir  lub  :!ls , eby to
      zobaczy. Jeszcze go nie usuwaj! Uyjemy go w nastpnej lekcji.
 
-UWAGA: Wcinicie  v  zaczyna tryb Wizualny. Moesz porusza kursorem by
-       zmieni rozmiary zaznaczenia. Moesz te uy operatora by zrobi co
+UWAGA: Wcinicie  v  zaczyna tryb Wizualny. Moesz porusza kursorem, by
+       zmieni rozmiary zaznaczenia. Moesz te uy operatora, by zrobi co
        z tekstem. Na przykad  d  usuwa tekst.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		   Lekcja 5.4.: WSTAWIANIE I CZENIE PLIKW
 
 
-	    ** By wstawi zawarto pliku wpisz   :r NAZWA_PLIKU **
+	    ** By wstawi zawarto pliku, wpisz   :r NAZWA_PLIKU **
 
   1. Umie kursor tu powyej tej linii.
 
 UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejd
-       do DOU by zobaczy ponownie t lekcj.
+       do DOU, by zobaczy ponownie t lekcj.
 
   2. Teraz wczytaj plik TEST uywajc polecenia  :r TEST , gdzie TEST
      jest nazw pliku.
      Wczytany plik jest umieszczony poniej linii z kursorem.
 
-  3. By sprawdzi czy plik zosta wczytany cofnij kursor i zobacz, e
+  3. By sprawdzi czy plik zosta wczytany, cofnij kursor i zobacz, e
      teraz s dwie kopie Lekcji 5.3., orygina i kopia z pliku.
 
 UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad
@@ -723,14 +723,14 @@ UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad
 
   1. Przenie kursor do linii poniej oznaczonej --->.
 
-  2. Wpisz  o  (mae) by otworzy lini PONIEJ kursora i przenie si
+  2. Wpisz  o  (mae), by otworzy lini PONIEJ kursora i przenie si
      do trybu Insert (wprowadzanie).
 
   3. Wpisz troch tekstu i wcinij <ESC> by wyj z trybu Insert (wprowadzanie).
 
 ---> Po wciniciu  o  kursor znajdzie si w otwartej linii w trybie Insert.
 
-  4. By otworzy lini POWYEJ kursora wcinij wielkie  O  zamiast maego
+  4. By otworzy lini POWYEJ kursora, wcinij wielkie  O  zamiast maego
      o . Wyprbuj to na linii poniej.
 
 ---> Otwrz lini powyej wciskajc SHIFT-O gdy kursor bdzie na tej linii.
@@ -747,9 +747,9 @@ UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad
 
   2. Wciskaj  e  dopki kursor nie bdzie na kocu li .
 
-  3. Wpisz  a  (mae) aby doda tekst ZA znakiem pod kursorem.
+  3. Wpisz  a  (mae), aby doda tekst ZA znakiem pod kursorem.
 
-  4. Dokocz wyraz tak jak w linii poniej. Wcinij <ESC> aby opuci tryb
+  4. Dokocz wyraz tak, jak w linii poniej. Wcinij <ESC> aby opuci tryb
      Insert.
 
   5. Uyj  e  by przej do kolejnego niedokoczonego wyrazu i powtarzaj kroki
@@ -758,7 +758,7 @@ UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad
 ---> Ta li poz Ci wi dodaw teks do ko lin
 ---> Ta linia pozwoli Ci wiczy dodawanie tekstu do koca linii.
 
-Uwaga:  a ,  i  oraz  A  prowadz do trybu Insert, jedyn rnic jest miejsce
+Uwaga:  a ,  i  oraz  A  prowadz do trybu Insert, jedyn rnic jest miejsce,
        gdzie nowe znaki bd dodawane.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		   Lekcja 6.3.: INNA WERSJA REPLACE (zamiana)
@@ -791,16 +791,16 @@ UWAGA: Tryb Replace jest jak tryb Insert, ale kady znak usuwa istniejcy
 
   1. Przejd do linii oznaczonej ---> i umie kursor za "a)".
 
-  2. Wejd w tryb Visual  v  i przenie kursor na pocztek "pierwszy".
+  2. Wejd w tryb Wizualny  v  i przenie kursor na pocztek "pierwszy".
 
-  3. Wcinij  y  aby yankowa (kopiowa) podwietlony tekst.
+  3. Wcinij  y  aby kopiowa (yankowa) podwietlony tekst.
 
   4. Przenie kursor do koca nastpnej linii:  j$
 
-  5. Wcinij  p  aby wpakowa (paste) tekst.  Dodaj:  a drugi<ESC> .
+  5. Wcinij  p  aby wklei (wpakowa) tekst.  Dodaj:  a drugi<ESC> .
 
-  6. Uyj trybu Wizualnego aby wybra " element.", yankuj go  y , przejd do
-     koca nastpnej linii  j$ i upakuj tam tekst z  p .
+  6. Uyj trybu Wizualnego, aby wybra " element.", yankuj go  y , przejd do
+     koca nastpnej linii  j$  i upakuj tam tekst z  p .
 
 --->  a) to jest pierwszy element.
       b)
@@ -810,7 +810,7 @@ Uwaga: moesz uy  y  jako operatora;  yw  kopiuje jeden wyraz.
 			 Lekcja 6.5.: USTAWIANIE OPCJI
 
 
-** Ustawianie opcji tak by szukaj lub substytucja ignoroway wielko liter **
+** Ustawianie opcji tak, by szukaj lub substytucja ignoroway wielko liter **
 
   1. Szukaj 'ignore' wpisujc:    /ignore<ENTER>
      Powtrz szukanie kilka razy naciskajc klawisz  n .
@@ -828,7 +828,7 @@ Uwaga: moesz uy  y  jako operatora;  yw  kopiuje jeden wyraz.
 
   6. Aby wyczy ignorowanie wielkoci liter:  :set noic
 
-Uwaga: Aby usun podwietlanie dopasowa wpisz:   :nohlsearch
+Uwaga: Aby usun podwietlanie dopasowa, wpisz:   :nohlsearch
 Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER>
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			     LEKCJA 6. PODSUMOWANIE
@@ -837,36 +837,36 @@ Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER>
   1. Wpisanie  o  otwiera lini PONIEJ kursora.
      Wpisanie  O  otwiera lini POWYEJ kursora.
 
-  2. Wpisanie  a  by wstawi tekst ZA znakiem na, ktrym jest kursor.
+  2. Wpisanie  a  wstawia tekst ZA znakiem, na ktrym jest kursor.
      Wpisanie  A  dodaje tekst na kocu linii.
 
   3. Polecenie  e  przenosi do koca wyrazu.
-  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja, paste) go.
+  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja) go.
   5. Wpisanie wielkiego  R  wprowadza w tryb Replace (zamiana) dopki
      nie zostanie wcinity <ESC>.
-  6. Wpisanie ":set xxx" ustawia opcj "xxx". Nietkre opcje:
+  6. Wpisanie ":set xxx" ustawia opcj "xxx". Niektre opcje:
 	'ic'  'ignorecase'	ignoruj wielko znakw
 	'is'  'incsearch'	poka czciowe dopasowania
 	'hls' 'hlsearch'	podwietl wszystkie dopasowania
-     Moesz uy zarwno dugiej jak i krtkiej formy.
-  7. Dodaj "no" aby wyczy opcj:   :set noic
+     Moesz uy zarwno dugiej, jak i krtkiej formy.
+  7. Dodaj "no", aby wyczy opcj:   :set noic
 
 
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			LEKCJA 7.1. JAK UZYSKA POMOC
+			 LEKCJA 7.1. JAK UZYSKA POMOC?
 
 		      ** Uycie systemu pomocy on-line **
 
-  Vim posiada bardzo dobry system pomocy on-line. By zacz sprbuj jednej
+  Vim posiada bardzo dobry system pomocy on-line. By zacz, sprbuj jednej
   z trzech moliwoci:
 	- wcinij klawisz <HELP> (jeli taki masz)
 	- wcinij klawisz <F1> (jeli taki masz)
 	- wpisz   :help<ENTER>
 
-  Przeczytaj tekst w oknie pomocy  aby dowiedzie si jak dziaa pomoc.
+  Przeczytaj tekst w oknie pomocy, aby dowiedzie si jak dziaa pomoc.
   wpisz CTRL-W CTRL-W    aby przeskoczy z jednego okna do innego
   wpisz :q<ENTER>        aby zamkn okno pomocy.
 
@@ -894,10 +894,10 @@ Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER>
   3. Zapisz plik:
      :w
 
-  Nastpnym razem gdy zaczniesz prac w Vimie bdzie on uywa podwietlania
+  Nastpnym razem, gdy zaczniesz prac w Vimie bdzie on uywa podwietlania
   skadni. Moesz doda wszystkie swoje ulubione ustawienia do tego pliku
   "vimrc".
-  Aby uzyska wicej informacji wpisz     :help vimrc-intro
+  Aby uzyska wicej informacji, wpisz     :help vimrc-intro
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			  Lekcja 7.3.: UZUPENIANIE
@@ -907,11 +907,11 @@ Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER>
 
   1. Upewnij si, e Vim nie jest w trybie kompatybilnoci:   :set nocp
 
-  2. Zerknij jakie pliki s w biecm katalogu:   :!ls   lub   :!dir
+  2. Zerknij, jakie pliki s w biecym katalogu:   :!ls   lub   :!dir
 
   3. Wpisz pocztek polecenia:   :e
 
-  4. Wcinij  CTRL-D  i Vim pokae list polece jakie zaczynaj si na "e".
+  4. Wcinij  CTRL-D  i Vim pokae list polece, jakie zaczynaj si na "e".
 
   5. Wcinij  <TAB>  i Vim uzupeni polecenie do ":edit".
 
@@ -925,7 +925,7 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>.
 			    Lekcja 7. PODSUMOWANIE
 
 
-  1. Wpisz  :help  lub wcinij <F1> lub <Help> aby otworzy okno pomocy.
+  1. Wpisz  :help  albo wcinij <F1> lub <Help> aby otworzy okno pomocy.
 
   2. Wpisz  :help cmd  aby uzyska pomoc o  cmd .
 
@@ -945,14 +945,14 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  Tutaj si koczy tutorial Vima. Zosta on pomylany tak aby da krtki
+  Tutaj si koczy tutorial Vima. Zosta on pomylany tak, aby da krtki
   przegld jego moliwoci, wystarczajcy by mg go uywa. Jest on
-  daleki od kompletnoci poniewa Vim ma o wiele, wiele wicej polece.
+  daleki od kompletnoci, poniewa Vim ma o wiele, wiele wicej polece.
 
   Dla dalszej nauki rekomendujemy ksik:
 	Vim - Vi Improved - autor Steve Oualline
 	Wydawca: New Riders
-  Pierwsza ksizka cakowicie powicona Vimowi. Uyteczna zwaszcza dla
+  Pierwsza ksika cakowicie powicona Vimowi. Uyteczna zwaszcza dla
   pocztkujcych. Zawiera wiele przykadw i ilustracji.
   Zobacz http://iccf-holland.org./click5.html
 
@@ -960,7 +960,7 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>.
   polecenia:
 	Learning the Vi Editor - autor Linda Lamb
 	Wydawca: O'Reilly & Associates Inc.
-  To dobra ksika by dowiedzie si niemal wszystkiego co chciaby zrobi
+  To dobra ksika, by dowiedzie si niemal wszystkiego, co chciaby zrobi
   z Vi. Szsta edycja zawiera te informacje o Vimie.
 
   Po polsku wydano:
@@ -991,4 +991,5 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>.
   rev. Marzec 2002
   2nd rev. Wrzesie 2004
   3rd rev. Marzec 2006
+  4th rev. Grudzie 2008
   Wszelkie uwagi prosz kierowa na: mikmach@wp.pl
--- a/runtime/tutor/tutor.pl.utf-8
+++ b/runtime/tutor/tutor.pl.utf-8
@@ -2,9 +2,9 @@
 =    W i t a j   w   t u t o r i a l u   V I M - a      -    Wersja  1.7.     =
 ===============================================================================
 
-     Vim to potężny edytor, który posiada wiele poleceń, zbyt dużo by
+     Vim to potężny edytor, który posiada wiele poleceń, zbyt dużo, by
      wyjaśnić je wszystkie w tym tutorialu. Ten przewodnik ma nauczyć
-     Cię posługiwać się wystarczająco wieloma komendami byś mógł łatwo
+     Cię posługiwać się wystarczająco wieloma komendami, byś mógł łatwo
      używać Vima jako edytora ogólnego przeznaczenia.
 
      Czas potrzebny na ukończenie tutoriala to 25 do 30 minut i zależy
@@ -13,14 +13,14 @@
 	 UWAGA:
 	 Polecenia wykonywane w czasie lekcji zmodyfikują tekst. Zrób
 	 wcześniej kopię tego pliku do ćwiczeń (jeśli zacząłeś komendą
-	 "vimtutor" to już pracujesz na kopii).
+	 "vimtutor", to już pracujesz na kopii).
 
-	 Pamiętaj że przewodnik ten został zaprojektowany do nauki poprzez
-	 ćwiczenia. Oznacza to, że musisz wykonywać polecenia by nauczyć się ich
-	 prawidłowo. Jeśli będziesz jedynie czytał tekst szybko zapomnisz wiele
+	 Pamiętaj, że przewodnik ten został zaprojektowany do nauki poprzez
+	 ćwiczenia. Oznacza to, że musisz wykonywać polecenia, by nauczyć się ich
+	 prawidłowo. Jeśli będziesz jedynie czytał tekst, szybko zapomnisz wiele
 	 poleceń!
 
-     Teraz upewnij się, że nie masz wciśniętego CapsLocka i wciskaj  j
+     Teraz upewnij się, że nie masz wciśniętego Caps Locka i wciskaj  j
      tak długo dopóki Lekcja 1.1. nie wypełni całkowicie ekranu.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -40,28 +40,28 @@
 
   3. Używając strzałki w dół przejdź do następnej lekcji.
 
-Uwaga: Jeśli nie jesteś pewien czegoś co wpisałeś, wciśnij <ESC> by wrócić do
+Uwaga: Jeśli nie jesteś pewien czegoś co wpisałeś, wciśnij <ESC>, by wrócić do
        trybu Normal. Wtedy powtórz polecenie.
 
 Uwaga: Klawisze kursora także powinny działać, ale używając  hjkl  będziesz
-       w stanie poruszać się o wiele szybciej jak się tylko przyzwyczaisz.
+       w stanie poruszać się o wiele szybciej, jak się tylko przyzwyczaisz.
        Naprawdę!
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		    Lekcja 1.2.: WYCHODZENIE Z VIM-a
 
- !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj całą lekcję.!!
+ !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj całą lekcję !!
 
   1. Wciśnij <ESC> (aby upewnić się, że jesteś w trybie Normal).
   2. Wpisz:			:q!<ENTER>.
-     To spowoduje wyjście z edytora PORZUCAJĄC wszelkie zmiany jakie
-     zdążyłeś zrobić. Jeśli chcesz zapamiętać zmiany i wyjść
+     To spowoduje wyjście z edytora PORZUCAJĄC wszelkie zmiany, jakie
+     zdążyłeś zrobić. Jeśli chcesz zapamiętać zmiany i wyjść,
      wpisz:			:wq<ENTER>
 
   3. Kiedy widzisz znak zachęty powłoki wpisz komendę, żeby wrócić
      do tutoriala. Czyli:	vimtutor<ENTER>
 
-  4. Jeśli chcesz zapamiętać polecenia, wykonaj kroki 1. do 3. aby
+  4. Jeśli chcesz zapamiętać polecenia, wykonaj kroki 1. do 3., aby
      wyjść i wrócić do edytora.
 
 UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobiłeś. W następnych
@@ -85,7 +85,7 @@ UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobiłeś. W następnych
 
 ---> Kkrowa prrzeskoczyła prrzez ksiiężycc.
 
-  5. Teraz kiedy zdanie jest poprawione przejdź do Lekcji 1.4.
+  5. Teraz, kiedy zdanie jest poprawione, przejdź do Lekcji 1.4.
 
 UWAGA: Ucz się przez ćwiczenie, nie wkuwanie.
 
@@ -101,18 +101,18 @@ UWAGA: Ucz się przez ćwiczenie, nie wkuwanie.
 
   1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->.
 
-  2. Aby poprawić pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym
+  2. Aby poprawić pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym,
      gdzie tekst ma być wstawiony.
 
   3. Wciśnij  i  a następnie wpisz konieczne poprawki.
 
-  4. Po poprawieniu błędu wciśnij <ESC> by wrócić do trybu Normal.
-     Powtarzaj kroki 2. do 4. aby poprawić całe zdanie.
+  4. Po poprawieniu błędu wciśnij <ESC>, by wrócić do trybu Normal.
+     Powtarzaj kroki 2. do 4., aby poprawić całe zdanie.
 
 ---> W tej brkje trochę .
 ---> W tej linii brakuje trochę tekstu.
 
-  5. Kiedy czujesz się swobodnie wstawiając tekst przejdź do
+  5. Kiedy czujesz się swobodnie wstawiając tekst, przejdź do
      podsumowania poniżej.
 
 
@@ -129,7 +129,7 @@ UWAGA: Ucz się przez ćwiczenie, nie wkuwanie.
 
   3. Kiedy tekst został dodany, wciśnij <ESC> i wróć do trybu Normalnego.
 
-  4. Przenieś kursor do drugiej linii oznaczonej ---> i powtórz kroki 2 i 3
+  4. Przenieś kursor do drugiej linii oznaczonej ---> i powtórz kroki 2. i 3.,
      aby poprawić zdanie.
 
 ---> Brakuje tu tro
@@ -137,27 +137,27 @@ UWAGA: Ucz się przez ćwiczenie, nie wkuwanie.
 ---> Tu też trochę bra
      Tu też trochę brakuje.
 
-  5. Kiedy już utrwaliłeś ćwiczenie przejdź do lekcji 1.6.
+  5. Kiedy już utrwaliłeś ćwiczenie, przejdź do lekcji 1.6.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			  Lekcja 1.6.: EDYCJA PLIKU
 
 		  ** Użyj  :wq  aby zapisać plik i wyjść. **
 
-   !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczyaj całą lekcję !!
+   !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj całą lekcję !!
 
   1. Zakończ tutorial tak jak w lekcji 1.2.:  :q!
-     Lub jeśli masz dostęp do innego terminala zrób kolejne kroki tam.
+     lub, jeśli masz dostęp do innego terminala, wykonaj kolejne kroki tam.
 
   2. W powłoce wydaj polecenie:  vim tutor<ENTER>
-     "vim" jest poleceniem uruchamiającym edytor Vim. 'tutor' to nazwa pliku
-     jaki chcesz edytować. Użyj pliku jaki może zostać zmieniony.
+     "vim" jest poleceniem uruchamiającym edytor Vim. 'tutor' to nazwa pliku,
+     jaki chcesz edytować. Użyj pliku, który może zostać zmieniony.
 
-  3. Dodaj i usuń tekst tak jak się nauczyłeś w poprzednich lekcjach.
+  3. Dodaj i usuń tekst tak, jak się nauczyłeś w poprzednich lekcjach.
 
   4. Zapisz plik ze zmianami i opuść Vima:  :wq<ENTER>
 
-  5. Jeśli zakończyłeś vimtutor w kroku 1. uruchom go ponownie i przejdź
+  5. Jeśli zakończyłeś vimtutor w kroku 1., uruchom go ponownie i przejdź
      do podsumowania poniżej.
 
   6. Po przeczytaniu wszystkich kroków i ich zrozumieniu: wykonaj je.
@@ -168,14 +168,14 @@ UWAGA: Ucz się przez ćwiczenie, nie wkuwanie.
   1. Poruszasz kursorem używając "strzałek" i klawiszy  hjkl .
        h (w lewo)	 j (w dół)	 k (do góry)		l (w prawo)
 
-  2. By wejść do Vima (z powłoki) wpisz:
+  2. By wejść do Vima, (z powłoki) wpisz:
 			    vim NAZWA_PLIKU<ENTER>
 
-  3. By wyjść z Vima wpisz:
-			    <ESC> :q!<ENTER>  by usunąc wszystkie zmiany.
+  3. By wyjść z Vima, wpisz:
+			    <ESC> :q!<ENTER>  by usunąć wszystkie zmiany.
 	     LUB:	    <ESC> :wq<ENTER>  by zmiany zachować.
 
-  4. By usunąć znak pod kursorem wciśnij:  x
+  4. By usunąć znak pod kursorem, wciśnij:  x
 
   5. By wstawić tekst przed kursorem lub dodać:
 	i   wpisz tekst   <ESC>         wstawi przed kursorem
@@ -189,18 +189,18 @@ Teraz możemy kontynuować i przejść do Lekcji 2.
 		  Lekcja 2.1.: POLECENIE DELETE (usuwanie)
 
 
-		      ** Wpisz  dw  by usunąc wyraz. **
+		      ** Wpisz  dw  by usunąć wyraz. **
 
-  1. Wciśnij  <ESC>  by upewnić się, że jesteś w trybie Normal.
+  1. Wciśnij  <ESC>, by upewnić się, że jesteś w trybie Normal.
 
   2. Przenieś kursor do linii poniżej oznaczonej --->.
 
-  3. Przesuń kursor na początek wyrazu, które chcesz usunąć.
+  3. Przesuń kursor na początek wyrazu, który chcesz usunąć.
 
   4. Wpisz   dw   by usunąć wyraz.
 
   UWAGA: Litera  d  pojawi się na dole ekranu. Vim czeka na wpisanie  w .
-	 Jeśli zobaczysz inny znak oznacza to, że wpisałeś coś źle, wciśnij
+	 Jeśli zobaczysz inny znak, oznacza to, że wpisałeś coś źle; wciśnij
 	 <ESC> i zacznij od początku.
 
 ---> Jest tu parę papier wyrazów, które kamień nie należą do nożyce tego zdania.
@@ -225,7 +225,7 @@ Teraz możemy kontynuować i przejść do Lekcji 2.
 ---> Ktoś wpisał koniec tego zdania dwukrotnie. zdania dwukrotnie.
 
 
-  5. Przejdź do Lekcji 2.3. by zrozumieć co się stało.
+  5. Przejdź do Lekcji 2.3., by zrozumieć co się stało.
 
 
 
@@ -235,12 +235,12 @@ Teraz możemy kontynuować i przejść do Lekcji 2.
 		     Lekcja 2.3.: O OPERATORACH I RUCHACH
 
 
-  Wiele poleceń zmieniających tekst są złożone z operatora i ruchu.
-  Format dla polecenia usuwającego z operatorem  d  jest taki:
+  Wiele poleceń zmieniających tekst jest złożonych z operatora i ruchu.
+  Format dla polecenia usuwającego z operatorem  d  jest następujący:
 
 	    d  ruch
 
-  Gdzie:
+  gdzie:
    d      - operator usuwania.
    ruch   - na czym polecenie będzie wykonywane (lista poniżej).
 
@@ -252,7 +252,7 @@ Teraz możemy kontynuować i przejść do Lekcji 2.
 W ten sposób wpisanie  de  usunie znaki od kursora do końca wyrazu.
 
 UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor
-       tak jak to określono.
+       tak, jak to określono.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		    Lekcja 2.4.: UŻYCIE MNOŻNIKA DLA RUCHU
@@ -266,32 +266,32 @@ UWAGA: Wpisanie tylko ruchu w trybie Nor
 
   3. Wpisz  3e  aby przenieść kursor do końca trzeciego wyrazu w przód.
 
-  4. Wpisz  0  (zero) aby przenieść kursor do początku linii.
+  4. Wpisz  0  (zero), aby przenieść kursor na początek linii.
 
   5. Powtórz kroki 2. i 3. z innymi liczbami.
 
 
- ---> To jest zwykły wiersz z wyrazami po których możesz się poruszać.
+ ---> To jest zwykły wiersz z wyrazami, po których możesz się poruszać.
 
   6. Przejdź do lekcji 2.5.
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		Lekcja 2.5.: UŻYCIE MNOŻNIKA BY WIĘCEJ USUNĄĆ
+		Lekcja 2.5.: UŻYCIE MNOŻNIKA, BY WIĘCEJ USUNĄĆ
 
 
     ** Wpisanie liczby z operatorem powtarza go odpowiednią ilość razy. **
 
   W wyżej wspomnianej kombinacji operatora usuwania i ruchu podaj mnożnik
-  przed ruchem by więcej usunąć:
+  przed ruchem, by więcej usunąć:
 	d  liczba  ruch
 
   1. Przenieś kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->.
 
   2. Wpisz  2dw  aby usunąć dwa wyrazy KAPITALIKAMI.
 
-  3. Powtarzaj kroki 1. i 2. z innymi mnożnikami aby usunąć kolejne wyrazy
+  3. Powtarzaj kroki 1. i 2. z innymi mnożnikami, aby usunąć kolejne wyrazy
      KAPITALIKAMI jednym poleceniem
 
 ---> ta ASD WE linia QWE ASDF ZXCV FG wyrazów została ERT FGH CF oczyszczona.
@@ -312,7 +312,7 @@ UWAGA:  Mnożnik pomiędzy operatorem  d  i ruchem działa podobnie do ruchu bez
   1. Przenieś kursor do drugiego zdania z wierszyka poniżej.
   2. Wpisz  dd  aby usunąć wiersz.
   3. Teraz przenieś się do czwartego wiersza.
-  4. Wpisz  2dd  aby usunąc dwa wiersze.
+  4. Wpisz  2dd  aby usunąć dwa wiersze.
 
 --->  1)  Róże są czerwone,
 --->  2)  Błoto jest fajne,
@@ -335,12 +335,12 @@ UWAGA:  Mnożnik pomiędzy operatorem  d  i ruchem działa podobnie do ruchu bez
   2. Wpisz  x  aby usunąć pierwszy niechciany znak.
   3. Teraz wciśnij  u  aby cofnąć skutki ostatniego polecenia.
   4. Tym razem popraw wszystkie błędy w linii używając polecenia  x .
-  5. Teraz wciśnij wielkie U aby przywrócić linię do oryginalnego stanu.
-  6. Teraz wciśnij  u  kilka razy by cofnąć  U  i poprzednie polecenia.
+  5. Teraz wciśnij wielkie  U  aby przywrócić linię do oryginalnego stanu.
+  6. Teraz wciśnij  u  kilka razy, by cofnąć  U  i poprzednie polecenia.
   7. Teraz wpisz CTRL-R (trzymaj równocześnie wciśnięte klawisze CTRL i R)
      kilka razy, by cofnąć cofnięcia.
 
----> Poopraw blędyyy w teej liniii i zaamiień je prrzez coofnij.
+---> Poopraw błędyyy w teej liniii i zaamiień je prrzez coofnij.
 
   8. To są bardzo pożyteczne polecenia.
 
@@ -350,22 +350,22 @@ UWAGA:  Mnożnik pomiędzy operatorem  d  i ruchem działa podobnie do ruchu bez
 			     LEKCJA 2. PODSUMOWANIE
 
 
-  1. By usunąć znaki od kursora do następnego wyrazu wpisz:   dw
-  2. By usunąć znaki od kursora do końca linii wpisz:    d$
+  1. By usunąć znaki od kursora do następnego wyrazu, wpisz:   dw
+  2. By usunąć znaki od kursora do końca linii, wpisz:    d$
   3. By usunąć całą linię:    dd
-  4. By powtórzyć ruch poprzedź go liczbą:    2w
+  4. By powtórzyć ruch, poprzedź go liczbą:    2w
   5. Format polecenia zmiany to:
                 operator  [liczba]  ruch
   gdzie:
-   operator  - to co trzeba zrobić (np.  d  dla usuwania)
+   operator  - to, co trzeba zrobić (np.  d  dla usuwania)
    [liczba]  - opcjonalne, ile razy powtórzyć ruch
    ruch      - przenosi nad tekstem do operowania, takim jak  w (wyraz),
-	       $  (do końca linii), etc.
+	       $  (do końca linii) etc.
 
-  6. By przejść do początku linii użyj zera:  0
-  7. By cofnąć poprzednie polecenie, wpisz:	  u (małe u)
-     By cofnąć wszystkie zmiany w linii wpisz:	  U (wielkie U)
-     By cofnąć cofnięcia wpisz:			  CTRL-R
+  6. By przejść do początku linii, użyj zera:  0
+  7. By cofnąć poprzednie polecenie, wpisz:	  u  (małe u)
+     By cofnąć wszystkie zmiany w linii, wpisz:	  U  (wielkie U)
+     By cofnąć cofnięcie, wpisz:			  CTRL-R
 
 
 
@@ -379,7 +379,7 @@ UWAGA:  Mnożnik pomiędzy operatorem  d  i ruchem działa podobnie do ruchu bez
 
   2. Wpisz  dd  aby usunąć linię i przechować ją w rejestrze Vima.
 
-  3. Przenieś kursor do linii c), POWYŻEJ tej gdzie usunięta linia powinna
+  3. Przenieś kursor do linii c), POWYŻEJ tej, gdzie usunięta linia powinna
      się znajdować.
 
   4. Wciśnij  p  by wstawić linię poniżej kursora.
@@ -404,21 +404,21 @@ UWAGA:  Mnożnik pomiędzy operatorem  d  i ruchem działa podobnie do ruchu bez
 
   3. Wpisz  r  a potem znak jaki powinien go zastąpić.
 
-  4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie będzie taka jak druga.
+  4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie będzie taka, jak druga.
 
---->  Kjedy ten wiersz bił wstókiwany ktoś wciznął perę złych klawirzy!
---->  Kiedy ten wiersz był wstukiwany ktoś wcisnął parę złych klawiszy!
+--->  Kjedy ten wiersz bił wstókiwany, ktoś wciznął perę złych klawirzy!
+--->  Kiedy ten wiersz był wstukiwany, ktoś wcisnął parę złych klawiszy!
 
   5. Teraz czas na Lekcję 3.3.
 
 
-UWAGA: Pamiętaj by uczyć się ćwicząc, a nie pamięciowo.
+UWAGA: Pamiętaj, by uczyć się ćwicząc, a nie pamięciowo.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		     Lekcja 3.3.: OPERATOR CHANGE (zmień)
 
-		 ** By zmienić do końca wyrazu wpisz  ce . **
+		 ** By zmienić do końca wyrazu, wpisz  ce . **
 
   1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->.
 
@@ -428,7 +428,7 @@ UWAGA: Pamiętaj by uczyć się ćwicząc, a nie pamięciowo.
 
   4. Wciśnij <ESC> i przejdź do następnej planowanej zmiany.
 
-  5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie będzie takie same
+  5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie będzie takie same,
      jak drugie.
 
 ---> Ta lunos ma pire słów, które tżina zbnic użifajonc pcmazu zmień.
@@ -442,13 +442,13 @@ UWAGA: Pamiętaj by uczyć się ćwicząc, a nie pamięciowo.
 		      Lekcja 3.4.: WIĘCEJ ZMIAN UŻYWAJĄC c
 
 
-	** Polecenie change używa takich samych ruchów jak delete. **
+	** Polecenie change używa takich samych ruchów, jak delete. **
 
-  1. Operator change działa tak samo jak delete. Format wygląda tak:
+  1. Operator change działa tak samo, jak delete. Format wygląda tak:
 
 	    c   [liczba]   ruch
 
-  2. Ruchy są także takie same, np.:  w  (wyraz),  $  (koniec linii), etc.
+  2. Ruchy są także takie same, np.:  w  (wyraz),  $  (koniec linii) etc.
 
   3. Przenieś się do pierwszej linii poniżej oznaczonej --->
 
@@ -456,7 +456,7 @@ UWAGA: Pamiętaj by uczyć się ćwicząc, a nie pamięciowo.
 
   5. Wpisz  c$ , popraw koniec wiersza i wciśnij <ESC>.
 
----> Koniec tego wiersza musi być poprawiony aby wyglądał tak jak drugi.
+---> Koniec tego wiersza musi być poprawiony, aby wyglądał tak, jak drugi.
 ---> Koniec tego wiersza musi być poprawiony używając polecenia  c$ .
 
 UWAGA:  Możesz używać <BS> aby poprawiać błędy w czasie pisania.
@@ -469,11 +469,11 @@ UWAGA:  Możesz używać <BS> aby poprawiać błędy w czasie pisania.
      polecenie wstawia skasowany tekst PO kursorze (jeśli cała linia
      została usunięta, zostanie ona umieszczona w linii poniżej kursora).
 
-  2. By zamienić znak pod kursorem wciśnij  r  a potem znak, który ma zastąpić
+  2. By zamienić znak pod kursorem, wciśnij  r  a potem znak, który ma zastąpić
      oryginalny.
 
-  3. Operator change pozwala Ci na zastąpienie od kursora do miejsca gdzie
-     zabrałby cię ruch. Np. wpisz  ce  aby zamienić tekst od kursora do końca
+  3. Operator change pozwala Ci na zastąpienie od kursora do miejsca, gdzie
+     zabrałby Cię ruch. Np. wpisz  ce  aby zamienić tekst od kursora do końca
      wyrazu,  c$  aby zmienić tekst do końca linii.
 
   4. Format do polecenia change (zmień):
@@ -497,12 +497,12 @@ UWAGA:  Możesz używać <BS> aby poprawiać błędy w czasie pisania.
      Zapamiętaj numer linii dla potrzeb kroku 3.
 
 UWAGA: Możesz też zobaczyć pozycję kursora w prawym, dolnym rogu ekranu.
-       Dzieje się tak kiedy ustawiona jest opcja 'ruler' (wyjaśnione w lekcji 6.).
+       Dzieje się tak kiedy ustawiona jest opcja 'ruler' (więcej w lekcji 6.).
 
   2. Wciśnij G aby przejść na koniec pliku.
      Wciśnij  gg  aby przejść do początku pliku.
 
-  3. Wpisz numer linii, w której byłeś a potem  G . To przeniesie cię
+  3. Wpisz numer linii, w której byłeś a potem  G . To przeniesie Cię
      z powrotem do linii, w której byłeś kiedy wcisnąłeś CTRL-G.
 
   4. Jeśli czujesz się wystarczająco pewnie, wykonaj kroki 1-3.
@@ -511,10 +511,10 @@ UWAGA: Możesz też zobaczyć pozycję kursora w prawym, dolnym rogu ekranu.
 			 Lekcja 4.2.: POLECENIE SZUKAJ
 
 
-	     ** Wpisz  /  a następnie wyrażenie aby je znaleźć. **
+	     ** Wpisz  /  a następnie wyrażenie, aby je znaleźć. **
 
-  1. W trybie Normal wpisz  / . Zauważ, że znak ten, oraz kursor pojawią
-     się na dole ekranu tak samo jak polecenie  : .
+  1. W trybie Normal wpisz  / . Zauważ, że znak ten oraz kursor pojawią
+     się na dole ekranu tak samo, jak polecenie  : .
 
   2. Teraz wpisz  błond<ENTER> .  To jest słowo, którego chcesz szukać.
 
@@ -523,11 +523,11 @@ UWAGA: Możesz też zobaczyć pozycję kursora w prawym, dolnym rogu ekranu.
 
   4. Jeśli chcesz szukać frazy do tyłu, użyj polecenia  ?  zamiast  / .
 
-  5. Aby wrócić gdzie byłeś wciśnij  CTRL-O. Powtarzaj by wrócić dalej. CTRL-I
+  5. Aby wrócić gdzie byłeś, wciśnij  CTRL-O. Powtarzaj, by wrócić dalej. CTRL-I
      idzie do przodu.
 
-Uwaga:  'błond' to nie jest metoda by przeliterować błąd; 'błond' to błąd.
-Uwaga:  Kiedy szukanie osiągnie koniec pliku będzie kontynuowało od początku
+Uwaga:  'błond' to nie jest metoda, by przeliterować błąd; 'błond' to błąd.
+Uwaga:  Kiedy szukanie osiągnie koniec pliku, będzie kontynuowane od początku
         o ile opcja 'wrapscan' nie została przestawiona.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -571,16 +571,16 @@ Uwaga: Ta funkcja jest bardzo użyteczna w debuggowaniu programu
 
   4. Aby zmienić wszystkie wystąpienia łańcucha znaków pomiędzy dwoma liniami,
      wpisz: :#,#s/stare/nowe/g gdzie #,# są numerami linii ograniczających
-                               region gdzie ma nastąpić zamiana.
+                               region, gdzie ma nastąpić zamiana.
      wpisz  :%s/stare/nowe/g   by zmienić wszystkie wystąpienia w całym pliku.
      wpisz  :%s/stare/nowe/gc  by zmienić wszystkie wystąpienia w całym
-                               pliku, prosząc o potwierdzenie za każdym razem
+                               pliku, prosząc o potwierdzenie za każdym razem.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			     LEKCJA 4. PODSUMOWANIE
 
   1. CTRL-G   pokaże Twoją pozycję w pliku i status pliku.  SHIFT-G przenosi
-	      cię do końca pliku.
+	      Cię do końca pliku.
      G        przenosi do końca pliku.
      liczba G przenosi do linii [liczba].
      gg       przenosi do pierwszej linii.
@@ -588,22 +588,22 @@ Uwaga: Ta funkcja jest bardzo użyteczna w debuggowaniu programu
   2. Wpisanie  /  a następnie łańcucha znaków szuka łańcucha DO PRZODU.
      Wpisanie  ?  a następnie łańcucha znaków szuka łańcucha DO TYŁU.
      Po wyszukiwaniu wciśnij  n  by znaleźć następne wystąpienie szukanej
-     frazy tym samym kierunku lub  N  by szukać w kierunku przeciwnym.
+     frazy w tym samym kierunku lub  N  by szukać w kierunku przeciwnym.
      CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych.
 
   3. Wpisanie  %  gdy kursor znajduje się na (,),[,],{, lub } lokalizuje
      parujący znak.
 
-  4. By zamienić pierwszy stary na nowy w linii wpisz      :s/stary/nowy
-     By zamienić wszystkie stary na nowy w linii wpisz     :s/stary/nowy/g
+  4. By zamienić pierwszy stary na nowy w linii, wpisz      :s/stary/nowy
+     By zamienić wszystkie stary na nowy w linii, wpisz     :s/stary/nowy/g
      By zamienić frazy pomiędzy dwoma liniami # wpisz      :#,#s/stary/nowy/g
-     By zamienić wszystkie wystąpienia w pliku wpisz       :%s/stary/nowy/g
-     By Vim prosił Cię o potwierdzenie dodaj 'c'	   :%s/stary/nowy/gc
+     By zamienić wszystkie wystąpienia w pliku, wpisz       :%s/stary/nowy/g
+     By Vim prosił Cię o potwierdzenie, dodaj 'c'	   :%s/stary/nowy/gc
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-		 Lekcja 5.1.: JAK WYKONAĆ POLECENIA ZEWNĘTRZNE
+		 Lekcja 5.1.: JAK WYKONAĆ POLECENIA ZEWNĘTRZNE?
 
 
-	** Wpisz  :!  a następnie zewnętrzne polecenie by je wykonać. **
+	** Wpisz  :!  a następnie zewnętrzne polecenie, by je wykonać. **
 
   1. Wpisz znajome polecenie  :  by ustawić kursor na dole ekranu. To pozwala
      na wprowadzenie komendy linii poleceń.
@@ -626,20 +626,20 @@ Uwaga:  Wszystkie polecenia  :  muszą być zakończone <ENTER>.
 		    Lekcja 5.2.: WIĘCEJ O ZAPISYWANIU PLIKÓW
 
 
-	   ** By zachować zmiany w tekści wpisz :w NAZWA_PLIKU . **
+	   ** By zachować zmiany w tekście, wpisz :w NAZWA_PLIKU . **
 
   1. Wpisz  :!dir  lub  :!ls  by zobaczyć spis plików w katalogu.
-     Już wiesz, że musisz wcisnąć <ENTER> po tym.
+     Już wiesz, że musisz po tym wcisnąć <ENTER>.
 
-  2. Wybierz nazwę pliku jaka jeszcze nie istnieje, np. TEST.
+  2. Wybierz nazwę pliku, jaka jeszcze nie istnieje, np. TEST.
 
   3. Teraz wpisz:   :w TEST   (gdzie TEST jest nazwą pliku jaką wybrałeś.)
 
   4. To polecenie zapamięta cały plik (Vim Tutor) pod nazwą TEST.
-     By to sprawdzić wpisz  :!dir  lub  :!ls , żeby znowu zobaczyć listę plików.
+     By to sprawdzić, wpisz  :!dir  lub  :!ls  żeby znowu zobaczyć listę plików.
 
 Uwaga: Zauważ, że gdybyś teraz wyszedł z Vima, a następnie wszedł ponownie
-       poleceniem  vim TEST , plik byłby dokładną kopią tutoriala kiedy go
+       poleceniem  vim TEST , plik byłby dokładną kopią tutoriala, kiedy go
        zapisywałeś.
 
   5. Teraz usuń plik wpisując (MS-DOS):		   :!del TEST
@@ -649,7 +649,7 @@ Uwaga: Zauważ, że gdybyś teraz wyszedł z Vima, a następnie wszedł ponownie
 		    Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU
 
 
-	  ** By zachować część pliku wpisz  v ruch :w NAZWA_PLIKU **
+	  ** By zachować część pliku, wpisz  v ruch :w NAZWA_PLIKU **
 
   1. Przenieś kursor do tego wiersza.
 
@@ -664,26 +664,26 @@ Uwaga: Zauważ, że gdybyś teraz wyszedł z Vima, a następnie wszedł ponownie
   5. Vim zapisze wybrane linie do pliku TEST. Użyj  :!dir  lub  :!ls , żeby to
      zobaczyć. Jeszcze go nie usuwaj! Użyjemy go w następnej lekcji.
 
-UWAGA: Wciśnięcie  v  zaczyna tryb Wizualny. Możesz poruszać kursorem by
-       zmienić rozmiary zaznaczenia. Możesz też użyć operatora by zrobić coś
+UWAGA: Wciśnięcie  v  zaczyna tryb Wizualny. Możesz poruszać kursorem, by
+       zmienić rozmiary zaznaczenia. Możesz też użyć operatora, by zrobić coś
        z tekstem. Na przykład  d  usuwa tekst.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		   Lekcja 5.4.: WSTAWIANIE I ŁĄCZENIE PLIKÓW
 
 
-	    ** By wstawić zawartość pliku wpisz   :r NAZWA_PLIKU **
+	    ** By wstawić zawartość pliku, wpisz   :r NAZWA_PLIKU **
 
   1. Umieść kursor tuż powyżej tej linii.
 
 UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejdź
-       do DOŁU by zobaczyć ponownie tę lekcję.
+       do DOŁU, by zobaczyć ponownie tę lekcję.
 
   2. Teraz wczytaj plik TEST używając polecenia  :r TEST , gdzie TEST
      jest nazwą pliku.
      Wczytany plik jest umieszczony poniżej linii z kursorem.
 
-  3. By sprawdzić czy plik został wczytany cofnij kursor i zobacz, że
+  3. By sprawdzić czy plik został wczytany, cofnij kursor i zobacz, że
      teraz są dwie kopie Lekcji 5.3., oryginał i kopia z pliku.
 
 UWAGA: Możesz też wczytać wyjście zewnętrznego polecenia. Na przykład
@@ -723,14 +723,14 @@ UWAGA: Możesz też wczytać wyjście zewnętrznego polecenia. Na przykład
 
   1. Przenieś kursor do linii poniżej oznaczonej --->.
 
-  2. Wpisz  o  (małe) by otworzyć linię PONIŻEJ kursora i przenieść się
+  2. Wpisz  o  (małe), by otworzyć linię PONIŻEJ kursora i przenieść się
      do trybu Insert (wprowadzanie).
 
   3. Wpisz trochę tekstu i wciśnij <ESC> by wyjść z trybu Insert (wprowadzanie).
 
 ---> Po wciśnięciu  o  kursor znajdzie się w otwartej linii w trybie Insert.
 
-  4. By otworzyć linię POWYŻEJ kursora wciśnij wielkie  O  zamiast małego
+  4. By otworzyć linię POWYŻEJ kursora, wciśnij wielkie  O  zamiast małego
      o . Wypróbuj to na linii poniżej.
 
 ---> Otwórz linię powyżej wciskając SHIFT-O gdy kursor będzie na tej linii.
@@ -747,9 +747,9 @@ UWAGA: Możesz też wczytać wyjście zewnętrznego polecenia. Na przykład
 
   2. Wciskaj  e  dopóki kursor nie będzie na końcu li .
 
-  3. Wpisz  a  (małe) aby dodać tekst ZA znakiem pod kursorem.
+  3. Wpisz  a  (małe), aby dodać tekst ZA znakiem pod kursorem.
 
-  4. Dokończ wyraz tak jak w linii poniżej. Wciśnij <ESC> aby opuścić tryb
+  4. Dokończ wyraz tak, jak w linii poniżej. Wciśnij <ESC> aby opuścić tryb
      Insert.
 
   5. Użyj  e  by przejść do kolejnego niedokończonego wyrazu i powtarzaj kroki
@@ -758,7 +758,7 @@ UWAGA: Możesz też wczytać wyjście zewnętrznego polecenia. Na przykład
 ---> Ta li poz Ci ćwi dodaw teks do koń lin
 ---> Ta linia pozwoli Ci ćwiczyć dodawanie tekstu do końca linii.
 
-Uwaga:  a ,  i  oraz  A  prowadzą do trybu Insert, jedyną różnicą jest miejsce
+Uwaga:  a ,  i  oraz  A  prowadzą do trybu Insert, jedyną różnicą jest miejsce,
        gdzie nowe znaki będą dodawane.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		   Lekcja 6.3.: INNA WERSJA REPLACE (zamiana)
@@ -791,16 +791,16 @@ UWAGA: Tryb Replace jest jak tryb Insert, ale każdy znak usuwa istniejący
 
   1. Przejdź do linii oznaczonej ---> i umieść kursor za "a)".
 
-  2. Wejdź w tryb Visual  v  i przenieś kursor na początek "pierwszy".
+  2. Wejdź w tryb Wizualny  v  i przenieś kursor na początek "pierwszy".
 
-  3. Wciśnij  y  aby yankować (kopiować) podświetlony tekst.
+  3. Wciśnij  y  aby kopiować (yankować) podświetlony tekst.
 
   4. Przenieś kursor do końca następnej linii:  j$
 
-  5. Wciśnij  p  aby wpakować (paste) tekst.  Dodaj:  a drugi<ESC> .
+  5. Wciśnij  p  aby wkleić (wpakować) tekst.  Dodaj:  a drugi<ESC> .
 
-  6. Użyj trybu Wizualnego aby wybrać " element.", yankuj go  y , przejdź do
-     końca następnej linii  j$ i upakuj tam tekst z  p .
+  6. Użyj trybu Wizualnego, aby wybrać " element.", yankuj go  y , przejdź do
+     końca następnej linii  j$  i upakuj tam tekst z  p .
 
 --->  a) to jest pierwszy element.
       b)
@@ -810,7 +810,7 @@ Uwaga: możesz użyć  y  jako operatora;  yw  kopiuje jeden wyraz.
 			 Lekcja 6.5.: USTAWIANIE OPCJI
 
 
-** Ustawianie opcji tak by szukaj lub substytucja ignorowały wielkość liter **
+** Ustawianie opcji tak, by szukaj lub substytucja ignorowały wielkość liter **
 
   1. Szukaj 'ignore' wpisując:    /ignore<ENTER>
      Powtórz szukanie kilka razy naciskając klawisz  n .
@@ -828,7 +828,7 @@ Uwaga: możesz użyć  y  jako operatora;  yw  kopiuje jeden wyraz.
 
   6. Aby wyłączyć ignorowanie wielkości liter:  :set noic
 
-Uwaga: Aby usunąć podświetlanie dopasowań wpisz:   :nohlsearch
+Uwaga: Aby usunąć podświetlanie dopasowań, wpisz:   :nohlsearch
 Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c<ENTER>
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			     LEKCJA 6. PODSUMOWANIE
@@ -837,36 +837,36 @@ Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c<ENTER>
   1. Wpisanie  o  otwiera linię PONIŻEJ kursora.
      Wpisanie  O  otwiera linię POWYŻEJ kursora.
 
-  2. Wpisanie  a  by wstawić tekst ZA znakiem na, którym jest kursor.
+  2. Wpisanie  a  wstawia tekst ZA znakiem, na którym jest kursor.
      Wpisanie  A  dodaje tekst na końcu linii.
 
   3. Polecenie  e  przenosi do końca wyrazu.
-  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja, paste) go.
+  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja) go.
   5. Wpisanie wielkiego  R  wprowadza w tryb Replace (zamiana) dopóki
      nie zostanie wciśnięty <ESC>.
-  6. Wpisanie ":set xxx" ustawia opcję "xxx". Nietkóre opcje:
+  6. Wpisanie ":set xxx" ustawia opcję "xxx". Niektóre opcje:
 	'ic'  'ignorecase'	ignoruj wielkość znaków
 	'is'  'incsearch'	pokaż częściowe dopasowania
 	'hls' 'hlsearch'	podświetl wszystkie dopasowania
-     Możesz użyć zarówno długiej jak i krótkiej formy.
-  7. Dodaj "no" aby wyłączyć opcję:   :set noic
+     Możesz użyć zarówno długiej, jak i krótkiej formy.
+  7. Dodaj "no", aby wyłączyć opcję:   :set noic
 
 
 
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			LEKCJA 7.1. JAK UZYSKAĆ POMOC
+			 LEKCJA 7.1. JAK UZYSKAĆ POMOC?
 
 		      ** Użycie systemu pomocy on-line **
 
-  Vim posiada bardzo dobry system pomocy on-line. By zacząć spróbuj jednej
+  Vim posiada bardzo dobry system pomocy on-line. By zacząć, spróbuj jednej
   z trzech możliwości:
 	- wciśnij klawisz <HELP> (jeśli taki masz)
 	- wciśnij klawisz <F1> (jeśli taki masz)
 	- wpisz   :help<ENTER>
 
-  Przeczytaj tekst w oknie pomocy  aby dowiedzieć się jak działa pomoc.
+  Przeczytaj tekst w oknie pomocy, aby dowiedzieć się jak działa pomoc.
   wpisz CTRL-W CTRL-W    aby przeskoczyć z jednego okna do innego
   wpisz :q<ENTER>        aby zamknąć okno pomocy.
 
@@ -894,10 +894,10 @@ Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c<ENTER>
   3. Zapisz plik:
      :w
 
-  Następnym razem gdy zaczniesz pracę w Vimie będzie on używać podświetlania
+  Następnym razem, gdy zaczniesz pracę w Vimie będzie on używać podświetlania
   składni. Możesz dodać wszystkie swoje ulubione ustawienia do tego pliku
   "vimrc".
-  Aby uzyskać więcej informacji wpisz     :help vimrc-intro
+  Aby uzyskać więcej informacji, wpisz     :help vimrc-intro
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			  Lekcja 7.3.: UZUPEŁNIANIE
@@ -907,11 +907,11 @@ Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c<ENTER>
 
   1. Upewnij się, że Vim nie jest w trybie kompatybilności:   :set nocp
 
-  2. Zerknij jakie pliki są w bieżącm katalogu:   :!ls   lub   :!dir
+  2. Zerknij, jakie pliki są w bieżącym katalogu:   :!ls   lub   :!dir
 
   3. Wpisz początek polecenia:   :e
 
-  4. Wciśnij  CTRL-D  i Vim pokaże listę poleceń jakie zaczynają się na "e".
+  4. Wciśnij  CTRL-D  i Vim pokaże listę poleceń, jakie zaczynają się na "e".
 
   5. Wciśnij  <TAB>  i Vim uzupełni polecenie do ":edit".
 
@@ -925,7 +925,7 @@ UWAGA: Uzupełnianie działa dla wielu poleceń. Spróbuj wcisnąć CTRL-D i <TAB>.
 			    Lekcja 7. PODSUMOWANIE
 
 
-  1. Wpisz  :help  lub wciśnij <F1> lub <Help> aby otworzyć okno pomocy.
+  1. Wpisz  :help  albo wciśnij <F1> lub <Help> aby otworzyć okno pomocy.
 
   2. Wpisz  :help cmd  aby uzyskać pomoc o  cmd .
 
@@ -945,14 +945,14 @@ UWAGA: Uzupełnianie działa dla wielu poleceń. Spróbuj wcisnąć CTRL-D i <TAB>.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  Tutaj się kończy tutorial Vima. Został on pomyślany tak aby dać krótki
+  Tutaj się kończy tutorial Vima. Został on pomyślany tak, aby dać krótki
   przegląd jego możliwości, wystarczający byś mógł go używać. Jest on
-  daleki od kompletności ponieważ Vim ma o wiele, wiele więcej poleceń.
+  daleki od kompletności, ponieważ Vim ma o wiele, wiele więcej poleceń.
 
   Dla dalszej nauki rekomendujemy książkę:
 	Vim - Vi Improved - autor Steve Oualline
 	Wydawca: New Riders
-  Pierwsza ksiązka całkowicie poświęcona Vimowi. Użyteczna zwłaszcza dla
+  Pierwsza książka całkowicie poświęcona Vimowi. Użyteczna zwłaszcza dla
   początkujących. Zawiera wiele przykładów i ilustracji.
   Zobacz http://iccf-holland.org./click5.html
 
@@ -960,7 +960,7 @@ UWAGA: Uzupełnianie działa dla wielu poleceń. Spróbuj wcisnąć CTRL-D i <TAB>.
   polecenia:
 	Learning the Vi Editor - autor Linda Lamb
 	Wydawca: O'Reilly & Associates Inc.
-  To dobra książka by dowiedzieć się niemal wszystkiego co chciałbyś zrobić
+  To dobra książka, by dowiedzieć się niemal wszystkiego, co chciałbyś zrobić
   z Vi. Szósta edycja zawiera też informacje o Vimie.
 
   Po polsku wydano:
@@ -991,4 +991,5 @@ UWAGA: Uzupełnianie działa dla wielu poleceń. Spróbuj wcisnąć CTRL-D i <TAB>.
   rev. Marzec 2002
   2nd rev. Wrzesień 2004
   3rd rev. Marzec 2006
+  4th rev. Grudzień 2008
   Wszelkie uwagi proszę kierować na: mikmach@wp.pl
--- a/runtime/vimrc_example.vim
+++ b/runtime/vimrc_example.vim
@@ -1,7 +1,7 @@
 " An example for a vimrc file.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2008 Jul 02
+" Last change:	2008 Dec 17
 "
 " To use it, copy it to
 "     for Unix and OS/2:  ~/.vimrc
@@ -14,7 +14,7 @@ if v:progname =~? "evim"
   finish
 endif
 
-" Use Vim settings, rather then Vi settings (much better!).
+" Use Vim settings, rather than Vi settings (much better!).
 " This must be first, because it changes other options as a side effect.
 set nocompatible