]> granicus.if.org Git - vim/commitdiff
Update runtime files.
authorBram Moolenaar <Bram@vim.org>
Wed, 6 Jan 2010 19:54:52 +0000 (20:54 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 6 Jan 2010 19:54:52 +0000 (20:54 +0100)
227 files changed:
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 [new file with mode: 0644]
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 [new file with mode: 0644]
runtime/indent/eiffel.vim
runtime/indent/eruby.vim
runtime/indent/gitconfig.vim
runtime/indent/mail.vim [new file with mode: 0644]
runtime/indent/php.vim
runtime/indent/ruby.vim
runtime/indent/sh.vim
runtime/indent/xml.vim
runtime/keymap/dvorak.vim [new file with mode: 0644]
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 [new file with mode: 0644]
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 [new file with mode: 0644]
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 [new file with mode: 0644]
runtime/syntax/taskedit.vim [new file with mode: 0644]
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 [new file with mode: 0644]
runtime/tutor/tutor.bj.utf-8 [new file with mode: 0644]
runtime/tutor/tutor.eo [new file with mode: 0644]
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 [new file with mode: 0644]
runtime/tutor/tutor.nb.utf-8 [new file with mode: 0644]
runtime/tutor/tutor.pl
runtime/tutor/tutor.pl.cp1250
runtime/tutor/tutor.pl.utf-8
runtime/vimrc_example.vim

index ffd0ff84ccc144c62a622c470c0805c5f65de496..8f525f48661962d65456aaf1dbc6a35683a7c16a 100644 (file)
@@ -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.
index 8db4351ffd854e1fee0be3fe0007517e40bffb83..2659f51d5c52a4e37bb4c75327b527cae32313df 100644 (file)
@@ -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.
index fb5400e179febf568c140a656e49f03e55394fee..7741ff05728459dfbe39641c34c8d0c227f24427 100644 (file)
@@ -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
index 5a466cb88b899b3cd272c49fecd5d6c6599890b1..6e019764f341c666b8e796c95ca2a5967581702d 100644 (file)
@@ -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
 "
 " 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_allowautoinstall
   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
-
-  " record current directory, change to datadir, open split window with
-  " datafile
+  " 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
+
+  " 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= ""
 
+  " 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.">")
 
-   " 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
-
    " 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)
-
-     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
-
-     let curline = curline + 1
-     exe curline
+    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.">")
+
+    " 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)
+
+    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
@@ -599,20 +634,6 @@ fun! s:GetOneScript(...)
 "  call Dret("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
index cebde8e1a41bcc7a71a76d9618201b8f5dbf7797..0def6723b2748a9a78fa4738212faec184130ded 100644 (file)
@@ -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
index 1e181d05d175571f0c7e592c9bdcd7b523c669c5..dff8afd859fc35bee08519af79e29d02e86af105 100644 (file)
@@ -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,
 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
@@ -44,26 +50,42 @@ setlocal cpo&vim
 "  Netrw Variables: {{{1
 " ======================
 
+" ---------------------------------------------------------------------
+" 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
-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
- else
-  let g:netrw_mousemaps= 0
- 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 "
+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
- 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"
+ call s:NetrwInit("g:netrw_chgperm"       , "chmod PERM FILENAME")
 endif
+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")
- 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
+ if has("unix")
+  let g:netrw_sort_sequence= '[\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
+ else
+  let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
  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
-    else
-     put ='open '.g:netrw_machine
+    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
-    put ='user '.g:netrw_uid.' '.s:netrw_passwd
-    put ='get '.netrw_fname.' '.tmpfile
-    put ='quit'
+    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
+     " 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
+     " 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('.'))
@@ -1152,6 +1133,12 @@ fun! netrw#NetWrite(...) range
     else
      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('.'))
@@ -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, method)
    " 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, method)
 "   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: method machine id passwd fname
   " 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: method machine id passwd fname
    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: method machine id passwd fname
 
   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"
+    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
+   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("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
+   " 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("NetrwBookHistHandler")
+endfun
 
-   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
+" ---------------------------------------------------------------------
+" 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
-     let cnt= cnt + 1
-    endwhile
+    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
-  call s:NetrwBookmarkMenu()
-"  call Dret("NetrwBookmarkDir")
+  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 $
@@ -2633,6 +2783,29 @@ fun! s:NetrwListStyle(islocal)
 "  call Dret("NetrwListStyle".(exists("w:netrw_liststyle")? ' : w:netrw_liststyle='.w:netrw_liststyle : ""))
 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
@@ -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
 
@@ -3059,20 +3318,73 @@ fun! netrw#NetrwBrowseX(fname,remote)
 "  call Dret("NetrwBrowseX")
 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
+"   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
@@ -3456,6 +3784,24 @@ fun! netrw#Explore(indx,dosplit,style,...)
 "  call Dret("netrw#Explore : @/<".@/.">")
 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
@@ -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\+'
@@ -3534,6 +3878,41 @@ fun! s:NetrwHidden(islocal)
 "  call Dret("s:NetrwHidden")
 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)
@@ -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
+    " 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
-  exe "keepjumps ".w:netrw_bannercnt
 
   " 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)')
+"    call Decho("s:netrwmftgt does not exist, don't make Copy/Move Tgt")
    endif
-   let w:netrw_bannercnt= w:netrw_bannercnt + 1
-  else
-"   call Decho("s:netrwmftgt does not exist, don't make Copy/Move Tgt")
+   exe "keepjumps ".w:netrw_bannercnt
   endif
-  exe "keepjumps ".w:netrw_bannercnt
 
   " 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
+  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
-   let w:netrw_bannercnt= w:netrw_bannercnt + 1
+   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
-  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
 
   " 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
-     endif
      exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
+     call histdel("/",-1)
+     endif
     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) range
     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) range
     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
 
index 5fb05bad3ea47148d8b74dcc35c25bfb9bbf9062..1515b0098b9bd99da76f25e709fc2595e74778c2 100644 (file)
@@ -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,
 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")
index c0704d4ef40722c9dfcbd1a36b483511f7b59ecc..38f7299569bf0aa50133902325f28561949fb074 100644 (file)
@@ -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
 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("$")
index 87e6c9a0fb028ca1a242845d98c06458f77d3b4b..86baa0d272cbe8037148a8718b1360089e789ad7 100644 (file)
@@ -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>
index 9979f1bd09d42d5eb1fae17512a7e21259bc21ea..534acc615add79d5fb7af653b1887faa46658387 100644 (file)
@@ -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
index eecb3260febc888a12a2493c908bf7f641ca4fb4..aae92e61469b556f456702f0fe21fd360245af91 100644 (file)
@@ -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, base)
             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, base)
         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, base)
     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
 
index af6fbca2e1b313a89bae159944a6b3753dab64b3..3e44579ce19ee779f488dcb6fd9a4a4a698c812c 100644 (file)
@@ -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,
 "               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
-let s:keepcpo= &cpo
-set cpo&vim
-if &cp || exists("g:loaded_tar") || v:version < 700
+if &cp || exists("g:loaded_tar")
  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"
+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
+"call Decho("loading autoload/tar.vim")
 
 " ---------------------------------------------------------------------
 "  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,21 +378,26 @@ 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.">")
@@ -377,7 +405,6 @@ fun! tar#Write(fname)
   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
index 4f6292b9c090f458091d548cc55495ee15a52f23..b97c3a53440ab46113400b606566a8462050628d 100644 (file)
@@ -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.
 
 " ---------------------------------------------------------------------
 "  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,writelevel,...) range
    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,writelevel,...) range
    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
 
@@ -742,21 +732,6 @@ fun! vimball#RestoreSettings()
 "  call Dret("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
index cdde62b1a4131bb5693390ecf46a2d393fa389b4..7166220f2626d9357d4f13c152ca7bbd5923794c 100644 (file)
@@ -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
index 4c777fe7e011b975e9018575f0be066b38846943..8e267ece1399257996690c24a5cdc28a04b34c73 100644 (file)
@@ -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
index 44194f5c94dfefbdd0b24afa979d23a911ab8b88..1a6813624c5005dd5bc2c4c36cfc2a6c797b1ffc 100644 (file)
@@ -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>
index 94018e7f2ec642ce9fb834b91beadeb61a24fb15..744ce6a334e8928898de0d6bf2214e53895077df 100644 (file)
@@ -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
index a62415f6b27eb46299c892b714c0e7435208ae3d..75c596c7ef4a2f3d3077e0ddc0ef347e8042c5c0 100644 (file)
@@ -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',
index ad1697a061c23ae10398e639ed90ffcfeb3e3b62..d7ec55b97dd1c78ed9085bb4125aed3301384b1e 100644 (file)
@@ -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
index 8566969ac05edd04c1583f06e8444e3cad9ac7bb..5125128535f17423741d8cdcc4cdba9d96a09340 100644 (file)
@@ -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
index 19c410f81371808ada7033d57b82a69ef7a638b4..c185bc79d358ebf6057fdbb5b49771f1dd5e2ba2 100644 (file)
@@ -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>
index 9607f75faf5fc5416e069a7d3910f40b30967f0c..ff3b3c702c0881a44e23e159cf8322fc1118e6bf 100644 (file)
@@ -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>
index 74a6f0196785fdcd4e55859d1cfcc961aeb890e4..dd5d4cb81a06dab6c33a1946b4a5ef4e5a430e62 100644 (file)
@@ -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>
index 5ba5e036dddc1c423db466ac857434e0ff87cfa7..6239ca71396036a076533df68afa652a1e4f88c8 100644 (file)
@@ -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
index c34510edb0450d3a13b3eef2b0b3bb4f3a193cbb..5665cc293cee3f53a3aa967158e62972d00e04a4 100644 (file)
@@ -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 ant
 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:FTheader()
 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 factor
 " 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 gdb
 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 java
 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,*.rjs      setf ruby
 " 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:FTRules()
 
 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,_exrc    setf vim
 " 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')
 
index 17985b33278e6f45f069f28b0246a1088321bbb2..873b9bfaeea20baee52e72746931a1d92b7b1177 100644 (file)
@@ -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\\\|NSET\\\|ELSET\\)\\s*=
 " 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() range
     endif
 endfunction
 
+let b:undo_ftplugin .= "|unmap <buffer> [[|unmap <buffer> ]]"
+    \ . "|unmap <buffer> <LocalLeader><LocalLeader>"
+
 " Restore saved compatibility options
 let &cpoptions = s:cpo_save
index 045645ddaf21ba33662705faaf623bde4922d50e..091181fd992c9f7b35755ddf6d4120d2aa1c8d73 100644 (file)
@@ -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.
index d45ef3bb25e06afeb5d423771f406589bc6ee731..648fca1be9552bb8c9a42b3e4fff7559fbb06a3f 100644 (file)
@@ -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
 
index e3bc70980e5e4edb6a8308d5e6babbf581d5cd02..2b841efcffcbeb64923b13a48896b820d47036d6 100644 (file)
@@ -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
 
index 973e342b93f9332ffa959f0ba2b1aff93cb9f08f..5e65aac31c5ef140e81a020ba3384c632ae79489 100644 (file)
@@ -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
index 924d35daedc990ece9091c46a8ef9a2093f35112..30cd7b5d496b159347ed5097a614e62910865d64 100644 (file)
@@ -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
 
-      " 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
-      endif
+  function! s:login()
+    return s:trimmed_system_with_default('whoami', 'unknown')
+  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
+  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
+
+  function! s:name(login)
+    for name in [s:gecos_name(a:login), $NAME, s:capitalize(a:login)]
+      if name != ""
+        return name
       endif
+    endfor
+  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
+  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
 
-      " And finally set the username.
-      let g:changelog_username = name . '  <' . login . '@' . hostname . '>'
+  function! s:try_reading_file(path)
+    try
+      return readfile(a:path)
+    endtry
+    return []
+  endfunction
+
+  function! s:passwd_field(line, field)
+    let fields = split(a:line, ':', 1)
+    if len(fields) < field
+      return ""
     endif
-  endif
+    return fields[field - 1]
+  endfunction
+
+  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
index 443ea68d202a85bc4b14cf12a3e741a42ba26e9c..203d7347505332a779a2e7cfb4eea120cc83a3fc 100644 (file)
@@ -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: < > << >> [[ ]] [] ][
index 427d0ed70c7236620acde00845ec00dd16080b79..df607b1b1e5f31d99c4f5f2b374a44ba1939b91c 100644 (file)
@@ -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
 
index d9f901086f0227fba84e77730b89b17ce22f1f21..ac02088105152e6d11a2e881d43843d6b8c97ca2 100644 (file)
@@ -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
index d053cbbdebbf04506d2afc2835714dfc294a2ddf..3f89c72c20fe107f43d12e6d12d9a2a778dbf128 100644 (file)
@@ -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
index 91d57d9bab4b688c4ca1448e2aa7d335bcc66278..6e581e7e0f9fa730f348e2c13086f8f1e4e92665 100644 (file)
@@ -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
index 3b15bda3c4710e2b6a99671084add220673067e3..eed5ca6ac4c654da990e9275e7220f22531fec84 100644 (file)
@@ -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
index 802f596e3d3a18dd808c0f7fc498d48a9b68ba3d..9e121c20ba09121630b7110a21dfe9159da2c6bc 100644 (file)
@@ -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>
index 9ac1aa1517c682d0feb4934583a65632e5e84e53..63d4f338ed31d20c62953fa09e1fa511df09a959 100644 (file)
@@ -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:git_dir') && b:git_dir != ''
 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<"
index bfc5b33f285932a9568ece616579cbfe50da62ba..f8788c8444b1f3e9a70376a50352382d4dc2c765 100644 (file)
@@ -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"))
index ee33baff2345bacaa8e99f9be6f87c898f726f41..833b8b14b2479940bc04383fcc6c8a5c7c9f603a 100644 (file)
@@ -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"))
index 6e0e6c19c5daef2888170303458c6b043e8f13a8..4680d285e778dd9be59caba322364eaeb79a9994 100644 (file)
@@ -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>
index a83e48afff322bf00029202b62623e0e5536ae2e..8fb436e1819fa269c1efed342498254f2f8b79a3 100644 (file)
@@ -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
index 6c8607d92b3f4261aba00b32c458f91ddef0583a..5f1384b3e4f4b150f7f7e323ac0c2df7b926fa87 100644 (file)
@@ -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
index 96e62c692ad3fd45d801d6a51cb9e0d2a790c69b..6c7b3671ce0d982711c6f5c0de317fc18ff7e56b 100644 (file)
@@ -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
index 4987cc5c5dee1063d1b58c85b59893404ef5323f..9c0eb9687bbabdf881bd7f6d7b91c7a0052dd17f 100644 (file)
@@ -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
 
index 34e1d3c22fc4d3183c67771dd23734c05625b422..4a4c85195c51fd6711c2deac5b85a5512b5254d1 100644 (file)
@@ -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')
index a58d2977a93a976f0a3bb667f6a073c6dcdd7c95..eef0628a04c0c266a26749d16966f1e128588b7f 100644 (file)
@@ -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.
index c138dda9cada4404c4d94f1c8627e897fc84e1a8..3b1db4abdc9b37f3311742fc27085e460ebd28dc 100644 (file)
@@ -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
index 3771005644d677887835f20ad4dca6234b807356..318e70ff976244b0431a62d868eca8dba511635f 100644 (file)
@@ -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
index c9a0bc72fc5942e92f805172696f7d127314860f..f59cf122f47e82fe6d99070ea2bb40f810eaeb6e 100644 (file)
@@ -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
 
index 1d4347a9a708f150186d7c2c1f1276689d65cb0e..7dfdfb5ad7f16ec6dd3d0d91f5ef40f46ff3da91 100644 (file)
@@ -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>
index 4a19ddae741d9c1a32269dffeb284a615089d95e..a07d31f0855e747dda6b28f3ff11a06fd5768bcb 100644 (file)
@@ -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
 
index 183215a129b110ebed8bf4bc41600f3483310116..076b5efdabbc616c837ed0d4eda736a1bf74c3d3 100644 (file)
@@ -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
index 9f40b019af5da1970a34336a9db61ba51aa065cf..f41fb5b20a9d1380c60b8a00d11fd0b02376c1e1 100644 (file)
@@ -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:
 "
 " 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 != ""
index 4544172d0579dad87602c3804b2ff28f4e7c0bc7..f8a0d6200a0132eb733bea847b5a750a7a1d6dab 100644 (file)
@@ -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
 
diff --git a/runtime/ftplugin/tcl.vim b/runtime/ftplugin/tcl.vim
new file mode 100644 (file)
index 0000000..c5bc303
--- /dev/null
@@ -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:
index 4c724e68b37f0dfac8c39c086b98f2189cb3ae11..dacb44e719907ab9958a60e1263278733c326914 100644 (file)
@@ -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
 
index 1d37d601acf5df9214f3cec8ba3bf8675f3cdd09..6594f2ea90f48b0c228a8cf8ef3e9d1ef0604c67 100644 (file)
@@ -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
index ca66597d8a326c2981db554358dd50837d488f63..de8a047982c5466c2425812243561afed48e51f6 100644 (file)
@@ -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 \)
index e03407be5e9c8eae518c12500ebd51fc755b9d0c..a50ed925b1481d3a061b5c7cd4572884ffecf292 100644 (file)
@@ -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
 
index 55d9ee6c5bfbb5cfca5b1fff5a9db6190065216d..74cd064eed7c3fd6fe2f37784a7e4b4a35228b58 100644 (file)
@@ -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
index 1cd7adc7642f1f78ba864053d1461960a03b4d3d..b0337603c1a92d8d49039e49f65d9acb87825755 100644 (file)
@@ -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
 
index 958043274b7b1b149ff2ab672df37be09172fceb..1a5ee628651d10522f4f667c8521c0f491f6a6cc 100644 (file)
@@ -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
 
index e56aaffecfc66eeaae20998ec069c02416aba66c..a9b461ccc5d9e1ae074164a50185312dda415964 100644 (file)
@@ -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
index 5933d80673d0b58fde96611714ec797c43cecc27..be1f63e8e98da8996865beffc67c9e22009812f6 100644 (file)
@@ -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
index b54a8d87a2fd8042917c0b2d00a7fb9ca383bcf9..4315ad23afa6e51e4fa8ac79327780f124a90b92 100644 (file)
@@ -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
index 9ed8a470edf0d103bc24df396c9b4d1e9ebcc7eb..8dce3cd01460a23141e374790aa806abc3f2a50f 100644 (file)
@@ -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
index 9ae126ac4d3890cb4f054215f294ef2764bc565b..ffa37d72083daa0ff843c8b775b07f9d976cf2c0 100644 (file)
@@ -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<"
diff --git a/runtime/indent/cuda.vim b/runtime/indent/cuda.vim
new file mode 100644 (file)
index 0000000..68ee9ce
--- /dev/null
@@ -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<"
index 895945939eddb2e775556362c7f3ea31cbddcf4f..db66bf8fea6c85f318b1d848681694fb6b990ff3 100644 (file)
@@ -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)
 
index 31cbb8b011c3e3ed1e6278156b9b8212e384d448..931eaac3859ebc42ebdc699ad5da3baf9530fc88 100644 (file)
@@ -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>
index 7ce0c715bd8374421ef05aa2f3f9e1fc7b120604..28d95b7cd2e1efc74e5634c8f1e222d260e7c620 100644 (file)
@@ -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
diff --git a/runtime/indent/mail.vim b/runtime/indent/mail.vim
new file mode 100644 (file)
index 0000000..6246b40
--- /dev/null
@@ -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=
index 6124eb2f6637d7886be4804b9640288b8c2c03e6..9f1a1ed9d3993aeb22535bc67cdf530a1fb2d895 100644 (file)
@@ -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
 "      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.
+" 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_default_indenting = # of sw (default is 0), # of sw will be
-"                 added to the indent of each line of PHP code.
+"      :%s /\r$//g
 "
-" 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!
-"
-" Options: PHP_BracesAtCodeLevel = 1 to indent the '{' and '}' at the same
-"                 level than the code they contain.
-"                 Exemple:
-"                      Instead of:
-"                              if ($foo)
-"                              {
-"                                      foo();
-"                              }
-"
-"                      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
+"      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: See :help php-indent for available options.
+
 
 if exists("b:did_indent")
     finish
@@ -145,6 +107,7 @@ if &fileformat == "unix" && exists("PHP_removeCRwhenUnix") && PHP_removeCRwhenUn
 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
index 8a56e54c07c08de852187eb421fa15e8c57c9da9..4a3012f94fbd764a5e1fb61bceb53b943b789bbc 100644 (file)
@@ -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>
index 483e5430ecf96f50e0af08fe85a87b3967d8dbe1..49146c7e377d8a1b0e2fb6be0c152fcce0623f6b 100644 (file)
@@ -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
index 340981b3dd5dfb3c4840d54ce5bbf98ba5826a4d..4ac35b6af159d7973d004de55b79845095554365 100644 (file)
@@ -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
 
diff --git a/runtime/keymap/dvorak.vim b/runtime/keymap/dvorak.vim
new file mode 100644 (file)
index 0000000..77dc530
--- /dev/null
@@ -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
+{      ?
+}      +
+|      |
+-      [
+_      {
+=      ]
++      }
+
index 3aefac6d91daebe84cbf40d74dd7aef7c965a412..a5bc82e967a09d580060a3e4fbc8ac4520034994 100644 (file)
@@ -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")
index c63c1ab23c73e19c6fec75e3f0ebd31911cd5aad..4f21e8921006342c2c3d15da27e22bcf9c17cace 100644 (file)
@@ -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")
index 9f39922957125a5a664163133361ea26581864bd..f2faec90defb7a25502f23e91c009e1122533f92 100644 (file)
@@ -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")
index 8001100451984d1f5b0b8f9d920754e6efbd7607..b943e230adc14d786eeeb6e8299565dd83733b53 100644 (file)
@@ -1,7 +1,8 @@
 " Menu Translations:   Español
-" Maintainer:          Alejandro López-Valencia <dradul@users.sourceforge.net>
-" Version:             6.4.p0-1
-" Last Change:         2005 Dec 01
+" Previous translator: Alejandro López-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\ ni
 menutrans Co&pying             &Términos\ de\ Licencia
 menutrans Sponsor/Register     Benefactor/Regístrese
 menutrans &Version             &Versión\ e\ \información\ de\ configuración
-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&taña\.\.\.<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       Buscar\ y\ R&eemplazar<Tab>:%s
 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\ mayúsculas\ y\ minúsculas<Tab>:set\ ic!
 menutrans Toggle\ &Showmatch<Tab>:set\ sm!             Activar/Desactivar\ &mostrar\ coincidencias<Tab>:set\ sm!
 
@@ -95,11 +98,11 @@ menutrans Toggle\ &Bottom\ Scrollbar        Ocultar/Mostrar\ barra\ de\ desplazamiento\
 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 búsqueda 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 búsqueda 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\ &numeración\ de\ líneas<Tab>:set\ nu!
@@ -118,8 +121,8 @@ menutrans Soft\ &Tabstop            &Tabulado\ 
 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 línea): "
 
-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\ &atrás<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\ compilador\ a\ usar
 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                            Corrección\ ortográfica
+menutrans &Spell\ Check\ On                    &Activar\ corrección\ ortográfica
+menutrans Spell\ Check\ &Off                   &Desactivar\ corrección\ ortográfica
+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\ &corrección<Tab>z=
+menutrans &Repeat\ correction<Tab>:spellrepall &Repetir\ corrección<Tab>:spellrepall
+an 40.335.205 &Tools.&Spelling.Castellano\ (es)        :set spl=es spell<CR>
+menutrans Set\ language\ to\ "en"              Inglés
+menutrans Set\ language\ to\ "en_au"           Inglés\ (en_au)
+menutrans Set\ language\ to\ "en_ca"           Inglés\ (en_ca)
+menutrans Set\ language\ to\ "en_gb"           Inglés\ (en_gb)
+menutrans Set\ language\ to\ "en_nz"           Inglés\ (en_nz)
+menutrans Set\ language\ to\ "en_us"           Inglés\ (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\ línea\ del\ cursor<Tab>zv
@@ -182,7 +203,7 @@ menutrans Fold\ Met&hod                             &M
 " 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<Tab>^Wn
 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 intérprete 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\ ficher
+menutrans &Show\ filetypes\ in\ menu   &Mostrar\ listas\ de\ «tipo\ de\ archiv
 menutrans Set\ '&syntax'\ only         Activar\ sólo\ sintaxis
-menutrans Set\ '&filetype'\ too                Activar\ también\ «tipo\ de\ ficher
+menutrans Set\ '&filetype'\ too                Activar\ también\ «tipo\ de\ archiv
 menutrans &Off                         &Desactivar\ sintaxis
-menutrans &Manual                      sintaxis\ &manual
-menutrans A&utomatic                   sintaxis\ a&utomática
-menutrans on/off\ for\ &This\ file     Activar/Desactivar\ en\ es&te\ fichero
+menutrans &Manual                      Sintaxis\ &manual
+menutrans A&utomatic                   Sintaxis\ a&utomática
+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
index b8fa6258932f571ede52d31bb7933225dfb6a46d..5e2851ee9e0252c7e128a4e859dace7e645e198b 100644 (file)
@@ -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")
index 8e507d5fb4fdf75587c0b5cbe53844f62bd0f7df..d0b1cc0b956823f33dabee0df25d83655f5815a1 100644 (file)
@@ -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")
index 26a959a94be88b17557ddca4cbfbe64722af0a5a..b67d0cc32135152173d9c80e6ac06f649c2b82df 100644 (file)
@@ -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
index 295b016e5befc55501896758a096d4edfa403968..37cd9353b9a9e99c3c4a41e02abbb86e8bb07333 100644 (file)
@@ -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>,
index d471fd5efb16323da89d3b980dfcbb7911cb8af3..b7261526aa346255ff68d06302330d009b48ddc7 100644 (file)
@@ -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>,
index e41cda9e17a534177e2092e48aa6b5f23de86046..549c26cf31d7044af06bd4d40878c4feb96f21fc 100644 (file)
@@ -357,7 +357,7 @@ fun! s:InsertRefs(groupBR, prefix, group, suffix, matchline)
       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
index fab890e68e51c26d3308971a94dad006587765d0..b7eccea301129d64ebd9d53636920758d06686c7 100644 (file)
@@ -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
index 4fd36db5965a41c6243bed26f76d98be5e114924..7ae35cb41c470b32021e1e79f8cdf25bd3815bbe 100644 (file)
@@ -19,7 +19,7 @@ if &cp || exists("g:loaded_getscriptPlugin")
  endif
  finish
 endif
-let g:loaded_getscriptPlugin = "v31"
+let g:loaded_getscriptPlugin = "v32"
 let s:keepcpo                = &cpo
 set cpo&vim
 
index 656023871997a70b640f9f4e52b727fc05aa2df2..16e4f8fa03409b1d28484ac546e63dae033d0c1e 100644 (file)
@@ -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
index f38e4819d6b3ca18b507bbdc239078f8f4487d54..d5a0ac5a97fc93321880755e18c672143bb87f3d 100644 (file)
@@ -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 | unlet! g:loaded_matchparen |
          \ au! matchparen
 command! DoMatchParen runtime plugin/matchparen.vim | windo doau CursorMoved
 
-let &cpo = cpo_save
+let &cpo = s:cpo_save
+unlet s:cpo_save
index 7d2ca0bbb360816822cbb501b8b82c15a8498461..13798b03f28242365ad238eeb89ce0c359b176ce 100644 (file)
@@ -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
 "  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
@@ -155,24 +152,6 @@ fun! NetUserPass(...)
 "  call Dret("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
index 2ddf7f34842ce1818fed0885e9d27c0670868274..8232b46d56ff9098e891f11397b290a9cc8413a2 100644 (file)
@@ -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
index 630bb9fbaaeb32154816a0970265cc153db010e9..1192a6b8cd09abf882ccf20d7a3f9d5ccf4a91fd 100644 (file)
@@ -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.
 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
index d20ab09ad8687e14b6a43440757da5de388c9034..0b3b135798b494d68811e08b677b6d53b2f6350b 100644 (file)
@@ -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
 
index d2a9c17dc3a9306f36f39a7cf614541ee9a8f4b6..40837a60052772bdd849180c29de32042cc84e62 100644 (file)
@@ -72,7 +72,7 @@ This procedure should work well:
    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.
diff --git a/runtime/spell/fixdup.vim b/runtime/spell/fixdup.vim
new file mode 100644 (file)
index 0000000..0dd532d
--- /dev/null
@@ -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
index ee66bf644d41ddd3491c387b52ff5c3ed9da15cf..252a841f20d6c415d97ea94ea70a7e630d204beb 100644 (file)
@@ -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
index 8d76fb8f4f93f1471322d8f78df601c4cacf6299..4f04bd0218e47f7d2a4c73b0c56444f318496868 100644 (file)
@@ -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
index 6846ec6bd363d112479d07e50dc3f780dfff79de..6696f96eb1babbb1809ee5d8ecf3e5e6d317c8b8 100644 (file)
@@ -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")
index e73d6749129199cd0184b3019314d57226f628a4..07c129e463eac57e0d09e15ae34ed932c93b05b7 100644 (file)
@@ -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.
index 9facdbe77dfab1794284fcd1f5bbb421dc0bb0db..8db83f91da7d6f60e04733a8bc8c2378be57c13e 100644 (file)
@@ -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
index 8fdcd43f2bbcc6ec49548f2ee13ad64aecb427dd..e7836d7811e1853ae1edfe62de944c9164cd46b8 100644 (file)
@@ -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
index 2968f79b1a82f51e71b9dcc548cd4096fe16dec4..82ab1d874990646756438f9c8ad3c2f7a6ffb2dc 100644 (file)
@@ -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_syn_inits")
     command -nargs=+ HiLink hi def link <args>
   endif
 
-  HiLink bzrRegion     Comment
   HiLink bzrRemoved    Constant
   HiLink bzrAdded      Identifier
   HiLink bzrModified   Special
index 07df36ba3a7464531d4e725aff7c4e9160c5cf23..94562127c2d73959db45a2afd0f1bb1adc5fb647 100644 (file)
@@ -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
index 4dbff008c615c584fdd87183eba93112230b8067..0a1d511a64f96e464bfadb833d0acb1a77f0fa80 100644 (file)
@@ -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")
index 750cfdea26405ddebd5ddd1518f4c4f1936a6b15..b278eca31b7cbc327a70645bba92e961d15f258a 100644 (file)
@@ -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
index 4dd5c3a11526e81608ad05e5b251833162a38fdb..ab96329446d2a965bd760d6e7c854601594cd4bd 100644 (file)
@@ -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
index dce2d3659a958ba338b10c14e809ad15c7c5656a..5315e752110395669898a2ebd50bd84f02e8c504 100644 (file)
@@ -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
index c02799d32998ab0ae0e980eed7fb9ea1c45001ac..20ca19ced07b8fb7bed3963ba00abeac7463452c 100644 (file)
@@ -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\+\(\.\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.
index 8b63e48b0478de137a68acb532399e5047596314..2ba629f921b79d8271c0f83023156e92631ac3b0 100644 (file)
@@ -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 listheader item term description altcomplia
 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 +\\["\\'0abfnrtvx]+
 " 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
index e751fbc7225c7d87856bd2880ae6e489eec307eb..040d48d0f3d61124125c0c85a98912835ebf2a1a 100644 (file)
@@ -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\+\)*"
index d56a342328c447e645083207e3f7ca7ae51ccbb6..e886f0147c5e227bea6a502bc6f455298574eefd 100644 (file)
@@ -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 "\cyes"
 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="^Priority" end="$" contains=debcontrolKe
 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")
index 0ae05abd680d9d70ce7d898c57dff7e836e08faa..52ce6d733ca60023ba0eab6e7ac093546928aefc 100644 (file)
@@ -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
index 48518d7416779bacd5f4f5fb3a6a8fd6338cc804..5efb41bc436d2e7f20456c6e27b20103eb5c6b56 100644 (file)
@@ -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
index 3ad48164cdb2ce90aee87e7ef40d8ea73fd5e270..da35406e884f34e4aee7a2585bd93e9b1c016bac 100644 (file)
@@ -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 get_current_language_bidi plural
 " 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
index b763fb0aa2f6d8553f7579c7ff154abb7bf52f0b..73c1cb475114b886750ee62e094342492f616c64 100644 (file)
@@ -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.
 
index 8c012993347184294d9ea1ad0b38ea98b435724e..d9b1aa6703fd719dee8f86c1032c1227b487fef1 100644 (file)
@@ -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\s\+\(on\|off\)\s*$"lc=4
 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
index fb4d3cca4623d9635d3bc97e6a050de6c2f68d8a..1aea3bf72a3de07f3a2a4f59f1bcea9532be22d8 100644 (file)
@@ -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
index 9b3cb56f5832c5b345c03171189b6ce182f86305..95c78431409cde01b3ed7384ee7711975eee9827 100644 (file)
@@ -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
 
index 678048968a4afda52b94f7acf344ee948e90dc56..621e063ff8760b2c988139a5fc79a5d595e78252 100644 (file)
@@ -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.
index e3d68363d57d87797e5227fa936eb114ae1c18c2..2f39d61437ccb591d707c24fafd2335523ee1c4b 100644 (file)
@@ -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"
index 46e5704053f79eb7cf3c6d967158527ad7f4144c..1e45ffd491fa26281e9602f6032c6fa79a041a74 100644 (file)
@@ -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>
index 884c37ebf5611b27a173d3022fa584f658fd7b9c..8be1b65cc434c100487a53f6efa4cbd356daa4a6 100644 (file)
@@ -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
index 726bf475649c4be81b9aa195e4319984c121f332..19a47ed6b9cfdcc033e0aa75aad7d6c1c3695fd4 100644 (file)
@@ -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=Number
 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_syn_inits")
   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
index 8713a721a8abb143cd864d30e619db07977e14b6..e0e8b774d53e508878184c8a7912bf50caa460d3 100644 (file)
@@ -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
index 1d160f2847d8df99eaea31a4becf879238f453dd..3d323fbb96991ca98fbfb9ce2159960249d15bd2 100644 (file)
@@ -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
index 830b8d014d28b55c146d189aa728c3e162e3a2e9..9bee89433bf17fc011bab1bc8f12d22aea8fd98f 100644 (file)
@@ -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 contained none swap
 " 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 /\<data=/ nextgroup=fsOptionsExt3Data
 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_syntax_inits")
        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
index c874a046596742555c18ea5e21691fcb82d83a57..aada70e5479089ac9d0f1b249493f5cd1dc6306b 100644 (file)
@@ -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" nextgroup=gdbInfo skipwhite skipempty
 " 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\>"
index fd76b7316bbc9a03d41411951943a29064a9512b..feb70848a8f484ca64d998c36a8179123242fc1f 100644 (file)
@@ -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\}/ contained containedin=gitHead nextgroup=gitType
 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\>/                    contained
 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      gitReference
 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"
index e75d044178dffb294934067d79c33984affa0fbd..12db0a42a0bed5104b73078ee20391874b9fd60d 100644 (file)
@@ -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
index f44ce2b57957cbc803fd86659c76a2ea32bb620e..dc14adc10832d8acee27709c5eb33b18d060fe3e 100644 (file)
@@ -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
index 080252fd3d609da8f082c5f21a70b5b8a028942f..94361c17c00e74ab7412de15ecd279ec909fffc9 100644 (file)
@@ -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}>"                             contained
 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         gitrebaseHash
 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"
index 5f96dfbd07d6f0b0cb3363ccee3d3c6a16c7a1ab..d2f34968b6312f58901f3dee247b1708b41d82bf 100644 (file)
@@ -228,6 +228,7 @@ if !exists("groovy_ignore_groovydoc") && main_syntax != 'jsp'
   " 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
 
index 21fcf81f58919a6415348550c466276546d529fe..8afca048ccaab75d94b0aa5335297f7d90c16a80 100644 (file)
@@ -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]\+\([eE][-+]\=[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\)\>"
index e600de73ad685e9b3879f106a9728b07a92645d7..d0f447f9009b1bc1a7ed0aa07038341185cc0acd 100644 (file)
@@ -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="^<"
index f39c171d332be694549f15a047f694a6d7fd8dfe..7f01d7fc11d175a3f26247ee71241b84e43fece7 100644 (file)
@@ -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)
index 2b7bc3b4161708637d5059bb91aeb6a9ac3a4191..1a912c1d051fe7454b30baeed10a391c97ff0598 100644 (file)
@@ -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.
index d5e32faed41f55c57199456a91dd1d9b70f01f64..18e4532d289c0a4ccf69b630f1cec98c72898b80 100644 (file)
@@ -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\>"ms=s+1
 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*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contai
 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") && main_syntax != 'jsp'
   " 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][-+]\=\d\+[fFdD]\=\>"
 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
 
index a68592ee78b5fac1225806c7312a2fe8fbef0b5e..a6ceb1712adffab6fffc5519ac173630cbd95fd4 100644 (file)
@@ -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               contained TODO FIXME XXX NOTE
 
 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
index 903f8474b603053310a2b606ff7246d01b9a351f..cefbe39a29e86e69727fe48d575484c4d0d19790 100644 (file)
@@ -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
index f7144b929648e6346a68f909a12b9e967227e228..68ae63273599e04c67af57584c0a368ffec6761e 100644 (file)
@@ -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 lexPatBlock  "^<$"
 syn sync match lexSyncPat      groupthere lexPatBlock  "^%%$"
 
 " The default highlighting.
-hi def link lexSlashQuote      lexPat
-hi def link lexBrace   lexPat
 hi def link lexAbbrvComment    lexPatComment
+hi def link lexBrace   lexPat
+hi def link lexPatTagZone      lexPatTag
+hi def link lexSlashQuote      lexPat
 
 hi def link lexAbbrvRegExp     Macro
 hi def link lexAbbrv   SpecialChar
index 7ff09e7b3b523826e85d1f6201bbc104d3a44359..8cc1ded01b49ceda8fcf76c360c9808678b1ba22 100644 (file)
@@ -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.
 " 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
 
index e3ba2af00b496658b49cf5f8972346d25968e4fb..14bd940ee534ee8654e5c967c6cd09ee2ed352ed 100644 (file)
@@ -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 cylinders start nextgroup=liloEqDecNumber,
 
 " 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
index 55390aaa48b67f28b4584b058f33e503b72d134d..fd44f607325a8f8ff9f9f2ffa633b6f231ae6adf 100644 (file)
@@ -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]\+|#!
index 5fcbb09742106db5f3923ddb30376a4d7b677bd7..7d90cd88ef05a44fb585ca7dd907f9faa5a82422 100644 (file)
@@ -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=logtalkExtCallTag            start="{"               matchgroup=l
 
 " 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
index ea4cb0038665cce85098ea0b8ca014df7d09f079..2a0a72c5b9223b107212d50c2a70196e1293a63c 100644 (file)
@@ -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.
 
index 1157517f8b7863f32414e2370b3b811583c4153a..c89d2de52c300985dd3345f37126d3eb32fa01ae 100644 (file)
@@ -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^(\> ?){4}"
 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
index 6167b2379a51aacf13e156e30025cf8a0346df34..4172a02fe1ac6c88f6dfa54bfea96057de1584a4 100644 (file)
@@ -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
index efd5fe0bdcb08eb28e46acac3b56fc239a19ff0a..4ffd22b98033ab2b1193409593ff3ff0f571660d 100644 (file)
@@ -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
index c2125c1551344ad33b2959d37d2165b339580178..40d644eef9ac5e75918c2340abd5be84b748cb38 100644 (file)
@@ -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
index 9bba9759c94a1c5676b96b9f02c7de8e2fb7294f..0e281c114d08dba400f0389056a44557c864ef17 100644 (file)
@@ -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-zA-Z0-9.]'"lc=1
 
 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_syntax_inits")
   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_syntax_inits")
   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
index ca982d7a42db045498107236e1342e5b019495ec..27dcc18842ef9f1bc7bd169d15e4c09b78751aed 100644 (file)
@@ -227,7 +227,7 @@ syn match maximaFloat /\<\d\+[BbDdEeSs][-+]\=\d\+\>/
 " 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 "/*"
index 6049e8a5428b9c10be1c08ef98bde15cc8a1e45c..55ae137f2faf133c2e2f6b81149ee2b0599b18c8 100644 (file)
@@ -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
index 12aac9cc47fdcce4dc4b865d500682c18f53bfd4..f48dcceead8a2dc5bbe6120cb12652c21c537de1 100644 (file)
@@ -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
index 79cf4b5abd734e87369c88df5bc2918576f8900a..86a6c07cb93ab60afbffa9fea96a81345893630f 100644 (file)
@@ -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 max_rows middleint min_rows minute minute
 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=+'+  skip=+\\\\\|\\'+  end=+'+
 " 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]*\>"
 
index 15c74c8faa686b1e06fa9202a46c71193f4f238e..2019c0372337f154c9459af2c09e15658efd188b 100644 (file)
@@ -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
index d8eba30a8a57f02d63860f957683ebdd83dc16f0..9f15d16637c4475fd1c9782801bb165e656c690d 100644 (file)
@@ -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 display '\S\+'
 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
 
index 62dab3feb60d9406899c20240109fc0e5e1c3a3a..f6fd66c224d043285bb92a97e47c89625d178fb1 100644 (file)
@@ -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
index 1914a050f160c5128c12a5a9040cad4bf0ea73ba..aa3cb9e34d15f9cc2b098a89de3c76dbdde2f152 100644 (file)
@@ -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)
 
index 0d84d80d94e80a6e9e0c5c903f0c8f4748f5a3fd..d86dce603fca5d4e0db0bc3d32d588368277b0a3 100644 (file)
@@ -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
index 124d524578fe448a173afb6d1fe475ff4545b3bf..4475417fd6f7a952cc5254c84772ad33fd370413 100644 (file)
@@ -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
index fb2b161455940543bc7145bd17a43b9651f32b46..6816548a8c07b97987f1baf6235fde9610f962f2 100644 (file)
@@ -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
index 68b08bebc5f6c3339cfdf8582402a11c92770379..58de71f4d778219f1c44399e37f51eec719678f3 100644 (file)
@@ -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  "!"
index f06b2d3d7e601c4b4a9bb9eb4f9fe8d2b4cb7520..7dc9b955b0465989aa7e8294964742dab6b9d0b9 100644 (file)
@@ -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 typedef ctypedef sizeof
 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_syntax_inits")
   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
index 5288d9bdca754732a30a0a48bfadcadc1c8ff98b..d59074321a4c7677afda8f76a862a1780adecfea 100644 (file)
 " 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)
+" Last Change: 2009-10-13
+" Credits:     Zvezdan Petkovic <zpetkovic@acm.org>
+"              Neil Schemenauer <nas@python.ca>
+"              Dmitry Vasiliev
 "
-" Options to control Python syntax highlighting:
+"              This version is a major rewrite by Zvezdan Petkovic.
 "
-" For highlighted numbers:
+"              - introduced highlighting of doctests
+"              - updated keywords, built-ins, and exceptions
+"              - corrected regular expressions for
 "
-"    let python_highlight_numbers = 1
+"                * functions
+"                * decorators
+"                * strings
+"                * escapes
+"                * numbers
+"                * space error
 "
-" For highlighted builtin functions:
+"              - corrected synchronization
+"              - more highlighting is ON by default, except
+"              - space error highlighting is OFF by default
 "
-"    let python_highlight_builtins = 1
+" Optional highlighting can be controlled using these variables.
 "
-" For highlighted standard exceptions:
+"   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_exceptions = 1
+" All the options above can be switched on together.
 "
-" Highlight erroneous whitespace:
-"
-"    let python_highlight_space_errors = 1
-"
-" If you want all possible Python highlighting (the same as setting the
-" preceding options):
-"
-"    let python_highlight_all = 1
+"   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_syn_inits")
     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 pythonString          String
-  HiLink pythonRawString       String
-  HiLink pythonEscape          Special
   HiLink pythonOperator                Operator
-  HiLink pythonPreCondit       PreCondit
+  HiLink pythonException       Exception
+  HiLink pythonInclude         Include
+  HiLink pythonDecorator       Define
+  HiLink pythonFunction                Function
   HiLink pythonComment         Comment
   HiLink pythonTodo            Todo
-  HiLink pythonDecorator       Define
-  if exists("python_highlight_numbers")
-    HiLink pythonNumber        Number
+  HiLink pythonString          String
+  HiLink pythonRawString       String
+  HiLink pythonEscape          Special
+  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:
index 0b56011bec64b1829e900795a9e0b80a933e8126..04a2cce9b6d310ffe37c45361ba8602a63cd2d1b 100644 (file)
@@ -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
 
index 1972e5af5df224ea8728aa4b835a7f00d2eabcb0..91094c7978a84fdc5e483187fdc1fe831c649367 100644 (file)
@@ -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   contained display
                                 \ 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
index 001868e1521cac3429429e5ced918429cedffd42..93a7178479b7e56b57f17b8aaee0d7e362290f9a 100644 (file)
@@ -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_syn_inits")
   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
index f1b8d88e1c1241658971ed6a5f99a1141fa551e8..fa585b286864c8c719e844217234bc6b2e877833 100644 (file)
@@ -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
index 9b1dfc7e8b713aca747886047f3dbfaa9c491fac..7d42395b5c862d02288b74af2b179ac5e341a53d 100644 (file)
@@ -1,9 +1,9 @@
 " Vim syntax file
 " Language:    R noweb Files
 " Maintainer:  Johannes Ranke <jranke@uni-bremen.de>
-" Last Change: 2007 Mär 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
index d5a76a2b6a7cf8671dbcc5cd07f50f4f3779aa02..245c3aedf278d67b3fb22ac97594989b26d11da3 100644 (file)
@@ -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
index a5a118e4d3199551e542da6a99098137ddd5cc05..f82b4c2cb74f7b32430ac2bfdc168bc82b5d71f1 100644 (file)
@@ -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>
index 31570e093d85ef155c54f8b926aa4c5403862a4d..dae4040ec5b48ed6ff4e2e36fe2eabbd324a4caf 100644 (file)
@@ -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 message min mode modes mux name names
 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
index 6f6927f67b74f78e79abeea7ebe5ba6fb4704241..f98703446ee971250f0cc5e4495bb142a3eed3ad 100644 (file)
@@ -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 if cond case define let let* letrec
 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 transcript-on transcript-off eval
 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      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]\+"
 
-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\[\]()";]\+!
 
 if exists("b:is_mzscheme") || exists("is_mzscheme")
     " MzScheme extensions
@@ -177,11 +192,11 @@ if exists("b:is_mzscheme") || exists("is_mzscheme")
     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_chicken")
     " 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_chicken")
     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_syntax_inits")
   HiLink schemeFunc            Function
 
   HiLink schemeString          String
-  HiLink schemeChar            Character
+  HiLink schemeCharacter       Character
   HiLink schemeNumber          Number
   HiLink schemeBoolean         Boolean
 
diff --git a/runtime/syntax/sdc.vim b/runtime/syntax/sdc.vim
new file mode 100644 (file)
index 0000000..0ca9bec
--- /dev/null
@@ -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
index bcc46c34249e014e9f360dfd22061db9a232c1de..c0c3643dd29d5f3f9e7bde47781c9e127ee843a6 100644 (file)
@@ -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
index 419e904eec180b2f25108b9da7e251b6029805c9..99e6ea2afee5a17e75726baa813163b414a403b3 100644 (file)
@@ -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
index 5fa8d938fde6a439ad3af32c5fb9369c85bdabc5..6ef4fba103555d4c272d9628b802cfceb3cae0af 100644 (file)
@@ -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=shDerefOp,shDerefVarArray,shDerefOpError
 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=shBeginHere,shHerePayload
 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\+\())\)\@="       contained contains=shExSingleQuote,shSin
 
 " 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-Z0-9]\+\>"      contained
 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
index f29bc2680fa3896a046bb1b5cf5239ef8330f174..c7cdf2df1d7e167eb6b0bf13020d62067e009b12 100644 (file)
@@ -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_strikeout,sisu_identifier,sisu_content_endn
 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 Folded
 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
index cb2f30475f59246cec636c2e47a42205ecd4f0af..8c9dd1ffa73a6f382b9356924866f2755ac9e0c7 100644 (file)
@@ -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
index 2f283809d4ca91245181086fe55c001735b21fe3..dc09d8b9d66ee6819fe5468a59412ea55b7c18a7 100644 (file)
@@ -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,
index 641aa86599f1b5ed52d9b0dcb02a21d11ae25f3d..e76cb1a1a2f1ccc6818562e7ebb14391ac3921da 100644 (file)
@@ -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
index 81fa060f4a2b42def30277ee2976a074b871c732..5abab381ea40eb5075f314d50a8890d27e30bdff 100644 (file)
@@ -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 lookup newid uuidtostr
 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_header next_http_variable
 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 set
+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 waitfor whenever while writetext
 
 
 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
index 44f23d76110a6866117e971d3ba2bcf65ed3799b..45947f20649a8727b77df27a054a7b1e4158c724 100644 (file)
@@ -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 contained
 
 " 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}:\)\+\x\{,4}[:/]\d\+\>"
 
 " 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"
-
index 2217e096f7effe45b1fc1c20fca473ea12e27115..97ee8f8771fbb9a700860c3c67794615ce142297 100644 (file)
@@ -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 "#.*$" contains=sshdconfigTodo
 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"
index bb4f594469555430caaa0a850cec028825403bf3..0cd770a276f5bd6f139d57c889eba249f1a8b51a 100644 (file)
@@ -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
 
index 70ffe6f21309c48021870b67ebd4489f2c0029d1..260ff360f72bffb5037151bb8813d0eb4d657420 100644 (file)
@@ -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
diff --git a/runtime/syntax/taskdata.vim b/runtime/syntax/taskdata.vim
new file mode 100644 (file)
index 0000000..79186e0
--- /dev/null
@@ -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
diff --git a/runtime/syntax/taskedit.vim b/runtime/syntax/taskedit.vim
new file mode 100644 (file)
index 0000000..c7e0ea7
--- /dev/null
@@ -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
index e9562d65083be09e669239927e8acc759fc1232d..d15422daa8c55b5d698c807520f9a2b2875c4c66 100644 (file)
@@ -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 activerelief elementborderwidth
 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=tcltkCommandColor start="\<namespace\>" match
 
 " 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=tcltkCommandColor start="\<lsort\>" matchgrou
 
 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_syntax_inits")
   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_syntax_inits")
   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_syntax_inits")
   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
index 94c4181c3af0fdfb3d0c091b98d458475609fa44..b535d11df884b17a7e6c26127e08b9f816cafb06 100644 (file)
@@ -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 transparent matchgroup=tcshBuiltin start='' ski
 " 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\\%([0-7]{3}|.)'
 
 " ----- 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
index 1393a5826ab807cf64f8b479181e566deba1ad57..ff171d3741675bd9c5dd37545a8b6a97d4113b4e 100644 (file)
@@ -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\|oe\|ss\|AA\|AE\|OE\)$"
 
 " \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\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\
 " 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
 
index 568805013233b132460241100a05a78127bdeb0c..3fdebf1e2e0a99e945956cca4c42e13bccb03922 100644 (file)
@@ -3,7 +3,7 @@
 " Language:    Tilde
 " Maintainer:  Tobias Rundström <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
index bdc4e95b6e7388bfb044c6a37c7b441e192f5e6b..a4399844ada602c88266e975e46203c5fe458e77 100644 (file)
@@ -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
index 4f912d4d98e821e526a56a968654d221d06e93fc..7c082d62df0900c9a6abdadc84bea03587a2afcd 100644 (file)
@@ -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 oneline start='^\s*#' end='$'
 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
index 96fbcd6200c111ae6be33090d18471fc268f0642..4ac3b6d8a4826abd855250458778cc3778fdf8ea 100644 (file)
@@ -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
index 5bfcd66060359949452cf7c1456b8286b3384e58..22afcf401957eb16989e3b2bc924eef9330c8378 100644 (file)
@@ -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  FIXME   TODO    XXX
 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       allowrevins arab autoread backup balloonexpr bh
 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 indent off on plugin
 
 " 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[roup]
 
 " 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  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  vimFilter contained "^!.\{-}\(|\|$\)"               contains=vimSpecFile
-syn match  vimFilter contained "\A!.\{-}\(|\|$\)"ms=s+1        contains=vimSpecFile
+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      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
 
 " 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] inorea[bbrev] cnorea[bbrev] norea[bbre
 
 " 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\+"
-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 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
 
 " 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  "[\ 1-\b\v\ f-\1f]"
+syn match      vimCtrlChar     "[\ 1-\b\v\ f-\1f]"
 
 " 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 vimPatSepR vimPatSep
-hi def link vimPatSepZ vimPatSep
 hi def link vimPatSepErr       vimPatSep
+hi def link vimPatSepR vimPatSep
 hi def link vimPatSepZone      vimString
+hi def link vimPatSepZ vimPatSep
 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 vimGroup   Type
 hi def link vimGroupSpecial    Special
-hi def link vimHLMod   PreProc
+hi def link vimGroup   Type
 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 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 vimSynCase 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 vimUserCmdError    Error
 hi def link vimUserAttrbCmpltFunc      Special
+hi def link vimUserCmdError    Error
+hi def link vimUserFunc        Normal
 hi def link vimWarn    WarningMsg
 
 " Current Syntax Variable: {{{2
index cd3fed4a618c98302e6f9d7fb03df499ab7c6f0f..d7f11723f5dc561dd7c6939aebe612665f76bb98 100644 (file)
@@ -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
index 8f8e155904d2e3a1485a9c51b812d475384feadb..58d6db03e7b6ac363ed4fe564b00fcf096884a7d 100644 (file)
@@ -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
index 67593b22b30cfef5575a382f6aa8d3bf65272028..dcb2685c9de1ef3855a6a2436cc155a9353a931d 100644 (file)
@@ -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/
index c3431f42e993fb826b777fb15b0d7cb8b8787f6f..5ba6b4499a7e3acbcbd9e3e636ad8cec9602cb09 100644 (file)
@@ -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
index 98dd869198b376394fa6f63ecc31f2799e4aaecb..3e0df6acffd6e1befebb3aa3feb84a5ec05dcbf3 100644 (file)
@@ -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
index d4bd0196b8b8f4ecd8d4a7ea5acded5e0b57d1d6..1797b7a643cdfd55366655e1c952d30de81bf44d 100644 (file)
@@ -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 stuff {{{1
-syn match      yaccDelim       "^\s*[:|;]"
-syn match      yaccOper        "@\d\+"
-
-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      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*:"
+"  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
 
 " ---------------------------------------------------------------------
-" special Yacc separators {{{1
-syn match      yaccSectionSep  "^[ \t]*%%"
-syn match      yaccSep "^[ \t]*%{"
-syn match      yaccSep "^[ \t]*%}"
+" Yacc Commands: {{{1
+syn    match   yaccDelim       "[:|]"  contained
+syn    match   yaccOper        "@\d\+" contained
+
+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    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
+
+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_syn_inits")
   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_syn_inits")
 
   delcommand HiLink
 endif
+
+" ---------------------------------------------------------------------
+"  Cleanup: {{{1
+delcommand HiFold
 let b:current_syntax = "yacc"
 
 " ---------------------------------------------------------------------
index 45f468f4a916685edb958c950330a00a25914caa..7f4df75ee55adc03642c9e6ae71ea92411d455e7 100644 (file)
@@ -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
 
diff --git a/runtime/tutor/tutor.bj b/runtime/tutor/tutor.bj
new file mode 100644 (file)
index 0000000..642a8f3
--- /dev/null
@@ -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 
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  
+
+
+
+
diff --git a/runtime/tutor/tutor.bj.utf-8 b/runtime/tutor/tutor.bj.utf-8
new file mode 100644 (file)
index 0000000..80c3ade
--- /dev/null
@@ -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 
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  
+
+
+
+
diff --git a/runtime/tutor/tutor.eo b/runtime/tutor/tutor.eo
new file mode 100644 (file)
index 0000000..2ac0689
--- /dev/null
@@ -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 sufiæajn komandojn, por ke vi kapablu uzi Vim
+   kun sufiæa 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 þanøos la tekston. Kopiu tiun æi dosieron
+   por ekzerci vin (se vi lanæis "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 reøimo majuskla,
+   kaj premu la klavon  j  sufiæe 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 moviøi al la sekvanta leciono
+
+  3. Uzante la malsuprenan klavon, moviøu al la leciono 1.2.
+
+RIMARKO: Se vi dubas pri tio, kion vi premis, premu <ESK> por reiri al
+         la normala reøimo. Tiam repremu la deziratan komandon.
+
+RIMARKO: La klavoj de la kursoro devus ankaý funkcii. Sed uzante hjkl,
+         vi kapablos moviøi pli rapide post kiam vi kutimiøos.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                           Leciono 1.2:  ELIRI EL VIM
+
+
+  !! RIMARKO: Antaý ol plenumi iujn subajn paþojn ajn, legu la tutan lecionon!!
+
+  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, 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 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, 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.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                   Leciono 1.3:  REDAKTO DE TEKSTO - FORVIÞO
+
+
+             ** Premu  x  por forviþi 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
+     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.
+
+
+---> 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
+     reøimo. Ripetu la paþojn 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, moviøu 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
+     reøimo.
+
+  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
+     Mankas teksto el tiu linio.
+---> Mankas ankaý teks
+     Mankas ankaý teksto æi tie.
+
+  5 Kiam vi sentas vin komforta pri postaldono de teksto, moviøu al la
+    leciono 1.6
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Leciono 1.6:  REDAKTI DOSIERON
+
+                ** Uzu  :wq  por konservi dosieron kaj eliri. **
+
+  !! RIMARKO: Antaý ol plenumi iun suban paþon 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 lanæi la redaktilon Vim, 'tutor' estas la
+     dosiernomo de la dosiero, kiun vi volas redakti.  Uzu dosieron, kiu
+     þanøeblas.
+
+  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:  :wq  <Enenklavo>
+
+  5. Relanæu la instruilon vimtutor kaj moviøu suben al la sekvanta resumo.
+
+  6. Post kiam vi legis la suprajn paþojn, kaj komprenis ilin: faru ilin.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                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)
+
+  2. Por lanæi Vim el la þelinvito, tajpu:  vim DOSIERNOMO <Enenklavo>
+
+  3. Por eliri el Vim, tajpu:  <ESK>  :q! <Enenklavo>  por rezigni la þanøojn
+
+  4. Por forviþi 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 reøimo, aý rezignas la
+         nedeziratan aý parte plenumita komando.
+
+Nun daýrigu al la leciono 2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Leciono 2.1: KOMANDOJ DE FORVIÞO
+
+
+                      ** Tajpu  dw  por forviþi vorton. **
+
+  1. Premu  <ESK>  por certigi, ke vi estas en normala reøimo.
+
+  2. Movu la kursoron al la linio markita per --->.
+
+  3. Movu la kursoron al la komenco de vorto, kiu forviþendas.
+
+  4. Tajpu   dw   por forviþi 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 paþojn 3 kaj 4 øis kiam la frazo estas øusta kaj moviøu al la
+     leciono 2.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.
+
+  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 forivþi øis la fino de la linio.
+
+---> Iu tajpis la finon de æi tiu linio dufoje. fino de æi tiu linio dufoje.
+
+
+  5. Moviøu al la leciono 2.3 por kompreni kio okazas.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leciono 2.3: PRI OPERATOROJ KAJ MOVOJ
+
+
+  Multaj komandoj, kiuj þanøas la tekston, estas faritaj de operatoro kaj
+  movo. La formato de komando de forviþo per la operatoro de forviþo  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'   forviþos ekde la kursoro øis la fino de la vorto.
+
+RIMARKO: Premo de nur la movo en Normala reøimo sen operatoro movos
+         la kursoron kiel specifite.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       Leciono 2.4: UZI NOMBRON POR MOVO
+
+             ** Tajpo de nombro antaý movo ripetas øin laýfoje. **
+
+  1. Movu la kursoron æe la komenco de la suba linio markita per --->.
+
+  2. Tajpu  2w  por movi la kursoron je du vortoj antaýen.
+
+  3. Tajpu  3e  por movi la kursoron æe la fino de la tria vorto antaýen.
+
+  4. Tajpu  0  (nul) por moviøi æe la komenco de la linio.
+
+
+  5. Ripetu paþojn 2 øis 3 kun malsamaj nombroj.
+
+---> Tio estas nur linio kun vortoj, kie vi povas moviøi.
+
+  6. Moviøu al la leciono 2.5.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    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
+  æi-supre, eblas aldoni nombron antaý la movo por pli forviþi:
+        d  nombro   movo
+
+  1. Movu la kursoron æe la unua MAJUSKLA vorto en la linio markita per --->.
+
+  2. Tajpu  d2w  por forviþi la du MAJUSKLAJN vortojn
+
+  3. Ripetu paþojn 1 øis 2 per malsama nombro por forviþi 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 forviþi tutan linion. **
+
+  Pro la ofteco de forviþo de tuta linio, la verkisto de Vi decidis, ke
+  estus pli facile simple tajpi du d-ojn  por forviþi linion.
+
+  1. Movu la kursoron sur la duan linion en la suba frazo.
+  2. Tajpu  dd  por forviþi la linion.
+  3. Nun moviøu al la kvara linio.
+  4. Tajpu   2dd   por forviþi du liniojn.
+
+---> 1)  Rozoj estas ruøaj,
+---> 2)  Þlimo estas amuza,
+---> 3)  Violoj estas bluaj,
+---> 4)  Mi havas aýton,
+---> 5)  Horloøoj diras kioma horo estas,
+---> 6)  Sukero estas dolæa,
+---> 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 forviþi 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 antaýa stato.
+  6. Nun tajpu  u  kelkfoje por malfari la  U  kaj antaýajn 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 moviøu al la leciono 2 RESUMO.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                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
+
+  4. Por ripeti movon, antaýmetu nombron:                         2w
+  5. La formato de þanøa komando estas:
+           operatoro   [nombro]   movo
+
+     kie:
+       operatoro - estas tio, kio farendas, kiel  d  por forviþi
+       [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 moviøi al la komenco de la linio, uzu nul:  0
+
+  7. Por malfari antaýajn agojn, tajpu:               u (minuskla u)
+     Por malfari æiujn þanøojn 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 forviþitan antaýe post la kursoro. **
+
+  1. Movu la kursoron æe la unua ---> suba linio.
+
+  2. Tajpu  dd  por forviþi la linion kaj konservi øin ene de reøistro de Vim.
+
+  3. Movu la kursoron æe la linio c), SUPER kie la forviþita linio devus esti.
+
+  4. Tajpu  p  por meti la linion sub la kursoron.
+
+  5. Ripetu la paþojn 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 ruøaj,
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leciono 3.2 LA KOMANDO DE ANSTATAÝIGO
+
+
+       ** Tajpu  rx  por anstataýigi 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 paþojn 2 kaj 3 øis kiam la unua linio egalas la duan.
+
+---> 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.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                       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 --->.
+
+  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 moviøu al la sekvanta signo, kiu bezonas þanøon.
+
+  5. Ripetu la paþojn 3 kaj 4 øis kiam la unua frazo egalas la duan.
+
+---> Tiu lduzw havas kelkajn vortojn, kiii bezas þanøon per la þanøooto.
+---> Tiu linio havas kelkajn vortojn, kiuj bezonas þanøon per la þanøoperatoro.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Leciono 3.4 PLIAJ ÞANØOJ PER c
+
+
+       ** 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:
+
+       c    [nombro]   movo
+
+  2. La movoj estas samaj, kiel ekzemple   w (vorto) kaj $ (fino de linio).
+
+  3. Moviøu æ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 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).
+
+  2. Por anstataýigi la signon sub la kursoro, tajpu  r  kaj tiam la signon
+     kion vi deziras havi tie.
+
+  3. La operatoro de þanøo ebligas al vi þanøi ekde la kursoro, øis kie
+     la movo iras.  Ekz. tajpu  ce  por þanøi ekde la kursoro øis la fino
+     de la vorto,  c$  por þanøi øis la fino de la linio.
+
+  4. La formato de þanøo estas:
+
+         c    [nombro]   movo
+
+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. **
+
+  RIMARKO: Legu la tutan lecionon antaý ol plenumi iun paþon ajn!!
+
+  1. Premu la klavon Ctrl kaj premu  g . Oni nomas tion CTRL-G.
+     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
+           angulo de la ekrano. Tio okazas kiam la agordo 'ruler' estas
+           þaltita (vidu  :help 'ruler')
+
+  2. Premu  G  por moviøi æe la subo de la dosiero.
+     Tajpu gg  por moviøi æ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 paþojn 1 øis 3.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        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
+     aperas æe la suba parto de la ekrano kiel por la  :  komando.
+
+  2. Nun tajpu 'errarro' <Enenklavo>.
+     Tio estas la vorto, kion vi volas seræi.
+
+  3. Por seræi la saman frazon denove, simple tajpu  n .
+     Por seræi la saman frazon denove en la retrodirekto, tajpu  N .
+
+  4. Por seræi 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 antaýen.
+
+---> "errarro" ne estas maniero por literumi eraro; errarro estas eraro.
+
+RIMARKO: Kiam la seræo atingas la finon de la dosiero, øi daýras æe la
+         komenco, krom se la agordo 'wrapscan' estas malþaltita.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leciono 4.3 SERÆO 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 moviøas 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 ANSTATAýIGO
+
+
+     ** Tajpu  :s/malnova/nova/g  por anstataýigi 'nova' per 'malnova'. **
+
+  1. Movu la kursoron al la suba linio markita per --->.
+
+  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
+     anstataýigon en la linio. Øi þanøas æiujn okaza¼ojn de "laa" en la
+     linio.
+
+---> laa plej bona tempo por vidi florojn estas en laa printempo.
+
+  4. Por þanøi æiujn okaza¼ojn 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 anstataýigo
+                                     okazos.
+     Tajpu    :%s/malnova/nova/g     por þanøi æiujn okaza¼ojn en la tuta
+                                     dosiero.
+     Tajpu    :s/malnova/nova/gc     por trovi æiujn okaza¼ojn en la tuta
+                                     dosiero, kun invitilo æu anstataýigi
+                                     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 seræas la frazon antaýen.
+     Tajpo de  ?  kaj frazon seræas la frazon malantaýen.
+     Post seræo, tajpu n por trovi la sekvantan okaza¼on en la sama direkto aý
+     N por seræi en la mala direkto.
+     CTRL-O movas vin al la antaýaj pozicioj, CTRL-I al la novaj pozicioj.
+
+  3. Tajpo de  %  kiam la kursoro estas sur (,),[,],{ aý } moviøas al øia
+     kongruo.
+
+  4. Por anstataýigi 'nova' en la unua 'malnova' en linio :s/malnova/nova
+     Por anstataýigi 'nova' en æiuj 'malnova'-oj en linio :s/malnova/nova/g
+     Por anstataýigi frazon inter du #-aj linioj          :#,#s/malnova/nova/g
+     Por anstataýigi æiujn okaza¼ojn 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 finiøi per tajpo de <Enenklavo>
+         Ekde nun, ni ne plu mencios tion.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    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.
+     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 forviþu 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 emfaziøas.
+
+  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 forviþu ø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  forviþas
+         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 paþo 2, vi vidos tekston el la leciono 5.3.  Tiam
+         moviøu 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 akiriøis, 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 - forviþas 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 reøimon. **
+
+  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 reøimon.
+
+  3. Nun tajpu tekston kaj premu <ESK> por eliri la Enmetan reøimon.
+
+---> Post tajpo de  o  la kursoro moviøas al la malfermata linio en
+     Enmeta reøimo.
+
+  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 reøimon.
+
+  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.
+---> Æi tiu linio ebligos vin ekzerci vin postaldoni tekston al linio.
+
+RIMARKO: Æiu  a, i kaj A  iras al la sama Enmeta reøimo, la nura malsamo
+         estas tie, kie la signoj estas enmetitaj.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Leciono 6.3 ALIA MANIERO POR ANSTATAÝIGI
+
+
+          ** Tajpu majusklan  R  por anstataýigi 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
+     anstataýigu la xxx .
+
+  3. Premu <ESK> por foriri la Anstataýigan reøimon. Rimarku, ke la cetera
+     parto de la linio restas neþanøata.
+
+  4. Ripetu la paþojn por anstataýigi la restantajn xxx.
+
+---> Aldono de 123 al xxx donas al vi xxx.
+---> Aldono de 123 al 456 donas al vi 579.
+
+RIMARKO: Anstataýiga reøimo estas same kiel Enmeta reøimo, sed æiu signo
+         tajpita forviþas 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 reøimon 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 reøimon por apartigi " ero.", kopiu øin per  y , moviøu
+     æ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 seræo aý anstataýigo ignoru usklecon **
+
+  1. Seræu 'ignori' per tajpo de /ignori <Enenklavo>
+     Ripetu plurfoje premante  n .
+
+  2. Þaltu la opcion 'ic' (ignori usklecon) per:   :set ic
+
+  3. Nun seræu '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 seræan komandon kaj vidu kio okazas:  /ignore <Enenklavo>
+
+  6. Por malþalti ignoron de uskleco:  :set noic
+
+RIMARKO: Por forigi emfazon de kongruo, tajpu:   :nohlsearch
+RIMARKO: Se vi deziras ignori usklecon por nur unu seræa 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 reøimo.
+  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 Anstataýigan reøimon øis kiam
+     <ESK> estas premita.
+
+  6. Tajpo de ":set xxx" þaltas la opcion "xxx".  Iuj opcioj estas:
+        'ic' 'ignorecase'     ignori usklecon dum seræo
+        'is' 'incsearch'      montru partan kongruon dum seræo
+        'hls' 'hlsearch'      emfazas æiujn kongruajn frazojn
+     Vi povas uzi aý la longan, aý la mallongan nomon de opcio.
+
+  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
+  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 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"
+      :r $VIMRUNTIME/vimrc_example.vim
+
+  3. Konservu la dosieron per:
+      :w
+
+  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
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                             Leciono 7.3 KOMPLETIGO
+
+
+             ** Kompletigo de komanda linio per CTRL-D kaj <TAB> **
+
+  1. Certigu ke Vim estas en kongrua reøimo:  :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 sufiæas 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)
+
+  Retpoþto: bware@mines.colorado.edu.
+
+  Modifita por Vim de Bram Moolenaar.
+
+  Tradukita en Esperanto de Dominique Pellé, 2008-04-01
+  Retpoþto: dominique.pelle@gmail.com
+  Lasta þanøo: 2009-02-01
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
index 8f67b207b0682d49e09c1270dc7aaaacb4efb0f1..5adad3913e29361862a868ec07c154a7640bd4de 100644 (file)
@@ -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 provu memori, lernu per la uzo.
 
   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 provu memori, lernu per la uzo.
   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 provu memori, lernu per la uzo.
 
   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 provu memori, lernu per la uzo.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                 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 uzo, kaj ne per memorado.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        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 uzo, kaj ne per memorado.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          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 ekstera komando. Ekzemple,
   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 ekstera komando. Ekzemple,
   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 **
 
-  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.
+                         ** Ebligu kapablojn de Vim **
+
+  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 komandoj. Nur provu premi CTRL-D kaj
 
   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
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
index bbdb13d1f6bd9ca59fad93f5faba7915189c6ed1..bfb42e493aed9848b07e14e73b31b28341cbead9 100644 (file)
@@ -117,7 +117,7 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar,
                            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:
index 7495619364e627c5efc4f7f17a7915663bf96b38..84db8fda9735d0f4059a63e8c2ecf69281f0294c 100644 (file)
@@ -117,7 +117,7 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar,
                            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:
index bc566894bd44fc670b145049217b1efe05c8708e..e321754576cfb7099dade4abb74ba321dad19bbc 100644 (file)
@@ -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
      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 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.
+
 
-     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.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                     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.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                    Leçon 1.2 : ENTRÉE ET SORTIE DE VIM
+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: Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !!
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leçon 1.2 : SORTIR DE VIM
 
-  1. Appuyez la touche <Échap>  (pour être sûr d'être en mode Normal).
 
-  2. Tapez:                    :q! <Entrée>
+ !! NOTE : Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !!
 
----> Ceci quitte l'éditeur SANS sauver les changements que vous avez faits.
-     Si vous voulez enregistrer les changements et sortir, tapez:
-                               :wq <Entrée>
+  1. Appuyez la touche  <Échap>  (pour être sûr d'être en mode Normal).
 
-  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>
+  2. Tapez :  :q! <Entrée>
+     Ceci quitte l'éditeur SANS enregistrer les changements que vous avez
+     faits.
 
----> '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.
+     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.
+
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                 Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT
+                  Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT
 
 
** En mode Normal, appuyez  x pour effacer le caractère sous le curseur. **
        ** 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
 ---> 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.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         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
+                             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 
 
   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
+
 
+       ** Taper un nombre avant un mouvement le répète autant de fois. **
 
-  Le format de la commande d'effacement  d  est le suivant:
+  1. Déplacez le curseur au début de la ligne marquée ---> ci-dessous.
 
-        [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).
+  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.
 
-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.
+  4. Tapez  0  (zéro) pour déplacer au début de la ligne.
 
+  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
 
-             ** Tapez  dd  pour effacer une ligne complète. **
+  1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne
+     marquée --->.
+
+  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 d' objet  en mode Normal, sans
   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 d' objet  en mode Normal, sans
   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'au mot suivant tapez :         dw
+
+  2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez :   d$
+
+  3. Pour effacer toute une ligne tapez :                         dd
 
+  4. Pour répéter un déplacement ajoutez un quantificateur :      2w
 
-  1. Pour effacer du curseur jusqu'à la fin d'un mot tapez:    dw
+  5. Le format d'une commande de changement est :
 
-  2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez: d$
+       opérateur   [nombre]   déplacement
 
-  3. Pour effacer toute une ligne tapez:  dd
+     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.
 
-  4. Le format d'une commande en mode Normal est:
+  6. Pour se déplacer au début de ligne, utilisez un zéro :  0
 
-       [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.
+  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
 
-  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 d' objet  en mode Normal, sans
 
   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  c 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 apprendre par la pratique, pas par
 ---> 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 .  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 . 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.
 
-  2. Tapez  G  majuscule (Maj-G) pour vous rendre à la fin du fichier.
+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')
 
-  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).
+  2. Tapez  G   pour vous déplacer à la fin du fichier.
+     Tapez  gg  pour vous déplacer au début du fichier.
 
-  4. Si vous vous sentez prêt à faire ceci, effectuez les étapes 1 à 3.
+  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.
-
-Note: Quand la recherche atteint la fin du fichier, elle reprend au début.
+---> erreur ne s'écrit pas "errreuur" ; errreuur est une erreur.
 
+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.
-
-  4. Tapez  %  pour replacer le curseur sur l'autre parenthèse.
+  3. Le curseur se déplacera sur la parenthèse out crochet correspondant.
 
----> Voici ( une ligne de test contenant des (, des [ ] et des { } )).
+  4. Tapez  %  pour replacer le curseur sur la parenthèse ou crochet
+     correspondant.
 
-Note: Cette fonctionnalité est très utile lors du débogage d'un programme qui
-      contient des parenthèses déséquilibrées !
+  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 !
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-              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
      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:  Toutes les commandes  :  doivent finir par la frappe de <Entrée>.
+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>.
+        À 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. Tapez à nouveau  :!dir  ou  :!ls  pour visualiser le contenu du dossier
-     courant et choisissez un nom de fichier, tel que TEST.
+  1. Déplacez le curseur sur cette ligne.
 
-  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 !
+  2. Appuyez  v  et déplacez le curseur vers la cinquième ligne plus bas.
+     Remarquez que le texte est en surbrillance.
 
-  3. Puis rendez-vous au bas de cette page et tapez à nouveau  Ctrl-G .
-     NOTEZ ÉGALEMENT CE NUMÉRO !
+  3. Appuyez  :  . En bas de l'écran  :'<,'> va apparaître.
 
-  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.
+  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.
 
-  5. Une fois encore, vérifiez la présence du fichier avec  :!dir  mais NE
-     L'EFFACEZ PAS.
+  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.
 
+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 **
 
-  1. Tapez  :!dir  pour vérifier que votre fichier TEST est encore là.
+        ** Pour insérer le contenu d'un fichier, tapez  :r FICHIER **
 
-  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
+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.
 
 
-  1.  :!commande  exécute une commande externe.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                             RÉSUMÉ DE LA LEÇON 5
 
-      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.
+  1. :!commande  exécute une commande externe.
 
-  3.  :#,#w FICHIER  enregistre les lignes # à # dans le fichier FICHIER.
+     Quelques exemples pratiques :
+      (MS-DOS)        (Unix)
+       :!dir           :!ls          affiche le contenu du répertoire courant.
+       :!del FICHIER   :!rm FICHIER  efface FICHIER.
 
-  4.  :r FICHIER  récupère le fichier FICHIER et l'insère dans le fichier
-                 courant à partir de la position du curseur.
+  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 : L'OUVERTURE
+                      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.
 
-  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é.
+  5. Utilisez  e  pour vous déplacer vers le mot incomplet suivant et
+     répétez les étapes 3 et 4.
 
----> Cette ligne vous permet de pratiquer
----> Cette ligne vous permet de pratiquer l'ajout de texte en fin de ligne.
+---> 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.
+
+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. 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.
+  3. Appuyez <Échap> pour quitter le mode Remplacement. Notez que le reste de
+     la ligne demeure inchangé.
 
----> Pour rendre cette ligne identique à celle du dessous utilisez le clavier.
----> Pour rendre cette ligne identique à la seconde, tapez R et la correction.
+  4. Répétez les étapes pour remplacer les xxx restants.
 
-  4. Notez que lorsque vous appuyez <Échap>, le texte qui n'a pas encore été
-     remplacé reste.
 
+---> L'ajout de 123 à xxx donne xxx.
+---> L'ajout de 123 à 456 donne 579.
+
+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
+
+
+   ** 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> .
+
+  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 ignorent la
-     casse des caractères. **
 
-  1. Recherchez 'ignore' en tapant  /ignore .
+    ** 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 interrompre la mise en surbrillance des résultats, tapez:
-     :nohlsearch
+  6. Pour désactiver 'ignorer casse', entrez :  :set noic
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                            RÉSUMÉ DE LA LEÇON 6
+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>
 
-  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.
 
-  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.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                             RÉSUMÉ DE LA LEÇON 6
 
-  3. Taper un  R  majuscule active le mode Remplacement jusqu'à ce que la
-     touche  <Échap>  soit appuyée pour en sortir.
 
-  4. Taper  :set xxx  active l'option 'xxx'.
+  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.
 
+  5. Taper  R  majuscule active le mode Remplacement jusqu'à ce qu' <Échap>
+     soit appuyé.
 
+  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.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                    Leçon 7 : ACCÉDER À L'AIDE EN LIGNE
+                         Leçon 7.1 : OBTENIR DE L'AIDE
+
 
-                 ** Utiliser le système d'aide en ligne. **
+                  ** 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>
+  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>
 
-  Tapez  :q <Entrée>  pour fermer la fenêtre d'aide.
+
+  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>):
+  d'appuyer sur <Entrée>) :
 
-       :help w
-       :help c_<T
-       :help insert-index
-       :help user-manual
+        :help w
+        :help c_CTRL-D
+        :help c_<T
+        :help insert-index
+        :help user-manual
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                   Leçon 8 : CRÉER UN SCRIPT DE DÉMARRAGE
+                    Leçon 7.2 : CRÉER UN SCRIPT DE DÉMARRAGE
 
-                 ** Activer les fonctionnalités de Vim. **
+                   ** Activer les fonctionnalités de Vim. **
 
   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
+  sont désactivées par défaut. Pour commencer à les utiliser, vous devez
   créer un fichier "vimrc".
 
-  1. Commencez à éditer le fichier "vimrc". Ceci dépend de votre système:
-       :edit ~/.vimrc                  pour Unix
-       :edit $VIM/_vimrc               pour MS-Windows
+  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
+
+  3. Enregistrez le fichier avec :
+        :w
+
+  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 7.3 : COMPLÈTEMENT
+
+
+          ** 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
 
-  2. Intégrez maintenant le texte du fichier "vimrc" d'exemple:
-       :read $VIMRUNTIME/vimrc_example.vim
+  3. Tapez le début d'une commande :   :e
 
-  3. Enregistrez le fichier avec:
-       :write
+  4. Appuyez  CTRL-D  et Vim affichera une liste de commandes qui commencent
+     par "e".
 
-  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. 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).
+
+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. Tapez  :help cmd  pour trouver l'aide sur  cmd .
+
+  3. Tapez  CTRL-W CTRL-W  pour sauter à une autre fenêtre.
+
+  4. Tapez  :q  pour fermer la fenêtre d'aide.
 
-  Ceci conclut le Tutoriel Vim.  Le but était de vous donner un bref aperçu de
+  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
   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.
-  E-mail:      version.francaise@free.fr
-  Last Change: 2003 May 29
+  Dernières mises à jour par Dominique Pellé.
+
+  E-mail :      dominique.pelle@gmail.com
+  Last Change : 2008 Nov 23
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
index 5ab14cdb0e9d0764d955a417f0f1c8840ba84ac6..1b015105d90b8d5e49092eb40d2e5d69d4cfba0b 100644 (file)
@@ -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
      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 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.
+
 
-     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.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                     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.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                    Leçon 1.2 : ENTRÉE ET SORTIE DE VIM
+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: Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !!
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leçon 1.2 : SORTIR DE VIM
 
-  1. Appuyez la touche <Échap>  (pour être sûr d'être en mode Normal).
 
-  2. Tapez:                    :q! <Entrée>
+ !! NOTE : Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !!
 
----> Ceci quitte l'éditeur SANS sauver les changements que vous avez faits.
-     Si vous voulez enregistrer les changements et sortir, tapez:
-                               :wq <Entrée>
+  1. Appuyez la touche  <Échap>  (pour être sûr d'être en mode Normal).
 
-  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>
+  2. Tapez :  :q! <Entrée>
+     Ceci quitte l'éditeur SANS enregistrer les changements que vous avez
+     faits.
 
----> '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.
+     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.
+
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                 Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT
+                  Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT
 
 
** En mode Normal, appuyez  x pour effacer le caractère sous le curseur. **
        ** 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.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         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
+                             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
+
 
+       ** Taper un nombre avant un mouvement le répète autant de fois. **
 
-  Le format de la commande d'effacement  d  est le suivant:
+  1. Déplacez le curseur au début de la ligne marquée ---> ci-dessous.
 
-        [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).
+  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.
 
-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.
+  4. Tapez  0  (zéro) pour déplacer au début de la ligne.
 
+  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
 
-             ** Tapez  dd  pour effacer une ligne complète. **
+  1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne
+     marquée --->.
+
+  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 d' objet  en mode Normal, sans
   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 d' objet  en mode Normal, sans
   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'au mot suivant tapez :         dw
+
+  2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez :   d$
+
+  3. Pour effacer toute une ligne tapez :                         dd
 
+  4. Pour répéter un déplacement ajoutez un quantificateur :      2w
 
-  1. Pour effacer du curseur jusqu'à la fin d'un mot tapez:   dw
+  5. Le format d'une commande de changement est :
 
-  2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez:        d$
+       opérateur   [nombre]   déplacement
 
-  3. Pour effacer toute une ligne tapez:  dd
+     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.
 
-  4. Le format d'une commande en mode Normal est:
+  6. Pour se déplacer au début de ligne, utilisez un zéro :  0
 
-       [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.
+  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
 
-  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 d' objet  en mode Normal, sans
 
   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  c 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 apprendre par la pratique, pas par
 ---> 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 .  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 . 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.
 
-  2. Tapez  G  majuscule (Maj-G) pour vous rendre à la fin du fichier.
+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')
 
-  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).
+  2. Tapez  G   pour vous déplacer à la fin du fichier.
+     Tapez  gg  pour vous déplacer au début du fichier.
 
-  4. Si vous vous sentez prêt à faire ceci, effectuez les étapes 1 à 3.
+  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.
-
-Note: Quand la recherche atteint la fin du fichier, elle reprend au début.
+---> erreur ne s'écrit pas "errreuur" ; errreuur est une erreur.
 
+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.
-
-  4. Tapez  %  pour replacer le curseur sur l'autre parenthèse.
+  3. Le curseur se déplacera sur la parenthèse out crochet correspondant.
 
----> Voici ( une ligne de test contenant des (, des [ ] et des { } )).
+  4. Tapez  %  pour replacer le curseur sur la parenthèse ou crochet
+     correspondant.
 
-Note: Cette fonctionnalité est très utile lors du débogage d'un programme qui
-      contient des parenthèses déséquilibrées !
+  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 !
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-              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:  Toutes les commandes  :  doivent finir par la frappe de <Entrée>.
+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>.
+        À 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. Tapez à nouveau  :!dir  ou  :!ls  pour visualiser le contenu du dossier
-     courant et choisissez un nom de fichier, tel que TEST.
+  1. Déplacez le curseur sur cette ligne.
 
-  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 !
+  2. Appuyez  v  et déplacez le curseur vers la cinquième ligne plus bas.
+     Remarquez que le texte est en surbrillance.
 
-  3. Puis rendez-vous au bas de cette page et tapez à nouveau  Ctrl-G .
-     NOTEZ ÉGALEMENT CE NUMÉRO !
+  3. Appuyez  :  . En bas de l'écran  :'<,'> va apparaître.
 
-  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.
+  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.
 
-  5. Une fois encore, vérifiez la présence du fichier avec  :!dir  mais NE
-     L'EFFACEZ PAS.
+  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.
 
+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 **
 
-  1. Tapez  :!dir  pour vérifier que votre fichier TEST est encore là.
+        ** Pour insérer le contenu d'un fichier, tapez  :r FICHIER **
 
-  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
+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.
 
 
-  1.  :!commande  exécute une commande externe.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                             RÉSUMÉ DE LA LEÇON 5
 
-      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.
+  1. :!commande  exécute une commande externe.
 
-  3.  :#,#w FICHIER  enregistre les lignes # à # dans le fichier FICHIER.
+     Quelques exemples pratiques :
+      (MS-DOS)        (Unix)
+       :!dir           :!ls          affiche le contenu du répertoire courant.
+       :!del FICHIER   :!rm FICHIER  efface FICHIER.
 
-  4.  :r FICHIER  récupère le fichier FICHIER et l'insère dans le fichier
-                 courant à partir de la position du curseur.
+  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 : L'OUVERTURE
+                      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.
 
-  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é.
+  5. Utilisez  e  pour vous déplacer vers le mot incomplet suivant et
+     répétez les étapes 3 et 4.
 
----> Cette ligne vous permet de pratiquer
----> Cette ligne vous permet de pratiquer l'ajout de texte en fin de ligne.
+---> 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.
+
+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. 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.
+  3. Appuyez <Échap> pour quitter le mode Remplacement. Notez que le reste de
+     la ligne demeure inchangé.
 
----> Pour rendre cette ligne identique à celle du dessous utilisez le clavier.
----> Pour rendre cette ligne identique à la seconde, tapez R et la correction.
+  4. Répétez les étapes pour remplacer les xxx restants.
 
-  4. Notez que lorsque vous appuyez <Échap>, le texte qui n'a pas encore été
-     remplacé reste.
 
+---> L'ajout de 123 à xxx donne xxx.
+---> L'ajout de 123 à 456 donne 579.
+
+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
+
+
+   ** 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> .
+
+  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 ignorent la
-     casse des caractères. **
 
-  1. Recherchez 'ignore' en tapant  /ignore .
+    ** 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 interrompre la mise en surbrillance des résultats, tapez:
-     :nohlsearch
+  6. Pour désactiver 'ignorer casse', entrez :  :set noic
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                            RÉSUMÉ DE LA LEÇON 6
+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>
 
-  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.
 
-  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.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                             RÉSUMÉ DE LA LEÇON 6
 
-  3. Taper un  R  majuscule active le mode Remplacement jusqu'à ce que la
-     touche  <Échap>  soit appuyée pour en sortir.
 
-  4. Taper  :set xxx  active l'option 'xxx'.
+  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.
 
+  5. Taper  R  majuscule active le mode Remplacement jusqu'à ce qu' <Échap>
+     soit appuyé.
 
+  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.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                    Leçon 7 : ACCÉDER À L'AIDE EN LIGNE
+                         Leçon 7.1 : OBTENIR DE L'AIDE
+
 
-                 ** Utiliser le système d'aide en ligne. **
+                  ** 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>
+  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>
 
-  Tapez  :q <Entrée>  pour fermer la fenêtre d'aide.
+
+  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>):
+  d'appuyer sur <Entrée>) :
 
-       :help w
-       :help c_<T
-       :help insert-index
-       :help user-manual
+        :help w
+        :help c_CTRL-D
+        :help c_<T
+        :help insert-index
+        :help user-manual
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                   Leçon 8 : CRÉER UN SCRIPT DE DÉMARRAGE
+                    Leçon 7.2 : CRÉER UN SCRIPT DE DÉMARRAGE
 
-                 ** Activer les fonctionnalités de Vim. **
+                   ** Activer les fonctionnalités de Vim. **
 
   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
+  sont désactivées par défaut. Pour commencer à les utiliser, vous devez
   créer un fichier "vimrc".
 
-  1. Commencez à éditer le fichier "vimrc". Ceci dépend de votre système:
-       :edit ~/.vimrc                  pour Unix
-       :edit $VIM/_vimrc               pour MS-Windows
+  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
+
+  3. Enregistrez le fichier avec :
+        :w
+
+  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 7.3 : COMPLÈTEMENT
+
+
+          ** 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
 
-  2. Intégrez maintenant le texte du fichier "vimrc" d'exemple:
-       :read $VIMRUNTIME/vimrc_example.vim
+  3. Tapez le début d'une commande :   :e
 
-  3. Enregistrez le fichier avec:
-       :write
+  4. Appuyez  CTRL-D  et Vim affichera une liste de commandes qui commencent
+     par "e".
 
-  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. 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).
+
+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. Tapez  :help cmd  pour trouver l'aide sur  cmd .
+
+  3. Tapez  CTRL-W CTRL-W  pour sauter à une autre fenêtre.
+
+  4. Tapez  :q  pour fermer la fenêtre d'aide.
 
-  Ceci conclut le Tutoriel Vim.  Le but était de vous donner un bref aperçu de
+  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
   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.
-  E-mail:      version.francaise@free.fr
-  Last Change: 2003 May 29
+  Dernières mises à jour par Dominique Pellé.
+
+  E-mail :      dominique.pelle@gmail.com
+  Last Change : 2008 Nov 23
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
index 84e6bd421259426a01c85075f48e0a5200b951ae..6fb32709796123073a96f52acf8f9e613d4d2b00 100644 (file)
@@ -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
      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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                        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
   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
 
   1. Törlés a kurzortól a szó végéig:    dw
 
-  2. Törlés a kurzortól a s 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
      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
 
   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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                      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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                       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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                       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 programot debugolunk, amelyben a
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                     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 programot debugolunk, amelyben a
      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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                     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
 
   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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                        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
 
   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. 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.
+  3. Nyomjon R karaktert és írja ét a szöveg maradékát az elsõ sorban
+     úgy, hogy a  két sor egyezõ legyen.
 
----> 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.
+---> 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.
 
-  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
                               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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                      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
   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
   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.
+
+  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
 
-  Modified for Vim by Bram Moolenaar.
index 84e6bd421259426a01c85075f48e0a5200b951ae..6fb32709796123073a96f52acf8f9e613d4d2b00 100644 (file)
@@ -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
      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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                        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
   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
 
   1. Törlés a kurzortól a szó végéig:    dw
 
-  2. Törlés a kurzortól a s 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
      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
 
   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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                      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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                       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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                       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 programot debugolunk, amelyben a
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                     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 programot debugolunk, amelyben a
      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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                     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
 
   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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                        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
 
   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. 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.
+  3. Nyomjon R karaktert és írja ét a szöveg maradékát az elsõ sorban
+     úgy, hogy a  két sor egyezõ legyen.
 
----> 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.
+---> 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.
 
-  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
                               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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                      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
   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
   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.
+
+  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
 
-  Modified for Vim by Bram Moolenaar.
index b64155ff7d8befa1829797d23821f5ce2e1e8f86..ec486d911de5f75bf83375b7a53f9cbb289cea52 100644 (file)
@@ -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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                        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
   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
 
   1. Törlés a kurzortól a szó végéig:    dw
 
-  2. Törlés a kurzortól a s 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
      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
 
   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
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                      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 programot debugolunk, amelyben a
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                     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 programot debugolunk, amelyben a
      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. 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.
+  3. Nyomjon R karaktert és írja ét a szöveg maradékát az első sorban
+     úgy, hogy a  két sor egyező legyen.
 
----> 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.
+---> 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.
 
-  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.
+
+  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
 
-  Modified for Vim by Bram Moolenaar.
index f043e42f2c63bfe0b375ce7f8a86e5dfb7694fd1..513439344e1f80f093baa5bda1e06bde7d84e328 100644 (file)
@@ -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 
 
          ** 1ʸ»ú°Ê¾å¤òÃÖ¤­´¹¤¨¤ë¤Ë¤ÏÂçʸ»ú¤Î R ¤È¥¿¥¤¥×¤·¤Þ¤·¤ç¤¦ **
 
-  1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¶È¤Ë¥«¡¼¥½¥ë¤ò°Üư¤·¤Þ¤¹¡£ºÇ½é¤Î xxx ¤ÎÀèÆ¬¤Ë°Üư¤·
+  1. °Ê²¼¤Î ---> ¤È¼¨¤µ¤ì¤¿¹Ô¤Ë¥«¡¼¥½¥ë¤ò°Üư¤·¤Þ¤¹¡£ºÇ½é¤Î xxx ¤ÎÀèÆ¬¤Ë°Üư¤·
      ¤Þ¤¹¡£
 
   2. R ¤ò²¡¤·¤Æ¡¢2¹ÔÌܤοôÃͤò¥¿¥¤¥×¤¹¤ë¤³¤È¤Ç¡¢xxx ¤¬ÃÖ´¹¤µ¤ì¤Þ¤¹¡£
index 3bb3c2c373e9dbd3c01abfbbc1bb2e9868c12724..7be2120a5c53c95b612703601525b39275fdfd92 100644 (file)
@@ -257,7 +257,7 @@ NOTE: 
 
       ** \89½\89ñ\82à\8ds\82¢\82½\82¢\8cJ\82è\95Ô\82µ\82Ì\83\82\81[\83V\83\87\83\93\82Ì\91O\82É\90\94\92l\82ð\83^\83C\83v\82µ\82Ü\82·\81B **
 
-  1. \88È\89º\82Ì ---> \82Æ\8e¦\82³\82ê\82½\8bÆ\82Ì\90æ\93ª\82É\83J\81[\83\\83\8b\82ð\88Ú\93®\82µ\82Ü\82·\81B
+  1. \88È\89º\82Ì ---> \82Æ\8e¦\82³\82ê\82½\8ds\82Ì\90æ\93ª\82É\83J\81[\83\\83\8b\82ð\88Ú\93®\82µ\82Ü\82·\81B
 
   2. 2dw \82ð\83^\83C\83v\82µ\82Ä\92P\8cê2\82Â\95ª\88Ú\93®\82µ\82Ü\82·\81B
 
@@ -741,7 +741,7 @@ NOTE: 
 
       ** \83J\81[\83\\83\8b\82Ì\8e\9f\82Ì\88Ê\92u\82©\82ç\83e\83L\83X\83g\82ð\92Ç\89Á\82·\82é\82É\82Í a \82Æ\83^\83C\83v\82µ\82Ü\82· **
 
-  1. \83J\81[\83\\83\8b\82ð ---> \82Å\8e¦\82³\82ê\82½\8bÆ\82Ö\88Ú\93®\82µ\82Ü\82µ\82å\82¤\81B
+  1. \83J\81[\83\\83\8b\82ð ---> \82Å\8e¦\82³\82ê\82½\8ds\82Ö\88Ú\93®\82µ\82Ü\82µ\82å\82¤\81B
 
   2. e \82ð\89\9f\82µ\82Ä li \82Ì\8fI\92[\95\94\82Ü\82Å\83J\81[\83\\83\8b\82ð\88Ú\93®\82µ\82Ü\82·\81B
 
@@ -764,7 +764,7 @@ Note: a, i 
 
          ** 1\95\8e\9a\88È\8fã\82ð\92u\82«\8a·\82¦\82é\82É\82Í\91å\95\8e\9a\82Ì R \82Æ\83^\83C\83v\82µ\82Ü\82µ\82å\82¤ **
 
-  1. \88È\89º\82Ì ---> \82Æ\8e¦\82³\82ê\82½\8bÆ\82É\83J\81[\83\\83\8b\82ð\88Ú\93®\82µ\82Ü\82·\81B\8dÅ\8f\89\82Ì xxx \82Ì\90æ\93ª\82É\88Ú\93®\82µ
+  1. \88È\89º\82Ì ---> \82Æ\8e¦\82³\82ê\82½\8ds\82É\83J\81[\83\\83\8b\82ð\88Ú\93®\82µ\82Ü\82·\81B\8dÅ\8f\89\82Ì xxx \82Ì\90æ\93ª\82É\88Ú\93®\82µ
      \82Ü\82·\81B
 
   2. R \82ð\89\9f\82µ\82Ä\81A2\8ds\96Ú\82Ì\90\94\92l\82ð\83^\83C\83v\82·\82é\82±\82Æ\82Å\81Axxx \82ª\92u\8a·\82³\82ê\82Ü\82·\81B
index e12cd698625389f38c97e11084f83ef09b6621ac..95e108efe66e493a940198ca6a00040d45deee8c 100644 (file)
@@ -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 が置換されます。
diff --git a/runtime/tutor/tutor.nb b/runtime/tutor/tutor.nb
new file mode 100644 (file)
index 0000000..17178df
--- /dev/null
@@ -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 :
diff --git a/runtime/tutor/tutor.nb.utf-8 b/runtime/tutor/tutor.nb.utf-8
new file mode 100644 (file)
index 0000000..a7826b7
--- /dev/null
@@ -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 :
index 4ae5355e9170218f9af17a634ce8669e2d04461e..96aa45c90b7280756816f0c9efa05c8fb5a610b1 100644 (file)
@@ -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
         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.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
   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
 
 ---> 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
 
   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
 
   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
 ---> 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
   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
                  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
 ---> 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
                     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
 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 Normal bez operatora przeniesie kursor
 
   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
   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
   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
                             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
 
   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
 
   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
 
   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
                      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
 
   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
      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
      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 c
+  3. Wpisz numer linii, w której by³e¶ a potem  G . To przeniesie C
      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
                         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
 
   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
 
   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
   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 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
                    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
                    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
   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
 
   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
 
   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
 ---> 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
 
   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
                         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
 
   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
   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
   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
 
   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
                            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
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  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
   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
   rev. Marzec 2002
   2nd rev. Wrzesieñ 2004
   3rd rev. Marzec 2006
+  4th rev. Grudzieñ 2008
   Wszelkie uwagi proszê kierowaæ na: mikmach@wp.pl
index 98971d014ac904aa869eea89e28a45767ebd0c72..8c647e131d9f9b2e5b84e966a9c2ca3a9a99ed51 100644 (file)
@@ -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\9cniæ je wszystkie w tym tutorialu. Ten przewodnik ma nauczyæ
-     Ciê pos³ugiwaæ siê wystarczaj¹co wieloma komendami by\9c móg³ ³atwo
+     Ciê pos³ugiwaæ siê wystarczaj¹co wieloma komendami, by\9c 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
         UWAGA:
         Polecenia wykonywane w czasie lekcji zmodyfikuj¹ tekst. Zrób
         wcze\9cniej kopiê tego pliku do æwiczeñ (je\9cli zacz¹³e\9c 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\9cli 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\9cli bêdziesz jedynie czyta³ tekst, szybko zapomnisz wiele
         poleceñ!
 
-     Teraz upewnij siê, ¿e nie masz wci\9cniêtego CapsLocka i wciskaj  j
+     Teraz upewnij siê, ¿e nie masz wci\9cniêtego Caps Locka i wciskaj  j
      tak d³ugo dopóki Lekcja 1.1. nie wype³ni ca³kowicie ekranu.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
   3. U¿ywaj¹c strza³ki w dó³ przejd\9f do nastêpnej lekcji.
 
-Uwaga: Je\9cli nie jeste\9c pewien czego\9c co wpisa³e\9c, wci\9cnij <ESC> by wróciæ do
+Uwaga: Je\9cli nie jeste\9c pewien czego\9c co wpisa³e\9c, wci\9cnij <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\9cnij <ESC> (aby upewniæ siê, ¿e jeste\9c w trybie Normal).
   2. Wpisz:                    :q!<ENTER>.
-     To spowoduje wyj\9ccie z edytora PORZUCAJ¥C wszelkie zmiany jakie
-     zd¹¿y³e\9c zrobiæ. Je\9cli chcesz zapamiêtaæ zmiany i wyj\9cæ
+     To spowoduje wyj\9ccie z edytora PORZUCAJ¥C wszelkie zmiany, jakie
+     zd¹¿y³e\9c zrobiæ. Je\9cli chcesz zapamiêtaæ zmiany i wyj\9cæ,
      wpisz:                    :wq<ENTER>
 
   3. Kiedy widzisz znak zachêty pow³oki wpisz komendê, ¿eby wróciæ
      do tutoriala. Czyli:      vimtutor<ENTER>
 
-  4. Je\9cli chcesz zapamiêtaæ polecenia, wykonaj kroki 1. do 3. aby
+  4. Je\9cli chcesz zapamiêtaæ polecenia, wykonaj kroki 1. do 3., aby
      wyj\9cæ i wróciæ do edytora.
 
 UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobi³e\9c. W nastêpnych
@@ -85,7 +85,7 @@ UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobi
 
 ---> Kkrowa prrzeskoczy³a prrzez ksiiê¿ycc.
 
-  5. Teraz kiedy zdanie jest poprawione przejd\9f do Lekcji 1.4.
+  5. Teraz, kiedy zdanie jest poprawione, przejd\9f do Lekcji 1.4.
 
 UWAGA: Ucz siê przez æwiczenie, nie wkuwanie.
 
@@ -101,18 +101,18 @@ UWAGA: Ucz si
 
   1. Przenie\9c 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\9cnij  i  a nastêpnie wpisz konieczne poprawki.
 
-  4. Po poprawieniu b³êdu wci\9cnij <ESC> by wróciæ do trybu Normal.
-     Powtarzaj kroki 2. do 4. aby poprawiæ ca³e zdanie.
+  4. Po poprawieniu b³êdu wci\9cnij <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\9f do
+  5. Kiedy czujesz siê swobodnie wstawiaj¹c tekst, przejd\9f do
      podsumowania poni¿ej.
 
 
@@ -129,7 +129,7 @@ UWAGA: Ucz si
 
   3. Kiedy tekst zosta³ dodany, wci\9cnij <ESC> i wróæ do trybu Normalnego.
 
-  4. Przenie\9c kursor do drugiej linii oznaczonej ---> i powtórz kroki 2 i 3
+  4. Przenie\9c 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
 ---> Tu te¿ trochê bra
      Tu te¿ trochê brakuje.
 
-  5. Kiedy ju¿ utrwali³e\9c æwiczenie przejd\9f do lekcji 1.6.
+  5. Kiedy ju¿ utrwali³e\9c æwiczenie, przejd\9f do lekcji 1.6.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          Lekcja 1.6.: EDYCJA PLIKU
 
                  ** U¿yj  :wq  aby zapisaæ plik i wyj\9cæ. **
 
-   !! 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\9cli masz dostêp do innego terminala zrób kolejne kroki tam.
+     lub, je\9cli 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\9c w poprzednich lekcjach.
+  3. Dodaj i usuñ tekst tak, jak siê nauczy³e\9c w poprzednich lekcjach.
 
   4. Zapisz plik ze zmianami i opu\9cæ Vima:  :wq<ENTER>
 
-  5. Je\9cli zakoñczy³e\9c vimtutor w kroku 1. uruchom go ponownie i przejd\9f
+  5. Je\9cli zakoñczy³e\9c vimtutor w kroku 1., uruchom go ponownie i przejd\9f
      do podsumowania poni¿ej.
 
   6. Po przeczytaniu wszystkich kroków i ich zrozumieniu: wykonaj je.
@@ -168,14 +168,14 @@ UWAGA: Ucz si
   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\9cæ do Vima (z pow³oki) wpisz:
+  2. By wej\9cæ do Vima, (z pow³oki) wpisz:
                            vim NAZWA_PLIKU<ENTER>
 
-  3. By wyj\9cæ z Vima wpisz:
-                           <ESC> :q!<ENTER>  by usun¹c wszystkie zmiany.
+  3. By wyj\9cæ z Vima, wpisz:
+                           <ESC> :q!<ENTER>  by usun¹æ wszystkie zmiany.
             LUB:           <ESC> :wq<ENTER>  by zmiany zachowaæ.
 
-  4. By usun¹æ znak pod kursorem wci\9cnij:  x
+  4. By usun¹æ znak pod kursorem, wci\9cnij:  x
 
   5. By wstawiæ tekst przed kursorem lub dodaæ:
        i   wpisz tekst   <ESC>         wstawi przed kursorem
@@ -189,18 +189,18 @@ Teraz mo
                  Lekcja 2.1.: POLECENIE DELETE (usuwanie)
 
 
-                     ** Wpisz  dw  by usun¹c wyraz. **
+                     ** Wpisz  dw  by usun¹æ wyraz. **
 
-  1. Wci\9cnij  <ESC>  by upewniæ siê, ¿e jeste\9c w trybie Normal.
+  1. Wci\9cnij  <ESC>, by upewniæ siê, ¿e jeste\9c w trybie Normal.
 
   2. Przenie\9c 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\9cli zobaczysz inny znak oznacza to, ¿e wpisa³e\9c co\9c \9fle, wci\9cnij
+        Je\9cli zobaczysz inny znak, oznacza to, ¿e wpisa³e\9c co\9c \9fle; wci\9cnij
         <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
 ---> Kto\9c wpisa³ koniec tego zdania dwukrotnie. zdania dwukrotnie.
 
 
-  5. Przejd\9f do Lekcji 2.3. by zrozumieæ co siê sta³o.
+  5. Przejd\9f do Lekcji 2.3., by zrozumieæ co siê sta³o.
 
 
 
@@ -235,12 +235,12 @@ Teraz mo
                     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
 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\9clono.
+       tak, jak to okre\9clono.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    Lekcja 2.4.: U¯YCIE MNO¯NIKA DLA RUCHU
@@ -266,32 +266,32 @@ UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor
 
   3. Wpisz  3e  aby przenie\9cæ kursor do koñca trzeciego wyrazu w przód.
 
-  4. Wpisz  0  (zero) aby przenie\9cæ kursor do pocz¹tku linii.
+  4. Wpisz  0  (zero), aby przenie\9cæ 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\9f 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\9cæ 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\9c 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
   1. Przenie\9c kursor do drugiego zdania z wierszyka poni¿ej.
   2. Wpisz  dd  aby usun¹æ wiersz.
   3. Teraz przenie\9c 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
   2. Wpisz  x  aby usun¹æ pierwszy niechciany znak.
   3. Teraz wci\9cnij  u  aby cofn¹æ skutki ostatniego polecenia.
   4. Tym razem popraw wszystkie b³êdy w linii u¿ywaj¹c polecenia  x .
-  5. Teraz wci\9cnij wielkie U aby przywróciæ liniê do oryginalnego stanu.
-  6. Teraz wci\9cnij  u  kilka razy by cofn¹æ  U  i poprzednie polecenia.
+  5. Teraz wci\9cnij wielkie  U  aby przywróciæ liniê do oryginalnego stanu.
+  6. Teraz wci\9cnij  u  kilka razy, by cofn¹æ  U  i poprzednie polecenia.
   7. Teraz wpisz CTRL-R (trzymaj równocze\9cnie wci\9cniê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
                             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\9f go liczb¹:    2w
+  4. By powtórzyæ ruch, poprzed\9f 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\9cæ 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\9cæ 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
 
   2. Wpisz  dd  aby usun¹æ liniê i przechowaæ j¹ w rejestrze Vima.
 
-  3. Przenie\9c kursor do linii c), POWY¯EJ tej gdzie usuniêta linia powinna
+  3. Przenie\9c kursor do linii c), POWY¯EJ tej, gdzie usuniêta linia powinna
      siê znajdowaæ.
 
   4. Wci\9cnij  p  by wstawiæ liniê poni¿ej kursora.
@@ -404,21 +404,21 @@ UWAGA:  Mno
 
   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\9c wcizn¹³ perê z³ych klawirzy!
---->  Kiedy ten wiersz by³ wstukiwany kto\9c wcisn¹³ parê z³ych klawiszy!
+--->  Kjedy ten wiersz bi³ wstókiwany, kto\9c wcizn¹³ perê z³ych klawirzy!
+--->  Kiedy ten wiersz by³ wstukiwany, kto\9c 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\9c kursor do pierwszej linii poni¿ej oznaczonej --->.
 
@@ -428,7 +428,7 @@ UWAGA: Pami
 
   4. Wci\9cnij <ESC> i przejd\9f 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
                      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\9c siê do pierwszej linii poni¿ej oznaczonej --->
 
@@ -456,7 +456,7 @@ UWAGA: Pami
 
   5. Wpisz  c$ , popraw koniec wiersza i wci\9cnij <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
      polecenie wstawia skasowany tekst PO kursorze (je\9cli ca³a linia
      zosta³a usuniêta, zostanie ona umieszczona w linii poni¿ej kursora).
 
-  2. By zamieniæ znak pod kursorem wci\9cnij  r  a potem znak, który ma zast¹piæ
+  2. By zamieniæ znak pod kursorem, wci\9cnij  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
      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\9cnione w lekcji 6.).
+       Dzieje siê tak kiedy ustawiona jest opcja 'ruler' (wiêcej w lekcji 6.).
 
   2. Wci\9cnij G aby przej\9cæ na koniec pliku.
      Wci\9cnij  gg  aby przej\9cæ do pocz¹tku pliku.
 
-  3. Wpisz numer linii, w której by³e\9c a potem  G . To przeniesie c
+  3. Wpisz numer linii, w której by³e\9c a potem  G . To przeniesie C
      z powrotem do linii, w której by³e\9c kiedy wcisn¹³e\9c CTRL-G.
 
   4. Je\9cli czujesz siê wystarczaj¹co pewnie, wykonaj kroki 1-3.
@@ -511,10 +511,10 @@ UWAGA: Mo
                         Lekcja 4.2.: POLECENIE SZUKAJ
 
 
-            ** Wpisz  /  a nastêpnie wyra¿enie aby je znale\9fæ. **
+            ** Wpisz  /  a nastêpnie wyra¿enie, aby je znale\9fæ. **
 
-  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
 
   4. Je\9cli chcesz szukaæ frazy do ty³u, u¿yj polecenia  ?  zamiast  / .
 
-  5. Aby wróciæ gdzie by³e\9c wci\9cnij  CTRL-O. Powtarzaj by wróciæ dalej. CTRL-I
+  5. Aby wróciæ gdzie by³e\9c, wci\9cnij  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
 
   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
   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\9cnij  n  by znale\9fæ nastêpne wyst¹pienie szukanej
-     frazy tym samym kierunku lub  N  by szukaæ w kierunku przeciwnym.
+     frazy 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
                    Lekcja 5.2.: WIÊCEJ O ZAPISYWANIU PLIKÓW
 
 
-          ** By zachowaæ zmiany w tek\9cci wpisz :w NAZWA_PLIKU . **
+          ** By zachowaæ zmiany w tek\9ccie, 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\9c.)
 
   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\9c 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\9c.
 
   5. Teraz usuñ plik wpisuj¹c (MS-DOS):                   :!del TEST
@@ -649,7 +649,7 @@ Uwaga: Zauwa
                    Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU
 
 
-         ** By zachowaæ czê\9cæ pliku wpisz  v ruch :w NAZWA_PLIKU **
+         ** By zachowaæ czê\9cæ pliku, wpisz  v ruch :w NAZWA_PLIKU **
 
   1. Przenie\9c kursor do tego wiersza.
 
@@ -664,26 +664,26 @@ Uwaga: Zauwa
   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\9cniêcie  v  zaczyna tryb Wizualny. Mo¿esz poruszaæ kursorem by
-       zmieniæ rozmiary zaznaczenia. Mo¿esz te¿ u¿yæ operatora by zrobiæ co\9c
+UWAGA: Wci\9cniêcie  v  zaczyna tryb Wizualny. Mo¿esz poruszaæ kursorem, by
+       zmieniæ rozmiary zaznaczenia. Mo¿esz te¿ u¿yæ operatora, by zrobiæ co\9c
        z tekstem. Na przyk³ad  d  usuwa tekst.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                   Lekcja 5.4.: WSTAWIANIE I £¥CZENIE PLIKÓW
 
 
-           ** By wstawiæ zawarto\9cæ pliku wpisz   :r NAZWA_PLIKU **
+           ** By wstawiæ zawarto\9cæ pliku, wpisz   :r NAZWA_PLIKU **
 
   1. Umie\9cæ kursor tu¿ powy¿ej tej linii.
 
 UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejd\9f
-       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\9ccie zewnêtrznego polecenia. Na przyk³ad
@@ -723,14 +723,14 @@ UWAGA: Mo
 
   1. Przenie\9c kursor do linii poni¿ej oznaczonej --->.
 
-  2. Wpisz  o  (ma³e) by otworzyæ liniê PONI¯EJ kursora i przenie\9cæ siê
+  2. Wpisz  o  (ma³e), by otworzyæ liniê PONI¯EJ kursora i przenie\9cæ siê
      do trybu Insert (wprowadzanie).
 
   3. Wpisz trochê tekstu i wci\9cnij <ESC> by wyj\9cæ z trybu Insert (wprowadzanie).
 
 ---> Po wci\9cniêciu  o  kursor znajdzie siê w otwartej linii w trybie Insert.
 
-  4. By otworzyæ liniê POWY¯EJ kursora wci\9cnij wielkie  O  zamiast ma³ego
+  4. By otworzyæ liniê POWY¯EJ kursora, wci\9cnij 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
 
   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\9cnij <ESC> aby opu\9cciæ tryb
+  4. Dokoñcz wyraz tak, jak w linii poni¿ej. Wci\9cnij <ESC> aby opu\9cciæ tryb
      Insert.
 
   5. U¿yj  e  by przej\9cæ do kolejnego niedokoñczonego wyrazu i powtarzaj kroki
@@ -758,7 +758,7 @@ UWAGA: Mo
 ---> 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
 
   1. Przejd\9f do linii oznaczonej ---> i umie\9cæ kursor za "a)".
 
-  2. Wejd\9f w tryb Visual  v  i przenie\9c kursor na pocz¹tek "pierwszy".
+  2. Wejd\9f w tryb Wizualny  v  i przenie\9c kursor na pocz¹tek "pierwszy".
 
-  3. Wci\9cnij  y  aby yankowaæ (kopiowaæ) pod\9cwietlony tekst.
+  3. Wci\9cnij  y  aby kopiowaæ (yankowaæ) pod\9cwietlony tekst.
 
   4. Przenie\9c kursor do koñca nastêpnej linii:  j$
 
-  5. Wci\9cnij  p  aby wpakowaæ (paste) tekst.  Dodaj:  a drugi<ESC> .
+  5. Wci\9cnij  p  aby wkleiæ (wpakowaæ) tekst.  Dodaj:  a drugi<ESC> .
 
-  6. U¿yj trybu Wizualnego aby wybraæ " element.", yankuj go  y , przejd\9f 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\9f 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
                         Lekcja 6.5.: USTAWIANIE OPCJI
 
 
-** Ustawianie opcji tak by szukaj lub substytucja ignorowa³y wielko\9cæ liter **
+** Ustawianie opcji tak, by szukaj lub substytucja ignorowa³y wielko\9cæ liter **
 
   1. Szukaj 'ignore' wpisuj¹c:    /ignore<ENTER>
      Powtórz szukanie kilka razy naciskaj¹c klawisz  n .
@@ -828,7 +828,7 @@ Uwaga: mo
 
   6. Aby wy³¹czyæ ignorowanie wielko\9cci liter:  :set noic
 
-Uwaga: Aby usun¹æ pod\9cwietlanie dopasowañ wpisz:   :nohlsearch
+Uwaga: Aby usun¹æ pod\9cwietlanie dopasowañ, wpisz:   :nohlsearch
 Uwaga: Aby ignorowaæ wielko\9cæ liter dla jednego wyszukiwania: /ignore\c<ENTER>
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                             LEKCJA 6. PODSUMOWANIE
@@ -837,36 +837,36 @@ Uwaga: Aby ignorowa
   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\9cniê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\9cæ znaków
        'is'  'incsearch'       poka¿ czê\9cciowe dopasowania
        'hls' 'hlsearch'        pod\9cwietl 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\9cci:
        - wci\9cnij klawisz <HELP> (je\9cli taki masz)
        - wci\9cnij klawisz <F1> (je\9cli 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
   3. Zapisz plik:
      :w
 
-  Nastêpnym razem gdy zaczniesz pracê w Vimie bêdzie on u¿ywaæ pod\9cwietlania
+  Nastêpnym razem, gdy zaczniesz pracê w Vimie bêdzie on u¿ywaæ pod\9cwietlania
   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
 
   1. Upewnij siê, ¿e Vim nie jest w trybie kompatybilno\9cci:   :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\9cnij  CTRL-D  i Vim poka¿e listê poleceñ jakie zaczynaj¹ siê na "e".
+  4. Wci\9cnij  CTRL-D  i Vim poka¿e listê poleceñ, jakie zaczynaj¹ siê na "e".
 
   5. Wci\9cnij  <TAB>  i Vim uzupe³ni polecenie do ":edit".
 
@@ -925,7 +925,7 @@ UWAGA: Uzupe
                            Lekcja 7. PODSUMOWANIE
 
 
-  1. Wpisz  :help  lub wci\9cnij <F1> lub <Help> aby otworzyæ okno pomocy.
+  1. Wpisz  :help  albo wci\9cnij <F1> lub <Help> aby otworzyæ okno pomocy.
 
   2. Wpisz  :help cmd  aby uzyskaæ pomoc o  cmd .
 
@@ -945,14 +945,14 @@ UWAGA: Uzupe
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  Tutaj siê koñczy tutorial Vima. Zosta³ on pomy\9clany tak aby daæ krótki
+  Tutaj siê koñczy tutorial Vima. Zosta³ on pomy\9clany tak, aby daæ krótki
   przegl¹d jego mo¿liwo\9cci, wystarczaj¹cy by\9c móg³ go u¿ywaæ. Jest on
-  daleki od kompletno\9cci poniewa¿ Vim ma o wiele, wiele wiêcej poleceñ.
+  daleki od kompletno\9cci, 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\9cwiêcona Vimowi. U¿yteczna zw³aszcza dla
+  Pierwsza ksi¹¿ka ca³kowicie po\9cwiê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
   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\9c zrobiæ
+  To dobra ksi¹¿ka, by dowiedzieæ siê niemal wszystkiego, co chcia³by\9c zrobiæ
   z Vi. Szósta edycja zawiera te¿ informacje o Vimie.
 
   Po polsku wydano:
@@ -991,4 +991,5 @@ UWAGA: Uzupe
   rev. Marzec 2002
   2nd rev. Wrzesieñ 2004
   3rd rev. Marzec 2006
+  4th rev. Grudzieñ 2008
   Wszelkie uwagi proszê kierowaæ na: mikmach@wp.pl
index 88f95d126b371ad3aa35949568a03e337730b12a..3faaaa801704b532f5bd0afb66fbd54aaa939b79 100644 (file)
@@ -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
         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.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
   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 Normal bez operatora przeniesie kursor
 
   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 c
+  3. Wpisz numer linii, w której byłeś a potem  G . To przeniesie C
      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 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 <TA
                            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 <TA
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  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 <TA
   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 <TA
   rev. Marzec 2002
   2nd rev. Wrzesień 2004
   3rd rev. Marzec 2006
+  4th rev. Grudzień 2008
   Wszelkie uwagi proszę kierować na: mikmach@wp.pl
index 2c0de3d8a67cb5092ddfb44244a58664102162ba..b35100c1bce310cbb849cbbf1b7896f0bc4e95b0 100644 (file)
@@ -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