Mercurial > vim
changeset 2034:7bc41231fbc7
Update runtime files.
line wrap: on
line diff
--- a/runtime/autoload/ada.vim +++ b/runtime/autoload/ada.vim @@ -1,15 +1,15 @@ "------------------------------------------------------------------------------ " Description: Perform Ada specific completion & tagging. " Language: Ada (2005) -" $Id$ +" $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $ " Maintainer: Martin Krischik <krischik@users.sourceforge.net> " Taylor Venable <taylor@metasyntax.net> " Neil Bird <neil@fnxweb.com> " Ned Okie <nokie@radford.edu> -" $Author$ -" $Date$ +" $Author: krischik $ +" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ " Version: 4.6 -" $Revision$ +" $Revision: 887 $ " $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/ada.vim $ " History: 24.05.2006 MK Unified Headers " 26.05.2006 MK ' should not be in iskeyword.
--- a/runtime/autoload/adacomplete.vim +++ b/runtime/autoload/adacomplete.vim @@ -1,12 +1,12 @@ "------------------------------------------------------------------------------ " Description: Vim Ada omnicompletion file " Language: Ada (2005) -" $Id$ +" $Id: adacomplete.vim 887 2008-07-08 14:29:01Z krischik $ " Maintainer: Martin Krischik -" $Author$ -" $Date$ +" $Author: krischik $ +" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ " Version: 4.6 -" $Revision$ +" $Revision: 887 $ " $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $ " History: 24.05.2006 MK Unified Headers " 26.05.2006 MK improved search for begin of word.
--- a/runtime/autoload/decada.vim +++ b/runtime/autoload/decada.vim @@ -1,13 +1,13 @@ "------------------------------------------------------------------------------ " Description: Vim Ada/Dec Ada compiler file " Language: Ada (Dec Ada) -" $Id$ +" $Id: decada.vim 887 2008-07-08 14:29:01Z krischik $ " Copyright: Copyright (C) 2006 Martin Krischik " Maintainer: Martin Krischik <krischik@users.sourceforge.net> -" $Author$ -" $Date$ +" $Author: krischik $ +" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ " Version: 4.6 -" $Revision$ +" $Revision: 887 $ " $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/decada.vim $ " History: 21.07.2006 MK New Dec Ada " 15.10.2006 MK Bram's suggestion for runtime integration
--- a/runtime/autoload/getscript.vim +++ b/runtime/autoload/getscript.vim @@ -1,8 +1,8 @@ " --------------------------------------------------------------------- " getscript.vim " Author: Charles E. Campbell, Jr. -" Date: Jul 10, 2008 -" Version: 31 +" Date: Dec 28, 2009 +" Version: 32 " Installing: :help glvs-install " Usage: :help glvs " @@ -12,19 +12,24 @@ " Initialization: {{{1 " if you're sourcing this file, surely you can't be " expecting vim to be in its vi-compatible mode! +if exists("g:loaded_getscript") + finish +endif +let g:loaded_getscript= "v32" if &cp echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)" finish endif +if v:version < 702 + echohl WarningMsg + echo "***warning*** this version of getscript needs vim 7.2" + echohl Normal + finish +endif let s:keepcpo = &cpo set cpo&vim "DechoTabOn -if exists("g:loaded_getscript") - finish -endif -let g:loaded_getscript= "v31" - " --------------------------- " Global Variables: {{{1 " --------------------------- @@ -40,25 +45,6 @@ if !exists("g:getscript_cygwin") let g:getscript_cygwin= 0 endif endif -" shell quoting character {{{2 -if exists("g:netrw_shq") && !exists("g:getscript_shq") - let g:getscript_shq= g:netrw_shq -elseif !exists("g:getscript_shq") - if exists("&shq") && &shq != "" - let g:getscript_shq= &shq - elseif exists("&sxq") && &sxq != "" - let g:getscript_shq= &sxq - elseif has("win32") || has("win95") || has("win64") || has("win16") - if g:getscript_cygwin - let g:getscript_shq= "'" - else - let g:getscript_shq= '"' - endif - else - let g:getscript_shq= "'" - endif -" call Decho("g:getscript_shq<".g:getscript_shq.">") -endif " wget vs curl {{{2 if !exists("g:GetLatestVimScripts_wget") @@ -112,7 +98,9 @@ if g:GetLatestVimScripts_allowautoinstal endif endif - if exists('$HOME') && isdirectory(expand("$HOME")."/".s:dotvim) + if exists("g:GetLatestVimScripts_autoinstalldir") && isdirectory(g:GetLatestVimScripts_autoinstalldir) + let s:autoinstall= g:GetLatestVimScripts_autoinstalldir" + elseif exists('$HOME') && isdirectory(expand("$HOME")."/".s:dotvim) let s:autoinstall= $HOME."/".s:dotvim endif " call Decho("s:autoinstall<".s:autoinstall.">") @@ -165,7 +153,6 @@ fun! getscript#GetLatestVimScripts() " call Dret("GetLatestVimScripts : unable to find a GetLatest subdirectory") return endif - if filewritable(datadir) != 2 echoerr "(getLatestVimScripts) Your ".datadir." isn't writable" " call Dret("GetLatestVimScripts : non-writable directory<".datadir.">") @@ -182,21 +169,29 @@ fun! getscript#GetLatestVimScripts() " call Dret("GetLatestVimScripts : non-writable datafile<".datafile.">") return endif + " -------------------- + " Passed sanity checks + " -------------------- + " call Decho("datadir <".datadir.">") " call Decho("datafile <".datafile.">") - " don't let any events interfere (like winmanager's, taglist's, etc) - let eikeep= &ei - let hlskeep= &hls - set ei=all hls&vim + " don't let any event handlers interfere (like winmanager's, taglist's, etc) + let eikeep = &ei + let hlskeep = &hls + let acdkeep = &acd + set ei=all hls&vim noacd - " record current directory, change to datadir, open split window with - " datafile + " Edit the datafile (ie. GetLatestVimScripts.dat): + " 1. record current directory (origdir), + " 2. change directory to datadir, + " 3. split window + " 4. edit datafile let origdir= getcwd() " call Decho("exe cd ".fnameescape(substitute(datadir,'\','/','ge'))) exe "cd ".fnameescape(substitute(datadir,'\','/','ge')) split -" call Decho("exe e ".fnameescape(substitute(datafile,'\','/','ge'))) +" call Decho("exe e ".fnameescape(substitute(datafile,'\','/','ge'))) exe "e ".fnameescape(substitute(datafile,'\','/','ge')) res 1000 let s:downloads = 0 @@ -207,69 +202,68 @@ fun! getscript#GetLatestVimScripts() " call Decho("searching plugins for GetLatestVimScripts dependencies") let lastline = line("$") " call Decho("lastline#".lastline) - let plugins = split(globpath(&rtp,"plugin/*.vim"),'\n') + let firstdir = substitute(&rtp,',.*$','','') + let plugins = split(globpath(firstdir,"plugin/*.vim"),'\n') + let plugins = plugins + split(globpath(firstdir,"AsNeeded/*.vim"),'\n') let foundscript = 0 - let firstdir= "" - - for plugin in plugins -" call Decho("plugin<".plugin.">") - " don't process plugins in system directories - if firstdir == "" - let firstdir= substitute(plugin,'[/\\][^/\\]\+$','','') -" call Decho("setting firstdir<".firstdir.">") - else - let curdir= substitute(plugin,'[/\\][^/\\]\+$','','') -" call Decho("curdir<".curdir.">") - if curdir != firstdir -" call Decho("skipping subsequent plugins: curdir<".curdir."> != firstdir<".firstdir.">") - break - endif - endif + " this loop updates the GetLatestVimScripts.dat file + " with dependencies explicitly mentioned in the plugins + " via GetLatestVimScripts: ... lines + " It reads the plugin script at the end of the GetLatestVimScripts.dat + " file, examines it, and then removes it. + for plugin in plugins +" call Decho(" ") +" call Decho("plugin<".plugin.">") " read plugin in " evidently a :r creates a new buffer (the "#" buffer) that is subsequently unused -- bwiping it $ -" call Decho(" ") " call Decho(".dependency checking<".plugin."> line$=".line("$")) -" call Decho("exe silent r ".fnameescape(plugin)) +" call Decho("..exe silent r ".fnameescape(plugin)) exe "silent r ".fnameescape(plugin) exe "silent bwipe ".bufnr("#") while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0 - let newscript= substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e') - let llp1 = lastline+1 -" call Decho("..newscript<".newscript.">") - - " don't process ""GetLatestVimScripts lines -- those that have been doubly-commented out - if newscript !~ '^"' - " found a "GetLatestVimScripts: # #" line in the script; check if its already in the datafile - let curline = line(".") - let noai_script = substitute(newscript,'\s*:AutoInstall:\s*','','e') - exe llp1 - let srchline = search('\<'.noai_script.'\>','bW') -" call Decho("..noai_script<".noai_script."> srch=".srchline."curline#".line(".")." lastline#".lastline) + let depscript = substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e') + let depscriptid = substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\(\d\+\)\s\+.*$','\1','') + let llp1 = lastline+1 +" call Decho("..depscript<".depscript.">") - if srchline == 0 - " found a new script to permanently include in the datafile - let keep_rega = @a - let @a = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','') - exe lastline."put a" - echomsg "Appending <".@a."> to ".datafile." for ".newscript -" call Decho("..APPEND (".noai_script.")<".@a."> to GetLatestVimScripts.dat") - let @a = keep_rega - let lastline = llp1 - let curline = curline + 1 - let foundscript = foundscript + 1 -" else " Decho -" call Decho("..found <".noai_script."> (already in datafile at line#".srchline.")") - endif + " found a "GetLatestVimScripts: # #" line in the script; + " check if its already in the datafile by searching backwards from llp1, + " the (prior to reading in the plugin script) last line plus one of the GetLatestVimScripts.dat file, + " for the script-id with no wrapping allowed. + let curline = line(".") + let noai_script = substitute(depscript,'\s*:AutoInstall:\s*','','e') + exe llp1 + let srchline = search('^\s*'.depscriptid.'\s\+\d\+\s\+.*$','bW') + if srchline == 0 + " this second search is taken when, for example, a 0 0 scriptname is to be skipped over + let srchline= search('\<'.noai_script.'\>','bW') + endif +" call Decho("..noai_script<".noai_script."> depscriptid#".depscriptid." srchline#".srchline." curline#".line(".")." lastline#".lastline) - let curline = curline + 1 - exe curline + if srchline == 0 + " found a new script to permanently include in the datafile + let keep_rega = @a + let @a = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','') + echomsg "Appending <".@a."> to ".datafile." for ".depscript +" call Decho("..Appending <".@a."> to ".datafile." for ".depscript) + exe lastline."put a" + let @a = keep_rega + let lastline = llp1 + let curline = curline + 1 + let foundscript = foundscript + 1 +" else " Decho +" call Decho("..found <".noai_script."> (already in datafile at line#".srchline.")") endif + + let curline = curline + 1 + exe curline endwhile + " llp1: last line plus one let llp1= lastline + 1 " call Decho(".deleting lines: ".llp1.",$d") exe "silent! ".llp1.",$d" @@ -282,7 +276,9 @@ fun! getscript#GetLatestVimScripts() setlocal nomod endif + " -------------------------------------------------------------------- " Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat + " -------------------------------------------------------------------- " call Decho("begin: checking out-of-date scripts using datafile<".datafile.">") setlocal lz 1 @@ -322,8 +318,9 @@ fun! getscript#GetLatestVimScripts() " restore events and current directory exe "cd ".fnameescape(substitute(origdir,'\','/','ge')) - let &ei= eikeep - let &hls= hlskeep + let &ei = eikeep + let &hls = hlskeep + let &acd = acdkeep setlocal nolz " call Dredir("BUFFER TEST (GetLatestVimScripts 2)","ls!") " call Dret("GetLatestVimScripts : did ".s:downloads." downloads") @@ -333,7 +330,7 @@ endfun " GetOneScript: (Get Latest Vim Script) this function operates {{{1 " on the current line, interpreting two numbers and text as " ScriptID, SourceID, and Filename. -" It downloads any scripts that have newer versions from vim.sf.net. +" It downloads any scripts that have newer versions from vim.sourceforge.net. fun! s:GetOneScript(...) " call Dfunc("GetOneScript()") @@ -391,6 +388,7 @@ fun! s:GetOneScript(...) " call Decho("fname <".fname.">") endif + " plugin author protection from downloading his/her own scripts atop their latest work if scriptid == 0 || srcid == 0 " When looking for :AutoInstall: lines, skip scripts that have 0 0 scriptname let @a= rega @@ -416,21 +414,21 @@ fun! s:GetOneScript(...) " call Decho('considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid) echo 'considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid - " grab a copy of the plugin's vim.sf.net webpage - let scriptaddr = 'http://vim.sf.net/script.php?script_id='.scriptid + " grab a copy of the plugin's vim.sourceforge.net webpage + let scriptaddr = 'http://vim.sourceforge.net/script.php?script_id='.scriptid let tmpfile = tempname() let v:errmsg = "" " make up to three tries at downloading the description let itry= 1 while itry <= 3 -" call Decho("try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr) +" call Decho(".try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr) if has("win32") || has("win16") || has("win95") -" call Decho("new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile).' '.s:Escape(scriptaddr)."|bw!") - new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile).' '.s:Escape(scriptaddr)|bw! +" call Decho(".new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile).' '.shellescape(scriptaddr)."|bw!") + new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile).' '.shellescape(scriptaddr)|bw! else -" call Decho("exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile)." ".s:Escape(scriptaddr)) - exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile)." ".s:Escape(scriptaddr) +" call Decho(".exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile)." ".shellescape(scriptaddr)) + exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile)." ".shellescape(scriptaddr) endif if itry == 1 exe "silent vsplit ".fnameescape(tmpfile) @@ -495,8 +493,7 @@ fun! s:GetOneScript(...) let latestsrcid = latestsrcid + 0 " call Decho("srcid=".srcid." latestsrcid=".latestsrcid." sname<".sname.">") - " has the plugin's most-recent srcid increased, which indicates - " that it has been updated + " has the plugin's most-recent srcid increased, which indicates that it has been updated if latestsrcid > srcid " call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."]: need to update <".sname.">") @@ -506,65 +503,103 @@ fun! s:GetOneScript(...) let sname= "NEW_".sname endif + " ----------------------------------------------------------------------------- " the plugin has been updated since we last obtained it, so download a new copy -" call Decho("...downloading new <".sname.">") - echomsg "...downloading new <".sname.">" + " ----------------------------------------------------------------------------- +" call Decho(".downloading new <".sname.">") + echomsg ".downloading new <".sname.">" if has("win32") || has("win16") || has("win95") -" call Decho("new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid)."|q") - new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid)|q +" call Decho(".new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id='.latestsrcid)."|q") + new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id='.latestsrcid)|q else -" call Decho("exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id=')) - exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id=').latestsrcid +" call Decho(".exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id=')) + exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id=').latestsrcid endif + " -------------------------------------------------------------------------- " AutoInstall: only if doautoinstall has been requested by the plugin itself + " -------------------------------------------------------------------------- if doautoinstall -" call Decho("attempting to do autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname)) +" call Decho(" ") +" call Decho("Autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname)) if filereadable(sname) -" call Decho("exe silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." ".s:Escape(s:autoinstall)) - exe "silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." ".s:Escape(s:autoinstall) +" call Decho("<".sname."> is readable") +" call Decho("exe silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall)) + exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall) let curdir = escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #") let installdir= curdir."/Installed" if !isdirectory(installdir) call mkdir(installdir) endif -" call Decho("exe cd ".fnameescape(s:autoinstall)) +" call Decho("curdir<".curdir."> installdir<".installdir.">") +" call Decho("exe cd ".fnameescape(s:autoinstall)) exe "cd ".fnameescape(s:autoinstall) + + " determine target directory for moves + let firstdir= substitute(&rtp,',.*$','','') + let pname = substitute(sname,'\..*','.vim','') +" call Decho("determine tgtdir: is <".firstdir.'/AsNeeded/'.pname." readable?") + if filereadable(firstdir.'/AsNeeded/'.pname) + let tgtdir= "AsNeeded" + else + let tgtdir= "plugin" + endif +" call Decho("tgtdir<".tgtdir."> pname<".pname.">") " decompress if sname =~ '\.bz2$' " call Decho("decompress: attempt to bunzip2 ".sname) - exe "silent !bunzip2 ".s:Escape(sname) + exe "silent !bunzip2 ".shellescape(sname) let sname= substitute(sname,'\.bz2$','','') " call Decho("decompress: new sname<".sname."> after bunzip2") elseif sname =~ '\.gz$' " call Decho("decompress: attempt to gunzip ".sname) - exe "silent !gunzip ".s:Escape(sname) + exe "silent !gunzip ".shellescape(sname) let sname= substitute(sname,'\.gz$','','') " call Decho("decompress: new sname<".sname."> after gunzip") + else +" call Decho("no decompression needed") endif " distribute archive(.zip, .tar, .vba) contents if sname =~ '\.zip$' " call Decho("dearchive: attempt to unzip ".sname) - exe "silent !unzip -o ".s:Escape(sname) + exe "silent !unzip -o ".shellescape(sname) elseif sname =~ '\.tar$' " call Decho("dearchive: attempt to untar ".sname) - exe "silent !tar -xvf ".s:Escape(sname) + exe "silent !tar -xvf ".shellescape(sname) elseif sname =~ '\.vba$' " call Decho("dearchive: attempt to handle a vimball: ".sname) silent 1split + if exists("g:vimball_home") + let oldvimballhome= g:vimball_home + endif + let g:vimball_home= s:autoinstall exe "silent e ".fnameescape(sname) silent so % silent q + if exists("oldvimballhome") + let g:vimball_home= oldvimballhome + else + unlet g:vimball_home + endif + else +" call Decho("no dearchiving needed") endif + " --------------------------------------------- + " move plugin to plugin/ or AsNeeded/ directory + " --------------------------------------------- if sname =~ '.vim$' -" call Decho("dearchive: attempt to simply move ".sname." to plugin") - exe "silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." plugin" +" call Decho("dearchive: attempt to simply move ".sname." to ".tgtdir) + exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".tgtdir else " call Decho("dearchive: move <".sname."> to installdir<".installdir.">") - exe "silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." ".installdir + exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".installdir + endif + if tgtdir != "plugin" +" call Decho("exe silent !".g:GetLatestVimScripts_mv." plugin/".shellescape(pname)." ".tgtdir) + exe "silent !".g:GetLatestVimScripts_mv." plugin/".shellescape(pname)." ".tgtdir endif " helptags step @@ -600,20 +635,6 @@ fun! s:GetOneScript(...) endfun " --------------------------------------------------------------------- -" s:Escape: makes a string safe&suitable for the shell {{{2 -fun! s:Escape(name) -" call Dfunc("s:Escape(name<".a:name.">)") - if exists("*shellescape") - " shellescape() was added by patch 7.0.111 - let name= shellescape(a:name) - else - let name= g:getscript_shq . a:name . g:getscript_shq - endif -" call Dret("s:Escape ".name) - return name -endfun - -" --------------------------------------------------------------------- " Restore Options: {{{1 let &cpo= s:keepcpo unlet s:keepcpo
--- a/runtime/autoload/gnat.vim +++ b/runtime/autoload/gnat.vim @@ -1,14 +1,14 @@ "------------------------------------------------------------------------------ " Description: Vim Ada/GNAT compiler file " Language: Ada (GNAT) -" $Id$ +" $Id: gnat.vim 887 2008-07-08 14:29:01Z krischik $ " Copyright: Copyright (C) 2006 Martin Krischik " Maintainer: Martin Krischi <krischik@users.sourceforge.net>k " Ned Okie <nokie@radford.edu> -" $Author$ -" $Date$ +" $Author: krischik $ +" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ " Version: 4.6 -" $Revision$ +" $Revision: 887 $ " $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/gnat.vim $ " History: 24.05.2006 MK Unified Headers " 16.07.2006 MK Ada-Mode as vim-ball
--- a/runtime/autoload/netrw.vim +++ b/runtime/autoload/netrw.vim @@ -1,10 +1,10 @@ " netrw.vim: Handles file transfer and remote directory listing across " AUTOLOAD SECTION -" Date: Aug 08, 2008 -" Version: 132 +" Date: Dec 28, 2009 +" Version: 136 " Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM> " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim -" Copyright: Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1 +" Copyright: Copyright (C) 1999-2009 Charles E. Campbell, Jr. {{{1 " Permission is hereby granted to use and distribute this code, " with or without modifications, provided that this copyright " notice is copied with it. Like anything else that's free, @@ -22,12 +22,18 @@ if &cp || exists("g:loaded_netrw") finish endif +let g:loaded_netrw = "v136" +if v:version < 702 + echohl WarningMsg + echo "***warning*** this version of netrw needs vim 7.2" + echohl Normal + finish +endif if !exists("s:NOTE") let s:NOTE = 0 let s:WARNING = 1 let s:ERROR = 2 endif -let g:loaded_netrw = "v132" " sanity checks if v:version < 700 @@ -45,25 +51,41 @@ setlocal cpo&vim " ====================== " --------------------------------------------------------------------- +" NetrwInit: initializes variables if they haven't been defined {{{2 +" Loosely, varname = value. +fun s:NetrwInit(varname,value) + if !exists(a:varname) + if type(a:value) == 0 + exe "let ".a:varname."=".a:value + elseif type(a:value) == 1 + exe "let ".a:varname."="."'".a:value."'" + else + exe "let ".a:varname."=".a:value + endif + endif +endfun + +" --------------------------------------------------------------------- " Netrw Constants: {{{2 -if !exists("g:NETRW_BOOKMARKMAX") - let g:NETRW_BOOKMARKMAX= 0 -endif -if !exists("g:NETRW_DIRHIST_CNT") - let g:NETRW_DIRHIST_CNT= 0 -endif +call s:NetrwInit("g:netrw_dirhist_cnt",0) if !exists("s:LONGLIST") - let s:THINLIST = 0 - let s:LONGLIST = 1 - let s:WIDELIST = 2 - let s:TREELIST = 3 - let s:MAXLIST = 4 + call s:NetrwInit("s:THINLIST",0) + call s:NetrwInit("s:LONGLIST",1) + call s:NetrwInit("s:WIDELIST",2) + call s:NetrwInit("s:TREELIST",3) + call s:NetrwInit("s:MAXLIST" ,4) endif " --------------------------------------------------------------------- " Default values for netrw's global protocol variables {{{2 if !exists("g:netrw_dav_cmd") + if executable("cadaver") let g:netrw_dav_cmd = "cadaver" + elseif executable("curl") + let g:netrw_dav_cmd = "curl" + else + let g:netrw_dav_cmd = "" + endif endif if !exists("g:netrw_fetch_cmd") if executable("fetch") @@ -78,35 +100,28 @@ endif if !exists("g:netrw_http_cmd") if executable("elinks") let g:netrw_http_cmd = "elinks" - let g:netrw_http_xcmd= "-dump >" + call s:NetrwInit("g:netrw_http_xcmd","-source >") elseif executable("links") let g:netrw_http_cmd = "links" - let g:netrw_http_xcmd= "-dump >" + call s:NetrwInit("g:netrw_http_xcmd","-source >") elseif executable("curl") - let g:netrw_http_cmd = "curl -o" + let g:netrw_http_cmd = "curl" + call s:NetrwInit("g:netrw_http_xcmd","-o") elseif executable("wget") - let g:netrw_http_cmd = "wget -q -O" + let g:netrw_http_cmd = "wget" + call s:NetrwInit("g:netrw_http_xcmd","-q -O") elseif executable("fetch") - let g:netrw_http_cmd = "fetch -o" + let g:netrw_http_cmd = "fetch" + call s:NetrwInit("g:netrw_http_xcmd","-o") else let g:netrw_http_cmd = "" endif endif -if !exists("g:netrw_rcp_cmd") - let g:netrw_rcp_cmd = "rcp" -endif -if !exists("g:netrw_rsync_cmd") - let g:netrw_rsync_cmd = "rsync" -endif -if !exists("g:netrw_scp_cmd") - let g:netrw_scp_cmd = "scp -q" -endif -if !exists("g:netrw_sftp_cmd") - let g:netrw_sftp_cmd = "sftp" -endif -if !exists("g:netrw_ssh_cmd") - let g:netrw_ssh_cmd= "ssh" -endif +call s:NetrwInit("g:netrw_rcp_cmd" , "rcp") +call s:NetrwInit("g:netrw_rsync_cmd", "rsync") +call s:NetrwInit("g:netrw_scp_cmd" , "scp -q") +call s:NetrwInit("g:netrw_sftp_cmd" , "sftp") +call s:NetrwInit("g:netrw_ssh_cmd" , "ssh") if (has("win32") || has("win95") || has("win64") || has("win16")) \ && exists("g:netrw_use_nt_rcp") @@ -134,40 +149,24 @@ if !exists("g:netrw_cygwin") endif endif " Default values - a-c ---------- {{{3 -if !exists("g:netrw_alto") - let g:netrw_alto= &sb -endif -if !exists("g:netrw_altv") - let g:netrw_altv= &spr -endif -if !exists("g:netrw_browse_split") - let g:netrw_browse_split= 0 -endif -if !exists("g:netrw_chgwin") - let g:netrw_chgwin = -1 -endif -if !exists("g:netrw_compress") - let g:netrw_compress= "gzip" -endif -if !exists("g:netrw_ctags") - let g:netrw_ctags= "ctags" +call s:NetrwInit("g:netrw_alto" , &sb) +call s:NetrwInit("g:netrw_altv" , &spr) +call s:NetrwInit("g:netrw_banner" , 1) +call s:NetrwInit("g:netrw_browse_split", 0) +call s:NetrwInit("g:netrw_chgwin" , -1) +call s:NetrwInit("g:netrw_compress" , "gzip") +call s:NetrwInit("g:netrw_ctags" , "ctags") +if !exists("g:netrw_cursorline") + let g:netrw_cursorline= 1 + let s:netrw_usercul = &cursorline + let s:netrw_usercuc = &cursorcolumn endif " Default values - d-g ---------- {{{3 -if !exists("g:NETRW_DIRHIST_CNT") - let g:NETRW_DIRHIST_CNT= 0 -endif -if !exists("g:netrw_decompress") - let g:netrw_decompress= { ".gz" : "gunzip" , ".bz2" : "bunzip2" , ".zip" : "unzip" , ".tar" : "tar -xf"} -endif -if !exists("g:netrw_dirhistmax") - let g:netrw_dirhistmax= 10 -endif -if !exists("g:netrw_fastbrowse") - let g:netrw_fastbrowse= 1 -endif -if !exists("g:netrw_ftp_browse_reject") - let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$' -endif +call s:NetrwInit("g:netrw_dirhist_cnt" , 0) +call s:NetrwInit("g:netrw_decompress" , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf"}') +call s:NetrwInit("g:netrw_dirhistmax" , 10) +call s:NetrwInit("g:netrw_fastbrowse" , 1) +call s:NetrwInit("g:netrw_ftp_browse_reject", '^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$') if !exists("g:netrw_ftp_list_cmd") if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin) let g:netrw_ftp_list_cmd = "ls -lF" @@ -179,13 +178,9 @@ if !exists("g:netrw_ftp_list_cmd") let g:netrw_ftp_sizelist_cmd = "dir" endif endif -if !exists("g:netrw_ftpmode") - let g:netrw_ftpmode= "binary" -endif +call s:NetrwInit("g:netrw_ftpmode",'binary') " Default values - h-lh ---------- {{{3 -if !exists("g:netrw_hide") - let g:netrw_hide= 1 -endif +call s:NetrwInit("g:netrw_hide",1) if !exists("g:netrw_ignorenetrc") if &shell =~ '\c\<\%(cmd\|4nt\)\.exe$' let g:netrw_ignorenetrc= 1 @@ -193,9 +188,7 @@ if !exists("g:netrw_ignorenetrc") let g:netrw_ignorenetrc= 0 endif endif -if !exists("g:netrw_keepdir") - let g:netrw_keepdir= 1 -endif +call s:NetrwInit("g:netrw_keepdir",1) if !exists("g:netrw_list_cmd") if g:netrw_scp_cmd =~ '^pscp' && executable("pscp") " provide a 'pscp' listing command @@ -211,9 +204,7 @@ if !exists("g:netrw_list_cmd") let g:netrw_list_cmd= "" endif endif -if !exists("g:netrw_list_hide") - let g:netrw_list_hide= "" -endif +call s:NetrwInit("g:netrw_list_hide","") " Default values - lh-lz ---------- {{{3 if !exists("g:netrw_localcopycmd") if has("win32") || has("win95") || has("win64") || has("win16") @@ -228,9 +219,7 @@ if !exists("g:netrw_localcopycmd") let g:netrw_localcopycmd= "" endif endif -if !exists("g:netrw_local_mkdir") - let g:netrw_local_mkdir= "mkdir" -endif +call s:NetrwInit("g:netrw_local_mkdir","mkdir") if !exists("g:netrw_localmovecmd") if has("win32") || has("win95") || has("win64") || has("win16") if g:netrw_cygwin @@ -244,128 +233,66 @@ if !exists("g:netrw_localmovecmd") let g:netrw_localmovecmd= "" endif endif -if !exists("g:netrw_local_rmdir") - let g:netrw_local_rmdir= "rmdir" -endif -if !exists("g:netrw_liststyle") - let g:netrw_liststyle= s:THINLIST -endif +call s:NetrwInit("g:netrw_local_rmdir", "rmdir") +call s:NetrwInit("g:netrw_liststyle" , s:THINLIST) +" sanity checks if g:netrw_liststyle < 0 || g:netrw_liststyle >= s:MAXLIST - " sanity check let g:netrw_liststyle= s:THINLIST endif if g:netrw_liststyle == s:LONGLIST && g:netrw_scp_cmd !~ '^pscp' let g:netrw_list_cmd= g:netrw_list_cmd." -l" endif " Default values - m-r ---------- {{{3 -if !exists("g:netrw_markfileesc") - let g:netrw_markfileesc= '*./[\~' -endif -if !exists("g:netrw_maxfilenamelen") - let g:netrw_maxfilenamelen= 32 -endif -if !exists("g:netrw_menu") - let g:netrw_menu= 1 +call s:NetrwInit("g:netrw_markfileesc" , '*./[\~') +call s:NetrwInit("g:netrw_maxfilenamelen", 32) +call s:NetrwInit("g:netrw_menu" , 1) +call s:NetrwInit("g:netrw_mkdir_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir") +call s:NetrwInit("g:netrw_mousemaps" , (exists("&mouse") && &mouse =~ '[anh]')) +call s:NetrwInit("g:netrw_retmap" , 0) +if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin) + call s:NetrwInit("g:netrw_chgperm" , "chmod PERM FILENAME") +elseif has("win32") || has("win95") || has("win64") || has("win16") + call s:NetrwInit("g:netrw_chgperm" , "cacls FILENAME /e /p PERM") +else + call s:NetrwInit("g:netrw_chgperm" , "chmod PERM FILENAME") endif -if !exists("g:netrw_mkdir_cmd") - let g:netrw_mkdir_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir" -endif -if !exists("g:netrw_mousemaps") - if exists("&mouse") && &mouse =~ '[anh]' - let g:netrw_mousemaps= 1 +call s:NetrwInit("g:netrw_preview" , 0) +call s:NetrwInit("g:netrw_scpport" , "-P") +call s:NetrwInit("g:netrw_sshport" , "-p") +call s:NetrwInit("g:netrw_rename_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME mv") +call s:NetrwInit("g:netrw_rm_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rm") +call s:NetrwInit("g:netrw_rmdir_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rmdir") +call s:NetrwInit("g:netrw_rmf_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rm -f") +" Default values - s ---------- {{{3 +" g:netrw_sepchr: picking a character that doesn't appear in filenames that can be used to separate priority from filename +call s:NetrwInit("g:netrw_sepchr" , (&enc == "euc-jp")? "\<Char-0x01>" : "\<Char-0xff>") +call s:NetrwInit("s:netrw_silentxfer" , (exists("g:netrw_silent") && g:netrw_silent != 0)? "silent " : "") +call s:NetrwInit("g:netrw_sort_by" , "name") " alternatives: date , size +call s:NetrwInit("g:netrw_sort_options" , "") +call s:NetrwInit("g:netrw_sort_direction", "normal") " alternative: reverse (z y x ...) +if !exists("g:netrw_sort_sequence") + if has("unix") + let g:netrw_sort_sequence= '[\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$' else - let g:netrw_mousemaps= 0 + let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$' endif endif -if !exists("g:netrw_retmap") - let g:netrw_retmap= 0 -endif -if !exists("g:netrw_preview") - let g:netrw_preview= 0 -endif -if !exists("g:netrw_scpport") - let g:netrw_scpport= "-P" -endif -if !exists("g:netrw_sshport") - let g:netrw_sshport= "-p" -endif -if !exists("g:netrw_rename_cmd") - let g:netrw_rename_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mv" -endif -if !exists("g:netrw_rm_cmd") - let g:netrw_rm_cmd = g:netrw_ssh_cmd." USEPORT HOSTNAME rm" -endif -if !exists("g:netrw_rmdir_cmd") - let g:netrw_rmdir_cmd = g:netrw_ssh_cmd." USEPORT HOSTNAME rmdir" -endif -if !exists("g:netrw_rmf_cmd") - let g:netrw_rmf_cmd = g:netrw_ssh_cmd." USEPORT HOSTNAME rm -f" -endif -" Default values - s ---------- {{{3 - " set up shell quoting character -if exists("g:netrw_silent") && g:netrw_silent != 0 - let s:netrw_silentxfer= "silent " -else - let s:netrw_silentxfer= "" -endif -if !exists("g:netrw_sort_by") - " alternatives: date size - let g:netrw_sort_by= "name" -endif -if !exists("g:netrw_sort_options") - let g:netrw_sort_options= "" -endif -if !exists("g:netrw_sort_direction") - " alternative: reverse (z y x ...) - let g:netrw_sort_direction= "normal" -endif -if !exists("g:netrw_sort_sequence") - let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$' -endif -if !exists("g:netrw_special_syntax") - let g:netrw_special_syntax= 0 -endif -if !exists("g:netrw_ssh_browse_reject") - let g:netrw_ssh_browse_reject='^total\s\+\d\+$' -endif -if !has("patch192") - if !exists("g:netrw_use_noswf") - let g:netrw_use_noswf= 1 - endif -else - let g:netrw_use_noswf= 0 -endif +call s:NetrwInit("g:netrw_special_syntax" , 0) +call s:NetrwInit("g:netrw_ssh_browse_reject", '^total\s\+\d\+$') +call s:NetrwInit("g:netrw_use_noswf" , 0) " Default values - t-w ---------- {{{3 -if !exists("g:netrw_timefmt") - let g:netrw_timefmt= "%c" -endif -if !exists("g:netrw_xstrlen") - let g:netrw_xstrlen= 1 -endif -if !exists("g:NetrwTopLvlMenu") - let g:NetrwTopLvlMenu= "Netrw." -endif -if !exists("g:netrw_use_errorwindow") - let g:netrw_use_errorwindow= 1 -endif -if !exists("g:netrw_win95ftp") - let g:netrw_win95ftp= 1 -endif -if !exists("g:netrw_winsize") - let g:netrw_winsize= "" -endif +call s:NetrwInit("g:netrw_timefmt","%c") +call s:NetrwInit("g:netrw_xstrlen",0) +call s:NetrwInit("g:NetrwTopLvlMenu","Netrw.") +call s:NetrwInit("g:netrw_use_errorwindow",1) +call s:NetrwInit("g:netrw_win95ftp",1) +call s:NetrwInit("g:netrw_winsize","") " --------------------------------------------------------------------- " Default values for netrw's script variables: {{{2 -if !exists("g:netrw_fname_escape") - let g:netrw_fname_escape= ' ?&;%' -endif -if !exists("g:netrw_glob_escape") - let g:netrw_glob_escape= '[]*?`{~$' -endif -if !exists("g:netrw_tmpfile_escape") - let g:netrw_tmpfile_escape= ' &;' -endif -let s:netrw_map_escape = "<|\n\r\\\<C-V>\"" +call s:NetrwInit("g:netrw_fname_escape",' ?&;%') +call s:NetrwInit("g:netrw_glob_escape",'[]*?`{~$') +call s:NetrwInit("g:netrw_tmpfile_escape",' &;') +call s:NetrwInit("s:netrw_map_escape","<|\n\r\\\<C-V>\"") " BufEnter event ignored by decho when following variable is true " Has a side effect that doau BufReadPost doesn't work, so @@ -384,7 +311,7 @@ let s:netrw_map_escape = "<|\n\r\\\<C-V> " NetrwBrowse. " vt: normally its "w:" or "s:" (a variable type) fun! s:NetrwOptionSave(vt) -" call Dfunc("s:NetrwOptionSave(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">") +" call Dfunc("s:NetrwOptionSave(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">"." winnr($)=".winnr("$")) " call Decho(a:vt."netrw_optionsave".(exists("{a:vt}netrw_optionsave")? ("=".{a:vt}netrw_optionsave) : " doesn't exist")) if !exists("{a:vt}netrw_optionsave") @@ -430,7 +357,7 @@ endfun " ------------------------------------------------------------------------ " s:NetrwOptionRestore: restore options {{{2 fun! s:NetrwOptionRestore(vt) -" call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")) +" call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")." winnr($)=".winnr("$")) if !exists("{a:vt}netrw_optionsave") " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) " call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist") @@ -503,8 +430,8 @@ endfun " --------------------------------------------------------------------- " s:NetrwSafeOptions: sets options to help netrw do its job {{{2 fun! s:NetrwSafeOptions() -" call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">") -" call Decho("window's ft=".&ft) +" call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%"))."> winnr($)=".winnr("$")) +" call Decho("win#".winnr()."'s ft=".&ft) setlocal cino= setlocal com= setlocal cpo-=aA @@ -513,9 +440,16 @@ fun! s:NetrwSafeOptions() setlocal fo=nroql2 setlocal tw=0 setlocal report=10000 + setlocal isk+=@ isk+=* isk+=/ if g:netrw_use_noswf && has("win32") && !has("win95") setlocal noswf endif + + " allow the user to override safe options + if &ft == "netrw" + silent keepalt keepjumps doau FileType netrw + endif + " call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist")) " call Dret("s:NetrwSafeOptions") endfun @@ -566,6 +500,16 @@ fun! netrw#NetrwClean(sys) " call Dret("netrw#NetrwClean") endfun +" --------------------------------------------------------------------- +" netrw#Nread: {{{2 +fun! netrw#Nread(mode,fname) +" call Dfunc("netrw#Nread(mode=".a:mode." fname<".a:fname.">)") + call netrw#NetrwSavePosn() + call netrw#NetRead(a:mode,a:fname) + call netrw#NetrwRestorePosn() +" call Dret("netrw#Nread") +endfun + " ------------------------------------------------------------------------ " Netrw Transfer Functions: {{{1 " =============================== @@ -579,11 +523,11 @@ endfun fun! netrw#NetRead(mode,...) " call Dfunc("netrw#NetRead(mode=".a:mode.",...) a:0=".a:0." ".g:loaded_netrw) - " save options {{{3 + " NetRead: save options {{{3 call s:NetrwOptionSave("w:") call s:NetrwSafeOptions() - " interpret mode into a readcmd {{{3 + " NetRead: interpret mode into a readcmd {{{3 if a:mode == 0 " read remote file before current line let readcmd = "0r" elseif a:mode == 1 " read file after current line @@ -599,7 +543,7 @@ fun! netrw#NetRead(mode,...) let ichoice = (a:0 == 0)? 0 : 1 " call Decho("readcmd<".readcmd."> ichoice=".ichoice) - " Get Temporary Filename {{{3 + " NetRead: get temporary filename {{{3 let tmpfile= s:GetTempfile("") if tmpfile == "" " call Dret("netrw#NetRead : unable to get a tempfile!") @@ -666,8 +610,12 @@ fun! netrw#NetRead(mode,...) " call Decho("choice<" . choice . ">") let ichoice= ichoice + 1 - " Determine method of read (ftp, rcp, etc) {{{3 + " NetRead: Determine method of read (ftp, rcp, etc) {{{3 call s:NetrwMethod(choice) + if !exists("b:netrw_method") || b:netrw_method < 0 +" call Dfunc("netrw#NetRead : unsupported method") + return + endif let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix " Check if NetrwBrowse() should be handling this request @@ -680,14 +628,14 @@ fun! netrw#NetRead(mode,...) endif " ============ - " Perform Protocol-Based Read {{{3 + " NetRead: Perform Protocol-Based Read {{{3 " =========================== if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 echo "(netrw) Processing your read request..." endif "......................................... - " rcp: NetRead Method #1 {{{3 + " NetRead: (rcp) NetRead Method #1 {{{3 if b:netrw_method == 1 " read with rcp " call Decho("read via rcp (method #1)") " ER: nothing done with g:netrw_uid yet? @@ -709,12 +657,12 @@ fun! netrw#NetRead(mode,...) endif endif " call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)) - exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)) + exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1) let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice "......................................... - " ftp + <.netrc>: NetRead Method #2 {{{3 + " NetRead: (ftp + <.netrc>) NetRead Method #2 {{{3 elseif b:netrw_method == 2 " read with ftp + <.netrc> " call Decho("read via ftp+.netrc (method #2)") let netrw_fname= b:netrw_fname @@ -745,7 +693,8 @@ fun! netrw#NetRead(mode,...) endif call s:SaveBufVars() bd! - if bufname("%") == "" && line("$") == 1 && getline("$") == "" + if bufname("%") == "" && getline("$") == "" && line('$') == 1 + " needed when one sources a file in a nolbl setting window via ftp q! endif call s:RestoreBufVars() @@ -753,7 +702,7 @@ fun! netrw#NetRead(mode,...) let b:netrw_lastfile = choice "......................................... - " ftp + machine,id,passwd,filename: NetRead Method #3 {{{3 + " NetRead: (ftp + machine,id,passwd,filename) NetRead Method #3 {{{3 elseif b:netrw_method == 3 " read with ftp + machine, id, passwd, and fname " Construct execution string (four lines) which will be passed through filter " call Decho("read via ftp+mipf (method #3)") @@ -809,7 +758,7 @@ fun! netrw#NetRead(mode,...) let b:netrw_lastfile = choice "......................................... - " scp: NetRead Method #4 {{{3 + " NetRead: (scp) NetRead Method #4 {{{3 elseif b:netrw_method == 4 " read with scp " call Decho("read via scp (method #4)") if exists("g:netrw_port") && g:netrw_port != "" @@ -817,13 +766,13 @@ fun! netrw#NetRead(mode,...) else let useport= "" endif -" call Decho("exe s:netrw_silentxfer.!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)) +" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)) exe s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1) let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice "......................................... - " http: NetRead Method #5 (wget) {{{3 + " NetRead: (http) NetRead Method #5 (wget) {{{3 elseif b:netrw_method == 5 " call Decho("read via http (method #5)") if g:netrw_http_cmd == "" @@ -863,33 +812,43 @@ fun! netrw#NetRead(mode,...) setlocal ro "......................................... - " cadaver: NetRead Method #6 {{{3 + " NetRead: (dav) NetRead Method #6 {{{3 elseif b:netrw_method == 6 " call Decho("read via cadaver (method #6)") - " Construct execution string (four lines) which will be passed through filter - let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) - new - setlocal ff=unix - if exists("g:netrw_port") && g:netrw_port != "" - put ='open '.g:netrw_machine.' '.g:netrw_port + if !executable(g:netrw_dav_cmd) + call netrw#ErrorMsg(s:ERROR,g:netrw_dav_cmd." is not executable",73) +" call Dret("netrw#NetRead : ".g:netrw_dav_cmd." not executable") + return + endif + if g:netrw_dav_cmd =~ "curl" +" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_dav_cmd." ".shellescape("dav://".g:netrw_machine.b:netrw_fname,1)." ".shellescape(tmpfile,1)) + exe s:netrw_silentxfer."!".g:netrw_dav_cmd." ".shellescape("dav://".g:netrw_machine.b:netrw_fname,1)." ".shellescape(tmpfile,1) else - put ='open '.g:netrw_machine - endif - put ='user '.g:netrw_uid.' '.s:netrw_passwd - put ='get '.netrw_fname.' '.tmpfile - put ='quit' - - " perform cadaver operation: - norm! 1Gdd + " Construct execution string (four lines) which will be passed through filter + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) + new + setlocal ff=unix + if exists("g:netrw_port") && g:netrw_port != "" + put ='open '.g:netrw_machine.' '.g:netrw_port + else + put ='open '.g:netrw_machine + endif + put ='user '.g:netrw_uid.' '.s:netrw_passwd + put ='get '.netrw_fname.' '.tmpfile + put ='quit' + + " perform cadaver operation: + norm! 1Gdd " call Decho("executing: %!".g:netrw_dav_cmd) - exe s:netrw_silentxfer."%!".g:netrw_dav_cmd - bd! + exe s:netrw_silentxfer."%!".g:netrw_dav_cmd + bd! + endif let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice "......................................... - " rsync: NetRead Method #7 {{{3 + " NetRead: (rsync) NetRead Method #7 {{{3 elseif b:netrw_method == 7 " call Decho("read via rsync (method #7)") " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)) @@ -898,7 +857,7 @@ fun! netrw#NetRead(mode,...) let b:netrw_lastfile = choice "......................................... - " fetch: NetRead Method #8 {{{3 + " NetRead: (fetch) NetRead Method #8 {{{3 " fetch://[user@]host[:http]/path elseif b:netrw_method == 8 " call Decho("read via fetch (method #8)") @@ -928,7 +887,7 @@ fun! netrw#NetRead(mode,...) setlocal ro "......................................... - " sftp: NetRead Method #9 {{{3 + " NetRead: (sftp) NetRead Method #9 {{{3 elseif b:netrw_method == 9 " call Decho("read via sftp (method #9)") " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".tmpfile) @@ -937,13 +896,13 @@ fun! netrw#NetRead(mode,...) let b:netrw_lastfile = choice "......................................... - " Complain {{{3 + " NetRead: Complain {{{3 else call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",8) endif endwhile - " cleanup {{{3 + " NetRead: cleanup {{{3 if exists("b:netrw_method") " call Decho("cleanup b:netrw_method and b:netrw_fname") unlet b:netrw_method @@ -951,7 +910,7 @@ fun! netrw#NetRead(mode,...) endif if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't' " call Decho("cleanup by deleting tmpfile<".tmpfile.">") - call s:NetrwDelete(fnameescape(tmpfile)) + call s:NetrwDelete(tmpfile) endif call s:NetrwOptionRestore("w:") @@ -963,12 +922,12 @@ endfun fun! netrw#NetWrite(...) range " call Dfunc("netrw#NetWrite(a:0=".a:0.") ".g:loaded_netrw) - " option handling + " NetWrite: option handling {{{3 let mod= 0 call s:NetrwOptionSave("w:") call s:NetrwSafeOptions() - " Get Temporary Filename {{{3 + " NetWrite: Get Temporary Filename {{{3 let tmpfile= s:GetTempfile("") if tmpfile == "" " call Dret("netrw#NetWrite : unable to get a tempfile!") @@ -1007,7 +966,7 @@ fun! netrw#NetWrite(...) range 0file! endif - " While choice loop: {{{3 + " NetWrite: while choice loop: {{{3 while ichoice <= a:0 " Process arguments: {{{4 @@ -1065,9 +1024,13 @@ fun! netrw#NetWrite(...) range " Determine method of write (ftp, rcp, etc) {{{4 call s:NetrwMethod(choice) + if !exists("b:netrw_method") || b:netrw_method < 0 +" call Dfunc("netrw#NetWrite : unsupported method") + return + endif " ============= - " Perform Protocol-Based Write {{{4 + " NetWrite: Perform Protocol-Based Write {{{3 " ============================ if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 echo "(netrw) Processing your write request..." @@ -1075,7 +1038,7 @@ fun! netrw#NetWrite(...) range endif "......................................... - " rcp: NetWrite Method #1 {{{4 + " NetWrite: (rcp) NetWrite Method #1 {{{3 if b:netrw_method == 1 " call Decho("write via rcp (method #1)") if s:netrw_has_nt_rcp == 1 @@ -1096,11 +1059,17 @@ fun! netrw#NetWrite(...) range let b:netrw_lastfile = choice "......................................... - " ftp + <.netrc>: NetWrite Method #2 {{{4 + " NetWrite: (ftp + <.netrc>) NetWrite Method #2 {{{3 elseif b:netrw_method == 2 " call Decho("write via ftp+.netrc (method #2)") - let netrw_fname= b:netrw_fname - new + let netrw_fname = b:netrw_fname + + " formerly just a "new...bd!", that changed the window sizes when equalalways. Using enew workaround instead + let bhkeep = &l:bh + let curbuf = bufnr("%") + setlocal bh=hide + enew + " call Decho("filter input window#".winnr()) setlocal ff=unix put =g:netrw_ftpmode @@ -1126,17 +1095,29 @@ fun! netrw#NetWrite(...) range endif let mod=1 endif - bd! + + " remove enew buffer (quietly) + let filtbuf= bufnr("%") + exe curbuf."b!" + let &l:bh = bhkeep + exe filtbuf."bw!" + let b:netrw_lastfile = choice "......................................... - " ftp + machine, id, passwd, filename: NetWrite Method #3 {{{4 + " NetWrite: (ftp + machine, id, passwd, filename) NetWrite Method #3 {{{3 elseif b:netrw_method == 3 - " Construct execution string (four lines) which will be passed through filter + " Construct execution string (three or more lines) which will be passed through filter " call Decho("read via ftp+mipf (method #3)") - let netrw_fname= b:netrw_fname - new + let netrw_fname = b:netrw_fname + let bhkeep = &l:bh + + " formerly just a "new...bd!", that changed the window sizes when equalalways. Using enew workaround instead + let curbuf = bufnr("%") + setlocal bh=hide + enew setlocal ff=unix + if exists("g:netrw_port") && g:netrw_port != "" put ='open '.g:netrw_machine.' '.g:netrw_port " call Decho("filter input: ".getline('.')) @@ -1153,6 +1134,12 @@ fun! netrw#NetWrite(...) range put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' " call Decho("filter input: ".getline('.')) endif + put =g:netrw_ftpmode +" call Decho("filter input: ".getline('$')) + if exists("g:netrw_ftpextracmd") + put =g:netrw_ftpextracmd +" call Decho("filter input: ".getline("$")) + endif put ='put \"'.tmpfile.'\" \"'.netrw_fname.'\"' " call Decho("filter input: ".getline('.')) " save choice/id/password for future use @@ -1172,10 +1159,15 @@ fun! netrw#NetWrite(...) range endif let mod=1 endif - bd! + + " remove enew buffer (quietly) + let filtbuf= bufnr("%") + exe curbuf."b!" + let &l:bh= bhkeep + exe filtbuf."bw!" "......................................... - " scp: NetWrite Method #4 {{{4 + " NetWrite: (scp) NetWrite Method #4 {{{3 elseif b:netrw_method == 4 " call Decho("write via scp (method #4)") if exists("g:netrw_port") && g:netrw_port != "" @@ -1188,7 +1180,7 @@ fun! netrw#NetWrite(...) range let b:netrw_lastfile = choice "......................................... - " http: NetWrite Method #5 {{{4 + " NetWrite: (http) NetWrite Method #5 {{{3 elseif b:netrw_method == 5 " call Decho("write via http (method #5)") if !exists("g:netrw_quiet") @@ -1196,13 +1188,19 @@ fun! netrw#NetWrite(...) range endif "......................................... - " dav: NetWrite Method #6 (cadaver) {{{4 + " NetWrite: (dav) NetWrite Method #6 (cadaver) {{{3 elseif b:netrw_method == 6 " call Decho("write via cadaver (method #6)") " Construct execution string (four lines) which will be passed through filter - let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) - new + let netrw_fname = escape(b:netrw_fname,g:netrw_fname_escape) + let bhkeep = &l:bh + + " formerly just a "new...bd!", that changed the window sizes when equalalways. Using enew workaround instead + let curbuf = bufnr("%") + setlocal bh=hide + enew + setlocal ff=unix if exists("g:netrw_port") && g:netrw_port != "" put ='open '.g:netrw_machine.' '.g:netrw_port @@ -1218,11 +1216,17 @@ fun! netrw#NetWrite(...) range norm! 1Gdd " call Decho("executing: %!".g:netrw_dav_cmd) exe s:netrw_silentxfer."%!".g:netrw_dav_cmd - bd! + + " remove enew buffer (quietly) + let filtbuf= bufnr("%") + exe curbuf."b!" + let &l:bh = bhkeep + exe filtbuf."bw!" + let b:netrw_lastfile = choice "......................................... - " rsync: NetWrite Method #7 {{{4 + " NetWrite: (rsync) NetWrite Method #7 {{{3 elseif b:netrw_method == 7 " call Decho("write via rsync (method #7)") " call Decho("executing: !".g:netrw_rsync_cmd." ".shellescape(tmpfile,1)." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)) @@ -1230,7 +1234,7 @@ fun! netrw#NetWrite(...) range let b:netrw_lastfile = choice "......................................... - " sftp: NetWrite Method #9 {{{4 + " NetWrite: (sftp) NetWrite Method #9 {{{3 elseif b:netrw_method == 9 " call Decho("read via sftp (method #9)") let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) @@ -1239,24 +1243,32 @@ fun! netrw#NetWrite(...) range else let uid_machine = g:netrw_machine endif - new + + " formerly just a "new...bd!", that changed the window sizes when equalalways. Using enew workaround instead + let bhkeep = &l:bh + let curbuf = bufnr("%") + setlocal bh=hide + enew + setlocal ff=unix - put ='put \"'.escape(tmpfile,'\').'\" '.netrw_fname + call setline(1,'put "'.escape(tmpfile,'\').'" '.netrw_fname) " call Decho("filter input: ".getline('.')) - norm! 1Gdd " call Decho("executing: %!".g:netrw_sftp_cmd.' '.shellescape(uid_machine,1)) exe s:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.shellescape(uid_machine,1) - bd! - let b:netrw_lastfile= choice + let filtbuf= bufnr("%") + exe curbuf."b!" + let &l:bh = bhkeep + exe filtbuf."bw!" + let b:netrw_lastfile = choice "......................................... - " Complain {{{4 + " NetWrite: Complain {{{3 else call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",17) endif endwhile - " Cleanup: {{{3 + " NetWrite: Cleanup: {{{3 " call Decho("cleanup") if s:FileReadable(tmpfile) " call Decho("tmpfile<".tmpfile."> readable, will now delete it") @@ -1269,6 +1281,7 @@ fun! netrw#NetWrite(...) range let &mod= mod endif + " restore equalalways " call Dret("netrw#NetWrite") endfun @@ -1370,11 +1383,7 @@ fun! s:NetrwGetFile(readcmd, tfile, meth " rename buffer back to remote filename " call Decho("exe silent! keepalt file ".fnameescape(rfile)) exe "silent! keepalt file ".fnameescape(rfile) - if a:method == 5 - set ft=html - else - filetype detect - endif + filetype detect " call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!") let line1 = 1 let line2 = line("$") @@ -1406,7 +1415,7 @@ fun! s:NetrwGetFile(readcmd, tfile, meth " call Decho("NetReadFixup() not called, doesn't exist (line1=".line1." line2=".line2.")") endif - if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' + if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu " update the Buffers menu call s:UpdateBuffersMenu() endif @@ -1422,18 +1431,34 @@ endfun " ------------------------------------------------------------------------ " s:NetrwMethod: determine method of transfer {{{2 -" method == 1: rcp -" 2: ftp + <.netrc> -" 3: ftp + machine, id, password, and [path]filename -" 4: scp -" 5: http (wget) -" 6: cadaver -" 7: rsync -" 8: fetch -" 9: sftp -fun! s:NetrwMethod(choice) " globals: method machine id passwd fname +" Input: +" choice = url [protocol:]//[userid@]hostname[:port]/[path-to-file] +" Output: +" b:netrw_method= 1: rcp +" 2: ftp + <.netrc> +" 3: ftp + machine, id, password, and [path]filename +" 4: scp +" 5: http (wget) +" 6: dav +" 7: rsync +" 8: fetch +" 9: sftp +" g:netrw_machine= hostname +" b:netrw_fname = filename +" g:netrw_port = optional port number (for ftp) +" g:netrw_choice = copy of input url (choice) +fun! s:NetrwMethod(choice) " call Dfunc("NetrwMethod(a:choice<".a:choice.">)") + " record current g:netrw_machine, if any + " curmachine used if protocol == ftp and no .netrc + if exists("g:netrw_machine") + let curmachine= g:netrw_machine +" call Decho("curmachine<".curmachine.">") + else + let curmachine= "N O T A HOST" + endif + " initialization let b:netrw_method = 0 let g:netrw_machine = "" @@ -1449,7 +1474,7 @@ fun! s:NetrwMethod(choice) " globals: m " rcphf : [user@]host:filename Use rcp " scpurm : scp://[user@]host[[#:]port]/filename Use scp " httpurm : http://[user@]host/filename Use wget - " davurm : dav[s]://host[:port]/path Use cadaver + " davurm : dav[s]://host[:port]/path Use cadaver/curl " rsyncurm : rsync://host[:port]/path Use rsync " fetchurm : fetch://[user@]host[:http]/filename Use fetch (defaults to ftp, override for http) " sftpurm : sftp://[user@]host/filename Use scp @@ -1518,9 +1543,14 @@ fun! s:NetrwMethod(choice) " globals: m let g:netrw_machine= substitute(a:choice,ftpurm,'\3',"") let g:netrw_port = substitute(a:choice,ftpurm,'\4',"") let b:netrw_fname = substitute(a:choice,ftpurm,'\5',"") +" call Decho("g:netrw_machine<".g:netrw_machine.">") if userid != "" let g:netrw_uid= userid endif + if exists("s:netrw_passwd") && curmachine != g:netrw_machine + " if there's a change in hostname, require password re-entry + unlet s:netrw_passwd + endif if exists("g:netrw_uid") && exists("s:netrw_passwd") let b:netrw_method = 3 else @@ -1592,7 +1622,7 @@ fun! s:NetrwMethod(choice) " globals: m else if !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:WARNING,"cannot determine method",45) + call netrw#ErrorMsg(s:WARNING,"cannot determine method (format: protocol://[user@]hostname[:port]/[path])",45) endif let b:netrw_method = -1 endif @@ -1626,10 +1656,24 @@ endfun if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp fun! NetReadFixup(method, line1, line2) " call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")") + + " sanity checks -- attempt to convert inputs to integers + let method = a:method + 0 + let line1 = a:line1 + 0 + let line2 = a:line2 + 0 + if type(method) != 0 || type(line1) != 0 || type(line2) != 0 || method < 0 || line1 <= 0 || line2 <= 0 +" call Dret("NetReadFixup") + return + endif + if method == 3 " ftp (no <.netrc>) let fourblanklines= line2 - 3 - silent fourblanklines.",".line2."g/^\s*/d" - endif + if fourblanklines >= line1 + exe "silent ".fourblanklines.",".line2."g/^\s*$/d" + call histdel("/",-1) + endif + endif + " call Dret("NetReadFixup") endfun endif @@ -1678,7 +1722,7 @@ fun! s:BrowserMaps(islocal) nnoremap <buffer> <silent> <cr> :call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr> nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,'../'))<cr> nnoremap <buffer> <silent> a :call <SID>NetrwHide(1)<cr> - nnoremap <buffer> <silent> mb :<c-u>call <SID>NetrwBookmarkDir(0,b:netrw_curdir)<cr> + nnoremap <buffer> <silent> mb :<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr> nnoremap <buffer> <silent> mc :<c-u>call <SID>NetrwMarkFileCopy(1)<cr> nnoremap <buffer> <silent> md :<c-u>call <SID>NetrwMarkFileDiff(1)<cr> nnoremap <buffer> <silent> me :<c-u>call <SID>NetrwMarkFileEdit(1)<cr> @@ -1694,25 +1738,28 @@ fun! s:BrowserMaps(islocal) nnoremap <buffer> <silent> mu :<c-u>call <SID>NetrwUnMarkFile(1)<cr> nnoremap <buffer> <silent> mx :<c-u>call <SID>NetrwMarkFileExe(1)<cr> nnoremap <buffer> <silent> mz :<c-u>call <SID>NetrwMarkFileCompress(1)<cr> - nnoremap <buffer> <silent> gb :<c-u>call <SID>NetrwBookmarkDir(1,b:netrw_curdir)<cr> + nnoremap <buffer> <silent> gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr> nnoremap <buffer> <silent> gh :<c-u>call <SID>NetrwHidden(1)<cr> + nnoremap <buffer> <silent> gp :<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr> nnoremap <buffer> <silent> c :exe "keepjumps lcd ".fnameescape(b:netrw_curdir)<cr> nnoremap <buffer> <silent> C :let g:netrw_chgwin= winnr()<cr> nnoremap <buffer> <silent> d :call <SID>NetrwMakeDir("")<cr> nnoremap <buffer> <silent> i :call <SID>NetrwListStyle(1)<cr> + nnoremap <buffer> <silent> I :call <SID>NetrwBannerCtrl(1)<cr> nnoremap <buffer> <silent> o :call <SID>NetrwSplit(3)<cr> nnoremap <buffer> <silent> O :call <SID>NetrwObtain(1)<cr> nnoremap <buffer> <silent> p :call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr> nnoremap <buffer> <silent> P :call <SID>NetrwPrevWinOpen(1)<cr> - nnoremap <buffer> <silent> qb :<c-u>call <SID>NetrwBookmarkDir(2,b:netrw_curdir)<cr> - nnoremap <buffer> <silent> mB :<c-u>call <SID>NetrwBookmarkDir(6,b:netrw_curdir)<cr> + nnoremap <buffer> <silent> qb :<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr> + nnoremap <buffer> <silent> mB :<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr> nnoremap <buffer> <silent> qf :<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr> nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr> nnoremap <buffer> <silent> s :call <SID>NetrwSortStyle(1)<cr> nnoremap <buffer> <silent> S :call <SID>NetSortSequence(1)<cr> nnoremap <buffer> <silent> t :call <SID>NetrwSplit(4)<cr> - nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookmarkDir(4,expand("%"))<cr> - nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookmarkDir(5,expand("%"))<cr> + nnoremap <buffer> <silent> T :call <SID>NetrwSplit(4)<bar>norm! gT<cr> + nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr> + nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr> nnoremap <buffer> <silent> v :call <SID>NetrwSplit(5)<cr> nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr> nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(1)<cr> @@ -1754,7 +1801,7 @@ fun! s:BrowserMaps(islocal) nnoremap <buffer> <silent> <c-l> :call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr> nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'../'))<cr> nnoremap <buffer> <silent> a :call <SID>NetrwHide(0)<cr> - nnoremap <buffer> <silent> mb :<c-u>call <SID>NetrwBookmarkDir(0,b:netrw_curdir)<cr> + nnoremap <buffer> <silent> mb :<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr> nnoremap <buffer> <silent> mc :<c-u>call <SID>NetrwMarkFileCopy(0)<cr> nnoremap <buffer> <silent> md :<c-u>call <SID>NetrwMarkFileDiff(0)<cr> nnoremap <buffer> <silent> me :<c-u>call <SID>NetrwMarkFileEdit(0)<cr> @@ -1770,23 +1817,26 @@ fun! s:BrowserMaps(islocal) nnoremap <buffer> <silent> mu :<c-u>call <SID>NetrwUnMarkFile(0)<cr> nnoremap <buffer> <silent> mx :<c-u>call <SID>NetrwMarkFileExe(0)<cr> nnoremap <buffer> <silent> mz :<c-u>call <SID>NetrwMarkFileCompress(0)<cr> - nnoremap <buffer> <silent> gb :<c-u>call <SID>NetrwBookmarkDir(1,b:netrw_cur)<cr> + nnoremap <buffer> <silent> gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_cur)<cr> nnoremap <buffer> <silent> gh :<c-u>call <SID>NetrwHidden(0)<cr> + nnoremap <buffer> <silent> gp :<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr> nnoremap <buffer> <silent> C :let g:netrw_chgwin= winnr()<cr> nnoremap <buffer> <silent> i :call <SID>NetrwListStyle(0)<cr> + nnoremap <buffer> <silent> I :call <SID>NetrwBannerCtrl(1)<cr> nnoremap <buffer> <silent> o :call <SID>NetrwSplit(0)<cr> nnoremap <buffer> <silent> O :call <SID>NetrwObtain(0)<cr> nnoremap <buffer> <silent> p :call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr> nnoremap <buffer> <silent> P :call <SID>NetrwPrevWinOpen(0)<cr> - nnoremap <buffer> <silent> qb :<c-u>call <SID>NetrwBookmarkDir(2,b:netrw_curdir)<cr> - nnoremap <buffer> <silent> mB :<c-u>call <SID>NetrwBookmarkDir(6,b:netrw_curdir)<cr> + nnoremap <buffer> <silent> qb :<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr> + nnoremap <buffer> <silent> mB :<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr> nnoremap <buffer> <silent> qf :<c-u>call <SID>NetrwFileInfo(0,<SID>NetrwGetWord())<cr> nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'./'))<cr> nnoremap <buffer> <silent> s :call <SID>NetrwSortStyle(0)<cr> nnoremap <buffer> <silent> S :call <SID>NetSortSequence(0)<cr> nnoremap <buffer> <silent> t :call <SID>NetrwSplit(1)<cr> - nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookmarkDir(4,b:netrw_curdir)<cr> - nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookmarkDir(5,b:netrw_curdir)<cr> + nnoremap <buffer> <silent> T :call <SID>NetrwSplit(1)<bar>norm! gT<cr> + nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr> + nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr> nnoremap <buffer> <silent> v :call <SID>NetrwSplit(2)<cr> nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr> nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(0)<cr> @@ -1836,7 +1886,7 @@ fun! s:ExplorePatHls(pattern) endfun " --------------------------------------------------------------------- -" s:NetrwBookmarkDir: {{{2 +" s:NetrwBookHistHandler: {{{2 " 0: (user: <mb>) bookmark current directory " 1: (user: <gb>) change to the bookmarked directory " 2: (user: <qb>) list bookmarks @@ -1844,32 +1894,27 @@ endfun " 4: (user: <u>) go up (previous) bookmark " 5: (user: <U>) go down (next) bookmark " 6: (user: <mB>) delete bookmark -fun! s:NetrwBookmarkDir(chg,curdir) -" call Dfunc("NetrwBookmarkDir(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." bookmax=".g:NETRW_BOOKMARKMAX." histmax=".g:netrw_dirhistmax) +fun! s:NetrwBookHistHandler(chg,curdir) +" call Dfunc("NetrwBookHistHandler(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." histcnt=".g:netrw_dirhist_cnt." histmax=".g:netrw_dirhistmax) if a:chg == 0 " bookmark the current directory " call Decho("(user: <b>) bookmark the current directory") - if v:count > 0 - " handle bookmark# specified via the count - let g:NETRW_BOOKMARKDIR_{v:count}= a:curdir - if !exists("g:NETRW_BOOKMARKMAX") - let g:NETRW_BOOKMARKMAX= v:count - elseif v:count > g:NETRW_BOOKMARKMAX - let g:NETRW_BOOKMARKMAX= v:count - endif - else - " handle no count specified - let g:NETRW_BOOKMARKMAX = g:NETRW_BOOKMARKMAX + 1 - let g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX} = a:curdir + if !exists("g:netrw_bookmarklist") + let g:netrw_bookmarklist= [] + endif + if index(g:netrw_bookmarklist,a:curdir) == -1 + " curdir not currently in g:netrw_bookmarklist, so include it + call add(g:netrw_bookmarklist,a:curdir) + call sort(g:netrw_bookmarklist) endif echo "bookmarked the current directory" elseif a:chg == 1 " change to the bookmarked directory -" call Decho("(user: <B>) change to the bookmarked directory") - if exists("g:NETRW_BOOKMARKDIR_{v:count}") - exe "e ".fnameescape(g:NETRW_BOOKMARKDIR_{v:count}) +" call Decho("(user: <".v:count."mb>) change to the bookmarked directory") + if exists("g:netrw_bookmarklist[v:count-1]") + exe "e ".fnameescape(g:netrw_bookmarklist[v:count-1]) else echomsg "Sorry, bookmark#".v:count." doesn't exist!" endif @@ -1879,29 +1924,27 @@ fun! s:NetrwBookmarkDir(chg,curdir) let didwork= 0 " list user's bookmarks " call Decho("(user: <q>) list user's bookmarks") - if exists("g:NETRW_BOOKMARKMAX") -" call Decho("list bookmarks [0,".g:NETRW_BOOKMARKMAX."]") - let cnt= 0 - while cnt <= g:NETRW_BOOKMARKMAX - if exists("g:NETRW_BOOKMARKDIR_{cnt}") -" call Decho("Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt}) - echo "Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt} - let didwork= 1 - endif - let cnt= cnt + 1 - endwhile + if exists("g:netrw_bookmarklist") +" call Decho('list '.len(g:netrw_bookmarklist).' bookmarks') + let cnt= 1 + for bmd in g:netrw_bookmarklist +" call Decho("Netrw Bookmark#".cnt.": ".g:netrw_bookmarklist[cnt-1]) + echo "Netrw Bookmark#".cnt.": ".g:netrw_bookmarklist[cnt-1] + let didwork = 1 + let cnt = cnt + 1 + endfor endif " list directory history - let cnt = g:NETRW_DIRHIST_CNT + let cnt = g:netrw_dirhist_cnt let first = 1 let histcnt = 0 - while ( first || cnt != g:NETRW_DIRHIST_CNT ) -" call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:NETRW_DIRHIST_CNT) + while ( first || cnt != g:netrw_dirhist_cnt ) +" call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:netrw_dirhist_cnt) let histcnt= histcnt + 1 - if exists("g:NETRW_DIRHIST_{cnt}") -" call Decho("Netrw History#".histcnt.": ".g:NETRW_DIRHIST_{cnt}) - echo "Netrw History#".histcnt.": ".g:NETRW_DIRHIST_{cnt} + if exists("g:netrw_dirhist_{cnt}") +" call Decho("Netrw History#".histcnt.": ".g:netrw_dirhist_{cnt}) + echo "Netrw History#".histcnt.": ".g:netrw_dirhist_{cnt} let didwork= 1 endif let first = 0 @@ -1917,22 +1960,21 @@ fun! s:NetrwBookmarkDir(chg,curdir) elseif a:chg == 3 " saves most recently visited directories (when they differ) " call Decho("(browsing) record curdir history") - if !exists("g:NETRW_DIRHIST_0") || g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} != a:curdir - let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax -" let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= substitute(a:curdir,'[/\\]$','','e') - let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= a:curdir -" call Decho("save dirhist#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">") + if !exists("g:netrw_dirhist_cnt") || !exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") || g:netrw_dirhist_{g:netrw_dirhist_cnt} != a:curdir + let g:netrw_dirhist_cnt = ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax + let g:netrw_dirhist_{g:netrw_dirhist_cnt} = a:curdir +" call Decho("save dirhist#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">") endif elseif a:chg == 4 " u: change to the previous directory stored on the history list " call Decho("(user: <u>) chg to prev dir from history") - let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax - if g:NETRW_DIRHIST_CNT < 0 - let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax - endif - if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}") -" call Decho("changedir u#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">") + let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax + if g:netrw_dirhist_cnt < 0 + let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax + endif + if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") +" call Decho("changedir u#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">") if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") setlocal ma noro " call Decho("setlocal ma noro") @@ -1940,19 +1982,19 @@ fun! s:NetrwBookmarkDir(chg,curdir) setlocal nomod " call Decho("setlocal nomod") endif -" " call Decho("exe e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})) - exe "e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}) +" " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})) + exe "e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}) else - let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax + let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax echo "Sorry, no predecessor directory exists yet" endif elseif a:chg == 5 " U: change to the subsequent directory stored on the history list " call Decho("(user: <U>) chg to next dir from history") - let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax - if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}") -" call Decho("changedir U#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">") + let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax + if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") +" call Decho("changedir U#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">") if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") setlocal ma noro " call Decho("setlocal ma noro") @@ -1961,57 +2003,108 @@ fun! s:NetrwBookmarkDir(chg,curdir) setlocal nomod " call Decho("setlocal nomod") endif -" call Decho("exe e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})) - exe "e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}) +" call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})) + exe "e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}) else - let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax - if g:NETRW_DIRHIST_CNT < 0 - let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax + let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax + if g:netrw_dirhist_cnt < 0 + let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax endif echo "Sorry, no successor directory exists yet" endif elseif a:chg == 6 - if v:count > 0 && v:count == g:NETRW_BOOKMARKMAX - " delete the v:count'th bookmark -" call Decho("delete bookmark#".v:count."<".g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}.">") - unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX} - let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1 - - elseif v:count > 0 -" call Decho("delete by shifting bookmark#".v:count."<".g:NETRW_BOOKMARKDIR_{v:count}.">") - let cnt= v:count - while cnt < g:NETRW_BOOKMARKMAX - let g:NETRW_BOOKMARKDIR_{cnt} = g:NETRW_BOOKMARKDIR_{(cnt+1)} - let cnt = cnt + 1 - endwhile - unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX} - let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1 - - elseif exists("b:netrw_curdir") - " look for current directory amongst the bookmarks and remove that bookmark -" call Decho("search for bookmark<".b:netrw_curdir.">") - let cnt= 1 - while cnt <= g:NETRW_BOOKMARKMAX -" call Decho("checking: g:NETRW_BOOKMARKDIR_".cnt."<".g:NETRW_BOOKMARKDIR_{cnt}.">") - if g:NETRW_BOOKMARKDIR_{cnt} == b:netrw_curdir - if cnt < g:NETRW_BOOKMARKMAX -" call Decho("delete bookmark#".cnt."<".b:netrw_curdir.">") - while cnt < g:NETRW_BOOKMARMAX - let g:NETRW_BOOKMARKDIR_{cnt} = g:NETRW_BOOKMARKDIR_{(cnt+1)} - let cnt = cnt + 1 - endwhile - endif - unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX} - let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1 - endif - let cnt= cnt + 1 - endwhile - endif - + " delete the v:count'th bookmark +" call Decho("delete bookmark#".v:count."<".g:netrw_bookmarklist[v:count-1].">") + let savefile= s:NetrwHome()."/.netrwbook" + if filereadable(savefile) + call s:NetrwBookHistSave() " done here to merge bookmarks first + call delete(savefile) + endif + call remove(g:netrw_bookmarklist,v:count-1) endif call s:NetrwBookmarkMenu() -" call Dret("NetrwBookmarkDir") +" call Dret("NetrwBookHistHandler") +endfun + +" --------------------------------------------------------------------- +" s:NetrwBookHistRead: this function reads bookmarks and history {{{2 +" Sister function: s:NetrwBookHistSave() +fun! s:NetrwBookHistRead() +" call Dfunc("s:NetrwBookHistRead()") + if !exists("s:netrw_initbookhist") + let home = s:NetrwHome() + let savefile= home."/.netrwbook" + if filereadable(savefile) +" call Decho("sourcing .netrwbook") + exe "so ".savefile + endif + let savefile= home."/.netrwhist" + if filereadable(savefile) +" call Decho("sourcing .netrwhist") + exe "so ".savefile + endif + let s:netrw_initbookhist= 1 + au VimLeave * call s:NetrwBookHistSave() + endif +" call Dret("s:NetrwBookHistRead") +endfun + +" --------------------------------------------------------------------- +" s:NetrwBookHistSave: this function saves bookmarks and history {{{2 +" Sister function: s:NetrwBookHistRead() +" I used to do this via viminfo but that appears to +" be unreliable for long-term storage +" COMBAK: does $HOME work under windows??? +fun! s:NetrwBookHistSave() +" call Dfunc("s:NetrwBookHistSave() dirhistmax=".g:netrw_dirhistmax) + let savefile= s:NetrwHome()."/.netrwhist" + 1split + call s:NetrwEnew() + setlocal cino= com= cpo-=aA fo=nroql2 tw=0 report=10000 noswf + setlocal nocin noai noci magic nospell nohid wig= noaw + setlocal ma noro write + if exists("&acd") | setlocal noacd | endif + silent %d + + " save .netrwhist -- no attempt to merge + silent! file .netrwhist + call setline(1,"let g:netrw_dirhistmax =".g:netrw_dirhistmax) + call setline(2,"let g:netrw_dirhist_cnt =".g:netrw_dirhist_cnt) + let lastline = line("$") + let cnt = 1 + while cnt <= g:netrw_dirhist_cnt + call setline((cnt+lastline),'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'") + let cnt= cnt + 1 + endwhile + exe "silent! w! ".savefile + + silent %d + if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != [] + " merge and write .netrwbook + let savefile= s:NetrwHome()."/.netrwbook" + + if filereadable(savefile) + let booklist= deepcopy(g:netrw_bookmarklist) + exe "silent so ".savefile + for bdm in booklist + if index(g:netrw_bookmarklist,bdm) == -1 + call add(g:netrw_bookmarklist,bdm) + endif + endfor + call sort(g:netrw_bookmarklist) + exe "silent! w! ".savefile + endif + + " construct and save .netrwbook + call setline(1,"let g:netrw_bookmarklist= ".string(g:netrw_bookmarklist)) + exe "silent! w! ".savefile + endif + let bgone= bufnr("%") + q! + exe bgone."bwipe!" + +" call Dret("s:NetrwBookHistSave") endfun " --------------------------------------------------------------------- @@ -2024,6 +2117,18 @@ fun! s:NetrwBrowse(islocal,dirname) " call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%").">") " call Decho("tab#".tabpagenr()." win#".winnr()) " call Dredir("ls!") + if !exists("s:netrw_initbookhist") + call s:NetrwBookHistRead() + endif +" call FOTEST(7) + + " simplify the dirname (especially for ".."s in dirnames) + if a:dirname !~ '^\a\+://' + let dirname= simplify(a:dirname) + else + let dirname= a:dirname + endif +" call FOTEST(8) if exists("s:netrw_skipbrowse") unlet s:netrw_skipbrowse @@ -2043,37 +2148,40 @@ fun! s:NetrwBrowse(islocal,dirname) endif call s:NetrwOptionSave("w:") - call s:NetrwSafeOptions() +" call FOTEST(9) " re-instate any marked files if exists("s:netrwmarkfilelist_{bufnr('%')}") " call Decho("clearing marked files") exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" endif +" call FOTEST(10) if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep " call Decho("handle w:netrw_acdkeep:") -" call Decho("keepjumps lcd ".fnameescape(a:dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")") - exe 'keepjumps lcd '.fnameescape(a:dirname) +" call Decho("keepjumps lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")") + exe 'keepjumps lcd '.fnameescape(dirname) + call s:NetrwSafeOptions() " call Decho("getcwd<".getcwd().">") - elseif !a:islocal && a:dirname !~ '[\/]$' && a:dirname !~ '^"' + elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"' " looks like a regular file, attempt transfer -" call Decho("attempt transfer as regular file<".a:dirname.">") +" call Decho("attempt transfer as regular file<".dirname.">") " remove any filetype indicator from end of dirname, except for the {{{3 " "this is a directory" indicator (/). " There shouldn't be one of those here, anyway. - let path= substitute(a:dirname,'[*=@|]\r\=$','','e') + let path= substitute(dirname,'[*=@|]\r\=$','','e') " call Decho("new path<".path.">") - call s:RemotePathAnalysis(a:dirname) + call s:RemotePathAnalysis(dirname) " remote-read the requested file into current buffer {{{3 mark ' - call s:NetrwEnew(a:dirname) + call s:NetrwEnew(dirname) + call s:NetrwSafeOptions() setlocal ma noro " call Decho("setlocal ma noro") - let b:netrw_curdir= a:dirname + let b:netrw_curdir= dirname " call Decho("exe silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)." (bt=".&bt.")") exe "silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path) exe "silent keepalt doau BufReadPre ".fnameescape(s:fname) @@ -2092,17 +2200,19 @@ fun! s:NetrwBrowse(islocal,dirname) " call Dret("s:NetrwBrowse : file<".s:fname.">") return endif +" call FOTEST(11) " use buffer-oriented WinVars if buffer ones exist but window ones don't {{{3 call s:UseBufWinVars() " set up some variables {{{3 let b:netrw_browser_active = 1 - let dirname = a:dirname + let dirname = dirname let s:last_sort_by = g:netrw_sort_by " set up menu {{{3 call s:NetrwMenu(1) +" call FOTEST(12) " set up buffer {{{3 let reusing= s:NetrwGetBuffer(a:islocal,dirname) @@ -2122,6 +2232,7 @@ fun! s:NetrwBrowse(islocal,dirname) " call Dret("s:NetrwBrowse : re-using buffer") return endif +"" call FOTEST(13) " PROBLEM WITH LISTING " set b:netrw_curdir to the new directory name {{{3 " call Decho("set b:netrw_curdir to the new directory name:") @@ -2143,6 +2254,7 @@ fun! s:NetrwBrowse(islocal,dirname) let b:netrw_curdir= b:netrw_curdir.'/' endif " call Decho("b:netrw_curdir<".b:netrw_curdir.">") +"" call FOTEST(14) " PROBLEM WITH LISTING " ------------ " (local only) {{{3 @@ -2183,11 +2295,11 @@ fun! s:NetrwBrowse(islocal,dirname) else " call Decho("remote only:") - " analyze a:dirname and g:netrw_list_cmd {{{4 -" call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist")."> a:dirname<".a:dirname.">") - if a:dirname =~ "^NetrwTreeListing\>" + " analyze dirname and g:netrw_list_cmd {{{4 +" call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist")."> dirname<".dirname.">") + if dirname =~ "^NetrwTreeListing\>" let dirname= b:netrw_curdir -" call Decho("(dirname was ".a:dirname.") dirname<".dirname.">") +" call Decho("(dirname was ".dirname.") dirname<".dirname.">") elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") let dirname= substitute(b:netrw_curdir,'\\','/','g') if dirname !~ '/$' @@ -2196,7 +2308,7 @@ fun! s:NetrwBrowse(islocal,dirname) let b:netrw_curdir = dirname " call Decho("(liststyle is TREELIST) dirname<".dirname.">") else - let dirname = substitute(a:dirname,'\\','/','g') + let dirname = substitute(dirname,'\\','/','g') " call Decho("(normal) dirname<".dirname.">") endif @@ -2214,12 +2326,23 @@ fun! s:NetrwBrowse(islocal,dirname) let b:netrw_curdir= dirname " call Decho("b:netrw_curdir<".b:netrw_curdir."> (remote)") endif " (additional remote handling) +"" call FOTEST(15) " PROBLEM WITH LISTING " ----------------------- " Directory Listing: {{{3 " ----------------------- call s:BrowserMaps(a:islocal) +"" call FOTEST(16) " PROBLEM WITH LISTING call s:PerformListing(a:islocal) +" call FOTEST(17) + + " The s:LocalBrowseShellCmdRefresh() function is called by an autocmd + " installed by s:LocalFastBrowser() when g:netrw_fastbrowse <= 1 (ie. slow, medium speed). + " However, s:NetrwBrowse() causes the ShellCmdPost event itself to fire once; setting + " the variable below avoids that second refresh of the screen. The s:LocalBrowseShellCmdRefresh() + " function gets called due to that autocmd; it notices that the following variable is set + " and skips the refresh and sets s:locbrowseshellcmd to zero. Oct 13, 2008 + let s:locbrowseshellcmd= 1 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) " call Dret("s:NetrwBrowse : did PerformListing") @@ -2274,13 +2397,14 @@ fun! s:NetrwGetBuffer(islocal,dirname) " call Decho("--re-use a buffer if possible--") if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST " find NetrwTreeList buffer if there is one +" call Decho("find NetrwTreeList buffer if there is one") if exists("w:netrw_treebufnr") && w:netrw_treebufnr > 0 " call Decho(" re-use w:netrw_treebufnr=".w:netrw_treebufnr) let eikeep= &ei set ei=all exe "b ".w:netrw_treebufnr let &ei= eikeep -" call Dret("s:NetrwGetBuffer : bufnum#".bufnum."<NetrwTreeListing>") +" call Dret("s:NetrwGetBuffer : bufnum#".w:netrw_treebufnr."<NetrwTreeListing>") return endif let bufnum= -1 @@ -2297,7 +2421,7 @@ fun! s:NetrwGetBuffer(islocal,dirname) " call Decho(" bufnr(dirname<".escape(dirname,'\').">)=".bufnum) if bufnum < 0 && dirname !~ '/$' - " trying appending a trailing / + " try appending a trailing / " call Decho(" try appending a trailing / to dirname<".dirname.">") let bufnum= bufnr(escape(dirname.'/','\')) if bufnum > 0 @@ -2306,7 +2430,7 @@ fun! s:NetrwGetBuffer(islocal,dirname) endif if bufnum < 0 && dirname =~ '/$' - " trying removing a trailing / + " try removing a trailing / " call Decho(" try removing a trailing / from dirname<".dirname.">") let bufnum= bufnr(escape(substitute(dirname,'/$','',''),'\')) if bufnum > 0 @@ -2318,17 +2442,26 @@ fun! s:NetrwGetBuffer(islocal,dirname) " note: !~ was used just below, but that means using ../ to go back would match (ie. abc/def/ and abc/ matches) if bufnum > 0 && bufname(bufnum) != dirname && bufname(bufnum) != '.' " handle approximate matches -" call Decho(" handling approx match: bufnum#%d<".bufname(bufnum)."> approx=dirname<".dirname.">") +" call Decho(" handling approx match: bufnum#".bufnum."<".bufname(bufnum)."> approx-dirname<".dirname.">") let ibuf = 1 let buflast = bufnr("$") " call Decho(" findbuf2: buflast=".buflast) while ibuf <= buflast let bname= substitute(bufname(ibuf),'\\','/','g') let bname= substitute(bname,'.\zs/$','','') -" call Decho(" findbuf3: dirname<".dirname."> bufname(".ibuf.")<".bname.">") - if bname != '' && dirname =~ '/'.bname.'/\=$' | break | endif - if bname =~ '^'.dirname.'/\=$' | break | endif - if dirname =~ '^'.bname.'/$' | break | endif +" call Decho(" findbuf3: while [ibuf=",ibuf."]<=[buflast=".buflast."]: dirname<".dirname."> bufname(".ibuf.")<".bname.">") + if bname != '' && dirname =~ '/'.bname.'/\=$' && dirname !~ '^/' +" call Decho(" findbuf3: passes test 1 : dirname<".dirname.'> =~ /'.bname.'/\=$ && dirname !~ ^/') + break + endif + if bname =~ '^'.dirname.'/\=$' +" call Decho(' findbuf3: passes test 2 : bname<'.bname.'>=~^'.dirname.'/\=$') + break + endif + if dirname =~ '^'.bname.'/$' +" call Decho(' findbuf3: passes test 3 : dirname<'.dirname.'>=~^'.bname.'/$') + break + endif let ibuf= ibuf + 1 endwhile if ibuf > buflast @@ -2510,6 +2643,7 @@ fun! s:NetrwGetWord() if !exists("b:netrw_cpf") let b:netrw_cpf= 0 exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif' + call histdel("/",-1) " call Decho("computed cpf=".b:netrw_cpf) endif @@ -2621,6 +2755,22 @@ fun! s:NetrwListStyle(islocal) let svpos= netrw#NetrwSavePosn() call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) call netrw#NetrwRestorePosn(svpos) + if w:netrw_liststyle != s:WIDELIST + if g:netrw_cursorline == 2 + setlocal cursorline + let &cursorcolumn= s:netrw_usercuc + elseif g:netrw_cursorline + setlocal cursorline +" call Decho("setlocal cursorline") + endif + else + if g:netrw_cursorline == 2 + setlocal cursorline cursorcolumn +" call Decho("setlocal cursorline cursorcolumn") + elseif g:netrw_cursorline + let &cursorline= s:netrw_usercul + endif + endif " keep cursor on the filename silent keepjumps $ @@ -2634,6 +2784,29 @@ fun! s:NetrwListStyle(islocal) endfun " --------------------------------------------------------------------- +" s:NetrwBannerCtrl: toggles the display of the banner {{{2 +fun! s:NetrwBannerCtrl(islocal) +" call Dfunc("s:NetrwBannerCtrl(islocal=".a:islocal.") g:netrw_banner=".g:netrw_banner) + + " toggle the banner (enable/suppress) + let g:netrw_banner= !g:netrw_banner + + " refresh the listing + let svpos= netrw#NetrwSavePosn() + call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + + " keep cursor on the filename + let fname= s:NetrwGetWord() + silent keepjumps $ + let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc') +" call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A')) + if result <= 0 && exists("w:netrw_bannercnt") + exe "keepjumps ".w:netrw_bannercnt + endif +" call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner) +endfun + +" --------------------------------------------------------------------- " s:NetrwBookmarkMenu: Uses menu priorities {{{2 " .2.[cnt] for bookmarks, and " .3.[cnt] for history @@ -2642,37 +2815,47 @@ fun! s:NetrwBookmarkMenu() if !exists("s:netrw_menucnt") return endif -" call Dfunc("NetrwBookmarkMenu() bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." menucnt=".s:netrw_menucnt) +" call Dfunc("NetrwBookmarkMenu() histcnt=".g:netrw_dirhist_cnt." menucnt=".s:netrw_menucnt) " the following test assures that gvim is running, has menus available, and has menus enabled. if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu if exists("g:NetrwTopLvlMenu") " call Decho("removing ".g:NetrwTopLvlMenu."Bookmarks menu item(s)") exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete' + endif + if !exists("s:netrw_initbookhist") + call s:NetrwBookHistRead() endif " show bookmarked places - let cnt = 1 - while cnt <= g:NETRW_BOOKMARKMAX - if exists("g:NETRW_BOOKMARKDIR_{cnt}") - let bmdir= escape(g:NETRW_BOOKMARKDIR_{cnt},'. ') -" call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmdir.' :e '.bmdir) - exe 'silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmdir.' :e '.bmdir."\<cr>" - endif - let cnt= cnt + 1 - endwhile + if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != [] + let cnt= 1 + for bmd in g:netrw_bookmarklist +" call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmd.' :e '.bmd) + let bmd= escape(bmd,'. ') + + " show bookmarks for goto menu + exe 'silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmd.' :e '.bmd."\<cr>" + + " show bookmarks for deletion menu + exe 'silent! menu '.g:NetrwMenuPriority.".8.2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete.'.bmd.' '.cnt."mB" + let cnt= cnt + 1 + endfor + + endif " show directory browsing history - let cnt = g:NETRW_DIRHIST_CNT + let cnt = g:netrw_dirhist_cnt let first = 1 let histcnt = 0 - while ( first || cnt != g:NETRW_DIRHIST_CNT ) + while ( first || cnt != g:netrw_dirhist_cnt ) let histcnt = histcnt + 1 - let priority = g:NETRW_DIRHIST_CNT + histcnt - if exists("g:NETRW_DIRHIST_{cnt}") - let bmdir= escape(g:NETRW_DIRHIST_{cnt},'/&? ') -" call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.bmdir) - exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.bmdir."\<cr>" + let priority = g:netrw_dirhist_cnt + histcnt + if exists("g:netrw_dirhist_{cnt}") + let histdir= escape(g:netrw_dirhist_{cnt},'./&? ') +" call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir) + exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir."\<cr>" endif let first = 0 let cnt = ( cnt - 1 ) % g:netrw_dirhistmax @@ -2680,6 +2863,7 @@ fun! s:NetrwBookmarkMenu() let cnt= cnt + g:netrw_dirhistmax endif endwhile + endif " call Dret("NetrwBookmarkMenu") endfun @@ -2702,6 +2886,19 @@ fun! s:NetrwBrowseChgDir(islocal,newdir, return endif + " check if the status bar was clicked on instead of a file/directory name + call feedkeys("\<LeftMouse>") + let c= getchar() + let mouse_lnum = v:mouse_lnum + let wlastline = line('w$') + let lastline = line('$') +" call Decho("v:mouse_lnum=".mouse_lnum." line(w$)=".wlastline." line($)=".lastline) + if mouse_lnum == wlastline + 1 +" call Decho("appears to be a status bar leftmouse click") + " appears to be a status bar leftmouse click + return + endif + call s:NetrwOptionSave("s:") call s:NetrwSafeOptions() let nbcd_curpos = netrw#NetrwSavePosn() @@ -2737,6 +2934,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir, else let dirname= s:NetrwTreeDir()."/".newdir endif +" call Decho("dirname<".dirname.">") " call Decho("tree listing") elseif newdir =~ '^\(/\|\a:\)' let dirname= newdir @@ -2751,10 +2949,14 @@ fun! s:NetrwBrowseChgDir(islocal,newdir, if !exists("s:didsplit") if g:netrw_browse_split == 1 new - wincmd _ + if !&ea + wincmd _ + endif elseif g:netrw_browse_split == 2 rightb vert new - wincmd | + if !&ea + wincmd | + endif elseif g:netrw_browse_split == 3 tabnew elseif g:netrw_browse_split == 4 @@ -2781,6 +2983,22 @@ fun! s:NetrwBrowseChgDir(islocal,newdir, " call Decho("remote file: NetrwBrowse will edit it") endif let dolockout= 1 + + " handle g:Netrw_funcref -- call external-to-netrw functions + " This code will handle g:Netrw_funcref as an individual function reference + " or as a list of function references. It will ignore anything that's not + " a function reference. See :help Funcref for information about function references. + if exists("g:Netrw_funcref") + if type(g:Netrw_funcref) == 2 + call g:Netrw_funcref() + elseif type(g:Netrw_funcref) == 3 + for Fncref in g:Netrw_funcref + if type(FncRef) == 2 + call FncRef() + endif + endfor + endif + endif endif elseif newdir =~ '^/' @@ -2887,15 +3105,16 @@ fun! s:NetrwBrowseChgDir(islocal,newdir, " close tree listing for selected subdirectory " call Decho("closing selected subdirectory<".dirname.">") call remove(w:netrw_treedict,treedir) -" call Decho("removed entry<".dirname."> from treedict") +" call Decho("removed entry<".treedir."> from treedict") " call Decho("yielding treedict<".string(w:netrw_treedict).">") - let dirname= w:netrw_treetop + let dirname = w:netrw_treetop else " go down one directory let dirname= substitute(treedir,'/*$','/','') " call Decho("go down one dir: treedir<".treedir.">") endif call s:SetRexDir(a:islocal,dirname) + let s:treeforceredraw = 1 else " go down one directory @@ -2916,17 +3135,40 @@ fun! s:NetrwBrowseChgDir(islocal,newdir, endfun " --------------------------------------------------------------------- -" s:NetrwBrowseX: allows users to write custom functions to operate on {{{2 -" files given their extension. Passes 0=local, 1=remote +" s:NetrwBrowseX: (implements "x") executes a special "viewer" script or program for the {{{2 +" given filename; typically this means given their extension. +" 0=local, 1=remote fun! netrw#NetrwBrowseX(fname,remote) " call Dfunc("NetrwBrowseX(fname<".a:fname."> remote=".a:remote.")") + " special core dump handler + if a:fname =~ '/core\(\.\d\+\)\=$' + if exists("g:Netrw_corehandler") + if type(g:Netrw_corehandler) == 2 + " g:Netrw_corehandler is a function reference (see :help Funcref) +" call Decho("g:Netrw_corehandler is a funcref") + call g:Netrw_corehandler(a:fname) + elseif type(g:netrw_corehandler) == 3) + " g:Netrw_corehandler is a List of function references (see :help Funcref) +" call Decho("g:Netrw_corehandler is a List") + for Fncref in g:Netrw_corehandler + if type(FncRef) == 2 + call FncRef(a:fname) + endif + endfor + endif +" call Dret("NetrwBrowseX : coredump handler invoked") + return + endif + endif + " set up the filename " (lower case the extension, make a local copy of a remote file) let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') if has("win32") || has("win95") || has("win64") || has("win16") let exten= substitute(exten,'^.*$','\L&\E','') endif +" call Decho("exten<".exten.">") " seems kde systems often have gnome-open due to dependencies, even though " gnome-open's subsidiary display tools are largely absent. Kde systems @@ -2945,16 +3187,25 @@ fun! netrw#NetrwBrowseX(fname,remote) if a:remote == 1 " create a local copy - let fname= fnamemodify(tempname(),":r").".".exten -" call Decho("a:remote=".a:remote.": create a local copy of <".fname."> as <".fname.">") - exe "silent keepjumps bot 1new ".fnameescape(fname) +" call Decho("a:remote=".a:remote.": create a local copy of <".a:fname.">") setlocal bh=delete -" call Decho("read <".fnameescape(fname).">, now writing: exe w! ".fnameescape(fname)) - exe "silent! w! ".fnameescape(fname) - q + call netrw#NetRead(3,a:fname) + " attempt to rename tempfile + let basename= substitute(a:fname,'^\(.*\)/\(.*\)\.\([^.]*\)$','\2','') + let newname= substitute(s:netrw_tmpfile,'^\(.*\)/\(.*\)\.\([^.]*\)$','\1/'.basename.'.\3','') +" call Decho("basename<".basename.">") +" call Decho("newname <".newname.">") + if rename(s:netrw_tmpfile,newname) == 0 + " renaming succeeded + let fname= newname + else + " renaming failed + let fname= s:netrw_tmpfile + endif else let fname= a:fname endif +" call Decho("fname<".fname.">") " call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten)) " set up redirection @@ -2973,6 +3224,7 @@ fun! netrw#NetrwBrowseX(fname,remote) " extract any viewing options. Assumes that they're set apart by quotes. if exists("g:netrw_browsex_viewer") +" call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">") if g:netrw_browsex_viewer =~ '\s' let viewer = substitute(g:netrw_browsex_viewer,'\s.*$','','') let viewopt = substitute(g:netrw_browsex_viewer,'^\S\+\s*','','')." " @@ -3004,8 +3256,15 @@ fun! netrw#NetrwBrowseX(fname,remote) let ret= v:shell_error elseif has("win32") || has("win64") -" call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)) - exe 'silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1) + if executable("start") +" call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)) + exe 'silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1) + elseif executable("rundll32") +" call Decho('exe silent !rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)) + exe 'silent !rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1) + else + call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) + endif call inputsave()|call input("Press <cr> to continue")|call inputrestore() let ret= v:shell_error @@ -3060,19 +3319,72 @@ fun! netrw#NetrwBrowseX(fname,remote) endfun " --------------------------------------------------------------------- +" s:NetrwChgPerm: (implements "gp") change file permission {{{2 +fun! s:NetrwChgPerm(islocal,curdir) +" call Dfunc("s:NetrwChgPerm(islocal=".a:islocal." curdir<".a:curdir.">)") + call inputsave() + let newperm= input("Enter new permission: ") + call inputrestore() + let chgperm= substitute(g:netrw_chgperm,'\<FILENAME\>',shellescape(expand("<cfile>")),'') + let chgperm= substitute(chgperm,'\<PERM\>',shellescape(newperm),'') +" call Decho("chgperm<".chgperm.">") + call system(chgperm) + if v:shell_error != 0 + call netrw#ErrorMsg(1,"changing permission on file<".expand("<cfile>")."> seems to have failed",75) + endif + if a:islocal + call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + endif +" call Dret("s:NetrwChgPerm") +endfun + +" --------------------------------------------------------------------- +" s:NetrwClearExplore: clear explore variables (if any) {{{2 +fun! s:NetrwClearExplore() +" call Dfunc("s:NetrwClearExplore()") + 2match none + if exists("s:explore_match") |unlet s:explore_match |endif + if exists("s:explore_indx") |unlet s:explore_indx |endif + if exists("s:netrw_explore_prvdir") |unlet s:netrw_explore_prvdir |endif + if exists("s:dirstarstar") |unlet s:dirstarstar |endif + if exists("s:explore_prvdir") |unlet s:explore_prvdir |endif + if exists("w:netrw_explore_indx") |unlet w:netrw_explore_indx |endif + if exists("w:netrw_explore_listlen")|unlet w:netrw_explore_listlen|endif + if exists("w:netrw_explore_list") |unlet w:netrw_explore_list |endif + if exists("w:netrw_explore_bufnr") |unlet w:netrw_explore_bufnr |endif +" redraw! + echo " " + echo " " +" call Dret("s:NetrwClearExplore") +endfun + +" --------------------------------------------------------------------- " netrw#Explore: launch the local browser in the directory of the current file {{{2 -" dosplit==0: the window will be split iff the current file has -" been modified -" dosplit==1: the window will be split before running the local -" browser +" indx: == -1: Nexplore +" == -2: Pexplore +" == +: this is overloaded: +" * If Nexplore/Pexplore is in use, then this refers to the +" indx'th item in the w:netrw_explore_list[] of items which +" matched the */pattern **/pattern *//pattern **//pattern +" * If Hexplore or Vexplore, then this will override +" g:netrw_winsize to specify the qty of rows or columns the +" newly split window should have. +" dosplit==0: the window will be split iff the current file has been modified +" dosplit==1: the window will be split before running the local browser +" style == 0: Explore style == 1: Explore! +" == 2: Hexplore style == 3: Hexplore! +" == 4: Vexplore style == 5: Vexplore! +" == 6: Texplore fun! netrw#Explore(indx,dosplit,style,...) " call Dfunc("netrw#Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.",a:1<".a:1.">) &modified=".&modified." a:0=".a:0) if !exists("b:netrw_curdir") let b:netrw_curdir= getcwd() " call Decho("set b:netrw_curdir<".b:netrw_curdir."> (used getcwd)") endif - let curfile= b:netrw_curdir -" call Decho("curfile<".curfile.">") + let curdir = b:netrw_curdir + let curfiledir = substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e') +" call Decho("curdir<".curdir."> curfiledir<".curfiledir.">") +" call FOTEST(1) " save registers silent! let keepregstar = @* @@ -3083,30 +3395,34 @@ fun! netrw#Explore(indx,dosplit,style,.. if a:dosplit || &modified || a:style == 6 " call Decho("case: dosplit=".a:dosplit." modified=".&modified." a:style=".a:style) call s:SaveWinVars() + let winsize= g:netrw_winsize + if a:indx > 0 + let winsize= a:indx + endif if a:style == 0 " Explore, Sexplore " call Decho("style=0: Explore or Sexplore") - exe g:netrw_winsize."wincmd s" + exe winsize."wincmd s" elseif a:style == 1 "Explore!, Sexplore! " call Decho("style=1: Explore! or Sexplore!") - exe g:netrw_winsize."wincmd v" + exe winsize."wincmd v" elseif a:style == 2 " Hexplore " call Decho("style=2: Hexplore") - exe "bel ".g:netrw_winsize."wincmd s" + exe "bel ".winsize."wincmd s" elseif a:style == 3 " Hexplore! " call Decho("style=3: Hexplore!") - exe "abo ".g:netrw_winsize."wincmd s" + exe "abo ".winsize."wincmd s" elseif a:style == 4 " Vexplore " call Decho("style=4: Vexplore") - exe "lefta ".g:netrw_winsize."wincmd v" + exe "lefta ".winsize."wincmd v" elseif a:style == 5 " Vexplore! " call Decho("style=5: Vexplore!") - exe "rightb ".g:netrw_winsize."wincmd v" + exe "rightb ".winsize."wincmd v" elseif a:style == 6 " Texplore call s:SaveBufVars() @@ -3117,6 +3433,7 @@ fun! netrw#Explore(indx,dosplit,style,.. call s:RestoreWinVars() endif norm! 0 +" call FOTEST(2) if a:0 > 0 " call Decho("case [a:0=".a:0."]>0: a:1<".a:1.">") @@ -3131,28 +3448,18 @@ fun! netrw#Explore(indx,dosplit,style,.. " call Decho("using dirname<".dirname."> (case: ".(exists("b:netrw_curdir")? "b:netrw_curdir" : "getcwd()").")") elseif a:1 =~ '\$' let dirname= expand(a:1) +" call Decho("using user-specified dirname<".dirname."> with $env-var") else let dirname= a:1 -" call Decho("using dirname<".dirname.">") +" call Decho("using user-specified dirname<".dirname.">") endif else " clear explore -" call Decho("clearing explore variables") - 2match none - if exists("s:explore_match") |unlet s:explore_match |endif - if exists("s:explore_indx") |unlet s:explore_indx |endif - if exists("s:dirstarstar") |unlet s:dirstarstar |endif - if exists("s:dirstarstar") |unlet s:dirstarstar |endif - if exists("w:netrw_explore_indx") |unlet w:netrw_explore_indx |endif - if exists("w:netrw_explore_listlen")|unlet w:netrw_explore_listlen|endif - if exists("w:netrw_explore_list") |unlet w:netrw_explore_list |endif - if exists("w:netrw_explore_bufnr") |unlet w:netrw_explore_bufnr |endif -" redraw! - echo " " - echo " " + call s:NetrwClearExplore() " call Dret("netrw#Explore : cleared list") return endif +" call FOTEST(3) if dirname =~ '/\*\*/' " handle .../**/.../filepat @@ -3192,15 +3499,19 @@ fun! netrw#Explore(indx,dosplit,style,.. " starpat=4: Explore **/filepat (recursive descent search for filenames matching filepat) let starpat= 4 " call Decho("case Explore **/filepat (starpat=".starpat.")") + else let starpat= 0 - endif +" call Decho("default case: starpat=".starpat) + endif +" call FOTEST(4) if starpat == 0 && a:indx >= 0 " [Explore Hexplore Vexplore Sexplore] [dirname] -" call Decho("case dirname<".dirname."> a:indx=".a:indx.": Explore Hexplore Vexplore Sexplore") +" call Decho("case starpat==0 && a:indx=".a:indx.": dirname<".dirname."> Explore Hexplore Vexplore Sexplore") if dirname == "" - let dirname= substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e') + let dirname= curfiledir +" call Decho("empty dirname, using current file's directory<".dirname.">") endif if dirname =~ '^scp:' || dirname =~ '^ftp:' " call Decho("calling NetrwBrowse(0,dirname<".dirname.">)") @@ -3211,11 +3522,11 @@ fun! netrw#Explore(indx,dosplit,style,.. call netrw#LocalBrowseCheck(dirname) endif -" call Decho("curfile<".curfile.">") +" call Decho("curdir<".curdir.">") if has("win32") || has("win95") || has("win64") || has("win16") - call search('\<'.substitute(curfile,'^.*[/\\]','','e').'\>','cW') + call search('\<'.substitute(curdir,'^.*[/\\]','','e').'\>','cW') else - call search('\<'.substitute(curfile,'^.*/','','e').'\>','cW') + call search('\<'.substitute(curdir,'^.*/','','e').'\>','cW') endif " starpat=1: Explore *//pattern (current directory only search for files containing pattern) @@ -3224,7 +3535,7 @@ fun! netrw#Explore(indx,dosplit,style,.. " starpat=4: Explore **/filepat (recursive descent search for filenames matching filepat) elseif a:indx <= 0 " Nexplore, Pexplore, Explore: handle starpat -" call Decho("case Nexplore, Pexplore, <s-down>, <s-up>: starpat=".starpat." a:indx=".a:indx) +" call Decho("case a:indx<=0: Nexplore, Pexplore, <s-down>, <s-up> starpat=".starpat." a:indx=".a:indx) if !mapcheck("<s-up>","n") && !mapcheck("<s-down>","n") && exists("b:netrw_curdir") " call Decho("set up <s-up> and <s-down> maps") let s:didstarstar= 1 @@ -3237,9 +3548,10 @@ fun! netrw#Explore(indx,dosplit,style,.. if !exists("w:netrw_explore_indx") let w:netrw_explore_indx= 0 endif + let indx = a:indx " call Decho("starpat=".starpat.": set indx= [a:indx=".indx."]") -" + if indx == -1 " Nexplore " call Decho("case Nexplore with starpat=".starpat.": (indx=".indx.")") @@ -3290,6 +3602,7 @@ fun! netrw#Explore(indx,dosplit,style,.. " Explore -- initialize " build list of files to Explore with Nexplore/Pexplore " call Decho("starpat=".starpat.": case Explore: initialize (indx=".indx.")") + call s:NetrwClearExplore() let w:netrw_explore_indx= 0 if !exists("b:netrw_curdir") let b:netrw_curdir= getcwd() @@ -3300,17 +3613,24 @@ fun! netrw#Explore(indx,dosplit,style,.. if starpat == 1 " starpat=1: Explore *//pattern (current directory only search for files containing pattern) " call Decho("starpat=".starpat.": build *//pattern list") - exe "vimgrep /".pattern."/gj ".fnameescape(b:netrw_curdir)."/*" - let w:netrw_explore_list = map(getqflist(),'bufname(v:val.bufnr)') +" call Decho("pattern<".pattern.">") + try + exe "noautocmd vimgrep /".pattern."/gj ".fnameescape(b:netrw_curdir)."/*" + catch /^Vim\%((\a\+)\)\=:E480/ + call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76) +" call Dret("netrw#Explore : unable to find pattern<".pattern.">") + return + endtry + let w:netrw_explore_list = s:NetrwExploreListUniq(map(getqflist(),'bufname(v:val.bufnr)')) if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif elseif starpat == 2 " starpat=2: Explore **//pattern (recursive descent search for files containing pattern) " call Decho("starpat=".starpat.": build **//pattern list") try - exe "silent vimgrep /".pattern."/gj "."**/*" + exe "silent noautocmd vimgrep /".pattern."/gj "."**/*" catch /^Vim\%((\a\+)\)\=:E480/ - call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45) + call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45) if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif silent! let @* = keepregstar silent! let @+ = keepregstar @@ -3320,19 +3640,22 @@ fun! netrw#Explore(indx,dosplit,style,.. endtry let s:netrw_curdir = b:netrw_curdir let w:netrw_explore_list = getqflist() - let w:netrw_explore_list = map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)') + let w:netrw_explore_list = s:NetrwExploreListUniq(map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)')) elseif starpat == 3 " starpat=3: Explore */filepat (search in current directory for filenames matching filepat) " call Decho("starpat=".starpat.": build */filepat list") - let dirname = substitute(dirname,'^\*/','','') - let w:netrw_explore_list= split(expand(b:netrw_curdir."/".dirname),'\n') - if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif + let filepat= substitute(dirname,'^\*/','','') + let filepat= substitute(filepat,'^[%#<]','\\&','') +" call Decho("b:netrw_curdir<".b:netrw_curdir.">") +" call Decho("filepat<".filepat.">") + let w:netrw_explore_list= s:NetrwExploreListUniq(split(expand(b:netrw_curdir."/".filepat),'\n')) + if &hls | let keepregslash= s:ExplorePatHls(filepat) | endif elseif starpat == 4 " starpat=4: Explore **/filepat (recursive descent search for filenames matching filepat) " call Decho("starpat=".starpat.": build **/filepat list") - let w:netrw_explore_list= split(expand(b:netrw_curdir."/".dirname),'\n') + let w:netrw_explore_list= s:NetrwExploreListUniq(split(expand(b:netrw_curdir."/".dirname),'\n')) if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif endif " switch on starpat to build w:netrw_explore_list @@ -3352,7 +3675,7 @@ fun! netrw#Explore(indx,dosplit,style,.. " NetrwStatusLine support - for exploring support let w:netrw_explore_indx= indx -" call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen) +" call Decho("w:netrw_explore_list<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen) " wrap the indx around, but issue a note if indx >= w:netrw_explore_listlen || indx < 0 @@ -3360,7 +3683,6 @@ fun! netrw#Explore(indx,dosplit,style,.. let indx = (indx < 0)? ( w:netrw_explore_listlen - 1 ) : 0 let w:netrw_explore_indx= indx call netrw#ErrorMsg(s:NOTE,"no more files match Explore pattern",43) - sleep 1 endif exe "let dirfile= w:netrw_explore_list[".indx."]" @@ -3397,7 +3719,7 @@ fun! netrw#Explore(indx,dosplit,style,.. endif else -" call Decho("case Explore newdir<".dirname.">") +" call Decho("default case: Explore newdir<".dirname.">") if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && dirname =~ '/' silent! unlet w:netrw_treedict silent! unlet w:netrw_treetop @@ -3409,14 +3731,19 @@ fun! netrw#Explore(indx,dosplit,style,.. call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,newdir)) endif endif +" call FOTEST(5) " visual display of **/ **// */ Exploration files +" call Decho("w:netrw_explore_indx=".(exists("w:netrw_explore_indx")? w:netrw_explore_indx : "doesn't exist")) +" call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "n/a").">") if exists("w:netrw_explore_indx") && exists("b:netrw_curdir") +" call Decho("s:explore_prvdir<".(exists("s:explore_prvdir")? s:explore_prvdir : "-doesn't exist-")) if !exists("s:explore_prvdir") || s:explore_prvdir != b:netrw_curdir " only update match list if current directory isn't the same as before +" call Decho("only update match list if current directory not the same as before") let s:explore_prvdir = b:netrw_curdir let s:explore_match = "" - let dirlen = strlen(b:netrw_curdir) + let dirlen = s:Strlen(b:netrw_curdir) if b:netrw_curdir !~ '/$' let dirlen= dirlen + 1 endif @@ -3425,15 +3752,15 @@ fun! netrw#Explore(indx,dosplit,style,.. " call Decho("fname<".fname.">") if fname =~ '^'.b:netrw_curdir if s:explore_match == "" - let s:explore_match= '\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>' + let s:explore_match= '\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc).'\>' else - let s:explore_match= s:explore_match.'\|\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>' + let s:explore_match= s:explore_match.'\|\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc).'\>' endif elseif fname !~ '^/' && fname != prvfname if s:explore_match == "" - let s:explore_match= '\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>' + let s:explore_match= '\<'.escape(fname,g:netrw_markfileesc).'\>' else - let s:explore_match= s:explore_match.'\|\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>' + let s:explore_match= s:explore_match.'\|\<'.escape(fname,g:netrw_markfileesc).'\>' endif endif let prvfname= fname @@ -3449,6 +3776,7 @@ fun! netrw#Explore(indx,dosplit,style,.. echo " " " call Decho("cleared explore match list") endif +" call FOTEST(6) silent! let @* = keepregstar silent! let @+ = keepregstar @@ -3457,6 +3785,24 @@ fun! netrw#Explore(indx,dosplit,style,.. endfun " --------------------------------------------------------------------- +" s:NetrwExploreListUniq: {{{2 +fun! s:NetrwExploreListUniq(explist) +" call Dfunc("s:NetrwExploreListUniq(explist)") + + " this assumes that the list is already sorted + let newexplist= [] + for member in a:explist + if !exists("uniqmember") || member != uniqmember + let uniqmember = member + let newexplist = newexplist + [ member ] + endif + endfor + +" call Dret("s:NetrwExploreListUniq") + return newexplist +endfun + +" --------------------------------------------------------------------- " s:NetrwHide: this function is invoked by the "a" map for browsing {{{2 " and switches the hiding mode. The actual hiding is done by " s:NetrwListHide(). @@ -3490,9 +3836,7 @@ fun! s:NetrwHide(islocal) " call Decho("hide: g:netrw_list_hide<".g:netrw_list_hide.">") endif endfor - unlet s:netrwmarkfilelist_{bufnr("%")} - unlet s:netrwmarkfilemtch_{bufnr("%")} - 2match none + call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir) let g:netrw_hide= 1 else @@ -3522,7 +3866,7 @@ fun! s:NetrwHidden(islocal) if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+' " remove pattern from hiding list let g:netrw_list_hide= substitute(g:netrw_list_hide,'\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+','','') - elseif strlen(g:netrw_list_hide) >= 1 + elseif s:Strlen(g:netrw_list_hide) >= 1 let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+' else let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+' @@ -3535,6 +3879,41 @@ fun! s:NetrwHidden(islocal) endfun " --------------------------------------------------------------------- +" s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2 +fun! s:NetrwHome() + if exists("g:netrw_home") + let home= g:netrw_home + else + " go to vim plugin home + for home in split(&rtp,',') + [''] + if isdirectory(home) && filewritable(home) | break | endif + let basehome= substitute(home,'[/\\]\.vim$','','') + if isdirectory(basehome) && filewritable(basehome) + let home= basehome."/.vim" + break + endif + endfor + if home == "" + " just pick the first directory + let home= substitute(&rtp,',.*$','','') + endif + if (has("win32") || has("win95") || has("win64") || has("win16")) + let home= substitute(home,'/','\\','g') + endif + endif + " insure that the home directory exists + if !isdirectory(home) + if exists("g:netrw_mkdir") + call system(g:netrw_mkdir." ".shellescape(home)) + else + call mkdir(home) + endif + endif + let g:netrw_home= home + return home +endfun + +" --------------------------------------------------------------------- " s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2 fun! s:NetrwLeftmouse(islocal) " call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")") @@ -3749,6 +4128,7 @@ fun! s:NetrwMarkFile(islocal,fname) " call Dfunc("s:NetrwMarkFile(islocal=".a:islocal." fname<".a:fname.">)") let curbufnr= bufnr("%") let curdir = b:netrw_curdir + let trailer = '[@=|\/\*]\=\>' if exists("s:netrwmarkfilelist_{curbufnr}") " markfile list exists " call Decho("starting s:netrwmarkfilelist_{curbufnr}<".string(s:netrwmarkfilelist_{curbufnr}).">") @@ -3759,7 +4139,7 @@ fun! s:NetrwMarkFile(islocal,fname) " append filename to buffer's markfilelist " call Decho("append filename<".a:fname."> to local markfilelist_".curbufnr."<".string(s:netrwmarkfilelist_{curbufnr}).">") call add(s:netrwmarkfilelist_{curbufnr},a:fname) - let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|\<'.escape(a:fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>' + let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|\<'.escape(a:fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").trailer else " remove filename from buffer's markfilelist @@ -3767,7 +4147,7 @@ fun! s:NetrwMarkFile(islocal,fname) call filter(s:netrwmarkfilelist_{curbufnr},'v:val != a:fname') if s:netrwmarkfilelist_{curbufnr} == [] " local markfilelist is empty; remove it entirely -" call Decho("markfile list now empty, unlet s:netrwmarkfilelist_".curbufnr." and ...mtch_".curbufnr) +" call Decho("markfile list now empty") call s:NetrwUnmarkList(curbufnr,curdir) else " rebuild match list to display markings correctly @@ -3776,9 +4156,9 @@ fun! s:NetrwMarkFile(islocal,fname) let first = 1 for fname in s:netrwmarkfilelist_{curbufnr} if first - let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>' + let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").trailer else - let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>' + let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").trailer endif let first= 0 endfor @@ -3799,7 +4179,7 @@ fun! s:NetrwMarkFile(islocal,fname) if a:fname =~ '/$' let s:netrwmarkfilemtch_{curbufnr}= '\<'.escape(a:fname,g:netrw_markfileesc) else - let s:netrwmarkfilemtch_{curbufnr}= '\<'.escape(a:fname,g:netrw_markfileesc).'\>' + let s:netrwmarkfilemtch_{curbufnr}= '\<'.escape(a:fname,g:netrw_markfileesc).trailer endif " call Decho("ending s:netrwmarkfilemtch_".curbufnr."<".s:netrwmarkfilemtch_{curbufnr}.">") endif @@ -3830,7 +4210,9 @@ fun! s:NetrwMarkFile(islocal,fname) " set up 2match'ing to netrwmarkfilemtch list if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != "" " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/") - exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/" + if exists("g:did_drchip_netrwlist_syntax") + exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/" + endif else " call Decho("2match none") 2match none @@ -3858,7 +4240,7 @@ fun! s:NetrwMarkFileCompress(islocal) for sfx in sort(keys(g:netrw_decompress)) if fname =~ '\'.sfx.'$' " fname has a suffix indicating that its compressed; apply associated decompression routine - let exe= s:WinPath(g:netrw_decompress[sfx]) + let exe= netrw#WinPath(g:netrw_decompress[sfx]) " call Decho("fname<".fname."> is compressed so decompress with <".exe.">") if a:islocal if g:netrw_keepdir @@ -3883,10 +4265,10 @@ fun! s:NetrwMarkFileCompress(islocal) unlet exe elseif a:islocal " fname not a compressed file, so compress it - call system(s:WinPath(g:netrw_compress)." ".shellescape(s:ComposePath(b:netrw_curdir,fname))) + call system(netrw#WinPath(g:netrw_compress)." ".shellescape(s:ComposePath(b:netrw_curdir,fname))) else " fname not a compressed file, so compress it - call s:RemoteSystem(s:WinPath(g:netrw_compress)." ".shellescape(fname)) + call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".shellescape(fname)) endif endfor call s:NetrwUnmarkList(curbufnr,curdir) @@ -3927,7 +4309,7 @@ fun! s:NetrwMarkFileCopy(islocal) " call Decho("copy from local to local") let args= join(map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),"shellescape(b:netrw_curdir.\"/\".v:val)")) " call Decho("system(".g:netrw_localcopycmd." ".args." ".shellescape(s:netrwmftgt).")") - call system(s:WinPath(g:netrw_localcopycmd)." ".args." ".shellescape(s:netrwmftgt)) + call system(netrw#WinPath(g:netrw_localcopycmd)." ".args." ".shellescape(s:netrwmftgt)) elseif a:islocal && !s:netrwmftgt_islocal " Copy marked files, local directory to remote directory @@ -3982,7 +4364,9 @@ fun! s:NetrwMarkFileCopy(islocal) if a:islocal call s:NetrwRefreshDir(a:islocal,b:netrw_curdir) endif - call s:LocalBrowseShellCmdRefresh() + if g:netrw_fastbrowse <= 1 + call s:LocalBrowseShellCmdRefresh() + endif " call Dret("s:NetrwMarkFileCopy 1") return 1 @@ -4064,10 +4448,10 @@ fun! s:NetrwMarkFileExe(islocal) for fname in s:netrwmarkfilelist_{curbufnr} if a:islocal if g:netrw_keepdir - let fname= shellescape(s:WinPath(s:ComposePath(curdir,fname))) + let fname= shellescape(netrw#WinPath(s:ComposePath(curdir,fname))) endif else - let fname= shellescape(s:WinPath(b:netrw_curdir.fname)) + let fname= shellescape(netrw#WinPath(b:netrw_curdir.fname)) endif if cmd =~ '%' let xcmd= substitute(cmd,'%',fname,'g') @@ -4185,7 +4569,13 @@ fun! s:NetrwMarkFileGrep(islocal) " use vimgrep for both local and remote " call Decho("exe vimgrep".pat." ".netrwmarkfilelist) - exe "vimgrep".pat." ".netrwmarkfilelist + try + exe "noautocmd vimgrep".pat." ".netrwmarkfilelist + catch /^Vim\%((\a\+)\)\=:E480/ + call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76) +" call Dret("s:NetrwMarkFileGrep : unable to find pattern<".pattern.">") + return + endtry 2match none call netrw#NetrwRestorePosn(svpos) @@ -4290,7 +4680,9 @@ fun! s:NetrwMarkFileMove(islocal) if a:islocal call s:NetrwRefreshDir(a:islocal,b:netrw_curdir) endif - call s:LocalBrowseShellCmdRefresh() + if g:netrw_fastbrowse <= 1 + call s:LocalBrowseShellCmdRefresh() + endif " call Dret("s:NetrwMarkFileMove") endfun @@ -4342,24 +4734,15 @@ fun! s:NetrwMarkFileRegexp(islocal) " get the matching list of files using local glob() " call Decho("handle local regexp") let dirname = escape(b:netrw_curdir,g:netrw_glob_escape) - let filelist = glob(s:ComposePath(dirname,regexp)) - if filelist != "" - let filelist= filelist."\n" - endif + let files = glob(s:ComposePath(dirname,regexp)) +" call Decho("files<".files.">") + let filelist= split(files,"\n") " mark the list of files - while filelist != "" - if filelist =~ '\n' - let filename = substitute(filelist,'\n.*$','','e') - let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e') - else - let filename = filelist - let filelist = "" - endif -" call Decho("filelist<".filelist.">") -" call Decho("filename<".filename.">") - call s:NetrwMarkFile(a:islocal,substitute(filename,'^.*/','','')) - endwhile + for fname in filelist +" call Decho("fname<".fname.">") + call s:NetrwMarkFile(a:islocal,substitute(fname,'^.*/','','')) + endfor else " call Decho("handle remote regexp") @@ -4371,7 +4754,8 @@ fun! s:NetrwMarkFileRegexp(islocal) set ei=all ma " call Decho("set ei=all ma") 1split - enew + call s:NetrwEnew() + call s:NetrwSafeOptions() silent norm! "ap 2 let bannercnt= search('^" =====','W') @@ -4379,16 +4763,21 @@ fun! s:NetrwMarkFileRegexp(islocal) set bt=nofile if g:netrw_liststyle == s:LONGLIST silent %s/\s\{2,}\S.*$//e + call histdel("/",-1) elseif g:netrw_liststyle == s:WIDELIST silent %s/\s\{2,}/\r/ge + call histdel("/",-1) elseif g:netrw_liststyle == s:TREELIST silent %s/^| //e silent! g/^ .*$/d + call histdel("/",-1) + call histdel("/",-1) endif " convert regexp into the more usual glob-style format let regexp= substitute(regexp,'\*','.*','g') " call Decho("regexp<".regexp.">") exe "silent! v/".escape(regexp,'/')."/d" + call histdel("/",-1) let filelist= getline(1,line("$")) q! for filename in filelist @@ -4459,6 +4848,7 @@ fun! s:NetrwMarkFileTag(islocal) let path= substitute(curdir,'^\(.*\)/[^/]*$','\1/','') " call Decho("curdir<".curdir."> path<".path.">") exe '%s/\t\(\S\+\)\t/\t'.escape(path,"/\n\r\\").'\1\t/e' + call histdel("/",-1) wq! endif 2match none @@ -4518,7 +4908,7 @@ fun! s:NetrwMarkFileTgt(islocal) endif let s:netrwmftgt_islocal= a:islocal - if g:netrw_fastbrowse > 0 + if g:netrw_fastbrowse <= 1 call s:LocalBrowseShellCmdRefresh() endif call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) @@ -4653,20 +5043,17 @@ fun! s:NetrwMenu(domenu) " call Decho("initialize menu") let s:netrw_menu_enabled= 1 exe 'silent! menu '.g:NetrwMenuPriority.'.1 '.g:NetrwTopLvlMenu.'Help<tab><F1> <F1>' - call s:NetrwBookmarkMenu() " provide some history! uses priorities 2,3, reserves 4 exe 'silent! menu '.g:NetrwMenuPriority.'.5 '.g:NetrwTopLvlMenu.'-Sep1- :' exe 'silent! menu '.g:NetrwMenuPriority.'.6 '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>- -' exe 'silent! menu '.g:NetrwMenuPriority.'.7 '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x x' exe 'silent! menu '.g:NetrwMenuPriority.'.8.1 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Current\ Directory<tab>mb mb' - exe 'silent! menu '.g:NetrwMenuPriority.'.8.2 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete<tab>mB mB' - exe 'silent! menu '.g:NetrwMenuPriority.'.8.3 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Bookmark<tab>gb gb' exe 'silent! menu '.g:NetrwMenuPriority.'.8.4 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Prev\ Dir\ (History)<tab>u u' exe 'silent! menu '.g:NetrwMenuPriority.'.8.5 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Next\ Dir\ (History)<tab>U U' exe 'silent! menu '.g:NetrwMenuPriority.'.8.6 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.List<tab>qb qb' - exe 'silent! menu '.g:NetrwMenuPriority.'.9.1 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List<tab>'."<ctrl-h> \<Plug>NetrwHideEdit" + exe 'silent! menu '.g:NetrwMenuPriority.'.9.1 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List<tab><ctrl-h>'." \<c-h>'" exe 'silent! menu '.g:NetrwMenuPriority.'.9.2 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ Sorting\ Sequence<tab>S S' exe 'silent! menu '.g:NetrwMenuPriority.'.9.3 '.g:NetrwTopLvlMenu.'Browsing\ Control.Quick\ Hide/Unhide\ Dot\ Files<tab>'."gh gh" - exe 'silent! menu '.g:NetrwMenuPriority.'.9.4 '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l> \<Plug>NetrwRefresh" + exe 'silent! menu '.g:NetrwMenuPriority.'.9.4 '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l> \<c-l>" exe 'silent! menu '.g:NetrwMenuPriority.'.9.5 '.g:NetrwTopLvlMenu.'Browsing\ Control.Settings/Options<tab>:NetrwSettings '.":NetrwSettings\<cr>" exe 'silent! menu '.g:NetrwMenuPriority.'.10 '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D D' exe 'silent! menu '.g:NetrwMenuPriority.'.11.1 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Current\ Window<tab><cr> '."\<cr>" @@ -4677,8 +5064,8 @@ fun! s:NetrwMenu(domenu) exe 'silent! menu '.g:NetrwMenuPriority.'.12.1 '.g:NetrwTopLvlMenu.'Explore.Directory\ Name :Explore ' exe 'silent! menu '.g:NetrwMenuPriority.'.12.2 '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (curdir\ only)<tab>:Explore\ */ :Explore */' exe 'silent! menu '.g:NetrwMenuPriority.'.12.2 '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (+subdirs)<tab>:Explore\ **/ :Explore **/' - exe 'silent! menu '.g:NetrwMenuPriority.'.12.3 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ Pattern\ (curdir\ only)<tab>:Explore\ *// :Explore *//' - exe 'silent! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ Pattern\ (+subdirs)<tab>:Explore\ **// :Explore **//' + exe 'silent! menu '.g:NetrwMenuPriority.'.12.3 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (curdir\ only)<tab>:Explore\ *// :Explore *//' + exe 'silent! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (+subdirs)<tab>:Explore\ **// :Explore **//' exe 'silent! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Next\ Match<tab>:Nexplore :Nexplore<cr>' exe 'silent! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Prev\ Match<tab>:Pexplore :Pexplore<cr>' exe 'silent! menu '.g:NetrwMenuPriority.'.13 '.g:NetrwTopLvlMenu.'Make\ Subdirectory<tab>d d' @@ -4704,6 +5091,7 @@ fun! s:NetrwMenu(domenu) exe 'silent! menu '.g:NetrwMenuPriority.'.16.4 '.g:NetrwTopLvlMenu.'Style.Sorting\ Method\ (name-time-size)<tab>s s' exe 'silent! menu '.g:NetrwMenuPriority.'.17 '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R R' exe 'silent! menu '.g:NetrwMenuPriority.'.18 '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c c' + call s:NetrwBookmarkMenu() " provide some history! uses priorities 2,3, reserves 4, 8.2.x let s:netrw_menucnt= 28 elseif !a:domenu @@ -4731,8 +5119,8 @@ fun! s:NetrwObtain(islocal) " call Dfunc("NetrwObtain(islocal=".a:islocal.")") if exists("s:netrwmarkfilelist_{bufnr('%')}") - let islocal= s:netrwmarkfilelist_{bufnr("%")}[1] !~ '^\a\+://' - call netrw#NetrwObtain(islocal,s:netrwmarkfilelist_{bufnr("%")}) + let islocal= s:netrwmarkfilelist_{bufnr('%')}[1] !~ '^\a\+://' + call netrw#NetrwObtain(islocal,s:netrwmarkfilelist_{bufnr('%')}) call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir) else call netrw#NetrwObtain(a:islocal,expand("<cWORD>")) @@ -4769,7 +5157,7 @@ fun! netrw#NetrwObtain(islocal,fname,... endif " call Decho("tgtdir<".tgtdir.">") - if b:netrw_islocal + if exists("b:netrw_islocal") && b:netrw_islocal " obtain a file from local b:netrw_curdir to (local) tgtdir " call Decho("obtain a file from local ".b:netrw_curdir." to ".tgtdir) if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir @@ -4921,6 +5309,14 @@ fun! netrw#NetrwObtain(islocal,fname,... call netrw#ErrorMsg(s:ERROR,getline(1),5) endif endif + elseif !exists("b:netrw_method") || b:netrw_method < 0 +" call Dfunc("netrw#NetrwObtain : unsupported method") + return + endif + + " restore status line + if type(a:fname) == 1 && exists("s:netrw_users_stl") + call s:SetupNetrwStatusLine(s:netrw_users_stl) endif endif @@ -4989,8 +5385,8 @@ fun! s:NetrwPrevWinOpen(islocal) let &ei= eikeep " call Decho("bnr=".bnr." bnrcnt=".bnrcnt." buftype=".&bt." winnr#".winnr()) if bnrcnt == 1 - let bufname= bufname(winbufnr(winnr())) - let choice= confirm("Save modified file<".bufname.">?","&Yes\n&No\n&Cancel") + let bufname = bufname(winbufnr(winnr())) + let choice = confirm("Save modified file<".bufname.">?","&Yes\n&No\n&Cancel") " call Decho("bufname<".bufname."> choice=".choice." winnr#".winnr()) if choice == 1 @@ -5138,6 +5534,7 @@ fun! s:NetrwUpload(fname,tgt,...) endif " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) silent g/Local directory now/d + call histdel("/",-1) if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' call netrw#ErrorMsg(s:ERROR,getline(1),14) else @@ -5196,6 +5593,7 @@ fun! s:NetrwUpload(fname,tgt,...) exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) silent g/Local directory now/d + call histdel("/",-1) if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' let debugkeep= &debug setlocal debug=msg @@ -5205,6 +5603,9 @@ fun! s:NetrwUpload(fname,tgt,...) else bw!|q endif + elseif !exists("b:netrw_method") || b:netrw_method < 0 +" call Dfunc("netrw#NetrwUpload : unsupported method") + return endif else call netrw#ErrorMsg(s:ERROR,"can't obtain files with protocol from<".a:tgt.">",63) @@ -5325,13 +5726,12 @@ fun! s:NetrwSetSort() let seq = seqlist let seqlist = "" endif - let sepchr= "\<Char-0xff>" if priority < 10 - let spriority= "00".priority.sepchr + let spriority= "00".priority.g:netrw_sepchr elseif priority < 100 - let spriority= "0".priority.sepchr + let spriority= "0".priority.g:netrw_sepchr else - let spriority= priority.sepchr + let spriority= priority.g:netrw_sepchr endif " call Decho("priority=".priority." spriority<".spriority."> seq<".seq."> seqlist<".seqlist.">") @@ -5345,14 +5745,17 @@ fun! s:NetrwSetSort() let starpriority= spriority else exe 'silent keepjumps '.w:netrw_bannercnt.',$g/'.seq.'/s/^/'.spriority.'/' + call histdel("/",-1) " sometimes multiple sorting patterns will match the same file or directory. " The following substitute is intended to remove the excess matches. - exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^\d\{3}'.sepchr.'\d\{3}\//s/^\d\{3}'.sepchr.'\(\d\{3}\/\).\@=/\1/e' + exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^\d\{3}'.g:netrw_sepchr.'\d\{3}\//s/^\d\{3}'.g:netrw_sepchr.'\(\d\{3}\/\).\@=/\1/e' + call histdel("/",-1) endif let priority = priority + 1 endwhile if exists("starpriority") - exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}'.sepchr.'/s/^/'.starpriority.'/' + exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}'.g:netrw_sepchr.'/s/^/'.starpriority.'/' + call histdel("/",-1) endif " Following line associated with priority -- items that satisfy a priority @@ -5361,7 +5764,8 @@ fun! s:NetrwSetSort() " priority pattern needs to be retained. So, at this point, these excess " priority prefixes need to be removed, but not directories that happen to " be just digits themselves. - exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}'.sepchr.'\)\%(\d\{3}'.sepchr.'\)\+\ze./\1/e' + exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}'.g:netrw_sepchr.'\)\%(\d\{3}'.g:netrw_sepchr.'\)\+\ze./\1/e' + call histdel("/",-1) " call Dret("SetSort") endfun @@ -5405,12 +5809,12 @@ fun! s:NetrwSplit(mode) elseif a:mode == 1 " remote and t - let cursorword = s:NetrwGetWord() + let newdir = s:NetrwBrowseChgDir(0,s:NetrwGetWord()) " call Decho("tabnew") tabnew let s:didsplit= 1 call s:RestoreWinVars() - call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,cursorword)) + call s:NetrwBrowse(0,newdir) unlet s:didsplit elseif a:mode == 2 @@ -5433,8 +5837,8 @@ fun! s:NetrwSplit(mode) elseif a:mode == 4 " local and t - let netrw_curdir= b:netrw_curdir let cursorword = s:NetrwGetWord() + let netrw_curdir= s:NetrwTreeDir() " call Decho("tabnew") tabnew let b:netrw_curdir= netrw_curdir @@ -5505,12 +5909,13 @@ fun! s:NetrwTreeDir() if w:netrw_liststyle == s:TREELIST " call Decho("w:netrrw_liststyle is TREELIST:") " call Decho("line#".line(".")." getline(.)<".getline('.')."> treecurpos<".string(s:treecurpos).">") + + " extract tree directory if on a line specifying a subdirectory (ie. ends with "/") if getline('.') =~ '/$' let treedir= substitute(getline('.'),'^\%(| \)*\([^|].\{-}\)$','\1','e') else let treedir= "" endif - " call Decho("treedir<".treedir.">") " detect user attempting to close treeroot @@ -5525,11 +5930,11 @@ fun! s:NetrwTreeDir() " elide all non-depth information let depth = substitute(getline('.'),'^\(\%(| \)*\)[^|].\{-}$','\1','e') -" call Decho("depth<".depth."> 1st subst") +" call Decho("depth<".depth."> 1st subst (non-depth info removed)") " elide first depth let depth = substitute(depth,'^| ','','') -" call Decho("depth<".depth."> 2nd subst") +" call Decho("depth<".depth."> 2nd subst (first depth removed)") " construct treedir by searching backwards at correct depth " call Decho("constructing treedir<".treedir."> depth<".depth.">") @@ -5548,11 +5953,6 @@ fun! s:NetrwTreeDir() endif let treedir= substitute(treedir,'//$','/','') -" " now force a refresh -"" call DECHO("clear buffer<".expand("%")."> with :%d") -" setlocal ma noro -" keepjumps %d - " call Dret("NetrwTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">") return treedir endfun @@ -5663,30 +6063,32 @@ fun! s:NetrwWideListing() if w:netrw_liststyle == s:WIDELIST " call Dfunc("NetrwWideListing() w:netrw_liststyle=".w:netrw_liststyle.' fo='.&fo.' l:fo='.&l:fo) " look for longest filename (cpf=characters per filename) - " cpf: characters per file - " fpl: files per line - " fpc: files per column + " cpf: characters per filename + " fpl: filenames per line + " fpc: filenames per column setlocal ma noro " call Decho("setlocal ma noro") let b:netrw_cpf= 0 if line("$") >= w:netrw_bannercnt exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif' + call histdel("/",-1) else " call Dret("NetrwWideListing") return endif -" call Decho("max file strlen+1=".b:netrw_cpf) - let b:netrw_cpf= b:netrw_cpf + 1 + let b:netrw_cpf= b:netrw_cpf + 2 +" call Decho("b:netrw_cpf=max_filename_length+2=".b:netrw_cpf) " determine qty files per line (fpl) let w:netrw_fpl= winwidth(0)/b:netrw_cpf if w:netrw_fpl <= 0 let w:netrw_fpl= 1 endif -" call Decho("fpl= ".winwidth(0)."/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl) +" call Decho("fpl= [winwidth=".winwidth(0)."]/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl) " make wide display exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'s",submatch(0)),"\\")/' + call histdel("/",-1) let fpc = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl let newcolstart = w:netrw_bannercnt + fpc let newcolend = newcolstart + fpc - 1 @@ -5706,6 +6108,7 @@ fun! s:NetrwWideListing() endwhile silent! let @*= keepregstar exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e' + call histdel("/",-1) setlocal noma nomod ro " call Dret("NetrwWideListing") endif @@ -5733,16 +6136,21 @@ fun! s:PerformListing(islocal) endif " save current directory on directory history list - call s:NetrwBookmarkDir(3,b:netrw_curdir) + call s:NetrwBookHistHandler(3,b:netrw_curdir) " Set up the banner {{{3 -" call Decho("set up banner") - keepjumps put ='\" ============================================================================' - keepjumps put ='\" Netrw Directory Listing (netrw '.g:loaded_netrw.')' - keepjumps put ='\" '.b:netrw_curdir - keepjumps 1d - let w:netrw_bannercnt= 3 - exe "keepjumps ".w:netrw_bannercnt + if g:netrw_banner +" call Decho("set up banner") + keepjumps put ='\" ============================================================================' + keepjumps put ='\" Netrw Directory Listing (netrw '.g:loaded_netrw.')' + keepjumps put ='\" '.b:netrw_curdir + keepjumps 1d + let w:netrw_bannercnt= 3 + exe "keepjumps ".w:netrw_bannercnt + else + keepjumps 1 + let w:netrw_bannercnt= 1 + endif let sortby= g:netrw_sort_by if g:netrw_sort_direction =~ "^r" @@ -5750,55 +6158,63 @@ fun! s:PerformListing(islocal) endif " Sorted by... {{{3 -" call Decho("handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">") - if g:netrw_sort_by =~ "^n" + if g:netrw_banner +" call Decho("handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">") + if g:netrw_sort_by =~ "^n" " call Decho("directories will be sorted by name") - " sorted by name - keepjumps put ='\" Sorted by '.sortby - keepjumps put ='\" Sort sequence: '.g:netrw_sort_sequence - let w:netrw_bannercnt= w:netrw_bannercnt + 2 - else + " sorted by name + keepjumps put ='\" Sorted by '.sortby + keepjumps put ='\" Sort sequence: '.g:netrw_sort_sequence + let w:netrw_bannercnt= w:netrw_bannercnt + 2 + else " call Decho("directories will be sorted by size or time") - " sorted by size or date - keepjumps put ='\" Sorted by '.sortby - let w:netrw_bannercnt= w:netrw_bannercnt + 1 - endif - exe "keepjumps ".w:netrw_bannercnt + " sorted by size or date + keepjumps put ='\" Sorted by '.sortby + let w:netrw_bannercnt= w:netrw_bannercnt + 1 + endif + exe "keepjumps ".w:netrw_bannercnt + endif " show copy/move target, if any - if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal") -" call Decho("show copy/move target<".s:netrwmftgt.">") - keepjumps put ='' - if s:netrwmftgt_islocal - call setline(line("."),'" Copy/Move Tgt: '.s:netrwmftgt.' (local)') + if g:netrw_banner + if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal") +" call Decho("show copy/move target<".s:netrwmftgt.">") + keepjumps put ='' + if s:netrwmftgt_islocal + call setline(line("."),'" Copy/Move Tgt: '.s:netrwmftgt.' (local)') + else + call setline(line("."),'" Copy/Move Tgt: '.s:netrwmftgt.' (remote)') + endif + let w:netrw_bannercnt= w:netrw_bannercnt + 1 else - call setline(line("."),'" Copy/Move Tgt: '.s:netrwmftgt.' (remote)') - endif - let w:netrw_bannercnt= w:netrw_bannercnt + 1 - else -" call Decho("s:netrwmftgt does not exist, don't make Copy/Move Tgt") - endif - exe "keepjumps ".w:netrw_bannercnt +" call Decho("s:netrwmftgt does not exist, don't make Copy/Move Tgt") + endif + exe "keepjumps ".w:netrw_bannercnt + endif " Hiding... -or- Showing... {{{3 -" call Decho("handle hiding/showing (g:netrw_hide=".g:netrw_list_hide." g:netrw_list_hide<".g:netrw_list_hide.">)") - if g:netrw_list_hide != "" && g:netrw_hide - if g:netrw_hide == 1 - keepjumps put ='\" Hiding: '.g:netrw_list_hide - else - keepjumps put ='\" Showing: '.g:netrw_list_hide - endif - let w:netrw_bannercnt= w:netrw_bannercnt + 1 - endif - exe "keepjumps ".w:netrw_bannercnt - keepjumps put ='\" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec' - keepjumps put ='\" ============================================================================' - let w:netrw_bannercnt= w:netrw_bannercnt + 2 + if g:netrw_banner +" call Decho("handle hiding/showing (g:netrw_hide=".g:netrw_list_hide." g:netrw_list_hide<".g:netrw_list_hide.">)") + if g:netrw_list_hide != "" && g:netrw_hide + if g:netrw_hide == 1 + keepjumps put ='\" Hiding: '.g:netrw_list_hide + else + keepjumps put ='\" Showing: '.g:netrw_list_hide + endif + let w:netrw_bannercnt= w:netrw_bannercnt + 1 + endif + exe "keepjumps ".w:netrw_bannercnt + keepjumps put ='\" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec' + keepjumps put ='\" ============================================================================' + let w:netrw_bannercnt= w:netrw_bannercnt + 2 + endif " bannercnt should index the line just after the banner - let w:netrw_bannercnt= w:netrw_bannercnt + 1 - exe "keepjumps ".w:netrw_bannercnt -" call Decho("bannercnt=".w:netrw_bannercnt." (should index line just after banner) line($)=".line("$")) + if g:netrw_banner + let w:netrw_bannercnt= w:netrw_bannercnt + 1 + exe "keepjumps ".w:netrw_bannercnt +" call Decho("bannercnt=".w:netrw_bannercnt." (should index line just after banner) line($)=".line("$")) + endif " set up syntax highlighting {{{3 " call Decho("set up syntax highlighting") @@ -5816,23 +6232,23 @@ fun! s:PerformListing(islocal) else " remote call s:NetrwRemoteListing() endif -" call Decho("w:netrw_bannercnt=".w:netrw_bannercnt." (banner complete)") +" call Decho("g:netrw_banner=".g:netrw_banner." w:netrw_bannercnt=".w:netrw_bannercnt." (banner complete)") " manipulate the directory listing (hide, sort) {{{3 - if line("$") >= w:netrw_bannercnt + if !g:netrw_banner || line("$") >= w:netrw_bannercnt " call Decho("manipulate directory listing (hide)") " call Decho("g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">") if g:netrw_hide && g:netrw_list_hide != "" call s:NetrwListHide() endif - if line("$") >= w:netrw_bannercnt + if !g:netrw_banner || line("$") >= w:netrw_bannercnt " call Decho("manipulate directory listing (sort) : g:netrw_sort_by<".g:netrw_sort_by.">") if g:netrw_sort_by =~ "^n" " sort by name call s:NetrwSetSort() - if w:netrw_bannercnt < line("$") + if !g:netrw_banner || w:netrw_bannercnt < line("$") " call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")") if g:netrw_sort_direction =~ 'n' " normal direction sorting @@ -5844,11 +6260,11 @@ fun! s:PerformListing(islocal) endif " remove priority pattern prefix " call Decho("remove priority pattern prefix") - let sepchr= "\<Char-0xff>" - exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}'.sepchr.'//e' + exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e' + call histdel("/",-1) elseif a:islocal - if w:netrw_bannercnt < line("$") + if !g:netrw_banner || w:netrw_bannercnt < line("$") " call Decho("g:netrw_sort_direction=".g:netrw_sort_direction) if g:netrw_sort_direction =~ 'n' " call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort') @@ -5857,13 +6273,17 @@ fun! s:PerformListing(islocal) " call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort!') exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options endif + exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e' + call histdel("/",-1) endif - exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e' endif elseif g:netrw_sort_direction =~ 'r' " call Decho('reverse the sorted listing') - exe 'silent keepjumps '.w:netrw_bannercnt.'g/^/m '.w:netrw_bannercnt + if !g:netrw_banner || w:netrw_bannercnt < line('$') + exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^/m '.w:netrw_bannercnt + call histdel("/",-1) + endif endif endif @@ -5872,7 +6292,7 @@ fun! s:PerformListing(islocal) call s:NetrwWideListing() call s:NetrwTreeListing(b:netrw_curdir) - if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt + if exists("w:netrw_bannercnt") && (line("$") > w:netrw_bannercnt || !g:netrw_banner) " place cursor on the top-left corner of the file listing " call Decho("place cursor on top-left corner of file listing") exe 'silent keepjumps '.w:netrw_bannercnt @@ -6006,8 +6426,10 @@ fun! s:NetrwRemoteListing() " cleanup if g:netrw_ftp_browse_reject != "" exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d" + call histdel("/",-1) endif silent! keepjumps %s/\r$//e + call histdel("/",-1) " if there's no ../ listed, then put ./ and ../ in let line1= line(".") @@ -6025,11 +6447,15 @@ fun! s:NetrwRemoteListing() if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup " call Decho("M$ ftp cleanup") exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+//' + call histdel("/",-1) else " normal ftp cleanup " call Decho("normal ftp cleanup") exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e' exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e' exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e' + call histdel("/",-1) + call histdel("/",-1) + call histdel("/",-1) endif endif @@ -6045,8 +6471,12 @@ fun! s:NetrwRemoteListing() g/^Listing directory/d g/^d[-rwx][-rwx][-rwx]/s+$+/+e silent g/^l[-rwx][-rwx][-rwx]/s+$+@+e + call histdel("/",-1) + call histdel("/",-1) + call histdel("/",-1) if g:netrw_liststyle != s:LONGLIST g/^[dlsp-][-rwx][-rwx][-rwx]/s/^.*\s\(\S\+\)$/\1/e + call histdel("/",-1) endif else if s:path == "" @@ -6063,6 +6493,7 @@ fun! s:NetrwRemoteListing() if g:netrw_ftp_browse_reject != "" " call Decho("(cleanup) exe silent! g/".g:netrw_ssh_browse_reject."/keepjumps d") exe "silent! g/".g:netrw_ssh_browse_reject."/keepjumps d" + call histdel("/",-1) endif endif @@ -6099,6 +6530,9 @@ fun! s:NetrwRemoteListing() exe 'silent keepjumps '.w:netrw_bannercnt.',$s/ -> .*$//e' exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e' exe 'silent keepjumps '.w:netrw_bannercnt + call histdel("/",-1) + call histdel("/",-1) + call histdel("/",-1) endif endif @@ -6118,6 +6552,7 @@ fun! s:NetrwRemoteRm(usrhost,path) range let all= 0 if exists("s:netrwmarkfilelist_{bufnr('%')}") " remove all marked files +" call Decho("remove all marked files with bufnr#".bufnr("%")) for fname in s:netrwmarkfilelist_{bufnr("%")} let ok= s:NetrwRemoteRmFile(a:path,fname,all) if ok =~ 'q\%[uit]' @@ -6126,12 +6561,11 @@ fun! s:NetrwRemoteRm(usrhost,path) range let all= 1 endif endfor - unlet s:netrwmarkfilelist_{bufnr("%")} - unlet s:netrwmarkfilemtch_{bufnr("%")} - 2match none + call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir) else " remove files specified by range +" call Decho("remove files specified by range") " preparation for removing multiple files/directories let ctr= a:firstline @@ -6245,14 +6679,14 @@ fun! s:NetrwRemoteRmFile(path,rmfile,all call s:NetrwRemoteFtpCmd(a:path,"rmdir ".a:rmfile) else let rmfile = substitute(a:path.a:rmfile,'/$','','') - let netrw_rmdir_cmd = s:MakeSshCmd(s:WinPath(g:netrw_rmdir_cmd)).' '.shellescape(s:WinPath(rmfile)) + let netrw_rmdir_cmd = s:MakeSshCmd(netrw#WinPath(g:netrw_rmdir_cmd)).' '.shellescape(netrw#WinPath(rmfile)) " call Decho("attempt to remove dir: system(".netrw_rmdir_cmd.")") let ret= system(netrw_rmdir_cmd) " call Decho("returned=".ret." errcode=".v:shell_error) if v:shell_error != 0 " call Decho("v:shell_error not 0") - let netrw_rmf_cmd= s:MakeSshCmd(s:WinPath(g:netrw_rmf_cmd)).' '.shellescape(s:WinPath(substitute(rmfile,'[\/]$','','e'))) + let netrw_rmf_cmd= s:MakeSshCmd(netrw#WinPath(g:netrw_rmf_cmd)).' '.shellescape(netrw#WinPath(substitute(rmfile,'[\/]$','','e'))) " call Decho("2nd attempt to remove dir: system(".netrw_rmf_cmd.")") let ret= system(netrw_rmf_cmd) " call Decho("returned=".ret." errcode=".v:shell_error) @@ -6353,13 +6787,17 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd) " cleanup for Windows if has("win32") || has("win95") || has("win64") || has("win16") silent! keepjumps %s/\r$//e + call histdel("/",-1) endif if a:listcmd == "dir" " infer directory/link based on the file permission string silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@ silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/ + call histdel("/",-1) + call histdel("/",-1) if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST exe "silent! keepjumps ".w:netrw_bannercnt.',$s/^\%(\S\+\s\+\)\{8}//e' + call histdel("/",-1) endif endif @@ -6412,8 +6850,8 @@ fun! s:NetrwRemoteRename(usrhost,path) r else let oldname= shellescape(a:path.oldname) let newname= shellescape(a:path.newname) -" call Decho("system(s:WinPath(".rename_cmd.") ".oldname.' '.newname.")") - let ret = system(s:WinPath(rename_cmd).' '.oldname.' '.newname) +" call Decho("system(netrw#WinPath(".rename_cmd.") ".oldname.' '.newname.")") + let ret = system(netrw#WinPath(rename_cmd).' '.oldname.' '.newname) endif endfor @@ -6437,8 +6875,8 @@ fun! s:NetrwRemoteRename(usrhost,path) r else let oldname= shellescape(a:path.oldname) let newname= shellescape(a:path.newname) -" call Decho("system(s:WinPath(".rename_cmd.") ".oldname.' '.newname.")") - let ret = system(s:WinPath(rename_cmd).' '.oldname.' '.newname) +" call Decho("system(netrw#WinPath(".rename_cmd.") ".oldname.' '.newname.")") + let ret = system(netrw#WinPath(rename_cmd).' '.oldname.' '.newname) endif let ctr= ctr + 1 @@ -6466,13 +6904,16 @@ fun! netrw#LocalBrowseCheck(dirname) " The &ft == "netrw" test was installed because the BufEnter event " would hit when re-entering netrw windows, creating unexpected " refreshes (and would do so in the middle of NetrwSaveOptions(), too) -" call Decho("netrw#LocalBrowseCheck: isdir<".a:dirname.">=".isdirectory(a:dirname)) +" call Decho("netrw#LocalBrowseCheck: isdir<".a:dirname.">=".isdirectory(a:dirname).((exists("s:treeforceredraw")? " treeforceredraw" : ""))) if isdirectory(a:dirname) " call Decho(" ft<".&ft."> b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : " doesn't exist")."> dirname<".a:dirname.">"." line($)=".line("$")) if &ft != "netrw" || (exists("b:netrw_curdir") && b:netrw_curdir != a:dirname) silent! call s:NetrwBrowse(1,a:dirname) elseif &ft == "netrw" && line("$") == 1 silent! call s:NetrwBrowse(1,a:dirname) + elseif exists("s:treeforceredraw") + unlet s:treeforceredraw + silent! call s:NetrwBrowse(1,a:dirname) endif endif " not a directory, ignore it @@ -6492,7 +6933,7 @@ fun! s:LocalListing() " get the list of files contained in the current directory let dirname = escape(b:netrw_curdir,g:netrw_glob_escape) - let dirnamelen = strlen(b:netrw_curdir) + let dirnamelen = s:Strlen(b:netrw_curdir) let filelist = glob(s:ComposePath(dirname,"*")) " call Decho("glob(dirname<".dirname."/*>)=".filelist) if filelist != "" @@ -6608,7 +7049,7 @@ fun! s:LocalListing() if w:netrw_liststyle == s:LONGLIST let sz = getfsize(filename) - let fsz = strpart(" ",1,15-s:Strlen(sz)).sz + let fsz = strpart(" ",1,15-strlen(sz)).sz let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename)) " call Decho("sz=".sz." fsz=".fsz) endif @@ -6617,7 +7058,7 @@ fun! s:LocalListing() " sort by time (handles time up to 1 quintillion seconds, US) " call Decho("getftime(".filename.")=".getftime(filename)) let t = getftime(filename) - let ft = strpart("000000000000000000",1,18-s:Strlen(t)).t + let ft = strpart("000000000000000000",1,18-strlen(t)).t " call Decho("exe keepjumps put ='".ft.'/'.filename."'") let ftpfile= ft.'/'.pfile keepjumps silent! put=ftpfile @@ -6626,7 +7067,7 @@ fun! s:LocalListing() " sort by size (handles file sizes up to 1 quintillion bytes, US) " call Decho("getfsize(".filename.")=".getfsize(filename)) let sz = getfsize(filename) - let fsz = strpart("000000000000000000",1,18-s:Strlen(sz)).sz + let fsz = strpart("000000000000000000",1,18-strlen(sz)).sz " call Decho("exe keepjumps put ='".fsz.'/'.filename."'") let fszpfile= fsz.'/'.pfile keepjumps silent! put =fszpfile @@ -6639,7 +7080,9 @@ fun! s:LocalListing() endwhile " cleanup any windows mess at end-of-line + silent! keepjumps g/^$/d silent! keepjumps %s/\r$//e + call histdel("/",-1) exe "setlocal ts=".g:netrw_maxfilenamelen " call Decho("setlocal ts=".g:netrw_maxfilenamelen) @@ -6659,9 +7102,17 @@ fun! s:LocalBrowseShellCmdRefresh() return endif if !exists("w:netrw_bannercnt") -" call Dret("LocalBrowseShellCmdRefresh : don't refresh when focus not on netrw windwo") +" call Dret("LocalBrowseShellCmdRefresh : don't refresh when focus not on netrw window") return endif + if exists("s:locbrowseshellcmd") + if s:locbrowseshellcmd + let s:locbrowseshellcmd= 0 +" call Dret("LocalBrowseShellCmdRefresh : NetrwBrowse itself caused the refresh") + return + endif + let s:locbrowseshellcmd= 0 + endif let itab = 1 let buftablist = [] while itab <= tabpagenr("$") @@ -6815,8 +7266,8 @@ fun! s:NetrwLocalRmFile(path,fname,all) let rmfile= substitute(rmfile,'[\/]$','','e') if all || ok =~ 'y\%[es]' || ok == "" -" call Decho("1st attempt: system(s:WinPath(".g:netrw_local_rmdir.') '.shellescape(rmfile).')') - call system(s:WinPath(g:netrw_local_rmdir).' '.shellescape(rmfile)) +" call Decho("1st attempt: system(netrw#WinPath(".g:netrw_local_rmdir.') '.shellescape(rmfile).')') + call system(netrw#WinPath(g:netrw_local_rmdir).' '.shellescape(rmfile)) " call Decho("v:shell_error=".v:shell_error) if v:shell_error != 0 @@ -6874,9 +7325,7 @@ fun! s:NetrwLocalRename(path) range endif call rename(oldname,newname) endfor - 2match none - unlet s:netrwmarkfilelist_{bufnr("%")} - unlet s:netrwmarkfilemtch_{bufnr("%")} + call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir) else @@ -6955,9 +7404,11 @@ fun! s:LocalFastBrowser() augroup AuNetrwShellCmd au! if (has("win32") || has("win95") || has("win64") || has("win16")) +" call Decho("autocmd: ShellCmdPost * call s:LocalBrowseShellCmdRefresh()") au ShellCmdPost * call s:LocalBrowseShellCmdRefresh() else au ShellCmdPost,FocusGained * call s:LocalBrowseShellCmdRefresh() +" call Decho("autocmd: ShellCmdPost,FocusGained * call s:LocalBrowseShellCmdRefresh()") endif augroup END endif @@ -6984,7 +7435,7 @@ endfun " 0=note = s:NOTE " 1=warning = s:WARNING " 2=error = s:ERROR -" Jul 08, 2008 : max errnum currently is 71 +" Dec 03, 2009 : max errnum currently is 76 fun! netrw#ErrorMsg(level,msg,errnum) " call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow) @@ -7017,7 +7468,8 @@ fun! netrw#ErrorMsg(level,msg,errnum) else " call Decho("create a NetrwMessage buffer window") bo 1split - enew + call s:NetrwEnew() + call s:NetrwSafeOptions() setlocal bt=nofile file NetrwMessage " call Decho("setlocal ma noro") @@ -7101,6 +7553,7 @@ fun! netrw#NetrwSavePosn() let w:netrw_winnr= winnr() let w:netrw_line = line(".") let w:netrw_col = virtcol(".") +" call Decho("currently, win#".w:netrw_winnr." line#".w:netrw_line." col#".w:netrw_col) " Save top-of-screen line norm! H0 @@ -7130,7 +7583,7 @@ fun! s:ComposePath(base,subdir) if(has("amiga")) " call Decho("amiga") - let ec = a:base[strlen(a:base)-1] + let ec = a:base[s:Strlen(a:base)-1] if ec != '/' && ec != ':' let ret = a:base . "/" . a:subdir else @@ -7141,6 +7594,14 @@ fun! s:ComposePath(base,subdir) " call Decho("windows") let ret= a:subdir + elseif a:base =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16")) +" call Decho("windows") + if a:base =~ '[/\\]$' + let ret= a:base.a:subdir + else + let ret= a:base."/".a:subdir + endif + elseif a:base =~ '^\a\+://' " call Decho("remote linux/macos") let urlbase = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\1','') @@ -7212,7 +7673,7 @@ fun! s:GetTempfile(fname) endif " let netrw#NetSource() know about the tmpfile - let s:netrw_tmpfile= tmpfile " used by netrw#NetSource() + let s:netrw_tmpfile= tmpfile " used by netrw#NetSource() and netrw#NetrwBrowseX() " call Decho("tmpfile<".tmpfile."> s:netrw_tmpfile<".s:netrw_tmpfile.">") " o/s dependencies @@ -7301,7 +7762,7 @@ endfun fun! s:NetrwDelete(path) " call Dfunc("s:NetrwDelete(path<".a:path.">)") - let path = s:WinPath(a:path) + let path = netrw#WinPath(a:path) if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) if exists("+shellslash") let sskeep= &shellslash @@ -7317,7 +7778,7 @@ fun! s:NetrwDelete(path) let result= delete(path) endif if result < 0 - call Netrw#ErrorMsg(s:WARNING,"delete(".path.") failed!",71) + call netrw#ErrorMsg(s:WARNING,"delete(".path.") failed!",71) endif " call Dret("s:NetrwDelete ".result) @@ -7326,8 +7787,9 @@ endfun " --------------------------------------------------------------------- " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2 -fun! s:NetrwEnew(curdir) -" call Dfunc("s:NetrwEnew(curdir<".a:curdir.">) buf#".bufnr("%")."<".bufname("%").">") +fun! s:NetrwEnew(...) +" call Dfunc("s:NetrwEnew() a:0=".a:0) +" call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">") " grab a function-local-variable copy of buffer variables if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif @@ -7370,14 +7832,16 @@ fun! s:NetrwEnew(curdir) if exists("netrw_option") |let b:netrw_option = netrw_option |endif if exists("netrw_prvdir") |let b:netrw_prvdir = netrw_prvdir |endif - let b:netrw_curdir= a:curdir - if b:netrw_curdir =~ '/$' - if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST - file NetrwTreeListing - nno <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr> - nno <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr> - else - exe "silent! keepalt file ".fnameescape(b:netrw_curdir) + if a:0 > 0 + let b:netrw_curdir= a:1 + if b:netrw_curdir =~ '/$' + if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST + file NetrwTreeListing + nno <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr> + nno <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr> + else + exe "silent! keepalt file ".fnameescape(b:netrw_curdir) + endif endif endif @@ -7511,13 +7975,16 @@ fun! s:NetrwRexplore(islocal,dirname) call netrw#NetrwRestorePosn(s:nbcd_curpos_{bufnr('%')}) unlet s:nbcd_curpos_{bufnr('%')} endif + if exists("s:explore_match") + exe "2match netrwMarkFile /".s:explore_match."/" + endif " call Dret("s:NetrwRexplore") endfun " --------------------------------------------------------------------- " s:SaveBufVars: {{{2 fun! s:SaveBufVars() -" call Dfunc("s:SaveBufVars()") +" call Dfunc("s:SaveBufVars() buf#".bufnr("%")) if exists("b:netrw_curdir") |let s:netrw_curdir = b:netrw_curdir |endif if exists("b:netrw_lastfile") |let s:netrw_lastfile = b:netrw_lastfile |endif @@ -7532,7 +7999,7 @@ endfun " --------------------------------------------------------------------- " s:SaveWinVars: (used by Explore() and NetrwSplit()) {{{2 fun! s:SaveWinVars() -" call Dfunc("s:SaveWinVars()") +" call Dfunc("s:SaveWinVars() win#".winnr()) if exists("w:netrw_bannercnt") |let s:bannercnt = w:netrw_bannercnt |endif if exists("w:netrw_col") |let s:col = w:netrw_col |endif if exists("w:netrw_curdir") |let s:curdir = w:netrw_curdir |endif @@ -7562,7 +8029,7 @@ endfun " variables are not inherited by the new window. SetBufWinVars() and " UseBufWinVars() get around that. fun! s:SetBufWinVars() -" call Dfunc("s:SetBufWinVars()") +" call Dfunc("s:SetBufWinVars() win#".winnr()) if exists("w:netrw_liststyle") |let b:netrw_liststyle = w:netrw_liststyle |endif if exists("w:netrw_bannercnt") |let b:netrw_bannercnt = w:netrw_bannercnt |endif if exists("w:netrw_method") |let b:netrw_method = w:netrw_method |endif @@ -7584,8 +8051,7 @@ fun! s:SetRexDir(islocal,dirname) if a:islocal exe 'com! Rexplore call s:NetrwRexplore(1,"'.escape(a:dirname,'"\').'")' if g:netrw_retmap - silent! unmap <2-leftmouse> - if !hasmapto("<Plug>NetrwReturn") + if !hasmapto("<Plug>NetrwReturn") && maparg("<2-leftmouse>","n") == "" nmap <unique> <silent> <2-leftmouse> <Plug>NetrwReturn endif let dir = escape(a:dirname, s:netrw_map_escape) @@ -7594,8 +8060,7 @@ fun! s:SetRexDir(islocal,dirname) else exe 'com! Rexplore call s:NetrwRexplore(0,"'.escape(a:dirname,'"\').'")' if g:netrw_retmap - silent! unmap <2-leftmouse> - if !hasmapto("<Plug>NetrwReturn") + if !hasmapto("<Plug>NetrwReturn") && maparg("<2-leftmouse>","n") == "" nmap <unique> <silent> <2-leftmouse> <Plug>NetrwReturn endif let dir = escape(a:dirname, s:netrw_map_escape) @@ -7608,9 +8073,9 @@ endfun " --------------------------------------------------------------------- " s:Strlen: this function returns the length of a string, even if its {{{2 " using two-byte etc characters. -" Currently, its only used if g:Align_xstrlen is set to a -" nonzero value. Solution from Nicolai Weibull, vim docs -" (:help strlen()), Tony Mechelynck, and my own invention. +" Solution from Nicolai Weibull, vim docs (:help strlen()), Tony Mechelynck, +" and a bit from me. +" if g:netrw_xstrlen is zero (default), then the builtin strlen() function is used. fun! s:Strlen(x) " call Dfunc("s:Strlen(x<".a:x.">") if g:netrw_xstrlen == 1 @@ -7638,7 +8103,7 @@ fun! s:Strlen(x) else " at least give a decent default - ret= strlen(a:x) + let ret= strlen(a:x) endif " call Dret("s:Strlen ".ret) return ret @@ -7707,7 +8172,7 @@ endfun " Buffers.Refresh; hence, s:NetrwBMShow() utilizes a "cheat" to call that function anyway. fun! s:UpdateBuffersMenu() " call Dfunc("s:UpdateBuffersMenu()") - if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' + if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu try silent emenu Buffers.Refresh\ menu catch /^Vim\%((\a\+)\)\=:E/ @@ -7737,12 +8202,14 @@ fun! s:UseBufWinVars() endfun " --------------------------------------------------------------------- -" s:WinPath: {{{2 -fun! s:WinPath(path) -" call Dfunc("s:WinPath(path<".a:path.">)") - if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) +" netrw#WinPath: tries to insure that the path is windows-acceptable, whether cygwin is used or not {{{2 +fun! netrw#WinPath(path) +" call Dfunc("netrw#WinPath(path<".a:path.">)") + if (!g:netrw_cygwin || &shell !~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$') && (has("win32") || has("win95") || has("win64") || has("win16")) + " remove cygdrive prefix, if present + let path = substitute(a:path,'/cygdrive/\(.\)','\1:','') " remove trailing slash (Win95) - let path = substitute(a:path, '\(\\\|/\)$', '', 'g') + let path = substitute(path, '\(\\\|/\)$', '', 'g') " remove escaped spaces let path = substitute(path, '\ ', ' ', 'g') " convert slashes to backslashes @@ -7750,7 +8217,7 @@ fun! s:WinPath(path) else let path= a:path endif -" call Dret("s:WinPath <".path.">") +" call Dret("netrw#WinPath <".path.">") return path endfun
--- a/runtime/autoload/netrwFileHandlers.vim +++ b/runtime/autoload/netrwFileHandlers.vim @@ -1,9 +1,9 @@ " netrwFileHandlers: contains various extension-based file handlers for " netrw's browsers' x command ("eXecute launcher") " Author: Charles E. Campbell, Jr. -" Date: May 30, 2006 -" Version: 9 -" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 +" Date: Sep 30, 2008 +" Version: 10 +" Copyright: Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1 " Permission is hereby granted to use and distribute this code, " with or without modifications, provided that this copyright " notice is copied with it. Like anything else that's free, @@ -20,9 +20,15 @@ if exists("g:loaded_netrwFileHandlers") || &cp finish endif +let g:loaded_netrwFileHandlers= "v10" +if v:version < 702 + echohl WarningMsg + echo "***warning*** this version of netrwFileHandlers needs vim 7.2" + echohl Normal + finish +endif let s:keepcpo= &cpo set cpo&vim -let g:loaded_netrwFileHandlers= "v9" " --------------------------------------------------------------------- " netrwFileHandlers#Invoke: {{{1 @@ -73,10 +79,10 @@ fun! s:NFH_html(pagefile) if executable("mozilla") " call Decho("executing !mozilla ".page) - exe "!mozilla ".g:netrw_shq.page.g:netrw_shq + exe "!mozilla ".shellescape(page,1) elseif executable("netscape") " call Decho("executing !netscape ".page) - exe "!netscape ".g:netrw_shq..page.g:netrw_shq + exe "!netscape ".shellescape(page,1) else " call Dret("s:NFH_html 0") return 0 @@ -96,10 +102,10 @@ fun! s:NFH_htm(pagefile) if executable("mozilla") " call Decho("executing !mozilla ".page) - exe "!mozilla ".g:netrw_shq.page.g:netrw_shq + exe "!mozilla ".shellescape(page,1) elseif executable("netscape") " call Decho("executing !netscape ".page) - exe "!netscape ".g:netrw_shq.page.g:netrw_shq + exe "!netscape ".shellescape(page,1) else " call Dret("s:NFH_htm 0") return 0 @@ -115,10 +121,10 @@ fun! s:NFH_jpg(jpgfile) " call Dfunc("s:NFH_jpg(jpgfile<".a:jpgfile.">)") if executable("gimp") - exe "silent! !gimp -s ".g:netrw_shq.a:jpgfile.g:netrw_shq + exe "silent! !gimp -s ".shellescape(a:jpgfile,1) elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") " call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'")) - exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:jpgfile.g:netrw_shq + exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:jpgfile,1) else " call Dret("s:NFH_jpg 0") return 0 @@ -134,9 +140,9 @@ fun! s:NFH_gif(giffile) " call Dfunc("s:NFH_gif(giffile<".a:giffile.">)") if executable("gimp") - exe "silent! !gimp -s ".g:netrw_shq.a:giffile.g:netrw_shq + exe "silent! !gimp -s ".shellescape(a:giffile,1) elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") - exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:giffile.g:netrw_shq + exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:giffile,1) else " call Dret("s:NFH_gif 0") return 0 @@ -152,9 +158,9 @@ fun! s:NFH_png(pngfile) " call Dfunc("s:NFH_png(pngfile<".a:pngfile.">)") if executable("gimp") - exe "silent! !gimp -s ".g:netrw_shq.a:pngfile.g:netrw_shq + exe "silent! !gimp -s ".shellescape(a:pngfile,1) elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") - exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:pngfile.g:netrw_shq + exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:pngfile,1) else " call Dret("s:NFH_png 0") return 0 @@ -170,9 +176,9 @@ fun! s:NFH_pnm(pnmfile) " call Dfunc("s:NFH_pnm(pnmfile<".a:pnmfile.">)") if executable("gimp") - exe "silent! !gimp -s ".g:netrw_shq.a:pnmfile.g:netrw_shq + exe "silent! !gimp -s ".shellescape(a:pnmfile,1) elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") - exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:pnmfile.g:netrw_shq + exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:pnmfile,1) else " call Dret("s:NFH_pnm 0") return 0 @@ -190,7 +196,7 @@ fun! s:NFH_bmp(bmpfile) if executable("gimp") exe "silent! !gimp -s ".a:bmpfile elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") - exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:bmpfile.g:netrw_shq + exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:bmpfile,1) else " call Dret("s:NFH_bmp 0") return 0 @@ -205,9 +211,9 @@ endfun fun! s:NFH_pdf(pdf) " call Dfunc("s:NFH_pdf(pdf<".a:pdf.">)") if executable("gs") - exe 'silent! !gs '.g:netrw_shq.a:pdf.g:netrw_shq + exe 'silent! !gs '.shellescape(a:pdf,1) elseif executable("pdftotext") - exe 'silent! pdftotext -nopgbrk '.g:netrw_shq.a:pdf.g:netrw_shq + exe 'silent! pdftotext -nopgbrk '.shellescape(a:pdf,1) else " call Dret("s:NFH_pdf 0") return 0 @@ -223,7 +229,7 @@ fun! s:NFH_doc(doc) " call Dfunc("s:NFH_doc(doc<".a:doc.">)") if executable("oowriter") - exe 'silent! !oowriter '.g:netrw_shq.a:doc.g:netrw_shq + exe 'silent! !oowriter '.shellescape(a:doc,1) redraw! else " call Dret("s:NFH_doc 0") @@ -240,7 +246,7 @@ fun! s:NFH_sxw(sxw) " call Dfunc("s:NFH_sxw(sxw<".a:sxw.">)") if executable("oowriter") - exe 'silent! !oowriter '.g:netrw_shq.a:sxw.g:netrw_shq + exe 'silent! !oowriter '.shellescape(a:sxw,1) redraw! else " call Dret("s:NFH_sxw 0") @@ -257,7 +263,7 @@ fun! s:NFH_xls(xls) " call Dfunc("s:NFH_xls(xls<".a:xls.">)") if executable("oocalc") - exe 'silent! !oocalc '.g:netrw_shq.a:xls.g:netrw_shq + exe 'silent! !oocalc '.shellescape(a:xls,1) redraw! else " call Dret("s:NFH_xls 0") @@ -274,15 +280,15 @@ fun! s:NFH_ps(ps) " call Dfunc("s:NFH_ps(ps<".a:ps.">)") if executable("gs") " call Decho("exe silent! !gs ".a:ps) - exe "silent! !gs ".g:netrw_shq.a:ps.g:netrw_shq + exe "silent! !gs ".shellescape(a:ps,1) redraw! elseif executable("ghostscript") " call Decho("exe silent! !ghostscript ".a:ps) - exe "silent! !ghostscript ".g:netrw_shq.a:ps.g:netrw_shq + exe "silent! !ghostscript ".shellescape(a:ps,1) redraw! elseif executable("gswin32") -" call Decho("exe silent! !gswin32 ".g:netrw_shq.a:ps.g:netrw_shq) - exe "silent! !gswin32 ".g:netrw_shq.a:ps.g:netrw_shq +" call Decho("exe silent! !gswin32 ".shellescape(a:ps,1)) + exe "silent! !gswin32 ".shellescape(a:ps,1) redraw! else " call Dret("s:NFH_ps 0") @@ -298,16 +304,16 @@ endfun fun! s:NFH_eps(eps) " call Dfunc("s:NFH_eps()") if executable("gs") - exe "silent! !gs ".g:netrw_shq.a:eps.g:netrw_shq + exe "silent! !gs ".shellescape(a:eps,1) redraw! elseif executable("ghostscript") - exe "silent! !ghostscript ".g:netrw_shq.a:eps.g:netrw_shq + exe "silent! !ghostscript ".shellescape(a:eps,1) redraw! elseif executable("ghostscript") - exe "silent! !ghostscript ".g:netrw_shq.a:eps.g:netrw_shq + exe "silent! !ghostscript ".shellescape(a:eps,1) redraw! elseif executable("gswin32") - exe "silent! !gswin32 ".g:netrw_shq.a:eps.g:netrw_shq + exe "silent! !gswin32 ".shellescape(a:eps,1) redraw! else " call Dret("s:NFH_eps 0")
--- a/runtime/autoload/netrwSettings.vim +++ b/runtime/autoload/netrwSettings.vim @@ -1,7 +1,7 @@ " netrwSettings.vim: makes netrw settings simpler -" Date: Jul 02, 2008 +" Date: Sep 03, 2008 " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> -" Version: 12 +" Version: 13 " Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1 " Permission is hereby granted to use and distribute this code, " with or without modifications, provided that this copyright @@ -19,7 +19,13 @@ if exists("g:loaded_netrwSettings") || &cp finish endif -let g:loaded_netrwSettings = "v12" +let g:loaded_netrwSettings = "v13" +if v:version < 700 + echohl WarningMsg + echo "***warning*** this version of netrwSettings needs vim 7.0" + echohl Normal + finish +endif " --------------------------------------------------------------------- " NetrwSettings: {{{1 @@ -100,6 +106,7 @@ fun! netrwSettings#NetrwSettings() put = 'let g:netrw_browsex_viewer = (not defined)' endif put = 'let g:netrw_compress = '.g:netrw_compress + put = 'let g:netrw_cursorline = '.g:netrw_cursorline let decompressline= line("$") put ='let g:netrw_decompress...' put = 'let g:netrw_dirhistmax = '.g:netrw_dirhistmax @@ -138,6 +145,7 @@ fun! netrwSettings#NetrwSettings() put = 'let g:netrw_special_syntax = '.g:netrw_special_syntax put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject put = 'let g:netrw_scpport = '.g:netrw_scpport + put = 'let g:netrw_sepchr = '.g:netrw_sepchr put = 'let g:netrw_sshport = '.g:netrw_sshport put = 'let g:netrw_timefmt = '.g:netrw_timefmt let tmpfileescline= line("$")
--- a/runtime/autoload/rubycomplete.vim +++ b/runtime/autoload/rubycomplete.vim @@ -1,7 +1,7 @@ " Vim completion script " Language: Ruby " Maintainer: Mark Guzman <segfault@hasno.info> -" Info: $Id$ +" Info: $Id: rubycomplete.vim,v 1.41 2008/06/30 06:50:45 segy Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
--- a/runtime/autoload/spellfile.vim +++ b/runtime/autoload/spellfile.vim @@ -1,6 +1,6 @@ " Vim script to download a missing spell file " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2008 Jun 27 +" Last Change: 2008 Nov 29 if !exists('g:spellfile_URL') " Prefer using http:// when netrw should be able to use it, since @@ -39,19 +39,22 @@ function! spellfile#LoadFile(lang) let s:donedict[a:lang . &enc] = 1 " Find spell directories we can write in. - let dirlist = [] - let dirchoices = '&Cancel' - for dir in split(globpath(&rtp, 'spell'), "\n") - if filewritable(dir) == 2 - call add(dirlist, dir) - let dirchoices .= "\n&" . len(dirlist) - endif - endfor + let [dirlist, dirchoices] = spellfile#GetDirChoices() if len(dirlist) == 0 - if &verbose + let dir_to_create = spellfile#WritableSpellDir() + if &verbose || dir_to_create != '' echomsg 'spellfile#LoadFile(): There is no writable spell directory.' endif - return + if dir_to_create != '' + if confirm("Shall I create " . dir_to_create, "&Yes\n&No", 2) == 1 + " After creating the directory it should show up in the list. + call mkdir(dir_to_create, "p") + let [dirlist, dirchoices] = spellfile#GetDirChoices() + endif + endif + if len(dirlist) == 0 + return + endif endif let msg = 'Cannot find spell file for "' . a:lang . '" in ' . &enc @@ -177,3 +180,29 @@ function! spellfile#Nread(fname) unlet g:netrw_use_errorwindow endif endfunc + +" Get a list of writable spell directories and choices for confirm(). +function! spellfile#GetDirChoices() + let dirlist = [] + let dirchoices = '&Cancel' + for dir in split(globpath(&rtp, 'spell'), "\n") + if filewritable(dir) == 2 + call add(dirlist, dir) + let dirchoices .= "\n&" . len(dirlist) + endif + endfor + return [dirlist, dirchoices] +endfunc + +function! spellfile#WritableSpellDir() + if has("unix") + " For Unix always use the $HOME/.vim directory + return $HOME . "/.vim/spell" + endif + for dir in split(&rtp, ',') + if filewritable(dir) == 2 + return dir . "/spell" + endif + endfor + return '' +endfunction
--- a/runtime/autoload/sqlcomplete.vim +++ b/runtime/autoload/sqlcomplete.vim @@ -1,13 +1,19 @@ " Vim OMNI completion script for SQL " Language: SQL -" Maintainer: David Fishburn <fishburn@ianywhere.com> -" Version: 6.0 -" Last Change: Thu 03 Apr 2008 10:37:54 PM Eastern Daylight Time +" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com> +" Version: 7.0 +" Last Change: 2009 Jan 04 " Usage: For detailed help " ":help sql.txt" " or ":help ft-sql-omni" " or read $VIMRUNTIME/doc/sql.txt +" History +" Version 7.0 +" Better handling of object names +" Version 6.0 +" Supports object names with spaces "my table name" +" " Set completion with CTRL-X CTRL-O to autoloaded function. " This check is in place in case this script is " sourced directly instead of using the autoload feature. @@ -22,7 +28,7 @@ endif if exists('g:loaded_sql_completion') finish endif -let g:loaded_sql_completion = 50 +let g:loaded_sql_completion = 70 " Maintains filename of dictionary let s:sql_file_table = "" @@ -106,10 +112,23 @@ function! sqlcomplete#Complete(findstart let begindot = 1 endif while start > 0 - if line[start - 1] =~ '\(\w\|\s\+\)' + " Additional code was required to handle objects which + " can contain spaces like "my table name". + if line[start - 1] !~ '\(\w\|\.\)' + " If the previous character is not a period or word character + break + " elseif line[start - 1] =~ '\(\w\|\s\+\)' + " let start -= 1 + elseif line[start - 1] =~ '\w' + " If the previous character is word character continue back let start -= 1 elseif line[start - 1] =~ '\.' && \ compl_type =~ 'column\|table\|view\|procedure' + " If the previous character is a period and we are completing + " an object which can be specified with a period like this: + " table_name.column_name + " owner_name.table_name + " If lastword has already been set for column completion " break from the loop, since we do not also want to pickup " a table name if it was also supplied. @@ -184,9 +203,10 @@ function! sqlcomplete#Complete(findstart endif let compl_type_uc = substitute(compl_type, '\w\+', '\u&', '') - if s:sql_file_{compl_type} == "" - let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc) - endif + " Same call below, no need to do it twice + " if s:sql_file_{compl_type} == "" + " let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc) + " endif let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc) if s:sql_file_{compl_type} != "" if filereadable(s:sql_file_{compl_type}) @@ -312,9 +332,16 @@ function! sqlcomplete#Complete(findstart endif if base != '' - " Filter the list based on the first few characters the user - " entered - let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\([^.]*\\)\\?'.base.'\\)"' + " Filter the list based on the first few characters the user entered. + " Check if the text matches at the beginning + " or + " Match to a owner.table or alias.column type match + " or + " Handle names with spaces "my table name" + let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|^\\(\\w\\+\\.\\)\\?'.base.'\\)"' + " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\)"' + " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\(\\.\\)\\?'.base.'\\)"' + " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\([^.]*\\)\\?'.base.'\\)"' let compl_list = filter(deepcopy(compl_list), expr) endif
--- a/runtime/autoload/tar.vim +++ b/runtime/autoload/tar.vim @@ -1,13 +1,13 @@ " tar.vim: Handles browsing tarfiles " AUTOLOAD PORTION -" Date: Aug 08, 2008 -" Version: 23 + modifications by Bram +" Date: Dec 28, 2009 +" Version: 24 " Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM> " License: Vim License (see vim's :help license) " " Contains many ideas from Michael Toren's <tar.vim> " -" Copyright: Copyright (C) 2005-2008 Charles E. Campbell, Jr. {{{1 +" Copyright: Copyright (C) 2005-2009 Charles E. Campbell, Jr. {{{1 " Permission is hereby granted to use and distribute this code, " with or without modifications, provided that this copyright " notice is copied with it. Like anything else that's free, @@ -16,19 +16,22 @@ " By using this plugin, you agree that in no event will the " copyright holder be liable for any damages resulting from " the use of this software. - +" call inputsave()|call input("Press <cr> to continue")|call inputrestore() " --------------------------------------------------------------------- " Load Once: {{{1 +if &cp || exists("g:loaded_tar") + finish +endif +let g:loaded_tar= "v24" +if v:version < 702 + echohl WarningMsg + echo "***warning*** this version of tar needs vim 7.2" + echohl Normal + finish +endif let s:keepcpo= &cpo set cpo&vim -if &cp || exists("g:loaded_tar") || v:version < 700 - finish -endif -let g:loaded_tar= "v23b" "call Decho("loading autoload/tar.vim") -if v:version < 701 || (v:version == 701 && !has("patch299")) - echoerr "(autoload/tar.vim) need vim v7.1 with patchlevel 299" -endif " --------------------------------------------------------------------- " Default Settings: {{{1 @@ -44,7 +47,22 @@ endif if !exists("g:tar_writeoptions") let g:tar_writeoptions= "uf" endif - +if !exists("g:tar_copycmd") + if !exists("g:netrw_localcopycmd") + if has("win32") || has("win95") || has("win64") || has("win16") + if g:netrw_cygwin + let g:netrw_localcopycmd= "cp" + else + let g:netrw_localcopycmd= "copy" + endif + elseif has("unix") || has("macunix") + let g:netrw_localcopycmd= "cp" + else + let g:netrw_localcopycmd= "" + endif + endif + let g:tar_copycmd= g:netrw_localcopycmd +endif if !exists("g:netrw_cygwin") if has("win32") || has("win95") || has("win64") || has("win16") if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$' @@ -56,6 +74,9 @@ if !exists("g:netrw_cygwin") let g:netrw_cygwin= 0 endif endif +if !exists("g:tar_extractcmd") + let g:tar_extractcmd= "tar -xf" +endif " set up shell quoting character if !exists("g:tar_shq") @@ -88,7 +109,6 @@ fun! tar#Browse(tarfile) if !executable(g:tar_cmd) redraw! echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system' -" call inputsave()|call input("Press <cr> to continue")|call inputrestore() let &report= repkeep " call Dret("tar#Browse") return @@ -99,7 +119,6 @@ fun! tar#Browse(tarfile) " if its an url, don't complain, let url-handlers such as vim do its thing redraw! echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None -" call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif let &report= repkeep " call Dret("tar#Browse : file<".a:tarfile."> not readable") @@ -130,37 +149,38 @@ fun! tar#Browse(tarfile) let tarfile= a:tarfile if has("win32") && executable("cygpath") " assuming cygwin - let tarfile=substitute(system("cygpath -u ".s:Escape(tarfile,0)),'\n$','','e') + let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') endif let curlast= line("$") if tarfile =~# '\.\(gz\|tgz\)$' -" call Decho("1: exe silent r! gzip -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") - exe "silent r! gzip -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " +" call Decho("1: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") + exe "silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.lrp' -" call Decho("2: exe silent r! cat -- ".s:Escape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ") - exe "silent r! cat -- ".s:Escape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - " +" call Decho("2: exe silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ") + exe "silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.bz2$' -" call Decho("3: exe silent r! bzip2 -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") - exe "silent r! bzip2 -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " +" call Decho("3: exe silent r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") + exe "silent r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " + elseif tarfile =~# '\.lzma$' +" call Decho("3: exe silent r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") + exe "silent r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " else if tarfile =~ '^\s*-' - " A file name starting with a dash may be taken as an option. Prepend ./ to avoid that. + " A file name starting with a dash is taken as an option. Prepend ./ to avoid that. let tarfile = substitute(tarfile, '-', './-', '') endif -" call Decho("4: exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".s:Escape(tarfile,1)) - exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".s:Escape(tarfile,1) +" call Decho("4: exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,0)) + exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,1) endif if v:shell_error != 0 redraw! echohl WarningMsg | echo "***warning*** (tar#Browse) please check your g:tar_browseoptions<".g:tar_browseoptions.">" -" call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call Dret("tar#Browse : a:tarfile<".a:tarfile.">") return endif if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~ '\c\%(warning\|error\|inappropriate\|unrecognized\)') redraw! echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None -" call inputsave()|call input("Press <cr> to continue")|call inputrestore() silent %d let eikeep= &ei set ei=BufReadCmd,FileReadCmd @@ -189,7 +209,7 @@ fun! s:TarBrowseSelect() if !exists("g:tar_secure") && fname =~ '^\s*-\|\s\+-' redraw! - echohl WarningMsg | echo '***error*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"; See :help tar-options' + echohl WarningMsg | echo '***warning*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"' " call Dret('tar#BrowseSelect : rejecting tarfile member<'.fname.'> because of embedded "-"') return endif @@ -206,7 +226,7 @@ fun! s:TarBrowseSelect() let curfile= expand("%") if has("win32") && executable("cygpath") " assuming cygwin - let tarfile=substitute(system("cygpath -u ".s:Escape(tarfile,0)),'\n$','','e') + let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') endif new @@ -231,21 +251,24 @@ fun! tar#Read(fname,mode) let fname = substitute(a:fname,'tarfile:.\{-}::\(.*\)$','\1','') if has("win32") && executable("cygpath") " assuming cygwin - let tarfile=substitute(system("cygpath -u ".s:Escape(tarfile,0)),'\n$','','e') + let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') endif " call Decho("tarfile<".tarfile.">") " call Decho("fname<".fname.">") - if fname =~ '\.gz$' && executable("zcat") + if fname =~ '\.bz2$' && executable("bzcat") + let decmp= "|bzcat" + let doro = 1 + elseif fname =~ '\.gz$' && executable("zcat") let decmp= "|zcat" let doro = 1 - elseif fname =~ '\.bz2$' && executable("bzcat") - let decmp= "|bzcat" + elseif fname =~ '\.lzma$' && executable("lzcat") + let decmp= "|lzcat" let doro = 1 else let decmp="" let doro = 0 - if fname =~ '\.gz$\|\.bz2$\|\.Z$\|\.zip$' + if fname =~ '\.bz2$\|\.gz$\|\.lzma$\|\.zip$\|\.Z$' setlocal bin endif endif @@ -255,22 +278,25 @@ fun! tar#Read(fname,mode) else let tar_secure= " " endif - if tarfile =~# '\.\(gz\|tgz\)$' -" call Decho("5: exe silent r! gzip -d -c -- ".s:Escape(tarfile,1)."| ".g:tar_cmd.' -'.g:tar_readoptions.' - '.tar_secure.s:Escape(fname,1)) - exe "silent r! gzip -d -c -- ".s:Escape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp + if tarfile =~# '\.bz2$' +" call Decho("7: exe silent r! bzip2 -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp) + exe "silent r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp + elseif tarfile =~# '\.\(gz\|tgz\)$' +" call Decho("5: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd.' -'.g:tar_readoptions.' - '.tar_secure.shellescape(fname,1)) + exe "silent r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp elseif tarfile =~# '\.lrp$' -" call Decho("6: exe silent r! cat ".s:Escape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp) - exe "silent r! cat -- ".s:Escape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp - elseif tarfile =~# '\.bz2$' -" call Decho("7: exe silent r! bzip2 -d -c ".s:Escape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp) - exe "silent r! bzip2 -d -c -- ".s:Escape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp +" call Decho("6: exe silent r! cat ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp) + exe "silent r! cat -- ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp + elseif tarfile =~# '\.lzma$' +" call Decho("7: exe silent r! lzma -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp) + exe "silent r! lzma -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp else if tarfile =~ '^\s*-' - " A file name starting with a dash may be taken as an option. Prepend ./ to avoid that. + " A file name starting with a dash is taken as an option. Prepend ./ to avoid that. let tarfile = substitute(tarfile, '-', './-', '') endif -" call Decho("8: exe silent r! ".g:tar_cmd." -".g:tar_readoptions." "s:Escape(tarfile,1).tar_secure..s:Escape(fname,1).decmp) - exe "silent r! ".g:tar_cmd." -".g:tar_readoptions." ".s:Escape(tarfile,1).tar_secure.s:Escape(fname,1).decmp +" call Decho("8: exe silent r! ".g:tar_cmd." -".g:tar_readoptions.tar_secure.shellescape(tarfile,1)." ".shellescape(fname,1).decmp) + exe "silent r! ".g:tar_cmd." -".g:tar_readoptions.shellescape(tarfile,1)." ".tar_secure.shellescape(fname,1).decmp endif if doro @@ -298,7 +324,7 @@ fun! tar#Write(fname) if !exists("g:tar_secure") && a:fname =~ '^\s*-\|\s\+-' redraw! - echohl WarningMsg | echo '***error*** (tar#Write) rejecting tarfile member<'.a:fname.'> because of embedded "-"; See :help tar-options' + echohl WarningMsg | echo '***warning*** (tar#Write) rejecting tarfile member<'.a:fname.'> because of embedded "-"' " call Dret('tar#Write : rejecting tarfile member<'.fname.'> because of embedded "-"') return endif @@ -307,7 +333,6 @@ fun! tar#Write(fname) if !executable(g:tar_cmd) redraw! echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system' -" call inputsave()|call input("Press <cr> to continue")|call inputrestore() let &report= repkeep " call Dret("tar#Write") return @@ -315,7 +340,6 @@ fun! tar#Write(fname) if !exists("*mkdir") redraw! echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None -" call inputsave()|call input("Press <cr> to continue")|call inputrestore() let &report= repkeep " call Dret("tar#Write") return @@ -336,7 +360,6 @@ fun! tar#Write(fname) catch /^Vim\%((\a\+)\)\=:E344/ redraw! echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None -" call inputsave()|call input("Press <cr> to continue")|call inputrestore() let &report= repkeep " call Dret("tar#Write") return @@ -355,29 +378,33 @@ fun! tar#Write(fname) let fname = substitute(w:tarfile,'tarfile:.\{-}::\(.*\)$','\1','') " handle compressed archives - if tarfile =~# '\.gz' - call system("gzip -d -- ".s:Escape(tarfile,0)) + if tarfile =~# '\.bz2' + call system("bzip2 -d -- ".shellescape(tarfile,0)) + let tarfile = substitute(tarfile,'\.bz2','','e') + let compress= "bzip2 -- ".shellescape(tarfile,0) +" call Decho("compress<".compress.">") + elseif tarfile =~# '\.gz' + call system("gzip -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.gz','','e') - let compress= "gzip -- ".s:Escape(tarfile,0) + let compress= "gzip -- ".shellescape(tarfile,0) +" call Decho("compress<".compress.">") + elseif tarfile =~# '\.lzma' + call system("lzma -d -- ".shellescape(tarfile,0)) + let tarfile = substitute(tarfile,'\.lzma','','e') + let compress= "lzma -- ".shellescape(tarfile,0) " call Decho("compress<".compress.">") elseif tarfile =~# '\.tgz' - call system("gzip -d -- ".s:Escape(tarfile,0)) + call system("gzip -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.tgz','.tar','e') - let compress= "gzip -- ".s:Escape(tarfile,0) + let compress= "gzip -- ".shellescape(tarfile,0) let tgz = 1 " call Decho("compress<".compress.">") - elseif tarfile =~# '\.bz2' - call system("bzip2 -d -- ".s:Escape(tarfile,0)) - let tarfile = substitute(tarfile,'\.bz2','','e') - let compress= "bzip2 -- ".s:Escape(tarfile,0) -" call Decho("compress<".compress.">") endif " call Decho("tarfile<".tarfile.">") if v:shell_error != 0 redraw! echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None -" call inputsave()|call input("Press <cr> to continue")|call inputrestore() else " call Decho("tarfile<".tarfile."> fname<".fname.">") @@ -385,7 +412,7 @@ fun! tar#Write(fname) if fname =~ '/' let dirpath = substitute(fname,'/[^/]\+$','','e') if executable("cygpath") - let dirpath = substitute(system("cygpath ".s:Escape(dirpath, 0)),'\n','','e') + let dirpath = substitute(system("cygpath ".shellescape(dirpath, 0)),'\n','','e') endif call mkdir(dirpath,"p") endif @@ -405,25 +432,23 @@ fun! tar#Write(fname) endif exe "w! ".fnameescape(fname) if executable("cygpath") - let tarfile = substitute(system("cygpath ".s:Escape(tarfile,0)),'\n','','e') + let tarfile = substitute(system("cygpath ".shellescape(tarfile,0)),'\n','','e') endif " delete old file from tarfile -" call Decho("system(".g:tar_cmd." --delete -f ".s:Escape(tarfile,0)." -- ".s:Escape(fname,0).")") - call system(g:tar_cmd." --delete -f ".s:Escape(tarfile,0).tar_secure.s:Escape(fname,0)) +" call Decho("system(".g:tar_cmd." --delete -f ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")") + call system(g:tar_cmd." --delete -f ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) if v:shell_error != 0 redraw! echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None -" call inputsave()|call input("Press <cr> to continue")|call inputrestore() else " update tarfile with new file -" call Decho(g:tar_cmd." -".g:tar_writeoptions." ".s:Escape(tarfile,0).tar_secure.s:Escape(fname,0)) - call system(g:tar_cmd." -".g:tar_writeoptions." ".s:Escape(tarfile,0).tar_secure.s:Escape(fname,0)) +" call Decho(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) + call system(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) if v:shell_error != 0 redraw! echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None -" call inputsave()|call input("Press <cr> to continue")|call inputrestore() elseif exists("compress") " call Decho("call system(".compress.")") call system(compress) @@ -439,13 +464,13 @@ fun! tar#Write(fname) " call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">") let tblfile= s:tblfile_{winnr()} 1split|enew - let binkeep= &binary + let binkeep= &l:binary let eikeep = &ei set binary ei=all exe "e! ".fnameescape(tarfile) call netrw#NetWrite(tblfile) - let &ei = eikeep - let &binary = binkeep + let &ei = eikeep + let &l:binary = binkeep q! unlet s:tblfile_{winnr()} endif @@ -462,38 +487,98 @@ fun! tar#Write(fname) endfun " --------------------------------------------------------------------- -" Rmdir: {{{2 +" s:Rmdir: {{{2 fun! s:Rmdir(fname) " call Dfunc("Rmdir(fname<".a:fname.">)") if has("unix") - call system("/bin/rm -rf -- ".s:Escape(a:fname,0)) + call system("/bin/rm -rf -- ".shellescape(a:fname,0)) elseif has("win32") || has("win95") || has("win64") || has("win16") if &shell =~? "sh$" - call system("/bin/rm -rf -- ".s:Escape(a:fname,0)) + call system("/bin/rm -rf -- ".shellescape(a:fname,0)) else - call system("del /S ".s:Escape(a:fname,0)) + call system("del /S ".shellescape(a:fname,0)) endif endif " call Dret("Rmdir") endfun " --------------------------------------------------------------------- -" s:Escape: {{{2 -fun s:Escape(name,isfilt) - " shellescape() was added by patch 7.0.111 - if exists("*shellescape") - if a:isfilt - let qnameq= shellescape(a:name,1) +" tar#Vimuntar: installs a tarball in the user's .vim / vimfiles directory {{{2 +fun! tar#Vimuntar(...) +" call Dfunc("tar#Vimuntar() a:0=".a:0." a:1<".(exists("a:1")? a:1 : "-n/a-").">") + let tarball = expand("%") +" call Decho("tarball<".tarball.">") + let tarbase = substitute(tarball,'\..*$','','') +" call Decho("tarbase<".tarbase.">") + let tarhome = expand("%:p") + if has("win32") || has("win95") || has("win64") || has("win16") + let tarhome= substitute(tarhome,'\\','/','g') + endif + let tarhome= substitute(tarhome,'/[^/]*$','','') +" call Decho("tarhome<".tarhome.">") + let tartail = expand("%:t") +" call Decho("tartail<".tartail.">") + let curdir = getcwd() +" call Decho("curdir <".curdir.">") + " set up vimhome + if a:0 > 0 && a:1 != "" + let vimhome= a:1 + else + let vimhome= vimball#VimballHome() + endif +" call Decho("vimhome<".vimhome.">") + +" call Decho("curdir<".curdir."> vimhome<".vimhome.">") + if simplify(curdir) != simplify(vimhome) + " copy (possibly compressed) tarball to .vim/vimfiles +" call Decho(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome)) + call system(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome)) +" call Decho("exe cd ".fnameescape(vimhome)) + exe "cd ".fnameescape(vimhome) + endif +" call Decho("getcwd<".getcwd().">") + + " if necessary, decompress the tarball; then, extract it + if tartail =~ '\.tgz' + if executable("gunzip") + silent exe "!gunzip ".shellescape(tartail) + elseif executable("gzip") + silent exe "!gzip -d ".shellescape(tartail) else - let qnameq= shellescape(a:name) + echoerr "unable to decompress<".tartail."> on this sytem" + if simplify(curdir) != simplify(tarhome) + " remove decompressed tarball, restore directory +" call Decho("delete(".tartail.".tar)") + call delete(tartail.".tar") +" call Decho("exe cd ".fnameescape(curdir)) + exe "cd ".fnameescape(curdir) + endif +" call Dret("tar#Vimuntar") + return endif else - let qnameq= g:tar_shq . a:name . g:tar_shq + call vimball#Decompress(tartail,0) endif - return qnameq + let extractcmd= netrw#WinPath(g:tar_extractcmd) +" call Decho("system(".extractcmd." ".shellescape(tarbase.".tar").")") + call system(extractcmd." ".shellescape(tarbase.".tar")) + + " set up help + if filereadable("doc/".tarbase.".txt") +" call Decho("exe helptags ".getcwd()."/doc") + exe "helptags ".getcwd()."/doc" + endif + + if simplify(tarhome) != simplify(vimhome) + " remove decompressed tarball, restore directory + call delete(vimhome."/".tarbase.".tar") + exe "cd ".fnameescape(curdir) + endif + +" call Dret("tar#Vimuntar") endfun -" --------------------------------------------------------------------- +" ===================================================================== " Modelines And Restoration: {{{1 let &cpo= s:keepcpo unlet s:keepcpo
--- a/runtime/autoload/vimball.vim +++ b/runtime/autoload/vimball.vim @@ -1,9 +1,9 @@ " vimball.vim : construct a file containing both paths and files " Author: Charles E. Campbell, Jr. -" Date: Jul 30, 2008 -" Version: 29 +" Date: Dec 28, 2009 +" Version: 30 " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim -" Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. +" Copyright: (c) 2004-2009 by Charles E. Campbell, Jr. " The VIM LICENSE applies to Vimball.vim, and Vimball.txt " (see |copyright|) except use "Vimball" instead of "Vim". " No warranty, express or implied. @@ -11,11 +11,17 @@ " --------------------------------------------------------------------- " Load Once: {{{1 -if &cp || exists("g:loaded_vimball") || v:version < 700 +if &cp || exists("g:loaded_vimball") finish endif -let s:keepcpo = &cpo -let g:loaded_vimball = "v29" +let g:loaded_vimball = "v30" +if v:version < 702 + echohl WarningMsg + echo "***warning*** this version of vimball needs vim 7.2" + echohl Normal + finish +endif +let s:keepcpo= &cpo set cpo&vim "DechoTabOn @@ -52,30 +58,6 @@ if !exists("s:USAGE") call vimball#ShowMesg(s:WARNING,"(vimball) g:vimball_mkdir undefined") endif endif - - " set up shell quoting character - if exists("g:vimball_shq") && !exists("g:netrw_shq") - let g:netrw_shq= g:vimball_shq - endif - if !exists("g:netrw_shq") - if exists("&shq") && &shq != "" - let g:netrw_shq= &shq - elseif has("win32") || has("win95") || has("win64") || has("win16") - if g:netrw_cygwin - let g:netrw_shq= "'" - else - let g:netrw_shq= '"' - endif - else - let g:netrw_shq= "'" - endif -" call Decho("g:netrw_shq<".g:netrw_shq.">") - endif - - " set up escape string (used to protect paths) - if !exists("g:vimball_path_escape") - let g:vimball_path_escape= ' ;#%' - endif endif " ===================================================================== @@ -106,8 +88,8 @@ fun! vimball#MkVimball(line1,line2,write let vbname= vbname.'.vba' endif " call Decho("vbname<".vbname.">") - if a:1 =~ '[\/]' - call vimball#ShowMesg(s:ERROR,"(MkVimball) vimball name<".a:1."> should not include slashes") + if !a:writelevel && a:1 =~ '[\/]' + call vimball#ShowMesg(s:ERROR,"(MkVimball) vimball name<".a:1."> should not include slashes; use ! to insist") " call Dret("MkVimball : vimball name<".a:1."> should not include slashes") return endif @@ -125,7 +107,7 @@ fun! vimball#MkVimball(line1,line2,write let home= expand(a:2) else " use first existing directory from rtp - let home= s:VimballHome() + let home= vimball#VimballHome() endif " save current directory @@ -218,7 +200,7 @@ fun! vimball#Vimball(really,...) return endif - if getline(1) !~ '^" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.$' + if getline(1) !~ '^" Vimball Archiver' echoerr "(Vimball) The current file does not appear to be a Vimball!" " call Dret("vimball#Vimball") return @@ -240,7 +222,7 @@ fun! vimball#Vimball(really,...) if a:0 > 0 let home= expand(a:1) else - let home= s:VimballHome() + let home= vimball#VimballHome() endif " call Decho("home<".home.">") @@ -272,7 +254,9 @@ fun! vimball#Vimball(really,...) while 1 < linenr && linenr < line("$") let fname = substitute(getline(linenr),'\t\[\[\[1$','','') let fname = substitute(fname,'\\','/','g') - let fsize = getline(linenr+1)+0 +" let fsize = getline(linenr+1)+0 + let fsize = substitute(getline(linenr+1),'^\(\d\+\).\{-}$','\1','')+0 + let fenc = substitute(getline(linenr+1),'^\d\+\s*\(\S\+\)$','\1','') let filecnt = filecnt + 1 " call Decho("fname<".fname."> fsize=".fsize." filecnt=".filecnt) @@ -307,7 +291,7 @@ fun! vimball#Vimball(really,...) if !isdirectory(dirname) " call Decho("making <".dirname.">") if exists("g:vimball_mkdir") - call system(g:vimball_mkdir." ".s:Escape(dirname)) + call system(g:vimball_mkdir." ".shellescape(dirname)) else call mkdir(dirname) endif @@ -337,9 +321,13 @@ fun! vimball#Vimball(really,...) if a:really let fnamepath= home."/".fname " call Decho("exe w! ".fnameescape(fnamepath)) - exe "silent w! ".fnameescape(fnamepath) - echo "wrote ".fnamepath - call s:RecordInVar(home,"call delete('".fnameescape(fnamepath)."')") + if fenc != "" + exe "silent w! ++enc=".fnameescape(fenc)." ".fnameescape(fnamepath) + else + exe "silent w! ".fnameescape(fnamepath) + endif + echo "wrote ".fnameescape(fnamepath) + call s:RecordInVar(home,"call delete('".fnamepath."')") endif " return to tab with vimball @@ -418,7 +406,7 @@ fun! vimball#RmVimball(...) if a:0 >= 2 let home= expand(a:2) else - let home= s:VimballHome() + let home= vimball#VimballHome() endif let curdir = getcwd() " call Decho("home <".home.">") @@ -432,19 +420,20 @@ fun! vimball#RmVimball(...) keepalt keepjumps 1split silent! keepalt keepjumps e .VimballRecord let keepsrch= @/ -" call Decho("search for ^".curfile.".vba:") -" call Decho("search for ^".curfile."[-0-9.]*.vba:") - if search('^'.curfile.": ".'cw') +" call Decho('search for ^\M'.curfile.'.\m: ') +" call Decho('search for ^\M'.curfile.'.\mvba: ') +" call Decho('search for ^\M'.curfile.'\m[-0-9.]*\.vba: ') + if search('^\M'.curfile."\m: ".'cw') let foundit= 1 - elseif search('^'.curfile.".vba: ",'cw') + elseif search('^\M'.curfile.".\mvba: ",'cw') let foundit= 1 - elseif search('^'.curfile.'[-0-9.]*.vba: ','cw') + elseif search('^\M'.curfile.'\m[-0-9.]*\.vba: ','cw') let foundit= 1 else let foundit = 0 endif if foundit - let exestring = substitute(getline("."),'^'.curfile.'\S\{-}\.vba: ','','') + let exestring = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vba: ','','') let s:VBRstring= substitute(exestring,'call delete(','','g') let s:VBRstring= substitute(s:VBRstring,"[')]",'','g') " call Decho("exe ".exestring) @@ -472,62 +461,62 @@ endfun " --------------------------------------------------------------------- " vimball#Decompress: attempts to automatically decompress vimballs {{{2 -fun! vimball#Decompress(fname) -" call Dfunc("Decompress(fname<".a:fname.">)") +fun! vimball#Decompress(fname,...) +" call Dfunc("Decompress(fname<".a:fname.">) a:0=".a:0) " decompression: if expand("%") =~ '.*\.gz' && executable("gunzip") " handle *.gz with gunzip - silent exe "!gunzip ".s:Escape(a:fname) + silent exe "!gunzip ".shellescape(a:fname) if v:shell_error != 0 call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) gunzip may have failed with <".a:fname.">") endif let fname= substitute(a:fname,'\.gz$','','') exe "e ".escape(fname,' \') - call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") + if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif elseif expand("%") =~ '.*\.gz' && executable("gzip") " handle *.gz with gzip -d - silent exe "!gzip -d ".s:Escape(a:fname) + silent exe "!gzip -d ".shellescape(a:fname) if v:shell_error != 0 call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "gzip -d" may have failed with <'.a:fname.">") endif let fname= substitute(a:fname,'\.gz$','','') exe "e ".escape(fname,' \') - call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") + if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif elseif expand("%") =~ '.*\.bz2' && executable("bunzip2") " handle *.bz2 with bunzip2 - silent exe "!bunzip2 ".s:Escape(a:fname) + silent exe "!bunzip2 ".shellescape(a:fname) if v:shell_error != 0 call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip2 may have failed with <".a:fname.">") endif let fname= substitute(a:fname,'\.bz2$','','') exe "e ".escape(fname,' \') - call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") + if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif elseif expand("%") =~ '.*\.bz2' && executable("bzip2") " handle *.bz2 with bzip2 -d - silent exe "!bzip2 -d ".s:Escape(a:fname) + silent exe "!bzip2 -d ".shellescape(a:fname) if v:shell_error != 0 call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip2 -d" may have failed with <'.a:fname.">") endif let fname= substitute(a:fname,'\.bz2$','','') exe "e ".escape(fname,' \') - call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") + if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif elseif expand("%") =~ '.*\.zip' && executable("unzip") " handle *.zip with unzip - silent exe "!unzip ".s:Escape(a:fname) + silent exe "!unzip ".shellescape(a:fname) if v:shell_error != 0 call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) unzip may have failed with <".a:fname.">") endif let fname= substitute(a:fname,'\.zip$','','') exe "e ".escape(fname,' \') - call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") + if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif endif - set noma bt=nofile fmr=[[[,]]] fdm=marker + if a:0 == 0| setlocal noma bt=nofile fmr=[[[,]]] fdm=marker | endif " call Dret("Decompress") endfun @@ -536,20 +525,21 @@ endfun " vimball#ShowMesg: {{{2 fun! vimball#ShowMesg(level,msg) " call Dfunc("vimball#ShowMesg(level=".a:level." msg<".a:msg.">)") + let rulerkeep = &ruler let showcmdkeep = &showcmd set noruler noshowcmd redraw! if &fo =~ '[ta]' - echomsg "***vimball*** " a:msg + echomsg "***vimball*** ".a:msg else if a:level == s:WARNING || a:level == s:USAGE echohl WarningMsg elseif a:level == s:ERROR echohl Error endif - echomsg "***vimball*** " a:msg + echomsg "***vimball*** ".a:msg echohl None endif @@ -646,9 +636,9 @@ fun! s:RecordInFile(home) endfun " --------------------------------------------------------------------- -" s:VimballHome: determine/get home directory path (usually from rtp) {{{2 -fun! s:VimballHome() -" call Dfunc("VimballHome()") +" vimball#VimballHome: determine/get home directory path (usually from rtp) {{{2 +fun! vimball#VimballHome() +" call Dfunc("vimball#VimballHome()") if exists("g:vimball_home") let home= g:vimball_home else @@ -674,14 +664,14 @@ fun! s:VimballHome() if !isdirectory(home) if exists("g:vimball_mkdir") " call Decho("home<".home."> isn't a directory -- making it now with g:vimball_mkdir<".g:vimball_mkdir.">") -" call Decho("system(".g:vimball_mkdir." ".s:Escape(home).")") - call system(g:vimball_mkdir." ".s:Escape(home)) +" call Decho("system(".g:vimball_mkdir." ".shellescape(home).")") + call system(g:vimball_mkdir." ".shellescape(home)) else " call Decho("home<".home."> isn't a directory -- making it now with mkdir()") call mkdir(home) endif endif -" call Dret("VimballHome <".home.">") +" call Dret("vimball#VimballHome <".home.">") return home endfun @@ -743,20 +733,5 @@ fun! vimball#RestoreSettings() endfun " --------------------------------------------------------------------- -" s:Escape: {{{2 -fun s:Escape(name) - " shellescape() was added by patch 7.0.111 - if exists("*shellescape") - return shellescape(a:name) - endif - return g:netrw_shq . a:name . g:netrw_shq -endfun - -" --------------------------------------------------------------------- -" Restore: -let &cpo= s:keepcpo -unlet s:keepcpo - -" --------------------------------------------------------------------- " Modelines: {{{1 " vim: fdm=marker
--- a/runtime/colors/desert.vim +++ b/runtime/colors/desert.vim @@ -1,9 +1,9 @@ " Vim color file " Maintainer: Hans Fugal <hans@fugal.net> -" Last Change: $Date$ -" Last Change: $Date$ +" Last Change: $Date: 2004/06/13 19:30:30 $ +" Last Change: $Date: 2004/06/13 19:30:30 $ " URL: http://hans.fugal.net/vim/colors/desert.vim -" Version: $Id$ +" Version: $Id: desert.vim,v 1.1 2004/06/13 19:30:30 vimboss Exp $ " cool help screens " :he group-name
--- a/runtime/compiler/decada.vim +++ b/runtime/compiler/decada.vim @@ -1,13 +1,13 @@ "------------------------------------------------------------------------------ " Description: Vim Ada/Dec Ada compiler file " Language: Ada (Dec Ada) -" $Id$ +" $Id: decada.vim 887 2008-07-08 14:29:01Z krischik $ " Copyright: Copyright (C) 2006 Martin Krischik " Maintainer: Martin Krischik <krischik@users.sourceforge.net> -" $Author$ -" $Date$ +" $Author: krischik $ +" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ " Version: 4.6 -" $Revision$ +" $Revision: 887 $ " $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/decada.vim $ " History: 21.07.2006 MK New Dec Ada " 15.10.2006 MK Bram's suggestion for runtime integration
--- a/runtime/compiler/eruby.vim +++ b/runtime/compiler/eruby.vim @@ -1,7 +1,7 @@ " Vim compiler file " Language: eRuby " Maintainer: Doug Kearns <dougkearns@gmail.com> -" Info: $Id$ +" Info: $Id: eruby.vim,v 1.7 2008/06/29 04:18:42 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
--- a/runtime/compiler/fortran_g77.vim +++ b/runtime/compiler/fortran_g77.vim @@ -1,8 +1,8 @@ " Vim compiler file " Compiler: g77 (GNU Fortran) " Maintainer: Ralf Wildenhues <Ralf.Wildenhues@gmx.de> -" Last Change: $Date$ -" $Revision$ +" Last Change: $Date: 2004/06/13 18:17:36 $ +" $Revision: 1.1 $ if exists("current_compiler") finish
--- a/runtime/compiler/gcc.vim +++ b/runtime/compiler/gcc.vim @@ -1,7 +1,7 @@ " Vim compiler file " Compiler: GNU C Compiler " Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2006-12-20 +" Latest Revision: 2009-05-01 if exists("current_compiler") finish @@ -12,10 +12,13 @@ let s:cpo_save = &cpo set cpo-=C CompilerSet errorformat= + \%*[^\"]\"%f\"%*\\D%l:%c:\ %m, \%*[^\"]\"%f\"%*\\D%l:\ %m, + \\"%f\"%*\\D%l:%c:\ %m, \\"%f\"%*\\D%l:\ %m, \%-G%f:%l:\ %trror:\ (Each\ undeclared\ identifier\ is\ reported\ only\ once, \%-G%f:%l:\ %trror:\ for\ each\ function\ it\ appears\ in.), + \%f:%l:%c:\ %m, \%f:%l:\ %m, \\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m, \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
--- a/runtime/compiler/gnat.vim +++ b/runtime/compiler/gnat.vim @@ -1,14 +1,14 @@ "------------------------------------------------------------------------------ " Description: Vim Ada/GNAT compiler file " Language: Ada (GNAT) -" $Id$ +" $Id: gnat.vim 887 2008-07-08 14:29:01Z krischik $ " Copyright: Copyright (C) 2006 Martin Krischik " Maintainer: Martin Krischi <krischik@users.sourceforge.net>k " Ned Okie <nokie@radford.edu> -" $Author$ -" $Date$ +" $Author: krischik $ +" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ " Version: 4.6 -" $Revision$ +" $Revision: 887 $ " $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/gnat.vim $ " History: 24.05.2006 MK Unified Headers " 16.07.2006 MK Ada-Mode as vim-ball
--- a/runtime/compiler/jikes.vim +++ b/runtime/compiler/jikes.vim @@ -1,8 +1,8 @@ " Vim Compiler File " Compiler: Jikes " Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Change: 2004 Mar 27 -" URL: http://mywebpage.netscape.com/sharppeople/vim/compiler +" Last Change: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/compiler if exists("current_compiler") finish
--- a/runtime/compiler/rspec.vim +++ b/runtime/compiler/rspec.vim @@ -1,7 +1,7 @@ " Vim compiler file " Language: RSpec " Maintainer: Tim Pope <vimNOSPAM@tpope.info> -" Info: $Id$ +" Info: $Id: rspec.vim,v 1.2 2008/06/29 04:18:42 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
--- a/runtime/compiler/ruby.vim +++ b/runtime/compiler/ruby.vim @@ -2,7 +2,7 @@ " Language: Ruby " Function: Syntax check and/or error reporting " Maintainer: Tim Hammerquist <timh at rubyforge.org> -" Info: $Id$ +" Info: $Id: ruby.vim,v 1.13 2008/06/29 04:18:43 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
--- a/runtime/compiler/rubyunit.vim +++ b/runtime/compiler/rubyunit.vim @@ -1,7 +1,7 @@ " Vim compiler file " Language: Test::Unit - Ruby Unit Testing Framework " Maintainer: Doug Kearns <dougkearns@gmail.com> -" Info: $Id$ +" Info: $Id: rubyunit.vim,v 1.12 2008/06/29 04:18:43 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
--- a/runtime/compiler/splint.vim +++ b/runtime/compiler/splint.vim @@ -3,7 +3,7 @@ " Maintainer: Ralf Wildenhues <Ralf.Wildenhues@gmx.de> " Splint Home: http://www.splint.org/ " Last Change: 2005 Apr 21 -" $Revision$ +" $Revision: 1.3 $ if exists("current_compiler") finish
--- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2008 Aug 03 +" Last Change: 2009 Dec 24 " Listen very carefully, I will say this only once if exists("did_load_filetypes") @@ -110,12 +110,15 @@ au BufNewFile,BufRead build.xml setf a au BufNewFile,BufRead proftpd.conf* call s:StarSetf('apachestyle') " Apache config file -au BufNewFile,BufRead .htaccess setf apache -au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/apache2/*.conf* call s:StarSetf('apache') +au BufNewFile,BufRead .htaccess,/etc/httpd/*.conf setf apache +au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/apache2/*.conf*,/etc/httpd/conf.d/*.conf* call s:StarSetf('apache') " XA65 MOS6510 cross assembler au BufNewFile,BufRead *.a65 setf a65 +" Applescript +au BufNewFile,BufRead *.scpt setf applescript + " Applix ELF au BufNewFile,BufRead *.am \ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif @@ -350,10 +353,9 @@ au BufNewFile,BufRead *.cpp \ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif " C++ +au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.ipp,*.moc,*.tcc,*.inl setf cpp if has("fname_case") - au BufNewFile,BufRead *.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp -else - au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp + au BufNewFile,BufRead *.C,*.H setf cpp endif " .h files can be C, Ch C++, ObjC or ObjC++. @@ -364,9 +366,9 @@ au BufNewFile,BufRead *.h call s:FThea func! s:FTheader() if match(getline(1, min([line("$"), 200])), '^@\(interface\|end\|class\)') > -1 setf objc - elseif exists("c_syntax_for_h") + elseif exists("g:c_syntax_for_h") setf c - elseif exists("ch_syntax_for_h") + elseif exists("g:ch_syntax_for_h") setf ch else setf cpp @@ -669,8 +671,9 @@ au BufNewFile,BufRead *.factor setf fa " Fetchmail RC file au BufNewFile,BufRead .fetchmailrc setf fetchmail -" FlexWiki -au BufNewFile,BufRead *.wiki setf flexwiki +" FlexWiki - disabled, because it has side effects when a .wiki file +" is not actually FlexWiki +"au BufNewFile,BufRead *.wiki setf flexwiki " Focus Executable au BufNewFile,BufRead *.fex,*.focexec setf focexec @@ -704,12 +707,12 @@ au BufNewFile,BufRead .gdbinit setf gd au BufNewFile,BufRead *.mo,*.gdmo setf gdmo " Gedcom -au BufNewFile,BufRead *.ged setf gedcom +au BufNewFile,BufRead *.ged,lltxxxxx.txt setf gedcom " Git -autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG setf gitcommit -autocmd BufNewFile,BufRead *.git/config,.gitconfig setf gitconfig -autocmd BufNewFile,BufRead git-rebase-todo setf gitrebase +autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG setf gitcommit +autocmd BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules setf gitconfig +autocmd BufNewFile,BufRead git-rebase-todo setf gitrebase autocmd BufNewFile,BufRead .msg.[0-9]* \ if getline(1) =~ '^From.*# This line is ignored.$' | \ setf gitsendemail | @@ -896,7 +899,7 @@ au BufNewFile,BufRead *.java,*.jav setf au BufNewFile,BufRead *.jj,*.jjt setf javacc " JavaScript, ECMAScript -au BufNewFile,BufRead *.js,*.javascript,*.es setf javascript +au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx setf javascript " Java Server Pages au BufNewFile,BufRead *.jsp setf jsp @@ -1043,7 +1046,7 @@ func! s:FTm() let n = 1 while n < 10 let line = getline(n) - if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)' + if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\|//\)' setf objc return endif @@ -1070,6 +1073,9 @@ au BufNewFile,BufRead *.nb setf mma " Maya Extension Language au BufNewFile,BufRead *.mel setf mel +" Mercurial config (looks like generic config file) +au BufNewFile,BufRead *.hgrc,*hgrc setf cfg + " Messages au BufNewFile,BufRead /var/log/messages,/var/log/messages.*[0-9] setf messages @@ -1260,7 +1266,7 @@ if has("fname_case") else au BufNewFile,BufRead *.pl call s:FTpl() endif -au BufNewFile,BufRead *.plx setf perl +au BufNewFile,BufRead *.plx,*.al setf perl func! s:FTpl() if exists("g:filetype_pl") @@ -1552,6 +1558,7 @@ endfunc " Remind au BufNewFile,BufRead .reminders* call s:StarSetf('remind') +au BufNewFile,BufRead *.remind,*.rem setf remind " Resolv.conf au BufNewFile,BufRead resolv.conf setf resolv @@ -1586,7 +1593,7 @@ au BufNewFile,BufRead *.builder,*.rxml,* " Rantfile and Rakefile is like Ruby au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake setf ruby -" S-lang (or shader language!) +" S-lang (or shader language, or SmallLisp) au BufNewFile,BufRead *.sl setf slang " Samba config @@ -1685,7 +1692,15 @@ func! SetFileTypeSH(name) if expand("<amatch>") =~ g:ft_ignore_pat return endif - if a:name =~ '\<ksh\>' + if a:name =~ '\<csh\>' + " Some .sh scripts contain #!/bin/csh. + call SetFileTypeShell("csh") + return + elseif a:name =~ '\<tcsh\>' + " Some .sh scripts contain #!/bin/tcsh. + call SetFileTypeShell("tcsh") + return + elseif a:name =~ '\<ksh\>' let b:is_kornshell = 1 if exists("b:is_bash") unlet b:is_bash @@ -1823,10 +1838,15 @@ au BufNewFile,BufRead *.rules call s:F let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*' func! s:FTRules() - if expand('<amatch>:p') =~ '^/etc/udev/\%(rules\.d/\)\=.*\.rules$' + let path = expand('<amatch>:p') + if path =~ '^/etc/udev/\%(rules\.d/\)\=.*\.rules$' setf udevrules return endif + if path =~ '^/etc/ufw/' + setf conf " Better than hog + return + endif try let config_lines = readfile('/etc/udev/udev.conf') catch /^Vim\%((\a\+)\)\=:E484/ @@ -1909,6 +1929,9 @@ au BufNewFile,BufRead *.cm setf voscm " Sysctl au BufNewFile,BufRead /etc/sysctl.conf setf sysctl +" Synopsys Design Constraints +au BufNewFile,BufRead *.sdc setf sdc + " Sudoers au BufNewFile,BufRead /etc/sudoers,sudoers.tmp setf sudoers @@ -1944,6 +1967,10 @@ au BufNewFile,BufRead tags setf tags " TAK au BufNewFile,BufRead *.tak setf tak +" Task +au BufRead,BufNewFile {pending,completed,undo}.data setf taskdata +au BufRead,BufNewFile *.task setf taskedit + " Tcl (JACL too) au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl setf tcl @@ -2079,8 +2106,13 @@ au BufNewFile,BufRead *.vim,*.vba,.exrc, " Viminfo file au BufNewFile,BufRead .viminfo,_viminfo setf viminfo -" Virata Config Script File -au BufRead,BufNewFile *.hw,*.module,*.pkg setf virata +" Virata Config Script File or Drupal module +au BufRead,BufNewFile *.hw,*.module,*.pkg + \ if getline(1) =~ '<?php' | + \ setf php | + \ else | + \ setf virata | + \ endif " Visual Basic (also uses *.bas) or FORM au BufNewFile,BufRead *.frm call s:FTVB("form") @@ -2325,6 +2357,9 @@ au BufNewFile,BufRead *fvwm2rc* \| let b:fvwm_version = 2 | call s:StarSetf('fvwm') \|endif +" Gedcom +au BufNewFile,BufRead /tmp/lltmp* call s:StarSetf('gedcom') + " GTK RC au BufNewFile,BufRead .gtkrc*,gtkrc* call s:StarSetf('gtkrc')
--- a/runtime/ftplugin/abaqus.vim +++ b/runtime/ftplugin/abaqus.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: Abaqus finite element input file (www.abaqus.com) " Maintainer: Carl Osterwisch <osterwischc@asme.org> -" Last Change: 2004 Jul 06 +" Last Change: 2008 Oct 5 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") | finish | endif @@ -13,13 +13,6 @@ let b:did_ftplugin = 1 let s:cpo_save = &cpoptions set cpoptions&vim -" Folding -if version >= 600 - " Fold all lines that do not begin with * - setlocal foldexpr=getline(v:lnum)[0]!=\"\*\" - setlocal foldmethod=expr -endif - " Set the format of the include file specification for Abaqus " Used in :check gf ^wf [i and other commands setlocal include=\\<\\cINPUT\\s*= @@ -42,29 +35,43 @@ setlocal define=^\\*\\a.*\\c\\(NAME\\\|N " Abaqus keywords and identifiers may include a - character setlocal iskeyword+=- +let b:undo_ftplugin = "setlocal include< includeexpr< isfname<" + \ . " comments< commentstring< define< iskeyword<" + +if has("folding") + " Fold all lines that do not begin with * + setlocal foldexpr=getline(v:lnum)[0]!=\"\*\" + setlocal foldmethod=expr + let b:undo_ftplugin .= " foldexpr< foldmethod<" +endif + " Set the file browse filter (currently only supported under Win32 gui) if has("gui_win32") && !exists("b:browsefilter") let b:browsefilter = "Abaqus Input Files (*.inp *.inc)\t*.inp;*.inc\n" . \ "Abaqus Results (*.dat)\t*.dat\n" . \ "Abaqus Messages (*.pre *.msg *.sta)\t*.pre;*.msg;*.sta\n" . \ "All Files (*.*)\t*.*\n" + let b:undo_ftplugin .= "|unlet b:browsefilter" endif -" Define keys used to move [count] sections backward or forward. -" TODO: Make this do something intelligent in visual mode. -nnoremap <silent> <buffer> [[ :call <SID>Abaqus_Jump('?^\*\a?')<CR> -nnoremap <silent> <buffer> ]] :call <SID>Abaqus_Jump('/^\*\a/')<CR> -function! <SID>Abaqus_Jump(motion) range - let s:count = v:count1 - mark ' - while s:count > 0 - silent! execute a:motion - let s:count = s:count - 1 - endwhile -endfunction +" Define patterns for the matchit plugin +if exists("loaded_matchit") && !exists("b:match_words") + let b:match_ignorecase = 1 + let b:match_words = + \ '\*part:\*end\s*part,' . + \ '\*assembly:\*end\s*assembly,' . + \ '\*instance:\*end\s*instance,' . + \ '\*step:\*end\s*step' + let b:undo_ftplugin .= "|unlet b:match_ignorecase b:match_words" +endif + +" Define keys used to move [count] keywords backward or forward. +noremap <silent><buffer> [[ ?^\*\a<CR>:nohlsearch<CR> +noremap <silent><buffer> ]] /^\*\a<CR>:nohlsearch<CR> " Define key to toggle commenting of the current line or range -noremap <silent> <buffer> <m-c> :call <SID>Abaqus_ToggleComment()<CR>j +noremap <silent><buffer> <LocalLeader><LocalLeader> + \ :call <SID>Abaqus_ToggleComment()<CR>j function! <SID>Abaqus_ToggleComment() range if strpart(getline(a:firstline), 0, 2) == "**" " Un-comment all lines in range @@ -75,5 +82,8 @@ function! <SID>Abaqus_ToggleComment() ra endif endfunction +let b:undo_ftplugin .= "|unmap <buffer> [[|unmap <buffer> ]]" + \ . "|unmap <buffer> <LocalLeader><LocalLeader>" + " Restore saved compatibility options let &cpoptions = s:cpo_save
--- a/runtime/ftplugin/ada.vim +++ b/runtime/ftplugin/ada.vim @@ -1,14 +1,14 @@ "------------------------------------------------------------------------------ " Description: Perform Ada specific completion & tagging. " Language: Ada (2005) -" $Id$ +" $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $ " Maintainer: Martin Krischik <krischik@users.sourceforge.net> " Taylor Venable <taylor@metasyntax.net> " Neil Bird <neil@fnxweb.com> -" $Author$ -" $Date$ +" $Author: krischik $ +" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ " Version: 4.6 -" $Revision$ +" $Revision: 887 $ " $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/ftplugin/ada.vim $ " History: 24.05.2006 MK Unified Headers " 26.05.2006 MK ' should not be in iskeyword.
--- a/runtime/ftplugin/ant.vim +++ b/runtime/ftplugin/ant.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: ant -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2003 Sep 29 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif
--- a/runtime/ftplugin/aspvbs.vim +++ b/runtime/ftplugin/aspvbs.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: aspvbs -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2004 Jun 28 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif
--- a/runtime/ftplugin/bst.vim +++ b/runtime/ftplugin/bst.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: bst " Author: Tim Pope <vimNOSPAM@tpope.info> -" $Id$ +" $Id: bst.vim,v 1.1 2007/05/05 17:37:57 vimboss Exp $ if exists("b:did_ftplugin") finish
--- a/runtime/ftplugin/changelog.vim +++ b/runtime/ftplugin/changelog.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: generic Changelog file " Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2007-05-21 +" Latest Revision: 2009-05-25 " Variables: " g:changelog_timeformat (deprecated: use g:changelog_dateformat instead) - " description: the timeformat used in ChangeLog entries. @@ -46,73 +46,78 @@ if &filetype == 'changelog' endif endif - " Try to figure out a reasonable username of the form: - " Full Name <user@host>. - if !exists('g:changelog_username') - if exists('$EMAIL') && $EMAIL != '' - let g:changelog_username = $EMAIL - elseif exists('$EMAIL_ADDRESS') && $EMAIL_ADDRESS != '' - " This is some Debian junk if I remember correctly. - let g:changelog_username = $EMAIL_ADDRESS - else - " Get the users login name. - let login = system('whoami') - if v:shell_error - let login = 'unknown' - else - let newline = stridx(login, "\n") - if newline != -1 - let login = strpart(login, 0, newline) - endif - endif + function! s:username() + if exists('g:changelog_username') + return g:changelog_username + elseif $EMAIL != "" + return $EMAIL + elseif $EMAIL_ADDRESS != "" + return $EMAIL_ADDRESS + endif + + let login = s:login() + return printf('%s <%s@%s>', s:name(login), login, s:hostname()) + endfunction + + function! s:login() + return s:trimmed_system_with_default('whoami', 'unknown') + endfunction + + function! s:trimmed_system_with_default(command, default) + return s:first_line(s:system_with_default(a:command, a:default)) + endfunction + + function! s:system_with_default(command, default) + let output = system(a:command) + if v:shell_error + return default + endif + return output + endfunction + + function! s:first_line(string) + return substitute(a:string, '\n.*$', "", "") + endfunction - " Try to get the full name from gecos field in /etc/passwd. - if filereadable('/etc/passwd') - for line in readfile('/etc/passwd') - if line =~ '^' . login - let name = substitute(line,'^\%([^:]*:\)\{4}\([^:]*\):.*$','\1','') - " Only keep stuff before the first comma. - let comma = stridx(name, ',') - if comma != -1 - let name = strpart(name, 0, comma) - endif - " And substitute & in the real name with the login of our user. - let amp = stridx(name, '&') - if amp != -1 - let name = strpart(name, 0, amp) . toupper(login[0]) . - \ strpart(login, 1) . strpart(name, amp + 1) - endif - endif - endfor + function! s:name(login) + for name in [s:gecos_name(a:login), $NAME, s:capitalize(a:login)] + if name != "" + return name endif + endfor + endfunction + + function! s:gecos_name(login) + for line in s:try_reading_file('/etc/passwd') + if line =~ '^' . a:login . ':' + return substitute(s:passwd_field(line, 5), '&', s:capitalize(a:login), "") + endif + endfor + return "" + endfunction - " If we haven't found a name, try to gather it from other places. - if !exists('name') - " Maybe the environment has something of interest. - if exists("$NAME") - let name = $NAME - else - " No? well, use the login name and capitalize first - " character. - let name = toupper(login[0]) . strpart(login, 1) - endif - endif + function! s:try_reading_file(path) + try + return readfile(a:path) + endtry + return [] + endfunction - " Get our hostname. - let hostname = system('hostname') - if v:shell_error - let hostname = 'localhost' - else - let newline = stridx(hostname, "\n") - if newline != -1 - let hostname = strpart(hostname, 0, newline) - endif - endif + function! s:passwd_field(line, field) + let fields = split(a:line, ':', 1) + if len(fields) < field + return "" + endif + return fields[field - 1] + endfunction - " And finally set the username. - let g:changelog_username = name . ' <' . login . '@' . hostname . '>' - endif - endif + function! s:capitalize(word) + return toupper(a:word[0]) . strpart(a:word, 1) + endfunction + + function! s:hostname() + return s:trimmed_system_with_default('hostname', 'localhost') + endfunction " Format used for new date entries. if !exists('g:changelog_new_date_format') @@ -178,7 +183,7 @@ if &filetype == 'changelog' " Ok, now we look for the end of the date entry, and add an entry. call cursor(nextnonblank(line('.') + 1), 1) if search(g:changelog_date_end_entry_search, 'W') > 0 - let p = line('.') - 1 + let p = (line('.') == line('$')) ? line('.') : line('.') - 1 else let p = line('.') endif @@ -217,7 +222,7 @@ if &filetype == 'changelog' endfunction if exists(":NewChangelogEntry") != 2 - map <buffer> <silent> <Leader>o <Esc>:call <SID>new_changelog_entry()<CR> + noremap <buffer> <silent> <Leader>o <Esc>:call <SID>new_changelog_entry()<CR> command! -nargs=0 NewChangelogEntry call s:new_changelog_entry() endif @@ -236,14 +241,48 @@ if &filetype == 'changelog' let &cpo = s:cpo_save unlet s:cpo_save else + let s:cpo_save = &cpo + set cpo&vim + " Add the Changelog opening mapping - nmap <silent> <Leader>o :call <SID>open_changelog()<CR> + nnoremap <silent> <Leader>o :call <SID>open_changelog()<CR> function! s:open_changelog() - if !filereadable('ChangeLog') + let path = expand('%:p:h') + if exists('b:changelog_path') + let changelog = b:changelog_path + else + if exists('b:changelog_name') + let name = b:changelog_name + else + let name = 'ChangeLog' + endif + while isdirectory(path) + let changelog = path . '/' . name + if filereadable(changelog) + break + endif + let parent = substitute(path, '/\+[^/]*$', "", "") + if path == parent + break + endif + let path = parent + endwhile + endif + if !filereadable(changelog) return endif - let buf = bufnr('ChangeLog') + + if exists('b:changelog_entry_prefix') + let prefix = call(b:changelog_entry_prefix, []) + else + let prefix = substitute(strpart(expand('%:p'), strlen(path)), '^/\+', "", "") . ':' + endif + if !empty(prefix) + let prefix = ' ' . prefix + endif + + let buf = bufnr(changelog) if buf != -1 if bufwinnr(buf) != -1 execute bufwinnr(buf) . 'wincmd w' @@ -251,9 +290,12 @@ else execute 'sbuffer' buf endif else - split ChangeLog + execute 'split' fnameescape(changelog) endif - call s:new_changelog_entry() + call s:new_changelog_entry(prefix) endfunction + + let &cpo = s:cpo_save + unlet s:cpo_save endif
--- a/runtime/ftplugin/cobol.vim +++ b/runtime/ftplugin/cobol.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: cobol " Author: Tim Pope <vimNOSPAM@tpope.info> -" $Id$ +" $Id: cobol.vim,v 1.1 2007/05/05 17:24:38 vimboss Exp $ " Insert mode mappings: <C-T> <C-D> <Tab> " Normal mode mappings: < > << >> [[ ]] [] ][
--- a/runtime/ftplugin/config.vim +++ b/runtime/ftplugin/config.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: config -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2004 Jul 08 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif
--- a/runtime/ftplugin/csc.vim +++ b/runtime/ftplugin/csc.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: csc -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2003 Sep 29 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1
--- a/runtime/ftplugin/csh.vim +++ b/runtime/ftplugin/csh.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: csh -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2003 Sep 29 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1
--- a/runtime/ftplugin/dosbatch.vim +++ b/runtime/ftplugin/dosbatch.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: MS-DOS .bat files " Maintainer: Mike Williams <mrw@eandem.co.uk> -" Last Change: 5th February 2003 +" Last Change: 27th May 2009 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -12,10 +12,10 @@ endif let b:did_ftplugin = 1 " BAT comment formatting -setlocal comments=b:rem,b:@rem,b:REM,b:@REM,b::: +setlocal comments=b:rem,b:@rem,b:REM,b:@REM,::: setlocal formatoptions-=t formatoptions+=rol " Define patterns for the browse file filter if has("gui_win32") && !exists("b:browsefilter") - let b:browsefilter = "DOS Batch Files (*.bat, *.btm, *.cmd)\t*.bat;*.btm;*.cmd\nAll Files (*.*)\t*.*\n" + let b:browsefilter = "DOS Batch Files (*.bat, *.cmd)\t*.bat;*.cmd\nAll Files (*.*)\t*.*\n" endif
--- a/runtime/ftplugin/dtd.vim +++ b/runtime/ftplugin/dtd.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: dtd -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 30 Jun 2008 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1
--- a/runtime/ftplugin/eruby.vim +++ b/runtime/ftplugin/eruby.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: eRuby " Maintainer: Tim Pope <vimNOSPAM@tpope.info> -" Info: $Id$ +" Info: $Id: eruby.vim,v 1.12 2008/06/29 04:18:43 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
--- a/runtime/ftplugin/git.vim +++ b/runtime/ftplugin/git.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: generic git output -" Maintainer: Tim Pope <vimNOSPAM@tpope.info> -" Last Change: 2008 Jul 30 +" Maintainer: Tim Pope <vimNOSPAM@tpope.org> +" Last Change: 2009 Dec 24 " Only do this when not done yet for this buffer if (exists("b:did_ftplugin")) @@ -29,6 +29,9 @@ if exists('*shellescape') && exists('b:g else setlocal keywordprg=git\ show endif +if has('gui_running') + let &l:keywordprg = substitute(&l:keywordprg,'^git\>','git --no-pager','') +endif setlocal includeexpr=substitute(v:fname,'^[^/]\\+/','','') let b:undo_ftplugin = "setl keywordprg< path< includeexpr<"
--- a/runtime/ftplugin/gitcommit.vim +++ b/runtime/ftplugin/gitcommit.vim @@ -1,7 +1,7 @@ " Vim filetype plugin -" Language: git config file -" Maintainer: Tim Pope <vimNOSPAM@tpope.info> -" Last Change: 2008 Jun 04 +" Language: git commit file +" Maintainer: Tim Pope <vimNOSPAM@tpope.org> +" Last Change: 2009 Dec 24 " Only do this when not done yet for this buffer if (exists("b:did_ftplugin"))
--- a/runtime/ftplugin/gitconfig.vim +++ b/runtime/ftplugin/gitconfig.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: git config file -" Maintainer: Tim Pope <vimNOSPAM@tpope.info> -" Last Change: 2007 Dec 16 +" Maintainer: Tim Pope <vimNOSPAM@tpope.org> +" Last Change: 2009 Dec 24 " Only do this when not done yet for this buffer if (exists("b:did_ftplugin"))
--- a/runtime/ftplugin/gitrebase.vim +++ b/runtime/ftplugin/gitrebase.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: git rebase --interactive -" Maintainer: Tim Pope <vimNOSPAM@tpope.info> -" Last Change: 2008 Apr 16 +" Maintainer: Tim Pope <vimNOSPAM@tpope.org> +" Last Change: 2009 Dec 24 " Only do this when not done yet for this buffer if (exists("b:did_ftplugin")) @@ -22,12 +22,13 @@ function! s:choose(word) endfunction function! s:cycle() - call s:choose(get({'s':'edit','p':'squash'},getline('.')[0],'pick')) + call s:choose(get({'s':'edit','p':'squash','e':'reword'},getline('.')[0],'pick')) endfunction command! -buffer -bar Pick :call s:choose('pick') command! -buffer -bar Squash :call s:choose('squash') command! -buffer -bar Edit :call s:choose('edit') +command! -buffer -bar Reword :call s:choose('reword') command! -buffer -bar Cycle :call s:cycle() " The above are more useful when they are mapped; for example: "nnoremap <buffer> <silent> S :Cycle<CR>
--- a/runtime/ftplugin/gitsendemail.vim +++ b/runtime/ftplugin/gitsendemail.vim @@ -1,6 +1,6 @@ " Vim filetype plugin " Language: git send-email message -" Maintainer: Tim Pope <vimNOSPAM@tpope.info> -" Last Change: 2007 Dec 16 +" Maintainer: Tim Pope <vimNOSPAM@tpope.org> +" Last Change: 2009 Dec 24 runtime! ftplugin/mail.vim
--- a/runtime/ftplugin/html.vim +++ b/runtime/ftplugin/html.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: html -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2007 Nov 20 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1
--- a/runtime/ftplugin/java.vim +++ b/runtime/ftplugin/java.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: Java -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Change: 2005 Mar 28 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Change: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1
--- a/runtime/ftplugin/jsp.vim +++ b/runtime/ftplugin/jsp.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: jsp -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2005 Oct 10 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif
--- a/runtime/ftplugin/mail.vim +++ b/runtime/ftplugin/mail.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: Mail " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2007 Apr 30 +" Last Change: 2009 Jun 03 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -23,7 +23,7 @@ endif " Set 'formatoptions' to break text lines and keep the comment leader ">". setlocal fo+=tcql -" Add mappings, unless the user didn't want this. +" Add mappings, unless the user doesn't want this. if !exists("no_plugin_maps") && !exists("no_mail_maps") " Quote text by inserting "> " if !hasmapto('<Plug>MailQuote')
--- a/runtime/ftplugin/man.vim +++ b/runtime/ftplugin/man.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: man -" Maintainer: Nam SungHyun <namsh@kldp.org> -" Last Change: 2007 Nov 30 +" Maintainer: SungHyun Nam <goweol@gmail.com> +" Last Change: 2008 Sep 17 " To make the ":Man" command available before editing a manual page, source " this script from your startup vimrc file.
--- a/runtime/ftplugin/pascal.vim +++ b/runtime/ftplugin/pascal.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: pascal -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2005 Sep 05 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1
--- a/runtime/ftplugin/perl.vim +++ b/runtime/ftplugin/perl.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: Perl -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Change: 17 Jul 2008 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Change: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1
--- a/runtime/ftplugin/php.vim +++ b/runtime/ftplugin/php.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: php -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2007 Nov 10 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif
--- a/runtime/ftplugin/ruby.vim +++ b/runtime/ftplugin/ruby.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: Ruby " Maintainer: Gavin Sinclair <gsinclair at gmail.com> -" Info: $Id$ +" Info: $Id: ruby.vim,v 1.40 2008/06/29 04:18:43 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
--- a/runtime/ftplugin/sgml.vim +++ b/runtime/ftplugin/sgml.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: sgml -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2003 Sep 30 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif
--- a/runtime/ftplugin/sh.vim +++ b/runtime/ftplugin/sh.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: sh -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2003 Sep 29 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1
--- a/runtime/ftplugin/sql.vim +++ b/runtime/ftplugin/sql.vim @@ -1,8 +1,8 @@ " SQL filetype plugin file " Language: SQL (Common for Oracle, Microsoft SQL Server, Sybase) -" Version: 4.0 +" Version: 6.0 " Maintainer: David Fishburn <fishburn at ianywhere dot com> -" Last Change: Wed 27 Feb 2008 04:35:21 PM Eastern Standard Time +" Last Change: 2009 Aug 04 " Download: http://vim.sourceforge.net/script.php?script_id=454 " For more details please use: @@ -29,6 +29,27 @@ " " To change the default dialect, add the following to your vimrc: " let g:sql_type_default = 'sqlanywhere' +" +" This file also creates a command, SQLGetType, which allows you to +" determine what the current dialect is in use. +" :SQLGetType +" +" History +" +" Version 6.0 +" +" NF: Adds the command SQLGetType +" +" Version 5.0 +" +" NF: Adds the ability to choose the keys to control SQL completion, just add +" the following to your .vimrc: +" let g:ftplugin_sql_omni_key = '<C-C>' +" let g:ftplugin_sql_omni_key_right = '<Right>' +" let g:ftplugin_sql_omni_key_left = '<Left>' +" +" BF: format-options - Auto-wrap comments using textwidth was turned off +" by mistake. " Only do this when not done yet for this buffer @@ -44,7 +65,7 @@ set cpo= " c Auto-wrap comments using textwidth, inserting the current comment " leader automatically. setlocal formatoptions-=t -setlocal formatoptions-=c +setlocal formatoptions+=c " Functions/Commands to allow the user to change SQL syntax dialects " through the use of :SQLSetType <tab> for completion. @@ -154,6 +175,20 @@ if !exists("*SQL_SetType") endif +" Functions/Commands to allow the user determine current SQL syntax dialect +" This works with both Vim 6 and 7. + +if !exists("*SQL_GetType") + function SQL_GetType() + if exists('b:sql_type_override') + echomsg "Current SQL dialect in use:".b:sql_type_override + else + echomsg "Current SQL dialect in use:".g:sql_type_default + endif + endfunction + command! -nargs=0 SQLGetType :call SQL_GetType() +endif + if exists("b:sql_type_override") " echo 'sourcing buffer ftplugin/'.b:sql_type_override.'.vim' if globpath(&runtimepath, 'ftplugin/'.b:sql_type_override.'.vim') != '' @@ -311,6 +346,19 @@ if !exists('g:ftplugin_sql_objects') \ ',index,subscription,synchronization,view,variable' endif +" Key to trigger SQL completion +if !exists('g:ftplugin_sql_omni_key') + let g:ftplugin_sql_omni_key = '<C-C>' +endif +" Key to trigger drill into column list +if !exists('g:ftplugin_sql_omni_key_right') + let g:ftplugin_sql_omni_key_right = '<Right>' +endif +" Key to trigger drill out of column list +if !exists('g:ftplugin_sql_omni_key_left') + let g:ftplugin_sql_omni_key_left = '<Left>' +endif + " Replace all ,'s with bars, except ones with numbers after them. " This will most likely be a \{,1} string. let s:ftplugin_sql_objects = @@ -382,32 +430,32 @@ if exists('&omnifunc') if !exists('g:omni_sql_no_default_maps') " Static maps which use populate the completion list " using Vim's syntax highlighting rules - imap <buffer> <c-c>a <C-\><C-O>:call sqlcomplete#Map('syntax')<CR><C-X><C-O> - imap <buffer> <c-c>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O> - imap <buffer> <c-c>f <C-\><C-O>:call sqlcomplete#Map('sqlFunction')<CR><C-X><C-O> - imap <buffer> <c-c>o <C-\><C-O>:call sqlcomplete#Map('sqlOption')<CR><C-X><C-O> - imap <buffer> <c-c>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O> - imap <buffer> <c-c>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O> + exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'a <C-\><C-O>:call sqlcomplete#Map("syntax")<CR><C-X><C-O>' + exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'k <C-\><C-O>:call sqlcomplete#Map("sqlKeyword")<CR><C-X><C-O>' + exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'f <C-\><C-O>:call sqlcomplete#Map("sqlFunction")<CR><C-X><C-O>' + exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'o <C-\><C-O>:call sqlcomplete#Map("sqlOption")<CR><C-X><C-O>' + exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'T <C-\><C-O>:call sqlcomplete#Map("sqlType")<CR><C-X><C-O>' + exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'s <C-\><C-O>:call sqlcomplete#Map("sqlStatement")<CR><C-X><C-O>' " Dynamic maps which use populate the completion list " using the dbext.vim plugin - imap <buffer> <c-c>t <C-\><C-O>:call sqlcomplete#Map('table')<CR><C-X><C-O> - imap <buffer> <c-c>p <C-\><C-O>:call sqlcomplete#Map('procedure')<CR><C-X><C-O> - imap <buffer> <c-c>v <C-\><C-O>:call sqlcomplete#Map('view')<CR><C-X><C-O> - imap <buffer> <c-c>c <C-\><C-O>:call sqlcomplete#Map('column')<CR><C-X><C-O> - imap <buffer> <c-c>l <C-\><C-O>:call sqlcomplete#Map('column_csv')<CR><C-X><C-O> + exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'t <C-\><C-O>:call sqlcomplete#Map("table")<CR><C-X><C-O>' + exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'p <C-\><C-O>:call sqlcomplete#Map("procedure")<CR><C-X><C-O>' + exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'v <C-\><C-O>:call sqlcomplete#Map("view")<CR><C-X><C-O>' + exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'c <C-\><C-O>:call sqlcomplete#Map("column")<CR><C-X><C-O>' + exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'l <C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>' " The next 3 maps are only to be used while the completion window is " active due to the <CR> at the beginning of the map - imap <buffer> <c-c>L <C-Y><C-\><C-O>:call sqlcomplete#Map('column_csv')<CR><C-X><C-O> + exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'L <C-Y><C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>' " <C-Right> is not recognized on most Unix systems, so only create " these additional maps on the Windows platform. " If you would like to use these maps, choose a different key and make " the same map in your vimrc. - if has('win32') - imap <buffer> <c-right> <C-R>=sqlcomplete#DrillIntoTable()<CR> - imap <buffer> <c-left> <C-R>=sqlcomplete#DrillOutOfColumns()<CR> - endif + " if has('win32') + exec 'imap <buffer> '.g:ftplugin_sql_omni_key_right.' <C-R>=sqlcomplete#DrillIntoTable()<CR>' + exec 'imap <buffer> '.g:ftplugin_sql_omni_key_left.' <C-R>=sqlcomplete#DrillOutOfColumns()<CR>' + " endif " Remove any cached items useful for schema changes - imap <buffer> <c-c>R <C-\><C-O>:call sqlcomplete#Map('resetCache')<CR><C-X><C-O> + exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'R <C-\><C-O>:call sqlcomplete#Map("resetCache")<CR><C-X><C-O>' endif if b:sql_compl_savefunc != ""
--- a/runtime/ftplugin/svg.vim +++ b/runtime/ftplugin/svg.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: svg -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2003 Sep 29 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif
new file mode 100644 --- /dev/null +++ b/runtime/ftplugin/tcl.vim @@ -0,0 +1,36 @@ +" Vim filetype plugin file +" Language: Tcl +" Maintainer: Robert L Hicks <sigzero@gmail.com> +" Latest Revision: 2009-05-01 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:cpo_save = &cpo +set cpo-=C + +setlocal comments=:# +setlocal commentstring=#%s +setlocal formatoptions+=croql + +" Change the browse dialog on Windows to show mainly Tcl-related files +if has("gui_win32") + let b:browsefilter = "Tcl Source Files (.tcl)\t*.tcl\n" . + \ "Tcl Test Files (.test)\t*.test\n" . + \ "All Files (*.*)\t*.*\n" +endif + +"----------------------------------------------------------------------------- + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< kp<" . + \ " | unlet! b:browsefilter" + +" Restore the saved compatibility options. +let &cpo = s:cpo_save + +" vim: set et ts=4 sw=4 tw=78:
--- a/runtime/ftplugin/tcsh.vim +++ b/runtime/ftplugin/tcsh.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: tcsh -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2003 Sep 29 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif
--- a/runtime/ftplugin/verilog.vim +++ b/runtime/ftplugin/verilog.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: Verilog HDL " Maintainer: Chih-Tsun Huang <cthuang@larc.ee.nthu.edu.tw> -" Last Change: Mon Sep 5 11:05:54 CST 2005 and 2006 April 30 +" Last Change: Wed Sep 3 15:24:49 CST 2008 " URL: http://larc.ee.nthu.edu.tw/~cthuang/vim/ftplugin/verilog.vim " Only do this when not done yet for this buffer @@ -12,6 +12,10 @@ endif " Don't load another plugin for this buffer let b:did_ftplugin = 1 +" Set 'cpoptions' to allow line continuations +let s:cpo_save = &cpo +set cpo&vim + " Undo the plugin effect let b:undo_ftplugin = "setlocal fo< com< tw<" \ . "| unlet! b:browsefilter b:match_ignorecase b:match_words" @@ -28,8 +32,6 @@ if &textwidth == 0 setlocal tw=78 endif -set cpo-=C - " Win32 can filter files in the browse dialog if has("gui_win32") && !exists("b:browsefilter") let b:browsefilter = "Verilog Source Files (*.v)\t*.v\n" . @@ -49,3 +51,7 @@ if exists("loaded_matchit") \ '\<task\>:\<endtask\>,' . \ '\<specify\>:\<endspecify\>' endif + +" Reset 'cpoptions' back to the user's setting +let &cpo = s:cpo_save +unlet s:cpo_save
--- a/runtime/ftplugin/vim.vim +++ b/runtime/ftplugin/vim.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: Vim " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2008 Feb 27 +" Last Change: 2009 Jan 22 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -11,16 +11,20 @@ endif " Don't load another plugin for this buffer let b:did_ftplugin = 1 -let cpo_save = &cpo +let s:cpo_save = &cpo set cpo-=C -let b:undo_ftplugin = "setl fo< com< tw< commentstring<" +let b:undo_ftplugin = "setl fo< isk< com< tw< commentstring<" \ . "| unlet! b:match_ignorecase b:match_words b:match_skip" " Set 'formatoptions' to break comment lines but not other lines, " and insert the comment leader when hitting <CR> or using "o". setlocal fo-=t fo+=croql +" To allow tag lookup via CTRL-] for autoload functions, '#' must be a +" keyword character. E.g., for netrw#Nread(). +setlocal isk+=# + " Set 'comments' to format dashed lists in comments setlocal com=sO:\"\ -,mO:\"\ \ ,eO:\"\",:\" @@ -53,8 +57,7 @@ if exists("loaded_matchit") let b:match_ignorecase = 0 let b:match_words = \ '\<fu\%[nction]\>:\<retu\%[rn]\>:\<endf\%[unction]\>,' . - \ '\<wh\%[ile]\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<endw\%[hile]\>,' . - \ '\<for\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<endfo\%[r]\>,' . + \ '\<\(wh\%[ile]\|for\)\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<end\(w\%[hile]\|fo\%[r]\)\>,' . \ '\<if\>:\<el\%[seif]\>:\<en\%[dif]\>,' . \ '\<try\>:\<cat\%[ch]\>:\<fina\%[lly]\>:\<endt\%[ry]\>,' . \ '\<aug\%[roup]\s\+\%(END\>\)\@!\S:\<aug\%[roup]\s\+END\>,' . @@ -64,7 +67,8 @@ if exists("loaded_matchit") \ synIDattr(synID(line("."),col("."),1),"name") =~? "comment\\|string"' endif -let &cpo = cpo_save +let &cpo = s:cpo_save +unlet s:cpo_save " removed this, because 'cpoptions' is a global option. " setlocal cpo+=M " makes \%( match \)
--- a/runtime/ftplugin/xhtml.vim +++ b/runtime/ftplugin/xhtml.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: xhtml -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2004 Jul 08 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif
--- a/runtime/ftplugin/xml.vim +++ b/runtime/ftplugin/xml.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: xml -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 30 Jun 2008 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1
--- a/runtime/ftplugin/xsd.vim +++ b/runtime/ftplugin/xsd.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: xsd -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2003 Sep 29 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif
--- a/runtime/ftplugin/xslt.vim +++ b/runtime/ftplugin/xslt.vim @@ -1,8 +1,8 @@ " Vim filetype plugin file " Language: xslt -" Maintainer: Dan Sharp <dwsharp at hotmail dot com> -" Last Changed: 2004 Jul 08 -" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin +" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif
--- a/runtime/indent/ada.vim +++ b/runtime/indent/ada.vim @@ -1,15 +1,15 @@ "------------------------------------------------------------------------------ " Description: Vim Ada indent file " Language: Ada (2005) -" $Id$ +" $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $ " Copyright: Copyright (C) 2006 Martin Krischik " Maintainer: Martin Krischik <krischik@users.sourceforge.net> " Neil Bird <neil@fnxweb.com> " Ned Okie <nokie@radford.edu> -" $Author$ -" $Date$ +" $Author: krischik $ +" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ " Version: 4.6 -" $Revision$ +" $Revision: 887 $ " $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/indent/ada.vim $ " History: 24.05.2006 MK Unified Headers " 16.07.2006 MK Ada-Mode as vim-ball
--- a/runtime/indent/bst.vim +++ b/runtime/indent/bst.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: bst " Author: Tim Pope <vimNOSPAM@tpope.info> -" $Id$ +" $Id: bst.vim,v 1.1 2007/05/05 18:11:12 vimboss Exp $ if exists("b:did_indent") finish
--- a/runtime/indent/cmake.vim +++ b/runtime/indent/cmake.vim @@ -1,10 +1,10 @@ " ============================================================================= " " Program: CMake - Cross-Platform Makefile Generator -" Module: $RCSfile$ +" Module: $RCSfile: cmake-indent.vim,v $ " Language: VIM -" Date: $Date$ -" Version: $Revision$ +" Date: $Date: 2006/09/23 21:09:08 $ +" Version: $Revision: 1.7 $ " " ============================================================================= @@ -12,8 +12,8 @@ " Language: CMake (ft=cmake) " Author: Andy Cedilnik <andy.cedilnik@kitware.com> " Maintainer: Andy Cedilnik <andy.cedilnik@kitware.com> -" Last Change: $Date$ -" Version: $Revision$ +" Last Change: $Date: 2006/09/23 21:09:08 $ +" Version: $Revision: 1.7 $ " " Licence: The CMake license applies to this file. See " http://www.cmake.org/HTML/Copyright.html
--- a/runtime/indent/cobol.vim +++ b/runtime/indent/cobol.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: cobol " Author: Tim Pope <vimNOSPAM@tpope.info> -" $Id$ +" $Id: cobol.vim,v 1.1 2007/05/05 18:08:19 vimboss Exp $ if exists("b:did_indent") finish
--- a/runtime/indent/cpp.vim +++ b/runtime/indent/cpp.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: C++ " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2001 Jun 12 +" Last Change: 2008 Nov 29 " Only load this indent file when no other was loaded. if exists("b:did_indent") @@ -11,3 +11,5 @@ let b:did_indent = 1 " C++ indenting is built-in, thus this is very simple setlocal cindent + +let b:undo_indent = "setl cin<"
new file mode 100644 --- /dev/null +++ b/runtime/indent/cuda.vim @@ -0,0 +1,15 @@ +" Vim indent file +" Language: CUDA +" Maintainer: Bram Moolenaar <Bram@vim.org> +" Last Change: 2008 Nov 29 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +" It's just like C indenting +setlocal cindent + +let b:undo_indent = "setl cin<"
--- a/runtime/indent/eiffel.vim +++ b/runtime/indent/eiffel.vim @@ -2,8 +2,8 @@ " Language: Eiffel " Maintainer: Jocelyn Fiat <eiffel@djoce.net> " Previous-Maintainer: David Clarke <gadicath@dishevelled.net> -" $Date$ -" $Revision$ +" $Date: 2004/12/09 21:33:52 $ +" $Revision: 1.3 $ " URL: http://www.djoce.net/page/vim/ " Last Change: 2004 Sept 14 : removed specific value for tab (sw)
--- a/runtime/indent/eruby.vim +++ b/runtime/indent/eruby.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: eRuby " Maintainer: Tim Pope <vimNOSPAM@tpope.info> -" Info: $Id$ +" Info: $Id: eruby.vim,v 1.16 2008/06/29 04:18:43 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
--- a/runtime/indent/gitconfig.vim +++ b/runtime/indent/gitconfig.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: git config file -" Maintainer: Tim Pope <vimNOSPAM@tpope.info> -" Last Change: 2008 Jun 04 +" Maintainer: Tim Pope <vimNOSPAM@tpope.org> +" Last Change: 2009 Dec 24 if exists("b:did_indent") finish
new file mode 100644 --- /dev/null +++ b/runtime/indent/mail.vim @@ -0,0 +1,13 @@ +" Vim indent file +" Language: Mail +" Maintainer: Bram Moolenaar +" Last Change: 2009 Jun 03 + +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +" What works best is auto-indenting, disable other indenting. +" For formatting see the ftplugin. +setlocal autoindent nosmartindent nocindent indentexpr=
--- a/runtime/indent/php.vim +++ b/runtime/indent/php.vim @@ -2,17 +2,10 @@ " Language: PHP " Author: John Wellesz <John.wellesz (AT) teaser (DOT) fr> " URL: http://www.2072productions.com/vim/indent/php.vim -" Last Change: 2008 June 7th +" Last Change: 2008 November 22nd " Newsletter: http://www.2072productions.com/?to=php-indent-for-vim-newsletter.php -" Version: 1.28 +" Version: 1.30 " -" If you find a bug, please e-mail me at John.wellesz (AT) teaser (DOT) fr -" with an example of code that breaks the algorithm. -" -" ---> The change log and all the comments have been removed from this file. -" -" For a complete change log and fully commented code, download the script on -" 2072productions.com at the URI provided above. " " If you find a bug, please e-mail me at John.wellesz (AT) teaser (DOT) fr " with an example of code that breaks the algorithm. @@ -24,7 +17,7 @@ " NOTE: This script must be used with PHP syntax ON and with the php syntax " script by Lutz Eymers (http://www.isp.de/data/php.vim ) or with the " script by Peter Hodge (http://www.vim.org/scripts/script.php?script_id=1571 ) -" the later is bunbdled by default with vim 7. +" the later is bunbdled by default with Vim 7. " " " In the case you have syntax errors in your script such as HereDoc end @@ -33,50 +26,19 @@ " they are followed by a ';'). " " -" NOTE: If you are editing file in Unix file format and that (by accident) -" there are '\r' before new lines, this script won't be able to proceed -" correctly and will make many mistakes because it won't be able to match -" '\s*$' correctly. -" So you have to remove those useless characters first with a command like: -" -" :%s /\r$//g -" -" or simply 'let' the option PHP_removeCRwhenUnix to 1 and the script will -" silently remove them when VIM load this script (at each bufread). -" -" -" Options: PHP_autoformatcomment = 0 to not enable autoformating of comment by -" default, if set to 0, this script will let the 'formatoptions' setting intact. -" -" Options: PHP_default_indenting = # of sw (default is 0), # of sw will be -" added to the indent of each line of PHP code. +" NOTE: If you are editing files in Unix file format and that (by accident) +" there are '\r' before new lines, this script won't be able to proceed +" correctly and will make many mistakes because it won't be able to match +" '\s*$' correctly. +" So you have to remove those useless characters first with a command like: " -" Options: PHP_removeCRwhenUnix = 1 to make the script automatically remove CR -" at end of lines (by default this option is unset), NOTE that you -" MUST remove CR when the fileformat is UNIX else the indentation -" won't be correct! +" :%s /\r$//g " -" Options: PHP_BracesAtCodeLevel = 1 to indent the '{' and '}' at the same -" level than the code they contain. -" Exemple: -" Instead of: -" if ($foo) -" { -" foo(); -" } +" or simply 'let' the option PHP_removeCRwhenUnix to 1 and the script will +" silently remove them when VIM load this script (at each bufread). " -" You will write: -" if ($foo) -" { -" foo(); -" } -" -" NOTE: The script will be a bit slower if you use this option because -" some optimizations won't be available. -" -" Options: PHP_vintage_case_default_indent = 1 (defaults to 0) to add a meaningless indent -" befaore 'case:' and 'default":' statement in switch block -" +" Options: See :help php-indent for available options. + if exists("b:did_indent") finish @@ -145,6 +107,7 @@ if &fileformat == "unix" && exists("PHP_ endif if exists("*GetPhpIndent") + call ResetPhpOptions() finish " XXX endif @@ -317,14 +280,13 @@ endfunction " }}} let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\|else\)' let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|else\>\|while\>\|switch\>\|for\%(each\)\=\>\|declare\>\|class\>\|interface\>\|abstract\>\|try\>\|catch\>\)' -let s:autorestoptions = 0 -if ! s:autorestoptions - au BufWinEnter,Syntax *.php,*.php3,*.php4,*.php5 call ResetOptions() - let s:autorestoptions = 1 +let s:autoresetoptions = 0 +if ! s:autoresetoptions + let s:autoresetoptions = 1 endif -function! ResetOptions() - if ! b:optionsset +function! ResetPhpOptions() + if ! b:optionsset && &filetype == "php" if b:PHP_autoformatcomment setlocal comments=s1:/*,mb:*,ex:*/,://,:# @@ -341,6 +303,8 @@ function! ResetOptions() endif endfunc +call ResetPhpOptions() + function! GetPhpIndent() let b:GetLastRealCodeLNum_ADD = 0 @@ -360,7 +324,7 @@ function! GetPhpIndent() if !b:PHP_indentinghuge && b:PHP_lastindented > b:PHP_indentbeforelast if b:PHP_indentbeforelast let b:PHP_indentinghuge = 1 - echom 'Large indenting detected, speed optimizations engaged (v1.28)' + echom 'Large indenting detected, speed optimizations engaged (v1.30)' endif let b:PHP_indentbeforelast = b:PHP_lastindented endif @@ -693,6 +657,7 @@ function! GetPhpIndent() if !LastLineClosed + if last_line =~# '[{(]'.endline || last_line =~? '\h\w*\s*(.*,$' && pline !~ '[,(]'.endline if !b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{' @@ -715,11 +680,11 @@ function! GetPhpIndent() elseif last_line =~ '^\s*'.s:blockstart let ind = ind + &sw - elseif last_line =~# defaultORcase + elseif last_line =~# defaultORcase && cline !~# defaultORcase let ind = ind + &sw - elseif pline =~ '\%(;\%(\s*?>\)\=\|<<<''\=\a\w*''\=$\|^\s*}\|{\)'.endline . '\|' . defaultORcase + elseif pline =~ '\%(;\%(\s*?>\)\=\|<<<''\=\a\w*''\=$\|^\s*}\|{\)'.endline . '\|' . defaultORcase && cline !~# defaultORcase let ind = ind + &sw endif
--- a/runtime/indent/ruby.vim +++ b/runtime/indent/ruby.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: Ruby " Maintainer: Nikolai Weibull <now at bitwi.se> -" Info: $Id$ +" Info: $Id: ruby.vim,v 1.47 2008/06/29 04:18:43 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
--- a/runtime/indent/sh.vim +++ b/runtime/indent/sh.vim @@ -1,7 +1,7 @@ " Vim indent file -" Language: Shell Script +" Language: Shell Script " Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2006-04-19 +" Latest Revision: 2010-01-06 if exists("b:did_indent") finish @@ -9,8 +9,10 @@ endif let b:did_indent = 1 setlocal indentexpr=GetShIndent() -setlocal indentkeys+==then,=do,=else,=elif,=esac,=fi,=fin,=fil,=done +setlocal indentkeys+=0=then,0=do,0=else,0=elif,0=fi,0=esac,0=done,),0=;;,0=;& +setlocal indentkeys+=0=fin,0=fil,0=fip,0=fir,0=fix setlocal indentkeys-=:,0# +setlocal nosmartindent if exists("*GetShIndent") finish @@ -19,34 +21,138 @@ endif let s:cpo_save = &cpo set cpo&vim -function GetShIndent() +function s:buffer_shiftwidth() + return &shiftwidth +endfunction + +let s:sh_indent_defaults = { + \ 'default': function('s:buffer_shiftwidth'), + \ 'continuation-line': function('s:buffer_shiftwidth'), + \ 'case-labels': function('s:buffer_shiftwidth'), + \ 'case-statements': function('s:buffer_shiftwidth'), + \ 'case-breaks': 0 } + +function! s:indent_value(option) + let Value = exists('b:sh_indent_options') + \ && has_key(b:sh_indent_options, a:option) ? + \ b:sh_indent_options[a:option] : + \ s:sh_indent_defaults[a:option] + if type(Value) == type(function('type')) + return Value() + endif + return Value +endfunction + +function! GetShIndent() let lnum = prevnonblank(v:lnum - 1) if lnum == 0 return 0 endif - " Add a 'shiftwidth' after if, while, else, case, until, for, function() - " Skip if the line also contains the closure for the above + let pnum = prevnonblank(lnum - 1) + let ind = indent(lnum) let line = getline(lnum) - if line =~ '^\s*\(if\|then\|do\|else\|elif\|case\|while\|until\|for\)\>' - \ || line =~ '^\s*\<\k\+\>\s*()\s*{' - \ || line =~ '^\s*{' - if line !~ '\(esac\|fi\|done\)\>\s*$' && line !~ '}\s*$' - let ind = ind + &sw + if line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\)\>' + if line !~ '\<\%(fi\|esac\|done\)\>\s*\%(#.*\)\=$' + let ind += s:indent_value('default') + endif + elseif s:is_case_label(line, pnum) + if !s:is_case_ended(line) + let ind += s:indent_value('case-statements') endif + elseif line =~ '^\s*\<\k\+\>\s*()\s*{' || line =~ '^\s*{' + if line !~ '}\s*\%(#.*\)\=$' + let ind += s:indent_value('default') + endif + elseif s:is_continuation_line(line) + if pnum == 0 || !s:is_continuation_line(getline(pnum)) + let ind += s:indent_value('continuation-line') + endif + elseif pnum != 0 && s:is_continuation_line(getline(pnum)) + let ind = indent(s:find_continued_lnum(pnum)) endif - " Subtract a 'shiftwidth' on a then, do, else, esac, fi, done - " Retain the indentation level if line matches fin (for find) + let pine = line let line = getline(v:lnum) - if (line =~ '^\s*\(then\|do\|else\|elif\|esac\|fi\|done\)\>' || line =~ '^\s*}') - \ && line !~ '^\s*fi[ln]\>' - let ind = ind - &sw + if line =~ '^\s*\%(then\|do\|else\|elif\|fi\|done\)\>' || line =~ '^\s*}' + let ind -= s:indent_value('default') + elseif line =~ '^\s*esac\>' + let ind -= (s:is_case_label(pine, lnum) && s:is_case_ended(pine) ? + \ 0 : s:indent_value('case-statements')) + + \ s:indent_value('case-labels') + if s:is_case_break(pine) + let ind += s:indent_value('case-breaks') + endif + elseif s:is_case_label(line, lnum) + if s:is_case(pine) + let ind = indent(lnum) + s:indent_value('case-labels') + else + let ind -= s:indent_value('case-statements') - s:indent_value('case-breaks') + endif + elseif s:is_case_break(line) + let ind -= s:indent_value('case-breaks') endif return ind endfunction +function! s:is_continuation_line(line) + return a:line =~ '\%(\%(^\|[^\\]\)\\\|&&\|||\)$' +endfunction + +function! s:find_continued_lnum(lnum) + let i = a:lnum + while i > 1 && s:is_continuation_line(getline(i - 1)) + let i -= 1 + endwhile + return i +endfunction + +function! s:is_case_label(line, pnum) + if a:line !~ '^\s*(\=.*)' + return 0 + endif + + if a:pnum > 0 + let pine = getline(a:pnum) + if !(s:is_case(pine) || s:is_case_ended(pine)) + return 0 + endif + endif + + let suffix = substitute(a:line, '^\s*(\=', "", "") + let nesting = 0 + let i = 0 + let n = strlen(suffix) + while i < n + let c = suffix[i] + let i += 1 + if c == '\\' + let i += 1 + elseif c == '(' + let nesting += 1 + elseif c == ')' + if nesting == 0 + return 1 + endif + let nesting -= 1 + endif + endwhile + return 0 +endfunction + +function! s:is_case(line) + return a:line =~ '^\s*case\>' +endfunction + +function! s:is_case_break(line) + return a:line =~ '^\s*;[;&]' +endfunction + +function! s:is_case_ended(line) + return s:is_case_break(a:line) || a:line =~ ';[;&]\s*\%(#.*\)\=$' +endfunction + let &cpo = s:cpo_save unlet s:cpo_save
--- a/runtime/indent/xml.vim +++ b/runtime/indent/xml.vim @@ -1,10 +1,11 @@ " Language: xml " Maintainer: Johannes Zellner <johannes@zellner.org> -" Last Change: Tue, 27 Apr 2004 14:54:59 CEST +" Last Change: 2009-05-26 00:17:25 " Notes: 1) does not indent pure non-xml code (e.g. embedded scripts) " 2) will be confused by unbalanced tags in comments " or CDATA sections. -" TODO: implement pre-like tags, see xml_indent_open / xml_indent_close +" 2009-05-26 patch by Nikolai Weibull +" TODO: implement pre-like tags, see xml_indent_open / xml_indent_close " Only load this indent file when no other was loaded. if exists("b:did_indent") @@ -46,6 +47,9 @@ fun! <SID>XmlIndentSynCheck(lnum) if '' != syn1 && syn1 !~ 'xml' && '' != syn2 && syn2 !~ 'xml' " don't indent pure non-xml code return 0 + elseif syn1 =~ '^xmlComment' && syn2 =~ '^xmlComment' + " indent comments specially + return -1 endif endif return 1 @@ -74,8 +78,12 @@ fun! XmlIndentGet(lnum, use_syntax_check endif if a:use_syntax_check - if 0 == <SID>XmlIndentSynCheck(lnum) || 0 == <SID>XmlIndentSynCheck(a:lnum) + let check_lnum = <SID>XmlIndentSynCheck(lnum) + let check_alnum = <SID>XmlIndentSynCheck(a:lnum) + if 0 == check_lnum || 0 == check_alnum return indent(a:lnum) + elseif -1 == check_lnum || -1 == check_alnum + return -1 endif endif
new file mode 100644 --- /dev/null +++ b/runtime/keymap/dvorak.vim @@ -0,0 +1,82 @@ +" Maintainer: Ashish SHUKLA <wahjava@members.fsf.org> +" Last Changed: 2009 Jul 04 +" +" All characters are ASCII, conversion to another encoding (e.g., UTF-8) +" should work. + +let b:keymap_name = "en-dv" + +loadkeymap +q ' +w , +e . +r p +t y +y f +u g +i c +o r +p l +[ / +] = +\\ \\ +a a +s o +d e +f u +g i +h d +j h +k t +l n +; s +' - +z ; +x q +c j +v k +b x +n b +m m +, w +. v +/ z +Z : +X Q +C J +V K +B X +N B +M M +< W +> V +? Z +A A +S O +D E +F U +G I +H D +J H +K T +L N +: S +\" _ +Q " +W < +E > +R P +T Y +Y F +U G +I C +O R +P L +{ ? +} + +| | +- [ +_ { += ] ++ } +
--- a/runtime/lang/menu_cs_cz.iso_8859-2.vim +++ b/runtime/lang/menu_cs_cz.iso_8859-2.vim @@ -1,8 +1,8 @@ " Menu Translations: Czech for ISO-8859-2 " Maintainer: Jiri Brezina <brzj@seznam.cz> " vim:set foldmethod=marker: -" $Revision$ -" $Date$ +" $Revision: 1.3 $ +" $Date: 2005/12/19 22:08:24 $ " Quit when menu translations have already been done. if exists("did_menu_trans")
--- a/runtime/lang/menu_czech_czech_republic.1250.vim +++ b/runtime/lang/menu_czech_czech_republic.1250.vim @@ -1,8 +1,8 @@ " Menu Translations: Czech for MS-Windows " Maintainer: Jiri Brezina <brzj@seznam.cz> " vim:set foldmethod=marker: -" $Revision$ -" $Date$ +" $Revision: 1.3 $ +" $Date: 2005/12/19 22:13:30 $ " Quit when menu translations have already been done. if exists("did_menu_trans")
--- a/runtime/lang/menu_czech_czech_republic.ascii.vim +++ b/runtime/lang/menu_czech_czech_republic.ascii.vim @@ -1,8 +1,8 @@ " Menu Translations: Czech for systems without localization " Maintainer: Jiri Brezina <brzj@seznam.cz> " vim:set foldmethod=marker: -" $Revision$ -" $Date$ +" $Revision: 1.3 $ +" $Date: 2005/12/19 22:06:56 $ " Quit when menu translations have already been done. if exists("did_menu_trans")
--- a/runtime/lang/menu_es_es.latin1.vim +++ b/runtime/lang/menu_es_es.latin1.vim @@ -1,7 +1,8 @@ " Menu Translations: Espaol -" Maintainer: Alejandro Lpez-Valencia <dradul@users.sourceforge.net> -" Version: 6.4.p0-1 -" Last Change: 2005 Dec 01 +" Previous translator: Alejandro Lpez-Valencia <dradul@users.sourceforge.net> +" Last translator: Omar Campagne Polaino <ocampagne@gmail.com> +" Version: 7.2.245 +" Last Change: 2009 Sep 03 " " Quit when menu translations have already been done. @@ -28,13 +29,14 @@ menutrans O&rphans Ayude\ a\ los\ nios\ &hurfanos menutrans Co&pying &Trminos\ de\ Licencia menutrans Sponsor/Register Benefactor/Regstrese menutrans &Version &Versin\ e\ \informacin\ de\ configuracin -menutrans &About &Acerca\ de\ Vim. +menutrans &About &Acerca\ de\ Vim " File menu menutrans &File &Archivo menutrans &Open\.\.\.<Tab>:e &Abrir\.\.\.<Tab>:e menutrans Sp&lit-Open\.\.\.<Tab>:sp A&brir\ en\ otra\ ventana\.\.\.<Tab>:sp menutrans &New<Tab>:enew &Nuevo<Tab>:enew +menutrans Open\ Tab\.\.\.<Tab>:tabnew Abrir\ pes&taa\.\.\.<Tab>:tabnew menutrans &Close<Tab>:close &Cerrar<Tab>:close menutrans &Save<Tab>:w &Guardar<Tab>:w menutrans Save\ &As\.\.\.<Tab>:sav Guardar\ &como\.\.\.<Tab>:sav @@ -65,11 +67,12 @@ menutrans Find\ and\ Rep&lace<Tab>:%s Bu menutrans Find\ and\ Rep&lace Buscar\ y\ R&eemplazar menutrans Find\ and\ Rep&lace<Tab>:s Buscar\ y\ R&eemplazar<Tab>:s menutrans Settings\ &Window &Ventana\ de\ opciones +menutrans Startup\ &Settings Opciones\ de\ arranque " Edit/Global Settings menutrans &Global\ Settings Opciones\ &globales -menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Activar/Desactivar\ &realzado\ de\ sintaxis<Tab>:set\ hls! +menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Activar/Desactivar\ &resaltado\ de\ sintaxis<Tab>:set\ hls! menutrans Toggle\ &Ignore-case<Tab>:set\ ic! Activar/Desactivar\ &ignorar\ maysculas\ y\ minsculas<Tab>:set\ ic! menutrans Toggle\ &Showmatch<Tab>:set\ sm! Activar/Desactivar\ &mostrar\ coincidencias<Tab>:set\ sm! @@ -95,11 +98,11 @@ menutrans Toggle\ &Bottom\ Scrollbar Ocu menutrans Toggle\ &Left\ Scrollbar Ocultar/Mostrar\ barra\ de\ desplazamiento\ i&zquierda menutrans Toggle\ &Right\ Scrollbar Ocultar/Mostrar\ barra\ de\ desplazamiento\ &derecha -let g:menutrans_path_dialog = "Introduzca la ruta de bsqueda para los ficheros.\nSepare los nombres de los directorios con una coma." -let g:menutrans_tags_dialog = "Introduzca los nombres de los fichero de tags.\nSepare los nombres con una coma." +let g:menutrans_path_dialog = "Introduzca la ruta de bsqueda para los archivos.\nSepare los nombres de los directorios con una coma." +let g:menutrans_tags_dialog = "Introduzca los nombres de los archivos de tags.\nSepare los nombres con una coma." " Edit/File Settings -menutrans F&ile\ Settings Opciones\ del\ &fichero +menutrans F&ile\ Settings Opciones\ del\ &archivo " Boolean options menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! Activar/Desactivar\ &numeracin\ de\ lneas<Tab>:set\ nu! @@ -118,8 +121,8 @@ menutrans Soft\ &Tabstop &Tabulado\ blando menutrans Te&xt\ Width\.\.\. Anchura\ del\ te&xto\.\.\. let g:menutrans_textwidth_dialog = "Introduzca el nuevo ancho del texto (0 para desactivar el quiebre de lnea): " -menutrans &File\ Format\.\.\. &Formato\ del\ fichero\.\.\. -let g:menutrans_fileformat_dialog = "Seleccione el formato para escribir el fichero" +menutrans &File\ Format\.\.\. &Formato\ del\ archivo\.\.\. +let g:menutrans_fileformat_dialog = "Seleccione el formato para escribir el archivo" menutrans C&olor\ Scheme Esquema\ de\ c&olores menutrans blue azul @@ -154,7 +157,7 @@ menutrans slovak eslovaco menutrans &Tools &Herramientas menutrans &Jump\ to\ this\ tag<Tab>g^] &Saltar\ a\ este\ etiqueta<Tab>g^] menutrans Jump\ &back<Tab>^T Saltar\ &atrs<Tab>^T -menutrans Build\ &Tags\ File Crear\ fichero\ de\ &etiquetas\ +menutrans Build\ &Tags\ File Crear\ archivo\ de\ &etiquetas\ menutrans &Diff Modo\ de\ &diferencias menutrans &Folding &Plegado menutrans &Make<Tab>:make Ejecutar\ &Make<Tab>:make @@ -169,6 +172,24 @@ menutrans &Set\ Compiler Esco&ger\ el\ menutrans &Convert\ to\ HEX<Tab>:%!xxd Convertir\ a\ formato\ &hexadecimal<Tab>:%!xxd menutrans Conve&rt\ back<Tab>:%!xxd\ -r &Convertir\ al\ formato\ original<Tab>:%!xxd\ -r +" Tools.Spelling Menu +menutrans &Spelling Correccin\ ortogrfica +menutrans &Spell\ Check\ On &Activar\ correccin\ ortogrfica +menutrans Spell\ Check\ &Off &Desactivar\ correccin\ ortogrfica +menutrans To\ &Next\ error<Tab>]s &Siguiente\ error<Tab>]s +menutrans To\ &Previous\ error<Tab>[s Error\ &precedente<Tab>[s +menutrans Suggest\ &Corrections<Tab>z= Sugerir\ &correccin<Tab>z= +menutrans &Repeat\ correction<Tab>:spellrepall &Repetir\ correccin<Tab>:spellrepall +an 40.335.205 &Tools.&Spelling.Castellano\ (es) :set spl=es spell<CR> +menutrans Set\ language\ to\ "en" Ingls +menutrans Set\ language\ to\ "en_au" Ingls\ (en_au) +menutrans Set\ language\ to\ "en_ca" Ingls\ (en_ca) +menutrans Set\ language\ to\ "en_gb" Ingls\ (en_gb) +menutrans Set\ language\ to\ "en_nz" Ingls\ (en_nz) +menutrans Set\ language\ to\ "en_us" Ingls\ (en_us) + +menutrans &Find\ More\ Languages &Buscar\ otras\ lenguas + " Tools.Fold Menu menutrans &Enable/Disable\ folds<Tab>zi &Activar/Desactivar\ pliegues<Tab>zi menutrans &View\ Cursor\ Line<Tab>zv &Ver\ lnea\ del\ cursor<Tab>zv @@ -182,7 +203,7 @@ menutrans Fold\ Met&hod &Mtodo\ de\ plegado " create and delete folds menutrans Create\ &Fold<Tab>zf Crear\ &pliegue<Tab>zf menutrans &Delete\ Fold<Tab>zd &Suprimir\ pliegue<Tab>zd -menutrans Delete\ &All\ Folds<Tab>zD Suprimir\ &todos\ los\ pligues<Tab>zD +menutrans Delete\ &All\ Folds<Tab>zD Suprimir\ &todos\ los\ pliegues<Tab>zD " moving around in folds menutrans Fold\ col&umn\ width A&nchura\ de\ columna\ del\ pliegue @@ -203,7 +224,7 @@ menutrans &Delete &Suprimir menutrans &Alternate &Alternar menutrans &Next Si&guiente menutrans &Previous &Previo -let g:menutrans_no_file = "[Sin fichero]" +let g:menutrans_no_file = "[Sin archivo]" " Window menu menutrans &Window &Ventana @@ -211,7 +232,7 @@ menutrans &New<Tab>^Wn Ventana\ &nueva menutrans S&plit<Tab>^Ws &Dividir\ la\ ventana<Tab>^Ws menutrans Sp&lit\ To\ #<Tab>^W^^ D&ividir\ en\ el\ marcador\ (#)<Tab>^W^^ menutrans Split\ &Vertically<Tab>^Wv Dividir\ &verticalmente<Tab>^Wv -menutrans Split\ File\ E&xplorer &Abrir\ el\ Explorador\ de\ ficheros +menutrans Split\ File\ E&xplorer &Abrir\ el\ Explorador\ de\ archivos menutrans &Close<Tab>^Wc &Cerrar\ esta\ ventana<Tab>^Wc menutrans Close\ &Other(s)<Tab>^Wo Cerrar\ &otra(s)\ ventana(s)<Tab>^Wo menutrans Move\ &To Mov&er\ a @@ -245,9 +266,9 @@ if has("toolbar") delfun Do_toolbar_tmenu endif fun Do_toolbar_tmenu() - tmenu ToolBar.Open Abrir fichero - tmenu ToolBar.Save Guardar fichero - tmenu ToolBar.SaveAll Guardar todos los ficheros + tmenu ToolBar.Open Abrir archivo + tmenu ToolBar.Save Guardar archivo + tmenu ToolBar.SaveAll Guardar todos los archivos tmenu ToolBar.Print Imprimir tmenu ToolBar.Undo Deshacer tmenu ToolBar.Redo Rehacer @@ -273,7 +294,7 @@ if has("toolbar") tmenu ToolBar.RunScript Ejecutar un archivo de rdenes tmenu ToolBar.Make Ejecutar Make tmenu ToolBar.Shell Abrir un intrprete de comandos - tmenu ToolBar.RunCtags Generar un fichero de etiquetas + tmenu ToolBar.RunCtags Generar un archivo de etiquetas tmenu ToolBar.TagJump Saltar a una etiqueta tmenu ToolBar.Help Ayuda tmenu ToolBar.FindHelp Buscar en la ayuda... @@ -282,15 +303,15 @@ endif " Syntax menu menutrans &Syntax &Sintaxis -menutrans &Show\ filetypes\ in\ menu &Mostrar\ listas\ de\ tipo\ de\ fichero +menutrans &Show\ filetypes\ in\ menu &Mostrar\ listas\ de\ tipo\ de\ archivo menutrans Set\ '&syntax'\ only Activar\ slo\ sintaxis -menutrans Set\ '&filetype'\ too Activar\ tambin\ tipo\ de\ fichero +menutrans Set\ '&filetype'\ too Activar\ tambin\ tipo\ de\ archivo menutrans &Off &Desactivar\ sintaxis -menutrans &Manual sintaxis\ &manual -menutrans A&utomatic sintaxis\ a&utomtica -menutrans on/off\ for\ &This\ file Activar/Desactivar\ en\ es&te\ fichero +menutrans &Manual Sintaxis\ &manual +menutrans A&utomatic Sintaxis\ a&utomtica +menutrans on/off\ for\ &This\ file Activar/Desactivar\ en\ es&te\ archivo menutrans Co&lor\ test &Prueba\ de\ colores -menutrans &Highlight\ test Prueba\ de\ &realzado +menutrans &Highlight\ test Prueba\ de\ &resaltado menutrans &Convert\ to\ HTML &Convertir\ a\ HTML " Find Help dialog text
--- a/runtime/lang/menu_ko_kr.euckr.vim +++ b/runtime/lang/menu_ko_kr.euckr.vim @@ -1,6 +1,6 @@ " Menu Translations: Korean -" Maintainer: Nam SungHyun <namsh@kldp.org> -" Last Change: 2003 Apr 25 +" Maintainer: SungHyun Nam <goweol@gmail.com> +" Last Change: 2008 Sep 17 " Quit when menu translations have already been done. if exists("did_menu_trans")
--- a/runtime/lang/menu_ko_kr.utf-8.vim +++ b/runtime/lang/menu_ko_kr.utf-8.vim @@ -1,6 +1,6 @@ " Menu Translations: Korean -" Maintainer: Nam SungHyun <namsh@kldp.org> -" Last Change: 2003 Apr 25 +" Maintainer: SungHyun Nam <goweol@gmail.com> +" Last Change: 2008 Sep 17 " Quit when menu translations have already been done. if exists("did_menu_trans")
--- a/runtime/lang/menu_ko_kr.vim +++ b/runtime/lang/menu_ko_kr.vim @@ -1,5 +1,5 @@ " Menu Translations: Korean -" Translated By: Nam SungHyun <namsh@kldp.org> -" Last Change: 2003 Feb 24 +" Translated By: SungHyun Nam <goweol@gmail.com> +" Last Change: 2008 Sep 17 source <sfile>:p:h/menu_ko_kr.euckr.vim
--- a/runtime/lang/menu_ru_ru.koi8-r.vim +++ b/runtime/lang/menu_ru_ru.koi8-r.vim @@ -3,7 +3,7 @@ " Last Change: 26 Apr 2004 " URL: cvs://cvs.sf.net:/cvsroot/ruvim/extras/menu/menu_ru_ru.vim " -" $Id$ +" $Id: menu_ru_ru.koi8-r.vim,v 1.2 2004/06/16 11:19:21 vimboss Exp $ " " Adopted for RuVim project by Vassily Ragosin. " First translation: Tim Alexeevsky <realtim [at] mail.ru>,
--- a/runtime/lang/menu_ru_ru.vim +++ b/runtime/lang/menu_ru_ru.vim @@ -3,7 +3,7 @@ " Last Change: 26 Apr 2004 " URL: cvs://cvs.sf.net:/cvsroot/ruvim/extras/menu/menu_ru_ru.vim " -" $Id$ +" $Id: menu_ru_ru.vim,v 1.1 2004/06/13 16:09:10 vimboss Exp $ " " Adopted for RuVim project by Vassily Ragosin. " First translation: Tim Alexeevsky <realtim [at] mail.ru>,
--- a/runtime/macros/matchit.vim +++ b/runtime/macros/matchit.vim @@ -357,7 +357,7 @@ fun! s:InsertRefs(groupBR, prefix, group execute s:Ref(ini, d, "start", "len") let ini = strpart(ini, 0, start) . backref . strpart(ini, start+len) let tailBR = substitute(tailBR, s:notslash . '\zs\\' . d, - \ escape(backref, '\\'), 'g') + \ escape(backref, '\\&'), 'g') endif let d = d-1 endwhile
--- a/runtime/menu.vim +++ b/runtime/menu.vim @@ -2,7 +2,7 @@ " You can also use this as a start for your own set of menus. " " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2008 Jun 30 +" Last Change: 2009 Feb 26 " Note that ":an" (short for ":anoremenu") is often used to make a menu work " in all modes and avoid side effects from mappings defined by the user. @@ -138,6 +138,7 @@ endfunc func! s:FnameEscape(fname) if exists('*fnameescape') return fnameescape(a:fname) + endif return escape(a:fname, " \t\n*?[{`$\\%#'\"|!<") endfunc @@ -1016,10 +1017,9 @@ else tmenu ToolBar.Copy Copy to clipboard tmenu ToolBar.Paste Paste from Clipboard if !has("gui_athena") - tmenu ToolBar.Find Find... + tmenu ToolBar.Replace Find / Replace... tmenu ToolBar.FindNext Find Next tmenu ToolBar.FindPrev Find Previous - tmenu ToolBar.Replace Find / Replace... endif tmenu ToolBar.LoadSesn Choose a session to load tmenu ToolBar.SaveSesn Save current session
--- a/runtime/plugin/getscriptPlugin.vim +++ b/runtime/plugin/getscriptPlugin.vim @@ -19,7 +19,7 @@ if &cp || exists("g:loaded_getscriptPlug endif finish endif -let g:loaded_getscriptPlugin = "v31" +let g:loaded_getscriptPlugin = "v32" let s:keepcpo = &cpo set cpo&vim
--- a/runtime/plugin/gzip.vim +++ b/runtime/plugin/gzip.vim @@ -1,6 +1,6 @@ " Vim plugin for editing compressed files. " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2005 Jul 26 +" Last Change: 2009 Jul 01 " Exit quickly when: " - this plugin was already loaded @@ -20,17 +20,21 @@ augroup gzip " " Set binary mode before reading the file. " Use "gzip -d", gunzip isn't always available. - autocmd BufReadPre,FileReadPre *.gz,*.bz2,*.Z setlocal bin + autocmd BufReadPre,FileReadPre *.gz,*.bz2,*.Z,*.lzma setlocal bin autocmd BufReadPost,FileReadPost *.gz call gzip#read("gzip -dn") autocmd BufReadPost,FileReadPost *.bz2 call gzip#read("bzip2 -d") autocmd BufReadPost,FileReadPost *.Z call gzip#read("uncompress") + autocmd BufReadPost,FileReadPost *.lzma call gzip#read("lzma -d") autocmd BufWritePost,FileWritePost *.gz call gzip#write("gzip") autocmd BufWritePost,FileWritePost *.bz2 call gzip#write("bzip2") autocmd BufWritePost,FileWritePost *.Z call gzip#write("compress -f") + autocmd BufWritePost,FileWritePost *.lzma call gzip#write("lzma -z") autocmd FileAppendPre *.gz call gzip#appre("gzip -dn") autocmd FileAppendPre *.bz2 call gzip#appre("bzip2 -d") autocmd FileAppendPre *.Z call gzip#appre("uncompress") + autocmd FileAppendPre *.lzma call gzip#appre("lzma -d") autocmd FileAppendPost *.gz call gzip#write("gzip") autocmd FileAppendPost *.bz2 call gzip#write("bzip2") autocmd FileAppendPost *.Z call gzip#write("compress -f") + autocmd FileAppendPost *.lzma call gzip#write("lzma -z") augroup END
--- a/runtime/plugin/matchparen.vim +++ b/runtime/plugin/matchparen.vim @@ -1,6 +1,6 @@ " Vim plugin for showing matching parens " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2008 Feb 27 +" Last Change: 2008 Sep 03 " Exit quickly when: " - this plugin was already loaded (or disabled) @@ -21,7 +21,7 @@ if exists("*s:Highlight_Matching_Pair") finish endif -let cpo_save = &cpo +let s:cpo_save = &cpo set cpo-=C " The function that is invoked (very often) to define a ":match" highlighting @@ -147,4 +147,5 @@ command! NoMatchParen windo 3match none \ au! matchparen command! DoMatchParen runtime plugin/matchparen.vim | windo doau CursorMoved -let &cpo = cpo_save +let &cpo = s:cpo_save +unlet s:cpo_save
--- a/runtime/plugin/netrwPlugin.vim +++ b/runtime/plugin/netrwPlugin.vim @@ -1,6 +1,6 @@ " netrwPlugin.vim: Handles file transfer and remote directory listing across a network " PLUGIN SECTION -" Date: Aug 01, 2008 +" Date: Aug 10, 2008 " Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM> " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim " Copyright: Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1 @@ -16,19 +16,16 @@ " But be doers of the Word, and not only hearers, deluding your own selves {{{1 " (James 1:22 RSV) " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - -" --------------------------------------------------------------------- " Load Once: {{{1 if &cp || exists("g:loaded_netrwPlugin") finish endif -let g:loaded_netrwPlugin = "v132" -let s:keepcpo = &cpo -if v:version < 700 - echohl WarningMsg | echo "***netrw*** you need vim version 7.0 for this version of netrw" | echohl None +let g:loaded_netrwPlugin = "v136" +if v:version < 702 + echohl WarningMsg | echo "***netrw*** you need vim version 7.2 for this version of netrw" | echohl None finish endif -let s:keepcpo= &cpo +let s:keepcpo = &cpo set cpo&vim " --------------------------------------------------------------------- @@ -52,8 +49,8 @@ augroup Network au BufReadCmd file://* exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://\(.*\)','\1',""))|exe "bwipe ".fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>"))) au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://localhost/\(.*\)','\1',""))|exe "bwipe ".fnameescape(substitute(expand("<amatch>"),'file://\(\k\+@\)\=','',''))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>"))) endif - au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|exe '2Nread '.fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>")) - au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau FileReadPre ".fnameescape(expand("<amatch>"))|exe 'Nread '.fnameescape(expand("<amatch>"))|exe "silent doau FileReadPost ".fnameescape(expand("<amatch>")) + au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(2,expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>")) + au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau FileReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(1,expand("<amatch>"))|exe "silent doau FileReadPost ".fnameescape(expand("<amatch>")) au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau BufWritePre ".fnameescape(expand("<amatch>"))|exe 'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau BufWritePost ".fnameescape(expand("<amatch>")) au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau FileWritePre ".fnameescape(expand("<amatch>"))|exe "'[,']".'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau FileWritePost ".fnameescape(expand("<amatch>")) try @@ -156,24 +153,6 @@ fun! NetUserPass(...) endfun " ------------------------------------------------------------------------ -" NetReadFixup: this sort of function is typically written by the user {{{1 -" to handle extra junk that their system's ftp dumps -" into the transfer. This function is provided as an -" example and as a fix for a Windows 95 problem: in my -" experience, win95's ftp always dumped four blank lines -" at the end of the transfer. -if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp - fun! NetReadFixup(method, line1, line2) -" call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")") - if method == 3 " ftp (no <.netrc>) - let fourblanklines= line2 - 3 - silent fourblanklines.",".line2."g/^\s*/d" - endif -" call Dret("NetReadFixup") - endfun -endif - -" ------------------------------------------------------------------------ " Modelines And Restoration: {{{1 let &cpo= s:keepcpo unlet s:keepcpo
--- a/runtime/plugin/tarPlugin.vim +++ b/runtime/plugin/tarPlugin.vim @@ -14,7 +14,7 @@ if &cp || exists("g:loaded_tarPlugin") finish endif -let g:loaded_tarPlugin = "v23" +let g:loaded_tarPlugin = "v24" let s:keepcpo = &cpo set cpo&vim @@ -34,13 +34,15 @@ augroup tar au FileWriteCmd tarfile::*/* call tar#Write(expand("<amatch>")) endif - au BufReadCmd *.tar.gz call tar#Browse(expand("<amatch>")) - au BufReadCmd *.tar call tar#Browse(expand("<amatch>")) - au BufReadCmd *.lrp call tar#Browse(expand("<amatch>")) - au BufReadCmd *.tar.bz2 call tar#Browse(expand("<amatch>")) - au BufReadCmd *.tar.Z call tar#Browse(expand("<amatch>")) - au BufReadCmd *.tgz call tar#Browse(expand("<amatch>")) + au BufReadCmd *.tar.gz call tar#Browse(expand("<amatch>")) + au BufReadCmd *.tar call tar#Browse(expand("<amatch>")) + au BufReadCmd *.lrp call tar#Browse(expand("<amatch>")) + au BufReadCmd *.tar.bz2 call tar#Browse(expand("<amatch>")) + au BufReadCmd *.tar.Z call tar#Browse(expand("<amatch>")) + au BufReadCmd *.tgz call tar#Browse(expand("<amatch>")) + au BufReadCmd *.tar.lzma call tar#Browse(expand("<amatch>")) augroup END +com! -nargs=? -complete=file Vimuntar call tar#Vimuntar(<q-args>) " --------------------------------------------------------------------- " Restoration And Modelines: {{{1
--- a/runtime/plugin/vimballPlugin.vim +++ b/runtime/plugin/vimballPlugin.vim @@ -1,6 +1,6 @@ " vimballPlugin : construct a file containing both paths and files " Author: Charles E. Campbell, Jr. -" Copyright: (c) 2004-2007 by Charles E. Campbell, Jr. +" Copyright: (c) 2004-2009 by Charles E. Campbell, Jr. " The VIM LICENSE applies to Vimball.vim, and Vimball.txt " (see |copyright|) except use "Vimball" instead of "Vim". " No warranty, express or implied. @@ -16,18 +16,18 @@ if &cp || exists("g:loaded_vimballPlugin") finish endif -let g:loaded_vimballPlugin = "v29" +let g:loaded_vimballPlugin = "v30" let s:keepcpo = &cpo set cpo&vim " ------------------------------------------------------------------------------ " Public Interface: {{{1 com! -ra -complete=file -na=+ -bang MkVimball call vimball#MkVimball(<line1>,<line2>,<bang>0,<f-args>) -com! -na=? -complete=dir UseVimball call vimball#Vimball(1,<f-args>) -com! -na=0 VimballList call vimball#Vimball(0) -com! -na=* -complete=dir RmVimball call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings() -au BufEnter *.vba.gz,*.vba.bz2,*.vba.zip call vimball#Decompress(expand("<amatch>")) -au BufEnter *.vba setlocal ff=unix noma bt=nofile fmr=[[[,]]] fdm=marker|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)") +com! -na=? -complete=dir UseVimball call vimball#Vimball(1,<f-args>) +com! -na=0 VimballList call vimball#Vimball(0) +com! -na=* -complete=dir RmVimball call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings() +au SourceCmd *.vba.gz,*.vba.bz2,*.vba.zip call vimball#Decompress(expand("<amatch>"))|call vimball#Vimball(1) +au BufEnter *.vba,*.vba.gz,*.vba.bz2,*.vba.zip setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'| setlocal ff=unix|endif|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)") " ===================================================================== " Restoration And Modelines: {{{1
--- a/runtime/scripts.vim +++ b/runtime/scripts.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types in scripts " " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last change: 2008 Aug 09 +" Last change: 2009 Dec 24 " This file is called by an autocommand for every file that has just been " loaded into a buffer. It checks if the type of file can be recognized by @@ -318,30 +318,31 @@ else set ft=scheme " Git output - elseif s:line1 =~ '^\(commit\|tree\|object\) \x\{40\}$\|^tag \S\+$' + elseif s:line1 =~ '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$' set ft=git " CVS diff else - let lnum = 1 - while getline(lnum) =~ "^? " && lnum < line("$") - let lnum = lnum + 1 + let s:lnum = 1 + while getline(s:lnum) =~ "^? " && s:lnum < line("$") + let s:lnum += 1 endwhile - if getline(lnum) =~ '^Index:\s\+\f\+$' + if getline(s:lnum) =~ '^Index:\s\+\f\+$' set ft=diff " locale input files: Formal Definitions of Cultural Conventions " filename must be like en_US, fr_FR@euro or en_US.UTF-8 elseif expand("%") =~ '\a\a_\a\a\($\|[.@]\)\|i18n$\|POSIX$\|translit_' - let lnum = 1 - while lnum < 100 && lnum < line("$") - if getline(lnum) =~ '^LC_\(IDENTIFICATION\|CTYPE\|COLLATE\|MONETARY\|NUMERIC\|TIME\|MESSAGES\|PAPER\|TELEPHONE\|MEASUREMENT\|NAME\|ADDRESS\)$' + let s:lnum = 1 + while s:lnum < 100 && s:lnum < line("$") + if getline(s:lnum) =~ '^LC_\(IDENTIFICATION\|CTYPE\|COLLATE\|MONETARY\|NUMERIC\|TIME\|MESSAGES\|PAPER\|TELEPHONE\|MEASUREMENT\|NAME\|ADDRESS\)$' setf fdcc break endif - let lnum = lnum + 1 + let s:lnum += 1 endwhile endif + unlet s:lnum endif
--- a/runtime/spell/README.txt +++ b/runtime/spell/README.txt @@ -72,7 +72,7 @@ 2. Tweak the .aff and .dic files to gene change too much, the OpenOffice people are not stupid. However, you may want to remove obvious mistakes. And remove single-letter words that aren't really words, they mess up the suggestions (English has this - problem). You can use the "fixdup" Vim script to find duplicate words. + problem). You can use the "fixdup.vim" Vim script to find duplicate words. 3. Make the diff file. "aap diff" will do this for you. If a diff would be too big you might consider writing a Vim script to do systematic changes.
new file mode 100644 --- /dev/null +++ b/runtime/spell/fixdup.vim @@ -0,0 +1,27 @@ +" Vim script to fix duplicate words in a .dic file vim: set ft=vim: +" +" Usage: Edit the .dic file and source this script. + +let deleted = 0 + +" Start below the word count. +let lnum = 2 +while lnum <= line('$') + let word = getline(lnum) + if word !~ '/' + if search('^' . word . '/', 'w') != 0 + let deleted += 1 + exe lnum . "d" + continue " don't increment lnum, it's already at the next word + endif + endif + let lnum += 1 +endwhile + +if deleted == 0 + echomsg "No duplicate words found" +elseif deleted == 1 + echomsg "Deleted 1 duplicate word" +else + echomsg printf("Deleted %d duplicate words", deleted) +endif
--- a/runtime/syntax/2html.vim +++ b/runtime/syntax/2html.vim @@ -1,13 +1,18 @@ " Vim syntax support file " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2008 Jul 17 +" Last Change: 2009 Jul 14 " (modified by David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>) " (XHTML support by Panagiotis Issaris <takis@lumumba.luc.ac.be>) " (made w3 compliant by Edd Barrett <vext01@gmail.com>) " (added html_font. Edd Barrett <vext01@gmail.com>) +" (dynamic folding by Ben Fritz <fritzophrenic@gmail.com>) " Transform a file into HTML, using the current syntax highlighting. +" this file uses line continuations +let s:cpo_sav = &cpo +set cpo-=C + " Number lines when explicitely requested or when `number' is set if exists("html_number_lines") let s:numblines = html_number_lines @@ -22,6 +27,37 @@ else let s:htmlfont = "monospace" endif +" make copies of the user-defined settings that we may overrule +if exists("html_dynamic_folds") + let s:html_dynamic_folds = 1 +endif +if exists("html_hover_unfold") + let s:html_hover_unfold = 1 +endif +if exists("html_use_css") + let s:html_use_css = 1 +endif + +" hover opening implies dynamic folding +if exists("s:html_hover_unfold") + let s:html_dynamic_folds = 1 +endif + +" dynamic folding with no foldcolumn implies hover opens +if exists("s:html_dynamic_folds") && exists("html_no_foldcolumn") + let s:html_hover_unfold = 1 +endif + +" ignore folding overrides dynamic folding +if exists("html_ignore_folding") && exists("s:html_dynamic_folds") + unlet s:html_dynamic_folds +endif + +" dynamic folding implies css +if exists("s:html_dynamic_folds") + let s:html_use_css = 1 +endif + " When not in gui we can only guess the colors. if has("gui_running") let s:whatterm = "gui" @@ -62,7 +98,7 @@ else endfun endif -if !exists("html_use_css") +if !exists("s:html_use_css") " Return opening HTML tag for given highlight id function! s:HtmlOpening(id) let a = "" @@ -150,6 +186,26 @@ function! s:CSS1(id) return a endfun +if exists("s:html_dynamic_folds") + + " compares two folds as stored in our list of folds + " A fold is "less" than another if it starts at an earlier line number, + " or ends at a later line number, ties broken by fold level + function! s:FoldCompare(f1, f2) + if a:f1.firstline != a:f2.firstline + " put it before if it starts earlier + return a:f1.firstline - a:f2.firstline + elseif a:f1.lastline != a:f2.lastline + " put it before if it ends later + return a:f2.lastline - a:f1.lastline + else + " if folds begin and end on the same lines, put lowest fold level first + return a:f1.level - a:f2.level + endif + endfunction + +endif + " Figure out proper MIME charset from the 'encoding' option. if exists("html_use_encoding") let s:html_encoding = html_use_encoding @@ -223,13 +279,13 @@ else let s:tag_close = '>' endif -" Cache html_no_pre incase we have to turn it on for non-css mode +" Cache html_no_pre in case we have to turn it on for non-css mode if exists("html_no_pre") let s:old_html_no_pre = html_no_pre endif -if !exists("html_use_css") - " Cant put font tags in <pre> +if !exists("s:html_use_css") + " Can't put font tags in <pre> let html_no_pre=1 endif @@ -251,9 +307,86 @@ if s:html_encoding != "" exe "normal! a<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:html_encoding . '"' . s:tag_close . "\n\e" endif -if exists("html_use_css") - exe "normal! a<style type=\"text/css\">\n<!--\n-->\n</style>\n\e" +if exists("s:html_use_css") + if exists("s:html_dynamic_folds") + if exists("s:html_hover_unfold") + " if we are doing hover_unfold, use css 2 with css 1 fallback for IE6 + exe "normal! a". + \ "<style type=\"text/css\">\n<!--\n". + \ ".FoldColumn { text-decoration: none; white-space: pre; }\n\n". + \ "body * { margin: 0; padding: 0; }\n". + \ "\n". + \ ".open-fold > .Folded { display: none; }\n". + \ ".open-fold > .fulltext { display: inline; }\n". + \ ".closed-fold > .fulltext { display: none; }\n". + \ ".closed-fold > .Folded { display: inline; }\n". + \ "\n". + \ ".open-fold > .toggle-open { display: none; }\n". + \ ".open-fold > .toggle-closed { display: inline; }\n". + \ ".closed-fold > .toggle-open { display: inline; }\n". + \ ".closed-fold > .toggle-closed { display: none; }\n" + exe "normal! a\n/* opening a fold while hovering won't be supported by IE6 and other\n". + \ "similar browsers, but it should fail gracefully. */\n". + \ ".closed-fold:hover > .fulltext { display: inline; }\n". + \ ".closed-fold:hover > .toggle-filler { display: none; }\n". + \ ".closed-fold:hover > .Folded { display: none; }\n" + exe "normal! a-->\n</style>\n" + exe "normal! a<!--[if lt IE 7]>". + \ "<style type=\"text/css\">\n". + \ ".open-fold .Folded { display: none; }\n". + \ ".open-fold .fulltext { display: inline; }\n". + \ ".open-fold .toggle-open { display: none; }\n". + \ ".closed-fold .toggle-closed { display: inline; }\n". + \ "\n". + \ ".closed-fold .fulltext { display: none; }\n". + \ ".closed-fold .Folded { display: inline; }\n". + \ ".closed-fold .toggle-open { display: inline; }\n". + \ ".closed-fold .toggle-closed { display: none; }\n". + \ "</style>\n". + \ "<![endif]-->\n" + else + " if we aren't doing hover_unfold, use CSS 1 only + exe "normal! a<style type=\"text/css\">\n<!--\n". + \ ".FoldColumn { text-decoration: none; white-space: pre; }\n\n". + \ ".open-fold .Folded { display: none; }\n". + \ ".open-fold .fulltext { display: inline; }\n". + \ ".open-fold .toggle-open { display: none; }\n". + \ ".closed-fold .toggle-closed { display: inline; }\n". + \ "\n". + \ ".closed-fold .fulltext { display: none; }\n". + \ ".closed-fold .Folded { display: inline; }\n". + \ ".closed-fold .toggle-open { display: inline; }\n". + \ ".closed-fold .toggle-closed { display: none; }\n". + \ "-->\n</style>\n" + endif + else + " if we aren't doing any dynamic folding, no need for any special rules + exe "normal! a<style type=\"text/css\">\n<!--\n-->\n</style>\n\e" + endif endif + +" insert javascript to toggle folds open and closed +if exists("s:html_dynamic_folds") + exe "normal! a\n". + \ "<script type='text/javascript'>\n". + \ "<!--\n". + \ "function toggleFold(objID)\n". + \ "{\n". + \ " var fold;\n". + \ " fold = document.getElementById(objID);\n". + \ " if(fold.className == 'closed-fold')\n". + \ " {\n". + \ " fold.className = 'open-fold';\n". + \ " }\n". + \ " else if (fold.className == 'open-fold')\n". + \ " {\n". + \ " fold.className = 'closed-fold';\n". + \ " }\n". + \ "}\n". + \ "-->\n". + \ "</script>\n\e" +endif + if exists("html_no_pre") exe "normal! a</head>\n<body>\n\e" else @@ -265,7 +398,81 @@ exe s:orgwin . "wincmd w" " List of all id's let s:idlist = "," -" Loop over all lines in the original text. +" First do some preprocessing for dynamic folding. Do this for the entire file +" so we don't accidentally start within a closed fold or something. +let s:allfolds = [] + +if exists("s:html_dynamic_folds") + let s:lnum = 1 + let s:end = line('$') + " save the fold text and set it to the default so we can find fold levels + let s:foldtext_save = &foldtext + set foldtext& + + " we will set the foldcolumn in the html to the greater of the maximum fold + " level and the current foldcolumn setting + let s:foldcolumn = &foldcolumn + + " get all info needed to describe currently closed folds + while s:lnum < s:end + if foldclosed(s:lnum) == s:lnum + " default fold text has '+-' and then a number of dashes equal to fold + " level, so subtract 2 from index of first non-dash after the dashes + " in order to get the fold level of the current fold + let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2 + if s:level+1 > s:foldcolumn + let s:foldcolumn = s:level+1 + endif + " store fold info for later use + let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"} + call add(s:allfolds, s:newfold) + " open the fold so we can find any contained folds + execute s:lnum."foldopen" + else + let s:lnum = s:lnum + 1 + endif + endwhile + + " close all folds to get info for originally open folds + silent! %foldclose! + let s:lnum = 1 + + " the originally open folds will be all folds we encounter that aren't + " already in the list of closed folds + while s:lnum < s:end + if foldclosed(s:lnum) == s:lnum + " default fold text has '+-' and then a number of dashes equal to fold + " level, so subtract 2 from index of first non-dash after the dashes + " in order to get the fold level of the current fold + let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2 + if s:level+1 > s:foldcolumn + let s:foldcolumn = s:level+1 + endif + let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"} + " only add the fold if we don't already have it + if empty(s:allfolds) || index(s:allfolds, s:newfold) == -1 + let s:newfold.type = "open-fold" + call add(s:allfolds, s:newfold) + endif + " open the fold so we can find any contained folds + execute s:lnum."foldopen" + else + let s:lnum = s:lnum + 1 + endif + endwhile + + " sort the folds so that we only ever need to look at the first item in the + " list of folds + call sort(s:allfolds, "s:FoldCompare") + + let &foldtext = s:foldtext_save + unlet s:foldtext_save + + " close all folds again so we can get the fold text as we go + silent! %foldclose! +endif + +" Now loop over all lines in the original text to convert to html. " Use html_start_line and html_end_line if they are set. if exists("html_start_line") let s:lnum = html_start_line @@ -284,6 +491,15 @@ else let s:end = line("$") endif +" stack to keep track of all the folds containing the current line +let s:foldstack = [] + +if s:numblines + let s:margin = strlen(s:end) + 1 +else + let s:margin = 0 +endif + if has('folding') && !exists('html_ignore_folding') let s:foldfillchar = &fillchars[matchend(&fillchars, 'fold:')] if s:foldfillchar == '' @@ -295,6 +511,7 @@ if s:difffillchar == '' let s:difffillchar = '-' endif +let s:foldId = 0 while s:lnum <= s:end @@ -303,12 +520,7 @@ while s:lnum <= s:end if s:filler > 0 let s:n = s:filler while s:n > 0 - if s:numblines - " Indent if line numbering is on - let s:new = repeat(s:LeadingSpace, strlen(s:end) + 1) . repeat(s:difffillchar, 3) - else - let s:new = repeat(s:difffillchar, 3) - endif + let s:new = repeat(s:difffillchar, 3) if s:n > 2 && s:n < s:filler && !exists("html_whole_filler") let s:new = s:new . " " . s:filler . " inserted lines " @@ -317,10 +529,16 @@ while s:lnum <= s:end if !exists("html_no_pre") " HTML line wrapping is off--go ahead and fill to the margin - let s:new = s:new . repeat(s:difffillchar, &columns - strlen(s:new)) + let s:new = s:new . repeat(s:difffillchar, &columns - strlen(s:new) - s:margin) + else + let s:new = s:new . repeat(s:difffillchar, 3) endif let s:new = s:HtmlFormat(s:new, "DiffDelete") + if s:numblines + " Indent if line numbering is on; must be after escaping. + let s:new = repeat(s:LeadingSpace, s:margin) . s:new + endif exe s:newwin . "wincmd w" exe "normal! a" . s:new . s:HtmlEndline . "\n\e" exe s:orgwin . "wincmd w" @@ -333,16 +551,18 @@ while s:lnum <= s:end " Start the line with the line number. if s:numblines - let s:new = repeat(' ', strlen(s:end) - strlen(s:lnum)) . s:lnum . ' ' + let s:numcol = repeat(' ', s:margin - 1 - strlen(s:lnum)) . s:lnum . ' ' else - let s:new = "" + let s:numcol = "" endif - if has('folding') && !exists('html_ignore_folding') && foldclosed(s:lnum) > -1 + let s:new = "" + + if has('folding') && !exists('html_ignore_folding') && foldclosed(s:lnum) > -1 && !exists('s:html_dynamic_folds') " - " This is the beginning of a folded block + " This is the beginning of a folded block (with no dynamic folding) " - let s:new = s:new . foldtextresult(s:lnum) + let s:new = s:numcol . foldtextresult(s:lnum) if !exists("html_no_pre") " HTML line wrapping is off--go ahead and fill to the margin let s:new = s:new . repeat(s:foldfillchar, &columns - strlen(s:new)) @@ -355,14 +575,96 @@ while s:lnum <= s:end else " - " A line that is not folded. + " A line that is not folded, or doing dynamic folding. " let s:line = getline(s:lnum) - let s:len = strlen(s:line) + if exists("s:html_dynamic_folds") + " First insert a closing for any open folds that end on this line + while !empty(s:foldstack) && get(s:foldstack,0).lastline == s:lnum-1 + let s:new = s:new."</span></span>" + call remove(s:foldstack, 0) + endwhile + + " Now insert an opening any new folds that start on this line + let s:firstfold = 1 + while !empty(s:allfolds) && get(s:allfolds,0).firstline == s:lnum + let s:foldId = s:foldId + 1 + let s:new = s:new . "<span id='fold".s:foldId."' class='".s:allfolds[0].type."'>" + + " Unless disabled, add a fold column for the opening line of a fold. + " + " Note that dynamic folds require using css so we just use css to take + " care of the leading spaces rather than using 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 in the case of + " html_no_pre to make it easier + if !exists("html_no_foldcolumn") + if empty(s:foldstack) + " add the empty foldcolumn for unfolded lines + let s:new = s:new . s:HtmlFormat(repeat(' ', s:foldcolumn), "FoldColumn") + else + " add the fold column for folds not on the opening line + if get(s:foldstack, 0).firstline < s:lnum + let s:new = s:new . "<a class='FoldColumn' href='javascript:toggleFold(\"fold".s:foldstack[0].id."\")'>" + let s:new = s:new . repeat('|', s:foldstack[0].level) + let s:new = s:new . repeat(' ', s:foldcolumn - s:foldstack[0].level) . "</a>" + endif + endif + endif + endif + + " Now continue with the unfolded line text if s:numblines - let s:new = s:HtmlFormat(s:new, "lnr") + let s:new = s:new . s:HtmlFormat(s:numcol, "lnr") endif " Get the diff attribute, if any. @@ -380,7 +682,7 @@ while s:lnum <= s:end while s:col <= s:len && s:id == diff_hlID(s:lnum, s:col) | let s:col = s:col + 1 | endwhile if s:len < &columns && !exists("html_no_pre") " Add spaces at the end to mark the changed line. - let s:line = s:line . repeat(' ', &columns - s:len) + let s:line = s:line . repeat(' ', &columns - virtcol([s:lnum, s:len]) - s:margin) let s:len = &columns endif else @@ -393,11 +695,27 @@ while s:lnum <= s:end " Expand tabs let s:expandedtab = strpart(s:line, s:startcol - 1, s:col - s:startcol) - let idx = stridx(s:expandedtab, "\t") - while idx >= 0 - let i = &ts - ((idx + s:startcol - 1) % &ts) - let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', i), '') - let idx = stridx(s:expandedtab, "\t") + let s:offset = 0 + let s:idx = stridx(s:expandedtab, "\t") + while s:idx >= 0 + if has("multi_byte_encoding") + if s:startcol + s:idx == 1 + let s:i = &ts + else + if s:idx == 0 + let s:prevc = matchstr(s:line, '.\%' . (s:startcol + s:idx + s:offset) . 'c') + else + let s:prevc = matchstr(s:expandedtab, '.\%' . (s:idx + 1) . 'c') + endif + let s:vcol = virtcol([s:lnum, s:startcol + s:idx + s:offset - len(s:prevc)]) + let s:i = &ts - (s:vcol % &ts) + endif + let s:offset -= s:i - 1 + else + let s:i = &ts - ((s:idx + s:startcol - 1) % &ts) + endif + let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', s:i), '') + let s:idx = stridx(s:expandedtab, "\t") endwhile " Output the text with the same synID, with class set to {s:id_name} @@ -415,8 +733,22 @@ endwhile " Finish with the last line exe s:newwin . "wincmd w" +if exists("s:html_dynamic_folds") + " finish off any open folds + while !empty(s:foldstack) + exe "normal! a</span></span>" + call remove(s:foldstack, 0) + endwhile + + " add fold column to the style list if not already there + let s:id = hlID('FoldColumn') + if stridx(s:idlist, "," . s:id . ",") == -1 + let s:idlist = s:idlist . s:id . "," + endif +endif + " Close off the font tag that encapsulates the whole <body> -if !exists("html_use_css") +if !exists("s:html_use_css") exe "normal! a</font>\e" endif @@ -428,7 +760,7 @@ endif " Now, when we finally know which, we define the colors and styles -if exists("html_use_css") +if exists("s:html_use_css") 1;/<style type="text/+1 endif @@ -445,7 +777,7 @@ endif " Normal/global attributes " For Netscape 4, set <body> attributes too, though, strictly speaking, it's " incorrect. -if exists("html_use_css") +if exists("s:html_use_css") if exists("html_no_pre") execute "normal! A\nbody { color: " . s:fgc . "; background-color: " . s:bgc . "; font-family: ". s:htmlfont ."; }\e" else @@ -455,12 +787,12 @@ if exists("html_use_css") execute "normal! ^cwbody\e" endif else - execute '%s:<body>:<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"><font face="'. s:htmlfont .'">' + execute '%s:<body>:<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"><font face="'. s:htmlfont .'">' endif " Line numbering attributes if s:numblines - if exists("html_use_css") + if exists("s:html_use_css") execute "normal! A\n.lnr { " . s:CSS1(hlID("LineNr")) . "}\e" else execute '%s+^<span class="lnr">\([^<]*\)</span>+' . s:HtmlOpening(hlID("LineNr")) . '\1' . s:HtmlClosing(hlID("LineNr")) . '+g' @@ -479,14 +811,14 @@ while s:idlist != "" " If the class has some attributes, export the style, otherwise DELETE all " its occurences to make the HTML shorter if s:attr != "" - if exists("html_use_css") + if exists("s:html_use_css") execute "normal! A\n." . s:id_name . " { " . s:attr . "}" else execute '%s+<span class="' . s:id_name . '">\([^<]*\)</span>+' . s:HtmlOpening(s:id) . '\1' . s:HtmlClosing(s:id) . '+g' endif else execute '%s+<span class="' . s:id_name . '">\([^<]*\)</span>+\1+ge' - if exists("html_use_css") + if exists("s:html_use_css") 1;/<style type="text/+1 endif endif @@ -531,16 +863,28 @@ endif " Save a little bit of memory (worth doing?) unlet s:htmlfont unlet s:old_et s:old_paste s:old_icon s:old_report s:old_title s:old_search -unlet s:whatterm s:idlist s:lnum s:end s:fgc s:bgc s:old_magic +unlet s:whatterm s:idlist s:lnum s:end s:margin s:fgc s:bgc s:old_magic unlet! s:col s:id s:attr s:len s:line s:new s:expandedtab s:numblines -unlet s:orgwin s:newwin s:orgbufnr +unlet! s:orgwin s:newwin s:orgbufnr s:idx s:i s:offset if !v:profiling delfunc s:HtmlColor delfunc s:HtmlFormat delfunc s:CSS1 - if !exists("html_use_css") + if !exists("s:html_use_css") delfunc s:HtmlOpening delfunc s:HtmlClosing endif endif -silent! unlet s:diffattr s:difffillchar s:foldfillchar s:HtmlSpace s:LeadingSpace s:HtmlEndline +silent! unlet s:diffattr s:difffillchar s:foldfillchar s:HtmlSpace s:LeadingSpace s:HtmlEndline s:firstfold s:foldcolumn +unlet s:foldstack s:allfolds s:foldId s:numcol + +if exists("s:html_dynamic_folds") + delfunc s:FoldCompare +endif + +silent! unlet s:html_dynamic_folds s:html_hover_unfold s:html_use_css + +let &cpo = s:cpo_sav +unlet s:cpo_sav + +" vim: noet sw=2 sts=2
--- a/runtime/syntax/ada.vim +++ b/runtime/syntax/ada.vim @@ -1,16 +1,16 @@ "---------------------------------------------------------------------------- " Description: Vim Ada syntax file " Language: Ada (2005) -" $Id$ +" $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $ " Copyright: Copyright (C) 2006 Martin Krischik " Maintainer: Martin Krischik " David A. Wheeler <dwheeler@dwheeler.com> " Simon Bradley <simon.bradley@pitechnology.com> " Contributors: Preben Randhol. -" $Author$ -" $Date$ +" $Author: krischik $ +" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ " Version: 4.6 -" $Revision$ +" $Revision: 887 $ " $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/syntax/ada.vim $ " http://www.dwheeler.com/vim " History: 24.05.2006 MK Unified Headers
--- a/runtime/syntax/ant.vim +++ b/runtime/syntax/ant.vim @@ -3,7 +3,7 @@ " Maintainer: Johannes Zellner <johannes@zellner.org> " Last Change: Tue Apr 27 13:05:59 CEST 2004 " Filenames: build.xml -" $Id$ +" $Id: ant.vim,v 1.1 2004/06/13 18:13:18 vimboss Exp $ " Quit when a syntax file was already loaded if exists("b:current_syntax")
--- a/runtime/syntax/aspvbs.vim +++ b/runtime/syntax/aspvbs.vim @@ -4,7 +4,7 @@ " URL: http://tritarget.com/pub/vim/syntax/aspvbs.vim (broken) " Last Change: 2006 Jun 19 " by Dan Casey -" Version: $Revision$ +" Version: $Revision: 1.3 $ " Thanks to Jay-Jay <vim@jay-jay.net> for a syntax sync hack, hungarian " notation, and extra highlighting. " Thanks to patrick dehne <patrick@steidle.net> for the folding code.
--- a/runtime/syntax/bindzone.vim +++ b/runtime/syntax/bindzone.vim @@ -7,7 +7,7 @@ " Based on an earlier version by Вячеслав Горбанев (Slava Gorbanev), with " heavy modifications. " -" $Id$ +" $Id: bindzone.vim,v 1.2 2006/04/20 22:06:21 vimboss Exp $ " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/bst.vim +++ b/runtime/syntax/bst.vim @@ -2,7 +2,7 @@ " Language: BibTeX Bibliography Style " Maintainer: Tim Pope <vimNOSPAM@tpope.info> " Filenames: *.bst -" $Id$ +" $Id: bst.vim,v 1.2 2007/05/05 18:24:42 vimboss Exp $ " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/bzr.vim +++ b/runtime/syntax/bzr.vim @@ -2,9 +2,14 @@ " Language: Bazaar (bzr) commit file " Maintainer: Dmitry Vasiliev <dima at hlabs dot spb dot ru> " URL: http://www.hlabs.spb.ru/vim/bzr.vim -" Revision: $Id$ +" Last Change: 2009-01-27 " Filenames: bzr_log.* -" Version: 1.1 +" Version: 1.2.1 +" +" Thanks: +" +" Gioele Barabucci +" for idea of diff highlighting " For version 5.x: Clear all syntax items. " For version 6.x: Quit when a syntax file was already loaded. @@ -14,13 +19,21 @@ elseif exists("b:current_syntax") finish endif -syn region bzrRegion start="^-\{14} This line and the following will be ignored -\{14}$" end="\%$" contains=ALL contains=@NoSpell +if exists("bzr_highlight_diff") + syn include @Diff syntax/diff.vim +endif + syn match bzrRemoved "^removed:$" contained syn match bzrAdded "^added:$" contained syn match bzrRenamed "^renamed:$" contained syn match bzrModified "^modified:$" contained syn match bzrUnchanged "^unchanged:$" contained syn match bzrUnknown "^unknown:$" contained +syn cluster Statuses contains=bzrRemoved,bzrAdded,bzrRenamed,bzrModified,bzrUnchanged,bzrUnknown +if exists("bzr_highlight_diff") + syn cluster Statuses add=@Diff +endif +syn region bzrRegion start="^-\{14} This line and the following will be ignored -\{14}$" end="\%$" contains=@NoSpell,@Statuses " Synchronization. syn sync clear @@ -37,7 +50,6 @@ if version >= 508 || !exists("did_bzr_sy command -nargs=+ HiLink hi def link <args> endif - HiLink bzrRegion Comment HiLink bzrRemoved Constant HiLink bzrAdded Identifier HiLink bzrModified Special
--- a/runtime/syntax/c.vim +++ b/runtime/syntax/c.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: C " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2008 Mar 19 +" Last Change: 2009 Nov 17 " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") @@ -16,8 +16,13 @@ syn keyword cRepeat while for do syn keyword cTodo contained TODO FIXME XXX +" It's easy to accidentally add a space after a backslash that was intended +" for line continuation. Some compilers allow it, which makes it +" unpredicatable and should be avoided. +syn match cBadContinuation contained "\\\s\+$" + " cCommentGroup allows adding matches for special things in comments -syn cluster cCommentGroup contains=cTodo +syn cluster cCommentGroup contains=cTodo,cBadContinuation " String and Character constants " Highlight special characters (those which have a backslash) differently @@ -265,7 +270,7 @@ if !exists("c_no_c99") " ISO C99 endif " Accept %: for # (C99) -syn region cPreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=cComment,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError +syn region cPreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError syn match cPreCondit display "^\s*\(%:\|#\)\s*\(else\|endif\)\>" if !exists("c_no_if0") if !exists("c_no_if0_fold") @@ -281,7 +286,7 @@ syn match cIncluded display contained "< syn match cInclude display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded "syn match cLineSkip "\\$" syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti -syn region cDefine start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 keepend contains=ALLBUT,@cPreProcGroup,@Spell +syn region cDefine start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell syn region cPreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell " Highlight User Labels @@ -359,6 +364,7 @@ hi def link cString String hi def link cComment Comment hi def link cSpecial SpecialChar hi def link cTodo Todo +hi def link cBadContinuation Error hi def link cCppSkip cCppOut hi def link cCppOut2 cCppOut hi def link cCppOut Comment
--- a/runtime/syntax/catalog.vim +++ b/runtime/syntax/catalog.vim @@ -3,7 +3,7 @@ " Maintainer: Johannes Zellner <johannes@zellner.org> " Last Change: Fr, 04 Nov 2005 12:46:45 CET " Filenames: /etc/sgml.catalog -" $Id$ +" $Id: catalog.vim,v 1.2 2005/11/23 21:11:10 vimboss Exp $ " Quit when a syntax file was already loaded if exists("b:current_syntax")
--- a/runtime/syntax/cl.vim +++ b/runtime/syntax/cl.vim @@ -3,7 +3,7 @@ " Filename extensions: *.ent, *.eni " Maintainer: Philip Uren <philuSPAX@ieee.org> - Remove SPAX spam block " Last update: Wed Apr 12 08:47:18 EST 2006 -" $Id$ +" $Id: cl.vim,v 1.3 2006/04/12 21:43:28 vimboss Exp $ " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/cmake.vim +++ b/runtime/syntax/cmake.vim @@ -1,10 +1,10 @@ " ============================================================================= " " Program: CMake - Cross-Platform Makefile Generator -" Module: $RCSfile$ +" Module: $RCSfile: cmake-syntax.vim,v $ " Language: VIM -" Date: $Date$ -" Version: $Revision$ +" Date: $Date: 2006/09/23 21:09:08 $ +" Version: $Revision: 1.6 $ " " ============================================================================= @@ -12,8 +12,8 @@ " Language: CMake " Author: Andy Cedilnik <andy.cedilnik@kitware.com> " Maintainer: Andy Cedilnik <andy.cedilnik@kitware.com> -" Last Change: $Date$ -" Version: $Revision$ +" Last Change: $Date: 2006/09/23 21:09:08 $ +" Version: $Revision: 1.6 $ " " Licence: The CMake license applies to this file. See " http://www.cmake.org/HTML/Copyright.html
--- a/runtime/syntax/cobol.vim +++ b/runtime/syntax/cobol.vim @@ -4,7 +4,7 @@ " (formerly Davyd Ondrejko <vondraco@columbus.rr.com>) " (formerly Sitaram Chamarty <sitaram@diac.com> and " James Mitchell <james_mitchell@acm.org>) -" $Id$ +" $Id: cobol.vim,v 1.2 2007/05/05 18:23:43 vimboss Exp $ " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/config.vim +++ b/runtime/syntax/config.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: configure.in script: M4 with sh " Maintainer: Christian Hammesr <ch@lathspell.westend.com> -" Last Change: 2001 May 09 +" Last Change: 2008 Sep 03 " Well, I actually even do not know much about m4. This explains why there " is probably very much missing here, yet ! @@ -26,7 +26,7 @@ syn match confignumber "[-+]\=\<\d\ syn keyword configkeyword if then else fi test for in do done syn keyword configspecial cat rm eval syn region configstring start=+"+ skip=+\\"+ end=+"+ -syn region configstring start=+`+ skip=+\\'+ end=+'+ +syn region configstring start=+'+ skip=+\\'+ end=+'+ syn region configstring start=+`+ skip=+\\'+ end=+`+ " Define the default highlighting.
--- a/runtime/syntax/cs.vim +++ b/runtime/syntax/cs.vim @@ -2,9 +2,9 @@ " Language: C# " Maintainer: Anduin Withers <awithers@anduin.com> " Former Maintainer: Johannes Zellner <johannes@zellner.org> -" Last Change: Sun Apr 30 19:26:18 PDT 2006 +" Last Change: Fri Aug 14 13:56:37 PDT 2009 " Filenames: *.cs -" $Id$ +" $Id: cs.vim,v 1.4 2006/05/03 21:20:02 vimboss Exp $ " " REFERENCES: " [1] ECMA TC39: C# Language Specification (WD13Oct01.doc) @@ -78,8 +78,8 @@ syn keyword csXmlTag contained list lis syn cluster xmlTagHook add=csXmlTag syn match csXmlCommentLeader +\/\/\/+ contained -syn match csXmlComment +\/\/\/.*$+ contains=csXmlCommentLeader,@csXml -syntax include @csXml <sfile>:p:h/xml.vim +syn match csXmlComment +\/\/\/.*$+ contains=csXmlCommentLeader,@csXml,@Spell +syntax include @csXml syntax/xml.vim hi def link xmlRegion Comment @@ -100,7 +100,7 @@ syn match csSpecialChar contained +\\[ " unicode characters syn match csUnicodeNumber +\\\(u\x\{4}\|U\x\{8}\)+ contained contains=csUnicodeSpecifier syn match csUnicodeSpecifier +\\[uU]+ contained -syn region csVerbatimString start=+@"+ end=+"+ end=+$+ skip=+""+ contains=csVerbatimSpec,@Spell +syn region csVerbatimString start=+@"+ end=+"+ skip=+""+ contains=csVerbatimSpec,@Spell syn match csVerbatimSpec +@"+he=s+1 contained syn region csString start=+"+ end=+"+ end=+$+ contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError
--- a/runtime/syntax/debchangelog.vim +++ b/runtime/syntax/debchangelog.vim @@ -3,7 +3,7 @@ " Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org> " Former Maintainers: Gerfried Fuchs <alfie@ist.org> " Wichert Akkerman <wakkerma@debian.org> -" Last Change: 2008-01-16 +" Last Change: 2009 Jun 05 " URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/syntax/debchangelog.vim;hb=debian " Standard syntax initialization @@ -17,9 +17,9 @@ endif syn case ignore " Define some common expressions we can use later on -syn match debchangelogName contained "^[[:alpha:]][[:alnum:].+-]\+ " +syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ " syn match debchangelogUrgency contained "; urgency=\(low\|medium\|high\|critical\|emergency\)\( \S.*\)\=" -syn match debchangelogTarget contained "\v %(%(old)=stable|frozen|unstable|%(testing-|%(old)=stable-)=proposed-updates|experimental|%(sarge|etch|lenny)-%(backports|volatile)|%(testing|%(old)=stable)-security|%(dapper|feisty|gutsy|hardy|intrepid)%(-%(security|proposed|updates|backports|commercial|partner))=)+" +syn match debchangelogTarget contained "\v %(frozen|unstable|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(etch|lenny)-%(backports|volatile)|%(dapper|hardy|intrepid|jaunty|karmic)%(-%(security|proposed|updates|backports|commercial|partner))=)+" syn match debchangelogVersion contained "(.\{-})" syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*" syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
--- a/runtime/syntax/debcontrol.vim +++ b/runtime/syntax/debcontrol.vim @@ -3,7 +3,7 @@ " Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org> " Former Maintainers: Gerfried Fuchs <alfie@ist.org> " Wichert Akkerman <wakkerma@debian.org> -" Last Change: 2008-02-23 +" Last Change: 2009 July 14 " URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/ftplugin/debcontrol.vim;hb=debian " Comments are very welcome - but please make sure that you are commenting on @@ -28,10 +28,10 @@ syn match debControlComma ", *" syn match debControlSpace " " " Define some common expressions we can use later on -syn match debcontrolArchitecture contained "\(all\|any\|alpha\|amd64\|arm\(e[bl]\)\=\|hppa\|i386\|ia64\|m32r\|m68k\|mipsel\|mips\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc64\|sparc\|hurd-i386\|kfreebsd-\(i386\|gnu\)\|knetbsd-i386\|netbsd-\(alpha\|i386\)\)" +syn match debcontrolArchitecture contained "\(all\|any\|alpha\|amd64\|arm\(e[bl]\)\=\|avr32\|hppa\|i386\|ia64\|m32r\|m68k\|mipsel\|mips\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc64\|sparc\|hurd-i386\|kfreebsd-\(i386\|amd64\|gnu\)\|knetbsd-i386\|netbsd-\(alpha\|i386\)\)" syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+" syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)" -syn match debcontrolSection contained "\(\(contrib\|non-free\|non-US/main\|non-US/contrib\|non-US/non-free\|restricted\|universe\|multiverse\)/\)\=\(admin\|base\|comm\|devel\|doc\|editors\|electronics\|embedded\|games\|gnome\|graphics\|hamradio\|interpreters\|kde\|libs\|libdevel\|mail\|math\|misc\|net\|news\|oldlibs\|otherosfs\|perl\|python\|science\|shells\|sound\|text\|tex\|utils\|web\|x11\|debian-installer\)" +syn match debcontrolSection contained "\v((contrib|non-free|non-US/main|non-US/contrib|non-US/non-free|restricted|universe|multiverse)/)?(admin|cli-mono|comm|database|debian-installer|debug|devel|doc|editors|electronics|embedded|fonts|games|gnome|gnustep|gnu-r|graphics|hamradio|haskell|httpd|interpreters|java|kde|kernel|libs|libdevel|lisp|localization|mail|math|misc|net|news|ocaml|oldlibs|otherosfs|perl|php|python|ruby|science|shells|sound|text|tex|utils|vcs|video|web|x11|xfce|zope)" syn match debcontrolPackageType contained "u\?deb" syn match debcontrolVariable contained "\${.\{-}}" syn match debcontrolDmUpload contained "\cyes" @@ -41,7 +41,7 @@ syn match debcontrolDmUpload contained " syn match debcontrolHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" syn match debcontrolVcsSvn contained "\vsvn%(\+ssh)?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" syn match debcontrolVcsCvs contained "\v%(\-d *)?:pserver:[^@]+\@[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?:/[^[:space:]]*%( [^[:space:]]+)?$" -syn match debcontrolVcsGit contained "\vgit://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" +syn match debcontrolVcsGit contained "\v%(git|http)://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" " An email address syn match debcontrolEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+" @@ -53,7 +53,7 @@ syn match debcontrolComment "^#.*$" syn case ignore " List of all legal keys -syn match debcontrolKey contained "^\(Source\|Package\|Section\|Priority\|Maintainer\|Uploaders\|Build-Depends\|Build-Conflicts\|Build-Depends-Indep\|Build-Conflicts-Indep\|Standards-Version\|Pre-Depends\|Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Essential\|Architecture\|Description\|Bugs\|Origin\|Enhances\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|XC-Package-Type\|\%(XS-\)\=DM-Upload-Allowed\): *" +syn match debcontrolKey contained "^\%(Source\|Package\|Section\|Priority\|\%(XSBC-Original-\)\=Maintainer\|Uploaders\|Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|Standards-Version\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Essential\|Architecture\|Description\|Bugs\|Origin\|X[SB]-Python-Version\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|XC-Package-Type\|\%(XS-\)\=DM-Upload-Allowed\): *" " Fields for which we do strict syntax checking syn region debcontrolStrictField start="^Architecture" end="$" contains=debcontrolKey,debcontrolArchitecture,debcontrolSpace oneline @@ -62,15 +62,15 @@ syn region debcontrolStrictField start=" syn region debcontrolStrictField start="^Section" end="$" contains=debcontrolKey,debcontrolSection oneline syn region debcontrolStrictField start="^XC-Package-Type" end="$" contains=debcontrolKey,debcontrolPackageType oneline syn region debcontrolStrictField start="^Homepage" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend -syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend -syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend -syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend -syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend -syn region debcontrolStrictField start="^\%(XS-\)\?DM-Upload-Allowed" end="$" contains=debcontrolKey,debcontrolDmUpload oneline +syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend +syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend +syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend +syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend +syn region debcontrolStrictField start="^\%(XS-\)\=DM-Upload-Allowed" end="$" contains=debcontrolKey,debcontrolDmUpload oneline " Catch-all for the other legal fields -syn region debcontrolField start="^\(Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X\(S\|B\)-Python-Version\|XSBC-Original-Maintainer\|\(XS-\)\?Vcs-Mtn\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline -syn region debcontrolMultiField start="^\(Build-\(Conflicts\|Depends\)\(-Indep\)\=\|\(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Uploaders\|Description\):" skip="^ " end="^$"me=s-1 end="^[^ ]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable +syn region debcontrolField start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline +syn region debcontrolMultiField start="^\%(Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Uploaders\|Description\):" skip="^ " end="^$"me=s-1 end="^[^ #]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment " Associate our matches and regions with pretty colours if version >= 508 || !exists("did_debcontrol_syn_inits")
--- a/runtime/syntax/debsources.vim +++ b/runtime/syntax/debsources.vim @@ -2,7 +2,7 @@ " Language: Debian sources.list " Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org> " Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl> -" Last Change: 2008-04-25 +" Last Change: 2009 Apr 17 " URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/syntax/debsources.vim;hb=debian " Standard syntax initialization @@ -19,11 +19,11 @@ syn case match syn match debsourcesKeyword /\(deb-src\|deb\|main\|contrib\|non-free\|restricted\|universe\|multiverse\)/ " Match comments -syn match debsourcesComment /#.*/ +syn match debsourcesComment /#.*/ contains=@Spell " Match uri's syn match debsourcesUri +\(http://\|ftp://\|[rs]sh://\|debtorrent://\|\(cdrom\|copy\|file\):\)[^' <>"]\++ -syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\(sarge\|etch\|lenny\|\(old\)\=stable\|testing\|unstable\|sid\|experimental\|dapper\|feisty\|gutsy\|hardy\|intrepid\)\([-[:alnum:]_./]*\)+ +syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\(etch\|lenny\|squeeze\|\(old\)\=stable\|testing\|unstable\|sid\|experimental\|dapper\|hardy\|intrepid\|jaunty\|karmic\)\([-[:alnum:]_./]*\)+ " Associate our matches and regions with pretty colours hi def link debsourcesLine Error
--- a/runtime/syntax/def.vim +++ b/runtime/syntax/def.vim @@ -2,8 +2,8 @@ " Language: Microsoft Module-Definition (.def) File " Orig Author: Rob Brady <robb@datatone.com> " Maintainer: Wu Yongwei <wuyongwei@gmail.com> -" Last Change: $Date$ -" $Revision$ +" Last Change: $Date: 2007/10/02 13:51:24 $ +" $Revision: 1.2 $ " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/django.vim +++ b/runtime/syntax/django.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Django template " Maintainer: Dave Hodder <dmh@dmh.org.uk> -" Last Change: 2007 Apr 21 +" Last Change: 2008 Dec 18 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded @@ -18,8 +18,9 @@ syn match djangoError "%}\|}}\|#}" " Django template built-in tags and parameters " 'comment' doesn't appear here because it gets special treatment +syn keyword djangoStatement contained autoescape on off endautoescape syn keyword djangoStatement contained and as block endblock by cycle debug else -syn keyword djangoStatement contained extends filter endfilter firstof for +syn keyword djangoStatement contained extends filter endfilter firstof for empty syn keyword djangoStatement contained endfor if endif ifchanged endifchanged syn keyword djangoStatement contained ifequal endifequal ifnotequal syn keyword djangoStatement contained endifnotequal in include load not now or @@ -35,15 +36,15 @@ syn keyword djangoStatement contained ge " Django templete built-in filters syn keyword djangoFilter contained add addslashes capfirst center cut date syn keyword djangoFilter contained default default_if_none dictsort -syn keyword djangoFilter contained dictsortreversed divisibleby escape +syn keyword djangoFilter contained dictsortreversed divisibleby escape escapejs syn keyword djangoFilter contained filesizeformat first fix_ampersands -syn keyword djangoFilter contained floatformat get_digit join length length_is +syn keyword djangoFilter contained floatformat force_escape get_digit iriencode join last length length_is syn keyword djangoFilter contained linebreaks linebreaksbr linenumbers ljust syn keyword djangoFilter contained lower make_list phone2numeric pluralize -syn keyword djangoFilter contained pprint random removetags rjust slice slugify +syn keyword djangoFilter contained pprint random removetags rjust safe slice slugify syn keyword djangoFilter contained stringformat striptags syn keyword djangoFilter contained time timesince timeuntil title -syn keyword djangoFilter contained truncatewords unordered_list upper urlencode +syn keyword djangoFilter contained truncatewords truncatewords_html unordered_list upper urlencode syn keyword djangoFilter contained urlize urlizetrunc wordcount wordwrap yesno " Keywords to highlight within comments
--- a/runtime/syntax/docbk.vim +++ b/runtime/syntax/docbk.vim @@ -2,8 +2,8 @@ " Language: DocBook " Maintainer: Devin Weaver <vim@tritarget.com> " URL: http://tritarget.com/pub/vim/syntax/docbk.vim -" Last Change: $Date$ -" Version: $Revision$ +" Last Change: $Date: 2005/06/23 22:31:01 $ +" Version: $Revision: 1.2 $ " Thanks to Johannes Zellner <johannes@zellner.org> for the default to XML " suggestion.
--- a/runtime/syntax/dosbatch.vim +++ b/runtime/syntax/dosbatch.vim @@ -2,7 +2,7 @@ " Language: MSDOS batch file (with NT command extensions) " Maintainer: Mike Williams <mrw@eandem.co.uk> " Filenames: *.bat -" Last Change: 10th May 2008 +" Last Change: 6th September 2009 " Web Page: http://www.eandem.co.uk/mrw/vim " " Options Flags: @@ -36,7 +36,7 @@ syn keyword dosbatchRepeat for syn case match syn keyword dosbatchOperator EQU NEQ LSS LEQ GTR GEQ syn case ignore -syn match dosbatchOperator "\s[-+\*/%]\s" +syn match dosbatchOperator "\s[-+\*/%!~]\s" syn match dosbatchOperator "=" syn match dosbatchOperator "[-+\*/%]=" syn match dosbatchOperator "\s\(&\||\|^\|<<\|>>\)=\=\s" @@ -51,10 +51,10 @@ syn match dosbatchEchoOperator "\<echo\ syn match dosbatchCmd "(\s*'[^']*'"lc=1 contains=dosbatchString,dosbatchVariable,dosBatchArgument,@dosbatchNumber,dosbatchImplicit,dosbatchStatement,dosbatchConditional,dosbatchRepeat,dosbatchOperator " Numbers - surround with ws to not include in dir and filenames -syn match dosbatchInteger "[[:space:]=(/:]\d\+"lc=1 -syn match dosbatchHex "[[:space:]=(/:]0x\x\+"lc=1 -syn match dosbatchBinary "[[:space:]=(/:]0b[01]\+"lc=1 -syn match dosbatchOctal "[[:space:]=(/:]0\o\+"lc=1 +syn match dosbatchInteger "[[:space:]=(/:,!~-]\d\+"lc=1 +syn match dosbatchHex "[[:space:]=(/:,!~-]0x\x\+"lc=1 +syn match dosbatchBinary "[[:space:]=(/:,!~-]0b[01]\+"lc=1 +syn match dosbatchOctal "[[:space:]=(/:,!~-]0\o\+"lc=1 syn cluster dosbatchNumber contains=dosbatchInteger,dosbatchHex,dosbatchBinary,dosbatchOctal " Command line switches @@ -69,15 +69,15 @@ syn match dosbatchSpecialChar "%%" syn match dosbatchIdentifier contained "\s\h\w*\>" syn match dosbatchVariable "%\h\w*%" syn match dosbatchVariable "%\h\w*:\*\=[^=]*=[^%]*%" -syn match dosbatchVariable "%\h\w*:\~\d\+,\d\+%" contains=dosbatchInteger +syn match dosbatchVariable "%\h\w*:\~[-]\=\d\+\(,[-]\=\d\+\)\=%" contains=dosbatchInteger syn match dosbatchVariable "!\h\w*!" -syn match dosbatchVariable "!\h\w*:\*\=[^=]*=[^%]*!" -syn match dosbatchVariable "!\h\w*:\~\d\+,\d\+!" contains=dosbatchInteger +syn match dosbatchVariable "!\h\w*:\*\=[^=]*=[^!]*!" +syn match dosbatchVariable "!\h\w*:\~[-]\=\d\+\(,[-]\=\d\+\)\=!" contains=dosbatchInteger syn match dosbatchSet "\s\h\w*[+-]\==\{-1}" contains=dosbatchIdentifier,dosbatchOperator " Args to bat files and for loops, etc syn match dosbatchArgument "%\(\d\|\*\)" -syn match dosbatchArgument "%%[a-z]\>" +syn match dosbatchArgument "%[a-z]\>" if dosbatch_cmdextversion == 1 syn match dosbatchArgument "%\~[fdpnxs]\+\(\($PATH:\)\=[a-z]\|\d\)\>" else @@ -92,7 +92,9 @@ syn match dosbatchLabel ":\h\w*\>" " Comments - usual rem but also two colons as first non-space is an idiom syn match dosbatchComment "^rem\($\|\s.*$\)"lc=3 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell +syn match dosbatchComment "^@rem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell syn match dosbatchComment "\srem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell +syn match dosbatchComment "\s@rem\($\|\s.*$\)"lc=5 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell syn match dosbatchComment "\s*:\s*:.*$" contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell " Comments in ()'s - still to handle spaces before rem
--- a/runtime/syntax/doxygen.vim +++ b/runtime/syntax/doxygen.vim @@ -2,8 +2,8 @@ " Language: doxygen on top of c, cpp, idl, java, php " Maintainer: Michael Geddes <vimmer@frog.wheelycreek.net> " Author: Michael Geddes -" Last Change: July 2008 -" Version: 1.22 +" Last Change: Jan 2009 +" Version: 1.23 " " Copyright 2004-2008 Michael Geddes " Please feel free to use, modify & distribute all or part of this script, @@ -239,7 +239,7 @@ endif " #Link hilighting. syn match doxygenHashLink /\([a-zA-Z_][0-9a-zA-Z_]*\)\?#\(\.[0-9a-zA-Z_]\@=\|[a-zA-Z0-9_]\+\|::\|()\)\+/ contained contains=doxygenHashSpecial syn match doxygenHashSpecial /#/ contained - syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@]\+/ contained + syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@~]\+/ contained " Handle \page. This does not use doxygenBrief. syn match doxygenPage "[\\@]page\>"me=s+1 contained skipwhite nextgroup=doxygenPagePage
--- a/runtime/syntax/dsl.vim +++ b/runtime/syntax/dsl.vim @@ -3,7 +3,7 @@ " Maintainer: Johannes Zellner <johannes@zellner.org> " Last Change: Tue, 27 Apr 2004 14:54:59 CEST " Filenames: *.dsl -" $Id$ +" $Id: dsl.vim,v 1.1 2004/06/13 19:13:31 vimboss Exp $ if exists("b:current_syntax") | finish | endif
--- a/runtime/syntax/elf.vim +++ b/runtime/syntax/elf.vim @@ -4,7 +4,7 @@ " Last Change: Son 22 Jun 2003 20:43:14 CEST " Filenames: *.ab,*.am " URL: http://www.cvjb.de/comp/vim/elf.vim -" $Id$ +" $Id: elf.vim,v 1.1 2004/06/13 19:52:27 vimboss Exp $ " " ELF: Extensible Language Facility " This is the Applix Inc., Macro and Builder programming language.
--- a/runtime/syntax/erlang.vim +++ b/runtime/syntax/erlang.vim @@ -50,7 +50,7 @@ if ! exists ("erlang_characters") " Operators syn match erlangOperator "+\|-\|\*\|\/" syn keyword erlangOperator div rem or xor bor bxor bsl bsr - syn keyword erlangOperator and band not bnot + syn keyword erlangOperator and band not bnot andalso orelse syn match erlangOperator "==\|/=\|=:=\|=/=\|<\|=<\|>\|>=" syn match erlangOperator "++\|--\|=\|!\|<-" @@ -123,7 +123,7 @@ endif if ! exists ("erlang_keywords") " Constants and Directives - syn match erlangDirective "-behaviour\|-behaviour" + syn match erlangDirective "-behaviour\|-behavior" syn match erlangDirective "-compile\|-define\|-else\|-endif\|-export\|-file" syn match erlangDirective "-ifdef\|-ifndef\|-import\|-include_lib\|-include" syn match erlangDirective "-module\|-record\|-undef"
--- a/runtime/syntax/eruby.vim +++ b/runtime/syntax/eruby.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: eRuby " Maintainer: Tim Pope <vimNOSPAM@tpope.info> -" Info: $Id$ +" Info: $Id: eruby.vim,v 1.23 2008/06/29 04:18:43 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
--- a/runtime/syntax/focexec.vim +++ b/runtime/syntax/focexec.vim @@ -1,9 +1,9 @@ " Vim syntax file " Language: Focus Executable " Maintainer: Rob Brady <robb@datatone.com> -" Last Change: $Date$ +" Last Change: $Date: 2004/06/13 15:38:04 $ " URL: http://www.datatone.com/~robb/vim/syntax/focexec.vim -" $Revision$ +" $Revision: 1.1 $ " this is a very simple syntax file - I will be improving it " one thing is how to do computes
--- a/runtime/syntax/form.vim +++ b/runtime/syntax/form.vim @@ -1,7 +1,10 @@ " Vim syntax file " Language: FORM +" Version: 2.0 " Maintainer: Michael M. Tung <michael.tung@uni-mainz.de> -" Last Change: 2001 May 10 +" Last Change: <Thu Oct 23 13:11:21 CEST 2008> +" Past Change: <October 2008 Thomas Reiter thomasr@nikhef.nl> +" Past Change: <Wed, 2005/05/25 09:24:58 arwagner wptx44> " First public release based on 'Symbolic Manipulation with FORM' " by J.A.M. Vermaseren, CAN, Netherlands, 1991. @@ -18,30 +21,73 @@ endif syn case ignore -" A bunch of useful FORM keywords +" a bunch of useful FORM keywords syn keyword formType global local syn keyword formHeaderStatement symbol symbols cfunction cfunctions syn keyword formHeaderStatement function functions vector vectors -syn keyword formHeaderStatement set sets index indices +syn keyword formHeaderStatement tensor tensors ctensor ctensors +syn keyword formHeaderStatement set sets index indices table ctable syn keyword formHeaderStatement dimension dimensions unittrace -syn keyword formStatement id identify drop skip -syn keyword formStatement write nwrite -syn keyword formStatement format print nprint load save -syn keyword formStatement bracket brackets -syn keyword formStatement multiply count match only discard -syn keyword formStatement trace4 traceN contract symmetrize antisymmetrize -syn keyword formConditional if else endif while +syn keyword formConditional if else elseif endif while syn keyword formConditional repeat endrepeat label goto +syn keyword formConditional argument endargument exit +syn keyword formConditional inexpression inside term +syn keyword formConditional endinexpression endinside endterm +syn keyword formStatement abrackets also antibrackets antisymmetrize +syn keyword formStatement argexplode argimplode apply auto autodeclare +syn keyword formStatement brackets chainin chainout chisholm cleartable +syn keyword formStatement collect commuting compress contract +syn keyword formStatement cyclesymmetrize deallocatetable delete +syn keyword formStatement dimension discard disorder drop factarg fill +syn keyword formStatement fillexpression fixindex format funpowers hide +syn keyword formStatement identify idnew idold ifmatch inparallel +syn keyword formStatement insidefirst keep load makeinteger many metric +syn keyword formStatement moduleoption modulus multi multiply ndrop +syn keyword formStatement nfunctions nhide normalize notinparallel +syn keyword formStatement nprint nskip ntable ntensors nunhide nwrite +syn keyword formStatement off on once only polyfun pophide print +syn keyword formStatement printtable propercount pushhide ratio +syn keyword formStatement rcyclesymmetrize redefine renumber +syn keyword formStatement replaceinarg replaceloop save select +syn keyword formStatement setexitflag skip slavepatchsize sort splitarg +syn keyword formStatement splitfirstarg splitlastarg sum symmetrize +syn keyword formStatement tablebase testuse threadbucketsize totensor +syn keyword formStatement tovector trace4 tracen tryreplace unhide +syn keyword formStatement unittrace vectors write +" for compatibility with older FORM versions: +syn keyword formStatement id bracket count match traceN " some special functions -syn keyword formStatement g_ gi_ g5_ g6_ g7_ 5_ 6_ 7_ -syn keyword formStatement e_ d_ delta_ theta_ sum_ sump_ +syn keyword formStatement abs_ bernoulli_ binom_ conjg_ count_ +syn keyword formStatement d_ dd_ delta_ deltap_ denom_ distrib_ +syn keyword formStatement dum_ dummy_ dummyten_ e_ exp_ fac_ +syn keyword formStatement factorin_ firstbracket_ g5_ g6_ g7_ +syn keyword formStatement g_ gcd_ gi_ integer_ invfac_ match_ +syn keyword formStatement max_ maxpowerof_ min_ minpowerof_ +syn keyword formStatement mod_ nargs_ nterms_ pattern_ poly_ +syn keyword formStatement polyadd_ polydiv_ polygcd_ polyintfac_ +syn keyword formStatement polymul_ polynorm_ polyrem_ polysub_ +syn keyword formStatement replace_ reverse_ root_ setfun_ sig_ +syn keyword formStatement sign_ sum_ sump_ table_ tbl_ term_ +syn keyword formStatement termsin_ termsinbracket_ theta_ thetap_ +syn keyword formStatement 5_ 6_ 7_ + +syn keyword formReserved sqrt_ ln_ sin_ cos_ tan_ asin_ acos_ +syn keyword formReserved atan_ atan2_ sinh_ cosh_ tanh_ asinh_ +syn keyword formReserved acosh_ atanh_ li2_ lin_ + +syn keyword formTodo contained TODO FIXME XXX + +syn match formSpecial display contained "\\\(n\|t\|b\|\\\|\"\)" +syn match formSpecial display contained "%\(%\|e\|E\|s\|f\|\$\)" +syn match formSpecial "\<N\d\+_[?]" " pattern matching for keywords -syn match formComment "^\ *\*.*$" -syn match formComment "\;\ *\*.*$" -syn region formString start=+"+ end=+"+ +syn match formComment "^\ *\*.*$" contains=formTodo +syn match formComment "\;\ *\*.*$" contains=formTodo +syn region formString start=+"+ end=+"+ contains=formSpecial syn region formString start=+'+ end=+'+ +syn region formNestedString start=+`+ end=+'+ contains=formNestedString syn match formPreProc "^\=\#[a-zA-z][a-zA-Z0-9]*\>" syn match formNumber "\<\d\+\>" syn match formNumber "\<\d\+\.\d*\>" @@ -50,6 +96,13 @@ syn match formNumber "-\d" contains=N syn match formNumber "-\.\d" contains=Number syn match formNumber "i_\+\>" syn match formNumber "fac_\+\>" +" pattern matching wildcards +syn match formNumber "?[A-z0-9]*" +" dollar-variables (new in 3.x) +syn match formNumber "\\$[A-z0-9]*" +" scalar products +syn match formNumber "^\=[a-zA-z][a-zA-Z0-9]*\.[a-zA-z][a-zA-Z0-9]*\>" + syn match formDirective "^\=\.[a-zA-z][a-zA-Z0-9]*\>" " hi User Labels @@ -74,6 +127,10 @@ if version >= 508 || !exists("did_form_s HiLink formDirective PreProc HiLink formType Type HiLink formString String + HiLink formNestedString String + HiLink formReserved Error + HiLink formTodo Todo + HiLink formSpecial SpecialChar if !exists("form_enhanced_color") HiLink formHeaderStatement Statement
--- a/runtime/syntax/forth.vim +++ b/runtime/syntax/forth.vim @@ -5,7 +5,7 @@ " Filenames: *.fs,*.ft " URL: http://www.cvjb.de/comp/vim/forth.vim -" $Id$ +" $Id: forth.vim,v 1.11 2008/02/09 13:17:01 bruessow Exp $ " The list of keywords is incomplete, compared with the offical ANS " wordlist. If you use this language, please improve it, and send me
--- a/runtime/syntax/fortran.vim +++ b/runtime/syntax/fortran.vim @@ -2,7 +2,7 @@ " Language: Fortran95 (and Fortran90, Fortran77, F and elf90) " Version: 0.88 " URL: http://www.unb.ca/chem/ajit/syntax/fortran.vim -" Last Change: 2006 Apr. 22 +" Last Change: 2008 Nov 01 " Maintainer: Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/> " Usage: Do :help fortran-syntax from Vim " Credits: @@ -300,7 +300,7 @@ if (b:fortran_fixed_source == 1) syn match fortranLabelError "^.\{-,4}[^0-9 ]" contains=fortranTab syn match fortranLabelError "^.\{4}\d\S" endif - syn match fortranComment excludenl "^[!c*].*$" contains=@fortranCommentGroup + syn match fortranComment excludenl "^[!c*].*$" contains=@fortranCommentGroup,@spell syn match fortranLeftMargin transparent "^ \{5}" syn match fortranContinueMark display "^.\{5}\S"lc=5 else
--- a/runtime/syntax/fstab.vim +++ b/runtime/syntax/fstab.vim @@ -2,14 +2,15 @@ " Language: fstab file " Maintaner: Radu Dineiu <radu.dineiu@gmail.com> " URL: http://ld.yi.org/vim/fstab.vim -" Last Change: 2008 Jan 16 -" Version: 0.92 +" Last Change: 2009 Feb 04 +" Version: 0.93 " " Credits: " David Necas (Yeti) <yeti@physics.muni.cz> " Stefano Zacchiroli <zack@debian.org> " Georgi Georgiev <chutz@gg3.net> " James Vega <jamessan@debian.org> +" Elias Probst <mail@eliasprobst.eu> " " Options: " let fstab_unknown_fs_errors = 1 @@ -46,7 +47,7 @@ syn keyword fsMountPointKeyword containe " Type syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown syn match fsTypeUnknown /\s\+\zs\w\+/ contained -syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs +syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 ext4 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs " Options " ------- @@ -91,7 +92,21 @@ syn match fsOptionsKeywords contained /\ syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber syn keyword fsOptionsExt3Journal contained update inum syn keyword fsOptionsExt3Data contained journal ordered writeback -syn keyword fsOptionsKeywords contained noload +syn keyword fsOptionsKeywords contained noload user_xattr nouser_xattr acl noacl + +" Options: ext4 +syn match fsOptionsKeywords contained /\<journal=/ nextgroup=fsOptionsExt4Journal +syn match fsOptionsKeywords contained /\<data=/ nextgroup=fsOptionsExt4Data +syn match fsOptionsKeywords contained /\<barrier=/ nextgroup=fsOptionsExt4Barrier +syn match fsOptionsKeywords contained /\<journal_dev=/ nextgroup=fsOptionsNumber +syn match fsOptionsKeywords contained /\<resuid=/ nextgroup=fsOptionsNumber +syn match fsOptionsKeywords contained /\<resgid=/ nextgroup=fsOptionsNumber +syn match fsOptionsKeywords contained /\<sb=/ nextgroup=fsOptionsNumber +syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber +syn keyword fsOptionsExt4Journal contained update inum +syn keyword fsOptionsExt4Data contained journal ordered writeback +syn match fsOptionsExt4Barrier /[0-1]/ +syn keyword fsOptionsKeywords contained noload extents orlov oldalloc user_xattr nouser_xattr acl noacl reservation noreservation bsddf minixdf check=none nocheck debug grpid nogroupid sysvgroups bsdgroups quota noquota grpquota usrquota bh nobh " Options: fat syn match fsOptionsKeywords contained /\<blocksize=/ nextgroup=fsOptionsSize @@ -241,6 +256,9 @@ if version >= 508 || !exists("did_config HiLink fsOptionsExt2Errors String HiLink fsOptionsExt3Journal String HiLink fsOptionsExt3Data String + HiLink fsOptionsExt4Journal String + HiLink fsOptionsExt4Data String + HiLink fsOptionsExt4Barrier Number HiLink fsOptionsFatCheck String HiLink fsOptionsConv String HiLink fsOptionsFatType Number
--- a/runtime/syntax/gdb.vim +++ b/runtime/syntax/gdb.vim @@ -2,7 +2,7 @@ " Language: GDB command files " Maintainer: Claudio Fleiner <claudio@fleiner.com> " URL: http://www.fleiner.com/vim/syntax/gdb.vim -" Last Change: 2003 Jan 04 +" Last Change: 2009 May 25 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded @@ -35,7 +35,7 @@ syn match gdbStatement "^\s*info" nextgr " some commonly used abreviations syn keyword gdbStatement c disp undisp disas p -syn region gdbDocument matchgroup=gdbFuncDef start="\<document\>.*$" matchgroup=gdbFuncDef end="^end$" +syn region gdbDocument matchgroup=gdbFuncDef start="\<document\>.*$" matchgroup=gdbFuncDef end="^end\s*$" syn match gdbStatement "\<add-shared-symbol-files\>" syn match gdbStatement "\<add-symbol-file\>"
--- a/runtime/syntax/git.vim +++ b/runtime/syntax/git.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: generic git output -" Maintainer: Tim Pope <vimNOSPAM@tpope.info> -" Last Change: 2008 Mar 21 +" Maintainer: Tim Pope <vimNOSPAM@tpope.org> +" Last Change: 2009 Dec 24 if exists("b:current_syntax") finish @@ -13,14 +13,19 @@ syn sync minlines=50 syn include @gitDiff syntax/diff.vim syn region gitHead start=/\%^/ end=/^$/ -syn region gitHead start=/\%(^commit \x\{40\}$\)\@=/ end=/^$/ +syn region gitHead start=/\%(^commit \x\{40\}\%(\s*(.*)\)\=$\)\@=/ end=/^$/ " For git reflog and git show ...^{tree}, avoid sync issues syn match gitHead /^\d\{6\} \%(\w\{4} \)\=\x\{40\}\%( [0-3]\)\=\t.*/ syn match gitHead /^\x\{40\} \x\{40}\t.*/ -syn region gitDiff start=/^\%(diff --git \)\@=/ end=/^\%(diff --git \|$\)\@=/ contains=@gitDiff fold -syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --git \|$\)\@=/ contains=@gitDiff +syn region gitDiff start=/^\%(diff --git \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff fold +syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --\%(git\|cc\|combined\) \|$\)\@=/ contains=@gitDiff + +syn region gitDiffMerge start=/^\%(diff --\%(cc\|combined\) \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff +syn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff +syn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge +syn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge syn match gitKeyword /^\%(object\|type\|tag\|commit\|tree\|parent\|encoding\)\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite syn match gitKeyword /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite @@ -29,8 +34,6 @@ syn match gitMode /^\d\{6\}/ contain syn match gitIdentityKeyword /^\%(author\|committer\|tagger\)\>/ contained containedin=gitHead nextgroup=gitIdentity skipwhite syn match gitIdentityHeader /^\%(Author\|Commit\|Tagger\):/ contained containedin=gitHead nextgroup=gitIdentity skipwhite syn match gitDateHeader /^\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitHead nextgroup=gitDate skipwhite -syn match gitIdentity /\S.\{-\} <[^>]*>/ contained nextgroup=gitDate skipwhite -syn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity syn match gitReflogHeader /^Reflog:/ contained containedin=gitHead nextgroup=gitReflogMiddle skipwhite syn match gitReflogHeader /^Reflog message:/ contained containedin=gitHead skipwhite @@ -42,14 +45,20 @@ syn match gitDate /\<\d\+ \l\+ ago syn match gitType /\<\%(tag\|commit\|tree\|blob\)\>/ contained nextgroup=gitHash skipwhite syn match gitStage /\<\d\t\@=/ contained syn match gitReference /\S\+\S\@!/ contained -syn match gitHash /\<\x\{40\}\>/ contained nextgroup=gitIdentity,gitStage skipwhite +syn match gitHash /\<\x\{40\}\>/ contained nextgroup=gitIdentity,gitStage,gitHash skipwhite syn match gitHash /^\<\x\{40\}\>/ containedin=gitHead contained nextgroup=gitHash skipwhite +syn match gitHashAbbrev /\<\x\{4,40\}\>/ contained nextgroup=gitHashAbbrev skipwhite syn match gitHashAbbrev /\<\x\{4,39\}\.\.\./he=e-3 contained nextgroup=gitHashAbbrev skipwhite -syn match gitHashAbbrev /\<\x\{40\}\>/ contained nextgroup=gitHashAbbrev skipwhite + +syn match gitIdentity /\S.\{-\} <[^>]*>/ contained nextgroup=gitDate skipwhite +syn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity + +syn match gitNotesHeader /^Notes:\ze\n / hi def link gitDateHeader gitIdentityHeader hi def link gitIdentityHeader gitIdentityKeyword hi def link gitIdentityKeyword Label +hi def link gitNotesHeader gitKeyword hi def link gitReflogHeader gitKeyword hi def link gitKeyword Keyword hi def link gitIdentity String @@ -63,5 +72,7 @@ hi def link gitReflogMiddle gitRefe hi def link gitReference Function hi def link gitStage gitType hi def link gitType Type +hi def link gitDiffAdded diffAdded +hi def link gitDiffRemoved diffRemoved let b:current_syntax = "git"
--- a/runtime/syntax/gitcommit.vim +++ b/runtime/syntax/gitcommit.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: git commit file -" Maintainer: Tim Pope <vimNOSPAM@tpope.info> +" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Filenames: *.git/COMMIT_EDITMSG -" Last Change: 2008 Apr 09 +" Last Change: 2009 Dec 24 if exists("b:current_syntax") finish @@ -16,48 +16,66 @@ if has("spell") endif syn include @gitcommitDiff syntax/diff.vim -syn region gitcommitDiff start=/\%(^diff --git \)\@=/ end=/^$\|^#\@=/ contains=@gitcommitDiff +syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^$\|^#\@=/ contains=@gitcommitDiff syn match gitcommitFirstLine "\%^[^#].*" nextgroup=gitcommitBlank skipnl -syn match gitcommitSummary "^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell +syn match gitcommitSummary "^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell syn match gitcommitOverflow ".*" contained contains=@Spell syn match gitcommitBlank "^[^#].*" contained contains=@Spell syn match gitcommitComment "^#.*" -syn region gitcommitHead start=/^# / end=/^#$/ contained transparent +syn match gitcommitHead "^\%(# .*\n\)\+#$" contained transparent syn match gitcommitOnBranch "\%(^# \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite -syn match gitcommitBranch "\S\+" contained +syn match gitcommitOnBranch "\%(^# \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite +syn match gitcommitBranch "[^ \t']\+" contained +syn match gitcommitNoBranch "\%(^# \)\@<=Not currently on any branch." contained containedin=gitcommitComment syn match gitcommitHeader "\%(^# \)\@<=.*:$" contained containedin=gitcommitComment +syn region gitcommitAuthor matchgroup=gitCommitHeader start=/\%(^# \)\@<=Author:/ end=/$/ keepend oneline contained containedin=gitcommitComment transparent +syn match gitcommitNoChanges "\%(^# \)\@<=No changes$" contained containedin=gitcommitComment syn region gitcommitUntracked start=/^# Untracked files:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUntrackedFile fold syn match gitcommitUntrackedFile "\t\@<=.*" contained syn region gitcommitDiscarded start=/^# Changed but not updated:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitDiscardedType fold syn region gitcommitSelected start=/^# Changes to be committed:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitSelectedType fold +syn region gitcommitUnmerged start=/^# Unmerged paths:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUnmergedType fold syn match gitcommitDiscardedType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitDiscardedFile skipwhite syn match gitcommitSelectedType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitSelectedFile skipwhite +syn match gitcommitUnmergedType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitUnmergedFile skipwhite syn match gitcommitDiscardedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitDiscardedArrow syn match gitcommitSelectedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow +syn match gitcommitUnmergedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow syn match gitcommitDiscardedArrow " -> " contained nextgroup=gitcommitDiscardedFile syn match gitcommitSelectedArrow " -> " contained nextgroup=gitcommitSelectedFile +syn match gitcommitUnmergedArrow " -> " contained nextgroup=gitcommitSelectedFile + +syn match gitcommitWarning "\%^[^#].*: needs merge$" nextgroup=gitcommitWarning skipnl +syn match gitcommitWarning "^[^#].*: needs merge$" nextgroup=gitcommitWarning skipnl contained +syn match gitcommitWarning "^\%(no changes added to commit\|nothing \%(added \)\=to commit\)\>.*\%$" hi def link gitcommitSummary Keyword hi def link gitcommitComment Comment hi def link gitcommitUntracked gitcommitComment hi def link gitcommitDiscarded gitcommitComment hi def link gitcommitSelected gitcommitComment +hi def link gitcommitUnmerged gitcommitComment hi def link gitcommitOnBranch Comment hi def link gitcommitBranch Special +hi def link gitcommitNoBranch gitCommitBranch hi def link gitcommitDiscardedType gitcommitType hi def link gitcommitSelectedType gitcommitType +hi def link gitcommitUnmergedType gitcommitType hi def link gitcommitType Type +hi def link gitcommitNoChanges gitcommitHeader hi def link gitcommitHeader PreProc hi def link gitcommitUntrackedFile gitcommitFile hi def link gitcommitDiscardedFile gitcommitFile hi def link gitcommitSelectedFile gitcommitFile +hi def link gitcommitUnmergedFile gitcommitFile hi def link gitcommitFile Constant hi def link gitcommitDiscardedArrow gitcommitArrow hi def link gitcommitSelectedArrow gitcommitArrow +hi def link gitcommitUnmergedArrow gitcommitArrow hi def link gitcommitArrow gitcommitComment "hi def link gitcommitOverflow Error hi def link gitcommitBlank Error
--- a/runtime/syntax/gitconfig.vim +++ b/runtime/syntax/gitconfig.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: git config file -" Maintainer: Tim Pope <vimNOSPAM@tpope.info> +" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Filenames: gitconfig, .gitconfig, *.git/config -" Last Change: 2008 Jun 04 +" Last Change: 2009 Dec 24 if exists("b:current_syntax") finish
--- a/runtime/syntax/gitrebase.vim +++ b/runtime/syntax/gitrebase.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: git rebase --interactive -" Maintainer: Tim Pope <vimNOSPAM@tpope.info> +" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Filenames: git-rebase-todo -" Last Change: 2008 Apr 16 +" Last Change: 2009 Dec 24 if exists("b:current_syntax") finish @@ -14,6 +14,7 @@ syn match gitrebaseHash "\v<\x{7,40} syn match gitrebaseCommit "\v<\x{7,40}>" nextgroup=gitrebaseSummary skipwhite syn match gitrebasePick "\v^p%(ick)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseEdit "\v^e%(dit)=>" nextgroup=gitrebaseCommit skipwhite +syn match gitrebaseReword "\v^r%(eword)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseSummary ".*" contains=gitrebaseHash contained syn match gitrebaseComment "^#.*" contains=gitrebaseHash @@ -23,9 +24,10 @@ hi def link gitrebaseCommit gitr hi def link gitrebaseHash Identifier hi def link gitrebasePick Statement hi def link gitrebaseEdit PreProc +hi def link gitrebaseReword Special hi def link gitrebaseSquash Type hi def link gitrebaseSummary String hi def link gitrebaseComment Comment -hi def link gitrebaseSquashError Error +hi def link gitrebaseSquashError Error let b:current_syntax = "gitrebase"
--- a/runtime/syntax/groovy.vim +++ b/runtime/syntax/groovy.vim @@ -228,6 +228,7 @@ if !exists("groovy_ignore_groovydoc") && " syntax include @groovyHtml <sfile>:p:h/html.vim syntax include @groovyHtml runtime! syntax/html.vim unlet b:current_syntax + syntax spell default " added by Bram syn region groovyDocComment start="/\*\*" end="\*/" keepend contains=groovyCommentTitle,@groovyHtml,groovyDocTags,groovyTodo,@Spell syn region groovyCommentTitle contained matchgroup=groovyDocComment start="/\*\*" matchgroup=groovyCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@groovyHtml,groovyCommentStar,groovyTodo,@Spell,groovyDocTags
--- a/runtime/syntax/haskell.vim +++ b/runtime/syntax/haskell.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Haskell " Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org> -" Last Change: 2004 Feb 23 +" Last Change: 2008 Dec 15 " Original Author: John Williams <jrw@pobox.com> " " Thanks to Ryan Crumley for suggestions and John Meacham for @@ -30,6 +30,7 @@ " in eol comment character class " 2004 Feb 23: Made the leading comments somewhat clearer where it comes " to attribution of work. +" 2008 Dec 15: Added comments as contained element in import statements " Remove any old syntax stuff hanging around if version < 600 @@ -67,7 +68,7 @@ syn match hsFloat "\<[0-9]\+\.[0-9]\+ " because otherwise they would match as keywords at the start of a " "literate" comment (see lhs.vim). syn match hsModule "\<module\>" -syn match hsImport "\<import\>.*"he=s+6 contains=hsImportMod +syn match hsImport "\<import\>.*"he=s+6 contains=hsImportMod,hsLineComment,hsBlockComment syn match hsImportMod contained "\<\(as\|qualified\|hiding\)\>" syn match hsInfix "\<\(infix\|infixl\|infixr\)\>" syn match hsStructure "\<\(class\|data\|deriving\|instance\|default\|where\)\>"
--- a/runtime/syntax/help.vim +++ b/runtime/syntax/help.vim @@ -1,14 +1,14 @@ " Vim syntax file " Language: Vim help file " Maintainer: Bram Moolenaar (Bram@vim.org) -" Last Change: 2006 May 13 +" Last Change: 2009 May 18 " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") finish endif -syn match helpHeadline "^[-A-Z .]\+[ \t]\+\*"me=e-1 +syn match helpHeadline "^[-A-Z .][-A-Z0-9 .()]*[ \t]\+\*"me=e-1 syn match helpSectionDelim "^=\{3,}.*===$" syn match helpSectionDelim "^-\{3,}.*--$" syn region helpExample matchgroup=helpIgnore start=" >$" start="^>$" end="^[^ \t]"me=e-1 end="^<"
--- a/runtime/syntax/hog.vim +++ b/runtime/syntax/hog.vim @@ -1,7 +1,7 @@ " Snort syntax file " Language: Snort Configuration File (see: http://www.snort.org) " Maintainer: Phil Wood, cornett@arpa.net -" Last Change: $Date$ +" Last Change: $Date: 2004/06/13 17:41:17 $ " Filenames: *.hog *.rules snort.conf vision.conf " URL: http://home.lanl.gov/cpw/vim/syntax/hog.vim " Snort Version: 1.8 By Martin Roesch (roesch@clark.net, www.snort.org)
--- a/runtime/syntax/initng.vim +++ b/runtime/syntax/initng.vim @@ -4,7 +4,7 @@ " URL: http://glen.alkohol.ee/pld/initng/ " License: GPL v2 " Version: 0.13 -" Last Change: $Date$ +" Last Change: $Date: 2007/05/05 17:17:40 $ " " Syntax highlighting for initng .i files. Inherits from sh.vim and adds " in the hiliting to start/stop {} blocks. Requires vim 6.3 or later.
--- a/runtime/syntax/java.vim +++ b/runtime/syntax/java.vim @@ -2,7 +2,7 @@ " Language: Java " Maintainer: Claudio Fleiner <claudio@fleiner.com> " URL: http://www.fleiner.com/vim/syntax/java.vim -" Last Change: 2007 Dec 21 +" Last Change: 2009 Mar 14 " Please check :help java.vim for comments on some of the options available. @@ -15,6 +15,7 @@ if !exists("main_syntax") endif " we define it here so that included files can test for it let main_syntax='java' + syn region javaFold start="{" end="}" transparent fold endif " don't use standard HiLink, it will not work with included syntax files @@ -58,7 +59,7 @@ syn match javaTypedef "\.\s*\<class\> syn keyword javaClassDecl enum syn match javaClassDecl "^class\>" syn match javaClassDecl "[^.]\s*\<class\>"ms=s+1 -syn match javaAnnotation "@[_$a-zA-Z][_$a-zA-Z0-9_]*\>" +syn match javaAnnotation "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>" syn match javaClassDecl "@interface\>" syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite syn match javaUserLabelRef "\k\+" contained @@ -121,11 +122,6 @@ syn match javaUserLabel "^\s*[_$ syn keyword javaLabel default if !exists("java_allow_cpp_keywords") - " The default used to be to highlight C++ keywords. But several people - " don't like that, so default to not highlighting these. - let java_allow_cpp_keywords = 1 -endif -if !java_allow_cpp_keywords syn keyword javaError auto delete extern friend inline redeclared syn keyword javaError register signed sizeof struct template typedef union syn keyword javaError unsigned operator @@ -161,6 +157,11 @@ if !exists("java_ignore_javadoc") && mai " syntax coloring for javadoc comments (HTML) syntax include @javaHtml <sfile>:p:h/html.vim unlet b:current_syntax + " HTML enables spell checking for all text that is not in a syntax item. This + " is wrong for Java (all identifiers would be spell-checked), so it's undone + " here. + syntax spell default + syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell syn region javaCommentTitle contained matchgroup=javaDocComment start="/\*\*" matchgroup=javaCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@javaHtml,javaCommentStar,javaTodo,@Spell,javaDocTags,javaDocSeeTag @@ -179,7 +180,7 @@ syn match javaComment "/\*\*/" " Strings and constants syn match javaSpecialError contained "\\." syn match javaSpecialCharError contained "[^']" -syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" +syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\+\x\{4\}\)" syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell " next line disabled, it can cause a crash for a long line "syn match javaStringError +"\([^"\\]\|\\.\)*$+ @@ -192,7 +193,7 @@ syn match javaNumber "\<\d\+[eE][-+] syn match javaNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" " unicode characters -syn match javaSpecial "\\u\d\{4\}" +syn match javaSpecial "\\u\+\d\{4\}" syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
--- a/runtime/syntax/kconfig.vim +++ b/runtime/syntax/kconfig.vim @@ -1,6 +1,6 @@ " Vim syntax file " Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2006-04-14 +" Latest Revision: 2009-05-25 if exists("b:current_syntax") finish @@ -666,9 +666,9 @@ syn keyword kconfigTodo co syn match kconfigComment display '#.*$' contains=kconfigTodo -syn keyword kconfigKeyword config menuconfig comment menu mainmenu +syn keyword kconfigKeyword config menuconfig comment mainmenu -syn keyword kconfigConditional choice endchoice if endif +syn keyword kconfigConditional menu endmenu choice endchoice if endif syn keyword kconfigPreProc source \ nextgroup=kconfigPath
--- a/runtime/syntax/kscript.vim +++ b/runtime/syntax/kscript.vim @@ -2,7 +2,7 @@ " Language: kscript " Maintainer: Thomas Capricelli <orzel@yalbi.com> " URL: http://aquila.rezel.enst.fr/thomas/vim/kscript.vim -" CVS: $Id$ +" CVS: $Id: kscript.vim,v 1.1 2004/06/13 17:40:02 vimboss Exp $ " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/lex.vim +++ b/runtime/syntax/lex.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: Lex -" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz> -" Last Change: Sep 06, 2005 -" Version: 7 +" Maintainer: Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz> +" Last Change: Sep 11, 2009 +" Version: 10 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax " " Option: @@ -16,7 +16,7 @@ elseif exists("b:current_syntax") finish endif -" Read the C syntax to start with +" Read the C/C++ syntax to start with if version >= 600 if exists("lex_uses_cpp") runtime! syntax/cpp.vim @@ -36,32 +36,60 @@ endif " --- Lex stuff --- " --- ========= --- -"I'd prefer to use lex.* , but it doesn't handle forward definitions yet +"I'd prefer to use lex.* , but vim doesn't handle forward definitions yet syn cluster lexListGroup contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatString,lexPatTag,lexPatTag,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,lexPatCode,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError -syn cluster lexListPatCodeGroup contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatTag,lexPatTag,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError +syn cluster lexListPatCodeGroup contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatTag,lexPatTag,lexPatTagZoneStart,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError " Abbreviations Section -syn region lexAbbrvBlock start="^\(\h\+\s\|%{\)" end="^\ze%%$" skipnl nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState +if has("folding") + syn region lexAbbrvBlock fold start="^\(\h\+\s\|%{\)" end="^\ze%%$" skipnl nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState +else + syn region lexAbbrvBlock start="^\(\h\+\s\|%{\)" end="^\ze%%$" skipnl nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState +endif syn match lexAbbrv "^\I\i*\s"me=e-1 skipwhite contained nextgroup=lexAbbrvRegExp syn match lexAbbrv "^%[sx]" contained syn match lexAbbrvRegExp "\s\S.*$"lc=1 contained nextgroup=lexAbbrv,lexInclude -syn region lexInclude matchgroup=lexSep start="^%{" end="%}" contained contains=ALLBUT,@lexListGroup -syn region lexAbbrvComment start="^\s\+/\*" end="\*/" contains=@Spell -syn region lexStartState matchgroup=lexAbbrv start="^%\a\+" end="$" contained +if has("folding") + syn region lexInclude fold matchgroup=lexSep start="^%{" end="%}" contained contains=ALLBUT,@lexListGroup + syn region lexAbbrvComment fold start="^\s\+/\*" end="\*/" contains=@Spell + syn region lexStartState fold matchgroup=lexAbbrv start="^%\a\+" end="$" contained +else + syn region lexInclude matchgroup=lexSep start="^%{" end="%}" contained contains=ALLBUT,@lexListGroup + syn region lexAbbrvComment start="^\s\+/\*" end="\*/" contains=@Spell + syn region lexStartState matchgroup=lexAbbrv start="^%\a\+" end="$" contained +endif "%% : Patterns {Actions} -syn region lexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPat,lexPatTag,lexPatComment -syn region lexPat start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=lexMorePat,lexPatSep contains=lexPatString,lexSlashQuote,lexBrace -syn region lexBrace start="\[" skip=+\\\\\|\\+ end="]" contained -syn region lexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained -syn match lexPatTag "^<\I\i*\(,\I\i*\)*>*" contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep +if has("folding") + syn region lexPatBlock fold matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat + syn region lexPat fold start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=lexMorePat,lexPatSep contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace + syn region lexBrace fold start="\[" skip=+\\\\\|\\+ end="]" contained + syn region lexPatString fold matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained +else + syn region lexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat + syn region lexPat start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=lexMorePat,lexPatSep contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace + syn region lexBrace start="\[" skip=+\\\\\|\\+ end="]" contained + syn region lexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained +endif +syn match lexPatTag "^<\I\i*\(,\I\i*\)*>" contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep +syn match lexPatTagZone "^<\I\i*\(,\I\i*\)*>\s*\ze{" contained nextgroup=lexPatTagZoneStart syn match lexPatTag +^<\I\i*\(,\I\i*\)*>*\(\\\\\)*\\"+ contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep -syn region lexPatComment start="^\s*/\*" end="\*/" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell +if has("folding") + syn region lexPatTagZoneStart matchgroup=lexPatTag fold start='{' end='}' contained contains=lexPat,lexPatComment + syn region lexPatComment start="\s\+/\*" end="\*/" fold skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell +else + syn region lexPatTagZoneStart matchgroup=lexPatTag start='{' end='}' contained contains=lexPat,lexPatComment + syn region lexPatComment start="\s\+/\*" end="\*/" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell +endif syn match lexPatCodeLine ".*$" contained contains=ALLBUT,@lexListGroup syn match lexMorePat "\s*|\s*$" skipnl contained nextgroup=lexPat,lexPatTag,lexPatComment syn match lexPatSep "\s\+" contained nextgroup=lexMorePat,lexPatCode,lexPatCodeLine syn match lexSlashQuote +\(\\\\\)*\\"+ contained -syn region lexPatCode matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" skipnl contained contains=ALLBUT,@lexListPatCodeGroup +if has("folding") + syn region lexPatCode matchgroup=Delimiter start="{" end="}" fold skipnl contained contains=ALLBUT,@lexListPatCodeGroup +else + syn region lexPatCode matchgroup=Delimiter start="{" end="}" skipnl contained contains=ALLBUT,@lexListPatCodeGroup +endif syn keyword lexCFunctions BEGIN input unput woutput yyleng yylook yytext syn keyword lexCFunctions ECHO output winput wunput yyless yymore yywrap @@ -80,9 +108,10 @@ syn sync match lexSyncPat groupthere lex syn sync match lexSyncPat groupthere lexPatBlock "^%%$" " The default highlighting. -hi def link lexSlashQuote lexPat +hi def link lexAbbrvComment lexPatComment hi def link lexBrace lexPat -hi def link lexAbbrvComment lexPatComment +hi def link lexPatTagZone lexPatTag +hi def link lexSlashQuote lexPat hi def link lexAbbrvRegExp Macro hi def link lexAbbrv SpecialChar
--- a/runtime/syntax/lhaskell.vim +++ b/runtime/syntax/lhaskell.vim @@ -4,8 +4,8 @@ " \begin{code} \end{code} blocks " Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org> " Original Author: Arthur van Leeuwen <arthurvl@cs.uu.nl> -" Last Change: 2008 Jul 01 -" Version: 1.02 +" Last Change: 2009 May 08 +" Version: 1.04 " " Thanks to Ian Lynagh for thoughtful comments on initial versions and " for the inspiration for writing this in the first place. @@ -29,8 +29,10 @@ " 2004 February 20: Cleaned up the guessing and overriding a bit " 2004 February 23: Cleaned up syntax highlighting for \begin{code} and " \end{code}, added some clarification to the attributions -" 2008 July 1: Removed % from guess list, as it totally breaks plain -" text markup guessing +" 2008 July 1: Removed % from guess list, as it totally breaks plain +" text markup guessing +" 2009 April 29: Fixed highlighting breakage in TeX mode, +" thanks to Kalman Noel " @@ -73,14 +75,14 @@ call cursor(1,1) " - \begin{env} (for env != code) " - \part, \chapter, \section, \subsection, \subsubsection, etc if b:lhs_markup == "unknown" - if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub \)*section\|\\chapter|\\part','W') != 0 + if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub\)*section\|\\chapter|\\part','W') != 0 let b:lhs_markup = "tex" else let b:lhs_markup = "plain" endif endif -" If user wants us to highlight TeX syntax or guess thinks it's TeX, read it. +" If user wants us to highlight TeX syntax or guess thinks it's TeX, read it. if b:lhs_markup == "tex" if version < 600 source <sfile>:p:h/tex.vim @@ -91,6 +93,9 @@ if b:lhs_markup == "tex" " Tex.vim removes "_" from 'iskeyword', but we need it for Haskell. setlocal isk+=_ endif + syntax cluster lhsTeXContainer contains=tex.*Zone,texAbstract +else + syntax cluster lhsTeXContainer contains=.* endif " Literate Haskell is Haskell in between text, so at least read Haskell @@ -101,8 +106,8 @@ else syntax include @haskellTop syntax/haskell.vim endif -syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack -syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,@beginCode +syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack containedin=@lhsTeXContainer +syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,@beginCode containedin=@lhsTeXContainer syntax match lhsBirdTrack "^>" contained
--- a/runtime/syntax/lilo.vim +++ b/runtime/syntax/lilo.vim @@ -1,10 +1,8 @@ " Vim syntax file -" This is a GENERATED FILE. Please always refer to source file at the URI below. " Language: lilo configuration (lilo.conf) -" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz> -" Last Change: 2004-07-20 -" URL: http://trific.ath.cx/Ftp/vim/syntax/lilo.vim - +" Maintainer: help wanted! +" Previous Maintainer: David Necas (Yeti) <yeti@physics.muni.cz> +" Last Change: 2009-01-27 " Setup if version >= 600 @@ -64,7 +62,7 @@ syn keyword liloDiskOpt sectors heads cy " String syn keyword liloOption menu-title nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty -syn keyword liloKernelOpt append nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty +syn keyword liloKernelOpt append addappend nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty syn keyword liloImageOpt fallback literal nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty " Hex number
--- a/runtime/syntax/lisp.vim +++ b/runtime/syntax/lisp.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: Lisp " Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz> -" Last Change: Oct 19, 2007 -" Version: 20 +" Last Change: Mar 05, 2009 +" Version: 21 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax " " Thanks to F Xavier Noria for a list of 978 Common Lisp symbols @@ -534,7 +534,8 @@ endif " --------------------------------------------------------------------- " Numbers: supporting integers and floating point numbers {{{1 -syn match lispNumber "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\(e[-+]\=\d\+\)\=" +syn match lispNumber "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\([dDeEfFlL][-+]\=\d\+\)\=" +syn match lispNumber "-\=\(\d\+/\d\+\)" syn match lispSpecial "\*\w[a-z_0-9-]*\*" syn match lispSpecial !#|[^()'`,"; \t]\+|#!
--- a/runtime/syntax/logtalk.vim +++ b/runtime/syntax/logtalk.vim @@ -2,7 +2,7 @@ " " Language: Logtalk " Maintainer: Paulo Moura <pmoura@logtalk.org> -" Last Change: June 16, 2008 +" Last Change: Oct 31, 2008 " Quit when a syntax file was already loaded: @@ -51,9 +51,9 @@ syn region logtalkExtCall matchgroup=lo " Logtalk opening entity directives -syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel -syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel -syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel +syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment +syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment +syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment " Logtalk closing entity directives
--- a/runtime/syntax/lout.vim +++ b/runtime/syntax/lout.vim @@ -4,7 +4,7 @@ " Last Change: Son 22 Jun 2003 20:43:26 CEST " Filenames: *.lout,*.lt " URL: http://www.cvjb.de/comp/vim/lout.vim -" $Id$ +" $Id: lout.vim,v 1.1 2004/06/13 17:52:18 vimboss Exp $ " " Lout: Basser Lout document formatting system.
--- a/runtime/syntax/mail.vim +++ b/runtime/syntax/mail.vim @@ -2,7 +2,7 @@ " Language: Mail file " Previous Maintainer: Felix von Leitner <leitner@math.fu-berlin.de> " Maintainer: Gautam Iyer <gi1242@users.sourceforge.net> -" Last Change: Thu 17 Jan 2008 11:25:44 AM PST +" Last Change: Thu 06 Nov 2008 10:10:55 PM PST " Quit when a syntax file was already loaded if exists("b:current_syntax") @@ -24,28 +24,35 @@ syn case match " emails " According to RFC 2822 any printable ASCII character can appear in a field " name, except ':'. -syn region mailHeader contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1 +syn region mailHeader contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1 fold syn match mailHeaderKey contained contains=mailEmail,@NoSpell "^From\s.*\d\d\d\d$" + +" Nothing else depends on case. +syn case ignore + +" Headers in properly quoted (with "> " or ">") emails are matched +syn region mailHeader keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1 fold + " Usenet headers syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(Newsgroups|Followup-To|Message-ID|Supersedes|Control):.*$" -syn case ignore -" Nothing else depends on case. Headers in properly quoted (with "> " or ">") -" emails are matched -syn region mailHeader keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1 syn region mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> ?)*)@<=(to|b?cc):" skip=",$" end="$" -syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$" +syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$" fold syn match mailHeaderKey contained contains=@NoSpell "\v(^(\> ?)*)@<=date:" -syn match mailSubject contained "\v^subject:.*$" +syn match mailSubject contained "\v^subject:.*$" fold syn match mailSubject contained contains=@NoSpell "\v(^(\> ?)+)@<=subject:.*$" " Anything in the header between < and > is an email address syn match mailHeaderEmail contained contains=@NoSpell "<.\{-}>" " Mail Signatures. (Begin with "-- ", end with change in quote level) -syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps start="^--\s$" end="^$" end="^\(> \?\)\+"me=s-1 -syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)--\s$" end="^\z1$" end="^\z1\@!"me=s-1 end="^\z1\(> \?\)\+"me=s-1 +syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps start="^--\s$" end="^$" end="^\(> \?\)\+"me=s-1 fold +syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)--\s$" end="^\z1$" end="^\z1\@!"me=s-1 end="^\z1\(> \?\)\+"me=s-1 fold + +" Treat verbatim Text special. +syn region mailVerbatim contains=@NoSpell keepend start="^#v+$" end="^#v-$" fold +syn region mailVerbatim contains=@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)#v+$" end="\z1#v-$" fold " URLs start with a known protocol or www,web,w3. syn match mailURL contains=@NoSpell `\v<(((https?|ftp|gopher)://|(mailto|file|news):)[^' <>"]+|(www|web|w3)[a-z0-9_-]*\.[a-z0-9._-]+\.[^' <>"]+)[a-z0-9/]` @@ -59,13 +66,13 @@ syn match mailQuoteExp4 contained "\v^(\ syn match mailQuoteExp5 contained "\v^(\> ?){5}" syn match mailQuoteExp6 contained "\v^(\> ?){6}" -" Even and odd quoted lines. order is imporant here! -syn match mailQuoted1 contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\([a-z]\+>\|[]|}>]\).*$" -syn match mailQuoted2 contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{2}.*$" -syn match mailQuoted3 contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{3}.*$" -syn match mailQuoted4 contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{4}.*$" -syn match mailQuoted5 contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{5}.*$" -syn match mailQuoted6 contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{6}.*$" +" Even and odd quoted lines. Order is important here! +syn region mailQuoted6 keepend contains=mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{5}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold +syn region mailQuoted5 keepend contains=mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{4}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold +syn region mailQuoted4 keepend contains=mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{3}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold +syn region mailQuoted3 keepend contains=mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{2}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold +syn region mailQuoted2 keepend contains=mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{1}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold +syn region mailQuoted1 keepend contains=mailQuoted2,mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z([a-z]\+>\|[]|}>]\)" end="^\z1\@!" fold " Need to sync on the header. Assume we can do that within 100 lines if exists("mail_minlines") @@ -75,6 +82,7 @@ else endif " Define the default highlighting. +hi def link mailVerbatim Special hi def link mailHeader Statement hi def link mailHeaderKey Type hi def link mailSignature PreProc
--- a/runtime/syntax/man.vim +++ b/runtime/syntax/man.vim @@ -1,9 +1,9 @@ " Vim syntax file " Language: Man page -" Maintainer: Nam SungHyun <namsh@kldp.org> +" Maintainer: SungHyun Nam <goweol@gmail.com> " Previous Maintainer: Gautam H. Mudunuri <gmudunur@informatica.com> " Version Info: -" Last Change: 2007 Dec 30 +" Last Change: 2008 Sep 17 " Additional highlighting by Johannes Tanzler <johannes.tanzler@aon.at>: " * manSubHeading
--- a/runtime/syntax/masm.vim +++ b/runtime/syntax/masm.vim @@ -2,8 +2,8 @@ " Language: Microsoft Macro Assembler (80x86) " Orig Author: Rob Brady <robb@datatone.com> " Maintainer: Wu Yongwei <wuyongwei@gmail.com> -" Last Change: $Date$ -" $Revision$ +" Last Change: $Date: 2007/04/21 13:20:15 $ +" $Revision: 1.44 $ " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/master.vim +++ b/runtime/syntax/master.vim @@ -1,9 +1,9 @@ " Vim syntax file " Language: Focus Master File " Maintainer: Rob Brady <robb@datatone.com> -" Last Change: $Date$ +" Last Change: $Date: 2004/06/13 15:54:03 $ " URL: http://www.datatone.com/~robb/vim/syntax/master.vim -" $Revision$ +" $Revision: 1.1 $ " this is a very simple syntax file - I will be improving it " add entire DEFINE syntax
--- a/runtime/syntax/matlab.vim +++ b/runtime/syntax/matlab.vim @@ -1,8 +1,15 @@ " Vim syntax file " Language: Matlab -" Maintainer: Preben 'Peppe' Guldberg <peppe-vim@wielders.org> +" Maintainer: Maurizio Tranchero - maurizio.tranchero@gmail.com +" Credits: Preben 'Peppe' Guldberg <peppe-vim@wielders.org> " Original author: Mario Eusebio -" Last Change: 30 May 2003 +" Change History: +" Sat Jul 25 16:14:55 CEST 2009 +" - spell check enabled only for comments (thanks to James Vega) +" +" Tue Apr 21 10:03:31 CEST 2009 +" - added object oriented support +" - added multi-line comments %{ ...\n... %} " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded @@ -16,6 +23,9 @@ syn keyword matlabStatement return syn keyword matlabLabel case switch syn keyword matlabConditional else elseif end if otherwise syn keyword matlabRepeat do for while +" MT_ADDON - added exception-specific keywords +syn keyword matlabExceptions try catch +syn keyword matlabOO classdef properties events methods syn keyword matlabTodo contained TODO @@ -31,7 +41,8 @@ syn match matlabLineContinuation "\.\{3} "syn match matlabIdentifier "\<\a\w*\>" " String -syn region matlabString start=+'+ end=+'+ oneline +" MT_ADDON - added 'skip' in order to deal with 'tic' escaping sequence +syn region matlabString start=+'+ end=+'+ oneline skip=+''+ contains=@Spell " If you don't like tabs syn match matlabTab "\t" @@ -50,7 +61,10 @@ syn match matlabTransposeOperator "[])a- syn match matlabSemicolon ";" -syn match matlabComment "%.*$" contains=matlabTodo,matlabTab +syn match matlabComment "%.*$" contains=matlabTodo,matlabTab,@Spell +" MT_ADDON - correctly highlights words after '...' as comments +syn match matlabComment "\.\.\..*$" contains=matlabTodo,matlabTab,@Spell +syn region matlabMultilineComment start=+%{+ end=+%}+ contains=matlabTodo,matlabTab,@Spell syn keyword matlabOperator break zeros default margin round ones rand syn keyword matlabOperator ceil floor size clear zeros eye mean std cov @@ -75,10 +89,11 @@ if version >= 508 || !exists("did_matlab endif HiLink matlabTransposeOperator matlabOperator - HiLink matlabOperator Operator - HiLink matlabLineContinuation Special + HiLink matlabOperator Operator + HiLink matlabLineContinuation Special HiLink matlabLabel Label HiLink matlabConditional Conditional + HiLink matlabExceptions Conditional HiLink matlabRepeat Repeat HiLink matlabTodo Todo HiLink matlabString String @@ -86,12 +101,14 @@ if version >= 508 || !exists("did_matlab HiLink matlabTransposeOther Identifier HiLink matlabNumber Number HiLink matlabFloat Float - HiLink matlabFunction Function + HiLink matlabFunction Function HiLink matlabError Error - HiLink matlabImplicit matlabStatement + HiLink matlabImplicit matlabStatement HiLink matlabStatement Statement + HiLink matlabOO Statement HiLink matlabSemicolon SpecialChar HiLink matlabComment Comment + HiLink matlabMultilineComment Comment HiLink matlabArithmeticOperator matlabOperator HiLink matlabRelationalOperator matlabOperator
--- a/runtime/syntax/maxima.vim +++ b/runtime/syntax/maxima.vim @@ -227,7 +227,7 @@ syn match maximaFloat /\<\d\+[BbDdEeSs][ " Comments: " maxima supports /* ... */ (like C) syn keyword maximaTodo contained TODO Todo DEBUG -syn region maximaCommentBlock start="/\*" end="\*/" contains=maximaString,maximaTodo +syn region maximaCommentBlock start="/\*" end="\*/" contains=maximaString,maximaTodo,maximaCommentBlock " synchronizing syn sync match maximaSyncComment grouphere maximaCommentBlock "/*"
--- a/runtime/syntax/mgl.vim +++ b/runtime/syntax/mgl.vim @@ -4,7 +4,7 @@ " Last Change: 2006 Feb 21 " Maintainer: Gero Kuhlmann <gero@gkminix.han.de> " -" $Id$ +" $Id: mgl.vim,v 1.1 2006/02/21 22:08:20 vimboss Exp $ " if version < 600 syntax clear
--- a/runtime/syntax/mma.vim +++ b/runtime/syntax/mma.vim @@ -4,7 +4,7 @@ " Last Change: Thu May 19 21:36:04 CDT 2005 " Source: http://members.wri.com/layland/vim/syntax/mma.vim " http://vim.sourceforge.net/scripts/script.php?script_id=1273 -" Id: $Id$ +" Id: $Id: mma.vim,v 1.4 2006/04/14 20:40:38 vimboss Exp $ " NOTE: " " Empty .m files will automatically be presumed as Matlab files
--- a/runtime/syntax/mysql.vim +++ b/runtime/syntax/mysql.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: mysql " Maintainer: Kenneth J. Pronovici <pronovic@ieee.org> -" Last Change: $LastChangedDate: 2007-12-19 10:59:39 -0600 (Wed, 19 Dec 2007) $ +" Last Change: $LastChangedDate: 2009-06-29 23:08:37 -0500 (Mon, 29 Jun 2009) $ " Filenames: *.mysql " URL: ftp://cedar-solutions.com/software/mysql.vim " Note: The definitions below are taken from the mysql user manual as of April 2002, for version 3.23 @@ -36,7 +36,7 @@ syn keyword mysqlKeyword match m syn keyword mysqlKeyword natural no syn keyword mysqlKeyword on optimize option optionally order outer outfile syn keyword mysqlKeyword pack_keys partial password primary privileges procedure process processlist -syn keyword mysqlKeyword read references reload rename replace restrict returns revoke row rows +syn keyword mysqlKeyword read references reload rename replace restrict returns revoke right row rows syn keyword mysqlKeyword second select show shutdown soname sql_big_result sql_big_selects sql_big_tables sql_log_off syn keyword mysqlKeyword sql_log_update sql_low_priority_updates sql_select_limit sql_small_result sql_warnings starting syn keyword mysqlKeyword status straight_join string @@ -57,7 +57,7 @@ syn region mysqlString start=+ " Numbers and hexidecimal values syn match mysqlNumber "-\=\<[0-9]*\>" syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*\>" -syn match mysqlNumber "-\=\<[0-9]*e[+-]\=[0-9]*\>" +syn match mysqlNumber "-\=\<[0-9][0-9]*e[+-]\=[0-9]*\>" syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*e[+-]\=[0-9]*\>" syn match mysqlNumber "\<0x[abcdefABCDEF0-9]*\>"
--- a/runtime/syntax/ncf.vim +++ b/runtime/syntax/ncf.vim @@ -2,7 +2,7 @@ " Language: Novell "NCF" Batch File " Maintainer: Jonathan J. Miner <miner@doit.wisc.edu> " Last Change: Tue, 04 Sep 2001 16:20:33 CDT -" $Id$ +" $Id: ncf.vim,v 1.1 2004/06/13 16:31:58 vimboss Exp $ " Remove any old syntax stuff hanging around if version < 600
--- a/runtime/syntax/netrc.vim +++ b/runtime/syntax/netrc.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: netrc(5) configuration file " Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2006-04-19 +" Latest Revision: 2010-01-03 if exists("b:current_syntax") finish @@ -11,12 +11,13 @@ let s:cpo_save = &cpo set cpo&vim syn keyword netrcKeyword machine nextgroup=netrcMachine skipwhite skipnl -syn keyword netrcKeyword login nextgroup=netrcLogin,netrcSpecial - \ skipwhite skipnl +syn keyword netrcKeyword account + \ login + \ nextgroup=netrcLogin,netrcSpecial skipwhite skipnl syn keyword netrcKeyword password nextgroup=netrcPassword skipwhite skipnl syn keyword netrcKeyword default -syn keyword netrcKeyword macdef nextgroup=netrcInit,netrcMacroName - \ skipwhite skipnl +syn keyword netrcKeyword macdef + \ nextgroup=netrcInit,netrcMacroName skipwhite skipnl syn region netrcMacro contained start='.' end='^$' syn match netrcMachine contained display '\S\+' @@ -25,14 +26,14 @@ syn match netrcLogin contained di syn match netrcLogin contained display '"[^\\"]*\(\\.[^\\"]*\)*"' syn match netrcPassword contained display '\S\+' syn match netrcPassword contained display '"[^\\"]*\(\\.[^\\"]*\)*"' -syn match netrcMacroName contained display '\S\+' nextgroup=netrcMacro - \ skipwhite skipnl +syn match netrcMacroName contained display '\S\+' + \ nextgroup=netrcMacro skipwhite skipnl syn match netrcMacroName contained display '"[^\\"]*\(\\.[^\\"]*\)*"' - \ nextgroup=netrcMacro skipwhite skipnl + \ nextgroup=netrcMacro skipwhite skipnl syn keyword netrcSpecial contained anonymous -syn match netrcInit contained '\<init$' nextgroup=netrcMacro - \ skipwhite skipnl +syn match netrcInit contained '\<init$' + \ nextgroup=netrcMacro skipwhite skipnl syn sync fromstart
--- a/runtime/syntax/netrw.vim +++ b/runtime/syntax/netrw.vim @@ -1,7 +1,7 @@ " Language : Netrw Remote-Directory Listing Syntax " Maintainer : Charles E. Campbell, Jr. -" Last change: Feb 06, 2008 -" Version : 12 +" Last change: Jan 14, 2009 +" Version : 16 " --------------------------------------------------------------------- " Syntax Clearing: {{{1 @@ -16,85 +16,91 @@ endif syn cluster NetrwGroup contains=netrwHide,netrwSortBy,netrwSortSeq,netrwQuickHelp,netrwVersion,netrwCopyTgt syn cluster NetrwTreeGroup contains=netrwDir,netrwSymLink,netrwExe -syn match netrwSpecial "\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)" contains=netrwClassify -syn match netrwDir "\.\{1,2}/" contains=netrwClassify -syn match netrwDir "\%(\S\+ \)*\S\+/" contains=netrwClassify -syn match netrwSizeDate "\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s" contains=netrwDateSep skipwhite nextgroup=netrwTime -syn match netrwSymLink "\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)" contains=netrwClassify -syn match netrwExe "\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" contains=netrwClassify -syn match netrwTreeBar "^\%(| \)*" contains=netrwTreeBarSpace nextgroup=@netrwTreeGroup -syn match netrwTreeBarSpace " " contained +syn match netrwPlain "\(\S\+ \)*\S\+" contains=@NoSpell +syn match netrwSpecial "\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell +syn match netrwDir "\.\{1,2}/" contains=netrwClassify,@NoSpell +syn match netrwDir "\%(\S\+ \)*\S\+/" contains=netrwClassify,@NoSpell +syn match netrwSizeDate "\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s" skipwhite contains=netrwDateSep,@NoSpell nextgroup=netrwTime +syn match netrwSymLink "\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell +syn match netrwExe "\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell +syn match netrwTreeBar "^\%([-+|] \)\+" contains=netrwTreeBarSpace nextgroup=@netrwTreeGroup +syn match netrwTreeBarSpace " " contained -syn match netrwClassify "[*=|@/]\ze\%(\s\{2,}\|$\)" contained -syn match netrwDateSep "/" contained -syn match netrwTime "\d\{1,2}:\d\{2}:\d\{2}" contained contains=netrwTimeSep +syn match netrwClassify "[*=|@/]\ze\%(\s\{2,}\|$\)" contained +syn match netrwDateSep "/" contained +syn match netrwTime "\d\{1,2}:\d\{2}:\d\{2}" contained contains=netrwTimeSep syn match netrwTimeSep ":" -syn match netrwComment '".*\%(\t\|$\)' contains=@NetrwGroup -syn match netrwHide '^"\s*\(Hid\|Show\)ing:' skipwhite nextgroup=netrwHidePat +syn match netrwComment '".*\%(\t\|$\)' contains=@NetrwGroup,@NoSpell +syn match netrwHide '^"\s*\(Hid\|Show\)ing:' skipwhite contains=@NoSpell nextgroup=netrwHidePat syn match netrwSlash "/" contained -syn match netrwHidePat "[^,]\+" contained skipwhite nextgroup=netrwHideSep -syn match netrwHideSep "," contained transparent skipwhite nextgroup=netrwHidePat -syn match netrwSortBy "Sorted by" contained transparent skipwhite nextgroup=netrwList -syn match netrwSortSeq "Sort sequence:" contained transparent skipwhite nextgroup=netrwList -syn match netrwCopyTgt "Copy/Move Tgt:" contained transparent skipwhite nextgroup=netrwList -syn match netrwList ".*$" contained contains=netrwComma +syn match netrwHidePat "[^,]\+" contained skipwhite contains=@NoSpell nextgroup=netrwHideSep +syn match netrwHideSep "," contained skipwhite nextgroup=netrwHidePat +syn match netrwSortBy "Sorted by" contained transparent skipwhite nextgroup=netrwList +syn match netrwSortSeq "Sort sequence:" contained transparent skipwhite nextgroup=netrwList +syn match netrwCopyTgt "Copy/Move Tgt:" contained transparent skipwhite nextgroup=netrwList +syn match netrwList ".*$" contained contains=netrwComma,@NoSpell syn match netrwComma "," contained -syn region netrwQuickHelp matchgroup=Comment start="Quick Help:\s\+" end="$" contains=netrwHelpCmd keepend contained -syn match netrwHelpCmd "\S\ze:" contained skipwhite nextgroup=netrwCmdSep +syn region netrwQuickHelp matchgroup=Comment start="Quick Help:\s\+" end="$" contains=netrwHelpCmd,@NoSpell keepend contained +syn match netrwHelpCmd "\S\ze:" contained skipwhite contains=@NoSpell nextgroup=netrwCmdSep syn match netrwCmdSep ":" contained nextgroup=netrwCmdNote -syn match netrwCmdNote ".\{-}\ze " contained -syn match netrwVersion "(netrw.*)" contained +syn match netrwCmdNote ".\{-}\ze " contained contains=@NoSpell +syn match netrwVersion "(netrw.*)" contained contains=@NoSpell " ----------------------------- " Special filetype highlighting {{{1 " ----------------------------- if exists("g:netrw_special_syntax") && netrw_special_syntax - syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar - syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar - syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar - syn match netrwHdr "\(\S\+ \)*\S\+\.h\>" contains=netrwTreeBar - syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar - syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar - syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar - syn match netrwTags "\<tags\>" contains=netrwTreeBar - syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar - syn match netrwTilde "\(\S\+ \)*\S\+\~\>" contains=netrwTreeBar - syn match netrwTmp "\<tmp\(\S\+ \)*\S\+\>\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar + syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar,@NoSpell + syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar,@NoSpell + if has("unix") + syn match netrwCoreDump "\<core\%(\.\d\+\)\=\>" contains=netrwTreeBar,@NoSpell + endif + syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar,@NoSpell + syn match netrwHdr "\(\S\+ \)*\S\+\.h\>" contains=netrwTreeBar,@NoSpell + syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar,@NoSpell + syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwTags "\<tags\>" contains=netrwTreeBar,@NoSpell + syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwTilde "\(\S\+ \)*\S\+\~\>" contains=netrwTreeBar,@NoSpell + syn match netrwTmp "\<tmp\(\S\+ \)*\S\+\>\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar,@NoSpell endif " --------------------------------------------------------------------- " Highlighting Links: {{{1 if !exists("did_drchip_netrwlist_syntax") let did_drchip_netrwlist_syntax= 1 - hi link netrwClassify Function - hi link netrwCmdSep Delimiter - hi link netrwComment Comment - hi link netrwDir Directory - hi link netrwHelpCmd Function - hi link netrwHidePat Statement - hi link netrwList Statement - hi link netrwVersion Identifier - hi link netrwSymLink Question - hi link netrwExe PreProc - hi link netrwDateSep Delimiter + hi default link netrwClassify Function + hi default link netrwCmdSep Delimiter + hi default link netrwComment Comment + hi default link netrwDir Directory + hi default link netrwHelpCmd Function + hi default link netrwHidePat Statement + hi default link netrwHideSep netrwComment + hi default link netrwList Statement + hi default link netrwVersion Identifier + hi default link netrwSymLink Question + hi default link netrwExe PreProc + hi default link netrwDateSep Delimiter - hi link netrwTreeBar Special - hi link netrwTimeSep netrwDateSep - hi link netrwComma netrwComment - hi link netrwHide netrwComment - hi link netrwMarkFile Identifier + hi default link netrwTreeBar Special + hi default link netrwTimeSep netrwDateSep + hi default link netrwComma netrwComment + hi default link netrwHide netrwComment + hi default link netrwMarkFile Identifier " special syntax highlighting (see :he g:netrw_special_syntax) - hi link netrwBak NonText - hi link netrwCompress Folded - hi link netrwData DiffChange - hi link netrwLib DiffChange - hi link netrwMakefile DiffChange - hi link netrwObj Folded - hi link netrwTilde Folded - hi link netrwTmp Folded - hi link netrwTags Folded + hi default link netrwBak NonText + hi default link netrwCompress Folded + hi default link netrwCoreDump WarningMsg + hi default link netrwData DiffChange + hi default link netrwLib DiffChange + hi default link netrwMakefile DiffChange + hi default link netrwObj Folded + hi default link netrwTilde Folded + hi default link netrwTmp Folded + hi default link netrwTags Folded endif " Current Syntax: {{{1
--- a/runtime/syntax/opl.vim +++ b/runtime/syntax/opl.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: OPL " Maintainer: Czo <Olivier.Sirol@lip6.fr> -" $Id$ +" $Id: opl.vim,v 1.1 2004/06/13 17:34:11 vimboss Exp $ " Open Psion Language... (EPOC16/EPOC32)
--- a/runtime/syntax/papp.vim +++ b/runtime/syntax/papp.vim @@ -2,7 +2,7 @@ " " Language: papp " Maintainer: Marc Lehmann <pcg@goof.com> -" Last Change: 2003 May 11 +" Last Change: 2009 Nov 11 " Filenames: *.papp *.pxml *.pxsl " URL: http://papp.plan9.de/ @@ -37,6 +37,7 @@ if exists("papp_include_html") syn include @PAppHtml syntax/html.vim endif unlet b:current_syntax + syntax spell default " added by Bram endif if version < 600
--- a/runtime/syntax/po.vim +++ b/runtime/syntax/po.vim @@ -1,10 +1,10 @@ " Vim syntax file " Language: po (gettext) " Maintainer: Dwayne Bailey <dwayne@translate.org.za> -" Last Change: 2008 Jan 08 +" Last Change: 2008 Sep 17 " Contributors: Dwayne Bailey (Most advanced syntax highlighting) " Leonardo Fontenelle (Spell checking) -" Nam SungHyun <namsh@kldp.org> (Original maintainer) +" SungHyun Nam <goweol@gmail.com> (Original maintainer) " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/progress.vim +++ b/runtime/syntax/progress.vim @@ -8,7 +8,7 @@ " Mikhail Kuperblum <mikhail@whasup.com> " John Florian <jflorian@voyager.net> " Last Change: Wed Apr 12 08:55:35 EST 2006 -" $Id$ +" $Id: progress.vim,v 1.3 2006/04/12 21:48:47 vimboss Exp $ " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/prolog.vim +++ b/runtime/syntax/prolog.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: PROLOG " Maintainers: Thomas Koehler <jean-luc@picard.franken.de> -" Last Change: 2008 April 5 -" URL: http://gott-gehabt/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim +" Last Change: 2009 Dec 04 +" URL: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim " There are two sets of highlighting in here: " If the "prolog_highlighting_clean" variable exists, it is rather sparse. @@ -63,7 +63,7 @@ if !exists("prolog_highlighting_clean") syn match prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|<\|>\|=" syn match prologAsIs "===\|\\===\|<=\|=>" - syn match prologNumber "\<[0123456789]*\>" + syn match prologNumber "\<[0123456789]*\>'\@!" syn match prologCommentError "\*/" syn match prologSpecialCharacter ";" syn match prologSpecialCharacter "!"
--- a/runtime/syntax/pyrex.vim +++ b/runtime/syntax/pyrex.vim @@ -2,7 +2,7 @@ " Language: Pyrex " Maintainer: Marco Barisione <marco.bari@people.it> " URL: http://marcobari.altervista.org/pyrex_vim.html -" Last Change: 2004 May 16 +" Last Change: 2009 Nov 09 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded @@ -25,7 +25,7 @@ syn keyword pyrexStatement cdef typ syn keyword pyrexType int long short float double char object void syn keyword pyrexType signed unsigned syn keyword pyrexStructure struct union enum -syn keyword pyrexPrecondit include cimport +syn keyword pyrexInclude include cimport syn keyword pyrexAccess public private property readonly extern " If someome wants Python's built-ins highlighted probably he " also wants Pyrex's built-ins highlighted @@ -35,9 +35,9 @@ endif " This deletes "from" from the keywords and re-adds it as a " match with lower priority than pyrexForFrom -syn clear pythonPreCondit -syn keyword pythonPreCondit import -syn match pythonPreCondit "from" +syn clear pythonInclude +syn keyword pythonInclude import +syn match pythonInclude "from" " With "for[^:]*\zsfrom" VIM does not match "for" anymore, so " I used the slower "\@<=" form @@ -54,7 +54,7 @@ if version >= 508 || !exists("did_pyrex_ HiLink pyrexStatement Statement HiLink pyrexType Type HiLink pyrexStructure Structure - HiLink pyrexPrecondit PreCondit + HiLink pyrexInclude PreCondit HiLink pyrexAccess pyrexStatement if exists("python_highlight_builtins") || exists("pyrex_highlight_builtins") HiLink pyrexBuiltin Function
--- a/runtime/syntax/python.vim +++ b/runtime/syntax/python.vim @@ -1,143 +1,252 @@ " Vim syntax file " Language: Python " Maintainer: Neil Schemenauer <nas@python.ca> -" Updated: 2006-10-15 -" Added Python 2.4 features 2006 May 4 (Dmitry Vasiliev) -" -" Options to control Python syntax highlighting: +" Last Change: 2009-10-13 +" Credits: Zvezdan Petkovic <zpetkovic@acm.org> +" Neil Schemenauer <nas@python.ca> +" Dmitry Vasiliev " -" For highlighted numbers: -" -" let python_highlight_numbers = 1 +" This version is a major rewrite by Zvezdan Petkovic. " -" For highlighted builtin functions: -" -" let python_highlight_builtins = 1 +" - introduced highlighting of doctests +" - updated keywords, built-ins, and exceptions +" - corrected regular expressions for " -" For highlighted standard exceptions: +" * functions +" * decorators +" * strings +" * escapes +" * numbers +" * space error " -" let python_highlight_exceptions = 1 -" -" Highlight erroneous whitespace: +" - corrected synchronization +" - more highlighting is ON by default, except +" - space error highlighting is OFF by default " -" let python_highlight_space_errors = 1 +" Optional highlighting can be controlled using these variables. " -" If you want all possible Python highlighting (the same as setting the -" preceding options): +" let python_no_builtin_highlight = 1 +" let python_no_doctest_code_highlight = 1 +" let python_no_doctest_highlight = 1 +" let python_no_exception_highlight = 1 +" let python_no_number_highlight = 1 +" let python_space_error_highlight = 1 " -" let python_highlight_all = 1 +" All the options above can be switched on together. +" +" let python_highlight_all = 1 " -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded +" For version 5.x: Clear all syntax items. +" For version 6.x: Quit when a syntax file was already loaded. if version < 600 syntax clear elseif exists("b:current_syntax") finish endif - -syn keyword pythonStatement break continue del -syn keyword pythonStatement except exec finally -syn keyword pythonStatement pass print raise -syn keyword pythonStatement return try with -syn keyword pythonStatement global assert -syn keyword pythonStatement lambda yield -syn keyword pythonStatement def class nextgroup=pythonFunction skipwhite -syn match pythonFunction "[a-zA-Z_][a-zA-Z0-9_]*" contained +" Keep Python keywords in alphabetical order inside groups for easy +" comparison with the table in the 'Python Language Reference' +" http://docs.python.org/reference/lexical_analysis.html#keywords. +" Groups are in the order presented in NAMING CONVENTIONS in syntax.txt. +" Exceptions come last at the end of each group (class and def below). +" +" Keywords 'with' and 'as' are new in Python 2.6 +" (use 'from __future__ import with_statement' in Python 2.5). +" +" Some compromises had to be made to support both Python 3.0 and 2.6. +" We include Python 3.0 features, but when a definition is duplicated, +" the last definition takes precedence. +" +" - 'False', 'None', and 'True' are keywords in Python 3.0 but they are +" built-ins in 2.6 and will be highlighted as built-ins below. +" - 'exec' is a built-in in Python 3.0 and will be highlighted as +" built-in below. +" - 'nonlocal' is a keyword in Python 3.0 and will be highlighted. +" - 'print' is a built-in in Python 3.0 and will be highlighted as +" built-in below (use 'from __future__ import print_function' in 2.6) +" +syn keyword pythonStatement False, None, True +syn keyword pythonStatement as assert break continue del exec global +syn keyword pythonStatement lambda nonlocal pass print return with yield +syn keyword pythonStatement class def nextgroup=pythonFunction skipwhite +syn keyword pythonConditional elif else if syn keyword pythonRepeat for while -syn keyword pythonConditional if elif else syn keyword pythonOperator and in is not or -" AS will be a keyword in Python 3 -syn keyword pythonPreCondit import from as -syn match pythonComment "#.*$" contains=pythonTodo,@Spell -syn keyword pythonTodo TODO FIXME XXX contained +syn keyword pythonException except finally raise try +syn keyword pythonInclude from import " Decorators (new in Python 2.4) syn match pythonDecorator "@" display nextgroup=pythonFunction skipwhite +" The zero-length non-grouping match before the function name is +" extremely important in pythonFunction. Without it, everything is +" interpreted as a function inside the contained environment of +" doctests. +" A dot must be allowed because of @MyClass.myfunc decorators. +syn match pythonFunction + \ "\%(\%(def\s\|class\s\|@\)\s*\)\@<=\h\%(\w\|\.\)*" contained -" strings -syn region pythonString matchgroup=Normal start=+[uU]\='+ end=+'+ skip=+\\\\\|\\'+ contains=pythonEscape,@Spell -syn region pythonString matchgroup=Normal start=+[uU]\="+ end=+"+ skip=+\\\\\|\\"+ contains=pythonEscape,@Spell -syn region pythonString matchgroup=Normal start=+[uU]\="""+ end=+"""+ contains=pythonEscape,@Spell -syn region pythonString matchgroup=Normal start=+[uU]\='''+ end=+'''+ contains=pythonEscape,@Spell -syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]'+ end=+'+ skip=+\\\\\|\\'+ contains=@Spell -syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]"+ end=+"+ skip=+\\\\\|\\"+ contains=@Spell -syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]"""+ end=+"""+ contains=@Spell -syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]'''+ end=+'''+ contains=@Spell -syn match pythonEscape +\\[abfnrtv'"\\]+ contained -syn match pythonEscape "\\\o\{1,3}" contained -syn match pythonEscape "\\x\x\{2}" contained -syn match pythonEscape "\(\\u\x\{4}\|\\U\x\{8}\)" contained -syn match pythonEscape "\\$" +syn match pythonComment "#.*$" contains=pythonTodo,@Spell +syn keyword pythonTodo FIXME NOTE NOTES TODO XXX contained + +" Triple-quoted strings can contain doctests. +syn region pythonString + \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" + \ contains=pythonEscape,@Spell +syn region pythonString + \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend + \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell +syn region pythonRawString + \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" + \ contains=@Spell +syn region pythonRawString + \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend + \ contains=pythonSpaceError,pythonDoctest,@Spell + +syn match pythonEscape +\\[abfnrtv'"\\]+ contained +syn match pythonEscape "\\\o\{1,3}" contained +syn match pythonEscape "\\x\x\{2}" contained +syn match pythonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained +" Python allows case-insensitive Unicode IDs: http://www.unicode.org/charts/ +syn match pythonEscape "\\N{\a\+\%(\s\a\+\)*}" contained +syn match pythonEscape "\\$" if exists("python_highlight_all") - let python_highlight_numbers = 1 - let python_highlight_builtins = 1 - let python_highlight_exceptions = 1 - let python_highlight_space_errors = 1 + if exists("python_no_builtin_highlight") + unlet python_no_builtin_highlight + endif + if exists("python_no_doctest_code_highlight") + unlet python_no_doctest_code_highlight + endif + if exists("python_no_doctest_highlight") + unlet python_no_doctest_highlight + endif + if exists("python_no_exception_highlight") + unlet python_no_exception_highlight + endif + if exists("python_no_number_highlight") + unlet python_no_number_highlight + endif + let python_space_error_highlight = 1 endif -if exists("python_highlight_numbers") +" It is very important to understand all details before changing the +" regular expressions below or their order. +" The word boundaries are *not* the floating-point number boundaries +" because of a possible leading or trailing decimal point. +" The expressions below ensure that all valid number literals are +" highlighted, and invalid number literals are not. For example, +" +" - a decimal point in '4.' at the end of a line is highlighted, +" - a second dot in 1.0.0 is not highlighted, +" - 08 is not highlighted, +" - 08e0 or 08j are highlighted, +" +" and so on, as specified in the 'Python Language Reference'. +" http://docs.python.org/reference/lexical_analysis.html#numeric-literals +if !exists("python_no_number_highlight") " numbers (including longs and complex) - syn match pythonNumber "\<0x\x\+[Ll]\=\>" - syn match pythonNumber "\<\d\+[LljJ]\=\>" - syn match pythonNumber "\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>" - syn match pythonNumber "\<\d\+\.\([eE][+-]\=\d\+\)\=[jJ]\=\>" - syn match pythonNumber "\<\d\+\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>" + syn match pythonNumber "\<0[oO]\=\o\+[Ll]\=\>" + syn match pythonNumber "\<0[xX]\x\+[Ll]\=\>" + syn match pythonNumber "\<0[bB][01]\+[Ll]\=\>" + syn match pythonNumber "\<\%([1-9]\d*\|0\)[Ll]\=\>" + syn match pythonNumber "\<\d\+[jJ]\>" + syn match pythonNumber "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" + syn match pythonNumber + \ "\<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@=" + syn match pythonNumber + \ "\%(^\|\W\)\@<=\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>" endif -if exists("python_highlight_builtins") - " builtin functions, types and objects, not really part of the syntax - syn keyword pythonBuiltin True False bool enumerate set frozenset help - syn keyword pythonBuiltin reversed sorted sum - syn keyword pythonBuiltin Ellipsis None NotImplemented __import__ abs - syn keyword pythonBuiltin apply buffer callable chr classmethod cmp - syn keyword pythonBuiltin coerce compile complex delattr dict dir divmod - syn keyword pythonBuiltin eval execfile file filter float getattr globals - syn keyword pythonBuiltin hasattr hash hex id input int intern isinstance - syn keyword pythonBuiltin issubclass iter len list locals long map max - syn keyword pythonBuiltin min object oct open ord pow property range - syn keyword pythonBuiltin raw_input reduce reload repr round setattr - syn keyword pythonBuiltin slice staticmethod str super tuple type unichr - syn keyword pythonBuiltin unicode vars xrange zip +" Group the built-ins in the order in the 'Python Library Reference' for +" easier comparison. +" http://docs.python.org/library/constants.html +" http://docs.python.org/library/functions.html +" http://docs.python.org/library/functions.html#non-essential-built-in-functions +" Python built-in functions are in alphabetical order. +if !exists("python_no_builtin_highlight") + " built-in constants + " 'False', 'True', and 'None' are also reserved words in Python 3.0 + syn keyword pythonBuiltin False True None + syn keyword pythonBuiltin NotImplemented Ellipsis __debug__ + " built-in functions + syn keyword pythonBuiltin abs all any bin bool chr classmethod + syn keyword pythonBuiltin compile complex delattr dict dir divmod + syn keyword pythonBuiltin enumerate eval filter float format + syn keyword pythonBuiltin frozenset getattr globals hasattr hash + syn keyword pythonBuiltin help hex id input int isinstance + syn keyword pythonBuiltin issubclass iter len list locals map max + syn keyword pythonBuiltin min next object oct open ord pow print + syn keyword pythonBuiltin property range repr reversed round set + syn keyword pythonBuiltin setattr slice sorted staticmethod str + syn keyword pythonBuiltin sum super tuple type vars zip __import__ + " Python 2.6 only + syn keyword pythonBuiltin basestring callable cmp execfile file + syn keyword pythonBuiltin long raw_input reduce reload unichr + syn keyword pythonBuiltin unicode xrange + " Python 3.0 only + syn keyword pythonBuiltin ascii bytearray bytes exec memoryview + " non-essential built-in functions; Python 2.6 only + syn keyword pythonBuiltin apply buffer coerce intern endif -if exists("python_highlight_exceptions") - " builtin exceptions and warnings - syn keyword pythonException ArithmeticError AssertionError AttributeError - syn keyword pythonException DeprecationWarning EOFError EnvironmentError - syn keyword pythonException Exception FloatingPointError IOError - syn keyword pythonException ImportError IndentationError IndexError - syn keyword pythonException KeyError KeyboardInterrupt LookupError - syn keyword pythonException MemoryError NameError NotImplementedError - syn keyword pythonException OSError OverflowError OverflowWarning - syn keyword pythonException ReferenceError RuntimeError RuntimeWarning - syn keyword pythonException StandardError StopIteration SyntaxError - syn keyword pythonException SyntaxWarning SystemError SystemExit TabError - syn keyword pythonException TypeError UnboundLocalError UnicodeError - syn keyword pythonException UnicodeEncodeError UnicodeDecodeError - syn keyword pythonException UnicodeTranslateError - syn keyword pythonException UserWarning ValueError Warning WindowsError - syn keyword pythonException ZeroDivisionError +" From the 'Python Library Reference' class hierarchy at the bottom. +" http://docs.python.org/library/exceptions.html +if !exists("python_no_exception_highlight") + " builtin base exceptions (only used as base classes for other exceptions) + syn keyword pythonExceptions BaseException Exception + syn keyword pythonExceptions ArithmeticError EnvironmentError + syn keyword pythonExceptions LookupError + " builtin base exception removed in Python 3.0 + syn keyword pythonExceptions StandardError + " builtin exceptions (actually raised) + syn keyword pythonExceptions AssertionError AttributeError BufferError + syn keyword pythonExceptions EOFError FloatingPointError GeneratorExit + syn keyword pythonExceptions IOError ImportError IndentationError + syn keyword pythonExceptions IndexError KeyError KeyboardInterrupt + syn keyword pythonExceptions MemoryError NameError NotImplementedError + syn keyword pythonExceptions OSError OverflowError ReferenceError + syn keyword pythonExceptions RuntimeError StopIteration SyntaxError + syn keyword pythonExceptions SystemError SystemExit TabError TypeError + syn keyword pythonExceptions UnboundLocalError UnicodeError + syn keyword pythonExceptions UnicodeDecodeError UnicodeEncodeError + syn keyword pythonExceptions UnicodeTranslateError ValueError VMSError + syn keyword pythonExceptions WindowsError ZeroDivisionError + " builtin warnings + syn keyword pythonExceptions BytesWarning DeprecationWarning FutureWarning + syn keyword pythonExceptions ImportWarning PendingDeprecationWarning + syn keyword pythonExceptions RuntimeWarning SyntaxWarning UnicodeWarning + syn keyword pythonExceptions UserWarning Warning endif -if exists("python_highlight_space_errors") +if exists("python_space_error_highlight") " trailing whitespace - syn match pythonSpaceError display excludenl "\S\s\+$"ms=s+1 + syn match pythonSpaceError display excludenl "\s\+$" " mixed tabs and spaces - syn match pythonSpaceError display " \+\t" - syn match pythonSpaceError display "\t\+ " + syn match pythonSpaceError display " \+\t" + syn match pythonSpaceError display "\t\+ " endif -" This is fast but code inside triple quoted strings screws it up. It -" is impossible to fix because the only way to know if you are inside a -" triple quoted string is to start from the beginning of the file. If -" you have a fast machine you can try uncommenting the "sync minlines" -" and commenting out the rest. -syn sync match pythonSync grouphere NONE "):$" -syn sync maxlines=200 -"syn sync minlines=2000 +" Do not spell doctests inside strings. +" Notice that the end of a string, either ''', or """, will end the contained +" doctest too. Thus, we do *not* need to have it as an end pattern. +if !exists("python_no_doctest_highlight") + if !exists("python_no_doctest_code_higlight") + syn region pythonDoctest + \ start="^\s*>>>\s" end="^\s*$" + \ contained contains=ALLBUT,pythonDoctest,@Spell + syn region pythonDoctestValue + \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$" + \ contained + else + syn region pythonDoctest + \ start="^\s*>>>" end="^\s*$" + \ contained contains=@NoSpell + endif +endif + +" Sync at the beginning of class, function, or method definition. +syn sync match pythonSync grouphere NONE "^\s*\%(def\|class\)\s\+\h\w*\s*(" if version >= 508 || !exists("did_python_syn_inits") if version <= 508 @@ -147,35 +256,40 @@ if version >= 508 || !exists("did_python command -nargs=+ HiLink hi def link <args> endif - " The default methods for highlighting. Can be overridden later + " The default highlight links. Can be overridden later. HiLink pythonStatement Statement - HiLink pythonFunction Function HiLink pythonConditional Conditional HiLink pythonRepeat Repeat + HiLink pythonOperator Operator + HiLink pythonException Exception + HiLink pythonInclude Include + HiLink pythonDecorator Define + HiLink pythonFunction Function + HiLink pythonComment Comment + HiLink pythonTodo Todo HiLink pythonString String HiLink pythonRawString String HiLink pythonEscape Special - HiLink pythonOperator Operator - HiLink pythonPreCondit PreCondit - HiLink pythonComment Comment - HiLink pythonTodo Todo - HiLink pythonDecorator Define - if exists("python_highlight_numbers") - HiLink pythonNumber Number + if !exists("python_no_number_highlight") + HiLink pythonNumber Number endif - if exists("python_highlight_builtins") + if !exists("python_no_builtin_highlight") HiLink pythonBuiltin Function endif - if exists("python_highlight_exceptions") - HiLink pythonException Exception + if !exists("python_no_exception_highlight") + HiLink pythonExceptions Structure endif - if exists("python_highlight_space_errors") + if exists("python_space_error_highlight") HiLink pythonSpaceError Error endif + if !exists("python_no_doctest_highlight") + HiLink pythonDoctest Special + HiLink pythonDoctestValue Define + endif delcommand HiLink endif let b:current_syntax = "python" -" vim: ts=8 +" vim:set sw=2 sts=2 ts=8 noet:
--- a/runtime/syntax/rcs.vim +++ b/runtime/syntax/rcs.vim @@ -2,7 +2,7 @@ " Language: RCS file " Maintainer: Dmitry Vasiliev <dima at hlabs dot spb dot ru> " URL: http://www.hlabs.spb.ru/vim/rcs.vim -" Revision: $Id$ +" Revision: $Id: rcs.vim,v 1.2 2006/03/27 16:41:00 vimboss Exp $ " Filenames: *,v " Version: 1.11
--- a/runtime/syntax/readline.vim +++ b/runtime/syntax/readline.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: readline(3) configuration file " Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2007-06-17 +" Latest Revision: 2009-05-25 " readline_has_bash - if defined add support for bash specific " settings/functions @@ -128,6 +128,7 @@ syn keyword readlineFunctions containe \ arrow-key-prefix vi-back-to-indent vi-bword \ vi-bWord vi-eword vi-eWord vi-fword vi-fWord \ vi-next-word + \ vi-movement-mode if exists("readline_has_bash") syn keyword readlineFunctions contained
--- a/runtime/syntax/remind.vim +++ b/runtime/syntax/remind.vim @@ -1,12 +1,13 @@ " Vim syntax file " Language: Remind " Maintainer: Davide Alberani <alberanid@libero.it> -" Last Change: 10 May 2006 -" Version: 0.3 +" Last Change: 18 Sep 2009 +" Version: 0.5 " URL: http://erlug.linux.it/~da/vim/syntax/remind.vim " -" remind is a sophisticated reminder service; you can download remind from: -" http://www.roaringpenguin.com/penguin/open_source_remind.php +" remind is a sophisticated reminder service +" you can download remind from: +" http://www.roaringpenguin.com/penguin/open_source_remind.php if version < 600 syntax clear @@ -14,24 +15,30 @@ elseif exists("b:current_syntax") finish endif -" shut case off +" shut case off. syn case ignore syn keyword remindCommands REM OMIT SET FSET UNSET -syn keyword remindExpiry UNTIL SCANFROM SCAN WARN SCHED +syn keyword remindExpiry UNTIL FROM SCANFROM SCAN WARN SCHED syn keyword remindTag PRIORITY TAG syn keyword remindTimed AT DURATION syn keyword remindMove ONCE SKIP BEFORE AFTER -syn keyword remindSpecial INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP +syn keyword remindSpecial INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP COLOR syn keyword remindRun MSG MSF RUN CAL SATISFY SPECIAL PS PSFILE SHADE MOON syn keyword remindConditional IF ELSE ENDIF IFTRIG +syn keyword remindDebug DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE syn match remindComment "#.*$" syn region remindString start=+'+ end=+'+ skip=+\\\\\|\\'+ oneline syn region remindString start=+"+ end=+"+ skip=+\\\\\|\\"+ oneline -syn keyword remindDebug DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE syn match remindVar "\$[_a-zA-Z][_a-zA-Z0-9]*" syn match remindSubst "%[^ ]" syn match remindAdvanceNumber "\(\*\|+\|-\|++\|--\)[0-9]\+" +" XXX: use different separators for dates and times? +syn match remindDateSeparators "[/:@\.-]" contained +syn match remindTimes "[0-9]\{1,2}[:\.][0-9]\{1,2}" contains=remindDateSeparators +" XXX: why not match only valid dates? Ok, checking for 'Feb the 30' would +" be impossible, but at least check for valid months and times. +syn match remindDates "'[0-9]\{4}[/-][0-9]\{1,2}[/-][0-9]\{1,2}\(@[0-9]\{1,2}[:\.][0-9]\{1,2}\)\?'" contains=remindDateSeparators " This will match trailing whitespaces that seem to break rem2ps. " Courtesy of Michael Dunn. syn match remindWarning display excludenl "\S\s\+$"ms=s+1 @@ -54,11 +61,14 @@ if version >= 508 || !exists("did_remind HiLink remindRun Function HiLink remindConditional Conditional HiLink remindComment Comment + HiLink remindTimes String HiLink remindString String HiLink remindDebug Debug HiLink remindVar Identifier HiLink remindSubst Constant HiLink remindAdvanceNumber Number + HiLink remindDateSeparators Comment + HiLink remindDates String HiLink remindWarning Error delcommand HiLink
--- a/runtime/syntax/rhelp.vim +++ b/runtime/syntax/rhelp.vim @@ -1,13 +1,14 @@ " Vim syntax file " Language: R Help File " Maintainer: Johannes Ranke <jranke@uni-bremen.de> -" Last Change: 2008 Apr 10 -" Version: 0.7.1 -" SVN: $Id$ +" Last Change: 2009 Mai 12 +" Version: 0.7.2 +" SVN: $Id: rhelp.vim 86 2009-05-12 19:23:47Z ranke $ " Remarks: - Now includes R syntax highlighting in the appropriate " sections if an r.vim file is in the same directory or in the " default debian location. " - There is no Latex markup in equations +" - Thanks to Will Gray for finding and fixing a bug " Version Clears: {{{1 " For version 5.x: Clear all syntax items @@ -57,7 +58,7 @@ syn match rhelpKeyword ">" " Links {{{1 syn region rhelpLink matchgroup=rhelpSection start="\\link{" end="}" contained keepend -syn region rhelpLink matchgroup=rhelpSection start="\\link\[.*\]{" end="}" contained keepend +syn region rhelpLink matchgroup=rhelpSection start="\\link\[.\{-}\]{" end="}" contained keepend syn region rhelpLink matchgroup=rhelpSection start="\\linkS4class{" end="}" contained keepend " Type Styles {{{1
--- a/runtime/syntax/rnoweb.vim +++ b/runtime/syntax/rnoweb.vim @@ -1,9 +1,9 @@ " Vim syntax file " Language: R noweb Files " Maintainer: Johannes Ranke <jranke@uni-bremen.de> -" Last Change: 2007 Mr 30 -" Version: 0.8 -" SVN: $Id$ +" Last Change: 2009 May 05 +" Version: 0.9 +" SVN: $Id: rnoweb.vim 84 2009-05-03 19:52:47Z ranke $ " Remarks: - This file is inspired by the proposal of " Fernando Henrique Ferraz Pereira da Rosa <feferraz@ime.usp.br> " http://www.ime.usp.br/~feferraz/en/sweavevim.html @@ -25,6 +25,7 @@ runtime syntax/tex.vim unlet b:current_syntax syn cluster texMatchGroup add=@rnoweb +syn cluster texMathMatchGroup add=rnowebSexpr syn cluster texEnvGroup add=@rnoweb syn cluster texFoldGroup add=@rnoweb syn cluster texDocGroup add=@rnoweb
--- a/runtime/syntax/rst.vim +++ b/runtime/syntax/rst.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: reStructuredText documentation format " Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2006-07-04 +" Latest Revision: 2009-05-25 if exists("b:current_syntax") finish @@ -12,12 +12,9 @@ set cpo&vim syn case ignore -" FIXME: The problem with these two is that Vim doesn’t seem to like -" matching across line boundaries. -" -" syn match rstSections /^.*\n[=`:.'"~^_*+#-]\+$/ +syn match rstSections "^\%(\([=`:.'"~^_*+#-]\)\1\+\n\)\=.\+\n\([=`:.'"~^_*+#-]\)\2\+$" -" syn match rstTransition /^\s*[=`:.'"~^_*+#-]\{4,}\s*$/ +syn match rstTransition /^[=`:.'"~^_*+#-]\{4,}\s*$/ syn cluster rstCruft contains=rstEmphasis,rstStrongEmphasis, \ rstInterpretedText,rstInlineLiteral,rstSubstitutionReference, @@ -144,8 +141,8 @@ syn sync minlines=50 hi def link rstTodo Todo hi def link rstComment Comment -"hi def link rstSections Type -"hi def link rstTransition Type +hi def link rstSections Type +hi def link rstTransition Type hi def link rstLiteralBlock String hi def link rstQuotedLiteralBlock String hi def link rstDoctestBlock PreProc
--- a/runtime/syntax/ruby.vim +++ b/runtime/syntax/ruby.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Ruby " Maintainer: Doug Kearns <dougkearns@gmail.com> -" Info: $Id$ +" Info: $Id: ruby.vim,v 1.152 2008/06/29 04:33:41 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
--- a/runtime/syntax/samba.vim +++ b/runtime/syntax/samba.vim @@ -2,8 +2,10 @@ " Language: samba configuration files (smb.conf) " Maintainer: Rafael Garcia-Suarez <rgarciasuarez@free.fr> " URL: http://rgarciasuarez.free.fr/vim/syntax/samba.vim -" Last change: 2004 September 21 - +" Last change: 2009 Aug 06 +" +" New maintainer wanted! +" " Don't forget to run your config file through testparm(1)! " For version 5.x: Clear all syntax items @@ -51,7 +53,7 @@ syn keyword sambaKeyword contained messa syn keyword sambaKeyword contained netbios nis notify nt null offset ok ole syn keyword sambaKeyword contained only open oplock oplocks options order os syn keyword sambaKeyword contained output packet page panic passwd password -syn keyword sambaKeyword contained passwords path permissions pipe port +syn keyword sambaKeyword contained passwords path permissions pipe port ports syn keyword sambaKeyword contained postexec postscript prediction preexec syn keyword sambaKeyword contained prefered preferred preload preserve print syn keyword sambaKeyword contained printable printcap printer printers
--- a/runtime/syntax/scheme.vim +++ b/runtime/syntax/scheme.vim @@ -1,6 +1,6 @@ " Vim syntax file -" Language: Scheme (R5RS) -" Last Change: 2007 Jun 16 +" Language: Scheme (R5RS + some R6RS extras) +" Last Change: 2009 Nov 27 " Maintainer: Sergey Khorev <sergey.khorev@gmail.com> " Original author: Dirk van Deun <dirk@igwe.vub.ac.be> @@ -26,8 +26,8 @@ syn case ignore " Fascist highlighting: everything that doesn't fit the rules is an error... -syn match schemeError oneline ![^ \t()\[\]";]*! -syn match schemeError oneline ")" +syn match schemeError ![^ \t()\[\]";]*! +syn match schemeError ")" " Quoted and backquoted stuff @@ -71,6 +71,8 @@ syn keyword schemeSyntax lambda and or i syn keyword schemeSyntax begin do delay set! else => syn keyword schemeSyntax quote quasiquote unquote unquote-splicing syn keyword schemeSyntax define-syntax let-syntax letrec-syntax syntax-rules +" R6RS +syn keyword schemeSyntax define-record-type fields protocol syn keyword schemeFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car! syn keyword schemeFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr @@ -109,30 +111,39 @@ syn keyword schemeFunc char-ready? load syn keyword schemeFunc dynamic-wind port? values call-with-values syn keyword schemeFunc scheme-report-environment null-environment syn keyword schemeFunc interaction-environment +" R6RS +syn keyword schemeFunc make-eq-hashtable make-eqv-hashtable make-hashtable +syn keyword schemeFunc hashtable? hashtable-size hashtable-ref hashtable-set! +syn keyword schemeFunc hashtable-delete! hashtable-contains? hashtable-update! +syn keyword schemeFunc hashtable-copy hashtable-clear! hashtable-keys +syn keyword schemeFunc hashtable-entries hashtable-equivalence-function hashtable-hash-function +syn keyword schemeFunc hashtable-mutable? equal-hash string-hash string-ci-hash symbol-hash +syn keyword schemeFunc find for-all exists filter partition fold-left fold-right +syn keyword schemeFunc remp remove remv remq memp assp cons* " ... so that a single + or -, inside a quoted context, would not be " interpreted as a number (outside such contexts, it's a schemeFunc) -syn match schemeDelimiter oneline !\.[ \t\[\]()";]!me=e-1 -syn match schemeDelimiter oneline !\.$! +syn match schemeDelimiter !\.[ \t\[\]()";]!me=e-1 +syn match schemeDelimiter !\.$! " ... and a single dot is not a number but a delimiter " This keeps all other stuff unhighlighted, except *stuff* and <stuff>: -syn match schemeOther oneline ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*, -syn match schemeError oneline ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*, +syn match schemeOther ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*, +syn match schemeError ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*, -syn match schemeOther oneline "\.\.\." -syn match schemeError oneline !\.\.\.[^ \t\[\]()";]\+! +syn match schemeOther "\.\.\." +syn match schemeError !\.\.\.[^ \t\[\]()";]\+! " ... a special identifier -syn match schemeConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t\[\]()";],me=e-1 -syn match schemeConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*$, -syn match schemeError oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*, +syn match schemeConstant ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*[ \t\[\]()";],me=e-1 +syn match schemeConstant ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*$, +syn match schemeError ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*, -syn match schemeConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t\[\]()";],me=e-1 -syn match schemeConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$, -syn match schemeError oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*, +syn match schemeConstant ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t\[\]()";],me=e-1 +syn match schemeConstant ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$, +syn match schemeError ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*, " Non-quoted lists, and strings: @@ -153,23 +164,27 @@ syn match schemeComment ";.*$" " Writing out the complete description of Scheme numerals without " using variables is a day's work for a trained secretary... -syn match schemeOther oneline ![+-][ \t\[\]()";]!me=e-1 -syn match schemeOther oneline ![+-]$! +syn match schemeOther ![+-][ \t\[\]()";]!me=e-1 +syn match schemeOther ![+-]$! " " This is a useful lax approximation: -syn match schemeNumber oneline "[-#+0-9.][-#+/0-9a-f@i.boxesfdl]*" -syn match schemeError oneline ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t\[\]()";][^ \t\[\]()";]*! +syn match schemeNumber "[-#+.]\=[0-9][-#+/0-9a-f@i.boxesfdl]*" +syn match schemeError ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t\[\]()";][^ \t\[\]()";]*! -syn match schemeBoolean oneline "#[tf]" -syn match schemeError oneline !#[tf][^ \t\[\]()";]\+! +syn match schemeBoolean "#[tf]" +syn match schemeError !#[tf][^ \t\[\]()";]\+! -syn match schemeChar oneline "#\\" -syn match schemeChar oneline "#\\." -syn match schemeError oneline !#\\.[^ \t\[\]()";]\+! -syn match schemeChar oneline "#\\space" -syn match schemeError oneline !#\\space[^ \t\[\]()";]\+! -syn match schemeChar oneline "#\\newline" -syn match schemeError oneline !#\\newline[^ \t\[\]()";]\+! +syn match schemeCharacter "#\\" +syn match schemeCharacter "#\\." +syn match schemeError !#\\.[^ \t\[\]()";]\+! +syn match schemeCharacter "#\\space" +syn match schemeError !#\\space[^ \t\[\]()";]\+! +syn match schemeCharacter "#\\newline" +syn match schemeError !#\\newline[^ \t\[\]()";]\+! + +" R6RS +syn match schemeCharacter "#\\x[0-9a-fA-F]\+" + if exists("b:is_mzscheme") || exists("is_mzscheme") " MzScheme extensions @@ -177,11 +192,11 @@ if exists("b:is_mzscheme") || exists("is syn region schemeComment start="#|" end="|#" " #%xxx are the special MzScheme identifiers - syn match schemeOther oneline "#%[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" + syn match schemeOther "#%[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" " anything limited by |'s is identifier - syn match schemeOther oneline "|[^|]\+|" + syn match schemeOther "|[^|]\+|" - syn match schemeChar oneline "#\\\%(return\|tab\)" + syn match schemeCharacter "#\\\%(return\|tab\)" " Modules require stmt syn keyword schemeExtSyntax module require dynamic-require lib prefix all-except prefix-all-except rename @@ -234,8 +249,8 @@ if exists("b:is_chicken") || exists("is_ " multiline comment syntax region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeMultilineComment - syn match schemeOther oneline "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" - syn match schemeExtSyntax oneline "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" + syn match schemeOther "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" + syn match schemeExtSyntax "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" syn keyword schemeExtSyntax unit uses declare hide foreign-declare foreign-parse foreign-parse/spec syn keyword schemeExtSyntax foreign-lambda foreign-lambda* define-external define-macro load-library @@ -266,7 +281,7 @@ if exists("b:is_chicken") || exists("is_ endif " suggested by Alex Queiroz - syn match schemeExtSyntax oneline "#![-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" + syn match schemeExtSyntax "#![-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" syn region schemeString start=+#<#\s*\z(.*\)+ end=+^\z1$+ endif @@ -290,7 +305,7 @@ if version >= 508 || !exists("did_scheme HiLink schemeFunc Function HiLink schemeString String - HiLink schemeChar Character + HiLink schemeCharacter Character HiLink schemeNumber Number HiLink schemeBoolean Boolean
new file mode 100644 --- /dev/null +++ b/runtime/syntax/sdc.vim @@ -0,0 +1,41 @@ +" Vim syntax file +" Language: SDC - Synopsys Design Constraints +" Maintainer: Maurizio Tranchero - maurizio.tranchero@gmail.com +" Last Change: Thu Mar 25 17:35:16 CET 2009 +" Credits: based on TCL Vim syntax file +" Version: 0.3 + +" Quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" Read the TCL syntax to start with +runtime! syntax/tcl.vim + +" SDC-specific keywords +syn keyword sdcCollections foreach_in_collection +syn keyword sdcObjectsQuery get_clocks get_ports +syn keyword sdcObjectsInfo get_point_info get_node_info get_path_info +syn keyword sdcObjectsInfo get_timing_paths set_attribute +syn keyword sdcConstraints set_false_path +syn keyword sdcNonIdealities set_min_delay set_max_delay +syn keyword sdcNonIdealities set_input_delay set_output_delay +syn keyword sdcNonIdealities set_load set_min_capacitance set_max_capacitance +syn keyword sdcCreateOperations create_clock create_timing_netlist update_timing_netlist + +" command flags highlighting +syn match sdcFlags "[[:space:]]-[[:alpha:]]*\>" + +" Define the default highlighting. +hi def link sdcCollections Repeat +hi def link sdcObjectsInfo Operator +hi def link sdcCreateOperations Operator +hi def link sdcObjectsQuery Operator +hi def link sdcConstraints Operator +hi def link sdcNonIdealities Operator +hi def link sdcFlags Special + +let b:current_syntax = "sdc" + +" vim: ts=8
--- a/runtime/syntax/sgml.vim +++ b/runtime/syntax/sgml.vim @@ -3,7 +3,7 @@ " Maintainer: Johannes Zellner <johannes@zellner.org> " Last Change: Tue, 27 Apr 2004 15:05:21 CEST " Filenames: *.sgml,*.sgm -" $Id$ +" $Id: sgml.vim,v 1.1 2004/06/13 17:52:57 vimboss Exp $ " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/sgmllnx.vim +++ b/runtime/syntax/sgmllnx.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: SGML-linuxdoc (supported by old sgmltools-1.x) " (for more information, visit www.sgmltools.org) -" Maintainer: Nam SungHyun <namsh@kldp.org> -" Last Change: 2001 Apr 26 +" Maintainer: SungHyun Nam <goweol@gmail.com> +" Last Change: 2008 Sep 17 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded
--- a/runtime/syntax/sh.vim +++ b/runtime/syntax/sh.vim @@ -2,8 +2,8 @@ " Language: shell (sh) Korn shell (ksh) bash (sh) " Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz> " Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int> -" Last Change: Jul 11, 2008 -" Version: 102 +" Last Change: Nov 17, 2009 +" Version: 110 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax " For options and settings, please use: :help ft-sh-syntax " This file includes many ideas from ric Brunet (eric.brunet@ens.fr) @@ -67,13 +67,13 @@ syn case match " Clusters: contains=@... clusters {{{1 "================================== -syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError +syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError,shOK if exists("b:is_kornshell") syn cluster ErrorList add=shDTestError endif -syn cluster shArithParenList contains=shArithmetic,shDeref,shDerefSimple,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen +syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shDeref,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement syn cluster shArithList contains=@shArithParenList,shParenError -syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial +syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq syn cluster shColonList contains=@shCaseList syn cluster shCommandSubList contains=shArithmetic,shDeref,shDerefSimple,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shSingleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias,shTest,shCtrlSeq,shSpecial @@ -84,7 +84,7 @@ syn cluster shDerefVarList contains=shDe syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shExpr,shExSingleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest -syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq +syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq if exists("b:is_kornshell") || exists("b:is_bash") syn cluster shFunctionList add=shRepeat syn cluster shFunctionList add=shDblBrace,shDblParen @@ -94,19 +94,18 @@ syn cluster shHereList contains=shBeginH syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shRedir,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial syn cluster shLoopList contains=@shCaseList,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac,shTest,@shErrorList,shSet -syn cluster shSubShList contains=@shCaseList,shOperator +syn cluster shSubShList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator syn cluster shTestList contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shDoubleQuote,shExpr,shExpr,shNumber,shOperator,shExSingleQuote,shSingleQuote,shTestOpr,shTest,shCtrlSeq - " Echo: {{{1 " ==== " This one is needed INSIDE a CommandSub, so that `echo bla` be correct -syn region shEcho matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment -syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment -syn match shEchoQuote contained '\%(\\\\\)*\\["`']' +syn region shEcho matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment +syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment +syn match shEchoQuote contained '\%(\\\\\)*\\["`'()]' " This must be after the strings, so that ... \" will be correct -syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shDoubleQuote,shCharClass,shCtrlSeq +syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shDoubleQuote,shCharClass,shCtrlSeq " Alias: {{{1 " ===== @@ -125,6 +124,7 @@ syn match shCaseError ";;" syn match shEsacError "\<esac\>" syn match shCurlyError "}" syn match shParenError ")" +syn match shOK '\.\(done\|fi\|in\|esac\)' if exists("b:is_kornshell") syn match shDTestError "]]" endif @@ -152,14 +152,13 @@ syn match shPattern "\<\S\+\())\)\@=" " Subshells: {{{1 " ========== -syn region shExpr transparent matchgroup=shExprRegion start="{" end="}" contains=@shExprList2 -syn region shSubSh transparent matchgroup=shSubShRegion start="(" end=")" contains=@shSubShList +syn region shExpr transparent matchgroup=shExprRegion start="{" end="}" contains=@shExprList2 nextgroup=shMoreSpecial +syn region shSubSh transparent matchgroup=shSubShRegion start="(" end=")" contains=@shSubShList nextgroup=shMoreSpecial " Tests: {{{1 "======= -"syn region shExpr transparent matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList -syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList -syn region shTest transparent matchgroup=shStatement start="\<test\>" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1 +syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList,shSpecial +syn region shTest transparent matchgroup=shStatement start="\<test\s" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1 syn match shTestOpr contained "<=\|>=\|!=\|==\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]" syn match shTestOpr contained '=' skipwhite nextgroup=shTestDoubleQuote,shTestSingleQuote,shTestPattern syn match shTestPattern contained '\w\+' @@ -203,10 +202,11 @@ syn match shComma contained "," " ==== syn match shCaseBar contained skipwhite "\(^\|[^\\]\)\(\\\\\)*\zs|" nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote syn match shCaseStart contained skipwhite skipnl "(" nextgroup=shCase,shCaseBar -syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment if (g:sh_fold_enabled % (s:sh_fold_ifdofor * 2))/s:sh_fold_ifdofor + syn region shCase fold contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment syn region shCaseEsac fold matchgroup=shConditional start="\<case\>" end="\<esac\>" contains=@shCaseEsacList else + syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment syn region shCaseEsac matchgroup=shConditional start="\<case\>" end="\<esac\>" contains=@shCaseEsacList endif syn keyword shCaseIn contained skipwhite skipnl in nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote @@ -218,6 +218,7 @@ endif syn region shCaseSingleQuote matchgroup=shOperator start=+'+ end=+'+ contains=shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained syn region shCaseDoubleQuote matchgroup=shOperator start=+"+ skip=+\\\\\|\\.+ end=+"+ contains=@shDblQuoteList,shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained syn region shCaseCommandSub start=+`+ skip=+\\\\\|\\.+ end=+`+ contains=@shCommandSubList skipwhite skipnl nextgroup=shCaseBar contained +syn region shCaseRange matchgroup=Delimiter start=+\[+ skip=+\\\\+ end=+]+ contained " Misc: {{{1 "====== @@ -256,34 +257,36 @@ endif syn match shSource "^\.\s" syn match shSource "\s\.\s" -syn region shColon start="^\s*:" end="$\|" end="#"me=e-1 contains=@shColonList +"syn region shColon start="^\s*:" end="$" end="\s#"me=e-2 contains=@shColonList +syn region shColon start="^\s*\zs:" end="$" end="\s#"me=e-2 " String And Character Constants: {{{1 "================================ syn match shNumber "-\=\<\d\+\>#\=" syn match shCtrlSeq "\\\d\d\d\|\\[abcfnrtv0]" contained if exists("b:is_bash") - syn match shSpecial "\\\o\o\o\|\\x\x\x\|\\c.\|\\[abefnrtv]" contained + syn match shSpecial "\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained endif if exists("b:is_bash") syn region shExSingleQuote matchgroup=shOperator start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial else syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial endif -syn region shSingleQuote matchgroup=shOperator start=+'+ end=+'+ contains=shStringSpecial,@Spell +syn region shSingleQuote matchgroup=shOperator start=+'+ end=+'+ contains=@Spell syn region shDoubleQuote matchgroup=shOperator start=+"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,@Spell syn match shStringSpecial "[^[:print:] \t]" contained syn match shStringSpecial "\%(\\\\\)*\\[\\"'`$()#]" -syn match shSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" +syn match shSpecial "[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shMoreSpecial syn match shSpecial "^\%(\\\\\)*\\[\\"'`$()#]" +syn match shMoreSpecial "\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shMoreSpecial contained " Comments: {{{1 "========== -syn cluster shCommentGroup contains=shTodo,@Spell -syn keyword shTodo contained COMBAK FIXME TODO XXX -syn match shComment "^\s*\zs#.*$" contains=@shCommentGroup -syn match shComment "\s\zs#.*$" contains=@shCommentGroup -syn match shQuickComment contained "#.*$" +syn cluster shCommentGroup contains=shTodo,@Spell +syn keyword shTodo contained COMBAK FIXME TODO XXX +syn match shComment "^\s*\zs#.*$" contains=@shCommentGroup +syn match shComment "\s\zs#.*$" contains=@shCommentGroup +syn match shQuickComment contained "#.*$" " Here Documents: {{{1 " ========================================= @@ -338,13 +341,13 @@ syn match shSetOption "\s\zs[-+][a-zA-Z syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shSetIdentifier syn match shSetIdentifier "=" contained nextgroup=shPattern,shDeref,shDerefSimple,shDoubleQuote,shSingleQuote,shExSingleQuote if exists("b:is_bash") - syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze#\|=" contains=@shIdList - syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="\ze[;|)]\|$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList + syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList + syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="\ze[;|)]\|$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList elseif exists("b:is_kornshell") - syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList - syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList + syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList + syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList else - syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList + syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList endif " Functions: {{{1 @@ -492,7 +495,7 @@ hi def link shCaseIn shConditional hi def link shCaseSingleQuote shSingleQuote hi def link shCaseStart shConditional hi def link shCmdSubRegion shShellVariables -hi def link shColon shStatement +hi def link shColon shComment hi def link shDerefOp shOperator hi def link shDerefPOL shDerefOp hi def link shDerefPPS shDerefOp @@ -511,6 +514,7 @@ hi def link shFunction Function hi def link shHereDoc shString hi def link shHerePayload shHereDoc hi def link shLoop shStatement +hi def link shMoreSpecial shSpecial hi def link shOption shCommandSub hi def link shPattern shString hi def link shParen shArithmetic
--- a/runtime/syntax/sisu.vim +++ b/runtime/syntax/sisu.vim @@ -1,6 +1,6 @@ "SiSU Vim syntax file "SiSU Maintainer: Ralph Amissah <ralph@amissah.com> -"SiSU Markup: SiSU (sisu-0.66.0, 2008-02-24) +"SiSU Markup: SiSU (sisu-0.69.0, 2008-09-16) "(originally looked at Ruby Vim by Mirko Nasato) if version < 600 @@ -81,6 +81,7 @@ syn region sisu_normal contains=sisu_str syn region sisu_comment matchgroup=sisu_comment start="^%\{1,2\} " end="$" "font face curly brackets "syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline +syn region sisu_index matchgroup=sisu_index_block start="^={" end="}" syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*" syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!" syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_" @@ -162,7 +163,6 @@ hi def link sisu_linked String hi def link sisu_fontface Include hi def link sisu_strikeout DiffDelete hi def link sisu_content_alt Special -hi def link sisu_sem_content String hi def link sisu_sem_content SpecialKey hi def link sisu_sem_block Special hi def link sisu_sem_marker Visual @@ -173,6 +173,8 @@ hi def link sisu_sem_ex_marker_block Fol hi def link sisu_sem_ex_content Comment "hi def link sisu_sem_ex_content SpecialKey hi def link sisu_sem_ex_block Comment +hi def link sisu_index SpecialKey +hi def link sisu_index_block Visual hi def link sisu_content_endnote Special hi def link sisu_control Define hi def link sisu_ocn Include
--- a/runtime/syntax/spec.vim +++ b/runtime/syntax/spec.vim @@ -1,8 +1,7 @@ " Filename: spec.vim " Purpose: Vim syntax file " Language: SPEC: Build/install scripts for Linux RPM packages -" Maintainer: Donovan Rebbechi elflord@pegasus.rutgers.edu -" URL: http://pegasus.rutgers.edu/~elflord/vim/syntax/spec.vim +" Maintainer: Donovan Rebbechi elflord@panix.com " Last Change: Fri Dec 3 11:54 EST 2004 Marcin Dalecki " For version 5.x: Clear all syntax items
--- a/runtime/syntax/splint.vim +++ b/runtime/syntax/splint.vim @@ -2,8 +2,8 @@ " Language: splint (C with lclint/splint Annotations) " Maintainer: Ralf Wildenhues <Ralf.Wildenhues@gmx.de> " Splint Home: http://www.splint.org/ -" Last Change: $Date$ -" $Revision$ +" Last Change: $Date: 2004/06/13 20:08:47 $ +" $Revision: 1.1 $ " Note: Splint annotated files are not detected by default. " If you want to use this file for highlighting C code,
--- a/runtime/syntax/spyce.vim +++ b/runtime/syntax/spyce.vim @@ -2,7 +2,7 @@ " Language: SPYCE " Maintainer: Rimon Barr <rimon AT acm DOT org> " URL: http://spyce.sourceforge.net -" Last Change: 2003 May 11 +" Last Change: 2009 Nov 11 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded @@ -25,6 +25,7 @@ if version < 600 else runtime! syntax/html.vim unlet b:current_syntax + syntax spell default " added by Bram endif " include python
--- a/runtime/syntax/sqlanywhere.vim +++ b/runtime/syntax/sqlanywhere.vim @@ -2,10 +2,11 @@ " Vim syntax file " Language: SQL, Adaptive Server Anywhere " Maintainer: David Fishburn <fishburn at ianywhere dot com> -" Last Change: Tue 29 Jan 2008 12:54:19 PM Eastern Standard Time -" Version: 10.0.1 +" Last Change: 2009 Mar 15 +" Version: 11.0.1 -" Description: Updated to Adaptive Server Anywhere 10.0.1 +" Description: Updated to Adaptive Server Anywhere 11.0.1 +" Updated to Adaptive Server Anywhere 10.0.1 " Updated to Adaptive Server Anywhere 9.0.2 " Updated to Adaptive Server Anywhere 9.0.1 " Updated to Adaptive Server Anywhere 9.0.0 @@ -54,20 +55,24 @@ syn keyword sqlFunction get_identity lo syn keyword sqlFunction strtouuid varexists " 9.0.1 functions -syn keyword sqlFunction acos asin atan atn2 cast ceiling convert cos cot +syn keyword sqlFunction acos asin atan atn2 cast ceiling convert cos cot syn keyword sqlFunction char_length coalesce dateformat datetime degrees exp -syn keyword sqlFunction floor getdate insertstr +syn keyword sqlFunction floor getdate insertstr syn keyword sqlFunction log log10 lower mod pi power -syn keyword sqlFunction property radians replicate round sign sin +syn keyword sqlFunction property radians replicate round sign sin syn keyword sqlFunction sqldialect tan truncate truncnum syn keyword sqlFunction base64_encode base64_decode syn keyword sqlFunction hash compress decompress encrypt decrypt +" 11.0.1 functions +syn keyword sqlFunction connection_extended_property text_handle_vector_match +syn keyword sqlFunction read_client_file write_client_file + " string functions syn keyword sqlFunction ascii char left ltrim repeat syn keyword sqlFunction space right rtrim trim lcase ucase syn keyword sqlFunction locate charindex patindex replace -syn keyword sqlFunction errormsg csconvert +syn keyword sqlFunction errormsg csconvert " property functions syn keyword sqlFunction db_id db_name property_name @@ -358,125 +363,135 @@ syn keyword sqlFunction next_http_heade syn keyword sqlFunction sa_set_http_header sa_set_http_option syn keyword sqlFunction sa_http_variable_info sa_http_header_info -" http functions 9.0.1 +" http functions 9.0.1 syn keyword sqlFunction http_encode http_decode syn keyword sqlFunction html_encode html_decode " keywords -syn keyword sqlKeyword absolute accent action activ add address after -syn keyword sqlKeyword algorithm allow_dup_row -syn keyword sqlKeyword alter and any as append asc ascii ase at atomic -syn keyword sqlKeyword attach attended audit authorization +syn keyword sqlKeyword absolute accent action active add address aes_decrypt +syn keyword sqlKeyword after aggregate algorithm allow_dup_row allowed +syn keyword sqlKeyword alter and ansi_substring any as append apply asc ascii ase +syn keyword sqlKeyword assign at atan2 atomic attach attended audit authorization syn keyword sqlKeyword autoincrement autostop batch bcp before -syn keyword sqlKeyword between blank blanks block -syn keyword sqlKeyword both bottom unbounded break bufferpool +syn keyword sqlKeyword between bit_and bit_length bit_or bit_substr bit_xor +syn keyword sqlKeyword blank blanks block +syn keyword sqlKeyword both bottom unbounded break breaker bufferpool syn keyword sqlKeyword build bulk by byte bytes cache calibrate calibration syn keyword sqlKeyword cancel capability cascade cast -syn keyword sqlKeyword catalog changes char char_convert check checksum +syn keyword sqlKeyword catalog ceil changes char char_convert check checksum syn keyword sqlKeyword class classes client cmp -syn keyword sqlKeyword cluster clustered collation column columns +syn keyword sqlKeyword cluster clustered collation +syn keyword sqlKeyword column columns syn keyword sqlKeyword command comment committed comparisons syn keyword sqlKeyword compatible component compressed compute computes -syn keyword sqlKeyword concat confirm conflict connection +syn keyword sqlKeyword concat configuration confirm conflict connection syn keyword sqlKeyword console consolidate consolidated -syn keyword sqlKeyword constraint constraints continue -syn keyword sqlKeyword convert copy count crc cross cube +syn keyword sqlKeyword constraint constraints content continue +syn keyword sqlKeyword convert coordinator copy count count_set_bits +syn keyword sqlKeyword crc createtime cross cube cume_dist syn keyword sqlKeyword current cursor data data database syn keyword sqlKeyword current_timestamp current_user -syn keyword sqlKeyword datatype dba dbfile -syn keyword sqlKeyword dbspace dbspacename debug decoupled -syn keyword sqlKeyword decrypted default defaults deferred definition +syn keyword sqlKeyword databases datatype dba dbfile +syn keyword sqlKeyword dbspace dbspaces dbspacename debug decoupled +syn keyword sqlKeyword decrypted default defaults default_dbspace deferred +syn keyword sqlKeyword definer definition syn keyword sqlKeyword delay deleting delimited dependencies desc syn keyword sqlKeyword description detach deterministic directory -syn keyword sqlKeyword disable disabled distinct do domain download +syn keyword sqlKeyword disable disabled distinct do domain download duplicate syn keyword sqlKeyword dsetpass dttm dynamic each editproc ejb -syn keyword sqlKeyword else elseif enable encapsulated encrypted end -syn keyword sqlKeyword encoding endif engine erase error escape escapes event -syn keyword sqlKeyword every except exception exclude exclusive exec -syn keyword sqlKeyword existing exists expanded express +syn keyword sqlKeyword else elseif empty enable encapsulated encrypted end +syn keyword sqlKeyword encoding endif engine environment erase error escape escapes event +syn keyword sqlKeyword event_parameter every except exception exclude excluded exclusive exec +syn keyword sqlKeyword existing exists expanded expiry express exprtype extended_property syn keyword sqlKeyword external externlogin factor failover false -syn keyword sqlKeyword fastfirstrow fieldproc file filler -syn keyword sqlKeyword fillfactor finish first first_keyword -syn keyword sqlKeyword following force foreign format -syn keyword sqlKeyword freepage french fresh full function go global -syn keyword sqlKeyword group handler hash having header hexadecimal -syn keyword sqlKeyword hidden high history hold holdlock -syn keyword sqlKeyword hours id identified identity ignore +syn keyword sqlKeyword fastfirstrow fieldproc file files filler +syn keyword sqlKeyword fillfactor finish first first_keyword first_value +syn keyword sqlKeyword following force foreign format forxml forxml_sep fp frame +syn keyword sqlKeyword freepage french fresh full function gb get_bit go global +syn keyword sqlKeyword group handler hash having header hexadecimal +syn keyword sqlKeyword hidden high history hg hng hold holdlock host +syn keyword sqlKeyword hours http_body http_session_timeout id identified identity ignore syn keyword sqlKeyword ignore_dup_key ignore_dup_row immediate -syn keyword sqlKeyword in inactive inactivity incremental index info +syn keyword sqlKeyword in inactiv inactive inactivity included incremental +syn keyword sqlKeyword index index_enabled index_lparen indexonly info syn keyword sqlKeyword inline inner inout insensitive inserting syn keyword sqlKeyword instead integrated -syn keyword sqlKeyword internal into introduced iq is isolation jar java +syn keyword sqlKeyword internal intersection into introduced invoker iq is isolation +syn keyword sqlKeyword jar java java_location java_main_userid java_vm_options syn keyword sqlKeyword jconnect jdk join kb key keep kerberos language last -syn keyword sqlKeyword last_keyword lateral left level like -syn keyword sqlKeyword limit local location log -syn keyword sqlKeyword logging login logscan long low lru main -syn keyword sqlKeyword match materialized max maximum membership -syn keyword sqlKeyword minutes mirror mode modify monitor mru -syn keyword sqlKeyword name named national native natural new next no +syn keyword sqlKeyword last_keyword last_value lateral ld left len lf ln level like +syn keyword sqlKeyword limit local location log +syn keyword sqlKeyword logging login logscan long low lru main manual mark +syn keyword sqlKeyword match matched materialized max maximum mb membership +syn keyword sqlKeyword merge metadata methods minimum minutes mirror mode modify monitor move mru +syn keyword sqlKeyword multiplex name named national native natural new next no syn keyword sqlKeyword noholdlock nolock nonclustered none not -syn keyword sqlKeyword notify null nulls of off old on -syn keyword sqlKeyword only optimization optimizer option +syn keyword sqlKeyword notify null nullable_constant nulls object oem_string of off offline +syn keyword sqlKeyword old on online only openstring optimization optimizer option syn keyword sqlKeyword or order others out outer over syn keyword sqlKeyword package packetsize padding page pages -syn keyword sqlKeyword paglock parallel part partition partner password path -syn keyword sqlKeyword pctfree plan preceding precision prefetch prefix -syn keyword sqlKeyword preserve preview primary -syn keyword sqlKeyword prior priqty private privileges procedure profile -syn keyword sqlKeyword public publication publish publisher -syn keyword sqlKeyword quote quotes range readcommitted readonly +syn keyword sqlKeyword paglock parallel part partial partition partitions partner password path +syn keyword sqlKeyword pctfree plan policy populate port postfilter preceding precision +syn keyword sqlKeyword prefetch prefilter prefix preserve preview primary +syn keyword sqlKeyword prior priority priqty private privileges procedure profile +syn keyword sqlKeyword property_is_cumulative property_is_numeric public publication publish publisher +syn keyword sqlKeyword quiesce quote quotes range readclientfile readcommitted reader readfile readonly syn keyword sqlKeyword readpast readuncommitted readwrite rebuild syn keyword sqlKeyword received recompile recover recursive references -syn keyword sqlKeyword referencing refresh relative relocate +syn keyword sqlKeyword referencing refresh regex regexp regexp_substr relative relocate syn keyword sqlKeyword rename repeatable repeatableread -syn keyword sqlKeyword replicate rereceive resend reserve reset +syn keyword sqlKeyword replicate request_timeout required rereceive resend reserve reset syn keyword sqlKeyword resizing resolve resource respect syn keyword sqlKeyword restrict result retain -syn keyword sqlKeyword returns right -syn keyword sqlKeyword rollup root row rowlock rows save -syn keyword sqlKeyword schedule schema scripted scroll seconds secqty +syn keyword sqlKeyword returns reverse right role +syn keyword sqlKeyword rollup root row row_number rowlock rows save +syn keyword sqlKeyword sa_index_hash sa_internal_fk_verify sa_internal_termbreak +syn keyword sqlKeyword sa_order_preserving_hash sa_order_preserving_hash_big sa_order_preserving_hash_prefix +syn keyword sqlKeyword schedule schema scope scripted scroll seconds secqty security syn keyword sqlKeyword send sensitive sent serializable -syn keyword sqlKeyword server server session sets +syn keyword sqlKeyword server server session set_bit set_bits sets syn keyword sqlKeyword share simple since site size skip -syn keyword sqlKeyword snapshot soapheader some sorted_data -syn keyword sqlKeyword sqlcode sqlid sqlstate stacker stale statement -syn keyword sqlKeyword statistics status stogroup store -syn keyword sqlKeyword strip subpages subscribe subscription -syn keyword sqlKeyword subtransaction synchronization +syn keyword sqlKeyword snapshot soapheader soap_header split some sorted_data +syn keyword sqlKeyword sqlcode sqlid sqlflagger sqlstate sqrt square +syn keyword sqlKeyword stacker stale statement statistics status stddev_pop stddev_samp +syn keyword sqlKeyword stemmer stogroup stoplist store +syn keyword sqlKeyword strip stripesizekb striping subpages subscribe subscription +syn keyword sqlKeyword subtransaction suser_id suser_name synchronization syn keyword sqlKeyword syntax_error table tablock -syn keyword sqlKeyword tablockx tb temp template temporary then -syn keyword sqlKeyword ties timezone to top tracing -syn keyword sqlKeyword transaction transactional tries true +syn keyword sqlKeyword tablockx tb temp template temporary term then +syn keyword sqlKeyword ties timezone to to_char to_nchar top traced_plan tracing +syn keyword sqlKeyword transfer transaction transactional tries true syn keyword sqlKeyword tsequal type tune uncommitted unconditionally -syn keyword sqlKeyword unenforced unique union unknown unload -syn keyword sqlKeyword updating updlock upgrade upload use user +syn keyword sqlKeyword unenforced unicode unique union unistr unknown unlimited unload +syn keyword sqlKeyword unpartition unquiesce updatetime updating updlock upgrade upload +syn keyword sqlKeyword upper use user syn keyword sqlKeyword using utc utilities validproc syn keyword sqlKeyword value values varchar variable -syn keyword sqlKeyword varying vcat verify view virtual wait -syn keyword sqlKeyword warning web when where window with with_auto +syn keyword sqlKeyword varying var_pop var_samp vcat verify versions view virtual wait +syn keyword sqlKeyword warning wd web when where window with with_auto syn keyword sqlKeyword with_auto with_cube with_rollup without -syn keyword sqlKeyword with_lparen within word work workload writefile -syn keyword sqlKeyword writers writeserver xlock zeros +syn keyword sqlKeyword with_lparen within word work workload write writefile +syn keyword sqlKeyword writeclientfile writer writers writeserver xlock zeros " XML function support -syn keyword sqlFunction openxml xmlelement xmlforest xmlgen xmlconcat xmlagg -syn keyword sqlFunction xmlattributes +syn keyword sqlFunction openxml xmlelement xmlforest xmlgen xmlconcat xmlagg +syn keyword sqlFunction xmlattributes syn keyword sqlKeyword raw auto elements explicit " HTTP support -syn keyword sqlKeyword authorization secure url service +syn keyword sqlKeyword authorization secure url service next_soap_header " HTTP 9.0.2 new procedure keywords syn keyword sqlKeyword namespace certificate clientport proxy " OLAP support 9.0.0 -syn keyword sqlKeyword covar_pop covar_samp corr regr_slope regr_intercept +syn keyword sqlKeyword covar_pop covar_samp corr regr_slope regr_intercept syn keyword sqlKeyword regr_count regr_r2 regr_avgx regr_avgy syn keyword sqlKeyword regr_sxx regr_syy regr_sxy " Alternate keywords syn keyword sqlKeyword character dec options proc reference -syn keyword sqlKeyword subtrans tran syn keyword +syn keyword sqlKeyword subtrans tran syn keyword syn keyword sqlOperator in any some all between exists -syn keyword sqlOperator like escape not is and or +syn keyword sqlOperator like escape not is and or syn keyword sqlOperator intersect minus syn keyword sqlOperator prior distinct @@ -496,43 +511,38 @@ syn keyword sqlStatement validate waitfo syn keyword sqlType char long varchar text -syn keyword sqlType bigint decimal double float int integer numeric +syn keyword sqlType bigint decimal double float int integer numeric syn keyword sqlType smallint tinyint real syn keyword sqlType money smallmoney -syn keyword sqlType bit -syn keyword sqlType date datetime smalldate time timestamp +syn keyword sqlType bit +syn keyword sqlType date datetime smalldate time timestamp syn keyword sqlType binary image varbinary uniqueidentifier syn keyword sqlType xml unsigned " New types 10.0.0 syn keyword sqlType varbit nchar nvarchar syn keyword sqlOption Allow_nulls_by_default +syn keyword sqlOption Allow_read_client_file +syn keyword sqlOption Allow_snapshot_isolation +syn keyword sqlOption Allow_write_client_file syn keyword sqlOption Ansi_blanks syn keyword sqlOption Ansi_close_cursors_on_rollback -syn keyword sqlOption Ansi_integer_overflow syn keyword sqlOption Ansi_permissions +syn keyword sqlOption Ansi_substring syn keyword sqlOption Ansi_update_constraints syn keyword sqlOption Ansinull -syn keyword sqlOption Assume_distinct_servers syn keyword sqlOption Auditing syn keyword sqlOption Auditing_options -syn keyword sqlOption Auto_commit -syn keyword sqlOption Auto_refetch -syn keyword sqlOption Automatic_timestamp syn keyword sqlOption Background_priority -syn keyword sqlOption Bell -syn keyword sqlOption Blob_threshold syn keyword sqlOption Blocking syn keyword sqlOption Blocking_timeout syn keyword sqlOption Chained -syn keyword sqlOption Char_OEM_Translation syn keyword sqlOption Checkpoint_time syn keyword sqlOption Cis_option syn keyword sqlOption Cis_rowset_size syn keyword sqlOption Close_on_endtrans -syn keyword sqlOption Command_delimiter -syn keyword sqlOption Commit_on_exit -syn keyword sqlOption Compression +syn keyword sqlOption Collect_statistics_on_dml_updates +syn keyword sqlOption Conn_auditing syn keyword sqlOption Connection_authentication syn keyword sqlOption Continue_after_raiserror syn keyword sqlOption Conversion_error @@ -543,125 +553,90 @@ syn keyword sqlOption Date_format syn keyword sqlOption Date_order syn keyword sqlOption Debug_messages syn keyword sqlOption Dedicated_task +syn keyword sqlOption Default_dbspace syn keyword sqlOption Default_timestamp_increment syn keyword sqlOption Delayed_commit_timeout syn keyword sqlOption Delayed_commits -syn keyword sqlOption Delete_old_logs -syn keyword sqlOption Describe_Java_Format -syn keyword sqlOption Divide_by_zero_error -syn keyword sqlOption Echo syn keyword sqlOption Escape_character syn keyword sqlOption Exclude_operators syn keyword sqlOption Extended_join_syntax -syn keyword sqlOption External_remote_options syn keyword sqlOption Fire_triggers syn keyword sqlOption First_day_of_week -syn keyword sqlOption Float_as_double syn keyword sqlOption For_xml_null_treatment syn keyword sqlOption Force_view_creation syn keyword sqlOption Global_database_id -syn keyword sqlOption Headings -syn keyword sqlOption Input_format +syn keyword sqlOption Http_session_timeout syn keyword sqlOption Integrated_server_name syn keyword sqlOption Isolation_level -syn keyword sqlOption ISQL_command_timing -syn keyword sqlOption ISQL_escape_character -syn keyword sqlOption ISQL_field_separator -syn keyword sqlOption ISQL_log -syn keyword sqlOption ISQL_plan -syn keyword sqlOption ISQL_plan_cursor_sensitivity -syn keyword sqlOption ISQL_plan_cursor_writability -syn keyword sqlOption ISQL_quote -syn keyword sqlOption Java_heap_size -syn keyword sqlOption Java_input_output -syn keyword sqlOption Java_namespace_size -syn keyword sqlOption Java_page_buffer_size +syn keyword sqlOption Java_location +syn keyword sqlOption Java_main_userid +syn keyword sqlOption Java_vm_options syn keyword sqlOption Lock_rejected_rows syn keyword sqlOption Log_deadlocks -syn keyword sqlOption Log_detailed_plans -syn keyword sqlOption Log_max_requests syn keyword sqlOption Login_mode syn keyword sqlOption Login_procedure +syn keyword sqlOption Materialized_view_optimization +syn keyword sqlOption Max_client_statements_cached syn keyword sqlOption Max_cursor_count syn keyword sqlOption Max_hash_size syn keyword sqlOption Max_plans_cached +syn keyword sqlOption Max_priority +syn keyword sqlOption Max_query_tasks syn keyword sqlOption Max_recursive_iterations syn keyword sqlOption Max_statement_count -syn keyword sqlOption Max_work_table_hash_size +syn keyword sqlOption Max_temp_space syn keyword sqlOption Min_password_length syn keyword sqlOption Nearest_century syn keyword sqlOption Non_keywords -syn keyword sqlOption NULLS -syn keyword sqlOption ODBC_describe_binary_as_varbinary -syn keyword sqlOption ODBC_distinguish_char_and_varchar -syn keyword sqlOption On_Charset_conversion_failure -syn keyword sqlOption On_error +syn keyword sqlOption Odbc_describe_binary_as_varbinary +syn keyword sqlOption Odbc_distinguish_char_and_varchar +syn keyword sqlOption Oem_string +syn keyword sqlOption On_charset_conversion_failure syn keyword sqlOption On_tsql_error -syn keyword sqlOption Optimistic_wait_for_commit syn keyword sqlOption Optimization_goal syn keyword sqlOption Optimization_level -syn keyword sqlOption Optimization_logging syn keyword sqlOption Optimization_workload -syn keyword sqlOption Output_format -syn keyword sqlOption Output_length -syn keyword sqlOption Output_nulls -syn keyword sqlOption Percent_as_comment syn keyword sqlOption Pinned_cursor_percent_of_cache +syn keyword sqlOption Post_login_procedure syn keyword sqlOption Precision syn keyword sqlOption Prefetch syn keyword sqlOption Preserve_source_format syn keyword sqlOption Prevent_article_pkey_update -syn keyword sqlOption Qualify_owners -syn keyword sqlOption Query_plan_on_open -syn keyword sqlOption Quiet -syn keyword sqlOption Quote_all_identifiers +syn keyword sqlOption Priority +syn keyword sqlOption Query_mem_timeout syn keyword sqlOption Quoted_identifier syn keyword sqlOption Read_past_deleted syn keyword sqlOption Recovery_time syn keyword sqlOption Remote_idle_timeout syn keyword sqlOption Replicate_all -syn keyword sqlOption Replication_error -syn keyword sqlOption Replication_error_piece +syn keyword sqlOption Request_timeout syn keyword sqlOption Return_date_time_as_string -syn keyword sqlOption Return_java_as_string -syn keyword sqlOption RI_Trigger_time syn keyword sqlOption Rollback_on_deadlock syn keyword sqlOption Row_counts -syn keyword sqlOption Save_remote_passwords syn keyword sqlOption Scale -syn keyword sqlOption Screen_format -syn keyword sqlOption Sort_Collation -syn keyword sqlOption SQL_flagger_error_level -syn keyword sqlOption SQL_flagger_warning_level -syn keyword sqlOption SQLConnect -syn keyword sqlOption SQLStart -syn keyword sqlOption SR_Date_Format -syn keyword sqlOption SR_Time_Format -syn keyword sqlOption SR_TimeStamp_Format -syn keyword sqlOption Statistics +syn keyword sqlOption Secure_feature_key +syn keyword sqlOption Sort_collation +syn keyword sqlOption Sql_flagger_error_level +syn keyword sqlOption Sql_flagger_warning_level syn keyword sqlOption String_rtruncation -syn keyword sqlOption Subscribe_by_remote syn keyword sqlOption Subsume_row_locks -syn keyword sqlOption Suppress_TDS_debugging -syn keyword sqlOption TDS_Empty_string_is_null +syn keyword sqlOption Suppress_tds_debugging +syn keyword sqlOption Synchronize_mirror_on_commit +syn keyword sqlOption Tds_empty_string_is_null syn keyword sqlOption Temp_space_limit_check -syn keyword sqlOption Thread_count -syn keyword sqlOption Thread_stack -syn keyword sqlOption Thread_swaps syn keyword sqlOption Time_format syn keyword sqlOption Time_zone_adjustment syn keyword sqlOption Timestamp_format -syn keyword sqlOption Truncate_date_values syn keyword sqlOption Truncate_timestamp_values -syn keyword sqlOption Truncate_with_auto_commit -syn keyword sqlOption Truncation_length -syn keyword sqlOption Tsql_hex_constant +syn keyword sqlOption Tsql_outer_joins syn keyword sqlOption Tsql_variables +syn keyword sqlOption Updatable_statement_isolation syn keyword sqlOption Update_statistics +syn keyword sqlOption Upgrade_database_capability syn keyword sqlOption User_estimates -syn keyword sqlOption Verify_all_columns -syn keyword sqlOption Verify_threshold +syn keyword sqlOption Verify_password_function syn keyword sqlOption Wait_for_commit +syn keyword sqlOption Webservice_namespace_host " Strings and characters: syn region sqlString start=+"+ end=+"+ contains=@Spell
--- a/runtime/syntax/sshconfig.vim +++ b/runtime/syntax/sshconfig.vim @@ -1,23 +1,21 @@ " Vim syntax file -" This is a GENERATED FILE. Please always refer to source file at the URI below. -" Language: OpenSSH server configuration file (ssh_config) -" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz> -" Last Change: 2006-03-05 -" URL: http://trific.ath.cx/Ftp/vim/syntax/sshconfig.vim +" Language: OpenSSH client configuration file (ssh_config) +" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz> +" Last Change: 2009-07-09 " Setup if version >= 600 - if exists("b:current_syntax") - finish - endif + if exists("b:current_syntax") + finish + endif else - syntax clear + syntax clear endif if version >= 600 - setlocal iskeyword=_,-,a-z,A-Z,48-57 + setlocal iskeyword=_,-,a-z,A-Z,48-57 else - set iskeyword=_,-,a-z,A-Z,48-57 + set iskeyword=_,-,a-z,A-Z,48-57 endif syn case ignore @@ -28,19 +26,21 @@ syn keyword sshconfigTodo TODO FIXME NOT " Constants syn keyword sshconfigYesNo yes no ask -syn keyword sshconfigCipher blowfish des 3des +syn keyword sshconfigYesNo any auto syn keyword sshconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc syn keyword sshconfigCipher aes192-cbc aes256-cbc aes128-ctr aes256-ctr syn keyword sshconfigCipher arcfour arcfour128 arcfour256 cast128-cbc syn keyword sshconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96 syn keyword sshconfigMAC hmac-md5-96 +syn match sshconfigMAC "\<umac-64@openssh\.com\>" syn keyword sshconfigHostKeyAlg ssh-rsa ssh-dss syn keyword sshconfigPreferredAuth hostbased publickey password syn keyword sshconfigPreferredAuth keyboard-interactive syn keyword sshconfigLogLevel QUIET FATAL ERROR INFO VERBOSE syn keyword sshconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3 -syn keyword sshconfigSysLogFacility DAEMON USER AUTH LOCAL0 LOCAL1 LOCAL2 -syn keyword sshconfigSysLogFacility LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7 +syn keyword sshconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1 +syn keyword sshconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7 +syn match sshconfigVar "%[rhpldun]\>" syn match sshconfigSpecial "[*?]" syn match sshconfigNumber "\d\+" syn match sshconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>" @@ -49,57 +49,68 @@ syn match sshconfigHostPort "\<\(\x\{,4} " Keywords syn keyword sshconfigHostSect Host -syn keyword sshconfigKeyword AddressFamily BatchMode BindAddress +syn keyword sshconfigKeyword AddressFamily +syn keyword sshconfigKeyword BatchMode BindAddress syn keyword sshconfigKeyword ChallengeResponseAuthentication CheckHostIP syn keyword sshconfigKeyword Cipher Ciphers ClearAllForwardings syn keyword sshconfigKeyword Compression CompressionLevel ConnectTimeout syn keyword sshconfigKeyword ConnectionAttempts ControlMaster -syn keyword sshconfigKeyword ControlPath DynamicForward EnableSSHKeysign -syn keyword sshconfigKeyword EscapeChar ForwardAgent ForwardX11 -syn keyword sshconfigKeyword ForwardX11Trusted GSSAPIAuthentication +syn keyword sshconfigKeyword ControlPath DynamicForward +syn keyword sshconfigKeyword EnableSSHKeysign EscapeChar ExitOnForwardFailure +syn keyword sshconfigKeyword ForwardAgent ForwardX11 +syn keyword sshconfigKeyword ForwardX11Trusted +syn keyword sshconfigKeyword GSSAPIAuthentication syn keyword sshconfigKeyword GSSAPIDelegateCredentials GatewayPorts -syn keyword sshconfigKeyword GlobalKnownHostsFile HostKeyAlgorithms -syn keyword sshconfigKeyword HashKnownHosts KbdInteractiveDevices +syn keyword sshconfigKeyword GlobalKnownHostsFile +syn keyword sshconfigKeyword HostKeyAlgorithms HashKnownHosts syn keyword sshconfigKeyword HostKeyAlias HostName HostbasedAuthentication -syn keyword sshconfigKeyword IdentitiesOnly IdentityFile LocalForward -syn keyword sshconfigKeyword LogLevel MACs NoHostAuthenticationForLocalhost -syn keyword sshconfigKeyword NumberOfPasswordPrompts PasswordAuthentication +syn keyword sshconfigKeyword IdentitiesOnly IdentityFile +syn keyword sshconfigKeyword KbdInteractiveAuthentication KbdInteractiveDevices +syn keyword sshconfigKeyword LocalCommand LocalForward LogLevel +syn keyword sshconfigKeyword MACs +syn keyword sshconfigKeyword NoHostAuthenticationForLocalhost +syn keyword sshconfigKeyword NumberOfPasswordPrompts +syn keyword sshconfigKeyword PasswordAuthentication PermitLocalCommand syn keyword sshconfigKeyword Port PreferredAuthentications Protocol syn keyword sshconfigKeyword ProxyCommand PubkeyAuthentication -syn keyword sshconfigKeyword RSAAuthentication RemoteForward -syn keyword sshconfigKeyword RhostsAuthentication RhostsRSAAuthentication +syn keyword sshconfigKeyword PermitLocalCommand +syn keyword sshconfigKeyword RSAAuthentication RemoteForward RekeyLimit +syn keyword sshconfigKeyword RhostsRSAAuthentication syn keyword sshconfigKeyword SendEnv ServerAliveCountMax ServerAliveInterval syn keyword sshconfigKeyword SmartcardDevice StrictHostKeyChecking +syn keyword sshconfigKeyword Tunnel TunnelDevice syn keyword sshconfigKeyword TCPKeepAlive UsePrivilegedPort User -syn keyword sshconfigKeyword UserKnownHostsFile VerifyHostKeyDNS XAuthLocation +syn keyword sshconfigKeyword UserKnownHostsFile +syn keyword sshconfigKeyword VerifyHostKeyDNS VisualHostKey +syn keyword sshconfigKeyword XAuthLocation " Define the default highlighting if version >= 508 || !exists("did_sshconfig_syntax_inits") - if version < 508 - let did_sshconfig_syntax_inits = 1 - command -nargs=+ HiLink hi link <args> - else - command -nargs=+ HiLink hi def link <args> - endif + if version < 508 + let did_sshconfig_syntax_inits = 1 + command -nargs=+ HiLink hi link <args> + else + command -nargs=+ HiLink hi def link <args> + endif - HiLink sshconfigComment Comment - HiLink sshconfigTodo Todo - HiLink sshconfigHostPort sshconfigConstant - HiLink sshconfigNumber sshconfigConstant - HiLink sshconfigConstant Constant - HiLink sshconfigYesNo sshconfigEnum - HiLink sshconfigCipher sshconfigEnum - HiLink sshconfigMAC sshconfigEnum - HiLink sshconfigHostKeyAlg sshconfigEnum - HiLink sshconfigLogLevel sshconfigEnum - HiLink sshconfigSysLogFacility sshconfigEnum - HiLink sshconfigPreferredAuth sshconfigEnum - HiLink sshconfigEnum Function - HiLink sshconfigSpecial Special - HiLink sshconfigKeyword Keyword - HiLink sshconfigHostSect Type - delcommand HiLink + HiLink sshconfigComment Comment + HiLink sshconfigTodo Todo + HiLink sshconfigHostPort sshconfigConstant + HiLink sshconfigNumber sshconfigConstant + HiLink sshconfigConstant Constant + HiLink sshconfigYesNo sshconfigEnum + HiLink sshconfigCipher sshconfigEnum + HiLink sshconfigMAC sshconfigEnum + HiLink sshconfigHostKeyAlg sshconfigEnum + HiLink sshconfigLogLevel sshconfigEnum + HiLink sshconfigSysLogFacility sshconfigEnum + HiLink sshconfigPreferredAuth sshconfigEnum + HiLink sshconfigVar sshconfigEnum + HiLink sshconfigEnum Identifier + HiLink sshconfigSpecial Special + HiLink sshconfigKeyword Keyword + HiLink sshconfigHostSect Type + delcommand HiLink endif let b:current_syntax = "sshconfig" -
--- a/runtime/syntax/sshdconfig.vim +++ b/runtime/syntax/sshdconfig.vim @@ -1,23 +1,21 @@ " Vim syntax file -" This is a GENERATED FILE. Please always refer to source file at the URI below. " Language: OpenSSH server configuration file (sshd_config) -" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz> -" Last Change: 2006-03-05 -" URL: http://trific.ath.cx/Ftp/vim/syntax/sshdconfig.vim +" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz> +" Last Change: 2009-07-09 " Setup if version >= 600 - if exists("b:current_syntax") - finish - endif + if exists("b:current_syntax") + finish + endif else - syntax clear + syntax clear endif if version >= 600 - setlocal iskeyword=_,-,a-z,A-Z,48-57 + setlocal iskeyword=_,-,a-z,A-Z,48-57 else - set iskeyword=_,-,a-z,A-Z,48-57 + set iskeyword=_,-,a-z,A-Z,48-57 endif syn case ignore @@ -27,78 +25,87 @@ syn match sshdconfigComment "#.*$" conta syn keyword sshdconfigTodo TODO FIXME NOT contained " Constants -syn keyword sshdconfigYesNo yes no +syn keyword sshdconfigYesNo yes no none +syn keyword sshdconfigAddressFamily any inet inet6 syn keyword sshdconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc syn keyword sshdconfigCipher aes192-cbc aes256-cbc aes128-ctr aes256-ctr syn keyword sshdconfigCipher arcfour arcfour128 arcfour256 cast128-cbc syn keyword sshdconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96 syn keyword sshdconfigMAC hmac-md5-96 +syn match sshdconfigMAC "\<umac-64@openssh\.com\>" syn keyword sshdconfigRootLogin without-password forced-commands-only syn keyword sshdconfigLogLevel QUIET FATAL ERROR INFO VERBOSE syn keyword sshdconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3 -syn keyword sshdconfigSysLogFacility DAEMON USER AUTH LOCAL0 LOCAL1 LOCAL2 -syn keyword sshdconfigSysLogFacility LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7 +syn keyword sshdconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1 +syn keyword sshdconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7 syn match sshdconfigSpecial "[*?]" syn match sshdconfigNumber "\d\+" syn match sshdconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>" syn match sshdconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>" +" FIXME: this matches quite a few things which are NOT valid IPv6 addresses syn match sshdconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}:\d\+\>" syn match sshdconfigTime "\<\(\d\+[sSmMhHdDwW]\)\+\>" " Keywords -syn keyword sshdconfigKeyword AcceptEnv AddressFamily +syn keyword sshdconfigMatch Host User Group Address +syn keyword sshdconfigKeyword AcceptEnv AddressFamily AllowAgentForwarding syn keyword sshdconfigKeyword AllowGroups AllowTcpForwarding -syn keyword sshdconfigKeyword AllowUsers AuthorizedKeysFile Banner -syn keyword sshdconfigKeyword ChallengeResponseAuthentication +syn keyword sshdconfigKeyword AllowUsers AuthorizedKeysFile +syn keyword sshdconfigKeyword Banner +syn keyword sshdconfigKeyword ChallengeResponseAuthentication ChrootDirectory syn keyword sshdconfigKeyword Ciphers ClientAliveCountMax syn keyword sshdconfigKeyword ClientAliveInterval Compression -syn keyword sshdconfigKeyword DenyGroups DenyUsers GSSAPIAuthentication -syn keyword sshdconfigKeyword GSSAPICleanupCredentials GatewayPorts -syn keyword sshdconfigKeyword HostKey HostbasedAuthentication +syn keyword sshdconfigKeyword DenyGroups DenyUsers +syn keyword sshdconfigKeyword ForceCommand +syn keyword sshdconfigKeyword GatewayPorts GSSAPIAuthentication +syn keyword sshdconfigKeyword GSSAPICleanupCredentials +syn keyword sshdconfigKeyword HostbasedAuthentication HostKey syn keyword sshdconfigKeyword IgnoreRhosts IgnoreUserKnownHosts -syn keyword sshdconfigKeyword KerberosAuthentication KerberosOrLocalPasswd -syn keyword sshdconfigKeyword KerberosTgtPassing KerberosTicketCleanup -syn keyword sshdconfigKeyword KerberosGetAFSToken -syn keyword sshdconfigKeyword KeyRegenerationInterval ListenAddress -syn keyword sshdconfigKeyword LogLevel LoginGraceTime MACs MaxAuthTries -syn keyword sshdconfigKeyword MaxStartups PasswordAuthentication -syn keyword sshdconfigKeyword PermitEmptyPasswords PermitRootLogin +syn keyword sshdconfigKeyword KerberosAuthentication KerberosGetAFSToken +syn keyword sshdconfigKeyword KerberosOrLocalPasswd KerberosTicketCleanup +syn keyword sshdconfigKeyword KeyRegenerationInterval +syn keyword sshdconfigKeyword ListenAddress LoginGraceTime LogLevel +syn keyword sshdconfigKeyword MACs Match MaxAuthTries MaxSessions MaxStartups +syn keyword sshdconfigKeyword PasswordAuthentication PermitEmptyPasswords +syn keyword sshdconfigKeyword PermitRootLogin PermitOpen PermitTunnel syn keyword sshdconfigKeyword PermitUserEnvironment PidFile Port syn keyword sshdconfigKeyword PrintLastLog PrintMotd Protocol -syn keyword sshdconfigKeyword PubkeyAuthentication RSAAuthentication -syn keyword sshdconfigKeyword RhostsAuthentication RhostsRSAAuthentication -syn keyword sshdconfigKeyword ServerKeyBits StrictModes Subsystem -syn keyword sshdconfigKeyword ShowPatchLevel -syn keyword sshdconfigKeyword SyslogFacility TCPKeepAlive UseDNS -syn keyword sshdconfigKeyword UseLogin UsePAM UsePrivilegeSeparation +syn keyword sshdconfigKeyword PubkeyAuthentication +syn keyword sshdconfigKeyword RhostsRSAAuthentication RSAAuthentication +syn keyword sshdconfigKeyword ServerKeyBits ShowPatchLevel StrictModes +syn keyword sshdconfigKeyword Subsystem SyslogFacility +syn keyword sshdconfigKeyword TCPKeepAlive +syn keyword sshdconfigKeyword UseDNS UseLogin UsePAM UsePrivilegeSeparation syn keyword sshdconfigKeyword X11DisplayOffset X11Forwarding syn keyword sshdconfigKeyword X11UseLocalhost XAuthLocation " Define the default highlighting if version >= 508 || !exists("did_sshdconfig_syntax_inits") - if version < 508 - let did_sshdconfig_syntax_inits = 1 - command -nargs=+ HiLink hi link <args> - else - command -nargs=+ HiLink hi def link <args> - endif + if version < 508 + let did_sshdconfig_syntax_inits = 1 + command -nargs=+ HiLink hi link <args> + else + command -nargs=+ HiLink hi def link <args> + endif - HiLink sshdconfigComment Comment - HiLink sshdconfigTodo Todo - HiLink sshdconfigHostPort sshdconfigConstant - HiLink sshdconfigTime sshdconfigConstant - HiLink sshdconfigNumber sshdconfigConstant - HiLink sshdconfigConstant Constant - HiLink sshdconfigYesNo sshdconfigEnum - HiLink sshdconfigCipher sshdconfigEnum - HiLink sshdconfigMAC sshdconfigEnum - HiLink sshdconfigRootLogin sshdconfigEnum - HiLink sshdconfigLogLevel sshdconfigEnum - HiLink sshdconfigSysLogFacility sshdconfigEnum - HiLink sshdconfigEnum Function - HiLink sshdconfigSpecial Special - HiLink sshdconfigKeyword Keyword - delcommand HiLink + HiLink sshdconfigComment Comment + HiLink sshdconfigTodo Todo + HiLink sshdconfigHostPort sshdconfigConstant + HiLink sshdconfigTime sshdconfigConstant + HiLink sshdconfigNumber sshdconfigConstant + HiLink sshdconfigConstant Constant + HiLink sshdconfigYesNo sshdconfigEnum + HiLink sshdconfigAddressFamily sshdconfigEnum + HiLink sshdconfigCipher sshdconfigEnum + HiLink sshdconfigMAC sshdconfigEnum + HiLink sshdconfigRootLogin sshdconfigEnum + HiLink sshdconfigLogLevel sshdconfigEnum + HiLink sshdconfigSysLogFacility sshdconfigEnum + HiLink sshdconfigEnum Function + HiLink sshdconfigSpecial Special + HiLink sshdconfigKeyword Keyword + HiLink sshdconfigMatch Type + delcommand HiLink endif let b:current_syntax = "sshdconfig"
--- a/runtime/syntax/svn.vim +++ b/runtime/syntax/svn.vim @@ -2,7 +2,7 @@ " Language: Subversion (svn) commit file " Maintainer: Dmitry Vasiliev <dima at hlabs dot spb dot ru> " URL: http://www.hlabs.spb.ru/vim/svn.vim -" Revision: $Id$ +" Revision: $Id: svn.vim 683 2008-07-30 11:52:38Z hdima $ " Filenames: svn-commit*.tmp " Version: 1.6
--- a/runtime/syntax/tads.vim +++ b/runtime/syntax/tads.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: TADS " Maintainer: Amir Karger <karger@post.harvard.edu> -" $Date$ -" $Revision$ +" $Date: 2004/06/13 19:28:45 $ +" $Revision: 1.1 $ " Stolen from: Bram Moolenaar's C language file " Newest version at: http://www.hec.utah.edu/~karger/vim/syntax/tads.vim " History info at the bottom of the file
new file mode 100644 --- /dev/null +++ b/runtime/syntax/taskdata.vim @@ -0,0 +1,43 @@ +" Vim syntax file +" Language: task data +" Maintainer: John Florian <jflorian@doubledog.org> +" Updated: Wed Jul 8 19:46:20 EDT 2009 + + +" For version 5.x: Clear all syntax items. +" For version 6.x: Quit when a syntax file was already loaded. +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" Key Names for values. +syn keyword taskdataKey description due end entry imask mask parent +syn keyword taskdataKey priority project recur start status tags uuid +syn match taskdataKey "annotation_\d\+" +syn match taskdataUndo "^time.*$" +syn match taskdataUndo "^\(old \|new \|---\)" + +" Values associated with key names. +" +" Strings +syn region taskdataString matchgroup=Normal start=+"+ end=+"+ + \ contains=taskdataEncoded,taskdataUUID,@Spell +" +" Special Embedded Characters (e.g., ",") +syn match taskdataEncoded "&\a\+;" contained +" UUIDs +syn match taskdataUUID "\x\{8}-\(\x\{4}-\)\{3}\x\{12}" contained + + +" The default methods for highlighting. Can be overridden later. +hi def link taskdataEncoded Function +hi def link taskdataKey Statement +hi def link taskdataString String +hi def link taskdataUUID Special +hi def link taskdataUndo Type + +let b:current_syntax = "taskdata" + +" vim:noexpandtab
new file mode 100644 --- /dev/null +++ b/runtime/syntax/taskedit.vim @@ -0,0 +1,35 @@ +" Vim syntax file +" Language: support for 'task 42 edit' +" Maintainer: John Florian <jflorian@doubledog.org> +" Updated: Wed Jul 8 19:46:32 EDT 2009 + + +" For version 5.x: Clear all syntax items. +" For version 6.x: Quit when a syntax file was already loaded. +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn match taskeditHeading "^\s*#\s*Name\s\+Editable details\s*$" contained +syn match taskeditHeading "^\s*#\s*-\+\s\+-\+\s*$" contained +syn match taskeditReadOnly "^\s*#\s*\(UU\)\?ID:.*$" contained +syn match taskeditReadOnly "^\s*#\s*Status:.*$" contained +syn match taskeditReadOnly "^\s*#\s*i\?Mask:.*$" contained +syn match taskeditKey "^ *.\{-}:" nextgroup=taskeditString +syn match taskeditComment "^\s*#.*$" + \ contains=taskeditReadOnly,taskeditHeading +syn match taskeditString ".*$" contained contains=@Spell + + +" The default methods for highlighting. Can be overridden later. +hi def link taskeditComment Comment +hi def link taskeditHeading Function +hi def link taskeditKey Statement +hi def link taskeditReadOnly Special +hi def link taskeditString String + +let b:current_syntax = "taskedit" + +" vim:noexpandtab
--- a/runtime/syntax/tcl.vim +++ b/runtime/syntax/tcl.vim @@ -1,13 +1,16 @@ " Vim syntax file -" Language: TCL/TK -" Maintainer: Brett Cannon <brett@python.org> +" Language: Tcl/Tk +" Maintainer: Taylor Venable <taylor@metasyntax.net> +" (previously Brett Cannon <brett@python.org>) " (previously Dean Copsey <copsey@cs.ucdavis.edu>) " (previously Matt Neumann <mattneu@purpleturtle.com>) " (previously Allan Kelly <allan@fruitloaf.co.uk>) " Original: Robin Becker <robin@jessikat.demon.co.uk> -" Last Change: 2006 Nov 17 +" Last Change: 2009/04/06 02:38:36 +" Version: 1.13 +" URL: http://real.metasyntax.net:2357/cvs/cvsweb.cgi/Config/vim/syntax/tcl.vim " -" Keywords TODO: format clock click anchor +" Keywords TODO: click anchor " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded @@ -17,19 +20,40 @@ elseif exists("b:current_syntax") finish endif -" A bunch of useful keywords -syn keyword tclStatement tell socket subst open eof pwd glob list exec pid -syn keyword tclStatement auto_load_index time unknown eval lrange fblocked -syn keyword tclStatement lsearch auto_import gets lappend proc variable llength -syn keyword tclStatement auto_execok return linsert error catch clock info -syn keyword tclStatement split array fconfigure concat join lreplace source -syn keyword tclStatement fcopy global auto_qualify update close cd auto_load -syn keyword tclStatement file append format read package set binary namespace -syn keyword tclStatement scan trace seek flush after vwait uplevel lset rename -syn keyword tclStatement fileevent regexp upvar unset encoding expr load regsub -syn keyword tclStatement interp exit puts incr lindex lsort tclLog string +" Basic Tcl commands: http://www.tcl.tk/man/tcl8.5/TclCmd/contents.htm +syn keyword tclCommand after append apply array bgerror binary catch cd chan clock +syn keyword tclCommand close concat dde dict encoding eof error eval exec exit +syn keyword tclCommand expr fblocked fconfigure fcopy file fileevent filename flush +syn keyword tclCommand format gets glob global history incr info interp join +syn keyword tclCommand lappend lassign lindex linsert list llength load lrange lrepeat +syn keyword tclCommand lreplace lreverse lsearch lset lsort memory namespace open package +syn keyword tclCommand pid proc puts pwd read regexp registry regsub rename return +syn keyword tclCommand scan seek set socket source split string subst tell time +syn keyword tclCommand trace unknown unload unset update uplevel upvar variable vwait + +" The 'Tcl Standard Library' commands: http://www.tcl.tk/man/tcl8.5/TclCmd/library.htm +syn keyword tclCommand auto_execok auto_import auto_load auto_mkindex auto_mkindex_old +syn keyword tclCommand auto_qualify auto_reset parray tcl_endOfWord tcl_findLibrary +syn keyword tclCommand tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter +syn keyword tclCommand tcl_wordBreakBefore + +" Commands that were added in Tcl 8.6 + +syn keyword tclCommand my oo::copy oo::define oo::objdefine self +syn keyword tclCommand coroutine tailcall throw yield + +" Global variables used by Tcl: http://www.tcl.tk/man/tcl8.5/TclCmd/tclvars.htm +syn keyword tclVars env errorCode errorInfo tcl_library tcl_patchLevel tcl_pkgPath +syn keyword tclVars tcl_platform tcl_precision tcl_rcFileName tcl_traceCompile +syn keyword tclVars tcl_traceExec tcl_wordchars tcl_nonwordchars tcl_version argc argv +syn keyword tclVars argv0 tcl_interactive geometry + +" Strings which expr accepts as boolean values, aside from zero / non-zero. +syn keyword tclBoolean true false on off yes no + syn keyword tclLabel case default syn keyword tclConditional if then else elseif switch +syn keyword tclConditional try finally syn keyword tclRepeat while for foreach break continue syn keyword tcltkSwitch contained insert create polygon fill outline tag @@ -63,9 +87,14 @@ syn keyword tcltkWidgetSwitch contained syn keyword tcltkWidgetSwitch contained delete names types create " variable reference " ::optional::namespaces -syn match tclVarRef "$\(\(::\)\?\([[:alnum:]_.]*::\)*\)\a[a-zA-Z0-9_.]*" +syn match tclVarRef "$\(\(::\)\?\([[:alnum:]_]*::\)*\)\a[[:alnum:]_]*" " ${...} may contain any character except '}' syn match tclVarRef "${[^}]*}" + +" The syntactic unquote-splicing replacement for [expand]. +syn match tclExpand '\s{\*}' +syn match tclExpand '^{\*}' + " menu, mane add syn keyword tcltkWidgetSwitch contained active end last none cascade checkbutton command radiobutton separator syn keyword tcltkWidgetSwitch contained activebackground actveforeground accelerator background bitmap columnbreak @@ -130,11 +159,10 @@ syn region tcltkCommand matchgroup=tcltk " EXPR " commands associated with expr -syn keyword tcltkMaths contained acos cos hypot sinh -syn keyword tcltkMaths contained asin cosh log sqrt -syn keyword tcltkMaths contained atan exp log10 tan -syn keyword tcltkMaths contained atan2 floor pow tanh -syn keyword tcltkMaths contained ceil fmod sin +syn keyword tcltkMaths contained abs acos asin atan atan2 bool ceil cos cosh double entier +syn keyword tcltkMaths contained exp floor fmod hypot int isqrt log log10 max min pow rand +syn keyword tcltkMaths contained round sin sinh sqrt srand tan tanh wide + syn region tcltkCommand matchgroup=tcltkCommandColor start="\<expr\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkMaths,tclNumber,tclVarRef,tclString,tcltlWidgetSwitch,tcltkCommand,tcltkPackConf " format @@ -165,17 +193,26 @@ syn region tcltkCommand matchgroup=tcltk syn keyword tclTodo contained TODO +" Sequences which are backslash-escaped: http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm#M16 +" Octal, hexadecimal, unicode codepoints, and the classics. +" Tcl takes as many valid characters in a row as it can, so \xAZ in a string is newline followed by 'Z'. +syn match tclSpecial contained '\\\([0-7]\{1,3}\|x\x\{1,2}\|u\x\{1,4}\|[abfnrtv]\)' +syn match tclSpecial contained '\\[\[\]\{\}\"\$]' -" String and Character contstants -" Highlight special characters (those which have a backslash) differently -syn match tclSpecial contained "\\\d\d\d\=\|\\." +" Command appearing inside another command or inside a string. +syn region tclEmbeddedStatement start='\[' end='\]' contained contains=tclCommand,tclNumber,tclLineContinue,tclString,tclVarRef,tclEmbeddedStatement " A string needs the skip argument as it may legitimately contain \". " Match at start of line syn region tclString start=+^"+ end=+"+ contains=tclSpecial skip=+\\\\\|\\"+ "Match all other legal strings. -syn region tclString start=+[^\\]"+ms=s+1 end=+"+ contains=tclSpecial skip=+\\\\\|\\"+ +syn region tclString start=+[^\\]"+ms=s+1 end=+"+ contains=tclSpecial,tclVarRef,tclEmbeddedStatement skip=+\\\\\|\\"+ -syn match tclLineContinue "\\\s*$" +" Line continuation is backslash immediately followed by newline. +syn match tclLineContinue '\\$' + +if exists('g:tcl_warn_continuation') + syn match tclNotLineContinue '\\\s\+$' +endif "integer number, or floating point number without a dot and with "f". syn case ignore @@ -208,13 +245,13 @@ if version >= 508 || !exists("did_tcl_sy endif HiLink tcltkSwitch Special + HiLink tclExpand Special HiLink tclLabel Label HiLink tclConditional Conditional HiLink tclRepeat Repeat HiLink tclNumber Number HiLink tclError Error - HiLink tclStatement Statement - "HiLink tclStatementColor Statement + HiLink tclCommand Statement HiLink tclString String HiLink tclComment Comment HiLink tclSpecial Special @@ -223,6 +260,9 @@ if version >= 508 || !exists("did_tcl_sy HiLink tcltkCommandColor Statement HiLink tcltkWidgetColor Structure HiLink tclLineContinue WarningMsg +if exists('g:tcl_warn_continuation') + HiLink tclNotLineContinue ErrorMsg +endif HiLink tcltkStringSwitch Special HiLink tcltkArraySwitch Special HiLink tcltkLsortSwitch Special @@ -232,7 +272,6 @@ if version >= 508 || !exists("did_tcl_sy HiLink tcltkNamespaceSwitch Special HiLink tcltkWidgetSwitch Special HiLink tcltkPackConfColor Identifier - "HiLink tcltkLsort Statement HiLink tclVarRef Identifier delcommand HiLink @@ -240,4 +279,4 @@ endif let b:current_syntax = "tcl" -" vim: ts=8 +" vim: ts=8 noet
--- a/runtime/syntax/tcsh.vim +++ b/runtime/syntax/tcsh.vim @@ -1,6 +1,6 @@ " tcsh.vim: Vim syntax file for tcsh scripts -" Maintainer: Gautam Iyer <gi1242@users.sourceforge.net> -" Modified: Sat 16 Jun 2007 04:52:12 PM PDT +" Maintainer: Gautam Iyer <gi1242@gmail.com> +" Modified: Thu 17 Dec 2009 06:05:07 PM EST " " Description: We break up each statement into a "command" and an "end" part. " All groups are either a "command" or part of the "end" of a statement (ie @@ -60,7 +60,7 @@ syn region tcshEnvEnd contained transpa " alias and unalias (contains special aliases) syn keyword tcshAliases contained beepcmd cwdcmd jobcmd helpcommand periodic precmd postcmd shell syn keyword tcshBuiltin nextgroup=tcshAliCmd skipwhite alias unalias -syn match tcshAliCmd contained nextgroup=tcshAliEnd skipwhite '\v[\w-]+' contains=tcshAliases +syn match tcshAliCmd contained nextgroup=tcshAliEnd skipwhite '\v(\w|-)+' contains=tcshAliases syn region tcshAliEnd contained transparent matchgroup=tcshBuiltin start='' skip='\\$' end='$\|;' contains=@tcshStatementEnds " if statements @@ -197,7 +197,11 @@ syn match tcshSpecial contained '\v\\%([ " ----- Synchronising ----- if exists('tcsh_minlines') - exec 'syn sync minlines=' . tcsh_minlines + if tcsh_minlines == 'fromstart' + syn sync fromstart + else + exec 'syn sync minlines=' . tcsh_minlines + endif else syn sync minlines=100 " Some completions can be quite long endif
--- a/runtime/syntax/tex.vim +++ b/runtime/syntax/tex.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: TeX " Maintainer: Dr. Charles E. Campbell, Jr. <NdrchipO@ScampbellPfamily.AbizM> -" Last Change: Jun 03, 2008 -" Version: 41 +" Last Change: Dec 28, 2009 +" Version: 46 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax " " Notes: {{{1 @@ -103,6 +103,7 @@ endif syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement syn cluster texFoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texSectionMarker,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,@Spell +syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,@Spell,texStyleMatcher syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter if !exists("tex_no_math") syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ @@ -179,24 +180,24 @@ syn match texLigature "\\\([ijolL]\|ae\ " \begin{}/\end{} section markers: {{{1 syn match texSectionMarker "\\begin\>\|\\end\>" nextgroup=texSectionName -syn region texSectionName matchgroup=Delimiter start="{" end="}" contained nextgroup=texSectionModifier -syn region texSectionModifier matchgroup=Delimiter start="\[" end="]" contained +syn region texSectionName matchgroup=Delimiter start="{" end="}" contained nextgroup=texSectionModifier contains=texComment +syn region texSectionModifier matchgroup=Delimiter start="\[" end="]" contained contains=texComment " \documentclass, \documentstyle, \usepackage: {{{1 syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texSectionName,texDocTypeArgs -syn region texDocTypeArgs matchgroup=Delimiter start="\[" end="]" contained nextgroup=texSectionName +syn region texDocTypeArgs matchgroup=Delimiter start="\[" end="]" contained nextgroup=texSectionName contains=texComment " Preamble syntax-based folding support: {{{1 if g:tex_fold_enabled && has("folding") - syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=@texMatchGroup + syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texMatchGroup endif " TeX input: {{{1 syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement -syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies +syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt syn match texInputCurlies "[{}]" contained -syn region texInputFileOpt matchgroup=Delimiter start="\[" end="\]" contained +syn region texInputFileOpt matchgroup=Delimiter start="\[" end="\]" contained contains=texComment " Type Styles (LaTeX 2.09): {{{1 syn match texTypeStyle "\\rm\>" @@ -309,7 +310,7 @@ if !exists("tex_no_math") exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' - exe 'HiLink '.grpname.' texMath' + exe 'hi def link '.grpname.' texMath' if a:starform let grpname = "texMathZone".a:sfx.'S' let syncname = "texSyncMathZone".a:sfx.'S' @@ -317,7 +318,7 @@ if !exists("tex_no_math") exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' - exe 'HiLink '.grpname.' texMath' + exe 'hi def link '.grpname.' texMath' endif endfun @@ -399,7 +400,7 @@ endif " Separate lines used for verb` and verb# so that the end conditions {{{1 " will appropriately terminate. Ideally vim would let me save a " character from the start pattern and re-use it in the end-pattern. -syn region texZone start="\\begin{verbatim}" end="\\end{verbatim}\|%stopzone\>" contains=@Spell +syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell " listings package: syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>" contains=@Spell " moreverb package: @@ -456,6 +457,14 @@ syn match texLength "\<\d\+\([.,]\d\+\ " TeX String Delimiters: {{{1 syn match texString "\(``\|''\|,,\)" +" makeatletter -- makeatother sections +if !exists("g:tex_no_error") + syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained + syn match texStyleStatement "\\[a-zA-Z@]\+" contained + syn region texStyleMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained + syn region texStyleMatcher matchgroup=Delimiter start="\[" end="]" contains=@texStyleGroup,texError contained +endif + " LaTeX synchronization: {{{1 syn sync maxlines=200 syn sync minlines=50 @@ -507,6 +516,7 @@ if did_tex_syntax_inits == 1 HiLink texMathDelimSet2 texMathDelim HiLink texMathDelimKey texMathDelim HiLink texMathMatcher texMath + HiLink texMathZoneV texMath HiLink texMathZoneW texMath HiLink texMathZoneX texMath HiLink texMathZoneY texMath @@ -516,6 +526,7 @@ if did_tex_syntax_inits == 1 HiLink texSectionMarker texCmdName HiLink texSectionName texSection HiLink texSpaceCode texStatement + HiLink texStyleStatement texStatement HiLink texTypeSize texType HiLink texTypeStyle texType
--- a/runtime/syntax/tilde.vim +++ b/runtime/syntax/tilde.vim @@ -3,7 +3,7 @@ " Language: Tilde " Maintainer: Tobias Rundstrm <tobi@tildesoftware.net> " URL: http://www.tildesoftware.net -" CVS: $Id$ +" CVS: $Id: tilde.vim,v 1.1 2004/06/13 19:31:51 vimboss Exp $ if exists("b:current_syntax") finish
--- a/runtime/syntax/uil.vim +++ b/runtime/syntax/uil.vim @@ -1,8 +1,9 @@ " Vim syntax file " Language: Motif UIL (User Interface Language) " Maintainer: Thomas Koehler <jean-luc@picard.franken.de> -" Last Change: 2002 Sep 20 -" URL: http://jeanluc-picard.de/vim/syntax/uil.vim +" Last Change: 2009 Dec 04 +" URL: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/uil.vim + " Quit when a syntax file was already loaded if version < 600
--- a/runtime/syntax/updatedb.vim +++ b/runtime/syntax/updatedb.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: updatedb.conf(5) configuration file " Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2007-10-25 +" Latest Revision: 2009-05-25 if exists("b:current_syntax") finish @@ -18,7 +18,11 @@ syn region updatedbComment display onel syn match updatedbBegin display '^' \ nextgroup=updatedbName,updatedbComment skipwhite -syn keyword updatedbName contained PRUNEFS PRUNEPATHS PRUNE_BIND_MOUNTS +syn keyword updatedbName contained + \ PRUNEFS + \ PRUNENAMES + \ PRUNEPATHS + \ PRUNE_BIND_MOUNTS \ nextgroup=updatedbNameEq syn match updatedbNameEq contained display '=' nextgroup=updatedbValue
--- a/runtime/syntax/vhdl.vim +++ b/runtime/syntax/vhdl.vim @@ -2,7 +2,7 @@ " Language: VHDL " Maintainer: Czo <Olivier.Sirol@lip6.fr> " Credits: Stephan Hegel <stephan.hegel@snc.siemens.com.cn> -" $Id$ +" $Id: vhdl.vim,v 1.1 2004/06/13 15:34:56 vimboss Exp $ " VHSIC Hardware Description Language " Very High Scale Integrated Circuit
--- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: Vim 7.2 script " Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz> -" Last Change: July 29, 2008 -" Version: 7.2-82 +" Last Change: Nov 18, 2009 +" Version: 7.2-95 " Automatically generated keyword lists: {{{1 " Quit when a syntax file was already loaded {{{2 @@ -16,11 +16,11 @@ syn keyword vimTodo contained COMBAK FIX syn cluster vimCommentGroup contains=vimTodo,@Spell " regular vim commands {{{2 -syn keyword vimCommand contained abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echom[sg] em[enu] endt[ry] exu[sage] fin[d] foldc[lose] fu[nction] ha[rdcopy] helpt[ags] if is[earch] ju[mps] kee[pmarks] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lla[st] lmapc[lear] lnf[ile] loc[kmarks] lpf[ile] lt[ag] mak[e] menut[ranslate] mkvie[w] mzf[ile] n[ext] nu[mber] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sn[ext] snor[emap] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] verb[ose] vim[grep] vmapc[lear] wh[ile] win[size] wq wv[iminfo] xm[ap] XMLent xnoremenu -syn keyword vimCommand contained abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echon emenu* endw[hile] f[ile] fini[sh] folddoc[losed] go[to] h[elp] hid[e] ij[ump] isp[lit] k laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] lh[elpgrep] lli[st] lnew[er] lNf[ile] lockv[ar] lp[revious] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] N[ext] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] smapc[lear] sN[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] ve[rsion] vimgrepa[dd] vne[w] winc[md] wn[ext] wqa[ll] X xmapc[lear] XMLns xunme -syn keyword vimCommand contained al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] e[dit] endfo[r] ene[w] files fir[st] foldd[oopen] gr[ep] helpf[ind] his[tory] il[ist] iuna[bbrev] keepalt lad[dexpr] later lcl[ose] lf[ile] lg[etfile] l[ist] lmak[e] lne[xt] ln[oremap] lol[der] lr[ewind] lvimgrepa[dd] marks mks[ession] mod[e] nbkey nmapc[lear] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] sme sni[ff] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] vert[ical] vi[sual] vs[plit] windo wN[ext] w[rite] xa[ll] xme xn[oremap] xunmenu -syn keyword vimCommand contained arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier el[se] endf[unction] ex filetype fix[del] foldo[pen] grepa[dd] helpg[rep] iabc[lear] imapc[lear] j[oin] keepj[umps] laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] ll lm[ap] lN[ext] lo[adview] lop[en] ls lw[indow] mat[ch] mksp[ell] m[ove] new noh[lsearch] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] smenu sno[magic] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] up[date] vie[w] viu[sage] wa[ll] winp[os] wp[revious] ws[verb] x[it] xmenu xnoreme y[ank] -syn keyword vimCommand contained argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] en[dif] exi[t] fina[lly] fo[ld] for +syn keyword vimCommand contained abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echom[sg] em[enu] en[dif] ex files fini[sh] foldc[lose] for grepa[dd] helpg[rep] iabc[lear] imapc[lear] j[oin] keepj[umps] laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] ll lmapc[lear] lnf[ile] lockv[ar] lp[revious] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] N[ext] ol[dfiles] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sN[ext] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] vert[ical] vi[sual] vs[plit] windo wN[ext] w[rite] xa[ll] xmenu xnoremenu +syn keyword vimCommand contained abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echon emenu* endt[ry] exi[t] filetype fir[st] folddoc[losed] fu[nction] ha[rdcopy] helpt[ags] if is[earch] ju[mps] kee[pmarks] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lla[st] lnew[er] lNf[ile] lol[der] lr[ewind] lvimgrepa[dd] marks mks[ession] mod[e] nbkey nmapc[lear] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] sme sni[ff] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] up[date] vie[w] viu[sage] wa[ll] winp[os] wp[revious] ws[verb] x[it] XMLent xunme +syn keyword vimCommand contained al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] e[dit] endfo[r] endw[hile] exu[sage] fina[lly] fix[del] foldd[oopen] go[to] h[elp] hid[e] ij[ump] isp[lit] k laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] lh[elpgrep] lli[st] lne[xt] lo[adview] lop[en] ls lw[indow] mat[ch] mksp[ell] m[ove] new noh[lsearch] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] smenu sno[magic] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] verb[ose] vim[grep] vmapc[lear] wh[ile] win[size] wq wv[iminfo] xmapc[lear] XMLns xunmenu +syn keyword vimCommand contained arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier el[se] endf[unction] ene[w] f[ile] fin[d] fo[ld] foldo[pen] gr[ep] helpf[ind] his[tory] il[ist] iuna[bbrev] keepalt lad[dexpr] later lcl[ose] lf[ile] lg[etfile] l[ist] lmak[e] lN[ext] loc[kmarks] lpf[ile] lt[ag] mak[e] menut[ranslate] mkvie[w] mzf[ile] n[ext] nu[mber] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] sn[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] ve[rsion] vimgrepa[dd] vne[w] winc[md] wn[ext] wqa[ll] X xme xnoreme y[ank] +syn keyword vimCommand contained argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] syn match vimCommand contained "\<z[-+^.=]" " vimOptions are caught only when contained in a vimSet {{{2 @@ -33,7 +33,7 @@ syn keyword vimOption contained allowrev syn keyword vimOption contained altkeymap arabic autowrite backupcopy bdir bin bomb bt cd ci cinw co completefunc cp cscopetag csto debug dict dir eb enc errorbells expandtab fdl fenc fileformat fml foldignore foldopen fs gfn grepprg guiheadroom helplang history hls imactivatekey iminsert inde insertmode iskeyword keymodel laststatus lisp lpl magic maxfuncdepth menuitems mm modifiable mousem mps number opendevice paste pex pmbcs printencoding prompt rdt ri " vimOptions: These are the turn-off setting variants {{{2 -syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobk nobuflisted nocin noconfirm nocopyindent nocscopeverbose nocuc nocursorline nodg nodisable noeb noedcompatible noendofline noequalalways noesckeys noex noexrc nofk nofoldenable nogdefault nohid nohk nohkmapp nohls noic noignorecase noimc noimd noinf noinsertmode nojoinspaces nolazyredraw nolinebreak nolist nolpl noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw noremap norevins norightleft norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx novisualbell nowarn noweirdinvert nowfw nowinfixheight nowiv nowrap nowrite nowritebackup +syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobk nobuflisted nocin noconfirm nocopyindent nocscopeverbose nocuc nocursorline nodg noimdisable noeb noedcompatible noendofline noequalalways noesckeys noex noexrc nofk nofoldenable nogdefault nohid nohk nohkmapp nohls noic noignorecase noimc noimd noinf noinsertmode nojoinspaces nolazyredraw nolinebreak nolist nolpl noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw noremap norevins norightleft norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx novisualbell nowarn noweirdinvert nowfw nowinfixheight nowiv nowrap nowrite nowritebackup syn keyword vimOption contained noai noaltkeymap noar noarabicshape noautochdir noautowrite noawa nobeval nobiosk nobl nocf nocindent noconsk nocp nocst nocul nodeco nodiff noea noed noek noeol noerrorbells noet noexpandtab nofen nofkmap nogd noguipty nohidden nohkmap nohkp nohlsearch noicon noim noimcmdline noincsearch noinfercase nois nojs nolbr nolisp noloadplugins nolz nomacatsui nomh nomod nomodifiable nomore nomousefocus nonu noodev nopaste nopreserveindent noprompt noreadonly norestorescreen nori norightleftcmd norlc nors noruler nosc noscrollbind nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast novb nowa nowb nowfh nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows syn keyword vimOption contained noakm noanti noarab noari noautoindent noautowriteall nobackup nobin nobioskey nobomb noci nocompatible noconskey nocscopetag nocsverb nocursorcolumn nodelcombine nodigraph @@ -62,7 +62,7 @@ syn case ignore syn keyword vimAutoEvent contained BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre Cmd-event CmdwinEnter CmdwinLeave ColorScheme CursorHold CursorHoldI CursorMoved CursorMovedI EncodingChanged FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertEnter InsertLeave MenuPopup QuickFixCmdPost QuickFixCmdPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabEnter TabLeave TermChanged TermResponse User UserGettingBored VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave " Highlight commonly used Groupnames {{{2 -syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo +syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo None " Default highlighting groups {{{2 syn keyword vimHLGroup contained Cursor CursorColumn CursorIM CursorLine DiffAdd DiffChange DiffDelete DiffText Directory ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu @@ -99,8 +99,9 @@ syn match vimNumber "#\x\{6}" syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd syn match vimIsCommand "\<\h\w*\>" contains=vimCommand syn match vimVar "\<[bwglsav]:\K\k*\>" -syn match vimVar contained "\<\K\k*\>" -syn keyword vimCommand contained in +syn match vimVar contained "\<\K\k*\>" +syn match vimFBVar contained "\<[bwglsav]:\K\k*\>" +syn keyword vimCommand contained in " Insertions And Appends: insert append {{{2 " ======================= @@ -127,7 +128,7 @@ syn keyword vimFTOption contained detect " Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2 " ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking. -syn cluster vimAugroupList contains=vimIsCommand,vimFunction,vimFunctionError,vimLineComment,vimSpecFile,vimOper,vimNumber,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue +syn cluster vimAugroupList contains=vimIsCommand,vimFuncName,vimFunction,vimFunctionError,vimLineComment,vimSpecFile,vimOper,vimNumber,vimOperParen,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'a' syn region vimAugroup fold start="\<aug\%[roup]\>\s\+\K\k*" end="\<aug\%[roup]\>\s\+[eE][nN][dD]\>" contains=vimAugroupKey,vimAutoCmd,@vimAugroupList keepend else @@ -141,156 +142,154 @@ syn keyword vimAugroupKey contained aug[ " Operators: {{{2 " ========= -syn cluster vimOperGroup contains=vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue -syn match vimOper "\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile -syn match vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile -syn region vimOperParen oneline matchgroup=vimOper start="(" end=")" contains=@vimOperGroup -syn region vimOperParen oneline matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar +syn cluster vimOperGroup contains=vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue +syn match vimOper "\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile +syn match vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile +syn region vimOperParen oneline matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup +syn region vimOperParen oneline matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar if !exists("g:vimsyn_noerror") - syn match vimOperError ")" + syn match vimOperError ")" endif " Functions : Tag is provided for those who wish to highlight tagged functions {{{2 " ========= -syn cluster vimFuncList contains=vimCommand,vimFuncKey,Tag,vimFuncSID -syn cluster vimFuncBodyList contains=vimAddress,vimAutoCmd,vimCmplxRepeat,vimComment,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimFunc,vimFunction,vimFunctionError,vimFuncVar,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUserCommand -if !exists("g:vimsyn_noerror") - syn match vimFunctionError "\<fu\%[nction]!\=\s\+\zs\U\i\{-}\ze\s*(" contains=vimFuncKey,vimFuncBlank nextgroup=vimFuncBody -endif -syn match vimFunction "\<fu\%[nction]!\=\s\+\(\(<[sS][iI][dD]>\|[Ss]:\|\u\|\i\+#\)\i*\|\(g:\)\=\(\I\i*\.\)\+\I\i*\)\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody +syn cluster vimFuncList contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID +syn cluster vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimHighlight,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUserCommand +syn match vimFunction "\<fu\%[nction]!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody + if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'f' - syn region vimFuncBody contained fold start="\ze(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList + syn region vimFuncBody contained fold start="\ze(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList else - syn region vimFuncBody contained start="\ze(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList + syn region vimFuncBody contained start="\ze(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList endif -syn match vimFuncVar contained "a:\(\I\i*\|\d\+\)" -syn match vimFuncSID contained "\c<sid>\|\<s:" -syn keyword vimFuncKey contained fu[nction] -syn match vimFuncBlank contained "\s\+" +syn match vimFuncVar contained "a:\(\K\k*\|\d\+\)" +syn match vimFuncSID contained "\c<sid>\|\<s:" +syn keyword vimFuncKey contained fu[nction] +syn match vimFuncBlank contained "\s\+" -syn keyword vimPattern contained start skip end +syn keyword vimPattern contained start skip end " Special Filenames, Modifiers, Extension Removal: {{{2 " =============================================== -syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst -syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst -syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst -syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst -syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst -syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst -syn match vimSpecFileMod "\(:[phtre]\)\+" contained +syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst +syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst +syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst +syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst +syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst +syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst +syn match vimSpecFileMod "\(:[phtre]\)\+" contained " User-Specified Commands: {{{2 " ======================= -syn cluster vimUserCmdList contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFilter,vimFunc,vimFunction,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine -syn keyword vimUserCommand contained com[mand] -syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserCommand,@vimUserCmdList -syn match vimUserAttrb contained "-n\%[args]=[01*?+]" contains=vimUserAttrbKey,vimOper -syn match vimUserAttrb contained "-com\%[plete]=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError -syn match vimUserAttrb contained "-ra\%[nge]\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey -syn match vimUserAttrb contained "-cou\%[nt]=\d\+" contains=vimNumber,vimOper,vimUserAttrbKey -syn match vimUserAttrb contained "-bang\=\>" contains=vimOper,vimUserAttrbKey -syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey -syn match vimUserAttrb contained "-re\%[gister]\>" contains=vimOper,vimUserAttrbKey +syn cluster vimUserCmdList contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFilter,vimFunc,vimFuncName,vimFunction,vimFunctionError,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine +syn keyword vimUserCommand contained com[mand] +syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserCommand,@vimUserCmdList +syn match vimUserAttrb contained "-n\%[args]=[01*?+]" contains=vimUserAttrbKey,vimOper +syn match vimUserAttrb contained "-com\%[plete]=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError +syn match vimUserAttrb contained "-ra\%[nge]\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey +syn match vimUserAttrb contained "-cou\%[nt]=\d\+" contains=vimNumber,vimOper,vimUserAttrbKey +syn match vimUserAttrb contained "-bang\=\>" contains=vimOper,vimUserAttrbKey +syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey +syn match vimUserAttrb contained "-re\%[gister]\>" contains=vimOper,vimUserAttrbKey if !exists("g:vimsyn_noerror") - syn match vimUserCmdError contained "\S\+\>" + syn match vimUserCmdError contained "\S\+\>" endif syn case ignore -syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister] -syn keyword vimUserAttrbCmplt contained augroup buffer command dir environment event expression file function help highlight mapping menu option something tag tag_listfiles var -syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError -syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\u\w*\)\+\|\u\w*\)"hs=s+1 nextgroup=vimUserCmdError +syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister] +syn keyword vimUserAttrbCmplt contained augroup buffer command dir environment event expression file function help highlight mapping menu option shellcmd something tag tag_listfiles var +syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError +syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\u\w*\)\+\|\u\w*\)"hs=s+1 nextgroup=vimUserCmdError syn case match -syn match vimUserAttrbCmplt contained "custom,\u\w*" +syn match vimUserAttrbCmplt contained "custom,\u\w*" " Lower Priority Comments: after some vim commands... {{{2 " ======================= -syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString -syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString -syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString -syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"' +syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString +syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString +syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString +syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"' " Environment Variables: {{{2 " ===================== -syn match vimEnvvar "\$\I\i*" -syn match vimEnvvar "\${\I\i*}" +syn match vimEnvvar "\$\I\i*" +syn match vimEnvvar "\${\I\i*}" " In-String Specials: {{{2 " Try to catch strings, if nothing else matches (therefore it must precede the others!) " vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside []) -syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1 -syn match vimPatSepErr contained "\\)" -syn match vimPatSep contained "\\|" -syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\]['"]" contains=@vimStringGroup -syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline -syn match vimNotPatSep contained "\\\\" -syn cluster vimStringGroup contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell -syn region vimString oneline keepend start=+[^:a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+ contains=@vimStringGroup -syn region vimString oneline keepend start=+[^:a-zA-Z>!\\@]'+lc=1 end=+'+ -syn region vimString oneline start=+=!+lc=1 skip=+\\\\\|\\!+ end=+!+ contains=@vimStringGroup -syn region vimString oneline start="=+"lc=1 skip="\\\\\|\\+" end="+" contains=@vimStringGroup -syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup -syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont -syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+ +syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1 +syn match vimPatSepErr contained "\\)" +syn match vimPatSep contained "\\|" +syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\]['"]" contains=@vimStringGroup +syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline +syn match vimNotPatSep contained "\\\\" +syn cluster vimStringGroup contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell +syn region vimString oneline keepend start=+[^:a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+ contains=@vimStringGroup +syn region vimString oneline keepend start=+[^:a-zA-Z>!\\@]'+lc=1 end=+'+ +syn region vimString oneline start=+=!+lc=1 skip=+\\\\\|\\!+ end=+!+ contains=@vimStringGroup +syn region vimString oneline start="=+"lc=1 skip="\\\\\|\\+" end="+" contains=@vimStringGroup +syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup +syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont +syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+ " Substitutions: {{{2 " ============= -syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation -syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation -syn cluster vimSubstList add=vimCollection -syn match vimSubst "\(:\+\s*\|^\s*\||\s*\)\<s\%[ubstitute][:[:alpha:]]\@!" nextgroup=vimSubstPat -syn match vimSubst "s\%[ubstitute][:[:alpha:]]\@!" nextgroup=vimSubstPat contained -syn match vimSubst "/\zss\%[ubstitute]\ze/" nextgroup=vimSubstPat -syn match vimSubst1 contained "s\%[ubstitute]\>" nextgroup=vimSubstPat -syn region vimSubstPat contained matchgroup=vimSubstDelim start="\z([^a-zA-Z( \t[\]&]\)"rs=s+1 skip="\\\\\|\\\z1" end="\z1"re=e-1,me=e-1 contains=@vimSubstList nextgroup=vimSubstRep4 oneline -syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline -syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass -syn match vimCollClassErr contained "\[:.\{-\}:\]" -syn match vimCollClass contained transparent "\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|return\|tab\|escape\|backspace\):\]" -syn match vimSubstSubstr contained "\\z\=\d" -syn match vimSubstTwoBS contained "\\\\" -syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags -syn match vimSubstFlags contained "[&cegiIpr]\+" +syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation +syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation +syn cluster vimSubstList add=vimCollection +syn match vimSubst "\(:\+\s*\|^\s*\||\s*\)\<s\%[ubstitute][:[:alpha:]]\@!" nextgroup=vimSubstPat +syn match vimSubst "s\%[ubstitute][:#[:alpha:]]\@!" nextgroup=vimSubstPat contained +syn match vimSubst "/\zss\%[ubstitute]\ze/" nextgroup=vimSubstPat +syn match vimSubst1 contained "s\%[ubstitute]\>" nextgroup=vimSubstPat +syn region vimSubstPat contained matchgroup=vimSubstDelim start="\z([^a-zA-Z( \t[\]&]\)"rs=s+1 skip="\\\\\|\\\z1" end="\z1"re=e-1,me=e-1 contains=@vimSubstList nextgroup=vimSubstRep4 oneline +syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline +syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass +syn match vimCollClassErr contained "\[:.\{-\}:\]" +syn match vimCollClass contained transparent "\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|return\|tab\|escape\|backspace\):\]" +syn match vimSubstSubstr contained "\\z\=\d" +syn match vimSubstTwoBS contained "\\\\" +syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags +syn match vimSubstFlags contained "[&cegiIpr]\+" " 'String': {{{2 -syn match vimString "[^(,]'[^']\{-}\zs'" +syn match vimString "[^(,]'[^']\{-}\zs'" " Marks, Registers, Addresses, Filters: {{{2 -syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimOper,vimMarkNumber,vimSubst -syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimOper,vimMarkNumber,vimSubst -syn match vimMark ",\zs'[<>]\ze" nextgroup=vimOper,vimMarkNumber,vimSubst -syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimOper,vimMarkNumber,vimSubst -syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimOper,vimMarkNumber,vimSubst -syn match vimMarkNumber "[-+]\d\+" nextgroup=vimSubst contained contains=vimOper -syn match vimPlainMark contained "'[a-zA-Z0-9]" +syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimOper,vimMarkNumber,vimSubst +syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimOper,vimMarkNumber,vimSubst +syn match vimMark ",\zs'[<>]\ze" nextgroup=vimOper,vimMarkNumber,vimSubst +syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimOper,vimMarkNumber,vimSubst +syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimOper,vimMarkNumber,vimSubst +syn match vimMarkNumber "[-+]\d\+" nextgroup=vimSubst contained contains=vimOper +syn match vimPlainMark contained "'[a-zA-Z0-9]" -syn match vimRegister '[^,;]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":]' -syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]' -syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]' -syn match vimRegister '@"' -syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]' +syn match vimRegister '[^,;[{]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":]' +syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]' +syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]' +syn match vimRegister '@"' +syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]' -syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1 -syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1 +syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1 +syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1 -syn match vimFilter contained "^!.\{-}\(|\|$\)" contains=vimSpecFile -syn match vimFilter contained "\A!.\{-}\(|\|$\)"ms=s+1 contains=vimSpecFile +syn match vimFilter contained "^!.\{-}\(|\|$\)" contains=vimSpecFile +syn match vimFilter contained "\A!.\{-}\(|\|$\)"ms=s+1 contains=vimSpecFile " Complex repeats (:h complex-repeat) {{{2 -"syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]'lc=1 -"syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\)' +syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]'lc=1 +syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\)' " Set command and associated set-options (vimOptions) with comment {{{2 -syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|set\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod -syn region vimSetEqual contained start="=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation oneline -syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar -syn match vimSetSep contained "[,:]" -syn match vimSetMod contained "&vim\|[!&]\|all&" +syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|set\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod +syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation oneline +syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar +syn match vimSetSep contained "[,:]" +syn match vimSetMod contained "&vim\=\|[!&?<]\|all&" " Let {{{2 " === -syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar +syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar,vimFuncVar " Abbreviations {{{2 " ============= @@ -298,232 +297,235 @@ syn keyword vimAbb ab[breviate] ca[bbrev " Autocmd {{{2 " ======= -syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace -syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList -syn match vimAutoCmdSfxList contained "\S*" -syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList +syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace +syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList +syn match vimAutoCmdSfxList contained "\S*" +syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList " Echo and Execute -- prefer strings! {{{2 " ================ -syn region vimEcho oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimString,varVar -syn region vimExecute oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimIsCommand,vimString,vimOper,vimVar,vimNotation,vimOperParen -syn match vimEchoHL "echohl\=" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone +syn region vimEcho oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimFuncVar,vimString,vimVar +syn region vimExecute oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimFuncVar,vimIsCommand,vimOper,vimNotation,vimOperParen,vimString,vimVar +syn match vimEchoHL "echohl\=" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone syn case ignore -syn keyword vimEchoHLNone none +syn keyword vimEchoHLNone none syn case match " Maps {{{2 " ==== -syn match vimMap "\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs -syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] snor[emap] vm[ap] vn[oremap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs -syn keyword vimMap mapc[lear] -syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs -syn match vimMapBang contained "!" skipwhite nextgroup=vimMapMod,vimMapLhs -syn match vimMapMod contained "\c<\(buffer\|expr\|\(local\)\=leader\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs -syn match vimMapRhs contained ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend -syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue +syn match vimMap "\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs +syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] smap snor[emap] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs +syn keyword vimMap mapc[lear] +syn keyword vimUnmap cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs +syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs +syn match vimMapBang contained "!" skipwhite nextgroup=vimMapMod,vimMapLhs +syn match vimMapMod contained "\c<\(buffer\|expr\|\(local\)\=leader\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs +syn match vimMapRhs contained ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend +syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue syn case ignore -syn keyword vimMapModKey contained buffer expr leader localleader plug script sid silent unique +syn keyword vimMapModKey contained buffer expr leader localleader plug script sid silent unique syn case match " Menus {{{2 " ===== -syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod -syn keyword vimCommand am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList -syn match vimMenuName "[^ \t\\<]\+" contained nextgroup=vimMenuNameMore,vimMenuMap -syn match vimMenuPriority "\d\+\(\.\d\+\)*" contained skipwhite nextgroup=vimMenuName -syn match vimMenuNameMore "\c\\\s\|<tab>\|\\\." contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation -syn match vimMenuMod contained "\c<\(script\|silent\)\+>" skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList -syn match vimMenuMap "\s" contained skipwhite nextgroup=vimMenuRhs -syn match vimMenuRhs ".*$" contained contains=vimString,vimComment,vimIsCommand -syn match vimMenuBang "!" contained skipwhite nextgroup=@vimMenuList +syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod +syn keyword vimCommand am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList +syn match vimMenuName "[^ \t\\<]\+" contained nextgroup=vimMenuNameMore,vimMenuMap +syn match vimMenuPriority "\d\+\(\.\d\+\)*" contained skipwhite nextgroup=vimMenuName +syn match vimMenuNameMore "\c\\\s\|<tab>\|\\\." contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation +syn match vimMenuMod contained "\c<\(script\|silent\)\+>" skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList +syn match vimMenuMap "\s" contained skipwhite nextgroup=vimMenuRhs +syn match vimMenuRhs ".*$" contained contains=vimString,vimComment,vimIsCommand +syn match vimMenuBang "!" contained skipwhite nextgroup=@vimMenuList " Angle-Bracket Notation (tnx to Michael Geddes) {{{2 " ====================== syn case ignore -syn match vimNotation "\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|space\|k\=\(page\)\=\(\|down\|up\)\)>" contains=vimBracket -syn match vimNotation "\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>" contains=vimBracket -syn match vimNotation "\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>" contains=vimBracket -syn match vimNotation '\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket -syn match vimNotation '\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|f-args\|lt\)>' contains=vimBracket -syn match vimNotation "\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>" contains=vimBracket -syn match vimBracket contained "[\\<>]" +syn match vimNotation "\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|space\|k\=\(page\)\=\(\|down\|up\)\)>" contains=vimBracket +syn match vimNotation "\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>" contains=vimBracket +syn match vimNotation "\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>" contains=vimBracket +syn match vimNotation '\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket +syn match vimNotation '\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|f-args\|lt\)>' contains=vimBracket +syn match vimNotation "\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>" contains=vimBracket +syn match vimBracket contained "[\\<>]" syn case match " User Function Highlighting {{{2 " (following Gautam Iyer's suggestion) " ========================== -syn match vimFunc "\%(\%([gGsS]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute -syn match vimUserFunc contained "\%(\%([gGsS]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation -syn match vimNotFunc "\<if\>\|\<el\%[seif]\>" +syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute +syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation +syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<return\>\|\<while\>" " Errors And Warnings: {{{2 " ==================== if !exists("g:vimsyn_noerror") - syn match vimElseIfErr "\<else\s\+if\>" - syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/ + syn match vimFunctionError "\s\zs[a-z0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank +" syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)[0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank + syn match vimElseIfErr "\<else\s\+if\>" + syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/ endif " Norm {{{2 " ==== -syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds -syn match vimNormCmds contained ".*$" +syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds +syn match vimNormCmds contained ".*$" " Syntax {{{2 "======= -syn match vimGroupList contained "@\=[^ \t,]*" contains=vimGroupSpecial,vimPatSep -syn match vimGroupList contained "@\=[^ \t,]*," nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep -syn keyword vimGroupSpecial contained ALL ALLBUT +syn match vimGroupList contained "@\=[^ \t,]*" contains=vimGroupSpecial,vimPatSep +syn match vimGroupList contained "@\=[^ \t,]*," nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep +syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP if !exists("g:vimsyn_noerror") - syn match vimSynError contained "\i\+" - syn match vimSynError contained "\i\+=" nextgroup=vimGroupList + syn match vimSynError contained "\i\+" + syn match vimSynError contained "\i\+=" nextgroup=vimGroupList endif -syn match vimSynContains contained "\<contain\(s\|edin\)=" nextgroup=vimGroupList -syn match vimSynKeyContainedin contained "\<containedin=" nextgroup=vimGroupList -syn match vimSynNextgroup contained "nextgroup=" nextgroup=vimGroupList +syn match vimSynContains contained "\<contain\(s\|edin\)=" nextgroup=vimGroupList +syn match vimSynKeyContainedin contained "\<containedin=" nextgroup=vimGroupList +syn match vimSynNextgroup contained "nextgroup=" nextgroup=vimGroupList -syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment -syn match vimAuSyntax contained "\s+sy\%[ntax]" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment +syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment +syn match vimAuSyntax contained "\s+sy\%[ntax]" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment " Syntax: case {{{2 -syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError +syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError if !exists("g:vimsyn_noerror") - syn match vimSynCaseError contained "\i\+" + syn match vimSynCaseError contained "\i\+" endif -syn keyword vimSynCase contained ignore match +syn keyword vimSynCase contained ignore match " Syntax: clear {{{2 -syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList +syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList " Syntax: cluster {{{2 -syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName -syn region vimClusterName contained matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError -syn match vimGroupAdd contained "add=" nextgroup=vimGroupList -syn match vimGroupRem contained "remove=" nextgroup=vimGroupList +syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName +syn region vimClusterName contained matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError +syn match vimGroupAdd contained "add=" nextgroup=vimGroupList +syn match vimGroupRem contained "remove=" nextgroup=vimGroupList " Syntax: include {{{2 -syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList +syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList " Syntax: keyword {{{2 -syn cluster vimSynKeyGroup contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin -syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion -syn region vimSynKeyRegion contained oneline keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup -syn match vimSynKeyOpt contained "\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>" +syn cluster vimSynKeyGroup contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin +syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion +syn region vimSynKeyRegion contained oneline keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup +syn match vimSynKeyOpt contained "\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>" " Syntax: match {{{2 -syn cluster vimSynMtchGroup contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation -syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion -syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup -syn match vimSynMtchOpt contained "\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>" +syn cluster vimSynMtchGroup contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation +syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion +syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup +syn match vimSynMtchOpt contained "\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>" if has("conceal") - syn match vimSynMtchOpt contained "\<cchar=" nextgroup=VimSynMtchCchar - syn match vimSynMtchCchar contained "." + syn match vimSynMtchOpt contained "\<cchar=" nextgroup=VimSynMtchCchar + syn match vimSynMtchCchar contained "\S" endif " Syntax: off and on {{{2 -syn keyword vimSynType contained enable list manual off on reset +syn keyword vimSynType contained enable list manual off on reset " Syntax: region {{{2 -syn cluster vimSynRegPatGroup contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation -syn cluster vimSynRegGroup contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp -syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion -syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup -syn match vimSynRegOpt contained "\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>" -syn match vimSynReg contained "\(start\|skip\|end\)="he=e-1 nextgroup=vimSynRegPat -syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup -syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg -syn match vimSynPatMod contained "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=" -syn match vimSynPatMod contained "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod -syn match vimSynPatMod contained "lc=\d\+" -syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod -syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]" -syn match vimSynNotPatRange contained "\\\\\|\\\[" -syn match vimMtchComment contained '"[^"]\+$' +syn cluster vimSynRegPatGroup contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation +syn cluster vimSynRegGroup contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp +syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion +syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup +syn match vimSynRegOpt contained "\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>" +syn match vimSynReg contained "\(start\|skip\|end\)="he=e-1 nextgroup=vimSynRegPat +syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup +syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg +syn match vimSynPatMod contained "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=" +syn match vimSynPatMod contained "\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod +syn match vimSynPatMod contained "lc=\d\+" +syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod +syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]" +syn match vimSynNotPatRange contained "\\\\\|\\\[" +syn match vimMtchComment contained '"[^"]\+$' " Syntax: sync {{{2 " ============ syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion if !exists("g:vimsyn_noerror") - syn match vimSyncError contained "\i\+" + syn match vimSyncError contained "\i\+" endif -syn keyword vimSyncC contained ccomment clear fromstart -syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName -syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg -syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber -syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat -syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber -syn match vimSyncGroupName contained "\k\+" skipwhite nextgroup=vimSyncKey -syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup -syn match vimSyncGroup contained "\k\+" skipwhite nextgroup=vimSynRegPat,vimSyncNone -syn keyword vimSyncNone contained NONE +syn keyword vimSyncC contained ccomment clear fromstart +syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName +syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg +syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber +syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat +syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber +syn match vimSyncGroupName contained "\k\+" skipwhite nextgroup=vimSyncKey +syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup +syn match vimSyncGroup contained "\k\+" skipwhite nextgroup=vimSynRegPat,vimSyncNone +syn keyword vimSyncNone contained NONE " Additional IsCommand, here by reasons of precedence {{{2 " ==================== -syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation +syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation " Highlighting {{{2 " ============ -syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment -syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster -syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster - -syn match vimHiGroup contained "\i\+" +syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment +syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster +syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster + +syn match vimHiGroup contained "\i\+" syn case ignore -syn keyword vimHiAttrib contained none bold inverse italic reverse standout underline undercurl -syn keyword vimFgBgAttrib contained none bg background fg foreground +syn keyword vimHiAttrib contained none bold inverse italic reverse standout underline undercurl +syn keyword vimFgBgAttrib contained none bg background fg foreground syn case match -syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib -syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList +syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib +syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList syn case ignore -syn keyword vimHiCtermColor contained black blue brown cyan darkBlue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred magenta red white yellow +syn keyword vimHiCtermColor contained black blue brown cyan darkBlue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred magenta red white yellow syn case match -syn match vimHiFontname contained "[a-zA-Z\-*]\+" -syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'" -syn match vimHiGuiRgb contained "#\x\{6}" +syn match vimHiFontname contained "[a-zA-Z\-*]\+" +syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'" +syn match vimHiGuiRgb contained "#\x\{6}" if !exists("g:vimsyn_noerror") - syn match vimHiCtermError contained "[^0-9]\i*" + syn match vimHiCtermError contained "[^0-9]\i*" endif " Highlighting: hi group key=arg ... {{{2 -syn cluster vimHiCluster contains=vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation -syn region vimHiKeyList contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||" contains=@vimHiCluster +syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation +syn region vimHiKeyList contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||" contains=@vimHiCluster if !exists("g:vimsyn_noerror") - syn match vimHiKeyError contained "\i\+="he=e-1 + syn match vimHiKeyError contained "\i\+="he=e-1 endif -syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList -syn match vimHiStartStop contained "\c\(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption -syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList -syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError -syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList -syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname -syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib -syn match vimHiTermcap contained "\S\+" contains=vimNotation +syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList +syn match vimHiStartStop contained "\c\(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption +syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList +syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError +syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList +syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname +syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib +syn match vimHiTermcap contained "\S\+" contains=vimNotation " Highlight: clear {{{2 -syn keyword vimHiClear contained clear nextgroup=vimHiGroup +syn keyword vimHiClear contained clear nextgroup=vimHiGroup " Highlight: link {{{2 -syn region vimHiLink contained oneline matchgroup=vimCommand start="\<\(def\s\+\)\=link\>\|\<def\>" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation +syn region vimHiLink contained oneline matchgroup=vimCommand start="\<\(def\s\+\)\=link\>\|\<def\>" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation " Control Characters {{{2 " ================== -syn match vimCtrlChar "[--]" +syn match vimCtrlChar "[--]" " Beginners - Patterns that involve ^ {{{2 " ========= -syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle -syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup -syn match vimContinue "^\s*\\" -syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue -syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained +syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle +syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup +syn match vimContinue "^\s*\\" +syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue +syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained " Searches And Globals: {{{2 " ==================== -syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim -syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained -syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' -syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' +syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim +syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained +syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' +syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' " Scripts : perl,ruby : Benoit Cerrina {{{2 " ======= python,tcl: Johannes Zellner @@ -541,94 +543,127 @@ if !exists("g:vimsyn_embed") endif " [-- perl --] {{{3 -if (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(expand("<sfile>:p:h")."/perl.vim") +let s:perlpath= expand("<sfile>:p:h")."/perl.vim" +if !filereadable(s:perlpath) + let s:perlpath= globpath(&rtp,"syntax/perl.vim") +endif +if (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(s:perlpath) unlet! b:current_syntax - syn include @vimPerlScript <sfile>:p:h/perl.vim + exe "syn include @vimPerlScript ".s:perlpath if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'p' - syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript - syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript + syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript + syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript else - syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript - syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript + syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript + syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript endif + syn cluster vimFuncBodyList add=vimPerlRegion else syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ endif +unlet s:perlpath " [-- ruby --] {{{3 -if (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(expand("<sfile>:p:h")."/ruby.vim") +let s:rubypath= expand("<sfile>:p:h")."/ruby.vim" +if !filereadable(s:rubypath) + let s:rubypath= globpath(&rtp,"syntax/ruby.vim") +endif +if (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(s:rubypath) unlet! b:current_syntax - syn include @vimRubyScript <sfile>:p:h/ruby.vim + exe "syn include @vimRubyScript ".s:rubypath if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'r' - syn region vimRubyRegion fold matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript + syn region vimRubyRegion fold matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript else - syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript + syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript endif - syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript + syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript + syn cluster vimFuncBodyList add=vimRubyRegion else syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+ endif +unlet s:rubypath " [-- python --] {{{3 -if (g:vimsyn_embed =~ 'P' && has("python")) && filereadable(expand("<sfile>:p:h")."/python.vim") +let s:pythonpath= expand("<sfile>:p:h")."/python.vim" +if !filereadable(s:pythonpath) + let s:pythonpath= globpath(&rtp,"syntax/python.vim") +endif +if (g:vimsyn_embed =~ 'P' && has("python")) && filereadable(s:pythonpath) unlet! b:current_syntax - syn include @vimPythonScript <sfile>:p:h/python.vim + exe "syn include @vimPythonScript ".s:pythonpath if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'P' - syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript - syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript + syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript + syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript else - syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript - syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript + syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript + syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript endif + syn cluster vimFuncBodyList add=vimPythonRegion else syn region vimEmbedError start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+py\%[thon]\s*<<\s*$+ end=+\.$+ endif +unlet s:pythonpath " [-- tcl --] {{{3 if has("win32") || has("win95") || has("win64") || has("win16") " apparently has("tcl") has been hanging vim on some windows systems with cygwin - let trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$') + let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$') else - let trytcl= 1 + let s:trytcl= 1 endif -if trytcl - if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(expand("<sfile>:p:h")."/tcl.vim") +if s:trytcl + let s:tclpath= expand("<sfile>:p:h")."/tcl.vim" + if !filereadable(s:tclpath) + let s:tclpath= globpath(&rtp,"syntax/tcl.vim") + endif + if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(s:tclpath) unlet! b:current_syntax - syn include @vimTclScript <sfile>:p:h/tcl.vim + exe "syn include @vimTclScript ".s:tclpath if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 't' - syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript - syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript + syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript + syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript else - syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript - syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript + syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript + syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript endif + syn cluster vimFuncBodyList add=vimTclScript + else + syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ + syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+ endif + unlet s:tclpath else syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+ endif -unlet trytcl +unlet s:trytcl " [-- mzscheme --] {{{3 -if (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(expand("<sfile>:p:h")."/scheme.vim") +let s:mzschemepath= expand("<sfile>:p:h")."/scheme.vim" +if !filereadable(s:mzschemepath) + let s:mzschemepath= globpath(&rtp,"syntax/scheme.vim") +endif +if (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(s:mzschemepath) unlet! b:current_syntax let iskKeep= &isk - syn include @vimMzSchemeScript <sfile>:p:h/scheme.vim + exe "syn include @vimMzSchemeScript ".s:mzschemepath let &isk= iskKeep if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'm' - syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript - syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript + syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript + syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript else - syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript - syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript + syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript + syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript endif + syn cluster vimFuncBodyList add=vimMzSchemeRegion else syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ endif +unlet s:mzschemepath " Synchronize (speed) {{{2 "============ @@ -643,6 +678,7 @@ endif syn sync linecont "^\s\+\\" syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]" +" ==================== " Highlighting Settings {{{2 " ==================== @@ -709,15 +745,15 @@ hi def link vimMenuMod vimMapMod hi def link vimMenuNameMore vimMenuName hi def link vimMtchComment vimComment hi def link vimNorm vimCommand +hi def link vimNotFunc vimCommand hi def link vimNotPatSep vimString +hi def link vimPatSepErr vimPatSep hi def link vimPatSepR vimPatSep +hi def link vimPatSepZone vimString hi def link vimPatSepZ vimPatSep -hi def link vimPatSepErr vimPatSep -hi def link vimPatSepZone vimString hi def link vimPlainMark vimMark hi def link vimPlainRegister vimRegister hi def link vimSearch vimString -hi def link vimSearchDelim Statement hi def link vimSetMod vimOption hi def link vimSetString vimString hi def link vimSpecFileMod vimSpecFile @@ -738,11 +774,11 @@ hi def link vimSynRegOpt vimSynOption hi def link vimSynRegPat vimString hi def link vimSyntax vimCommand hi def link vimSynType vimSpecial +hi def link vimUnmap vimMap hi def link vimUserAttrbCmplt vimSpecial hi def link vimUserAttrbKey vimOption hi def link vimUserAttrb vimSpecial hi def link vimUserCommand vimCommand -hi def link vimUserFunc Normal hi def link vimAutoEvent Type hi def link vimBracket Delimiter @@ -759,24 +795,25 @@ hi def link vimFold Folded hi def link vimFuncName Function hi def link vimFuncSID Special hi def link vimFuncVar Identifier +hi def link vimGroupSpecial Special hi def link vimGroup Type -hi def link vimGroupSpecial Special -hi def link vimHLMod PreProc hi def link vimHiAttrib PreProc hi def link vimHiTerm Type +hi def link vimHLMod PreProc hi def link vimKeyword Statement hi def link vimMark Number hi def link vimMenuName PreProc hi def link vimNotation Special -hi def link vimNotFunc vimCommand hi def link vimNumber Number +hi def link vimOperError Error hi def link vimOper Operator hi def link vimOption PreProc -hi def link vimOperError Error +hi def link vimParenSep Delimiter hi def link vimPatSep SpecialChar hi def link vimPattern Type hi def link vimRegister SpecialChar hi def link vimScriptDelim Comment +hi def link vimSearchDelim Statement hi def link vimSep Delimiter hi def link vimSetSep Statement hi def link vimSpecFile Identifier @@ -786,18 +823,19 @@ hi def link vimString String hi def link vimSubstDelim Delimiter hi def link vimSubstFlags Special hi def link vimSubstSubstr SpecialChar +hi def link vimSynCaseError Error hi def link vimSynCase Type -hi def link vimSynCaseError Error -hi def link vimSynError Error -hi def link vimSynOption Special -hi def link vimSynReg Type hi def link vimSyncC Type hi def link vimSyncError Error hi def link vimSyncKey Type hi def link vimSyncNone Type +hi def link vimSynError Error +hi def link vimSynOption Special +hi def link vimSynReg Type hi def link vimTodo Todo +hi def link vimUserAttrbCmpltFunc Special hi def link vimUserCmdError Error -hi def link vimUserAttrbCmpltFunc Special +hi def link vimUserFunc Normal hi def link vimWarn WarningMsg " Current Syntax Variable: {{{2
--- a/runtime/syntax/xdefaults.vim +++ b/runtime/syntax/xdefaults.vim @@ -4,7 +4,7 @@ " Author and previous maintainer: " Gautam H. Mudunuri <gmudunur@informatica.com> " Last Change: Di, 09 Mai 2006 23:10:23 CEST -" $Id$ +" $Id: xdefaults.vim,v 1.2 2007/05/05 17:19:40 vimboss Exp $ " " REFERENCES: " xrdb manual page
--- a/runtime/syntax/xml.vim +++ b/runtime/syntax/xml.vim @@ -3,9 +3,9 @@ " Maintainer: Johannes Zellner <johannes@zellner.org> " Author and previous maintainer: " Paul Siegmann <pauls@euronet.nl> -" Last Change: Mi, 13 Apr 2005 22:40:09 CEST +" Last Change: 2009-07-13 21:26:55 " Filenames: *.xml -" $Id$ +" $Id: xml.vim,v 1.3 2006/04/11 21:32:00 vimboss Exp $ " CONFIGURATION: " syntax folding can be turned on by @@ -216,7 +216,7 @@ if exists('g:xml_syntax_folding') syn region xmlComment \ start=+<!+ \ end=+>+ - \ contains=xmlCommentPart,xmlCommentError + \ contains=xmlCommentStart,xmlCommentError \ extend \ fold @@ -228,11 +228,12 @@ else syn region xmlComment \ start=+<!+ \ end=+>+ - \ contains=xmlCommentPart,xmlCommentError + \ contains=xmlCommentStart,xmlCommentError \ extend endif +syn match xmlCommentStart contained "<!" nextgroup=xmlCommentPart syn keyword xmlTodo contained TODO FIXME XXX syn match xmlCommentError contained "[^><!]" syn region xmlCommentPart @@ -320,6 +321,7 @@ hi def link xmlAttrib Type hi def link xmlString String hi def link xmlComment Comment +hi def link xmlCommentStart xmlComment hi def link xmlCommentPart Comment hi def link xmlCommentError Error hi def link xmlError Error
--- a/runtime/syntax/xquery.vim +++ b/runtime/syntax/xquery.vim @@ -4,7 +4,7 @@ " Last Change: mar jui 12 18:04:05 CEST 2005 " Filenames: *.xq " URL: http://jmvanel.free.fr/vim/xquery.vim -" $Id$ +" $Id: xquery.vim,v 1.1 2005/07/18 21:44:56 vimboss Exp $ " REFERENCES: " [1] http://www.w3.org/TR/xquery/
--- a/runtime/syntax/xsd.vim +++ b/runtime/syntax/xsd.vim @@ -3,7 +3,7 @@ " Maintainer: Johannes Zellner <johannes@zellner.org> " Last Change: Tue, 27 Apr 2004 14:54:59 CEST " Filenames: *.xsd -" $Id$ +" $Id: xsd.vim,v 1.1 2004/06/13 18:20:48 vimboss Exp $ " REFERENCES: " [1] http://www.w3.org/TR/xmlschema-0
--- a/runtime/syntax/xslt.vim +++ b/runtime/syntax/xslt.vim @@ -3,7 +3,7 @@ " Maintainer: Johannes Zellner <johannes@zellner.org> " Last Change: Sun, 28 Oct 2001 21:22:24 +0100 " Filenames: *.xsl -" $Id$ +" $Id: xslt.vim,v 1.1 2004/06/13 15:52:10 vimboss Exp $ " REFERENCES: " [1] http://www.w3.org/TR/xslt
--- a/runtime/syntax/yacc.vim +++ b/runtime/syntax/yacc.vim @@ -1,95 +1,85 @@ " Vim syntax file " Language: Yacc " Maintainer: Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz> -" Last Change: Jan 09, 2008 -" Version: 5 +" Last Change: Oct 21, 2008 +" Version: 7 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax " " Options: {{{1 " g:yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C -" g:yacc_minlines : see :help :he syn-sync-minlines -- default 50 -" g:yacc_maxlines : see :help :he syn-sync-maxlines -- default 200 " --------------------------------------------------------------------- -" For version 5.x: Clear all syntax items {{{1 -" For version 6.x: Quit when a syntax file was already loaded +" this version of syntax/yacc.vim requires 6.0 or later if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish + finish +endif +if exists("b:current_syntax") + syntax clear +endif + +" --------------------------------------------------------------------- +" Folding Support {{{1 +if has("folding") + com! -nargs=+ HiFold <args> fold +else + com! -nargs=+ HiFold <args> endif " --------------------------------------------------------------------- " Read the C syntax to start with {{{1 -if version >= 600 - if exists("g:yacc_uses_cpp") - runtime! syntax/cpp.vim - else - runtime! syntax/c.vim - endif -elseif exists("g:yacc_uses_cpp") - so <sfile>:p:h/cpp.vim +if exists("g:yacc_uses_cpp") + syn include @yaccCode <sfile>:p:h/cpp.vim else - so <sfile>:p:h/c.vim + syn include @yaccCode <sfile>:p:h/c.vim endif " --------------------------------------------------------------------- -" Clusters {{{1 -syn cluster yaccActionGroup contains=yaccDelim,cInParen,cTodo,cIncluded,yaccDelim,yaccCurlyError,yaccUnionCurly,yaccUnion,cUserLabel,cOctalZero,cCppOut2,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCommentStartError,cParenError -syn cluster yaccUnionGroup contains=yaccKey,cComment,yaccCurly,cType,cStructure,cStorageClass,yaccUnionCurly +" Yacc Clusters: {{{1 +syn cluster yaccInitCluster contains=yaccKey,yaccKeyActn,yaccBrkt,yaccType,yaccString,yaccUnionStart,yaccHeader2,yaccComment +syn cluster yaccRulesCluster contains=yaccNonterminal,yaccString + +" --------------------------------------------------------------------- +" Yacc Sections: {{{1 +HiFold syn region yaccInit start='.'ms=s-1,rs=s-1 matchgroup=yaccSectionSep end='^%%$'me=e-2,re=e-2 contains=@yaccInitCluster nextgroup=yaccRules skipwhite skipempty contained +HiFold syn region yaccInit2 start='\%^.'ms=s-1,rs=s-1 matchgroup=yaccSectionSep end='^%%$'me=e-2,re=e-2 contains=@yaccInitCluster nextgroup=yaccRules skipwhite skipempty +HiFold syn region yaccHeader2 matchgroup=yaccSep start="^\s*\zs%{" end="^\s*%}" contains=@yaccCode nextgroup=yaccInit skipwhite skipempty contained +HiFold syn region yaccHeader matchgroup=yaccSep start="^\s*\zs%{" end="^\s*%}" contains=@yaccCode nextgroup=yaccInit skipwhite skipempty +HiFold syn region yaccRules matchgroup=yaccSectionSep start='^%%$' end='^%%$'me=e-2,re=e-2 contains=@yaccRulesCluster nextgroup=yaccEndCode skipwhite skipempty contained +HiFold syn region yaccEndCode matchgroup=yaccSectionSep start='^%%$' end='\%$' contains=@yaccCode contained " --------------------------------------------------------------------- -" Yacc stuff {{{1 -syn match yaccDelim "^\s*[:|;]" -syn match yaccOper "@\d\+" +" Yacc Commands: {{{1 +syn match yaccDelim "[:|]" contained +syn match yaccOper "@\d\+" contained -syn match yaccKey "^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>" -syn match yaccKey "\s%\(prec\|expect\)\>" -syn match yaccKey "\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+" -syn keyword yaccKeyActn yyerrok yyclearin +syn match yaccKey "^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>" contained +syn match yaccKey "\s%\(prec\|expect\)\>" contained +syn match yaccKey "\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+" contained +syn keyword yaccKeyActn yyerrok yyclearin contained -syn match yaccUnionStart "^%union" skipwhite skipnl nextgroup=yaccUnion -syn region yaccUnion contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccUnionGroup -syn region yaccUnionCurly contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccUnionGroup -syn match yaccBrkt contained "[<>]" -syn match yaccType "<[a-zA-Z_][a-zA-Z0-9_]*>" contains=yaccBrkt -syn match yaccDefinition "^[A-Za-z][A-Za-z0-9_]*\_s*:" +syn match yaccUnionStart "^%union" skipwhite skipnl nextgroup=yaccUnion contained +HiFold syn region yaccUnion matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccCode contained +syn match yaccBrkt "[<>]" contained +syn match yaccType "<[a-zA-Z_][a-zA-Z0-9_]*>" contains=yaccBrkt contained -" --------------------------------------------------------------------- -" special Yacc separators {{{1 -syn match yaccSectionSep "^[ \t]*%%" -syn match yaccSep "^[ \t]*%{" -syn match yaccSep "^[ \t]*%}" +HiFold syn region yaccNonterminal start="^\s*\a\w*\ze\_s*\(/\*\_.\{-}\*/\)\=\_s*:" matchgroup=yaccDelim end=";" matchgroup=yaccSectionSep end='^%%$'me=e-2,re=e-2 contains=yaccAction,yaccDelim,yaccString,yaccComment contained +syn region yaccComment start="/\*" end="\*/" +syn match yaccString "'[^']*'" contained + " --------------------------------------------------------------------- " I'd really like to highlight just the outer {}. Any suggestions??? {{{1 -syn match yaccCurlyError "[{}]" -syn region yaccAction matchgroup=yaccCurly start="{" end="}" contains=ALLBUT,@yaccActionGroup +syn match yaccCurlyError "[{}]" +HiFold syn region yaccAction matchgroup=yaccCurly start="{" end="}" contains=@yaccCode contained " --------------------------------------------------------------------- " Yacc synchronization: {{{1 -if exists("g:yacc_maxlines") - exe "syn sync maxlines=".g:yacc_maxlines -else - syn sync maxlines=200 -endif -if exists("g:yacc_minlines") - exe "syn sync minlines=".g:yacc_minlines -else - syn sync minlines=50 -endif +syn sync fromstart " --------------------------------------------------------------------- " Define the default highlighting. {{{1 -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_yacc_syn_inits") - if version < 508 - let did_yacchdl_syn_inits = 1 - command -nargs=+ HiLink hi link <args> - else - command -nargs=+ HiLink hi def link <args> - endif +if !exists("did_yacc_syn_inits") + command -nargs=+ HiLink hi def link <args> " Internal yacc highlighting links {{{2 HiLink yaccBrkt yaccStmt @@ -98,13 +88,15 @@ if version >= 508 || !exists("did_yacc_s HiLink yaccUnionStart yaccKey " External yacc highlighting links {{{2 + HiLink yaccComment Comment HiLink yaccCurly Delimiter HiLink yaccCurlyError Error - HiLink yaccDefinition Function - HiLink yaccDelim Function + HiLink yaccNonterminal Function + HiLink yaccDelim Delimiter HiLink yaccKeyActn Special HiLink yaccSectionSep Todo HiLink yaccSep Delimiter + HiLink yaccString String HiLink yaccStmt Statement HiLink yaccType Type @@ -113,6 +105,10 @@ if version >= 508 || !exists("did_yacc_s delcommand HiLink endif + +" --------------------------------------------------------------------- +" Cleanup: {{{1 +delcommand HiFold let b:current_syntax = "yacc" " ---------------------------------------------------------------------
--- a/runtime/tutor/Makefile +++ b/runtime/tutor/Makefile @@ -6,9 +6,11 @@ # Similarly for Russian and Korean all: tutor.utf-8 \ + tutor.bj \ tutor.ca.utf-8 \ tutor.de.utf-8 \ tutor.el tutor.el.cp737 \ + tutor.eo \ tutor.es.utf-8 \ tutor.fr.utf-8 \ tutor.hr tutor.hr.cp1250 \ @@ -17,6 +19,8 @@ all: tutor.utf-8 \ tutor.ja.sjis tutor.ja.euc \ tutor.ko.euc \ tutor.no.utf-8 \ + tutor.nb \ + tutor.nb.utf-8 \ tutor.ru tutor.ru.cp1251 \ tutor.sv.utf-8 \ tutor.zh.utf-8 @@ -24,9 +28,15 @@ all: tutor.utf-8 \ tutor.utf-8: tutor iconv -f ISO-8859-1 -t UTF-8 tutor > tutor.utf-8 +tutor.bj: tutor.bj.utf-8 + iconv -f UTF-8 -t ISO-8859-1 tutor.bj.utf-8 > tutor.bj + tutor.ca.utf-8: tutor.ca iconv -f ISO-8859-1 -t UTF-8 tutor.ca > tutor.ca.utf-8 +tutor.eo: tutor.eo.utf-8 + iconv -f UTF-8 -t ISO-8859-3 tutor.eo.utf-8 > tutor.eo + tutor.de.utf-8: tutor.de iconv -f ISO-8859-1 -t UTF-8 tutor.de > tutor.de.utf-8 @@ -66,6 +76,13 @@ tutor.ko.euc: tutor.ko.utf-8 tutor.no.utf-8: tutor.no iconv -f ISO-8859-1 -t UTF-8 tutor.no > tutor.no.utf-8 +# nb is an alias for no +tutor.nb: tutor.no + cp tutor.no tutor.nb + +tutor.nb.utf-8: tutor.no.utf-8 + cp tutor.no.utf-8 tutor.nb.utf-8 + tutor.ru: tutor.ru.utf-8 iconv -f UTF-8 -t KOI8-R tutor.ru.utf-8 > tutor.ru
new file mode 100644 --- /dev/null +++ b/runtime/tutor/tutor.bj @@ -0,0 +1,987 @@ +=============================================================================== += G o t i k a m i n n W I M M - S c h a i n e r - Fassung 1.7D = +=============================================================================== + + Dyr Wimm ist ayn gro mchtigs Blat, ds was mit aynn Wsn Befelh aufwartt; z + vil, d myn s allsand in aynn Schainer wie dnn daader unterbrng. Der + Schainer ist yso aufbaut, d yr halt netty die Befelh allsand bringt, wost + brauchst, dst mit iem fr s Eerste wirklich bbs anfangen kanst. + Durchhinarechtn kanst di, wennst willst, in ayner halbetn Stund; ds haisst, + wennst di nit groo mit n Prbln und Tftln aufhaltst. + + OBACHT: + Die Faudungen, wost daader finddst, gaand istig s Gwort ndern. Dsswgn + machst eyn n Bstn glei ayn Aamum von derer Dautticht daader. Haast alsnan + ds Gwort daader mit n Befelh "vimtutor bj" ausherlaassn, ist s ee schoon + ayn Aamum. + Mir kan s nit oft gnueg sagn, d der Schainer daader istig gan n ebn + ghoert. Also muesst schoon aau die Befelh ausfern, wennst ys gscheid ler- + nen willst. Mit n Lsn yllain ist s +nit taan! + + Ietz schaust grad non, d dein Fststlltastn nit druckt ist; und aft geest + glei aynmaal mit dyr j-Tastn abwrts (yso laaufft ds nmlich), hinst dst + de gantze Letzn 1.1 auf n Bildschirm haast. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.1: MIT N MRKL UMAYNANDFARN + +** Dyrmitst mit n Mrkl umaynandkimmst, druck h, j, k und l wie unt zaigt. ** + ^ Ayn slsbrugg: + k De Tastn h ist winster und +geet aau gan winster. + < h l > S l leit zesm und richtt si gan zesm. + j S j kan myn wie aynn Pfeil gan unt seghn. + v Mit n k kimmst gan n KOPF. + 1. Ietz ruedertst ainfach mit n Mrkl auf n Bildschirm umaynand, hinst dst + di sicher felst. + 2. Halt d Abhin-Tastn (j) druckt; aft rumplt s ainfach weiter. Netty yso + kimmst gan dyr naehstn Letzn. + + 3. Wie gsait, ietz bewgst di also mit derer Tastn gan dyr Letzn 1.2. + +Non bbs: Allweil, wenn dyr niemer ganz wol ist, wasst bbenn druckt haast, aft + zipfst <ESC>; naacherd bist wider ganz gwon in dyr Befelhs-Artweis. + + + Nbnbei gsait kimmst gwonerweil aau mit de Pfeiltastnen weiter. Aber + hjkl seind z haissn s Wimm-Urgstain; und de "Hrtn" seind ganz dyr- + fr, d myn bei +dene bleibt. Prblt s ainfach aus! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.2: NN WIMM AUSSCHALTTN + + + ALSO, EE WENNST BBS VON DAA UNT AUSFERST, LIS LIEBER ZEERST DE GANTZE LET- + ZN! + + 1. Druck d <ESC>-Tastn, dyrmitst aau gwi in dyr Befelhs-Artweis bist. + + 2. Demmlt :q! <EIN>. + Daa dyrmit benddst ys Blat und verwirffst allss, wasst bbenn gndert + haast. + + 3. Balst nn Eingib seghst, gib d Faudung ein, wo di zo dnn Schainer brun- + gen haat, also vimtutor bj <EIN>. + + 4. Also, wenn ietz allsse sitzt, naacherd ferst d Schritt 1 hinst 3 aus, mit + wasst ys Blat verlaasst und aft wider einhinkimmst. + +Anmrkung: Mit :q! <EIN> verwirffst allss, wasst gndert older enther gschribn + haast. In aynn ttlych Letznen lernst acht, wiest ds allss in ayner + Dautticht speichertst. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.3: GWORT BARECHTN - LSCHN + + + ** Druck x , dyrmitst ds Zaichen unter n Mrkl lschst. ** + + 1. Bewg di mit n Mrkl auf de mit ---> angmrkte Zeil unt. + + 2. Zo n Faeler Verbssern farst mit n Mrkl netty auf ds Zaichen, ds wo + glscht ghoert. + + 3. Druck de Tastn x , dst ds berflssige Zaichen lschst. + + 4. Ietz tuest so lang weiter mit 2 hinst 4, hinst d dyr Saz stimmt. + +---> De Kkuue sprangg bber nn Maanad. + + 5. Wenn ietz de Zeil verbssert ist, geest gan dyr Letzn 1.4. weiter. + +Und ganz wichtig: Dyrweilst dnn Schainer durcharechtst, versuech nit bbenn, + allss auswendig z lernen; nn, lern ainfach mit n Anwenddn! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.4: GWORT BARECHTN - EINFEGN + + + ** Druck i , dyrmitst bbs einfegst. ** + + 1. Bewg nn Mrkl zo dyr eerstn untignen Zeil, wo mit ---> angeet. + + 2. Dyrmitst de eerste Zeil wie de zwaitte machst, bewg nn Mrkl auf ds + eerste Zaichen NAACH derer Stll, daa wo s Gwort eingfegt werdn sollt. + + 3. Druck i und gib ds ein, was abgeet. + + 4. Wenn ieweils ayn Faeler verweitert ist, aft druck <ESC>; und dyrmit kimmst + gan dyr Befelhsartweis zrugg. + So, und ietz tuest ainfach yso weiter, hinst d dyr Saz stimmt. + +---> Daader gt dd bbs b. +---> Daader geet diend bbs ab. + + 5. Balst mainst, dst ys Gwort-Einfegn kanst, aft geest gan dyr Letzn 1.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.5: GWORT BARECHTN - ANFEGN + + + ** Druck A gan n Gwort Anfegn. ** + + 1. Gee mit n Mrkl gan dyr eerstn untignen Zeil, wo ayn ---> dyrvor haat. + Daa ist s gleich, wo gnaun dyr Mrkl in derer Zeil steet. + + 2. Demmlt A und gib de entsprchetn Ergntzungen ein. + + 3. Wennst mit n Anfegn frtig bist, aft druckst <ESC>, dst wider eyn de + Befelhsartweis zruggkimmst. + + 4. So, und ietz geest aft non gan dyr zwaittn mit ---> angmrktn Zeil; und + daadl machst ys netty yso. + +---> In derer Zeil gee + In derer Zeil geet ayn Weeng ayn Gwort ab. +---> Aau daader stee + Aau daader steet bbs Unvollstndigs. + + 5. Wennst s Anfegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.6: AYN DAUTTICHT BARECHTN + + + ** Mit :wq speichertst ayn Dautticht und verlaasst nn Wimm ganz. ** + + !! OBACHT: Ee wennst mit dnn alln daa unt weitertuest, lis zeerst de gantze + Letzn durch!! + + 1. Verlaa also s Blat, wie s in dyr Letzn 1.2. haisst, mit :q! ! + + 2. Gib d Faudung eyn n Eingib ein: vim Schainer <EIN> . 'vim' ruefft s Blat + auf, und 'Schainer' haisst de Dautticht, wost barechtn willst. Dyrmit + haast also ayn Dautticht, d wost barechtn kanst. + + 3. Ietz fegst bbs ein older lschst bbs, wiest ys in de vorignen Letznen + glernt haast. + + 4. Speichert de gnderte Dautticht und verlaa nn Wimm mit :wq <EIN> . + + 5. Schmei nn Wimmschainer neu an und gee gan dyr folgetn Zammenfassung. + + 6. Aft dst de obignen Schritt glsn und kppt haast, kanst ys durchfern. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 1 + + + 1. Dyr Mrkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert. + h (winst) j (ab) k (auf) l (zes) + + 2. Um nn Wimm umbb n Eingib aus z ginnen, demmlt: vim DAUTTICHT <EIN> . + + 3. Willst nn Wimm verlaassn und aau allss verwerffen, aft gibst ein: + <ESC> :q! <EIN> . + Gan n Verlaassn und Speichern aber zipfst <ESC> :wq <EIN>. + + 4. Willst ds Zaichen lschn, daa wo dyr Mrkl drauf ist, demmltst x . + + 5. Willst bbs vor n Mrkl eingbn, zipfst i und drafter <ESC> . + Mechst ys aber eyn s Zeilnend anhinhngen, benutzt ys A . + Und ainfach naach n Mrkl fegst ys mit a ein . + +Anmrkung: Druckst <ESC>, kimmst eyn de Befelhsartweis zrugg older brichst ayn + Faudung ab, d wo dyr schiefgangen ist. + + Ietz tue mit dyr Letzn 2 weiter. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.1.: LSHFAUDUNGEN + + + ** Demmlt dw , dyrmitst ayn Wort lschst ** + + 1. Druck <ESC>, dyrmit s aau gwi ist, dst in dyr Befelhsartweis bist. + + 2. Bewg nn Mrkl zo dyr mit ---> angmrktn Zeil unt. + + 3. Und daa geest ietz auf n Anfang von aynn Wort, ds wo glscht ghoert. + + 4. Zipf dw , dst ds gantze Wort lschst. + + Nbnbei: Dyr Buechstabn d erscheint auf dyr lsstn Zeil von n Bildschirm, + sobaldst n eingibst. Dyr Wimm wartt ietz drauf, d bbs kimmt, al- + so daader ayn w . Seghst freilich bbs Anderts wie ayn d , + naacherd haast bbs Falschs demmlt. Druck aft <ESC> und prblt + s non aynmaal. +---> Ayn ttlych Wrter lustig ghoernd nit Fisper eyn dnn Saz einhin. + + 5. fert d Schritt 3 und 4, hinst d dyr Saz psst, und gee aft gan dyr + Letzn 2.2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.2.: NON MEERER LSHFAUDUNGEN + + + ** Gib d$ ein, dst hinst eyn s Zeilnend lschst. ** + + 1. Druck <ESC> , dyrmitst aau gwi in dyr Befelhsartweis bist. + + 2. Bewg nn Mrkl hinst eyn de mit ---> angmrkte Zeil untn. + + 3. Gee mit n Mrkl auf s End von dyr faelerfreien Zeil, NAACH n eerstn . . + + 4. Zipf d$ , dst hinst eyn s End von dyr Zeil lschst. + +---> bber haat s End von dyr Zeil doplt eingbn. doplt eingbn. + + + 5. Gee weiter gan dyr Letzn 2.3, dyrmitst versteest, was daader ablaaufft. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.3: PFEMERER UND WOLENDER + + + Vil Faudungen, wo s Gwort ndernd, stznd si aus aynn Pfemerer und aynn Wo- + lend zamm. Bal i also bbs lschn will, schreib i ainsting d und aft s "Wo- + lend", ds haisst also, "wolend", "wohin" d i will - older was i halt gnaun + lschn will. + + + + + + + Daader also, was i wie lschn kan: + w - hinst eyn n Anfang von n naehstn Wort AANE dnn sein eersts Zaichen. + e - gan n End von n ietzundn Wort MIT dnn seinn lsstn Zaichen. + $ - zo n End von dyr Zeil MIT derer irn lsstn Zaichen. + + Also lscht de Tastnfolg de umbb n Mrkl hinst eyn s Wortend. +Anmrkung: Gib i grad ds zwaitte Zaichen yllain ein, ruckt halt dyr Mrkl + entsprchet weiter. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.4: MIT AYNN ZLER D WOLENDER FERN + + + ** Gib i ayn Zal vor aynn Wolend ein, werd ds Sel halt widerholt. ** + + 1. Bewg nn Mrkl gan n Anfang von dyr Zeil mit ---> dyrvor unt. + + 2. Zipf 2w , dst mit n Mrkl zwai Wrter weitergeest. + + 3. Zipf 3e , dst mit n Mrkl auf s End von n drittn Wort kimmst. + + 4. Zipf 0 (aynn Nuller), dst eyn n Anfang von dyr Zeil hinkimmst. + + 5. Widerhol d Schritt 2 und 3 mit verschaidne Zler. + + ---> Ds ist ietz grad ayn Zeil zo n drinn Umaynanderruedern. + + 6. Gee weiter gan dyr Letzn 2.5. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.5: DURCH AYNN ZLER GLEI MEERER LSCHN + + + ** Ayn Zal vor aynn Pfemerer fert dnn um seln Werd. ** + + Also, i mecht lschn, und zwaar bbs Bestimmts, und ds so und so oft: Daa + dyrzue benutz i aynn Zler: + d Zler Wolend (also nn Bewgungsschrit) + + 1. Bewg nn Mrkl gan n eerstn Wort in GROOSSBUECHSTABN in dyr mit ---> an- + gmrktn Zeil. + + 2. Demmlt d2w , dyrmitst de ganz groogschribnen Wrter lschst. + + 3. fert d Schritt 1 und 2 mit dnn entsprchetn Zler, dyrmitst de drauf- + folgetn ganz grogschribnen Wrter mit ayner ainzignen Faudung lschst: + + +---> D ABC DE Zeil FGHI JK LMN OP mit Wrter ist Q RS TUV ietz berichtigt. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.6: ARECHTN AUF ZEILN + + + ** Zipf dd , um ayn gantze Zeil z lschn. ** + + Weil s gro oft vrkimmt, d myn gantze Zeiln lscht, kaamend schoon d Ent- + wickler von n Urwimm daa drauf, d myn ainfach dd gan dnn Zwk schreibt. + + + 1. Bewg nn Mrkl gan dyr zwaittn Zeil in n untignen "Gedicht". + 2. Zipf dd , um d Zeil z lschn. + 3. Ietz bewgst di gan dyr viertn Zeil. + 4. Zipf 2dd , um zwo Zeiln zo n Lschn. + +---> 1) Roosn seind root; +---> 2) Drunter ist s Koot. +---> 3) Veigerln seind blau. +---> 4) Umgrabn tuet s d Sau. +---> 5) D Ur sait de Zeit, +---> 6) Sait, d s mi freut, +---> 7) Dirndl, dein Gschau. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.7: RUGGGNGIG MACHEN (RUGGLN) + + + ** Zipf u , dyrmitst de lsstn Faudungen ruggltst ** + ** older U , um ayn gantze Zeil widerherzstlln. ** + + 1. Bewg nn Mrkl gan dyr mit ---> angmrktn Zeil unt und gee dyrmit auf n + eerstn Faeler. + 2. Zipf x , dst ds eerste z vile Zaichen lschst. + 3. Ietz demmlt u , dyrmitst de lsste Faudung ruggltst. + 4. Ietz behb allsand Faeler auf dyr Zeil mit dyr Hilf von n Befelh x . + 5. Aft gibst ayn U (groo) ein, dst de Zeil wider yso hinbringst, wie s + gwsn ist. + 6. So, und ietz demmltst so oft u , hinst dst s U und de andern Fau- + dungen rugggngig gmacht haast. + 7. Und ietzet widerum schreibst so oft <STRG>r , hinst dst allsand Be- + felh widerhergstllt, z haissn allsse rugg-grugglt haast (also d Rugggn- + gigmachungen rugggngig gmacht). +---> Beerichtig d Faeller voon dehrer Zeiil und sttll s mitt n Ruggruggln wi- + der her. + 8. Die Faudungen seind gro wichtig; s helffend ainn nrrisch weiter. + Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 2 + + + 1. Um von n Mrkl aus hinst eyn s naehste Wort zo n Lschn, zipf: dw + 2. Um umbb n Mrkl hinst eyn s End von dyr Zeil zo n Lschn, demmlt d$ + 3. Dyrmitst ayn gantze Zeil lschst, gib ein: dd + 4. Mechst ayn Bewgung, ayn "Wolend", fters, stll de entsprchete Zal dyr- + vor: 3dw older aau: d3w + 5. Dyr Pfueg fr ayn nderungsfaudung lautt yso: + Pfemerer [Zal] Bewgungsschrit (Wolend) + Und ds haisst: + Dyr PFEMERER gibt an, WAS taan ghoert, bbenn d = lschn (delete). + [ZAL] - Ayn Zal KAN myn angbn, wenn myn halt ayn Wolend fter habn will. + S WOLEND, also dyr Schrit WOHIN, besagt, auf was i aushin will, bbenn + auf ayn Wort ( w ), s End von dyr Zeil ( $ ) und so weiter. + + 6. Dst eyn n Anfang von dyr Zeil hinkimmst, schreib aynn Nuller: 0 + + 7. Um bbs Vorigs wider z ruggln, gib ein: u (klain also) + Um allsand nderungen in ayner Zeil z ruggln, haast: U (also groo) + Um "rugg-z-ruggln", also allss wider herzstlln, zipf: <STRG>r + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.1: ANFEGN (put) + + + ** Zipf p , dyrmitst bbs gnetty Glschts naach n Mrkl anfegst. ** + + 1. Bewg nn Mrkl gan dyr eerstn untignen Zeil mit ---> dyrvor. + + 2. Zipf dd , um sele Zeil z lschn und dyrmit in aynn Wimm-"Roster" zo n + speichern. + + 3. Bewg nn Mrkl gan dyr Zeil c), BER derer, daa wo de glschte Zeil ein- + hinkemmen sollt. + + 4. So, und ietz gibst ainfach p ein, und schoon haast d Zeil unter derer + mit n Mrkl drinn. + 5. fert d Schritt 2 hinst 4, hinst dst allsand Zeiln yso naachynaynand + haast, wie s hinghoernd. + +---> d) Kanst du ds aau? +---> b) Veigerln seind blau. +---> c) Bedachtn kan myn lernen. +---> a) Roosn seind root. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.2: ERSTZN (replace) + + + ** Zipf rx , um ds Zaichen unter n Mrkl durch x z erstzn. ** + + 1. Bewg nn Mrkl zo dyr eerstn untignen Zeil mit ---> dyrvor. + + 2. Bewg nn Mrkl, hinst d yr auf n eerstn Faeler steet. + + 3. Zipf r und drafter ds Zaichen, wo dyrfr daa hinghoert. + + 4. Widerhol d Schritt 2 und 3, hinst dst de eerste Zeil gmae dyr zwaittn + berichtigt haast: +---> Wie d Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft! +---> Wie d Zeil eingbn wurd, wurdnd ainige falsche Tastnen zipft! + + 5. Ietz tue mit dyr Letzn 3.3 weiter. + +Anmrkung: Vergi nit drauf, dst mit n Anwenddn lernen solltst und nit bbenn + mit n Auswendiglernen! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.3: NDERN (change) + + + ** Um hinst eyn s Wortend z ndern, zipf ce . ** + + 1. Gee mit n Mrkl auf de eerste mit ---> angmrkte Zeil. + + 2. Ietz farst netty auf s "s" von Wstwr hin. + + 3. Zipf ce ein und aft d Wortberichtigung, daader also rter . + + 4. Druck <ESC> und bewg nn Mrkl gan n naehstn Zaichen, wo gndert ghoert. + + 5. fert d Schritt 3 und 4, hinst d dyr eerste Saz wie dyr zwaitte ist. + +---> Ainige Wstwr von derer Zlww ghhnnd mit n ndern-Pfemerer gaauu. +---> Ainige Wrter von derer Zeil ghoernd mit n ndern-Pfemerer gndert. + +ce lscht also s Wort und schlaaufft di eyn d Eingaab-Artweis. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.4.: NON MEERER NDERUNGEN PFELFS c + + + ** D Lshfaudung c arechtt mit de nmlichnen Wolender wie d mit d ** + + 1. Dyr nder-Pfemerer arechtt anleich wie d Lshfaudung mit d , und zwaar + yso: + c [Zal] Bewgungsschritt (Wolend) + + 2. D Wolender seind de gleichn, bbenn w fr Wort und $ fr s Zeilnend. + + + 3. Bewg di zo dyr eerstn untignen Zeil mit ---> . + + 4. Ietz geest auf dnn eerstn Faeler. + + 5. Zipf c$ , gib nn Rest von dyr Zeil wie in dyr zwaittn ein und druck aft + <ESC>. +---> S End von derer Zeil sollt an de zwaitte daader anglichen werdn. +---> S End von derer Zeil sollt mit n Befelh c$ berichtigt werdn. + +Denk allweil dran, dst iederzeit mit dyr Ruggtastn Faeler ausbssern kanst. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 3 + + + 1. Um ayn vorher glschts Gwort anzfegn, zipf p . Daa dyrmit werd ds + gantze Gwort NAACH n Mrkl angfegt. Wenn s ayn gantze Zeil gwsn ist, + werd d sel als de Zeil unterhalb n Mrkl eingfegt. + + 2. Um ds Zaichen unter n Mrkl, also wo dyr Mrkl ist, z erstzn, zipf r + und aft ds Zaichen, wost daadl habn willst. + + 3. Dyr nderungspfemerer ( c = change) laasst ainn umbb n Mrkl hinst eyn s + End von n Wolend ndern. Zipf ce , dyrmitst umbb n Mrkl hinst eyn s End + von n Wort ndertst, und c$ hinst eyn s End von dyr Zeil. + + 4. Fr d nderung lautt dyr Pfueg: + + c [Zal] Wolend + +Ietz tue mit dyr naehstn Letzn weiter. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.1: MRKLSTLLUNG UND DAUTTICHTDARSTAND + +** Demmlt <STRG>g, dst nn Befand und Darstand von dyr Dautticht anzaigst. ** + ** Zipf G , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. ** + +Anmrkung: Lis d gantze Letzn daader durch, ee wennst iewign bbs unternimmst! + + 1. Druck <STRG>g . Auf ds hin erscheint auf derer Seitt ganz unt ayn Dar- + standsmeldung mit n Dauttichtnam und n Befand innerhalb dyr Dautticht. + Mrk dyr de Zeilnnummer fr n Schrit 3. + +Anmrkung: Mglicherweis seghst aau nn Mrklbefand in n zesmen untern Bild- + schirmgg. Aft ist s "Lindl" (ruler) eingstllt; schau dyrzue mit + n Befelh :help 'ruler' naach. + 2. Druck G , um an s End von dyr Dautticht z kemmen. + gg gibst ein, dst gan n Anfang von dyr Dautticht aufhinkimmst. + + 3. Gib d Nummer von derer Zeil ein, daa wost vorher warst, und aft non G . + Ds bringt di zrugg gan seler Zeil, daa wost stuenddst, wiest ds eerste + Maal <STRG>g gadruckst. + + 4. Wennst di sicher gnueg felst, aft fer d Schritt 1 hinst 3 aus. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.2: DYR BEFELH ZO N SUECHEN + + + ** Zipf / und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. ** + + 1. Du gibst also in dyr Befelhsartweis s Zaichen / ein. Ds sel wie aau dyr + Mrkl erscheinend drauf unt auf n Schirm, netty wie bei dyr Faudung : . + + 2. Ietz zipf 'Faeeler' <EIN>. Netty um ds 'Faeeler' willst ietz suechen. + + 3. Willst um gnaun dnn Ausdruk weitersuechen, zipf ainfach n (wie next). + Willst hinzrugg suechen, aft gibst N ein. + + 4. Um von Haus aus zruggaus z suechen, nimm ? statt / her. + + 5. Dyrmitst wider daa hinkimmst, wost herkemmen bist, druck <STRG>o, und ds + fter, wennst weiter zrugg willst. Mit <STRG>i widerum kimmst vorwrts. + +---> Aynn Faeler schreibt myn nit "Faeeler"; Faeeler ist ayn Faeler + +Anmrkung: Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi- + der weiter dyrmit, men Sach dyr Schaltter 'wrapscan' wr auf aus. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.3: DE GGNKLAMMERN FINDDN + + + ** Zipf % , um de entsprchete Klammer ) , ] older } z finddn. ** + + 1. Stz nn Mrkl auf iewign aine von dene drei Klammern ( , [ older { + in dyr untignen Zeil, wo mit ---> angmrkt ist. + + 2. Ietzet zipf s Zaichen % . + + 3. Dyr Mrkl geet ietz auf de pssete schliessete Klammer. + + 4. Ietz demmlt % , und dyrmit kimmst gan dyr ffneretn Klammer zrugg. + + 5. Stz nn Mrkl auf ayn anderne Klammer von ({[]}) und prblt % aus. + +---> Ds ( ist bloo ayn Pochzeil ( mit [ verschaidne ] { Klammern } drinn. )) + +Anmrkung: Um d Mglichkeit gaast bsunders froo sein, wennst aynmaal in aynn + Spaichgwort verzweiflt ayn faelete Ggnklammer suechst! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.4: D ERSTZUNGSFAUDUNG (substitute) + + + ** Zipf :s/alt/neu/g , um 'alt' durch 'neu' zo n Erstzn. ** + + 1. Gee mit n Mrkl zo dyr unt steehetn mit ---> angmrktn Zeil. + + 2. Zipf :s/dee/de <EIN> . Der Befelh erstzt alsnan grad ds +eerste "dee", + wo vrkimmt. + + 3. Ietz prblt s mit :s/dee/de/g . Ds zuestzliche g ("Pflok" nennt myn + bbs Slchers) bewirkt, d allss, was dyrmit kennzaichnet ist, innerhalb + von dyr ainn Zeil erstzt werd. + +---> Dee schoenste Zeit, d myn dee Blemln anschaut, ist dee schoene Lan- + gesszeit. + 4. Um ietz allsand Suechbegriff innerhalb von zwo Zeiln zo n ndern, zipf + :#,#s/alt/neu/g , wobei # ieweils fr de eerste und lsste Zeil von dnn + Pfraich steet. + :%s/alt/neu/g zipfst, dst d Vrkemmen in dyr gantzn Dautticht ndertst. + Mit :%s/alt/neu/gc finddst allsand Vrkemmen in dyr gsamtn Dautticht; + daa werst aber zeerst non gfraagt, obst ys erstzn willst older nity. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 4 + + 1. <STRG>g zaigt dnn ietzundn Dauttichtbefand und nn Darstand dyrvon an. + G bringt di an s End von dyr Dautticht. + <Zal> G bringt di gan dyr entsprchetn Zeilnnummer. + gg bringt di zo dyr eerstn Zeil. + + 2. D Eingaab von / mit aynn Ausdruk suecht VRSHLING um dnn Ausdruk. + Gibst ? und aynn Suechbegrif ein, suecht s um dnn RSHLING. + Zipf naach ayner Suech n ; naacherd werd in de gleiche Richtung weiter- + gsuecht. Mit N geet s umkeerter weiter. + <STRG>o bringt di zo lterne Befndd zrugg, <STRG>i zo neuerne. + + 3. D Eingaab von % , wenn dyr Mrkl auf ainer von dene Klammern steet: ({[ + )]} , bringt di zo dyr Ggnklammer. + + 4. Um ds eerste Vrkemmen von "alt" in ayner Zeil durch "neu" z erstzn, + zipf :s/alt/neu . + Um allsand in ayner Zeil z erstzn, zipf :s/alt/neu/g . + Mechst allss in zwo Zeiln erstzn, demmlt zo n Beispil :5,6s/alt/neu/g . + Mechst allss in dyr gantzn Dautticht erstzn, gib ein: :%s/alt/neu/g . + Willst ayn ieds Maal bstaetln, hng 'c' wie confirm hint anhin. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFERN + + + ** Willst ayn Gffaudung ausfern, gib ainfach d sel naach :! ein. ** + + 1. Zipf dnn bekanntn Befelh : , dyrmitst mit n Mrkl auf n Bildschirm + ganz abhin kimmst. Draufhin kanst aynn gwonen Gfbefelh eingbn. + + 2. Zeerst kimmt aber non ayn Ruefzaichen ! . Und ietz haast de Mglich- + keit, ayn beliebige ausserige Gffaudung auszfern. + + 3. Als Beispil zipf :!ls <EIN> ; und schoon haast ayn Auflistung von deinn + Verzaichniss, netty wie wennst ganz gwon in n Eingib wrst. Geet ls + aus iewign aynn Grund nit, aft prblt s mit :!dir <EIN> . + +Also non aynmaal: Mit dnn Angang kan ayn iede beliebige ausserige Faudung aus- + gfert werdn, aau mit Auerwerdd. + +Und wolgmrkt: Allsand Befelh, wo mit : angeend, messend mit <EIN> bst- + tigt werdn. Ds dyrsagn myr vrba niemer. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.2: NON MEERER DRBER, WIE MYN DAUTTICHTN SCHREIBT + + + ** Um bbs Gnderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM. ** + + 1. Zipf :!dir older :!ls , dst dyr ayn Auflistung von deinn Verzaich- + niss ausherlaasst. Dst dyrnaach <EIN> eingbn muesst, waisst ee schoon. + + 2. Suech dyr aynn Dauttichtnam aus, dnn wo s non nit geit, bbenn POCH. + + 3. Ietz demmlt: :w POCH (also mit POCH als dnn neuen Dauttichtnam). + + 4. Ds speichert ietz de gantze Dautticht, also nn Wimmschainer, unter dnn + Nam POCH. Ds kanst leicht berpreffen, indem dst ainfach :!ls older + :!dir zipfst und dyrmit deinn Verzaichnissinhalt seghst. + +Anmrkung: Stigst ietz aus n Wimm aus und gnnst n aft wider mit vim POCH , + naacherd wr d Dautticht ayn gnaune Aamum von n Schainer dyrselbn, + wiest n gspeichert haast. + + 5. Ietz verweitert d Dautticht - fallsst s Fenstl haast - , mit :!del POCH + beziehungsweis bei aynn Ainslgebu mit :!rm POCH . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN + +** Um aynn Tail von dyr Dautticht z speichern, zipf v [Wolend] :w DAUTTICHT ** + + 1. Ruck nn Mrkl auf netty d Zeil daader. + + 2. Demmlt v und gee mit n Mrkl auf dnn fmftn Auflistungspunt untet. Du + seghst glei, d s Gwort vrherghbt erscheint. + + 3. Druck s Zaichen : . Ganz unt auf n Bildschirm erscheint :'<,'> . + + 4. Zipf w POCH , wobei s dnn Dauttichtnam POCH non nit geit. Vergwi di, + dst ds :'<,'>w POCH aau +seghst, ee wennst <EIN> druckst. + + 5. Dyr Wimm schreibt de ausgwaltn Zeil eyn de Dautticht POCH einhin. Benutz + :!dir older :!ls , dst ds berpreffst. Lsh s fein nit bbenn! Mir + brauchend s nmlich fr de naehste Letzn. + +Anmrkung: Druckt myn v , ginnt d Sichtisch-Auswal. Du kanst mit n Mrkl um- + aynandfarn, um d Auswal z verndern. Drafter kan myn mit yn aynn + Pfemerer mit dnn Gwort bbs machen. Zo n Beispil lscht d ds + Gwort. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.4: EINLSN UND ZAMMENFERN VON DAUTTICHTN + + + ** Um nn Inhalt von ayner Dautticht einzlsn, zipf :r DAUTTICHTNAM ** + + 1. Stz nn Mrkl ber d Zeil daader. + +OBACHT: Aft dst nn Schrit 2 ausgfert haast, seghst auf aynmaal bbs aus + dyr Letzn 5.3. Bewg di naacherd wider abwrts, dyrmitst d Letzn wi- + derfinddst. + 2. Ietz lis dein Dautticht POCH ein, indem dst d Faudung :r POCH aus- + ferst, wobei wie gsait POCH fr dnn von dir ausgsuechtn Dauttichtnam + steet. De einglsne Dautticht werd unterhalb dyr Mrklzeil eingfegt. + + 3. Um zo n berpreffen, ob de Dautticht aau gwi einglsn ist, gee zrugg; + und du seghst, d s ietz zwo Ausfrtigungen von dyr Letzn 5.3. geit, s + Urniss und de eingfegte Dauttichtfassung. + +Anmrkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlsn. Zo n Bei- + spil list :r !ls d Ausgaab von dyr Faudung ls ein und fegt s + unterhalb n Mrkl ein. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 5 + + + 1. :!FAUDUNG fert aynn ausserignen Befelh aus. + + Daader ayn ttlych gwnddte Beispiler: + (Fenstl) (Ainsl - Leinsl) + :!dir :!ls - listt s Verzaichniss auf. + :!del DAUTTICHT :!rm DAUTTICHT - verweitert sele Dautticht. + + 2. :w DAUTTICHT speichert de ietzunde Wimmdautticht unter dnn besagtn Nam. + + 3. v WOLEND :w DAUTTICHTNAM schreibt de sichtisch ausgwaltn Zeiln eyn de + Dautticht mit seln Nam. + + 4. :r DAUTTICHTNAM ladt sele Dautticht und fegt s unterhalb n Mrklbefand + ein. + + 5. :r !dir list d Ausgaab von dyr Faudung dir und fegt s unterhalb n + Mrklbefand ein. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.1: ZEIL FFNEN (open) + + + ** Zipf o, um ayn Zeil unterhalb n Mrkl z ffnen und eyn d ** + ** Einfegartweis z kemmen. ** + + 1. Bewg nn Mrkl zo dyr eerstn mit ---> angmrktn Zeil unt. + + 2. Zipf o (klain), um ayn Zeil UNTERHALB n Mrkl z ffnen und mit dyr Ein- + fegartweis weiterztuen. + + 3. Ietz zipf ayn Weeng ayn Gwort und druck <ESC>, um d Einfegartweis z ver- + laassn. +---> Mit o werd dyr Mrkl auf de offene Zeil in dyr Einfegartweis gstzt. + + 4. Um ayn Zeil OBERHALB n Mrkl aufzmachen, gib ainfach aynn groosss O statt + yn aynn klainen ein. Versuech ds auf dyr untignen Zeil. + +---> ffnet ayn Zeil ber derer daader mit O , wenn dyr Mrkl auf derer Zeil + ist. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.2: GWORT ANFEGN (append) + + + ** Zipf a , um bbs NAACH n Mrkl einzfegn. ** + + 1. Bewg nn Mrkl gan n Anfang von dyr eerstn ebungszeil mit ---> unt. + + 2. Druck e , hinst d dyr Mrkl an n End von Zei steet. + + 3. Zipf ayn klains a , um bbs NAACH n Mrkl anzfegn. + + 4. Vergntz ds Wort wie in dyr Zeil drunter. Druck <ESC>, um d Schreib-Art- + weis z verlaassn. + + 5. Bewg di mit e zo n naehstn ungantzn Wort und widerhol d Schritt 3 und + 4. + +---> D Ze biett ayn Glgn , ayn Gwort in ayner Zeil anzf. +---> D Zeil biett ayn Glgnet, ayn Gwort in ayner Zeil anzfegn. + +Anmrkung: a , i und A bringend ainn gleichermaan eyn d Einfegartweis; + dyr ainzige Unterschaid ist, WO mit n Einfegn angfangt werd. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.3: AYN ANDERNE WEIS ZO N ERSTZN (replace) + + + ** Demmlt ayn groosss R , um meerer als wie grad ain Zaichen z erstzn. ** + + 1. Bewg nn Mrkl zo dyr eerstn untignen, mit ---> angmrktn Zeil. + Gee mit n Mrkl gan n Anfang von n eerstn xxx . + + 2. Ietz druck R und zipf sele Zal, wo drunter in dyr zwaittn Zeil steet, + yso d de sel s xxx erstzt. + + 3. Druck <ESC> , um d Erstzungsartweis z verlaassn. Du gspannst, d dyr + Rest von dyr Zeil unverndert bleibt. + + 4. fert die Schritt, um ds berblibne xxx z erstzn. + +---> S Zunddn von 123 zo xxx ergibt xxx. +---> S Zunddn von 123 zo 456 ergibt 579. + +Anmrkung: D Erstzungsartweis ist wie d Einfegartweis, aber ayn ieds eindem- + mlte Zaichen lscht ayn vorhanddns. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.4: GWORT AAMEN UND EINFEGN + + ** Benutz nn Pfemerer y , um bbs z aamen, und p , um bbs einzfegn. ** + + 1. Gee zo dyr mit ---> angmrktn Zeil unt und stz nn Mrkl hinter "a)". + + 2. Ginn d Sichtisch-Artweis mit v und bewg nn Mrkl gnaun vor "eerste". + + 3. Zipf y , um dnn vrherghbtn Tail z aamen. + + 4. Bewg nn Mrkl gan n End von dyr naehstn Zeil: j$ + + 5. Demmlt p , um ds Gwort einzfegn, und aft: a zwaitte <ESC> . + + 6. Benutz d Sichtischartweis, um " Eintrag." auszwaln, aam s pfelfs y, be- + wg di gan n End von dyr naehstn Zeil mit j$ und feg s Gwort dortn mit + p an. + +---> a) ds ist dyr eerste Eintrag. + b) + +Anmrkung: Du kanst y aau als Pfemerer verwenddn; yw aamt ain Wort. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.5: SCHALTTER STZN + +** Stz aynn Schaltter yso, d ayn Suech older Erstzung Groo- und Klain- ** + ** schreibung bergeet. ** + + 1. Suech um 'bergee", indem dst /bergee eingibst. + Widerhol d Suech ayn ttlych Maal, indem dst de Tastn n druckst. + + 2. Stz de Zwisl - nn Schaltter - 'ic' (ignore case), indem dst :set ic + eingibst. + 3. Ietz suech wider um 'bergee' und tue aau wider mit n weiter. Daa fallt + dyr auf, d ietz bbenn aau bergee und BERGEE hergeet. + + 4. Stz de Zwisln 'hlsearch' und 'incsearch' pfelfs: :set hls is + + 5. Widerhol d Suech und bobacht, was ietz gschieght: /bergee <EIN> + + 6. Dst groo und klain wider gwon unterscheidst, zipf: :set noic + +Anmrkung: Mechst de Trffer niemer vrherghbt seghn, gib ein: :nohlsearch +Anmrkung: Sollt klain/groo bei ayner ainzignen Suech wurst sein, benutz \c + in n Suechausdruk: /bergee\c <EIN> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 6 + + 1. Zipf o , um ayn Zeil UNTERHALB n Mrkl z ffnen und d Einfegartweis z + ginnen. + Zipf O , um ayn Zeil OBERHALB n Mrkl z ffnen. + + 2. Zipf a , um NAACH n Mrkl ayn Gwort einzfegn. + Zipf A , um ayn Gwort naach n Zeilnend anzfegn. + + 3. D Faudung e bringt di gan n End von aynn Wort. + + 4. Dyr Pfemerer y (yank) aamt bbs, p (put) fegt ds ein. + + 5. Ayn groosss R geet eyn d Erstzungsartweis, hinst d myn <ESC> druckt. + + 6. D Eingaab von ":set xxx" stzt de Zwisl "xxx". Ayn ttlych Zwisln seind: + 'ic' 'ignorecase' Groo/klain wurst bei ayner Suech + 'is' 'incsearch' Zaig aau schoon ayn Tailberainstimmung + 'hls' 'hlsearch' Hb allsand pssetn Ausdrck vrher + Dyr Schaltternam kan in dyr Kurz- older Langform angbn werdn. + + 7. Stll yn ayner Zwisl "no" voran, dst ys abschalttst: :set noic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 7.1: AYN HILFGWORT AUFRUEFFEN + + + ** Nutz ds einbaute Hilfgebu, de "Betribsanlaittung" ** + + Eyn n Wimm ist ayn ausferliche "Gebrauchsanweisung" einbaut. Fr s Eerste + prblt ainfach ains von dene dreu aus: + - Druck d <HILF>-Tastn, wennst bbenn aine haast. + - Druck de Tastn <F1>, fallsst ys haast. + - Zipf :help <EIN> + + Lis di eyn s Hilffenster ein, dyrmitst draufkimmst, wie ds mit dyr Hilf geet. + Demmlt <STRG>w w , um von ainn Fenster zo n andern zo n Springen. + Demmlt :q <EIN> , um s Hilffenster zo n Schliessn. + + Du kanst zo so guet wie allssand ayn Hilf finddn, indem dst yn dyr Faudung + :help aynn Auerwerd naachstllst und istig <EIN> nit vergisst. Prblt ds: + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 7.2: ERSTLL AYN GIN-SCHRIPF + + + ** Mutz nn Wimm mit de einbautn Faehigkeitn auf ** + + Dyr Wimm besitzt ayn Wsn Schftungen, wo ber n Urwimm aushingeend, aber de + meerern dyrvon seind in dyr Vorgaab ausgschaltt. Dyrmitst meerer aus n Wimm + ausherholst, erstllst ayn "vimrc"-Dautticht. + + 1. Lg ayn "vimrc"-Dautticht an; ds geet ie naach Betribsgebu verschidn: + :e ~/.vimrc fr s Ainsl + :e $VIM/_vimrc bei n Fenstl + + 2. Ietz lis nn Inhalt von dyr Beispil-"vimrc"-Dautticht ein: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Speichert de Dautticht mit: + :w + + 4. Bei n naehstn Gin von n Wimm ist aft d Fegnussvrherhbung zuegschaltt. + Du kanst dyr allss eyn d Dautticht einhinschreibn, wasst bstndig habn + willst. Meerer dyrzue erfarst unter: :help vimrc-intro +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 7.3: VERGNTZN + + + ** Befelhszeilnvergntzung mit <STRG>d und <TAB> ** + + 1. Vergwi di, d dyr Wimm nit auf n Urwimm-"Glais" fart: :set nocp + + 2. Schaug naach, wlcherne Dauttichtn d s in n Verzaichniss geit: :!ls + older :!dir + 3. Zipf nn Anfang von ayner Faudung: :e + + 4. Druck <STRG>d , und dyr Wimm zaigt ayn Listn von Faudungen, wo mit "e" + angeend. + 5. Druck <TAB> , und dyr Wimm vervollstndigt nn Faudungsnam zo ":edit". + + 6. Feg ayn Laerzaichen und nn Anfang von ayner besteehetn Dautticht an: + :edit DAU + + 7. Druck <TAB>. Dyr Wimm vergntzt nn Nam, ds haisst, wenn yr aindeuttig + ist. +Anmrkung: D Vergntzung geit s fr aynn Hauffen Faudungen. Versuech ainfach + <STRG>d und <TAB>. Bsunders ntzlich ist ds bei :help . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 7 + + + 1. Zipf :help older druck <F1> older <HILF>, um ayn Hilffenster z ffnen. + + 2. Zipf :help FAUDUNG , um auf ayn Hilf gan aynn Befelh z kemmen. + + 3. Zipf <STRG>w w , um zo n andern Fenster z springen. + + 4. Zipf :q , um s Hilffenster z schliessn. + + 5. Erstll ayn vimrc-Ginschripf zuer Sicherung von deine Mtzneinstllungen. + + 6. Druck <STRG>d, aft dst naach : mit ayner Faudung angfangt haast, dyr- + mitst mgliche Vergntzungen anzaigt kriegst. + Druck <TAB> fr ain Vervollstndigung yllain. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Ds wr ietzet s End von n Wimmschainer. Gangen ist s daa drum, aynn kurtzn + und bndignen berblik ber s Blat WIMM z lifern, netty vil gnueg, d myn + fr s Eerste wirklich bbs dyrmit anfangen kan. Dyrmit ist s aber auf kain + Weitn non nit taan; dyr Wimm haat schoon non vil meerer auf Lager. Lis als + Naehsts aynmaal s Benutzerhandbuech: :help user-manual . + + Zo n Weiterlsn und Weiterlernen wr ds Buech daader zo n Empfelhen: + Vim - Vi Improved - von n OUALLINE Steve + Verlaag: New Riders + Ds ist ds eerste Buech, wo ganz yn n Wimm gwidmt ist, netty ds Grechte fr + Anfnger. Es haat ayn Wsn Beispiler und aau Bilder drinn. + See http://iccf-holland.org/click5.html + + Ds folgete Buech ist schoon lter und meerer ber n Urwimm als wie ber n + Wimm, aber aau zo n Empfelhen: Textbearbeitung mit dem vi-Editor - von dyr + LAMB Linda und n ROBBINS Arnold - Verlaag O'Reilly - Buechlaittzal (ISBN): + 3897211262 + In dnn Buech kan myn fast allss finddn, was myn mit n Urwimm angeen mecht. + De sxte Ausgaab enthaltt aau schoon bbs ber n Wimm. + Als ietzunde Bezugniss fr d Fassung 6.2 und ayn pfrenge Einferung dient + ds folgete Buech: + vim ge-packt von n WOBST Reinhard + mitp-Verlaag, Buechlaittzal 3-8266-1425-9 + Trotz dyr recht pfrengen Darstllung ist s durch seine viln ntzlichnen Bei- + spiler aau fr Einsteiger grad grecht. Probhaeupster und de Beispilschripfer + seind zesig zo n Kriegn; see http://iccf-holland.org/click5.html + + Verfasst habnd dnn Schainer dyr PIERCE Michael C. und WARE Robert K. von dyr + Kolraader Knappnschuel (Colorado School of Mines). Er beruet auf Entwrff, wo + dyr SMITH Charles von dyr Kolraader Allschuel (Colorado State University) + zuer Verfegung gstllt haat. Gundpost: bware@mines.colorado.edu. + Fr n Wimm haat n dyr MOOLENAAR Bram barechtt. + De bairische berstzung stammt von n HELL Sepp 2009. Sein Gundpostbrcht ist + sturmibund@t-online.de + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + + + +
new file mode 100644 --- /dev/null +++ b/runtime/tutor/tutor.bj.utf-8 @@ -0,0 +1,987 @@ +=============================================================================== += G o t i k a m i n n W I M M - S c h a i n e r - Fassung 1.7D = +=============================================================================== + + Dyr Wimm ist ayn gro mächtigs Blat, dös was mit aynn Wösn Befelh aufwartt; z + vil, däß myn s allsand in aynn Schainer wie dönn daader unterbräng. Der + Schainer ist yso aufbaut, däß yr halt netty die Befelh allsand bringt, wost + brauchst, däßst mit iem für s Eerste wirklich öbbs anfangen kanst. + Durchhinarechtn kanst di, wennst willst, in ayner halbetn Stund; dös haisst, + wennst di nit grooß mit n Pröbln und Tüftln aufhaltst. + + OBACHT: + Die Faudungen, wost daader finddst, gaand istig s Gwort öndern. Dösswögn + machst eyn n Böstn glei ayn Aamum von derer Dautticht daader. Haast alsnan + dös Gwort daader mit n Befelh "vimtutor bj" ausherlaassn, ist s ee schoon + ayn Aamum. + Mir kan s nit oft gnueg sagn, däß der Schainer daader istig gan n Üebn + ghoert. Also muesst schoon aau die Befelh ausfüern, wennst ys gscheid ler- + nen willst. Mit n Lösn yllain ist s +nit taan! + + Ietz schaust grad non, däß dein Föststölltastn nit druckt ist; und aft geest + glei aynmaal mit dyr j-Tastn abwärts (yso laaufft dös nömlich), hinst däßst + de gantze Letzn 1.1 auf n Bildschirm haast. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.1: MIT N MÖRKL UMAYNANDFARN + +** Dyrmitst mit n Mörkl umaynandkimmst, druck h, j, k und l wie unt zaigt. ** + ^ Ayn Öslsbrugg: + k De Tastn h ist winster und +geet aau gan winster. + < h l > S l leit zesm und richtt si gan zesm. + j S j kan myn wie aynn Pfeil gan unt seghn. + v Mit n k kimmst gan n KOPF. + 1. Ietz ruedertst ainfach mit n Mörkl auf n Bildschirm umaynand, hinst däßst + di sicher füelst. + 2. Halt d Abhin-Tastn (j) druckt; aft rumplt s ainfach weiter. Netty yso + kimmst gan dyr naehstn Letzn. + + 3. Wie gsait, ietz bewögst di also mit derer Tastn gan dyr Letzn 1.2. + +Non öbbs: Allweil, wenn dyr niemer ganz wol ist, wasst öbbenn druckt haast, aft + zipfst <ESC>; naacherd bist wider ganz gwon in dyr Befelhs-Artweis. + + + Nöbnbei gsait kimmst gwonerweil aau mit de Pfeiltastnen weiter. Aber + hjkl seind z haissn s Wimm-Urgstain; und de "Hörtn" seind ganz dyr- + für, däß myn bei +dene bleibt. Pröblt s ainfach aus! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.2: ÖNN WIMM AUSSCHALTTN + + + ALSO, EE WENNST ÖBBS VON DAA UNT AUSFÜERST, LIS LIEBER ZEERST DE GANTZE LET- + ZN! + + 1. Druck d <ESC>-Tastn, dyrmitst aau gwiß in dyr Befelhs-Artweis bist. + + 2. Demmlt :q! <EIN>. + Daa dyrmit benddst ys Blat und verwirffst allss, wasst öbbenn göndert + haast. + + 3. Balst önn Eingib seghst, gib dö Faudung ein, wo di zo dönn Schainer brun- + gen haat, also vimtutor bj <EIN>. + + 4. Also, wenn ietz allsse sitzt, naacherd füerst d Schritt 1 hinst 3 aus, mit + wasst ys Blat verlaasst und aft wider einhinkimmst. + +Anmörkung: Mit :q! <EIN> verwirffst allss, wasst göndert older enther gschribn + haast. In aynn Öttlych Letznen lernst acht, wiest dös allss in ayner + Dautticht speichertst. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.3: GWORT BARECHTN - LÖSCHN + + + ** Druck x , dyrmitst dös Zaichen unter n Mörkl löschst. ** + + 1. Bewög di mit n Mörkl auf de mit ---> angmörkte Zeil unt. + + 2. Zo n Faeler Verbössern farst mit n Mörkl netty auf dös Zaichen, dös wo + glöscht ghoert. + + 3. Druck de Tastn x , däßst dös überflüssige Zaichen löschst. + + 4. Ietz tuest so lang weiter mit 2 hinst 4, hinst däß dyr Saz stimmt. + +---> De Kkuue sprangg übber nn Maanad. + + 5. Wenn ietz de Zeil verbössert ist, geest gan dyr Letzn 1.4. weiter. + +Und ganz wichtig: Dyrweilst dönn Schainer durcharechtst, versuech nit öbbenn, + allss auswendig z lernen; nän, lern ainfach mit n Anwenddn! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.4: GWORT BARECHTN - EINFÜEGN + + + ** Druck i , dyrmitst öbbs einfüegst. ** + + 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil, wo mit ---> angeet. + + 2. Dyrmitst de eerste Zeil wie de zwaitte machst, bewög önn Mörkl auf dös + eerste Zaichen NAACH derer Stöll, daa wo s Gwort eingfüegt werdn sollt. + + 3. Druck i und gib dös ein, was abgeet. + + 4. Wenn ieweils ayn Faeler verweitert ist, aft druck <ESC>; und dyrmit kimmst + gan dyr Befelhsartweis zrugg. + So, und ietz tuest ainfach yso weiter, hinst däß dyr Saz stimmt. + +---> Daader gt dd öbbs b. +---> Daader geet diend öbbs ab. + + 5. Balst mainst, däßst ys Gwort-Einfüegn kanst, aft geest gan dyr Letzn 1.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.5: GWORT BARECHTN - ANFÜEGN + + + ** Druck A gan n Gwort Anfüegn. ** + + 1. Gee mit n Mörkl gan dyr eerstn untignen Zeil, wo ayn ---> dyrvor haat. + Daa ist s gleich, wo gnaun dyr Mörkl in derer Zeil steet. + + 2. Demmlt A und gib de entspröchetn Ergöntzungen ein. + + 3. Wennst mit n Anfüegn förtig bist, aft druckst <ESC>, däßst wider eyn de + Befelhsartweis zruggkimmst. + + 4. So, und ietz geest aft non gan dyr zwaittn mit ---> angmörktn Zeil; und + daadl machst ys netty yso. + +---> In derer Zeil gee + In derer Zeil geet ayn Weeng ayn Gwort ab. +---> Aau daader stee + Aau daader steet öbbs Unvollstöndigs. + + 5. Wennst s Anfüegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 1.6: AYN DAUTTICHT BARECHTN + + + ** Mit :wq speichertst ayn Dautticht und verlaasst önn Wimm ganz. ** + + !! OBACHT: Ee wennst mit dönn alln daa unt weitertuest, lis zeerst de gantze + Letzn durch!! + + 1. Verlaaß also s Blat, wie s in dyr Letzn 1.2. haisst, mit :q! ! + + 2. Gib dö Faudung eyn n Eingib ein: vim Schainer <EIN> . 'vim' ruefft s Blat + auf, und 'Schainer' haisst de Dautticht, wost barechtn willst. Dyrmit + haast also ayn Dautticht, dö wost barechtn kanst. + + 3. Ietz füegst öbbs ein older löschst öbbs, wiest ys in de vorignen Letznen + glernt haast. + + 4. Speichert de gönderte Dautticht und verlaaß önn Wimm mit :wq <EIN> . + + 5. Schmeiß önn Wimmschainer neu an und gee gan dyr folgetn Zammenfassung. + + 6. Aft däßst de obignen Schritt glösn und käppt haast, kanst ys durchfüern. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 1 + + + 1. Dyr Mörkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert. + h (winst) j (ab) k (auf) l (zes) + + 2. Um önn Wimm umbb n Eingib aus z ginnen, demmlt: vim DAUTTICHT <EIN> . + + 3. Willst önn Wimm verlaassn und aau allss verwerffen, aft gibst ein: + <ESC> :q! <EIN> . + Gan n Verlaassn und Speichern aber zipfst <ESC> :wq <EIN>. + + 4. Willst dös Zaichen löschn, daa wo dyr Mörkl drauf ist, demmltst x . + + 5. Willst öbbs vor n Mörkl eingöbn, zipfst i und drafter <ESC> . + Mechst ys aber eyn s Zeilnend anhinhöngen, benutzt ys A . + Und ainfach naach n Mörkl füegst ys mit a ein . + +Anmörkung: Druckst <ESC>, kimmst eyn de Befelhsartweis zrugg older brichst ayn + Faudung ab, dö wo dyr schiefgangen ist. + + Ietz tue mit dyr Letzn 2 weiter. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.1.: LÖSHFAUDUNGEN + + + ** Demmlt dw , dyrmitst ayn Wort löschst ** + + 1. Druck <ESC>, dyrmit s aau gwiß ist, däßst in dyr Befelhsartweis bist. + + 2. Bewög önn Mörkl zo dyr mit ---> angmörktn Zeil unt. + + 3. Und daa geest ietz auf n Anfang von aynn Wort, dös wo glöscht ghoert. + + 4. Zipf dw , däßst dös gantze Wort löschst. + + Nöbnbei: Dyr Buechstabn d erscheint auf dyr lösstn Zeil von n Bildschirm, + sobaldst n eingibst. Dyr Wimm wartt ietz drauf, däß öbbs kimmt, al- + so daader ayn w . Seghst freilich öbbs Anderts wie ayn d , + naacherd haast öbbs Falschs demmlt. Druck aft <ESC> und pröblt + s non aynmaal. +---> Ayn Öttlych Wörter lustig ghoernd nit Fisper eyn dönn Saz einhin. + + 5. Äfert d Schritt 3 und 4, hinst däß dyr Saz pässt, und gee aft gan dyr + Letzn 2.2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.2.: NON MEERER LÖSHFAUDUNGEN + + + ** Gib d$ ein, däßst hinst eyn s Zeilnend löschst. ** + + 1. Druck <ESC> , dyrmitst aau gwiß in dyr Befelhsartweis bist. + + 2. Bewög önn Mörkl hinst eyn de mit ---> angmörkte Zeil untn. + + 3. Gee mit n Mörkl auf s End von dyr faelerfreien Zeil, NAACH n eerstn . . + + 4. Zipf d$ , däßst hinst eyn s End von dyr Zeil löschst. + +---> Öbber haat s End von dyr Zeil doplt eingöbn. doplt eingöbn. + + + 5. Gee weiter gan dyr Letzn 2.3, dyrmitst versteest, was daader ablaaufft. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.3: PFEMERER UND WOLENDER + + + Vil Faudungen, wo s Gwort öndernd, sötznd si aus aynn Pfemerer und aynn Wo- + lend zamm. Bal i also öbbs löschn will, schreib i ainsting d und aft s "Wo- + lend", dös haisst also, "wolend", "wohin" däß i will - older was i halt gnaun + löschn will. + + + + + + + Daader also, was i wie löschn kan: + w - hinst eyn n Anfang von n naehstn Wort AANE dönn sein eersts Zaichen. + e - gan n End von n ietzundn Wort MIT dönn seinn lösstn Zaichen. + $ - zo n End von dyr Zeil MIT derer irn lösstn Zaichen. + + Also löscht de Tastnfolg de umbb n Mörkl hinst eyn s Wortend. +Anmörkung: Gib i grad dös zwaitte Zaichen yllain ein, ruckt halt dyr Mörkl + entspröchet weiter. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.4: MIT AYNN ZÖLER D WOLENDER ÄFERN + + + ** Gib i ayn Zal vor aynn Wolend ein, werd dös Sel halt widerholt. ** + + 1. Bewög önn Mörkl gan n Anfang von dyr Zeil mit ---> dyrvor unt. + + 2. Zipf 2w , däßst mit n Mörkl zwai Wörter weitergeest. + + 3. Zipf 3e , däßst mit n Mörkl auf s End von n drittn Wort kimmst. + + 4. Zipf 0 (aynn Nuller), däßst eyn n Anfang von dyr Zeil hinkimmst. + + 5. Widerhol d Schritt 2 und 3 mit verschaidne Zöler. + + ---> Dös ist ietz grad ayn Zeil zo n drinn Umaynanderruedern. + + 6. Gee weiter gan dyr Letzn 2.5. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.5: DURCH AYNN ZÖLER GLEI MEERER LÖSCHN + + + ** Ayn Zal vor aynn Pfemerer äfert dönn um seln Werd. ** + + Also, i mecht löschn, und zwaar öbbs Bestimmts, und dös so und so oft: Daa + dyrzue benutz i aynn Zöler: + d Zöler Wolend (also önn Bewögungsschrit) + + 1. Bewög önn Mörkl gan n eerstn Wort in GROOSSBUECHSTABN in dyr mit ---> an- + gmörktn Zeil. + + 2. Demmlt d2w , dyrmitst de ganz grooßgschribnen Wörter löschst. + + 3. Äfert d Schritt 1 und 2 mit dönn entspröchetn Zöler, dyrmitst de drauf- + folgetn ganz großgschribnen Wörter mit ayner ainzignen Faudung löschst: + + +---> Dö ABC DE Zeil FGHI JK LMN OP mit Wörter ist Q RS TUV ietz berichtigt. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.6: ARECHTN AUF ZEILN + + + ** Zipf dd , um ayn gantze Zeil z löschn. ** + + Weil s gro oft vürkimmt, däß myn gantze Zeiln löscht, kaamend schoon d Ent- + wickler von n Urwimm daa drauf, däß myn ainfach dd gan dönn Zwök schreibt. + + + 1. Bewög önn Mörkl gan dyr zwaittn Zeil in n untignen "Gedicht". + 2. Zipf dd , um dö Zeil z löschn. + 3. Ietz bewögst di gan dyr viertn Zeil. + 4. Zipf 2dd , um zwo Zeiln zo n Löschn. + +---> 1) Roosn seind root; +---> 2) Drunter ist s Koot. +---> 3) Veigerln seind blau. +---> 4) Umgrabn tuet s d Sau. +---> 5) D Ur sait de Zeit, +---> 6) Sait, däß s mi freut, +---> 7) Dirndl, dein Gschau. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 2.7: RUGGGÖNGIG MACHEN (RUGGLN) + + + ** Zipf u , dyrmitst de lösstn Faudungen ruggltst ** + ** older U , um ayn gantze Zeil widerherzstölln. ** + + 1. Bewög önn Mörkl gan dyr mit ---> angmörktn Zeil unt und gee dyrmit auf n + eerstn Faeler. + 2. Zipf x , däßst dös eerste z vile Zaichen löschst. + 3. Ietz demmlt u , dyrmitst de lösste Faudung ruggltst. + 4. Ietz behöb allsand Faeler auf dyr Zeil mit dyr Hilf von n Befelh x . + 5. Aft gibst ayn U (grooß) ein, däßst de Zeil wider yso hinbringst, wie s + gwösn ist. + 6. So, und ietz demmltst so oft u , hinst däßst s U und de andern Fau- + dungen rugggöngig gmacht haast. + 7. Und ietzet widerum schreibst so oft <STRG>r , hinst däßst allsand Be- + felh widerhergstöllt, z haissn allsse rugg-grugglt haast (also d Rugggön- + gigmachungen rugggöngig gmacht). +---> Beerichtig d Faeller voon dehrer Zeiil und sttöll s mitt n Ruggruggln wi- + der her. + 8. Die Faudungen seind gro wichtig; sö helffend ainn närrisch weiter. + Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 2 + + + 1. Um von n Mörkl aus hinst eyn s naehste Wort zo n Löschn, zipf: dw + 2. Um umbb n Mörkl hinst eyn s End von dyr Zeil zo n Löschn, demmlt d$ + 3. Dyrmitst ayn gantze Zeil löschst, gib ein: dd + 4. Mechst ayn Bewögung, ayn "Wolend", öfters, stöll de entspröchete Zal dyr- + vor: 3dw older aau: d3w + 5. Dyr Pfueg für ayn Önderungsfaudung lautt yso: + Pfemerer [Zal] Bewögungsschrit (Wolend) + Und dös haisst: + Dyr PFEMERER gibt an, WAS taan ghoert, öbbenn d = löschn (»delete«). + [ZAL] - Ayn Zal KAN myn angöbn, wenn myn halt ayn Wolend öfter habn will. + S WOLEND, also dyr Schrit WOHIN, besagt, auf was i aushin will, öbbenn + auf ayn Wort ( w ), s End von dyr Zeil ( $ ) und so weiter. + + 6. Däßst eyn n Anfang von dyr Zeil hinkimmst, schreib aynn Nuller: 0 + + 7. Um öbbs Vorigs wider z ruggln, gib ein: u (klain also) + Um allsand Önderungen in ayner Zeil z ruggln, haast: U (also grooß) + Um "rugg-z-ruggln", also allss wider herzstölln, zipf: <STRG>r + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.1: ANFÜEGN (»put«) + + + ** Zipf p , dyrmitst öbbs gnetty Glöschts naach n Mörkl anfüegst. ** + + 1. Bewög önn Mörkl gan dyr eerstn untignen Zeil mit ---> dyrvor. + + 2. Zipf dd , um sele Zeil z löschn und dyrmit in aynn Wimm-"Roster" zo n + speichern. + + 3. Bewög önn Mörkl gan dyr Zeil c), ÜBER derer, daa wo de glöschte Zeil ein- + hinkemmen sollt. + + 4. So, und ietz gibst ainfach p ein, und schoon haast dö Zeil unter derer + mit n Mörkl drinn. + 5. Äfert d Schritt 2 hinst 4, hinst däßst allsand Zeiln yso naachynaynand + haast, wie s hinghoernd. + +---> d) Kanst du dös aau? +---> b) Veigerln seind blau. +---> c) Bedachtn kan myn lernen. +---> a) Roosn seind root. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.2: ERSÖTZN (»replace«) + + + ** Zipf rx , um dös Zaichen unter n Mörkl durch x z ersötzn. ** + + 1. Bewög önn Mörkl zo dyr eerstn untignen Zeil mit ---> dyrvor. + + 2. Bewög önn Mörkl, hinst däß yr auf n eerstn Faeler steet. + + 3. Zipf r und drafter dös Zaichen, wo dyrfür daa hinghoert. + + 4. Widerhol d Schritt 2 und 3, hinst däßst de eerste Zeil gmaeß dyr zwaittn + berichtigt haast: +---> Wie dö Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft! +---> Wie dö Zeil eingöbn wurd, wurdnd ainige falsche Tastnen zipft! + + 5. Ietz tue mit dyr Letzn 3.3 weiter. + +Anmörkung: Vergiß nit drauf, däßst mit n Anwenddn lernen solltst und nit öbbenn + mit n Auswendiglernen! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.3: ÖNDERN (»change«) + + + ** Um hinst eyn s Wortend z öndern, zipf ce . ** + + 1. Gee mit n Mörkl auf de eerste mit ---> angmörkte Zeil. + + 2. Ietz farst netty auf s "s" von Wstwr hin. + + 3. Zipf ce ein und aft d Wortberichtigung, daader also örter . + + 4. Druck <ESC> und bewög önn Mörkl gan n naehstn Zaichen, wo göndert ghoert. + + 5. Äfert d Schritt 3 und 4, hinst däß dyr eerste Saz wie dyr zwaitte ist. + +---> Ainige Wstwr von derer Zlww ghhnnd mit n Öndern-Pfemerer gaauu. +---> Ainige Wörter von derer Zeil ghoernd mit n Öndern-Pfemerer göndert. + +ce löscht also s Wort und schlaaufft di eyn d Eingaab-Artweis. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 3.4.: NON MEERER ÖNDERUNGEN PFELFS c + + + ** D Löshfaudung c arechtt mit de nömlichnen Wolender wie dö mit d ** + + 1. Dyr Önder-Pfemerer arechtt anleich wie d Löshfaudung mit d , und zwaar + yso: + c [Zal] Bewögungsschritt (Wolend) + + 2. D Wolender seind de gleichn, öbbenn w für Wort und $ für s Zeilnend. + + + 3. Bewög di zo dyr eerstn untignen Zeil mit ---> . + + 4. Ietz geest auf dönn eerstn Faeler. + + 5. Zipf c$ , gib önn Rest von dyr Zeil wie in dyr zwaittn ein und druck aft + <ESC>. +---> S End von derer Zeil sollt an de zwaitte daader anglichen werdn. +---> S End von derer Zeil sollt mit n Befelh c$ berichtigt werdn. + +Denk allweil dran, däßst iederzeit mit dyr Ruggtastn Faeler ausbössern kanst. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 3 + + + 1. Um ayn vorher glöschts Gwort anzfüegn, zipf p . Daa dyrmit werd dös + gantze Gwort NAACH n Mörkl angfüegt. Wenn s ayn gantze Zeil gwösn ist, + werd dö sel als de Zeil unterhalb n Mörkl eingfüegt. + + 2. Um dös Zaichen unter n Mörkl, also wo dyr Mörkl ist, z ersötzn, zipf r + und aft dös Zaichen, wost daadl habn willst. + + 3. Dyr Önderungspfemerer ( c = »change«) laasst ainn umbb n Mörkl hinst eyn s + End von n Wolend öndern. Zipf ce , dyrmitst umbb n Mörkl hinst eyn s End + von n Wort öndertst, und c$ hinst eyn s End von dyr Zeil. + + 4. Für d Önderung lautt dyr Pfueg: + + c [Zal] Wolend + +Ietz tue mit dyr naehstn Letzn weiter. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.1: MÖRKLSTÖLLUNG UND DAUTTICHTDARSTAND + +** Demmlt <STRG>g, däßst önn Befand und Darstand von dyr Dautticht anzaigst. ** + ** Zipf G , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. ** + +Anmörkung: Lis dö gantze Letzn daader durch, ee wennst iewign öbbs unternimmst! + + 1. Druck <STRG>g . Auf dös hin erscheint auf derer Seitt ganz unt ayn Dar- + standsmeldung mit n Dauttichtnam und n Befand innerhalb dyr Dautticht. + Mörk dyr de Zeilnnummer für n Schrit 3. + +Anmörkung: Müglicherweis seghst aau önn Mörklbefand in n zesmen untern Bild- + schirmögg. Aft ist s "Lindl" (»ruler«) eingstöllt; schau dyrzue mit + n Befelh :help 'ruler' naach. + 2. Druck G , um an s End von dyr Dautticht z kemmen. + gg gibst ein, däßst gan n Anfang von dyr Dautticht aufhinkimmst. + + 3. Gib d Nummer von derer Zeil ein, daa wost vorher warst, und aft non G . + Dös bringt di zrugg gan seler Zeil, daa wost stuenddst, wiest dös eerste + Maal <STRG>g gadruckst. + + 4. Wennst di sicher gnueg füelst, aft füer d Schritt 1 hinst 3 aus. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.2: DYR BEFELH ZO N SUECHEN + + + ** Zipf / und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. ** + + 1. Du gibst also in dyr Befelhsartweis s Zaichen / ein. Dös sel wie aau dyr + Mörkl erscheinend drauf unt auf n Schirm, netty wie bei dyr Faudung : . + + 2. Ietz zipf 'Faeeler' <EIN>. Netty um dös 'Faeeler' willst ietz suechen. + + 3. Willst um gnaun dönn Ausdruk weitersuechen, zipf ainfach n (wie »next«). + Willst hinzrugg suechen, aft gibst N ein. + + 4. Um von Haus aus zruggaus z suechen, nimm ? statt / her. + + 5. Dyrmitst wider daa hinkimmst, wost herkemmen bist, druck <STRG>o, und dös + öfter, wennst weiter zrugg willst. Mit <STRG>i widerum kimmst vorwärts. + +---> Aynn Faeler schreibt myn nit "Faeeler"; Faeeler ist ayn Faeler + +Anmörkung: Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi- + der weiter dyrmit, men Sach dyr Schaltter 'wrapscan' wär auf aus. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.3: DE GÖGNKLAMMERN FINDDN + + + ** Zipf % , um de entspröchete Klammer ) , ] older } z finddn. ** + + 1. Sötz önn Mörkl auf iewign aine von dene drei Klammern ( , [ older { + in dyr untignen Zeil, wo mit ---> angmörkt ist. + + 2. Ietzet zipf s Zaichen % . + + 3. Dyr Mörkl geet ietz auf de pässete schliessete Klammer. + + 4. Ietz demmlt % , und dyrmit kimmst gan dyr öffneretn Klammer zrugg. + + 5. Sötz önn Mörkl auf ayn anderne Klammer von ({[]}) und pröblt % aus. + +---> Dös ( ist blooß ayn Pochzeil ( mit [ verschaidne ] { Klammern } drinn. )) + +Anmörkung: Um dö Müglichkeit gaast bsunders froo sein, wennst aynmaal in aynn + Spaichgwort verzweiflt ayn faelete Gögnklammer suechst! + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 4.4: D ERSÖTZUNGSFAUDUNG (»substitute«) + + + ** Zipf :s/alt/neu/g , um 'alt' durch 'neu' zo n Ersötzn. ** + + 1. Gee mit n Mörkl zo dyr unt steehetn mit ---> angmörktn Zeil. + + 2. Zipf :s/dee/de <EIN> . Der Befelh ersötzt alsnan grad dös +eerste "dee", + wo vürkimmt. + + 3. Ietz pröblt s mit :s/dee/de/g . Dös zuesötzliche g ("Pflok" nennt myn + öbbs Sölchers) bewirkt, däß allss, was dyrmit kennzaichnet ist, innerhalb + von dyr ainn Zeil ersötzt werd. + +---> Dee schoenste Zeit, däß myn dee Blüemln anschaut, ist dee schoene Lan- + gesszeit. + 4. Um ietz allsand Suechbegriff innerhalb von zwo Zeiln zo n Öndern, zipf + :#,#s/alt/neu/g , wobei # ieweils für de eerste und lösste Zeil von dönn + Pfraich steet. + :%s/alt/neu/g zipfst, däßst d Vürkemmen in dyr gantzn Dautticht öndertst. + Mit :%s/alt/neu/gc finddst allsand Vürkemmen in dyr gsamtn Dautticht; + daa werst aber zeerst non gfraagt, obst ys ersötzn willst older nity. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 4 + + 1. <STRG>g zaigt dönn ietzundn Dauttichtbefand und önn Darstand dyrvon an. + G bringt di an s End von dyr Dautticht. + <Zal> G bringt di gan dyr entspröchetn Zeilnnummer. + gg bringt di zo dyr eerstn Zeil. + + 2. D Eingaab von / mit aynn Ausdruk suecht VÜRSHLING um dönn Ausdruk. + Gibst ? und aynn Suechbegrif ein, suecht s um dönn ÄRSHLING. + Zipf naach ayner Suech n ; naacherd werd in de gleiche Richtung weiter- + gsuecht. Mit N geet s umkeerter weiter. + <STRG>o bringt di zo ölterne Befändd zrugg, <STRG>i zo neuerne. + + 3. D Eingaab von % , wenn dyr Mörkl auf ainer von dene Klammern steet: ({[ + )]} , bringt di zo dyr Gögnklammer. + + 4. Um dös eerste Vürkemmen von "alt" in ayner Zeil durch "neu" z ersötzn, + zipf :s/alt/neu . + Um allsand in ayner Zeil z ersötzn, zipf :s/alt/neu/g . + Mechst allss in zwo Zeiln ersötzn, demmlt zo n Beispil :5,6s/alt/neu/g . + Mechst allss in dyr gantzn Dautticht ersötzn, gib ein: :%s/alt/neu/g . + Willst ayn ieds Maal bstaetln, höng 'c' wie »confirm« hint anhin. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFÜERN + + + ** Willst ayn Gfäßfaudung ausfüern, gib ainfach dö sel naach :! ein. ** + + 1. Zipf dönn bekanntn Befelh : , dyrmitst mit n Mörkl auf n Bildschirm + ganz abhin kimmst. Draufhin kanst aynn gwonen Gfäßbefelh eingöbn. + + 2. Zeerst kimmt aber non ayn Ruefzaichen ! . Und ietz haast de Müglich- + keit, ayn beliebige ausserige Gfäßfaudung auszfüern. + + 3. Als Beispil zipf :!ls <EIN> ; und schoon haast ayn Auflistung von deinn + Verzaichniss, netty wie wennst ganz gwon in n Eingib wärst. Geet ls + aus iewign aynn Grund nit, aft pröblt s mit :!dir <EIN> . + +Also non aynmaal: Mit dönn Angang kan ayn iede beliebige ausserige Faudung aus- + gfüert werdn, aau mit Auerwerdd. + +Und wolgmörkt: Allsand Befelh, wo mit : angeend, müessend mit <EIN> bstö- + tigt werdn. Dös dyrsagn myr vürbaß niemer. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.2: NON MEERER DRÜBER, WIE MYN DAUTTICHTN SCHREIBT + + + ** Um öbbs Gönderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM. ** + + 1. Zipf :!dir older :!ls , däßst dyr ayn Auflistung von deinn Verzaich- + niss ausherlaasst. Däßst dyrnaach <EIN> eingöbn muesst, waisst ee schoon. + + 2. Suech dyr aynn Dauttichtnam aus, dönn wo s non nit geit, öbbenn POCH. + + 3. Ietz demmlt: :w POCH (also mit POCH als dönn neuen Dauttichtnam). + + 4. Dös speichert ietz de gantze Dautticht, also önn Wimmschainer, unter dönn + Nam POCH. Dös kanst leicht überprüeffen, indem däßst ainfach :!ls older + :!dir zipfst und dyrmit deinn Verzaichnissinhalt seghst. + +Anmörkung: Stigst ietz aus n Wimm aus und gännst n aft wider mit vim POCH , + naacherd wär dö Dautticht ayn gnaune Aamum von n Schainer dyrselbn, + wiest n gspeichert haast. + + 5. Ietz verweitert dö Dautticht - fallsst s Fenstl haast - , mit :!del POCH + beziehungsweis bei aynn Ainslgebäu mit :!rm POCH . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN + +** Um aynn Tail von dyr Dautticht z speichern, zipf v [Wolend] :w DAUTTICHT ** + + 1. Ruck önn Mörkl auf netty dö Zeil daader. + + 2. Demmlt v und gee mit n Mörkl auf dönn fümftn Auflistungspunt untet. Du + seghst glei, däß s Gwort vürherghöbt erscheint. + + 3. Druck s Zaichen : . Ganz unt auf n Bildschirm erscheint :'<,'> . + + 4. Zipf w POCH , wobei s dönn Dauttichtnam POCH non nit geit. Vergwiß di, + däßst dös :'<,'>w POCH aau +seghst, ee wennst <EIN> druckst. + + 5. Dyr Wimm schreibt de ausgwaltn Zeil eyn de Dautticht POCH einhin. Benutz + :!dir older :!ls , däßst dös überprüeffst. Lösh s fein nit öbbenn! Mir + brauchend s nömlich für de naehste Letzn. + +Anmörkung: Druckt myn v , ginnt d Sichtisch-Auswal. Du kanst mit n Mörkl um- + aynandfarn, um d Auswal z veröndern. Drafter kan myn mit yn aynn + Pfemerer mit dönn Gwort öbbs machen. Zo n Beispil löscht d dös + Gwort. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 5.4: EINLÖSN UND ZAMMENFÜERN VON DAUTTICHTN + + + ** Um önn Inhalt von ayner Dautticht einzlösn, zipf :r DAUTTICHTNAM ** + + 1. Sötz önn Mörkl über dö Zeil daader. + +OBACHT: Aft däßst önn Schrit 2 ausgfüert haast, seghst auf aynmaal öbbs aus + dyr Letzn 5.3. Bewög di naacherd wider abwärts, dyrmitst dö Letzn wi- + derfinddst. + 2. Ietz lis dein Dautticht POCH ein, indem däßst d Faudung :r POCH aus- + füerst, wobei wie gsait POCH für dönn von dir ausgsuechtn Dauttichtnam + steet. De einglösne Dautticht werd unterhalb dyr Mörklzeil eingfüegt. + + 3. Um zo n Überprüeffen, ob de Dautticht aau gwiß einglösn ist, gee zrugg; + und du seghst, däß s ietz zwo Ausförtigungen von dyr Letzn 5.3. geit, s + Urniss und de eingfüegte Dauttichtfassung. + +Anmörkung: Du kanst aau d Ausgaab von aynn Ausserigbefelh einlösn. Zo n Bei- + spil list :r !ls d Ausgaab von dyr Faudung ls ein und füegt s + unterhalb n Mörkl ein. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 5 + + + 1. :!FAUDUNG füert aynn ausserignen Befelh aus. + + Daader ayn Öttlych gwänddte Beispiler: + (Fenstl) (Ainsl - Leinsl) + :!dir :!ls - listt s Verzaichniss auf. + :!del DAUTTICHT :!rm DAUTTICHT - verweitert sele Dautticht. + + 2. :w DAUTTICHT speichert de ietzunde Wimmdautticht unter dönn besagtn Nam. + + 3. v WOLEND :w DAUTTICHTNAM schreibt de sichtisch ausgwaltn Zeiln eyn de + Dautticht mit seln Nam. + + 4. :r DAUTTICHTNAM ladt sele Dautticht und füegt s unterhalb n Mörklbefand + ein. + + 5. :r !dir list d Ausgaab von dyr Faudung dir und füegt s unterhalb n + Mörklbefand ein. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.1: ZEIL ÖFFNEN (»open«) + + + ** Zipf o, um ayn Zeil unterhalb n Mörkl z öffnen und eyn d ** + ** Einfüegartweis z kemmen. ** + + 1. Bewög önn Mörkl zo dyr eerstn mit ---> angmörktn Zeil unt. + + 2. Zipf o (klain), um ayn Zeil UNTERHALB n Mörkl z öffnen und mit dyr Ein- + füegartweis weiterztuen. + + 3. Ietz zipf ayn Weeng ayn Gwort und druck <ESC>, um d Einfüegartweis z ver- + laassn. +---> Mit o werd dyr Mörkl auf de offene Zeil in dyr Einfüegartweis gsötzt. + + 4. Um ayn Zeil OBERHALB n Mörkl aufzmachen, gib ainfach aynn groosss O statt + yn aynn klainen ein. Versuech dös auf dyr untignen Zeil. + +---> Öffnet ayn Zeil über derer daader mit O , wenn dyr Mörkl auf derer Zeil + ist. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.2: GWORT ANFÜEGN (»append«) + + + ** Zipf a , um öbbs NAACH n Mörkl einzfüegn. ** + + 1. Bewög önn Mörkl gan n Anfang von dyr eerstn Üebungszeil mit ---> unt. + + 2. Druck e , hinst däß dyr Mörkl an n End von Zei steet. + + 3. Zipf ayn klains a , um öbbs NAACH n Mörkl anzfüegn. + + 4. Vergöntz dös Wort wie in dyr Zeil drunter. Druck <ESC>, um d Schreib-Art- + weis z verlaassn. + + 5. Bewög di mit e zo n naehstn ungantzn Wort und widerhol d Schritt 3 und + 4. + +---> Dö Ze biett ayn Glögn , ayn Gwort in ayner Zeil anzfü. +---> Dö Zeil biett ayn Glögnet, ayn Gwort in ayner Zeil anzfüegn. + +Anmörkung: a , i und A bringend ainn gleichermaaßn eyn d Einfüegartweis; + dyr ainzige Unterschaid ist, WO mit n Einfüegn angfangt werd. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.3: AYN ANDERNE WEIS ZO N ERSÖTZN (»replace«) + + + ** Demmlt ayn groosss R , um meerer als wie grad ain Zaichen z ersötzn. ** + + 1. Bewög önn Mörkl zo dyr eerstn untignen, mit ---> angmörktn Zeil. + Gee mit n Mörkl gan n Anfang von n eerstn xxx . + + 2. Ietz druck R und zipf sele Zal, wo drunter in dyr zwaittn Zeil steet, + yso däß de sel s xxx ersötzt. + + 3. Druck <ESC> , um d Ersötzungsartweis z verlaassn. Du gspannst, däß dyr + Rest von dyr Zeil unveröndert bleibt. + + 4. Äfert die Schritt, um dös überblibne xxx z ersötzn. + +---> S Zunddn von 123 zo xxx ergibt xxx. +---> S Zunddn von 123 zo 456 ergibt 579. + +Anmörkung: D Ersötzungsartweis ist wie d Einfüegartweis, aber ayn ieds eindem- + mlte Zaichen löscht ayn vorhanddns. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.4: GWORT AAMEN UND EINFÜEGN + + ** Benutz önn Pfemerer y , um öbbs z aamen, und p , um öbbs einzfüegn. ** + + 1. Gee zo dyr mit ---> angmörktn Zeil unt und sötz önn Mörkl hinter "a)". + + 2. Ginn d Sichtisch-Artweis mit v und bewög önn Mörkl gnaun vor "eerste". + + 3. Zipf y , um dönn vürherghöbtn Tail z aamen. + + 4. Bewög önn Mörkl gan n End von dyr naehstn Zeil: j$ + + 5. Demmlt p , um dös Gwort einzfüegn, und aft: a zwaitte <ESC> . + + 6. Benutz d Sichtischartweis, um " Eintrag." auszwaln, aam s pfelfs y, be- + wög di gan n End von dyr naehstn Zeil mit j$ und füeg s Gwort dortn mit + p an. + +---> a) dös ist dyr eerste Eintrag. + b) + +Anmörkung: Du kanst y aau als Pfemerer verwenddn; yw aamt ain Wort. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 6.5: SCHALTTER SÖTZN + +** Sötz aynn Schaltter yso, däß ayn Suech older Ersötzung Grooß- und Klain- ** + ** schreibung übergeet. ** + + 1. Suech um 'übergee", indem däßst /übergee eingibst. + Widerhol d Suech ayn Öttlych Maal, indem däßst de Tastn n druckst. + + 2. Sötz de Zwisl - önn Schaltter - 'ic' (»ignore case«), indem däßst :set ic + eingibst. + 3. Ietz suech wider um 'übergee' und tue aau wider mit n weiter. Daa fallt + dyr auf, däß ietz öbbenn aau Übergee und ÜBERGEE hergeet. + + 4. Sötz de Zwisln 'hlsearch' und 'incsearch' pfelfs: :set hls is + + 5. Widerhol d Suech und bobacht, was ietz gschieght: /übergee <EIN> + + 6. Däßst grooß und klain wider gwon unterscheidst, zipf: :set noic + +Anmörkung: Mechst de Tröffer niemer vürherghöbt seghn, gib ein: :nohlsearch +Anmörkung: Sollt klain/grooß bei ayner ainzignen Suech wurst sein, benutz \c + in n Suechausdruk: /übergee\c <EIN> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 6 + + 1. Zipf o , um ayn Zeil UNTERHALB n Mörkl z öffnen und d Einfüegartweis z + ginnen. + Zipf O , um ayn Zeil OBERHALB n Mörkl z öffnen. + + 2. Zipf a , um NAACH n Mörkl ayn Gwort einzfüegn. + Zipf A , um ayn Gwort naach n Zeilnend anzfüegn. + + 3. D Faudung e bringt di gan n End von aynn Wort. + + 4. Dyr Pfemerer y (»yank«) aamt öbbs, p (»put«) füegt dös ein. + + 5. Ayn groosss R geet eyn d Ersötzungsartweis, hinst däß myn <ESC> druckt. + + 6. D Eingaab von ":set xxx" sötzt de Zwisl "xxx". Ayn Öttlych Zwisln seind: + 'ic' 'ignorecase' Grooß/klain wurst bei ayner Suech + 'is' 'incsearch' Zaig aau schoon ayn Tailüberainstimmung + 'hls' 'hlsearch' Höb allsand pässetn Ausdrück vürher + Dyr Schaltternam kan in dyr Kurz- older Langform angöbn werdn. + + 7. Stöll yn ayner Zwisl "no" voran, däßst ys abschalttst: :set noic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 7.1: AYN HILFGWORT AUFRUEFFEN + + + ** Nutz dös einbaute Hilfgebäu, de "Betribsanlaittung" ** + + Eyn n Wimm ist ayn ausfüerliche "Gebrauchsanweisung" einbaut. Für s Eerste + pröblt ainfach ains von dene dreu aus: + - Druck d <HILF>-Tastn, wennst öbbenn aine haast. + - Druck de Tastn <F1>, fallsst ys haast. + - Zipf :help <EIN> + + Lis di eyn s Hilffenster ein, dyrmitst draufkimmst, wie dös mit dyr Hilf geet. + Demmlt <STRG>w w , um von ainn Fenster zo n andern zo n Springen. + Demmlt :q <EIN> , um s Hilffenster zo n Schliessn. + + Du kanst zo so guet wie allssand ayn Hilf finddn, indem däßst yn dyr Faudung + :help aynn Auerwerd naachstöllst und istig <EIN> nit vergisst. Pröblt dös: + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 7.2: ERSTÖLL AYN GIN-SCHRIPF + + + ** Mutz önn Wimm mit de einbautn Faehigkeitn auf ** + + Dyr Wimm besitzt ayn Wösn Schäftungen, wo über n Urwimm aushingeend, aber de + meerern dyrvon seind in dyr Vorgaab ausgschaltt. Dyrmitst meerer aus n Wimm + ausherholst, erstöllst ayn "vimrc"-Dautticht. + + 1. Lög ayn "vimrc"-Dautticht an; dös geet ie naach Betribsgebäu verschidn: + :e ~/.vimrc für s Ainsl + :e $VIM/_vimrc bei n Fenstl + + 2. Ietz lis önn Inhalt von dyr Beispil-"vimrc"-Dautticht ein: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Speichert de Dautticht mit: + :w + + 4. Bei n naehstn Gin von n Wimm ist aft d Füegnussvürherhöbung zuegschaltt. + Du kanst dyr allss eyn dö Dautticht einhinschreibn, wasst bständig habn + willst. Meerer dyrzue erfarst unter: :help vimrc-intro +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Letzn 7.3: VERGÖNTZN + + + ** Befelhszeilnvergöntzung mit <STRG>d und <TAB> ** + + 1. Vergwiß di, däß dyr Wimm nit auf n Urwimm-"Glais" fart: :set nocp + + 2. Schaug naach, wölcherne Dauttichtn däß s in n Verzaichniss geit: :!ls + older :!dir + 3. Zipf önn Anfang von ayner Faudung: :e + + 4. Druck <STRG>d , und dyr Wimm zaigt ayn Listn von Faudungen, wo mit "e" + angeend. + 5. Druck <TAB> , und dyr Wimm vervollstöndigt önn Faudungsnam zo ":edit". + + 6. Füeg ayn Laerzaichen und önn Anfang von ayner besteehetn Dautticht an: + :edit DAU + + 7. Druck <TAB>. Dyr Wimm vergöntzt önn Nam, dös haisst, wenn yr aindeuttig + ist. +Anmörkung: D Vergöntzung geit s für aynn Hauffen Faudungen. Versuech ainfach + <STRG>d und <TAB>. Bsunders nützlich ist dös bei :help . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ZAMMENFASSUNG VON DYR LETZN 7 + + + 1. Zipf :help older druck <F1> older <HILF>, um ayn Hilffenster z öffnen. + + 2. Zipf :help FAUDUNG , um auf ayn Hilf gan aynn Befelh z kemmen. + + 3. Zipf <STRG>w w , um zo n andern Fenster z springen. + + 4. Zipf :q , um s Hilffenster z schliessn. + + 5. Erstöll ayn vimrc-Ginschripf zuer Sicherung von deine Mötzneinstöllungen. + + 6. Druck <STRG>d, aft däßst naach : mit ayner Faudung angfangt haast, dyr- + mitst mügliche Vergöntzungen anzaigt kriegst. + Druck <TAB> für ain Vervollstöndigung yllain. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Dös wär ietzet s End von n Wimmschainer. Gangen ist s daa drum, aynn kurtzn + und bündignen Überblik über s Blat WIMM z lifern, netty vil gnueg, däß myn + für s Eerste wirklich öbbs dyrmit anfangen kan. Dyrmit ist s aber auf kain + Weitn non nit taan; dyr Wimm haat schoon non vil meerer auf Lager. Lis als + Naehsts aynmaal s Benutzerhandbuech: :help user-manual . + + Zo n Weiterlösn und Weiterlernen wör dös Buech daader zo n Empfelhen: + Vim - Vi Improved - von n OUALLINE Steve + Verlaag: New Riders + Dös ist dös eerste Buech, wo ganz yn n Wimm gwidmt ist, netty dös Grechte für + Anfönger. Es haat ayn Wösn Beispiler und aau Bilder drinn. + See http://iccf-holland.org/click5.html + + Dös folgete Buech ist schoon ölter und meerer über n Urwimm als wie über n + Wimm, aber aau zo n Empfelhen: Textbearbeitung mit dem vi-Editor - von dyr + LAMB Linda und n ROBBINS Arnold - Verlaag O'Reilly - Buechlaittzal (ISBN): + 3897211262 + In dönn Buech kan myn fast allss finddn, was myn mit n Urwimm angeen mecht. + De söxte Ausgaab enthaltt aau schoon öbbs über n Wimm. + Als ietzunde Bezugniss für d Fassung 6.2 und ayn pfrenge Einfüerung dient + dös folgete Buech: + vim ge-packt von n WOBST Reinhard + mitp-Verlaag, Buechlaittzal 3-8266-1425-9 + Trotz dyr recht pfrengen Darstöllung ist s durch seine viln nützlichnen Bei- + spiler aau für Einsteiger grad grecht. Probhaeupster und de Beispilschripfer + seind zesig zo n Kriegn; see http://iccf-holland.org/click5.html + + Verfasst habnd dönn Schainer dyr PIERCE Michael C. und WARE Robert K. von dyr + Kolraader Knappnschuel (Colorado School of Mines). Er beruet auf Entwürff, wo + dyr SMITH Charles von dyr Kolraader Allschuel (Colorado State University) + zuer Verfüegung gstöllt haat. Gundpost: bware@mines.colorado.edu. + Für n Wimm haat n dyr MOOLENAAR Bram barechtt. + De bairische Übersötzung stammt von n HELL Sepp 2009. Sein Gundpostbrächt ist + sturmibund@t-online.de + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + + + +
new file mode 100644 --- /dev/null +++ b/runtime/tutor/tutor.eo @@ -0,0 +1,989 @@ +============================================================================== += B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7.eo.2 = +============================================================================== + + Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili + por ion klarigi en instruilo kiel i tiu. i tiu instruilo estas + fasonita por priskribi sufiajn komandojn, por ke vi kapablu uzi Vim + kun sufia facileco. + + La tempo bezonata por plenumi la kurson estas 25-30 minutoj, kaj dependas + de kiom da tempo estas uzata por eksperimenti. + + ATENTU: + La komandoj en la lecionoj anos la tekston. Kopiu tiun i dosieron + por ekzerci vin (se vi lanis "vimtutor", tiam estas jam kopio). + + Gravas memori, ke i tiu instruilo estas organizata por instrui per + la uzo. Tio signifas, ke vi devas plenumi la komandojn por bone lerni + ilin. Se vi nur legas la tekston, vi forgesos la komandojn! + + Nun, certigu, ke la majuskla baskulo NE estas en reimo majuskla, + kaj premu la klavon j sufie da fojoj por movi la kursoron, kaj por + ke la leciono 1.1 plenigu la ekranon. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.1: MOVI LA KURSORON + + + ** Por movi la kursoron, premu la h,j,k,l klavojn kiel montrite. ** + ^ + k Konsilo: La klavo h estas la plej liva kaj movas liven. + < h l > La klavo l estas la plej dekstra kaj movas dekstren. + j La klavo j aspektas kiel malsuprena sago. + v + 1. Movu la kursoron sur la ekrano is kiam vi sentas vin komforta. + + 2. Premu la klavon (j) is kiam i ripetas. + Vi nun scias, kiel movii al la sekvanta leciono + + 3. Uzante la malsuprenan klavon, moviu al la leciono 1.2. + +RIMARKO: Se vi dubas pri tio, kion vi premis, premu <ESK> por reiri al + la normala reimo. Tiam repremu la deziratan komandon. + +RIMARKO: La klavoj de la kursoro devus anka funkcii. Sed uzante hjkl, + vi kapablos movii pli rapide post kiam vi kutimios. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.2: ELIRI EL VIM + + + !! RIMARKO: Anta ol plenumi iujn subajn paojn ajn, legu la tutan lecionon!! + + 1. Premu la klavon <ESK> (por certigi, ke vi estas en normala reimo). + + 2. Tajpu: :q! <Enenklavo>. + Tio eliras el la rekdaktilo, SEN konservi la anojn, kiujn vi faris. + + 3. Kiam vi vidas la elinviton, tajpu la komandon kiun vi uzis por eniri + en i tiu instruilo. Tio estus: vimtutor <Enenklavo> + + 4. Se vi memoris tiujn paojn kaj sentas vin memfida, plenumu la paojn + 1 is 3 por eliri kaj reeniri la redaktilon. + +RIMARKO: :q! <Enenklavo> eliras sen konservi la anojn, kiujn vi faris. + Post kelkaj lecionoj, vi lernos kiel konservi la anojn al dosiero. + + 5. Movu la kursoron suben is la leciono 1.3. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.3: REDAKTO DE TEKSTO - FORVIO + + + ** Premu x por forvii la signon sub la kursoro. ** + + 1. Movu la kursoron al la suba linio markita per --->. + + 2. Por korekti la erarojn, movu la kursoron is kiam i estas sur la + forvienda signo. + + 3. Premu la klavon x por forvii la nedeziratan signon. + + 4. Ripetu paojn 2 is 4 is kiam la frazo estas usta. + + +---> La boovinno saaltiss ssur laa luuno. + + 5. Post kiam la linio estas usta, iru al la leciono 1.4 + +RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.4: REDAKTO DE TEKSTO - ENMETO + + + ** Premu i por enmeti tekston. ** + + 1. Movu la kursoron al la unua suba linio markita per --->. + + 2. Por igi la unuan linion sama kiel la dua, movu la kursoron sur la unuan + signon post kie la teksto estas enmetenda. + + 3. Premu i kaj tajpu la bezonatajn aldonojn. + + 4. Premu <ESK> kiam la eraroj estas korektitaj por reiri al la normala + reimo. Ripetu la paojn 2 is 4 por korekti la frazon. + +---> Mank en i linio. +---> Mankas tekston en i tiu linio. + + 5. Kiam vi sentas vin komforta pri enmeto de teksto, moviu al la + leciono 1.5. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.5: REDAKTO DE TEKSTO - POSTALDONO + + + ** Premu A por postaldoni tekston. ** + + 1. Movu la kursoron al la unua suba linio markita per --->. + Ne gravas sur kiu signo estas la kursoro. + + 2. Premu majusklan A kaj tajpu la bezonatajn aldonojn. + + 3. Post kiam la teksto estas aldonita, premu <ESK> por reiri al la normala + reimo. + + 4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la + paojn 2 kaj 3 por korekti la frazon. + +---> Mankas teksto el ti + Mankas teksto el tiu linio. +---> Mankas anka teks + Mankas anka teksto i tie. + + 5 Kiam vi sentas vin komforta pri postaldono de teksto, moviu al la + leciono 1.6 + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1.6: REDAKTI DOSIERON + + ** Uzu :wq por konservi dosieron kaj eliri. ** + + !! RIMARKO: Anta ol plenumi iun suban paon ajn, legu la tutan lecionon!! + + 1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q! + + 2. e la elinvito, tajpu i tiun komandon: vim tutor <Enenklavo> + 'vim' estas la komando por lani la redaktilon Vim, 'tutor' estas la + dosiernomo de la dosiero, kiun vi volas redakti. Uzu dosieron, kiu + aneblas. + + 3. Enmetu kaj forviu tekston, kiel vi lernis en la antaaj lecionoj. + + 4. Konservu la dosieron kun anoj kaj eliru el Vim per: :wq <Enenklavo> + + 5. Relanu la instruilon vimtutor kaj moviu suben al la sekvanta resumo. + + 6. Post kiam vi legis la suprajn paojn, kaj komprenis ilin: faru ilin. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 1 RESUMO + + + 1. La kursoro movias a per la sagoklavoj, a per la klavoj hjkl. + h (liven) j (suben) k (supren) l (dekstren) + + 2. Por lani Vim el la elinvito, tajpu: vim DOSIERNOMO <Enenklavo> + + 3. Por eliri el Vim, tajpu: <ESK> :q! <Enenklavo> por rezigni la anojn + + 4. Por forvii la signojn e la pozicio de la kursoro, tajpu: x + + 5. Por enmeti a postaldoni tekston, tajpu: + i tajpu enmetendan tekston <ESK> + enmetas tekston anta la kursoro + + A tajpu la postaldonendan tekston <ESK> + postaldonas post la kursoro + +RIMARKO: Premo de <ESK> iras al la normala reimo, a rezignas la + nedeziratan a parte plenumita komando. + +Nun darigu al la leciono 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.1: KOMANDOJ DE FORVIO + + + ** Tajpu dw por forvii vorton. ** + + 1. Premu <ESK> por certigi, ke vi estas en normala reimo. + + 2. Movu la kursoron al la linio markita per --->. + + 3. Movu la kursoron al la komenco de vorto, kiu forviendas. + + 4. Tajpu dw por forvii la vorton. + + RIMARKO: La litero d aperos en la lasta linio sur la ekrano kiam vi + tajpas in. Vim atendas is kiam vi tajpas w . Se vi vidas + alian signon ol d vi tajpis ion mise; premu <ESK> kaj + rekomencu. + +---> Estas iuj vortoj kiuj Zamenhof ne devus esti akuzativo en i tiu frazo. + + 5. Ripetu paojn 3 kaj 4 is kiam la frazo estas usta kaj moviu al la + leciono 2.2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.2: PLIAJ KOMANDOJ DE FORVIO + + + ** Tajpu d$ por forvii la finon de la linio. ** + + 1. Premu <ESK> por certigi, ke vi estas en normala reimo. + + 2. Movu la kursoron sur la suban linion markita per --->. + + 3. Movu la kursoron e la fino de la usta linio (POST la unua . ). + + 4. Tajpu d$ por forivi is la fino de la linio. + +---> Iu tajpis la finon de i tiu linio dufoje. fino de i tiu linio dufoje. + + + 5. Moviu al la leciono 2.3 por kompreni kio okazas. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.3: PRI OPERATOROJ KAJ MOVOJ + + + Multaj komandoj, kiuj anas la tekston, estas faritaj de operatoro kaj + movo. La formato de komando de forvio per la operatoro de forvio d + estas kiel sekvas: + + d movo + + Kie: + d - estas la operatoro de movo + movo - estas tio, pri kio la operatoro operacios (listigita sube) + + Mallonga listo de movoj: + w - is la komenco de la sekvanta vorto, krom ia unua signo. + e - is la fino de la nuna vorto, krom la lasta signo. + $ - is la fino de la linio, krom la lasta signo. + + Do tajpo de 'de' forvios ekde la kursoro is la fino de la vorto. + +RIMARKO: Premo de nur la movo en Normala reimo sen operatoro movos + la kursoron kiel specifite. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.4: UZI NOMBRON POR MOVO + + ** Tajpo de nombro anta movo ripetas in lafoje. ** + + 1. Movu la kursoron e la komenco de la suba linio markita per --->. + + 2. Tajpu 2w por movi la kursoron je du vortoj antaen. + + 3. Tajpu 3e por movi la kursoron e la fino de la tria vorto antaen. + + 4. Tajpu 0 (nul) por movii e la komenco de la linio. + + + 5. Ripetu paojn 2 is 3 kun malsamaj nombroj. + +---> Tio estas nur linio kun vortoj, kie vi povas movii. + + 6. Moviu al la leciono 2.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.5: UZI NOMBRON POR FORVII PLI + + + ** Tajpo de nombro kun operatoro ripetas in lafoje. ** + + En la kombinao de la operatoro de forvio, kaj movo kiel menciita + i-supre, eblas aldoni nombron anta la movo por pli forvii: + d nombro movo + + 1. Movu la kursoron e la unua MAJUSKLA vorto en la linio markita per --->. + + 2. Tajpu d2w por forvii la du MAJUSKLAJN vortojn + + 3. Ripetu paojn 1 is 2 per malsama nombro por forvii la sinsekvajn + MAJUSKLAJN vortojn per unu komando + +---> Tiu AB CDE linio FGHI JK LMN OP de vortoj estas Q RS TUV purigita. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.6: OPERACII SUR LINIOJ + + + ** Tajpu dd por forvii tutan linion. ** + + Pro la ofteco de forvio de tuta linio, la verkisto de Vi decidis, ke + estus pli facile simple tajpi du d-ojn por forvii linion. + + 1. Movu la kursoron sur la duan linion en la suba frazo. + 2. Tajpu dd por forvii la linion. + 3. Nun moviu al la kvara linio. + 4. Tajpu 2dd por forvii du liniojn. + +---> 1) Rozoj estas ruaj, +---> 2) limo estas amuza, +---> 3) Violoj estas bluaj, +---> 4) Mi havas aton, +---> 5) Horlooj diras kioma horo estas, +---> 6) Sukero estas dola, +---> 7) Kaj tiel vi estas. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2.7: LA KOMANDO DE MALFARO + + + ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. ** + + 1. Movu la kursoron e la suba linio markita per ---> kaj metu in sur + la unuan eraron. + 2. Tajpu x por forvii la unuan nedeziratan signon. + 3. Nun tajpu u por malfari la lastan plenumitan komandon. + 4. i-foje, riparu iujn erarojn en la linio kaj ia originala stato. + 5. Nun tajpu majusklan U por igi la linion al ia antaa stato. + 6. Nun tajpu u kelkfoje por malfari la U kaj antaajn komandojn. + 7. Nun tajpu CTRL-R (premante la CTRL klavon dum vi premas R) kelkfoje + por refari la komandojn (malfari la malfarojn). + +---> Koorektii la erarojn sur tiuu i liniio kaj remettu illlin per malfaro. + + 8. Tiuj estas tre utilaj komandoj. Nun moviu al la leciono 2 RESUMO. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 2 RESUMO + + + 1. Por forvii ekde la kursoro is la sekvanta vorto, tajpu: dw + 2. Por forvii ekde la kursoro is la fino de la linio, tajpu: d$ + 3. Por forvii tutan linion, tajpu: dd + + 4. Por ripeti movon, antametu nombron: 2w + 5. La formato de ana komando estas: + operatoro [nombro] movo + + kie: + operatoro - estas tio, kio farendas, kiel d por forvii + [nombro] - estas opcia nombro por ripeti la movon + movo - movas sur la teksto por operacii, kiel ekzemple w (vorto), + $ (is fino de linio), ktp. + + 6. Por movii al la komenco de la linio, uzu nul: 0 + + 7. Por malfari antaajn agojn, tajpu: u (minuskla u) + Por malfari iujn anojn sur la linio, tajpu: U (majuskla U) + Por refari la malfarojn, tajpu: CTRL-R + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3.1 LA KOMANDO DE METO + + + ** Tajpu p por meti tekston forviitan antae post la kursoro. ** + + 1. Movu la kursoron e la unua ---> suba linio. + + 2. Tajpu dd por forvii la linion kaj konservi in ene de reistro de Vim. + + 3. Movu la kursoron e la linio c), SUPER kie la forviita linio devus esti. + + 4. Tajpu p por meti la linion sub la kursoron. + + 5. Ripetu la paojn 2 is 4 por meti iujn liniojn en la usta ordo. + +---> d) u anka vi povas lerni? +---> b) Violoj estas bluaj, +---> c) Inteligenteco lerneblas, +---> a) Rozoj estas ruaj, + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3.2 LA KOMANDO DE ANSTATAIGO + + + ** Tajpu rx por anstataigi la signon e la kursoro per x . ** + + + 1. Movu la kursoron e la unua suba linio markita per --->. + + 2. Movu la kursoron is la unua eraro. + + 3. Tajpu r kaj la signon, kiu devus esti tie. + + 4. Ripetu paojn 2 kaj 3 is kiam la unua linio egalas la duan. + +---> Kiem tiu lanio estis tajpita, iu pramis la nauftajn klovojn! +---> Kiam tiu linio estis tajpita, iu premis la neustajn klavojn! + + 5. Nun moviu al la leciono 3.3. + +Rimarko: Memoru, ke vi devus lerni per uzo, kaj ne per memorado. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3.3 LA OPERATORO DE ANO + + + ** Por ani is la fino de la vorto, tajpu ce . ** + + 1. Movu la kursoron e la unua suba linio markita per --->. + + 2. Metu la kursoron sur la d en lduzw + + 3. Tajpu ce kaj la ustan vorton (en tiu i kazo, tajpu inio ). + + 4. Premu <ESK> kaj moviu al la sekvanta signo, kiu bezonas anon. + + 5. Ripetu la paojn 3 kaj 4 is kiam la unua frazo egalas la duan. + +---> Tiu lduzw havas kelkajn vortojn, kiii bezas anon per la anooto. +---> Tiu linio havas kelkajn vortojn, kiuj bezonas anon per la anoperatoro. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3.4 PLIAJ ANOJ PER c + + + ** La operatoro de ano uzeblas kun la sama movo kiel forvio. ** + + 1. La operatoro de ano funkcias sammaniere kiel forvio. La formato estas: + + c [nombro] movo + + 2. La movoj estas samaj, kiel ekzemple w (vorto) kaj $ (fino de linio). + + 3. Moviu e la unua suba linio markita per --->. + + 4. Movu la kursoron al la unua eraro. + + 5. Tajpu c$ kaj tajpu la reston de la linio kiel la dua kaj premu <ESK>. + +---> La fino de i tiu linio bezonas helpon por igi in same kiel la dua. +---> La fino de i tiu linio bezonas korektojn per uzo de la komando c$ + +RIMARKO: Vi povas uzi la klavon Retropao por korekti erarojn dum vi tajpas. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 3 RESUMO + + + 1. Por remeti tekston, kiun vi us forviis, tajpu p. Tio metas la + forviitan tekston POST la kursoro (se linio estis forviita, i + iros en la linion sub la kursoro). + + 2. Por anstataigi la signon sub la kursoro, tajpu r kaj tiam la signon + kion vi deziras havi tie. + + 3. La operatoro de ano ebligas al vi ani ekde la kursoro, is kie + la movo iras. Ekz. tajpu ce por ani ekde la kursoro is la fino + de la vorto, c$ por ani is la fino de la linio. + + 4. La formato de ano estas: + + c [nombro] movo + +Nun darigu al la sekvanta leciono. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO + + + ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton. + Tajpu G por movii al linio en la dosiero. ** + + RIMARKO: Legu la tutan lecionon anta ol plenumi iun paon ajn!! + + 1. Premu la klavon Ctrl kaj premu g . Oni nomas tion CTRL-G. + Mesao aperos e la suba parto de la pao kun la dosiernomo kaj la + pozicio en la dosiero. Memoru la numeron de la linio por pao 3. + + RIMARKO: Vi eble vidas la pozicion de la kursoro e la suba dekstra + angulo de la ekrano. Tio okazas kiam la agordo 'ruler' estas + altita (vidu :help 'ruler') + + 2. Premu G por movii e la subo de la dosiero. + Tajpu gg por movii e la komenco de la dosiero. + + 3. Tajpu la numeron de la linio kie vi estis kaj poste G . Tio removos + vin al la linio, kie vi estis kiam vi unue premis CTRL-G. + + 4. Se vi sentas vin komforta, plenumu paojn 1 is 3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4.2 LA KOMANDO DE SERO + + + ** Tajpu / kaj poste frazon por seri la frazon. ** + + 1. En normala reimo, tajpu la / signon. Rimarku, ke i kaj la kursoro + aperas e la suba parto de la ekrano kiel por la : komando. + + 2. Nun tajpu 'errarro' <Enenklavo>. + Tio estas la vorto, kion vi volas seri. + + 3. Por seri la saman frazon denove, simple tajpu n . + Por seri la saman frazon denove en la retrodirekto, tajpu N . + + 4. Por seri frazon en la retrodirekto, uzu ? anstata / . + + 5. Por reiri tien, el kie vi venis, premu CTRL-O (Premu Ctrl kaj o + literon o). Ripetu por pli retroiri. CTRL-I iras antaen. + +---> "errarro" ne estas maniero por literumi eraro; errarro estas eraro. + +RIMARKO: Kiam la sero atingas la finon de la dosiero, i daras e la + komenco, krom se la agordo 'wrapscan' estas malaltita. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4.3 SERO DE KONGRUAJ KRAMPOJ + + + ** Tajpu % por trovi kongruan ), ] a } ** + + 1. Poziciu la kursoron sur iun (, [ a { en la linio markita per --->. + + 2. Nun tajpu la % signon. + + 3. La kursoro movias al la kongrua krampo. + + 4. Tajpu % por movi la kursoron al la alia kongrua krampo. + + 5. Movu la kursoron al la alia (, ), [, ], {, } kaj observu tion, + kion % faras. + +---> i tiu ( estas testa linio kun (-oj, [-oj, ]-oj kaj {-oj, }-oj en i. )) + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4.4 LA KOMANDO DE ANSTATAIGO + + + ** Tajpu :s/malnova/nova/g por anstataigi 'nova' per 'malnova'. ** + + 1. Movu la kursoron al la suba linio markita per --->. + + 2. Tajpu :s/laa/la <Enenklavo> . Rimarku, ke la komando anas nur la + unuan okazaon de "laa" en la linio. + + 3. Nun tajpu :s/laa/la/g . Aldono de g opcio signifas mallokan + anstataigon en la linio. i anas iujn okazaojn de "laa" en la + linio. + +---> laa plej bona tempo por vidi florojn estas en laa printempo. + + 4. Por ani iujn okazaojn de iu ena signo inter du linioj, + tajpu :#,#s/malnova/nova/g kie #,# estas la numeroj de linioj de la + intervalo de la linioj kie la anstataigo + okazos. + Tajpu :%s/malnova/nova/g por ani iujn okazaojn en la tuta + dosiero. + Tajpu :s/malnova/nova/gc por trovi iujn okazaojn en la tuta + dosiero, kun invitilo u anstataigi + a ne. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 4 RESUMO + + 1. CTRL-G vidigas vian pozicion en la dosiero kaj la staton de la dosiero. + G movas la kursoron al la fino de la dosiero. + numero G movas la kursoron al numero de tiu linio. + gg movas la kursoron al la unua linio. + + 2. Tajpo de / kaj frazon seras la frazon antaen. + Tajpo de ? kaj frazon seras la frazon malantaen. + Post sero, tajpu n por trovi la sekvantan okazaon en la sama direkto a + N por seri en la mala direkto. + CTRL-O movas vin al la antaaj pozicioj, CTRL-I al la novaj pozicioj. + + 3. Tajpo de % kiam la kursoro estas sur (,),[,],{ a } movias al ia + kongruo. + + 4. Por anstataigi 'nova' en la unua 'malnova' en linio :s/malnova/nova + Por anstataigi 'nova' en iuj 'malnova'-oj en linio :s/malnova/nova/g + Por anstataigi frazon inter du #-aj linioj :#,#s/malnova/nova/g + Por anstataigi iujn okazaojn en la dosiero :%s/malnova/nova/g + Por demandi konfirmon iu-foje, aldonu 'c' :%s/malnova/nova/gc + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON + + + ** Tajpu :! sekvata de ekstera komando por plenumi la komandon. ** + + 1. Tajpu la konatan komandon : por pozicii la kursoron e la suba parto + de la ekrano. Tio ebligas tajpadon de komando en komanda linio. + + 2. Nun tajpu la ! (krisigno) signon. Tio ebligas al vi plenumi iun + eksteran elan komandon ajn. + + 3. Ekzemple, tajpu ls post ! kaj tajpu <Enenklavo>. Tio listigos la + enhavon de la dosierujo, same kiel se vi estis en ela invito. + A uzu :!dir se ls ne funkcias. + +RIMARKO: Eblas plenumi iun eksteran komandon ajn tiamaniere, anka kun + argumentoj. + +RIMARKO: iuj : komandoj devas finii per tajpo de <Enenklavo> + Ekde nun, ni ne plu mencios tion. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5.2 PLI PRI KONSERVO DE DOSIERO + + + ** Por konservi la faritajn anojn en la teksto, tajpu :w DOSIERNOMO. ** + + 1. Tajpu !dir a !ls por akiri liston de via dosierujo. + Vi jam scias, ke vi devas tajpi <Enenklavo> post tio. + + 2. Elektu dosieron, kiu ne jam ekzistas, kiel ekzemple TESTO. + + 3. Nun tajpu: :w TESTO (kie TESTO estas la elektita dosiernomo) + + 4. Tio konservas la tutan dosieron (instruilon de Vim) kun la nomo TESTO. + Por kontroli tion, tajpu :!dir a !ls denove por vidigi vian + dosierujon. + +RIMARKO: Se vi volus eliri el Vim kaj restartigi in denove per vim TESTO, + la dosiero estus precize same kiel kopio de la instruilo kiam vi + konservis in. + + 5. Nun forviu la dosieron tajpante (MS-DOS): :!del TESTO + a (UNIKSO): :!rm TESTO + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5.3 APARTIGI KONSERVENDAN TESTON + + + ** Por konservi parton de la dosiero, tajpu v movo :w DOSIERNOMO ** + + 1. Movu la kursoron al tiu linio. + + 2. Premu v kaj movu la kursoron al la kvina suba ero. Rimarku, ke la + teksto emfazias. + + 3. Premu la : signon. e la fino de la ekrano :'<,'> aperos. + + 4. Tajpu w TESTO , kie TESTO estas dosiernomo, kiu ne jam ekzistas. + Kontrolu, ke vi vidas :'<,'>w TESTO anta premi <Enenklavo>. + + 5. Vim konservos la apartigitajn liniojn al la dosiero TESTO. Uzu :dir + a :!ls por vidigi in. Ne forviu in. Ni uzos in en la sekvanta + leciono. + +RIMARKO: Premo de v komencas Viduman apartigon. Vi povas movi la kursoron + por pligrandigi a malpligrandigi la apartigon. Tiam vi povas uzi + operatoron por plenumi ion kun la teksto. Ekzemple, d forvias + la tekston. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5.4 AKIRI KAJ KUNFANDI DOSIEROJN + + + ** Por enmeti la enhavon de dosiero, tajpu :r DOSIERNOMON ** + + 1. Movu la kursoron us super i tiu linio. + +RIMARKO: Post plenumo de pao 2, vi vidos tekston el la leciono 5.3. Tiam + moviu SUBEN por vidi tiun lecionon denove. + + 2. Nun akiru vian dosieron TESTO uzante la komandon :r TESTO kie TESTO + estas la nomo de la dosiero, kiun vi uzis. + La dosiero, kion vi akiras, estas metita sub la linio de la kursoro. + + 3. Por kontroli, u la dosiero akiriis, retromovu la kursoron kaj rimarku, + ke estas nun du kopioj de la leciono 5.3, la originala kaj la versio mem + de la dosiero. + +RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, + :r !ls legas la eliron de la komando ls kaj metas in sub la + kursoron. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 5 RESUMO + + + 1. :!komando plenumas eksteran komandon. + + Iuj utilaj ekzemploj estas: + (MS-DOS) (UNIKSO) + :!dir :!ls - listigas dosierujon + :!del DOSIERNOMO :!rm DOSIERNOMO - forvias la dosieron DOSIERNOMO + + 2. :w DOSIERNOMO konservas la nunan dosieron de Vim al disko kun la + nomo DOSIERNOMO. + + 3. v movo :w DOSIERNOMO konservas la Viduman apartigon de linioj en + dosiero DOSIERNOMO. + + 4. :r DOSIERNOMO akiras la dosieron DOSIERNOMO el la disko kaj metas + in sub la pozicion de la kursoro. + + 5. :r !dir legas la eligon de la komando dir kaj metas in sub la + pozicion de la kursoro. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.1 LA KOMANDO DE MALFERMO + + + ** Tajpu o por malfermi linion sub la kursoro kaj eniri Enmetan reimon. ** + + 1. Movu la kursoron al la suba linio markita per --->. + + 2. Tajpu la minusklan literon o por malfermi linion SUB la kursoro kaj + eniri la Enmetan reimon. + + 3. Nun tajpu tekston kaj premu <ESK> por eliri la Enmetan reimon. + +---> Post tajpo de o la kursoro movias al la malfermata linio en + Enmeta reimo. + + 4. Por malfermi linion SUPER la kursoro, nur tajpu majusklan O , + anstata minusklan o. Provu tion per la suba linio. + +---> Malfermu linion SUPER tiu tajpante O dum la kursoro estas sur tiu linio. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.2 LA KOMANDO DE POSTALDONO + + + ** Tajpu a por enmeti POST la kursoro. ** + + 1. Movu la kursoron e la komenco de la linio markita per --->. + + 2. Premu e is kiam la kursoro estas e la fino de li. + + 3. Tajpu a (minuskle) por aldoni tekston POST la kursoro. + + 4. Kompletigu la vorton same kiel la linio sub i. Premu <ESK> por + eliri la Enmetan reimon. + + 5. Uzu e por movii al la sekvanta nekompleta vorto kaj ripetu + paojn 3 kaj 4. + +---> i tiu lin ebligos vin ekz vin postal tekston al linio. +---> i tiu linio ebligos vin ekzerci vin postaldoni tekston al linio. + +RIMARKO: iu a, i kaj A iras al la sama Enmeta reimo, la nura malsamo + estas tie, kie la signoj estas enmetitaj. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.3 ALIA MANIERO POR ANSTATAIGI + + + ** Tajpu majusklan R por anstataigi pli ol unu signo. ** + + 1. Movu la kursoron al la unua suba linio markita per --->. Movu la + kursoron al la komenco de la unua xxx . + + 2. Nun premu R kaj tajpu la nombron sub i en la dua linio, por ke i + anstataigu la xxx . + + 3. Premu <ESK> por foriri la Anstataigan reimon. Rimarku, ke la cetera + parto de la linio restas neanata. + + 4. Ripetu la paojn por anstataigi la restantajn xxx. + +---> Aldono de 123 al xxx donas al vi xxx. +---> Aldono de 123 al 456 donas al vi 579. + +RIMARKO: Anstataiga reimo estas same kiel Enmeta reimo, sed iu signo + tajpita forvias ekzistan signon. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.4 KOPII KAJ ALGLUI TEKSTON + + + ** Uzu la y operatoron por kopii tekston, kaj p por alglui in ** + + + 1. Iru al la linio markita per ---> sube kaj poziciu la kursoron post "a)". + + 2. Komencu la Viduman reimon per v kaj movu la kursoron us anta "unua". + + 3. Tajpu y por kopii la emfazitan tekston. + + 4. Movu la kursoron e la fino de la linio: j$ + + 5. Tajpu p por alglui la tekston. Tiam tajpu: a dua <ESK> . + + 6. Uzu Viduman reimon por apartigi " ero.", kopiu in per y , moviu + e la fino de la sekvanta linio per j$ kaj algluu la tekston tie + per p . + +---> a) tio estas la unua ero. + b) + +RIMARKO: vi povas anka uzi y kiel operatoro; yw kopias unu vorton. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6.5 AGORDI OPCION + + + ** Agordu opcion por ke sero a anstataigo ignoru usklecon ** + + 1. Seru 'ignori' per tajpo de /ignori <Enenklavo> + Ripetu plurfoje premante n . + + 2. altu la opcion 'ic' (ignori usklecon) per: :set ic + + 3. Nun seru 'ignori' denove premante n + Rimarku, ke Ignori kaj IGNORI estas nun troveblas. + + 4. altu la opciojn 'hlsearch' kaj 'incsearch': :set hls is + + 5. Nun retajpu la seran komandon kaj vidu kio okazas: /ignore <Enenklavo> + + 6. Por malalti ignoron de uskleco: :set noic + +RIMARKO: Por forigi emfazon de kongruo, tajpu: :nohlsearch +RIMARKO: Se vi deziras ignori usklecon por nur unu sera komando, uzu \c + en la frazo: /ignore\c <Enenklavo> + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 6 RESUMO + + 1. Tajpu o por malfermi linion SUB la kursoro kaj eki en Enmeta reimo. + 1. Tajpu O por malfermi linion SUPER la kursoro. + + 2. Tajpu a por enmeti tekston POST la kursoro. + Tajpu A por enmeti tekston post la fino de la linio. + + 3. La e komando movas la kursoron al la fino de vorto. + + 4. la y operatoro kopias tekston, p algluas in. + + 5. Tajpo de majuskla R eniras la Anstataigan reimon is kiam + <ESK> estas premita. + + 6. Tajpo de ":set xxx" altas la opcion "xxx". Iuj opcioj estas: + 'ic' 'ignorecase' ignori usklecon dum sero + 'is' 'incsearch' montru partan kongruon dum sero + 'hls' 'hlsearch' emfazas iujn kongruajn frazojn + Vi povas uzi a la longan, a la mallongan nomon de opcio. + + 7. Antaaldonu "no" por malalti la opcion: :set noic + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 7.1 AKIRI HELPON + + + ** Uzu la helpan sistemon ** + + Vim havas ampleksan helpan sistemon. Por komencii, provu unu el la tiuj + tri: + - premu la klavon <HELPO> (se vi havas in) + - premu la klavon <F1> (se vi havas in) + - tajpu :help <Enenklavo> + + Legu la tekston en la helpfenestro por trovi kiel helpo funkcias. + Tajpu CTRL-W CTRL-W por salti de unu fenestro al la alia. + Tajpu :q <Enenklavo> por fermi la helpan fenestron. + + Vi povas trovi helpon pri io ajn aldonante argumenton al la komando + ":help". Provu tiujn (ne forgesu premi <Enenklavo>): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 7.2 KREI STARTAN SKRIPTON + + + ** Ebligu kapablojn de Vim ** + + Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defalte + malaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc. + + 1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo: + :e ~/.vimrc por Unikso + :e $VIM/_vimrc por MS-Vindozo + + 2. Nun legu la enhavon de la ekzempla "vimrc" + :r $VIMRUNTIME/vimrc_example.vim + + 3. Konservu la dosieron per: + :w + + La sekvantan fojon, kiam vi lanas Vim, i uzos sintaksan emfazon. + Vi povas aldoni iujn viajn preferatajn agordojn al tiu dosiero "vimrc". + Por pli da informoj, tajpu :help vimrc-intro + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 7.3 KOMPLETIGO + + + ** Kompletigo de komanda linio per CTRL-D kaj <TAB> ** + + 1. Certigu ke Vim estas en kongrua reimo: :set nocp + + 2. Rigardu tiujn dosierojn, kiuj ekzistas en la dosierujo: :!ls a :!dir + + 3. Tajpu la komencon de komando: :e + + 4. Premu CTRL-D kaj Vim montros liston de komandoj, kiuj komencas per "e". + + 5. Premu <TAB> kaj Vim kompletigos la nomon de la komando al ":edit". + + 6. Nun aldonu spaceton kaj la komencon de ekzistanta nomo: :edit DOSI + + 7. Premu <TAB>. Vim kompletigos la nomon (se i estas unika) + +RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj + <TAB>. Estas aparte utila por :help . + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leciono 7 RESUMO + + + 1. Tajpu :help a premu <F1> a <Helpo> por malfermi helpan fenestron. + + 2. Tajpu :help kmd por trovi helpon pri kmd. + + 3. Tajpu CTRL-W CTRL-W por salti al alia fenestro. + + 4. Tajpu :q to fermi la helpan fenestron. + + 5. Kreu komencan skripton vimrc por konservi viajn agordojn. + + 6. Kiam vi tajpas : komandon, premu CTRL-D por vidi iujn kompleteblojn. + Premu <TAB> por uzi unu kompletigon. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Tio konkludas la instruilon de Vim. i celis doni mallongan superrigardon + de la redaktilo Vim, nur tio kio sufias por ebligi al vi facilan uzon de + la redaktilo. Estas nepre nekompleta, ar Vim havas multajn multajn pliajn + komandojn. Legu la manlibron: ":help user-manual". + + Tiu instruilo estis verkita de Michael C. Pierce kaj Robert K. Ware, + el la Koloradia Lernejo de Minejoj (Colorado School of Mines) uzante + ideojn provizitajn de Charles Smith el la Stata Universitato de Koloradio + (Colorado State University) + + Retpoto: bware@mines.colorado.edu. + + Modifita por Vim de Bram Moolenaar. + + Tradukita en Esperanto de Dominique Pell, 2008-04-01 + Retpoto: dominique.pelle@gmail.com + Lasta ano: 2009-02-01 + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.eo.utf-8 +++ b/runtime/tutor/tutor.eo.utf-8 @@ -1,5 +1,5 @@ ============================================================================== -= B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.0.eo = += B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7.eo.2 = ============================================================================== Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili @@ -54,15 +54,15 @@ RIMARKO: La klavoj de la kursoro devus ankaŭ funkcii. Sed uzante hjkl, 1. Premu la klavon <ESK> (por certigi, ke vi estas en normala reĝimo). 2. Tajpu: :q! <Enenklavo>. - Tio eliras el la rekdaktilo, SEN konservi la ŝanĝojn, kion vi faris. + Tio eliras el la rekdaktilo, SEN konservi la ŝanĝojn, kiujn vi faris. - 3. Kiam vi vidas la ŝelinviton, tajpu la komandon kiun vi uzis por eniri + 3. Kiam vi vidas la ŝelinviton, tajpu la komandon kiun vi uzis por eniri en ĉi tiu instruilo. Tio estus: vimtutor <Enenklavo> 4. Se vi memoris tiujn paŝojn kaj sentas vin memfida, plenumu la paŝojn 1 ĝis 3 por eliri kaj reeniri la redaktilon. -RIMARKO: :q! <Enenklavo> eliras sen konservi la ŝanĝojn kion vi faris. +RIMARKO: :q! <Enenklavo> eliras sen konservi la ŝanĝojn, kiujn vi faris. Post kelkaj lecionoj, vi lernos kiel konservi la ŝanĝojn al dosiero. 5. Movu la kursoron suben ĝis la leciono 1.3. @@ -79,7 +79,7 @@ RIMARKO: :q! <Enenklavo> eliras sen konservi la ŝanĝojn kion vi faris. forviŝenda signo. 3. Premu la klavon x por forviŝi la nedeziratan signon. - + 4. Ripetu paŝojn 2 ĝis 4 ĝis kiam la frazo estas ĝusta. @@ -99,7 +99,7 @@ RIMARKO: Trairante la instruilon, ne pro 1. Movu la kursoron al la unua suba linio markita per --->. - 2. Por igi la unuan linion sama ol la dua, movu la kursoron sur la unuan + 2. Por igi la unuan linion sama kiel la dua, movu la kursoron sur la unuan signon post kie la teksto estas enmetenda. 3. Premu i kaj tajpu la bezonatajn aldonojn. @@ -124,12 +124,12 @@ RIMARKO: Trairante la instruilon, ne pro 1. Movu la kursoron al la unua suba linio markita per --->. Ne gravas sur kiu signo estas la kursoro. - 2. Premu A kaj tajpu la bezonatajn aldonojn. + 2. Premu majusklan A kaj tajpu la bezonatajn aldonojn. 3. Post kiam la teksto estas aldonita, premu <ESK> por reiri al la normala reĝimo. - 4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la + 4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la paŝojn 2 kaj 3 por korekti la frazon. ---> Mankas teksto el ti @@ -157,7 +157,7 @@ RIMARKO: Trairante la instruilon, ne pro 3. Enmetu kaj forviŝu tekston, kiel vi lernis en la antaŭaj lecionoj. - 4. Konservu la dosieron kun ŝanĝoj kaj eliru el Vim per: :qw <Enenklavo> + 4. Konservu la dosieron kun ŝanĝoj kaj eliru el Vim per: :wq <Enenklavo> 5. Relanĉu la instruilon vimtutor kaj moviĝu suben al la sekvanta resumo. @@ -167,6 +167,7 @@ RIMARKO: Trairante la instruilon, ne pro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 1 RESUMO + 1. La kursoro moviĝas aŭ per la sagoklavoj, aŭ per la klavoj hjkl. h (liven) j (suben) k (supren) l (dekstren) @@ -217,6 +218,7 @@ Nun daŭrigu al la leciono 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.2: PLIAJ KOMANDOJ DE FORVIŜO + ** Tajpu d$ por forviŝi la finon de la linio. ** 1. Premu <ESK> por certigi, ke vi estas en normala reĝimo. @@ -249,7 +251,7 @@ Nun daŭrigu al la leciono 2. movo - estas tio, pri kio la operatoro operacios (listigita sube) Mallonga listo de movoj: - w - ĝis la komenco de la sekvanta vorto, krom ĝian unuan signon. + w - ĝis la komenco de la sekvanta vorto, krom ĝia unua signo. e - ĝis la fino de la nuna vorto, krom la lasta signo. $ - ĝis la fino de la linio, krom la lasta signo. @@ -283,6 +285,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.5: UZI NOMBRON POR FORVIŜI PLI + ** Tajpo de nombro kun operatoro ripetas ĝin laŭfoje. ** En la kombinaĵo de la operatoro de forviŝo, kaj movo kiel menciita @@ -302,6 +305,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.6: OPERACII SUR LINIOJ + ** Tajpu dd por forviŝi tutan linion. ** Pro la ofteco de forviŝo de tuta linio, la verkisto de Vi decidis, ke @@ -324,6 +328,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2.7: LA KOMANDO DE MALFARO + ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. ** 1. Movu la kursoron ĉe la suba linio markita per ---> kaj metu ĝin sur @@ -344,6 +349,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 2 RESUMO + 1. Por forviŝi ekde la kursoro ĝis la sekvanta vorto, tajpu: dw 2. Por forviŝi ekde la kursoro ĝis la fino de la linio, tajpu: d$ 3. Por forviŝi tutan linion, tajpu: dd @@ -368,6 +374,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3.1 LA KOMANDO DE METO + ** Tajpu p por meti tekston forviŝitan antaŭe post la kursoro. ** 1. Movu la kursoron ĉe la unua ---> suba linio. @@ -389,6 +396,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3.2 LA KOMANDO DE ANSTATAŬIGO + ** Tajpu rx por anstataŭigi la signon ĉe la kursoro per x . ** @@ -402,7 +410,7 @@ RIMARKO: Premo de nur la movo en Normala reĝimo sen operatoro movos ---> Kiem tiu lanio estis tajpita, iu pramis la naĝuftajn klovojn! ---> Kiam tiu linio estis tajpita, iu premis la neĝustajn klavojn! - + 5. Nun moviĝu al la leciono 3.3. Rimarko: Memoru, ke vi devus lerni per uzo, kaj ne per memorado. @@ -411,6 +419,7 @@ Rimarko: Memoru, ke vi devus lerni per u ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3.3 LA OPERATORO DE ŜANĜO + ** Por ŝanĝi ĝis la fino de la vorto, tajpu ce . ** 1. Movu la kursoron ĉe la unua suba linio markita per --->. @@ -430,7 +439,8 @@ Rimarko: Memoru, ke vi devus lerni per u ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3.4 PLIAJ ŜANĜOJ PER c - ** La operatoro de ŝanĝo uzeblas kun la sama movo ol forviŝo. ** + + ** La operatoro de ŝanĝo uzeblas kun la sama movo kiel forviŝo. ** 1. La operatoro de ŝanĝo funkcias sammaniere kiel forviŝo. La formato estas: @@ -453,6 +463,7 @@ RIMARKO: Vi povas uzi la klavon Retropaŝo por korekti erarojn dum vi tajpas. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 3 RESUMO + 1. Por remeti tekston, kiun vi ĵus forviŝis, tajpu p. Tio metas la forviŝitan tekston POST la kursoro (se linio estis forviŝita, ĝi iros en la linion sub la kursoro). @@ -474,6 +485,7 @@ Nun daŭrigu al la sekvanta leciono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO + ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton. Tajpu G por moviĝi al linio en la dosiero. ** @@ -483,7 +495,7 @@ Nun daŭrigu al la sekvanta leciono. Mesaĝo aperos ĉe la suba parto de la paĝo kun la dosiernomo kaj la pozicio en la dosiero. Memoru la numeron de la linio por paŝo 3. - RIMARKO: Vi eble vidas la pozicion de la kursoro ĉe la suba dekstra + RIMARKO: Vi eble vidas la pozicion de la kursoro ĉe la suba dekstra angulo de la ekrano. Tio okazas kiam la agordo 'ruler' estas ŝaltita (vidu :help 'ruler') @@ -499,6 +511,7 @@ Nun daŭrigu al la sekvanta leciono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 4.2 LA KOMANDO DE SERĈO + ** Tajpu / kaj poste frazon por serĉi la frazon. ** 1. En normala reĝimo, tajpu la / signon. Rimarku, ke ĝi kaj la kursoro @@ -524,7 +537,8 @@ RIMARKO: Kiam la serĉo atingas la finon de la dosiero, ĝi daŭras ĉe la ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 4.3 SERĈO DE KONGRUAJ KRAMPOJ - ** Tajpu % por trovi kongruan ), [ aŭ } ** + + ** Tajpu % por trovi kongruan ), ] aŭ } ** 1. Poziciu la kursoron sur iun (, [ aŭ { en la linio markita per --->. @@ -548,7 +562,7 @@ RIMARKO: Kiam la serĉo atingas la finon de la dosiero, ĝi daŭras ĉe la 1. Movu la kursoron al la suba linio markita per --->. - 2. Tajpu :s/laa/la <Enenklavo> . Rimarku, ke la komando ŝanĝas nur la + 2. Tajpu :s/laa/la <Enenklavo> . Rimarku, ke la komando ŝanĝas nur la unuan okazaĵon de "laa" en la linio. 3. Nun tajpu :s/laa/la/g . Aldono de g opcio signifas mallokan @@ -573,7 +587,7 @@ RIMARKO: Kiam la serĉo atingas la finon de la dosiero, ĝi daŭras ĉe la 1. CTRL-G vidigas vian pozicion en la dosiero kaj la staton de la dosiero. G movas la kursoron al la fino de la dosiero. - numero G movas la kursoron al tiu numero de linio. + numero G movas la kursoron al numero de tiu linio. gg movas la kursoron al la unua linio. 2. Tajpo de / kaj frazon serĉas la frazon antaŭen. @@ -595,6 +609,7 @@ RIMARKO: Kiam la serĉo atingas la finon de la dosiero, ĝi daŭras ĉe la ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON + ** Tajpu :! sekvata de ekstera komando por plenumi la komandon. ** 1. Tajpu la konatan komandon : por pozicii la kursoron ĉe la suba parto @@ -603,7 +618,7 @@ RIMARKO: Kiam la serĉo atingas la finon de la dosiero, ĝi daŭras ĉe la 2. Nun tajpu la ! (krisigno) signon. Tio ebligas al vi plenumi iun eksteran ŝelan komandon ajn. - 3. Ekzemple, tajpu ls post ! kaj tajpu <Enenklavo>. Tio listigos la + 3. Ekzemple, tajpu ls post ! kaj tajpu <Enenklavo>. Tio listigos la enhavon de la dosierujo, same kiel se vi estis en ŝela invito. Aŭ uzu :!dir se ls ne funkcias. @@ -617,6 +632,7 @@ RIMARKO: Ĉiuj : komandoj devas finiĝi per tajpo de <Enenklavo> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 5.2 PLI PRI KONSERVO DE DOSIERO + ** Por konservi la faritajn ŝanĝojn en la teksto, tajpu :w DOSIERNOMO. ** 1. Tajpu !dir aŭ !ls por akiri liston de via dosierujo. @@ -626,7 +642,7 @@ RIMARKO: Ĉiuj : komandoj devas finiĝi per tajpo de <Enenklavo> 3. Nun tajpu: :w TESTO (kie TESTO estas la elektita dosiernomo) - 4. Tio konservas la tutan dosieron (instruilo de Vim) per la nomo TESTO. + 4. Tio konservas la tutan dosieron (instruilon de Vim) kun la nomo TESTO. Por kontroli tion, tajpu :!dir aŭ !ls denove por vidigi vian dosierujon. @@ -641,11 +657,12 @@ RIMARKO: Se vi volus eliri el Vim kaj restartigi ĝin denove per vim TESTO, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 5.3 APARTIGI KONSERVENDAN TESTON + ** Por konservi parton de la dosiero, tajpu v movo :w DOSIERNOMO ** 1. Movu la kursoron al tiu linio. - - 2. Premu v kaj movu la kursoron al la kvina suba ero. Rimarku, ke la + + 2. Premu v kaj movu la kursoron al la kvina suba ero. Rimarku, ke la teksto emfaziĝas. 3. Premu la : signon. Ĉe la fino de la ekrano :'<,'> aperos. @@ -654,10 +671,10 @@ RIMARKO: Se vi volus eliri el Vim kaj restartigi ĝin denove per vim TESTO, Kontrolu, ke vi vidas :'<,'>w TESTO antaŭ premi <Enenklavo>. 5. Vim konservos la apartigitajn liniojn al la dosiero TESTO. Uzu :dir - aŭ :!ls por vidigi ĝin. Ne jam forviŝu ĝin. Ni uzos ĝin en la - sekvanta leciono. + aŭ :!ls por vidigi ĝin. Ne forviŝu ĝin. Ni uzos ĝin en la sekvanta + leciono. -RIMARKO: PREMO DE v komencas Viduman apartigon. Vi povas movi la kursoron +RIMARKO: Premo de v komencas Viduman apartigon. Vi povas movi la kursoron por pligrandigi aŭ malpligrandigi la apartigon. Tiam vi povas uzi operatoron por plenumi ion kun la teksto. Ekzemple, d forviŝas la tekston. @@ -682,7 +699,7 @@ RIMARKO: Post plenumo de paŝo 2, vi vidos tekston el la leciono 5.3. Tiam ke estas nun du kopioj de la leciono 5.3, la originala kaj la versio mem de la dosiero. -RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, +RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, :r !ls legas la eliron de la komando ls kaj metas ĝin sub la kursoron. @@ -701,7 +718,7 @@ RIMARKO: Vi nun povas legi la eliron de 2. :w DOSIERNOMO konservas la nunan dosieron de Vim al disko kun la nomo DOSIERNOMO. - 3. v movo :w DOSIERNOMO konservas la Viduman apartigo de linioj en + 3. v movo :w DOSIERNOMO konservas la Viduman apartigon de linioj en dosiero DOSIERNOMO. 4. :r DOSIERNOMO akiras la dosieron DOSIERNOMO el la disko kaj metas @@ -748,7 +765,7 @@ RIMARKO: Vi nun povas legi la eliron de 4. Kompletigu la vorton same kiel la linio sub ĝi. Premu <ESK> por eliri la Enmetan reĝimon. - 5. Uzu e por moviĝi al la sekvanta nekompleta vorto kaj ripetu + 5. Uzu e por moviĝi al la sekvanta nekompleta vorto kaj ripetu paŝojn 3 kaj 4. ---> Ĉi tiu lin ebligos vin ekz vin postal tekston al linio. @@ -804,7 +821,7 @@ RIMARKO: Anstataŭiga reĝimo estas same kiel Enmeta reĝimo, sed ĉiu signo per p . ---> a) tio estas la unua ero. - b) + b) RIMARKO: vi povas ankaŭ uzi y kiel operatoro; yw kopias unu vorton. @@ -812,7 +829,8 @@ RIMARKO: vi povas ankaŭ uzi y kiel operatoro; yw kopias unu vorton. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 6.5 AGORDI OPCION - ** Agordu opcion por ke serĉo aŭ anstataŭgo ignoru usklecon ** + + ** Agordu opcion por ke serĉo aŭ anstataŭigo ignoru usklecon ** 1. Serĉu 'ignori' per tajpo de /ignori <Enenklavo> Ripetu plurfoje premante n . @@ -857,9 +875,11 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu \c 7. Antaŭaldonu "no" por malŝalti la opcion: :set noic + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 7.1 AKIRI HELPON + ** Uzu la helpan sistemon ** Vim havas ampleksan helpan sistemon. Por komenciĝi, provu unu el la tiuj @@ -884,22 +904,23 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu \c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 7.2 KREI STARTAN SKRIPTON - ** Ebligu eblecojn de Vim ** + + ** Ebligu kapablojn de Vim ** - Vim havas multe pli da eblecoj ol Vi, sed la plej multaj estas defaŭlte - malŝaltitaj. Por ekuzi la eblecojn, vi devas krei dosieron "vimrc. + Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defaŭlte + malŝaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc. 1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo: :e ~/.vimrc por Unikso :e $VIM/_vimrc por MS-Vindozo - 2. Nun legu la enhavon de la ekzempla "vimrc" + 2. Nun legu la enhavon de la ekzempla "vimrc" :r $VIMRUNTIME/vimrc_example.vim 3. Konservu la dosieron per: :w - La sekvanta fojo, kiam vi lanĉas Vim, ĝi uzos sintaksan emfazon. + La sekvantan fojon, kiam vi lanĉas Vim, ĝi uzos sintaksan emfazon. Vi povas aldoni ĉiujn viajn preferatajn agordojn al tiu dosiero "vimrc". Por pli da informoj, tajpu :help vimrc-intro @@ -907,6 +928,7 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu \c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Leciono 7.3 KOMPLETIGO + ** Kompletigo de komanda linio per CTRL-D kaj <TAB> ** 1. Certigu ke Vim estas en kongrua reĝimo: :set nocp @@ -962,6 +984,6 @@ RIMARKO: Kompletigo funkcias por multaj Tradukita en Esperanto de Dominique Pellé, 2008-04-01 Retpoŝto: dominique.pelle@gmail.com - Lasta ŝanĝo: 2008-04-02 + Lasta ŝanĝo: 2009-02-01 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.es +++ b/runtime/tutor/tutor.es @@ -117,7 +117,7 @@ NOTA: A medida que vaya avanzando en est RESUMEN DE LA LECCIN 1 - 1. El cursor se mueve utilizamdo las teclas de las flechas o las teclas hjkl. + 1. El cursor se mueve utilizando las teclas de las flechas o las teclas hjkl. h (izquierda) j (abajo) k (arriba) l (derecha) 2. Para acceder a Vim (desde el smbolo del sistema %) escriba:
--- a/runtime/tutor/tutor.es.utf-8 +++ b/runtime/tutor/tutor.es.utf-8 @@ -117,7 +117,7 @@ NOTA: A medida que vaya avanzando en est RESUMEN DE LA LECCIÓN 1 - 1. El cursor se mueve utilizamdo las teclas de las flechas o las teclas hjkl. + 1. El cursor se mueve utilizando las teclas de las flechas o las teclas hjkl. h (izquierda) j (abajo) k (arriba) l (derecha) 2. Para acceder a Vim (desde el símbolo del sistema %) escriba:
--- a/runtime/tutor/tutor.fr +++ b/runtime/tutor/tutor.fr @@ -1,5 +1,5 @@ =============================================================================== -= B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.5.fr.2 = += B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.7.fr.1 = =============================================================================== Vim est un diteur trs puissant qui a trop de commandes pour pouvoir @@ -7,93 +7,100 @@ dcrire suffisamment afin de vous permettre d'utiliser simplement Vim. Le temps requis pour suivre ce cours est d'environ 25 30 minutes, selon - le temps que vous passerez exprimenter. Les commandes utilises dans - les leons modifieront le texte. Faites une copie de ce fichier afin de - vous entraner dessus (si vous avez lanc "vimtutor" ceci est dj une - copie). + le temps que vous passerez exprimenter. + + ATTENTION : + Les commandes utilises dans les leons modifieront le texte. Faites une + copie de ce fichier afin de vous entraner dessus (si vous avez lanc + "vimtutor" ceci est dj une copie). Il est important de garder en tte que ce cours est conu pour apprendre - par la pratique. Cela signifie que vous devez excuter les commandes - pour les apprendre correctement. Si vous vous contentez de lire le - texte, vous oublierez les commandes ! + par la pratique. Cela signifie que vous devez excuter les commandes + pour les apprendre correctement. Si vous vous contentez de lire le texte, + vous oublierez les commandes ! - Maintenant, vrifiez que votre clavier n'est PAS verouill en majuscules, - et appuyez la touche j le nombre de fois suffisant pour que la leon - 1.1 remplisse compltement l'cran. + Maintenant, vrifiez que votre clavier n'est PAS verrouill en + majuscules, et appuyez la touche j le nombre de fois suffisant pour + que la Leon 1.1 remplisse compltement l'cran. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 1.1 : DPLACEMENT DU CURSEUR + Leon 1.1 : DPLACEMENT DU CURSEUR ** Pour dplacer le curseur, appuyez les touches h,j,k,l comme indiqu. ** - ^ - k Astuce: La touche h est gauche et dplace gauche. - < h l > La touche l est droite et dplace droite. - j La touche j ressemble une flche vers le bas. - v + ^ + k Astuce : La touche h est gauche et dplace gauche. + < h l > La touche l est droite et dplace droite. + j La touche j ressemble une flche vers le bas. + v 1. Dplacez le curseur sur l'cran jusqu' vous sentir l'aise. 2. Maintenez la touche Bas (j) enfonce jusqu' ce qu'elle se rpte. ----> Maintenant vous tes capable de vous dplacer jusqu' la leon suivante. + Maintenant vous tes capable de vous dplacer jusqu' la leon suivante. 3. En utilisant la touche Bas, allez la Leon 1.2. -Note: Si jamais vous doutez de ce que vous venez de taper, appuyez <chap> - pour revenir en mode Normal. Puis retapez la commande que vous vouliez. +NOTE : Si jamais vous doutez de ce que vous venez de taper, appuyez <chap> + pour revenir en mode Normal. Puis retapez la commande que vous vouliez. -Note: Les touches flches devraient galement fonctionner. Mais en utilisant - hjkl vous pourrez vous dplacer beaucoup plus rapidement, une fois que - vous aurez pris l'habitude. +NOTE : Les touches flches devraient galement fonctionner. Mais en utilisant + hjkl vous pourrez vous dplacer beaucoup plus rapidement, une fois que + vous aurez pris l'habitude. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 1.2 : ENTRE ET SORTIE DE VIM + Leon 1.2 : SORTIR DE VIM - !! NOTE: Avant d'effectuer les tapes ci-dessous, lisez toute cette leon !! + !! NOTE : Avant d'effectuer les tapes ci-dessous, lisez toute cette leon !! - 1. Appuyez la touche <chap> (pour tre sr d'tre en mode Normal). - - 2. Tapez: :q! <Entre> + 1. Appuyez la touche <chap> (pour tre sr d'tre en mode Normal). ----> Ceci quitte l'diteur SANS sauver les changements que vous avez faits. - Si vous voulez enregistrer les changements et sortir, tapez: - :wq <Entre> + 2. Tapez : :q! <Entre> + Ceci quitte l'diteur SANS enregistrer les changements que vous avez + faits. - 3. Lorsque l'invite du 'shell' vous sera prsente, tapez la commande qui - vous a amen dans ce tutoriel. Cela pourrait tre: vimtutor <Entre> - Normalement, vous utiliseriez: vim tutor <Entre> - ----> 'vim' lance l'diteur, 'tutor' est le fichier que vous souhaitez diter. + 3. Lorsque l'invite du shell vous sera prsente, tapez la commande qui + vous a men dans ce tutoriel. Cela pourrait tre : vimtutor <Entre> 4. Si vous avez mmoris ces tapes et tes confiant, effectuez les tapes - 1 3 pour sortir puis rentrer dans l'diteur. Dplacez ensuite le - curseur jusqu' la Leon 1.3. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 1.3 : DITION DE TEXTE - EFFACEMENT + 1 3 pour sortir puis rentrer dans l'diteur. + +NOTE : :q! <Entre> annule tous le changements que vous avez fait. Dans + quelques leons, vous apprendrez enregistrer les changements. + + 5. Dplacez le curseur la Leon 1.3. - ** En mode Normal, appuyez x pour effacer le caractre sous le curseur. ** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leon 1.3 : DITION DE TEXTE - EFFACEMENT + + + ** Appuyez x pour effacer le caractre sous le curseur. ** 1. Dplacez le curseur sur la ligne marque ---> ci-dessous. 2. Pour corriger les erreurs, dplacez le curseur jusqu' ce qu'il soit sur un caractre effacer. - 3. Appuyez la touche x pour effacer le caractre redondant. + 3. Appuyez la touche x pour effacer le caractre redondant. 4. Rptez les tapes 2 4 jusqu' ce que la phrase soit correcte. ---> La vvache saut au-ddessus dde la luune. - 5. Maintenant que la ligne est correcte, passez la leon 1.4. + 5. Maintenant que la ligne est correcte, passez la Leon 1.4. -NOTE: En avanant dans ce cours, n'essayez pas de mmoriser, apprenez par - la pratique. +NOTE : En avanant dans ce cours, n'essayez pas de mmoriser, apprenez par + la pratique. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 1.4 : DITION DE TEXTE - INSERTION + Leon 1.4 : DITION DE TEXTE - INSERTION - ** En mode Normal, appuyez i pour insrer du texte. ** + ** Appuyez i pour insrer du texte. ** 1. Dplacez le curseur sur la premire ligne marque ---> ci-dessous. @@ -108,38 +115,94 @@ NOTE: En avanant dans ce cours, n'essayez pas de mmoriser, apprenez par ---> Il mnqe caractres cette . ---> Il manque des caractres dans cette ligne. - 5. Une fois que vous tes l'aise avec l'insertion de texte, allez au - rsum ci-dessous. + 5. Une fois que vous tes l'aise avec l'insertion de texte, allez la + Leon 1.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leon 1.5 : DITION DE TEXTE - AJOUTER + + + ** Appuyez A pour ajouter du text. ** + + 1. Dplacez le curseur sur la premire ligne ci-dessous marque --->. + Peu importe sur quel caractre se trouve le curseur sur cette ligne. + + 2. Appuyez A et tapez les ajouts ncessaires. + + 3. Quand le texte a t ajout, appuyez <chap> pour revenir en mode + Normal. + + 4. Dplacez le curseur sur la seconde ligne marque ---> et rptez les + tapes 2 et 3 pour corriger la phrase. + +---> Il manque du texte partir de cet + Il manque du texte partir de cette ligne. +---> Il manque aussi du te + Il manque aussi du texte ici. + + 5. Quand vous vous sentez suffisamment l'aise pour ajouter du texte, + allez la Leon 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RSUM DE LA LEON 1 + Leon 1.6 : DITER UN FICHIER + + + ** Utilisez :wq pour enregistrer un fichier et sortir. ** + +!! NOTE : Lisez toute la leon avant d'excuter les instructions ci-dessous !! + + 1. Sortez de ce tutoriel comme vous l'avez fait dans la Leon 1.2 : :q! + Ou, si vous avez accs un autre terminal, excutez y les actions + qui suivent. + + 2. l'invite du shell, tapez cette commande : vim tutor <Entre> + 'vim' est la commande pour dmarrer l'diteur Vim, 'tutor' est le + nom du fichier que vous souhaitez diter. Utilisez un fichier qui peut + tre modifi. + + 3. Insrez et effacez du texte comme vous l'avez appris dans les leons + prcdentes. + + 4. Enregistrez le fichier avec les changements et sortez de Vim avec : + :wq <Entre> + + 5. Si vous avez quitt vimtutor l'tape 1, recommencez vimtutor et + dplacez-vous en bas vers le rsum suivant. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RSUM DE LA LEON 1 + 1. Le curseur se dplace avec les touches flches ou les touches hjkl. - h (gauche) j (bas) k (haut) l (droite) + h (gauche) j (bas) k (haut) l (droite) - 2. Pour entrer dans Vim ( l'invite %) tapez: vim FICHIER <Entre> + 2. Pour dmarrer Vim l'invite du shell tapez : vim FICHIER <Entre> - 3. Pour quitter Vim tapez: <chap> :q! <Entre> pour perdre tous les - changements. - OU tapez: <chap> :wq <Entre> pour enregistrer les - changements. + 3. Pour quitter Vim tapez : <chap> :q! <Entre> pour perdre tous les + changements. + OU tapez : <chap> :wq <Entre> pour enregistrer les + changements. - 4. Pour effacer un caractre sous le curseur en mode Normal tapez: x + 4. Pour effacer un caractre sous le curseur tapez : x - 5. Pour insrer du texte au niveau du curseur en mode Normal tapez: - i tapez le texte <chap> + 5. Pour insrer ou ajouter du texte tapez : + i tapez le texte insrer avant le curseur <chap> + A tapez le texte ajouter aprs le curseur <chap> -NOTE: Appuyer <chap> vous place en mode Normal ou annule une commande - partiellement tape dont vous ne voudriez plus. +NOTE : Appuyer <chap> vous place en mode Normal ou annule une commande + partiellement tape dont vous ne voulez plus. -Passez maintenant la Leon 2. +Passez maintenant la leon 2. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 2.1 : EFFACEMENTS + Leon 2.1 : COMMANDES D'EFFACEMENT - ** Tapez dw pour effacer jusqu' la fin d'un mot. ** + ** Tapez dw pour effacer un mot. ** 1. Appuyez <chap> pour tre sr d'tre en mode Normal. @@ -147,91 +210,139 @@ Passez maintenant la Leon 2. 3. Placez le curseur sur le dbut d'un mot qui a besoin d'tre effac. - 4. Tapez dw pour faire disparatre ce mot. + 4. Tapez dw pour faire disparatre ce mot. -NOTE: Les lettres dw apparatront sur la dernire ligne de l'cran lors de - votre frappe. Si vous avez mal tap quelque chose, appuyez <chap> et - recommencez. +NOTE : La lettre d apparatra sur la dernire ligne de l'cran lors de + votre frappe. Vim attend que vous tapiez w . Si vous voyez un autre + caractre que d vous avez tap autre chose ; appuyez <chap> et + recommencez. ---> Il y a quelques drle mots qui n'ont rien faire papier sur cette ligne. 5. Rptez les tapes 3 et 4 jusqu' ce que la phrase soit correcte et allez la Leon 2.2. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 2.2 : PLUS D'EFFACEMENTS + Leon 2.2 : PLUS DE COMMANDES D'EFFACEMENTS - ** Tapez d$ pour effacer jusqu' la fin de la ligne. ** + ** Tapez d$ pour effacer jusqu' la fin de la ligne. ** 1. Appuyez <chap> pour tre sr d'tre en mode Normal. 2. Dplacez le curseur sur la ligne marque ---> ci-dessous. - 3. Dplacez le curseur jusqu' la fin correcte de la ligne - (APRS le premier . ). + 3. Dplacez le curseur jusqu' la fin de la ligne correcte (APRS le + premier . ). - 4. Tapez d$ pour effacer jusqu' la fin de la ligne. + 4. Tapez d$ pour effacer jusqu' la fin de la ligne. ---> Quelqu'un a tap la fin de cette ligne deux fois. cette ligne deux fois. 5. Allez la Leon 2.3 pour comprendre ce qui se passe. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leon 2.3 : PROPOS DES OPRATEURS ET DES MOUVEMENTS + Plusieurs commandes qui changent le texte sont constitues d'un oprateur + et d'un mouvement. Le format pour une commande d'effacement avec l'oprateur + d d'effacement est le suivant : + + d mouvement + + O : + d - est l'oprateur d'effacement + mouvement - est le mouvement sur lequel agit l'oprateur (lists + ci-dessous) + + Une courte liste de mouvements : + w - jusqu'au dbut du prochain mot, en EXCLUANT son premier caractre. + e - jusqu' la fin du mot courant, en EXCLUANT son denier caractre. + $ - jusqu' la fin de la ligne, en INCLUANT son dernier caractre. + + Ainsi, taper de va effacer depuis le curseur jusqu' la fin du mot. + +NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, dplace le + curseur comme indiqu. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 2.3 : DES COMMANDES ET DES OBJETS + Leon 2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT - Le format de la commande d'effacement d est le suivant: + ** Taper un nombre avant un mouvement le rpte autant de fois. ** - [nombre] d objet OU d [nombre] objet - o: - nombre - est combien de fois excuter la commande (optionnel, dfaut: 1). - d - est la commande d'effacement. - objet - est ce sur quoi la commande va oprer (liste ci-dessous). + 1. Dplacez le curseur au dbut de la ligne marque ---> ci-dessous. + + 2. Tapez 2w pour dplacer le curseur de 2 mots vers l'avant. - Une courte liste d'objets: - w - du curseur jusqu' la fin du mot, y compris l'espace qui suit. - e - du curseur jusqu' la fin du mot, SANS l'espace qui suit. - $ - du curseur jusqu' la fin de la ligne. + 3. Tapez 3e pour dplacer le curseur la fin du troisime mot vers + l'avant. + + 4. Tapez 0 (zro) pour dplacer au dbut de la ligne. -NOTE: Pour les aventureux, le seul appui d' objet en mode Normal, sans - commande, dplace le curseur comme indiqu dans la liste des objets. + 5. Rptez les tapes 2 et 3 avec des quantificateurs diffrents. +---> Ceci est juste une ligne avec des mots o vous pouvez vous dplacer. + 6. Dplacez-vous la Leon 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 2.4 : UNE EXCEPTION 'COMMANDE-OBJET' + Leon 2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS + + + ** Taper un nombre avec un oprateur le rpte autant de fois. ** + + Outre la combinaison de l'oprateur d'effacement avec un dplacement + mentionn ci-dessus, vous pouvez insrer un nombre (quantificateur) + pour effacez encore plus : + d nombre dplacement + + 1. Dplacez le curseur vers le premier mot en MAJUSCULES dans la ligne + marque --->. - ** Tapez dd pour effacer une ligne complte. ** + 2. Tapez d2w pour effacer les deux mots en MAJUSCULES. + + 3. Rptez les tapes 1 et 2 avec des quantificateurs diffrents pour + effacer les mots suivants en MAJUSCULES l'aide d'une commande. + +---> Cette ABC DE ligne FGHI JK LMN OP de mots est Q RS TUV nettoye. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leon 2.6 : OPREZ SUR DES LIGNES + + + ** Tapez dd pour effacer une ligne complte. ** Vu le nombre de fois o l'on efface des lignes compltes, les concepteurs - de Vi ont dcid qu'il serait plus facile de taper simplement deux d la - suite pour effacer une ligne. + de Vi ont dcid qu'il serait plus facile de taper simplement deux d + pour effacer une ligne. 1. Placez le curseur sur la seconde ligne de la phrase ci-dessous. - 2. Tapez dd pour effacer la ligne. + 2. Tapez dd pour effacer la ligne. 3. Maintenant allez la quatrime ligne. - 4. Tapez 2dd (rappelez-vous, nombre-commande-objet) pour effacer les - deux lignes. + 4. Tapez 2dd pour effacer deux lignes. - 1) Les roses sont rouges, - 2) La boue c'est drle, - 3) Les violettes sont bleues, - 4) J'ai une voiture, - 5) Les horloges donnent l'heure, - 6) Le sucre est doux - 7) Tout comme vous. +---> 1) Les roses sont rouges, +---> 2) La boue c'est drle, +---> 3) Les violettes sont bleues, +---> 4) J'ai une voiture, +---> 5) Les horloges donnent l'heure, +---> 6) Le sucre est doux +---> 7) Tout comme vous. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 2.5 : L'ANNULATION + Leon 2.7 : L'ANNULATION + - ** Tapez u pour annuler les dernires commandes. ** - ** Tapez U pour rcuprer toute une ligne. ** + ** Tapez u pour annuler les dernires commandes. ** + ** Tapez U pour rcuprer toute une ligne. ** 1. Dplacez le curseur sur la ligne marque ---> ci-dessous et placez-le sur la premire erreur. @@ -239,10 +350,10 @@ NOTE: Pour les aventureux, le seul appui 3. Puis tapez u pour annuler la dernire commande excute. 4. Cette fois, corrigez toutes les erreurs de la ligne avec la commande x . 5. Puis tapez un U majuscule pour remettre la ligne dans son tat initial. - 6. Puis tapez u deux-trois fois pour annuler le U et les commandes + 6. Puis tapez u deux-trois fois pour annuler le U et les commandes prcdentes. - 7. Maintenant tapez Ctrl-R (maintenez la touche Ctrl enfonce pendant que - vous appuyez sur R) deux-trois fois pour refaire les commandes (annuler + 7. Maintenant tapez CTRL-R (maintenez la touche CTRL enfonce pendant que + vous appuyez R) deux-trois fois pour refaire les commandes (annuler les annulations). ---> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'. @@ -250,57 +361,64 @@ NOTE: Pour les aventureux, le seul appui 8. Ce sont des commandes trs utiles. Maintenant, allez au rsum de la Leon 2. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RSUM DE LA LEON 2 + RSUM DE LA LEON 2 - 1. Pour effacer du curseur jusqu' la fin d'un mot tapez: dw + 1. Pour effacer du curseur jusqu'au mot suivant tapez : dw - 2. Pour effacer du curseur jusqu' la fin d'une ligne tapez: d$ + 2. Pour effacer du curseur jusqu' la fin d'une ligne tapez : d$ + + 3. Pour effacer toute une ligne tapez : dd - 3. Pour effacer toute une ligne tapez: dd + 4. Pour rpter un dplacement ajoutez un quantificateur : 2w - 4. Le format d'une commande en mode Normal est: + 5. Le format d'une commande de changement est : + + oprateur [nombre] dplacement - [nombre] commande objet OU commande [nombre] objet - o: - nombre - est combien de fois rpter la commande - commande - est ce qu'il faut faire, par exemple d pour effacer - objet - est ce sur quoi la commande devrait agir, par exemple w (mot), - $ (jusqu' la fin de la ligne), etc. + O : + oprateur - est ce qu'il faut faire, comme d pour effacer. + [nombre] - un quantificateur optionnel pour rpter le dplacement. + dplacement - dplace le long du texte oprer, tel que w (mot), + $ (jusqu' la fin de ligne), etc. - 5. Pour annuler des actions prcdentes, tapez: u (u minuscule) - Pour annuler tous les changements sur une ligne tapez: U (U majuscule) - Pour annuler l'annulation tapez: Ctrl-R + 6. Pour se dplacer au dbut de ligne, utilisez un zro : 0 + + 5. Pour annuler des actions prcdentes, tapez : u (u minuscule) + Pour annuler tous les changements sur une ligne tapez : U (U majuscule) + Pour annuler l'annulation tapez : CTRL-R + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 3.1 : LE COLLAGE + Leon 3.1 : LE COLLAGE - ** Tapez p pour placer aprs le curseur ce qui vient d'tre effac. ** + ** Tapez p pour placer aprs le curseur ce qui vient d'tre effac. ** - 1. Placez le curseur sur la premire ligne du "pome" ci-dessous. + 1. Placez le curseur sur la premire ligne ci-dessous marque --->. - 2. Tapez dd pour effacer la ligne et la placer dans le tampon de Vim. + 2. Tapez dd pour effacer la ligne et la placer dans un registre de Vim. - 3. Dplacez le curseur sur la ligne qui PRCDE l'endroit o vous voulez - remettre la ligne efface. + 3. Dplacez le curseur sur la ligne c) au dessus o vous voulez remettre la + ligne efface. - 4. En mode Normal, tapez p pour remettre la ligne. + 4. En mode Normal, tapez p pour remettre la ligne en dessous du curseur. 5. Rptez les tapes 2 4 pour mettre toutes les lignes dans le bon ordre. - d) Et vous, qu'apprenez-vous ? - b) Les violettes sont bleues, - c) L'intelligence s'apprend, - a) Les roses sont rouges, +---> d) Et vous, qu'apprenez-vous ? +---> b) Les violettes sont bleues, +---> c) L'intelligence s'apprend, +---> a) Les roses sont rouges, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 3.2 : LE REMPLACEMENT + Leon 3.2 : LA COMMANDE DE REMPLACEMENT - ** Tapez r et un caractre pour remplacer le caractre sous le curseur. ** + ** Tapez rx pour remplacer un caractre sous le curseur par x . ** 1. Dplacez le curseur sur la premire ligne marque ---> ci-dessous. @@ -308,31 +426,32 @@ NOTE: Pour les aventureux, le seul appui 3. Tapez r suivi du caractre qui doit corriger l'erreur. - 4. Rptez les tapes 2 et 3 jusqu' ce que la premire ligne soit correcte. + 4. Rptez les tapes 2 et 3 jusqu' ce que la premire ligne soit gale + la seconde. ---> Quand cette ligne a t sauvie, quelqu'un a lait des faunes de frappe ! ---> Quand cette ligne a t saisie, quelqu'un a fait des fautes de frappe ! 5. Maintenant, allez la Leon 3.3. -NOTE: N'oubliez pas que vous devriez apprendre par la pratique, pas par - mmorisation. +NOTE : N'oubliez pas que vous devriez apprendre par la pratique, pas par + mmorisation. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 3.3 : LE CHANGEMENT + Leon 3.3 : L'OPRATEUR DE CHANGEMENT - ** Pour changer tout ou partie d'un mot, tapez cw .** + ** Pour changer jusqu' la fin d'un mot, tapez ce .** 1. Dplacez le curseur sur la premire ligne marque ---> ci-dessous. - 2. Placez le curseur sur le u de luhko. + 2. Placez le curseur sur le u de luhko. - 3. Tapez cw et corrigez le mot (dans notre cas, tapez 'igne'.) + 3. Tapez ce et corrigez le mot (dans notre cas, tapez 'igne'.) - 4. Appuyez <chap> et placez-vous sur l'erreur suivante (le premier - caractre qui doit tre chang). + 4. Appuyez <chap> et placez-vous sur le prochain caractre qui doit + tre chang). 5. Rptez les tapes 3 et 4 jusqu' ce que la premire phrase soit identique la seconde. @@ -340,171 +459,189 @@ NOTE: N'oubliez pas que vous devriez app ---> Cette luhko contient quelques myqa qui ont ricne d'tre chantufip. ---> Cette ligne contient quelques mots qui ont besoin d'tre changs. -Notez que cw efface le mot et vous place ensuite en mode Insertion. +Notez que ce efface le mot et vous place ensuite en mode Insertion. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 3.4 : PLUS DE CHANGEMENTS AVEC c + Leon 3.4 : PLUS DE CHANGEMENTS AVEC c - ** Le changement fonctionne avec les mmes objets que l'effacement. ** + ** L'oprateur de changement fonctionne avec les mmes dplacements + que l'effacement. ** - 1. Le changement fonctionne de la mme manire que l'effacement. - Le format est: + 1. L'oprateur de changement fonctionne de la mme manire que + l'effacement. Le format est : - [nombre] c objet OU c [nombre] objet + c [nombre] dplacement - 2. Les objets sont galement les mmes: w (mot), $ (fin de ligne), etc. + 2. Les dplacements sont identiques : w (mot) et $ (fin de ligne). - 3. Dplacez-vous la premire ligne marque ---> ci-dessous. + 3. Dplacez-vous sur la premire ligne marque ---> ci-dessous. 4. Placez le curseur sur la premire erreur. - 5. Tapez c$ pour changer la fin de la ligne, rendez-l identique la - seconde ligne, puis tapez <chap>. + 5. Tapez c$ et tapez le reste de la ligne afin qu'elle soit identique + la seconde ligne, puis tapez <chap>. ---> La fin de cette ligne doit tre rendue identique la seconde. ----> La fin de cette ligne doit tre corrige avec la commande c$ . +---> La fin de cette ligne doit tre corrige avec la commande c$ . + +NOTE : Vous pouvez utilisez la touche Retour Arrire pour corriger les + erreurs lorsque vous tapez. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RSUM DE LA LEON 3 + RSUM DE LA LEON 3 - 1. Pour remettre du texte qui vient d'tre effac, tapez p . Cela Place le + 1. Pour remettre le texte qui a dj t effac, tapez p . Cela Place le texte effac APRS le curseur (si une ligne complte a t efface, elle sera place sous la ligne du curseur). 2. Pour remplacer le caractre sous le curseur, tapez r suivi du caractre qui remplacera l'original. - 3. Le changement vous permet de changer l'objet spcifi, du curseur jusqu' - la fin de l'objet. Par exemple, tapez cw pour changer du curseur - jusqu' la fin du mot, c$ pour changer jusqu' la fin d'une ligne. + 3. L'oprateur de changement vous permet de changer depuis la position du + curseur jusqu'o le dplacement vous amne. Par exemple, tapez ce + pour changer du curseur jusqu' la fin du mot, c$ pour changer jusqu' + la fin d'une ligne. - 4. Le format pour le changement est: + 4. Le format pour le changement est : - [nombre] c objet OU c [nombre] objet + c [nombre] dplacement Passez maintenant la leon suivante. - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 4.1 : POSITION ET TAT DU FICHIER + Leon 4.1 : POSITION DU CURSEUR ET TAT DU FICHIER - ** Tapez Ctrl-G pour afficher votre position dans le fichier et son tat. - Utilisez Maj-G pour vous rendre une ligne donne du fichier. ** + ** Tapez CTRL-G pour afficher votre position dans le fichier et son tat. + Tapez G pour vous rendre une ligne donne du fichier. ** + +NOTE : Lisez toute cette leon avant d'effectuer l'une des tapes !! - Note: Lisez toute cette leon avant d'effectuer l'une des tapes ! + 1. Maintenez enfonce la touche CTRL et appuyez sur g . On appelle cela + CTRL-G. Une ligne d'tat va apparatre en bas de l'cran avec le nom + du fichier et le numro de la ligne o vous tes. Notez ce numro, il + servira lors de l'tape 3. - 1. Maintenez enfonce la touche Ctrl et appuyez sur G . Une ligne d'tat - va apparatre en bas de l'cran avec le nom du fichier et le numro de la - ligne o vous tes. Notez ce numro, il servira lors de l'tape 3. +NOTE : Vous pouvez peut-tre voir le curseur en bas droite de l'cran. + Ceci arrive quand l'option 'ruler' est active (voir :help 'ruler') - 2. Tapez G majuscule (Maj-G) pour vous rendre la fin du fichier. + 2. Tapez G pour vous dplacer la fin du fichier. + Tapez gg pour vous dplacer au dbut du fichier. - 3. Tapez le numro de la ligne o vous tiez suivi de Maj-G. Cela vous - ramnera la ligne o vous tiez au dpart. - (Lorsque vous tapez les chiffres, ils n'apparaissent PAS l'cran). + 3. Tapez le numro de la ligne o vous tiez suivi de G . Cela vous + ramnera la ligne o vous tiez au dpart quand vous aviez appuy + CTRL-G. 4. Si vous vous sentez prt faire ceci, effectuez les tapes 1 3. - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 4.2 : LA RECHERCHE + Leon 4.2 : LA RECHERCHE - ** Tapez / suivi d'un texte pour rechercher ce texte. ** + ** Tapez / suivi d'un texte pour rechercher ce texte. ** 1. Tapez le caractre / en mode Normal. Notez que celui-ci et le curseur apparaissent en bas de l'cran, comme lorsque l'on utilise : . - 2. Puis tapez 'errreuur' <Entre>. C'est le mot que vous voulez rechercher. + 2. Puis tapez 'errreuur' <Entre>. C'est le mot que vous voulez rechercher. - 3. Pour rechercher nouveau le mme texte, tapez simplement n . - Pour rechercher le mme texte dans la direction oppose, tapez Maj-N . + 3. Pour rechercher nouveau le mme texte, tapez simplement n . + Pour rechercher le mme texte dans la direction oppose, tapez N . - 4. Si vous voulez rechercher un texte vers le haut du fichier, utilisez ? - la place de / . + 4. Pour rechercher une phrase dans la direction oppose, utilisez ? + au lieu de / . ----> erreur ne s'crit pas "errreuur"; errreuur est une erreur. +---> erreur ne s'crit pas "errreuur" ; errreuur est une erreur. -Note: Quand la recherche atteint la fin du fichier, elle reprend au dbut. - +NOTE : Quand la recherche atteint la fin du fichier, elle reprend au dbut + sauf si l'option 'wrapscan' est dactive. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 4.3 : RECHERCHE DES PARENTHSES CORRESPONDANTES + Leon 4.3 : RECHERCHE DES PARENTHSES CORRESPONDANTES - ** Tapez % pour trouver des ), ] ou } correspondants. ** + ** Tapez % pour trouver des ), ] ou } correspondants. ** 1. Placez le curseur sur l'un des (, [ ou { de la ligne marque ---> ci-dessous. 2. Puis tapez le caractre % . - 3. Le curseur devrait se placer sur la parenthse correspondante. + 3. Le curseur se dplacera sur la parenthse out crochet correspondant. - 4. Tapez % pour replacer le curseur sur l'autre parenthse. + 4. Tapez % pour replacer le curseur sur la parenthse ou crochet + correspondant. + + 5. Dplacez le curseur sur un autre (,),[,],{ ou } et regardez ce que + fait % . ---> Voici ( une ligne de test contenant des (, des [ ] et des { } )). -Note: Cette fonctionnalit est trs utile lors du dbogage d'un programme qui - contient des parenthses dsquilibres ! - - +NOTE : Cette fonctionnalit est trs utile lors du dbogage d'un programme qui + contient des parenthses dsquilibres ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 4.4 : UNE MANIRE DE CORRIGER LES ERREURS + Leon 4.4 : LA COMMANDE DE SUBSTITUTION - ** Tapez :s/ancien/nouveau/g pour remplacer 'ancien' par 'nouveau'. ** + ** Tapez :s/ancien/nouveau/g pour remplacer 'ancien' par 'nouveau'. ** 1. Dplacez le curseur sur la ligne marque ---> ci-dessous. 2. Tapez :s/lee/le <Entre> . Notez que cette commande change seulement la - premire occurence sur la ligne. + premire occurrence de "lee" dans la ligne. - 3. Puis tapez :s/lee/le/g qui ordonne de faire une substitution globale - sur la ligne. Cela change toutes les occurences sur la ligne + 3. Puis tapez :s/lee/le/g . L'ajout du drapeau g ordonne de faire une + substitution globale sur la ligne, et change toutes les occurrences de + "lee" sur la ligne. + +---> lee meilleur moment pour regarder lees fleurs est pendant lee printemps. ----> lee meilleur moment pour regarder lees fleurs est pendant lee Printemps. - - 4. Pour changer toutes les occurences d'un texte, entre deux lignes, - tapez :#,#s/ancien/nouveau/g o #,# sont les numros des deux lignes. - Tapez :%s/ancien/nouveau/g pour changer chaque occurence dans tout - le fichier. + 4. Pour changer toutes les occurrences d'un texte, entre deux lignes, + tapez :#,#s/ancien/nouveau/g o #,# sont les numros de lignes de la + plage o la substitution doit tre faite. + Tapez :%s/ancien/nouveau/g pour changer toutes les occurrences dans + tout le fichier. + Tapez :%s/ancien/nouveau/gc pour trouver toutes les occurrences dans + tout le fichier avec une invite pour + confirmer ou infirmer chaque substitution. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RSUM DE LA LEON 4 + RSUM DE LA LEON 4 - 1. Ctrl-G affiche votre position dans le fichier et l'tat de celui-ci. - Maj-G vous place la fin du fichier. Un numro de ligne suivi de Maj-G - vous place cette ligne. + 1. CTRL-G affiche la position dans le fichier et l'tat de celui-ci. + G dplace la fin du fichier. + nombre G dplace au numro de ligne. + gg dplace la premire ligne. 2. Taper / suivi d'un texte recherche ce texte vers l'AVANT. Taper ? suivi d'un texte recherche ce texte vers l'ARRIRE. - Aprs une recherche tapez n pour trouver l'occurence suivante dans la - mme direction ou Maj-N pour rechercher dans la direction oppose. + Aprs une recherche tapez n pour trouver l'occurrence suivante dans la + mme direction ou Maj-N pour rechercher dans la direction oppose. 3. Taper % lorsque le curseur est sur (, ), [, ], { ou } dplace celui-ci sur le caractre correspondant. - 4. Pour remplacer le premier aa par bb sur une ligne tapez :s/aa/bb - Pour remplacer tous les aa par bb sur une ligne tapez :s/aa/bb/g - Pour remplacer du texte entre deux numros de ligne tapez :#,#s/aa/bb/g - Pour remplacer toutes les occurences dans le fichier tapez :%s/aa/bb/g - Pour demander une confirmation chaque fois ajoutez 'c' :%s/aa/bb/gc + 4. Pour remplacer le premier aa par bb sur une ligne tapez :s/aa/bb + Pour remplacer tous les aa par bb sur une ligne tapez :s/aa/bb/g + Pour remplacer du texte entre deux numros de ligne tapez :#,#s/aa/bb/g + Pour remplacer toutes les occurrences dans le fichier tapez :%s/aa/bb/g + Pour demander une confirmation chaque fois ajoutez 'c' :%s/aa/bb/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 5.1 : COMMENT EXCUTER UNE COMMANDE EXTERNE + Leon 5.1 : COMMENT EXCUTER UNE COMMANDE EXTERNE ** Tapez :! suivi d'une commande externe pour excuter cette commande. ** @@ -516,294 +653,386 @@ Note: Cette fonctionnalit est trs utile lors du dbogage d'un programme qui n'importe quelle commande valide pour votre interprteur (shell). 3. Par exemple, tapez ls aprs le ! et appuyez <Entre>. Ceci affichera - la liste des fichiers du dossier courant, comme si vous aviez tap la - commande l'invite du shell. Utilisez :!dir si :!ls ne marche pas. + la liste des fichiers du rpertoire courant, comme si vous aviez tap la + commande l'invite du shell. Utilisez :!dir si :!ls ne marche pas. -Note: Il est possible d'excuter n'importe quelle commande externe de cette - manire. +NOTE : Il est possible d'excuter n'importe quelle commande externe de cette + manire, avec ou sans argument. -Note: Toutes les commandes : doivent finir par la frappe de <Entre>. - +NOTE : Toutes les commandes : doivent finir par la frappe de <Entre>. + partir de maintenant, nous ne le mentionnerons plus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 5.2 : PLUS DE DTAILS SUR L'ENREGISTREMENT DE FICHIERS + Leon 5.2 : PLUS DE DTAILS SUR L'ENREGISTREMENT DE FICHIERS - ** Pour enregistrer les changements faits au fichier, tapez :w FICHIER . ** + ** Pour enregistrer les changements faits au texte, tapez :w FICHIER . ** - 1. Tapez :!dir ou :!ls pour avoir la liste des fichiers du dossier - courant. Vous savez dj qu'il faut appuyer <Entre> aprs cela. + 1. Tapez :!dir ou :!ls pour avoir la liste des fichiers dans le + rpertoire courant. Vous savez dj qu'il faut appuyer <Entre> aprs + cela. 2. Choisissez un nom de fichier qui n'existe pas encore, par exemple TEST. 3. Puis tapez :w TEST (o TEST est le nom que vous avez choisi). - 4. Cela sauvegarde tout le fichier (Tutoriel Vim) sous le nom TEST. - Pour le vrifier, tapez :!dir pour revisualiser le contenu du dossier. + 4. Cela enregistre tout le fichier (Tutoriel Vim) sous le nom TEST. + Pour le vrifier, tapez :!dir ou :!ls de nouveau pour revisualiser + votre rpertoire. -Notez que si vous quittez Vim et y retournez avec le fichier TEST, celui-ci -sera une copie exacte du cours au moment o vous l'avez sauv. +NOTE : Si vous quittez Vim et le redmarrez de nouveau avec le fichier TEST, + celui-ci sera une copie exacte de ce cours au moment o vous l'avez + enregistr. - 5. Maintenant, effacez le fichier en tapant (MS-DOS): :!del TEST - ou (Unix): :!rm TEST + 5. Maintenant, effacez le fichier en tapant (MS-DOS) : :!del TEST + ou (Unix) : :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 5.3 : UN ENREGISTREMENT SLECTIF + Leon 5.3 : SLECTION DU TEXTE ENREGISTRER - ** Pour enregistrer une portion de fichier, tapez :#,#w FICHIER ** + ** Pour enregistrer une portion du fichier, + tapez : v dplacement :w FICHIER ** + + 1. Dplacez le curseur sur cette ligne. - 1. Tapez nouveau :!dir ou :!ls pour visualiser le contenu du dossier - courant et choisissez un nom de fichier, tel que TEST. + 2. Appuyez v et dplacez le curseur vers la cinquime ligne plus bas. + Remarquez que le texte est en surbrillance. - 2. Dplacez le curseur jusqu'en haut de cette page et tapez Ctrl-G pour - connatre le numro de cette ligne. NOTEZ CE NUMRO ! + 3. Appuyez : . En bas de l'cran :'<,'> va apparatre. - 3. Puis rendez-vous au bas de cette page et tapez nouveau Ctrl-G . - NOTEZ GALEMENT CE NUMRO ! + 4. Tapez w TEST , o TEST est un nom de fichier qui n'existe pas. + Vrifiez que vous voyez :'<,'>w TEST avant de d'appuyer sur Entre. - 4. Pour enregistrer SEULEMENT une portion d'un fichier, tapez :#,#w TEST - o #,# sont les deux numros que vous avez nots (haut,bas) et TEST est - le nom du fichier. + 5. Vim va enregistrer les lignes slectionnes dans le fichier TEST. + Utilisez :!dir ou !ls pour le voir. Ne l'effacez pas encore ! + Nous allons l'utiliser dans la leon suivante. - 5. Une fois encore, vrifiez la prsence du fichier avec :!dir mais NE - L'EFFACEZ PAS. +NOTE : L'appui de v dmarre la slection Visuelle. Vous pouvez dplacer le + curseur pour agrandir ou rtrcir la slection. Puis vous pouvez + utiliser un oprateur pour faire quelque chose sur le texte. Par + exemple, d efface le texte. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 5.4 : RCUPRATION ET FUSION DE FICHIERS + Leon 5.4 : RCUPRATION ET FUSION DE FICHIERS - ** Pour insrer le contenu d'un fichier, tapez :r FICHIER ** + ** Pour insrer le contenu d'un fichier, tapez :r FICHIER ** - 1. Tapez :!dir pour vrifier que votre fichier TEST est encore l. - - 2. Placez le curseur en haut de cette page. + 1. Placez le curseur juste au dessus de cette ligne. -NOTE: Aprs avoir suivi l'tape 3 vous verrez l'cran la Leon 5.3. - Dplacez-vous vers le bas jusqu' revenir cette leon. +NOTE : Aprs avoir excut l'tape 2 vous verrez du texte de la Leon 5.3. + Puis dplacez vous vers le bas pour voir cette leon nouveau. - 3. Maintenant rcuprez votre fichier TEST en utilisant la commande :r TEST + 2. Maintenant rcuprez votre fichier TEST en utilisant la commande :r TEST o TEST est le nom de votre fichier. - -NOTE: Le fichier que vous rcuprez est plac l o se trouve le curseur. + Le fichier que vous rcuprez est plac au dessous de la ligne du curseur. 4. Pour vrifier que le fichier a bien t insr, remontez et vrifiez qu'il y a maintenant deux copies de la Leon 5.3, l'originale et celle contenue dans le fichier. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RSUM DE LA LEON 5 - - - 1. :!commande excute une commande externe. - - Quelques exemples pratiques: - (MS-DOS) (Unix) - :!dir :!ls affiche le contenu du dossier courant. - :!del FICHIER :!rm FICHIER efface FICHIER. - - 2. :w FICHIER enregistre le fichier Vim courant sur le disque avec pour - nom FICHIER. - - 3. :#,#w FICHIER enregistre les lignes # # dans le fichier FICHIER. - - 4. :r FICHIER rcupre le fichier FICHIER et l'insre dans le fichier - courant partir de la position du curseur. - - - +NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple, + :r !ls lit la sortie de la commande ls et la place sous la ligne du + curseur. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 6.1 : L'OUVERTURE + RSUM DE LA LEON 5 + + + 1. :!commande excute une commande externe. + + Quelques exemples pratiques : + (MS-DOS) (Unix) + :!dir :!ls affiche le contenu du rpertoire courant. + :!del FICHIER :!rm FICHIER efface FICHIER. + + 2. :w FICHIER enregistre le fichier Vim courant sur le disque avec pour + nom FICHIER. + + 3. v dplacement :w FICHIER sauvegarde les lignes de la slection Visuelle + dans le fichier FICHIER. + + 4. :r FICHIER rcupre le contenu du fichier FICHIER et l'insre sous la + position du curseur. + + 5. :r !dir lit la sortie de la commande dir et l'insre sous la position + du curseur. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leon 6.1 : LA COMMANDE D'OUVERTURE ** Tapez o pour ouvrir une ligne sous le curseur et y aller en Insertion. ** 1. Dplacez le curseur sur la ligne marque ---> ci-dessous. - 2. Tapez o (minuscule) pour ouvrir une ligne SOUS le curseur et vous y - placer en mode Insertion. + 2. Tapez la lettre o minuscule pour ouvrir une ligne SOUS le curseur et + vous y placer en mode Insertion. - 3. Puis recopiez la ligne marque ---> et appuyez sur <chap> pour quitter - le mode Insertion. + 3. Puis tapez du texte et appuyez <chap> pour sortir du mode Insertion. ----> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion. +---> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion. 4. Pour ouvrir une ligne au DESSUS du curseur, tapez simplement un O majuscule, plutt qu'un o minuscule. Faites un essai sur la ligne ci-dessous. -Ouvrez une ligne ci-dessus en tapant MAJ-O lorsque le curseur est ici. +---> Ouvrez une ligne ci-dessus en tapant O lorsque le curseur est ici. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 6.2 : L'AJOUT + Leon 6.2 : LA COMMANDE D'AJOUT - ** Tapez a pour insrer du texte APRS le curseur. ** + ** Tapez a pour insrer du texte APRS le curseur. ** + + 1. Placez le curseur au dbut de la ligne marque ---> ci-dessous. - 1. Placez le curseur la fin de la premire ligne marque ---> ci-dessous - en tapant $ en mode Normal. + 2. Appuyez e jusqu' ce que le curseur soit sur la fin de li . - 2. Tapez un a (minuscule) pour ajouter du texte APRS le caractre situ - sous le curseur. ( A majuscule ajoute du texte la fin de la ligne). + 3. Appuyez a (minuscule) pour ajouter du texte APRS le curseur. -Note: Ceci vite de taper i , le dernier caractre, le texte insrer, - <chap>, curseur--droite, et finalement x , juste pour ajouter du - texte la fin d'une ligne ! + 4. Compltez le mot comme dans la ligne dessous. Appuyez <chap> pour + sortir du mode Insertion. + + 5. Utilisez e pour vous dplacer vers le mot incomplet suivant et + rptez les tapes 3 et 4. - 3. Maintenant, compltez la premire ligne. Notez galement que l'ajout est - identique au mode Insertion, hormis la position o le texte est insr. +---> Cette li vous perm de pratiq l'ajout de t dans une ligne. +---> Cette ligne vous permet de pratiquer l'ajout de texte dans une ligne. ----> Cette ligne vous permet de pratiquer ----> Cette ligne vous permet de pratiquer l'ajout de texte en fin de ligne. +NOTE : a, i, A vont tous dans le mme mode Insertion, la seule diffrence + est l'endroit o les caractres sont insrs. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 6.3 : UNE AUTRE VERSION DU REMPLACEMENT + Leon 6.3 : UNE AUTRE MANIRE DE REMPLACER ** Tapez un R majuscule pour remplacer plus d'un caractre. ** 1. Dplacez le curseur sur la premire ligne marque ---> ci-dessous. + Dplacez le curseur sur le dbut du premier xxx . - 2. Placez le curseur au dbut du premier mot qui diffre de la seconde ligne - marque ---> (le mot 'celle'). + 2. Appuyez maintenant R et tapez le nombre dessous dans la deuxime ligne, + de manire remplacer le xxx . + + 3. Appuyez <chap> pour quitter le mode Remplacement. Notez que le reste de + la ligne demeure inchang. - 3. Puis tapez R et remplacez le reste du texte de la premire ligne en - tapant par dessus celui-ci, de manire rendre la premire ligne - identique la seconde. + 4. Rptez les tapes pour remplacer les xxx restants. + ----> Pour rendre cette ligne identique celle du dessous utilisez le clavier. ----> Pour rendre cette ligne identique la seconde, tapez R et la correction. +---> L'ajout de 123 xxx donne xxx. +---> L'ajout de 123 456 donne 579. - 4. Notez que lorsque vous appuyez <chap>, le texte qui n'a pas encore t - remplac reste. - +NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les + caractres taps effacent un caractre existant. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 6.4 : RGLAGE DES OPTIONS + Leon 6.4 : COPIER ET COLLER DU TEXTE - ** Rglons une option afin que la recherche et la substitution ignorent la - casse des caractres. ** + ** Utilisez l'oprateur y pour copier du texte et p pour le coller ** + + 1. Allez la ligne marque ---> ci-dessous et placez le curseur aprs "a)". + + 2. Dmarrez le mode Visuel avec v et dplacez le curseur juste devant + "premier". + + 3. Tapez y pour copier le texte en surbrillance. + + 4. Dplacez la curseur la fin de la ligne suivante : j$ + + 5. Tapez p pour coller le texte. Puis tapez : un second <chap> . - 1. Recherchez 'ignore' en tapant /ignore . + 6. Utilisez le mode Visuel pour slectionner "lment", copiez le avec y , + dplacez vous la fin de la ligne suivant avec j$ et collez le texte + cet endroit avec p . + +---> a) ceci est le premier lment. + b) + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leon 6.4 : RGLAGE DES OPTIONS + + + ** Rglons une option afin que la recherche et la substitution ignore la + casse des caractres. ** + + 1. Recherchez 'ignore' en tapant : /ignore <Entre> Rptez ceci plusieurs fois en utilisant la touche n . - 2. Activez l'option 'ic' (Ignorer casse) en tapant :set ic . + 2. Activez l'option 'ic' (ignorer casse) en tapant :set ic . - 3. Puis poursuivez votre recherche en utilisant n . - Rptez cette recherche plusieurs fois avec la touche n . + 3. Puis cherchez 'ignore' de nouveau en utilisant n . + Remarquez que Ignore et IGNORE sont maintenant aussi trouvs. 4. Activez les options 'hlsearch' et 'incsearch' avec :set hls is . 5. Puis recommencez une recherche, et faites bien attention ce qui se - produit: /ignore . + produit : /ignore <Entre> + + 6. Pour dsactiver 'ignorer casse', entrez : :set noic - 6. Pour interrompre la mise en surbrillance des rsultats, tapez: - :nohlsearch +NOTE : Pour enlever la surbrillance des rsultats, entrez : :nohlsearch + +NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez + \c dans la phrase : /ignore\c <Entre> + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RSUM DE LA LEON 6 + RSUM DE LA LEON 6 - 1. Taper o ouvre une ligne SOUS le curseur et y place celui-ci en mode - Insertion. Taper un O majuscule ouvre une ligne au DESSUS de la ligne - o se trouve le curseur. + 1. Taper o ouvre une ligne SOUS le curseur et dmarre le mode Insertion. + Taper O ouvre une ligne au DESSUS du curseur. + + 2. Taper a pour insrer du texte APRS le curseur. + Taper A pour insrer du texte aprs la fin de ligne. + + 3. Taper e dplace la fin du mot. + + 4. Taper y copie du texte, p le colle. - 2. Tapez un a pour insrer du texte APRS le caractre o se trouve le - curseur. Taper un A majuscule ajoute du texte automatiquement la fin - de la ligne. + 5. Taper R majuscule active le mode Remplacement jusqu' ce qu' <chap> + soit appuy. - 3. Taper un R majuscule active le mode Remplacement jusqu' ce que la - touche <chap> soit appuye pour en sortir. + 6. Taper ":set xxx" active l'option "xxx". Quelques options sont : + 'ic' 'ingnorecase' pour ignorer la casse lors des recherches. + 'is' 'incsearch' pour montrer les appariements partiels. + 'hls' 'hlsearch' pour mettre en surbrillance les appariements. - 4. Taper :set xxx active l'option 'xxx'. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leon 7.1 : OBTENIR DE L'AIDE + ** Utiliser le systme d'aide en ligne. ** + + Vim a un systme complet d'aide en ligne. Pour y accder, essayez l'une de + ces trois mthodes : + - appuyez la touche <Help> (si vous en avez une) + - appuyez la touche <F1> (si vous en avez une) + - tapez :help <Entre> + Lisez le texte dans la fentre d'aide pour savoir comment fonctionne l'aide. + Tapez CTRL-W CTRL-W pour sauter d'une fentre l'autre. + Tapez :q <Entre> pour fermer la fentre d'aide. + Vous pouvez accder l'aide sur peu prs n'importe quel sujet en donnant + des arguments la commande :help . Essayez par exemple (n'oubliez pas + d'appuyer sur <Entre>) : + + :help w + :help c_CTRL-D + :help c_<T + :help insert-index + :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 7 : ACCDER L'AIDE EN LIGNE + Leon 7.2 : CRER UN SCRIPT DE DMARRAGE - ** Utiliser le systme d'aide en ligne. ** + ** Activer les fonctionnalits de Vim. ** - Vim a un systme complet d'aide en ligne. Pour y accder, essayez l'une de - ces trois mthodes: - - appuyez la touche <Help> (si vous en avez une) - - appuyez la touche <F1> (si vous en avez une) - - tapez :help <Entre> + Vim a beaucoup plus de fonctionnalits que Vi, mais la plupart de celles-ci + sont dsactives par dfaut. Pour commencer les utiliser, vous devez + crer un fichier "vimrc". - Tapez :q <Entre> pour fermer la fentre d'aide. + 1. Commencez diter le fichier "vimrc". Ceci dpend de votre systme : + :edit ~/.vimrc pour Unix + :edit $VIM/_vimrc pour MS-Windows + + 2. Lisez maintenant le fichier d'exemple "vimrc" : + :r $VIMRUNTIME/vimrc_example.vim - Vous pouvez accder l'aide sur peu prs n'importe quel sujet en donnant - des arguments la commande :help . Essayez par exemple (n'oubliez pas - d'appuyer sur <Entre>): + 3. Enregistrez le fichier avec : + :w - :help w - :help c_<T - :help insert-index - :help user-manual + La prochaine fois que vous dmarrerez Vim, la coloration syntaxique sera + active. Vous pouvez ajouter tous vos rglages prfrs dans ce fichier + "vimrc". Pour plus d'informations, tapez :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leon 8 : CRER UN SCRIPT DE DMARRAGE + Leon 7.3 : COMPLTEMENT + - ** Activer les fonctionnalits de Vim. ** + ** Compltement de ligne de commande avec CTRL-D et <TAB> ** + + 1. Mettez Vim soit en mode non compatible : set nocp + + 2. Regardez quels fichiers existent dans le rpertoire : !ls ou !dir - Vim a beaucoup plus de fonctionnalits que Vi, mais la plupart de celles-ci - sont dsactives par dfaut. Pour commencer les utiliser, vous devez - crer un fichier "vimrc". + 3. Tapez le dbut d'une commande : :e + + 4. Appuyez CTRL-D et Vim affichera une liste de commandes qui commencent + par "e". + + 5. Appuyez <TAB> et Vim compltera le nom de la commande : ":edit" + + 6. Ajoutez maintenant un espace et le dbut d'un fichier existant : + :edit FIC + + 7 Appuyez <TAB>. Vim va complter le nom (s'il est unique). - 1. Commencez diter le fichier "vimrc". Ceci dpend de votre systme: - :edit ~/.vimrc pour Unix - :edit $VIM/_vimrc pour MS-Windows +NOTE : Le compltement fonctionne pour de nombreuse commandes. Essayez + d'appuyer CTRL-D et <TAB>. C'est utile en particulier pour :help . + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RSUM DE LA LEON 7 + + + 1. Tapez :help ou appuyez <F1> ou <Aide> pour ouvrir la fentre d'aide. - 2. Intgrez maintenant le texte du fichier "vimrc" d'exemple: - :read $VIMRUNTIME/vimrc_example.vim + 2. Tapez :help cmd pour trouver l'aide sur cmd . + + 3. Tapez CTRL-W CTRL-W pour sauter une autre fentre. - 3. Enregistrez le fichier avec: - :write + 4. Tapez :q pour fermer la fentre d'aide. - La prochaine fois que vous dmarrerez Vim, le surlignage syntactique sera - activ. Vous pouvez ajouter tous vos rglages prfrs dans ce fichier. + 5. Crez un script de dmarrage vimrc pour conserver vos rglages prfrs. + + 6. Quand vous tapez une commande : appuyez CTRL-D pour voir les + compltements possibles. Appuyez <TAB> pour utiliser un compltement. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ceci conclut le Tutoriel Vim. Le but tait de vous donner un bref aperu de + Ceci conclut le Tutoriel Vim. Le but tait de vous donner un bref aperu de l'diteur Vim, juste assez pour vous permettre d'utiliser l'diteur - relativement facilement. Il est loin d'tre complet, vu que Vim a beaucoup - beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en - anglais: :help user-manual . + relativement facilement. Il est loin d'tre complet, vu que Vim a beaucoup + beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en + anglais : :help user-manual . Pour continuer dcouvrir et apprendre Vim, il existe un livre traduit en franais. Il parle plus de Vi que de Vim, mais pourra vous tre utile. - L'diteur Vi - Collection Prcis et concis - par Arnold Robbins - diteur: O'Reilly France - ISBN: 2-84177-102-4 + L'diteur Vi - Collection Prcis et concis - par Arnold Robbins + diteur : O'Reilly France + ISBN : 2-84177-102-4 Deux livres en anglais sont galement mentionns dans la version originale de ce tutoriel, dont un qui traite spcifiquement de Vim. Merci de vous y - rfrer si vous tes intress. + rfrer si vous tes intresss. Ce tutoriel a t crit par Michael C. Pierce et Robert K. Ware de l'cole des Mines du Colorado et reprend des ides fournies par Charles Smith, - Universt d'tat du Colorado. E-mail: bware@mines.colorado.edu. + Universit d'tat du Colorado. E-mail : bware@mines.colorado.edu. Modifi pour Vim par Bram Moolenar. + Traduit en Franais par Adrien Beau, en avril 2001. + Dernires mises jour par Dominique Pell. - Traduit en Franais par Adrien Beau, en avril 2001. - E-mail: version.francaise@free.fr - Last Change: 2003 May 29 + E-mail : dominique.pelle@gmail.com + Last Change : 2008 Nov 23 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.fr.utf-8 +++ b/runtime/tutor/tutor.fr.utf-8 @@ -1,5 +1,5 @@ =============================================================================== -= B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.5.fr.2 = += B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.7.fr.1 = =============================================================================== Vim est un éditeur très puissant qui a trop de commandes pour pouvoir @@ -7,93 +7,100 @@ décrire suffisamment afin de vous permettre d'utiliser simplement Vim. Le temps requis pour suivre ce cours est d'environ 25 à 30 minutes, selon - le temps que vous passerez à expérimenter. Les commandes utilisées dans - les leçons modifieront le texte. Faites une copie de ce fichier afin de - vous entraîner dessus (si vous avez lancé "vimtutor" ceci est déjà une - copie). + le temps que vous passerez à expérimenter. + + ATTENTION : + Les commandes utilisées dans les leçons modifieront le texte. Faites une + copie de ce fichier afin de vous entraîner dessus (si vous avez lancé + "vimtutor" ceci est déjà une copie). Il est important de garder en tête que ce cours est conçu pour apprendre - par la pratique. Cela signifie que vous devez exécuter les commandes - pour les apprendre correctement. Si vous vous contentez de lire le - texte, vous oublierez les commandes ! + par la pratique. Cela signifie que vous devez exécuter les commandes + pour les apprendre correctement. Si vous vous contentez de lire le texte, + vous oublierez les commandes ! - Maintenant, vérifiez que votre clavier n'est PAS verouillé en majuscules, - et appuyez la touche j le nombre de fois suffisant pour que la leçon - 1.1 remplisse complètement l'écran. + Maintenant, vérifiez que votre clavier n'est PAS verrouillé en + majuscules, et appuyez la touche j le nombre de fois suffisant pour + que la Leçon 1.1 remplisse complètement l'écran. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.1 : DÉPLACEMENT DU CURSEUR + Leçon 1.1 : DÉPLACEMENT DU CURSEUR ** Pour déplacer le curseur, appuyez les touches h,j,k,l comme indiqué. ** - ^ - k Astuce: La touche h est à gauche et déplace à gauche. - < h l > La touche l est à droite et déplace à droite. - j La touche j ressemble à une flèche vers le bas. - v + ^ + k Astuce : La touche h est à gauche et déplace à gauche. + < h l > La touche l est à droite et déplace à droite. + j La touche j ressemble à une flèche vers le bas. + v 1. Déplacez le curseur sur l'écran jusqu'à vous sentir à l'aise. 2. Maintenez la touche Bas (j) enfoncée jusqu'à ce qu'elle se répète. ----> Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante. + Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante. 3. En utilisant la touche Bas, allez à la Leçon 1.2. -Note: Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap> - pour revenir en mode Normal. Puis retapez la commande que vous vouliez. +NOTE : Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap> + pour revenir en mode Normal. Puis retapez la commande que vous vouliez. -Note: Les touches fléchées devraient également fonctionner. Mais en utilisant - hjkl vous pourrez vous déplacer beaucoup plus rapidement, une fois que - vous aurez pris l'habitude. +NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisant + hjkl vous pourrez vous déplacer beaucoup plus rapidement, une fois que + vous aurez pris l'habitude. + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.2 : ENTRÉE ET SORTIE DE VIM + Leçon 1.2 : SORTIR DE VIM - !! NOTE: Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !! + !! NOTE : Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !! - 1. Appuyez la touche <Échap> (pour être sûr d'être en mode Normal). - - 2. Tapez: :q! <Entrée> + 1. Appuyez la touche <Échap> (pour être sûr d'être en mode Normal). ----> Ceci quitte l'éditeur SANS sauver les changements que vous avez faits. - Si vous voulez enregistrer les changements et sortir, tapez: - :wq <Entrée> + 2. Tapez : :q! <Entrée> + Ceci quitte l'éditeur SANS enregistrer les changements que vous avez + faits. - 3. Lorsque l'invite du 'shell' vous sera présentée, tapez la commande qui - vous a amené dans ce tutoriel. Cela pourrait être: vimtutor <Entrée> - Normalement, vous utiliseriez: vim tutor <Entrée> - ----> 'vim' lance l'éditeur, 'tutor' est le fichier que vous souhaitez éditer. + 3. Lorsque l'invite du shell vous sera présentée, tapez la commande qui + vous a mené dans ce tutoriel. Cela pourrait être : vimtutor <Entrée> 4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes - 1 à 3 pour sortir puis rentrer dans l'éditeur. Déplacez ensuite le - curseur jusqu'à la Leçon 1.3. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT + 1 à 3 pour sortir puis rentrer dans l'éditeur. + +NOTE : :q! <Entrée> annule tous le changements que vous avez fait. Dans + quelques leçons, vous apprendrez à enregistrer les changements. + + 5. Déplacez le curseur à la Leçon 1.3. - ** En mode Normal, appuyez x pour effacer le caractère sous le curseur. ** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT + + + ** Appuyez x pour effacer le caractère sous le curseur. ** 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. 2. Pour corriger les erreurs, déplacez le curseur jusqu'à ce qu'il soit sur un caractère à effacer. - 3. Appuyez la touche x pour effacer le caractère redondant. + 3. Appuyez la touche x pour effacer le caractère redondant. 4. Répétez les étapes 2 à 4 jusqu'à ce que la phrase soit correcte. ---> La vvache à sautéé au-ddessus dde la luune. - 5. Maintenant que la ligne est correcte, passez à la leçon 1.4. + 5. Maintenant que la ligne est correcte, passez à la Leçon 1.4. -NOTE: En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par - la pratique. +NOTE : En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par + la pratique. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 1.4 : ÉDITION DE TEXTE - INSERTION + Leçon 1.4 : ÉDITION DE TEXTE - INSERTION - ** En mode Normal, appuyez i pour insérer du texte. ** + ** Appuyez i pour insérer du texte. ** 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. @@ -108,38 +115,94 @@ NOTE: En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par ---> Il mnqe caractères cette . ---> Il manque des caractères dans cette ligne. - 5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez au - résumé ci-dessous. + 5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez à la + Leçon 1.5. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 1.5 : ÉDITION DE TEXTE - AJOUTER + + + ** Appuyez A pour ajouter du text. ** + + 1. Déplacez le curseur sur la première ligne ci-dessous marquée --->. + Peu importe sur quel caractère se trouve le curseur sur cette ligne. + + 2. Appuyez A et tapez les ajouts nécessaires. + + 3. Quand le texte a été ajouté, appuyez <Échap> pour revenir en mode + Normal. + + 4. Déplacez le curseur sur la seconde ligne marquée ---> et répétez les + étapes 2 et 3 pour corriger la phrase. + +---> Il manque du texte à partir de cet + Il manque du texte à partir de cette ligne. +---> Il manque aussi du te + Il manque aussi du texte ici. + + 5. Quand vous vous sentez suffisamment à l'aise pour ajouter du texte, + allez à la Leçon 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 1 + Leçon 1.6 : ÉDITER UN FICHIER + + + ** Utilisez :wq pour enregistrer un fichier et sortir. ** + +!! NOTE : Lisez toute la leçon avant d'exécuter les instructions ci-dessous !! + + 1. Sortez de ce tutoriel comme vous l'avez fait dans la Leçon 1.2 : :q! + Ou, si vous avez accès à un autre terminal, exécutez y les actions + qui suivent. + + 2. À l'invite du shell, tapez cette commande : vim tutor <Entrée> + 'vim' est la commande pour démarrer l'éditeur Vim, 'tutor' est le + nom du fichier que vous souhaitez éditer. Utilisez un fichier qui peut + être modifié. + + 3. Insérez et effacez du texte comme vous l'avez appris dans les leçons + précédentes. + + 4. Enregistrez le fichier avec les changements et sortez de Vim avec : + :wq <Entrée> + + 5. Si vous avez quitté vimtutor à l'étape 1, recommencez vimtutor et + déplacez-vous en bas vers le résumé suivant. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 1 + 1. Le curseur se déplace avec les touches fléchées ou les touches hjkl. - h (gauche) j (bas) k (haut) l (droite) + h (gauche) j (bas) k (haut) l (droite) - 2. Pour entrer dans Vim (à l'invite %) tapez: vim FICHIER <Entrée> + 2. Pour démarrer Vim à l'invite du shell tapez : vim FICHIER <Entrée> - 3. Pour quitter Vim tapez: <Échap> :q! <Entrée> pour perdre tous les - changements. - OU tapez: <Échap> :wq <Entrée> pour enregistrer les - changements. + 3. Pour quitter Vim tapez : <Échap> :q! <Entrée> pour perdre tous les + changements. + OU tapez : <Échap> :wq <Entrée> pour enregistrer les + changements. - 4. Pour effacer un caractère sous le curseur en mode Normal tapez: x + 4. Pour effacer un caractère sous le curseur tapez : x - 5. Pour insérer du texte au niveau du curseur en mode Normal tapez: - i tapez le texte <Échap> + 5. Pour insérer ou ajouter du texte tapez : + i tapez le texte à insérer avant le curseur <Échap> + A tapez le texte à ajouter après le curseur <Échap> -NOTE: Appuyer <Échap> vous place en mode Normal ou annule une commande - partiellement tapée dont vous ne voudriez plus. +NOTE : Appuyer <Échap> vous place en mode Normal ou annule une commande + partiellement tapée dont vous ne voulez plus. -Passez maintenant à la Leçon 2. +Passez maintenant à la leçon 2. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.1 : EFFACEMENTS + Leçon 2.1 : COMMANDES D'EFFACEMENT - ** Tapez dw pour effacer jusqu'à la fin d'un mot. ** + ** Tapez dw pour effacer un mot. ** 1. Appuyez <Échap> pour être sûr d'être en mode Normal. @@ -147,91 +210,139 @@ Passez maintenant à la Leçon 2. 3. Placez le curseur sur le début d'un mot qui a besoin d'être effacé. - 4. Tapez dw pour faire disparaître ce mot. + 4. Tapez dw pour faire disparaître ce mot. -NOTE: Les lettres dw apparaîtront sur la dernière ligne de l'écran lors de - votre frappe. Si vous avez mal tapé quelque chose, appuyez <Échap> et - recommencez. +NOTE : La lettre d apparaîtra sur la dernière ligne de l'écran lors de + votre frappe. Vim attend que vous tapiez w . Si vous voyez un autre + caractère que d vous avez tapé autre chose ; appuyez <Échap> et + recommencez. ---> Il y a quelques drôle mots qui n'ont rien à faire papier sur cette ligne. 5. Répétez les étapes 3 et 4 jusqu'à ce que la phrase soit correcte et allez à la Leçon 2.2. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.2 : PLUS D'EFFACEMENTS + Leçon 2.2 : PLUS DE COMMANDES D'EFFACEMENTS - ** Tapez d$ pour effacer jusqu'à la fin de la ligne. ** + ** Tapez d$ pour effacer jusqu'à la fin de la ligne. ** 1. Appuyez <Échap> pour être sûr d'être en mode Normal. 2. Déplacez le curseur sur la ligne marquée ---> ci-dessous. - 3. Déplacez le curseur jusqu'à la fin correcte de la ligne - (APRÈS le premier . ). + 3. Déplacez le curseur jusqu'à la fin de la ligne correcte (APRÈS le + premier . ). - 4. Tapez d$ pour effacer jusqu'à la fin de la ligne. + 4. Tapez d$ pour effacer jusqu'à la fin de la ligne. ---> Quelqu'un a tapé la fin de cette ligne deux fois. cette ligne deux fois. 5. Allez à la Leçon 2.3 pour comprendre ce qui se passe. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.3 : À PROPOS DES OPÉRATEURS ET DES MOUVEMENTS + Plusieurs commandes qui changent le texte sont constituées d'un opérateur + et d'un mouvement. Le format pour une commande d'effacement avec l'opérateur + d d'effacement est le suivant : + + d mouvement + + Où : + d - est l'opérateur d'effacement + mouvement - est le mouvement sur lequel agit l'opérateur (listés + ci-dessous) + + Une courte liste de mouvements : + w - jusqu'au début du prochain mot, en EXCLUANT son premier caractère. + e - jusqu'à la fin du mot courant, en EXCLUANT son denier caractère. + $ - jusqu'à la fin de la ligne, en INCLUANT son dernier caractère. + + Ainsi, taper de va effacer depuis le curseur jusqu'à la fin du mot. + +NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le + curseur comme indiqué. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.3 : DES COMMANDES ET DES OBJETS + Leçon 2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT - Le format de la commande d'effacement d est le suivant: + ** Taper un nombre avant un mouvement le répète autant de fois. ** - [nombre] d objet OU d [nombre] objet - où: - nombre - est combien de fois exécuter la commande (optionnel, défaut: 1). - d - est la commande d'effacement. - objet - est ce sur quoi la commande va opérer (liste ci-dessous). + 1. Déplacez le curseur au début de la ligne marquée ---> ci-dessous. + + 2. Tapez 2w pour déplacer le curseur de 2 mots vers l'avant. - Une courte liste d'objets: - w - du curseur jusqu'à la fin du mot, y compris l'espace qui suit. - e - du curseur jusqu'à la fin du mot, SANS l'espace qui suit. - $ - du curseur jusqu'à la fin de la ligne. + 3. Tapez 3e pour déplacer le curseur à la fin du troisième mot vers + l'avant. + + 4. Tapez 0 (zéro) pour déplacer au début de la ligne. -NOTE: Pour les aventureux, le seul appui d' objet en mode Normal, sans - commande, déplace le curseur comme indiqué dans la liste des objets. + 5. Répétez les étapes 2 et 3 avec des quantificateurs différents. +---> Ceci est juste une ligne avec des mots où vous pouvez vous déplacer. + 6. Déplacez-vous à la Leçon 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.4 : UNE EXCEPTION À 'COMMANDE-OBJET' + Leçon 2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS + + + ** Taper un nombre avec un opérateur le répète autant de fois. ** + + Outre la combinaison de l'opérateur d'effacement avec un déplacement + mentionné ci-dessus, vous pouvez insérer un nombre (quantificateur) + pour effacez encore plus : + d nombre déplacement + + 1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne + marquée --->. - ** Tapez dd pour effacer une ligne complète. ** + 2. Tapez d2w pour effacer les deux mots en MAJUSCULES. + + 3. Répétez les étapes 1 et 2 avec des quantificateurs différents pour + effacer les mots suivants en MAJUSCULES à l'aide d'une commande. + +---> Cette ABC DE ligne FGHI JK LMN OP de mots est Q RS TUV nettoyée. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 2.6 : OPÉREZ SUR DES LIGNES + + + ** Tapez dd pour effacer une ligne complète. ** Vu le nombre de fois où l'on efface des lignes complètes, les concepteurs - de Vi ont décidé qu'il serait plus facile de taper simplement deux d à la - suite pour effacer une ligne. + de Vi ont décidé qu'il serait plus facile de taper simplement deux d + pour effacer une ligne. 1. Placez le curseur sur la seconde ligne de la phrase ci-dessous. - 2. Tapez dd pour effacer la ligne. + 2. Tapez dd pour effacer la ligne. 3. Maintenant allez à la quatrième ligne. - 4. Tapez 2dd (rappelez-vous, nombre-commande-objet) pour effacer les - deux lignes. + 4. Tapez 2dd pour effacer deux lignes. - 1) Les roses sont rouges, - 2) La boue c'est drôle, - 3) Les violettes sont bleues, - 4) J'ai une voiture, - 5) Les horloges donnent l'heure, - 6) Le sucre est doux - 7) Tout comme vous. +---> 1) Les roses sont rouges, +---> 2) La boue c'est drôle, +---> 3) Les violettes sont bleues, +---> 4) J'ai une voiture, +---> 5) Les horloges donnent l'heure, +---> 6) Le sucre est doux +---> 7) Tout comme vous. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 2.5 : L'ANNULATION + Leçon 2.7 : L'ANNULATION + - ** Tapez u pour annuler les dernières commandes. ** - ** Tapez U pour récupérer toute une ligne. ** + ** Tapez u pour annuler les dernières commandes. ** + ** Tapez U pour récupérer toute une ligne. ** 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous et placez-le sur la première erreur. @@ -239,10 +350,10 @@ NOTE: Pour les aventureux, le seul appui 3. Puis tapez u pour annuler la dernière commande exécutée. 4. Cette fois, corrigez toutes les erreurs de la ligne avec la commande x . 5. Puis tapez un U majuscule pour remettre la ligne dans son état initial. - 6. Puis tapez u deux-trois fois pour annuler le U et les commandes + 6. Puis tapez u deux-trois fois pour annuler le U et les commandes précédentes. - 7. Maintenant tapez Ctrl-R (maintenez la touche Ctrl enfoncée pendant que - vous appuyez sur R) deux-trois fois pour refaire les commandes (annuler + 7. Maintenant tapez CTRL-R (maintenez la touche CTRL enfoncée pendant que + vous appuyez R) deux-trois fois pour refaire les commandes (annuler les annulations). ---> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'. @@ -250,57 +361,64 @@ NOTE: Pour les aventureux, le seul appui 8. Ce sont des commandes très utiles. Maintenant, allez au résumé de la Leçon 2. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 2 + RÉSUMÉ DE LA LEÇON 2 - 1. Pour effacer du curseur jusqu'à la fin d'un mot tapez: dw + 1. Pour effacer du curseur jusqu'au mot suivant tapez : dw - 2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez: d$ + 2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez : d$ + + 3. Pour effacer toute une ligne tapez : dd - 3. Pour effacer toute une ligne tapez: dd + 4. Pour répéter un déplacement ajoutez un quantificateur : 2w - 4. Le format d'une commande en mode Normal est: + 5. Le format d'une commande de changement est : + + opérateur [nombre] déplacement - [nombre] commande objet OU commande [nombre] objet - où: - nombre - est combien de fois répéter la commande - commande - est ce qu'il faut faire, par exemple d pour effacer - objet - est ce sur quoi la commande devrait agir, par exemple w (mot), - $ (jusqu'à la fin de la ligne), etc. + Où : + opérateur - est ce qu'il faut faire, comme d pour effacer. + [nombre] - un quantificateur optionnel pour répéter le déplacement. + déplacement - déplace le long du texte à opérer, tel que w (mot), + $ (jusqu'à la fin de ligne), etc. - 5. Pour annuler des actions précédentes, tapez: u (u minuscule) - Pour annuler tous les changements sur une ligne tapez: U (U majuscule) - Pour annuler l'annulation tapez: Ctrl-R + 6. Pour se déplacer au début de ligne, utilisez un zéro : 0 + + 5. Pour annuler des actions précédentes, tapez : u (u minuscule) + Pour annuler tous les changements sur une ligne tapez : U (U majuscule) + Pour annuler l'annulation tapez : CTRL-R + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.1 : LE COLLAGE + Leçon 3.1 : LE COLLAGE - ** Tapez p pour placer après le curseur ce qui vient d'être effacé. ** + ** Tapez p pour placer après le curseur ce qui vient d'être effacé. ** - 1. Placez le curseur sur la première ligne du "poème" ci-dessous. + 1. Placez le curseur sur la première ligne ci-dessous marquée --->. - 2. Tapez dd pour effacer la ligne et la placer dans le tampon de Vim. + 2. Tapez dd pour effacer la ligne et la placer dans un registre de Vim. - 3. Déplacez le curseur sur la ligne qui PRÉCÈDE l'endroit où vous voulez - remettre la ligne effacée. + 3. Déplacez le curseur sur la ligne c) au dessus où vous voulez remettre la + ligne effacée. - 4. En mode Normal, tapez p pour remettre la ligne. + 4. En mode Normal, tapez p pour remettre la ligne en dessous du curseur. 5. Répétez les étapes 2 à 4 pour mettre toutes les lignes dans le bon ordre. - d) Et vous, qu'apprenez-vous ? - b) Les violettes sont bleues, - c) L'intelligence s'apprend, - a) Les roses sont rouges, +---> d) Et vous, qu'apprenez-vous ? +---> b) Les violettes sont bleues, +---> c) L'intelligence s'apprend, +---> a) Les roses sont rouges, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.2 : LE REMPLACEMENT + Leçon 3.2 : LA COMMANDE DE REMPLACEMENT - ** Tapez r et un caractère pour remplacer le caractère sous le curseur. ** + ** Tapez rx pour remplacer un caractère sous le curseur par x . ** 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. @@ -308,31 +426,32 @@ NOTE: Pour les aventureux, le seul appui 3. Tapez r suivi du caractère qui doit corriger l'erreur. - 4. Répétez les étapes 2 et 3 jusqu'à ce que la première ligne soit correcte. + 4. Répétez les étapes 2 et 3 jusqu'à ce que la première ligne soit égale + à la seconde. ---> Quand cette ligne a été sauvie, quelqu'un a lait des faunes de frappe ! ---> Quand cette ligne a été saisie, quelqu'un a fait des fautes de frappe ! 5. Maintenant, allez à la Leçon 3.3. -NOTE: N'oubliez pas que vous devriez apprendre par la pratique, pas par - mémorisation. +NOTE : N'oubliez pas que vous devriez apprendre par la pratique, pas par + mémorisation. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.3 : LE CHANGEMENT + Leçon 3.3 : L'OPÉRATEUR DE CHANGEMENT - ** Pour changer tout ou partie d'un mot, tapez cw .** + ** Pour changer jusqu'à la fin d'un mot, tapez ce .** 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. - 2. Placez le curseur sur le u de luhko. + 2. Placez le curseur sur le u de luhko. - 3. Tapez cw et corrigez le mot (dans notre cas, tapez 'igne'.) + 3. Tapez ce et corrigez le mot (dans notre cas, tapez 'igne'.) - 4. Appuyez <Échap> et placez-vous sur l'erreur suivante (le premier - caractère qui doit être changé). + 4. Appuyez <Échap> et placez-vous sur le prochain caractère qui doit + être changé). 5. Répétez les étapes 3 et 4 jusqu'à ce que la première phrase soit identique à la seconde. @@ -340,171 +459,189 @@ NOTE: N'oubliez pas que vous devriez app ---> Cette luhko contient quelques myqa qui ont ricne d'être chantufip. ---> Cette ligne contient quelques mots qui ont besoin d'être changés. -Notez que cw efface le mot et vous place ensuite en mode Insertion. +Notez que ce efface le mot et vous place ensuite en mode Insertion. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c + Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c - ** Le changement fonctionne avec les mêmes objets que l'effacement. ** + ** L'opérateur de changement fonctionne avec les mêmes déplacements + que l'effacement. ** - 1. Le changement fonctionne de la même manière que l'effacement. - Le format est: + 1. L'opérateur de changement fonctionne de la même manière que + l'effacement. Le format est : - [nombre] c objet OU c [nombre] objet + c [nombre] déplacement - 2. Les objets sont également les mêmes: w (mot), $ (fin de ligne), etc. + 2. Les déplacements sont identiques : w (mot) et $ (fin de ligne). - 3. Déplacez-vous à la première ligne marquée ---> ci-dessous. + 3. Déplacez-vous sur la première ligne marquée ---> ci-dessous. 4. Placez le curseur sur la première erreur. - 5. Tapez c$ pour changer la fin de la ligne, rendez-là identique à la - seconde ligne, puis tapez <Échap>. + 5. Tapez c$ et tapez le reste de la ligne afin qu'elle soit identique + à la seconde ligne, puis tapez <Échap>. ---> La fin de cette ligne doit être rendue identique à la seconde. ----> La fin de cette ligne doit être corrigée avec la commande c$ . +---> La fin de cette ligne doit être corrigée avec la commande c$ . + +NOTE : Vous pouvez utilisez la touche Retour Arrière pour corriger les + erreurs lorsque vous tapez. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 3 + RÉSUMÉ DE LA LEÇON 3 - 1. Pour remettre du texte qui vient d'être effacé, tapez p . Cela Place le + 1. Pour remettre le texte qui a déjà été effacé, tapez p . Cela Place le texte effacé APRÈS le curseur (si une ligne complète a été effacée, elle sera placée sous la ligne du curseur). 2. Pour remplacer le caractère sous le curseur, tapez r suivi du caractère qui remplacera l'original. - 3. Le changement vous permet de changer l'objet spécifié, du curseur jusqu'à - la fin de l'objet. Par exemple, tapez cw pour changer du curseur - jusqu'à la fin du mot, c$ pour changer jusqu'à la fin d'une ligne. + 3. L'opérateur de changement vous permet de changer depuis la position du + curseur jusqu'où le déplacement vous amène. Par exemple, tapez ce + pour changer du curseur jusqu'à la fin du mot, c$ pour changer jusqu'à + la fin d'une ligne. - 4. Le format pour le changement est: + 4. Le format pour le changement est : - [nombre] c objet OU c [nombre] objet + c [nombre] déplacement Passez maintenant à la leçon suivante. - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.1 : POSITION ET ÉTAT DU FICHIER + Leçon 4.1 : POSITION DU CURSEUR ET ÉTAT DU FICHIER - ** Tapez Ctrl-G pour afficher votre position dans le fichier et son état. - Utilisez Maj-G pour vous rendre à une ligne donnée du fichier. ** + ** Tapez CTRL-G pour afficher votre position dans le fichier et son état. + Tapez G pour vous rendre à une ligne donnée du fichier. ** + +NOTE : Lisez toute cette leçon avant d'effectuer l'une des étapes !! - Note: Lisez toute cette leçon avant d'effectuer l'une des étapes ! + 1. Maintenez enfoncée la touche CTRL et appuyez sur g . On appelle cela + CTRL-G. Une ligne d'état va apparaître en bas de l'écran avec le nom + du fichier et le numéro de la ligne où vous êtes. Notez ce numéro, il + servira lors de l'étape 3. - 1. Maintenez enfoncée la touche Ctrl et appuyez sur G . Une ligne d'état - va apparaître en bas de l'écran avec le nom du fichier et le numéro de la - ligne où vous êtes. Notez ce numéro, il servira lors de l'étape 3. +NOTE : Vous pouvez peut-être voir le curseur en bas à droite de l'écran. + Ceci arrive quand l'option 'ruler' est activée (voir :help 'ruler') - 2. Tapez G majuscule (Maj-G) pour vous rendre à la fin du fichier. + 2. Tapez G pour vous déplacer à la fin du fichier. + Tapez gg pour vous déplacer au début du fichier. - 3. Tapez le numéro de la ligne où vous étiez suivi de Maj-G. Cela vous - ramènera à la ligne où vous étiez au départ. - (Lorsque vous tapez les chiffres, ils n'apparaissent PAS à l'écran). + 3. Tapez le numéro de la ligne où vous étiez suivi de G . Cela vous + ramènera à la ligne où vous étiez au départ quand vous aviez appuyé + CTRL-G. 4. Si vous vous sentez prêt à faire ceci, effectuez les étapes 1 à 3. - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.2 : LA RECHERCHE + Leçon 4.2 : LA RECHERCHE - ** Tapez / suivi d'un texte pour rechercher ce texte. ** + ** Tapez / suivi d'un texte pour rechercher ce texte. ** 1. Tapez le caractère / en mode Normal. Notez que celui-ci et le curseur apparaissent en bas de l'écran, comme lorsque l'on utilise : . - 2. Puis tapez 'errreuur' <Entrée>. C'est le mot que vous voulez rechercher. + 2. Puis tapez 'errreuur' <Entrée>. C'est le mot que vous voulez rechercher. - 3. Pour rechercher à nouveau le même texte, tapez simplement n . - Pour rechercher le même texte dans la direction opposée, tapez Maj-N . + 3. Pour rechercher à nouveau le même texte, tapez simplement n . + Pour rechercher le même texte dans la direction opposée, tapez N . - 4. Si vous voulez rechercher un texte vers le haut du fichier, utilisez ? - à la place de / . + 4. Pour rechercher une phrase dans la direction opposée, utilisez ? + au lieu de / . ----> erreur ne s'écrit pas "errreuur"; errreuur est une erreur. +---> erreur ne s'écrit pas "errreuur" ; errreuur est une erreur. -Note: Quand la recherche atteint la fin du fichier, elle reprend au début. - +NOTE : Quand la recherche atteint la fin du fichier, elle reprend au début + sauf si l'option 'wrapscan' est déactivée. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES + Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES - ** Tapez % pour trouver des ), ] ou } correspondants. ** + ** Tapez % pour trouver des ), ] ou } correspondants. ** 1. Placez le curseur sur l'un des (, [ ou { de la ligne marquée ---> ci-dessous. 2. Puis tapez le caractère % . - 3. Le curseur devrait se placer sur la parenthèse correspondante. + 3. Le curseur se déplacera sur la parenthèse out crochet correspondant. - 4. Tapez % pour replacer le curseur sur l'autre parenthèse. + 4. Tapez % pour replacer le curseur sur la parenthèse ou crochet + correspondant. + + 5. Déplacez le curseur sur un autre (,),[,],{ ou } et regardez ce que + fait % . ---> Voici ( une ligne de test contenant des (, des [ ] et des { } )). -Note: Cette fonctionnalité est très utile lors du débogage d'un programme qui - contient des parenthèses déséquilibrées ! - - +NOTE : Cette fonctionnalité est très utile lors du débogage d'un programme qui + contient des parenthèses déséquilibrées ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 4.4 : UNE MANIÈRE DE CORRIGER LES ERREURS + Leçon 4.4 : LA COMMANDE DE SUBSTITUTION - ** Tapez :s/ancien/nouveau/g pour remplacer 'ancien' par 'nouveau'. ** + ** Tapez :s/ancien/nouveau/g pour remplacer 'ancien' par 'nouveau'. ** 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. 2. Tapez :s/lee/le <Entrée> . Notez que cette commande change seulement la - première occurence sur la ligne. + première occurrence de "lee" dans la ligne. - 3. Puis tapez :s/lee/le/g qui ordonne de faire une substitution globale - sur la ligne. Cela change toutes les occurences sur la ligne + 3. Puis tapez :s/lee/le/g . L'ajout du drapeau g ordonne de faire une + substitution globale sur la ligne, et change toutes les occurrences de + "lee" sur la ligne. + +---> lee meilleur moment pour regarder lees fleurs est pendant lee printemps. ----> lee meilleur moment pour regarder lees fleurs est pendant lee Printemps. - - 4. Pour changer toutes les occurences d'un texte, entre deux lignes, - tapez :#,#s/ancien/nouveau/g où #,# sont les numéros des deux lignes. - Tapez :%s/ancien/nouveau/g pour changer chaque occurence dans tout - le fichier. + 4. Pour changer toutes les occurrences d'un texte, entre deux lignes, + tapez :#,#s/ancien/nouveau/g où #,# sont les numéros de lignes de la + plage où la substitution doit être faite. + Tapez :%s/ancien/nouveau/g pour changer toutes les occurrences dans + tout le fichier. + Tapez :%s/ancien/nouveau/gc pour trouver toutes les occurrences dans + tout le fichier avec une invite pour + confirmer ou infirmer chaque substitution. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 4 + RÉSUMÉ DE LA LEÇON 4 - 1. Ctrl-G affiche votre position dans le fichier et l'état de celui-ci. - Maj-G vous place à la fin du fichier. Un numéro de ligne suivi de Maj-G - vous place à cette ligne. + 1. CTRL-G affiche la position dans le fichier et l'état de celui-ci. + G déplace à la fin du fichier. + nombre G déplace au numéro de ligne. + gg déplace à la première ligne. 2. Taper / suivi d'un texte recherche ce texte vers l'AVANT. Taper ? suivi d'un texte recherche ce texte vers l'ARRIÈRE. - Après une recherche tapez n pour trouver l'occurence suivante dans la - même direction ou Maj-N pour rechercher dans la direction opposée. + Après une recherche tapez n pour trouver l'occurrence suivante dans la + même direction ou Maj-N pour rechercher dans la direction opposée. 3. Taper % lorsque le curseur est sur (, ), [, ], { ou } déplace celui-ci sur le caractère correspondant. - 4. Pour remplacer le premier aa par bb sur une ligne tapez :s/aa/bb - Pour remplacer tous les aa par bb sur une ligne tapez :s/aa/bb/g - Pour remplacer du texte entre deux numéros de ligne tapez :#,#s/aa/bb/g - Pour remplacer toutes les occurences dans le fichier tapez :%s/aa/bb/g - Pour demander une confirmation à chaque fois ajoutez 'c' :%s/aa/bb/gc + 4. Pour remplacer le premier aa par bb sur une ligne tapez :s/aa/bb + Pour remplacer tous les aa par bb sur une ligne tapez :s/aa/bb/g + Pour remplacer du texte entre deux numéros de ligne tapez :#,#s/aa/bb/g + Pour remplacer toutes les occurrences dans le fichier tapez :%s/aa/bb/g + Pour demander une confirmation à chaque fois ajoutez 'c' :%s/aa/bb/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE + Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE ** Tapez :! suivi d'une commande externe pour exécuter cette commande. ** @@ -516,294 +653,386 @@ Note: Cette fonctionnalité est très utile lors du débogage d'un programme qui n'importe quelle commande valide pour votre interpréteur (shell). 3. Par exemple, tapez ls après le ! et appuyez <Entrée>. Ceci affichera - la liste des fichiers du dossier courant, comme si vous aviez tapé la - commande à l'invite du shell. Utilisez :!dir si :!ls ne marche pas. + la liste des fichiers du répertoire courant, comme si vous aviez tapé la + commande à l'invite du shell. Utilisez :!dir si :!ls ne marche pas. -Note: Il est possible d'exécuter n'importe quelle commande externe de cette - manière. +NOTE : Il est possible d'exécuter n'importe quelle commande externe de cette + manière, avec ou sans argument. -Note: Toutes les commandes : doivent finir par la frappe de <Entrée>. - +NOTE : Toutes les commandes : doivent finir par la frappe de <Entrée>. + À partir de maintenant, nous ne le mentionnerons plus. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS + Leçon 5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS - ** Pour enregistrer les changements faits au fichier, tapez :w FICHIER . ** + ** Pour enregistrer les changements faits au texte, tapez :w FICHIER . ** - 1. Tapez :!dir ou :!ls pour avoir la liste des fichiers du dossier - courant. Vous savez déjà qu'il faut appuyer <Entrée> après cela. + 1. Tapez :!dir ou :!ls pour avoir la liste des fichiers dans le + répertoire courant. Vous savez déjà qu'il faut appuyer <Entrée> après + cela. 2. Choisissez un nom de fichier qui n'existe pas encore, par exemple TEST. 3. Puis tapez :w TEST (où TEST est le nom que vous avez choisi). - 4. Cela sauvegarde tout le fichier (Tutoriel Vim) sous le nom TEST. - Pour le vérifier, tapez :!dir pour revisualiser le contenu du dossier. + 4. Cela enregistre tout le fichier (Tutoriel Vim) sous le nom TEST. + Pour le vérifier, tapez :!dir ou :!ls de nouveau pour revisualiser + votre répertoire. -Notez que si vous quittez Vim et y retournez avec le fichier TEST, celui-ci -sera une copie exacte du cours au moment où vous l'avez sauvé. +NOTE : Si vous quittez Vim et le redémarrez de nouveau avec le fichier TEST, + celui-ci sera une copie exacte de ce cours au moment où vous l'avez + enregistré. - 5. Maintenant, effacez le fichier en tapant (MS-DOS): :!del TEST - ou (Unix): :!rm TEST + 5. Maintenant, effacez le fichier en tapant (MS-DOS) : :!del TEST + ou (Unix) : :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.3 : UN ENREGISTREMENT SÉLECTIF + Leçon 5.3 : SÉLECTION DU TEXTE À ENREGISTRER - ** Pour enregistrer une portion de fichier, tapez :#,#w FICHIER ** + ** Pour enregistrer une portion du fichier, + tapez : v déplacement :w FICHIER ** + + 1. Déplacez le curseur sur cette ligne. - 1. Tapez à nouveau :!dir ou :!ls pour visualiser le contenu du dossier - courant et choisissez un nom de fichier, tel que TEST. + 2. Appuyez v et déplacez le curseur vers la cinquième ligne plus bas. + Remarquez que le texte est en surbrillance. - 2. Déplacez le curseur jusqu'en haut de cette page et tapez Ctrl-G pour - connaître le numéro de cette ligne. NOTEZ CE NUMÉRO ! + 3. Appuyez : . En bas de l'écran :'<,'> va apparaître. - 3. Puis rendez-vous au bas de cette page et tapez à nouveau Ctrl-G . - NOTEZ ÉGALEMENT CE NUMÉRO ! + 4. Tapez w TEST , où TEST est un nom de fichier qui n'existe pas. + Vérifiez que vous voyez :'<,'>w TEST avant de d'appuyer sur Entrée. - 4. Pour enregistrer SEULEMENT une portion d'un fichier, tapez :#,#w TEST - où #,# sont les deux numéros que vous avez notés (haut,bas) et TEST est - le nom du fichier. + 5. Vim va enregistrer les lignes sélectionnées dans le fichier TEST. + Utilisez :!dir ou !ls pour le voir. Ne l'effacez pas encore ! + Nous allons l'utiliser dans la leçon suivante. - 5. Une fois encore, vérifiez la présence du fichier avec :!dir mais NE - L'EFFACEZ PAS. +NOTE : L'appui de v démarre la sélection Visuelle. Vous pouvez déplacer le + curseur pour agrandir ou rétrécir la sélection. Puis vous pouvez + utiliser un opérateur pour faire quelque chose sur le texte. Par + exemple, d efface le texte. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS + Leçon 5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS - ** Pour insérer le contenu d'un fichier, tapez :r FICHIER ** + ** Pour insérer le contenu d'un fichier, tapez :r FICHIER ** - 1. Tapez :!dir pour vérifier que votre fichier TEST est encore là. - - 2. Placez le curseur en haut de cette page. + 1. Placez le curseur juste au dessus de cette ligne. -NOTE: Après avoir suivi l'étape 3 vous verrez à l'écran la Leçon 5.3. - Déplacez-vous vers le bas jusqu'à revenir à cette leçon. +NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3. + Puis déplacez vous vers le bas pour voir cette leçon à nouveau. - 3. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST + 2. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST où TEST est le nom de votre fichier. - -NOTE: Le fichier que vous récupérez est placé là où se trouve le curseur. + Le fichier que vous récupérez est placé au dessous de la ligne du curseur. 4. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle contenue dans le fichier. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 5 - - - 1. :!commande exécute une commande externe. - - Quelques exemples pratiques: - (MS-DOS) (Unix) - :!dir :!ls affiche le contenu du dossier courant. - :!del FICHIER :!rm FICHIER efface FICHIER. - - 2. :w FICHIER enregistre le fichier Vim courant sur le disque avec pour - nom FICHIER. - - 3. :#,#w FICHIER enregistre les lignes # à # dans le fichier FICHIER. - - 4. :r FICHIER récupère le fichier FICHIER et l'insère dans le fichier - courant à partir de la position du curseur. - - - +NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple, + :r !ls lit la sortie de la commande ls et la place sous la ligne du + curseur. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.1 : L'OUVERTURE + RÉSUMÉ DE LA LEÇON 5 + + + 1. :!commande exécute une commande externe. + + Quelques exemples pratiques : + (MS-DOS) (Unix) + :!dir :!ls affiche le contenu du répertoire courant. + :!del FICHIER :!rm FICHIER efface FICHIER. + + 2. :w FICHIER enregistre le fichier Vim courant sur le disque avec pour + nom FICHIER. + + 3. v déplacement :w FICHIER sauvegarde les lignes de la sélection Visuelle + dans le fichier FICHIER. + + 4. :r FICHIER récupère le contenu du fichier FICHIER et l'insère sous la + position du curseur. + + 5. :r !dir lit la sortie de la commande dir et l'insère sous la position + du curseur. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 6.1 : LA COMMANDE D'OUVERTURE ** Tapez o pour ouvrir une ligne sous le curseur et y aller en Insertion. ** 1. Déplacez le curseur sur la ligne marquée ---> ci-dessous. - 2. Tapez o (minuscule) pour ouvrir une ligne SOUS le curseur et vous y - placer en mode Insertion. + 2. Tapez la lettre o minuscule pour ouvrir une ligne SOUS le curseur et + vous y placer en mode Insertion. - 3. Puis recopiez la ligne marquée ---> et appuyez sur <Échap> pour quitter - le mode Insertion. + 3. Puis tapez du texte et appuyez <Échap> pour sortir du mode Insertion. ----> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion. +---> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion. 4. Pour ouvrir une ligne au DESSUS du curseur, tapez simplement un O majuscule, plutôt qu'un o minuscule. Faites un essai sur la ligne ci-dessous. -Ouvrez une ligne ci-dessus en tapant MAJ-O lorsque le curseur est ici. +---> Ouvrez une ligne ci-dessus en tapant O lorsque le curseur est ici. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.2 : L'AJOUT + Leçon 6.2 : LA COMMANDE D'AJOUT - ** Tapez a pour insérer du texte APRÈS le curseur. ** + ** Tapez a pour insérer du texte APRÈS le curseur. ** + + 1. Placez le curseur au début de la ligne marquée ---> ci-dessous. - 1. Placez le curseur à la fin de la première ligne marquée ---> ci-dessous - en tapant $ en mode Normal. + 2. Appuyez e jusqu'à ce que le curseur soit sur la fin de li . - 2. Tapez un a (minuscule) pour ajouter du texte APRÈS le caractère situé - sous le curseur. ( A majuscule ajoute du texte à la fin de la ligne). + 3. Appuyez a (minuscule) pour ajouter du texte APRÈS le curseur. -Note: Ceci évite de taper i , le dernier caractère, le texte à insérer, - <Échap>, curseur-à-droite, et finalement x , juste pour ajouter du - texte à la fin d'une ligne ! + 4. Complétez le mot comme dans la ligne dessous. Appuyez <Échap> pour + sortir du mode Insertion. + + 5. Utilisez e pour vous déplacer vers le mot incomplet suivant et + répétez les étapes 3 et 4. - 3. Maintenant, complétez la première ligne. Notez également que l'ajout est - identique au mode Insertion, hormis la position où le texte est inséré. +---> Cette li vous perm de pratiq l'ajout de t dans une ligne. +---> Cette ligne vous permet de pratiquer l'ajout de texte dans une ligne. ----> Cette ligne vous permet de pratiquer ----> Cette ligne vous permet de pratiquer l'ajout de texte en fin de ligne. +NOTE : a, i, A vont tous dans le même mode Insertion, la seule différence + est l'endroit où les caractères sont insérés. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.3 : UNE AUTRE VERSION DU REMPLACEMENT + Leçon 6.3 : UNE AUTRE MANIÈRE DE REMPLACER ** Tapez un R majuscule pour remplacer plus d'un caractère. ** 1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous. + Déplacez le curseur sur le début du premier xxx . - 2. Placez le curseur au début du premier mot qui diffère de la seconde ligne - marquée ---> (le mot 'celle'). + 2. Appuyez maintenant R et tapez le nombre dessous dans la deuxième ligne, + de manière à remplacer le xxx . + + 3. Appuyez <Échap> pour quitter le mode Remplacement. Notez que le reste de + la ligne demeure inchangé. - 3. Puis tapez R et remplacez le reste du texte de la première ligne en - tapant par dessus celui-ci, de manière à rendre la première ligne - identique à la seconde. + 4. Répétez les étapes pour remplacer les xxx restants. + ----> Pour rendre cette ligne identique à celle du dessous utilisez le clavier. ----> Pour rendre cette ligne identique à la seconde, tapez R et la correction. +---> L'ajout de 123 à xxx donne xxx. +---> L'ajout de 123 à 456 donne 579. - 4. Notez que lorsque vous appuyez <Échap>, le texte qui n'a pas encore été - remplacé reste. - +NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les + caractères tapés effacent un caractère existant. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 6.4 : RÉGLAGE DES OPTIONS + Leçon 6.4 : COPIER ET COLLER DU TEXTE - ** Réglons une option afin que la recherche et la substitution ignorent la - casse des caractères. ** + ** Utilisez l'opérateur y pour copier du texte et p pour le coller ** + + 1. Allez à la ligne marquée ---> ci-dessous et placez le curseur après "a)". + + 2. Démarrez le mode Visuel avec v et déplacez le curseur juste devant + "premier". + + 3. Tapez y pour copier le texte en surbrillance. + + 4. Déplacez la curseur à la fin de la ligne suivante : j$ + + 5. Tapez p pour coller le texte. Puis tapez : un second <Échap> . - 1. Recherchez 'ignore' en tapant /ignore . + 6. Utilisez le mode Visuel pour sélectionner "élément", copiez le avec y , + déplacez vous à la fin de la ligne suivant avec j$ et collez le texte + à cet endroit avec p . + +---> a) ceci est le premier élément. + b) + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 6.4 : RÉGLAGE DES OPTIONS + + + ** Réglons une option afin que la recherche et la substitution ignore la + casse des caractères. ** + + 1. Recherchez 'ignore' en tapant : /ignore <Entrée> Répétez ceci plusieurs fois en utilisant la touche n . - 2. Activez l'option 'ic' (Ignorer casse) en tapant :set ic . + 2. Activez l'option 'ic' (ignorer casse) en tapant :set ic . - 3. Puis poursuivez votre recherche en utilisant n . - Répétez cette recherche plusieurs fois avec la touche n . + 3. Puis cherchez 'ignore' de nouveau en utilisant n . + Remarquez que Ignore et IGNORE sont maintenant aussi trouvés. 4. Activez les options 'hlsearch' et 'incsearch' avec :set hls is . 5. Puis recommencez une recherche, et faites bien attention à ce qui se - produit: /ignore . + produit : /ignore <Entrée> + + 6. Pour désactiver 'ignorer casse', entrez : :set noic - 6. Pour interrompre la mise en surbrillance des résultats, tapez: - :nohlsearch +NOTE : Pour enlever la surbrillance des résultats, entrez : :nohlsearch + +NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez + \c dans la phrase : /ignore\c <Entrée> + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RÉSUMÉ DE LA LEÇON 6 + RÉSUMÉ DE LA LEÇON 6 - 1. Taper o ouvre une ligne SOUS le curseur et y place celui-ci en mode - Insertion. Taper un O majuscule ouvre une ligne au DESSUS de la ligne - où se trouve le curseur. + 1. Taper o ouvre une ligne SOUS le curseur et démarre le mode Insertion. + Taper O ouvre une ligne au DESSUS du curseur. + + 2. Taper a pour insérer du texte APRÈS le curseur. + Taper A pour insérer du texte après la fin de ligne. + + 3. Taper e déplace à la fin du mot. + + 4. Taper y copie du texte, p le colle. - 2. Tapez un a pour insérer du texte APRÈS le caractère où se trouve le - curseur. Taper un A majuscule ajoute du texte automatiquement à la fin - de la ligne. + 5. Taper R majuscule active le mode Remplacement jusqu'à ce qu' <Échap> + soit appuyé. - 3. Taper un R majuscule active le mode Remplacement jusqu'à ce que la - touche <Échap> soit appuyée pour en sortir. + 6. Taper ":set xxx" active l'option "xxx". Quelques options sont : + 'ic' 'ingnorecase' pour ignorer la casse lors des recherches. + 'is' 'incsearch' pour montrer les appariements partiels. + 'hls' 'hlsearch' pour mettre en surbrillance les appariements. - 4. Taper :set xxx active l'option 'xxx'. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leçon 7.1 : OBTENIR DE L'AIDE + ** Utiliser le système d'aide en ligne. ** + + Vim a un système complet d'aide en ligne. Pour y accéder, essayez l'une de + ces trois méthodes : + - appuyez la touche <Help> (si vous en avez une) + - appuyez la touche <F1> (si vous en avez une) + - tapez :help <Entrée> + Lisez le texte dans la fenêtre d'aide pour savoir comment fonctionne l'aide. + Tapez CTRL-W CTRL-W pour sauter d'une fenêtre à l'autre. + Tapez :q <Entrée> pour fermer la fenêtre d'aide. + Vous pouvez accéder à l'aide sur à peu près n'importe quel sujet en donnant + des arguments à la commande :help . Essayez par exemple (n'oubliez pas + d'appuyer sur <Entrée>) : + + :help w + :help c_CTRL-D + :help c_<T + :help insert-index + :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 7 : ACCÉDER À L'AIDE EN LIGNE + Leçon 7.2 : CRÉER UN SCRIPT DE DÉMARRAGE - ** Utiliser le système d'aide en ligne. ** + ** Activer les fonctionnalités de Vim. ** - Vim a un système complet d'aide en ligne. Pour y accéder, essayez l'une de - ces trois méthodes: - - appuyez la touche <Help> (si vous en avez une) - - appuyez la touche <F1> (si vous en avez une) - - tapez :help <Entrée> + Vim a beaucoup plus de fonctionnalités que Vi, mais la plupart de celles-ci + sont désactivées par défaut. Pour commencer à les utiliser, vous devez + créer un fichier "vimrc". - Tapez :q <Entrée> pour fermer la fenêtre d'aide. + 1. Commencez à éditer le fichier "vimrc". Ceci dépend de votre système : + :edit ~/.vimrc pour Unix + :edit $VIM/_vimrc pour MS-Windows + + 2. Lisez maintenant le fichier d'exemple "vimrc" : + :r $VIMRUNTIME/vimrc_example.vim - Vous pouvez accéder à l'aide sur à peu près n'importe quel sujet en donnant - des arguments à la commande :help . Essayez par exemple (n'oubliez pas - d'appuyer sur <Entrée>): + 3. Enregistrez le fichier avec : + :w - :help w - :help c_<T - :help insert-index - :help user-manual + La prochaine fois que vous démarrerez Vim, la coloration syntaxique sera + activée. Vous pouvez ajouter tous vos réglages préférés dans ce fichier + "vimrc". Pour plus d'informations, tapez :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Leçon 8 : CRÉER UN SCRIPT DE DÉMARRAGE + Leçon 7.3 : COMPLÈTEMENT + - ** Activer les fonctionnalités de Vim. ** + ** Complètement de ligne de commande avec CTRL-D et <TAB> ** + + 1. Mettez Vim soit en mode non compatible : set nocp + + 2. Regardez quels fichiers existent dans le répertoire : !ls ou !dir - Vim a beaucoup plus de fonctionnalités que Vi, mais la plupart de celles-ci - sont désactivées par défaut. Pour commencer à les utiliser, vous devez - créer un fichier "vimrc". + 3. Tapez le début d'une commande : :e + + 4. Appuyez CTRL-D et Vim affichera une liste de commandes qui commencent + par "e". + + 5. Appuyez <TAB> et Vim complétera le nom de la commande : ":edit" + + 6. Ajoutez maintenant un espace et le début d'un fichier existant : + :edit FIC + + 7 Appuyez <TAB>. Vim va compléter le nom (s'il est unique). - 1. Commencez à éditer le fichier "vimrc". Ceci dépend de votre système: - :edit ~/.vimrc pour Unix - :edit $VIM/_vimrc pour MS-Windows +NOTE : Le complètement fonctionne pour de nombreuse commandes. Essayez + d'appuyer CTRL-D et <TAB>. C'est utile en particulier pour :help . + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RÉSUMÉ DE LA LEÇON 7 + + + 1. Tapez :help ou appuyez <F1> ou <Aide> pour ouvrir la fenêtre d'aide. - 2. Intégrez maintenant le texte du fichier "vimrc" d'exemple: - :read $VIMRUNTIME/vimrc_example.vim + 2. Tapez :help cmd pour trouver l'aide sur cmd . + + 3. Tapez CTRL-W CTRL-W pour sauter à une autre fenêtre. - 3. Enregistrez le fichier avec: - :write + 4. Tapez :q pour fermer la fenêtre d'aide. - La prochaine fois que vous démarrerez Vim, le surlignage syntactique sera - activé. Vous pouvez ajouter tous vos réglages préférés dans ce fichier. + 5. Créez un script de démarrage vimrc pour conserver vos réglages préférés. + + 6. Quand vous tapez une commande : appuyez CTRL-D pour voir les + complètements possibles. Appuyez <TAB> pour utiliser un complètement. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de + Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur - relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup - beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en - anglais: :help user-manual . + relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup + beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en + anglais : :help user-manual . Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en français. Il parle plus de Vi que de Vim, mais pourra vous être utile. - L'éditeur Vi - Collection Précis et concis - par Arnold Robbins - Éditeur: O'Reilly France - ISBN: 2-84177-102-4 + L'éditeur Vi - Collection Précis et concis - par Arnold Robbins + Éditeur : O'Reilly France + ISBN : 2-84177-102-4 Deux livres en anglais sont également mentionnés dans la version originale de ce tutoriel, dont un qui traite spécifiquement de Vim. Merci de vous y - référer si vous êtes intéressé. + référer si vous êtes intéressés. Ce tutoriel a été écrit par Michael C. Pierce et Robert K. Ware de l'École des Mines du Colorado et reprend des idées fournies par Charles Smith, - Universté d'État du Colorado. E-mail: bware@mines.colorado.edu. + Université d'État du Colorado. E-mail : bware@mines.colorado.edu. Modifié pour Vim par Bram Moolenar. + Traduit en Français par Adrien Beau, en avril 2001. + Dernières mises à jour par Dominique Pellé. - Traduit en Français par Adrien Beau, en avril 2001. - E-mail: version.francaise@free.fr - Last Change: 2003 May 29 + E-mail : dominique.pelle@gmail.com + Last Change : 2008 Nov 23 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.hu +++ b/runtime/tutor/tutor.hu @@ -1,5 +1,5 @@ =============================================================================== -= d v z l j k a V I M T u t o r b a n - 1.5-s verzi === +== d v z l j k a V I M - o k t a t b a n - 1.5-s verzi == =============================================================================== A Vim egy nagyon hatkony szerkeszt, amelnyek rengeteg utastsa @@ -38,7 +38,7 @@ 2. Tartsa lenyomva a lefelt (j), akkor ismtldik! ---> Most tudja, hogyan mehet a kvetkez leckre. - 3. A lefel fomb hasznlatval menjen a 1.2. leckre! + 3. A lefel gomb hasznlatval menjen a 1.2. leckre! Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az <ESC>-et, hogy norml mdba kerljn, s ismtelje meg a parancsot! @@ -60,8 +60,8 @@ Megj: A kurzor gomboknak is mkdnik kell, de a hjkl hasznlatval Ha menteni szeretn a vltozsokat s kilpni, rja: :wq <ENTER> - 3. Amikor a shell promptot ltja, rja be a parancsot, amely ebbe a - tutorba hozza: + 3. Amikor a shell promptot ltja, rja be a parancsot, amely ebbe az + oktatba hozza: Ez valsznleg: vimtutor <ENTER> Normlis esetben ezt rn: vim tutor.hu <ENTER> @@ -230,7 +230,7 @@ MEGJ: Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.5. lecke: A VISSZAVONS (UNDO) PARANCS + 2.5. lecke: A VISSZAVONS (UNDO) PARANCS ** u gpelsvel visszavonhat az utols parancs, U az egsz sort helyrelltja. ** @@ -245,9 +245,9 @@ MEGJ: Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl 7. CTRL-R (CTRL gomb lenyomsa mellett ssn R-t) prszor csinlja jra a visszavont parancsokat (redo)! ----> Javtsd a hhibkaat ebbben a sooorban majd lltsa visszaaa az eredetit. +---> Javtsa a hhibkaat ebbben a sooorban majd lltsa visszaaa az eredetit. - 8. Ezek nagyon hasznos parancsok. Most ugarjon a 2. lecke sszefoglaljra. + 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke sszefoglaljra. @@ -257,7 +257,7 @@ MEGJ: Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl 1. Trls a kurzortl a sz vgig: dw - 2. Trls a kurzortl a sz vgig: d$ + 2. Trls a kurzortl a sor vgig: d$ 3. Egsz sor trlse: dd @@ -275,7 +275,7 @@ MEGJ: Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl Visszavonsok visszavonsa: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.1. lecke: A PUT PARANCS + 3.1. lecke: A BEILLESZTS (PUT) PARANCS ** p letsvel az utolsnak trltet a kurzor utn illeszhetjk. ** @@ -284,8 +284,8 @@ MEGJ: Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl 2. dd letsvel trljk a sort s eltroldik a Vim pufferben. - 3. Mozgassuk a kurzort AFL a sor fl, ahov mozgatni szeretnnk a - trlt sort. + 3. Mozgassuk a kurzort azeltt a sor ELTTI sorba, ahov mozgatni + szeretnnk a trlt sort. 4. Norml mdban rjunk p bett a trlt sor beillesztshez. @@ -299,7 +299,7 @@ MEGJ: Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.2. lecke: A REPLACE PARANCS + 3.2. lecke: AZ TRS (REPLACE) PARANCS ** r s a karakterek letsvel a kurzor alatti karaktert megvltoztatjuk. ** @@ -321,7 +321,7 @@ MEGJ: Emlkezzen, hogy nem memorizlssal, hanem gyakorlssal tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.3. lecke: A CHANGE PARANCS + 3.3. lecke: A CSERE (CHANGE) PARANCS ** A sz egy rsznek megvltoztatshoz rjuk: cw . ** @@ -415,7 +415,7 @@ Ugorjunk a kvetkez leckre! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.2. lecke: A SEARCH PARANCS + 4.2. lecke: A KERESS (SEARCH) PARANCS ** / majd a kvnt kifejezs bersval kereshetjk meg a kifejezst. ** @@ -459,7 +459,7 @@ Megj: Ez nagyon hasznos, ha olyan progra ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.4. lecke: A HIBK KIJAVTSNAK EGY MDJA + 4.4. lecke: A HIBK KIJAVTSNAK EGY MDJA ** :s/j/rgi/g begpelsvel az 'j'-ra cserljk a 'rgi'-t. ** @@ -470,10 +470,10 @@ Megj: Ez nagyon hasznos, ha olyan progra sorban. 3. Most ezt rjuk: :s/eggy/egg/g amely globlisan helyettest - a sorban. + a sorban, azaz minden elfordulst. Ez a sorban minden elfordulst helyettest. ----> eggy hegy meggy, szembe jn eggy msik heggy. +---> eggy heggy meggy, szembe jn eggy msik heggy. 4. Kt sor kztt a karaktersor minden elfordulsnak helyettestse: :#,#s/rgi/j/g ahol #,# a kt sor sorszma. @@ -530,7 +530,7 @@ Megj: Minden : parancs utn <ENTER>-t kell tni. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.2. lecke: BVEBBEN A FJLOK RSRL + 5.2. lecke: BVEBBEN A FJLOK RSRL ** A fjlok vltozsait gy rhatjuk ki :w FJLNV. ** @@ -542,12 +542,12 @@ Megj: Minden : parancs utn <ENTER>-t kell tni. 3. rja: :w TESZT (ahol TESZT a vlasztott fjlnv)! - 4. Ez elmenti a teljes fjlt (a Vim Tutort) TESZT nven. + 4. Ez elmenti a teljes fjlt (a Vim oktatjt) TESZT nven. Ellenrzskpp rjuk ismt :!dir hogy lssuk a knyvtrat! (Felfel gombbal : utn az elz utastsok visszahozhatak.) Megj: Ha n kilpne a Vimbl s s visszatrne a TESZT fjlnvvel, akkor a - fjl a tutor mentskori pontos msolata lenne. + fjl az oktat mentskori pontos msolata lenne. 5. Tvoltsa el a fjlt (MS-DOS): :!del TESZT vagy (Unix): :!rm TESZT @@ -626,7 +626,7 @@ MEGJ: A fjl, amit beillesztett a kurzora alatt helyezkedik el. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.1. lecke: A OPEN PARANCS + 6.1. lecke: A MEGNYITS (OPEN) PARANCS ** o bersval nyithat egy j sort a kurzor alatt s vlthat beszr mdba ** @@ -684,16 +684,17 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben 1. Mozgassuk a kurzort az els ---> kezdet sorra! - 2. Place the cursor at the beginning of the first word that is different - from the second line marked ---> (the word 'last'). + 2. Helyezze a kurzort az els sz elejre amely eltr a msodik + ---> kezdet sor tartalmtl (a 'az utolsval' rsztl). + + 3. Nyomjon R karaktert s rja t a szveg maradkt az els sorban + gy, hogy a kt sor egyez legyen. - 3. Now type R and replace the remainder of the text on the first line by - typing over the old text to make the first line the same as the second. +---> Az els sort tegye azonoss az utolsval: hasznlja a gombokat. +---> Az els sort tegye azonoss a msodikkal: rjon R-t s az j szveget. ----> To make the first line the same as the last on this page use the keys. ----> To make the first line the same as the second, type R and the new text. - - 4. Note that when you press <ESC> to exit, any unaltered text remains. + 4. Jegyezzk meg, ha <ESC>-et nyomok, akkor a vltozatlanuk hagyott + szvegek vltozatlanok maradnak. @@ -726,16 +727,16 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben 6. LECKE SSZEFOGLALJA - 1. Typing o opens a line BELOW the cursor and places the cursor on the open - line in Insert mode. - Typing a capital O opens the line ABOVE the line the cursor is on. + 1. o bersval j sort nyitunk meg a sor ALATT s a kurzor az j + sorban lesz beszrs-mdban. + Nagy O a sor FELETT nyit j sort, s oda kerl a kurzor. - 2. Type an a to insert text AFTER the character the cursor is on. - Typing a capital A automatically appends text to the end of the line. + 2. a bersval az aktulis karaktertl UTN (jobbra) szrhatunk be szveget. + Nagy A automatikusan a sor legvghez adja hozz a szveget. - 3. Typing a capital R enters Replace mode until <ESC> is pressed to exit. + 3. A nagy R betsvel tr (replace) mdba kerlnk <ESC> lenyomsig. - 4. Typing ":set xxx" sets the option "xxx" + 4. ":set xxx" bersval az "xxx" opci llthat be. @@ -746,7 +747,7 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7. lecke: ON-LINE HELP PARANCSOK + 7. lecke: AZ ON-LINE SG PARANCSAI ** Az online sgrendszer hasznlata ** @@ -801,8 +802,9 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben tudknak: ":help user-manual". (egyelre nem tud magyarul) Tovbbi magyar olvasnivalk rhetek el az albbi oldalrl. - http://ubuntu.hu/index.php?title=Vim + http://wiki.hup.hu/index.php/Vim + Angol olvasmnyok: For further reading and studying, this book is recommended: Vim - Vi Improved - by Steve Oualline Publisher: New Riders @@ -816,8 +818,13 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben It is a good book to get to know almost anything you want to do with Vi. The sixth edition also includes information on Vim. - This tutorial was written by Michael C. Pierce and Robert K. Ware, - Colorado School of Mines using ideas supplied by Charles Smith, - Colorado State University. E-mail: bware@mines.colorado.edu. + Ezt az oktatt Michael C. Pierce s Robert K. Ware rta, a Colorado + School of Mines dolgozi Charles Smith (Colorado State University) + tmogatsval. - Modified for Vim by Bram Moolenaar. + E-mail: bware@mines.colorado.edu. + + A Vimhez idomtotta Bram Moolenaar. + + Magyartotta: Horvth rpd <horvath.arpad@roik.bmf.hu>, 2006-2008 +
--- a/runtime/tutor/tutor.hu.cp1250 +++ b/runtime/tutor/tutor.hu.cp1250 @@ -1,5 +1,5 @@ =============================================================================== -= d v z l j k a V I M T u t o r b a n - 1.5-s verzi === +== d v z l j k a V I M - o k t a t b a n - 1.5-s verzi == =============================================================================== A Vim egy nagyon hatkony szerkeszt, amelnyek rengeteg utastsa @@ -38,7 +38,7 @@ 2. Tartsa lenyomva a lefelt (j), akkor ismtldik! ---> Most tudja, hogyan mehet a kvetkez leckre. - 3. A lefel fomb hasznlatval menjen a 1.2. leckre! + 3. A lefel gomb hasznlatval menjen a 1.2. leckre! Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az <ESC>-et, hogy norml mdba kerljn, s ismtelje meg a parancsot! @@ -60,8 +60,8 @@ Megj: A kurzor gomboknak is mkdnik kell, de a hjkl hasznlatval Ha menteni szeretn a vltozsokat s kilpni, rja: :wq <ENTER> - 3. Amikor a shell promptot ltja, rja be a parancsot, amely ebbe a - tutorba hozza: + 3. Amikor a shell promptot ltja, rja be a parancsot, amely ebbe az + oktatba hozza: Ez valsznleg: vimtutor <ENTER> Normlis esetben ezt rn: vim tutor.hu <ENTER> @@ -230,7 +230,7 @@ MEGJ: Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.5. lecke: A VISSZAVONS (UNDO) PARANCS + 2.5. lecke: A VISSZAVONS (UNDO) PARANCS ** u gpelsvel visszavonhat az utols parancs, U az egsz sort helyrelltja. ** @@ -245,9 +245,9 @@ MEGJ: Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl 7. CTRL-R (CTRL gomb lenyomsa mellett ssn R-t) prszor csinlja jra a visszavont parancsokat (redo)! ----> Javtsd a hhibkaat ebbben a sooorban majd lltsa visszaaa az eredetit. +---> Javtsa a hhibkaat ebbben a sooorban majd lltsa visszaaa az eredetit. - 8. Ezek nagyon hasznos parancsok. Most ugarjon a 2. lecke sszefoglaljra. + 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke sszefoglaljra. @@ -257,7 +257,7 @@ MEGJ: Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl 1. Trls a kurzortl a sz vgig: dw - 2. Trls a kurzortl a sz vgig: d$ + 2. Trls a kurzortl a sor vgig: d$ 3. Egsz sor trlse: dd @@ -275,7 +275,7 @@ MEGJ: Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl Visszavonsok visszavonsa: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.1. lecke: A PUT PARANCS + 3.1. lecke: A BEILLESZTS (PUT) PARANCS ** p letsvel az utolsnak trltet a kurzor utn illeszhetjk. ** @@ -284,8 +284,8 @@ MEGJ: Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl 2. dd letsvel trljk a sort s eltroldik a Vim pufferben. - 3. Mozgassuk a kurzort AFL a sor fl, ahov mozgatni szeretnnk a - trlt sort. + 3. Mozgassuk a kurzort azeltt a sor ELTTI sorba, ahov mozgatni + szeretnnk a trlt sort. 4. Norml mdban rjunk p bett a trlt sor beillesztshez. @@ -299,7 +299,7 @@ MEGJ: Vllalkozbbak kedvrt, csupn az objektum begpelsvel parancs nlkl ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.2. lecke: A REPLACE PARANCS + 3.2. lecke: AZ TRS (REPLACE) PARANCS ** r s a karakterek letsvel a kurzor alatti karaktert megvltoztatjuk. ** @@ -321,7 +321,7 @@ MEGJ: Emlkezzen, hogy nem memorizlssal, hanem gyakorlssal tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.3. lecke: A CHANGE PARANCS + 3.3. lecke: A CSERE (CHANGE) PARANCS ** A sz egy rsznek megvltoztatshoz rjuk: cw . ** @@ -415,7 +415,7 @@ Ugorjunk a kvetkez leckre! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.2. lecke: A SEARCH PARANCS + 4.2. lecke: A KERESS (SEARCH) PARANCS ** / majd a kvnt kifejezs bersval kereshetjk meg a kifejezst. ** @@ -459,7 +459,7 @@ Megj: Ez nagyon hasznos, ha olyan progra ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.4. lecke: A HIBK KIJAVTSNAK EGY MDJA + 4.4. lecke: A HIBK KIJAVTSNAK EGY MDJA ** :s/j/rgi/g begpelsvel az 'j'-ra cserljk a 'rgi'-t. ** @@ -470,10 +470,10 @@ Megj: Ez nagyon hasznos, ha olyan progra sorban. 3. Most ezt rjuk: :s/eggy/egg/g amely globlisan helyettest - a sorban. + a sorban, azaz minden elfordulst. Ez a sorban minden elfordulst helyettest. ----> eggy hegy meggy, szembe jn eggy msik heggy. +---> eggy heggy meggy, szembe jn eggy msik heggy. 4. Kt sor kztt a karaktersor minden elfordulsnak helyettestse: :#,#s/rgi/j/g ahol #,# a kt sor sorszma. @@ -530,7 +530,7 @@ Megj: Minden : parancs utn <ENTER>-t kell tni. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.2. lecke: BVEBBEN A FJLOK RSRL + 5.2. lecke: BVEBBEN A FJLOK RSRL ** A fjlok vltozsait gy rhatjuk ki :w FJLNV. ** @@ -542,12 +542,12 @@ Megj: Minden : parancs utn <ENTER>-t kell tni. 3. rja: :w TESZT (ahol TESZT a vlasztott fjlnv)! - 4. Ez elmenti a teljes fjlt (a Vim Tutort) TESZT nven. + 4. Ez elmenti a teljes fjlt (a Vim oktatjt) TESZT nven. Ellenrzskpp rjuk ismt :!dir hogy lssuk a knyvtrat! (Felfel gombbal : utn az elz utastsok visszahozhatak.) Megj: Ha n kilpne a Vimbl s s visszatrne a TESZT fjlnvvel, akkor a - fjl a tutor mentskori pontos msolata lenne. + fjl az oktat mentskori pontos msolata lenne. 5. Tvoltsa el a fjlt (MS-DOS): :!del TESZT vagy (Unix): :!rm TESZT @@ -626,7 +626,7 @@ MEGJ: A fjl, amit beillesztett a kurzora alatt helyezkedik el. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.1. lecke: A OPEN PARANCS + 6.1. lecke: A MEGNYITS (OPEN) PARANCS ** o bersval nyithat egy j sort a kurzor alatt s vlthat beszr mdba ** @@ -684,16 +684,17 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben 1. Mozgassuk a kurzort az els ---> kezdet sorra! - 2. Place the cursor at the beginning of the first word that is different - from the second line marked ---> (the word 'last'). + 2. Helyezze a kurzort az els sz elejre amely eltr a msodik + ---> kezdet sor tartalmtl (a 'az utolsval' rsztl). + + 3. Nyomjon R karaktert s rja t a szveg maradkt az els sorban + gy, hogy a kt sor egyez legyen. - 3. Now type R and replace the remainder of the text on the first line by - typing over the old text to make the first line the same as the second. +---> Az els sort tegye azonoss az utolsval: hasznlja a gombokat. +---> Az els sort tegye azonoss a msodikkal: rjon R-t s az j szveget. ----> To make the first line the same as the last on this page use the keys. ----> To make the first line the same as the second, type R and the new text. - - 4. Note that when you press <ESC> to exit, any unaltered text remains. + 4. Jegyezzk meg, ha <ESC>-et nyomok, akkor a vltozatlanuk hagyott + szvegek vltozatlanok maradnak. @@ -726,16 +727,16 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben 6. LECKE SSZEFOGLALJA - 1. Typing o opens a line BELOW the cursor and places the cursor on the open - line in Insert mode. - Typing a capital O opens the line ABOVE the line the cursor is on. + 1. o bersval j sort nyitunk meg a sor ALATT s a kurzor az j + sorban lesz beszrs-mdban. + Nagy O a sor FELETT nyit j sort, s oda kerl a kurzor. - 2. Type an a to insert text AFTER the character the cursor is on. - Typing a capital A automatically appends text to the end of the line. + 2. a bersval az aktulis karaktertl UTN (jobbra) szrhatunk be szveget. + Nagy A automatikusan a sor legvghez adja hozz a szveget. - 3. Typing a capital R enters Replace mode until <ESC> is pressed to exit. + 3. A nagy R betsvel tr (replace) mdba kerlnk <ESC> lenyomsig. - 4. Typing ":set xxx" sets the option "xxx" + 4. ":set xxx" bersval az "xxx" opci llthat be. @@ -746,7 +747,7 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7. lecke: ON-LINE HELP PARANCSOK + 7. lecke: AZ ON-LINE SG PARANCSAI ** Az online sgrendszer hasznlata ** @@ -801,8 +802,9 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben tudknak: ":help user-manual". (egyelre nem tud magyarul) Tovbbi magyar olvasnivalk rhetek el az albbi oldalrl. - http://ubuntu.hu/index.php?title=Vim + http://wiki.hup.hu/index.php/Vim + Angol olvasmnyok: For further reading and studying, this book is recommended: Vim - Vi Improved - by Steve Oualline Publisher: New Riders @@ -816,8 +818,13 @@ Megj: A Vimben a sor legvgre is lehet llni, azonba ez eldjben It is a good book to get to know almost anything you want to do with Vi. The sixth edition also includes information on Vim. - This tutorial was written by Michael C. Pierce and Robert K. Ware, - Colorado School of Mines using ideas supplied by Charles Smith, - Colorado State University. E-mail: bware@mines.colorado.edu. + Ezt az oktatt Michael C. Pierce s Robert K. Ware rta, a Colorado + School of Mines dolgozi Charles Smith (Colorado State University) + tmogatsval. - Modified for Vim by Bram Moolenaar. + E-mail: bware@mines.colorado.edu. + + A Vimhez idomtotta Bram Moolenaar. + + Magyartotta: Horvth rpd <horvath.arpad@roik.bmf.hu>, 2006-2008 +
--- a/runtime/tutor/tutor.hu.utf-8 +++ b/runtime/tutor/tutor.hu.utf-8 @@ -1,5 +1,5 @@ =============================================================================== -= Ü d v ö z ö l j ü k a V I M T u t o r b a n - 1.5-ös verzió === +== Ü d v ö z ö l j ü k a V I M - o k t a t ó b a n - 1.5-ös verzió == =============================================================================== A Vim egy nagyon hatékony szerkesztő, amelnyek rengeteg utasítása @@ -38,7 +38,7 @@ 2. Tartsa lenyomva a lefelét (j), akkor ismétlődik! ---> Most tudja, hogyan mehet a következő leckére. - 3. A lefelé fomb használatával menjen a 1.2. leckére! + 3. A lefelé gomb használatával menjen a 1.2. leckére! Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az <ESC>-et, hogy normál módba kerüljön, és ismételje meg a parancsot! @@ -60,8 +60,8 @@ Megj: A kurzor gomboknak is működniük kell, de a hjkl használatával Ha menteni szeretné a változásokat és kilépni, írja: :wq <ENTER> - 3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe a - tutorba hozza: + 3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe az + oktatóba hozza: Ez valószínűleg: vimtutor <ENTER> Normális esetben ezt írná: vim tutor.hu <ENTER> @@ -230,7 +230,7 @@ MEGJ: Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2.5. lecke: A VISSZAVONÁS (UNDO) PARANCS + 2.5. lecke: A VISSZAVONÁS (UNDO) PARANCS ** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. ** @@ -245,9 +245,9 @@ MEGJ: Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül 7. CTRL-R (CTRL gomb lenyomása mellett üssön R-t) párszor csinálja újra a visszavont parancsokat (redo)! ----> Javíítsd a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit. +---> Javíítsa a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit. - 8. Ezek nagyon hasznos parancsok. Most ugarjon a 2. lecke összefoglalójára. + 8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke összefoglalójára. @@ -257,7 +257,7 @@ MEGJ: Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül 1. Törlés a kurzortól a szó végéig: dw - 2. Törlés a kurzortól a szó végéig: d$ + 2. Törlés a kurzortól a sor végéig: d$ 3. Egész sor törlése: dd @@ -275,7 +275,7 @@ MEGJ: Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül Visszavonások visszavonása: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.1. lecke: A PUT PARANCS + 3.1. lecke: A BEILLESZTÉS (PUT) PARANCS ** p leütésével az utolsónak töröltet a kurzor után illeszhetjük. ** @@ -284,8 +284,8 @@ MEGJ: Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül 2. dd leütésével töröljük a sort és eltérolódik a Vim pufferében. - 3. Mozgassuk a kurzort AFÖLÉ a sor fölé, ahová mozgatni szeretnénk a - törölt sort. + 3. Mozgassuk a kurzort azelőtt a sor ELŐTTI sorba, ahová mozgatni + szeretnénk a törölt sort. 4. Normál módban írjunk p betűt a törölt sor beillesztéséhez. @@ -299,7 +299,7 @@ MEGJ: Vállalkozóbbak kedvéért, csupán az objektum begépelésével parancs nélkül ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.2. lecke: A REPLACE PARANCS + 3.2. lecke: AZ ÁTÍRÁS (REPLACE) PARANCS ** r és a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. ** @@ -321,7 +321,7 @@ MEGJ: Emlékezzen, hogy nem memorizálással, hanem gyakorlással tanuljon. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 3.3. lecke: A CHANGE PARANCS + 3.3. lecke: A CSERE (CHANGE) PARANCS ** A szó egy részének megváltoztatásához írjuk: cw . ** @@ -415,7 +415,7 @@ Ugorjunk a következő leckére! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.2. lecke: A SEARCH PARANCS + 4.2. lecke: A KERESÉS (SEARCH) PARANCS ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. ** @@ -459,7 +459,7 @@ Megj: Ez nagyon hasznos, ha olyan progra ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 4.4. lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA + 4.4. lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA ** :s/új/régi/g begépelésével az 'új'-ra cseréljük a 'régi'-t. ** @@ -470,10 +470,10 @@ Megj: Ez nagyon hasznos, ha olyan progra sorban. 3. Most ezt írjuk: :s/eggy/egg/g amely globálisan helyettesít - a sorban. + a sorban, azaz minden előfordulást. Ez a sorban minden előfordulást helyettesít. ----> eggy hegy meggy, szembe jön eggy másik heggy. +---> eggy heggy meggy, szembe jön eggy másik heggy. 4. Két sor között a karaktersor minden előfordulásának helyettesítése: :#,#s/régi/új/g ahol #,# a két sor sorszáma. @@ -530,7 +530,7 @@ Megj: Minden : parancs után <ENTER>-t kell ütni. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 5.2. lecke: BŐVEBBEN A FÁJLOK ÍRÁSÁRÓL + 5.2. lecke: BŐVEBBEN A FÁJLOK ÍRÁSÁRÓL ** A fájlok változásait így írhatjuk ki :w FÁJLNÉV. ** @@ -542,12 +542,12 @@ Megj: Minden : parancs után <ENTER>-t kell ütni. 3. Írja: :w TESZT (ahol TESZT a választott fájlnév)! - 4. Ez elmenti a teljes fájlt (a Vim Tutort) TESZT néven. + 4. Ez elmenti a teljes fájlt (a Vim oktatóját) TESZT néven. Ellenőrzésképp írjuk ismét :!dir hogy lássuk a könyvtárat! (Felfelé gombbal : után az előző utasítások visszahozhatóak.) Megj: Ha Ön kilépne a Vimből és és visszatérne a TESZT fájlnévvel, akkor a - fájl a tutor mentéskori pontos másolata lenne. + fájl az oktató mentéskori pontos másolata lenne. 5. Távolítsa el a fájlt (MS-DOS): :!del TESZT vagy (Unix): :!rm TESZT @@ -626,7 +626,7 @@ MEGJ: A fájl, amit beillesztett a kurzora alatt helyezkedik el. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 6.1. lecke: A OPEN PARANCS + 6.1. lecke: A MEGNYITÁS (OPEN) PARANCS ** o beírásával nyithat egy új sort a kurzor alatt és válthat beszúró módba ** @@ -684,16 +684,17 @@ Megj: A Vimben a sor legvégére is lehet állni, azonba ez elődjében 1. Mozgassuk a kurzort az első ---> kezdetű sorra! - 2. Place the cursor at the beginning of the first word that is different - from the second line marked ---> (the word 'last'). + 2. Helyezze a kurzort az első szó elejére amely eltér a második + ---> kezdetű sor tartalmától (a 'az utolsóval' résztől). + + 3. Nyomjon R karaktert és írja ét a szöveg maradékát az első sorban + úgy, hogy a két sor egyező legyen. - 3. Now type R and replace the remainder of the text on the first line by - typing over the old text to make the first line the same as the second. +---> Az első sort tegye azonossá az utolsóval: használja a gombokat. +---> Az első sort tegye azonossá a másodikkal: írjon R-t és az új szöveget. ----> To make the first line the same as the last on this page use the keys. ----> To make the first line the same as the second, type R and the new text. - - 4. Note that when you press <ESC> to exit, any unaltered text remains. + 4. Jegyezzük meg, ha <ESC>-et nyomok, akkor a változatlanuk hagyott + szövegek változatlanok maradnak. @@ -726,16 +727,16 @@ Megj: A Vimben a sor legvégére is lehet állni, azonba ez elődjében 6. LECKE ÖSSZEFOGLALÓJA - 1. Typing o opens a line BELOW the cursor and places the cursor on the open - line in Insert mode. - Typing a capital O opens the line ABOVE the line the cursor is on. + 1. o beírásával új sort nyitunk meg a sor ALATT és a kurzor az új + sorban lesz beszúrás-módban. + Nagy O a sor FELETT nyit új sort, és oda kerül a kurzor. - 2. Type an a to insert text AFTER the character the cursor is on. - Typing a capital A automatically appends text to the end of the line. + 2. a beírásával az aktuális karaktertől UTÁN (jobbra) szúrhatunk be szöveget. + Nagy A automatikusan a sor legvégéhez adja hozzá a szöveget. - 3. Typing a capital R enters Replace mode until <ESC> is pressed to exit. + 3. A nagy R beütésével átíró (replace) módba kerülünk <ESC> lenyomásáig. - 4. Typing ":set xxx" sets the option "xxx" + 4. ":set xxx" beírásával az "xxx" opció állítható be. @@ -746,7 +747,7 @@ Megj: A Vimben a sor legvégére is lehet állni, azonba ez elődjében ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 7. lecke: ON-LINE HELP PARANCSOK + 7. lecke: AZ ON-LINE SÚGÓ PARANCSAI ** Az online súgórendszer használata ** @@ -801,8 +802,9 @@ Megj: A Vimben a sor legvégére is lehet állni, azonba ez elődjében tudóknak: ":help user-manual". (egyelőre nem tud magyarul) További magyar olvasnivalók érhetőek el az alábbi oldalról. - http://ubuntu.hu/index.php?title=Vim + http://wiki.hup.hu/index.php/Vim + Angol olvasmányok: For further reading and studying, this book is recommended: Vim - Vi Improved - by Steve Oualline Publisher: New Riders @@ -816,8 +818,13 @@ Megj: A Vimben a sor legvégére is lehet állni, azonba ez elődjében It is a good book to get to know almost anything you want to do with Vi. The sixth edition also includes information on Vim. - This tutorial was written by Michael C. Pierce and Robert K. Ware, - Colorado School of Mines using ideas supplied by Charles Smith, - Colorado State University. E-mail: bware@mines.colorado.edu. + Ezt az oktatót Michael C. Pierce és Robert K. Ware írta, a Colorado + School of Mines dolgozói Charles Smith (Colorado State University) + támogatásával. - Modified for Vim by Bram Moolenaar. + E-mail: bware@mines.colorado.edu. + + A Vimhez idomította Bram Moolenaar. + + Magyarította: Horváth Árpád <horvath.arpad@roik.bmf.hu>, 2006-2008 +
--- a/runtime/tutor/tutor.ja.euc +++ b/runtime/tutor/tutor.ja.euc @@ -257,7 +257,7 @@ NOTE: ͤϡΡޥ⡼ɤˤƥޥɤʤ˥⡼ ** Ԥ֤Υ⡼˿ͤפޤ ** - 1. ʲ ---> ȼ줿ȤƬ˥ưޤ + 1. ʲ ---> ȼ줿ԤƬ˥ưޤ 2. 2dw פñ2ʬưޤ @@ -741,7 +741,7 @@ NOTE: ޥɤνϤɤ߹ळȤޤ㤨С ** μΰ֤ƥȤɲäˤ a ȥפޤ ** - 1. ---> Ǽ줿Ȥذưޤ礦 + 1. ---> Ǽ줿Ԥذưޤ礦 2. e li νüޤǥưޤ @@ -764,7 +764,7 @@ Note: a, i A Ʊ⡼ɤذܤޤʸ֤ۤʤ ** 1ʸʾ֤ˤʸ R ȥפޤ礦 ** - 1. ʲ ---> ȼ줿Ȥ˥ưޤǽ xxx Ƭ˰ư + 1. ʲ ---> ȼ줿Ԥ˥ưޤǽ xxx Ƭ˰ư ޤ 2. R ơ2ܤοͤפ뤳Ȥǡxxx ִޤ
--- a/runtime/tutor/tutor.ja.sjis +++ b/runtime/tutor/tutor.ja.sjis @@ -257,7 +257,7 @@ NOTE: `ĺAm[}[hɂăR}hȂɃ[V ** sJԂ̃[V̑Oɐl^Cv܂B ** - 1. ȉ ---> ƎꂽƂ̐擪ɃJ[\ړ܂B + 1. ȉ ---> Ǝꂽs̐擪ɃJ[\ړ܂B 2. 2dw ^CvĒP2ړ܂B @@ -741,7 +741,7 @@ NOTE: OR}h̏o͂ǂݍނƂo܂BႦA ** J[\̎̈ʒueLXgljɂ a ƃ^Cv܂ ** - 1. J[\ ---> ŎꂽƂֈړ܂傤B + 1. J[\ ---> Ŏꂽsֈړ܂傤B 2. e li ̏I[܂ŃJ[\ړ܂B @@ -764,7 +764,7 @@ Note: a, i A ͓}[hֈڂ܂A}ʒuقȂ ** 1ȏuɂ͑啶 R ƃ^Cv܂傤 ** - 1. ȉ ---> ƎꂽƂɃJ[\ړ܂Bŏ xxx ̐擪Ɉړ + 1. ȉ ---> ƎꂽsɃJ[\ړ܂Bŏ xxx ̐擪Ɉړ ܂B 2. R āA2sڂ̐l^Cv邱ƂŁAxxx u܂B
--- a/runtime/tutor/tutor.ja.utf-8 +++ b/runtime/tutor/tutor.ja.utf-8 @@ -257,7 +257,7 @@ NOTE: 冒険したい人は、ノーマルモードにてコマンドなしにモーションを押して ** 何回も行いたい繰り返しのモーションの前に数値をタイプします。 ** - 1. 以下の ---> と示された業の先頭にカーソルを移動します。 + 1. 以下の ---> と示された行の先頭にカーソルを移動します。 2. 2dw をタイプして単語2つ分移動します。 @@ -741,7 +741,7 @@ NOTE: 外部コマンドの出力を読み込むことも出来ます。例えば、 ** カーソルの次の位置からテキストを追加するには a とタイプします ** - 1. カーソルを ---> で示された業へ移動しましょう。 + 1. カーソルを ---> で示された行へ移動しましょう。 2. e を押して li の終端部までカーソルを移動します。 @@ -764,7 +764,7 @@ Note: a, i と A は同じ挿入モードへ移りますが、文字が挿入される位置だけが異なり ** 1文字以上を置き換えるには大文字の R とタイプしましょう ** - 1. 以下の ---> と示された業にカーソルを移動します。最初の xxx の先頭に移動し + 1. 以下の ---> と示された行にカーソルを移動します。最初の xxx の先頭に移動し ます。 2. R を押して、2行目の数値をタイプすることで、xxx が置換されます。
new file mode 100644 --- /dev/null +++ b/runtime/tutor/tutor.nb @@ -0,0 +1,973 @@ +=============================================================================== += V e l k o m m e n t i l i n n f r i n g e n i V i m -- Ver. 1.7 = +=============================================================================== + + Vim er en meget kraftig editor med mange kommandoer, alt for mange til + kunne g gjennom alle i en innfring som denne. Den er beregnet p + sette deg inn i bruken av nok kommandoer s du vil vre i stand til lett + kunne bruke Vim som en editor til alle forml. + + Tiden som kreves for g gjennom denne innfringen tar ca. 25-30 + minutter, avhengig av hvor mye tid du bruker til eksperimentering. + + MERK: + Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne + filen som du kan ve deg p (hvis du kjrte vimtutor-kommandoen, er + dette allerede en kopi). + + Det er viktig huske at denne innfringen er beregnet p lring gjennom + bruk. Det betyr at du m utfre kommandoene for lre dem skikkelig. + Hvis du bare leser teksten, vil du glemme kommandoene! + + Frst av alt, sjekk at Caps Lock IKKE er aktiv og trykk j-tasten for + flytte markren helt til leksjon 1.1 fyller skjermen. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.1: FLYTTING AV MARKREN + + + ** For flytte markren, trykk tastene h, j, k, l som vist. ** + ^ + k Tips: h-tasten er til venstre og flytter til venstre. + < h l > l-tasten er til hyre og flytter til hyre. + j j-tasten ser ut som en pil som peker nedover. + v + 1. Flytt markren rundt p skjermen til du har ftt det inn i fingrene. + + 2. Hold inne nedovertasten (j) til den repeterer. + N vet du hvordan du beveger deg til neste leksjon. + + 3. G til leksjon 1.2 ved hjelp av nedovertasten. + +Merk: Hvis du blir usikker p noe du har skrevet, trykk <ESC> for g til + normalmodus. Skriv deretter kommandoen du nsket p nytt. + +Merk: Piltastene skal ogs virke. Men ved bruke hjkl vil du vre i stand til + bevege markren mye raskere nr du er blitt vant til det. Helt sant! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.2: AVSLUTTE VIM + + + !! MERK: Fr du utfrer noen av punktene nedenfor, les hele leksjonen!! + + 1. Trykk <ESC>-tasten (for forsikre deg om at du er i normalmodus). + + 2. Skriv: :q! <ENTER>. + Dette avslutter editoren og FORKASTER alle forandringer som du har gjort. + + 3. Nr du ser kommandolinjen i skallet, skriv kommandoen som startet denne + innfringen. Den er: vimtutor <ENTER> + + 4. Hvis du er sikker p at du husker dette, utfr punktene 1 til 3 for + avslutte og starte editoren p nytt. + +MERK: :q! <ENTER> forkaster alle forandringer som du gjorde. I lpet av noen + f leksjoner vil du lre hvordan du lagrer forandringene til en fil. + + 5. Flytt markren ned til leksjon 1.3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.3: REDIGERING AV TEKST -- SLETTING + + + ** Trykk x for slette tegnet under markren. ** + + 1. Flytt markren til den frste linjen merket med --->. + + 2. For ordne feilene p linjen, flytt markren til den er opp tegnet som + skal slettes. + + 3. Trykk tasten x for slette det unskede tegnet. + + 4. Repeter punkt 2 til 4 til setningen er lik den som er under. + +---> Hessstennnn brrrsnudddde ii gaaata. +---> Hesten brsnudde i gata. + + 5. N som linjen er korrekt, g til leksjon 1.4. + +MERK: Nr du gr gjennom innfringen, ikke bare prv huske kommandoene, men + bruk dem helt til de sitter. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING + + + ** Trykk i for sette inn tekst. ** + + 1. Flytt markren til den frste linjen som er merket med --->. + + 2. For gjre den frste linjen lik den andre, flytt markren til den str + p tegnet ETTER posisjonen der teksten skal settes inn. + + 3. Trykk i og skriv inn teksten som mangler. + + 4. Etterhvert som hver feil er fikset, trykk <ESC> for returnere til + normalmodus. Repeter punkt 2 til 4 til setningen er korrekt. + +---> Det er tkst som mnglr . +---> Det er ganske mye tekst som mangler her. + + 5. Nr du fler deg komfortabel med sette inn tekst, g til oppsummeringen + nedenfor. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL + + + ** Trykk A for legge til tekst. ** + + 1. Flytt markren til den frste linjen nedenfor merket --->. + Det har ikke noe si hvor markren er plassert p den linjen. + + 2. Trykk A og skriv inn det som skal legges til. + + 3. Nr teksten er lagt til, trykk <ESC> for returnere til normalmodusen. + + 4. Flytt markren til den andre linjen markert med ---> og repeter steg 2 og + 3 for reparere denne setningen. + +---> Det mangler noe tekst p + Det mangler noe tekst p denne linjen. +---> Det mangler ogs litt tek + Det mangler ogs litt tekst p denne linjen. + + 5. Nr du fler at du behersker legge til tekst, g til leksjon 1.6. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.6: REDIGERE EN FIL + + + ** Bruk :wq for lagre en fil og avslutte. ** + + !! MERK: Fr du utfrer noen av stegene nedenfor, les hele denne leksjonen!! + + 1. Avslutt denne innfringen som du gjorde i leksjon 1.2: :q! + + 2. Skriv denne kommandoen p kommandolinja: vim tutor <ENTER> + vim er kommandoen for starte Vim-editoren, tutor er navnet p fila + som du vil redigere. Bruk en fil som kan forandres. + + 3. Sett inn og slett tekst som du lrte i de foregende leksjonene. + + 4. Lagre filen med forandringene og avslutt Vim med: :wq <ENTER> + + 5. Start innfringen p nytt og flytt ned til oppsummeringen som flger. + + 6. Etter ha lest og forsttt stegene ovenfor: Sett i gang. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 1 + + + 1. Markren beveges ved hjelp av piltastene eller hjkl-tastene. + h (venstre) j (ned) k (opp) l (hyre) + + 2. For starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN <ENTER> + + 3. For avslutte Vim, skriv: <ESC> :q! <ENTER> for forkaste endringer. + ELLER skriv: <ESC> :wq <ENTER> for lagre forandringene. + + 4. For slette tegnet under markren, trykk: x + + 5. For sette inn eller legge til tekst, trykk: + i skriv innsatt tekst <ESC> sett inn fr markren + A skriv tillagt tekst <ESC> legg til p slutten av linjen + +MERK: Nr du trykker <ESC> gr du til normalmodus eller du avbryter en unsket + og delvis fullfrt kommando. + + N kan du g videre til leksjon 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.1: SLETTEKOMMANDOER + + + ** Trykk dw for slette et ord. ** + + 1. Trykk <ESC> for vre sikker p at du er i normalmodus. + + 2. Flytt markren til den frste linjen nedenfor merket --->. + + 3. Flytt markren til begynnelsen av ordet som skal slettes. + + 4. Trykk dw og ordet vil forsvinne. + +MERK: Bokstaven d vil komme til syne p den nederste linjen p skjermen nr + du skriver den. Vim venter p at du skal skrive w . Hvis du ser et annet + tegn enn d har du skrevet noe feil; trykk <ESC> og start p nytt. + +---> Det er agurk tre ord eple som ikke hrer pre hjemme i denne setningen. +---> Det er tre ord som ikke hrer hjemme i denne setningen. + + 5. Repeter punkt 3 og 4 til den frste setningen er lik den andre. G + deretter til leksjon 2.2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.2: FLERE SLETTEKOMMANDOER + + + ** Trykk d$ for slette til slutten av linjen. ** + + 1. Trykk <ESC> for vre sikker p at du er i normalmodus. + + 2. Flytt markren til linjen nedenfor merket --->. + + 3. Flytt markren til punktet der linjen skal kuttes (ETTER frste punktum). + + 4. Trykk d$ for slette alt til slutten av linjen. + +---> Noen skrev slutten p linjen en gang for mye. linjen en gang for mye. + + 5. G til leksjon 2.3 for forst hva som skjer. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.3: OM OPERATORER OG BEVEGELSER + + + Mange kommandoer som forandrer teksten er laget ut i fra en operator og en + bevegelse. Formatet for en slettekommando med sletteoperatoren d er: + + d bevegelse + + Der: + d - er sletteoperatoren. + bevegelse - er hva operatoren vil opere p (listet nedenfor). + + En kort liste med bevegelser: + w - til starten av det neste ordet, UNNTATT det frste tegnet. + e - til slutten av det nvrende ordet, INKLUDERT det siste tegnet. + $ - til slutten av linjen, INKLUDERT det siste tegnet. + + Ved skrive de vil alts alt fra markren til slutten av ordet bli + slettet. + +MERK: Ved skrive kun bevegelsen i normalmodusen uten en operator vil + markren flyttes som spesifisert. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE + + + ** Ved skrive et tall foran en bevegelse repeterer den s mange ganger. ** + + 1. Flytt markren til starten av linjen markert ---> nedenfor. + + 2. Skriv 2w for flytte markren to ord framover. + + 3. Skriv 3e for flytte markren framover til slutten av det tredje + ordet. + + 4. Skriv 0 (null) for flytte til starten av linjen. + + 5. Repeter steg 2 og 3 med forskjellige tall. + +---> Dette er en linje med noen ord som du kan bevege deg rundt p. + + 6. G videre til leksjon 2.5. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.5: BRUK AV ANTALL FOR SLETTE MER + + + ** Et tall sammen med en operator repeterer den s mange ganger. ** + + I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du + inn antall fr bevegelsen for slette mer: + d nummer bevegelse + + 1. Flytt markren til det frste ordet med STORE BOKSTAVER p linjen markert + med --->. + + 2. Skriv 2dw for slette de to ordene med store bokstaver. + + 3. Repeter steg 1 og 2 med forskjelling antall for slette de etterflgende + ordene som har store bokstaver. + +---> Denne ABC DE linjen FGHI JK LMN OP er n Q RS TUV litt mer lesbar. + +MERK: Et antall mellom operatoren d og bevegelsen virker p samme mte som + bruke bevegelsen uten en operator. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.6: OPERERE P LINJER + + + ** Trykk dd for slette en hel linje. ** + + P grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at + det vil vre lettere rett og slett trykke to d-er for slette en linje. + + 1. Flytt markren til den andre linjen i verset nedenfor. + 2. Trykk dd slette linjen. + 3. Flytt deretter til den fjerde linjen. + 4. Trykk 2dd for slette to linjer. + +---> 1) Roser er rde, +---> 2) Gjrme er gy, +---> 3) Fioler er bl, +---> 4) Jeg har en bil, +---> 5) Klokker viser tiden, +---> 6) Druer er ste +---> 7) Og du er likes. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.7: ANGRE-KOMMANDOEN + + + ** Trykk u for angre siste kommando, U for fikse en hel linje. ** + + 1. Flytt markren til linjen nedenfor merket ---> og plasser den p den + frste feilen. + 2. Trykk x for slette det frste unskede tegnet. + 3. Trykk s u for angre den siste utfrte kommandoen. + 4. Deretter ordner du alle feilene p linjene ved bruke kommandoen x . + 5. Trykk n en stor U for sette linjen tilbake til det den var + originalt. + 6. Trykk u noen ganger for angre U og foregende kommandoer. + 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen + ganger for gjenopprette kommandoene (omgjre angrekommandoene). + +---> RReparer feiilene p denne linnnjen oog erssstatt dem meed angre. + + 8. Dette er meget nyttige kommandoer. N kan du g til oppsummeringen av + leksjon 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 2 + + + 1. For slette fra markren fram til det neste ordet, trykk: dw + 2. For slette fra markren til slutten av en linje, trykk: d$ + 3. For slette en hel linje, trykk: dd + + 4. For repetere en bevegelse, sett et nummer foran: 2w + 5. Formatet for en forandringskommando er: + operator [nummer] bevegelse + der: + operator - hva som skal gjres, f.eks. d for slette + [nummer] - et valgfritt antall for repetere bevegelsen + bevegelse - hva kommandoen skal operere p, eksempelvis w (ord), + $ (til slutten av linjen) og s videre. + + 6. For g til starten av en linje, bruk en null: 0 + + 7. For angre tidligere endringer, skriv: u (liten u) + For angre alle forandringer p en linje, skriv: U (stor U) + For omgjre angringen, trykk: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.1: LIM INN-KOMMANDOEN + + + ** Trykk p for lime inn tidligere slettet tekst etter markren ** + + 1. Flytt markren til den frste linjen med ---> nedenfor. + + 2. Trykk dd for slette linjen og lagre den i et Vim-register. + + 3. Flytt markren til c)-linjen, OVER posisjonen linjen skal settes inn. + + 4. Trykk p for legge linjen under markren. + + 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkeflge. + +---> d) Kan du ogs lre? +---> b) Fioler er bl, +---> c) Intelligens m lres, +---> a) Roser er rde, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.2: ERSTATT-KOMMANDOEN + + + ** Trykk rx for erstatte tegnet under markren med x. ** + + 1. Flytt markren til den frste linjen nedenfor merket --->. + + 2. Flytt markren s den str opp den frste feilen. + + 3. Trykk r og deretter tegnet som skal vre der. + + 4. Repeter punkt 2 og 3 til den frste linjen er lik den andre. + +---> Da dfnne lynjxn ble zkrevet, var det nen som tjykket feite taster! +---> Da denne linjen ble skrevet, var det noen som trykket feile taster! + + 5. G videre til leksjon 3.2. + +MERK: Husk at du br lre ved BRUKE, ikke pugge. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.3: FORANDRE-OPERATOREN + + + ** For forandre til slutten av et ord, trykk ce . ** + + 1. Flytt markren til den frste linjen nedenfor som er merket --->. + + 2. Plasser markren p u i lubjwr. + + 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv injen). + + 4. Trykk <ESC> og g til det neste tegnet som skal forandres. + + 5. Repeter punkt 3 og 4 helt til den frste setningen er lik den andre. + +---> Denne lubjwr har noen wgh som m forkwp med forkzryas-kommandoen. +---> Denne linjen har noen ord som m forandres med forandre-kommandoen. + +Vr oppmerksom p at ce sletter ordet og gr inn i innsettingsmodus. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c + + + ** Forandringskommandoen blir brukt med de samme bevegelser som slett. ** + + 1. Forandringsoperatoren fungerer p samme mte som slett. Formatet er: + + c [nummer] bevegelse + + 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en + linje). + + 3. G til den frste linjen nedenfor som er merket --->. + + 4. Flytt markren til den frste feilen. + + 5. Skriv c$ og skriv resten av linjen lik den andre og trykk <ESC>. + +---> Slutten p denne linjen trenger litt hjelp for gjre den lik den neste. +---> Slutten p denne linjen trenger bli rettet ved bruk av c$-kommandoen. + +MERK: Du kan bruke slettetasten for rette feil mens du skriver. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 3 + + + 1. For legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette + limer inn den slettede teksten ETTER markren (hvis en linje ble slettet + vil den bli limt inn p linjen under markren). + + 2. For erstatte et tegn under markren, trykk r og deretter tegnet som + du vil ha der. + + 3. Forandringsoperatoren lar deg forandre fra markren til dit bevegelsen + tar deg. Det vil si, skriv ce for forandre fra markren til slutten + av ordet, c$ for forandre til slutten av linjen. + + 4. Formatet for forandre er: + + c [nummer] bevegelse + +N kan du g til neste leksjon. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.1: POSISJONERING AV MARKREN OG FILSTATUS + + ** Trykk CTRL-G for vise posisjonen i filen og filstatusen. + Trykk G for g til en spesifikk linje i filen. ** + + Merk: Les hele leksjonen fr du utfrer noen av punktene! + + 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding + vil komme til syne p bunnen av skjermen med filnavnet og posisjonen i + filen. Husk linjenummeret for bruk i steg 3. + +Merk: Du kan se markrposisjonen i nederste hyre hjrne av skjermen. Dette + skjer nr ruler-valget er satt (forklart i leksjon 6). + + 2. Trykk G for g til bunnen av filen. + Skriv gg for g til begynnelsen av filen. + + 3. Skriv inn linjenummeret du var p og deretter G . Dette vil fre deg + tilbake til linjen du var p da du frst trykket CTRL-G. + + 4. Utfr steg 1 til 3 hvis du fler deg sikker p prosedyren. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.2: SKEKOMMANDOEN + + ** Skriv / etterfulgt av en skestreng som du vil lete etter. ** + + 1. Trykk / nr du er i normalmodusen. Legg merke til at skrstreken og + markren kommer til syne p bunnen av skjermen i likhet med + :-kommandoene. + + 2. Skriv feeeiil og trykk <ENTER>. Dette er teksten du vil lete etter. + + 3. For finne neste forekomst av skestrengen, trykk n . + For lete etter samme sketeksten i motsatt retning, trykk N . + + 4. For lete etter en tekst bakover i filen, bruk ? istedenfor / . + + 5. For g tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens + du trykker bokstaven o ). Repeter for g enda lengre tilbake. CTRL-I + gr framover. + +---> feeeiil er ikke mten skrive feil p, feeeiil er helt feil. +Merk: Nr skingen nr slutten av filen, vil den fortsette fra starten unntatt + hvis wrapscan-valget er resatt. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.3: FINN SAMSVARENDE PARENTESER + + + ** Trykk % for finne en samsvarende ), ] eller } . ** + + 1. Plasser markren p en (, [ eller { p linjen nedenfor merket --->. + + 2. Trykk % . + + 3. Markren vil g til den samsvarende parentesen eller hakeparentesen. + + 4. Trykk % for flytte markren til den andre samsvarende parentesen. + + 5. Flytt markren til en annen (, ), [, ], { eller } og se hva % gjr. + +---> Dette ( er en testlinje med (, [ ] og { } i den )). + +Merk: Dette er veldig nyttig til feilsking i programmer som har ubalansert + antall parenteser! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.4: ERSTATT-KOMMANDOEN + + + ** Skriv :s/gammel/ny/g for erstatte gammel med ny. ** + + 1. Flytt markren til linjen nedenfor som er merket med --->. + + 2. Skriv :s/deen/den/ <ENTER> . Legg merke til at denne kommandoen bare + forandrer den frste forekomsten av deen p linjen. + + 3. Skriv :s/deen/den/g . Nr g-flagget legges til, betyr dette global + erstatning p linjen og erstatter alle forekomster av deen p linjen. + +---> deen som kan kaste deen tyngste steinen lengst er deen beste + + 4. For erstatte alle forekomster av en tekststreng mellom to linjer, + skriv :#,#s/gammel/ny/g der #,# er linjenumrene p de to linjene for + linjeomrdet erstatningen skal gjres. + Skriv :%s/gammel/ny/g for erstatte tekst i hele filen. + Skriv :%s/gammel/ny/gc for finne alle forekomster i hele filen, og + deretter sprre om teksten skal erstattes eller + ikke. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 4 + + + 1. Ctrl-G viser nvrende posisjon i filen og filstatusen. + G gr til slutten av filen. + nummer G gr til det linjenummeret. + gg gr til den frste linjen. + + 2. Skriv / etterfulgt av en sketekst for lete FRAMOVER etter teksten. + Skriv ? etterfulgt av en sketekst for lete BAKOVER etter teksten. + Etter et sk kan du trykke n for finne neste forekomst i den samme + retningen eller N for lete i motsatt retning. + CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner. + + 3. Skriv % nr markren str p en (, ), [, ], { eller } for finne den + som samsvarer. + + 4. Erstatte gammel med frste ny p en linje: :s/gammel/ny + Erstatte alle gammel med ny p en linje: :s/gammel/ny/g + Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g + Erstatte alle forekomster i en fil: :%s/gammel/ny/g + For godkjenne hver erstatning, legg til c: :%s/gammel/ny/gc +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.1: HVORDAN UTFRE EN EKSTERN KOMMANDO + + + ** Skriv :! etterfulgt av en ekstern kommando for utfre denne. ** + + 1. Skriv den velkjente kommandoen : for plassere markren p bunnen av + skjermen. Dette lar deg skrive en kommandolinjekommando. + + 2. N kan du skrive tegnet ! . Dette lar deg utfre en hvilken som helst + ekstern kommando. + + 3. Som et eksempel, skriv ls etter utropstegnet og trykk <ENTER>. Du vil + n f en liste over filene i katalogen, akkurat som om du hadde kjrt + kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis + ls ikke virker. + +MERK: Det er mulig kjre alle eksterne kommandoer p denne mten, ogs med + parametere. + +MERK: Alle :-kommandoer m avsluttes med <ENTER>. Fra dette punktet er det + ikke alltid vi nevner det. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.2: MER OM LAGRING AV FILER + + + ** For lagre endringene gjort i en tekst, skriv :w FILNAVN. ** + + 1. Skriv :!dir eller :!ls for f en liste over filene i katalogen. Du + vet allerede at du m trykke <ENTER> etter dette. + + 2. Velg et filnavn p en fil som ikke finnes, som for eksempel TEST . + + 3. Skriv :w TEST (der TEST er filnavnet du velger). + + 4. Dette lagrer hele filen (denne innfringen) under navnet TEST . For + sjekke dette, skriv :!dir eller :!ls igjen for se innholdet av + katalogen. + +Merk: Hvis du n hadde avsluttet Vim og startet p nytt igjen med vim TEST, + ville filen vrt en eksakt kopi av innfringen da du lagret den. + + 5. Fjern filen ved skrive :!rm TEST hvis du er p et Unix-lignende + operativsystem, eller :!del TEST hvis du bruker MS-DOS. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES + + + ** For lagre en del av en fil, skriv v bevegelse :w FILNAVN ** + + 1. Flytt markren til denne linjen. + + 2. Trykk v og flytt markren til det femte elementet nedenfor. Legg merke + til at teksten blir markert. + + 3. Trykk : (kolon). P bunnen av skjermen vil :'<,'> komme til syne. + + 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller + at du ser :'<,'>w TEST fr du trykker Enter. + + 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller !ls + for se den. Ikke slett den enda! Vi vil bruke den i neste leksjon. + +MERK: Ved trykke v startes visuelt valg. Du kan flytte markren rundt for + gjre det valgte omrdet strre eller mindre. Deretter kan du bruke en + operator for gjre noe med teksten. For eksempel sletter d teksten. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.4: HENTING OG SAMMENSLING AV FILER + + + ** For lese inn en annen fil inn i nvrende buffer, skriv :r FILNAVN ** + + 1. Plasser markren like over denne linjen. + +MERK: Etter ha utfrt steg 2 vil du se teksten fra leksjon 5.3. G deretter + NED for se denne leksjonen igjen. + + 2. Hent TEST-filen ved bruke kommandoen :r TEST der TEST er navnet p + filen du brukte. Filen du henter blir plassert nedenfor markrlinjen. + + 3. For sjekke at filen ble hentet, g tilbake og se at det er to kopier av + leksjon 5.3, originalen og denne versjonen. + +MERK: Du kan ogs lese utdataene av en ekstern kommando. For eksempel, :r !ls + leser utdataene av ls-kommandoen og legger dem nedenfor markren. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 5 + + + 1. :!kommando utfrer en ekstern kommandio. + + Noen nyttige eksempler er: + (MS-DOS) (Unix) + :!dir :!ls - List filene i katalogen. + :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN. + + 2. :w FILNAVN skriver den nvrende Vim-filen disken med navnet FILNAVN . + + 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen + FILNAVN. + + 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markren. + + 5. :r !dir leser utdataene fra dir-kommandoen og legger dem nedenfor + markrposisjonen. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.1: PNE LINJE-KOMMANDOEN + + + ** Skriv o for pne opp for en ny linje etter markren og g til + innsettingsmodus ** + + 1. Flytt markren til linjen nedenfor merket --->. + + 2. Skriv o (liten o) for pne opp en linje NEDENFOR markren og g inn i + innsettingsmodus. + + 3. Skriv litt tekst og trykk <ESC> for g ut av innsettingsmodusen. + +---> Etter at o er skrevet blir markren plassert p den tomme linjen. + + 4. For pne en ny linje OVER markren, trykk rett og slett en stor O + istedenfor en liten o . Prv dette p linjen nedenfor. + +---> Lag ny linje over denne ved trykke O mens markren er p denne linjen. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.2: LEGG TIL-KOMMANDOEN + + + ** Skriv a for legge til tekst ETTER markren. ** + + 1. Flytt markren til starten av linjen merket ---> nedenfor. + + 2. Trykk e til markren er p slutten av li. + + 3. Trykk a (liten a) for legge til tekst ETTER markren. + + 4. Fullfr ordet snn som p linjen nedenfor. Trykk <ESC> for g ut av + innsettingsmodusen. + + 5. Bruk e for g til det neste ufullstendige ordet og repeter steg 3 og + 4. + +---> Denne li lar deg ve p leg til tek p en linje. +---> Denne linjen lar deg ve p legge til tekst p en linje. + +Merk: a, i og A gr alle til den samme innsettingsmodusen, den eneste + forskjellen er hvor tegnene blir satt inn. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.3: EN ANNEN MTE ERSTATTE P + + + ** Skriv en stor R for erstatte mer enn ett tegn. ** + + 1. Flytt markren til den frste linjen nedenfor merket --->. Flytt markren + til begynnelsen av den frste xxx-en. + + 2. Trykk R og skriv inn tallet som str nedenfor p den andre linjen s + det erstatter xxx. + + 3. Trykk <ESC> for g ut av erstatningsmodusen. Legg merke til at resten + av linjen forblir uforandret. + + 4. Repeter stegene for erstatte den gjenvrende xxx. + +---> Ved legge 123 til xxx fr vi xxx. +---> Ved legge 123 til 456 fr vi 579. + +MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives + erstatter et eksisterende tegn. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.4: KOPIERE OG LIME INN TEKST + + + ** Bruk y-operatoren for kopiere tekst og p for lime den inn ** + + 1. G til linjen merket ---> nedenfor og plasser markren etter a). + + 2. G inn i visuell modus med v og flytt markren til like fr frste. + + 3. Trykk y for kopiere (engelsk: yank) den uthevede teksten. + + 4. Flytt markren til slutten av den neste linjen: j$ + + 5. Trykk p for lime inn teksten. Trykk deretter: a andre <ESC> . + + 6. Bruk visuell modus for velge valget., kopier det med y , g til + slutten av den neste linjen med j$ og legg inn teksten der med p . + +---> a) Dette er det frste valget. + b) + +Merk: Du kan ogs bruke y som en operator; yw kopierer ett ord. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.5: SETT VALG + + + ** Sett et valg s sk eller erstatning ignorerer store/sm bokstaver. ** + + 1. Let etter ignore ved skrive: /ignore <ENTER> + Repeter flere ganger ved trykke n . + + 2. Sett ic-valget (Ignore Case) ved skrive: :set ic + + 3. Sk etter ignore igjen ved trykke n . + Legg merke til at bde Ignore og IGNORE blir funnet. + + 4. Sett hlsearch- og incsearch-valgene: :set hls is + + 5. Skriv skekommandoen igjen og se hva som skjer: /ignore <ENTER> + + 6. For sl av ignorering av store/sm bokstaver, skriv: :set noic + +Merk: For fjerne uthevingen av treff, skriv: :nohlsearch +Merk: Hvis du vil ignorere store/sm bokstaver for kun en skekommando, bruk + \c i uttrykket: /ignore\c <ENTER> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 6 + + 1. Trykk o for legge til en linje NEDENFOR markren og g inn i + innsettingsmodus. + Trykk O for pne en linje OVER markren. + + 2. Skriv a for sette inn tekst ETTER markren. + Skriv A for sette inn tekst etter slutten av linjen. + + 3. Kommandoen e gr til slutten av et ord. + + 4. Operatoren y (yank) kopierer tekst, p (paste) limer den inn. + + 5. Ved trykke R gr du inn i erstatningsmodus helt til <ESC> trykkes. + + 6. Skriv :set xxx for sette valget xxx. Noen valg er: + ic ignorecase ignorer store/sm bokstaver under sk + is incsearch vis delvise treff for en sketekst + hls hlsearch uthev alle sketreff + + 7. Legg til no foran valget for sl det av: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.1: F HJELP + + + ** Bruk det innebygde hjelpesystemet. ** + + Vim har et omfattende innebygget hjelpesystem. For starte det, prv en av + disse mtene: + - Trykk Hjelp-tasten (hvis du har en) + - Trykk F1-tasten (hvis du har en) + - Skriv :help <ENTER> + + Les teksten i hjelpevinduet for finne ut hvordan hjelpen virker. + Skriv CTRL-W CTRL-W for hoppe fra et vindu til et annet + Skriv :q <ENTER> for lukke hjelpevinduet. + + Du kan f hjelp for omtrent alle temaer om Vim ved skrive et parameter til + :help-kommandoen. Prv disse (ikke glem trykke <ENTER>): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.2: LAG ET OPPSTARTSSKRIPT + + + ** Sl p funksjoner i Vim ** + + Vim har mange flere funksjoner enn Vi, men flesteparten av dem er sltt av + som standard. For begynne bruke flere funksjoner m du lage en + vimrc-fil. + + 1. Start redigeringen av vimrc-filen. Dette avhenger av systemet ditt: + :e ~/.vimrc for Unix + :e $VIM/_vimrc for MS Windows + + 2. Les inn eksempelfilen for vimrc: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Lagre filen med: + :w + + Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til + alle dine foretrukne oppsett i denne vimrc-filen. + For mer informasjon, skriv :help vimrc-intro +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.3: FULLFRING + + + ** Kommandolinjefullfring med CTRL-D og <TAB> ** + + 1. Vr sikker p at Vim ikke er i Vi-kompatibel modus: :set nocp + + 2. Se hvilke filer som er i katalogen: :!ls eller :!dir + + 3. Skriv starten p en kommando: :e + + 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med + e. + + 5. Trykk <TAB> og Vim vil fullfre kommandonavnet til :edit. + + 6. Legg til et mellomrom og starten p et eksisterende filnavn: :edit FIL + + 7. Trykk <TAB>. Vim vil fullfre navnet (hvis det er unikt). + +MERK: Fullfring fungerer for mange kommandoer. Prv ved trykke CTRL-D og + <TAB>. Det er spesielt nyttig for bruk sammen med :help . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 7 + + + 1. Skriv :help eller trykk <F1> eller <Help> for pne et hjelpevindu. + + 2. Skriv :help kommando for f hjelp om kommando . + + 3. Trykk CTRL-W CTRL-W for hoppe til et annet vindu. + + 4. Trykk :q for lukke hjelpevinduet. + + 5. Opprett et vimrc-oppstartsskript for lagre favorittvalgene dine. + + 6. Nr du skriver en :-kommando, trykk CTRL-D for se mulige + fullfringer. Trykk <TAB> for bruke en fullfring. + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Her slutter innfringen i Vim. Den var ment som en rask oversikt over + editoren, akkurat nok til la deg sette i gang med enkel bruk. Den er p + langt nr komplett, da Vim har mange flere kommandoer. Les bruksanvisningen + ved skrive :help user-manual . + + For videre lesing og studier, kan denne boken anbefales: + Vim - Vi Improved av Steve Oualline + Utgiver: New Riders + Den frste boken som er fullt og helt dedisert til Vim. Spesielt nyttig for + nybegynnere. Inneholder mange eksempler og illustrasjoner. + Se http://iccf-holland.org/click5.html + + Denne boken er eldre og handler mer om Vi enn Vim, men anbefales ogs: + Learning the Vi Editor av Linda Lamb + Utgiver: O'Reilly & Associates Inc. + Det er en god bok for f vite omtrent hva som helst om Vi. + Den sjette utgaven inneholder ogs informasjon om Vim. + + Denne innfringen er skrevet av Michael C. Pierce og Robert K. Ware, + Colorado School of Mines med ider av Charles Smith, Colorado State + University. E-mail: bware@mines.colorado.edu . + + Modifisert for Vim av Bram Moolenaar. + Oversatt av yvind A. Holm. E-mail: vimtutor _AT_ sunbase.org + Id: tutor.no 406 2007-03-18 22:48:36Z sunny + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +vim: set ts=8 :
new file mode 100644 --- /dev/null +++ b/runtime/tutor/tutor.nb.utf-8 @@ -0,0 +1,973 @@ +=============================================================================== += V e l k o m m e n t i l i n n f ø r i n g e n i V i m -- Ver. 1.7 = +=============================================================================== + + Vim er en meget kraftig editor med mange kommandoer, alt for mange til å + kunne gå gjennom alle i en innføring som denne. Den er beregnet på å + sette deg inn i bruken av nok kommandoer så du vil være i stand til lett + å kunne bruke Vim som en editor til alle formål. + + Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30 + minutter, avhengig av hvor mye tid du bruker til eksperimentering. + + MERK: + Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne + filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er + dette allerede en kopi). + + Det er viktig å huske at denne innføringen er beregnet på læring gjennom + bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig. + Hvis du bare leser teksten, vil du glemme kommandoene! + + Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for + å flytte markøren helt til leksjon 1.1 fyller skjermen. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.1: FLYTTING AV MARKØREN + + + ** For å flytte markøren, trykk tastene h, j, k, l som vist. ** + ^ + k Tips: h-tasten er til venstre og flytter til venstre. + < h l > l-tasten er til høyre og flytter til høyre. + j j-tasten ser ut som en pil som peker nedover. + v + 1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene. + + 2. Hold inne nedovertasten (j) til den repeterer. + Nå vet du hvordan du beveger deg til neste leksjon. + + 3. Gå til leksjon 1.2 ved hjelp av nedovertasten. + +Merk: Hvis du blir usikker på noe du har skrevet, trykk <ESC> for å gå til + normalmodus. Skriv deretter kommandoen du ønsket på nytt. + +Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til + å bevege markøren mye raskere når du er blitt vant til det. Helt sant! + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.2: AVSLUTTE VIM + + + !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!! + + 1. Trykk <ESC>-tasten (for å forsikre deg om at du er i normalmodus). + + 2. Skriv: :q! <ENTER>. + Dette avslutter editoren og FORKASTER alle forandringer som du har gjort. + + 3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne + innføringen. Den er: vimtutor <ENTER> + + 4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å + avslutte og starte editoren på nytt. + +MERK: :q! <ENTER> forkaster alle forandringer som du gjorde. I løpet av noen + få leksjoner vil du lære hvordan du lagrer forandringene til en fil. + + 5. Flytt markøren ned til leksjon 1.3. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.3: REDIGERING AV TEKST -- SLETTING + + + ** Trykk x for å slette tegnet under markøren. ** + + 1. Flytt markøren til den første linjen merket med --->. + + 2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som + skal slettes. + + 3. Trykk tasten x for å slette det uønskede tegnet. + + 4. Repeter punkt 2 til 4 til setningen er lik den som er under. + +---> Hessstennnn brrråsnudddde ii gaaata. +---> Hesten bråsnudde i gata. + + 5. Nå som linjen er korrekt, gå til leksjon 1.4. + +MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men + bruk dem helt til de sitter. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING + + + ** Trykk i for å sette inn tekst. ** + + 1. Flytt markøren til den første linjen som er merket med --->. + + 2. For å gjøre den første linjen lik den andre, flytt markøren til den står + på tegnet ETTER posisjonen der teksten skal settes inn. + + 3. Trykk i og skriv inn teksten som mangler. + + 4. Etterhvert som hver feil er fikset, trykk <ESC> for å returnere til + normalmodus. Repeter punkt 2 til 4 til setningen er korrekt. + +---> Det er tkst som mnglr . +---> Det er ganske mye tekst som mangler her. + + 5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen + nedenfor. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL + + + ** Trykk A for å legge til tekst. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. + Det har ikke noe å si hvor markøren er plassert på den linjen. + + 2. Trykk A og skriv inn det som skal legges til. + + 3. Når teksten er lagt til, trykk <ESC> for å returnere til normalmodusen. + + 4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og + 3 for å reparere denne setningen. + +---> Det mangler noe tekst p + Det mangler noe tekst på denne linjen. +---> Det mangler også litt tek + Det mangler også litt tekst på denne linjen. + + 5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 1.6: REDIGERE EN FIL + + + ** Bruk :wq for å lagre en fil og avslutte. ** + + !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!! + + 1. Avslutt denne innføringen som du gjorde i leksjon 1.2: :q! + + 2. Skriv denne kommandoen på kommandolinja: vim tutor <ENTER> + «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila + som du vil redigere. Bruk en fil som kan forandres. + + 3. Sett inn og slett tekst som du lærte i de foregående leksjonene. + + 4. Lagre filen med forandringene og avslutt Vim med: :wq <ENTER> + + 5. Start innføringen på nytt og flytt ned til oppsummeringen som følger. + + 6. Etter å ha lest og forstått stegene ovenfor: Sett i gang. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 1 + + + 1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene. + h (venstre) j (ned) k (opp) l (høyre) + + 2. For å starte Vim fra skall-kommandolinjen, skriv: vim FILNAVN <ENTER> + + 3. For å avslutte Vim, skriv: <ESC> :q! <ENTER> for å forkaste endringer. + ELLER skriv: <ESC> :wq <ENTER> for å lagre forandringene. + + 4. For å slette tegnet under markøren, trykk: x + + 5. For å sette inn eller legge til tekst, trykk: + i skriv innsatt tekst <ESC> sett inn før markøren + A skriv tillagt tekst <ESC> legg til på slutten av linjen + +MERK: Når du trykker <ESC> går du til normalmodus eller du avbryter en uønsket + og delvis fullført kommando. + + Nå kan du gå videre til leksjon 2. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.1: SLETTEKOMMANDOER + + + ** Trykk dw for å slette et ord. ** + + 1. Trykk <ESC> for å være sikker på at du er i normalmodus. + + 2. Flytt markøren til den første linjen nedenfor merket --->. + + 3. Flytt markøren til begynnelsen av ordet som skal slettes. + + 4. Trykk dw og ordet vil forsvinne. + +MERK: Bokstaven d vil komme til syne på den nederste linjen på skjermen når + du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet + tegn enn d har du skrevet noe feil; trykk <ESC> og start på nytt. + +---> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen. +---> Det er tre ord som ikke hører hjemme i denne setningen. + + 5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå + deretter til leksjon 2.2. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.2: FLERE SLETTEKOMMANDOER + + + ** Trykk d$ for å slette til slutten av linjen. ** + + 1. Trykk <ESC> for å være sikker på at du er i normalmodus. + + 2. Flytt markøren til linjen nedenfor merket --->. + + 3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum). + + 4. Trykk d$ for å slette alt til slutten av linjen. + +---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye. + + 5. Gå til leksjon 2.3 for å forstå hva som skjer. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.3: OM OPERATORER OG BEVEGELSER + + + Mange kommandoer som forandrer teksten er laget ut i fra en operator og en + bevegelse. Formatet for en slettekommando med sletteoperatoren d er: + + d bevegelse + + Der: + d - er sletteoperatoren. + bevegelse - er hva operatoren vil opere på (listet nedenfor). + + En kort liste med bevegelser: + w - til starten av det neste ordet, UNNTATT det første tegnet. + e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet. + $ - til slutten av linjen, INKLUDERT det siste tegnet. + + Ved å skrive de vil altså alt fra markøren til slutten av ordet bli + slettet. + +MERK: Ved å skrive kun bevegelsen i normalmodusen uten en operator vil + markøren flyttes som spesifisert. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE + + + ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. ** + + 1. Flytt markøren til starten av linjen markert ---> nedenfor. + + 2. Skriv 2w for å flytte markøren to ord framover. + + 3. Skriv 3e for å flytte markøren framover til slutten av det tredje + ordet. + + 4. Skriv 0 (null) for å flytte til starten av linjen. + + 5. Repeter steg 2 og 3 med forskjellige tall. + +---> Dette er en linje med noen ord som du kan bevege deg rundt på. + + 6. Gå videre til leksjon 2.5. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER + + + ** Et tall sammen med en operator repeterer den så mange ganger. ** + + I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du + inn antall før bevegelsen for å slette mer: + d nummer bevegelse + + 1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert + med --->. + + 2. Skriv 2dw for å slette de to ordene med store bokstaver. + + 3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende + ordene som har store bokstaver. + +---> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar. + +MERK: Et antall mellom operatoren d og bevegelsen virker på samme måte som å + bruke bevegelsen uten en operator. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.6: OPERERE PÅ LINJER + + + ** Trykk dd for å slette en hel linje. ** + + På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at + det vil være lettere å rett og slett trykke to d-er for å slette en linje. + + 1. Flytt markøren til den andre linjen i verset nedenfor. + 2. Trykk dd å slette linjen. + 3. Flytt deretter til den fjerde linjen. + 4. Trykk 2dd for å slette to linjer. + +---> 1) Roser er røde, +---> 2) Gjørme er gøy, +---> 3) Fioler er blå, +---> 4) Jeg har en bil, +---> 5) Klokker viser tiden, +---> 6) Druer er søte +---> 7) Og du er likeså. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 2.7: ANGRE-KOMMANDOEN + + + ** Trykk u for å angre siste kommando, U for å fikse en hel linje. ** + + 1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den + første feilen. + 2. Trykk x for å slette det første uønskede tegnet. + 3. Trykk så u for å angre den siste utførte kommandoen. + 4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen x . + 5. Trykk nå en stor U for å sette linjen tilbake til det den var + originalt. + 6. Trykk u noen ganger for å angre U og foregående kommandoer. + 7. Deretter trykker du CTRL-R (hold CTRL nede mens du trykker R) noen + ganger for å gjenopprette kommandoene (omgjøre angrekommandoene). + +---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre. + + 8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av + leksjon 2. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 2 + + + 1. For å slette fra markøren fram til det neste ordet, trykk: dw + 2. For å slette fra markøren til slutten av en linje, trykk: d$ + 3. For å slette en hel linje, trykk: dd + + 4. For å repetere en bevegelse, sett et nummer foran: 2w + 5. Formatet for en forandringskommando er: + operator [nummer] bevegelse + der: + operator - hva som skal gjøres, f.eks. d for å slette + [nummer] - et valgfritt antall for å repetere bevegelsen + bevegelse - hva kommandoen skal operere på, eksempelvis w (ord), + $ (til slutten av linjen) og så videre. + + 6. For å gå til starten av en linje, bruk en null: 0 + + 7. For å angre tidligere endringer, skriv: u (liten u) + For å angre alle forandringer på en linje, skriv: U (stor U) + For å omgjøre angringen, trykk: CTRL-R + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.1: «LIM INN»-KOMMANDOEN + + + ** Trykk p for å lime inn tidligere slettet tekst etter markøren ** + + 1. Flytt markøren til den første linjen med ---> nedenfor. + + 2. Trykk dd for å slette linjen og lagre den i et Vim-register. + + 3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn. + + 4. Trykk p for å legge linjen under markøren. + + 5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge. + +---> d) Kan du også lære? +---> b) Fioler er blå, +---> c) Intelligens må læres, +---> a) Roser er røde, + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.2: «ERSTATT»-KOMMANDOEN + + + ** Trykk rx for å erstatte tegnet under markøren med x. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. + + 2. Flytt markøren så den står oppå den første feilen. + + 3. Trykk r og deretter tegnet som skal være der. + + 4. Repeter punkt 2 og 3 til den første linjen er lik den andre. + +---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster! +---> Da denne linjen ble skrevet, var det noen som trykket feile taster! + + 5. Gå videre til leksjon 3.2. + +MERK: Husk at du bør lære ved å BRUKE, ikke pugge. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.3: «FORANDRE»-OPERATOREN + + + ** For å forandre til slutten av et ord, trykk ce . ** + + 1. Flytt markøren til den første linjen nedenfor som er merket --->. + + 2. Plasser markøren på u i «lubjwr». + + 3. Trykk ce og det korrekte ordet (i dette tilfellet, skriv «injen»). + + 4. Trykk <ESC> og gå til det neste tegnet som skal forandres. + + 5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre. + +---> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen. +---> Denne linjen har noen ord som må forandres med «forandre»-kommandoen. + +Vær oppmerksom på at ce sletter ordet og går inn i innsettingsmodus. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c + + + ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». ** + + 1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er: + + c [nummer] bevegelse + + 2. Bevegelsene er de samme, som for eksempel w (ord) og $ (slutten av en + linje). + + 3. Gå til den første linjen nedenfor som er merket --->. + + 4. Flytt markøren til den første feilen. + + 5. Skriv c$ og skriv resten av linjen lik den andre og trykk <ESC>. + +---> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste. +---> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen. + +MERK: Du kan bruke slettetasten for å rette feil mens du skriver. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 3 + + + 1. For å legge tilbake tekst som nettopp er blitt slettet, trykk p . Dette + limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet + vil den bli limt inn på linjen under markøren). + + 2. For å erstatte et tegn under markøren, trykk r og deretter tegnet som + du vil ha der. + + 3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen + tar deg. Det vil si, skriv ce for å forandre fra markøren til slutten + av ordet, c$ for å forandre til slutten av linjen. + + 4. Formatet for «forandre» er: + + c [nummer] bevegelse + +Nå kan du gå til neste leksjon. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS + + ** Trykk CTRL-G for å vise posisjonen i filen og filstatusen. + Trykk G for å gå til en spesifikk linje i filen. ** + + Merk: Les hele leksjonen før du utfører noen av punktene! + + 1. Hold nede Ctrl-tasten og trykk g . Vi kaller dette CTRL-G. En melding + vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i + filen. Husk linjenummeret for bruk i steg 3. + +Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette + skjer når «ruler»-valget er satt (forklart i leksjon 6). + + 2. Trykk G for å gå til bunnen av filen. + Skriv gg for å gå til begynnelsen av filen. + + 3. Skriv inn linjenummeret du var på og deretter G . Dette vil føre deg + tilbake til linjen du var på da du først trykket CTRL-G. + + 4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.2: SØKEKOMMANDOEN + + ** Skriv / etterfulgt av en søkestreng som du vil lete etter. ** + + 1. Trykk / når du er i normalmodusen. Legg merke til at skråstreken og + markøren kommer til syne på bunnen av skjermen i likhet med + «:»-kommandoene. + + 2. Skriv «feeeiil» og trykk <ENTER>. Dette er teksten du vil lete etter. + + 3. For å finne neste forekomst av søkestrengen, trykk n . + For å lete etter samme søketeksten i motsatt retning, trykk N . + + 4. For å lete etter en tekst bakover i filen, bruk ? istedenfor / . + + 5. For å gå tilbake til der du kom fra, trykk CTRL-O (Hold Ctrl nede mens + du trykker bokstaven o ). Repeter for å gå enda lengre tilbake. CTRL-I + går framover. + +---> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil. +Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt + hvis «wrapscan»-valget er resatt. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.3: FINN SAMSVARENDE PARENTESER + + + ** Trykk % for å finne en samsvarende ), ] eller } . ** + + 1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->. + + 2. Trykk % . + + 3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen. + + 4. Trykk % for å flytte markøren til den andre samsvarende parentesen. + + 5. Flytt markøren til en annen (, ), [, ], { eller } og se hva % gjør. + +---> Dette ( er en testlinje med (, [ ] og { } i den )). + +Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert + antall parenteser! + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 4.4: ERSTATT-KOMMANDOEN + + + ** Skriv :s/gammel/ny/g for å erstatte «gammel» med «ny». ** + + 1. Flytt markøren til linjen nedenfor som er merket med --->. + + 2. Skriv :s/deen/den/ <ENTER> . Legg merke til at denne kommandoen bare + forandrer den første forekomsten av «deen» på linjen. + + 3. Skriv :s/deen/den/g . Når g-flagget legges til, betyr dette global + erstatning på linjen og erstatter alle forekomster av «deen» på linjen. + +---> deen som kan kaste deen tyngste steinen lengst er deen beste + + 4. For å erstatte alle forekomster av en tekststreng mellom to linjer, + skriv :#,#s/gammel/ny/g der #,# er linjenumrene på de to linjene for + linjeområdet erstatningen skal gjøres. + Skriv :%s/gammel/ny/g for å erstatte tekst i hele filen. + Skriv :%s/gammel/ny/gc for å finne alle forekomster i hele filen, og + deretter spørre om teksten skal erstattes eller + ikke. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 4 + + + 1. Ctrl-G viser nåværende posisjon i filen og filstatusen. + G går til slutten av filen. + nummer G går til det linjenummeret. + gg går til den første linjen. + + 2. Skriv / etterfulgt av en søketekst for å lete FRAMOVER etter teksten. + Skriv ? etterfulgt av en søketekst for å lete BAKOVER etter teksten. + Etter et søk kan du trykke n for å finne neste forekomst i den samme + retningen eller N for å lete i motsatt retning. + CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner. + + 3. Skriv % når markøren står på en (, ), [, ], { eller } for å finne den + som samsvarer. + + 4. Erstatte «gammel» med første «ny» på en linje: :s/gammel/ny + Erstatte alle «gammel» med «ny» på en linje: :s/gammel/ny/g + Erstatte tekst mellom to linjenumre: :#,#s/gammel/ny/g + Erstatte alle forekomster i en fil: :%s/gammel/ny/g + For å godkjenne hver erstatning, legg til «c»: :%s/gammel/ny/gc +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO + + + ** Skriv :! etterfulgt av en ekstern kommando for å utføre denne. ** + + 1. Skriv den velkjente kommandoen : for å plassere markøren på bunnen av + skjermen. Dette lar deg skrive en kommandolinjekommando. + + 2. Nå kan du skrive tegnet ! . Dette lar deg utføre en hvilken som helst + ekstern kommando. + + 3. Som et eksempel, skriv ls etter utropstegnet og trykk <ENTER>. Du vil + nå få en liste over filene i katalogen, akkurat som om du hadde kjørt + kommandoen direkte fra kommandolinjen i skallet. Eller bruk :!dir hvis + «ls» ikke virker. + +MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med + parametere. + +MERK: Alle «:»-kommandoer må avsluttes med <ENTER>. Fra dette punktet er det + ikke alltid vi nevner det. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.2: MER OM LAGRING AV FILER + + + ** For å lagre endringene gjort i en tekst, skriv :w FILNAVN. ** + + 1. Skriv :!dir eller :!ls for å få en liste over filene i katalogen. Du + vet allerede at du må trykke <ENTER> etter dette. + + 2. Velg et filnavn på en fil som ikke finnes, som for eksempel TEST . + + 3. Skriv :w TEST (der TEST er filnavnet du velger). + + 4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å + sjekke dette, skriv :!dir eller :!ls igjen for å se innholdet av + katalogen. + +Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST», + ville filen vært en eksakt kopi av innføringen da du lagret den. + + 5. Fjern filen ved å skrive :!rm TEST hvis du er på et Unix-lignende + operativsystem, eller :!del TEST hvis du bruker MS-DOS. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES + + + ** For å lagre en del av en fil, skriv v bevegelse :w FILNAVN ** + + 1. Flytt markøren til denne linjen. + + 2. Trykk v og flytt markøren til det femte elementet nedenfor. Legg merke + til at teksten blir markert. + + 3. Trykk : (kolon). På bunnen av skjermen vil :'<,'> komme til syne. + + 4. Trykk w TEST , der TEST er et filnavn som ikke finnes enda. Kontroller + at du ser :'<,'>w TEST før du trykker Enter. + + 5. Vim vil skrive de valgte linjene til filen TEST. Bruk :!dir eller !ls + for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon. + +MERK: Ved å trykke v startes visuelt valg. Du kan flytte markøren rundt for + å gjøre det valgte området større eller mindre. Deretter kan du bruke en + operator for å gjøre noe med teksten. For eksempel sletter d teksten. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER + + + ** For å lese inn en annen fil inn i nåværende buffer, skriv :r FILNAVN ** + + 1. Plasser markøren like over denne linjen. + +MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter + NED for å se denne leksjonen igjen. + + 2. Hent TEST-filen ved å bruke kommandoen :r TEST der TEST er navnet på + filen du brukte. Filen du henter blir plassert nedenfor markørlinjen. + + 3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av + leksjon 5.3, originalen og denne versjonen. + +MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel, :r !ls + leser utdataene av ls-kommandoen og legger dem nedenfor markøren. + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 5 + + + 1. :!kommando utfører en ekstern kommandio. + + Noen nyttige eksempler er: + (MS-DOS) (Unix) + :!dir :!ls - List filene i katalogen. + :!del FILNAVN :!rm FILNAVN - Slett filen FILNAVN. + + 2. :w FILNAVN skriver den nåværende Vim-filen disken med navnet FILNAVN . + + 3. v bevegelse :w FILNAVN lagrer de visuelt valgte linjene til filen + FILNAVN. + + 4. :r FILNAVN henter filen FILNAVN og legger den inn nedenfor markøren. + + 5. :r !dir leser utdataene fra «dir»-kommandoen og legger dem nedenfor + markørposisjonen. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN + + + ** Skriv o for å «åpne opp» for en ny linje etter markøren og gå til + innsettingsmodus ** + + 1. Flytt markøren til linjen nedenfor merket --->. + + 2. Skriv o (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i + innsettingsmodus. + + 3. Skriv litt tekst og trykk <ESC> for å gå ut av innsettingsmodusen. + +---> Etter at o er skrevet blir markøren plassert på den tomme linjen. + + 4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor O + istedenfor en liten o . Prøv dette på linjen nedenfor. + +---> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen. + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.2: «LEGG TIL»-KOMMANDOEN + + + ** Skriv a for å legge til tekst ETTER markøren. ** + + 1. Flytt markøren til starten av linjen merket ---> nedenfor. + + 2. Trykk e til markøren er på slutten av «li». + + 3. Trykk a (liten a) for å legge til tekst ETTER markøren. + + 4. Fullfør ordet sånn som på linjen nedenfor. Trykk <ESC> for å gå ut av + innsettingsmodusen. + + 5. Bruk e for å gå til det neste ufullstendige ordet og repeter steg 3 og + 4. + +---> Denne li lar deg øve på å leg til tek på en linje. +---> Denne linjen lar deg øve på å legge til tekst på en linje. + +Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste + forskjellen er hvor tegnene blir satt inn. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ + + + ** Skriv en stor R for å erstatte mer enn ett tegn. ** + + 1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren + til begynnelsen av den første «xxx»-en. + + 2. Trykk R og skriv inn tallet som står nedenfor på den andre linjen så + det erstatter xxx. + + 3. Trykk <ESC> for å gå ut av erstatningsmodusen. Legg merke til at resten + av linjen forblir uforandret. + + 4. Repeter stegene for å erstatte den gjenværende xxx. + +---> Ved å legge 123 til xxx får vi xxx. +---> Ved å legge 123 til 456 får vi 579. + +MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives + erstatter et eksisterende tegn. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.4: KOPIERE OG LIME INN TEKST + + + ** Bruk y-operatoren for å kopiere tekst og p for å lime den inn ** + + 1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)». + + 2. Gå inn i visuell modus med v og flytt markøren til like før «første». + + 3. Trykk y for å kopiere (engelsk: «yank») den uthevede teksten. + + 4. Flytt markøren til slutten av den neste linjen: j$ + + 5. Trykk p for å lime inn teksten. Trykk deretter: a andre <ESC> . + + 6. Bruk visuell modus for å velge « valget.», kopier det med y , gå til + slutten av den neste linjen med j$ og legg inn teksten der med p . + +---> a) Dette er det første valget. + b) + +Merk: Du kan også bruke y som en operator; yw kopierer ett ord. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 6.5: SETT VALG + + + ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. ** + + 1. Let etter «ignore» ved å skrive: /ignore <ENTER> + Repeter flere ganger ved å trykke n . + + 2. Sett «ic»-valget (Ignore Case) ved å skrive: :set ic + + 3. Søk etter «ignore» igjen ved å trykke n . + Legg merke til at både «Ignore» og «IGNORE» blir funnet. + + 4. Sett «hlsearch»- og «incsearch»-valgene: :set hls is + + 5. Skriv søkekommandoen igjen og se hva som skjer: /ignore <ENTER> + + 6. For å slå av ignorering av store/små bokstaver, skriv: :set noic + +Merk: For å fjerne uthevingen av treff, skriv: :nohlsearch +Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk + \c i uttrykket: /ignore\c <ENTER> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 6 + + 1. Trykk o for å legge til en linje NEDENFOR markøren og gå inn i + innsettingsmodus. + Trykk O for å åpne en linje OVER markøren. + + 2. Skriv a for å sette inn tekst ETTER markøren. + Skriv A for å sette inn tekst etter slutten av linjen. + + 3. Kommandoen e går til slutten av et ord. + + 4. Operatoren y («yank») kopierer tekst, p («paste») limer den inn. + + 5. Ved å trykke R går du inn i erstatningsmodus helt til <ESC> trykkes. + + 6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er: + «ic» «ignorecase» ignorer store/små bokstaver under søk + «is» «incsearch» vis delvise treff for en søketekst + «hls» «hlsearch» uthev alle søketreff + + 7. Legg til «no» foran valget for å slå det av: :set noic + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.1: FÅ HJELP + + + ** Bruk det innebygde hjelpesystemet. ** + + Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av + disse måtene: + - Trykk Hjelp-tasten (hvis du har en) + - Trykk F1-tasten (hvis du har en) + - Skriv :help <ENTER> + + Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker. + Skriv CTRL-W CTRL-W for å hoppe fra et vindu til et annet + Skriv :q <ENTER> for å lukke hjelpevinduet. + + Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til + «:help»-kommandoen. Prøv disse (ikke glem å trykke <ENTER>): + + :help w + :help c_CTRL-D + :help insert-index + :help user-manual +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.2: LAG ET OPPSTARTSSKRIPT + + + ** Slå på funksjoner i Vim ** + + Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av + som standard. For å begynne å bruke flere funksjoner må du lage en + «vimrc»-fil. + + 1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt: + :e ~/.vimrc for Unix + :e $VIM/_vimrc for MS Windows + + 2. Les inn eksempelfilen for «vimrc»: + :r $VIMRUNTIME/vimrc_example.vim + + 3. Lagre filen med: + :w + + Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til + alle dine foretrukne oppsett i denne «vimrc»-filen. + For mer informasjon, skriv :help vimrc-intro +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Leksjon 7.3: FULLFØRING + + + ** Kommandolinjefullføring med CTRL-D og <TAB> ** + + 1. Vær sikker på at Vim ikke er i Vi-kompatibel modus: :set nocp + + 2. Se hvilke filer som er i katalogen: :!ls eller :!dir + + 3. Skriv starten på en kommando: :e + + 4. Trykk CTRL-D og Vim vil vise en liste over kommandoer som starter med + «e». + + 5. Trykk <TAB> og Vim vil fullføre kommandonavnet til «:edit». + + 6. Legg til et mellomrom og starten på et eksisterende filnavn: :edit FIL + + 7. Trykk <TAB>. Vim vil fullføre navnet (hvis det er unikt). + +MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og + <TAB>. Det er spesielt nyttig for bruk sammen med :help . +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + OPPSUMMERING AV LEKSJON 7 + + + 1. Skriv :help eller trykk <F1> eller <Help> for å åpne et hjelpevindu. + + 2. Skriv :help kommando for å få hjelp om kommando . + + 3. Trykk CTRL-W CTRL-W for å hoppe til et annet vindu. + + 4. Trykk :q for å lukke hjelpevinduet. + + 5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine. + + 6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige + fullføringer. Trykk <TAB> for å bruke en fullføring. + + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Her slutter innføringen i Vim. Den var ment som en rask oversikt over + editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på + langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen + ved å skrive :help user-manual . + + For videre lesing og studier, kan denne boken anbefales: + «Vim - Vi Improved» av Steve Oualline + Utgiver: New Riders + Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for + nybegynnere. Inneholder mange eksempler og illustrasjoner. + Se http://iccf-holland.org/click5.html + + Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også: + «Learning the Vi Editor» av Linda Lamb + Utgiver: O'Reilly & Associates Inc. + Det er en god bok for å få vite omtrent hva som helst om Vi. + Den sjette utgaven inneholder også informasjon om Vim. + + Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware, + Colorado School of Mines med idéer av Charles Smith, Colorado State + University. E-mail: bware@mines.colorado.edu . + + Modifisert for Vim av Bram Moolenaar. + Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org + Id: tutor.no 406 2007-03-18 22:48:36Z sunny + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +vim: set ts=8 :
--- a/runtime/tutor/tutor.pl +++ b/runtime/tutor/tutor.pl @@ -2,9 +2,9 @@ = W i t a j w t u t o r i a l u V I M - a - Wersja 1.7. = =============================================================================== - Vim to potny edytor, ktry posiada wiele polece, zbyt duo by + Vim to potny edytor, ktry posiada wiele polece, zbyt duo, by wyjani je wszystkie w tym tutorialu. Ten przewodnik ma nauczy - Ci posugiwa si wystarczajco wieloma komendami by mg atwo + Ci posugiwa si wystarczajco wieloma komendami, by mg atwo uywa Vima jako edytora oglnego przeznaczenia. Czas potrzebny na ukoczenie tutoriala to 25 do 30 minut i zaley @@ -13,14 +13,14 @@ UWAGA: Polecenia wykonywane w czasie lekcji zmodyfikuj tekst. Zrb wczeniej kopi tego pliku do wicze (jeli zacze komend - "vimtutor" to ju pracujesz na kopii). + "vimtutor", to ju pracujesz na kopii). - Pamitaj e przewodnik ten zosta zaprojektowany do nauki poprzez - wiczenia. Oznacza to, e musisz wykonywa polecenia by nauczy si ich - prawidowo. Jeli bdziesz jedynie czyta tekst szybko zapomnisz wiele + Pamitaj, e przewodnik ten zosta zaprojektowany do nauki poprzez + wiczenia. Oznacza to, e musisz wykonywa polecenia, by nauczy si ich + prawidowo. Jeli bdziesz jedynie czyta tekst, szybko zapomnisz wiele polece! - Teraz upewnij si, e nie masz wcinitego CapsLocka i wciskaj j + Teraz upewnij si, e nie masz wcinitego Caps Locka i wciskaj j tak dugo dopki Lekcja 1.1. nie wypeni cakowicie ekranu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -40,28 +40,28 @@ 3. Uywajc strzaki w d przejd do nastpnej lekcji. -Uwaga: Jeli nie jeste pewien czego co wpisae, wcinij <ESC> by wrci do +Uwaga: Jeli nie jeste pewien czego co wpisae, wcinij <ESC>, by wrci do trybu Normal. Wtedy powtrz polecenie. Uwaga: Klawisze kursora take powinny dziaa, ale uywajc hjkl bdziesz - w stanie porusza si o wiele szybciej jak si tylko przyzwyczaisz. + w stanie porusza si o wiele szybciej, jak si tylko przyzwyczaisz. Naprawd! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.2.: WYCHODZENIE Z VIM-a - !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca lekcj.!! + !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca lekcj !! 1. Wcinij <ESC> (aby upewni si, e jeste w trybie Normal). 2. Wpisz: :q!<ENTER>. - To spowoduje wyjcie z edytora PORZUCAJC wszelkie zmiany jakie - zdye zrobi. Jeli chcesz zapamita zmiany i wyj + To spowoduje wyjcie z edytora PORZUCAJC wszelkie zmiany, jakie + zdye zrobi. Jeli chcesz zapamita zmiany i wyj, wpisz: :wq<ENTER> 3. Kiedy widzisz znak zachty powoki wpisz komend, eby wrci do tutoriala. Czyli: vimtutor<ENTER> - 4. Jeli chcesz zapamita polecenia, wykonaj kroki 1. do 3. aby + 4. Jeli chcesz zapamita polecenia, wykonaj kroki 1. do 3., aby wyj i wrci do edytora. UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobie. W nastpnych @@ -85,7 +85,7 @@ UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobie. W nastpnych ---> Kkrowa prrzeskoczya prrzez ksiiycc. - 5. Teraz kiedy zdanie jest poprawione przejd do Lekcji 1.4. + 5. Teraz, kiedy zdanie jest poprawione, przejd do Lekcji 1.4. UWAGA: Ucz si przez wiczenie, nie wkuwanie. @@ -101,18 +101,18 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie. 1. Przenie kursor do pierwszej linii poniej oznaczonej --->. - 2. Aby poprawi pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym + 2. Aby poprawi pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym, gdzie tekst ma by wstawiony. 3. Wcinij i a nastpnie wpisz konieczne poprawki. - 4. Po poprawieniu bdu wcinij <ESC> by wrci do trybu Normal. - Powtarzaj kroki 2. do 4. aby poprawi cae zdanie. + 4. Po poprawieniu bdu wcinij <ESC>, by wrci do trybu Normal. + Powtarzaj kroki 2. do 4., aby poprawi cae zdanie. ---> W tej brkje troch . ---> W tej linii brakuje troch tekstu. - 5. Kiedy czujesz si swobodnie wstawiajc tekst przejd do + 5. Kiedy czujesz si swobodnie wstawiajc tekst, przejd do podsumowania poniej. @@ -129,7 +129,7 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie. 3. Kiedy tekst zosta dodany, wcinij <ESC> i wr do trybu Normalnego. - 4. Przenie kursor do drugiej linii oznaczonej ---> i powtrz kroki 2 i 3 + 4. Przenie kursor do drugiej linii oznaczonej ---> i powtrz kroki 2. i 3., aby poprawi zdanie. ---> Brakuje tu tro @@ -137,27 +137,27 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie. ---> Tu te troch bra Tu te troch brakuje. - 5. Kiedy ju utrwalie wiczenie przejd do lekcji 1.6. + 5. Kiedy ju utrwalie wiczenie, przejd do lekcji 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.6.: EDYCJA PLIKU ** Uyj :wq aby zapisa plik i wyj. ** - !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczyaj ca lekcj !! + !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj ca lekcj !! 1. Zakocz tutorial tak jak w lekcji 1.2.: :q! - Lub jeli masz dostp do innego terminala zrb kolejne kroki tam. + lub, jeli masz dostp do innego terminala, wykonaj kolejne kroki tam. 2. W powoce wydaj polecenie: vim tutor<ENTER> - "vim" jest poleceniem uruchamiajcym edytor Vim. 'tutor' to nazwa pliku - jaki chcesz edytowa. Uyj pliku jaki moe zosta zmieniony. + "vim" jest poleceniem uruchamiajcym edytor Vim. 'tutor' to nazwa pliku, + jaki chcesz edytowa. Uyj pliku, ktry moe zosta zmieniony. - 3. Dodaj i usu tekst tak jak si nauczye w poprzednich lekcjach. + 3. Dodaj i usu tekst tak, jak si nauczye w poprzednich lekcjach. 4. Zapisz plik ze zmianami i opu Vima: :wq<ENTER> - 5. Jeli zakoczye vimtutor w kroku 1. uruchom go ponownie i przejd + 5. Jeli zakoczye vimtutor w kroku 1., uruchom go ponownie i przejd do podsumowania poniej. 6. Po przeczytaniu wszystkich krokw i ich zrozumieniu: wykonaj je. @@ -168,14 +168,14 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie. 1. Poruszasz kursorem uywajc "strzaek" i klawiszy hjkl . h (w lewo) j (w d) k (do gry) l (w prawo) - 2. By wej do Vima (z powoki) wpisz: + 2. By wej do Vima, (z powoki) wpisz: vim NAZWA_PLIKU<ENTER> - 3. By wyj z Vima wpisz: - <ESC> :q!<ENTER> by usunc wszystkie zmiany. + 3. By wyj z Vima, wpisz: + <ESC> :q!<ENTER> by usun wszystkie zmiany. LUB: <ESC> :wq<ENTER> by zmiany zachowa. - 4. By usun znak pod kursorem wcinij: x + 4. By usun znak pod kursorem, wcinij: x 5. By wstawi tekst przed kursorem lub doda: i wpisz tekst <ESC> wstawi przed kursorem @@ -189,18 +189,18 @@ Teraz moemy kontynuowa i przej do Lekcji 2. Lekcja 2.1.: POLECENIE DELETE (usuwanie) - ** Wpisz dw by usunc wyraz. ** + ** Wpisz dw by usun wyraz. ** - 1. Wcinij <ESC> by upewni si, e jeste w trybie Normal. + 1. Wcinij <ESC>, by upewni si, e jeste w trybie Normal. 2. Przenie kursor do linii poniej oznaczonej --->. - 3. Przesu kursor na pocztek wyrazu, ktre chcesz usun. + 3. Przesu kursor na pocztek wyrazu, ktry chcesz usun. 4. Wpisz dw by usun wyraz. UWAGA: Litera d pojawi si na dole ekranu. Vim czeka na wpisanie w . - Jeli zobaczysz inny znak oznacza to, e wpisae co le, wcinij + Jeli zobaczysz inny znak, oznacza to, e wpisae co le; wcinij <ESC> i zacznij od pocztku. ---> Jest tu par papier wyrazw, ktre kamie nie nale do noyce tego zdania. @@ -225,7 +225,7 @@ Teraz moemy kontynuowa i przej do Lekcji 2. ---> Kto wpisa koniec tego zdania dwukrotnie. zdania dwukrotnie. - 5. Przejd do Lekcji 2.3. by zrozumie co si stao. + 5. Przejd do Lekcji 2.3., by zrozumie co si stao. @@ -235,12 +235,12 @@ Teraz moemy kontynuowa i przej do Lekcji 2. Lekcja 2.3.: O OPERATORACH I RUCHACH - Wiele polece zmieniajcych tekst s zoone z operatora i ruchu. - Format dla polecenia usuwajcego z operatorem d jest taki: + Wiele polece zmieniajcych tekst jest zoonych z operatora i ruchu. + Format dla polecenia usuwajcego z operatorem d jest nastpujcy: d ruch - Gdzie: + gdzie: d - operator usuwania. ruch - na czym polecenie bdzie wykonywane (lista poniej). @@ -252,7 +252,7 @@ Teraz moemy kontynuowa i przej do Lekcji 2. W ten sposb wpisanie de usunie znaki od kursora do koca wyrazu. UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor - tak jak to okrelono. + tak, jak to okrelono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.4.: UYCIE MNONIKA DLA RUCHU @@ -266,32 +266,32 @@ UWAGA: Wpisanie tylko ruchu w trybie Nor 3. Wpisz 3e aby przenie kursor do koca trzeciego wyrazu w przd. - 4. Wpisz 0 (zero) aby przenie kursor do pocztku linii. + 4. Wpisz 0 (zero), aby przenie kursor na pocztek linii. 5. Powtrz kroki 2. i 3. z innymi liczbami. - ---> To jest zwyky wiersz z wyrazami po ktrych moesz si porusza. + ---> To jest zwyky wiersz z wyrazami, po ktrych moesz si porusza. 6. Przejd do lekcji 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.5.: UYCIE MNONIKA BY WICEJ USUN + Lekcja 2.5.: UYCIE MNONIKA, BY WICEJ USUN ** Wpisanie liczby z operatorem powtarza go odpowiedni ilo razy. ** W wyej wspomnianej kombinacji operatora usuwania i ruchu podaj mnonik - przed ruchem by wicej usun: + przed ruchem, by wicej usun: d liczba ruch 1. Przenie kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->. 2. Wpisz 2dw aby usun dwa wyrazy KAPITALIKAMI. - 3. Powtarzaj kroki 1. i 2. z innymi mnonikami aby usun kolejne wyrazy + 3. Powtarzaj kroki 1. i 2. z innymi mnonikami, aby usun kolejne wyrazy KAPITALIKAMI jednym poleceniem ---> ta ASD WE linia QWE ASDF ZXCV FG wyrazw zostaa ERT FGH CF oczyszczona. @@ -312,7 +312,7 @@ UWAGA: Mnonik pomidzy operatorem d i ruchem dziaa podobnie do ruchu bez 1. Przenie kursor do drugiego zdania z wierszyka poniej. 2. Wpisz dd aby usun wiersz. 3. Teraz przenie si do czwartego wiersza. - 4. Wpisz 2dd aby usunc dwa wiersze. + 4. Wpisz 2dd aby usun dwa wiersze. ---> 1) Re s czerwone, ---> 2) Boto jest fajne, @@ -335,12 +335,12 @@ UWAGA: Mnonik pomidzy operatorem d i ruchem dziaa podobnie do ruchu bez 2. Wpisz x aby usun pierwszy niechciany znak. 3. Teraz wcinij u aby cofn skutki ostatniego polecenia. 4. Tym razem popraw wszystkie bdy w linii uywajc polecenia x . - 5. Teraz wcinij wielkie U aby przywrci lini do oryginalnego stanu. - 6. Teraz wcinij u kilka razy by cofn U i poprzednie polecenia. + 5. Teraz wcinij wielkie U aby przywrci lini do oryginalnego stanu. + 6. Teraz wcinij u kilka razy, by cofn U i poprzednie polecenia. 7. Teraz wpisz CTRL-R (trzymaj rwnoczenie wcinite klawisze CTRL i R) kilka razy, by cofn cofnicia. ----> Poopraw bldyyy w teej liniii i zaamiie je prrzez coofnij. +---> Poopraw bdyyy w teej liniii i zaamiie je prrzez coofnij. 8. To s bardzo poyteczne polecenia. @@ -350,22 +350,22 @@ UWAGA: Mnonik pomidzy operatorem d i ruchem dziaa podobnie do ruchu bez LEKCJA 2. PODSUMOWANIE - 1. By usun znaki od kursora do nastpnego wyrazu wpisz: dw - 2. By usun znaki od kursora do koca linii wpisz: d$ + 1. By usun znaki od kursora do nastpnego wyrazu, wpisz: dw + 2. By usun znaki od kursora do koca linii, wpisz: d$ 3. By usun ca lini: dd - 4. By powtrzy ruch poprzed go liczb: 2w + 4. By powtrzy ruch, poprzed go liczb: 2w 5. Format polecenia zmiany to: operator [liczba] ruch gdzie: - operator - to co trzeba zrobi (np. d dla usuwania) + operator - to, co trzeba zrobi (np. d dla usuwania) [liczba] - opcjonalne, ile razy powtrzy ruch ruch - przenosi nad tekstem do operowania, takim jak w (wyraz), - $ (do koca linii), etc. + $ (do koca linii) etc. - 6. By przej do pocztku linii uyj zera: 0 - 7. By cofn poprzednie polecenie, wpisz: u (mae u) - By cofn wszystkie zmiany w linii wpisz: U (wielkie U) - By cofn cofnicia wpisz: CTRL-R + 6. By przej do pocztku linii, uyj zera: 0 + 7. By cofn poprzednie polecenie, wpisz: u (mae u) + By cofn wszystkie zmiany w linii, wpisz: U (wielkie U) + By cofn cofnicie, wpisz: CTRL-R @@ -379,7 +379,7 @@ UWAGA: Mnonik pomidzy operatorem d i ruchem dziaa podobnie do ruchu bez 2. Wpisz dd aby usun lini i przechowa j w rejestrze Vima. - 3. Przenie kursor do linii c), POWYEJ tej gdzie usunita linia powinna + 3. Przenie kursor do linii c), POWYEJ tej, gdzie usunita linia powinna si znajdowa. 4. Wcinij p by wstawi lini poniej kursora. @@ -404,21 +404,21 @@ UWAGA: Mnonik pomidzy operatorem d i ruchem dziaa podobnie do ruchu bez 3. Wpisz r a potem znak jaki powinien go zastpi. - 4. Powtarzaj kroki 2. i 3. dopki pierwsza linia nie bdzie taka jak druga. + 4. Powtarzaj kroki 2. i 3. dopki pierwsza linia nie bdzie taka, jak druga. ----> Kjedy ten wiersz bi wstkiwany kto wcizn per zych klawirzy! ----> Kiedy ten wiersz by wstukiwany kto wcisn par zych klawiszy! +---> Kjedy ten wiersz bi wstkiwany, kto wcizn per zych klawirzy! +---> Kiedy ten wiersz by wstukiwany, kto wcisn par zych klawiszy! 5. Teraz czas na Lekcj 3.3. -UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo. +UWAGA: Pamitaj, by uczy si wiczc, a nie pamiciowo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.3.: OPERATOR CHANGE (zmie) - ** By zmieni do koca wyrazu wpisz ce . ** + ** By zmieni do koca wyrazu, wpisz ce . ** 1. Przenie kursor do pierwszej linii poniej oznaczonej --->. @@ -428,7 +428,7 @@ UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo. 4. Wcinij <ESC> i przejd do nastpnej planowanej zmiany. - 5. Powtarzaj kroki 3. i 4. dopki pierwsze zdanie nie bdzie takie same + 5. Powtarzaj kroki 3. i 4. dopki pierwsze zdanie nie bdzie takie same, jak drugie. ---> Ta lunos ma pire sw, ktre tina zbnic uifajonc pcmazu zmie. @@ -442,13 +442,13 @@ UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo. Lekcja 3.4.: WICEJ ZMIAN UYWAJC c - ** Polecenie change uywa takich samych ruchw jak delete. ** + ** Polecenie change uywa takich samych ruchw, jak delete. ** - 1. Operator change dziaa tak samo jak delete. Format wyglda tak: + 1. Operator change dziaa tak samo, jak delete. Format wyglda tak: c [liczba] ruch - 2. Ruchy s take takie same, np.: w (wyraz), $ (koniec linii), etc. + 2. Ruchy s take takie same, np.: w (wyraz), $ (koniec linii) etc. 3. Przenie si do pierwszej linii poniej oznaczonej ---> @@ -456,7 +456,7 @@ UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo. 5. Wpisz c$ , popraw koniec wiersza i wcinij <ESC>. ----> Koniec tego wiersza musi by poprawiony aby wyglda tak jak drugi. +---> Koniec tego wiersza musi by poprawiony, aby wyglda tak, jak drugi. ---> Koniec tego wiersza musi by poprawiony uywajc polecenia c$ . UWAGA: Moesz uywa <BS> aby poprawia bdy w czasie pisania. @@ -469,11 +469,11 @@ UWAGA: Moesz uywa <BS> aby poprawia bdy w czasie pisania. polecenie wstawia skasowany tekst PO kursorze (jeli caa linia zostaa usunita, zostanie ona umieszczona w linii poniej kursora). - 2. By zamieni znak pod kursorem wcinij r a potem znak, ktry ma zastpi + 2. By zamieni znak pod kursorem, wcinij r a potem znak, ktry ma zastpi oryginalny. - 3. Operator change pozwala Ci na zastpienie od kursora do miejsca gdzie - zabraby ci ruch. Np. wpisz ce aby zamieni tekst od kursora do koca + 3. Operator change pozwala Ci na zastpienie od kursora do miejsca, gdzie + zabraby Ci ruch. Np. wpisz ce aby zamieni tekst od kursora do koca wyrazu, c$ aby zmieni tekst do koca linii. 4. Format do polecenia change (zmie): @@ -497,12 +497,12 @@ UWAGA: Moesz uywa <BS> aby poprawia bdy w czasie pisania. Zapamitaj numer linii dla potrzeb kroku 3. UWAGA: Moesz te zobaczy pozycj kursora w prawym, dolnym rogu ekranu. - Dzieje si tak kiedy ustawiona jest opcja 'ruler' (wyjanione w lekcji 6.). + Dzieje si tak kiedy ustawiona jest opcja 'ruler' (wicej w lekcji 6.). 2. Wcinij G aby przej na koniec pliku. Wcinij gg aby przej do pocztku pliku. - 3. Wpisz numer linii, w ktrej bye a potem G . To przeniesie ci + 3. Wpisz numer linii, w ktrej bye a potem G . To przeniesie Ci z powrotem do linii, w ktrej bye kiedy wcisne CTRL-G. 4. Jeli czujesz si wystarczajco pewnie, wykonaj kroki 1-3. @@ -511,10 +511,10 @@ UWAGA: Moesz te zobaczy pozycj kursora w prawym, dolnym rogu ekranu. Lekcja 4.2.: POLECENIE SZUKAJ - ** Wpisz / a nastpnie wyraenie aby je znale. ** + ** Wpisz / a nastpnie wyraenie, aby je znale. ** - 1. W trybie Normal wpisz / . Zauwa, e znak ten, oraz kursor pojawi - si na dole ekranu tak samo jak polecenie : . + 1. W trybie Normal wpisz / . Zauwa, e znak ten oraz kursor pojawi + si na dole ekranu tak samo, jak polecenie : . 2. Teraz wpisz bond<ENTER> . To jest sowo, ktrego chcesz szuka. @@ -523,11 +523,11 @@ UWAGA: Moesz te zobaczy pozycj kursora w prawym, dolnym rogu ekranu. 4. Jeli chcesz szuka frazy do tyu, uyj polecenia ? zamiast / . - 5. Aby wrci gdzie bye wcinij CTRL-O. Powtarzaj by wrci dalej. CTRL-I + 5. Aby wrci gdzie bye, wcinij CTRL-O. Powtarzaj, by wrci dalej. CTRL-I idzie do przodu. -Uwaga: 'bond' to nie jest metoda by przeliterowa bd; 'bond' to bd. -Uwaga: Kiedy szukanie osignie koniec pliku bdzie kontynuowao od pocztku +Uwaga: 'bond' to nie jest metoda, by przeliterowa bd; 'bond' to bd. +Uwaga: Kiedy szukanie osignie koniec pliku, bdzie kontynuowane od pocztku o ile opcja 'wrapscan' nie zostaa przestawiona. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -571,16 +571,16 @@ Uwaga: Ta funkcja jest bardzo uyteczna w debuggowaniu programu 4. Aby zmieni wszystkie wystpienia acucha znakw pomidzy dwoma liniami, wpisz: :#,#s/stare/nowe/g gdzie #,# s numerami linii ograniczajcych - region gdzie ma nastpi zamiana. + region, gdzie ma nastpi zamiana. wpisz :%s/stare/nowe/g by zmieni wszystkie wystpienia w caym pliku. wpisz :%s/stare/nowe/gc by zmieni wszystkie wystpienia w caym - pliku, proszc o potwierdzenie za kadym razem + pliku, proszc o potwierdzenie za kadym razem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 4. PODSUMOWANIE 1. CTRL-G pokae Twoj pozycj w pliku i status pliku. SHIFT-G przenosi - ci do koca pliku. + Ci do koca pliku. G przenosi do koca pliku. liczba G przenosi do linii [liczba]. gg przenosi do pierwszej linii. @@ -588,22 +588,22 @@ Uwaga: Ta funkcja jest bardzo uyteczna w debuggowaniu programu 2. Wpisanie / a nastpnie acucha znakw szuka acucha DO PRZODU. Wpisanie ? a nastpnie acucha znakw szuka acucha DO TYU. Po wyszukiwaniu wcinij n by znale nastpne wystpienie szukanej - frazy tym samym kierunku lub N by szuka w kierunku przeciwnym. + frazy w tym samym kierunku lub N by szuka w kierunku przeciwnym. CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych. 3. Wpisanie % gdy kursor znajduje si na (,),[,],{, lub } lokalizuje parujcy znak. - 4. By zamieni pierwszy stary na nowy w linii wpisz :s/stary/nowy - By zamieni wszystkie stary na nowy w linii wpisz :s/stary/nowy/g + 4. By zamieni pierwszy stary na nowy w linii, wpisz :s/stary/nowy + By zamieni wszystkie stary na nowy w linii, wpisz :s/stary/nowy/g By zamieni frazy pomidzy dwoma liniami # wpisz :#,#s/stary/nowy/g - By zamieni wszystkie wystpienia w pliku wpisz :%s/stary/nowy/g - By Vim prosi Ci o potwierdzenie dodaj 'c' :%s/stary/nowy/gc + By zamieni wszystkie wystpienia w pliku, wpisz :%s/stary/nowy/g + By Vim prosi Ci o potwierdzenie, dodaj 'c' :%s/stary/nowy/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.1.: JAK WYKONA POLECENIA ZEWNTRZNE + Lekcja 5.1.: JAK WYKONA POLECENIA ZEWNTRZNE? - ** Wpisz :! a nastpnie zewntrzne polecenie by je wykona. ** + ** Wpisz :! a nastpnie zewntrzne polecenie, by je wykona. ** 1. Wpisz znajome polecenie : by ustawi kursor na dole ekranu. To pozwala na wprowadzenie komendy linii polece. @@ -626,20 +626,20 @@ Uwaga: Wszystkie polecenia : musz by zakoczone <ENTER>. Lekcja 5.2.: WICEJ O ZAPISYWANIU PLIKW - ** By zachowa zmiany w tekci wpisz :w NAZWA_PLIKU . ** + ** By zachowa zmiany w tekcie, wpisz :w NAZWA_PLIKU . ** 1. Wpisz :!dir lub :!ls by zobaczy spis plikw w katalogu. - Ju wiesz, e musisz wcisn <ENTER> po tym. + Ju wiesz, e musisz po tym wcisn <ENTER>. - 2. Wybierz nazw pliku jaka jeszcze nie istnieje, np. TEST. + 2. Wybierz nazw pliku, jaka jeszcze nie istnieje, np. TEST. 3. Teraz wpisz: :w TEST (gdzie TEST jest nazw pliku jak wybrae.) 4. To polecenie zapamita cay plik (Vim Tutor) pod nazw TEST. - By to sprawdzi wpisz :!dir lub :!ls , eby znowu zobaczy list plikw. + By to sprawdzi, wpisz :!dir lub :!ls eby znowu zobaczy list plikw. Uwaga: Zauwa, e gdyby teraz wyszed z Vima, a nastpnie wszed ponownie - poleceniem vim TEST , plik byby dokadn kopi tutoriala kiedy go + poleceniem vim TEST , plik byby dokadn kopi tutoriala, kiedy go zapisywae. 5. Teraz usu plik wpisujc (MS-DOS): :!del TEST @@ -649,7 +649,7 @@ Uwaga: Zauwa, e gdyby teraz wyszed z Vima, a nastpnie wszed ponownie Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU - ** By zachowa cz pliku wpisz v ruch :w NAZWA_PLIKU ** + ** By zachowa cz pliku, wpisz v ruch :w NAZWA_PLIKU ** 1. Przenie kursor do tego wiersza. @@ -664,26 +664,26 @@ Uwaga: Zauwa, e gdyby teraz wyszed z Vima, a nastpnie wszed ponownie 5. Vim zapisze wybrane linie do pliku TEST. Uyj :!dir lub :!ls , eby to zobaczy. Jeszcze go nie usuwaj! Uyjemy go w nastpnej lekcji. -UWAGA: Wcinicie v zaczyna tryb Wizualny. Moesz porusza kursorem by - zmieni rozmiary zaznaczenia. Moesz te uy operatora by zrobi co +UWAGA: Wcinicie v zaczyna tryb Wizualny. Moesz porusza kursorem, by + zmieni rozmiary zaznaczenia. Moesz te uy operatora, by zrobi co z tekstem. Na przykad d usuwa tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.4.: WSTAWIANIE I CZENIE PLIKW - ** By wstawi zawarto pliku wpisz :r NAZWA_PLIKU ** + ** By wstawi zawarto pliku, wpisz :r NAZWA_PLIKU ** 1. Umie kursor tu powyej tej linii. UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejd - do DOU by zobaczy ponownie t lekcj. + do DOU, by zobaczy ponownie t lekcj. 2. Teraz wczytaj plik TEST uywajc polecenia :r TEST , gdzie TEST jest nazw pliku. Wczytany plik jest umieszczony poniej linii z kursorem. - 3. By sprawdzi czy plik zosta wczytany cofnij kursor i zobacz, e + 3. By sprawdzi czy plik zosta wczytany, cofnij kursor i zobacz, e teraz s dwie kopie Lekcji 5.3., orygina i kopia z pliku. UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad @@ -723,14 +723,14 @@ UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad 1. Przenie kursor do linii poniej oznaczonej --->. - 2. Wpisz o (mae) by otworzy lini PONIEJ kursora i przenie si + 2. Wpisz o (mae), by otworzy lini PONIEJ kursora i przenie si do trybu Insert (wprowadzanie). 3. Wpisz troch tekstu i wcinij <ESC> by wyj z trybu Insert (wprowadzanie). ---> Po wciniciu o kursor znajdzie si w otwartej linii w trybie Insert. - 4. By otworzy lini POWYEJ kursora wcinij wielkie O zamiast maego + 4. By otworzy lini POWYEJ kursora, wcinij wielkie O zamiast maego o . Wyprbuj to na linii poniej. ---> Otwrz lini powyej wciskajc SHIFT-O gdy kursor bdzie na tej linii. @@ -747,9 +747,9 @@ UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad 2. Wciskaj e dopki kursor nie bdzie na kocu li . - 3. Wpisz a (mae) aby doda tekst ZA znakiem pod kursorem. + 3. Wpisz a (mae), aby doda tekst ZA znakiem pod kursorem. - 4. Dokocz wyraz tak jak w linii poniej. Wcinij <ESC> aby opuci tryb + 4. Dokocz wyraz tak, jak w linii poniej. Wcinij <ESC> aby opuci tryb Insert. 5. Uyj e by przej do kolejnego niedokoczonego wyrazu i powtarzaj kroki @@ -758,7 +758,7 @@ UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad ---> Ta li poz Ci wi dodaw teks do ko lin ---> Ta linia pozwoli Ci wiczy dodawanie tekstu do koca linii. -Uwaga: a , i oraz A prowadz do trybu Insert, jedyn rnic jest miejsce +Uwaga: a , i oraz A prowadz do trybu Insert, jedyn rnic jest miejsce, gdzie nowe znaki bd dodawane. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.3.: INNA WERSJA REPLACE (zamiana) @@ -791,16 +791,16 @@ UWAGA: Tryb Replace jest jak tryb Insert, ale kady znak usuwa istniejcy 1. Przejd do linii oznaczonej ---> i umie kursor za "a)". - 2. Wejd w tryb Visual v i przenie kursor na pocztek "pierwszy". + 2. Wejd w tryb Wizualny v i przenie kursor na pocztek "pierwszy". - 3. Wcinij y aby yankowa (kopiowa) podwietlony tekst. + 3. Wcinij y aby kopiowa (yankowa) podwietlony tekst. 4. Przenie kursor do koca nastpnej linii: j$ - 5. Wcinij p aby wpakowa (paste) tekst. Dodaj: a drugi<ESC> . + 5. Wcinij p aby wklei (wpakowa) tekst. Dodaj: a drugi<ESC> . - 6. Uyj trybu Wizualnego aby wybra " element.", yankuj go y , przejd do - koca nastpnej linii j$ i upakuj tam tekst z p . + 6. Uyj trybu Wizualnego, aby wybra " element.", yankuj go y , przejd do + koca nastpnej linii j$ i upakuj tam tekst z p . ---> a) to jest pierwszy element. b) @@ -810,7 +810,7 @@ Uwaga: moesz uy y jako operatora; yw kopiuje jeden wyraz. Lekcja 6.5.: USTAWIANIE OPCJI -** Ustawianie opcji tak by szukaj lub substytucja ignoroway wielko liter ** +** Ustawianie opcji tak, by szukaj lub substytucja ignoroway wielko liter ** 1. Szukaj 'ignore' wpisujc: /ignore<ENTER> Powtrz szukanie kilka razy naciskajc klawisz n . @@ -828,7 +828,7 @@ Uwaga: moesz uy y jako operatora; yw kopiuje jeden wyraz. 6. Aby wyczy ignorowanie wielkoci liter: :set noic -Uwaga: Aby usun podwietlanie dopasowa wpisz: :nohlsearch +Uwaga: Aby usun podwietlanie dopasowa, wpisz: :nohlsearch Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 6. PODSUMOWANIE @@ -837,36 +837,36 @@ Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER> 1. Wpisanie o otwiera lini PONIEJ kursora. Wpisanie O otwiera lini POWYEJ kursora. - 2. Wpisanie a by wstawi tekst ZA znakiem na, ktrym jest kursor. + 2. Wpisanie a wstawia tekst ZA znakiem, na ktrym jest kursor. Wpisanie A dodaje tekst na kocu linii. 3. Polecenie e przenosi do koca wyrazu. - 4. Operator y yankuje (kopiuje) tekst, p pakuje (wkleja, paste) go. + 4. Operator y yankuje (kopiuje) tekst, p pakuje (wkleja) go. 5. Wpisanie wielkiego R wprowadza w tryb Replace (zamiana) dopki nie zostanie wcinity <ESC>. - 6. Wpisanie ":set xxx" ustawia opcj "xxx". Nietkre opcje: + 6. Wpisanie ":set xxx" ustawia opcj "xxx". Niektre opcje: 'ic' 'ignorecase' ignoruj wielko znakw 'is' 'incsearch' poka czciowe dopasowania 'hls' 'hlsearch' podwietl wszystkie dopasowania - Moesz uy zarwno dugiej jak i krtkiej formy. - 7. Dodaj "no" aby wyczy opcj: :set noic + Moesz uy zarwno dugiej, jak i krtkiej formy. + 7. Dodaj "no", aby wyczy opcj: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 7.1. JAK UZYSKA POMOC + LEKCJA 7.1. JAK UZYSKA POMOC? ** Uycie systemu pomocy on-line ** - Vim posiada bardzo dobry system pomocy on-line. By zacz sprbuj jednej + Vim posiada bardzo dobry system pomocy on-line. By zacz, sprbuj jednej z trzech moliwoci: - wcinij klawisz <HELP> (jeli taki masz) - wcinij klawisz <F1> (jeli taki masz) - wpisz :help<ENTER> - Przeczytaj tekst w oknie pomocy aby dowiedzie si jak dziaa pomoc. + Przeczytaj tekst w oknie pomocy, aby dowiedzie si jak dziaa pomoc. wpisz CTRL-W CTRL-W aby przeskoczy z jednego okna do innego wpisz :q<ENTER> aby zamkn okno pomocy. @@ -894,10 +894,10 @@ Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER> 3. Zapisz plik: :w - Nastpnym razem gdy zaczniesz prac w Vimie bdzie on uywa podwietlania + Nastpnym razem, gdy zaczniesz prac w Vimie bdzie on uywa podwietlania skadni. Moesz doda wszystkie swoje ulubione ustawienia do tego pliku "vimrc". - Aby uzyska wicej informacji wpisz :help vimrc-intro + Aby uzyska wicej informacji, wpisz :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 7.3.: UZUPENIANIE @@ -907,11 +907,11 @@ Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER> 1. Upewnij si, e Vim nie jest w trybie kompatybilnoci: :set nocp - 2. Zerknij jakie pliki s w biecm katalogu: :!ls lub :!dir + 2. Zerknij, jakie pliki s w biecym katalogu: :!ls lub :!dir 3. Wpisz pocztek polecenia: :e - 4. Wcinij CTRL-D i Vim pokae list polece jakie zaczynaj si na "e". + 4. Wcinij CTRL-D i Vim pokae list polece, jakie zaczynaj si na "e". 5. Wcinij <TAB> i Vim uzupeni polecenie do ":edit". @@ -925,7 +925,7 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>. Lekcja 7. PODSUMOWANIE - 1. Wpisz :help lub wcinij <F1> lub <Help> aby otworzy okno pomocy. + 1. Wpisz :help albo wcinij <F1> lub <Help> aby otworzy okno pomocy. 2. Wpisz :help cmd aby uzyska pomoc o cmd . @@ -945,14 +945,14 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Tutaj si koczy tutorial Vima. Zosta on pomylany tak aby da krtki + Tutaj si koczy tutorial Vima. Zosta on pomylany tak, aby da krtki przegld jego moliwoci, wystarczajcy by mg go uywa. Jest on - daleki od kompletnoci poniewa Vim ma o wiele, wiele wicej polece. + daleki od kompletnoci, poniewa Vim ma o wiele, wiele wicej polece. Dla dalszej nauki rekomendujemy ksik: Vim - Vi Improved - autor Steve Oualline Wydawca: New Riders - Pierwsza ksizka cakowicie powicona Vimowi. Uyteczna zwaszcza dla + Pierwsza ksika cakowicie powicona Vimowi. Uyteczna zwaszcza dla pocztkujcych. Zawiera wiele przykadw i ilustracji. Zobacz http://iccf-holland.org./click5.html @@ -960,7 +960,7 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>. polecenia: Learning the Vi Editor - autor Linda Lamb Wydawca: O'Reilly & Associates Inc. - To dobra ksika by dowiedzie si niemal wszystkiego co chciaby zrobi + To dobra ksika, by dowiedzie si niemal wszystkiego, co chciaby zrobi z Vi. Szsta edycja zawiera te informacje o Vimie. Po polsku wydano: @@ -991,4 +991,5 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>. rev. Marzec 2002 2nd rev. Wrzesie 2004 3rd rev. Marzec 2006 + 4th rev. Grudzie 2008 Wszelkie uwagi prosz kierowa na: mikmach@wp.pl
--- a/runtime/tutor/tutor.pl.cp1250 +++ b/runtime/tutor/tutor.pl.cp1250 @@ -2,9 +2,9 @@ = W i t a j w t u t o r i a l u V I M - a - Wersja 1.7. = =============================================================================== - Vim to potny edytor, ktry posiada wiele polece, zbyt duo by + Vim to potny edytor, ktry posiada wiele polece, zbyt duo, by wyjani je wszystkie w tym tutorialu. Ten przewodnik ma nauczy - Ci posugiwa si wystarczajco wieloma komendami by mg atwo + Ci posugiwa si wystarczajco wieloma komendami, by mg atwo uywa Vima jako edytora oglnego przeznaczenia. Czas potrzebny na ukoczenie tutoriala to 25 do 30 minut i zaley @@ -13,14 +13,14 @@ UWAGA: Polecenia wykonywane w czasie lekcji zmodyfikuj tekst. Zrb wczeniej kopi tego pliku do wicze (jeli zacze komend - "vimtutor" to ju pracujesz na kopii). + "vimtutor", to ju pracujesz na kopii). - Pamitaj e przewodnik ten zosta zaprojektowany do nauki poprzez - wiczenia. Oznacza to, e musisz wykonywa polecenia by nauczy si ich - prawidowo. Jeli bdziesz jedynie czyta tekst szybko zapomnisz wiele + Pamitaj, e przewodnik ten zosta zaprojektowany do nauki poprzez + wiczenia. Oznacza to, e musisz wykonywa polecenia, by nauczy si ich + prawidowo. Jeli bdziesz jedynie czyta tekst, szybko zapomnisz wiele polece! - Teraz upewnij si, e nie masz wcinitego CapsLocka i wciskaj j + Teraz upewnij si, e nie masz wcinitego Caps Locka i wciskaj j tak dugo dopki Lekcja 1.1. nie wypeni cakowicie ekranu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -40,28 +40,28 @@ 3. Uywajc strzaki w d przejd do nastpnej lekcji. -Uwaga: Jeli nie jeste pewien czego co wpisae, wcinij <ESC> by wrci do +Uwaga: Jeli nie jeste pewien czego co wpisae, wcinij <ESC>, by wrci do trybu Normal. Wtedy powtrz polecenie. Uwaga: Klawisze kursora take powinny dziaa, ale uywajc hjkl bdziesz - w stanie porusza si o wiele szybciej jak si tylko przyzwyczaisz. + w stanie porusza si o wiele szybciej, jak si tylko przyzwyczaisz. Naprawd! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.2.: WYCHODZENIE Z VIM-a - !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca lekcj.!! + !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca lekcj !! 1. Wcinij <ESC> (aby upewni si, e jeste w trybie Normal). 2. Wpisz: :q!<ENTER>. - To spowoduje wyjcie z edytora PORZUCAJC wszelkie zmiany jakie - zdye zrobi. Jeli chcesz zapamita zmiany i wyj + To spowoduje wyjcie z edytora PORZUCAJC wszelkie zmiany, jakie + zdye zrobi. Jeli chcesz zapamita zmiany i wyj, wpisz: :wq<ENTER> 3. Kiedy widzisz znak zachty powoki wpisz komend, eby wrci do tutoriala. Czyli: vimtutor<ENTER> - 4. Jeli chcesz zapamita polecenia, wykonaj kroki 1. do 3. aby + 4. Jeli chcesz zapamita polecenia, wykonaj kroki 1. do 3., aby wyj i wrci do edytora. UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobie. W nastpnych @@ -85,7 +85,7 @@ UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobie. W nastpnych ---> Kkrowa prrzeskoczya prrzez ksiiycc. - 5. Teraz kiedy zdanie jest poprawione przejd do Lekcji 1.4. + 5. Teraz, kiedy zdanie jest poprawione, przejd do Lekcji 1.4. UWAGA: Ucz si przez wiczenie, nie wkuwanie. @@ -101,18 +101,18 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie. 1. Przenie kursor do pierwszej linii poniej oznaczonej --->. - 2. Aby poprawi pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym + 2. Aby poprawi pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym, gdzie tekst ma by wstawiony. 3. Wcinij i a nastpnie wpisz konieczne poprawki. - 4. Po poprawieniu bdu wcinij <ESC> by wrci do trybu Normal. - Powtarzaj kroki 2. do 4. aby poprawi cae zdanie. + 4. Po poprawieniu bdu wcinij <ESC>, by wrci do trybu Normal. + Powtarzaj kroki 2. do 4., aby poprawi cae zdanie. ---> W tej brkje troch . ---> W tej linii brakuje troch tekstu. - 5. Kiedy czujesz si swobodnie wstawiajc tekst przejd do + 5. Kiedy czujesz si swobodnie wstawiajc tekst, przejd do podsumowania poniej. @@ -129,7 +129,7 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie. 3. Kiedy tekst zosta dodany, wcinij <ESC> i wr do trybu Normalnego. - 4. Przenie kursor do drugiej linii oznaczonej ---> i powtrz kroki 2 i 3 + 4. Przenie kursor do drugiej linii oznaczonej ---> i powtrz kroki 2. i 3., aby poprawi zdanie. ---> Brakuje tu tro @@ -137,27 +137,27 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie. ---> Tu te troch bra Tu te troch brakuje. - 5. Kiedy ju utrwalie wiczenie przejd do lekcji 1.6. + 5. Kiedy ju utrwalie wiczenie, przejd do lekcji 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.6.: EDYCJA PLIKU ** Uyj :wq aby zapisa plik i wyj. ** - !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczyaj ca lekcj !! + !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj ca lekcj !! 1. Zakocz tutorial tak jak w lekcji 1.2.: :q! - Lub jeli masz dostp do innego terminala zrb kolejne kroki tam. + lub, jeli masz dostp do innego terminala, wykonaj kolejne kroki tam. 2. W powoce wydaj polecenie: vim tutor<ENTER> - "vim" jest poleceniem uruchamiajcym edytor Vim. 'tutor' to nazwa pliku - jaki chcesz edytowa. Uyj pliku jaki moe zosta zmieniony. + "vim" jest poleceniem uruchamiajcym edytor Vim. 'tutor' to nazwa pliku, + jaki chcesz edytowa. Uyj pliku, ktry moe zosta zmieniony. - 3. Dodaj i usu tekst tak jak si nauczye w poprzednich lekcjach. + 3. Dodaj i usu tekst tak, jak si nauczye w poprzednich lekcjach. 4. Zapisz plik ze zmianami i opu Vima: :wq<ENTER> - 5. Jeli zakoczye vimtutor w kroku 1. uruchom go ponownie i przejd + 5. Jeli zakoczye vimtutor w kroku 1., uruchom go ponownie i przejd do podsumowania poniej. 6. Po przeczytaniu wszystkich krokw i ich zrozumieniu: wykonaj je. @@ -168,14 +168,14 @@ UWAGA: Ucz si przez wiczenie, nie wkuwanie. 1. Poruszasz kursorem uywajc "strzaek" i klawiszy hjkl . h (w lewo) j (w d) k (do gry) l (w prawo) - 2. By wej do Vima (z powoki) wpisz: + 2. By wej do Vima, (z powoki) wpisz: vim NAZWA_PLIKU<ENTER> - 3. By wyj z Vima wpisz: - <ESC> :q!<ENTER> by usunc wszystkie zmiany. + 3. By wyj z Vima, wpisz: + <ESC> :q!<ENTER> by usun wszystkie zmiany. LUB: <ESC> :wq<ENTER> by zmiany zachowa. - 4. By usun znak pod kursorem wcinij: x + 4. By usun znak pod kursorem, wcinij: x 5. By wstawi tekst przed kursorem lub doda: i wpisz tekst <ESC> wstawi przed kursorem @@ -189,18 +189,18 @@ Teraz moemy kontynuowa i przej do Lekcji 2. Lekcja 2.1.: POLECENIE DELETE (usuwanie) - ** Wpisz dw by usunc wyraz. ** + ** Wpisz dw by usun wyraz. ** - 1. Wcinij <ESC> by upewni si, e jeste w trybie Normal. + 1. Wcinij <ESC>, by upewni si, e jeste w trybie Normal. 2. Przenie kursor do linii poniej oznaczonej --->. - 3. Przesu kursor na pocztek wyrazu, ktre chcesz usun. + 3. Przesu kursor na pocztek wyrazu, ktry chcesz usun. 4. Wpisz dw by usun wyraz. UWAGA: Litera d pojawi si na dole ekranu. Vim czeka na wpisanie w . - Jeli zobaczysz inny znak oznacza to, e wpisae co le, wcinij + Jeli zobaczysz inny znak, oznacza to, e wpisae co le; wcinij <ESC> i zacznij od pocztku. ---> Jest tu par papier wyrazw, ktre kamie nie nale do noyce tego zdania. @@ -225,7 +225,7 @@ Teraz moemy kontynuowa i przej do Lekcji 2. ---> Kto wpisa koniec tego zdania dwukrotnie. zdania dwukrotnie. - 5. Przejd do Lekcji 2.3. by zrozumie co si stao. + 5. Przejd do Lekcji 2.3., by zrozumie co si stao. @@ -235,12 +235,12 @@ Teraz moemy kontynuowa i przej do Lekcji 2. Lekcja 2.3.: O OPERATORACH I RUCHACH - Wiele polece zmieniajcych tekst s zoone z operatora i ruchu. - Format dla polecenia usuwajcego z operatorem d jest taki: + Wiele polece zmieniajcych tekst jest zoonych z operatora i ruchu. + Format dla polecenia usuwajcego z operatorem d jest nastpujcy: d ruch - Gdzie: + gdzie: d - operator usuwania. ruch - na czym polecenie bdzie wykonywane (lista poniej). @@ -252,7 +252,7 @@ Teraz moemy kontynuowa i przej do Lekcji 2. W ten sposb wpisanie de usunie znaki od kursora do koca wyrazu. UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor - tak jak to okrelono. + tak, jak to okrelono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.4.: UYCIE MNONIKA DLA RUCHU @@ -266,32 +266,32 @@ UWAGA: Wpisanie tylko ruchu w trybie Nor 3. Wpisz 3e aby przenie kursor do koca trzeciego wyrazu w przd. - 4. Wpisz 0 (zero) aby przenie kursor do pocztku linii. + 4. Wpisz 0 (zero), aby przenie kursor na pocztek linii. 5. Powtrz kroki 2. i 3. z innymi liczbami. - ---> To jest zwyky wiersz z wyrazami po ktrych moesz si porusza. + ---> To jest zwyky wiersz z wyrazami, po ktrych moesz si porusza. 6. Przejd do lekcji 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.5.: UYCIE MNONIKA BY WICEJ USUN + Lekcja 2.5.: UYCIE MNONIKA, BY WICEJ USUN ** Wpisanie liczby z operatorem powtarza go odpowiedni ilo razy. ** W wyej wspomnianej kombinacji operatora usuwania i ruchu podaj mnonik - przed ruchem by wicej usun: + przed ruchem, by wicej usun: d liczba ruch 1. Przenie kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->. 2. Wpisz 2dw aby usun dwa wyrazy KAPITALIKAMI. - 3. Powtarzaj kroki 1. i 2. z innymi mnonikami aby usun kolejne wyrazy + 3. Powtarzaj kroki 1. i 2. z innymi mnonikami, aby usun kolejne wyrazy KAPITALIKAMI jednym poleceniem ---> ta ASD WE linia QWE ASDF ZXCV FG wyrazw zostaa ERT FGH CF oczyszczona. @@ -312,7 +312,7 @@ UWAGA: Mnonik pomidzy operatorem d i ruchem dziaa podobnie do ruchu bez 1. Przenie kursor do drugiego zdania z wierszyka poniej. 2. Wpisz dd aby usun wiersz. 3. Teraz przenie si do czwartego wiersza. - 4. Wpisz 2dd aby usunc dwa wiersze. + 4. Wpisz 2dd aby usun dwa wiersze. ---> 1) Re s czerwone, ---> 2) Boto jest fajne, @@ -335,12 +335,12 @@ UWAGA: Mnonik pomidzy operatorem d i ruchem dziaa podobnie do ruchu bez 2. Wpisz x aby usun pierwszy niechciany znak. 3. Teraz wcinij u aby cofn skutki ostatniego polecenia. 4. Tym razem popraw wszystkie bdy w linii uywajc polecenia x . - 5. Teraz wcinij wielkie U aby przywrci lini do oryginalnego stanu. - 6. Teraz wcinij u kilka razy by cofn U i poprzednie polecenia. + 5. Teraz wcinij wielkie U aby przywrci lini do oryginalnego stanu. + 6. Teraz wcinij u kilka razy, by cofn U i poprzednie polecenia. 7. Teraz wpisz CTRL-R (trzymaj rwnoczenie wcinite klawisze CTRL i R) kilka razy, by cofn cofnicia. ----> Poopraw bldyyy w teej liniii i zaamiie je prrzez coofnij. +---> Poopraw bdyyy w teej liniii i zaamiie je prrzez coofnij. 8. To s bardzo poyteczne polecenia. @@ -350,22 +350,22 @@ UWAGA: Mnonik pomidzy operatorem d i ruchem dziaa podobnie do ruchu bez LEKCJA 2. PODSUMOWANIE - 1. By usun znaki od kursora do nastpnego wyrazu wpisz: dw - 2. By usun znaki od kursora do koca linii wpisz: d$ + 1. By usun znaki od kursora do nastpnego wyrazu, wpisz: dw + 2. By usun znaki od kursora do koca linii, wpisz: d$ 3. By usun ca lini: dd - 4. By powtrzy ruch poprzed go liczb: 2w + 4. By powtrzy ruch, poprzed go liczb: 2w 5. Format polecenia zmiany to: operator [liczba] ruch gdzie: - operator - to co trzeba zrobi (np. d dla usuwania) + operator - to, co trzeba zrobi (np. d dla usuwania) [liczba] - opcjonalne, ile razy powtrzy ruch ruch - przenosi nad tekstem do operowania, takim jak w (wyraz), - $ (do koca linii), etc. + $ (do koca linii) etc. - 6. By przej do pocztku linii uyj zera: 0 - 7. By cofn poprzednie polecenie, wpisz: u (mae u) - By cofn wszystkie zmiany w linii wpisz: U (wielkie U) - By cofn cofnicia wpisz: CTRL-R + 6. By przej do pocztku linii, uyj zera: 0 + 7. By cofn poprzednie polecenie, wpisz: u (mae u) + By cofn wszystkie zmiany w linii, wpisz: U (wielkie U) + By cofn cofnicie, wpisz: CTRL-R @@ -379,7 +379,7 @@ UWAGA: Mnonik pomidzy operatorem d i ruchem dziaa podobnie do ruchu bez 2. Wpisz dd aby usun lini i przechowa j w rejestrze Vima. - 3. Przenie kursor do linii c), POWYEJ tej gdzie usunita linia powinna + 3. Przenie kursor do linii c), POWYEJ tej, gdzie usunita linia powinna si znajdowa. 4. Wcinij p by wstawi lini poniej kursora. @@ -404,21 +404,21 @@ UWAGA: Mnonik pomidzy operatorem d i ruchem dziaa podobnie do ruchu bez 3. Wpisz r a potem znak jaki powinien go zastpi. - 4. Powtarzaj kroki 2. i 3. dopki pierwsza linia nie bdzie taka jak druga. + 4. Powtarzaj kroki 2. i 3. dopki pierwsza linia nie bdzie taka, jak druga. ----> Kjedy ten wiersz bi wstkiwany kto wcizn per zych klawirzy! ----> Kiedy ten wiersz by wstukiwany kto wcisn par zych klawiszy! +---> Kjedy ten wiersz bi wstkiwany, kto wcizn per zych klawirzy! +---> Kiedy ten wiersz by wstukiwany, kto wcisn par zych klawiszy! 5. Teraz czas na Lekcj 3.3. -UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo. +UWAGA: Pamitaj, by uczy si wiczc, a nie pamiciowo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.3.: OPERATOR CHANGE (zmie) - ** By zmieni do koca wyrazu wpisz ce . ** + ** By zmieni do koca wyrazu, wpisz ce . ** 1. Przenie kursor do pierwszej linii poniej oznaczonej --->. @@ -428,7 +428,7 @@ UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo. 4. Wcinij <ESC> i przejd do nastpnej planowanej zmiany. - 5. Powtarzaj kroki 3. i 4. dopki pierwsze zdanie nie bdzie takie same + 5. Powtarzaj kroki 3. i 4. dopki pierwsze zdanie nie bdzie takie same, jak drugie. ---> Ta lunos ma pire sw, ktre tina zbnic uifajonc pcmazu zmie. @@ -442,13 +442,13 @@ UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo. Lekcja 3.4.: WICEJ ZMIAN UYWAJC c - ** Polecenie change uywa takich samych ruchw jak delete. ** + ** Polecenie change uywa takich samych ruchw, jak delete. ** - 1. Operator change dziaa tak samo jak delete. Format wyglda tak: + 1. Operator change dziaa tak samo, jak delete. Format wyglda tak: c [liczba] ruch - 2. Ruchy s take takie same, np.: w (wyraz), $ (koniec linii), etc. + 2. Ruchy s take takie same, np.: w (wyraz), $ (koniec linii) etc. 3. Przenie si do pierwszej linii poniej oznaczonej ---> @@ -456,7 +456,7 @@ UWAGA: Pamitaj by uczy si wiczc, a nie pamiciowo. 5. Wpisz c$ , popraw koniec wiersza i wcinij <ESC>. ----> Koniec tego wiersza musi by poprawiony aby wyglda tak jak drugi. +---> Koniec tego wiersza musi by poprawiony, aby wyglda tak, jak drugi. ---> Koniec tego wiersza musi by poprawiony uywajc polecenia c$ . UWAGA: Moesz uywa <BS> aby poprawia bdy w czasie pisania. @@ -469,11 +469,11 @@ UWAGA: Moesz uywa <BS> aby poprawia bdy w czasie pisania. polecenie wstawia skasowany tekst PO kursorze (jeli caa linia zostaa usunita, zostanie ona umieszczona w linii poniej kursora). - 2. By zamieni znak pod kursorem wcinij r a potem znak, ktry ma zastpi + 2. By zamieni znak pod kursorem, wcinij r a potem znak, ktry ma zastpi oryginalny. - 3. Operator change pozwala Ci na zastpienie od kursora do miejsca gdzie - zabraby ci ruch. Np. wpisz ce aby zamieni tekst od kursora do koca + 3. Operator change pozwala Ci na zastpienie od kursora do miejsca, gdzie + zabraby Ci ruch. Np. wpisz ce aby zamieni tekst od kursora do koca wyrazu, c$ aby zmieni tekst do koca linii. 4. Format do polecenia change (zmie): @@ -497,12 +497,12 @@ UWAGA: Moesz uywa <BS> aby poprawia bdy w czasie pisania. Zapamitaj numer linii dla potrzeb kroku 3. UWAGA: Moesz te zobaczy pozycj kursora w prawym, dolnym rogu ekranu. - Dzieje si tak kiedy ustawiona jest opcja 'ruler' (wyjanione w lekcji 6.). + Dzieje si tak kiedy ustawiona jest opcja 'ruler' (wicej w lekcji 6.). 2. Wcinij G aby przej na koniec pliku. Wcinij gg aby przej do pocztku pliku. - 3. Wpisz numer linii, w ktrej bye a potem G . To przeniesie ci + 3. Wpisz numer linii, w ktrej bye a potem G . To przeniesie Ci z powrotem do linii, w ktrej bye kiedy wcisne CTRL-G. 4. Jeli czujesz si wystarczajco pewnie, wykonaj kroki 1-3. @@ -511,10 +511,10 @@ UWAGA: Moesz te zobaczy pozycj kursora w prawym, dolnym rogu ekranu. Lekcja 4.2.: POLECENIE SZUKAJ - ** Wpisz / a nastpnie wyraenie aby je znale. ** + ** Wpisz / a nastpnie wyraenie, aby je znale. ** - 1. W trybie Normal wpisz / . Zauwa, e znak ten, oraz kursor pojawi - si na dole ekranu tak samo jak polecenie : . + 1. W trybie Normal wpisz / . Zauwa, e znak ten oraz kursor pojawi + si na dole ekranu tak samo, jak polecenie : . 2. Teraz wpisz bond<ENTER> . To jest sowo, ktrego chcesz szuka. @@ -523,11 +523,11 @@ UWAGA: Moesz te zobaczy pozycj kursora w prawym, dolnym rogu ekranu. 4. Jeli chcesz szuka frazy do tyu, uyj polecenia ? zamiast / . - 5. Aby wrci gdzie bye wcinij CTRL-O. Powtarzaj by wrci dalej. CTRL-I + 5. Aby wrci gdzie bye, wcinij CTRL-O. Powtarzaj, by wrci dalej. CTRL-I idzie do przodu. -Uwaga: 'bond' to nie jest metoda by przeliterowa bd; 'bond' to bd. -Uwaga: Kiedy szukanie osignie koniec pliku bdzie kontynuowao od pocztku +Uwaga: 'bond' to nie jest metoda, by przeliterowa bd; 'bond' to bd. +Uwaga: Kiedy szukanie osignie koniec pliku, bdzie kontynuowane od pocztku o ile opcja 'wrapscan' nie zostaa przestawiona. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -571,16 +571,16 @@ Uwaga: Ta funkcja jest bardzo uyteczna w debuggowaniu programu 4. Aby zmieni wszystkie wystpienia acucha znakw pomidzy dwoma liniami, wpisz: :#,#s/stare/nowe/g gdzie #,# s numerami linii ograniczajcych - region gdzie ma nastpi zamiana. + region, gdzie ma nastpi zamiana. wpisz :%s/stare/nowe/g by zmieni wszystkie wystpienia w caym pliku. wpisz :%s/stare/nowe/gc by zmieni wszystkie wystpienia w caym - pliku, proszc o potwierdzenie za kadym razem + pliku, proszc o potwierdzenie za kadym razem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 4. PODSUMOWANIE 1. CTRL-G pokae Twoj pozycj w pliku i status pliku. SHIFT-G przenosi - ci do koca pliku. + Ci do koca pliku. G przenosi do koca pliku. liczba G przenosi do linii [liczba]. gg przenosi do pierwszej linii. @@ -588,22 +588,22 @@ Uwaga: Ta funkcja jest bardzo uyteczna w debuggowaniu programu 2. Wpisanie / a nastpnie acucha znakw szuka acucha DO PRZODU. Wpisanie ? a nastpnie acucha znakw szuka acucha DO TYU. Po wyszukiwaniu wcinij n by znale nastpne wystpienie szukanej - frazy tym samym kierunku lub N by szuka w kierunku przeciwnym. + frazy w tym samym kierunku lub N by szuka w kierunku przeciwnym. CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych. 3. Wpisanie % gdy kursor znajduje si na (,),[,],{, lub } lokalizuje parujcy znak. - 4. By zamieni pierwszy stary na nowy w linii wpisz :s/stary/nowy - By zamieni wszystkie stary na nowy w linii wpisz :s/stary/nowy/g + 4. By zamieni pierwszy stary na nowy w linii, wpisz :s/stary/nowy + By zamieni wszystkie stary na nowy w linii, wpisz :s/stary/nowy/g By zamieni frazy pomidzy dwoma liniami # wpisz :#,#s/stary/nowy/g - By zamieni wszystkie wystpienia w pliku wpisz :%s/stary/nowy/g - By Vim prosi Ci o potwierdzenie dodaj 'c' :%s/stary/nowy/gc + By zamieni wszystkie wystpienia w pliku, wpisz :%s/stary/nowy/g + By Vim prosi Ci o potwierdzenie, dodaj 'c' :%s/stary/nowy/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.1.: JAK WYKONA POLECENIA ZEWNTRZNE + Lekcja 5.1.: JAK WYKONA POLECENIA ZEWNTRZNE? - ** Wpisz :! a nastpnie zewntrzne polecenie by je wykona. ** + ** Wpisz :! a nastpnie zewntrzne polecenie, by je wykona. ** 1. Wpisz znajome polecenie : by ustawi kursor na dole ekranu. To pozwala na wprowadzenie komendy linii polece. @@ -626,20 +626,20 @@ Uwaga: Wszystkie polecenia : musz by zakoczone <ENTER>. Lekcja 5.2.: WICEJ O ZAPISYWANIU PLIKW - ** By zachowa zmiany w tekci wpisz :w NAZWA_PLIKU . ** + ** By zachowa zmiany w tekcie, wpisz :w NAZWA_PLIKU . ** 1. Wpisz :!dir lub :!ls by zobaczy spis plikw w katalogu. - Ju wiesz, e musisz wcisn <ENTER> po tym. + Ju wiesz, e musisz po tym wcisn <ENTER>. - 2. Wybierz nazw pliku jaka jeszcze nie istnieje, np. TEST. + 2. Wybierz nazw pliku, jaka jeszcze nie istnieje, np. TEST. 3. Teraz wpisz: :w TEST (gdzie TEST jest nazw pliku jak wybrae.) 4. To polecenie zapamita cay plik (Vim Tutor) pod nazw TEST. - By to sprawdzi wpisz :!dir lub :!ls , eby znowu zobaczy list plikw. + By to sprawdzi, wpisz :!dir lub :!ls eby znowu zobaczy list plikw. Uwaga: Zauwa, e gdyby teraz wyszed z Vima, a nastpnie wszed ponownie - poleceniem vim TEST , plik byby dokadn kopi tutoriala kiedy go + poleceniem vim TEST , plik byby dokadn kopi tutoriala, kiedy go zapisywae. 5. Teraz usu plik wpisujc (MS-DOS): :!del TEST @@ -649,7 +649,7 @@ Uwaga: Zauwa, e gdyby teraz wyszed z Vima, a nastpnie wszed ponownie Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU - ** By zachowa cz pliku wpisz v ruch :w NAZWA_PLIKU ** + ** By zachowa cz pliku, wpisz v ruch :w NAZWA_PLIKU ** 1. Przenie kursor do tego wiersza. @@ -664,26 +664,26 @@ Uwaga: Zauwa, e gdyby teraz wyszed z Vima, a nastpnie wszed ponownie 5. Vim zapisze wybrane linie do pliku TEST. Uyj :!dir lub :!ls , eby to zobaczy. Jeszcze go nie usuwaj! Uyjemy go w nastpnej lekcji. -UWAGA: Wcinicie v zaczyna tryb Wizualny. Moesz porusza kursorem by - zmieni rozmiary zaznaczenia. Moesz te uy operatora by zrobi co +UWAGA: Wcinicie v zaczyna tryb Wizualny. Moesz porusza kursorem, by + zmieni rozmiary zaznaczenia. Moesz te uy operatora, by zrobi co z tekstem. Na przykad d usuwa tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.4.: WSTAWIANIE I CZENIE PLIKW - ** By wstawi zawarto pliku wpisz :r NAZWA_PLIKU ** + ** By wstawi zawarto pliku, wpisz :r NAZWA_PLIKU ** 1. Umie kursor tu powyej tej linii. UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejd - do DOU by zobaczy ponownie t lekcj. + do DOU, by zobaczy ponownie t lekcj. 2. Teraz wczytaj plik TEST uywajc polecenia :r TEST , gdzie TEST jest nazw pliku. Wczytany plik jest umieszczony poniej linii z kursorem. - 3. By sprawdzi czy plik zosta wczytany cofnij kursor i zobacz, e + 3. By sprawdzi czy plik zosta wczytany, cofnij kursor i zobacz, e teraz s dwie kopie Lekcji 5.3., orygina i kopia z pliku. UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad @@ -723,14 +723,14 @@ UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad 1. Przenie kursor do linii poniej oznaczonej --->. - 2. Wpisz o (mae) by otworzy lini PONIEJ kursora i przenie si + 2. Wpisz o (mae), by otworzy lini PONIEJ kursora i przenie si do trybu Insert (wprowadzanie). 3. Wpisz troch tekstu i wcinij <ESC> by wyj z trybu Insert (wprowadzanie). ---> Po wciniciu o kursor znajdzie si w otwartej linii w trybie Insert. - 4. By otworzy lini POWYEJ kursora wcinij wielkie O zamiast maego + 4. By otworzy lini POWYEJ kursora, wcinij wielkie O zamiast maego o . Wyprbuj to na linii poniej. ---> Otwrz lini powyej wciskajc SHIFT-O gdy kursor bdzie na tej linii. @@ -747,9 +747,9 @@ UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad 2. Wciskaj e dopki kursor nie bdzie na kocu li . - 3. Wpisz a (mae) aby doda tekst ZA znakiem pod kursorem. + 3. Wpisz a (mae), aby doda tekst ZA znakiem pod kursorem. - 4. Dokocz wyraz tak jak w linii poniej. Wcinij <ESC> aby opuci tryb + 4. Dokocz wyraz tak, jak w linii poniej. Wcinij <ESC> aby opuci tryb Insert. 5. Uyj e by przej do kolejnego niedokoczonego wyrazu i powtarzaj kroki @@ -758,7 +758,7 @@ UWAGA: Moesz te wczyta wyjcie zewntrznego polecenia. Na przykad ---> Ta li poz Ci wi dodaw teks do ko lin ---> Ta linia pozwoli Ci wiczy dodawanie tekstu do koca linii. -Uwaga: a , i oraz A prowadz do trybu Insert, jedyn rnic jest miejsce +Uwaga: a , i oraz A prowadz do trybu Insert, jedyn rnic jest miejsce, gdzie nowe znaki bd dodawane. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.3.: INNA WERSJA REPLACE (zamiana) @@ -791,16 +791,16 @@ UWAGA: Tryb Replace jest jak tryb Insert, ale kady znak usuwa istniejcy 1. Przejd do linii oznaczonej ---> i umie kursor za "a)". - 2. Wejd w tryb Visual v i przenie kursor na pocztek "pierwszy". + 2. Wejd w tryb Wizualny v i przenie kursor na pocztek "pierwszy". - 3. Wcinij y aby yankowa (kopiowa) podwietlony tekst. + 3. Wcinij y aby kopiowa (yankowa) podwietlony tekst. 4. Przenie kursor do koca nastpnej linii: j$ - 5. Wcinij p aby wpakowa (paste) tekst. Dodaj: a drugi<ESC> . + 5. Wcinij p aby wklei (wpakowa) tekst. Dodaj: a drugi<ESC> . - 6. Uyj trybu Wizualnego aby wybra " element.", yankuj go y , przejd do - koca nastpnej linii j$ i upakuj tam tekst z p . + 6. Uyj trybu Wizualnego, aby wybra " element.", yankuj go y , przejd do + koca nastpnej linii j$ i upakuj tam tekst z p . ---> a) to jest pierwszy element. b) @@ -810,7 +810,7 @@ Uwaga: moesz uy y jako operatora; yw kopiuje jeden wyraz. Lekcja 6.5.: USTAWIANIE OPCJI -** Ustawianie opcji tak by szukaj lub substytucja ignoroway wielko liter ** +** Ustawianie opcji tak, by szukaj lub substytucja ignoroway wielko liter ** 1. Szukaj 'ignore' wpisujc: /ignore<ENTER> Powtrz szukanie kilka razy naciskajc klawisz n . @@ -828,7 +828,7 @@ Uwaga: moesz uy y jako operatora; yw kopiuje jeden wyraz. 6. Aby wyczy ignorowanie wielkoci liter: :set noic -Uwaga: Aby usun podwietlanie dopasowa wpisz: :nohlsearch +Uwaga: Aby usun podwietlanie dopasowa, wpisz: :nohlsearch Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 6. PODSUMOWANIE @@ -837,36 +837,36 @@ Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER> 1. Wpisanie o otwiera lini PONIEJ kursora. Wpisanie O otwiera lini POWYEJ kursora. - 2. Wpisanie a by wstawi tekst ZA znakiem na, ktrym jest kursor. + 2. Wpisanie a wstawia tekst ZA znakiem, na ktrym jest kursor. Wpisanie A dodaje tekst na kocu linii. 3. Polecenie e przenosi do koca wyrazu. - 4. Operator y yankuje (kopiuje) tekst, p pakuje (wkleja, paste) go. + 4. Operator y yankuje (kopiuje) tekst, p pakuje (wkleja) go. 5. Wpisanie wielkiego R wprowadza w tryb Replace (zamiana) dopki nie zostanie wcinity <ESC>. - 6. Wpisanie ":set xxx" ustawia opcj "xxx". Nietkre opcje: + 6. Wpisanie ":set xxx" ustawia opcj "xxx". Niektre opcje: 'ic' 'ignorecase' ignoruj wielko znakw 'is' 'incsearch' poka czciowe dopasowania 'hls' 'hlsearch' podwietl wszystkie dopasowania - Moesz uy zarwno dugiej jak i krtkiej formy. - 7. Dodaj "no" aby wyczy opcj: :set noic + Moesz uy zarwno dugiej, jak i krtkiej formy. + 7. Dodaj "no", aby wyczy opcj: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 7.1. JAK UZYSKA POMOC + LEKCJA 7.1. JAK UZYSKA POMOC? ** Uycie systemu pomocy on-line ** - Vim posiada bardzo dobry system pomocy on-line. By zacz sprbuj jednej + Vim posiada bardzo dobry system pomocy on-line. By zacz, sprbuj jednej z trzech moliwoci: - wcinij klawisz <HELP> (jeli taki masz) - wcinij klawisz <F1> (jeli taki masz) - wpisz :help<ENTER> - Przeczytaj tekst w oknie pomocy aby dowiedzie si jak dziaa pomoc. + Przeczytaj tekst w oknie pomocy, aby dowiedzie si jak dziaa pomoc. wpisz CTRL-W CTRL-W aby przeskoczy z jednego okna do innego wpisz :q<ENTER> aby zamkn okno pomocy. @@ -894,10 +894,10 @@ Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER> 3. Zapisz plik: :w - Nastpnym razem gdy zaczniesz prac w Vimie bdzie on uywa podwietlania + Nastpnym razem, gdy zaczniesz prac w Vimie bdzie on uywa podwietlania skadni. Moesz doda wszystkie swoje ulubione ustawienia do tego pliku "vimrc". - Aby uzyska wicej informacji wpisz :help vimrc-intro + Aby uzyska wicej informacji, wpisz :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 7.3.: UZUPENIANIE @@ -907,11 +907,11 @@ Uwaga: Aby ignorowa wielko liter dla jednego wyszukiwania: /ignore\c<ENTER> 1. Upewnij si, e Vim nie jest w trybie kompatybilnoci: :set nocp - 2. Zerknij jakie pliki s w biecm katalogu: :!ls lub :!dir + 2. Zerknij, jakie pliki s w biecym katalogu: :!ls lub :!dir 3. Wpisz pocztek polecenia: :e - 4. Wcinij CTRL-D i Vim pokae list polece jakie zaczynaj si na "e". + 4. Wcinij CTRL-D i Vim pokae list polece, jakie zaczynaj si na "e". 5. Wcinij <TAB> i Vim uzupeni polecenie do ":edit". @@ -925,7 +925,7 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>. Lekcja 7. PODSUMOWANIE - 1. Wpisz :help lub wcinij <F1> lub <Help> aby otworzy okno pomocy. + 1. Wpisz :help albo wcinij <F1> lub <Help> aby otworzy okno pomocy. 2. Wpisz :help cmd aby uzyska pomoc o cmd . @@ -945,14 +945,14 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Tutaj si koczy tutorial Vima. Zosta on pomylany tak aby da krtki + Tutaj si koczy tutorial Vima. Zosta on pomylany tak, aby da krtki przegld jego moliwoci, wystarczajcy by mg go uywa. Jest on - daleki od kompletnoci poniewa Vim ma o wiele, wiele wicej polece. + daleki od kompletnoci, poniewa Vim ma o wiele, wiele wicej polece. Dla dalszej nauki rekomendujemy ksik: Vim - Vi Improved - autor Steve Oualline Wydawca: New Riders - Pierwsza ksizka cakowicie powicona Vimowi. Uyteczna zwaszcza dla + Pierwsza ksika cakowicie powicona Vimowi. Uyteczna zwaszcza dla pocztkujcych. Zawiera wiele przykadw i ilustracji. Zobacz http://iccf-holland.org./click5.html @@ -960,7 +960,7 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>. polecenia: Learning the Vi Editor - autor Linda Lamb Wydawca: O'Reilly & Associates Inc. - To dobra ksika by dowiedzie si niemal wszystkiego co chciaby zrobi + To dobra ksika, by dowiedzie si niemal wszystkiego, co chciaby zrobi z Vi. Szsta edycja zawiera te informacje o Vimie. Po polsku wydano: @@ -991,4 +991,5 @@ UWAGA: Uzupenianie dziaa dla wielu polece. Sprbuj wcisn CTRL-D i <TAB>. rev. Marzec 2002 2nd rev. Wrzesie 2004 3rd rev. Marzec 2006 + 4th rev. Grudzie 2008 Wszelkie uwagi prosz kierowa na: mikmach@wp.pl
--- a/runtime/tutor/tutor.pl.utf-8 +++ b/runtime/tutor/tutor.pl.utf-8 @@ -2,9 +2,9 @@ = W i t a j w t u t o r i a l u V I M - a - Wersja 1.7. = =============================================================================== - Vim to potężny edytor, który posiada wiele poleceń, zbyt dużo by + Vim to potężny edytor, który posiada wiele poleceń, zbyt dużo, by wyjaśnić je wszystkie w tym tutorialu. Ten przewodnik ma nauczyć - Cię posługiwać się wystarczająco wieloma komendami byś mógł łatwo + Cię posługiwać się wystarczająco wieloma komendami, byś mógł łatwo używać Vima jako edytora ogólnego przeznaczenia. Czas potrzebny na ukończenie tutoriala to 25 do 30 minut i zależy @@ -13,14 +13,14 @@ UWAGA: Polecenia wykonywane w czasie lekcji zmodyfikują tekst. Zrób wcześniej kopię tego pliku do ćwiczeń (jeśli zacząłeś komendą - "vimtutor" to już pracujesz na kopii). + "vimtutor", to już pracujesz na kopii). - Pamiętaj że przewodnik ten został zaprojektowany do nauki poprzez - ćwiczenia. Oznacza to, że musisz wykonywać polecenia by nauczyć się ich - prawidłowo. Jeśli będziesz jedynie czytał tekst szybko zapomnisz wiele + Pamiętaj, że przewodnik ten został zaprojektowany do nauki poprzez + ćwiczenia. Oznacza to, że musisz wykonywać polecenia, by nauczyć się ich + prawidłowo. Jeśli będziesz jedynie czytał tekst, szybko zapomnisz wiele poleceń! - Teraz upewnij się, że nie masz wciśniętego CapsLocka i wciskaj j + Teraz upewnij się, że nie masz wciśniętego Caps Locka i wciskaj j tak długo dopóki Lekcja 1.1. nie wypełni całkowicie ekranu. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -40,28 +40,28 @@ 3. Używając strzałki w dół przejdź do następnej lekcji. -Uwaga: Jeśli nie jesteś pewien czegoś co wpisałeś, wciśnij <ESC> by wrócić do +Uwaga: Jeśli nie jesteś pewien czegoś co wpisałeś, wciśnij <ESC>, by wrócić do trybu Normal. Wtedy powtórz polecenie. Uwaga: Klawisze kursora także powinny działać, ale używając hjkl będziesz - w stanie poruszać się o wiele szybciej jak się tylko przyzwyczaisz. + w stanie poruszać się o wiele szybciej, jak się tylko przyzwyczaisz. Naprawdę! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.2.: WYCHODZENIE Z VIM-a - !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj całą lekcję.!! + !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj całą lekcję !! 1. Wciśnij <ESC> (aby upewnić się, że jesteś w trybie Normal). 2. Wpisz: :q!<ENTER>. - To spowoduje wyjście z edytora PORZUCAJĄC wszelkie zmiany jakie - zdążyłeś zrobić. Jeśli chcesz zapamiętać zmiany i wyjść + To spowoduje wyjście z edytora PORZUCAJĄC wszelkie zmiany, jakie + zdążyłeś zrobić. Jeśli chcesz zapamiętać zmiany i wyjść, wpisz: :wq<ENTER> 3. Kiedy widzisz znak zachęty powłoki wpisz komendę, żeby wrócić do tutoriala. Czyli: vimtutor<ENTER> - 4. Jeśli chcesz zapamiętać polecenia, wykonaj kroki 1. do 3. aby + 4. Jeśli chcesz zapamiętać polecenia, wykonaj kroki 1. do 3., aby wyjść i wrócić do edytora. UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobiłeś. W następnych @@ -85,7 +85,7 @@ UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobiłeś. W następnych ---> Kkrowa prrzeskoczyła prrzez ksiiężycc. - 5. Teraz kiedy zdanie jest poprawione przejdź do Lekcji 1.4. + 5. Teraz, kiedy zdanie jest poprawione, przejdź do Lekcji 1.4. UWAGA: Ucz się przez ćwiczenie, nie wkuwanie. @@ -101,18 +101,18 @@ UWAGA: Ucz się przez ćwiczenie, nie wkuwanie. 1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->. - 2. Aby poprawić pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym + 2. Aby poprawić pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym, gdzie tekst ma być wstawiony. 3. Wciśnij i a następnie wpisz konieczne poprawki. - 4. Po poprawieniu błędu wciśnij <ESC> by wrócić do trybu Normal. - Powtarzaj kroki 2. do 4. aby poprawić całe zdanie. + 4. Po poprawieniu błędu wciśnij <ESC>, by wrócić do trybu Normal. + Powtarzaj kroki 2. do 4., aby poprawić całe zdanie. ---> W tej brkje trochę . ---> W tej linii brakuje trochę tekstu. - 5. Kiedy czujesz się swobodnie wstawiając tekst przejdź do + 5. Kiedy czujesz się swobodnie wstawiając tekst, przejdź do podsumowania poniżej. @@ -129,7 +129,7 @@ UWAGA: Ucz się przez ćwiczenie, nie wkuwanie. 3. Kiedy tekst został dodany, wciśnij <ESC> i wróć do trybu Normalnego. - 4. Przenieś kursor do drugiej linii oznaczonej ---> i powtórz kroki 2 i 3 + 4. Przenieś kursor do drugiej linii oznaczonej ---> i powtórz kroki 2. i 3., aby poprawić zdanie. ---> Brakuje tu tro @@ -137,27 +137,27 @@ UWAGA: Ucz się przez ćwiczenie, nie wkuwanie. ---> Tu też trochę bra Tu też trochę brakuje. - 5. Kiedy już utrwaliłeś ćwiczenie przejdź do lekcji 1.6. + 5. Kiedy już utrwaliłeś ćwiczenie, przejdź do lekcji 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 1.6.: EDYCJA PLIKU ** Użyj :wq aby zapisać plik i wyjść. ** - !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczyaj całą lekcję !! + !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj całą lekcję !! 1. Zakończ tutorial tak jak w lekcji 1.2.: :q! - Lub jeśli masz dostęp do innego terminala zrób kolejne kroki tam. + lub, jeśli masz dostęp do innego terminala, wykonaj kolejne kroki tam. 2. W powłoce wydaj polecenie: vim tutor<ENTER> - "vim" jest poleceniem uruchamiającym edytor Vim. 'tutor' to nazwa pliku - jaki chcesz edytować. Użyj pliku jaki może zostać zmieniony. + "vim" jest poleceniem uruchamiającym edytor Vim. 'tutor' to nazwa pliku, + jaki chcesz edytować. Użyj pliku, który może zostać zmieniony. - 3. Dodaj i usuń tekst tak jak się nauczyłeś w poprzednich lekcjach. + 3. Dodaj i usuń tekst tak, jak się nauczyłeś w poprzednich lekcjach. 4. Zapisz plik ze zmianami i opuść Vima: :wq<ENTER> - 5. Jeśli zakończyłeś vimtutor w kroku 1. uruchom go ponownie i przejdź + 5. Jeśli zakończyłeś vimtutor w kroku 1., uruchom go ponownie i przejdź do podsumowania poniżej. 6. Po przeczytaniu wszystkich kroków i ich zrozumieniu: wykonaj je. @@ -168,14 +168,14 @@ UWAGA: Ucz się przez ćwiczenie, nie wkuwanie. 1. Poruszasz kursorem używając "strzałek" i klawiszy hjkl . h (w lewo) j (w dół) k (do góry) l (w prawo) - 2. By wejść do Vima (z powłoki) wpisz: + 2. By wejść do Vima, (z powłoki) wpisz: vim NAZWA_PLIKU<ENTER> - 3. By wyjść z Vima wpisz: - <ESC> :q!<ENTER> by usunąc wszystkie zmiany. + 3. By wyjść z Vima, wpisz: + <ESC> :q!<ENTER> by usunąć wszystkie zmiany. LUB: <ESC> :wq<ENTER> by zmiany zachować. - 4. By usunąć znak pod kursorem wciśnij: x + 4. By usunąć znak pod kursorem, wciśnij: x 5. By wstawić tekst przed kursorem lub dodać: i wpisz tekst <ESC> wstawi przed kursorem @@ -189,18 +189,18 @@ Teraz możemy kontynuować i przejść do Lekcji 2. Lekcja 2.1.: POLECENIE DELETE (usuwanie) - ** Wpisz dw by usunąc wyraz. ** + ** Wpisz dw by usunąć wyraz. ** - 1. Wciśnij <ESC> by upewnić się, że jesteś w trybie Normal. + 1. Wciśnij <ESC>, by upewnić się, że jesteś w trybie Normal. 2. Przenieś kursor do linii poniżej oznaczonej --->. - 3. Przesuń kursor na początek wyrazu, które chcesz usunąć. + 3. Przesuń kursor na początek wyrazu, który chcesz usunąć. 4. Wpisz dw by usunąć wyraz. UWAGA: Litera d pojawi się na dole ekranu. Vim czeka na wpisanie w . - Jeśli zobaczysz inny znak oznacza to, że wpisałeś coś źle, wciśnij + Jeśli zobaczysz inny znak, oznacza to, że wpisałeś coś źle; wciśnij <ESC> i zacznij od początku. ---> Jest tu parę papier wyrazów, które kamień nie należą do nożyce tego zdania. @@ -225,7 +225,7 @@ Teraz możemy kontynuować i przejść do Lekcji 2. ---> Ktoś wpisał koniec tego zdania dwukrotnie. zdania dwukrotnie. - 5. Przejdź do Lekcji 2.3. by zrozumieć co się stało. + 5. Przejdź do Lekcji 2.3., by zrozumieć co się stało. @@ -235,12 +235,12 @@ Teraz możemy kontynuować i przejść do Lekcji 2. Lekcja 2.3.: O OPERATORACH I RUCHACH - Wiele poleceń zmieniających tekst są złożone z operatora i ruchu. - Format dla polecenia usuwającego z operatorem d jest taki: + Wiele poleceń zmieniających tekst jest złożonych z operatora i ruchu. + Format dla polecenia usuwającego z operatorem d jest następujący: d ruch - Gdzie: + gdzie: d - operator usuwania. ruch - na czym polecenie będzie wykonywane (lista poniżej). @@ -252,7 +252,7 @@ Teraz możemy kontynuować i przejść do Lekcji 2. W ten sposób wpisanie de usunie znaki od kursora do końca wyrazu. UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor - tak jak to określono. + tak, jak to określono. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 2.4.: UŻYCIE MNOŻNIKA DLA RUCHU @@ -266,32 +266,32 @@ UWAGA: Wpisanie tylko ruchu w trybie Nor 3. Wpisz 3e aby przenieść kursor do końca trzeciego wyrazu w przód. - 4. Wpisz 0 (zero) aby przenieść kursor do początku linii. + 4. Wpisz 0 (zero), aby przenieść kursor na początek linii. 5. Powtórz kroki 2. i 3. z innymi liczbami. - ---> To jest zwykły wiersz z wyrazami po których możesz się poruszać. + ---> To jest zwykły wiersz z wyrazami, po których możesz się poruszać. 6. Przejdź do lekcji 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 2.5.: UŻYCIE MNOŻNIKA BY WIĘCEJ USUNĄĆ + Lekcja 2.5.: UŻYCIE MNOŻNIKA, BY WIĘCEJ USUNĄĆ ** Wpisanie liczby z operatorem powtarza go odpowiednią ilość razy. ** W wyżej wspomnianej kombinacji operatora usuwania i ruchu podaj mnożnik - przed ruchem by więcej usunąć: + przed ruchem, by więcej usunąć: d liczba ruch 1. Przenieś kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->. 2. Wpisz 2dw aby usunąć dwa wyrazy KAPITALIKAMI. - 3. Powtarzaj kroki 1. i 2. z innymi mnożnikami aby usunąć kolejne wyrazy + 3. Powtarzaj kroki 1. i 2. z innymi mnożnikami, aby usunąć kolejne wyrazy KAPITALIKAMI jednym poleceniem ---> ta ASD WE linia QWE ASDF ZXCV FG wyrazów została ERT FGH CF oczyszczona. @@ -312,7 +312,7 @@ UWAGA: Mnożnik pomiędzy operatorem d i ruchem działa podobnie do ruchu bez 1. Przenieś kursor do drugiego zdania z wierszyka poniżej. 2. Wpisz dd aby usunąć wiersz. 3. Teraz przenieś się do czwartego wiersza. - 4. Wpisz 2dd aby usunąc dwa wiersze. + 4. Wpisz 2dd aby usunąć dwa wiersze. ---> 1) Róże są czerwone, ---> 2) Błoto jest fajne, @@ -335,12 +335,12 @@ UWAGA: Mnożnik pomiędzy operatorem d i ruchem działa podobnie do ruchu bez 2. Wpisz x aby usunąć pierwszy niechciany znak. 3. Teraz wciśnij u aby cofnąć skutki ostatniego polecenia. 4. Tym razem popraw wszystkie błędy w linii używając polecenia x . - 5. Teraz wciśnij wielkie U aby przywrócić linię do oryginalnego stanu. - 6. Teraz wciśnij u kilka razy by cofnąć U i poprzednie polecenia. + 5. Teraz wciśnij wielkie U aby przywrócić linię do oryginalnego stanu. + 6. Teraz wciśnij u kilka razy, by cofnąć U i poprzednie polecenia. 7. Teraz wpisz CTRL-R (trzymaj równocześnie wciśnięte klawisze CTRL i R) kilka razy, by cofnąć cofnięcia. ----> Poopraw blędyyy w teej liniii i zaamiień je prrzez coofnij. +---> Poopraw błędyyy w teej liniii i zaamiień je prrzez coofnij. 8. To są bardzo pożyteczne polecenia. @@ -350,22 +350,22 @@ UWAGA: Mnożnik pomiędzy operatorem d i ruchem działa podobnie do ruchu bez LEKCJA 2. PODSUMOWANIE - 1. By usunąć znaki od kursora do następnego wyrazu wpisz: dw - 2. By usunąć znaki od kursora do końca linii wpisz: d$ + 1. By usunąć znaki od kursora do następnego wyrazu, wpisz: dw + 2. By usunąć znaki od kursora do końca linii, wpisz: d$ 3. By usunąć całą linię: dd - 4. By powtórzyć ruch poprzedź go liczbą: 2w + 4. By powtórzyć ruch, poprzedź go liczbą: 2w 5. Format polecenia zmiany to: operator [liczba] ruch gdzie: - operator - to co trzeba zrobić (np. d dla usuwania) + operator - to, co trzeba zrobić (np. d dla usuwania) [liczba] - opcjonalne, ile razy powtórzyć ruch ruch - przenosi nad tekstem do operowania, takim jak w (wyraz), - $ (do końca linii), etc. + $ (do końca linii) etc. - 6. By przejść do początku linii użyj zera: 0 - 7. By cofnąć poprzednie polecenie, wpisz: u (małe u) - By cofnąć wszystkie zmiany w linii wpisz: U (wielkie U) - By cofnąć cofnięcia wpisz: CTRL-R + 6. By przejść do początku linii, użyj zera: 0 + 7. By cofnąć poprzednie polecenie, wpisz: u (małe u) + By cofnąć wszystkie zmiany w linii, wpisz: U (wielkie U) + By cofnąć cofnięcie, wpisz: CTRL-R @@ -379,7 +379,7 @@ UWAGA: Mnożnik pomiędzy operatorem d i ruchem działa podobnie do ruchu bez 2. Wpisz dd aby usunąć linię i przechować ją w rejestrze Vima. - 3. Przenieś kursor do linii c), POWYŻEJ tej gdzie usunięta linia powinna + 3. Przenieś kursor do linii c), POWYŻEJ tej, gdzie usunięta linia powinna się znajdować. 4. Wciśnij p by wstawić linię poniżej kursora. @@ -404,21 +404,21 @@ UWAGA: Mnożnik pomiędzy operatorem d i ruchem działa podobnie do ruchu bez 3. Wpisz r a potem znak jaki powinien go zastąpić. - 4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie będzie taka jak druga. + 4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie będzie taka, jak druga. ----> Kjedy ten wiersz bił wstókiwany ktoś wciznął perę złych klawirzy! ----> Kiedy ten wiersz był wstukiwany ktoś wcisnął parę złych klawiszy! +---> Kjedy ten wiersz bił wstókiwany, ktoś wciznął perę złych klawirzy! +---> Kiedy ten wiersz był wstukiwany, ktoś wcisnął parę złych klawiszy! 5. Teraz czas na Lekcję 3.3. -UWAGA: Pamiętaj by uczyć się ćwicząc, a nie pamięciowo. +UWAGA: Pamiętaj, by uczyć się ćwicząc, a nie pamięciowo. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 3.3.: OPERATOR CHANGE (zmień) - ** By zmienić do końca wyrazu wpisz ce . ** + ** By zmienić do końca wyrazu, wpisz ce . ** 1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->. @@ -428,7 +428,7 @@ UWAGA: Pamiętaj by uczyć się ćwicząc, a nie pamięciowo. 4. Wciśnij <ESC> i przejdź do następnej planowanej zmiany. - 5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie będzie takie same + 5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie będzie takie same, jak drugie. ---> Ta lunos ma pire słów, które tżina zbnic użifajonc pcmazu zmień. @@ -442,13 +442,13 @@ UWAGA: Pamiętaj by uczyć się ćwicząc, a nie pamięciowo. Lekcja 3.4.: WIĘCEJ ZMIAN UŻYWAJĄC c - ** Polecenie change używa takich samych ruchów jak delete. ** + ** Polecenie change używa takich samych ruchów, jak delete. ** - 1. Operator change działa tak samo jak delete. Format wygląda tak: + 1. Operator change działa tak samo, jak delete. Format wygląda tak: c [liczba] ruch - 2. Ruchy są także takie same, np.: w (wyraz), $ (koniec linii), etc. + 2. Ruchy są także takie same, np.: w (wyraz), $ (koniec linii) etc. 3. Przenieś się do pierwszej linii poniżej oznaczonej ---> @@ -456,7 +456,7 @@ UWAGA: Pamiętaj by uczyć się ćwicząc, a nie pamięciowo. 5. Wpisz c$ , popraw koniec wiersza i wciśnij <ESC>. ----> Koniec tego wiersza musi być poprawiony aby wyglądał tak jak drugi. +---> Koniec tego wiersza musi być poprawiony, aby wyglądał tak, jak drugi. ---> Koniec tego wiersza musi być poprawiony używając polecenia c$ . UWAGA: Możesz używać <BS> aby poprawiać błędy w czasie pisania. @@ -469,11 +469,11 @@ UWAGA: Możesz używać <BS> aby poprawiać błędy w czasie pisania. polecenie wstawia skasowany tekst PO kursorze (jeśli cała linia została usunięta, zostanie ona umieszczona w linii poniżej kursora). - 2. By zamienić znak pod kursorem wciśnij r a potem znak, który ma zastąpić + 2. By zamienić znak pod kursorem, wciśnij r a potem znak, który ma zastąpić oryginalny. - 3. Operator change pozwala Ci na zastąpienie od kursora do miejsca gdzie - zabrałby cię ruch. Np. wpisz ce aby zamienić tekst od kursora do końca + 3. Operator change pozwala Ci na zastąpienie od kursora do miejsca, gdzie + zabrałby Cię ruch. Np. wpisz ce aby zamienić tekst od kursora do końca wyrazu, c$ aby zmienić tekst do końca linii. 4. Format do polecenia change (zmień): @@ -497,12 +497,12 @@ UWAGA: Możesz używać <BS> aby poprawiać błędy w czasie pisania. Zapamiętaj numer linii dla potrzeb kroku 3. UWAGA: Możesz też zobaczyć pozycję kursora w prawym, dolnym rogu ekranu. - Dzieje się tak kiedy ustawiona jest opcja 'ruler' (wyjaśnione w lekcji 6.). + Dzieje się tak kiedy ustawiona jest opcja 'ruler' (więcej w lekcji 6.). 2. Wciśnij G aby przejść na koniec pliku. Wciśnij gg aby przejść do początku pliku. - 3. Wpisz numer linii, w której byłeś a potem G . To przeniesie cię + 3. Wpisz numer linii, w której byłeś a potem G . To przeniesie Cię z powrotem do linii, w której byłeś kiedy wcisnąłeś CTRL-G. 4. Jeśli czujesz się wystarczająco pewnie, wykonaj kroki 1-3. @@ -511,10 +511,10 @@ UWAGA: Możesz też zobaczyć pozycję kursora w prawym, dolnym rogu ekranu. Lekcja 4.2.: POLECENIE SZUKAJ - ** Wpisz / a następnie wyrażenie aby je znaleźć. ** + ** Wpisz / a następnie wyrażenie, aby je znaleźć. ** - 1. W trybie Normal wpisz / . Zauważ, że znak ten, oraz kursor pojawią - się na dole ekranu tak samo jak polecenie : . + 1. W trybie Normal wpisz / . Zauważ, że znak ten oraz kursor pojawią + się na dole ekranu tak samo, jak polecenie : . 2. Teraz wpisz błond<ENTER> . To jest słowo, którego chcesz szukać. @@ -523,11 +523,11 @@ UWAGA: Możesz też zobaczyć pozycję kursora w prawym, dolnym rogu ekranu. 4. Jeśli chcesz szukać frazy do tyłu, użyj polecenia ? zamiast / . - 5. Aby wrócić gdzie byłeś wciśnij CTRL-O. Powtarzaj by wrócić dalej. CTRL-I + 5. Aby wrócić gdzie byłeś, wciśnij CTRL-O. Powtarzaj, by wrócić dalej. CTRL-I idzie do przodu. -Uwaga: 'błond' to nie jest metoda by przeliterować błąd; 'błond' to błąd. -Uwaga: Kiedy szukanie osiągnie koniec pliku będzie kontynuowało od początku +Uwaga: 'błond' to nie jest metoda, by przeliterować błąd; 'błond' to błąd. +Uwaga: Kiedy szukanie osiągnie koniec pliku, będzie kontynuowane od początku o ile opcja 'wrapscan' nie została przestawiona. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -571,16 +571,16 @@ Uwaga: Ta funkcja jest bardzo użyteczna w debuggowaniu programu 4. Aby zmienić wszystkie wystąpienia łańcucha znaków pomiędzy dwoma liniami, wpisz: :#,#s/stare/nowe/g gdzie #,# są numerami linii ograniczających - region gdzie ma nastąpić zamiana. + region, gdzie ma nastąpić zamiana. wpisz :%s/stare/nowe/g by zmienić wszystkie wystąpienia w całym pliku. wpisz :%s/stare/nowe/gc by zmienić wszystkie wystąpienia w całym - pliku, prosząc o potwierdzenie za każdym razem + pliku, prosząc o potwierdzenie za każdym razem. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 4. PODSUMOWANIE 1. CTRL-G pokaże Twoją pozycję w pliku i status pliku. SHIFT-G przenosi - cię do końca pliku. + Cię do końca pliku. G przenosi do końca pliku. liczba G przenosi do linii [liczba]. gg przenosi do pierwszej linii. @@ -588,22 +588,22 @@ Uwaga: Ta funkcja jest bardzo użyteczna w debuggowaniu programu 2. Wpisanie / a następnie łańcucha znaków szuka łańcucha DO PRZODU. Wpisanie ? a następnie łańcucha znaków szuka łańcucha DO TYŁU. Po wyszukiwaniu wciśnij n by znaleźć następne wystąpienie szukanej - frazy tym samym kierunku lub N by szukać w kierunku przeciwnym. + frazy w tym samym kierunku lub N by szukać w kierunku przeciwnym. CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych. 3. Wpisanie % gdy kursor znajduje się na (,),[,],{, lub } lokalizuje parujący znak. - 4. By zamienić pierwszy stary na nowy w linii wpisz :s/stary/nowy - By zamienić wszystkie stary na nowy w linii wpisz :s/stary/nowy/g + 4. By zamienić pierwszy stary na nowy w linii, wpisz :s/stary/nowy + By zamienić wszystkie stary na nowy w linii, wpisz :s/stary/nowy/g By zamienić frazy pomiędzy dwoma liniami # wpisz :#,#s/stary/nowy/g - By zamienić wszystkie wystąpienia w pliku wpisz :%s/stary/nowy/g - By Vim prosił Cię o potwierdzenie dodaj 'c' :%s/stary/nowy/gc + By zamienić wszystkie wystąpienia w pliku, wpisz :%s/stary/nowy/g + By Vim prosił Cię o potwierdzenie, dodaj 'c' :%s/stary/nowy/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lekcja 5.1.: JAK WYKONAĆ POLECENIA ZEWNĘTRZNE + Lekcja 5.1.: JAK WYKONAĆ POLECENIA ZEWNĘTRZNE? - ** Wpisz :! a następnie zewnętrzne polecenie by je wykonać. ** + ** Wpisz :! a następnie zewnętrzne polecenie, by je wykonać. ** 1. Wpisz znajome polecenie : by ustawić kursor na dole ekranu. To pozwala na wprowadzenie komendy linii poleceń. @@ -626,20 +626,20 @@ Uwaga: Wszystkie polecenia : muszą być zakończone <ENTER>. Lekcja 5.2.: WIĘCEJ O ZAPISYWANIU PLIKÓW - ** By zachować zmiany w tekści wpisz :w NAZWA_PLIKU . ** + ** By zachować zmiany w tekście, wpisz :w NAZWA_PLIKU . ** 1. Wpisz :!dir lub :!ls by zobaczyć spis plików w katalogu. - Już wiesz, że musisz wcisnąć <ENTER> po tym. + Już wiesz, że musisz po tym wcisnąć <ENTER>. - 2. Wybierz nazwę pliku jaka jeszcze nie istnieje, np. TEST. + 2. Wybierz nazwę pliku, jaka jeszcze nie istnieje, np. TEST. 3. Teraz wpisz: :w TEST (gdzie TEST jest nazwą pliku jaką wybrałeś.) 4. To polecenie zapamięta cały plik (Vim Tutor) pod nazwą TEST. - By to sprawdzić wpisz :!dir lub :!ls , żeby znowu zobaczyć listę plików. + By to sprawdzić, wpisz :!dir lub :!ls żeby znowu zobaczyć listę plików. Uwaga: Zauważ, że gdybyś teraz wyszedł z Vima, a następnie wszedł ponownie - poleceniem vim TEST , plik byłby dokładną kopią tutoriala kiedy go + poleceniem vim TEST , plik byłby dokładną kopią tutoriala, kiedy go zapisywałeś. 5. Teraz usuń plik wpisując (MS-DOS): :!del TEST @@ -649,7 +649,7 @@ Uwaga: Zauważ, że gdybyś teraz wyszedł z Vima, a następnie wszedł ponownie Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU - ** By zachować część pliku wpisz v ruch :w NAZWA_PLIKU ** + ** By zachować część pliku, wpisz v ruch :w NAZWA_PLIKU ** 1. Przenieś kursor do tego wiersza. @@ -664,26 +664,26 @@ Uwaga: Zauważ, że gdybyś teraz wyszedł z Vima, a następnie wszedł ponownie 5. Vim zapisze wybrane linie do pliku TEST. Użyj :!dir lub :!ls , żeby to zobaczyć. Jeszcze go nie usuwaj! Użyjemy go w następnej lekcji. -UWAGA: Wciśnięcie v zaczyna tryb Wizualny. Możesz poruszać kursorem by - zmienić rozmiary zaznaczenia. Możesz też użyć operatora by zrobić coś +UWAGA: Wciśnięcie v zaczyna tryb Wizualny. Możesz poruszać kursorem, by + zmienić rozmiary zaznaczenia. Możesz też użyć operatora, by zrobić coś z tekstem. Na przykład d usuwa tekst. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 5.4.: WSTAWIANIE I ŁĄCZENIE PLIKÓW - ** By wstawić zawartość pliku wpisz :r NAZWA_PLIKU ** + ** By wstawić zawartość pliku, wpisz :r NAZWA_PLIKU ** 1. Umieść kursor tuż powyżej tej linii. UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejdź - do DOŁU by zobaczyć ponownie tę lekcję. + do DOŁU, by zobaczyć ponownie tę lekcję. 2. Teraz wczytaj plik TEST używając polecenia :r TEST , gdzie TEST jest nazwą pliku. Wczytany plik jest umieszczony poniżej linii z kursorem. - 3. By sprawdzić czy plik został wczytany cofnij kursor i zobacz, że + 3. By sprawdzić czy plik został wczytany, cofnij kursor i zobacz, że teraz są dwie kopie Lekcji 5.3., oryginał i kopia z pliku. UWAGA: Możesz też wczytać wyjście zewnętrznego polecenia. Na przykład @@ -723,14 +723,14 @@ UWAGA: Możesz też wczytać wyjście zewnętrznego polecenia. Na przykład 1. Przenieś kursor do linii poniżej oznaczonej --->. - 2. Wpisz o (małe) by otworzyć linię PONIŻEJ kursora i przenieść się + 2. Wpisz o (małe), by otworzyć linię PONIŻEJ kursora i przenieść się do trybu Insert (wprowadzanie). 3. Wpisz trochę tekstu i wciśnij <ESC> by wyjść z trybu Insert (wprowadzanie). ---> Po wciśnięciu o kursor znajdzie się w otwartej linii w trybie Insert. - 4. By otworzyć linię POWYŻEJ kursora wciśnij wielkie O zamiast małego + 4. By otworzyć linię POWYŻEJ kursora, wciśnij wielkie O zamiast małego o . Wypróbuj to na linii poniżej. ---> Otwórz linię powyżej wciskając SHIFT-O gdy kursor będzie na tej linii. @@ -747,9 +747,9 @@ UWAGA: Możesz też wczytać wyjście zewnętrznego polecenia. Na przykład 2. Wciskaj e dopóki kursor nie będzie na końcu li . - 3. Wpisz a (małe) aby dodać tekst ZA znakiem pod kursorem. + 3. Wpisz a (małe), aby dodać tekst ZA znakiem pod kursorem. - 4. Dokończ wyraz tak jak w linii poniżej. Wciśnij <ESC> aby opuścić tryb + 4. Dokończ wyraz tak, jak w linii poniżej. Wciśnij <ESC> aby opuścić tryb Insert. 5. Użyj e by przejść do kolejnego niedokończonego wyrazu i powtarzaj kroki @@ -758,7 +758,7 @@ UWAGA: Możesz też wczytać wyjście zewnętrznego polecenia. Na przykład ---> Ta li poz Ci ćwi dodaw teks do koń lin ---> Ta linia pozwoli Ci ćwiczyć dodawanie tekstu do końca linii. -Uwaga: a , i oraz A prowadzą do trybu Insert, jedyną różnicą jest miejsce +Uwaga: a , i oraz A prowadzą do trybu Insert, jedyną różnicą jest miejsce, gdzie nowe znaki będą dodawane. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 6.3.: INNA WERSJA REPLACE (zamiana) @@ -791,16 +791,16 @@ UWAGA: Tryb Replace jest jak tryb Insert, ale każdy znak usuwa istniejący 1. Przejdź do linii oznaczonej ---> i umieść kursor za "a)". - 2. Wejdź w tryb Visual v i przenieś kursor na początek "pierwszy". + 2. Wejdź w tryb Wizualny v i przenieś kursor na początek "pierwszy". - 3. Wciśnij y aby yankować (kopiować) podświetlony tekst. + 3. Wciśnij y aby kopiować (yankować) podświetlony tekst. 4. Przenieś kursor do końca następnej linii: j$ - 5. Wciśnij p aby wpakować (paste) tekst. Dodaj: a drugi<ESC> . + 5. Wciśnij p aby wkleić (wpakować) tekst. Dodaj: a drugi<ESC> . - 6. Użyj trybu Wizualnego aby wybrać " element.", yankuj go y , przejdź do - końca następnej linii j$ i upakuj tam tekst z p . + 6. Użyj trybu Wizualnego, aby wybrać " element.", yankuj go y , przejdź do + końca następnej linii j$ i upakuj tam tekst z p . ---> a) to jest pierwszy element. b) @@ -810,7 +810,7 @@ Uwaga: możesz użyć y jako operatora; yw kopiuje jeden wyraz. Lekcja 6.5.: USTAWIANIE OPCJI -** Ustawianie opcji tak by szukaj lub substytucja ignorowały wielkość liter ** +** Ustawianie opcji tak, by szukaj lub substytucja ignorowały wielkość liter ** 1. Szukaj 'ignore' wpisując: /ignore<ENTER> Powtórz szukanie kilka razy naciskając klawisz n . @@ -828,7 +828,7 @@ Uwaga: możesz użyć y jako operatora; yw kopiuje jeden wyraz. 6. Aby wyłączyć ignorowanie wielkości liter: :set noic -Uwaga: Aby usunąć podświetlanie dopasowań wpisz: :nohlsearch +Uwaga: Aby usunąć podświetlanie dopasowań, wpisz: :nohlsearch Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c<ENTER> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LEKCJA 6. PODSUMOWANIE @@ -837,36 +837,36 @@ Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c<ENTER> 1. Wpisanie o otwiera linię PONIŻEJ kursora. Wpisanie O otwiera linię POWYŻEJ kursora. - 2. Wpisanie a by wstawić tekst ZA znakiem na, którym jest kursor. + 2. Wpisanie a wstawia tekst ZA znakiem, na którym jest kursor. Wpisanie A dodaje tekst na końcu linii. 3. Polecenie e przenosi do końca wyrazu. - 4. Operator y yankuje (kopiuje) tekst, p pakuje (wkleja, paste) go. + 4. Operator y yankuje (kopiuje) tekst, p pakuje (wkleja) go. 5. Wpisanie wielkiego R wprowadza w tryb Replace (zamiana) dopóki nie zostanie wciśnięty <ESC>. - 6. Wpisanie ":set xxx" ustawia opcję "xxx". Nietkóre opcje: + 6. Wpisanie ":set xxx" ustawia opcję "xxx". Niektóre opcje: 'ic' 'ignorecase' ignoruj wielkość znaków 'is' 'incsearch' pokaż częściowe dopasowania 'hls' 'hlsearch' podświetl wszystkie dopasowania - Możesz użyć zarówno długiej jak i krótkiej formy. - 7. Dodaj "no" aby wyłączyć opcję: :set noic + Możesz użyć zarówno długiej, jak i krótkiej formy. + 7. Dodaj "no", aby wyłączyć opcję: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - LEKCJA 7.1. JAK UZYSKAĆ POMOC + LEKCJA 7.1. JAK UZYSKAĆ POMOC? ** Użycie systemu pomocy on-line ** - Vim posiada bardzo dobry system pomocy on-line. By zacząć spróbuj jednej + Vim posiada bardzo dobry system pomocy on-line. By zacząć, spróbuj jednej z trzech możliwości: - wciśnij klawisz <HELP> (jeśli taki masz) - wciśnij klawisz <F1> (jeśli taki masz) - wpisz :help<ENTER> - Przeczytaj tekst w oknie pomocy aby dowiedzieć się jak działa pomoc. + Przeczytaj tekst w oknie pomocy, aby dowiedzieć się jak działa pomoc. wpisz CTRL-W CTRL-W aby przeskoczyć z jednego okna do innego wpisz :q<ENTER> aby zamknąć okno pomocy. @@ -894,10 +894,10 @@ Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c<ENTER> 3. Zapisz plik: :w - Następnym razem gdy zaczniesz pracę w Vimie będzie on używać podświetlania + Następnym razem, gdy zaczniesz pracę w Vimie będzie on używać podświetlania składni. Możesz dodać wszystkie swoje ulubione ustawienia do tego pliku "vimrc". - Aby uzyskać więcej informacji wpisz :help vimrc-intro + Aby uzyskać więcej informacji, wpisz :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lekcja 7.3.: UZUPEŁNIANIE @@ -907,11 +907,11 @@ Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c<ENTER> 1. Upewnij się, że Vim nie jest w trybie kompatybilności: :set nocp - 2. Zerknij jakie pliki są w bieżącm katalogu: :!ls lub :!dir + 2. Zerknij, jakie pliki są w bieżącym katalogu: :!ls lub :!dir 3. Wpisz początek polecenia: :e - 4. Wciśnij CTRL-D i Vim pokaże listę poleceń jakie zaczynają się na "e". + 4. Wciśnij CTRL-D i Vim pokaże listę poleceń, jakie zaczynają się na "e". 5. Wciśnij <TAB> i Vim uzupełni polecenie do ":edit". @@ -925,7 +925,7 @@ UWAGA: Uzupełnianie działa dla wielu poleceń. Spróbuj wcisnąć CTRL-D i <TAB>. Lekcja 7. PODSUMOWANIE - 1. Wpisz :help lub wciśnij <F1> lub <Help> aby otworzyć okno pomocy. + 1. Wpisz :help albo wciśnij <F1> lub <Help> aby otworzyć okno pomocy. 2. Wpisz :help cmd aby uzyskać pomoc o cmd . @@ -945,14 +945,14 @@ UWAGA: Uzupełnianie działa dla wielu poleceń. Spróbuj wcisnąć CTRL-D i <TAB>. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Tutaj się kończy tutorial Vima. Został on pomyślany tak aby dać krótki + Tutaj się kończy tutorial Vima. Został on pomyślany tak, aby dać krótki przegląd jego możliwości, wystarczający byś mógł go używać. Jest on - daleki od kompletności ponieważ Vim ma o wiele, wiele więcej poleceń. + daleki od kompletności, ponieważ Vim ma o wiele, wiele więcej poleceń. Dla dalszej nauki rekomendujemy książkę: Vim - Vi Improved - autor Steve Oualline Wydawca: New Riders - Pierwsza ksiązka całkowicie poświęcona Vimowi. Użyteczna zwłaszcza dla + Pierwsza książka całkowicie poświęcona Vimowi. Użyteczna zwłaszcza dla początkujących. Zawiera wiele przykładów i ilustracji. Zobacz http://iccf-holland.org./click5.html @@ -960,7 +960,7 @@ UWAGA: Uzupełnianie działa dla wielu poleceń. Spróbuj wcisnąć CTRL-D i <TAB>. polecenia: Learning the Vi Editor - autor Linda Lamb Wydawca: O'Reilly & Associates Inc. - To dobra książka by dowiedzieć się niemal wszystkiego co chciałbyś zrobić + To dobra książka, by dowiedzieć się niemal wszystkiego, co chciałbyś zrobić z Vi. Szósta edycja zawiera też informacje o Vimie. Po polsku wydano: @@ -991,4 +991,5 @@ UWAGA: Uzupełnianie działa dla wielu poleceń. Spróbuj wcisnąć CTRL-D i <TAB>. rev. Marzec 2002 2nd rev. Wrzesień 2004 3rd rev. Marzec 2006 + 4th rev. Grudzień 2008 Wszelkie uwagi proszę kierować na: mikmach@wp.pl
--- a/runtime/vimrc_example.vim +++ b/runtime/vimrc_example.vim @@ -1,7 +1,7 @@ " An example for a vimrc file. " " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last change: 2008 Jul 02 +" Last change: 2008 Dec 17 " " To use it, copy it to " for Unix and OS/2: ~/.vimrc @@ -14,7 +14,7 @@ if v:progname =~? "evim" finish endif -" Use Vim settings, rather then Vi settings (much better!). +" Use Vim settings, rather than Vi settings (much better!). " This must be first, because it changes other options as a side effect. set nocompatible