updated for version 7.2a

This commit is contained in:
Bram Moolenaar
2008-06-24 21:16:56 +00:00
parent a7241f5f19
commit 3577c6fafb
123 changed files with 39104 additions and 1352 deletions

View File

@ -1,8 +1,8 @@
" ---------------------------------------------------------------------
" getscript.vim
" Author: Charles E. Campbell, Jr.
" Date: May 11, 2007
" Version: 27
" Date: May 30, 2008
" Version: 30
" Installing: :help glvs-install
" Usage: :help glvs
"
@ -11,7 +11,7 @@
" ---------------------------------------------------------------------
" Initialization: {{{1
" if you're sourcing this file, surely you can't be
" expecting vim to be in its vi-compatible mode
" expecting vim to be in its vi-compatible mode!
if &cp
echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)"
finish
@ -23,11 +23,44 @@ set cpo&vim
if exists("g:loaded_getscript")
finish
endif
let g:loaded_getscript= "v27"
let g:loaded_getscript= "v30"
" ---------------------------------------------------------------------
" Global Variables: {{{1
" allow user to change the command for obtaining scripts (does fetch work?)
" ---------------------------
" Global Variables: {{{1
" ---------------------------
" Cygwin Detection ------- {{{2
if !exists("g:getscript_cygwin")
if has("win32") || has("win95") || has("win64") || has("win16")
if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$'
let g:getscript_cygwin= 1
else
let g:getscript_cygwin= 0
endif
else
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")
if executable("wget")
let g:GetLatestVimScripts_wget= "wget"
@ -93,262 +126,6 @@ com! -nargs=0 GetLatestVimScripts call getscript#GetLatestVimScripts()
com! -nargs=0 GetScript call getscript#GetLatestVimScripts()
silent! com -nargs=0 GLVS call getscript#GetLatestVimScripts()
" ---------------------------------------------------------------------
" 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.
fun! s:GetOneScript(...)
" call Dfunc("GetOneScript()")
" set options to allow progress to be shown on screen
let t_ti= &t_ti
let t_te= &t_te
let rs = &rs
set t_ti= t_te= nors
" put current line on top-of-screen and interpret it into
" a script identifer : used to obtain webpage
" source identifier : used to identify current version
" and an associated comment: used to report on what's being considered
if a:0 >= 3
let scriptid = a:1
let srcid = a:2
let fname = a:3
let cmmnt = ""
" call Decho("scriptid<".scriptid.">")
" call Decho("srcid <".srcid.">")
" call Decho("fname <".fname.">")
else
let curline = getline(".")
if curline =~ '^\s*#'
" call Dret("GetOneScript : skipping a pure comment line")
return
endif
let parsepat = '^\s*\(\d\+\)\s\+\(\d\+\)\s\+\(.\{-}\)\(\s*#.*\)\=$'
try
let scriptid = substitute(curline,parsepat,'\1','e')
catch /^Vim\%((\a\+)\)\=:E486/
let scriptid= 0
endtry
try
let srcid = substitute(curline,parsepat,'\2','e')
catch /^Vim\%((\a\+)\)\=:E486/
let srcid= 0
endtry
try
let fname= substitute(curline,parsepat,'\3','e')
catch /^Vim\%((\a\+)\)\=:E486/
let fname= ""
endtry
try
let cmmnt= substitute(curline,parsepat,'\4','e')
catch /^Vim\%((\a\+)\)\=:E486/
let cmmnt= ""
endtry
" call Decho("curline <".curline.">")
" call Decho("parsepat<".parsepat.">")
" call Decho("scriptid<".scriptid.">")
" call Decho("srcid <".srcid.">")
" call Decho("fname <".fname.">")
endif
if scriptid == 0 || srcid == 0
" When looking for :AutoInstall: lines, skip scripts that
" have 0 0 scriptname
" call Dret("GetOneScript : skipping a scriptid==srcid==0 line")
return
endif
let doautoinstall= 0
if fname =~ ":AutoInstall:"
" call Decho("fname<".fname."> has :AutoInstall:...")
let aicmmnt= substitute(fname,'\s\+:AutoInstall:\s\+',' ','')
" call Decho("aicmmnt<".aicmmnt."> s:autoinstall=".s:autoinstall)
if s:autoinstall != ""
let doautoinstall = g:GetLatestVimScripts_allowautoinstall
endif
else
let aicmmnt= fname
endif
" call Decho("aicmmnt<".aicmmnt.">: doautoinstall=".doautoinstall)
exe "norm z\<CR>"
redraw!
" call Decho('considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid)
echomsg '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
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)
if has("win32") || has("win16") || has("win95")
" call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile.' "'.scriptaddr.'"')
exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile.' "'.scriptaddr.'"'
else
" call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile." '".scriptaddr."'")
exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile." '".scriptaddr."'"
endif
if itry == 1
exe "silent vsplit ".tmpfile
else
silent! e %
endif
" find the latest source-id in the plugin's webpage
silent! 1
let findpkg= search('Click on the package to download','W')
if findpkg > 0
break
endif
let itry= itry + 1
endwhile
" call Decho(" --- end downloading tries while loop --- itry=".itry)
" testing: did finding "Click on the package..." fail?
if findpkg == 0 || itry >= 4
silent q!
call delete(tmpfile)
" restore options
let &t_ti = t_ti
let &t_te = t_te
let &rs = rs
let s:downerrors = s:downerrors + 1
" call Decho("***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">")
echomsg "***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">"
" call Dret("GetOneScript : srch for /Click on the package/ failed")
return
endif
" call Decho('found "Click on the package to download"')
let findsrcid= search('src_id=','W')
if findsrcid == 0
silent q!
call delete(tmpfile)
" restore options
let &t_ti = t_ti
let &t_te = t_te
let &rs = rs
let s:downerrors = s:downerrors + 1
" call Decho("***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">")
echomsg "***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">"
" call Dret("GetOneScript : srch for /src_id/ failed")
return
endif
" call Decho('found "src_id=" in description page')
let srcidpat = '^\s*<td class.*src_id=\(\d\+\)">\([^<]\+\)<.*$'
let latestsrcid= substitute(getline("."),srcidpat,'\1','')
let sname = substitute(getline("."),srcidpat,'\2','') " script name actually downloaded
" call Decho("srcidpat<".srcidpat."> latestsrcid<".latestsrcid."> sname<".sname.">")
silent q!
call delete(tmpfile)
" convert the strings-of-numbers into numbers
let srcid = srcid + 0
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
if latestsrcid > srcid
" call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."]: need to update <".sname.">")
let s:downloads= s:downloads + 1
if sname == bufname("%")
" GetLatestVimScript has to be careful about downloading itself
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.">"
if has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95")
" call Decho("windows: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"')
exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"'
else
" call Decho("unix: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'")
exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'"
endif
" AutoInstall: only if doautoinstall is so indicating
if doautoinstall
" call Decho("attempting to do autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname))
if filereadable(sname)
" call Decho("move <".sname."> to ".s:autoinstall)
exe "silent !".g:GetLatestVimScripts_mv." ".sname." ".s:autoinstall
let curdir= escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #")
" call Decho("exe cd ".s:autoinstall)
exe "cd ".s:autoinstall
" decompress
if sname =~ '\.bz2$'
" call Decho("decompress: attempt to bunzip2 ".sname)
exe "silent !bunzip2 ".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 ".sname
let sname= substitute(sname,'\.gz$','','')
" call Decho("decompress: new sname<".sname."> after gunzip")
endif
" distribute archive(.zip, .tar, .vba) contents
if sname =~ '\.zip$'
" call Decho("dearchive: attempt to unzip ".sname)
exe "silent !unzip -o ".sname
elseif sname =~ '\.tar$'
" call Decho("dearchive: attempt to untar ".sname)
exe "silent !tar -xvf ".sname
elseif sname =~ '\.vba$'
" call Decho("dearchive: attempt to handle a vimball: ".sname)
silent 1split
exe "silent e ".sname
silent so %
silent q
endif
if sname =~ '.vim$'
" call Decho("dearchive: attempt to simply move ".sname." to plugin")
exe "silent !".g:GetLatestVimScripts_mv." ".sname." plugin"
endif
" helptags step
let docdir= substitute(&rtp,',.*','','e')."/doc"
" call Decho("helptags: docdir<".docdir.">")
exe "helptags ".docdir
exe "cd ".curdir
endif
if fname !~ ':AutoInstall:'
let modline=scriptid." ".latestsrcid." :AutoInstall: ".fname.cmmnt
else
let modline=scriptid." ".latestsrcid." ".fname.cmmnt
endif
else
let modline=scriptid." ".latestsrcid." ".fname.cmmnt
endif
" update the data in the <GetLatestVimScripts.dat> file
call setline(line("."),modline)
" call Decho("update data in ".expand("%")."#".line(".").": modline<".modline.">")
" else " Decho
" call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."], no need to update")
endif
" restore options
let &t_ti= t_ti
let &t_te= t_te
let &rs = rs
" call Dret("GetOneScript")
endfun
" ---------------------------------------------------------------------
" GetLatestVimScripts: this function gets the latest versions of {{{1
" scripts based on the list in
@ -409,9 +186,11 @@ fun! getscript#GetLatestVimScripts()
" record current directory, change to datadir, open split window with
" datafile
let origdir= getcwd()
exe "cd ".escape(substitute(datadir,'\','/','ge'),"|[]*'\" #")
" call Decho("exe cd ".fnameescape(substitute(datadir,'\','/','ge')))
exe "cd ".fnameescape(substitute(datadir,'\','/','ge'))
split
exe "e ".escape(substitute(datafile,'\','/','ge'),"|[]*'\" #")
" call Decho("exe e ".fnameescape(substitute(datafile,'\','/','ge')))
exe "e ".fnameescape(substitute(datafile,'\','/','ge'))
res 1000
let s:downloads = 0
let s:downerrors= 0
@ -421,36 +200,41 @@ fun! getscript#GetLatestVimScripts()
" call Decho("searching plugins for GetLatestVimScripts dependencies")
let lastline = line("$")
" call Decho("lastline#".lastline)
let plugins = split(globpath(&rtp,"plugin/*.vim"))
let plugins = split(globpath(&rtp,"plugin/*.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("firstdir<".firstdir.">")
" call Decho("setting firstdir<".firstdir.">")
else
let curdir= substitute(plugin,'[/\\][^/\\]\+$','','')
" call Decho("curdir<".curdir.">")
if curdir != firstdir
" call Decho("skipping subsequent plugins: curdir<".curdir."> != firstdir<".firstdir.">")
break
endif
endif
" read plugin in
" evidently a :r creates a new buffer (the "#" buffer) that is subsequently unused -- bwiping it
$
" call Decho(" ")
" call Decho(".dependency checking<".plugin."> line$=".line("$"))
exe "silent r ".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
" 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(".")
@ -485,14 +269,15 @@ fun! getscript#GetLatestVimScripts()
endfor
" call Decho("--- end dependency checking loop --- foundscript=".foundscript)
" call Decho(" ")
" call Dredir("BUFFER TEST (GetLatestVimScripts 1)","ls!")
if foundscript == 0
set nomod
setlocal nomod
endif
" Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat
" call Decho("begin: checking out-of-date scripts using datafile<".datafile.">")
set lz
setlocal lz
1
" /^-----/,$g/^\s*\d/call Decho(getline("."))
1
@ -529,14 +314,302 @@ fun! getscript#GetLatestVimScripts()
q
" restore events and current directory
exe "cd ".escape(substitute(origdir,'\','/','ge'),"|[]*'\" #")
exe "cd ".fnameescape(substitute(origdir,'\','/','ge'))
let &ei= eikeep
set nolz
setlocal nolz
" call Dredir("BUFFER TEST (GetLatestVimScripts 2)","ls!")
" call Dret("GetLatestVimScripts : did ".s:downloads." downloads")
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.
fun! s:GetOneScript(...)
" call Dfunc("GetOneScript()")
" set options to allow progress to be shown on screen
let rega= @a
let t_ti= &t_ti
let t_te= &t_te
let rs = &rs
set t_ti= t_te= nors
" put current line on top-of-screen and interpret it into
" a script identifer : used to obtain webpage
" source identifier : used to identify current version
" and an associated comment: used to report on what's being considered
if a:0 >= 3
let scriptid = a:1
let srcid = a:2
let fname = a:3
let cmmnt = ""
" call Decho("scriptid<".scriptid.">")
" call Decho("srcid <".srcid.">")
" call Decho("fname <".fname.">")
else
let curline = getline(".")
if curline =~ '^\s*#'
let @a= rega
" call Dret("GetOneScript : skipping a pure comment line")
return
endif
let parsepat = '^\s*\(\d\+\)\s\+\(\d\+\)\s\+\(.\{-}\)\(\s*#.*\)\=$'
try
let scriptid = substitute(curline,parsepat,'\1','e')
catch /^Vim\%((\a\+)\)\=:E486/
let scriptid= 0
endtry
try
let srcid = substitute(curline,parsepat,'\2','e')
catch /^Vim\%((\a\+)\)\=:E486/
let srcid= 0
endtry
try
let fname= substitute(curline,parsepat,'\3','e')
catch /^Vim\%((\a\+)\)\=:E486/
let fname= ""
endtry
try
let cmmnt= substitute(curline,parsepat,'\4','e')
catch /^Vim\%((\a\+)\)\=:E486/
let cmmnt= ""
endtry
" call Decho("curline <".curline.">")
" call Decho("parsepat<".parsepat.">")
" call Decho("scriptid<".scriptid.">")
" call Decho("srcid <".srcid.">")
" call Decho("fname <".fname.">")
endif
if scriptid == 0 || srcid == 0
" When looking for :AutoInstall: lines, skip scripts that have 0 0 scriptname
let @a= rega
" call Dret("GetOneScript : skipping a scriptid==srcid==0 line")
return
endif
let doautoinstall= 0
if fname =~ ":AutoInstall:"
" call Decho("case AutoInstall: fname<".fname.">")
let aicmmnt= substitute(fname,'\s\+:AutoInstall:\s\+',' ','')
" call Decho("aicmmnt<".aicmmnt."> s:autoinstall=".s:autoinstall)
if s:autoinstall != ""
let doautoinstall = g:GetLatestVimScripts_allowautoinstall
endif
else
let aicmmnt= fname
endif
" call Decho("aicmmnt<".aicmmnt.">: doautoinstall=".doautoinstall)
exe "norm z\<CR>"
redraw!
" 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
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)
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!
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)
endif
if itry == 1
exe "silent vsplit ".fnameescape(tmpfile)
else
silent! e %
endif
setlocal bh=wipe
" find the latest source-id in the plugin's webpage
silent! 1
let findpkg= search('Click on the package to download','W')
if findpkg > 0
break
endif
let itry= itry + 1
endwhile
" call Decho(" --- end downloading tries while loop --- itry=".itry)
" testing: did finding "Click on the package..." fail?
if findpkg == 0 || itry >= 4
silent q!
call delete(tmpfile)
" restore options
let &t_ti = t_ti
let &t_te = t_te
let &rs = rs
let s:downerrors = s:downerrors + 1
" call Decho("***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">")
echomsg "***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">"
" call Dret("GetOneScript : srch for /Click on the package/ failed")
let @a= rega
return
endif
" call Decho('found "Click on the package to download"')
let findsrcid= search('src_id=','W')
if findsrcid == 0
silent q!
call delete(tmpfile)
" restore options
let &t_ti = t_ti
let &t_te = t_te
let &rs = rs
let s:downerrors = s:downerrors + 1
" call Decho("***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">")
echomsg "***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">"
let @a= rega
" call Dret("GetOneScript : srch for /src_id/ failed")
return
endif
" call Decho('found "src_id=" in description page')
let srcidpat = '^\s*<td class.*src_id=\(\d\+\)">\([^<]\+\)<.*$'
let latestsrcid= substitute(getline("."),srcidpat,'\1','')
let sname = substitute(getline("."),srcidpat,'\2','') " script name actually downloaded
" call Decho("srcidpat<".srcidpat."> latestsrcid<".latestsrcid."> sname<".sname.">")
silent q!
call delete(tmpfile)
" convert the strings-of-numbers into numbers
let srcid = srcid + 0
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
if latestsrcid > srcid
" call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."]: need to update <".sname.">")
let s:downloads= s:downloads + 1
if sname == bufname("%")
" GetLatestVimScript has to be careful about downloading itself
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.">"
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
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=')
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))
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)
let curdir = escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #")
let installdir= curdir."/Installed"
if !isdirectory(installdir)
call mkdir(installdir)
endif
" call Decho("exe cd ".fnameescape(s:autoinstall))
exe "cd ".fnameescape(s:autoinstall)
" decompress
if sname =~ '\.bz2$'
" call Decho("decompress: attempt to bunzip2 ".sname)
exe "silent !bunzip2 ".s:Escape(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)
let sname= substitute(sname,'\.gz$','','')
" call Decho("decompress: new sname<".sname."> after gunzip")
endif
" distribute archive(.zip, .tar, .vba) contents
if sname =~ '\.zip$'
" call Decho("dearchive: attempt to unzip ".sname)
exe "silent !unzip -o ".s:Escape(sname)
elseif sname =~ '\.tar$'
" call Decho("dearchive: attempt to untar ".sname)
exe "silent !tar -xvf ".s:Escape(sname)
elseif sname =~ '\.vba$'
" call Decho("dearchive: attempt to handle a vimball: ".sname)
silent 1split
exe "silent e ".fnameescape(sname)
silent so %
silent q
endif
if sname =~ '.vim$'
" call Decho("dearchive: attempt to simply move ".sname." to plugin")
exe "silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." plugin"
else
" call Decho("dearchive: move <".sname."> to installdir<".installdir.">")
exe "silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." ".installdir
endif
" helptags step
let docdir= substitute(&rtp,',.*','','e')."/doc"
" call Decho("helptags: docdir<".docdir.">")
exe "helptags ".fnameescape(docdir)
exe "cd ".fnameescape(curdir)
endif
if fname !~ ':AutoInstall:'
let modline=scriptid." ".latestsrcid." :AutoInstall: ".fname.cmmnt
else
let modline=scriptid." ".latestsrcid." ".fname.cmmnt
endif
else
let modline=scriptid." ".latestsrcid." ".fname.cmmnt
endif
" update the data in the <GetLatestVimScripts.dat> file
call setline(line("."),modline)
" call Decho("update data in ".expand("%")."#".line(".").": modline<".modline.">")
" else " Decho
" call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."], no need to update")
endif
" restore options
let &t_ti = t_ti
let &t_te = t_te
let &rs = rs
let @a = rega
" call Dredir("BUFFER TEST (GetOneScript)","ls!")
" call Dret("GetOneScript")
endfun
" ---------------------------------------------------------------------
" s:Escape: makes a string safe&suitable for the shell {{{2
fun! s:Escape(name)
" call Dfunc("s:Escape(name<".a:name.">)")
if exists("*shellescape")
" shellescape() was added by patch 7.0.111
let name= shellescape(a:name)
else
let name= g:getscript_shq . a:name . g:getscript_shq
endif
" call Dret("s:Escape ".name)
return name
endfun
" ---------------------------------------------------------------------
" Restore Options: {{{1
let &cpo= s:keepcpo
unlet s:keepcpo
" ---------------------------------------------------------------------
" Modelines: {{{1
" vim: ts=8 sts=2 fdm=marker nowrap

View File

@ -1,8 +1,8 @@
" Vim completion script
" Language: All languages, uses existing syntax highlighting rules
" Maintainer: David Fishburn <fishburn@ianywhere.com>
" Version: 3.0
" Last Change: Wed Nov 08 2006 10:46:46 AM
" Maintainer: David Fishburn <dfishburn.vim@gmail.com>
" Version: 4.0
" Last Change: Fri 26 Oct 2007 05:27:03 PM Eastern Daylight Time
" Usage: For detailed help, ":help ft-syntax-omni"
" Set completion with CTRL-X CTRL-O to autoloaded function.
@ -19,7 +19,7 @@ endif
if exists('g:loaded_syntax_completion')
finish
endif
let g:loaded_syntax_completion = 30
let g:loaded_syntax_completion = 40
" Set ignorecase to the ftplugin standard
" This is the default setting, but if you define a buffer local
@ -353,9 +353,11 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
else
let accept_chars = ','.&iskeyword.','
" Remove all character ranges
let accept_chars = substitute(accept_chars, ',[^,]\+-[^,]\+,', ',', 'g')
" let accept_chars = substitute(accept_chars, ',[^,]\+-[^,]\+,', ',', 'g')
let accept_chars = substitute(accept_chars, ',\@<=[^,]\+-[^,]\+,', '', 'g')
" Remove all numeric specifications
let accept_chars = substitute(accept_chars, ',\d\{-},', ',', 'g')
" let accept_chars = substitute(accept_chars, ',\d\{-},', ',', 'g')
let accept_chars = substitute(accept_chars, ',\@<=\d\{-},', '', 'g')
" Remove all commas
let accept_chars = substitute(accept_chars, ',', '', 'g')
" Escape special regex characters

View File

@ -1,10 +1,12 @@
" Vim completion script
" Language: XML
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2006 Jul 18
" Version: 1.8
" Last Change: 2006 Aug 15
" Version: 1.9
"
" Changelog:
" 1.9 - 2007 Aug 15
" - fix closing of namespaced tags (Johannes Weiss)
" 1.8 - 2006 Jul 18
" - allow for closing of xml tags even when data file isn't available
@ -413,12 +415,12 @@ function! xmlcomplete#GetLastOpenTag(unaryTagsStack)
if exists("b:xml_namespace")
if b:xml_namespace == 'DEFAULT'
let tagpat='</\=\(\k\|[.-]\)\+\|/>'
let tagpat='</\=\(\k\|[.:-]\)\+\|/>'
else
let tagpat='</\='.b:xml_namespace.':\(\k\|[.-]\)\+\|/>'
endif
else
let tagpat='</\=\(\k\|[.-]\)\+\|/>'
let tagpat='</\=\(\k\|[.:-]\)\+\|/>'
endif
while (linenum>0)
let line=getline(linenum)

View File

@ -65,4 +65,4 @@ CompilerSet errorformat=
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:
" vim: nowrap sw=2 sts=2 ts=8:

View File

@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 7.1. Last change: 2008 Jan 04
*cmdline.txt* For Vim version 7.2a. Last change: 2008 Jun 21
VIM REFERENCE MANUAL by Bram Moolenaar
@ -62,7 +62,7 @@ Notes:
old one is removed (to avoid repeated commands moving older commands out of
the history).
- Only commands that are typed are remembered. Ones that completely come from
mappings are not put in the history
mappings are not put in the history.
- All searches are put in the search history, including the ones that come
from commands like "*" and "#". But for a mapping, only the last search is
remembered (to avoid that long mappings trash the history).
@ -226,6 +226,8 @@ CTRL-J *c_CTRL-J* *c_<NL>* *c_<CR>*
<Esc> When typed and 'x' not present in 'cpoptions', quit
Command-line mode without executing. In macros or when 'x'
present in 'cpoptions', start entered command.
Note: If your <Esc> key is hard to hit on your keyboard, train
yourself to use CTRL-[.
*c_CTRL-C*
CTRL-C quit command-line without executing
@ -482,7 +484,7 @@ argument.
line. If you want to use '|' in an argument, precede it with '\'.
These commands see the '|' as their argument, and can therefore not be
followed by another command:
followed by another Vim command:
:argdo
:autocmd
:bufdo
@ -718,6 +720,9 @@ to insert special things while typing you can use the CTRL-R command. For
example, "%" stands for the current file name, while CTRL-R % inserts the
current file name right away. See |c_CTRL-R|.
Note: If you want to avoid the special characters in a Vim script you may want
to use |fnameescape()|.
In Ex commands, at places where a file name can be used, the following
characters have a special meaning. These can also be used in the expression
@ -893,10 +898,10 @@ Examples: (alternate file name is "?readme?")
:cd <cfile>* :cd {file name under cursor plus "*" and then expanded}
When the expanded argument contains a "!" and it is used for a shell command
(":!cmd", ":r !cmd" or ":w !cmd"), it is escaped with a backslash to avoid it
being expanded into a previously used command. When the 'shell' option
contains "sh", this is done twice, to avoid the shell trying to expand the
"!".
(":!cmd", ":r !cmd" or ":w !cmd"), the "!" is escaped with a backslash to
avoid it being expanded into a previously used command. When the 'shell'
option contains "sh", this is done twice, to avoid the shell trying to expand
the "!".
*filename-backslash*
For filesystems that use a backslash as directory separator (MS-DOS, Windows,

View File

@ -1,4 +1,4 @@
*debugger.txt* For Vim version 7.1. Last change: 2005 Mar 29
*debugger.txt* For Vim version 7.2a. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Gordon Prieur

View File

@ -1,4 +1,4 @@
*develop.txt* For Vim version 7.1. Last change: 2007 May 11
*develop.txt* For Vim version 7.2a. Last change: 2007 May 11
VIM REFERENCE MANUAL by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*digraph.txt* For Vim version 7.1. Last change: 2006 Jul 18
*digraph.txt* For Vim version 7.2a. Last change: 2007 Sep 10
VIM REFERENCE MANUAL by Bram Moolenaar
@ -130,10 +130,10 @@ a standard meaning:
Exclamation mark ! Grave
Apostrophe ' Acute accent
Greater-Than sign > Circumflex accent
Question Mark ? tilde
Question mark ? Tilde
Hyphen-Minus - Macron
Left parenthesis ( Breve
Full Stop . Dot Above
Full stop . Dot above
Colon : Diaeresis
Comma , Cedilla
Underline _ Underline

View File

@ -1,4 +1,4 @@
*editing.txt* For Vim version 7.1. Last change: 2007 May 11
*editing.txt* For Vim version 7.2a. Last change: 2008 Apr 29
VIM REFERENCE MANUAL by Bram Moolenaar
@ -364,6 +364,9 @@ all over again. The ":e" command is only useful if you have changed the
current file name.
*:filename* *{file}*
Besides the things mentioned here, more special items for where a filename is
expected are mentioned at |cmdline-special|.
Note for systems other than Unix and MS-DOS: When using a command that
accepts a single file name (like ":edit file") spaces in the file name are
allowed, but trailing spaces are ignored. This is useful on systems that
@ -888,8 +891,10 @@ Note: When the 'write' option is off, you are not able to write any file.
the previous command |:!|.
The default [range] for the ":w" command is the whole buffer (1,$). If you
write the whole buffer, it is no longer considered changed. Also when you
write it to a different file with ":w somefile"!
write the whole buffer, it is no longer considered changed. When you
write it to a different file with ":w somefile" it depends on the "+" flag in
'cpoptions'. When included, the write command will reset the 'modified' flag,
even though the buffer itself may still be different from its file.
If a file name is given with ":w" it becomes the alternate file. This can be
used, for example, when the write fails and you want to try again later with
@ -1105,6 +1110,8 @@ MULTIPLE WINDOWS AND BUFFERS *window-exit*
changed. See |:confirm|. {not in Vi}
:qa[ll]! Exit Vim. Any changes to buffers are lost. {not in Vi}
Also see |:cquit|, it does the same but exits with a non-zero
value.
*:quita* *:quitall*
:quita[ll][!] Same as ":qall". {not in Vi}
@ -1478,7 +1485,9 @@ There are three different types of searching:
supported by your operating system. '*' and '**' are handled inside Vim, so
they work on all operating systems.
The usage of '*' is quite simple: It matches 0 or more characters.
The usage of '*' is quite simple: It matches 0 or more characters. In a
search pattern this would be ".*". Note that the "." is not used for file
searching.
'**' is more sophisticated:
- It ONLY matches directories.
@ -1498,7 +1507,7 @@ There are three different types of searching:
levels.
The allowed number range is 0 ('**0' is removed) to 255.
If the given number is smaller than 0 it defaults to 30, if it's
bigger than 255 it defaults to 255.
bigger than 255 then 255 is used.
- '**' can only be at the end of the path or be followed by a path
separator or by a number and a path separator.

View File

@ -1,4 +1,4 @@
*gui_w16.txt* For Vim version 7.1. Last change: 2005 Mar 29
*gui_w16.txt* For Vim version 7.2a. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*gui_w32.txt* For Vim version 7.1. Last change: 2007 Aug 14
*gui_w32.txt* For Vim version 7.2a. Last change: 2007 Aug 30
VIM REFERENCE MANUAL by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*if_mzsch.txt* For Vim version 7.1. Last change: 2007 May 03
*if_mzsch.txt* For Vim version 7.2a. Last change: 2007 May 03
VIM REFERENCE MANUAL by Sergey Khorev

View File

@ -1,4 +1,4 @@
*if_ole.txt* For Vim version 7.1. Last change: 2007 May 10
*if_ole.txt* For Vim version 7.2a. Last change: 2007 May 10
VIM REFERENCE MANUAL by Paul Moore

View File

@ -1,4 +1,4 @@
*if_perl.txt* For Vim version 7.1. Last change: 2006 Mar 06
*if_perl.txt* For Vim version 7.2a. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Sven Verdoolaege

View File

@ -1,4 +1,4 @@
*if_pyth.txt* For Vim version 7.1. Last change: 2006 Apr 30
*if_pyth.txt* For Vim version 7.2a. Last change: 2006 Apr 30
VIM REFERENCE MANUAL by Paul Moore

View File

@ -1,4 +1,4 @@
*indent.txt* For Vim version 7.1. Last change: 2007 May 11
*indent.txt* For Vim version 7.2a. Last change: 2008 Jun 21
VIM REFERENCE MANUAL by Bram Moolenaar
@ -6,22 +6,27 @@
This file is about indenting C programs and other files.
1. Indenting C programs |C-indenting|
1. Indenting C style programs |C-indenting|
2. Indenting by expression |indent-expression|
==============================================================================
1. Indenting C programs *C-indenting*
1. Indenting C style programs *C-indenting*
The basics for C indenting are explained in section |30.2| of the user manual.
The basics for C style indenting are explained in section |30.2| of the user
manual.
Vim has options for automatically indenting C program files. These options
affect only the indent and do not perform other formatting. For comment
formatting, see |format-comments|.
Vim has options for automatically indenting C style program files. Many
programming languages including Java and C++ follow very closely the
formatting conventions established with C. These options affect only the
indent and do not perform other formatting. There are additional options that
affect other kinds of formatting as well as indenting, see |format-comments|,
|fo-table|, |gq| and |formatting| for the main ones.
Note that this will not work when the |+smartindent| or |+cindent| features
have been disabled at compile time.
There are in fact four methods available for indentation:
There are in fact four main methods available for indentation, each one
overrides the previous if it is enabled, or non-empty for 'indentexpr':
'autoindent' uses the indent from the previous line.
'smartindent' is like 'autoindent' but also recognizes some C syntax to
increase/reduce the indent where appropriate.
@ -572,6 +577,115 @@ In addition, you can turn the verbose mode for debug issue: >
Make sure to do ":set cmdheight=2" first to allow the display of the message.
VHDL *ft-vhdl-indent*
Alignment of generic/port mapping statements are performed by default. This
causes the following alignment example: >
ENTITY sync IS
PORT (
clk : IN STD_LOGIC;
reset_n : IN STD_LOGIC;
data_input : IN STD_LOGIC;
data_out : OUT STD_LOGIC
);
END ENTITY sync;
To turn this off, add >
let g:vhdl_indent_genportmap = 0
to the .vimrc file, which causes the previous alignment example to change: >
ENTITY sync IS
PORT (
clk : IN STD_LOGIC;
reset_n : IN STD_LOGIC;
data_input : IN STD_LOGIC;
data_out : OUT STD_LOGIC
);
END ENTITY sync;
----------------------------------------
Alignment of right-hand side assignment "<=" statements are performed by
default. This causes the following alignment example: >
sig_out <= (bus_a(1) AND
(sig_b OR sig_c)) OR
(bus_a(0) AND sig_d);
To turn this off, add >
let g:vhdl_indent_rhsassign = 0
to the .vimrc file, which causes the previous alignment example to change: >
sig_out <= (bus_a(1) AND
(sig_b OR sig_c)) OR
(bus_a(0) AND sig_d);
----------------------------------------
Full-line comments (lines that begin with "--") are indented to be aligned with
the very previous line's comment, PROVIDED that a whitespace follows after
"--".
For example: >
sig_a <= sig_b; -- start of a comment
-- continuation of the comment
-- more of the same comment
While in Insert mode, after typing "-- " (note the space " "), hitting CTRL-F
will align the current "-- " with the previous line's "--".
If the very previous line does not contain "--", THEN the full-line comment
will be aligned with the start of the next non-blank line that is NOT a
full-line comment.
Indenting the following code: >
sig_c <= sig_d; -- comment 0
-- comment 1
-- comment 2
--debug_code:
--PROCESS(debug_in)
--BEGIN
-- FOR i IN 15 DOWNTO 0 LOOP
-- debug_out(8*i+7 DOWNTO 8*i) <= debug_in(15-i);
-- END LOOP;
--END PROCESS debug_code;
-- comment 3
sig_e <= sig_f; -- comment 4
-- comment 5
results in: >
sig_c <= sig_d; -- comment 0
-- comment 1
-- comment 2
--debug_code:
--PROCESS(debug_in)
--BEGIN
-- FOR i IN 15 DOWNTO 0 LOOP
-- debug_out(8*i+7 DOWNTO 8*i) <= debug_in(15-i);
-- END LOOP;
--END PROCESS debug_code;
-- comment 3
sig_e <= sig_f; -- comment 4
-- comment 5
Notice that "--debug_code:" does not align with "-- comment 2"
because there is no whitespace that follows after "--" in "--debug_code:".
Given the dynamic nature of indenting comments, indenting should be done TWICE.
On the first pass, code will be indented. On the second pass, full-line
comments will be indented according to the correctly indented code.
VIM *ft-vim-indent*
For indenting Vim scripts there is one variable that specifies the amount of

View File

@ -1,4 +1,4 @@
*insert.txt* For Vim version 7.1. Last change: 2007 May 07
*insert.txt* For Vim version 7.2a. Last change: 2008 Jun 21
VIM REFERENCE MANUAL by Bram Moolenaar
@ -882,12 +882,12 @@ a Vim script.
CTRL-X CTRL-V Guess what kind of item is in front of the cursor and
find the first match for it.
Note: When CTRL-V is mapped you can often use CTRL-Q
instead |i_CTRL-Q|.
instead of |i_CTRL-Q|.
CTRL-V or
CTRL-N Search forwards for next match. This match replaces
the previous one.
CTRL-P Search backward for previous match. This match
CTRL-P Search backwards for previous match. This match
replaces the previous one.
CTRL-X CTRL-V Further use of CTRL-X CTRL-V will do the same as

View File

@ -1,23 +1,28 @@
*netbeans.txt* For Vim version 7.1. Last change: 2006 Nov 14
*netbeans.txt* For Vim version 7.2a. Last change: 2008 Jun 22
VIM REFERENCE MANUAL by Gordon Prieur
VIM REFERENCE MANUAL by Gordon Prieur et al.
NetBeans ExternalEditor Integration Features *netbeans*
*netbeans-support*
*socket-interface* *netbeans* *netbeans-support*
Vim NetBeans Protocol: a socket interface for Vim integration into an IDE.
1. Introduction |netbeans-intro|
2. NetBeans Key Bindings |netbeans-keybindings|
2. Integration features |netbeans-integration|
3. Configuring Vim for NetBeans |netbeans-configure|
4. Downloading NetBeans |netbeans-download|
5. Preparing NetBeans for Vim |netbeans-preparation|
6. Obtaining the External Editor Module |obtaining-exted|
7. Setting up NetBeans to run with Vim |netbeans-setup|
8. Messages |netbeans-messages|
9. Running Vim from NetBeans |netbeans-run|
10. NetBeans protocol |netbeans-protocol|
11. NetBeans commands |netbeans-commands|
12. Known problems |netbeans-problems|
4. Error Messages |netbeans-messages|
5. Running Vim in NetBeans mode |netbeans-run|
6. NetBeans protocol |netbeans-protocol|
7. NetBeans key |netbeans-key|
8. Known problems |netbeans-problems|
9. Debugging NetBeans protocol |netbeans-debugging|
10. NetBeans External Editor
10.1. Downloading NetBeans |netbeans-download|
10.2. NetBeans Key Bindings |netbeans-keybindings|
10.3. Preparing NetBeans for Vim |netbeans-preparation|
10.4. Obtaining the External Editor Module |obtaining-exted|
10.5. Setting up NetBeans to run with Vim |netbeans-setup|
{Vi does not have any of these features}
{only available when compiled with the |+netbeans_intg| feature}
@ -25,13 +30,47 @@ NetBeans ExternalEditor Integration Features *netbeans*
==============================================================================
1. Introduction *netbeans-intro*
The NetBeans interface was initially developed to integrate Vim into the
NetBeans Java IDE, using the external editor plugin. This NetBeans plugin no
longer exists for recent versions of NetBeans but the protocol was developed
in such a way that any IDE can use it to integrate Vim.
The NetBeans protocol of Vim is a text based communication protocol, over a
classical TCP socket. There is no dependency on Java or NetBeans. Any language
or environment providing a socket interface can control Vim using this
protocol. There are existing implementations in C, C++, Python and Java. The
name NetBeans is kept today for historical reasons.
Current projects using the NetBeans protocol of Vim are:
- VimIntegration, description of various projects doing Vim Integration:
http://www.freehackers.org/VimIntegration
- Agide, an IDE for the AAP project, written in Python:
http://www.a-a-p.org
- Clewn, a gdb integration into Vim, written in C:
http://clewn.sourceforge.net/
- VimPlugin, integration of Vim inside Eclipse:
http://vimplugin.sourceforge.net/wiki/pmwiki.php
- PIDA, IDE written in Python integrating Vim:
http://pida.co.uk/
- VimWrapper, library to easy Vim integration into IDE:
http://www.freehackers.org/VimWrapper
Check the specific project pages to see how to use Vim with these projects.
In the rest of this help page, we will use the term "Vim Controller" to
describe the program controlling Vim through the NetBeans socket interface.
About the NetBeans IDE ~
NetBeans is an open source Integrated Development Environment developed
jointly by Sun Microsystems, Inc. and the netbeans.org developer community.
Initially just a Java IDE, NetBeans has had C, C++, and Fortran support added
in recent releases.
For more information visit the main NetBeans web site http://www.netbeans.org
or the NetBeans External Editor site at http://externaleditor.netbeans.org.
For more information visit the main NetBeans web site http://www.netbeans.org.
The External Editor is now, unfortunately, declared Obsolte. See
http://externaleditor.netbeans.org.
Sun Microsystems, Inc. also ships NetBeans under the name Sun ONE Studio.
Visit http://www.sun.com for more information regarding the Sun ONE Studio
@ -41,37 +80,32 @@ Current releases of NetBeans provide full support for Java and limited support
for C, C++, and Fortran. Current releases of Sun ONE Studio provide full
support for Java, C, C++, and Fortran.
The interface to NetBeans is also supported by Agide, the A-A-P GUI IDE.
Agide is very different from NetBeans:
- Based on Python instead of Java, much smaller footprint and fast startup.
- Agide is a framework in which many different tools can work together.
See the A-A-P website for information: http://www.A-A-P.org.
==============================================================================
2. NetBeans Key Bindings *netbeans-keybindings*
2. Integration features *netbeans-integration*
Vim understands a number of key bindings that execute NetBeans commands.
These are typically all the Function key combinations. To execute a NetBeans
command, the user must press the Pause key followed by a NetBeans key binding.
For example, in order to compile a Java file, the NetBeans key binding is
"F9". So, while in vim, press "Pause F9" to compile a java file. To toggle a
breakpoint at the current line, press "Pause Shift F8".
The NetBeans socket interface of Vim allows to get information from Vim or to
ask Vim to perform specific actions:
- get information about buffer: buffer name, cursor position, buffer content,
etc.
- be notified when buffers are open or closed
- be notified of how the buffer content is modified
- load and save files
- modify the buffer content
- installing special key bindings
- raise the window, control the window geometry
The Pause key is Function key 21. If you don't have a working Pause key and
want to use F8 instead, use: >
For sending key strokes to Vim or for evaluating functions in Vim, you must
use the |clientserver| interface.
:map <F8> <F21>
The External Editor module dynamically reads the NetBeans key bindings so vim
should always have the latest key bindings, even when NetBeans changes them.
==============================================================================
3. Configuring Vim for NetBeans *netbeans-configure*
For more help installing vim, please read |usr_90.txt| in the Vim User Manual.
For more help installing Vim, please read |usr_90.txt| in the Vim User Manual.
On Unix
On Unix:
--------
When running configure without arguments the NetBeans interface should be
included. That is, if the configure check to find out if your system supports
@ -80,15 +114,16 @@ the required features succeeds.
In case you do not want the NetBeans interface you can disable it by
uncommenting a line with "--disable-netbeans" in the Makefile.
Currently, only gvim is supported in this integration as NetBeans does not
have means to supply a terminal emulator for the vim command. Furthermore,
Currently, only GVim is supported in this integration as NetBeans does not
have means to supply a terminal emulator for the Vim command. Furthermore,
there is only GUI support for GTK, GNOME, and Motif.
If Motif support is required the user must supply XPM libraries. See
|workshop-xpm| for details on obtaining the latest version of XPM.
On MS-Windows
On MS-Windows:
--------------
The Win32 support is now in beta stage.
@ -96,121 +131,56 @@ To use XPM signs on Win32 (e.g. when using with NetBeans) you can compile
XPM by yourself or use precompiled libraries from http://iamphet.nm.ru/misc/
(for MS Visual C++) or http://gnuwin32.sourceforge.net (for MinGW).
==============================================================================
4. Downloading NetBeans *netbeans-download*
Enable debugging:
-----------------
The NetBeans IDE is available for download from netbeans.org. You can download
a released version, download sources, or use CVS to download the current
source tree. If you choose to download sources, follow directions from
netbeans.org on building NetBeans.
Depending on the version of NetBeans you download, you may need to do further
work to get the required External Editor module. This is the module which lets
NetBeans work with gvim (or xemacs :-). See http://externaleditor.netbeans.org
for details on downloading this module if your NetBeans release does not have
it.
For C, C++, and Fortran support you will also need the cpp module. See
http://cpp.netbeans.org for information regarding this module.
You can also download Sun ONE Studio from Sun Microsystems, Inc for a 30 day
free trial. See http://www.sun.com for further details.
To enable debugging of Vim and of the NetBeans protocol, the "NBDEBUG" macro
needs to be defined. Search in the Makefile of the platform you are using for
"NBDEBUG" to see what line needs to be uncommented. This effectively adds
"-DNBDEBUG" to the compile command. Also see |netbeans-debugging|
==============================================================================
5. Preparing NetBeans for Vim *netbeans-preparation*
4. Error Messages *netbeans-messages*
In order for NetBeans to work with vim, the NetBeans External Editor module
must be loaded and enabled. If you have a Sun ONE Studio Enterprise Edition
then this module should be loaded and enabled. If you have a NetBeans release
you may need to find another way of obtaining this open source module.
You can check if you have this module by opening the Tools->Options dialog
and drilling down to the "Modules" list (IDE Configuration->System->Modules).
If your Modules list has an entry for "External Editor" you must make sure
it is enabled (the "Enabled" property should have the value "True"). If your
Modules list has no External Editor see the next section on |obtaining-exted|.
==============================================================================
6. Obtaining the External Editor Module *obtaining-exted*
There are 2 ways of obtaining the External Editor module. The easiest way
is to use the NetBeans Update Center to download and install the module.
Unfortunately, some versions do not have this module in their update
center. If you cannot download via the update center you will need to
download sources and build the module. I will try and get the module
available from the NetBeans Update Center so building will be unnecessary.
Also check http://externaleditor.netbeans.org for other availability options.
To download the External Editor sources via CVS and build your own module,
see http://externaleditor.netbeans.org and http://www.netbeans.org.
Unfortunately, this is not a trivial procedure.
==============================================================================
7. Setting up NetBeans to run with Vim *netbeans-setup*
Assuming you have loaded and enabled the NetBeans External Editor module
as described in |netbeans-preparation| all you need to do is verify that
the gvim command line is properly configured for your environment.
Open the Tools->Options dialog and open the Editing category. Select the
External Editor. The right hand pane should contain a Properties tab and
an Expert tab. In the Properties tab make sure the "Editor Type" is set
to "Vim". In the Expert tab make sure the "Vim Command" is correct.
You should be careful if you change the "Vim Command". There are command
line options there which must be there for the connection to be properly
set up. You can change the command name but that's about it. If your gvim
can be found by your $PATH then the VIM Command can start with "gvim". If
you don't want gvim searched from your $PATH then hard code in the full
Unix path name. At this point you should get a gvim for any source file
you open in NetBeans.
If some files come up in gvim and others (with different file suffixes) come
up in the default NetBeans editor you should verify the MIME type in the
Expert tab MIME Type property. NetBeans is MIME oriented and the External
Editor will only open MIME types specified in this property.
==============================================================================
8. Messages *netbeans-messages*
These messages are specific for NetBeans:
These error messages are specific to NetBeans socket protocol:
*E463*
Region is guarded, cannot modify
NetBeans defines guarded areas in the text, which you cannot
change.
Also sets the current buffer, if necessary.
The Vim Controller has defined guarded areas in the text,
which you cannot change. Also sets the current buffer, if
necessary.
*E656*
NetBeans disallows writes of unmodified buffers
NetBeans does not support writes of unmodified buffers that
were opened from NetBeans.
Writes of unmodified buffers forbidden
Writes of unmodified buffers that were opened from the
Vim Controller are not possible.
*E657*
Partial writes disallowed for NetBeans buffers
NetBeans does not support partial writes for buffers that were
opened from NetBeans.
Partial writes disallowed
Partial writes for buffers that were opened from the
Vim Controller are not allowed.
*E658*
NetBeans connection lost for this buffer
NetBeans has become confused about the state of this file.
Rather than risk data corruption, NetBeans has severed the
connection for this file. Vim will take over responsibility
for saving changes to this file and NetBeans will no longer
know of these changes.
Connection lost for this buffer
The Vim Controller has become confused about the state of
this file. Rather than risk data corruption, it has severed
the connection for this file. Vim will take over
responsibility for saving changes to this file and the
Vim Controller will no longer know of these changes.
*E744*
NetBeans does not allow changes in read-only files
Read-only file
Vim normally allows changes to a read-only file and only
enforces the read-only rule if you try to write the file.
However, NetBeans does not let you make changes to a file
which is read-only and becomes confused if vim does this.
So vim does not allow modifications to files when run with
NetBeans.
==============================================================================
9. Running Vim from NetBeans *netbeans-run*
which is read-only and becomes confused if Vim does this.
So Vim does not allow modifications to files when run
in NetBeans mode.
NetBeans starts Vim with the |-nb| argument. Three forms can be used, that
==============================================================================
5. Running Vim in NetBeans mode *netbeans-run*
Vim must be started with the |-nb| argument. Three forms can be used, that
differ in the way the information for the connection is specified:
-nb={fname} from a file
@ -231,23 +201,29 @@ lines, in any order:
Other lines are ignored. The caller of Vim is responsible for deleting the
file afterwards.
{hostname} is the name of the machine where NetBeans is running. When omitted
the environment variable "__NETBEANS_HOST" is used or the default "localhost".
{hostname} is the name of the machine where Vim Controller is running. When
omitted the environment variable "__NETBEANS_HOST" is used or the default
"localhost".
{addr} is the port number for NetBeans. When omitted the environment variable
"__NETBEANS_SOCKET" is used or the default 3219.
{addr} is the port number for the NetBeans interface. When omitted the
environment variable "__NETBEANS_SOCKET" is used or the default 3219.
{password} is the password for connecting to NetBeans. When omitted the
environment variable "__NETBEANS_VIM_PASSWORD" is used or "changeme".
==============================================================================
10. NetBeans protocol *netbeans-protocol*
Vim will initiate a socket connection (client side) to the specified host and
port upon startup. The password will be sent with the AUTH event when the
connection has been established.
The communication between NetBeans and Vim uses plain text messages. This
protocol was first designed to work with the external editor module of
NetBeans (see http://externaleditor.netbeans.org). Later it was extended to
work with Agide (A-A-P GUI IDE, see http://www.a-a-p.org). The extensions are
marked with "version 2.1".
==============================================================================
6. NetBeans protocol *netbeans-protocol*
The communication between the Vim Controller and Vim uses plain text
messages. This protocol was first designed to work with the external editor
module of NetBeans. Later it was extended to work with Agide (A-A-P GUI IDE,
see http://www.a-a-p.org) and then with other IDE. The extensions are marked
with "version 2.1".
Version 2.2 of the protocol has several minor changes which should only affect
NetBeans users (ie, not Agide users). However, a bug was fixed which could
@ -266,26 +242,16 @@ The messages are currently sent over a socket. Since the messages are in
plain UTF-8 text this protocol could also be used with any other communication
mechanism.
To see an example implementation look at the gvim tool in Agide. Currently
found here:
http://cvs.sf.net/viewcvs.py/a-a-p/Agide/Tools/GvimTool.py?view=markup
6.1 Kinds of messages |nb-messages|
6.2 Terms |nb-terms|
6.3 Commands |nb-commands|
6.4 Functions and Replies |nb-functions|
6.5 Events |nb-events|
6.6 Special messages |nb-special|
6.7 Protocol errors |nb-protocol_errors|
10.1 Kinds of messages |nb-messages|
10.2 Terms |nb-terms|
10.3 Commands |nb-commands|
10.4 Functions and Replies |nb-functions|
10.5 Events |nb-events|
10.6 Special messages |nb-special|
*E627* *E628* *E629* *E630* *E631* *E632* *E633* *E634* *E635* *E636*
*E637* *E638* *E639* *E640* *E641* *E642* *E643* *E644* *E645* *E646*
*E647* *E648* *E649* *E650* *E651* *E652* *E653* *E654*
These errors occur when a message violates the protocol.
10.1 Kinds of messages *nb-messages*
6.1 Kinds of messages *nb-messages*
There are four kinds of messages:
@ -303,10 +269,11 @@ kind first item example ~
Command bufID:name!seqno 11:showBalloon!123 "text"
Function bufID:name/seqno 11:getLength/123
Reply seqno 123 5000
Event bufID:name=123 11:keyCommand=123 "S-F2"
Event bufID:name=seqno 11:keyCommand=123 "S-F2"
10.2 Terms *nb-terms*
6.2 Terms *nb-terms*
bufID Buffer number. A message may be either for a specific buffer
or generic. Generic messages use a bufID of zero. NOTE: this
@ -353,7 +320,7 @@ lnum/col Argument with a line number and column number position. The
pathname String argument: file name with full path.
10.3 Commands *nb-commands*
6.3 Commands *nb-commands*
actionMenuItem Not implemented.
@ -381,8 +348,8 @@ close Close the buffer. This leaves us without current buffer, very
create Creates a buffer without a name. Replaces the current buffer
(it's hidden when it was changed).
NetBeans uses this as the first command for a file that is
being opened. The sequence of commands could be:
The Vim Controller should use this as the first command for a
file that is being opened. The sequence of commands could be:
create
setCaretListener (ignored)
setModified (no effect)
@ -413,9 +380,14 @@ defineAnnoType typeNum typeName tooltip glyphFile fg bg
editFile pathname
Set the name for the buffer and edit the file "pathname", a
string argument.
Normal way for the IDE to tell the editor to edit a file. If
the IDE is going to pass the file text to the editor use these
commands instead:
Normal way for the IDE to tell the editor to edit a file.
You must set a bufId different of 0 with this command to
assign a bufId to the buffer. It will trigger an event
fileOpened with a bufId of 0 but the buffer has been assigned.
If the IDE is going to pass the file text to the editor use
these commands instead:
setFullName
insert
initDone
@ -437,10 +409,10 @@ initDone Mark the buffer as ready for use. Implicitly makes the buffer
the current buffer. Fires the BufReadPost autocommand event.
insertDone
Sent by NetBeans to tell vim an initial file insert is done.
This triggers a read message being printed. Prior to version
2.3, no read messages were displayed after opening a file.
New in version 2.3.
Sent by Vim Controller to tell Vim an initial file insert is
done. This triggers a read message being printed. Prior to
version 2.3, no read messages were displayed after opening a
file. New in version 2.3.
moveAnnoToFront serNum
Not implemented.
@ -476,9 +448,9 @@ save Save the buffer when it was modified. The other side of the
New in version 2.2.
saveDone
Sent by NetBeans to tell vim a save is done. This triggers
a save message being printed. Prior to version 2.3, no save
messages were displayed after a save.
Sent by Vim Controller to tell Vim a save is done. This
triggers a save message being printed. Prior to version 2.3,
no save messages were displayed after a save.
New in version 2.3.
setAsUser Not implemented.
@ -525,19 +497,20 @@ setModified modified
modified, when it is "F" mark it as unmodified.
setModtime time
Update a buffers modification time after NetBeans saves the
file.
Update a buffers modification time after the file has been
saved directly by the Vim Controller.
New in version 2.3.
setReadOnly
Passed by NetBeans to tell vim a file is readonly.
Implemented in verion 2.3.
Set a file as readonly
Implemented in version 2.3.
setStyle Not implemented.
setTitle name
Set the title for the buffer to "name", a string argument.
The title is only used for NetBeans functions, not by Vim.
The title is only used for the Vim Controller functions, not
by Vim.
setVisible visible
When the boolean argument "visible" is "T", goto the buffer.
@ -551,8 +524,8 @@ showBalloon text
specialKeys
Map a set of keys (mostly function keys) to be passed back
to NetBeans for processing. This lets NetBeans hotkeys be
used from vim.
to the Vim Controller for processing. This lets regular IDE
hotkeys be used from Vim.
Implemented in version 2.3.
startAtomic Begin an atomic operation. The screen will not be updated
@ -583,7 +556,7 @@ unguard off len
version Not implemented.
10.4 Functions and Replies *nb-functions*
6.4 Functions and Replies *nb-functions*
getDot Not implemented.
@ -630,7 +603,7 @@ getText Return the contents of the buffer as a string.
insert off text
Insert "text" before position "off". "text" is a string
argument, "off" a number.
"off" should have a "\n" (newline) at the end of each line.
"text" should have a "\n" (newline) at the end of each line.
Or "\r\n" when 'fileformat' is "dos". When using "insert" in
an empty buffer Vim will set 'fileformat' accordingly.
When "off" points to the start of a line the text is inserted
@ -665,7 +638,7 @@ saveAndExit Perform the equivalent of closing Vim: ":confirm qall".
New in version 2.1.
10.5 Events *nb-events*
6.5 Events *nb-events*
balloonEval off len type
The mouse pointer rests on text for a short while. When "len"
@ -685,15 +658,15 @@ balloonText text
buttonRelease button lnum col
Report which button was pressed and the location of the cursor
at the time of the release. Only for buffers that are owned
by NetBeans. This event is not sent if the button was
released while the mouse was in the status line or in a
by the Vim Controller. This event is not sent if the button
was released while the mouse was in the status line or in a
separator line. If col is less than 1 the button release was
in the sign area.
New in version 2.2.
disconnect
Tell NetBeans that vim is exiting and not to try and read or
write more commands.
Tell the Vim Controller that Vim is exiting and not to try and
read or write more commands.
New in version 2.3.
fileClosed Not implemented.
@ -776,10 +749,10 @@ unmodified The buffer is now unmodified.
Only fired when enabled, see "startDocumentListen".
version vers Report the version of the interface implementation. Vim
reports "2.2" (including the quotes).
reports "2.4" (including the quotes).
10.6 Special messages *nb-special*
6.6 Special messages *nb-special*
These messages do not follow the style of the messages above. They are
terminated by a newline character.
@ -801,22 +774,164 @@ DETACH IDE -> editor: break the connection without exiting the
REJECT Not used.
6.7 Protocol errors *nb-protocol_errors*
These errors occur when a message violates the protocol:
*E627* *E628* *E629* *E630* *E631* *E632* *E633* *E634* *E635* *E636*
*E637* *E638* *E639* *E640* *E641* *E642* *E643* *E644* *E645* *E646*
*E647* *E648* *E649* *E650* *E651* *E652* *E653* *E654*
==============================================================================
11. NetBeans Commands *netbeans-commands*
7. NetBeans key *netbeans-key*
*:nbkey*
:nbkey key Pass the key to NetBeans for processing
:nbkey key Pass the key to the Vim Controller for processing
When a hot-key has been installed with the specialKeys command, this command
can be used to generate a hotkey messages to the Vim Controller. The events
newDotAndMark, keyCommand and keyAtPos are generated (in this order).
Pass the key to NetBeans for hot-key processing. You should not need to use
this command directly. However, NetBeans passes a list of hot-keys to Vim at
startup and when one of these keys is pressed, this command is generated to
send the key press back to NetBeans.
==============================================================================
12. Known problems *netbeans-problems*
8. Known problems *netbeans-problems*
NUL bytes are not possible. For editor -> IDE they will appear as NL
characters. For IDE -> editor they cannot be inserted.
==============================================================================
9. Debugging NetBeans protocol *netbeans-debugging*
To debug the Vim protocol, you must first compile Vim with debugging support
and NetBeans debugging support. See |netbeans-configure| for instructions
about Vim compiling and how to enable debug support.
When running Vim, set the following environment variables:
export SPRO_GVIM_DEBUG=netbeans.log
export SPRO_GVIM_DLEVEL=0xffffffff
Vim will then log all the incoming and outgoing messages of the NetBeans
protocol to the file netbeans.log .
The content of netbeans.log after a session looks like this:
Tue May 20 17:19:27 2008
EVT: 0:startupDone=0
CMD 1: (1) create
CMD 2: (1) setTitle "testfile1.txt"
CMD 3: (1) setFullName "testfile1.txt"
EVT(suppressed): 1:remove=3 0 -1
EVT: 1:fileOpened=0 "d:\\work\\vimWrapper\\vimWrapper2\\pyvimwrapper\\tests\\testfile1.txt" T F
CMD 4: (1) initDone
FUN 5: (0) getCursor
REP 5: 1 1 0 0
CMD 6: (2) create
CMD 7: (2) setTitle "testfile2.txt"
CMD 8: (2) setFullName "testfile2.txt"
EVT(suppressed): 2:remove=8 0 -1
EVT: 2:fileOpened=0 "d:\\work\\vimWrapper\\vimWrapper2\\pyvimwrapper\\tests\\testfile2.txt" T F
CMD 9: (2) initDone
==============================================================================
10. NetBeans External Editor
NOTE: This information is obsolete! Only relevant if you are using an old
version of NetBeans.
10.1. Downloading NetBeans *netbeans-download*
The NetBeans IDE is available for download from netbeans.org. You can download
a released version, download sources, or use CVS to download the current
source tree. If you choose to download sources, follow directions from
netbeans.org on building NetBeans.
Depending on the version of NetBeans you download, you may need to do further
work to get the required External Editor module. This is the module which lets
NetBeans work with gvim (or xemacs :-). See http://externaleditor.netbeans.org
for details on downloading this module if your NetBeans release does not have
it.
For C, C++, and Fortran support you will also need the cpp module. See
http://cpp.netbeans.org for information regarding this module.
You can also download Sun ONE Studio from Sun Microsystems, Inc for a 30 day
free trial. See http://www.sun.com for further details.
10.2. NetBeans Key Bindings *netbeans-keybindings*
Vim understands a number of key bindings that execute NetBeans commands.
These are typically all the Function key combinations. To execute a NetBeans
command, the user must press the Pause key followed by a NetBeans key binding.
For example, in order to compile a Java file, the NetBeans key binding is
"F9". So, while in vim, press "Pause F9" to compile a java file. To toggle a
breakpoint at the current line, press "Pause Shift F8".
The Pause key is Function key 21. If you don't have a working Pause key and
want to use F8 instead, use: >
:map <F8> <F21>
The External Editor module dynamically reads the NetBeans key bindings so vim
should always have the latest key bindings, even when NetBeans changes them.
10.3. Preparing NetBeans for Vim *netbeans-preparation*
In order for NetBeans to work with vim, the NetBeans External Editor module
must be loaded and enabled. If you have a Sun ONE Studio Enterprise Edition
then this module should be loaded and enabled. If you have a NetBeans release
you may need to find another way of obtaining this open source module.
You can check if you have this module by opening the Tools->Options dialog
and drilling down to the "Modules" list (IDE Configuration->System->Modules).
If your Modules list has an entry for "External Editor" you must make sure
it is enabled (the "Enabled" property should have the value "True"). If your
Modules list has no External Editor see the next section on |obtaining-exted|.
10.4. Obtaining the External Editor Module *obtaining-exted*
There are 2 ways of obtaining the External Editor module. The easiest way
is to use the NetBeans Update Center to download and install the module.
Unfortunately, some versions do not have this module in their update
center. If you cannot download via the update center you will need to
download sources and build the module. I will try and get the module
available from the NetBeans Update Center so building will be unnecessary.
Also check http://externaleditor.netbeans.org for other availability options.
To download the External Editor sources via CVS and build your own module,
see http://externaleditor.netbeans.org and http://www.netbeans.org.
Unfortunately, this is not a trivial procedure.
10.5. Setting up NetBeans to run with Vim *netbeans-setup*
Assuming you have loaded and enabled the NetBeans External Editor module
as described in |netbeans-preparation| all you need to do is verify that
the gvim command line is properly configured for your environment.
Open the Tools->Options dialog and open the Editing category. Select the
External Editor. The right hand pane should contain a Properties tab and
an Expert tab. In the Properties tab make sure the "Editor Type" is set
to "Vim". In the Expert tab make sure the "Vim Command" is correct.
You should be careful if you change the "Vim Command". There are command
line options there which must be there for the connection to be properly
set up. You can change the command name but that's about it. If your gvim
can be found by your $PATH then the VIM Command can start with "gvim". If
you don't want gvim searched from your $PATH then hard code in the full
Unix path name. At this point you should get a gvim for any source file
you open in NetBeans.
If some files come up in gvim and others (with different file suffixes) come
up in the default NetBeans editor you should verify the MIME type in the
Expert tab MIME Type property. NetBeans is MIME oriented and the External
Editor will only open MIME types specified in this property.
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*os_beos.txt* For Vim version 7.1. Last change: 2005 Mar 29
*os_beos.txt* For Vim version 7.2a. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*os_risc.txt* For Vim version 7.1. Last change: 2005 Mar 29
*os_risc.txt* For Vim version 7.2a. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Thomas Leonard

View File

@ -1,4 +1,4 @@
*os_unix.txt* For Vim version 7.1. Last change: 2005 Mar 29
*os_unix.txt* For Vim version 7.2a. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*pattern.txt* For Vim version 7.1. Last change: 2007 May 11
*pattern.txt* For Vim version 7.2a. Last change: 2008 Jun 21
VIM REFERENCE MANUAL by Bram Moolenaar
@ -138,6 +138,7 @@ CTRL-C Interrupt current (search) command. Use CTRL-Break on
This command doesn't work in an autocommand, because
the highlighting state is saved and restored when
executing autocommands |autocmd-searchpat|.
Same thing for when invoking a user function.
While typing the search pattern the current match will be shown if the
'incsearch' option is on. Remember that you still have to finish the search
@ -497,8 +498,8 @@ Character classes {not in Vi}: */character-classes*
|/[]| [] \[] any character specified inside the []
|/\%[]| \%[] \%[] a sequence of optionally matched atoms
|/\c| \c \c ignore case
|/\C| \C \C match case
|/\c| \c \c ignore case, do not use the 'ignorecase' option
|/\C| \C \C match case, do not use the 'ignorecase' option
|/\m| \m \m 'magic' on for the following chars in the pattern
|/\M| \M \M 'magic' off for the following chars in the pattern
|/\v| \v \v the following chars in the pattern are "very magic"
@ -596,9 +597,9 @@ overview.
Example matches ~
ab\{2,3}c "abbc" or "abbbc"
a\{5} "aaaaa".
ab\{2,}c "abbc", "abbbc", "abbbbc", etc
ab\{,3}c "ac", "abc", "abbc" or "abbbc".
a\{5} "aaaaa"
ab\{2,}c "abbc", "abbbc", "abbbbc", etc.
ab\{,3}c "ac", "abc", "abbc" or "abbbc"
a[bc]\{3}d "abbbd", "abbcd", "acbcd", "acccd", etc.
a\(bc\)\{1,2}d "abcd" or "abcbcd"
a[bc]\{-}[cd] "abc" in "abcd"
@ -681,11 +682,11 @@ overview.
for a match).
Example matches ~
\(foo\)\@<!bar any "bar" that's not in "foobar"
\(\/\/.*\)\@\<!in "in" which is not after "//"
\(\/\/.*\)\@<!in "in" which is not after "//"
*/\@>*
\@> Matches the preceding atom like matching a whole pattern. {not in Vi}
Like '(?>pattern)" in Perl.
Like "(?>pattern)" in Perl.
Example matches ~
\(a*\)\@>a nothing (the "a*" takes all the "a"'s, there can't be
another one following)
@ -720,7 +721,7 @@ An ordinary atom can be:
start-of-line
*/$*
$ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"):
$ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
matches end-of-line <EOL>; at other positions, matches literal '$'.
|/zero-width|
@ -870,7 +871,7 @@ $ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"):
WARNING: When inserting or deleting text Vim does not automatically
update highlighted matches. This means Syntax highlighting quickly
becomes wrong.
Example, to highlight the all characters after virtual column 72: >
Example, to highlight all the characters after virtual column 72: >
/\%>72v.*
< When 'hlsearch' is set and you move the cursor around and make changes
this will clearly show when the match is updated or not.
@ -1071,6 +1072,9 @@ x A single character, with no special meaning, matches itself
< Matches the words "r", "re", "ro", "rea", "roa", "read" and "road".
There can be no \(\), \%(\) or \z(\) items inside the [] and \%[] does
not nest.
To include a "[" use "[[]" and for "]" use []]", e.g.,: >
/index\%[[[]0[]]]
< matches "index" "index[", "index[0" and "index[0]".
{not available when compiled without the +syntax feature}
*/\%d* */\%x* */\%o* */\%u* */\%U* *E678*
@ -1225,11 +1229,14 @@ Finally, these constructs are unique to Perl:
'ignorecase' does not apply, use |/\c| in the pattern to
ignore case. Otherwise case is not ignored.
'redrawtime' defines the maximum time searched for pattern
matches.
When matching end-of-line and Vim redraws only part of the
display you may get unexpected results. That is because Vim
looks for a match in the line where redrawing starts.
Also see |matcharg()|and |getmatches()|. The former returns
Also see |matcharg()| and |getmatches()|. The former returns
the highlight group and pattern of a previous |:match|
command. The latter returns a list with highlight groups and
patterns defined by both |matchadd()| and |:match|.

View File

@ -1,4 +1,4 @@
*pi_getscript.txt* For Vim version 7.1. Last change: 2007 May 08
*pi_getscript.txt* For Vim version 7.2a. Last change: 2008 Jan 07
>
GETSCRIPT REFERENCE MANUAL by Charles E. Campbell, Jr.
<
@ -136,7 +136,7 @@ insures that GetLatestVimScripts will assume that the script it has is
out-of-date.
The SourceID is extracted by GetLatestVimScripts from the script's page on
vim.sf.net; whenever it's greater than the one stored in the
vim.sf.net; whenever its greater than the one stored in the
GetLatestVimScripts.dat file, the script will be downloaded
(see |GetLatestVimScripts_dat|).
@ -335,6 +335,12 @@ The AutoInstall process will:
==============================================================================
9. GetLatestVimScripts History *getscript-history* *glvs-hist* {{{1
v29 Jan 07, 2008 : * Bram M pointed out that cpo is a global option and that
getscriptPlugin.vim was setting it but not restoring it.
v28 Jan 02, 2008 : * improved shell quoting character handling, cygwin
interface, register-a bypass
Oct 29, 2007 * Bill McCarthy suggested a change to getscript that avoids
creating pop-up windows
v24 Apr 16, 2007 : * removed save&restore of the fo option during script
loading
v23 Nov 03, 2006 : * ignores comments (#...)

View File

@ -1,13 +1,13 @@
*pi_tar.txt* For Vim version 7.1. Last change: 2006 Sep 29
*pi_tar.txt* For Vim version 7.2a. Last change: 2008 Jun 12
+====================+
| Tar File Interface |
+====================+
+====================+
| Tar File Interface |
+====================+
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first)
Copyright: The GPL (gnu public license) applies to *tar-copyright*
tarPlugin.vim, and pi_tar.txt.
Copyright 2005-2008: The GPL (gnu public license) applies to *tar-copyright*
tar.vim, tarPlugin.vim, and pi_tar.txt.
No warranty, express or implied. Use At-Your-Own-Risk.
==============================================================================
@ -36,32 +36,42 @@ Copyright: The GPL (gnu public license) applies to *tar-copyright*
*g:tar_browseoptions* "Ptf" used to get a list of contents
*g:tar_readoptions* "OPxf" used to extract a file from a tarball
*g:tar_cmd* "tar" the name of the tar program
*g:tar_nomax* 0 if true, file window will not be maximized
*g:tar_writeoptions* "uf" used to update/replace a file
==============================================================================
4. History *tar-history*
v16 Jun 06, 2008 * tarfile:: used instead of tarfile: when editing files
inside tarballs. Fixes a problem with tarballs called
things like c:\abc.tar. (tnx to Bill McCarthy)
v14 May 09, 2008 * arno caught a security bug
May 28, 2008 * various security improvements. Now requires patch 299
which provides the fnameescape() function
May 30, 2008 * allows one to view *.gz and *.bz2 files that are in
*.tar files.
v12 Sep 07, 2007 * &shq now used if not the empty string for g:tar_shq
v10 May 02, 2006 * now using "redraw then echo" to show messages, instead
of "echo and prompt user"
of "echo and prompt user"
v9 May 02, 2006 * improved detection of masquerading as tar file
v8 May 02, 2006 * allows editing of files that merely masquerade as tar
files
files
v7 Mar 22, 2006 * work on making tar plugin work across network
Mar 27, 2006 * g:tar_cmd now available for users to change the name
of the tar program to be used. By default, of course,
its "tar".
of the tar program to be used. By default, of course,
it's "tar".
v6 Dec 21, 2005 * writing to files not in directories caused problems -
fixed (pointed out by Christian Robinson)
fixed (pointed out by Christian Robinson)
v5 Nov 22, 2005 * report option workaround installed
v3 Sep 16, 2005 * handles writing files in an archive back to the
archive
archive
Oct 18, 2005 * <amatch> used instead of <afile> in autocmds
Oct 18, 2005 * handles writing to compressed archives
Nov 03, 2005 * handles writing tarfiles across a network using
netrw#NetWrite()
netrw#NetWrite()
v2 * converted to use Vim7's new autoload feature by
Bram Moolenaar
Bram Moolenaar
v1 (original) * Michael Toren (see http://michael.toren.net/code/)
==============================================================================

View File

@ -1,4 +1,4 @@
*pi_vimball.txt* For Vim version 7.1. Last change: 2007 May 11
*pi_vimball.txt* For Vim version 7.2a. Last change: 2008 Jun 05
----------------
Vimball Archiver
@ -6,7 +6,7 @@
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first)
Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright*
Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *Vimball-copyright*
The VIM LICENSE applies to Vimball.vim, and Vimball.txt
(see |copyright|) except use "Vimball" instead of "Vim".
No warranty, express or implied.
@ -16,21 +16,51 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright*
1. Contents *vba* *vimball* *vimball-contents*
1. Contents......................................: |vimball-contents|
2. Vimball Manual................................: |vimball-manual|
3. Vimball Manual................................: |vimball-manual|
MkVimball.....................................: |:MkVimball|
UseVimball....................................: |:UseVimball|
RmVimball.....................................: |:RmVimball|
3. Vimball History...............................: |vimball-history|
4. Vimball History...............................: |vimball-history|
==============================================================================
2. Vimball Manual *vimball-manual*
2. Vimball Introduction *vimball-intro*
Vimball is intended to make life simpler for users of plugins. All
a user needs to do with a vimball is: >
vim someplugin.vba
:so %
:q
< and the plugin and all its components will be installed into their
appropriate directories. Note that one doesn't need to be in any
particular directory when one does this. Plus, any help for the
plugin will also be automatically installed.
If a user has decided to use the AsNeeded plugin, vimball is smart
enough to put scripts nominally intended for .vim/plugin/ into
.vim/AsNeeded/ instead.
Removing a plugin that was installed with vimball is really easy: >
vim
:RmVimball someplugin
< This operation is not at all easy for zips and tarballs, for example.
Vimball examines the user's |'runtimepath'| to determine where to put
the scripts. The first directory mentioned on the runtimepath is
usually used if possible. Use >
:echo &rtp
< to see that directory.
==============================================================================
3. Vimball Manual *vimball-manual*
*:MkVimball*
:[range]MkVimball[!] filename [path]
The range is composed of lines holding paths to files to be included
in your new vimball. As an example: >
in your new vimball, omitting the portion of the paths that is
normally specified by the runtimepath (|'rtp'|). As an example: >
plugin/something.vim
doc/something.txt
< using >
@ -44,14 +74,34 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright*
directory. The vimball plugin normally uses the first |'runtimepath'|
directory that exists as a prefix; don't use absolute paths, unless
the user has specified such a path.
*g:vimball_home*
You may override the use of the |'runtimepath'| by specifying a
variable, g:vimball_home.
If you use the exclamation point (!), then MkVimball will create the
"filename.vba" file, overwriting it if it already exists. This
behavior resembles that for |:w|.
*g:vimball_mkdir*
First, the |mkdir()| command is tried (not all systems support it).
If it doesn't exist, then g:vimball_mkdir doesn't exist, it is set to:
|g:netrw_local_mkdir|, if it exists
"mkdir", if it is executable
"makedir", if it is executable
Otherwise, it is undefined.
One may explicitly specify the directory making command using
g:vimball_mkdir. This command is used to make directories that
are needed as indicated by the vimball.
*g:vimball_home*
You may override the use of the |'runtimepath'| by specifying a
variable, g:vimball_home.
Path Preprocessing *g:vimball_path_escape*
Paths used in vimball are preprocessed by s:Path(); in addition,
certain characters are escaped (by prepending a backslash). The
characters are in g:vimball_path_escape, and may be overridden by
the user in his/her .vimrc initialization script.
*vimball-extract*
vim filename.vba
@ -88,8 +138,21 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright*
==============================================================================
3. Vimball History *vimball-history* {{{1
4. Vimball History *vimball-history* {{{1
26 : May 27, 2008 * g:vimball_mkdir usage installed. Makes the
$HOME/.vim (or $HOME\vimfiles) directory if
necessary.
May 30, 2008 * (tnx to Bill McCarthy) found and fixed a bug:
vimball wasn't updating plugins to AsNeeded/
when it should
25 : Mar 24, 2008 * changed vimball#Vimball() to recognize doc/*.??x
files as help files, too.
Apr 18, 2008 * RmVimball command is now protected by saving and
restoring settings -- in particular, acd was
causing problems as reported by Zhang Shuhan
24 : Nov 15, 2007 * |g:vimball_path_escape| used by s:Path() to
prevent certain characters from causing trouble
22 : Mar 21, 2007 * uses setlocal instead of set during BufEnter
21 : Nov 27, 2006 * (tnx to Bill McCarthy) vimball had a header
handling problem and it now changes \s to /s
@ -101,7 +164,7 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright*
will extract plugin/somefile to the AsNeeded/
directory
17 : Jun 28, 2006 * changes all \s to /s internally for Windows
16 : Jun 15, 2006 * A. Mechelynck's idea to allow users to specify
16 : Jun 15, 2006 * A. Mechylynck's idea to allow users to specify
installation root paths implemented for
UseVimball, MkVimball, and RmVimball.
* RmVimball implemented
@ -115,7 +178,7 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright*
10 : Apr 27, 2006 * moved all setting saving/restoration to a pair of
functions. Included some more settings in them
which frequently cause trouble.
9 : Apr 26, 2006 * various changes to support Windows predilection
9 : Apr 26, 2006 * various changes to support Windows' predilection
for backslashes and spaces in file and directory
names.
7 : Apr 25, 2006 * bypasses foldenable

View File

@ -1,4 +1,4 @@
*pi_zip.txt* For Vim version 7.1. Last change: 2007 May 11
*pi_zip.txt* For Vim version 7.2a. Last change: 2008 Jun 12
+====================+
| Zip File Interface |
@ -6,7 +6,7 @@
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first)
Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr *zip-copyright*
Copyright: Copyright (C) 2005-2008 Charles E Campbell, Jr *zip-copyright*
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,
@ -33,7 +33,13 @@ Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr *zip-copyright*
zip archives via the plugin.
OPTIONS
*zip_shq*
*g:zip_nomax*
If this variable exists and is true, the file window will not be
automatically maximized when opened.
*g:zip_shq*
Different operating systems may use one or more shells to execute
commands. Zip will try to guess the correct quoting mechanism to
allow spaces and whatnot in filenames; however, if it is incorrectly
@ -45,12 +51,12 @@ Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr *zip-copyright*
*g:zip_unzipcmd*
Use this option to specify the program which does the duty of "unzip".
Its used during browsing. By default: >
It's used during browsing. By default: >
let g:zip_unzipcmd= "unzip"
<
*g:zip_zipcmd*
Use this option to specify the program which does the duty of "zip".
Its used during the writing (updating) of a file already in a zip
It's used during the writing (updating) of a file already in a zip
file; by default: >
let g:zip_zipcmd= "zip"
<
@ -64,11 +70,13 @@ Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr *zip-copyright*
au BufReadCmd *.jar,*.xpi call zip#Browse(expand("<amatch>"))
<
One can simply extend this line to accommodate additional extensions that
are actually zip files.
One simply can extend this line to accomodate additional extensions that
should be treated as zip files.
==============================================================================
4. History *zip-history* {{{1
v17 May 09, 2008 * arno caught a security bug
v15 Sep 07, 2007 * &shq now used if not the empty string for g:zip_shq
v14 May 07, 2007 * using b:zipfile instead of w:zipfile to avoid problem
when editing alternate file to bring up a zipfile
v10 May 02, 2006 * now using "redraw then echo" to show messages, instead

View File

@ -1,4 +1,4 @@
*quickref.txt* For Vim version 7.1. Last change: 2007 May 11
*quickref.txt* For Vim version 7.2a. Last change: 2008 Jan 22
VIM REFERENCE MANUAL by Bram Moolenaar
@ -458,18 +458,29 @@ In Insert or Command-line mode:
------------------------------------------------------------------------------
*Q_to* Text objects (only in Visual mode or after an operator)
|v_aw| N aw Select "a word"
|v_iw| N iw Select "inner word"
|v_aW| N aW Select "a |WORD|"
|v_iW| N iW Select "inner |WORD|"
|v_as| N as Select "a sentence"
|v_is| N is Select "inner sentence"
|v_ap| N ap Select "a paragraph"
|v_ip| N ip Select "inner paragraph"
|v_ab| N ab Select "a block" (from "[(" to "])")
|v_ib| N ib Select "inner block" (from "[(" to "])")
|v_aB| N aB Select "a Block" (from "[{" to "]}")
|v_iB| N iB Select "inner Block" (from "[{" to "]}")
|v_aw| N aw Select "a word"
|v_iw| N iw Select "inner word"
|v_aW| N aW Select "a |WORD|"
|v_iW| N iW Select "inner |WORD|"
|v_as| N as Select "a sentence"
|v_is| N is Select "inner sentence"
|v_ap| N ap Select "a paragraph"
|v_ip| N ip Select "inner paragraph"
|v_ab| N ab Select "a block" (from "[(" to "])")
|v_ib| N ib Select "inner block" (from "[(" to "])")
|v_aB| N aB Select "a Block" (from "[{" to "]}")
|v_iB| N iB Select "inner Block" (from "[{" to "]}")
|v_a>| N a> Select "a <> block"
|v_i>| N i> Select "inner <> block"
|v_at| N at Select "a tag block" (from <aaa> to </aaa>)
|v_it| N it Select "inner tag block" (from <aaa> to </aaa>)
|v_a'| N a' Select "a single quoted string"
|v_i'| N i' Select "inner single quoted string"
|v_aquote| N a" Select "a double quoted string"
|v_iquote| N i" Select "inner double quoted string"
|v_a`| N a` Select "a backward quoted string"
|v_i`| N i` Select "inner backward quoted string"
------------------------------------------------------------------------------
*Q_re* Repeating commands
@ -806,6 +817,7 @@ Short explanation of each option: *option-list*
'pumheight' 'ph' maximum height of the popup menu
'quoteescape' 'qe' escape characters used in a string
'readonly' 'ro' disallow writing the buffer
'redrawtime' 'rdt' timeout for 'hlsearch' and |:match| highlighting
'remap' allow mappings to work recursively
'report' threshold for reporting nr. of lines changed
'restorescreen' 'rs' Win32: restore screen when exiting
@ -857,7 +869,7 @@ Short explanation of each option: *option-list*
'spellsuggest' 'sps' method(s) used to suggest spelling corrections
'splitbelow' 'sb' new window from split is below the current one
'splitright' 'spr' new window is put right of the current one
'startofline' 'sol' commands move cursor to first blank in line
'startofline' 'sol' commands move cursor to first non-blank in line
'statusline' 'stl' custom format for the status line
'suffixes' 'su' suffixes that are ignored with multiple match
'suffixesadd' 'sua' suffixes added when searching for a file

View File

@ -1,4 +1,4 @@
*sponsor.txt* For Vim version 7.1. Last change: 2007 Jan 05
*sponsor.txt* For Vim version 7.2a. Last change: 2008 Jun 21
VIM REFERENCE MANUAL by Bram Moolenaar
@ -51,7 +51,7 @@ vote for the items Bram should work on. How does this voting work?
4. The voting results appear on the results page, which is visible for
everybody: http://www.vim.org/sponsor/vote_results.php
Additionally, once you have send 100 euro or more in total, your name appears
Additionally, once you have sent 100 euro or more in total, your name appears
in the "Vim hall of honour": http://www.vim.org/sponsor/hall_of_honour.php
But only if you enable this on your account page.
@ -74,7 +74,7 @@ Other methods See |iccf-donations|.
amount you transferred if you want to vote for features and
show others you are a registered Vim user or sponsor.
Cash Small amounts can be send with ordinary mail. Put something
Cash Small amounts can be sent with ordinary mail. Put something
around the money, so that it's not noticeable from the
outside. Mention your e-mail address if you want to vote for
features and show others you are a registered Vim user or
@ -82,9 +82,9 @@ Cash Small amounts can be send with ordinary mail. Put something
You can use this permanent address:
Bram Moolenaar
Molenstraat 2
2161 HP Lisse
The Netherlands
Finsterruetihof 1
8134 Adliswil
Switzerland

View File

@ -1,4 +1,4 @@
*uganda.txt* For Vim version 7.1. Last change: 2007 May 05
*uganda.txt* For Vim version 7.2a. Last change: 2008 Jun 21
VIM REFERENCE MANUAL by Bram Moolenaar
@ -128,7 +128,7 @@ Note:
MODIFIED_BY define.
==============================================================================
Kibaale Children's Centre *kcc*
Kibaale Children's Centre *kcc* *Kibaale* *charity*
Kibaale Children's Centre (KCC) is located in Kibaale, a small town in the
south of Uganda, near Tanzania, in East Africa. The area is known as Rakai
@ -177,9 +177,9 @@ breaking out (measles and cholera have been a problem).
Summer 1994 to summer 1995 I spent a whole year at the centre, working as a
volunteer. I have helped to expand the centre and worked in the area of water
and sanitation. I learned that the help that the KCC provides really helps.
Now that I'm back in Holland, I would like to continue supporting KCC. To do
this I'm raising funds and organizing the sponsorship program. Please
consider one of these possibilities:
When I came back to Holland, I wanted to continue supporting KCC. To do this
I'm raising funds and organizing the sponsorship program. Please consider one
of these possibilities:
1. Sponsor a child in primary school: 17 euro a month (or more).
2. Sponsor a child in secondary school: 25 euro a month (or more).
@ -217,7 +217,7 @@ USA: The methods mentioned below can be used.
is no longer possible, unfortunately. We are looking for
another way to get you an IRS tax receipt.
For sponsoring a child contact KCF in Canada (see below). US
checks can be send to them to lower banking costs.
checks can be sent to them to lower banking costs.
Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada. They
take care of the Canadian sponsors for the children in
@ -278,11 +278,10 @@ Others: Transfer to one of these accounts if possible:
Address to send checks to:
stichting ICCF Holland
Bram Moolenaar
Molenstraat 2
2161 HP Lisse
The Netherlands
Finsterruetihof 1
8134 Adliswil
Switzerland
This address is expected to be valid for a long time. The address in Venlo
will not be valid after June 2006.
This address is expected to be valid for a long time.
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*usr_02.txt* For Vim version 7.1. Last change: 2007 Feb 28
*usr_02.txt* For Vim version 7.2a. Last change: 2007 Feb 28
VIM USER MANUAL - by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*usr_08.txt* For Vim version 7.1. Last change: 2006 Jul 18
*usr_08.txt* For Vim version 7.2a. Last change: 2006 Jul 18
VIM USER MANUAL - by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*usr_09.txt* For Vim version 7.1. Last change: 2006 Apr 24
*usr_09.txt* For Vim version 7.2a. Last change: 2006 Apr 24
VIM USER MANUAL - by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 7.1. Last change: 2007 Apr 26
*usr_41.txt* For Vim version 7.2a. Last change: 2008 Jun 21
VIM USER MANUAL - by Bram Moolenaar
@ -579,9 +579,12 @@ the function name to jump to detailed help on it.
String manipulation:
nr2char() get a character by its ASCII value
char2nr() get ASCII value of a character
str2nr() convert a string to a number
str2nr() convert a string to a Number
str2float() convert a string to a Float
printf() format a string according to % items
escape() escape characters in a string with a '\'
shellescape() escape a string for use with a shell command
fnameescape() escape a file name for use with a Vim command
tr() translate characters from one set to another
strtrans() translate a string to make it printable
tolower() turn a string to lowercase
@ -646,6 +649,20 @@ Dictionary manipulation:
min() minimum value in a Dictionary
count() count number of times a value appears
Floating point computation:
float2nr() convert Float to Number
abs() absolute value (also works for Number)
round() round off
ceil() round up
floor() round down
trunc() remove value after decimal point
log10() logarithm to base 10
pow() value of x to the exponent y
sqrt() square root
sin() sine
cos() cosine
atan() arc tangent
Variables:
type() type of a variable
islocked() check if a variable is locked
@ -797,6 +814,7 @@ Interactive:
confirm() let the user make a choice
getchar() get a character from the user
getcharmod() get modifiers for the last typed character
feedkeys() put characters in the typeahead queue
input() get a line from the user
inputlist() let the user pick an entry from a list
inputsecret() get a line from the user without showing it
@ -838,6 +856,7 @@ Various:
cscope_connection() check if a cscope connection exists
did_filetype() check if a FileType autocommand was used
eventhandler() check if invoked by an event handler
getpid() get process ID of Vim
libcall() call a function in an external library
libcallnr() idem, returning a number
@ -887,8 +906,8 @@ are local unless prefixed by something like "g:", "a:", or "s:".
Note:
To access a global variable from inside a function you must prepend
"g:" to it. Thus "g:count" inside a function is used for the global
variable "count", and "count" is another variable, local to the
"g:" to it. Thus "g:today" inside a function is used for the global
variable "today", and "today" is another variable, local to the
function.
You now use the ":return" statement to return the smallest number to the user.
@ -947,13 +966,13 @@ These will have the line numbers from the range the function was called with.
Example: >
:function Count_words() range
: let n = a:firstline
: let count = 0
: while n <= a:lastline
: let count = count + Wordcount(getline(n))
: let n = n + 1
: let lnum = a:firstline
: let n = 0
: while lnum <= a:lastline
: let n = n + len(split(getline(lnum)))
: let lnum = lnum + 1
: endwhile
: echo "found " . count . " words"
: echo "found " . n . " words"
:endfunction
You can call this function with: >
@ -1205,7 +1224,7 @@ over them: >
one ~
two ~
The will notice the keys are not ordered. You can sort the list to get a
You will notice the keys are not ordered. You can sort the list to get a
specific order: >
:for key in sort(keys(uk2nl))
@ -2238,7 +2257,7 @@ that could be ~/.vim/after/compiler.
*41.14* Writing a plugin that loads quickly *write-plugin-quickload*
A plugin may grow and become quite long. The startup delay may become
noticeable, while you hardly every use the plugin. Then it's time for a
noticeable, while you hardly ever use the plugin. Then it's time for a
quickload plugin.
The basic idea is that the plugin is loaded twice. The first time user

View File

@ -1,4 +1,4 @@
*usr_42.txt* For Vim version 7.1. Last change: 2006 Apr 24
*usr_42.txt* For Vim version 7.2a. Last change: 2008 May 05
VIM USER MANUAL - by Bram Moolenaar
@ -255,14 +255,14 @@ This deletes the Syntax menu and all the items in it.
*42.3* Various
You can change the appearance of the menus with flags in 'guioptions'. In the
default value they are all included. You can remove a flag with a command
like: >
default value they are all included, except "M". You can remove a flag with a
command like: >
:set guioptions-=m
<
m When removed the menubar is not displayed.
M When removed the default menus are not loaded.
M When added the default menus are not loaded.
g When removed the inactive menu items are not made grey
but are completely removed. (Does not work on all

View File

@ -1,4 +1,4 @@
*usr_44.txt* For Vim version 7.1. Last change: 2006 Apr 24
*usr_44.txt* For Vim version 7.2a. Last change: 2006 Apr 24
VIM USER MANUAL - by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*usr_90.txt* For Vim version 7.1. Last change: 2006 Apr 24
*usr_90.txt* For Vim version 7.2a. Last change: 2006 Apr 24
VIM USER MANUAL - by Bram Moolenaar

View File

@ -1,10 +1,11 @@
" Vim filetype plugin file (GUI menu and folding)
" Vim filetype plugin file (GUI menu, folding and completion)
" Language: Debian Changelog
" Maintainer: Michael Piefel <piefel@informatik.hu-berlin.de>
" Stefano Zacchiroli <zack@debian.org>
" Last Change: $LastChangedDate: 2006-08-24 23:41:26 +0200 (gio, 24 ago 2006) $
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainers: Michael Piefel <piefel@informatik.hu-berlin.de>
" Stefano Zacchiroli <zack@debian.org>
" Last Change: 2008-03-08
" License: GNU GPL, version 2.0 or later
" URL: http://svn.debian.org/wsvn/pkg-vim/trunk/runtime/ftplugin/debchangelog.vim?op=file&rev=0&sc=0
" URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/ftplugin/debchangelog.vim;hb=debian
if exists("b:did_ftplugin")
finish
@ -12,9 +13,11 @@ endif
let b:did_ftplugin=1
" {{{1 Local settings (do on every load)
setlocal foldmethod=expr
setlocal foldexpr=GetDebChangelogFold(v:lnum)
setlocal foldtext=DebChangelogFoldText()
if exists("g:debchangelog_fold_enable")
setlocal foldmethod=expr
setlocal foldexpr=DebGetChangelogFold(v:lnum)
setlocal foldtext=DebChangelogFoldText()
endif
" Debian changelogs are not supposed to have any other text width,
" so the user cannot override this setting
@ -107,9 +110,8 @@ function NewVersion()
call append(2, "")
call append(3, " -- ")
call append(4, "")
call Distribution("unstable")
call Urgency("low")
normal 1G
normal 1G0
call search(")")
normal h
normal 
@ -240,6 +242,22 @@ function! s:getAuthor(zonestart, zoneend)
return '[unknown]'
endfunction
" Look for a package source name searching backward from the givenline and
" returns it. Return the empty string if the package name can't be found
function! DebGetPkgSrcName(lineno)
let lineidx = a:lineno
let pkgname = ''
while lineidx > 0
let curline = getline(lineidx)
if curline =~ '^\S'
let pkgname = matchlist(curline, '^\(\S\+\).*$')[1]
break
endif
let lineidx = lineidx - 1
endwhile
return pkgname
endfunction
function! DebChangelogFoldText()
if v:folddashes == '-' " changelog entry fold
return foldtext() . ' -- ' . s:getAuthor(v:foldstart, v:foldend) . ' '
@ -247,7 +265,7 @@ function! DebChangelogFoldText()
return foldtext()
endfunction
function! GetDebChangelogFold(lnum)
function! DebGetChangelogFold(lnum)
let line = getline(a:lnum)
if line =~ '^\w\+'
return '>1' " beginning of a changelog entry
@ -261,7 +279,50 @@ function! GetDebChangelogFold(lnum)
return '='
endfunction
foldopen! " unfold the entry the cursor is on (usually the first one)
silent! foldopen! " unfold the entry the cursor is on (usually the first one)
" }}}
" {{{1 omnicompletion for Closes: #
if !exists('g:debchangelog_listbugs_severities')
let g:debchangelog_listbugs_severities = 'critical,grave,serious,important,normal,minor,wishlist'
endif
fun! DebCompleteBugs(findstart, base)
if a:findstart
" it we are just after an '#', the completion should start at the '#',
" otherwise no completion is possible
let line = getline('.')
let colidx = col('.')
if colidx > 1 && line[colidx - 2] =~ '#'
let colidx = colidx - 2
else
let colidx = -1
endif
return colidx
else
if ! filereadable('/usr/sbin/apt-listbugs')
echoerr 'apt-listbugs not found, you should install it to use Closes bug completion'
return
endif
let pkgsrc = DebGetPkgSrcName(line('.'))
let listbugs_output = system('apt-listbugs -s ' . g:debchangelog_listbugs_severities . ' list ' . pkgsrc . ' | grep "^ #" 2> /dev/null')
let bug_lines = split(listbugs_output, '\n')
let completions = []
for line in bug_lines
let parts = matchlist(line, '^\s*\(#\S\+\)\s*-\s*\(.*\)$')
let completion = {}
let completion['word'] = parts[1]
let completion['menu'] = parts[2]
let completion['info'] = parts[0]
let completions += [completion]
endfor
return completions
endif
endfun
setlocal omnifunc=DebCompleteBugs
" }}}

View File

@ -0,0 +1,40 @@
" Language: D script as described in "Solaris Dynamic Tracing Guide",
" http://docs.sun.com/app/docs/doc/817-6223
" Last Change: 2008/03/20
" Version: 1.2
" Maintainer: Nicolas Weber <nicolasweber@gmx.de>
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
" Don't load another plugin for this buffer
let b:did_ftplugin = 1
" Using line continuation here.
let s:cpo_save = &cpo
set cpo-=C
let b:undo_ftplugin = "setl fo< com< cms< isk<"
" 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
" Set 'comments' to format dashed lists in comments.
setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/
" dtrace uses /* */ comments. Set this explicitly, just in case the user
" changed this (/*%s*/ is the default)
setlocal commentstring=/*%s*/
setlocal iskeyword+=@,$
" When the matchit plugin is loaded, this makes the % command skip parens and
" braces in comments.
let b:match_words = &matchpairs
let b:match_skip = 's:comment\|string\|character'
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -98,4 +98,4 @@ let b:undo_ftplugin = "setl cms< "
let &cpo = s:save_cpo
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:
" vim: nowrap sw=2 sts=2 ts=8:

34
runtime/ftplugin/git.vim Normal file
View File

@ -0,0 +1,34 @@
" Vim filetype plugin
" Language: generic git output
" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
" Last Change: 2008 Feb 27
" Only do this when not done yet for this buffer
if (exists("b:did_ftplugin"))
finish
endif
let b:did_ftplugin = 1
if !exists('b:git_dir')
if expand('%:p') =~# '\.git\>'
let b:git_dir = matchstr(expand('%:p'),'.*\.git\>')
elseif $GIT_DIR != ''
let b:git_dir = $GIT_DIR
endif
if has('win32') || has('win64')
let b:git_dir = substitute(b:git_dir,'\\','/','g')
endif
endif
if exists('*shellescape') && exists('b:git_dir') && b:git_dir != ''
if b:git_dir =~# '/\.git$' " Not a bare repository
let &l:path = escape(fnamemodify(b:git_dir,':t'),'\, ').','.&l:path
endif
let &l:path = escape(b:git_dir,'\, ').','.&l:path
let &l:keywordprg = 'git --git-dir='.shellescape(b:git_dir).' show'
else
setlocal keywordprg=git\ show
endif
setlocal includeexpr=substitute(v:fname,'^[^/]\\+/','','')
let b:undo_ftplugin = "setl keywordprg< path< includeexpr<"

View File

@ -0,0 +1,6 @@
" Vim filetype plugin
" Language: git send-email message
" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
" Last Change: 2007 Dec 16
runtime! ftplugin/mail.vim

View File

@ -0,0 +1,40 @@
" Vim filetype plugin file
" Language: MS Message files (*.mc)
" Maintainer: Kevin Locke <kwl7@cornell.edu>
" Last Change: 2008 April 09
" Location: http://kevinlocke.name/programs/vim/syntax/msmessages.vim
" Based on c.vim
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
" Don't load another plugin for this buffer
let b:did_ftplugin = 1
" Using line continuation here.
let s:cpo_save = &cpo
set cpo-=C
let b:undo_ftplugin = "setl fo< com< cms< | unlet! b:browsefilter"
" Set 'formatoptions' to format all lines, including comments
setlocal fo-=ct fo+=roql
" Comments includes both ";" which describes a "comment" which will be
" converted to C code and variants on "; //" which will remain comments
" in the generated C code
setlocal comments=:;,:;//,:;\ //,s:;\ /*\ ,m:;\ \ *\ ,e:;\ \ */
setlocal commentstring=;\ //\ %s
" Win32 can filter files in the browse dialog
if has("gui_win32") && !exists("b:browsefilter")
let b:browsefilter = "MS Message Files (*.mc)\t*.mc\n" .
\ "Resource Files (*.rc)\t*.rc\n" .
\ "All Files (*.*)\t*.*\n"
endif
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -3,9 +3,12 @@
" Mike Leary <leary@nwlink.com>
" Markus Mottl <markus.mottl@gmail.com>
" Stefano Zacchiroli <zack@bononia.it>
" Vincent Aravantinos <firstname.name@imag.fr>
" URL: http://www.ocaml.info/vim/ftplugin/ocaml.vim
" Last Change: 2006 May 01 - Added .annot support for file.whateverext (SZ)
" 2006 Apr 11 - Fixed an initialization bug; fixed ASS abbrev (MM)
" Last Change: 2007 Sep 09 - Added .annot support for ocamlbuild, python not
" needed anymore (VA)
" 2006 May 01 - Added .annot support for file.whateverext (SZ)
" 2006 Apr 11 - Fixed an initialization bug; fixed ASS abbrev (MM)
" 2005 Oct 13 - removed GPL; better matchit support (MM, SZ)
"
if exists("b:did_ftplugin")
@ -175,208 +178,401 @@ function OMLetFoldLevel(l)
return '='
endfunction
" Vim support for OCaml .annot files (requires Vim with python support)
" Vim support for OCaml .annot files
"
" Executing OCamlPrintType(<mode>) function will display in the Vim bottom
" Last Change: 2007 Jul 17
" Maintainer: Vincent Aravantinos <vincent.aravantinos@gmail.com>
" License: public domain
"
" Originally inspired by 'ocaml-dtypes.vim' by Stefano Zacchiroli.
" The source code is quite radically different for we not use python anymore.
" However this plugin should have the exact same behaviour, that's why the
" following lines are the quite exact copy of Stefano's original plugin :
"
" <<
" Executing Ocaml_print_type(<mode>) function will display in the Vim bottom
" line(s) the type of an ocaml value getting it from the corresponding .annot
" file (if any). If Vim is in visual mode, <mode> should be "visual" and the
" selected ocaml value correspond to the highlighted text, otherwise (<mode>
" can be anything else) it corresponds to the literal found at the current
" cursor position.
"
" .annot files are parsed lazily the first time OCamlPrintType is invoked; is
" also possible to force the parsing using the OCamlParseAnnot() function.
" Typing '<LocalLeader>t' (LocalLeader defaults to '\', see :h LocalLeader)
" will cause " Ocaml_print_type function to be invoked with the right
" argument depending on the current mode (visual or not).
" >>
"
" Typing ',3' will cause OCamlPrintType function to be invoked with
" the right argument depending on the current mode (visual or not).
" If you find something not matching this behaviour, please signal it.
"
" Copyright (C) <2003-2004> Stefano Zacchiroli <zack@bononia.it>
" Differences are:
" - no need for python support
" + plus : more portable
" + minus: no more lazy parsing, it looks very fast however
"
" - ocamlbuild support, ie.
" + the plugin finds the _build directory and looks for the
" corresponding file inside;
" + if the user decides to change the name of the _build directory thanks
" to the '-build-dir' option of ocamlbuild, the plugin will manage in
" most cases to find it out (most cases = if the source file has a unique
" name among your whole project);
" + if ocamlbuild is not used, the usual behaviour holds; ie. the .annot
" file should be in the same directory as the source file;
" + for vim plugin programmers:
" the variable 'b:_build_dir' contains the inferred path to the build
" directory, even if this one is not named '_build'.
"
" Created: Wed, 01 Oct 2003 18:16:22 +0200 zack
" LastModified: Wed, 25 Aug 2004 18:28:39 +0200 zack
" Bonus :
" - latin1 accents are handled
" - lists are handled, even on multiple lines, you don't need the visual mode
" (the cursor must be on the first bracket)
" - parenthesized expressions, arrays, and structures (ie. '(...)', '[|...|]',
" and '{...}') are handled the same way
if !has("python")
finish
endif
" Copied from Stefano's original plugin :
" <<
" .annot ocaml file representation
"
" File format (copied verbatim from caml-types.el)
"
" file ::= block *
" block ::= position <SP> position <LF> annotation *
" position ::= filename <SP> num <SP> num <SP> num
" annotation ::= keyword open-paren <LF> <SP> <SP> data <LF> close-paren
"
" <SP> is a space character (ASCII 0x20)
" <LF> is a line-feed character (ASCII 0x0A)
" num is a sequence of decimal digits
" filename is a string with the lexical conventions of O'Caml
" open-paren is an open parenthesis (ASCII 0x28)
" close-paren is a closed parenthesis (ASCII 0x29)
" data is any sequence of characters where <LF> is always followed by
" at least two space characters.
"
" - in each block, the two positions are respectively the start and the
" end of the range described by the block.
" - in a position, the filename is the name of the file, the first num
" is the line number, the second num is the offset of the beginning
" of the line, the third num is the offset of the position itself.
" - the char number within the line is the difference between the third
" and second nums.
"
" For the moment, the only possible keyword is \"type\"."
" >>
python << EOF
" 1. Finding the annotation file even if we use ocamlbuild
import re
import os
import os.path
import string
import time
import vim
" In: two strings representing paths
" Out: one string representing the common prefix between the two paths
function! s:Find_common_path (p1,p2)
let temp = a:p2
while matchstr(a:p1,temp) == ''
let temp = substitute(temp,'/[^/]*$','','')
endwhile
return temp
endfun
debug = False
" After call:
" - b:annot_file_path :
" path to the .annot file corresponding to the
" source file (dealing with ocamlbuild stuff)
" - b:_build_path:
" path to the build directory even if this one is
" not named '_build'
" - b:source_file_relative_path :
" relative path of the source file *in* the build
" directory ; this is how it is reffered to in the
" .annot file
function! s:Locate_annotation()
if !b:annotation_file_located
class AnnExc(Exception):
def __init__(self, reason):
self.reason = reason
silent exe 'cd' expand('%:p:h')
no_annotations = AnnExc("No type annotations (.annot) file found")
annotation_not_found = AnnExc("No type annotation found for the given text")
def malformed_annotations(lineno):
return AnnExc("Malformed .annot file (line = %d)" % lineno)
let annot_file_name = expand('%:r').'.annot'
class Annotations:
"""
.annot ocaml file representation
" 1st case : the annot file is in the same directory as the buffer (no ocamlbuild)
let b:annot_file_path = findfile(annot_file_name,'.')
if b:annot_file_path != ''
let b:annot_file_path = getcwd().'/'.b:annot_file_path
let b:_build_path = ''
let b:source_file_relative_path = expand('%')
else
" 2nd case : the buffer and the _build directory are in the same directory
" ..
" / \
" / \
" _build .ml
"
let b:_build_path = finddir('_build','.')
if b:_build_path != ''
let b:_build_path = getcwd().'/'.b:_build_path
let b:annot_file_path = findfile(annot_file_name,'_build')
if b:annot_file_path != ''
let b:annot_file_path = getcwd().'/'.b:annot_file_path
endif
let b:source_file_relative_path = expand('%')
else
" 3rd case : the _build directory is in a directory higher in the file hierarchy
" (it can't be deeper by ocamlbuild requirements)
" ..
" / \
" / \
" _build ...
" \
" \
" .ml
"
let b:_build_path = finddir('_build',';')
if b:_build_path != ''
let project_path = substitute(b:_build_path,'/_build$','','')
let path_relative_to_project = substitute(expand('%:p:h'),project_path.'/','','')
let b:annot_file_path = findfile(annot_file_name,project_path.'/_build/'.path_relative_to_project)
let b:source_file_relative_path = substitute(expand('%:p'),project_path.'/','','')
else
let b:annot_file_path = findfile(annot_file_name,'**')
"4th case : what if the user decided to change the name of the _build directory ?
" -> we relax the constraints, it should work in most cases
if b:annot_file_path != ''
" 4a. we suppose the renamed _build directory is in the current directory
let b:_build_path = matchstr(b:annot_file_path,'^[^/]*')
if b:annot_file_path != ''
let b:annot_file_path = getcwd().'/'.b:annot_file_path
let b:_build_path = getcwd().'/'.b:_build_path
endif
let b:source_file_relative_path = expand('%')
else
" 4b. anarchy : the renamed _build directory may be higher in the hierarchy
" this will work if the file for which we are looking annotations has a unique name in the whole project
" if this is not the case, it may still work, but no warranty here
let b:annot_file_path = findfile(annot_file_name,'**;')
let project_path = s:Find_common_path(b:annot_file_path,expand('%:p:h'))
let b:_build_path = matchstr(b:annot_file_path,project_path.'/[^/]*')
let b:source_file_relative_path = substitute(expand('%:p'),project_path.'/','','')
endif
endif
endif
endif
File format (copied verbatim from caml-types.el)
if b:annot_file_path == ''
throw 'E484: no annotation file found'
endif
file ::= block *
block ::= position <SP> position <LF> annotation *
position ::= filename <SP> num <SP> num <SP> num
annotation ::= keyword open-paren <LF> <SP> <SP> data <LF> close-paren
silent exe 'cd' '-'
<SP> is a space character (ASCII 0x20)
<LF> is a line-feed character (ASCII 0x0A)
num is a sequence of decimal digits
filename is a string with the lexical conventions of O'Caml
open-paren is an open parenthesis (ASCII 0x28)
close-paren is a closed parenthesis (ASCII 0x29)
data is any sequence of characters where <LF> is always followed by
at least two space characters.
let b:annotation_file_located = 1
endif
endfun
- in each block, the two positions are respectively the start and the
end of the range described by the block.
- in a position, the filename is the name of the file, the first num
is the line number, the second num is the offset of the beginning
of the line, the third num is the offset of the position itself.
- the char number within the line is the difference between the third
and second nums.
" This in order to locate the .annot file only once
let b:annotation_file_located = 0
For the moment, the only possible keyword is \"type\"."
"""
" 2. Finding the type information in the annotation file
" a. The annotation file is opened in vim as a buffer that
" should be (almost) invisible to the user.
def __init__(self):
self.__filename = None # last .annot parsed file
self.__ml_filename = None # as above but s/.annot/.ml/
self.__timestamp = None # last parse action timestamp
self.__annot = {}
self.__re = re.compile(
'^"[^"]*"\s+(\d+)\s+(\d+)\s+(\d+)\s+"[^"]*"\s+(\d+)\s+(\d+)\s+(\d+)$')
" After call:
" The current buffer is now the one containing the .annot file.
" We manage to keep all this hidden to the user's eye.
function! s:Enter_annotation_buffer()
let s:current_pos = getpos('.')
let s:current_hidden = &l:hidden
set hidden
let s:current_buf = bufname('%')
if bufloaded(b:annot_file_path)
silent exe 'keepj keepalt' 'buffer' b:annot_file_path
else
silent exe 'keepj keepalt' 'view' b:annot_file_path
endif
endfun
def __parse(self, fname):
try:
f = open(fname)
line = f.readline() # position line
lineno = 1
while (line != ""):
m = self.__re.search(line)
if (not m):
raise malformed_annotations(lineno)
line1 = int(m.group(1))
col1 = int(m.group(3)) - int(m.group(2))
line2 = int(m.group(4))
col2 = int(m.group(6)) - int(m.group(5))
line = f.readline() # "type(" string
lineno += 1
if (line == ""): raise malformed_annotations(lineno)
type = []
line = f.readline() # type description
lineno += 1
if (line == ""): raise malformed_annotations(lineno)
while line != ")\n":
type.append(string.strip(line))
line = f.readline()
lineno += 1
if (line == ""): raise malformed_annotations(lineno)
type = string.join(type, "\n")
key = ((line1, col1), (line2, col2))
if not self.__annot.has_key(key):
self.__annot[key] = type
line = f.readline() # position line
f.close()
self.__filename = fname
self.__ml_filename = vim.current.buffer.name
self.__timestamp = int(time.time())
except IOError:
raise no_annotations
" After call:
" The original buffer has been restored in the exact same state as before.
function! s:Exit_annotation_buffer()
silent exe 'keepj keepalt' 'buffer' s:current_buf
let &l:hidden = s:current_hidden
call setpos('.',s:current_pos)
endfun
def parse(self):
annot_file = os.path.splitext(vim.current.buffer.name)[0] + ".annot"
self.__parse(annot_file)
" After call:
" The annot file is loaded and assigned to a buffer.
" This also handles the modification date of the .annot file, eg. after a
" compilation.
function! s:Load_annotation()
if bufloaded(b:annot_file_path) && b:annot_file_last_mod < getftime(b:annot_file_path)
call s:Enter_annotation_buffer()
silent exe "bunload"
call s:Exit_annotation_buffer()
endif
if !bufloaded(b:annot_file_path)
call s:Enter_annotation_buffer()
setlocal nobuflisted
setlocal bufhidden=hide
setlocal noswapfile
setlocal buftype=nowrite
call s:Exit_annotation_buffer()
let b:annot_file_last_mod = getftime(b:annot_file_path)
endif
endfun
"b. 'search' and 'match' work to find the type information
"In: - lin1,col1: postion of expression first char
" - lin2,col2: postion of expression last char
"Out: - the pattern to be looked for to find the block
" Must be called in the source buffer (use of line2byte)
function! s:Block_pattern(lin1,lin2,col1,col2)
let start_num1 = a:lin1
let start_num2 = line2byte(a:lin1) - 1
let start_num3 = start_num2 + a:col1
let start_pos = '"'.b:source_file_relative_path.'" '.start_num1.' '.start_num2.' '.start_num3
let end_num1 = a:lin2
let end_num2 = line2byte(a:lin2) - 1
let end_num3 = end_num2 + a:col2
let end_pos = '"'.b:source_file_relative_path.'" '.end_num1.' '.end_num2.' '.end_num3
return '^'.start_pos.' '.end_pos."$"
" rq: the '^' here is not totally correct regarding the annot file "grammar"
" but currently the annotation file respects this, and it's a little bit faster with the '^';
" can be removed safely.
endfun
def get_type(self, (line1, col1), (line2, col2)):
if debug:
print line1, col1, line2, col2
if vim.current.buffer.name == None:
raise no_annotations
if vim.current.buffer.name != self.__ml_filename or \
os.stat(self.__filename).st_mtime > self.__timestamp:
self.parse()
try:
return self.__annot[(line1, col1), (line2, col2)]
except KeyError:
raise annotation_not_found
"In: (the cursor position should be at the start of an annotation)
"Out: the type information
" Must be called in the annotation buffer (use of search)
function! s:Match_data()
" rq: idem as previously, in the following, the '^' at start of patterns is not necessary
keepj while search('^type($','ce',line(".")) == 0
keepj if search('^.\{-}($','e') == 0
throw "no_annotation"
endif
keepj if searchpair('(','',')') == 0
throw "malformed_annot_file"
endif
endwhile
let begin = line(".") + 1
keepj if searchpair('(','',')') == 0
throw "malformed_annot_file"
endif
let end = line(".") - 1
return join(getline(begin,end),"\n")
endfun
"In: the pattern to look for in order to match the block
"Out: the type information (calls s:Match_data)
" Should be called in the annotation buffer
function! s:Extract_type_data(block_pattern)
call s:Enter_annotation_buffer()
try
if search(a:block_pattern,'e') == 0
throw "no_annotation"
endif
call cursor(line(".") + 1,1)
let annotation = s:Match_data()
finally
call s:Exit_annotation_buffer()
endtry
return annotation
endfun
"c. link this stuff with what the user wants
" ie. get the expression selected/under the cursor
let s:ocaml_word_char = '\w|[<5B>-<2D>]|'''
word_char_RE = re.compile("^[\w.]$")
"In: the current mode (eg. "visual", "normal", etc.)
"Out: the borders of the expression we are looking for the type
function! s:Match_borders(mode)
if a:mode == "visual"
let cur = getpos(".")
normal `<
let col1 = col(".")
let lin1 = line(".")
normal `>
let col2 = col(".")
let lin2 = line(".")
call cursor(cur[1],cur[2])
return [lin1,lin2,col1-1,col2]
else
let cursor_line = line(".")
let cursor_col = col(".")
let line = getline('.')
if line[cursor_col-1:cursor_col] == '[|'
let [lin2,col2] = searchpairpos('\[|','','|\]','n')
return [cursor_line,lin2,cursor_col-1,col2+1]
elseif line[cursor_col-1] == '['
let [lin2,col2] = searchpairpos('\[','','\]','n')
return [cursor_line,lin2,cursor_col-1,col2]
elseif line[cursor_col-1] == '('
let [lin2,col2] = searchpairpos('(','',')','n')
return [cursor_line,lin2,cursor_col-1,col2]
elseif line[cursor_col-1] == '{'
let [lin2,col2] = searchpairpos('{','','}','n')
return [cursor_line,lin2,cursor_col-1,col2]
else
let [lin1,col1] = searchpos('\v%('.s:ocaml_word_char.'|\.)*','ncb')
let [lin2,col2] = searchpos('\v%('.s:ocaml_word_char.'|\.)*','nce')
if col1 == 0 || col2 == 0
throw "no_expression"
endif
return [cursor_line,cursor_line,col1-1,col2]
endif
endif
endfun
# TODO this function should recognize ocaml literals, actually it's just an
# hack that recognize continuous sequences of word_char_RE above
def findBoundaries(line, col):
""" given a cursor position (as returned by vim.current.window.cursor)
return two integers identify the beggining and end column of the word at
cursor position, if any. If no word is at the cursor position return the
column cursor position twice """
left, right = col, col
line = line - 1 # mismatch vim/python line indexes
(begin_col, end_col) = (0, len(vim.current.buffer[line]) - 1)
try:
while word_char_RE.search(vim.current.buffer[line][left - 1]):
left = left - 1
except IndexError:
pass
try:
while word_char_RE.search(vim.current.buffer[line][right + 1]):
right = right + 1
except IndexError:
pass
return (left, right)
"In: the current mode (eg. "visual", "normal", etc.)
"Out: the type information (calls s:Extract_type_data)
function! s:Get_type(mode)
let [lin1,lin2,col1,col2] = s:Match_borders(a:mode)
return s:Extract_type_data(s:Block_pattern(lin1,lin2,col1,col2))
endfun
"d. main
"In: the current mode (eg. "visual", "normal", etc.)
"After call: the type information is displayed
if !exists("*Ocaml_get_type")
function Ocaml_get_type(mode)
call s:Locate_annotation()
call s:Load_annotation()
return s:Get_type(a:mode)
endfun
endif
annot = Annotations() # global annotation object
if !exists("*Ocaml_get_type_or_not")
function Ocaml_get_type_or_not(mode)
let t=reltime()
try
return Ocaml_get_type(a:mode)
catch
return ""
endtry
endfun
endif
def printOCamlType(mode):
try:
if mode == "visual": # visual mode: lookup highlighted text
(line1, col1) = vim.current.buffer.mark("<")
(line2, col2) = vim.current.buffer.mark(">")
else: # any other mode: lookup word at cursor position
(line, col) = vim.current.window.cursor
(col1, col2) = findBoundaries(line, col)
(line1, line2) = (line, line)
begin_mark = (line1, col1)
end_mark = (line2, col2 + 1)
print annot.get_type(begin_mark, end_mark)
except AnnExc, exc:
print exc.reason
if !exists("*Ocaml_print_type")
function Ocaml_print_type(mode)
if expand("%:e") == "mli"
echohl ErrorMsg | echo "No annotations for interface (.mli) files" | echohl None
return
endif
try
echo Ocaml_get_type(a:mode)
catch /E484:/
echohl ErrorMsg | echo "No type annotations (.annot) file found" | echohl None
catch /no_expression/
echohl ErrorMsg | echo "No expression found under the cursor" | echohl None
catch /no_annotation/
echohl ErrorMsg | echo "No type annotation found for the given text" | echohl None
catch /malformed_annot_file/
echohl ErrorMsg | echo "Malformed .annot file" | echohl None
endtry
endfun
endif
def parseOCamlAnnot():
try:
annot.parse()
except AnnExc, exc:
print exc.reason
EOF
fun! OCamlPrintType(current_mode)
if (a:current_mode == "visual")
python printOCamlType("visual")
else
python printOCamlType("normal")
endif
endfun
fun! OCamlParseAnnot()
python parseOCamlAnnot()
endfun
map <LocalLeader>t :call OCamlPrintType("normal")<RETURN>
vmap <LocalLeader>t :call OCamlPrintType("visual")<RETURN>
" Maps
map <silent> <LocalLeader>t :call Ocaml_print_type("normal")<CR>
vmap <silent> <LocalLeader>t :<C-U>call Ocaml_print_type("visual")<CR>`<
let &cpoptions=s:cposet
unlet s:cposet
" vim:sw=2
" vim:sw=2 fdm=indent

View File

@ -1,8 +1,8 @@
" SQL filetype plugin file
" Language: SQL (Common for Oracle, Microsoft SQL Server, Sybase)
" Version: 3.0
" Version: 4.0
" Maintainer: David Fishburn <fishburn at ianywhere dot com>
" Last Change: Wed Apr 26 2006 3:02:32 PM
" Last Change: Wed 27 Feb 2008 04:35:21 PM Eastern Standard Time
" Download: http://vim.sourceforge.net/script.php?script_id=454
" For more details please use:
@ -39,6 +39,13 @@ endif
let s:save_cpo = &cpo
set cpo=
" Disable autowrapping for code, but enable for comments
" t Auto-wrap text using textwidth
" c Auto-wrap comments using textwidth, inserting the current comment
" leader automatically.
setlocal formatoptions-=t
setlocal formatoptions-=c
" Functions/Commands to allow the user to change SQL syntax dialects
" through the use of :SQLSetType <tab> for completion.
" This works with both Vim 6 and 7.
@ -278,10 +285,10 @@ nmap <buffer> <silent> ]] :call search('\\c^\\s*begin\\>', 'W' )<CR>
nmap <buffer> <silent> [[ :call search('\\c^\\s*begin\\>', 'bW' )<CR>
nmap <buffer> <silent> ][ :call search('\\c^\\s*end\\W*$', 'W' )<CR>
nmap <buffer> <silent> [] :call search('\\c^\\s*end\\W*$', 'bW' )<CR>
vmap <buffer> <silent> ]] /\\c^\\s*begin\\><CR>
vmap <buffer> <silent> [[ ?\\c^\\s*begin\\><CR>
vmap <buffer> <silent> ][ /\\c^\\s*end\\W*$<CR>
vmap <buffer> <silent> [] ?\\c^\\s*end\\W*$<CR>
vmap <buffer> <silent> ]] :<C-U>exec "normal! gv"<Bar>call search('\\c^\\s*begin\\>', 'W' )<CR>
vmap <buffer> <silent> [[ :<C-U>exec "normal! gv"<Bar>call search('\\c^\\s*begin\\>', 'bW' )<CR>
vmap <buffer> <silent> ][ :<C-U>exec "normal! gv"<Bar>call search('\\c^\\s*end\\W*$', 'W' )<CR>
vmap <buffer> <silent> [] :<C-U>exec "normal! gv"<Bar>call search('\\c^\\s*end\\W*$', 'bW' )<CR>
" By default only look for CREATE statements, but allow
@ -343,10 +350,10 @@ let b:comment_skip_back = "call search('".
\ '^\\(\\s*'.b:comment_leader.'.*\\n\\)\\@<!'.
\ "', 'bW')"
" Move to the start and end of comments
exec 'nnoremap <silent><buffer> ]" /'.b:comment_start.'<CR>'
exec 'nnoremap <silent><buffer> [" /'.b:comment_end.'<CR>'
exec 'vnoremap <silent><buffer> ]" /'.b:comment_start.'<CR>'
exec 'vnoremap <silent><buffer> [" /'.b:comment_end.'<CR>'
exec 'nnoremap <silent><buffer> ]" :call search('."'".b:comment_start."'".', "W" )<CR>'
exec 'nnoremap <silent><buffer> [" :call search('."'".b:comment_end."'".', "W" )<CR>'
exec 'vnoremap <silent><buffer> ]" :<C-U>exec "normal! gv"<Bar>call search('."'".b:comment_start."'".', "W" )<CR>'
exec 'vnoremap <silent><buffer> [" :<C-U>exec "normal! gv"<Bar>call search('."'".b:comment_end."'".', "W" )<CR>'
" Comments can be of the form:
" /*

206
runtime/indent/erlang.vim Normal file
View File

@ -0,0 +1,206 @@
" Vim indent file
" Language: Erlang
" Maintainer: Csaba Hoch <csaba.hoch@gmail.com>
" Contributor: Edwin Fine <efine145_nospam01 at usa dot net>
" Last Change: 2008 Mar 12
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal indentexpr=ErlangIndent()
setlocal indentkeys+==after,=end,=catch,=),=],=}
" Only define the functions once.
if exists("*ErlangIndent")
finish
endif
" The function go through the whole line, analyses it and sets the indentation
" (ind variable).
" l: the number of the line to be examined.
function s:ErlangIndentAtferLine(l)
let i = 0 " the index of the current character in the line
let length = strlen(a:l) " the length of the line
let ind = 0 " how much should be the difference between the indentation of
" the current line and the indentation of the next line?
" e.g. +1: the indentation of the next line should be equal to
" the indentation of the current line plus one shiftwidth
let lastFun = 0 " the last token was a 'fun'
let lastReceive = 0 " the last token was a 'receive'; needed for 'after'
let lastHashMark = 0 " the last token was a 'hashmark'
while 0<= i && i < length
" m: the next value of the i
if a:l[i] == '%'
break
elseif a:l[i] == '"'
let m = matchend(a:l,'"\%([^"\\]\|\\.\)*"',i)
let lastReceive = 0
elseif a:l[i] == "'"
let m = matchend(a:l,"'[^']*'",i)
let lastReceive = 0
elseif a:l[i] =~# "[a-z]"
let m = matchend(a:l,".[[:alnum:]_]*",i)
if lastFun
let ind = ind - 1
let lastFun = 0
let lastReceive = 0
elseif a:l[(i):(m-1)] =~# '^\%(case\|if\|try\)$'
let ind = ind + 1
elseif a:l[(i):(m-1)] =~# '^receive$'
let ind = ind + 1
let lastReceive = 1
elseif a:l[(i):(m-1)] =~# '^begin$'
let ind = ind + 2
let lastReceive = 0
elseif a:l[(i):(m-1)] =~# '^end$'
let ind = ind - 2
let lastReceive = 0
elseif a:l[(i):(m-1)] =~# '^after$'
if lastReceive == 0
let ind = ind - 1
else
let ind = ind + 0
end
let lastReceive = 0
elseif a:l[(i):(m-1)] =~# '^fun$'
let ind = ind + 1
let lastFun = 1
let lastReceive = 0
endif
elseif a:l[i] =~# "[A-Z_]"
let m = matchend(a:l,".[[:alnum:]_]*",i)
let lastReceive = 0
elseif a:l[i] == '$'
let m = i+2
let lastReceive = 0
elseif a:l[i] == "." && (i+1>=length || a:l[i+1]!~ "[0-9]")
let m = i+1
if lastHashMark
let lastHashMark = 0
else
let ind = ind - 1
end
let lastReceive = 0
elseif a:l[i] == '-' && (i+1<length && a:l[i+1]=='>')
let m = i+2
let ind = ind + 1
let lastReceive = 0
elseif a:l[i] == ';'
let m = i+1
let ind = ind - 1
let lastReceive = 0
elseif a:l[i] == '#'
let m = i+1
let lastHashMark = 1
elseif a:l[i] =~# '[({[]'
let m = i+1
let ind = ind + 1
let lastFun = 0
let lastReceive = 0
let lastHashMark = 0
elseif a:l[i] =~# '[)}\]]'
let m = i+1
let ind = ind - 1
let lastReceive = 0
else
let m = i+1
endif
let i = m
endwhile
return ind
endfunction
function s:FindPrevNonBlankNonComment(lnum)
let lnum = prevnonblank(a:lnum)
let line = getline(lnum)
" continue to search above if the current line begins with a '%'
while line =~# '^\s*%.*$'
let lnum = prevnonblank(lnum - 1)
if 0 == lnum
return 0
endif
let line = getline(lnum)
endwhile
return lnum
endfunction
function ErlangIndent()
" Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1)
" Hit the start of the file, use zero indent.
if lnum == 0
return 0
endif
let prevline = getline(lnum)
let currline = getline(v:lnum)
let ind = indent(lnum) + &sw * s:ErlangIndentAtferLine(prevline)
" special cases:
if prevline =~# '^\s*\%(after\|end\)\>'
let ind = ind + 2*&sw
endif
if currline =~# '^\s*end\>'
let ind = ind - 2*&sw
endif
if currline =~# '^\s*after\>'
let plnum = s:FindPrevNonBlankNonComment(v:lnum-1)
if getline(plnum) =~# '^[^%]*\<receive\>\s*\%(%.*\)\=$'
let ind = ind - 1*&sw
" If the 'receive' is not in the same line as the 'after'
else
let ind = ind - 2*&sw
endif
endif
if prevline =~# '^\s*[)}\]]'
let ind = ind + 1*&sw
endif
if currline =~# '^\s*[)}\]]'
let ind = ind - 1*&sw
endif
if prevline =~# '^\s*\%(catch\)\s*\%(%\|$\)'
let ind = ind + 1*&sw
endif
if currline =~# '^\s*\%(catch\)\s*\%(%\|$\)'
let ind = ind - 1*&sw
endif
if ind<0
let ind = 0
endif
return ind
endfunction
" TODO:
"
" f() ->
" x("foo
" bar")
" ,
" bad_indent.
"
" fun
" init/0,
" bad_indent
"
" #rec
" .field,
" bad_indent
"
" case X of
" 1 when A; B ->
" bad_indent

View File

@ -43,7 +43,7 @@ endif
function! GetErubyIndent()
let vcol = col('.')
call cursor(v:lnum,1)
let inruby = searchpair('<%','','%>')
let inruby = searchpair('<%','','%>','W')
call cursor(v:lnum,vcol)
if inruby && getline(v:lnum) !~ '^<%'
let ind = GetRubyIndent()
@ -70,4 +70,4 @@ function! GetErubyIndent()
return ind
endfunction
" vim:set sw=2 sts=2 ts=8 noet ff=unix:
" vim:set sw=2 sts=2 ts=8 noet:

View File

@ -0,0 +1,35 @@
" Vim indent file
" Language: git config file
" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
" Last Change: 2008 Jun 04
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal autoindent
setlocal indentexpr=GetGitconfigIndent()
setlocal indentkeys=o,O,*<Return>,0[,],0;,0#,=,!^F
" Only define the function once.
if exists("*GetGitconfigIndent")
finish
endif
function! GetGitconfigIndent()
let line = getline(prevnonblank(v:lnum-1))
let cline = getline(v:lnum)
if line =~ '\\\@<!\%(\\\\\)*\\$'
" odd number of slashes, in a line continuation
return 2 * &sw
elseif cline =~ '^\s*\['
return 0
elseif cline =~ '^\s*\a'
return &sw
elseif cline == '' && line =~ '^\['
return &sw
else
return -1
endif
endfunction

View File

@ -2,7 +2,7 @@
" Language: Lua script
" Maintainer: Marcus Aurelius Farias <marcus.cf 'at' bol.com.br>
" First Author: Max Ischenko <mfi 'at' ukr.net>
" Last Change: 2005 Jun 23
" Last Change: 2007 Jul 23
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@ -25,33 +25,37 @@ endif
function! GetLuaIndent()
" Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1)
let prevlnum = prevnonblank(v:lnum - 1)
" Hit the start of the file, use zero indent.
if lnum == 0
if prevlnum == 0
return 0
endif
" Add a 'shiftwidth' after lines that start a block:
" 'function', 'if', 'for', 'while', 'repeat', 'else', 'elseif', '{'
let ind = indent(lnum)
let flag = 0
let prevline = getline(lnum)
if prevline =~ '^\s*\%(if\>\|for\>\|while\>\|repeat\>\|else\>\|elseif\>\|do\>\|then\>\)'
\ || prevline =~ '{\s*$' || prevline =~ '\<function\>\s*\%(\k\|[.:]\)\{-}\s*('
let ind = ind + &shiftwidth
let flag = 1
let ind = indent(prevlnum)
let prevline = getline(prevlnum)
let midx = match(prevline, '^\s*\%(if\>\|for\>\|while\>\|repeat\>\|else\>\|elseif\>\|do\>\|then\>\)')
if midx == -1
let midx = match(prevline, '{\s*$')
if midx == -1
let midx = match(prevline, '\<function\>\s*\%(\k\|[.:]\)\{-}\s*(')
endif
endif
" Subtract a 'shiftwidth' after lines ending with
" 'end' when they begin with 'while', 'if', 'for', etc. too.
if flag == 1 && prevline =~ '\<end\>\|\<until\>'
let ind = ind - &shiftwidth
if midx != -1
" Add 'shiftwidth' if what we found previously is not in a comment and
" an "end" or "until" is not present on the same line.
if synIDattr(synID(prevlnum, midx + 1, 1), "name") != "luaComment" && prevline !~ '\<end\>\|\<until\>'
let ind = ind + &shiftwidth
endif
endif
" Subtract a 'shiftwidth' on end, else (and elseif), until and '}'
" This is the part that requires 'indentkeys'.
if getline(v:lnum) =~ '^\s*\%(end\|else\|until\|}\)'
let midx = match(getline(v:lnum), '^\s*\%(end\|else\|until\|}\)')
if midx != -1 && synIDattr(synID(v:lnum, midx + 1, 1), "name") != "luaComment"
let ind = ind - &shiftwidth
endif

View File

@ -0,0 +1,84 @@
" Vim Keymap file for Croatian characters, classical variant, iso-8859-2 encoding
"
" Maintainer: Paul B. Mahol <onemda@gmail.com>
" Last Changed: 2007 Oct 14
scriptencoding iso-8859-2
let b:keymap_name = "croatian-iso-8859-2"
" Uncomment line below if you prefer short name
"let b:keymap_name = "hr-iso-8859-2"
loadkeymap
" swap y and z, not important
z y
Z Y
y z
Y Z
" s<
[ <09>
" S<
{ <09>
" D/
} <09>
" d/
] <09>
" c<
; <09>
" c'
' <09>
" C<
: <09>
" C'
" <09>
" z<
\ <09>
" Z<
| <09>
<EFBFBD> |
<EFBFBD> @
<EFBFBD> \
<EFBFBD> <09>
<EFBFBD> <09>
<EFBFBD> <09>
<EFBFBD> <09>
<EFBFBD> <09>
<EFBFBD> <09>
<EFBFBD> <09>
<EFBFBD> {
<EFBFBD> }
<EFBFBD> [
<EFBFBD> ]
@ "
^ &
& /
* (
( )
) =
_ ?
- '
= +
+ *
/ -
< ;
> :
? _
<EFBFBD> ~
<EFBFBD> <09>
<EFBFBD> <09>
<EFBFBD> <09>
<EFBFBD> ^
<EFBFBD> <09>
<EFBFBD> <09>
<EFBFBD> `
<EFBFBD> <09>
<EFBFBD> <09>
<EFBFBD> <09>
" you still want to be able to type <, >
<EFBFBD> <
<EFBFBD> >
` <09>
<EFBFBD> <09>

View File

@ -0,0 +1,89 @@
" Vim Keymap file for russian characters, layout 'dvorak', MS Windows variant
" Derived from russian-jcuken.vim by Artem Chuprina <ran@ran.pp.ru>
" Useful mainly with utf-8 but may work with other encodings
" Maintainer: Serhiy Boiko <cris.kiev@gmail.com>
" Last Changed: 2007 Jun 29
" All characters are given literally, conversion to another encoding (e.g.,
" UTF-8) should work.
scriptencoding utf-8
let b:keymap_name = "ru"
loadkeymap
~ Ё CYRILLIC CAPITAL LETTER IO
` ё CYRILLIC SMALL LETTER IO
U А CYRILLIC CAPITAL LETTER A
W Б CYRILLIC CAPITAL LETTER BE
E В CYRILLIC CAPITAL LETTER VE
G Г CYRILLIC CAPITAL LETTER GHE
N Д CYRILLIC CAPITAL LETTER DE
Y Е CYRILLIC CAPITAL LETTER IE
S Ж CYRILLIC CAPITAL LETTER ZHE
L З CYRILLIC CAPITAL LETTER ZE
X И CYRILLIC CAPITAL LETTER I
\" Й CYRILLIC CAPITAL LETTER SHORT I
P К CYRILLIC CAPITAL LETTER KA
T Л CYRILLIC CAPITAL LETTER EL
K М CYRILLIC CAPITAL LETTER EM
F Н CYRILLIC CAPITAL LETTER EN
H О CYRILLIC CAPITAL LETTER O
I П CYRILLIC CAPITAL LETTER PE
D Р CYRILLIC CAPITAL LETTER ER
J С CYRILLIC CAPITAL LETTER ES
B Т CYRILLIC CAPITAL LETTER TE
> У CYRILLIC CAPITAL LETTER U
A Ф CYRILLIC CAPITAL LETTER EF
? Х CYRILLIC CAPITAL LETTER HA
< Ц CYRILLIC CAPITAL LETTER TSE
Q Ч CYRILLIC CAPITAL LETTER CHE
C Ш CYRILLIC CAPITAL LETTER SHA
R Щ CYRILLIC CAPITAL LETTER SHCHA
+ Ъ CYRILLIC CAPITAL LETTER HARD SIGN
O Ы CYRILLIC CAPITAL LETTER YERU
M Ь CYRILLIC CAPITAL LETTER SOFT SIGN
_ Э CYRILLIC CAPITAL LETTER E
V Ю CYRILLIC CAPITAL LETTER YU
: Я CYRILLIC CAPITAL LETTER YA
u а CYRILLIC SMALL LETTER A
w б CYRILLIC SMALL LETTER BE
e в CYRILLIC SMALL LETTER VE
g г CYRILLIC SMALL LETTER GHE
n д CYRILLIC SMALL LETTER DE
y е CYRILLIC SMALL LETTER IE
s ж CYRILLIC SMALL LETTER ZHE
l з CYRILLIC SMALL LETTER ZE
x и CYRILLIC SMALL LETTER I
' й CYRILLIC SMALL LETTER SHORT I
p к CYRILLIC SMALL LETTER KA
t л CYRILLIC SMALL LETTER EL
k м CYRILLIC SMALL LETTER EM
f н CYRILLIC SMALL LETTER EN
h о CYRILLIC SMALL LETTER O
i п CYRILLIC SMALL LETTER PE
d р CYRILLIC SMALL LETTER ER
j с CYRILLIC SMALL LETTER ES
b т CYRILLIC SMALL LETTER TE
. у CYRILLIC SMALL LETTER U
a ф CYRILLIC SMALL LETTER EF
/ х CYRILLIC SMALL LETTER HA
, ц CYRILLIC SMALL LETTER TSE
q ч CYRILLIC SMALL LETTER CHE
c ш CYRILLIC SMALL LETTER SHA
r щ CYRILLIC SMALL LETTER SHCHA
= ъ CYRILLIC SMALL LETTER HARD SIGN
o ы CYRILLIC SMALL LETTER YERU
m ь CYRILLIC SMALL LETTER SOFT SIGN
- э CYRILLIC SMALL LETTER E
v ю CYRILLIC SMALL LETTER YU
; я CYRILLIC SMALL LETTER YA
@ "
# № NUMERO SIGN
$ ;
^ :
& ?
z .
Z ,
[ -
] =

View File

@ -1,8 +1,8 @@
" Vim Keymap file for russian characters, phonetic layout 'yawerty'
" Useful mainly with utf-8 but may work with other encodings
" Maintainer: Igor Goldenberg <igold@igold.pp.ru>
" Last Changed: 2002 Jan 14
" Maintainer: Igor Goldenberg <igogold@gmail.com>
" Last Changed: 2007 Aug 15
" All characters are given literally, conversion to another encoding (e.g.,
" UTF-8) should work.
@ -17,7 +17,7 @@ W В CYRILLIC CAPITAL LETTER VE
G Г CYRILLIC CAPITAL LETTER GHE
D Д CYRILLIC CAPITAL LETTER DE
E Е CYRILLIC CAPITAL LETTER IE
& Ё CYRILLIC CAPITAL LETTER IO
$ Ё CYRILLIC CAPITAL LETTER IO
V Ж CYRILLIC CAPITAL LETTER ZHE
Z З CYRILLIC CAPITAL LETTER ZE
I И CYRILLIC CAPITAL LETTER I
@ -38,7 +38,7 @@ C Ц CYRILLIC CAPITAL LETTER TSE
+ Ч CYRILLIC CAPITAL LETTER CHE
{ Ш CYRILLIC CAPITAL LETTER SHA
} Щ CYRILLIC CAPITAL LETTER SHCHA
$ Ъ CYRILLIC CAPITAL LETTER HARD SIGN
^ Ъ CYRILLIC CAPITAL LETTER HARD SIGN
Y Ы CYRILLIC CAPITAL LETTER YERU
X Ь CYRILLIC CAPITAL LETTER SOFT SIGN
| Э CYRILLIC CAPITAL LETTER E
@ -50,7 +50,7 @@ w в CYRILLIC SMALL LETTER VE
g г CYRILLIC SMALL LETTER GHE
d д CYRILLIC SMALL LETTER DE
e е CYRILLIC SMALL LETTER IE
^ ё CYRILLIC SMALL LETTER IO
# ё CYRILLIC SMALL LETTER IO
v ж CYRILLIC SMALL LETTER ZHE
z з CYRILLIC SMALL LETTER ZE
i и CYRILLIC SMALL LETTER I
@ -71,7 +71,7 @@ c ц CYRILLIC SMALL LETTER TSE
= ч CYRILLIC SMALL LETTER CHE
[ ш CYRILLIC SMALL LETTER SHA
] щ CYRILLIC SMALL LETTER SHCHA
# ъ CYRILLIC SMALL LETTER HARD SIGN
% ъ CYRILLIC SMALL LETTER HARD SIGN
y ы CYRILLIC SMALL LETTER YERU
x ь CYRILLIC SMALL LETTER SOFT SIGN
\\ э CYRILLIC SMALL LETTER E

View File

@ -0,0 +1,92 @@
" Vim Keymap file for ukrainian characters, layout 'dvorak',
" MS Windows variant
" Derived from ukrainian-jcuken.vim by Anatoli Sakhnik <sakhnik@gmail.com>
" Useful mainly with utf-8 but may work with other encodings
" Maintainer: Serhiy Boiko <cris.kiev@gmail.com>
" Last Changed: 2007 Jun 29
" All characters are given literally, conversion to another encoding (e.g.,
" UTF-8) should work.
scriptencoding utf-8
let b:keymap_name = "uk"
loadkeymap
~ ~ CYRILLIC CAPITAL LETTER IO
` ' CYRILLIC SMALL LETTER IO
U А CYRILLIC CAPITAL LETTER A
W Б CYRILLIC CAPITAL LETTER BE
E В CYRILLIC CAPITAL LETTER VE
G Г CYRILLIC CAPITAL LETTER GHE
N Д CYRILLIC CAPITAL LETTER DE
Y Е CYRILLIC CAPITAL LETTER IE
S Ж CYRILLIC CAPITAL LETTER ZHE
L З CYRILLIC CAPITAL LETTER ZE
X И CYRILLIC CAPITAL LETTER I
\" Й CYRILLIC CAPITAL LETTER SHORT I
P К CYRILLIC CAPITAL LETTER KA
T Л CYRILLIC CAPITAL LETTER EL
K М CYRILLIC CAPITAL LETTER EM
F Н CYRILLIC CAPITAL LETTER EN
H О CYRILLIC CAPITAL LETTER O
I П CYRILLIC CAPITAL LETTER PE
D Р CYRILLIC CAPITAL LETTER ER
J С CYRILLIC CAPITAL LETTER ES
B Т CYRILLIC CAPITAL LETTER TE
> У CYRILLIC CAPITAL LETTER U
A Ф CYRILLIC CAPITAL LETTER EF
? Х CYRILLIC CAPITAL LETTER HA
< Ц CYRILLIC CAPITAL LETTER TSE
Q Ч CYRILLIC CAPITAL LETTER CHE
C Ш CYRILLIC CAPITAL LETTER SHA
R Щ CYRILLIC CAPITAL LETTER SHCHA
+ Ї CYRILLIC CAPITAL LETTER YI
O І CYRILLIC CAPITAL LETTER BYELORUSSION-UKRAINIAN I
M Ь CYRILLIC CAPITAL LETTER SOFT SIGN
_ Є CYRILLIC CAPITAL LETTER UKRAINIAN IE
V Ю CYRILLIC CAPITAL LETTER YU
: Я CYRILLIC CAPITAL LETTER YA
| Ґ CYRILLIC CAPITAL LETTER GHE WITH UPTURN
u а CYRILLIC SMALL LETTER A
w б CYRILLIC SMALL LETTER BE
e в CYRILLIC SMALL LETTER VE
g г CYRILLIC SMALL LETTER GHE
n д CYRILLIC SMALL LETTER DE
y е CYRILLIC SMALL LETTER IE
s ж CYRILLIC SMALL LETTER ZHE
l з CYRILLIC SMALL LETTER ZE
x и CYRILLIC SMALL LETTER I
' й CYRILLIC SMALL LETTER SHORT I
p к CYRILLIC SMALL LETTER KA
t л CYRILLIC SMALL LETTER EL
k м CYRILLIC SMALL LETTER EM
f н CYRILLIC SMALL LETTER EN
h о CYRILLIC SMALL LETTER O
i п CYRILLIC SMALL LETTER PE
d р CYRILLIC SMALL LETTER ER
j с CYRILLIC SMALL LETTER ES
b т CYRILLIC SMALL LETTER TE
. у CYRILLIC SMALL LETTER U
a ф CYRILLIC SMALL LETTER EF
/ х CYRILLIC SMALL LETTER HA
, ц CYRILLIC SMALL LETTER TSE
q ч CYRILLIC SMALL LETTER CHE
c ш CYRILLIC SMALL LETTER SHA
r щ CYRILLIC SMALL LETTER SHCHA
= ї CYRILLIC SMALL LETTER YI
o і CYRILLIC SMALL LETTER BYELORUSSION-UKRAINIAN I
m ь CYRILLIC SMALL LETTER SOFT SIGN
- є CYRILLIC SMALL LETTER UKRAINIAN IE
v ю CYRILLIC SMALL LETTER YU
; я CYRILLIC SMALL LETTER YA
\\ ґ CYRILLIC SMALL LETTER GHE WITH UPTURN
@ "
# № NUMERO SIGN
$ ;
^ :
& ?
z .
Z ,
[ -
] =

View File

@ -0,0 +1,3 @@
" Menu Translations: Esperanto for UTF-8 encoding
source <sfile>:p:h/menu_eo.utf-8.vim

View File

@ -0,0 +1,3 @@
" Menu Translations: Finnish for UTF-8 encoding
source <sfile>:p:h/menu_fi_fi.latin1.vim

View File

@ -1,6 +1,6 @@
" Vim Plugin: Edit the file with an existing Vim if possible
" Maintainer: Bram Moolenaar
" Last Change: 2007 Mar 17
" Last Change: 2008 May 29
" This is a plugin, drop it in your (Unix) ~/.vim/plugin or (Win32)
" $VIM/vimfiles/plugin directory. Or make a symbolic link, so that you
@ -13,6 +13,9 @@
" 2. When a file is edited and a swap file exists for it, try finding that
" other Vim and bring it to the foreground. Requires Vim 7, because it
" uses the SwapExists autocommand event.
if v:version < 700
finish
endif
" Function that finds the Vim instance that is editing "filename" and brings
" it to the foreground.
@ -102,8 +105,10 @@ func! EditExisting(fname, command)
if winnr > 0
exe winnr . "wincmd w"
elseif exists('*fnameescape')
exe "split " . fnameescape(a:fname)
else
exe "split " . escape(a:fname, ' #%"|')
exe "split " . escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
endif
if a:command != ''

View File

@ -1,6 +1,6 @@
" zipPlugin.vim: Handles browsing zipfiles
" PLUGIN PORTION
" Date: Jul 18, 2006
" Date: Oct 05, 2007
" Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005,2006 Charles E. Campbell, Jr. {{{1
@ -20,7 +20,7 @@
if &cp || exists("g:loaded_zipPlugin")
finish
endif
let g:loaded_zipPlugin = 1
let g:loaded_zipPlugin = "v18"
let s:keepcpo = &cpo
set cpo&vim
@ -40,7 +40,7 @@ augroup zip
au FileWriteCmd zipfile:*/* call zip#Write(expand("<amatch>"))
endif
au BufReadCmd *.zip call zip#Browse(expand("<amatch>"))
au BufReadCmd *.zip,*.jar,*.xpi,*.war,*.ear call zip#Browse(expand("<amatch>"))
augroup END
" ---------------------------------------------------------------------

View File

@ -19,8 +19,8 @@ $SPELLDIR/nl.utf-8.spl : $FILES
:sys env LANG=nl_NL.UTF-8
$VIM -u NONE -e -c "mkspell! $SPELLDIR/nl nl_NL" -c q
../README_nl.txt : README_nl_NL.txt
:copy $source $target
../README_nl.txt : README_nl_NL.txt README_vim.txt
:cat $source >! $target
#
# Fetching the files from OpenOffice.org.

File diff suppressed because it is too large Load Diff

View File

@ -1,15 +1,38 @@
*** pt_PT.orig.aff Mon Apr 16 15:20:13 2007
--- pt_PT.aff Mon Apr 16 15:52:13 2007
*** pt_PT.orig.aff 2008-02-21 19:40:49.000000000 -0300
--- pt_PT.aff 2008-02-24 11:14:39.000000000 -0300
***************
*** 3,4 ****
--- 3,7 ----
*** 1,4 ****
SET ISO8859-1
- TRY aerisontcdmlupvgbfz<66>h<EFBFBD>qj<71>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ACMPSBTELGRIFVDkHJON<4F>ywUKXZWQ<57>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--- 1,17 ----
SET ISO8859-1
+ NAME European Portuguese
+ VERSION 2008-03-20
+ HOME http://natura.di.uminho.pt/
+ AUTHOR Rui Vilela
+ EMAIL ruivilela AT di DOT uminho DOT pt
+ AUTHOR Jos<6F> Jo<4A>o de Almeira
+ EMAIL jj AT di DOT uminho DOT pt
+ AUTHOR Alberto Sim<69>es
+ EMAIL ambs AT di DOT uminho DOT pt
+ COPYRIGHT GPL, LGPL, MPL
+
+ FOL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
+ LOW <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
+ UPP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
***************
*** 1065,1078 ****
*** 1047,1048 ****
--- 1060,1063 ----
SFX J e <20>dromo e
+
+
REP 24
***************
*** 1073,1086 ****
! MAP 11
! MAP a<>
@ -24,7 +47,7 @@
! MAP o<>
! MAP u<>
!
--- 1068,1075 ----
--- 1088,1095 ----
! MAP 6
! MAP a<><61><EFBFBD>A<EFBFBD><41><EFBFBD>

View File

@ -1,7 +1,7 @@
" Vim syntax file
" Language: GNU Arch inventory file
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2007-05-06
" Latest Revision: 2007-06-17
if exists("b:current_syntax")
finish
@ -10,7 +10,7 @@ endif
let s:cpo_save = &cpo
set cpo&vim
setlocal iskeyword=@,48-57,_,-
setlocal iskeyword+=-
syn keyword archTodo TODO FIXME XXX NOTE

View File

@ -1,9 +1,15 @@
" Vim syntax file
" Language: automake Makefile.am
" Maintainer: Felipe Contreras <felipe.contreras@gmail.com>
" Former Maintainer: John Williams <jrw@pobox.com>
" Last Change: $LastChangedDate: 2006-04-16 22:06:40 -0400 (dom, 16 apr 2006) $
" URL: http://svn.debian.org/wsvn/pkg-vim/trunk/runtime/syntax/automake.vim?op=file&rev=0&sc=0
" Language: automake Makefile.am
" Maintainer: Debian VIM Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainer: John Williams <jrw@pobox.com>
" Last Change: 2007-10-14
" URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/syntax/automake.vim;hb=debian
"
" XXX This file is in need of a new maintainer, Debian VIM Maintainers maintain
" it only because patches have been submitted for it by Debian users and the
" former maintainer was MIA (Missing In Action), taking over its
" maintenance was thus the only way to include those patches.
" If you care about this file, and have time to maintain it please do so!
"
" This script adds support for automake's Makefile.am format. It highlights
" Makefile variables significant to automake as well as highlighting
@ -19,18 +25,11 @@ else
runtime! syntax/make.vim
endif
syn match automakePrimary "^[A-Za-z0-9_]\+_\(PROGRAMS\|LIBRARIES\|LISP\|PYTHON\|JAVA\|SCRIPTS\|DATA\|HEADERS\|MANS\|TEXINFOS\|LTLIBRARIES\)\s*="me=e-1
syn match automakeSecondary "^[A-Za-z0-9_]\+_\(SOURCES\|AR\|LIBADD\|LDADD\|LDFLAGS\|DEPENDENCIES\|LINK\|SHORTNAME\)\s*="me=e-1
syn match automakeSecondary "^[A-Za-z0-9_]\+_\(CCASFLAGS\|CFLAGS\|CPPFLAGS\|CXXFLAGS\|FFLAGS\|GCJFLAGS\|LFLAGS\|OBJCFLAGS\|RFLAGS\|YFLAGS\)\s*="me=e-1
syn match automakeExtra "^EXTRA_DIST\s*="me=e-1
syn match automakeExtra "^EXTRA_PROGRAMS\s*="me=e-1
syn match automakeExtra "^EXTRA_[A-Za-z0-9_]\+_SOURCES\s*="me=e-1
" TODO: Check these:
syn match automakePrimary "^[A-Za-z0-9_]\+\(_PROGRAMS\|LIBRARIES\|_LIST\|_SCRIPTS\|_DATA\|_HEADERS\|_MANS\|_TEXINFOS\|_JAVA\|_LTLIBRARIES\)\s*="me=e-1
syn match automakePrimary "^TESTS\s*="me=e-1
syn match automakeSecondary "^[A-Za-z0-9_]\+\(_SOURCES\|_LDADD\|_LIBADD\|_LDFLAGS\|_DEPENDENCIES\|_CPPFLAGS\)\s*="me=e-1
syn match automakeSecondary "^OMIT_DEPENDENCIES\s*="me=e-1
syn match automakeExtra "^EXTRA_[A-Za-z0-9_]\+\s*="me=e-1
syn match automakeOptions "^\(AUTOMAKE_OPTIONS\|ETAGS_ARGS\|TAGS_DEPENDENCIES\)\s*="me=e-1
syn match automakeClean "^\(MOSTLY\|DIST\|MAINTAINER\)\=CLEANFILES\s*="me=e-1
syn match automakeSubdirs "^\(DIST_\)\=SUBDIRS\s*="me=e-1

View File

@ -1,7 +1,8 @@
" Vim syntax file
" Language: B (A Formal Method with refinement and mathematical proof)
" Maintainer: Mathieu Clabaut <mathieu.clabaut@free.fr>
" LastChange: 25 Apr 2001
" Maintainer: Mathieu Clabaut <mathieu.clabaut@gmail.com>
" Contributor: Csaba Hoch
" LastChange: 8 Dec 2007
" For version 5.x: Clear all syntax items
@ -14,20 +15,20 @@ endif
" A bunch of useful B keywords
syn keyword bStatement MACHINE SEES OPERATIONS INCLUDES DEFINITIONS CONSTRAINTS CONSTANTS VARIABLES CONCRETE_CONSTANTS CONCRETE_VARIABLES ABSTRACT_CONSTANTS ABSTRACT_VARIABLES HIDDEN_CONSTANTS HIDDEN_VARIABLES ASSERT ASSERTIONS EXTENDS IMPLEMENTATION REFINEMENT IMPORTS USES INITIALISATION INVARIANT PROMOTES PROPERTIES REFINES SETS VALUES VARIANT VISIBLE_CONSTANTS VISIBLE_VARIABLES THEORY
syn keyword bStatement MACHINE MODEL SEES OPERATIONS INCLUDES DEFINITIONS CONSTRAINTS CONSTANTS VARIABLES CONCRETE_CONSTANTS CONCRETE_VARIABLES ABSTRACT_CONSTANTS ABSTRACT_VARIABLES HIDDEN_CONSTANTS HIDDEN_VARIABLES ASSERT ASSERTIONS EXTENDS IMPLEMENTATION REFINEMENT IMPORTS USES INITIALISATION INVARIANT PROMOTES PROPERTIES REFINES SETS VALUES VARIANT VISIBLE_CONSTANTS VISIBLE_VARIABLES THEORY XLS THEOREMS LOCAL_OPERATIONS
syn keyword bLabel CASE IN EITHER OR CHOICE DO OF
syn keyword bConditional IF ELSE SELECT ELSIF THEN WHEN
syn keyword bRepeat WHILE FOR
syn keyword bOps bool card conc closure closure1 dom first fnc front not or id inter iseq iseq1 iterate last max min mod perm pred prj1 prj2 ran rel rev seq seq1 size skip succ tail union
syn keyword bKeywords LET VAR BE IN BEGIN END POW POW1 FIN FIN1 PRE SIGMA STRING UNION IS ANY WHERE
syn match bKeywords "||"
syn keyword bBoolean TRUE FALSE bfalse btrue
syn keyword bConstant PI MAXINT MININT User_Pass PatchProver PatchProverH0 PatchProverB0 FLAT ARI DED SUB RES
syn keyword bGuard binhyp band bnot bguard bsearch bflat bfresh bguardi bget bgethyp barith bgetresult bresult bgoal bmatch bmodr bnewv bnum btest bpattern bprintf bwritef bsubfrm bvrb blvar bcall bappend bclose
syn keyword bLogic or not
syn match bLogic "\&\|=>\|<=>"
syn match bLogic "\(!\|#\|%\|&\|+->>\|+->\|-->>\|->>\|-->\|->\|/:\|/<:\|/<<:\|/=\|/\\\|/|\\\|::\|:\|;:\|<+\|<->\|<--\|<-\|<:\|<<:\|<<|\|<=>\|<|\|==\|=>\|>+>>\|>->\|>+>\|||\||->\)"
syn match bNothing /:=/
syn keyword cTodo contained TODO FIXME XXX
@ -51,23 +52,8 @@ syn match bNumber "\<[0-9]\+\>"
"syn match bIdentifier "\<[a-z_][a-z0-9_]*\>"
syn case match
if exists("b_comment_strings")
" A comment can contain bString, bCharacter and bNumber.
" But a "*/" inside a bString in a bComment DOES end the comment! So we
" need to use a special type of bString: bCommentString, which also ends on
" "*/", and sees a "*" at the start of the line as comment again.
" Unfortunately this doesn't very well work for // type of comments :-(
syntax match bCommentSkip contained "^\s*\*\($\|\s\+\)"
syntax region bCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=bSpecial,bCommentSkip
syntax region bComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=bSpecial
syntax region bComment start="/\*" end="\*/" contains=bTodo,bCommentString,bCharacter,bNumber,bFloat
syntax region bComment start="/\?\*" end="\*\?/" contains=bTodo,bCommentString,bCharacter,bNumber,bFloat
syntax match bComment "//.*" contains=bTodo,bComment2String,bCharacter,bNumber
else
syn region bComment start="/\*" end="\*/" contains=bTodo
syn region bComment start="/\?\*" end="\*\?/" contains=bTodo
syn match bComment "//.*" contains=bTodo
endif
syntax match bCommentError "\*/"
syn keyword bType INT INTEGER BOOL NAT NATURAL NAT1 NATURAL1
@ -80,7 +66,6 @@ syn match bInclude "^\s*#\s*include\>\s*["<]" contains=bIncluded
syn region bDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,bPreCondit,bIncluded,bInclude,bDefine,bInParen
syn region bPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,bPreCondit,bIncluded,bInclude,bDefine,bInParen
syn sync ccomment bComment minlines=10
" Define the default highlighting.

View File

@ -1,7 +1,7 @@
" Vim syntax file
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2007 Feb 13
" Last Change: 2008 Mar 19
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@ -65,12 +65,17 @@ if exists("c_space_errors")
endif
" This should be before cErrInParen to avoid problems with #define ({ xxx })
syntax region cBlock start="{" end="}" transparent fold
if exists("c_curly_error")
syntax match cCurlyError "}"
syntax region cBlock start="{" end="}" contains=ALLBUT,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell fold
else
syntax region cBlock start="{" end="}" transparent fold
endif
"catch errors caused by wrong parenthesis and brackets
" also accept <% for {, %> for }, <: for [ and :> for ] (C99)
" But avoid matching <::.
syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cCommentSkip,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
if exists("c_no_curly_error")
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
@ -144,9 +149,9 @@ if exists("c_comment_strings")
else
syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cSpaceError,@Spell
if exists("c_no_comment_fold")
syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell
syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell extend
else
syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell fold
syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell fold extend
endif
endif
" keep a // comment separately, it terminates a preproc. conditional
@ -203,7 +208,7 @@ if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX
if !exists("c_no_c99")
syn keyword cConstant __func__
syn keyword cConstant LLONG_MAX ULLONG_MAX
syn keyword cConstant LLONG_MIN LLONG_MAX ULLONG_MAX
syn keyword cConstant INT8_MIN INT16_MIN INT32_MIN INT64_MIN
syn keyword cConstant INT8_MAX INT16_MAX INT32_MAX INT64_MAX
syn keyword cConstant UINT8_MAX UINT16_MAX UINT32_MAX UINT64_MAX
@ -304,7 +309,11 @@ else
let b:c_minlines = 15 " mostly for () constructs
endif
endif
exec "syn sync ccomment cComment minlines=" . b:c_minlines
if exists("c_curly_error")
syn sync fromstart
else
exec "syn sync ccomment cComment minlines=" . b:c_minlines
endif
" Define the default highlighting.
" Only used when an item doesn't have highlighting yet
@ -330,6 +339,7 @@ hi def link cCommentError cError
hi def link cCommentStartError cError
hi def link cSpaceError cError
hi def link cSpecialError cError
hi def link cCurlyError cError
hi def link cOperator Operator
hi def link cStructure Structure
hi def link cStorageClass StorageClass

View File

@ -1,7 +1,7 @@
" Vim syntax file
" Language: ColdFusion
" Maintainer: Toby Woodwark (toby.woodwark+vim@gmail.com)
" Last Change: 2005 Nov 25
" Last Change: 2007 Nov 19
" Filenames: *.cfc *.cfm
" Version: Macromedia ColdFusion MX 7
" Usage: Note that ColdFusion has its own comment syntax
@ -28,137 +28,193 @@ syn sync maxlines=200
syn case ignore
" Scopes and keywords.
syn keyword cfScope contained cgi cffile request caller this thistag cfcatch variables application server session client form url attributes arguments
syn keyword cfScope contained cgi cffile cookie request caller this thistag
syn keyword cfScope contained cfcatch variables application server session client form url attributes
syn keyword cfScope contained arguments
syn keyword cfBool contained yes no true false
" Operator strings.
" Not exhaustive, since there are longhand equivalents.
syn keyword cfOperator contained xor eqv and or lt le lte gt ge gte eq neq not is mod contains
syn keyword cfOperator contained xor eqv and or lt le lte gt ge gte equal eq neq not is mod contains
syn match cfOperatorMatch contained "\<does\_s\+not\_s\+contain\>"
syn match cfOperatorMatch contained "\<\(greater\|less\)\_s\+than\(\_s\+or\_s\+equal\_s\+to\)\?\>"
syn match cfOperatorMatch contained "[\+\-\*\/\\\^\&][\+\-\*\/\\\^\&]\@!"
syn cluster cfOperatorCluster contains=cfOperator,cfOperatorMatch
" Tag names.
syn keyword cfTagName contained cfabort cfapplet cfapplication cfargument cfassociate cfbreak cfcache
syn keyword cfTagName contained cfcalendar cfcase cfcatch cfchart cfchartdata cfchartseries cfcol cfcollection
syn keyword cfTagName contained cfcomponent cfcontent cfcookie cfdefaultcase cfdirectory cfdocument
syn keyword cfTagName contained cfdocumentitem cfdocumentsection cfdump cfelse cfelseif cferror cfexecute
syn keyword cfTagName contained cfexit cffile cfflush cfform cfformgroup cfformitem cfftp cffunction cfgrid
syn keyword cfTagName contained cfgridcolumn cfgridrow cfgridupdate cfheader cfhtmlhead cfhttp cfhttpparam cfif
syn keyword cfTagName contained cfimport cfinclude cfindex cfinput cfinsert cfinvoke cfinvokeargument
syn keyword cfTagName contained cfldap cflocation cflock cflog cflogin cfloginuser cflogout cfloop cfmail
syn keyword cfTagName contained cfmailparam cfmailpart cfmodule cfNTauthenticate cfobject cfobjectcache
syn keyword cfTagName contained cfoutput cfparam cfpop cfprocessingdirective cfprocparam cfprocresult
syn keyword cfTagName contained cfproperty cfquery cfqueryparam cfregistry cfreport cfreportparam cfrethrow
syn keyword cfTagName contained cfreturn cfsavecontent cfschedule cfscript cfsearch cfselect cfset cfsetting
syn keyword cfTagName contained cfsilent cfslider cfstoredproc cfswitch cftable cftextarea cfthrow cftimer
syn keyword cfTagName contained cftrace cftransaction cftree cftreeitem cftry cfupdate cfwddx cfxml
syn keyword cfTagName contained cfabort cfapplet cfapplication cfargument cfassociate
syn keyword cfTagName contained cfbreak cfcache cfcalendar cfcase cfcatch
syn keyword cfTagName contained cfchart cfchartdata cfchartseries cfcol cfcollection
syn keyword cfTagName contained cfcomponent cfcontent cfcookie cfdefaultcase cfdirectory
syn keyword cfTagName contained cfdocument cfdocumentitem cfdocumentsection cfdump cfelse
syn keyword cfTagName contained cfelseif cferror cfexecute cfexit cffile cfflush cfform
syn keyword cfTagName contained cfformgroup cfformitem cfftp cffunction cfgraph cfgraphdata
syn keyword cfTagName contained cfgrid cfgridcolumn cfgridrow cfgridupdate cfheader
syn keyword cfTagName contained cfhtmlhead cfhttp cfhttpparam cfif cfimport
syn keyword cfTagName contained cfinclude cfindex cfinput cfinsert cfinvoke cfinvokeargument
syn keyword cfTagName contained cfldap cflocation cflock cflog cflogin cfloginuser cflogout
syn keyword cfTagName contained cfloop cfmail cfmailparam cfmailpart cfmodule
syn keyword cfTagName contained cfNTauthenticate cfobject cfobjectcache cfoutput cfparam
syn keyword cfTagName contained cfpop cfprocessingdirective cfprocparam cfprocresult
syn keyword cfTagName contained cfproperty cfquery cfqueryparam cfregistry cfreport
syn keyword cfTagName contained cfreportparam cfrethrow cfreturn cfsavecontent cfschedule
syn keyword cfTagName contained cfscript cfsearch cfselect cfservlet cfservletparam cfset
syn keyword cfTagName contained cfsetting cfsilent cfslider cfstoredproc cfswitch cftable
syn keyword cfTagName contained cftextarea cftextinput cfthrow cftimer cftrace cftransaction
syn keyword cfTagName contained cftree cftreeitem cftry cfupdate cfwddx cfxml
" Tag parameters.
syn keyword cfArg contained abort accept access accessible action addnewline addtoken addtoken agentname
syn keyword cfArg contained align appendkey appletsource application applicationtimeout applicationtoken
syn keyword cfArg contained archive argumentcollection arguments asciiextensionlist attachmentpath
syn keyword cfArg contained attributecollection attributes attributes autowidth backgroundcolor
syn keyword cfArg contained backgroundvisible basetag bcc bgcolor bind bindingname blockfactor body bold
syn keyword cfArg contained border branch cachedafter cachedwithin casesensitive categories category
syn keyword cfArg contained categorytree cc cfsqltype charset chartheight chartwidth checked class
syn keyword cfArg contained clientmanagement clientstorage codebase colheaderalign colheaderbold
syn keyword cfArg contained colheaderfont colheaderfontsize colheaderitalic colheaders colheadertextcolor
syn keyword cfArg contained collection colorlist colspacing columns completepath component condition
syn keyword cfArg contained connection contentid context contextbytes contexthighlightbegin
syn keyword cfArg contained contexthighlightend contextpassages cookiedomain criteria custom1 custom2
syn keyword cfArg contained custom3 custom4 data dataalign databackgroundcolor datacollection
syn keyword cfArg contained datalabelstyle datasource date daynames dbname dbserver dbtype dbvarname debug
syn keyword cfArg contained default delete deletebutton deletefile delimiter delimiters description
syn keyword cfArg contained destination detail directory disabled display displayname disposition dn domain
syn keyword cfArg contained enablecab enablecfoutputonly enabled encoded encryption enctype enddate
syn keyword cfArg contained endrange endrow endtime entry errorcode exception existing expand expires
syn keyword cfArg contained expireurl expression extendedinfo extends extensions external failifexists
syn keyword cfArg contained failto file filefield filename filter firstdayofweek firstrowasheaders font
syn keyword cfArg contained fontbold fontembed fontitalic fontsize foregroundcolor format formfields
syn keyword cfArg contained formula from generateuniquefilenames getasbinary grid griddataalign gridlines
syn keyword cfArg contained groovecolor group groupcasesensitive header headeralign headerbold headerfont
syn keyword cfArg contained headerfontsize headeritalic headerlines headertextcolor height highlighthref
syn keyword cfArg contained hint href hrefkey hscroll hspace htmltable id idletimeout img imgopen imgstyle
syn keyword cfArg contained index inline input insert insertbutton interval isolation italic item
syn keyword cfArg contained itemcolumn key keyonly label labelformat language list listgroups locale
syn keyword cfArg contained localfile log loginstorage lookandfeel mailerid mailto marginbottom marginleft
syn keyword cfArg contained marginright marginright margintop markersize markerstyle mask maxlength maxrows
syn keyword cfArg contained message messagenumber method mimeattach mimetype mode modifytype monthnames
syn keyword cfArg contained multipart multiple name namecomplict nameconflict namespace new newdirectory
syn keyword cfArg contained notsupported null numberformat object omit onchange onclick onerror onkeydown
syn keyword cfArg contained onkeyup onload onmousedown onmouseup onreset onsubmit onvalidate operation
syn keyword cfArg contained orderby orientation output outputfile overwrite ownerpassword pageencoding
syn keyword cfArg contained pageheight pagetype pagewidth paintstyle param_1 param_2 param_3 param_4
syn keyword cfArg contained param_5 parent passive passthrough password path pattern permissions picturebar
syn keyword cfArg contained pieslicestyle port porttypename prefix preloader preservedata previouscriteria
syn keyword cfArg contained procedure protocol provider providerdsn proxybypass proxypassword proxyport
syn keyword cfArg contained proxyserver proxyuser publish query queryasroot queryposition range rebind
syn keyword cfArg contained recurse redirect referral refreshlabel remotefile replyto report requesttimeout
syn keyword cfArg contained required reset resolveurl result resultset retrycount returnasbinary returncode
syn keyword cfArg contained returntype returnvariable roles rowheaderalign rowheaderbold rowheaderfont
syn keyword cfArg contained rowheaderfontsize rowheaderitalic rowheaders rowheadertextcolor rowheaderwidth
syn keyword cfArg contained rowheight scale scalefrom scaleto scope scriptprotect scriptsrc secure
syn keyword cfArg contained securitycontext select selectcolor selected selecteddate selectedindex
syn keyword cfArg contained selectmode separator seriescolor serieslabel seriesplacement server serviceport
syn keyword cfArg contained serviceportname sessionmanagement sessiontimeout setclientcookies setcookie
syn keyword cfArg contained setdomaincookies show3d showborder showdebugoutput showerror showlegend
syn keyword cfArg contained showmarkers showxgridlines showygridlines size skin sort sortascendingbutton
syn keyword cfArg contained sortcontrol sortdescendingbutton sortxaxis source spoolenable sql src start
syn keyword cfArg contained startdate startrange startrow starttime status statuscode statustext step
syn keyword cfArg contained stoponerror style subject suggestions suppresswhitespace tablename tableowner
syn keyword cfArg contained tablequalifier taglib target task template text textcolor textqualifier
syn keyword cfArg contained thread throwonerror throwonfailure throwontimeout time timeout timespan tipbgcolor tipstyle
syn keyword cfArg contained title to tooltip top toplevelvariable transfermode type uid unit url urlpath
syn keyword cfArg contained useragent username userpassword usetimezoneinfo validate validateat value
syn keyword cfArg contained valuecolumn values valuesdelimiter valuesdisplay var variable vertical visible
syn keyword cfArg contained vscroll vspace webservice width wmode wraptext wsdlfile xaxistitle xaxistype
syn keyword cfArg contained xoffset yaxistitle yaxistype yoffset
syn keyword cfArg contained abort accept access accessible action addnewline addtoken
syn keyword cfArg contained agentname align appendkey appletsource application
syn keyword cfArg contained applicationtimeout applicationtoken archive
syn keyword cfArg contained argumentcollection arguments asciiextensionlist
syn keyword cfArg contained attachmentpath attributecollection attributes autowidth
syn keyword cfArg contained backgroundvisible basetag bcc bgcolor bind bindingname
syn keyword cfArg contained blockfactor body bold border branch cachedafter cachedwithin
syn keyword cfArg contained casesensitive category categorytree cc cfsqltype charset
syn keyword cfArg contained chartheight chartwidth checked class clientmanagement
syn keyword cfArg contained clientstorage codebase colheaderalign colheaderbold
syn keyword cfArg contained colheaderfont colheaderfontsize colheaderitalic colheaders
syn keyword cfArg contained colheadertextcolor collection colorlist colspacing columns
syn keyword cfArg contained completepath component condition connection contentid
syn keyword cfArg contained context contextbytes contexthighlightbegin
syn keyword cfArg contained contexthighlightend contextpassages cookiedomain criteria
syn keyword cfArg contained custom1 custom2 custom3 custom4 data dataalign
syn keyword cfArg contained databackgroundcolor datacollection datasource daynames
syn keyword cfArg contained dbname dbserver dbtype dbvarname debug default delete
syn keyword cfArg contained deletebutton deletefile delimiter delimiters description
syn keyword cfArg contained destination detail directory disabled display displayname
syn keyword cfArg contained disposition dn domain editable enablecab enablecfoutputonly
syn keyword cfArg contained enabled encoded encryption enctype enddate endrange endtime
syn keyword cfArg contained entry errorcode exception existing expand expires expireurl
syn keyword cfArg contained expression extendedinfo extends extensions external
syn keyword cfArg contained failifexists failto file filefield filename filter
syn keyword cfArg contained firstdayofweek firstrowasheaders fixnewline font fontbold
syn keyword cfArg contained fontembed fontitalic fontsize foregroundcolor format
syn keyword cfArg contained formfields formula from generateuniquefilenames getasbinary
syn keyword cfArg contained grid griddataalign gridlines groovecolor group
syn keyword cfArg contained groupcasesensitive header headeralign headerbold headerfont
syn keyword cfArg contained headerfontsize headeritalic headerlines headertextcolor
syn keyword cfArg contained height highlighthref hint href hrefkey hscroll hspace html
syn keyword cfArg contained htmltable id idletimeout img imgopen imgstyle index inline
syn keyword cfArg contained input insert insertbutton interval isolation italic item
syn keyword cfArg contained itemcolumn key keyonly label labelformat language list
syn keyword cfArg contained listgroups locale localfile log loginstorage lookandfeel
syn keyword cfArg contained mailerid mailto marginbottom marginleft marginright
syn keyword cfArg contained margintop markersize markerstyle mask max maxlength maxrows
syn keyword cfArg contained message messagenumber method mimeattach mimetype min mode
syn keyword cfArg contained modifytype monthnames multipart multiple name nameconflict
syn keyword cfArg contained namespace new newdirectory notsupported null numberformat
syn keyword cfArg contained object omit onblur onchange onclick onerror onfocus
syn keyword cfArg contained onkeydown onkeyup onload onmousedown onmouseup onreset
syn keyword cfArg contained onsubmit onvalidate operation orderby orientation output
syn keyword cfArg contained outputfile overwrite ownerpassword pageencoding pageheight
syn keyword cfArg contained pagetype pagewidth paintstyle param_1 param_2 param_3
syn keyword cfArg contained param_4 param_5 param_6 param_7 param_8 param_9 parent
syn keyword cfArg contained parrent passive passthrough password path pattern
syn keyword cfArg contained permissions picturebar pieslicestyle port porttypename
syn keyword cfArg contained prefix preloader preservedata previouscriteria procedure
syn keyword cfArg contained protocol provider providerdsn proxybypass proxypassword
syn keyword cfArg contained proxyport proxyserver proxyuser publish query queryasroot
syn keyword cfArg contained queryposition range rebind recurse redirect referral
syn keyword cfArg contained refreshlabel remotefile replyto report requesttimeout
syn keyword cfArg contained required reset resoleurl resolveurl result resultset
syn keyword cfArg contained retrycount returnasbinary returncode returntype
syn keyword cfArg contained returnvariable roles rotated rowheaderalign rowheaderbold
syn keyword cfArg contained rowheaderfont rowheaderfontsize rowheaderitalic rowheaders
syn keyword cfArg contained rowheadertextcolor rowheaderwidth rowheight scale scalefrom
syn keyword cfArg contained scaleto scope scriptprotect scriptsrc secure securitycontext
syn keyword cfArg contained select selectcolor selected selecteddate selectedindex
syn keyword cfArg contained selectmode separator seriescolor serieslabel seriesplacement
syn keyword cfArg contained server serviceport serviceportname sessionmanagement
syn keyword cfArg contained sessiontimeout setclientcookies setcookie setdomaincookies
syn keyword cfArg contained show3d showborder showdebugoutput showerror showlegend
syn keyword cfArg contained showmarkers showxgridlines showygridlines size skin sort
syn keyword cfArg contained sortascendingbutton sortcontrol sortdescendingbutton
syn keyword cfArg contained sortxaxis source spoolenable sql src srcfile start startdate
syn keyword cfArg contained startrange startrow starttime status statuscode statustext
syn keyword cfArg contained step stoponerror style subject suggestions
syn keyword cfArg contained suppresswhitespace tablename tableowner tablequalifier
syn keyword cfArg contained taglib target task template text textcolor textqualifier
syn keyword cfArg contained throwonerror throwonerror throwonfailure throwontimeout
syn keyword cfArg contained timeout timespan tipbgcolor tipstyle title to tooltip
syn keyword cfArg contained toplevelvariable transfermode type uid unit url urlpath
syn keyword cfArg contained useragent username userpassword usetimezoneinfo validate
syn keyword cfArg contained validateat value valuecolumn values valuesdelimiter
syn keyword cfArg contained valuesdisplay var variable vertical visible vscroll vspace
syn keyword cfArg contained webservice width wmode wraptext wsdlfile xaxistitle
syn keyword cfArg contained xaxistype xoffset yaxistitle yaxistype yoffset
" ColdFusion Functions.
syn keyword cfFunctionName contained Abs GetFunctionList Max ACos GetGatewayHelper Mid AddSOAPRequestHeader
syn keyword cfFunctionName contained GetHttpRequestData Min AddSOAPResponseHeader GetHttpTimeString Minute
syn keyword cfFunctionName contained ArrayAppend GetLocale Month ArrayAvg GetLocaleDisplayName MonthAsString
syn keyword cfFunctionName contained ArrayClear GetMetaData Now ArrayDeleteAt GetMetricData NumberFormat
syn keyword cfFunctionName contained ArrayInsertAt GetPageContext ParagraphFormat ArrayIsEmpty GetProfileSections
syn keyword cfFunctionName contained ParseDateTime ArrayLen GetProfileString Pi ArrayMax GetSOAPRequest
syn keyword cfFunctionName contained PreserveSingleQuotes ArrayMin GetSOAPRequestHeader Quarter ArrayNew
syn keyword cfFunctionName contained GetSOAPResponse QueryAddColumn ArrayPrepend GetSOAPResponseHeader QueryAddRow
syn keyword cfFunctionName contained ArrayResize GetTempDirectory QueryNew ArraySet GetTempFile QuerySetCell
syn keyword cfFunctionName contained ArraySort GetTickCount QuotedValueList ArraySum GetTimeZoneInfo Rand ArraySwap
syn keyword cfFunctionName contained GetToken Randomize ArrayToList Hash RandRange Asc Hour REFind ASin
syn keyword cfFunctionName contained HTMLCodeFormat REFindNoCase Atn HTMLEditFormat ReleaseComObject BinaryDecode
syn keyword cfFunctionName contained IIf RemoveChars BinaryEncode IncrementValue RepeatString BitAnd InputBaseN
syn keyword cfFunctionName contained Replace BitMaskClear Insert ReplaceList BitMaskRead Int ReplaceNoCase
syn keyword cfFunctionName contained BitMaskSet IsArray REReplace BitNot IsBinary REReplaceNoCase BitOr IsBoolean
syn keyword cfFunctionName contained Reverse BitSHLN IsCustomFunction Right BitSHRN IsDate RJustify BitXor
syn keyword cfFunctionName contained IsDebugMode Round Ceiling IsDefined RTrim CharsetDecode IsLeapYear Second
syn keyword cfFunctionName contained CharsetEncode IsNumeric SendGatewayMessage Chr IsNumericDate SetEncoding
syn keyword cfFunctionName contained CJustify IsObject SetLocale Compare IsQuery SetProfileString CompareNoCase
syn keyword cfFunctionName contained IsSimpleValue SetVariable Cos IsSOAPRequest Sgn CreateDate IsStruct Sin
syn keyword cfFunctionName contained CreateDateTime IsUserInRole SpanExcluding CreateObject IsValid SpanIncluding
syn keyword cfFunctionName contained CreateODBCDate IsWDDX Sqr CreateODBCDateTime IsXML StripCR CreateODBCTime
syn keyword cfFunctionName contained IsXmlAttribute StructAppend CreateTime IsXmlDoc StructClear CreateTimeSpan
syn keyword cfFunctionName contained IsXmlElem StructCopy CreateUUID IsXmlNode StructCount DateAdd IsXmlRoot
syn keyword cfFunctionName contained StructDelete DateCompare JavaCast StructFind DateConvert JSStringFormat
syn keyword cfFunctionName contained StructFindKey DateDiff LCase StructFindValue DateFormat Left StructGet
syn keyword cfFunctionName contained DatePart Len StructInsert Day ListAppend StructIsEmpty DayOfWeek
syn keyword cfFunctionName contained ListChangeDelims StructKeyArray DayOfWeekAsString ListContains StructKeyExists
syn keyword cfFunctionName contained DayOfYear ListContainsNoCase StructKeyList DaysInMonth ListDeleteAt StructNew
syn keyword cfFunctionName contained DaysInYear ListFind StructSort DE ListFindNoCase StructUpdate DecimalFormat
syn keyword cfFunctionName contained ListFirst Tan DecrementValue ListGetAt TimeFormat Decrypt ListInsertAt
syn keyword cfFunctionName contained ToBase64 DeleteClientVariable ListLast ToBinary DirectoryExists ListLen
syn keyword cfFunctionName contained ToScript DollarFormat ListPrepend ToString Duplicate ListQualify Trim Encrypt
syn keyword cfFunctionName contained ListRest UCase Evaluate ListSetAt URLDecode Exp ListSort URLEncodedFormat
syn keyword cfFunctionName contained ExpandPath ListToArray URLSessionFormat FileExists ListValueCount Val Find
syn keyword cfFunctionName contained ListValueCountNoCase ValueList FindNoCase LJustify Week FindOneOf Log Wrap
syn keyword cfFunctionName contained FirstDayOfMonth Log10 WriteOutput Fix LSCurrencyFormat XmlChildPos FormatBaseN
syn keyword cfFunctionName contained LSDateFormat XmlElemNew GetTempDirectory LSEuroCurrencyFormat XmlFormat
syn keyword cfFunctionName contained GetAuthUser LSIsCurrency XmlGetNodeType GetBaseTagData LSIsDate XmlNew
syn keyword cfFunctionName contained GetBaseTagList LSIsNumeric XmlParse GetBaseTemplatePath LSNumberFormat
syn keyword cfFunctionName contained XmlSearch GetClientVariablesList LSParseCurrency XmlTransform
syn keyword cfFunctionName contained GetCurrentTemplatePath LSParseDateTime XmlValidate GetDirectoryFromPath
syn keyword cfFunctionName contained LSParseEuroCurrency Year GetEncoding LSParseNumber YesNoFormat GetException
syn keyword cfFunctionName contained LSTimeFormat GetFileFromPath LTrim
syn keyword cfFunctionName contained ACos ASin Abs AddSOAPRequestHeader AddSOAPResponseHeader
syn keyword cfFunctionName contained ArrayAppend ArrayAvg ArrayClear ArrayDeleteAt ArrayInsertAt
syn keyword cfFunctionName contained ArrayIsEmpty ArrayLen ArrayMax ArrayMin ArrayNew
syn keyword cfFunctionName contained ArrayPrepend ArrayResize ArraySet ArraySort ArraySum
syn keyword cfFunctionName contained ArraySwap ArrayToList Asc Atn AuthenticatedContext
syn keyword cfFunctionName contained AuthenticatedUser BinaryDecode BinaryEncode BitAnd
syn keyword cfFunctionName contained BitMaskClear BitMaskRead BitMaskSet BitNot BitOr BitSHLN
syn keyword cfFunctionName contained BitSHRN BitXor CJustify Ceiling CharsetDecode CharsetEncode
syn keyword cfFunctionName contained Chr Compare CompareNoCase Cos CreateDate CreateDateTime
syn keyword cfFunctionName contained CreateODBCDate CreateODBCDateTime CreateODBCTime
syn keyword cfFunctionName contained CreateObject CreateTime CreateTimeSpan CreateUUID DE DateAdd
syn keyword cfFunctionName contained DateCompare DateConvert DateDiff DateFormat DatePart Day
syn keyword cfFunctionName contained DayOfWeek DayOfWeekAsString DayOfYear DaysInMonth DaysInYear
syn keyword cfFunctionName contained DecimalFormat DecrementValue Decrypt DecryptBinary
syn keyword cfFunctionName contained DeleteClientVariable DirectoryExists DollarFormat Duplicate
syn keyword cfFunctionName contained Encrypt EncryptBinary Evaluate Exp ExpandPath FileExists
syn keyword cfFunctionName contained Find FindNoCase FindOneOf FirstDayOfMonth Fix FormatBaseN
syn keyword cfFunctionName contained GenerateSecretKey GetAuthUser GetBaseTagData GetBaseTagList
syn keyword cfFunctionName contained GetBaseTemplatePath GetClientVariablesList GetContextRoot
syn keyword cfFunctionName contained GetCurrentTemplatePath GetDirectoryFromPath GetEncoding
syn keyword cfFunctionName contained GetException GetFileFromPath GetFunctionList
syn keyword cfFunctionName contained GetGatewayHelper GetHttpRequestData GetHttpTimeString
syn keyword cfFunctionName contained GetLocalHostIP
syn keyword cfFunctionName contained GetLocale GetLocaleDisplayName GetMetaData GetMetricData
syn keyword cfFunctionName contained GetPageContext GetProfileSections GetProfileString
syn keyword cfFunctionName contained GetSOAPRequest GetSOAPRequestHeader GetSOAPResponse
syn keyword cfFunctionName contained GetSOAPResponseHeader GetTempDirectory GetTempFile
syn keyword cfFunctionName contained GetTickCount GetTimeZoneInfo GetToken
syn keyword cfFunctionName contained HTMLCodeFormat HTMLEditFormat Hash Hour IIf IncrementValue
syn keyword cfFunctionName contained InputBaseN Insert Int IsArray IsAuthenticated IsAuthorized
syn keyword cfFunctionName contained IsBinary IsBoolean IsCustomFunction IsDate IsDebugMode
syn keyword cfFunctionName contained IsDefined
syn keyword cfFunctionName contained IsLeapYear IsLocalHost IsNumeric
syn keyword cfFunctionName contained IsNumericDate IsObject IsProtected IsQuery IsSOAPRequest
syn keyword cfFunctionName contained IsSimpleValue IsStruct IsUserInRole IsValid IsWDDX IsXML
syn keyword cfFunctionName contained IsXmlAttribute IsXmlDoc IsXmlElem IsXmlNode IsXmlRoot
syn keyword cfFunctionName contained JSStringFormat JavaCast LCase LJustify LSCurrencyFormat
syn keyword cfFunctionName contained LSDateFormat LSEuroCurrencyFormat LSIsCurrency LSIsDate
syn keyword cfFunctionName contained LSIsNumeric LSNumberFormat LSParseCurrency LSParseDateTime
syn keyword cfFunctionName contained LSParseEuroCurrency LSParseNumber LSTimeFormat LTrim Left
syn keyword cfFunctionName contained Len ListAppend ListChangeDelims ListContains
syn keyword cfFunctionName contained ListContainsNoCase ListDeleteAt ListFind ListFindNoCase
syn keyword cfFunctionName contained ListFirst ListGetAt ListInsertAt ListLast ListLen
syn keyword cfFunctionName contained ListPrepend ListQualify ListRest ListSetAt ListSort
syn keyword cfFunctionName contained ListToArray ListValueCount ListValueCountNoCase Log Log10
syn keyword cfFunctionName contained Max Mid Min Minute Month MonthAsString Now NumberFormat
syn keyword cfFunctionName contained ParagraphFormat ParseDateTime Pi
syn keyword cfFunctionName contained PreserveSingleQuotes Quarter QueryAddColumn QueryAddRow
syn keyword cfFunctionName contained QueryNew QuerySetCell QuotedValueList REFind REFindNoCase
syn keyword cfFunctionName contained REReplace REReplaceNoCase RJustify RTrim Rand RandRange
syn keyword cfFunctionName contained Randomize ReleaseComObject RemoveChars RepeatString Replace
syn keyword cfFunctionName contained ReplaceList ReplaceNoCase Reverse Right Round Second
syn keyword cfFunctionName contained SendGatewayMessage SetEncoding SetLocale SetProfileString
syn keyword cfFunctionName contained SetVariable Sgn Sin SpanExcluding SpanIncluding Sqr StripCR
syn keyword cfFunctionName contained StructAppend StructClear StructCopy StructCount StructDelete
syn keyword cfFunctionName contained StructFind StructFindKey StructFindValue StructGet
syn keyword cfFunctionName contained StructInsert StructIsEmpty StructKeyArray StructKeyExists
syn keyword cfFunctionName contained StructKeyList StructNew StructSort StructUpdate Tan
syn keyword cfFunctionName contained TimeFormat ToBase64 ToBinary ToScript ToString Trim UCase
syn keyword cfFunctionName contained URLDecode URLEncodedFormat URLSessionFormat Val ValueList
syn keyword cfFunctionName contained Week Wrap WriteOutput XmlChildPos XmlElemNew XmlFormat
syn keyword cfFunctionName contained XmlGetNodeType XmlNew XmlParse XmlSearch XmlTransform
syn keyword cfFunctionName contained XmlValidate Year YesNoFormat
" Deprecated tags and functions.
syn keyword cfDeprecated contained cfauthenticate cfimpersonate cfgraph cfgraphdata
syn keyword cfDeprecated contained cfservlet cfservletparam cftextinput
syn keyword cfDeprecated contained GetK2ServerDocCount GetK2ServerDocCountLimit GetTemplatePath
syn keyword cfDeprecated contained IsK2ServerABroker IsK2ServerDocCountExceeded IsK2ServerOnline
syn keyword cfDeprecated contained ParameterExists
syn cluster htmlTagNameCluster add=cfTagName
syn cluster htmlArgCluster add=cfArg,cfHashRegion,cfScope
@ -169,7 +225,8 @@ syn cluster cfExpressionCluster contains=cfFunctionName,cfScope,@cfOperatorClust
" Evaluation; skip strings ( this helps with cases like nested IIf() )
syn region cfHashRegion start=+#+ skip=+"[^"]*"\|'[^']*'+ end=+#+ contains=@cfExpressionCluster,cfScriptParenError
" <cfset>, <cfif>, <cfelseif>, <cfreturn> are analogous to hashmarks (implicit evaluation) and has 'var'
" <cfset>, <cfif>, <cfelseif>, <cfreturn> are analogous to hashmarks (implicit
" evaluation) and have 'var'
syn region cfSetRegion start="<cfset " start="<cfreturn " start="<cfelseif " start="<cfif " end='>' keepend contains=@cfExpressionCluster,cfSetLHSRegion,cfSetTagEnd,cfScriptType
syn region cfSetLHSRegion contained start="<cfreturn" start="<cfelseif" start="<cfif" start="<cfset" end=" " keepend contains=cfTagName,htmlTag
syn match cfSetTagEnd contained '>'
@ -184,10 +241,10 @@ syn region cfScriptComment contained start="/\*" end="\*/" contains=cfCom
" in CF, quotes are escaped by doubling
syn region cfScriptStringD contained start=+"+ skip=+\\\\\|""+ end=+"+ extend contains=@htmlPreproc,cfHashRegion
syn region cfScriptStringS contained start=+'+ skip=+\\\\\|''+ end=+'+ extend contains=@htmlPreproc,cfHashRegion
syn match cfScriptNumber contained "-\=\<\d\+L\=\>"
syn match cfScriptNumber contained "\<\d\+\>"
syn keyword cfScriptConditional contained if else
syn keyword cfScriptRepeat contained while for in
syn keyword cfScriptBranch contained break switch case try catch continue
syn keyword cfScriptBranch contained break switch case default try catch continue
syn keyword cfScriptFunction contained function
syn keyword cfScriptType contained var
syn match cfScriptBraces contained "[{}]"
@ -202,6 +259,16 @@ syn match cfScrParenError contained +)+
syn region cfscriptBlock matchgroup=NONE start="<cfscript>" end="<\/cfscript>"me=s-1 keepend contains=@cfScriptCluster,cfscriptTag,cfScrParenError
syn region cfscriptTag contained start='<cfscript' end='>' keepend contains=cfTagName,htmlTag
" CFML
syn cluster cfmlCluster contains=cfComment,@htmlTagNameCluster,@htmlPreproc,cfSetRegion,cfscriptBlock
" cfquery = sql
unlet b:current_syntax
syn include @cfSql <sfile>:p:h/sql.vim
unlet b:current_syntax
syn region cfqueryTag contained start=+<cfquery+ end=+>+ keepend contains=cfTagName,htmlTag
syn region cfSqlregion start=+<cfquery[^>]*>+ keepend end=+<\/cfquery>+me=s-1 matchgroup=NONE contains=@cfSql,cfComment,@htmlTagNameCluster,cfqueryTag
" Define the default highlighting.
if version >= 508 || !exists("did_cf_syn_inits")
if version < 508
@ -241,8 +308,11 @@ if version >= 508 || !exists("did_cf_syn_inits")
HiLink cfScriptBraces Function
HiLink cfScriptFunction Function
HiLink cfScriptError Error
HiLink cfDeprecated Error
HiLink cfScrParenError cfScriptError
HiLink cfqueryTag htmlTag
delcommand HiLink
endif

View File

@ -1,21 +1,39 @@
" Vim syntax file
" Language: Conary Recipe
" Maintainer: rPath Inc <http://www.rpath.com>
" Updated: 2007-05-07
" Updated: 2007-12-08
if exists("b:current_syntax")
finish
endif
runtime! syntax/python.vim
syn keyword conarySFunction mainDir addAction addSource addArchive addPatch
syn keyword conarySFunction addRedirect addSvnSnapshot addMercurialSnapshot
syn keyword conarySFunction addCvsSnapshot
syn keyword conarySFunction addCvsSnapshot addGitSnapshot addBzrSnapshot
syn keyword conaryGFunction add addAll addNewGroup addReference createGroup
syn keyword conaryGFunction addNewGroup startGroup remove removeComponents
syn keyword conaryGFunction replace setByDefault setDefaultGroup
syn keyword conaryGFunction setLabelPath addCopy setSearchPath
syn keyword conaryGFunction add addAll addNewGroup addReference createGroup
syn keyword conaryGFunction addNewGroup startGroup remove removeComponents
syn keyword conaryGFunction replace setByDefault setDefaultGroup
syn keyword conaryGFunction setLabelPath addCopy setSearchPath AddAllFlags
syn keyword conaryGFunction GroupRecipe GroupReference TroveCacheWrapper
syn keyword conaryGFunction TroveCache buildGroups findTrovesForGroups
syn keyword conaryGFunction followRedirect processAddAllDirectives
syn keyword conaryGFunction processOneAddAllDirective removeDifferences
syn keyword conaryGFunction addTrovesToGroup addCopiedComponents
syn keyword conaryGFunction findAllWeakTrovesToRemove checkForRedirects
syn keyword conaryGFunction addPackagesForComponents getResolveSource
syn keyword conaryGFunction resolveGroupDependencies checkGroupDependencies
syn keyword conaryGFunction calcSizeAndCheckHashes findSourcesForGroup
syn keyword conaryGFunction addPostInstallScript addPostRollbackScript
syn keyword conaryGFunction addPostUpdateScript addPreUpdateScript
syn keyword conaryGFunction addTrove moveComponents copyComponents
syn keyword conaryGFunction removeItemsAlsoInNewGroup removeItemsAlsoInGroup
syn keyword conaryGFunction addResolveSource iterReplaceSpecs
syn keyword conaryGFunction setCompatibilityClass getLabelPath
syn keyword conaryGFunction getResolveTroveSpecs getSearchFlavor
syn keyword conaryGFunction getChildGroups getGroupMap
syn keyword conaryBFunction Run Automake Configure ManualConfigure
syn keyword conaryBFunction Make MakeParallelSubdir MakeInstall
@ -25,7 +43,8 @@ syn keyword conaryBFunction Install Copy Move Symlink Link Remove Doc
syn keyword conaryBFunction Create MakeDirs disableParallelMake
syn keyword conaryBFunction ConsoleHelper Replace SGMLCatalogEntry
syn keyword conaryBFunction XInetdService XMLCatalogEntry TestSuite
syn keyword conaryBFunction PythonSetup
syn keyword conaryBFunction PythonSetup CMake Ant JavaCompile ClassPath
syn keyword conaryBFunction JavaDoc IncludeLicense MakeFIFO
syn keyword conaryPFunction NonBinariesInBindirs FilesInMandir
syn keyword conaryPFunction ImproperlyShared CheckSonames CheckDestDir
@ -45,10 +64,28 @@ syn keyword conaryPFunction Provides RequireChkconfig Requires TagHandler
syn keyword conaryPFunction TagDescription Transient User UtilizeGroup
syn keyword conaryPFunction WorldWritableExecutables UtilizeUser
syn keyword conaryPFunction WarnWritable Strip CheckDesktopFiles
syn keyword conaryPFunction FixDirModes LinkType reportMissingBuildRequires
syn keyword conaryPFunction reportErrors FixupManpagePaths FixObsoletePaths
syn keyword conaryPFunction NonLSBPaths PythonEggs
syn keyword conaryPFunction EnforcePythonBuildRequirements
syn keyword conaryPFunction EnforceJavaBuildRequirements
syn keyword conaryPFunction EnforceCILBuildRequirements
syn keyword conaryPFunction EnforcePerlBuildRequirements
syn keyword conaryPFunction EnforceFlagBuildRequirements
syn keyword conaryPFunction FixupMultilibPaths ExecutableLibraries
syn keyword conaryPFunction NormalizeLibrarySymlinks NormalizeCompression
syn keyword conaryPFunction NormalizeManPages NormalizeInfoPages
syn keyword conaryPFunction NormalizeInitscriptLocation
syn keyword conaryPFunction NormalizeInitscriptContents
syn keyword conaryPFunction NormalizeAppDefaults NormalizeInterpreterPaths
syn keyword conaryPFunction NormalizePamConfig ReadableDocs
syn keyword conaryPFunction WorldWriteableExecutables NormalizePkgConfig
syn keyword conaryPFunction EtcConfig InstallBucket SupplementalGroup
syn keyword conaryPFunction FixBuilddirSymlink RelativeSymlinks
" Most destdirPolicy aren't called from recipes, except for these
syn keyword conaryPFunction AutoDoc RemoveNonPackageFiles TestSuiteFiles
syn keyword conaryPFunction TestSuiteLinks
syn keyword conaryPFunction AutoDoc RemoveNonPackageFiles TestSuiteFiles
syn keyword conaryPFunction TestSuiteLinks
syn match conaryMacro "%(\w\+)[sd]" contained
syn match conaryBadMacro "%(\w*)[^sd]" contained " no final marker
@ -56,8 +93,8 @@ syn keyword conaryArches contained x86 x86_64 alpha ia64 ppc ppc64 s390
syn keyword conaryArches contained sparc sparc64
syn keyword conarySubArches contained sse2 3dnow 3dnowext cmov i486 i586
syn keyword conarySubArches contained i686 mmx mmxext nx sse sse2
syn keyword conaryBad RPM_BUILD_ROOT EtcConfig InstallBucket subDir subdir
syn keyword conaryBad RPM_OPT_FLAGS
syn keyword conaryBad RPM_BUILD_ROOT EtcConfig InstallBucket subDir
syn keyword conaryBad RPM_OPT_FLAGS subdir
syn cluster conaryArchFlags contains=conaryArches,conarySubArches
syn match conaryArch "Arch\.[a-z0-9A-Z]\+" contains=conaryArches,conarySubArches
syn match conaryArch "Arch\.[a-z0-9A-Z]\+" contains=conaryArches,conarySubArches
@ -97,3 +134,4 @@ hi def link conaryKeywords Special
hi def link conaryUseFlag Typedef
let b:current_syntax = "conaryrecipe"

72
runtime/syntax/cuda.vim Normal file
View File

@ -0,0 +1,72 @@
" Vim syntax file
" Language: CUDA (NVIDIA Compute Unified Device Architecture)
" Maintainer: Timothy B. Terriberry <tterribe@users.sourceforge.net>
" Last Change: 2007 Oct 13
" 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
" Read the C syntax to start with
if version < 600
source <sfile>:p:h/c.vim
else
runtime! syntax/c.vim
endif
" CUDA extentions
syn keyword cudaStorageClass __device__ __global__ __host__
syn keyword cudaStorageClass __constant__ __shared__
syn keyword cudaStorageClass __inline__ __align__ __thread__
"syn keyword cudaStorageClass __import__ __export__ __location__
syn keyword cudaStructure template
syn keyword cudaType char1 char2 char3 char4
syn keyword cudaType uchar1 uchar2 uchar3 uchar4
syn keyword cudaType short1 short2 short3 short4
syn keyword cudaType ushort1 ushort2 ushort3 ushort4
syn keyword cudaType int1 int2 int3 int4
syn keyword cudaType uint1 uint2 uint3 uint4
syn keyword cudaType long1 long2 long3 long4
syn keyword cudaType ulong1 ulong2 ulong3 ulong4
syn keyword cudaType float1 float2 float3 float4
syn keyword cudaType ufloat1 ufloat2 ufloat3 ufloat4
syn keyword cudaType dim3 texture textureReference
syn keyword cudaType cudaError_t cudaDeviceProp cudaMemcpyKind
syn keyword cudaType cudaArray cudaChannelFormatKind
syn keyword cudaType cudaChannelFormatDesc cudaTextureAddressMode
syn keyword cudaType cudaTextureFilterMode cudaTextureReadMode
syn keyword cudaVariable gridDim blockIdx blockDim threadIdx
syn keyword cudaConstant __DEVICE_EMULATION__
syn keyword cudaConstant cudaSuccess
" Many more errors are defined, but only these are listed in the maunal
syn keyword cudaConstant cudaErrorMemoryAllocation
syn keyword cudaConstant cudaErrorInvalidDevicePointer
syn keyword cudaConstant cudaErrorInvalidSymbol
syn keyword cudaConstant cudaErrorMixedDeviceExecution
syn keyword cudaConstant cudaMemcpyHostToHost
syn keyword cudaConstant cudaMemcpyHostToDevice
syn keyword cudaConstant cudaMemcpyDeviceToHost
syn keyword cudaConstant cudaMemcpyDeviceToDevice
syn keyword cudaConstant cudaReadModeElementType
syn keyword cudaConstant cudaReadModeNormalizedFloat
syn keyword cudaConstant cudaFilterModePoint
syn keyword cudaConstant cudaFilterModeLinear
syn keyword cudaConstant cudaAddressModeClamp
syn keyword cudaConstant cudaAddressModeWrap
syn keyword cudaConstant cudaChannelFormatKindSigned
syn keyword cudaConstant cudaChannelFormatKindUnsigned
syn keyword cudaConstant cudaChannelFormatKindFloat
hi def link cudaStorageClass StorageClass
hi def link cudaStructure Structure
hi def link cudaType Type
hi def link cudaVariable Identifier
hi def link cudaConstant Constant
let b:current_syntax = "cuda"
" vim: ts=8

View File

@ -1,9 +1,10 @@
" Vim syntax file
" Language: Debian changelog files
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainer: Wichert Akkerman <wakkerma@debian.org>
" Last Change: $LastChangedDate: 2006-04-16 21:50:31 -0400 (dom, 16 apr 2006) $
" URL: http://svn.debian.org/wsvn/pkg-vim/trunk/runtime/syntax/debchangelog.vim?op=file&rev=0&sc=0
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
" Last Change: 2008-01-16
" URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/syntax/debchangelog.vim;hb=debian
" Standard syntax initialization
if version < 600
@ -18,16 +19,17 @@ syn case ignore
" Define some common expressions we can use later on
syn match debchangelogName contained "^[[:alpha:]][[:alnum:].+-]\+ "
syn match debchangelogUrgency contained "; urgency=\(low\|medium\|high\|critical\|emergency\)\( \S.*\)\="
syn match debchangelogTarget contained "\( stable\| frozen\| unstable\| testing-proposed-updates\| experimental\| sarge-backports\| sarge-volatile\| stable-security\| testing-security\)\+"
syn match debchangelogTarget contained "\( \(old\)\=stable\| frozen\| unstable\| testing-proposed-updates\| experimental\| \%(sarge\|etch\|lenny\)-\%(backports\|-volatile\)\| \(old\)\=stable-security\| testing-security\| \(dapper\|edgy\|feisty\|gutsy\|hardy\)\(-\(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 debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
syn match debchangelogEmail contained "[_=[:alnum:].+-]\+@[[:alnum:]./\-]\+"
syn match debchangelogEmail contained "<.\{-}>"
" Define the entries that make up the changelog
syn region debchangelogHeader start="^[^ ]" end="$" contains=debchangelogName,debchangelogUrgency,debchangelogTarget,debchangelogVersion oneline
syn region debchangelogFooter start="^ [^ ]" end="$" contains=debchangelogEmail oneline
syn region debchangelogEntry start="^ " end="$" contains=debchangelogCloses oneline
syn region debchangelogEntry start="^ " end="$" contains=debchangelogCloses,debchangelogLP oneline
" Associate our matches and regions with pretty colours
if version >= 508 || !exists("did_debchangelog_syn_inits")
@ -42,6 +44,7 @@ if version >= 508 || !exists("did_debchangelog_syn_inits")
HiLink debchangelogFooter Identifier
HiLink debchangelogEntry Normal
HiLink debchangelogCloses Statement
HiLink debchangelogLP Statement
HiLink debchangelogUrgency Identifier
HiLink debchangelogName Comment
HiLink debchangelogVersion Identifier

View File

@ -1,7 +1,7 @@
" Vim syntax file
" Language: elinks(1) configuration file
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2006-04-19
" Latest Revision: 2007-06-17
if exists("b:current_syntax")
finish
@ -10,7 +10,7 @@ endif
let s:cpo_save = &cpo
set cpo&vim
setlocal iskeyword=@,48-57,_,-
setlocal iskeyword+=-
syn keyword elinksTodo contained TODO FIXME XXX NOTE

View File

@ -1,9 +1,9 @@
" Vim syntax file
" Language: FORTH
" Maintainer: Christian V. J. Br<42>ssow <cvjb@cvjb.de>
" Last Change: Di 06 Jul 2004 18:40:33 CEST
" Last Change: Sa 14 Jul 2007 21:39:53 CEST
" Filenames: *.fs,*.ft
" URL: http://www.cvjb.de/comp/vim/forth.vim
" URL: http://www.cvjb.de/comp/vim/forth.vim
" $Id$
@ -13,30 +13,48 @@
" Many Thanks to...
"
" 2004-07-06:
" Changed "syn sync ccomment maxlines=200" line: splitted it into two separate
" lines.
" 2007-07-11:
" Benjamin Krill <ben at codiert dot org> send me a patch
" to highlight space errors.
" You can toggle this feature on through setting the
" flag forth_space_errors in you vimrc. If you have switched it on,
" you can turn off highlighting of trailing spaces in comments by
" setting forth_no_trail_space_error in your vimrc. If you do not want
" the highlighting of a tabulator following a space in comments, you
" can turn this off by setting forth_no_tab_space_error.
"
" 2006-05-25:
" Bill McCarthy <WJMc@...> and Ilya Sher <ilya-vim@...>
" Who found a bug in the ccomment line in 2004!!!
" I'm really very sorry, that it has taken two years to fix that
" in the offical version of this file. Shame on me.
" I think my face will be red the next ten years...
"
" 2006-05-21:
" Thomas E. Vaughan <tevaugha at ball dot com> send me a patch
" for the parenthesis comment word, so words with a trailing
" parenthesis will not start the highlighting for such comments.
"
" 2003-05-10:
" Andrew Gaul <andrew at gaul.org> send me a patch for
" forthOperators.
"
" 2003-04-03:
" Ron Aaron <ronaharon at yahoo.com> made updates for an
" Ron Aaron <ron at ronware dot org> made updates for an
" improved Win32Forth support.
"
" 2002-04-22:
" Charles Shattuck <charley at forth.org> helped me to settle up with the
" Charles Shattuck <charley at forth dot org> helped me to settle up with the
" binary and hex number highlighting.
"
" 2002-04-20:
" Charles Shattuck <charley at forth.org> send me some code for correctly
" Charles Shattuck <charley at forth dot org> send me some code for correctly
" highlighting char and [char] followed by an opening paren. He also added
" some words for operators, conditionals, and definitions; and added the
" highlighting for s" and c".
"
" 2000-03-28:
" John Providenza <john at probo.com> made improvements for the
" John Providenza <john at probo dot com> made improvements for the
" highlighting of strings, and added the code for highlighting hex numbers.
"
@ -68,6 +86,15 @@ else
set iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255
endif
" when wanted, highlight trailing white space
if exists("forth_space_errors")
if !exists("forth_no_trail_space_error")
syn match forthSpaceError display excludenl "\s\+$"
endif
if !exists("forth_no_tab_space_error")
syn match forthSpaceError display " \+\t"me=e-1
endif
endif
" Keywords
@ -177,12 +204,11 @@ syn region forthString start=+s\"+ end=+"+ end=+$+
syn region forthString start=+c\"+ end=+"+ end=+$+
" Comments
syn match forthComment '\\\s.*$' contains=forthTodo
syn region forthComment start='\\S\s' end='.*' contains=forthTodo
syn match forthComment '\.(\s[^)]*)' contains=forthTodo
syn region forthComment start='(\s' skip='\\)' end=')' contains=forthTodo
syn region forthComment start='/\*' end='\*/' contains=forthTodo
"syn match forthComment '(\s[^\-]*\-\-[^\-]*)' contains=forthTodo
syn match forthComment '\\\s.*$' contains=forthTodo,forthSpaceError
syn region forthComment start='\\S\s' end='.*' contains=forthTodo,forthSpaceError
syn match forthComment '\.(\s[^)]*)' contains=forthTodo,forthSpaceError
syn region forthComment start='\s(\s' skip='\\)' end=')' contains=forthTodo,forthSpaceError
syn region forthComment start='/\*' end='\*/' contains=forthTodo,forthSpaceError
" Include files
syn match forthInclude '^INCLUDE\s\+\k\+'
@ -194,10 +220,10 @@ syn match forthInclude '^needs\s\+'
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_forth_syn_inits")
if version < 508
let did_forth_syn_inits = 1
command -nargs=+ HiLink hi link <args>
let did_forth_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
command -nargs=+ HiLink hi def link <args>
endif
" The default methods for highlighting. Can be overriden later.
@ -231,6 +257,7 @@ if version >= 508 || !exists("did_forth_syn_inits")
HiLink forthObjectDef Define
HiLink forthEndOfObjectDef Define
HiLink forthInclude Include
HiLink forthSpaceError Error
delcommand HiLink
endif

View File

@ -0,0 +1,31 @@
" Vim syntax file
" Language: git rebase --interactive
" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
" Filenames: git-rebase-todo
" Last Change: 2008 Apr 16
if exists("b:current_syntax")
finish
endif
syn case match
syn match gitrebaseHash "\v<\x{7,40}>" contained
syn match gitrebaseCommit "\v<\x{7,40}>" nextgroup=gitrebaseSummary skipwhite
syn match gitrebasePick "\v^p%(ick)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseEdit "\v^e%(dit)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseSummary ".*" contains=gitrebaseHash contained
syn match gitrebaseComment "^#.*" contains=gitrebaseHash
syn match gitrebaseSquashError "\v%^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite
hi def link gitrebaseCommit gitrebaseHash
hi def link gitrebaseHash Identifier
hi def link gitrebasePick Statement
hi def link gitrebaseEdit PreProc
hi def link gitrebaseSquash Type
hi def link gitrebaseSummary String
hi def link gitrebaseComment Comment
hi def link gitrebaseSquashError Error
let b:current_syntax = "gitrebase"

View File

@ -1,7 +1,7 @@
" Vim syntax file
" Language: gpg(1) configuration file
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2007-05-06
" Latest Revision: 2007-06-17
if exists("b:current_syntax")
finish
@ -10,7 +10,7 @@ endif
let s:cpo_save = &cpo
set cpo&vim
setlocal iskeyword=@,48-57,-
setlocal iskeyword+=-
syn keyword gpgTodo contained FIXME TODO XXX NOTE

View File

@ -1,7 +1,7 @@
" Vim syntax file
" Language: lftp(1) configuration file
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2006-04-19
" Latest Revision: 2007-06-17
if exists("b:current_syntax")
finish
@ -10,7 +10,7 @@ endif
let s:cpo_save = &cpo
set cpo&vim
setlocal iskeyword=@,48-57,-
setlocal iskeyword+=-
syn region lftpComment display oneline start='#' end='$'
\ contains=lftpTodo,@Spell

53
runtime/syntax/mmp.vim Normal file
View File

@ -0,0 +1,53 @@
" Vim syntax file
" Language: Symbian meta-makefile definition (MMP)
" Maintainer: Ron Aaron <ron@ronware.org>
" Last Change: 2007/11/07
" URL: http://ronware.org/wiki/vim/mmp
" Filetypes: *.mmp
" 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 case ignore
syn match mmpComment "//.*"
syn region mmpComment start="/\*" end="\*\/"
syn keyword mmpKeyword aif asspabi assplibrary aaspexports baseaddress
syn keyword mmpKeyword debuglibrary deffile document epocheapsize
syn keyword mmpKeyword epocprocesspriority epocstacksize exportunfrozen
syn keyword mmpStorage lang library linkas macro nostrictdef option
syn keyword mmpStorage resource source sourcepath srcdbg startbitmap
syn keyword mmpStorage start end staticlibrary strictdepend systeminclude
syn keyword mmpStorage systemresource target targettype targetpath uid
syn keyword mmpStorage userinclude win32_library
syn match mmpIfdef "\#\(include\|ifdef\|ifndef\|if\|endif\|else\|elif\)"
syn match mmpNumber "\d+"
syn match mmpNumber "0x\x\+"
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if !exists("did_mmp_syntax_inits")
let did_mmp_syntax_inits=1
hi def link mmpComment Comment
hi def link mmpKeyword Keyword
hi def link mmpStorage StorageClass
hi def link mmpString String
hi def link mmpNumber Number
hi def link mmpOrdinal Operator
hi def link mmpIfdef PreCondit
endif
let b:current_syntax = "mmp"
" vim: ts=8

View File

@ -1,7 +1,8 @@
" Vim syntax file
" Language: ObjC++
" Maintainer: Anthony Hodsdon <ahodsdon@fastmail.fm>
" Last change: 2003 Apr 25
" Language: Objective C++
" Maintainer: Kazunobu Kuriyama <kazunobu.kuriyama@nifty.com>
" Ex-Maintainer: Anthony Hodsdon <ahodsdon@fastmail.fm>
" Last Change: 2007 Oct 29
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@ -14,17 +15,13 @@ endif
" Read in C++ and ObjC syntax files
if version < 600
so <sfile>:p:h/cpp.vim
so <sflie>:p:h/objc.vim
so <sfile>:p:h/objc.vim
else
runtime! syntax/cpp.vim
unlet b:current_syntax
runtime! syntax/objc.vim
endif
" Note that we already have a region for method calls ( [objc_class method] )
" by way of cBracket.
syn region objCFunc start="^\s*[-+]" end="$" contains=ALLBUT,cErrInParen,cErrInBracket
syn keyword objCppNonStructure class template namespace transparent contained
syn keyword objCppNonStatement new delete friend using transparent contained

View File

@ -83,7 +83,7 @@ if version < 600
endif
so <sfile>:p:h/html.vim
else
runtime syntax/html.vim
runtime! syntax/html.vim
unlet b:current_syntax
endif

View File

@ -1,7 +1,7 @@
" Vim syntax file
" Language: pinfo(1) configuration file
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2006-04-19
" Latest Revision: 2007-06-17
if exists("b:current_syntax")
finish
@ -10,7 +10,7 @@ endif
let s:cpo_save = &cpo
set cpo&vim
setlocal iskeyword=@,48-57,_,-
setlocal iskeyword+=-
syn case ignore

View File

@ -1,7 +1,7 @@
" Vim syntax file
" Language: PROLOG
" Maintainers: Thomas Koehler <jean-luc@picard.franken.de>
" Last Change: 2005 Mar 14
" Last Change: 2008 April 5
" URL: http://gott-gehabt/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim
" There are two sets of highlighting in here:
@ -26,9 +26,9 @@ syn match prologComment +%.*+
syn keyword prologKeyword module meta_predicate multifile dynamic
syn match prologCharCode +0'\\\=.+
syn region prologString start=+"+ skip=+\\"+ end=+"+
syn region prologAtom start=+'+ skip=+\\'+ end=+'+
syn region prologClauseHead start=+^[a-z][^(]*(+ skip=+\.[^ ]+ end=+:-\|\.$\|\.[ ]\|-->+
syn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+
syn region prologAtom start=+'+ skip=+\\\\\|\\'+ end=+'+
syn region prologClauseHead start=+^[a-z][^(]*(+ skip=+\.[^ ]+ end=+:-\|\.$\|\.[ ]\|-->+ contains=prologComment,prologCComment,prologString
if !exists("prolog_highlighting_clean")

View File

@ -0,0 +1,60 @@
" Vim syntax file
" Language: ProMeLa
" Maintainer: Maurizio Tranchero <maurizio.tranchero@polito.it> - <maurizio.tranchero@gmail.com>
" First Release: Mon Oct 16 08:49:46 CEST 2006
" Last Change: Sat May 16 12:20:43 CEST 2007
" Version: 0.2
" 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
" case is significant
" syn case ignore
" ProMeLa Keywords
syn keyword promelaStatement proctype if else while chan do od fi break goto unless
syn keyword promelaStatement active assert label atomic
syn keyword promelaFunctions skip timeout run
" check what it is the following
" ProMeLa Types
syn keyword promelaType bit bool byte short int
" ProMeLa Regions
syn region promelaComment start="\/\/" end="$" keepend
syn region promelaString start="\"" end="\""
" syn region promelaComment start="//" end="$" contains=ALL
" syn region promelaComment start="/\*" end="\*/" contains=ALL
" ProMeLa Comment
syn match promelaComment "\/.*$"
syn match promelaComment "/\*.*\*/"
" Operators and special characters
syn match promelaOperator "!"
syn match promelaOperator "?"
syn match promelaOperator "->"
syn match promelaOperator "="
syn match promelaOperator "+"
syn match promelaOperator "*"
syn match promelaOperator "/"
syn match promelaOperator "-"
syn match promelaOperator "<"
syn match promelaOperator ">"
syn match promelaOperator "<="
syn match promelaOperator ">="
syn match promelaSpecial "\["
syn match promelaSpecial "\]"
syn match promelaSpecial ";"
syn match promelaSpecial "::"
" Class Linking
hi def link promelaStatement Statement
hi def link promelaType Type
hi def link promelaComment Comment
hi def link promelaOperator Type
hi def link promelaSpecial Special
hi def link promelaFunctions Special
hi def link promelaString String
let b:current_syntax = "promela"

191
runtime/syntax/reva.vim Normal file
View File

@ -0,0 +1,191 @@
" Vim syntax file
" Language: Reva Forth
" Version: 7.1
" Last Change: 2008/01/11
" Maintainer: Ron Aaron <ron@ronware.org>
" URL: http://ronware.org/reva/
" Filetypes: *.rf *.frt
" NOTE: You should also have the ftplugin/reva.vim file to set 'isk'
" For version 5.x: Clear all syntax items and don't load
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
echo "Reva syntax file requires version 6.0 or later of vim!"
finish
elseif exists("b:current_syntax")
finish
endif
syn clear
" Synchronization method
syn sync ccomment
syn sync maxlines=100
syn case ignore
" Some special, non-FORTH keywords
"syn keyword revaTodo contained todo fixme bugbug todo: bugbug: note:
syn match revaTodo contained '\(todo\|fixme\|bugbug\|note\)[:]*'
syn match revaTodo contained 'copyright\(\s(c)\)\=\(\s[0-9]\{2,4}\)\='
syn match revaHelpDesc '\S.*' contained
syn match revaHelpStuff '\<\(def\|stack\|ctx\|ver\|os\|related\):\s.*'
syn region revaHelpStuff start='\<desc:\>' end='^\S' contains=revaHelpDesc
syn region revaEOF start='\<|||\>' end='{$}' contains=revaHelpStuff
syn case match
" basic mathematical and logical operators
syn keyword revaoperators + - * / mod /mod negate abs min max umin umax
syn keyword revaoperators and or xor not invert 1+ 1-
syn keyword revaoperators m+ */ */mod m* um* m*/ um/mod fm/mod sm/rem
syn keyword revaoperators d+ d- dnegate dabs dmin dmax > < = >> << u< <>
" stack manipulations
syn keyword revastack drop nip dup over tuck swap rot -rot ?dup pick roll
syn keyword revastack 2drop 2nip 2dup 2over 2swap 2rot 3drop
syn keyword revastack >r r> r@ rdrop
" syn keyword revastack sp@ sp! rp@ rp!
" address operations
syn keyword revamemory @ ! +! c@ c! 2@ 2! align aligned allot allocate here free resize
syn keyword revaadrarith chars char+ cells cell+ cell cell- 2cell+ 2cell- 3cell+ 4cell+
syn keyword revamemblks move fill
" conditionals
syn keyword revacond if else then =if >if <if <>if if0 ;; catch throw
" iterations
syn keyword revaloop while repeat until again
syn keyword revaloop do loop i j leave unloop skip more
" new words
syn match revaColonDef '\<noname:\|\<:\s+' contains=revaComment
syn keyword revaEndOfColonDef ; ;inline
syn keyword revadefine constant constant, variable create variable,
syn keyword revadefine user value to +to defer! defer@ defer is does> immediate
syn keyword revadefine compile literal ' [']
" Built in words
com! -nargs=+ Builtin syn keyword revaBuiltin <args>
Builtin execute ahead interp bye >body here pad words make
Builtin accept close cr creat delete ekey emit fsize ioerr key?
Builtin mtime open/r open/rw read rename seek space spaces stat
Builtin tell type type_ write (seek) (argv) (save) 0; 0drop;
Builtin >class >lz >name >xt alias alias: appname argc asciiz, asciizl,
Builtin body> clamp depth disassemble findprev fnvhash getenv here,
Builtin iterate last! last@ later link lz> lzmax os parse/ peek
Builtin peek-n pop prior push put rp@ rpick save setenv slurp
Builtin stack-empty? stack-iterate stack-size stack: THROW_BADFUNC
Builtin THROW_BADLIB THROW_GENERIC used xt>size z,
Builtin +lplace +place -chop /char /string bounds c+lplace c+place
Builtin chop cmp cmpi count lc lcount lplace place quote rsplit search split
Builtin zcount zt \\char
Builtin chdir g32 k32 u32 getcwd getpid hinst osname stdin stdout
Builtin (-lib) (bye) (call) (else) (find) (func) (here) (if (lib) (s0) (s^)
Builtin (to~) (while) >in >rel ?literal appstart cold compiling? context? d0 default_class
Builtin defer? dict dolstr dostr find-word h0 if) interp isa onexit
Builtin onstartup pdoes pop>ebx prompt rel> rp0 s0 src srcstr state str0 then,> then> tib
Builtin tp vector vector! word? xt? .ver revaver revaver# && '' 'constant 'context
Builtin 'create 'defer 'does 'forth 'inline 'macro 'macront 'notail 'value 'variable
Builtin (.r) (context) (create) (header) (hide) (inline) (p.r) (words~) (xfind)
Builtin ++ -- , -2drop -2nip -link -swap . .2x .classes .contexts .funcs .libs .needs .r
Builtin .rs .x 00; 0do 0if 1, 2, 3, 2* 2/ 2constant 2variable 3dup 4dup ;then >base >defer
Builtin >rr ? ?do @execute @rem appdir argv as back base base! between chain cleanup-libs
Builtin cmove> context?? ctrl-c ctx>name data: defer: defer@def dictgone do_cr eleave
Builtin endcase endof eval exception exec false find func: header heapgone help help/
Builtin hex# hide inline{ last lastxt lib libdir literal, makeexename mnotail ms ms@
Builtin newclass noop nosavedict notail nul of off on p: padchar parse parseln
Builtin parsews rangeof rdepth remains reset reva revaused rol8 rr> scratch setclass sp
Builtin strof super> temp time&date true turnkey? undo vfunc: w! w@
Builtin xchg xchg2 xfind xt>name xwords { {{ }} } _+ _1+ _1- pathsep case \||
" p[ [''] [ [']
" debugging
syn keyword revadebug .s dump see
" basic character operations
" syn keyword revaCharOps (.) CHAR EXPECT FIND WORD TYPE -TRAILING EMIT KEY
" syn keyword revaCharOps KEY? TIB CR
" syn match revaCharOps '\<char\s\S\s'
" syn match revaCharOps '\<\[char\]\s\S\s'
" syn region revaCharOps start=+."\s+ skip=+\\"+ end=+"+
" char-number conversion
syn keyword revaconversion s>d >digit digit> >single >double >number >float
" contexts
syn keyword revavocs forth macro inline
syn keyword revavocs context:
syn match revavocs /\<\~[^~ ]*/
syn match revavocs /[^~ ]*\~\>/
" numbers
syn keyword revamath decimal hex base binary octal
syn match revainteger '\<-\=[0-9.]*[0-9.]\+\>'
" recognize hex and binary numbers, the '$' and '%' notation is for greva
syn match revainteger '\<\$\x*\x\+\>' " *1* --- dont't mess
syn match revainteger '\<\x*\d\x*\>' " *2* --- this order!
syn match revainteger '\<%[0-1]*[0-1]\+\>'
syn match revainteger "\<'.\>"
" Strings
" syn region revaString start=+\.\?\"+ end=+"+ end=+$+
syn region revaString start=/"/ skip=/\\"/ end=/"/
" Comments
syn region revaComment start='\\S\s' end='.*' contains=revaTodo
syn match revaComment '\.(\s[^)]\{-})' contains=revaTodo
syn region revaComment start='(\s' skip='\\)' end=')' contains=revaTodo
syn match revaComment '(\s[^\-]*\-\-[^\-]\{-})' contains=revaTodo
syn match revaComment '\<|\s.*$' contains=revaTodo
syn match revaColonDef '\<:m\?\s*[^ \t]\+\>' contains=revaComment
" Include files
syn match revaInclude '\<\(include\|needs\)\s\+\S\+'
" Define the default highlighting.
if !exists("did_reva_syntax_inits")
let did_reva_syntax_inits=1
" The default methods for highlighting. Can be overriden later.
hi def link revaEOF cIf0
hi def link revaHelpStuff special
hi def link revaHelpDesc Comment
hi def link revaTodo Todo
hi def link revaOperators Operator
hi def link revaMath Number
hi def link revaInteger Number
hi def link revaStack Special
hi def link revaFStack Special
hi def link revaSP Special
hi def link revaMemory Operator
hi def link revaAdrArith Function
hi def link revaMemBlks Function
hi def link revaCond Conditional
hi def link revaLoop Repeat
hi def link revaColonDef Define
hi def link revaEndOfColonDef Define
hi def link revaDefine Define
hi def link revaDebug Debug
hi def link revaCharOps Character
hi def link revaConversion String
hi def link revaForth Statement
hi def link revaVocs Statement
hi def link revaString String
hi def link revaComment Comment
hi def link revaClassDef Define
hi def link revaEndOfClassDef Define
hi def link revaObjectDef Define
hi def link revaEndOfObjectDef Define
hi def link revaInclude Include
hi def link revaBuiltin Keyword
endif
let b:current_syntax = "reva"
" vim: ts=8:sw=4:nocindent:smartindent:

View File

@ -1,7 +1,7 @@
" Vim syntax file
" Language: Relax NG compact syntax
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2006-04-19
" Latest Revision: 2007-06-17
if exists("b:current_syntax")
finish
@ -10,7 +10,7 @@ endif
let s:cpo_save = &cpo
set cpo&vim
setlocal iskeyword=@,48-57,_,-,.
setlocal iskeyword+=-,.
syn keyword rncTodo contained TODO FIXME XXX NOTE

View File

@ -2,8 +2,8 @@
" Language: shell (sh) Korn shell (ksh) bash (sh)
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
" Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
" Last Change: Dec 12, 2006
" Version: 89
" Last Change: Apr 24, 2008
" Version: 90
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
"
" Using the following VIM variables: {{{1
@ -206,6 +206,7 @@ endif
syn keyword shCaseIn contained skipwhite skipnl in nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote
if exists("b:is_bash")
syn region shCaseExSingleQuote matchgroup=shOperator start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial skipwhite skipnl nextgroup=shCaseBar contained
syn region shCaseExDoubleQuote matchgroup=shOperator start=+\$"+ skip=+\\\\\|\\.+ end=+"+ contains=shStringSpecial,shSpecial,shCommandSub,shDeref skipwhite skipnl nextgroup=shCaseBar contained
else
syn region shCaseExSingleQuote matchgroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained
endif
@ -260,6 +261,7 @@ if exists("b:is_bash")
endif
if exists("b:is_bash")
syn region shExSingleQuote matchgroup=shOperator start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial
syn region shExDoubleQuote matchgroup=shOperator start=+\$"+ skip=+\\\\\|\\.+ end=+"+ contains=shStringSpecial,shSpecial,shCommandSub,shDeref
else
syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial
endif
@ -465,6 +467,7 @@ hi def link shCaseCommandSub shCommandSub
hi def link shCaseDoubleQuote shDoubleQuote
hi def link shCaseIn shConditional
hi def link shCaseSingleQuote shSingleQuote
hi def link shCaseDoubleQuote shSingleQuote
hi def link shCaseStart shConditional
hi def link shCmdSubRegion shShellVariables
hi def link shColon shStatement
@ -480,6 +483,7 @@ hi def link shDoubleQuote shString
hi def link shEcho shString
hi def link shEmbeddedEcho shString
hi def link shExSingleQuote shSingleQuote
hi def link shExDoubleQuote shSingleQuote
hi def link shFunctionStart Delimiter
hi def link shHereDoc shString
hi def link shHerePayload shHereDoc

View File

@ -1,8 +1,8 @@
" Vim syntax file
" Language: TeX
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrchipO@ScampbellPfamily.AbizM>
" Last Change: Feb 27, 2007
" Version: 37
" Last Change: Jun 03, 2008
" Version: 41
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
"
" Notes: {{{1
@ -261,27 +261,27 @@ syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained
" Sections, subsections, etc: {{{1
if g:tex_fold_enabled && has("folding")
syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' fold contains=@texFoldGroup,@texDocGroup,@Spell
syn region texPartZone matchgroup=texSection start='\\part\>' end='\n\ze\s*\\part\>' fold contains=@texFoldGroup,@texPartGroup,@Spell
syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\n\ze\s*\\chapter\>' fold contains=@texFoldGroup,@texChapterGroup,@Spell
syn region texSectionZone matchgroup=texSection start='\\section\>' end='\n\ze\s*\\section\>' fold contains=@texFoldGroup,@texSectionGroup,@Spell
syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\n\ze\s*\\subsection\>' fold contains=@texFoldGroup,@texSubSectionGroup,@Spell
syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\n\ze\s*\\subsubsection\>' fold contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\n\ze\s*\\paragraph\>' fold contains=@texFoldGroup,@texParaGroup,@Spell
syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\n\ze\s*\\subparagraph\>' fold contains=@texFoldGroup,@Spell
syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' fold contains=@texFoldGroup,@Spell
syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' fold contains=@texFoldGroup,@Spell
syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' fold contains=@texFoldGroup,@texDocGroup,@Spell
syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texPartGroup,@Spell
syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texChapterGroup,@Spell
syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSectionGroup,@Spell
syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSubSectionGroup,@Spell
syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texParaGroup,@Spell
syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@Spell
syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' fold contains=@texFoldGroup,@Spell
syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' fold contains=@texFoldGroup,@Spell
else
syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell
syn region texPartZone matchgroup=texSection start='\\part\>' end='\n\ze\s*\\part\>' contains=@texFoldGroup,@texPartGroup,@Spell
syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\n\ze\s*\\chapter\>' contains=@texFoldGroup,@texChapterGroup,@Spell
syn region texSectionZone matchgroup=texSection start='\\section\>' end='\n\ze\s*\\section\>' contains=@texFoldGroup,@texSectionGroup,@Spell
syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\n\ze\s*\\subsection\>' contains=@texFoldGroup,@texSubSectionGroup,@Spell
syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\n\ze\s*\\subsubsection\>' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\n\ze\s*\\paragraph\>' contains=@texFoldGroup,@texParaGroup,@Spell
syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\n\ze\s*\\subparagraph\>' contains=@texFoldGroup,@Spell
syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell
syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell
syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell
syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell
syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell
syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell
syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell
syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup,@Spell
syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@Spell
syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell
syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell
endif
" Bad Math (mismatched): {{{1
@ -300,8 +300,13 @@ if !exists("tex_no_math")
fun! TexNewMathZone(sfx,mathzone,starform)
let grpname = "texMathZone".a:sfx
let syncname = "texSyncMathZone".a:sfx
if g:tex_fold_enabled
let foldcmd= " fold"
else
let foldcmd= ""
endif
exe "syn cluster texMathZones add=".grpname
exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'
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'
@ -309,7 +314,7 @@ if !exists("tex_no_math")
let grpname = "texMathZone".a:sfx.'S'
let syncname = "texSyncMathZone".a:sfx.'S'
exe "syn cluster texMathZones add=".grpname
exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'
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'
@ -369,7 +374,11 @@ syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S"
" Comments: {{{1
" Normal TeX LaTeX : %....
" Documented TeX Format: ^^A... -and- leading %s (only)
syn cluster texCommentGroup contains=texTodo,@Spell
if !exists("g:tex_comment_nospell") || !g:tex_comment_nospell
syn cluster texCommentGroup contains=texTodo,@Spell
else
syn cluster texCommentGroup contains=texTodo,@NoSpell
endif
syn case ignore
syn keyword texTodo contained combak fixme todo xxx
syn case match
@ -501,6 +510,7 @@ if did_tex_syntax_inits == 1
HiLink texMathZoneW texMath
HiLink texMathZoneX texMath
HiLink texMathZoneY texMath
HiLink texMathZoneV texMath
HiLink texMathZoneZ texMath
endif
HiLink texSectionMarker texCmdName

View File

@ -1,8 +1,8 @@
" Vim syntax file
" Language: Vim 7.1 script
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
" Last Change: May 11, 2007
" Version: 7.1-67
" Last Change: Apr 08, 2008
" Version: 7.1-77
" Automatically generated keyword lists: {{{1
" Quit when a syntax file was already loaded {{{2
@ -16,20 +16,35 @@ syn keyword vimTodo contained COMBAK FIXME TODO XXX
syn cluster vimCommentGroup contains=vimTodo,@Spell
" regular vim commands {{{2
syn keyword vimCommand contained ab[breviate] abc[lear] abo[veleft] al[l] arga[dd] argd[elete] argdo arge[dit] argg[lobal] argl[ocal] ar[gs] argu[ment] as[cii] bad[d] ba[ll] bd[elete] be bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bN[ext] bo[tright] bp[revious] brea[k] breaka[dd] breakd[el] breakl[ist] br[ewind] bro[wse] bufdo b[uffer] buffers bun[load] bw[ipeout] ca[bbrev] cabc[lear] caddb[uffer] cad[dexpr] caddf[ile] cal[l] cat[ch] cb[uffer] cc ccl[ose] cd ce[nter] cex[pr] cf[ile] cfir[st] cgetb[uffer] cgete[xpr] cg[etfile] c[hange] changes chd[ir] che[ckpath] checkt[ime] cla[st] cl[ist] clo[se] cmapc[lear] cnew[er] cn[ext] cN[ext] cnf[ile] cNf[ile] cnorea[bbrev] col[der] colo[rscheme] comc[lear] comp[iler] conf[irm] con[tinue] cope[n] co[py] cpf[ile] cp[revious] cq[uit] cr[ewind] cuna[bbrev] cu[nmap] cw[indow] debugg[reedy] delc[ommand] d[elete] delf[unction] delm[arks] diffg[et] diffoff diffpatch diffpu[t] diffsplit diffthis diffu[pdate] dig[raphs] di[splay] dj[ump] dl[ist] dr[op] ds[earch] dsp[lit] earlier echoe[rr] echom[sg] echon e[dit] el[se] elsei[f] em[enu] emenu* endfo[r] endf[unction] en[dif] endt[ry] endw[hile] ene[w] ex exi[t] exu[sage] f[ile] files filetype fina[lly] fin[d] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] folddoc[losed] foldd[oopen] foldo[pen] for fu[nction] go[to] gr[ep] grepa[dd] ha[rdcopy] h[elp] helpf[ind] helpg[rep] helpt[ags] hid[e] his[tory] ia[bbrev] iabc[lear] if ij[ump] il[ist] imapc[lear] inorea[bbrev] is[earch] isp[lit] iuna[bbrev] iu[nmap] j[oin] ju[mps] k keepalt keepj[umps] kee[pmarks] laddb[uffer] lad[dexpr] laddf[ile] lan[guage] la[st] later lb[uffer] lc[d] lch[dir] lcl[ose] le[ft] lefta[bove] lex[pr] lf[ile] lfir[st] lgetb[uffer] lgete[xpr] lg[etfile] lgr[ep] lgrepa[dd] lh[elpgrep] l[ist] ll lla[st] lli[st] lmak[e] lm[ap] lmapc[lear] lnew[er] lne[xt] lN[ext] lnf[ile] lNf[ile] ln[oremap] lo[adview] loc[kmarks] lockv[ar] lol[der] lop[en] lpf[ile] lp[revious] lr[ewind] ls lt[ag] lu[nmap] lv[imgrep] lvimgrepa[dd] lw[indow] mak[e] ma[rk] marks mat[ch] menut[ranslate] mk[exrc] mks[ession] mksp[ell] mkvie[w] mkv[imrc] mod[e] m[ove] mzf[ile] mz[scheme] nbkey new n[ext] N[ext] nmapc[lear] noh[lsearch] norea[bbrev] nu[mber] nun[map] omapc[lear] on[ly] o[pen] opt[ions] ou[nmap] pc[lose] ped[it] pe[rl] perld[o] po[p] popu popu[p] pp[op] pre[serve] prev[ious] p[rint] P[rint] profd[el] prof[ile] promptf[ind] promptr[epl] ps[earch] pta[g] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptN[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] pyf[ile] py[thon] qa[ll] q[uit] quita[ll] r[ead] rec[over] redi[r] red[o] redr[aw] redraws[tatus] reg[isters] res[ize] ret[ab] retu[rn] rew[ind] ri[ght] rightb[elow] rub[y] rubyd[o] rubyf[ile] ru[ntime] rv[iminfo] sal[l] san[dbox] sa[rgument] sav[eas] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbN[ext] sbp[revious] sbr[ewind] sb[uffer] scripte[ncoding] scrip[tnames] se[t] setf[iletype] setg[lobal] setl[ocal] sf[ind] sfir[st] sh[ell] sign sil[ent] sim[alt] sla[st] sl[eep] sm[agic] sm[ap] smapc[lear] sme smenu sn[ext] sN[ext] sni[ff] sno[magic] snor[emap] snoreme snoremenu sor[t] so[urce] spelld[ump] spe[llgood] spelli[nfo] spellr[epall] spellu[ndo] spellw[rong] sp[lit] spr[evious] sre[wind] sta[g] startg[replace] star[tinsert] startr[eplace] stj[ump] st[op] stopi[nsert] sts[elect] sun[hide] sunm[ap] sus[pend] sv[iew] syncbind t tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabl[ast] tabm[ove] tabnew tabn[ext] tabN[ext] tabo[nly] tabp[revious] tabr[ewind] tabs ta[g] tags tc[l] tcld[o] tclf[ile] te[aroff] tf[irst] th[row] tj[ump] tl[ast] tm tm[enu] tn[ext] tN[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] tu tu[nmenu] una[bbreviate] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] unm[ap] up[date] verb[ose] ve[rsion] vert[ical] vie[w] vim[grep] vimgrepa[dd] vi[sual] viu[sage] vmapc[lear] vne[w] vs[plit] vu[nmap] wa[ll] wh[ile] winc[md] windo winp[os] win[size] wn[ext] wN[ext] wp[revious] wq wqa[ll] w[rite] ws[verb] wv[iminfo] X xa[ll] x[it] xm[ap] xmapc[lear] xme xmenu XMLent XMLns xn[oremap] xnoreme xnoremenu xu[nmap] y[ank]
syn keyword vimCommand contained ab[breviate] argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo ca[bbrev] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] 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] helpg[rep] iabc[lear] inorea[bbrev] ju[mps] 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] 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 abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] 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] helpt[ags] if is[earch] k 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] 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 abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] cnorea[bbrev] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] en[dif] exi[t] fina[lly] fo[ld] for ha[rdcopy] hid[e] ij[ump] isp[lit] keepalt 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] 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 al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] 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] h[elp] his[tory] il[ist] iuna[bbrev] keepj[umps] 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] norea[bbrev] 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 arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] caddf[ile] ccl[ose] cfir[st] changes cl[ist] 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] helpf[ind] ia[bbrev] imapc[lear] j[oin] kee[pmarks]
syn match vimCommand contained "\<z[-+^.=]"
" vimOptions are caught only when contained in a vimSet {{{2
syn keyword vimOption contained acd ai akm al aleph allowrevins altkeymap ambiwidth ambw anti antialias ar arab arabic arabicshape ari arshape autochdir autoindent autoread autowrite autowriteall aw awa background backspace backup backupcopy backupdir backupext backupskip balloondelay ballooneval balloonexpr bdir bdlay beval bex bexpr bg bh bin binary biosk bioskey bk bkc bl bomb breakat brk browsedir bs bsdir bsk bt bufhidden buflisted buftype casemap cb ccv cd cdpath cedit cf cfu ch charconvert ci cin cindent cink cinkeys cino cinoptions cinw cinwords clipboard cmdheight cmdwinheight cmp cms co columns com comments commentstring compatible complete completefunc completeopt confirm consk conskey copyindent cot cp cpo cpoptions cpt cscopepathcomp cscopeprg cscopequickfix cscopetag cscopetagorder cscopeverbose cspc csprg csqf cst csto csverb cuc cul cursorcolumn cursorline cwh debug deco def define delcombine dex dg dict dictionary diff diffexpr diffopt digraph dip dir directory display dy ea ead eadirection eb ed edcompatible ef efm ei ek enc encoding endofline eol ep equalalways equalprg errorbells errorfile errorformat esckeys et eventignore ex expandtab exrc fcl fcs fdc fde fdi fdl fdls fdm fdn fdo fdt fen fenc fencs fex ff ffs fileencoding fileencodings fileformat fileformats filetype fillchars fk fkmap flp fml fmr fo foldclose foldcolumn foldenable foldexpr foldignore foldlevel foldlevelstart foldmarker foldmethod foldminlines foldnestmax foldopen foldtext formatexpr formatlistpat formatoptions formatprg fp fs fsync ft gcr gd gdefault gfm gfn gfs gfw ghr go gp grepformat grepprg gtl gtt guicursor guifont guifontset guifontwide guiheadroom guioptions guipty guitablabel guitabtooltip helpfile helpheight helplang hf hh hi hid hidden highlight history hk hkmap hkmapp hkp hl hlg hls hlsearch ic icon iconstring ignorecase im imactivatekey imak imc imcmdline imd imdisable imi iminsert ims imsearch inc include includeexpr incsearch inde indentexpr indentkeys indk inex inf infercase insertmode is isf isfname isi isident isk iskeyword isp isprint joinspaces js key keymap keymodel keywordprg km kmp kp langmap langmenu laststatus lazyredraw lbr lcs linebreak lines linespace lisp lispwords list listchars lm lmap loadplugins lpl ls lsp lw lz ma macatsui magic makeef makeprg mat matchpairs matchtime maxcombine maxfuncdepth maxmapdepth maxmem maxmempattern maxmemtot mco mef menuitems mfd mh mis mkspellmem ml mls mm mmd mmp mmt mod modeline modelines modifiable modified more mouse mousef mousefocus mousehide mousem mousemodel mouses mouseshape mouset mousetime mp mps msm mzq mzquantum nf nrformats nu number numberwidth nuw odev oft ofu omnifunc opendevice operatorfunc opfunc osfiletype pa para paragraphs paste pastetoggle patchexpr patchmode path pdev penc pex pexpr pfn ph pheader pi pm pmbcs pmbfn popt preserveindent previewheight previewwindow printdevice printencoding printexpr printfont printheader printmbcharset printmbfont printoptions prompt pt pumheight pvh pvw qe quoteescape readonly remap report restorescreen revins ri rightleft rightleftcmd rl rlc ro rs rtp ru ruf ruler rulerformat runtimepath sb sbo sbr sc scb scr scroll scrollbind scrolljump scrolloff scrollopt scs sect sections secure sel selection selectmode sessionoptions sft sh shcf shell shellcmdflag shellpipe shellquote shellredir shellslash shelltemp shelltype shellxquote shiftround shiftwidth shm shortmess shortname showbreak showcmd showfulltag showmatch showmode showtabline shq si sidescroll sidescrolloff siso sj slm sm smartcase smartindent smarttab smc smd sn so softtabstop sol sp spc spell spellcapcheck spellfile spelllang spellsuggest spf spl splitbelow splitright spr sps sr srr ss ssl ssop st sta stal startofline statusline stl stmp sts su sua suffixes suffixesadd sw swapfile swapsync swb swf switchbuf sws sxq syn synmaxcol syntax ta tabline tabpagemax tabstop tag tagbsearch taglength tagrelative tags tagstack tal tb tbi tbidi tbis tbs tenc term termbidi termencoding terse textauto textmode textwidth tf tgst thesaurus tildeop timeout timeoutlen title titlelen titleold titlestring tl tm to toolbar toolbariconsize top tpm tr ts tsl tsr ttimeout ttimeoutlen ttm tty ttybuiltin ttyfast ttym ttymouse ttyscroll ttytype tw tx uc ul undolevels updatecount updatetime ut vb vbs vdir ve verbose verbosefile vfile vi viewdir viewoptions viminfo virtualedit visualbell vop wa wak warn wb wc wcm wd weirdinvert wfh wfw wh whichwrap wi wig wildchar wildcharm wildignore wildmenu wildmode wildoptions wim winaltkeys window winfixheight winfixwidth winheight winminheight winminwidth winwidth wiv wiw wm wmh wmnu wmw wop wrap wrapmargin wrapscan write writeany writebackup writedelay ws ww
syn keyword vimOption contained acd ambiwidth arabicshape autowriteall backupdir bdlay binary breakat bufhidden cdpath cin cinwords columns completeopt cpo cscopetagorder csverb deco dictionary directory ed encoding errorfile exrc fdls fencs fileformats fmr foldlevel foldtext fsync gfs gtl guioptions hf hk hlsearch imak ims indentexpr is isp keywordprg lazyredraw lispwords ls makeef maxmapdepth mfd mmd modified mousemodel msm numberwidth operatorfunc pastetoggle pexpr pmbfn printexpr pt readonly rightleft rtp sb scroll sect sessionoptions shellpipe shellxquote showbreak shq slm smd spc spf sr sta sts swapfile sxq tabpagemax tags tbis terse thesaurus titleold toolbariconsize tsr ttyfast tx ut verbosefile virtualedit wb wfw wildcharm winaltkeys winminwidth wmnu write
syn keyword vimOption contained ai ambw ari aw backupext beval biosk brk buflisted cedit cindent clipboard com confirm cpoptions cscopeverbose cuc def diff display edcompatible endofline errorformat fcl fdm fex filetype fo foldlevelstart formatexpr ft gfw gtt guipty hh hkmap ic imc imsearch indentkeys isf isprint km lbr list lsp makeprg maxmem mh mmp more mouses mzq nuw opfunc patchexpr pfn popt printfont pumheight remap rightleftcmd ru sbo scrollbind sections sft shellquote shiftround showcmd si sm sn spell spl srr stal su swapsync syn tabstop tagstack tbs textauto tildeop titlestring top ttimeout ttym uc vb vfile visualbell wc wh wildignore window winwidth wmw writeany
syn keyword vimOption contained akm anti arshape awa backupskip bex bioskey browsedir buftype cf cink cmdheight comments consk cpt cspc cul define diffexpr dy ef eol esckeys fcs fdn ff fillchars foldclose foldmarker formatlistpat gcr ghr guicursor guitablabel hi hkmapp icon imcmdline inc indk isfname joinspaces kmp lcs listchars lw mat maxmempattern mis mmt mouse mouseshape mzquantum odev osfiletype patchmode ph preserveindent printheader pvh report rl ruf sbr scrolljump secure sh shellredir shiftwidth showfulltag sidescroll smartcase so spellcapcheck splitbelow ss startofline sua swb synmaxcol tag tal tenc textmode timeout tl tpm ttimeoutlen ttymouse ul vbs vi vop wcm whichwrap wildmenu winfixheight wiv wop writebackup
syn keyword vimOption contained al antialias autochdir background balloondelay bexpr bk bs casemap cfu cinkeys cmdwinheight commentstring conskey cscopepathcomp csprg cursorcolumn delcombine diffopt ea efm ep et fdc fdo ffs fk foldcolumn foldmethod formatoptions gd go guifont guitabtooltip hid hkp iconstring imd include inex isi js kp linebreak lm lz matchpairs maxmemtot mkspellmem mod mousef mouset nf oft pa path pheader previewheight printmbcharset pvw restorescreen rlc ruler sc scrolloff sel shcf shellslash shm showmatch sidescrolloff smartindent softtabstop spellfile splitright ssl statusline suffixes swf syntax tagbsearch tb term textwidth timeoutlen tm tr ttm ttyscroll undolevels vdir viewdir wa wd wi wildmode winfixwidth wiw wrap writedelay
syn keyword vimOption contained aleph ar autoindent backspace ballooneval bg bkc bsdir cb ch cino cmp compatible copyindent cscopeprg csqf cursorline dex digraph ead ei equalalways eventignore fde fdt fileencoding fkmap foldenable foldminlines formatprg gdefault gp guifontset helpfile hidden hl ignorecase imdisable includeexpr inf isident key langmap lines lmap ma matchtime mco ml modeline mousefocus mousetime nrformats ofu para pdev pi previewwindow printmbfont qe revins ro rulerformat scb scrollopt selection shell shelltemp shortmess showmode siso smarttab sol spelllang spr ssop stl suffixesadd switchbuf ta taglength tbi termbidi tf title to ts tty ttytype updatecount ve viewoptions wak weirdinvert wig wildoptions winheight wm wrapmargin ws
syn keyword vimOption contained allowrevins arab autoread backup balloonexpr bh bl bsk ccv charconvert cinoptions cms complete cot cscopequickfix cst cwh dg dip eadirection ek equalprg ex fdi fen fileencodings flp foldexpr foldnestmax fp gfm grepformat guifontwide helpheight highlight hlg im imi incsearch infercase isk keymap langmenu linespace loadplugins macatsui maxcombine mef mls modelines mousehide mp nu omnifunc paragraphs penc pm printdevice printoptions quoteescape ri rs runtimepath scr scs selectmode shellcmdflag shelltype shortname showtabline sj smc sp spellsuggest sps st stmp sw sws tabline tagrelative tbidi termencoding tgst titlelen toolbar tsl ttybuiltin tw updatetime verbose viminfo warn wfh wildchar wim winminheight wmh wrapscan ww
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
" vimOptions: These are the turn-off setting variants {{{2
syn keyword vimOption contained noacd noai noakm noallowrevins noaltkeymap noanti noantialias noar noarab noarabic noarabicshape noari noarshape noautochdir noautoindent noautoread noautowrite noautowriteall noaw noawa nobackup noballooneval nobeval nobin nobinary nobiosk nobioskey nobk nobl nobomb nobuflisted nocf noci nocin nocindent nocompatible noconfirm noconsk noconskey nocopyindent nocp nocscopetag nocscopeverbose nocst nocsverb nocuc nocul nocursorcolumn nocursorline nodeco nodelcombine nodg nodiff nodigraph nodisable noea noeb noed noedcompatible noek noendofline noeol noequalalways noerrorbells noesckeys noet noex noexpandtab noexrc nofen nofk nofkmap nofoldenable nogd nogdefault noguipty nohid nohidden nohk nohkmap nohkmapp nohkp nohls nohlsearch noic noicon noignorecase noim noimc noimcmdline noimd noincsearch noinf noinfercase noinsertmode nois nojoinspaces nojs nolazyredraw nolbr nolinebreak nolisp nolist noloadplugins nolpl nolz noma nomacatsui nomagic nomh noml nomod nomodeline nomodifiable nomodified nomore nomousef nomousefocus nomousehide nonu nonumber noodev noopendevice nopaste nopi nopreserveindent nopreviewwindow noprompt nopvw noreadonly noremap norestorescreen norevins nori norightleft norightleftcmd norl norlc noro nors noru noruler nosb nosc noscb noscrollbind noscs nosecure nosft noshellslash noshelltemp noshiftround noshortname noshowcmd noshowfulltag noshowmatch noshowmode nosi nosm nosmartcase nosmartindent nosmarttab nosmd nosn nosol nospell nosplitbelow nosplitright nospr nosr nossl nosta nostartofline nostmp noswapfile noswf nota notagbsearch notagrelative notagstack notbi notbidi notbs notermbidi noterse notextauto notextmode notf notgst notildeop notimeout notitle noto notop notr nottimeout nottybuiltin nottyfast notx novb novisualbell nowa nowarn nowb noweirdinvert nowfh nowfw nowildmenu nowinfixheight nowinfixwidth nowiv nowmnu nowrap nowrapscan nowrite nowriteany nowritebackup nows
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 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
" vimOptions: These are the invertible variants {{{2
syn keyword vimOption contained invacd invai invakm invallowrevins invaltkeymap invanti invantialias invar invarab invarabic invarabicshape invari invarshape invautochdir invautoindent invautoread invautowrite invautowriteall invaw invawa invbackup invballooneval invbeval invbin invbinary invbiosk invbioskey invbk invbl invbomb invbuflisted invcf invci invcin invcindent invcompatible invconfirm invconsk invconskey invcopyindent invcp invcscopetag invcscopeverbose invcst invcsverb invcuc invcul invcursorcolumn invcursorline invdeco invdelcombine invdg invdiff invdigraph invdisable invea inveb inved invedcompatible invek invendofline inveol invequalalways inverrorbells invesckeys invet invex invexpandtab invexrc invfen invfk invfkmap invfoldenable invgd invgdefault invguipty invhid invhidden invhk invhkmap invhkmapp invhkp invhls invhlsearch invic invicon invignorecase invim invimc invimcmdline invimd invincsearch invinf invinfercase invinsertmode invis invjoinspaces invjs invlazyredraw invlbr invlinebreak invlisp invlist invloadplugins invlpl invlz invma invmacatsui invmagic invmh invml invmod invmodeline invmodifiable invmodified invmore invmousef invmousefocus invmousehide invnu invnumber invodev invopendevice invpaste invpi invpreserveindent invpreviewwindow invprompt invpvw invreadonly invremap invrestorescreen invrevins invri invrightleft invrightleftcmd invrl invrlc invro invrs invru invruler invsb invsc invscb invscrollbind invscs invsecure invsft invshellslash invshelltemp invshiftround invshortname invshowcmd invshowfulltag invshowmatch invshowmode invsi invsm invsmartcase invsmartindent invsmarttab invsmd invsn invsol invspell invsplitbelow invsplitright invspr invsr invssl invsta invstartofline invstmp invswapfile invswf invta invtagbsearch invtagrelative invtagstack invtbi invtbidi invtbs invtermbidi invterse invtextauto invtextmode invtf invtgst invtildeop invtimeout invtitle invto invtop invtr invttimeout invttybuiltin invttyfast invtx invvb invvisualbell invwa invwarn invwb invweirdinvert invwfh invwfw invwildmenu invwinfixheight invwinfixwidth invwiv invwmnu invwrap invwrapscan invwrite invwriteany invwritebackup invws
syn keyword vimOption contained invacd invallowrevins invantialias invarabic invarshape invautoread invaw invballooneval invbinary invbk invbuflisted invcin invconfirm invcopyindent invcscopeverbose invcuc invcursorline invdg invdisable inveb invedcompatible invendofline invequalalways invesckeys invex invexrc invfk invfoldenable invgdefault invhid invhk invhkmapp invhls invic invignorecase invimc invimd invinf invinsertmode invjoinspaces invlazyredraw invlinebreak invlist invlpl invma invmagic invml invmodeline invmodified invmousef invmousehide invnumber invopendevice invpi invpreviewwindow invpvw invremap invrevins invrightleft invrl invro invru invsb invscb invscs invsft invshelltemp invshortname invshowfulltag invshowmode invsm invsmartindent invsmd invsol invsplitbelow invspr invssl invstartofline invswapfile invta invtagrelative invtbi invtbs invterse invtextmode invtgst invtimeout invto invtr invttybuiltin invtx invvisualbell invwarn invweirdinvert invwfw invwinfixheight invwiv invwrap invwrite invwritebackup
syn keyword vimOption contained invai invaltkeymap invar invarabicshape invautochdir invautowrite invawa invbeval invbiosk invbl invcf invcindent invconsk invcp invcst invcul invdeco invdiff invea inved invek inveol inverrorbells invet invexpandtab invfen invfkmap invgd invguipty invhidden invhkmap invhkp invhlsearch invicon invim invimcmdline invincsearch invinfercase invis invjs invlbr invlisp invloadplugins invlz invmacatsui invmh invmod invmodifiable invmore invmousefocus invnu invodev invpaste invpreserveindent invprompt invreadonly invrestorescreen invri invrightleftcmd invrlc invrs invruler invsc invscrollbind invsecure invshellslash invshiftround invshowcmd invshowmatch invsi invsmartcase invsmarttab invsn invspell invsplitright invsr invsta invstmp invswf invtagbsearch invtagstack invtbidi invtermbidi invtextauto invtf invtildeop invtitle invtop invttimeout invttyfast invvb invwa invwb invwfh invwildmenu invwinfixwidth invwmnu invwrapscan invwriteany invws
syn keyword vimOption contained invakm invanti invarab invari invautoindent invautowriteall invbackup invbin invbioskey invbomb invci invcompatible invconskey invcscopetag invcsverb invcursorcolumn invdelcombine invdigraph
" termcap codes (which can also be set) {{{2
syn keyword vimOption contained t_AB t_AF t_al t_AL t_bc t_cd t_ce t_Ce t_cl t_cm t_Co t_cs t_Cs t_CS t_CV t_da t_db t_dl t_DL t_EI t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_fs t_IE t_IS t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RI t_RV t_Sb t_se t_Sf t_SI t_so t_sr t_te t_ti t_ts t_ue t_us t_ut t_vb t_ve t_vi t_vs t_WP t_WS t_xs t_ZH t_ZR
syn keyword vimOption contained t_AB t_al t_bc t_ce t_cl t_Co t_cs t_Cs t_CS t_CV t_da t_db t_dl t_DL t_EI t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_fs t_IE t_IS t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RI t_RV t_Sb t_se t_Sf t_SI t_so t_sr t_te t_ti t_ts t_ue t_us t_ut t_vb t_ve t_vi t_vs t_WP t_WS t_xs t_ZH t_ZR
syn keyword vimOption contained t_AF t_AL t_cd t_Ce t_cm
syn match vimOption contained "t_%1"
syn match vimOption contained "t_#2"
syn match vimOption contained "t_#4"
@ -55,11 +70,24 @@ syn match vimHLGroup contained "Conceal"
syn case match
" Function Names {{{2
syn keyword vimFuncName contained add append argc argidx argv browse browsedir bufexists buflisted bufloaded bufname bufnr bufwinnr byte2line byteidx call changenr char2nr cindent col complete complete_add complete_check confirm copy count cscope_connection cursor deepcopy delete did_filetype diff_filler diff_hlID empty escape eval eventhandler executable exists expand expr8 extend feedkeys filereadable filewritable filter finddir findfile fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreground function garbagecollect get getbufline getbufvar getchar getcharmod getcmdline getcmdpos getcmdtype getcwd getfontname getfperm getfsize getftime getftype getline getloclist getpos getqflist getreg getregtype gettabwinvar getwinposx getwinposy getwinvar glob globpath has has_key haslocaldir hasmapto histadd histdel histget histnr hlexists hlID hostname iconv indent index input inputdialog inputlist inputrestore inputsave inputsecret insert isdirectory islocked items join keys len libcall libcallnr line line2byte lispindent localtime map maparg mapcheck match matcharg matchend matchlist matchstr max min mkdir mode nextnonblank nr2char pathshorten prevnonblank printf pumvisible range readfile reltime reltimestr remote_expr remote_foreground remote_peek remote_read remote_send remove rename repeat resolve reverse search searchdecl searchpair searchpairpos searchpos server2client serverlist setbufvar setcmdpos setline setloclist setpos setqflist setreg settabwinvar setwinvar shellescape simplify sort soundfold spellbadword spellsuggest split str2nr strftime stridx string strlen strpart strridx strtrans submatch substitute synID synIDattr synIDtrans system tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tempname tolower toupper tr type values virtcol visualmode winbufnr wincol winheight winline winnr winrestcmd winrestview winsaveview winwidth writefile
syn keyword vimFuncName contained add argidx browsedir bufloaded bufwinnr call cindent complete confirm cscope_connection delete diff_hlID eval exists expr8 feedkeys filewritable finddir fnamemodify foldclosedend foldtext foreground garbagecollect getbufline getchar getcmdline getcmdtype getfontname getfsize getftype getloclist getpos getreg gettabwinvar getwinposy glob has haslocaldir histadd histget hlexists hostname indent input inputlist inputsave insert islocked join len libcallnr line2byte localtime maparg match matcharg matchend matchstr min mode nr2char prevnonblank pumvisible readfile reltimestr remote_foreground remote_read remove repeat reverse searchdecl searchpairpos server2client setbufvar setline setmatches setqflist settabwinvar shellescape sort spellbadword split strftime string strpart strtrans substitute synIDattr system tabpagenr tagfiles tempname toupper type virtcol winbufnr winheight winnr winrestview winwidth
syn keyword vimFuncName contained append argv bufexists bufname byte2line changenr clearmatches complete_add copy cursor did_filetype empty eventhandler expand extend filereadable filter findfile foldclosed foldlevel foldtextresult function get getbufvar getcharmod getcmdpos getcwd getfperm getftime getline getmatches getqflist getregtype getwinposx getwinvar globpath has_key hasmapto histdel histnr hlID iconv index inputdialog inputrestore inputsecret isdirectory items keys libcall line lispindent map mapcheck matchadd matchdelete matchlist max mkdir nextnonblank pathshorten printf range reltime remote_expr remote_peek remote_send rename resolve search searchpair searchpos serverlist setcmdpos setloclist setpos setreg setwinvar simplify soundfold spellsuggest str2nr stridx strlen strridx submatch synID synIDtrans tabpagebuflist tabpagewinnr taglist tolower tr values visualmode wincol winline winrestcmd winsaveview writefile
syn keyword vimFuncName contained argc browse buflisted bufnr byteidx char2nr col complete_check count deepcopy diff_filler escape executable
"--- syntax above generated by mkvimvim ---
" Special Vim Highlighting (not automatic) {{{1
" Deprecated variable options {{{2
if exists("g:vim_minlines")
let g:vimsyn_minlines= g:vim_minlines
endif
if exists("g:vim_maxlines")
let g:vimsyn_maxlines= g:vim_maxlines
endif
if exists("g:vimsyntax_noerror")
let g:vimsyn_noerror= g:vimsyntax_noerror
endif
" Numbers {{{2
" =======
syn match vimNumber "\<\d\+\([lL]\|\.\d\+\)\="
@ -84,14 +112,14 @@ syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i
" =======
syn match vimBehave "\<be\%[have]\>" skipwhite nextgroup=vimBehaveModel,vimBehaveError
syn keyword vimBehaveModel contained mswin xterm
if !exists("g:vimsyntax_noerror")
if !exists("g:vimsyn_noerror")
syn match vimBehaveError contained "[^ ]\+"
endif
" Filetypes {{{2
" =========
syn match vimFiletype "\<filet\%[ype]\(\s\+\I\i*\)*" skipwhite contains=vimFTCmd,vimFTOption,vimFTError
if !exists("g:vimsyntax_noerror")
if !exists("g:vimsyn_noerror")
syn match vimFTError contained "\I\i*"
endif
syn keyword vimFTCmd contained filet[ype]
@ -100,29 +128,17 @@ syn keyword vimFTOption contained detect indent off on plugin
" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
syn cluster vimAugroupList contains=vimIsCommand,vimFunction,vimFunctionError,vimLineComment,vimSpecFile,vimOper,vimNumber,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
syn region vimAugroup start="\<aug\%[roup]\>\s\+\K\k*" end="\<aug\%[roup]\>\s\+[eE][nN][dD]\>" contains=vimAugroupKey,vimAutoCmd,@vimAugroupList keepend
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
syn region vimAugroup start="\<aug\%[roup]\>\s\+\K\k*" end="\<aug\%[roup]\>\s\+[eE][nN][dD]\>" contains=vimAugroupKey,vimAutoCmd,@vimAugroupList keepend
endif
syn match vimAugroup "aug\%[roup]!" contains=vimAugroupKey
if !exists("g:vimsyntax_noerror")
if !exists("g:vimsyn_noerror")
syn match vimAugroupError "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
endif
syn keyword vimAugroupKey contained aug[roup]
" 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=vimIsCommand,vimFunction,vimFunctionError,vimFuncBody,vimLineComment,vimSpecFile,vimOper,vimNumber,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
if !exists("g:vimsyntax_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*\|g:\(\I\i*\.\)\+\I\i*\)\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
syn region vimFuncBody contained start=")" end="\<endf\%[unction]" contains=@vimFuncBodyList
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 keyword vimPattern contained start skip end
" Operators: {{{2
" =========
syn cluster vimOperGroup contains=vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue
@ -130,10 +146,30 @@ syn match vimOper "\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite n
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
if !exists("g:vimsyntax_noerror")
if !exists("g:vimsyn_noerror")
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
if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'f'
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
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 keyword vimPattern contained start skip end
" Special Filenames, Modifiers, Extension Removal: {{{2
" ===============================================
syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst
@ -156,7 +192,7 @@ syn match vimUserAttrb contained "-cou\%[nt]=\d\+" contains=vimNumber,vimOper,
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:vimsyntax_noerror")
if !exists("g:vimsyn_noerror")
syn match vimUserCmdError contained "\S\+\>"
endif
syn case ignore
@ -168,12 +204,6 @@ syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\
syn case match
syn match vimUserAttrbCmplt contained "custom,\u\w*"
" Errors: {{{2
" ======
if !exists("g:vimsyntax_noerror")
syn match vimElseIfErr "\<else\s\+if\>"
endif
" Lower Priority Comments: after some vim commands... {{{2
" =======================
syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
@ -280,8 +310,9 @@ syn case match
" Maps {{{2
" ====
syn match vimMap "\<map!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
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
@ -315,13 +346,21 @@ syn match vimNotation "\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|c
syn match vimBracket contained "[\\<>]"
syn case match
" User Function Highlighting (following Gautam Iyer's suggestion) {{{2
" 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 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]\>"
" Norm
" Errors And Warnings: {{{2
" ====================
if !exists("g:vimsyn_noerror")
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 ".*$"
@ -331,7 +370,7 @@ syn match vimNormCmds contained ".*$"
syn match vimGroupList contained "@\=[^ \t,]*" contains=vimGroupSpecial,vimPatSep
syn match vimGroupList contained "@\=[^ \t,]*," nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
syn keyword vimGroupSpecial contained ALL ALLBUT
if !exists("g:vimsyntax_noerror")
if !exists("g:vimsyn_noerror")
syn match vimSynError contained "\i\+"
syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
endif
@ -344,7 +383,7 @@ syn match vimAuSyntax contained "\s+sy\%[ntax]" contains=vimCommand skipwhite
" Syntax: case {{{2
syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
if !exists("g:vimsyntax_noerror")
if !exists("g:vimsyn_noerror")
syn match vimSynCaseError contained "\i\+"
endif
syn keyword vimSynCase contained ignore match
@ -364,7 +403,7 @@ 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 keepend matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
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
@ -400,7 +439,7 @@ syn match vimMtchComment contained '"[^"]\+$'
" Syntax: sync {{{2
" ============
syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
if !exists("g:vimsyntax_noerror")
if !exists("g:vimsyn_noerror")
syn match vimSyncError contained "\i\+"
endif
syn keyword vimSyncC contained ccomment clear fromstart
@ -438,14 +477,14 @@ syn case match
syn match vimHiFontname contained "[a-zA-Z\-*]\+"
syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
syn match vimHiGuiRgb contained "#\x\{6}"
if !exists("g:vimsyntax_noerror")
if !exists("g:vimsyn_noerror")
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
if !exists("g:vimsyntax_noerror")
if !exists("g:vimsyn_noerror")
syn match vimHiKeyError contained "\i\+="he=e-1
endif
syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
@ -485,71 +524,100 @@ syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' e
" Scripts : perl,ruby : Benoit Cerrina {{{2
" ======= python,tcl: Johannes Zellner
" allow users to prevent embedded script syntax highlighting
" when vim doesn't have perl/python/ruby/tcl support. Do
" so by setting g:vimembedscript= 0 in the user's <.vimrc>.
if !exists("g:vimembedscript")
let g:vimembedscript= 1
" Allows users to specify the type of embedded script highlighting
" they want: (perl/python/ruby/tcl support)
" g:vimsyn_embed == 0 : don't embed any scripts
" g:vimsyn_embed ~= 'm' : embed mzscheme (but only if vim supports it)
" g:vimsyn_embed ~= 'p' : embed perl (but only if vim supports it)
" g:vimsyn_embed ~= 'P' : embed python (but only if vim supports it)
" g:vimsyn_embed ~= 'r' : embed ruby (but only if vim supports it)
" g:vimsyn_embed ~= 't' : embed tcl (but only if vim supports it)
if !exists("g:vimsyn_embed")
let g:vimsyn_embed= "mpPr"
endif
" [-- perl --] {{{3
if (has("perl") || g:vimembedscript) && filereadable(expand("<sfile>:p:h")."/perl.vim")
if (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(expand("<sfile>:p:h")."/perl.vim")
unlet! b:current_syntax
syn include @vimPerlScript <sfile>:p:h/perl.vim
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
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
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
endif
endif
" [-- ruby --] {{{3
if (has("ruby") || g:vimembedscript) && filereadable(expand("<sfile>:p:h")."/ruby.vim")
if (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(expand("<sfile>:p:h")."/ruby.vim")
unlet! b:current_syntax
syn include @vimRubyScript <sfile>:p:h/ruby.vim
syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript
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
else
syn region vimRubyRegion fold 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
endif
" [-- python --] {{{3
if (has("python") || g:vimembedscript) && filereadable(expand("<sfile>:p:h")."/python.vim")
if (g:vimsyn_embed =~ 'P' && has("python")) && filereadable(expand("<sfile>:p:h")."/python.vim")
unlet! b:current_syntax
syn include @vimPythonScript <sfile>:p:h/python.vim
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
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
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
endif
endif
" [-- 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\>\|\<zsh\>\)\%(\.exe\)\=$') || g:vimembedscript
let trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
else
let trytcl= 1
endif
if trytcl
if (has("tcl") || g:vimembedscript) && filereadable(expand("<sfile>:p:h")."/tcl.vim")
if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(expand("<sfile>:p:h")."/tcl.vim")
unlet! b:current_syntax
syn include @vimTclScript <sfile>:p:h/tcl.vim
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
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
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
endif
endif
endif
unlet trytcl
" [-- mzscheme --] {{{3
if (has("mzscheme") || g:vimembedscript) && filereadable(expand("<sfile>:p:h")."/scheme.vim")
if (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(expand("<sfile>:p:h")."/scheme.vim")
unlet! b:current_syntax
let iskKeep= &isk
syn include @vimMzSchemeScript <sfile>:p:h/scheme.vim
let &isk= iskKeep
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
if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 't'
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
endif
endif
" Synchronize (speed) {{{2
"============
if exists("g:vim_minlines")
exe "syn sync minlines=".g:vim_minlines
if exists("g:vimsyn_minlines")
exe "syn sync minlines=".g:vimsyn_minlines
endif
if exists("g:vim_maxlines")
exe "syn sync maxlines=".g:vim_maxlines
if exists("g:vimsyn_maxlines")
exe "syn sync maxlines=".g:vimsyn_maxlines
else
syn sync maxlines=60
endif
@ -563,7 +631,7 @@ hi def link vimAuHighlight vimHighlight
hi def link vimSubst1 vimSubst
hi def link vimBehaveModel vimBehave
if !exists("g:vimsyntax_noerror")
if !exists("g:vimsyn_noerror")
hi def link vimBehaveError vimError
hi def link vimCollClassErr vimError
hi def link vimErrSetting vimError
@ -577,6 +645,7 @@ if !exists("g:vimsyntax_noerror")
hi def link vimMapModErr vimError
hi def link vimSubstFlagErr vimError
hi def link vimSynCaseError vimError
hi def link vimBufnrWarn vimWarn
endif
hi def link vimAddress vimMark
@ -708,6 +777,7 @@ hi def link vimSyncNone Type
hi def link vimTodo Todo
hi def link vimUserCmdError Error
hi def link vimUserAttrbCmpltFunc Special
hi def link vimWarn WarningMsg
" Current Syntax Variable: {{{2
let b:current_syntax = "vim"

94
runtime/syntax/voscm.vim Normal file
View File

@ -0,0 +1,94 @@
" Vim syntax file
" Language: VOS CM macro
" Maintainer: Andrew McGill andrewm at lunch.za.net
" Last Change: Apr 06, 2007
" Version: 1
" URL: http://lunch.za.net/
"
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
syn case match
" set iskeyword=48-57,_,a-z,A-Z
syn match voscmStatement "^!"
syn match voscmStatement "&\(label\|begin_parameters\|end_parameters\|goto\|attach_input\|break\|continue\|control\|detach_input\|display_line\|display_line_partial\|echo\|eof\|eval\|if\|mode\|return\|while\|set\|set_string\|then\|else\|do\|done\|end\)\>"
syn match voscmJump "\(&label\|&goto\) *" nextgroup=voscmLabelId
syn match voscmLabelId contained "\<[A-Za-z][A-Z_a-z0-9]* *$"
syn match voscmSetvar "\(&set_string\|&set\) *" nextgroup=voscmVariable
syn match voscmError "\(&set_string\|&set\) *&"
syn match voscmVariable contained "\<[A-Za-z][A-Z_a-z0-9]\+\>"
syn keyword voscmParamKeyword contained number req string switch allow byte disable_input hidden length longword max min no_abbrev output_path req required req_for_form word
syn region voscmParamList matchgroup=voscmParam start="&begin_parameters" end="&end_parameters" contains=voscmParamKeyword,voscmString,voscmParamName,voscmParamId
syn match voscmParamName contained "\(^\s*[A-Za-z_0-9]\+\s\+\)\@<=\k\+"
syn match voscmParamId contained "\(^\s*\)\@<=\k\+"
syn region par1 matchgroup=par1 start=/(/ end=/)/ contains=voscmFunction,voscmIdentifier,voscmString transparent
" FIXME: functions should only be allowed after a bracket ... ie (ask ...):
syn keyword voscmFunction contained abs access after ask before break byte calc ceil command_status concat
syn keyword voscmFunction contained contents path_name copy count current_dir current_module date date_time
syn keyword voscmFunction contained decimal directory_name end_of_file exists file_info floor given group_name
syn keyword voscmFunction contained has_access hexadecimal home_dir index iso_date iso_date_time language_name
syn keyword voscmFunction contained length lock_type locked ltrim master_disk max message min mod module_info
syn keyword voscmFunction contained module_name object_name online path_name person_name process_dir process_info
syn keyword voscmFunction contained process_type quote rank referencing_dir reverse rtrim search
syn keyword voscmFunction contained software_purchased string substitute substr system_name terminal_info
syn keyword voscmFunction contained terminal_name time translate trunc unique_string unquote user_name verify
syn keyword voscmFunction contained where_path
syn keyword voscmTodo contained TODO FIXME XXX DEBUG NOTE
syn match voscmTab "\t\+"
syn keyword voscmCommand add_entry_names add_library_path add_profile analyze_pc_samples attach_default_output attach_port batch bind break_process c c_preprocess call_thru cancel_batch_requests cancel_device_reservation cancel_print_requests cc change_current_dir check_posix cobol comment_on_manual compare_dirs compare_files convert_text_file copy_dir copy_file copy_tape cpp create_data_object create_deleted_record_index create_dir create_file create_index create_record_index create_tape_volumes cvt_fixed_to_stream cvt_stream_to_fixed debug delete_dir delete_file delete_index delete_library_path detach_default_output detach_port dismount_tape display display_access display_access_list display_batch_status display_current_dir display_current_module display_date_time display_default_access_list display_device_info display_dir_status display_disk_info display_disk_usage display_error display_file display_file_status display_line display_notices display_object_module_info display_print_defaults display_print_status display_program_module display_system_usage display_tape_params display_terminal_parameters dump_file dump_record dump_tape edit edit_form emacs enforce_region_locks fortran get_external_variable give_access give_default_access handle_sig_dfl harvest_pc_samples help kill line_edit link link_dirs list list_batch_requests list_devices list_gateways list_library_paths list_modules list_port_attachments list_print_requests list_process_cmd_limits list_save_tape list_systems list_tape list_terminal_types list_users locate_files locate_large_files login logout mount_tape move_device_reservation move_dir move_file mp_debug nls_edit_form pascal pl1 position_tape preprocess_file print profile propagate_access read_tape ready remove_access remove_default_access rename reserve_device restore_object save_object send_message set set_cpu_time_limit set_expiration_date set_external_variable set_file_allocation set_implicit_locking set_index_flags set_language set_library_paths set_line_wrap_width set_log_protected_file set_owner_access set_pipe_file set_priority set_ready set_safety_switch set_second_tape set_tape_drive_params set_tape_file_params set_tape_mount_params set_terminal_parameters set_text_file set_time_zone sleep sort start_logging start_process stop_logging stop_process tail_file text_data_merge translate_links truncate_file unlink update_batch_requests update_print_requests update_process_cmd_limits use_abbreviations use_message_file vcc verify_posix_access verify_save verify_system_access walk_dir where_command where_path who_locked write_tape
syn match voscmIdentifier "&[A-Za-z][a-z0-9_A-Z]*&"
syn match voscmString "'[^']*'"
" Number formats
syn match voscmNumber "\<\d\+\>"
"Floating point number part only
syn match voscmDecimalNumber "\.\d\+\([eE][-+]\=\d\)\=\>"
"syn region voscmComment start="^[ ]*&[ ]+" end="$"
"syn match voscmComment "^[ ]*&[ ].*$"
"syn match voscmComment "^&$"
syn region voscmComment start="^[ ]*&[ ]" end="$" contains=voscmTodo
syn match voscmComment "^&$"
syn match voscmContinuation "&+$"
"syn match voscmIdentifier "[A-Za-z0-9&._-]\+"
"Synchronization with Statement terminator $
" syn sync maxlines=100
hi def link voscmConditional Conditional
hi def link voscmStatement Statement
hi def link voscmSetvar Statement
hi def link voscmNumber Number
hi def link voscmDecimalNumber Float
hi def link voscmString String
hi def link voscmIdentifier Identifier
hi def link voscmVariable Identifier
hi def link voscmComment Comment
hi def link voscmJump Statement
hi def link voscmContinuation Macro
hi def link voscmLabelId String
hi def link voscmParamList NONE
hi def link voscmParamId Identifier
hi def link voscmParamName String
hi def link voscmParam Statement
hi def link voscmParamKeyword Statement
hi def link voscmFunction Function
hi def link voscmCommand Structure
"hi def link voscmIdentifier NONE
"hi def link voscmSpecial Special " not used
hi def link voscmTodo Todo
hi def link voscmTab Error
hi def link voscmError Error
let b:current_syntax = "voscm"
" vim: ts=8

View File

@ -1,7 +1,7 @@
" Vim syntax file
" Language: X Pixmap v2
" Maintainer: Steve Wall (hitched97@velnet.com)
" Last Change: 2001 Apr 25
" Last Change: 2008 May 28
" Version: 5.8
"
" Made from xpm.vim by Ronald Schild <rs@scutum.de>
@ -50,9 +50,15 @@ if has("gui_running")
let colors = substitute(s, '\s*\d\+\s\+\d\+\s\+\(\d\+\).*', '\1', '')
" get the 4th value: cpp = number of character per pixel
let cpp = substitute(s, '\s*\d\+\s\+\d\+\s\+\d\+\s\+\(\d\+\).*', '\1', '')
if cpp =~ '[^0-9]'
break " if cpp is not made of digits there must be something wrong
endif
" highlight the Values string as normal string (no pixel string)
exe 'syn match xpm2Values /'.s.'/'
" Highlight the Values string as normal string (no pixel string).
" Only when there is no slash, it would terminate the pattern.
if s !~ '/'
exe 'syn match xpm2Values /' . s . '/'
endif
HiLink xpm2Values Statement
let n = 1 " n = color index
@ -118,7 +124,7 @@ if has("gui_running")
" if no color or color = "None" show background
if color == "" || substitute(color, '.*', '\L&', '') == 'none'
exe 'Hi xpm2Color'.n.' guifg=bg guibg=NONE'
else
elseif color !~ "'"
exe 'Hi xpm2Color'.n." guifg='".color."' guibg='".color."'"
endif
let n = n + 1

View File

@ -1,22 +1,138 @@
Tutor is a "hands on" tutorial for new users of the Vim editor.
README.txt for version 7.2a of Vim: Vi IMproved.
Most new users can get through it in less than one hour. The result
is that you can do a simple editing task using the Vim editor.
Tutor is a file that contains the tutorial lessons. You can simply
execute "vim tutor" and then follow the instructions in the lessons.
The lessons tell you to modify the file, so DON'T DO THIS ON YOUR
ORIGINAL COPY.
WHAT IS VIM
On Unix you can also use the "vimtutor" program. It will make a
scratch copy of the tutor first.
Vim is an almost compatible version of the UNIX editor Vi. Many new features
have been added: multi-level undo, syntax highlighting, command line history,
on-line help, spell checking, filename completion, block operations, etc.
There is also a Graphical User Interface (GUI) available. See
"runtime/doc/vi_diff.txt" for differences with Vi.
I have considered adding more advanced lessons but have not found the
time. Please let me know how you like it and send any improvements you
make.
This editor is very useful for editing programs and other plain ASCII files.
All commands are given with normal keyboard characters, so those who can type
with ten fingers can work very fast. Additionally, function keys can be
defined by the user, and the mouse can be used.
Bob Ware, Colorado School of Mines, Golden, Co 80401, USA
(303) 273-3987
bware@mines.colorado.edu bware@slate.mines.colorado.edu bware@mines.bitnet
Vim currently runs under Amiga DOS, MS-DOS, MS-Windows 95/98/Me/NT/2000/XP,
Atari MiNT, Macintosh, BeOS, VMS, RISC OS, OS/2 and almost all flavours of
UNIX. Porting to other systems should not be very difficult.
[This file was modified for Vim by Bram Moolenaar]
DISTRIBUTION
There are separate distributions for Unix, PC, Amiga and some other systems.
This README.txt file comes with the runtime archive. It includes the
documentation, syntax files and other files that are used at runtime. To run
Vim you must get either one of the binary archives or a source archive.
Which one you need depends on the system you want to run it on and whether you
want or must compile it yourself. Check "http://www.vim.org/download.php" for
an overview of currently available distributions.
DOCUMENTATION
The best is to use ":help" in Vim. If you don't have an executable yet, read
"runtime/doc/help.txt". It contains pointers to the other documentation
files. The User Manual reads like a book and is recommended to learn to use
Vim. See ":help user-manual".
The vim tutor is a one hour training course for beginners. Mostly it can be
started as "vimtutor". See ":help tutor" for more information.
COPYING
Vim is Charityware. You can use and copy it as much as you like, but you are
encouraged to make a donation to orphans in Uganda. Please read the file
"runtime/doc/uganda.txt" for details (do ":help uganda" inside Vim).
Summary of the license: There are no restrictions on using or distributing an
unmodified copy of Vim. Parts of Vim may also be distributed, but the license
text must always be included. For modified versions a few restrictions apply.
The license is GPL compatible, you may compile Vim with GPL libraries and
distribute it.
SPONSORING
Fixing bugs and adding new features takes a lot of time and effort. To show
your appreciation for the work and motivate Bram and others to continue
working on Vim please send a donation.
Since Bram is back to a paid job the money will now be used to help children
in Uganda. See runtime/doc/uganda.txt. But at the same time donations
increase Bram's motivation to keep working on Vim!
For the most recent information about sponsoring look on the Vim web site:
http://www.vim.org/sponsor/
COMPILING
If you obtained a binary distribution you don't need to compile Vim. If you
obtained a source distribution, all the stuff for compiling Vim is in the
"src" directory. See src/INSTALL for instructions.
INSTALLATION
See one of these files for system-specific instructions:
README_ami.txt Amiga
README_unix.txt Unix
README_dos.txt MS-DOS and MS-Windows
README_os2.txt OS/2
README_mac.txt Macintosh
README_vms.txt VMS
INFORMATION
The latest news about Vim can be found on the Vim home page:
http://www.vim.org/
If you have problems, have a look at the Vim FAQ:
http://vimdoc.sf.net/vimfaq.html
Send bug reports to:
Bram Moolenaar <Bram@vim.org>
There are five mailing lists for Vim:
<vim@vim.org>
For discussions about using existing versions of Vim: Useful mappings,
questions, answers, where to get a specific version, etc.
<vim-dev@vim.org>
For discussions about changing Vim: New features, porting, beta-test
versions, etc.
<vim-announce@vim.org>
Announcements about new versions of Vim; also beta-test versions and
ports to different systems.
<vim-multibyte@vim.org>
For discussions about using and improving the multi-byte aspects of
Vim: XIM, Hangul, fontset, etc.
<vim-mac@vim.org>
For discussions about using and improving Vim on the Macintosh.
For more info and URLs of the archives see "http://www.vim.org/maillist.php".
NOTE:
- You can only send messages to these lists if you have subscribed!
- You need to send the messages from the same location as where you subscribed
from (to avoid spam mail).
- Maximum message size is 40000 characters.
If you want to join a maillist, send a message to
<vim-help@vim.org>
Make sure that your "From:" address is correct. Then the list server will
send you a help message.
MAIN AUTHOR
Send any other comments, patches, pizza and suggestions to:
Bram Moolenaar E-mail: Bram@vim.org
Finsterruetihof 1
8134 Adliswil
Switzerland

BIN
runtime/tutor/README_ami.txt.info Executable file

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,154 @@
README_dos.txt for version 7.2a of Vim: Vi IMproved.
This file explains the installation of Vim on MS-DOS and MS-Windows systems.
See "README.txt" for general information about Vim.
There are two ways to install Vim:
A. Use the self-installing .exe file.
B. Unpack .zip files and run the install.exe program.
A. Using the self-installing .exe
---------------------------------
This is mostly self-explaining. Just follow the prompts and make the
selections. A few things to watch out for:
- When an existing installation is detected, you are offered to first remove
this. The uninstall program is then started while the install program waits
for it to complete. Sometimes the windows overlap each other, which can be
confusing. Be sure the complete the uninstalling before continuing the
installation. Watch the taskbar for uninstall windows.
- When selecting a directory to install Vim, use the same place where other
versions are located. This makes it easier to find your _vimrc file. For
example "C:\Program Files\vim" or "D:\vim". A name ending in "vim" is
preferred.
- After selecting the directory where to install Vim, clicking on "Next" will
start the installation.
B. Using .zip files
-------------------
These are the normal steps to install Vim from the .zip archives:
1. Go to the directory where you want to put the Vim files. Examples:
cd C:\
cd D:\editors
If you already have a "vim" directory, go to the directory in which it is
located. Check the $VIM setting to see where it points to:
set VIM
For example, if you have
C:\vim\vim54
do
cd C:\
Binary and runtime Vim archives are normally unpacked in the same location,
on top of each other.
2. Unpack the zip archives. This will create a new directory "vim\vim70",
in which all the distributed Vim files are placed. Since the directory
name includes the version number, it is unlikely that you overwrite
existing files.
Examples:
pkunzip -d gvim70.zip
unzip vim70w32.zip
You need to unpack the runtime archive and at least one of the binary
archives. When using more than one binary version, be careful not to
overwrite one version with the other, the names of the executables
"vim.exe" and "gvim.exe" are the same.
After you unpacked the files, you can still move the whole directory tree
to another location. That is where they will stay, the install program
won't move or copy the runtime files.
Only for the 32 bit DOS version on MS-DOS without DPMI support (trying to
run install.exe will produce an error message): Unpack the CSDPMI4B.ZIP
archive and follow the instructions in the documentation.
3. Change to the new directory:
cd vim\vim70
Run the "install.exe" program. It will ask you a number of questions about
how you would like to have your Vim setup. Among these are:
- You can tell it to write a "_vimrc" file with your preferences in the
parent directory.
- It can also install an "Edit with Vim" entry in the Windows Explorer
popup menu.
- You can have it create batch files, so that you can run Vim from the
console or in a shell. You can select one of the directories in your
$PATH. If you skip this, you can add Vim to the search path manually:
The simplest is to add a line to your autoexec.bat. Examples:
set path=%path%;C:\vim\vim70
set path=%path%;D:\editors\vim\vim70
- Create entries for Vim on the desktop and in the Start menu.
That's it!
Remarks:
- If Vim can't find the runtime files, ":help" won't work and the GUI version
won't show a menubar. Then you need to set the $VIM environment variable to
point to the top directory of your Vim files. Example:
set VIM=C:\editors\vim
Vim version 6.0 will look for your vimrc file in $VIM, and for the runtime
files in $VIM/vim70. See ":help $VIM" for more information.
- To avoid confusion between distributed files of different versions and your
own modified vim scripts, it is recommended to use this directory layout:
("C:\vim" is used here as the root, replace it with the path you use)
Your own files:
C:\vim\_vimrc Your personal vimrc.
C:\vim\_viminfo Dynamic info for 'viminfo'.
C:\vim\vimfiles\ftplugin\*.vim Filetype plugins
C:\vim\... Other files you made.
Distributed files:
C:\vim\vim70\vim.exe The Vim version 6.0 executable.
C:\vim\vim70\doc\*.txt The version 6.0 documentation files.
C:\vim\vim70\bugreport.vim A Vim version 6.0 script.
C:\vim\vim70\... Other version 6.0 distributed files.
In this case the $VIM environment variable would be set like this:
set VIM=C:\vim
Then $VIMRUNTIME will automatically be set to "$VIM\vim70". Don't add
"vim70" to $VIM, that won't work.
- You can put your Vim executable anywhere else. If the executable is not
with the other Vim files, you should set $VIM. The simplest is to add a line
to your autoexec.bat. Examples:
set VIM=c:\vim
set VIM=d:\editors\vim
- If you have told the "install.exe" program to add the "Edit with Vim" menu
entry, you can remove it by running the "uninstal.exe". See
":help win32-popup-menu".
- In Windows 95/98/NT you can create a shortcut to Vim. This works for all
DOS and Win32 console versions. For the console version this gives you the
opportunity to set defaults for the Console where Vim runs in.
1. On the desktop, click right to get a menu. Select New/Shortcut.
2. In the dialog, enter Command line: "C:\command.com". Click "Next".
3. Enter any name. Click "Finish".
The new shortcut will appear on the desktop.
4. With the mouse pointer on the new shortcut, click right to get a menu.
Select Properties.
5. In the Program tab, change the "Cmdline" to add "/c" and the name of the
Vim executable. Examples:
C:\command.com /c C:\vim\vim70\vim.exe
C:\command.com /c D:\editors\vim\vim70\vim.exe
6. Select the font, window size, etc. that you like. If this isn't
possible, select "Advanced" in the Program tab, and deselect "MS-DOS
mode".
7. Click OK.
For gvim, you can use a normal shortcut on the desktop, and set the size of
the Window in your $VIM/_gvimrc:
set lines=30 columns=90
For further information, type one of these inside Vim:
:help dos
:help msdos
:help win32

View File

@ -0,0 +1,8 @@
README_mac.txt for version 7.2a of Vim: Vi IMproved.
This file explains the installation of Vim on Macintosh systems.
See "README.txt" for general information about Vim.
Sorry, this text still needs to be written!

BIN
runtime/tutor/runtime.info Executable file

Binary file not shown.

View File

@ -0,0 +1,66 @@
" Vim script for Evim key bindings
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2006 Mar 29
" Don't use Vi-compatible mode.
set nocompatible
" Use the mswin.vim script for most mappings
source <sfile>:p:h/mswin.vim
" Vim is in Insert mode by default
set insertmode
" Make a buffer hidden when editing another one
set hidden
" Make cursor keys ignore wrapping
inoremap <Down> <C-R>=pumvisible() ? "\<lt>Down>" : "\<lt>C-O>gj"<CR>
inoremap <Up> <C-R>=pumvisible() ? "\<lt>Up>" : "\<lt>C-O>gk"<CR>
" CTRL-F does Find dialog instead of page forward
noremap <C-F> :promptfind<CR>
vnoremap <C-F> y:promptfind <C-R>"<CR>
onoremap <C-F> <C-C>:promptfind<CR>
inoremap <C-F> <C-O>:promptfind<CR>
cnoremap <C-F> <C-C>:promptfind<CR>
set backspace=2 " allow backspacing over everything in insert mode
set autoindent " always set autoindenting on
if has("vms")
set nobackup " do not keep a backup file, use versions instead
else
set backup " keep a backup file
endif
set history=50 " keep 50 lines of command line history
set ruler " show the cursor position all the time
set incsearch " do incremental searching
set mouse=a " always use the mouse
" Don't use Ex mode, use Q for formatting
map Q gq
" Switch syntax highlighting on, when the terminal has colors
" Highlight the last used search pattern on the next search command.
if &t_Co > 2 || has("gui_running")
syntax on
set hlsearch
nohlsearch
endif
" Only do this part when compiled with support for autocommands.
if has("autocmd")
" Enable file type detection.
" Use the default filetype settings, so that mail gets 'tw' set to 72,
" 'cindent' is on in C files, etc.
" Also load indent files, to automatically do language-dependent indenting.
filetype plugin indent on
" For all text files set 'textwidth' to 78 characters.
au FileType text setlocal tw=78
endif " has("autocmd")
" vim: set sw=2 :

View File

@ -0,0 +1,59 @@
" An example for a gvimrc file.
" The commands in this are executed when the GUI is started.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2001 Sep 02
"
" To use it, copy it to
" for Unix and OS/2: ~/.gvimrc
" for Amiga: s:.gvimrc
" for MS-DOS and Win32: $VIM\_gvimrc
" for OpenVMS: sys$login:.gvimrc
" Make external commands work through a pipe instead of a pseudo-tty
"set noguipty
" set the X11 font to use
" set guifont=-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1
set ch=2 " Make command line two lines high
set mousehide " Hide the mouse when typing text
" Make shift-insert work like in Xterm
map <S-Insert> <MiddleMouse>
map! <S-Insert> <MiddleMouse>
" Only do this for Vim version 5.0 and later.
if version >= 500
" I like highlighting strings inside C comments
let c_comment_strings=1
" Switch on syntax highlighting if it wasn't on yet.
if !exists("syntax_on")
syntax on
endif
" Switch on search pattern highlighting.
set hlsearch
" For Win32 version, have "K" lookup the keyword in a help file
"if has("win32")
" let winhelpfile='windows.hlp'
" map K :execute "!start winhlp32 -k <cword> " . winhelpfile <CR>
"endif
" Set nice colors
" background for normal text is light grey
" Text below the last line is darker grey
" Cursor is green, Cyan when ":lmap" mappings are active
" Constants are not underlined but have a slightly lighter background
highlight Normal guibg=grey90
highlight Cursor guibg=Green guifg=NONE
highlight lCursor guibg=Cyan guifg=NONE
highlight NonText guibg=grey80
highlight Constant gui=NONE guibg=grey95
highlight Special gui=NONE guibg=grey95
endif

Binary file not shown.

View File

@ -0,0 +1,351 @@
" Vim support file to detect file types in scripts
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2008 Apr 28
" 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
" the file contents. The autocommand is in $VIMRUNTIME/filetype.vim.
" Only do the rest when the FileType autocommand has not been triggered yet.
if did_filetype()
finish
endif
" Load the user defined scripts file first
" Only do this when the FileType autocommand has not been triggered yet
if exists("myscriptsfile") && filereadable(expand(myscriptsfile))
execute "source " . myscriptsfile
if did_filetype()
finish
endif
endif
" Line continuation is used here, remove 'C' from 'cpoptions'
let s:cpo_save = &cpo
set cpo&vim
let s:line1 = getline(1)
if s:line1 =~ "^#!"
" A script that starts with "#!".
" Check for a line like "#!/usr/bin/env VAR=val bash". Turn it into
" "#!/usr/bin/bash" to make matching easier.
if s:line1 =~ '^#!\s*\S*\<env\s'
let s:line1 = substitute(s:line1, '\S\+=\S\+', '', 'g')
let s:line1 = substitute(s:line1, '\<env\s\+', '', '')
endif
" Get the program name.
" Only accept spaces in PC style paths: "#!c:/program files/perl [args]".
" If the word env is used, use the first word after the space:
" "#!/usr/bin/env perl [path/args]"
" If there is no path use the first word: "#!perl [path/args]".
" Otherwise get the last word after a slash: "#!/usr/bin/perl [path/args]".
if s:line1 =~ '^#!\s*\a:[/\\]'
let s:name = substitute(s:line1, '^#!.*[/\\]\(\i\+\).*', '\1', '')
elseif s:line1 =~ '^#!.*\<env\>'
let s:name = substitute(s:line1, '^#!.*\<env\>\s\+\(\i\+\).*', '\1', '')
elseif s:line1 =~ '^#!\s*[^/\\ ]*\>\([^/\\]\|$\)'
let s:name = substitute(s:line1, '^#!\s*\([^/\\ ]*\>\).*', '\1', '')
else
let s:name = substitute(s:line1, '^#!\s*\S*[/\\]\(\i\+\).*', '\1', '')
endif
" tcl scripts may have #!/bin/sh in the first line and "exec wish" in the
" third line. Suggested by Steven Atkinson.
if getline(3) =~ '^exec wish'
let s:name = 'wish'
endif
" Bourne-like shell scripts: bash bash2 ksh ksh93 sh
if s:name =~ '^\(bash\d*\|\|ksh\d*\|sh\)\>'
call SetFileTypeSH(s:line1) " defined in filetype.vim
" csh scripts
elseif s:name =~ '^csh\>'
if exists("g:filetype_csh")
call SetFileTypeShell(g:filetype_csh)
else
call SetFileTypeShell("csh")
endif
" tcsh scripts
elseif s:name =~ '^tcsh\>'
call SetFileTypeShell("tcsh")
" Z shell scripts
elseif s:name =~ '^zsh\>'
set ft=zsh
" TCL scripts
elseif s:name =~ '^\(tclsh\|wish\|expectk\|itclsh\|itkwish\)\>'
set ft=tcl
" Expect scripts
elseif s:name =~ '^expect\>'
set ft=expect
" Gnuplot scripts
elseif s:name =~ '^gnuplot\>'
set ft=gnuplot
" Makefiles
elseif s:name =~ 'make\>'
set ft=make
" Lua
elseif s:name =~ 'lua'
set ft=lua
" Perl
elseif s:name =~ 'perl'
set ft=perl
" PHP
elseif s:name =~ 'php'
set ft=php
" Python
elseif s:name =~ 'python'
set ft=python
" Groovy
elseif s:name =~ '^groovy\>'
set ft=groovy
" Ruby
elseif s:name =~ 'ruby'
set ft=ruby
" BC calculator
elseif s:name =~ '^bc\>'
set ft=bc
" sed
elseif s:name =~ 'sed\>'
set ft=sed
" OCaml-scripts
elseif s:name =~ 'ocaml'
set ft=ocaml
" Awk scripts
elseif s:name =~ 'awk\>'
set ft=awk
" Website MetaLanguage
elseif s:name =~ 'wml'
set ft=wml
" Scheme scripts
elseif s:name =~ 'scheme'
set ft=scheme
" CFEngine scripts
elseif s:name =~ 'cfengine'
set ft=cfengine
endif
unlet s:name
else
" File does not start with "#!".
let s:line2 = getline(2)
let s:line3 = getline(3)
let s:line4 = getline(4)
let s:line5 = getline(5)
" Bourne-like shell scripts: sh ksh bash bash2
if s:line1 =~ '^:$'
call SetFileTypeSH(s:line1) " defined in filetype.vim
" Z shell scripts
elseif s:line1 =~ '^#compdef\>' || s:line1 =~ '^#autoload\>'
set ft=zsh
" ELM Mail files
elseif s:line1 =~ '^From [a-zA-Z][a-zA-Z_0-9\.=-]*\(@[^ ]*\)\= .*[12][09]\d\d$'
set ft=mail
" Mason
elseif s:line1 =~ '^<[%&].*>'
set ft=mason
" Vim scripts (must have '" vim' as the first line to trigger this)
elseif s:line1 =~ '^" *[vV]im$'
set ft=vim
" MOO
elseif s:line1 =~ '^\*\* LambdaMOO Database, Format Version \%([1-3]\>\)\@!\d\+ \*\*$'
set ft=moo
" Diff file:
" - "diff" in first line (context diff)
" - "Only in " in first line
" - "--- " in first line and "+++ " in second line (unified diff).
" - "*** " in first line and "--- " in second line (context diff).
" - "# It was generated by makepatch " in the second line (makepatch diff).
" - "Index: <filename>" in the first line (CVS file)
" - "=== ", line of "=", "---", "+++ " (SVK diff)
" - "=== ", "--- ", "+++ " (bzr diff, common case)
" - "=== (removed|added|renamed|modified)" (bzr diff, alternative)
elseif s:line1 =~ '^\(diff\>\|Only in \|\d\+\(,\d\+\)\=[cda]\d\+\>\|# It was generated by makepatch \|Index:\s\+\f\+\r\=$\|===== \f\+ \d\+\.\d\+ vs edited\|==== //\f\+#\d\+\)'
\ || (s:line1 =~ '^--- ' && s:line2 =~ '^+++ ')
\ || (s:line1 =~ '^\* looking for ' && s:line2 =~ '^\* comparing to ')
\ || (s:line1 =~ '^\*\*\* ' && s:line2 =~ '^--- ')
\ || (s:line1 =~ '^=== ' && ((s:line2 =~ '^=\{66\}' && s:line3 =~ '^--- ' && s:line4 =~ '^+++') || (s:line2 =~ '^--- ' && s:line3 =~ '^+++ ')))
\ || (s:line1 =~ '^=== \(removed\|added\|renamed\|modified\)')
set ft=diff
" PostScript Files (must have %!PS as the first line, like a2ps output)
elseif s:line1 =~ '^%![ \t]*PS'
set ft=postscr
" M4 scripts: Guess there is a line that starts with "dnl".
elseif s:line1 =~ '^\s*dnl\>'
\ || s:line2 =~ '^\s*dnl\>'
\ || s:line3 =~ '^\s*dnl\>'
\ || s:line4 =~ '^\s*dnl\>'
\ || s:line5 =~ '^\s*dnl\>'
set ft=m4
" AmigaDos scripts
elseif $TERM == "amiga"
\ && (s:line1 =~ "^;" || s:line1 =~ '^\.[bB][rR][aA]')
set ft=amiga
" SiCAD scripts (must have procn or procd as the first line to trigger this)
elseif s:line1 =~? '^ *proc[nd] *$'
set ft=sicad
" Purify log files start with "**** Purify"
elseif s:line1 =~ '^\*\*\*\* Purify'
set ft=purifylog
" XML
elseif s:line1 =~ '<?\s*xml.*?>'
set ft=xml
" XHTML (e.g.: PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN")
elseif s:line1 =~ '\<DTD\s\+XHTML\s'
set ft=xhtml
" PDF
elseif s:line1 =~ '^%PDF-'
set ft=pdf
" XXD output
elseif s:line1 =~ '^\x\{7}: \x\{2} \=\x\{2} \=\x\{2} \=\x\{2} '
set ft=xxd
" RCS/CVS log output
elseif s:line1 =~ '^RCS file:' || s:line2 =~ '^RCS file:'
set ft=rcslog
" CVS commit
elseif s:line2 =~ '^CVS:' || getline("$") =~ '^CVS: '
set ft=cvs
" Prescribe
elseif s:line1 =~ '^!R!'
set ft=prescribe
" Send-pr
elseif s:line1 =~ '^SEND-PR:'
set ft=sendpr
" SNNS files
elseif s:line1 =~ '^SNNS network definition file'
set ft=snnsnet
elseif s:line1 =~ '^SNNS pattern definition file'
set ft=snnspat
elseif s:line1 =~ '^SNNS result file'
set ft=snnsres
" Virata
elseif s:line1 =~ '^%.\{-}[Vv]irata'
\ || s:line2 =~ '^%.\{-}[Vv]irata'
\ || s:line3 =~ '^%.\{-}[Vv]irata'
\ || s:line4 =~ '^%.\{-}[Vv]irata'
\ || s:line5 =~ '^%.\{-}[Vv]irata'
set ft=virata
" Strace
elseif s:line1 =~ '^[0-9]* *execve('
set ft=strace
" VSE JCL
elseif s:line1 =~ '^\* $$ JOB\>' || s:line1 =~ '^// *JOB\>'
set ft=vsejcl
" TAK and SINDA
elseif s:line4 =~ 'K & K Associates' || s:line2 =~ 'TAK 2000'
set ft=takout
elseif s:line3 =~ 'S Y S T E M S I M P R O V E D '
set ft=sindaout
elseif getline(6) =~ 'Run Date: '
set ft=takcmp
elseif getline(9) =~ 'Node File 1'
set ft=sindacmp
" DNS zone files
elseif s:line1.s:line2.s:line3.s:line4 =~ '^; <<>> DiG [0-9.]\+ <<>>\|BIND.*named\|$ORIGIN\|$TTL\|IN\s\+SOA'
set ft=bindzone
" BAAN
elseif s:line1 =~ '|\*\{1,80}' && s:line2 =~ 'VRC '
\ || s:line2 =~ '|\*\{1,80}' && s:line3 =~ 'VRC '
set ft=baan
" Valgrind
elseif s:line1 =~ '^==\d\+== valgrind' || s:line3 =~ '^==\d\+== Using valgrind'
set ft=valgrind
" Renderman Interface Bytestream
elseif s:line1 =~ '^##RenderMan'
set ft=rib
" Scheme scripts
elseif s:line1 =~ 'exec\s\+\S*scheme' || s:line2 =~ 'exec\s\+\S*scheme'
set ft=scheme
" Git output
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
endwhile
if getline(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\)$'
setf fdcc
break
endif
let lnum = lnum + 1
endwhile
endif
endif
unlet s:line2 s:line3 s:line4 s:line5
endif
" Restore 'cpoptions'
let &cpo = s:cpo_save
unlet s:cpo_save s:line1

View File

@ -0,0 +1,569 @@
" Vim support file to define the syntax selection menu
" This file is normally sourced from menu.vim.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2006 Apr 27
" Define the SetSyn function, used for the Syntax menu entries.
" Set 'filetype' and also 'syntax' if it is manually selected.
fun! SetSyn(name)
if a:name == "fvwm1"
let use_fvwm_1 = 1
let use_fvwm_2 = 0
let name = "fvwm"
elseif a:name == "fvwm2"
let use_fvwm_2 = 1
let use_fvwm_1 = 0
let name = "fvwm"
else
let name = a:name
endif
if !exists("s:syntax_menu_synonly")
exe "set ft=" . name
if exists("g:syntax_manual")
exe "set syn=" . name
endif
else
exe "set syn=" . name
endif
endfun
" <> notation is used here, remove '<' from 'cpoptions'
let s:cpo_save = &cpo
set cpo&vim
" The following menu items are generated by makemenu.vim.
" The Start Of The Syntax Menu
an 50.10.100 &Syntax.AB.A2ps\ config :cal SetSyn("a2ps")<CR>
an 50.10.110 &Syntax.AB.Aap :cal SetSyn("aap")<CR>
an 50.10.120 &Syntax.AB.ABAP/4 :cal SetSyn("abap")<CR>
an 50.10.130 &Syntax.AB.Abaqus :cal SetSyn("abaqus")<CR>
an 50.10.140 &Syntax.AB.ABC\ music\ notation :cal SetSyn("abc")<CR>
an 50.10.150 &Syntax.AB.ABEL :cal SetSyn("abel")<CR>
an 50.10.160 &Syntax.AB.AceDB\ model :cal SetSyn("acedb")<CR>
an 50.10.170 &Syntax.AB.Ada :cal SetSyn("ada")<CR>
an 50.10.180 &Syntax.AB.AfLex :cal SetSyn("aflex")<CR>
an 50.10.190 &Syntax.AB.ALSA\ config :cal SetSyn("alsaconf")<CR>
an 50.10.200 &Syntax.AB.Altera\ AHDL :cal SetSyn("ahdl")<CR>
an 50.10.210 &Syntax.AB.Amiga\ DOS :cal SetSyn("amiga")<CR>
an 50.10.220 &Syntax.AB.AMPL :cal SetSyn("ampl")<CR>
an 50.10.230 &Syntax.AB.Ant\ build\ file :cal SetSyn("ant")<CR>
an 50.10.240 &Syntax.AB.ANTLR :cal SetSyn("antlr")<CR>
an 50.10.250 &Syntax.AB.Apache\ config :cal SetSyn("apache")<CR>
an 50.10.260 &Syntax.AB.Apache-style\ config :cal SetSyn("apachestyle")<CR>
an 50.10.270 &Syntax.AB.Applix\ ELF :cal SetSyn("elf")<CR>
an 50.10.280 &Syntax.AB.Arc\ Macro\ Language :cal SetSyn("aml")<CR>
an 50.10.290 &Syntax.AB.Arch\ inventory :cal SetSyn("arch")<CR>
an 50.10.300 &Syntax.AB.ART :cal SetSyn("art")<CR>
an 50.10.310 &Syntax.AB.ASP\ with\ VBScript :cal SetSyn("aspvbs")<CR>
an 50.10.320 &Syntax.AB.ASP\ with\ Perl :cal SetSyn("aspperl")<CR>
an 50.10.330 &Syntax.AB.Assembly.680x0 :cal SetSyn("asm68k")<CR>
an 50.10.340 &Syntax.AB.Assembly.Flat :cal SetSyn("fasm")<CR>
an 50.10.350 &Syntax.AB.Assembly.GNU :cal SetSyn("asm")<CR>
an 50.10.360 &Syntax.AB.Assembly.GNU\ H-8300 :cal SetSyn("asmh8300")<CR>
an 50.10.370 &Syntax.AB.Assembly.Intel\ IA-64 :cal SetSyn("ia64")<CR>
an 50.10.380 &Syntax.AB.Assembly.Microsoft :cal SetSyn("masm")<CR>
an 50.10.390 &Syntax.AB.Assembly.Netwide :cal SetSyn("nasm")<CR>
an 50.10.400 &Syntax.AB.Assembly.PIC :cal SetSyn("pic")<CR>
an 50.10.410 &Syntax.AB.Assembly.Turbo :cal SetSyn("tasm")<CR>
an 50.10.420 &Syntax.AB.Assembly.VAX\ Macro\ Assembly :cal SetSyn("vmasm")<CR>
an 50.10.430 &Syntax.AB.Assembly.Z-80 :cal SetSyn("z8a")<CR>
an 50.10.440 &Syntax.AB.Assembly.xa\ 6502\ cross\ assember :cal SetSyn("a65")<CR>
an 50.10.450 &Syntax.AB.ASN\.1 :cal SetSyn("asn")<CR>
an 50.10.460 &Syntax.AB.Asterisk\ config :cal SetSyn("asterisk")<CR>
an 50.10.470 &Syntax.AB.Asterisk\ voicemail\ config :cal SetSyn("asteriskvm")<CR>
an 50.10.480 &Syntax.AB.Atlas :cal SetSyn("atlas")<CR>
an 50.10.490 &Syntax.AB.AutoHotKey :cal SetSyn("autohotkey")<CR>
an 50.10.500 &Syntax.AB.AutoIt :cal SetSyn("autoit")<CR>
an 50.10.510 &Syntax.AB.Automake :cal SetSyn("automake")<CR>
an 50.10.520 &Syntax.AB.Avenue :cal SetSyn("ave")<CR>
an 50.10.530 &Syntax.AB.Awk :cal SetSyn("awk")<CR>
an 50.10.540 &Syntax.AB.AYacc :cal SetSyn("ayacc")<CR>
an 50.10.560 &Syntax.AB.B :cal SetSyn("b")<CR>
an 50.10.570 &Syntax.AB.Baan :cal SetSyn("baan")<CR>
an 50.10.580 &Syntax.AB.Basic.FreeBasic :cal SetSyn("freebasic")<CR>
an 50.10.590 &Syntax.AB.Basic.IBasic :cal SetSyn("ibasic")<CR>
an 50.10.600 &Syntax.AB.Basic.QBasic :cal SetSyn("basic")<CR>
an 50.10.610 &Syntax.AB.Basic.Visual\ Basic :cal SetSyn("vb")<CR>
an 50.10.620 &Syntax.AB.Bazaar\ commit\ file :cal SetSyn("bzr")<CR>
an 50.10.630 &Syntax.AB.BC\ calculator :cal SetSyn("bc")<CR>
an 50.10.640 &Syntax.AB.BDF\ font :cal SetSyn("bdf")<CR>
an 50.10.650 &Syntax.AB.BibTeX.Bibliography\ database :cal SetSyn("bib")<CR>
an 50.10.660 &Syntax.AB.BibTeX.Bibliography\ Style :cal SetSyn("bst")<CR>
an 50.10.670 &Syntax.AB.BIND.BIND\ config :cal SetSyn("named")<CR>
an 50.10.680 &Syntax.AB.BIND.BIND\ zone :cal SetSyn("bindzone")<CR>
an 50.10.690 &Syntax.AB.Blank :cal SetSyn("blank")<CR>
an 50.20.100 &Syntax.C.C :cal SetSyn("c")<CR>
an 50.20.110 &Syntax.C.C++ :cal SetSyn("cpp")<CR>
an 50.20.120 &Syntax.C.C# :cal SetSyn("cs")<CR>
an 50.20.130 &Syntax.C.Calendar :cal SetSyn("calendar")<CR>
an 50.20.140 &Syntax.C.Cascading\ Style\ Sheets :cal SetSyn("css")<CR>
an 50.20.150 &Syntax.C.CDL :cal SetSyn("cdl")<CR>
an 50.20.160 &Syntax.C.Cdrdao\ TOC :cal SetSyn("cdrtoc")<CR>
an 50.20.170 &Syntax.C.Cdrdao\ config :cal SetSyn("cdrdaoconf")<CR>
an 50.20.180 &Syntax.C.Century\ Term :cal SetSyn("cterm")<CR>
an 50.20.190 &Syntax.C.CH\ script :cal SetSyn("ch")<CR>
an 50.20.200 &Syntax.C.ChangeLog :cal SetSyn("changelog")<CR>
an 50.20.210 &Syntax.C.Cheetah\ template :cal SetSyn("cheetah")<CR>
an 50.20.220 &Syntax.C.CHILL :cal SetSyn("chill")<CR>
an 50.20.230 &Syntax.C.ChordPro :cal SetSyn("chordpro")<CR>
an 50.20.240 &Syntax.C.Clean :cal SetSyn("clean")<CR>
an 50.20.250 &Syntax.C.Clever :cal SetSyn("cl")<CR>
an 50.20.260 &Syntax.C.Clipper :cal SetSyn("clipper")<CR>
an 50.20.270 &Syntax.C.Cmake :cal SetSyn("cmake")<CR>
an 50.20.280 &Syntax.C.Cmusrc :cal SetSyn("cmusrc")<CR>
an 50.20.290 &Syntax.C.Cobol :cal SetSyn("cobol")<CR>
an 50.20.300 &Syntax.C.Coco/R :cal SetSyn("coco")<CR>
an 50.20.310 &Syntax.C.Cold\ Fusion :cal SetSyn("cf")<CR>
an 50.20.320 &Syntax.C.Conary\ Recipe :cal SetSyn("conaryrecipe")<CR>
an 50.20.330 &Syntax.C.Config.Cfg\ Config\ file :cal SetSyn("cfg")<CR>
an 50.20.340 &Syntax.C.Config.Configure\.in :cal SetSyn("config")<CR>
an 50.20.350 &Syntax.C.Config.Generic\ Config\ file :cal SetSyn("conf")<CR>
an 50.20.360 &Syntax.C.CRM114 :cal SetSyn("crm")<CR>
an 50.20.370 &Syntax.C.Crontab :cal SetSyn("crontab")<CR>
an 50.20.380 &Syntax.C.CSP :cal SetSyn("csp")<CR>
an 50.20.390 &Syntax.C.Ctrl-H :cal SetSyn("ctrlh")<CR>
an 50.20.400 &Syntax.C.CUDA :cal SetSyn("cuda")<CR>
an 50.20.410 &Syntax.C.CUPL.CUPL :cal SetSyn("cupl")<CR>
an 50.20.420 &Syntax.C.CUPL.Simulation :cal SetSyn("cuplsim")<CR>
an 50.20.430 &Syntax.C.CVS.commit\ file :cal SetSyn("cvs")<CR>
an 50.20.440 &Syntax.C.CVS.cvsrc :cal SetSyn("cvsrc")<CR>
an 50.20.450 &Syntax.C.Cyn++ :cal SetSyn("cynpp")<CR>
an 50.20.460 &Syntax.C.Cynlib :cal SetSyn("cynlib")<CR>
an 50.30.100 &Syntax.DE.D :cal SetSyn("d")<CR>
an 50.30.110 &Syntax.DE.Debian.Debian\ ChangeLog :cal SetSyn("debchangelog")<CR>
an 50.30.120 &Syntax.DE.Debian.Debian\ Control :cal SetSyn("debcontrol")<CR>
an 50.30.130 &Syntax.DE.Debian.Debian\ Sources\.list :cal SetSyn("debsources")<CR>
an 50.30.140 &Syntax.DE.Denyhosts :cal SetSyn("denyhosts")<CR>
an 50.30.150 &Syntax.DE.Desktop :cal SetSyn("desktop")<CR>
an 50.30.160 &Syntax.DE.Dict\ config :cal SetSyn("dictconf")<CR>
an 50.30.170 &Syntax.DE.Dictd\ config :cal SetSyn("dictdconf")<CR>
an 50.30.180 &Syntax.DE.Diff :cal SetSyn("diff")<CR>
an 50.30.190 &Syntax.DE.Digital\ Command\ Lang :cal SetSyn("dcl")<CR>
an 50.30.200 &Syntax.DE.Dircolors :cal SetSyn("dircolors")<CR>
an 50.30.210 &Syntax.DE.Django\ template :cal SetSyn("django")<CR>
an 50.30.220 &Syntax.DE.DNS/BIND\ zone :cal SetSyn("bindzone")<CR>
an 50.30.230 &Syntax.DE.DocBook.auto-detect :cal SetSyn("docbk")<CR>
an 50.30.240 &Syntax.DE.DocBook.SGML :cal SetSyn("docbksgml")<CR>
an 50.30.250 &Syntax.DE.DocBook.XML :cal SetSyn("docbkxml")<CR>
an 50.30.260 &Syntax.DE.Dot :cal SetSyn("dot")<CR>
an 50.30.270 &Syntax.DE.Doxygen.C\ with\ doxygen :cal SetSyn("c.doxygen")<CR>
an 50.30.280 &Syntax.DE.Doxygen.C++\ with\ doxygen :cal SetSyn("cpp.doxygen")<CR>
an 50.30.290 &Syntax.DE.Doxygen.IDL\ with\ doxygen :cal SetSyn("idl.doxygen")<CR>
an 50.30.300 &Syntax.DE.Doxygen.Java\ with\ doxygen :cal SetSyn("java.doxygen")<CR>
an 50.30.310 &Syntax.DE.Dracula :cal SetSyn("dracula")<CR>
an 50.30.320 &Syntax.DE.DSSSL :cal SetSyn("dsl")<CR>
an 50.30.330 &Syntax.DE.DTD :cal SetSyn("dtd")<CR>
an 50.30.340 &Syntax.DE.DTML\ (Zope) :cal SetSyn("dtml")<CR>
an 50.30.350 &Syntax.DE.DTrace :cal SetSyn("dtrace")<CR>
an 50.30.360 &Syntax.DE.Dylan.Dylan :cal SetSyn("dylan")<CR>
an 50.30.370 &Syntax.DE.Dylan.Dylan\ interface :cal SetSyn("dylanintr")<CR>
an 50.30.380 &Syntax.DE.Dylan.Dylan\ lid :cal SetSyn("dylanlid")<CR>
an 50.30.400 &Syntax.DE.EDIF :cal SetSyn("edif")<CR>
an 50.30.410 &Syntax.DE.Eiffel :cal SetSyn("eiffel")<CR>
an 50.30.420 &Syntax.DE.Elinks\ config :cal SetSyn("elinks")<CR>
an 50.30.430 &Syntax.DE.Elm\ filter\ rules :cal SetSyn("elmfilt")<CR>
an 50.30.440 &Syntax.DE.Embedix\ Component\ Description :cal SetSyn("ecd")<CR>
an 50.30.450 &Syntax.DE.ERicsson\ LANGuage :cal SetSyn("erlang")<CR>
an 50.30.460 &Syntax.DE.ESMTP\ rc :cal SetSyn("esmtprc")<CR>
an 50.30.470 &Syntax.DE.ESQL-C :cal SetSyn("esqlc")<CR>
an 50.30.480 &Syntax.DE.Essbase\ script :cal SetSyn("csc")<CR>
an 50.30.490 &Syntax.DE.Esterel :cal SetSyn("esterel")<CR>
an 50.30.500 &Syntax.DE.Eterm\ config :cal SetSyn("eterm")<CR>
an 50.30.510 &Syntax.DE.Eviews :cal SetSyn("eviews")<CR>
an 50.30.520 &Syntax.DE.Exim\ conf :cal SetSyn("exim")<CR>
an 50.30.530 &Syntax.DE.Expect :cal SetSyn("expect")<CR>
an 50.30.540 &Syntax.DE.Exports :cal SetSyn("exports")<CR>
an 50.40.100 &Syntax.FG.Fetchmail :cal SetSyn("fetchmail")<CR>
an 50.40.110 &Syntax.FG.FlexWiki :cal SetSyn("flexwiki")<CR>
an 50.40.120 &Syntax.FG.Focus\ Executable :cal SetSyn("focexec")<CR>
an 50.40.130 &Syntax.FG.Focus\ Master :cal SetSyn("master")<CR>
an 50.40.140 &Syntax.FG.FORM :cal SetSyn("form")<CR>
an 50.40.150 &Syntax.FG.Forth :cal SetSyn("forth")<CR>
an 50.40.160 &Syntax.FG.Fortran :cal SetSyn("fortran")<CR>
an 50.40.170 &Syntax.FG.FoxPro :cal SetSyn("foxpro")<CR>
an 50.40.180 &Syntax.FG.FrameScript :cal SetSyn("framescript")<CR>
an 50.40.190 &Syntax.FG.Fstab :cal SetSyn("fstab")<CR>
an 50.40.200 &Syntax.FG.Fvwm.Fvwm\ configuration :cal SetSyn("fvwm1")<CR>
an 50.40.210 &Syntax.FG.Fvwm.Fvwm2\ configuration :cal SetSyn("fvwm2")<CR>
an 50.40.220 &Syntax.FG.Fvwm.Fvwm2\ configuration\ with\ M4 :cal SetSyn("fvwm2m4")<CR>
an 50.40.240 &Syntax.FG.GDB\ command\ file :cal SetSyn("gdb")<CR>
an 50.40.250 &Syntax.FG.GDMO :cal SetSyn("gdmo")<CR>
an 50.40.260 &Syntax.FG.Gedcom :cal SetSyn("gedcom")<CR>
an 50.40.270 &Syntax.FG.Git.Output :cal SetSyn("git")<CR>
an 50.40.280 &Syntax.FG.Git.Commit :cal SetSyn("gitcommit")<CR>
an 50.40.290 &Syntax.FG.Git.Config :cal SetSyn("gitconfig")<CR>
an 50.40.300 &Syntax.FG.Git.Rebase :cal SetSyn("gitrebase")<CR>
an 50.40.310 &Syntax.FG.Git.Send\ Email :cal SetSyn("gitsendemail")<CR>
an 50.40.320 &Syntax.FG.Gkrellmrc :cal SetSyn("gkrellmrc")<CR>
an 50.40.330 &Syntax.FG.GP :cal SetSyn("gp")<CR>
an 50.40.340 &Syntax.FG.GPG :cal SetSyn("gpg")<CR>
an 50.40.350 &Syntax.FG.Group\ file :cal SetSyn("group")<CR>
an 50.40.360 &Syntax.FG.Grub :cal SetSyn("grub")<CR>
an 50.40.370 &Syntax.FG.GNU\ Server\ Pages :cal SetSyn("gsp")<CR>
an 50.40.380 &Syntax.FG.GNUplot :cal SetSyn("gnuplot")<CR>
an 50.40.390 &Syntax.FG.GrADS\ scripts :cal SetSyn("grads")<CR>
an 50.40.400 &Syntax.FG.Gretl :cal SetSyn("gretl")<CR>
an 50.40.410 &Syntax.FG.Groff :cal SetSyn("groff")<CR>
an 50.40.420 &Syntax.FG.Groovy :cal SetSyn("groovy")<CR>
an 50.40.430 &Syntax.FG.GTKrc :cal SetSyn("gtkrc")<CR>
an 50.50.100 &Syntax.HIJK.Hamster :cal SetSyn("hamster")<CR>
an 50.50.110 &Syntax.HIJK.Haskell.Haskell :cal SetSyn("haskell")<CR>
an 50.50.120 &Syntax.HIJK.Haskell.Haskell-c2hs :cal SetSyn("chaskell")<CR>
an 50.50.130 &Syntax.HIJK.Haskell.Haskell-literate :cal SetSyn("lhaskell")<CR>
an 50.50.140 &Syntax.HIJK.HASTE :cal SetSyn("haste")<CR>
an 50.50.150 &Syntax.HIJK.Hercules :cal SetSyn("hercules")<CR>
an 50.50.160 &Syntax.HIJK.Hex\ dump.XXD :cal SetSyn("xxd")<CR>
an 50.50.170 &Syntax.HIJK.Hex\ dump.Intel\ MCS51 :cal SetSyn("hex")<CR>
an 50.50.180 &Syntax.HIJK.HTML.HTML :cal SetSyn("html")<CR>
an 50.50.190 &Syntax.HIJK.HTML.HTML\ with\ M4 :cal SetSyn("htmlm4")<CR>
an 50.50.200 &Syntax.HIJK.HTML.HTML\ with\ Ruby\ (eRuby) :cal SetSyn("eruby")<CR>
an 50.50.210 &Syntax.HIJK.HTML.Cheetah\ HTML\ template :cal SetSyn("htmlcheetah")<CR>
an 50.50.220 &Syntax.HIJK.HTML.Django\ HTML\ template :cal SetSyn("htmldjango")<CR>
an 50.50.230 &Syntax.HIJK.HTML.HTML/OS :cal SetSyn("htmlos")<CR>
an 50.50.240 &Syntax.HIJK.HTML.XHTML :cal SetSyn("xhtml")<CR>
an 50.50.250 &Syntax.HIJK.Host\.conf :cal SetSyn("hostconf")<CR>
an 50.50.260 &Syntax.HIJK.Hyper\ Builder :cal SetSyn("hb")<CR>
an 50.50.280 &Syntax.HIJK.Icewm\ menu :cal SetSyn("icemenu")<CR>
an 50.50.290 &Syntax.HIJK.Icon :cal SetSyn("icon")<CR>
an 50.50.300 &Syntax.HIJK.IDL\Generic\ IDL :cal SetSyn("idl")<CR>
an 50.50.310 &Syntax.HIJK.IDL\Microsoft\ IDL :cal SetSyn("msidl")<CR>
an 50.50.320 &Syntax.HIJK.Indent\ profile :cal SetSyn("indent")<CR>
an 50.50.330 &Syntax.HIJK.Inform :cal SetSyn("inform")<CR>
an 50.50.340 &Syntax.HIJK.Informix\ 4GL :cal SetSyn("fgl")<CR>
an 50.50.350 &Syntax.HIJK.Initng :cal SetSyn("initng")<CR>
an 50.50.360 &Syntax.HIJK.Inittab :cal SetSyn("inittab")<CR>
an 50.50.370 &Syntax.HIJK.Inno\ setup :cal SetSyn("iss")<CR>
an 50.50.380 &Syntax.HIJK.InstallShield\ script :cal SetSyn("ishd")<CR>
an 50.50.390 &Syntax.HIJK.Interactive\ Data\ Lang :cal SetSyn("idlang")<CR>
an 50.50.400 &Syntax.HIJK.IPfilter :cal SetSyn("ipfilter")<CR>
an 50.50.420 &Syntax.HIJK.JAL :cal SetSyn("jal")<CR>
an 50.50.430 &Syntax.HIJK.JAM :cal SetSyn("jam")<CR>
an 50.50.440 &Syntax.HIJK.Jargon :cal SetSyn("jargon")<CR>
an 50.50.450 &Syntax.HIJK.Java.Java :cal SetSyn("java")<CR>
an 50.50.460 &Syntax.HIJK.Java.JavaCC :cal SetSyn("javacc")<CR>
an 50.50.470 &Syntax.HIJK.Java.Java\ Server\ Pages :cal SetSyn("jsp")<CR>
an 50.50.480 &Syntax.HIJK.Java.Java\ Properties :cal SetSyn("jproperties")<CR>
an 50.50.490 &Syntax.HIJK.JavaScript :cal SetSyn("javascript")<CR>
an 50.50.500 &Syntax.HIJK.Jess :cal SetSyn("jess")<CR>
an 50.50.510 &Syntax.HIJK.Jgraph :cal SetSyn("jgraph")<CR>
an 50.50.530 &Syntax.HIJK.Kconfig :cal SetSyn("kconfig")<CR>
an 50.50.540 &Syntax.HIJK.KDE\ script :cal SetSyn("kscript")<CR>
an 50.50.550 &Syntax.HIJK.Kimwitu++ :cal SetSyn("kwt")<CR>
an 50.50.560 &Syntax.HIJK.KixTart :cal SetSyn("kix")<CR>
an 50.60.100 &Syntax.L-Ma.Lace :cal SetSyn("lace")<CR>
an 50.60.110 &Syntax.L-Ma.LamdaProlog :cal SetSyn("lprolog")<CR>
an 50.60.120 &Syntax.L-Ma.Latte :cal SetSyn("latte")<CR>
an 50.60.130 &Syntax.L-Ma.Ld\ script :cal SetSyn("ld")<CR>
an 50.60.140 &Syntax.L-Ma.LDAP.LDIF :cal SetSyn("ldif")<CR>
an 50.60.150 &Syntax.L-Ma.LDAP.Configuration :cal SetSyn("ldapconf")<CR>
an 50.60.160 &Syntax.L-Ma.Lex :cal SetSyn("lex")<CR>
an 50.60.170 &Syntax.L-Ma.LFTP\ config :cal SetSyn("lftp")<CR>
an 50.60.180 &Syntax.L-Ma.Libao :cal SetSyn("libao")<CR>
an 50.60.190 &Syntax.L-Ma.LifeLines\ script :cal SetSyn("lifelines")<CR>
an 50.60.200 &Syntax.L-Ma.Lilo :cal SetSyn("lilo")<CR>
an 50.60.210 &Syntax.L-Ma.Limits\ config :cal SetSyn("limits")<CR>
an 50.60.220 &Syntax.L-Ma.Linden\ scripting :cal SetSyn("lsl")<CR>
an 50.60.230 &Syntax.L-Ma.Lisp :cal SetSyn("lisp")<CR>
an 50.60.240 &Syntax.L-Ma.Lite :cal SetSyn("lite")<CR>
an 50.60.250 &Syntax.L-Ma.LiteStep\ RC :cal SetSyn("litestep")<CR>
an 50.60.260 &Syntax.L-Ma.Locale\ Input :cal SetSyn("fdcc")<CR>
an 50.60.270 &Syntax.L-Ma.Login\.access :cal SetSyn("loginaccess")<CR>
an 50.60.280 &Syntax.L-Ma.Login\.defs :cal SetSyn("logindefs")<CR>
an 50.60.290 &Syntax.L-Ma.Logtalk :cal SetSyn("logtalk")<CR>
an 50.60.300 &Syntax.L-Ma.LOTOS :cal SetSyn("lotos")<CR>
an 50.60.310 &Syntax.L-Ma.LotusScript :cal SetSyn("lscript")<CR>
an 50.60.320 &Syntax.L-Ma.Lout :cal SetSyn("lout")<CR>
an 50.60.330 &Syntax.L-Ma.LPC :cal SetSyn("lpc")<CR>
an 50.60.340 &Syntax.L-Ma.Lua :cal SetSyn("lua")<CR>
an 50.60.350 &Syntax.L-Ma.Lynx\ Style :cal SetSyn("lss")<CR>
an 50.60.360 &Syntax.L-Ma.Lynx\ config :cal SetSyn("lynx")<CR>
an 50.60.380 &Syntax.L-Ma.M4 :cal SetSyn("m4")<CR>
an 50.60.390 &Syntax.L-Ma.MaGic\ Point :cal SetSyn("mgp")<CR>
an 50.60.400 &Syntax.L-Ma.Mail :cal SetSyn("mail")<CR>
an 50.60.410 &Syntax.L-Ma.Mail\ aliases :cal SetSyn("mailaliases")<CR>
an 50.60.420 &Syntax.L-Ma.Mailcap :cal SetSyn("mailcap")<CR>
an 50.60.430 &Syntax.L-Ma.Makefile :cal SetSyn("make")<CR>
an 50.60.440 &Syntax.L-Ma.MakeIndex :cal SetSyn("ist")<CR>
an 50.60.450 &Syntax.L-Ma.Man\ page :cal SetSyn("man")<CR>
an 50.60.460 &Syntax.L-Ma.Man\.conf :cal SetSyn("manconf")<CR>
an 50.60.470 &Syntax.L-Ma.Maple\ V :cal SetSyn("maple")<CR>
an 50.60.480 &Syntax.L-Ma.Mason :cal SetSyn("mason")<CR>
an 50.60.490 &Syntax.L-Ma.Mathematica :cal SetSyn("mma")<CR>
an 50.60.500 &Syntax.L-Ma.Matlab :cal SetSyn("matlab")<CR>
an 50.60.510 &Syntax.L-Ma.Maxima :cal SetSyn("maxima")<CR>
an 50.70.100 &Syntax.Me-NO.MEL\ (for\ Maya) :cal SetSyn("mel")<CR>
an 50.70.110 &Syntax.Me-NO.Messages\ (/var/log) :cal SetSyn("messages")<CR>
an 50.70.120 &Syntax.Me-NO.Metafont :cal SetSyn("mf")<CR>
an 50.70.130 &Syntax.Me-NO.MetaPost :cal SetSyn("mp")<CR>
an 50.70.140 &Syntax.Me-NO.MGL :cal SetSyn("mgl")<CR>
an 50.70.150 &Syntax.Me-NO.MMIX :cal SetSyn("mmix")<CR>
an 50.70.160 &Syntax.Me-NO.Modconf :cal SetSyn("modconf")<CR>
an 50.70.170 &Syntax.Me-NO.Model :cal SetSyn("model")<CR>
an 50.70.180 &Syntax.Me-NO.Modsim\ III :cal SetSyn("modsim3")<CR>
an 50.70.190 &Syntax.Me-NO.Modula\ 2 :cal SetSyn("modula2")<CR>
an 50.70.200 &Syntax.Me-NO.Modula\ 3 :cal SetSyn("modula3")<CR>
an 50.70.210 &Syntax.Me-NO.Monk :cal SetSyn("monk")<CR>
an 50.70.220 &Syntax.Me-NO.Mplayer\ config :cal SetSyn("mplayerconf")<CR>
an 50.70.230 &Syntax.Me-NO.MOO :cal SetSyn("moo")<CR>
an 50.70.240 &Syntax.Me-NO.Mrxvtrc :cal SetSyn("mrxvtrc")<CR>
an 50.70.250 &Syntax.Me-NO.MS-DOS/Windows.4DOS\ \.bat\ file :cal SetSyn("btm")<CR>
an 50.70.260 &Syntax.Me-NO.MS-DOS/Windows.\.bat\/\.cmd\ file :cal SetSyn("dosbatch")<CR>
an 50.70.270 &Syntax.Me-NO.MS-DOS/Windows.\.ini\ file :cal SetSyn("dosini")<CR>
an 50.70.280 &Syntax.Me-NO.MS-DOS/Windows.Message\ text :cal SetSyn("msmessages")<CR>
an 50.70.290 &Syntax.Me-NO.MS-DOS/Windows.Module\ Definition :cal SetSyn("def")<CR>
an 50.70.300 &Syntax.Me-NO.MS-DOS/Windows.Registry :cal SetSyn("registry")<CR>
an 50.70.310 &Syntax.Me-NO.MS-DOS/Windows.Resource\ file :cal SetSyn("rc")<CR>
an 50.70.320 &Syntax.Me-NO.Msql :cal SetSyn("msql")<CR>
an 50.70.330 &Syntax.Me-NO.MuPAD :cal SetSyn("mupad")<CR>
an 50.70.340 &Syntax.Me-NO.MUSHcode :cal SetSyn("mush")<CR>
an 50.70.350 &Syntax.Me-NO.Muttrc :cal SetSyn("muttrc")<CR>
an 50.70.370 &Syntax.Me-NO.Nanorc :cal SetSyn("nanorc")<CR>
an 50.70.380 &Syntax.Me-NO.Nastran\ input/DMAP :cal SetSyn("nastran")<CR>
an 50.70.390 &Syntax.Me-NO.Natural :cal SetSyn("natural")<CR>
an 50.70.400 &Syntax.Me-NO.Netrc :cal SetSyn("netrc")<CR>
an 50.70.410 &Syntax.Me-NO.Novell\ NCF\ batch :cal SetSyn("ncf")<CR>
an 50.70.420 &Syntax.Me-NO.Not\ Quite\ C\ (LEGO) :cal SetSyn("nqc")<CR>
an 50.70.430 &Syntax.Me-NO.Nroff :cal SetSyn("nroff")<CR>
an 50.70.440 &Syntax.Me-NO.NSIS\ script :cal SetSyn("nsis")<CR>
an 50.70.460 &Syntax.Me-NO.Objective\ C :cal SetSyn("objc")<CR>
an 50.70.470 &Syntax.Me-NO.Objective\ C++ :cal SetSyn("objcpp")<CR>
an 50.70.480 &Syntax.Me-NO.OCAML :cal SetSyn("ocaml")<CR>
an 50.70.490 &Syntax.Me-NO.Occam :cal SetSyn("occam")<CR>
an 50.70.500 &Syntax.Me-NO.Omnimark :cal SetSyn("omnimark")<CR>
an 50.70.510 &Syntax.Me-NO.OpenROAD :cal SetSyn("openroad")<CR>
an 50.70.520 &Syntax.Me-NO.Open\ Psion\ Lang :cal SetSyn("opl")<CR>
an 50.70.530 &Syntax.Me-NO.Oracle\ config :cal SetSyn("ora")<CR>
an 50.80.100 &Syntax.PQ.Packet\ filter\ conf :cal SetSyn("pf")<CR>
an 50.80.110 &Syntax.PQ.Palm\ resource\ compiler :cal SetSyn("pilrc")<CR>
an 50.80.120 &Syntax.PQ.Pam\ config :cal SetSyn("pamconf")<CR>
an 50.80.130 &Syntax.PQ.PApp :cal SetSyn("papp")<CR>
an 50.80.140 &Syntax.PQ.Pascal :cal SetSyn("pascal")<CR>
an 50.80.150 &Syntax.PQ.Password\ file :cal SetSyn("passwd")<CR>
an 50.80.160 &Syntax.PQ.PCCTS :cal SetSyn("pccts")<CR>
an 50.80.170 &Syntax.PQ.PDF :cal SetSyn("pdf")<CR>
an 50.80.180 &Syntax.PQ.Perl.Perl :cal SetSyn("perl")<CR>
an 50.80.190 &Syntax.PQ.Perl.Perl\ POD :cal SetSyn("pod")<CR>
an 50.80.200 &Syntax.PQ.Perl.Perl\ XS :cal SetSyn("xs")<CR>
an 50.80.210 &Syntax.PQ.PHP.PHP\ 3-4 :cal SetSyn("php")<CR>
an 50.80.220 &Syntax.PQ.PHP.Phtml\ (PHP\ 2) :cal SetSyn("phtml")<CR>
an 50.80.230 &Syntax.PQ.Pike :cal SetSyn("pike")<CR>
an 50.80.240 &Syntax.PQ.Pine\ RC :cal SetSyn("pine")<CR>
an 50.80.250 &Syntax.PQ.Pinfo\ RC :cal SetSyn("pinfo")<CR>
an 50.80.260 &Syntax.PQ.PL/M :cal SetSyn("plm")<CR>
an 50.80.270 &Syntax.PQ.PL/SQL :cal SetSyn("plsql")<CR>
an 50.80.280 &Syntax.PQ.PLP :cal SetSyn("plp")<CR>
an 50.80.290 &Syntax.PQ.PO\ (GNU\ gettext) :cal SetSyn("po")<CR>
an 50.80.300 &Syntax.PQ.Postfix\ main\ config :cal SetSyn("pfmain")<CR>
an 50.80.310 &Syntax.PQ.PostScript.PostScript :cal SetSyn("postscr")<CR>
an 50.80.320 &Syntax.PQ.PostScript.PostScript\ Printer\ Description :cal SetSyn("ppd")<CR>
an 50.80.330 &Syntax.PQ.Povray.Povray\ scene\ descr :cal SetSyn("pov")<CR>
an 50.80.340 &Syntax.PQ.Povray.Povray\ configuration :cal SetSyn("povini")<CR>
an 50.80.350 &Syntax.PQ.PPWizard :cal SetSyn("ppwiz")<CR>
an 50.80.360 &Syntax.PQ.Prescribe\ (Kyocera) :cal SetSyn("prescribe")<CR>
an 50.80.370 &Syntax.PQ.Printcap :cal SetSyn("pcap")<CR>
an 50.80.380 &Syntax.PQ.Privoxy :cal SetSyn("privoxy")<CR>
an 50.80.390 &Syntax.PQ.Procmail :cal SetSyn("procmail")<CR>
an 50.80.400 &Syntax.PQ.Product\ Spec\ File :cal SetSyn("psf")<CR>
an 50.80.410 &Syntax.PQ.Progress :cal SetSyn("progress")<CR>
an 50.80.420 &Syntax.PQ.Prolog :cal SetSyn("prolog")<CR>
an 50.80.430 &Syntax.PQ.ProMeLa :cal SetSyn("promela")<CR>
an 50.80.440 &Syntax.PQ.Protocols :cal SetSyn("protocols")<CR>
an 50.80.450 &Syntax.PQ.Purify\ log :cal SetSyn("purifylog")<CR>
an 50.80.460 &Syntax.PQ.Pyrex :cal SetSyn("pyrex")<CR>
an 50.80.470 &Syntax.PQ.Python :cal SetSyn("python")<CR>
an 50.80.490 &Syntax.PQ.Quake :cal SetSyn("quake")<CR>
an 50.80.500 &Syntax.PQ.Quickfix\ window :cal SetSyn("qf")<CR>
an 50.90.100 &Syntax.R-Sg.R.R :cal SetSyn("r")<CR>
an 50.90.110 &Syntax.R-Sg.R.R\ help :cal SetSyn("rhelp")<CR>
an 50.90.120 &Syntax.R-Sg.R.R\ noweb :cal SetSyn("rnoweb")<CR>
an 50.90.130 &Syntax.R-Sg.Racc\ input :cal SetSyn("racc")<CR>
an 50.90.140 &Syntax.R-Sg.Radiance :cal SetSyn("radiance")<CR>
an 50.90.150 &Syntax.R-Sg.Ratpoison :cal SetSyn("ratpoison")<CR>
an 50.90.160 &Syntax.R-Sg.RCS.RCS\ log\ output :cal SetSyn("rcslog")<CR>
an 50.90.170 &Syntax.R-Sg.RCS.RCS\ file :cal SetSyn("rcs")<CR>
an 50.90.180 &Syntax.R-Sg.Readline\ config :cal SetSyn("readline")<CR>
an 50.90.190 &Syntax.R-Sg.Rebol :cal SetSyn("rebol")<CR>
an 50.90.200 &Syntax.R-Sg.Remind :cal SetSyn("remind")<CR>
an 50.90.210 &Syntax.R-Sg.Relax\ NG\ compact :cal SetSyn("rnc")<CR>
an 50.90.220 &Syntax.R-Sg.Renderman.Renderman\ Shader\ Lang :cal SetSyn("sl")<CR>
an 50.90.230 &Syntax.R-Sg.Renderman.Renderman\ Interface\ Bytestream :cal SetSyn("rib")<CR>
an 50.90.240 &Syntax.R-Sg.Resolv\.conf :cal SetSyn("resolv")<CR>
an 50.90.250 &Syntax.R-Sg.Reva\ Forth :cal SetSyn("reva")<CR>
an 50.90.260 &Syntax.R-Sg.Rexx :cal SetSyn("rexx")<CR>
an 50.90.270 &Syntax.R-Sg.Robots\.txt :cal SetSyn("robots")<CR>
an 50.90.280 &Syntax.R-Sg.RockLinux\ package\ desc\. :cal SetSyn("desc")<CR>
an 50.90.290 &Syntax.R-Sg.Rpcgen :cal SetSyn("rpcgen")<CR>
an 50.90.300 &Syntax.R-Sg.RPL/2 :cal SetSyn("rpl")<CR>
an 50.90.310 &Syntax.R-Sg.ReStructuredText :cal SetSyn("rst")<CR>
an 50.90.320 &Syntax.R-Sg.RTF :cal SetSyn("rtf")<CR>
an 50.90.330 &Syntax.R-Sg.Ruby :cal SetSyn("ruby")<CR>
an 50.90.350 &Syntax.R-Sg.S-Lang :cal SetSyn("slang")<CR>
an 50.90.360 &Syntax.R-Sg.Samba\ config :cal SetSyn("samba")<CR>
an 50.90.370 &Syntax.R-Sg.SAS :cal SetSyn("sas")<CR>
an 50.90.380 &Syntax.R-Sg.Sather :cal SetSyn("sather")<CR>
an 50.90.390 &Syntax.R-Sg.Scheme :cal SetSyn("scheme")<CR>
an 50.90.400 &Syntax.R-Sg.Scilab :cal SetSyn("scilab")<CR>
an 50.90.410 &Syntax.R-Sg.Screen\ RC :cal SetSyn("screen")<CR>
an 50.90.420 &Syntax.R-Sg.SDL :cal SetSyn("sdl")<CR>
an 50.90.430 &Syntax.R-Sg.Sed :cal SetSyn("sed")<CR>
an 50.90.440 &Syntax.R-Sg.Sendmail\.cf :cal SetSyn("sm")<CR>
an 50.90.450 &Syntax.R-Sg.Send-pr :cal SetSyn("sendpr")<CR>
an 50.90.460 &Syntax.R-Sg.Sensors\.conf :cal SetSyn("sensors")<CR>
an 50.90.470 &Syntax.R-Sg.Service\ Location\ config :cal SetSyn("slpconf")<CR>
an 50.90.480 &Syntax.R-Sg.Service\ Location\ registration :cal SetSyn("slpreg")<CR>
an 50.90.490 &Syntax.R-Sg.Service\ Location\ SPI :cal SetSyn("slpspi")<CR>
an 50.90.500 &Syntax.R-Sg.Services :cal SetSyn("services")<CR>
an 50.90.510 &Syntax.R-Sg.Setserial\ config :cal SetSyn("setserial")<CR>
an 50.90.520 &Syntax.R-Sg.SGML.SGML\ catalog :cal SetSyn("catalog")<CR>
an 50.90.530 &Syntax.R-Sg.SGML.SGML\ DTD :cal SetSyn("sgml")<CR>
an 50.90.540 &Syntax.R-Sg.SGML.SGML\ Declaration :cal SetSyn("sgmldecl")<CR>
an 50.90.550 &Syntax.R-Sg.SGML.SGML-linuxdoc :cal SetSyn("sgmllnx")<CR>
an 50.100.100 &Syntax.Sh-S.Shell\ script.sh\ and\ ksh :cal SetSyn("sh")<CR>
an 50.100.110 &Syntax.Sh-S.Shell\ script.csh :cal SetSyn("csh")<CR>
an 50.100.120 &Syntax.Sh-S.Shell\ script.tcsh :cal SetSyn("tcsh")<CR>
an 50.100.130 &Syntax.Sh-S.Shell\ script.zsh :cal SetSyn("zsh")<CR>
an 50.100.140 &Syntax.Sh-S.SiCAD :cal SetSyn("sicad")<CR>
an 50.100.150 &Syntax.Sh-S.Sieve :cal SetSyn("sieve")<CR>
an 50.100.160 &Syntax.Sh-S.Simula :cal SetSyn("simula")<CR>
an 50.100.170 &Syntax.Sh-S.Sinda.Sinda\ compare :cal SetSyn("sindacmp")<CR>
an 50.100.180 &Syntax.Sh-S.Sinda.Sinda\ input :cal SetSyn("sinda")<CR>
an 50.100.190 &Syntax.Sh-S.Sinda.Sinda\ output :cal SetSyn("sindaout")<CR>
an 50.100.200 &Syntax.Sh-S.SiSU :cal SetSyn("sisu")<CR>
an 50.100.210 &Syntax.Sh-S.SKILL.SKILL :cal SetSyn("skill")<CR>
an 50.100.220 &Syntax.Sh-S.SKILL.SKILL\ for\ Diva :cal SetSyn("diva")<CR>
an 50.100.230 &Syntax.Sh-S.Slice :cal SetSyn("slice")<CR>
an 50.100.240 &Syntax.Sh-S.SLRN.Slrn\ rc :cal SetSyn("slrnrc")<CR>
an 50.100.250 &Syntax.Sh-S.SLRN.Slrn\ score :cal SetSyn("slrnsc")<CR>
an 50.100.260 &Syntax.Sh-S.SmallTalk :cal SetSyn("st")<CR>
an 50.100.270 &Syntax.Sh-S.Smarty\ Templates :cal SetSyn("smarty")<CR>
an 50.100.280 &Syntax.Sh-S.SMIL :cal SetSyn("smil")<CR>
an 50.100.290 &Syntax.Sh-S.SMITH :cal SetSyn("smith")<CR>
an 50.100.300 &Syntax.Sh-S.SNMP\ MIB :cal SetSyn("mib")<CR>
an 50.100.310 &Syntax.Sh-S.SNNS.SNNS\ network :cal SetSyn("snnsnet")<CR>
an 50.100.320 &Syntax.Sh-S.SNNS.SNNS\ pattern :cal SetSyn("snnspat")<CR>
an 50.100.330 &Syntax.Sh-S.SNNS.SNNS\ result :cal SetSyn("snnsres")<CR>
an 50.100.340 &Syntax.Sh-S.Snobol4 :cal SetSyn("snobol4")<CR>
an 50.100.350 &Syntax.Sh-S.Snort\ Configuration :cal SetSyn("hog")<CR>
an 50.100.360 &Syntax.Sh-S.SPEC\ (Linux\ RPM) :cal SetSyn("spec")<CR>
an 50.100.370 &Syntax.Sh-S.Specman :cal SetSyn("specman")<CR>
an 50.100.380 &Syntax.Sh-S.Spice :cal SetSyn("spice")<CR>
an 50.100.390 &Syntax.Sh-S.Spyce :cal SetSyn("spyce")<CR>
an 50.100.400 &Syntax.Sh-S.Speedup :cal SetSyn("spup")<CR>
an 50.100.410 &Syntax.Sh-S.Splint :cal SetSyn("splint")<CR>
an 50.100.420 &Syntax.Sh-S.Squid\ config :cal SetSyn("squid")<CR>
an 50.100.430 &Syntax.Sh-S.SQL.ESQL-C :cal SetSyn("esqlc")<CR>
an 50.100.440 &Syntax.Sh-S.SQL.MySQL :cal SetSyn("mysql")<CR>
an 50.100.450 &Syntax.Sh-S.SQL.PL/SQL :cal SetSyn("plsql")<CR>
an 50.100.460 &Syntax.Sh-S.SQL.SQL\ Anywhere :cal SetSyn("sqlanywhere")<CR>
an 50.100.470 &Syntax.Sh-S.SQL.SQL\ (automatic) :cal SetSyn("sql")<CR>
an 50.100.480 &Syntax.Sh-S.SQL.SQL\ (Oracle) :cal SetSyn("sqloracle")<CR>
an 50.100.490 &Syntax.Sh-S.SQL.SQL\ Forms :cal SetSyn("sqlforms")<CR>
an 50.100.500 &Syntax.Sh-S.SQL.SQLJ :cal SetSyn("sqlj")<CR>
an 50.100.510 &Syntax.Sh-S.SQL.SQL-Informix :cal SetSyn("sqlinformix")<CR>
an 50.100.520 &Syntax.Sh-S.SQR :cal SetSyn("sqr")<CR>
an 50.100.530 &Syntax.Sh-S.Ssh.ssh_config :cal SetSyn("sshconfig")<CR>
an 50.100.540 &Syntax.Sh-S.Ssh.sshd_config :cal SetSyn("sshdconfig")<CR>
an 50.100.550 &Syntax.Sh-S.Standard\ ML :cal SetSyn("sml")<CR>
an 50.100.560 &Syntax.Sh-S.Stata.SMCL :cal SetSyn("smcl")<CR>
an 50.100.570 &Syntax.Sh-S.Stata.Stata :cal SetSyn("stata")<CR>
an 50.100.580 &Syntax.Sh-S.Stored\ Procedures :cal SetSyn("stp")<CR>
an 50.100.590 &Syntax.Sh-S.Strace :cal SetSyn("strace")<CR>
an 50.100.600 &Syntax.Sh-S.Streaming\ descriptor\ file :cal SetSyn("sd")<CR>
an 50.100.610 &Syntax.Sh-S.Subversion\ commit :cal SetSyn("svn")<CR>
an 50.100.620 &Syntax.Sh-S.Sudoers :cal SetSyn("sudoers")<CR>
an 50.100.630 &Syntax.Sh-S.Symbian\ meta-makefile :cal SetSyn("mmp")<CR>
an 50.100.640 &Syntax.Sh-S.Sysctl\.conf :cal SetSyn("sysctl")<CR>
an 50.110.100 &Syntax.TUV.TADS :cal SetSyn("tads")<CR>
an 50.110.110 &Syntax.TUV.Tags :cal SetSyn("tags")<CR>
an 50.110.120 &Syntax.TUV.TAK.TAK\ compare :cal SetSyn("takcmp")<CR>
an 50.110.130 &Syntax.TUV.TAK.TAK\ input :cal SetSyn("tak")<CR>
an 50.110.140 &Syntax.TUV.TAK.TAK\ output :cal SetSyn("takout")<CR>
an 50.110.150 &Syntax.TUV.Tcl/Tk :cal SetSyn("tcl")<CR>
an 50.110.160 &Syntax.TUV.TealInfo :cal SetSyn("tli")<CR>
an 50.110.170 &Syntax.TUV.Telix\ Salt :cal SetSyn("tsalt")<CR>
an 50.110.180 &Syntax.TUV.Termcap/Printcap :cal SetSyn("ptcap")<CR>
an 50.110.190 &Syntax.TUV.Terminfo :cal SetSyn("terminfo")<CR>
an 50.110.200 &Syntax.TUV.TeX.TeX/LaTeX :cal SetSyn("tex")<CR>
an 50.110.210 &Syntax.TUV.TeX.plain\ TeX :cal SetSyn("plaintex")<CR>
an 50.110.220 &Syntax.TUV.TeX.ConTeXt :cal SetSyn("context")<CR>
an 50.110.230 &Syntax.TUV.TeX.TeX\ configuration :cal SetSyn("texmf")<CR>
an 50.110.240 &Syntax.TUV.TeX.Texinfo :cal SetSyn("texinfo")<CR>
an 50.110.250 &Syntax.TUV.TF\ mud\ client :cal SetSyn("tf")<CR>
an 50.110.260 &Syntax.TUV.Tidy\ configuration :cal SetSyn("tidy")<CR>
an 50.110.270 &Syntax.TUV.Tilde :cal SetSyn("tilde")<CR>
an 50.110.280 &Syntax.TUV.TPP :cal SetSyn("tpp")<CR>
an 50.110.290 &Syntax.TUV.Trasys\ input :cal SetSyn("trasys")<CR>
an 50.110.300 &Syntax.TUV.Trustees :cal SetSyn("trustees")<CR>
an 50.110.310 &Syntax.TUV.TSS.Command\ Line :cal SetSyn("tsscl")<CR>
an 50.110.320 &Syntax.TUV.TSS.Geometry :cal SetSyn("tssgm")<CR>
an 50.110.330 &Syntax.TUV.TSS.Optics :cal SetSyn("tssop")<CR>
an 50.110.350 &Syntax.TUV.Udev\ config :cal SetSyn("udevconf")<CR>
an 50.110.360 &Syntax.TUV.Udev\ permissions :cal SetSyn("udevperm")<CR>
an 50.110.370 &Syntax.TUV.Udev\ rules :cal SetSyn("udevrules")<CR>
an 50.110.380 &Syntax.TUV.UIT/UIL :cal SetSyn("uil")<CR>
an 50.110.390 &Syntax.TUV.UnrealScript :cal SetSyn("uc")<CR>
an 50.110.400 &Syntax.TUV.Updatedb\.conf :cal SetSyn("updatedb")<CR>
an 50.110.420 &Syntax.TUV.Valgrind :cal SetSyn("valgrind")<CR>
an 50.110.430 &Syntax.TUV.Vera :cal SetSyn("vera")<CR>
an 50.110.440 &Syntax.TUV.Verilog-AMS\ HDL :cal SetSyn("verilogams")<CR>
an 50.110.450 &Syntax.TUV.Verilog\ HDL :cal SetSyn("verilog")<CR>
an 50.110.460 &Syntax.TUV.Vgrindefs :cal SetSyn("vgrindefs")<CR>
an 50.110.470 &Syntax.TUV.VHDL :cal SetSyn("vhdl")<CR>
an 50.110.480 &Syntax.TUV.Vim.Vim\ help\ file :cal SetSyn("help")<CR>
an 50.110.490 &Syntax.TUV.Vim.Vim\ script :cal SetSyn("vim")<CR>
an 50.110.500 &Syntax.TUV.Vim.Viminfo\ file :cal SetSyn("viminfo")<CR>
an 50.110.510 &Syntax.TUV.Virata\ config :cal SetSyn("virata")<CR>
an 50.110.520 &Syntax.TUV.Visual\ Basic :cal SetSyn("vb")<CR>
an 50.110.530 &Syntax.TUV.VOS\ CM\ macro :cal SetSyn("voscm")<CR>
an 50.110.540 &Syntax.TUV.VRML :cal SetSyn("vrml")<CR>
an 50.110.550 &Syntax.TUV.VSE\ JCL :cal SetSyn("vsejcl")<CR>
an 50.120.100 &Syntax.WXYZ.WEB.CWEB :cal SetSyn("cweb")<CR>
an 50.120.110 &Syntax.WXYZ.WEB.WEB :cal SetSyn("web")<CR>
an 50.120.120 &Syntax.WXYZ.WEB.WEB\ Changes :cal SetSyn("change")<CR>
an 50.120.130 &Syntax.WXYZ.Webmacro :cal SetSyn("webmacro")<CR>
an 50.120.140 &Syntax.WXYZ.Website\ MetaLanguage :cal SetSyn("wml")<CR>
an 50.120.160 &Syntax.WXYZ.wDiff :cal SetSyn("wdiff")<CR>
an 50.120.180 &Syntax.WXYZ.Wget\ config :cal SetSyn("wget")<CR>
an 50.120.190 &Syntax.WXYZ.Whitespace\ (add) :cal SetSyn("whitespace")<CR>
an 50.120.200 &Syntax.WXYZ.WildPackets\ EtherPeek\ Decoder :cal SetSyn("dcd")<CR>
an 50.120.210 &Syntax.WXYZ.WinBatch/Webbatch :cal SetSyn("winbatch")<CR>
an 50.120.220 &Syntax.WXYZ.Windows\ Scripting\ Host :cal SetSyn("wsh")<CR>
an 50.120.230 &Syntax.WXYZ.WSML :cal SetSyn("wsml")<CR>
an 50.120.240 &Syntax.WXYZ.WvDial :cal SetSyn("wvdial")<CR>
an 50.120.260 &Syntax.WXYZ.X\ Keyboard\ Extension :cal SetSyn("xkb")<CR>
an 50.120.270 &Syntax.WXYZ.X\ Pixmap :cal SetSyn("xpm")<CR>
an 50.120.280 &Syntax.WXYZ.X\ Pixmap\ (2) :cal SetSyn("xpm2")<CR>
an 50.120.290 &Syntax.WXYZ.X\ resources :cal SetSyn("xdefaults")<CR>
an 50.120.300 &Syntax.WXYZ.XBL :cal SetSyn("xbl")<CR>
an 50.120.310 &Syntax.WXYZ.Xinetd\.conf :cal SetSyn("xinetd")<CR>
an 50.120.320 &Syntax.WXYZ.Xmodmap :cal SetSyn("xmodmap")<CR>
an 50.120.330 &Syntax.WXYZ.Xmath :cal SetSyn("xmath")<CR>
an 50.120.340 &Syntax.WXYZ.XML :cal SetSyn("xml")<CR>
an 50.120.350 &Syntax.WXYZ.XML\ Schema\ (XSD) :cal SetSyn("xsd")<CR>
an 50.120.360 &Syntax.WXYZ.XQuery :cal SetSyn("xquery")<CR>
an 50.120.370 &Syntax.WXYZ.Xslt :cal SetSyn("xslt")<CR>
an 50.120.380 &Syntax.WXYZ.XFree86\ Config :cal SetSyn("xf86conf")<CR>
an 50.120.400 &Syntax.WXYZ.YAML :cal SetSyn("yaml")<CR>
an 50.120.410 &Syntax.WXYZ.Yacc :cal SetSyn("yacc")<CR>
" The End Of The Syntax Menu
an 50.195 &Syntax.-SEP1- <Nop>
an <silent> 50.200 &Syntax.Set\ '&syntax'\ only :call <SID>Setsynonly()<CR>
fun! s:Setsynonly()
let s:syntax_menu_synonly = 1
endfun
an <silent> 50.202 &Syntax.Set\ '&filetype'\ too :call <SID>Nosynonly()<CR>
fun! s:Nosynonly()
if exists("s:syntax_menu_synonly")
unlet s:syntax_menu_synonly
endif
endfun
" Restore 'cpoptions'
let &cpo = s:cpo_save
unlet s:cpo_save

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

View File

@ -0,0 +1,980 @@
===============================================================================
= W i l l k o m m e n im V I M T u t o r - Version 1.7D =
===============================================================================
Vim ist ein sehr mächtiger Editor, der viele Befehle bereitstellt; zu viele,
um alle in einem Tutor wie diesem zu erklären. Dieser Tutor ist so
gestaltet, um genug Befehle vorzustellen, dass Du die Fähigkeit erlangst,
Vim mit Leichtigkeit als einen Allzweck-Editor zu benutzen.
Die Zeit für das Durcharbeiten dieses Tutors beträgt ca. 25-30 Minuten,
abhängig davon, wie viel Zeit Du mit Experimentieren verbringst.
ACHTUNG:
Die in den Lektionen angewendeten Kommandos werden den Text modifizieren.
Erstelle eine Kopie dieser Datei, in der Du üben willst (falls Du "vimtutor"
aufgerufen hast, ist dies bereits eine Kopie).
Es ist wichtig, sich zu vergegenwärtigen, dass dieser Tutor für das Anwenden
konzipiert ist. Das bedeutet, dass Du die Befehle ausführen musst, um sie
richtig zu lernen. Wenn Du nur den Text liest, vergisst Du die Befehle!
Jetzt stelle sicher, dass Deine Umstelltaste NICHT gedrückt ist und betätige
die j Taste genügend Male, um den Cursor nach unten zu bewegen, so dass
Lektion 1.1 den Bildschirm vollkommen ausfüllt.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 1.1: BEWEGEN DES CURSORS
** Um den Cursor zu bewegen, drücke die h,j,k,l Tasten wie unten gezeigt. **
^ Hilfestellung:
k Die h Taste befindet sich links und bewegt nach links.
< h l > Die l Taste liegt rechts und bewegt nach rechts.
j Die j Taste ähnelt einem Pfeil nach unten.
v
1. Bewege den Cursor auf dem Bildschirm umher, bis Du Dich sicher fühlst.
2. Halte die Nach-Unten-Taste (j) gedrückt, bis sie sich wiederholt.
Jetzt weißt Du, wie Du Dich zur nächsten Lektion bewegen kannst.
3. Benutze die Nach-Unten-Taste, um Dich zu Lektion 1.2 zu bewegen.
Bemerkung: Immer, wenn Du Dir unsicher bist über das, was Du getippt hast,
drücke <ESC> , um Dich in den Normalmodus zu begeben.
Dann gib das gewünschte Kommando noch einmal ein.
Bemerkung: Die Cursor-Tasten sollten ebenfalls funktionieren. Aber wenn Du
hjkl benutzt, wirst Du in der Lage sein, Dich sehr viel schneller
umherzubewegen, wenn Du Dich einmal daran gewöhnt hast. Wirklich!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 1.2: VIM BEENDEN
!! ACHTUNG: Bevor Du einen der unten aufgeführten Schritte ausführst, lies
diese gesamte Lektion!!
1. Drücke die <ESC> Taste (um sicherzustellen, dass Du im Normalmodus bist).
2. Tippe: :q! <ENTER>.
Dies beendet den Editor und VERWIRFT alle Änderungen, die Du gemacht hast.
3. Wenn Du die Eingabeaufforderung siehst, gib das Kommando ein, das Dich zu
diesem Tutor geführt hat. Dies wäre: vimtutor <ENTER>
4. Wenn Du Dir diese Schritte eingeprägt hast und Du Dich sicher fühlst,
führe Schritte 1 bis 3 aus, um den Editor zu verlassen und wieder
hineinzugelangen.
Bemerkung: :q! <ENTER> verwirft alle Änderungen, die Du gemacht hast. In
einigen Lektionen lernst Du , die Änderungen in einer Datei zu speichern.
5. Bewege den Cursor abwärts zu Lektion 1.3.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 1.3: TEXT EDITIEREN - LÖSCHEN
** Drücke x um das Zeichen unter dem Cursor zu löschen. **
1. Bewege den Cursor zu der mit ---> markierten Zeile unten.
2. Um die Fehler zu beheben, bewege den Cursor, bis er auf dem Zeichen steht,
das gelöscht werden soll.
3. Drücke die x Taste, um das überflüssige Zeichen zu löschen.
4. Wiederhole die Schritte 2 bis 4, bis der Satz korrekt ist.
---> Die Kkuh sprangg übber deen Moond.
5. Wenn nun die Zeile korrekt ist, gehe weiter zur Lektion 1.4.
Anmerkung: Während Du durch diesen Tutor gehst, versuche nicht, auswendig zu
lernen, lerne vielmehr durch Anwenden.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 1.4: TEXT EDITIEREN - EINFÜGEN
** Drücke i , um Text einzufügen. **
1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile.
2. Um die erste Zeile mit der zweiten gleichzumachen, bewege den Cursor auf
das erste Zeichen NACH der Stelle, wo der Text eingefügt werden soll.
3. Drücke i und gib die notwendigen Ergänzungen ein.
4. Wenn jeweils ein Fehler beseitigt ist, drücke <ESC> , um zum Normalmodus
zurückzukehren.
Wiederhole die Schritte 2 bis 4, um den Satz zu korrigieren.
---> In dieser ft etwas .
---> In dieser Zeile fehlt etwas Text.
5. Wenn Du Dich mit dem Einfügen von Text sicher fühlst, gehe zu Lektion 1.5.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 1.5: TEXT EDITIEREN - ANFÜGEN
** Drücke A , um Text anzufügen. **
1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile.
Es ist gleichgültig, auf welchem Zeichen der Zeile der Cursor steht.
2. Drücke A und gib die nötigen Ergänzungen ein.
3. Wenn das Anfügen abgeschlossen ist, drücke <ESC>, um in den Normalmodus
zurückzukehren.
4. Bewege den Cursor zur zweiten mit ---> markierten Zeile und wiederhole
die Schritte 2 und 3, um den Satz zu korrigieren.
---> In dieser Zeile feh
In dieser Zeile fehlt etwas Text.
---> Auch hier steh
Auch hier steht etwas Unvollständiges.
5. Wenn Du dich mit dem Anfügen von Text sicher fühlst, gehe zu Lektion 1.6.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 1.6: EINE DATEI EDITIEREN
** Benutze :wq , um eine Datei zu speichern und Vim zu verlassen. **
!! ACHTUNG: Bevor Du einen der unten aufgeführten Schritte ausführst, lies
diese gesamte Lektion!!
1. Verlasse den Editor so wie in Lektion 1.2: :q!
2. Gib dieses Kommando in die Eingabeaufforderung ein: vim tutor <ENTER>
'vim' ist der Aufruf des Editors, 'tutor' ist die zu editierende Datei.
Benutze eine Datei, die geändert werden kann.
3. Füge Text ein oder lösche ihn, wie Du in den vorigen Lektionen gelernt
hast.
4. Speichere die geänderte Datei und verlasse Vim mit: :wq <ENTER>
5. Starte den vimtutor neu und bewege Dich zu der folgenden Zusammenfassung.
6. Nachdem Du obige Schritte gelesen und verstanden hast, führe sie durch.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ZUSAMMENFASSUNG VON LEKTION 1
1. Der Cursor wird mit den Pfeiltasten oder den Tasten hjkl bewegt.
h (links) j (unten) k (aufwärts) l (rechts)
2. Um Vim von der Eingabeaufforderung auszuführen, tippe: vim DATEI <ENTER>
3. Um Vim zu verlassen und alle Änderungen zu verwerfen, tippe:
<ESC> :q! <ENTER> .
ODER tippe: <ESC> :wq <ENTER> , um die Änderungen zu speichern.
4. Um das Zeichen unter dem Cursor zu löschen, tippe: x
5. Um Text einzufügen oder anzufügen, tippe:
i Einzufügenden Text eingeben <ESC> Einfügen vor dem Cursor
A Anzufügenden Text eingeben <ESC> Anfügen nach dem Zeilendene
Bemerkung: Drücken von <ESC> bringt Dich in den Normalmodus oder bricht ein
ungewolltes, erst teilweise eingegebenes Kommando ab.
Nun fahre mit Lektion 2 fort.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 2.1: LÖSCHKOMMANDOS
** Tippe dw , um ein Wort zu löschen. **
1. Drücke <ESC> um sicherzustellen, dass Du im Normalmodus bist.
2. Bewege den Cursor zu der mit ---> markierten Zeile unten.
3. Bewege den Cursor zum Anfang eines Wortes, das gelöscht werden soll.
4. Tippe dw , um das Wort zu entfernen.
Bemerkung: Der Buchstabe d erscheint auf der letzten Zeile des Bildschirms,
wenn Du ihn eingibst. Vim wartet darauf, daß Du w eingibst. Wenn Du
ein anderes Zeichen als d siehst, hast Du etwas falsches getippt;
drücke <ESC> und beginne neu.
---> Einige Wörter lustig gehören nicht Papier in diesen Satz.
5. Wiederhole die Schritte 3 und 4, bis der Satz korrekt ist und gehe
danach zur Lektion 2.2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 2.2: WEITERE LÖSCHKOMMANDOS
** Tippe d$ , um bis zum Ende der Zeile zu löschen. **
1. Drücke <ESC> , um sicherzustellen, dass Du im Normalmodus bist.
2. Bewege den Cursor zu der mit ---> markierten Zeile unten.
3. Bewege den Cursor zum Ende der korrekten Zeile (NACH dem ersten . ).
4. Tippe d$ , um bis zum Ende der Zeile zu löschen.
---> Jemand hat das Ende der Zeile doppelt eingegeben. doppelt eingegeben.
5. Gehe weiter zur Lektion 2.3 , um zu verstehen, was hierbei passiert.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 2.3: ÜBER OPERATOREN UND BEWEGUNGSZÜGE
Viele Kommandos, die Text ändern, setzen sich aus einem Operator und einer
Bewegung zusammen. Das Format für ein Löschkommando mit dem Löschoperator d
lautet wie folgt:
d Bewegung
wobei:
d - der Löschoperator
Bewegung - worauf der Löschoperator angewandt wird (unten aufgelistet).
Eine kleine Auflistung von Bewegungen:
w - bis zum Beginn des nächsten Wortes OHNE dessen erstes Zeichen.
e - zum Ende des aktuellen Wortes MIT dessen letztem Zeichen.
$ - zum Ende der Zeile MIT dem letzen Zeichen.
Dementsprechend löscht die Eingabe von de vom Cursor an bis zum Wortende.
Bemerkung: Die Eingabe lediglich des Bewegungsteils im Normalmodus bewegt den
Cursor entsprechend.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 2.4: ANWENDUNG EINES ZÄHLERS FÜR EINEN BEWEGUNGSSCHRITT
** Die Eingabe einer Zahl vor einem Bewegungsschritt wiederholt diesen. **
1. Bewege den Cursor zum Beginn der mit ---> markierten Zeile unten.
2. Tippe 2w , um den Cursor zwei Wörter vorwärts zu bewegen.
3. Tippe 3e , um den Cursor zum Ende des dritten Wortes zu bewegen.
4. Tippe 0 (Null) , um zum Anfang der Zeile zu gelangen.
5. Wiederhole Schritte 2 und 3 mit verschiedenen Zählern.
---> Dies ist nur eine Zeile aus Wörten um sich darin herumzubewegen.
6. Gehe weiter zu Lektion 2.5.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 2.5: ANWENDUNG EINES ZÄHLERS FÜR MEHRERE LÖSCHVORGÄNGE
** Die Eingabe einer Zahl mit einem Operator wiederholt diesen mehrfach. **
Für die Kombination des Löschoperators und einem Bewegungsschritt (siehe
oben) stellt man dem Bewegungsschritt einen Zähler voran, um mehr zu löschen:
d Nummer Bewegungsschritt
1. Bewege den Cursor zum ersten Wort in GROSSBUCHSTABEN in der mit --->
markieren Zeile.
2. Tippe d2w , um die zwei Wörter in GROSSBUCHSTABEN zu löschen.
3. Wiederhole Schritte 1 und 2 mit einem anderen Zähler, um die
darauffolgenden Wörter in GROSSBUCHSTABEN mit einem einzigen Kommando
zu löschen.
---> Diese ABC DE Zeile FGHI JK LMN OP mit Wörtern ist Q RS TUV bereinigt.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 2.6: ARBEITEN AUF ZEILEN
** Tippe dd , um eine ganze Zeile zu löschen. **
Wegen der Häufigkeit, dass man ganze Zeilen löscht, kamen die Entwickler von
Vi darauf, dass es leichter wäre, einfach zwei d's einzugeben, um eine Zeile
zu löschen.
1. Bewege den Cursor zur zweiten Zeile in der unten stehenden Redewendung.
2. Tippe dd , um die Zeile zu löschen.
3. Nun bewege Dich zur vierten Zeile.
4. Tippe 2dd , um zwei Zeilen zu löschen.
---> 1) Rosen sind rot,
---> 2) Matsch ist lustig,
---> 3) Veilchen sind blau,
---> 4) Ich habe ein Auto,
---> 5) Die Uhr sagt die Zeit,
---> 6) Zucker ist süß,
---> 7) So wie Du auch.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 2.7: RÜCKGÄNGIG MACHEN (UNDO)
** Tippe u , um die letzten Kommandos rückgängig zu machen **
** oder U um eine ganze Zeile wiederherzustellen. **
1. Bewege den Cursor zu der mit ---> markierten Zeile unten
und setze ihn auf den ersten Fehler.
2. Tippe x , um das erste unerwünschte Zeichen zu löschen.
3. Nun tippe u um das soeben ausgeführte Kommando rückgängig zu machen.
4. Jetzt behebe alle Fehler auf der Zeile mit Hilfe des x Kommandos.
5. Nun tippe ein großes U , um die Zeile in ihren Ursprungszustand
wiederherzustellen.
6. Nun tippe u einige Male, um das U und die vorhergehenden Kommandos
rückgängig zu machen.
7. Nun tippe CTRL-R (halte CTRL gedrückt und drücke R) mehrere Male, um die
Kommandos wiederherzustellen (die Rückgängigmachungen rückgängig machen).
---> Beehebe die Fehller diesser Zeile und sttelle sie mitt 'undo' wieder her.
8. Dies sind sehr nützliche Kommandos.
Nun gehe weiter zur Zusammenfassung von Lektion 2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ZUSAMMENFASSUNG VON LEKTION 2
1. Um vom Cursor bis zum nächsten Wort zu löschen, tippe: dw
2. Um vom Cursor bis zum Ende einer Zeile zu löschen, tippe: d$
3. Um eine ganze Zeile zu löschen, tippe: dd
4. Um eine Bewegung zu wiederholen, stelle eine Nummer voran: 2w
5. Das Format für ein Änderungskommando ist:
Operator [Anzahl] Bewegungsschritt
wobei:
Operator - gibt an, was getan werden soll, zum Beispiel d für delete
[Anzahl] - ein optionaler Zähler, um den Bewegungsschritt zu wiederholen
Bewegungsschritt - Bewegung über den zu ändernden Text, so wie
w (Wort), $ (zum Ende der Zeile), etc.
6. Um Dich zum Anfang der Zeile zu begeben, benutze die Null: 0
7. Um vorherige Aktionen rückgängig zu machen, tippe: u (kleines u)
Um alle Änderungen auf einer Zeile rückgängig zu machen: U (großes U)
Um die Rückgängigmachungen rückgängig zu machen, tippe: CTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 3.1: ANFÜGEN (PUT)
** Tippe p , um vorher gelöschten Text nach dem Cursor anzufügen. **
1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile.
2. Tippe dd , um die Zeile zu löschen und sie in eimem Vim-Register zu
speichern.
3. Bewege den Cursor zur Zeile c), ÜBER derjenigen, wo die gelöschte Zeile
platziert werden soll.
4. Tippe p , um die Zeile unterhalb des Cursors zu platzieren.
5. Wiederhole die Schritte 2 bis 4, um alle Zeilen in die richtige
Reihenfolge zu bringen.
---> d) Kannst Du das auch?
---> b) Veilchen sind blau,
---> c) Intelligenz ist erlernbar,
---> a) Rosen sind rot,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 3.2: ERSETZEN (REPLACE)
** Tippe rx , um das Zeichen unter dem Cursor durch x zu ersetzen. **
1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile.
2. Bewege den Cursor, bis er sich auf dem ersten Fehler befindet.
3. Tippe r und anschließend das Zeichen, welches dort stehen sollte.
4. Wiederhole Schritte 2 und 3, bis die erste Zeile gleich der zweiten ist.
---> Als diese Zeite eingegoben wurde, wurden einike falsche Tasten gelippt!
---> Als diese Zeile eingegeben wurde, wurden einige falsche Tasten getippt!
5. Nun fahre fort mit Lektion 3.2.
Bemerkung: Erinnere Dich, dass Du durch Anwenden lernen solltest, nicht durch
Auswendiglernen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 3.3: ÄNDERN (CHANGE)
** Um eine Änderung bis zum Wortende durchzuführen, tippe ce . **
1. Bewege den Cursor zur ersten unten stehenden mit ---> markierten Zeile.
2. Platziere den Cursor auf das s von Wstwr.
3. Tippe ce und die Wortkorrektur ein (in diesem Fall tippe örter ).
4. Drücke <ESC> und bewege den Cursor zum nächsten zu ändernden Zeichen.
5. Wiederhole Schritte 3 und 4 bis der erste Satz gleich dem zweiten ist.
---> Einige Wstwr dieser Zlaww lasdjlaf mit dem Ändern-Operator gaaauu werden.
---> Einige Wörter dieser Zeile sollen mit dem Ändern-Operator geändert werden.
Bemerke, dass ce das Wort löscht und Dich in den Eingabemodus versetzt.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 3.4: MEHR ÄNDERUNGEN MITTELS c
** Das change-Kommando arbeitet mit denselben Bewegungen wie delete. **
1. Der change Operator arbeitet in gleicher Weise wie delete. Das Format ist:
c [Anzahl] Bewegungsschritt
2. Die Bewegungsschritte sind die gleichen , so wie w (Wort) und $
(Zeilenende).
3. Bewege Dich zur ersten unten stehenden mit ---> markierten Zeile.
4. Bewege den Cursor zum ersten Fehler.
5. Tippe c$ , gib den Rest der Zeile wie in der zweiten ein, drücke <ESC> .
---> Das Ende dieser Zeile soll an die zweite Zeile angeglichen werden.
---> Das Ende dieser Zeile soll mit dem c$ Kommando korrigiert werden.
Bemerkung: Du kannst die Rücktaste benutzen, um Tippfehler zu korrigieren.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ZUSAMMENFASSUNG VON LEKTION 3
1. Um einen vorher gelöschten Text anzufügen, tippe p . Dies fügt den
gelöschten Text NACH dem Cursor an (wenn eine ganze Zeile gelöscht wurde,
wird diese in die Zeile unter dem Cursor eingefügt).
2. Um das Zeichen unter dem Cursor zu ersetzen, tippe r und das an dieser
Stelle gewünschte Zeichen.
3. Der Änderungs- (change) Operator erlaubt, vom Cursor bis zum Ende des
Bewegungsschrittes zu ändern. Tippe ce , um eine Änderung vom Cursor bis
zum Ende des Wortes vorzunehmen; c$ bis zum Ende einer Zeile.
4. Das Format für change ist:
c [Anzahl] Bewegungsschritt
Nun fahre mit der nächsten Lektion fort.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 4.1: CURSORPOSITION UND DATEISTATUS
** Tippe CTRL-G , um Deine Dateiposition sowie den Dateistatus anzuzeigen. **
** Tippe G , um Dich zu einer Zeile in der Datei zu begeben. **
Bemerkung: Lies diese gesamte Lektion, bevor Du irgendeinen Schritt ausführst!!
1. Halte die Ctrl Taste unten und drücke g . Dies nennen wir wir CTRL-G.
Eine Statusmeldung am Fuß der Seite erscheint mit dem Dateinamen und der
Position innerhalb der Datei. Merke Dir die Zeilennummer für Schritt 3.
Bemerkung: Möglicherweise siehst Du die Cursorposition in der unteren rechten
Bildschirmecke. Dies ist Folge der 'ruler' Option (siehe :help 'ruler')
2. Drücke G , um Dich zum Ende der Datei zu begeben.
Tippe gg , um Dich zum Anfang der Datei zu begeben.
3. Gib die Nummer der Zeile ein, auf der Du vorher warst, gefolgt von G .
Dies bringt Dich zurück zu der Zeile, auf der Du gestanden hast, als Du
das erste Mal CTRL-G gedrückt hast.
4. Wenn Du Dich sicher genug fühlst, führe die Schritte 1 bis 3 aus.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 4.2: DAS SUCHEN - KOMMANDO
** Tippe / gefolgt von einem Ausdruck, um nach dem Ausdruck zu suchen. **
1. Im Normalmodus, tippe das / Zeichen. Bemerke, dass das / und der
Cursor am Fuß des Schirms erscheinen, so wie beim : Kommando.
2. Nun tippe 'Fehhler' <ENTER>. Dies ist das Wort, nach dem Du suchen willst.
3. Um nach demselben Ausdruck weiterzusuchen, tippe einfach n (für next).
Um nach demselben Ausdruck in der Gegenrichtung zu suchen, tippe N .
4. Um nach einem Ausdruck rückwärts zu suchen , benutze ? statt / .
5. Um dahin zurückzukehren, von wo Du gekommen bist, drücke CTRL-O (Halte
Ctrl unten und drücke den Buchstaben o). Wiederhole dies, um weiter
zurückzugehen. CTRL-I bringt dich vorwärts.
---> Fehler schreibt sich nicht "Fehhler"; Fehhler ist ein Fehler
Bemerkung: Wenn die Suche das Dateiende erreicht hat, wird sie am Anfang
fortgesetzt, es sei denn, die 'wrapscan' Option wurde abgeschaltet.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 4.3: PASSENDE KLAMMERN FINDEN
** Tippe % , um eine korrespondierende Klammer ),], oder } zu finden. **
1. Platziere den Cursor auf irgendeines der Zeichen (, [, oder { in der unten
stehenden Zeile, die mit ---> markiert ist.
2. Nun tippe das % Zeichen.
3. Der Cursor bewegt sich zur passenden gegenüberliegenden Klammer.
4. Tippe % , um den Cursor zur anderen passenden Klammer zu bewegen.
5. Setze den Cursor auf ein anderes (,),[,],{ oder } und probiere % aus.
---> Dies ( ist eine Testzeile ( mit [ verschiedenen ] { Klammern } darin. ))
Bemerkung: Diese Funktionalität ist sehr nützlich bei der Fehlersuche in einem
Programmtext, in dem passende Klammern fehlen!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 4.4: DAS ERSETZUNGSKOMMANDO (SUBSTITUTE)
** Tippe :s/alt/neu/g , um 'alt' durch 'neu' zu ersetzen. **
1. Bewege den Cursor zu der unten stehenden mit ---> markierten Zeile.
2. Tippe :s/diee/die <ENTER> . Bemerke, dass der Befehl nur das erste
Vorkommen von "diee" ersetzt.
3. Nun tippe :s/diee/die/g . Das Zufügen des Flags g bedeutet, eine
globale Ersetzung über die Zeile durchzuführen, was alle Vorkommen von
"diee" auf der Zeile ersetzt.
---> diee schönste Zeit, um diee Blumen anzuschauen, ist diee Frühlingszeit.
4. Um alle Vorkommen einer Zeichenkette innerhalb zweier Zeilen zu ändern,
tippe :#,#s/alt/neu/g wobei #,# die Zeilennummern des Zeilenbereiches
sind, in dem die Ersetzung durchgeführt werden soll.
Tippe :%s/alt/neu/g um alle Vorkommen in der gesamten Datei zu ändern.
Tippe :%s/alt/neu/gc um alle Vorkommen in der gesamten Datei zu finden
mit einem Fragedialog, ob ersetzt werden soll oder nicht.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ZUSAMMENFASSUNG VON LEKTION 4
1. CTRL-G zeigt die aktuelle Dateiposition sowie den Dateistatus.
G bringt Dich zum Ende der Datei.
Nummer G bringt Dich zur entsprechenden Zeilennummer.
gg bringt Dich zur ersten Zeile.
2. Die Eingabe von / plus einem Ausdruck sucht VORWÄRTS nach dem Ausdruck.
Die Eingabe von ? plus einem Ausdruck sucht RÜCKWÄRTS nach dem Ausdruck.
Tippe nach einer Suche n , um das nächste Vorkommen in der gleichen
Richtung zu finden; oder N , um in der Gegenrichtung zu suchen.
CTRL-O bringt Dich zurück zu älteren Positionen, CTRL-I zu neueren.
3. Die Eingabe von % , wenn der Cursor sich auf (,),[,],{, oder }
befindet, bringt Dich zur Gegenklammer.
4. Um das erste Vorkommen von "alt" in einer Zeile durch "neu" zu ersetzen,
tippe :s/alt/neu
Um alle Vorkommen von "alt" in der Zeile ersetzen, tippe :s/alt/neu/g
Um Ausdrücke innerhalb zweier Zeilennummern zu ersetzen, :#,#s/alt/neu/g
Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe :%s/alt/neu/g
Für eine jedmalige Bestätigung, addiere 'c' (confirm) :%s/alt/neu/gc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 5.1: AUSFÜHREN EINES EXTERNEN KOMMANDOS
** Gib :! , gefolgt von einem externen Kommando ein, um es auszuführen. **
1. Tippe das vertraute Kommando : , um den Cursor auf den Fuß des Schirms
zu setzen. Dies erlaubt Dir, ein Kommandozeilen-Kommando einzugeben.
2. Nun tippe ein ! (Ausrufezeichen). Dies ermöglicht Dir, ein beliebiges,
externes Shellkommando auszuführen.
3. Als Beispiel tippe ls nach dem ! und drücke <ENTER>. Dies zeigt
eine Auflistung Deines Verzeichnisses; genauso, als wenn Du auf der
Eingabeaufforderung wärst. Oder verwende :!dir , falls ls nicht geht.
Bemerkung: Mit dieser Methode kann jedes beliebige externe Kommando
ausgeführt werden, auch mit Argumenten.
Bemerkung: Alle : Kommandos müssen durch Eingabe von <ENTER>
abgeschlossen werden. Von jetzt an erwähnen wir dies nicht jedesmal.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 5.2: MEHR ÜBER DAS SCHREIBEN VON DATEIEN
** Um am Text durchgeführte Änderungen zu speichern, tippe :w DATEINAME. **
1. Tippe :!dir oder :!ls , um eine Auflistung Deines Verzeichnisses zu
erhalten. Du weißt nun bereits, dass Du danach <ENTER> eingeben musst.
2. Wähle einen Dateinamen, der noch nicht existiert, z.B. TEST.
3. Nun tippe: :w TEST (wobei TEST der gewählte Dateiname ist).
4. Dies speichert die ganze Datei (den Vim Tutor) unter dem Namen TEST.
Um dies zu überprüfen, tippe nochmals :!ls bzw. !dir, um Deinen
Verzeichnisinhalt zu sehen.
Bemerkung: Würdest Du Vim jetzt beenden und danach wieder mit vim TEST
starten, dann wäre diese Datei eine exakte Kopie des Tutors zu dem
Zeitpunkt, als Du ihn gespeichert hast.
5. Nun entferne die Datei durch Eingabe von (MS-DOS): :!del TEST
oder (Unix): :!rm TEST
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 5.3: AUSWÄHLEN VON TEXT ZUM SCHREIBEN
** Um einen Abschnitt der Datei zu speichern, tippe v Bewegung :w DATEI **
1. Bewege den Cursor zu dieser Zeile.
2. Tippe v und bewege den Cursor zum fünften Auflistungspunkt unten.
Bemerke, daß der Text hervorgehoben wird.
3. Drücke das Zeichen : . Am Fuß des Schirms erscheint :'<,'> .
4. Tippe w TEST , wobei TEST ein noch nicht vorhandener Dateiname ist.
Vergewissere Dich, daß Du :'<,'>w TEST siehst, bevor Du Enter drückst.
5. Vim schreibt die ausgewählten Zeilen in die Datei TEST. Benutze :!dir
oder :!ls , um sie zu sehen. Lösche sie noch nicht! Wir werden sie in
der nächsten Lektion benutzen.
Bemerkung: Drücken von v startet die Visuelle Auswahl. Du kannst den Cursor
umherbewegen, um die Auswahl größer oder kleiner zu machen. Anschließend
kann man einen Operator anwenden, um mit dem Text etwas zu tun. Zum
Beispiel löscht d den Text.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 5.4: EINLESEN UND ZUSAMMENFÜHREN VON DATEIEN
** Um den Inhalt einer Datei einzulesen, tippe :r DATEINAME **
1. Platziere den Cursor überhalb dieser Zeile.
BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 5.3
sehen. Dann bewege Dich wieder ABWÄRTS, um diese Lektion wiederzusehen.
2. Nun lies Deine Datei TEST ein indem Du das Kommando :r TEST ausführst,
wobei TEST der von Dir verwendete Dateiname ist.
Die eingelesene Datei wird unterhalb der Cursorzeile eingefügt.
3. Um zu überprüfen, dass die Datei eingelesen wurde, gehe zurück und siehe,
dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und die
eingefügte Dateiversion.
Bemerkung: Du kannst auch die Ausgabe eines externen Kommandos einlesen. Zum
Beispiel liest :r !ls die Ausgabe des Kommandos ls ein und platziert
sie unterhalb des Cursors.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ZUSAMMENFASSUNG VON LEKTION 5
1. :!Kommando führt ein externes Kommando aus.
Einige nützliche Beispiele sind
(MS-DOS) (Unix)
:!dir :!ls - zeigt eine Verzeichnisauflistung.
:!del DATEINAME :!rm DATEINAME - entfernt Datei DATEINAME.
2. :w DATEINAME speichert die aktuelle Vim-Datei unter dem Namen DATEINAME.
3. v Bewegung :w DATEINAME schreibt die Visuell ausgewählten Zeilen in
die Datei DATEINAME.
4. :r DATEINAME lädt die Datei DATEINAME und fügt sie unterhalb der
Cursorposition ein.
5. :r !dir liest die Ausgabe des Kommandos dir und fügt sie unterhalb der
Cursorposition ein.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 6.1: ZEILEN ÖFFNEN (OPEN)
** Tippe o , um eine Zeile unterhalb des Cursors zu öffnen und Dich in **
** den Einfügemodus zu begeben. **
1. Bewege den Cursor zu der ersten mit ---> markierten Zeile unten.
2. Tippe o (klein geschrieben), um eine Zeile UNTERHALB des Cursos zu öffnen
und Dich in den Einfügemodus zu begeben.
3. Nun tippe etwas Text und drücke <ESC> , um den Einfügemodus zu verlassen.
---> Mit o wird der Cursor auf der offenen Zeile im Einfügemodus platziert.
4. Um eine Zeile ÜBERHALB des Cursos aufzumachen, gib einfach ein großes O
statt einem kleinen o ein. Versuche dies auf der unten stehenden Zeile.
---> Öffne eine Zeile über dieser mit O , wenn der Cursor auf dieser Zeile ist.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 6.2: TEXT ANFÜGEN (APPEND)
** Tippe a , um Text NACH dem Cursor einzufügen. **
1. Bewege den Cursor zum Anfang der ersten Übungszeile mit ---> unten.
2. Drücke e , bis der Cursor am Ende von Zei steht.
3. Tippe ein kleines a , um Text NACH dem Cursor anzufügen.
4. Vervollständige das Wort so wie in der Zeile darunter. Drücke <ESC> ,
um den Einfügemodus zu verlassen.
5. Bewege Dich mit e zum nächsten unvollständigen Wort und wiederhole
Schritte 3 und 4.
---> Diese Zei bietet Gelegen , Text in einer Zeile anzufü.
---> Diese Zeile bietet Gelegenheit, Text in einer Zeile anzufügen.
Bemerkung: a, i und A gehen alle gleichermaßen in den Einfügemodus; der
einzige Unterschied ist, wo die Zeichen eingefügt werden.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 6.3: EINE ANDERE ART DES ERSETZENS (REPLACE)
** Tippe ein großes R , um mehr als ein Zeichen zu ersetzen. **
1. Bewege den Cursor zur ersten unten stehenden, mit ---> markierten Zeile.
Bewege den Cursor zum Anfang des ersten xxx .
2. Nun drücke R und tippe die Nummer, die darunter in der zweiten Zeile
steht, so das diese das xxx ersetzt.
3. Drücke <ESC> , um den Ersetzungsmodus zu verlassen. Bemerke, daß der Rest
der Zeile unverändert bleibt.
4. Wiederhole die Schritte, um das verbliebene xxx zu ersetzen.
---> Das Addieren von 123 zu xxx ergibt xxx.
---> Das Addieren von 123 zu 456 ergibt 579.
Bemerkung: Der Ersetzungsmodus ist wie der Einfügemodus, aber jedes eingetippte
Zeichen löscht ein vorhandenes Zeichen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 6.4: TEXT KOPIEREN UND EINFÜGEN
** Benutze den y Operator, um Text zu kopieren; p , um ihn einzufügen **
1. Gehe zu der mit ---> markierten Zeile unten, setze den Cursor hinter "a)".
2. Starte den Visuellen Modus mit v , bewege den Cursor genau vor "erste".
3. Tippe y , um den hervorgehoben Text zu kopieren.
4. Bewege den Cursor zum Ende der nächsten Zeile: j$
5. Tippe p , um den Text einzufügen und anschließend: a zweite <ESC> .
6. Benutze den Visuellen Modus, um " Eintrag." auszuwählen, kopiere mittels
y , bewege Dich zum Ende der nächsten Zeile mit j$ und füge den Text
dort mit p an.
---> a) dies ist der erste Eintrag.
b)
Bemerkung: Du kannst y auch als Operator verwenden; yw kopiert ein Wort.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 6.5: OPTIONEN SETZEN
** Setze eine Option so, dass eine Suche oder eine Ersetzung Groß- **
** und Kleinschreibung ignoriert **
1. Suche nach 'ignoriere', indem Du /ignoriere eingibst.
Wiederhole die Suche einige Male, indem Du die n - Taste drückst.
2. Setze die 'ic' (Ignore case) - Option, indem Du :set ic eingibst.
3. Nun suche wieder nach 'ignoriere', indem Du n tippst.
Bemerke, daß jetzt Ignoriere und auch IGNORIERE gefunden wird.
4. Setze die 'hlsearch' und 'incsearch' - Optionen: :set hls is
5. Wiederhole die Suche und beobachte, was passiert: /ignoriere <ENTER>
6. Um das Ignorieren von Groß/Kleinschreibung abzuschalten, tippe: :set noic
Bemerkung: Um die Hervorhebung der Treffer zu enfernen, gib ein: :nohlsearch
Bemerkung: Um die Schreibweise für eine einzige Suche zu ignorieren, benutze
\c im Suchausdruck: /ignoriere\c <ENTER>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ZUSAMMENFASSUNG VON LEKTION 6
1. Tippe o , um eine Zeile UNTER dem Cursor zu öffnen und den Einfügemodus
zu starten.
Tippe O , um eine Zeile ÜBER dem Cursor zu öffnen.
2. Tippe a , um Text NACH dem Cursor anzufügen.
Tippe A , um Text nach dem Zeilenende anzufügen.
3. Das Kommando e bringt Dich zum Ende eines Wortes.
4. Der Operator y (yank) kopiert Text, p (put) fügt ihn ein.
5. Ein großes R geht in den Ersetzungsmodus bis zum Drücken von <ESC> .
6. Die Eingabe von ":set xxx" setzt die Option "xxx". Einige Optionen sind:
'ic' 'ignorecase' Ignoriere Groß/Kleinschreibung bei einer Suche
'is' 'incsearch' Zeige Teilübereinstimmungen für einen Suchausdruck
'hls' 'hlsearch' Hebe alle passenden Ausdrücke hervor
Der Optionsname kann in der Kurz- oder der Langform angegeben werden.
7. Stelle einer Option "no" voran, um sie abzuschalten: :set noic
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 7.1 : AUFRUFEN VON HILFE
** Nutze das eingebaute Hilfesystem **
Vim besitzt ein umfassendes eingebautes Hilfesystem. Für den Anfang probiere
eins der drei folgenden Dinge aus:
- Drücke die <Hilfe> - Taste (falls Du eine besitzt)
- Drücke die <F1> Taste (falls Du eine besitzt)
- Tippe :help <ENTER>
Lies den Text im Hilfefenster, um zu verstehen wie die Hilfe funktioniert.
Tippe CTRL-W CTRL-W , um von einem Fenster zum anderen zu springen.
Tippe :q <ENTER> , um das Hilfefenster zu schließen.
Du kannst Hilfe zu praktisch jedem Thema finden, indem Du dem ":help"-
Kommando ein Argument gibst. Probiere folgendes (<ENTER> nicht vergessen):
:help w
:help c_CTRL-D
:help insert-index
:help user-manual
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 7.2: ERSTELLE EIN START-SKRIPT
** Aktiviere die eingebauten Funktionalitäten von Vim **
Vim besitzt viele Funktionalitäten, die über Vi hinausgehen, aber die meisten
von ihnen sind standardmäßig deaktiviert. Um mehr Funktionalitäten zu nutzen,
musst Du eine "vimrc" - Datei erstellen.
1. Starte das Editieren der "vimrc"-Datei, abhängig von Deinem System:
:e ~/.vimrc für Unix
:e $VIM/_vimrc für MS-Windows
2. Nun lies den Inhalt der Beispiel-"vimrc"-Datei ein:
:r $VIMRUNTIME/vimrc_example.vim
3. Speichere die Datei mit:
:w
Beim nächsten Start von Vim wird die Syntaxhervorhebung aktiviert sein.
Du kannst all Deine bevorzugten Optionen zu dieser "vimrc"-Datei zufügen.
Für mehr Informationen tippe :help vimrc-intro
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lektion 7.3: VERVOLLSTÄNDIGEN
** Kommandozeilenvervollständigung mit CTRL-D and <TAB> **
1. Stelle sicher, daß Vim nicht im vi-Kompatibilitätsmodus ist: :set nocp
2. Siehe nach, welche Dateien im Verzeichnis existieren: :!ls oder :dir
3. Tippe den Beginn eines Komandos: :e
4. Drücke CTRL-D und Vim zeigt eine Liste mit "e" beginnender Kommandos.
5. Drücke <TAB> und Vim vervollständigt den Kommandonamen zu ":edit".
6. Nun füge ein Leerzeichen und den Beginn einer existierenden Datei an:
:edit DAT
7. Drücke <TAB>. Vim vervollständigt den Namen (falls er eindeutig ist).
Bemerkung: Vervollständigung funktioniert für viele Kommandos. Versuche
einfach CTRL-D und <TAB>. Dies ist insbesondere nützlich für :help .
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ZUSAMMENFASSUNG VON LEKTION 7
1. Tippe :help oder drücke <F1> oder <Help>, um ein Hilfefenster zu öffnen.
2. Tippe :help Kommando , um Hilfe über Kommando zu erhalten.
3. Tippe CTRL-W CTRL-W , um zum anderen Fenster zu springen.
4. Tippe :q , um das Hilfefenster zu schließen.
5. Erstelle ein vimrc - Startskript zur Sicherung bevorzugter Einstellungen.
6. Drücke CTRL-D nach dem Tippen eines Kommandos : , um mögliche
Vervollständigungen zu sehen.
Drücke <TAB> für eine einzige Vervollständigung.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Damit ist der Vim Tutor beendet. Die Intention war, einen kurzen und
bündigen Überblick über den Vim Editor zu liefern; gerade genug, um relativ
leicht mit ihm umgehen zu können. Der Vim Tutor hat nicht den geringsten
Anspruch auf Vollständigkeit; Vim hat noch weitaus mehr Kommandos. Lies als
nächstes das User Manual: ":help user-manual".
Für weiteres Lesen und Lernen ist folgendes Buch empfohlen :
Vim - Vi Improved - von Steve Oualline
Verlag: New Riders
Das erste Buch, welches durchgängig Vim gewidmet ist. Besonders nützlich
für Anfänger. Viele Beispiele und Bilder sind enthalten.
Siehe http://iccf-holland.org/click5.html
Folgendes Buch ist älter und mehr über Vi als Vim, aber auch empfehlenswert:
Textbearbeitung mit dem vi-Editor - von Linda Lamb und Arnold Robbins
Verlag O'Reilly - ISBN: 3897211262
In diesem Buch kann man fast alles finden, was man mit Vi tun möchte.
Die sechste Ausgabe enthält auch Informationen über Vim.
Als aktuelle Referenz für Version 6.2 und knappe Einführung dient das
folgende Buch:
vim ge-packt von Reinhard Wobst
mitp-Verlag, ISBN 3-8266-1425-9
Trotz der kompakten Darstellung ist es durch viele nützliche Beispiele auch
für Einsteiger empfehlenswert. Probekapitel und die Beispielskripte sind
online erhältlich. Siehe http://iccf-holland.org/click5.html
Dieses Tutorial wurde geschrieben von Michael C. Pierce and Robert K. Ware,
Colorado School of Mines. Es benutzt Ideen, die Charles Smith, Colorado State
University, zur Verfügung stellte. E-mail: bware@mines.colorado.edu.
Bearbeitet für Vim von Bram Moolenaar.
Deutsche Übersetzung von Joachim Hofmann 2007. E-mail: Joachim.Hof@gmx.de
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -0,0 +1,815 @@
===============================================================================
= <20> <20><> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> V I M T u t o r - 롛<><EBA19B><EFBFBD> 1.5 =
===============================================================================
<20> Vim <20><EFBFBD><> <20><><EFBFBD><EFBFBD><E5A9AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1A1AB> <20><><EFBFBD><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><E3A9A6><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E39A9E> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E39A9E>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD>
<20><EFBFBD><E1A4A6> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><EFBFBD><E7A1A6> <20><><EFBFBD> Vim <20><><EFBFBD><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
<20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E29A9A><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E39A9E>
<20><EFBFBD> 25-30 <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A4AB> <20><><EFBFBD> <20><> <20><20><><20><> <20><><EFBFBD><EFBFBD><E2AF9C> <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E3A398> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A9A6> <20><> <20><><EFBFBD><E5A39C>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><E59AA8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嫜 (<28><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A998> <20><>
"Vimtutor" <20><><EFBFBD><EFBFBD> <20><EFBFBD> 㛞 ⤘ <20><><EFBFBD><EFBFBD><E59AA8><EFBFBD>).
<20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E39A9E> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⤞ ⫩<>
<> <20><> <20><><EFBFBD><EFBFBD><E1A9A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><E19D9C><EFBFBD> <20><>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD> <20><EFBFBD><E19F9C> <20><EFBFBD>. <20><> <20><><EFBFBD><EFBFBD><EFBFBD><E19D9C> <20><20><>
<20><><EFBFBD><E5A39C>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E1A99C>!
<20>騘, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嫜 櫠 <20><> <20><><EFBFBD><E3A1AB> Shift-Lock <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD>
<20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><E3A1AB> j <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>
<> <20><> <20><EFBFBD><E19F9E> 1.1 <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>椞.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 1.1: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E3A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><E3A1AB> h,j,k,l <20><><EFBFBD><EFBFBD> <20><><EFBFBD><E5AEA4><EFBFBD><EFBFBD>. **
^
k Hint: <20><> <20><><EFBFBD><E3A1AB> h <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
< h l > <20><> <20><><EFBFBD><E3A1AB> l <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
j <20><> <20><><EFBFBD><E3A1AB> j <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>.
v
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><20><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E99F9C><><E1A49C>.
2. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><E3A1AB> (j) <20><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
---> <20><20><EFBFBD><E2A89C> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD> <20><><EFBFBD><E6A39C> <20><EFBFBD><E19F9E>.
3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A4AB> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><E3A1AB>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD> <20><EFBFBD><E19F9E> 1.2.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ਫ਼: <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A2A2><EFBFBD> <20><><EFBFBD> <20><20><><EFBFBD> <20><><EFBFBD><EFBFBD><E3A998>, <20><><EFBFBD><EFBFBD> <ESC> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD><E2A298>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ਫ਼: <20><> <20><><EFBFBD><E3A1AB> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><> <20><> hjkl
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6AB9C>, <20><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A99C>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<09><EFBFBD><E19F9E> 1.2: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> VIM
!! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C> <20><EFBFBD><E1A7A6> <20><><EFBFBD> <20><> <20><EFBFBD><E3A398>, <20><><EFBFBD><EFBFBD><EFBFBD><20><> <20><EFBFBD><E19F9E>!!
1. <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><E3A1AB> <ESC> (<28><><EFBFBD> <20><> <20><EFBFBD> <20><EFBFBD><E59AA6><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD>).
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: :q! <ENTER>.
---> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><E2A8AE><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><><E6A7A6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E2AE9C> <20><EFBFBD>.
<20><> <20><EFBFBD><E2A29C> <20><> <20><EFBFBD><E9A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><E2A89F><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
:wq <ENTER>
3. <> <20><><20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><E3A198> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E39A9E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD>: vimtutor <ENTER>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A998>: vim tutor <ENTER>
---> 'vim' <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> vim, 'tutor' <20><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
<20><EFBFBD><E2A2A6><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A9A6><EFBFBD>.
4. <20><><><E2AE9C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E3A398> <20><><EFBFBD><><E2AE9C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59F9E>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><> <20><EFBFBD><E3A398> 1 <20><><EFBFBD> 3 <20><><EFBFBD> <20><> <20><><EFBFBD><20><><EFBFBD> <20><> <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD><E19F9E> 1.3.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 1.3: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
**  <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD><EFBFBD> x <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C> <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. **
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> --->.
2. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A99C> <20><> <20>៞, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><> <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
3. <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><E3A1AB> x <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A39E> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㨘.
4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1999C> <20><> <20><EFBFBD><E3A398> 2 <20><EFBFBD> 4 <20><EFBFBD> <20> <20><><EFBFBD><E6AB98> <20><> <20><EFBFBD> <20><EFBFBD>.
---> The ccow jumpedd ovverr thhe mooon.
5. <20><20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD><E19F9E> 1.4.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2AE9C> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E39A9E>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><E5A49C> <20><> <20><> <20><>㩞.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 1.4: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
**  <20><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD><EFBFBD> i <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A2A2><EFBFBD> <20><><EFBFBD><E5A39C>. **
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> --->.
2. <20><><EFBFBD> <20><> <20><EFBFBD><E1A49C> <20><><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><> <20><> <20><><EFBFBD> <20><><EFBFBD><E7AB9C>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><E5A39C>.
3. <20><><EFBFBD><EFBFBD> <20><> i <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5AB9E><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
4. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A49C> <20><20><EFBFBD> <20><><EFBFBD><EFBFBD> <ESC> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2AF9C> <20><><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1999C> <20><> <20><EFBFBD><E3A398> 2 <20><EFBFBD> 4 <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A99C>
<20><><EFBFBD> <20><><EFBFBD><E6AB98>.
---> There is text misng this .
---> There is some text missing from this line.
5. <> <20><EFBFBD><><E1A49C><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E5A29E>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1. <20> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A4AB> <20><20><> <20><><EFBFBD><E3A1AB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> hjkl.
h (<28><><EFBFBD><EFBFBD><EFBFBD>⨘) j (<28><><EFBFBD><EFBFBD>) k (<28><><EFBFBD><EFBFBD>) l (<28><><EFBFBD><EFBFBD><EFBFBD>)
2. <20><><EFBFBD> <20><> <20><><EFBFBD><20><><EFBFBD><EFBFBD> Vim (<28><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> %) <20><><EFBFBD>: vim <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <ENTER>
3. <20><><EFBFBD> <20><> <20><><EFBFBD><20><><EFBFBD>: <ESC> :q! <ENTER> <20><><EFBFBD> <20><><EFBFBD><E6A8A8><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<20> <20><><EFBFBD>: <ESC> :wq <ENTER> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E3A19C><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
4. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD><EFBFBD>: x
5. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E19A9C> <20><><EFBFBD><E5A39C> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD>:
i <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><E5A39C> <ESC>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><E9A4AB> <ESC> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20> <20><>
<20><><EFBFBD><EFBFBD><EFBFBD><E9A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A39E> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><EFBFBD><E19F9E> 2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 2.1: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD> dw <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C> <20><EFBFBD> <20><> <20><EFBFBD> <20><20><EFBFBD>. **
1. <20><><EFBFBD><EFBFBD> <ESC> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嫜 櫠 <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD>.
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> --->.
3. <20><><EFBFBD><EFBFBD><EFBFBD><E5A49C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
4. <20><><EFBFBD> dw <20><><EFBFBD> <20><> <20><EFBFBD><E1A49C> <20><><EFBFBD> <20><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><> <20><><EFBFBD><E1A3A3><EFBFBD> dw <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嫜. <20><> <20><><EFBFBD><E1AF98> <20><20><EFBFBD>, <20><><EFBFBD><EFBFBD> <ESC> <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>.
---> There are a some words fun that don't belong paper in this sentence.
5. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1999C> <20><> <20><EFBFBD><E3A398> 3 <20><><EFBFBD> 4 <20><EFBFBD> <20> <20><><EFBFBD><E6AB98> <20><> <20><EFBFBD> <20><EFBFBD> <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><E5A49C> <20><><EFBFBD> <20><EFBFBD><E19F9E> 2.2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 2.2: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> d$ <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C> <20><EFBFBD> <20><> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. **
1. <20><><EFBFBD><EFBFBD> <ESC> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嫜 櫠 <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD>.
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> --->.
3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><EFBFBD><E0A9AB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>髞 . ).
4. <20><><EFBFBD><EFBFBD> d$ <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C> <20><EFBFBD> <20><> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
---> Somebody typed the end of this line twice. end of this line twice.
5. <20><><EFBFBD><EFBFBD><EFBFBD><E5A49C> <20><><EFBFBD> <20><EFBFBD><E19F9E> 2.3 <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1999C> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 2.3: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> d <20><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>:
[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C> <09> d [<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C>
<>:
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=1).
d - <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C> - <20><><EFBFBD><EFBFBD> <20><> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD>).
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C>:
w - <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><> <20><EFBFBD> <20><><EFBFBD> <20><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A4A6><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><E1A9AB><EFBFBD>.
e - <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><> <20><EFBFBD> <20><><EFBFBD> <20><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><E1A9AB><EFBFBD>.
$ - <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><E7A7A6> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2AB9C><EFBFBD>, <20><><EFBFBD><EFBFBD><E9A4AB> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C>
<20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E1A7A6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A99C>
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59D9C><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 2.4: <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> dd <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. **
<20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E6AB9E><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E6A1A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD> Vim <20><><EFBFBD><EFBFBD><EFBFBD><E1A9A0><EFBFBD><20><><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6AB9C> <20><> <20><><EFBFBD><E1AD9C> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> d <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E7AB9C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>.
2. <20><><EFBFBD> dd <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
3. <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><EFBFBD><E2AB98><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
4. <20><><EFBFBD> 2dd (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C>) <20><><EFBFBD> <20><>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
1) Roses are red,
2) Mud is fun,
3) Violets are blue,
4) I have a car,
5) Clocks tell time,
6) Sugar is sweet
7) And so are you.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 2.5: <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD><EFBFBD> u <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
U <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A99C><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. **
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> ---> <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><20><EFBFBD>.
2. <20><><EFBFBD><EFBFBD> x <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C> <20><><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A39E> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㨘.
3. <20><20><><EFBFBD><EFBFBD> u <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
4. <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> <20><20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A4AB> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x.
5. <20><20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> U <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2AF9C> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD>.
6. <20><20><><EFBFBD><EFBFBD> u <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C> <20><><EFBFBD> U <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A39C><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
7. <20><20><><EFBFBD><EFBFBD> CTRL-R (<28><><EFBFBD><EFBFBD><EFBFBD><E9A4AB> <20><><EFBFBD><EFBFBD><EFBFBD><20><> <20><><EFBFBD><E3A1AB> CTRL <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><> R)
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A89C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><E5A89C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C>).
---> Fiix the errors oon thhis line and reeplace them witth undo.
8. <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><E3A9A0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><20><><EFBFBD><EFBFBD><EFBFBD><E5A49C> <20><><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><E5A29E> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E3A398><EFBFBD> 2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><> <20><EFBFBD> <20><EFBFBD> <20><><EFBFBD>: dw
2. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>: d$
3. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C> <20><><EFBFBD><E6A1A2><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>: dd
4. <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><EFBFBD>:
[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C>
<>:
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><> <20><EFBFBD>, <20><><EFBFBD><EFBFBD> <20> d <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C> - <20><><EFBFBD><EFBFBD> <20><> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> w (<28>⥞),
$ (<28><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20><><EFBFBD>.
5. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A39C><EFBFBD> <20><><EFBFBD><E2A89A><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>: u (<28><><EFBFBD><EFBFBD> u)
<20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>: U (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> U)
<20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C>, <20><><EFBFBD><EFBFBD>: CTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<09><EFBFBD><E19F9E> 3.1: <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD><EFBFBD> p <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. **
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>.
2. <20><><EFBFBD><EFBFBD> dd <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A99C> <20><>
<20><><EFBFBD><EFBFBD><EFBFBD><E0A8A0> <20><><20><><EFBFBD> Vim.
3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD> <20><> <20>
<20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
4.  <20><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD>, <20><><EFBFBD><EFBFBD> p <20><><EFBFBD> <20><> <20><EFBFBD><E1A29C> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
5. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1999C> <20><> <20><EFBFBD><E3A398> 2 <20><><EFBFBD> 4 <20><><EFBFBD> <20><> <20><EFBFBD><E1A29C><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
<20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
d) Can you learn too?
b) Violets are blue,
c) Intelligence is learned,
a) Roses are red,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 3.2: <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD><EFBFBD> r <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E1A59C> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD>
<20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. **
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> --->.
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><> <20><> <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><20><EFBFBD>.
3. <20><><EFBFBD><EFBFBD> r <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD>.
4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1999C> <20><> <20><EFBFBD><E3A398> 2 <20><><EFBFBD> 3 <20><EFBFBD> <20><> <20><EFBFBD> <20><EFBFBD> <20> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
---> Whan this lime was tuoed in, someone presswd some wrojg keys!
---> When this line was typed in, someone pressed some wrong keys!
5. <20><20><><EFBFBD><EFBFBD><EFBFBD><E5A49C> <20><><EFBFBD> <20><EFBFBD><E19F9E> 3.2.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><> <20><><EFBFBD><EFBFBD><20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><E5A49C> <20><> <20><> <20><>㩞, <20><><EFBFBD><20><>
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A49C><EFBFBD>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 3.3: <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E1A59C> <20><><20><20><> <20>⥞, <20><><EFBFBD><EFBFBD> cw . **
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> --->.
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> u <20><><EFBFBD> <20><EFBFBD> lubw.
3. <20><><EFBFBD><EFBFBD> cw <20><><EFBFBD> <20><> <20><EFBFBD> <20>⥞ (<28><><EFBFBD><EFBFBD> <20><><EFBFBD>姫ਫ਼ <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> 'ine'.)
4. <20><><EFBFBD><EFBFBD> <ESC> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E5A49C> <20><><EFBFBD> <20><><EFBFBD><E6A39C> <20><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
5. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1999C> <20><> <20><EFBFBD><E3A398> 3 <20><><EFBFBD> 4 <20><EFBFBD><E2AEA8><> <20> <20><><20><><EFBFBD><E6AB98> <20><> <20><EFBFBD>
<> <20><> <20><> <20><><EFBFBD><E7AB9C>.
---> This lubw has a few wptfd that mrrf changing usf the change command.
---> This line has a few words that need changing using the change command.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20> cw 殠 <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> <20>⥞, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 3.4: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> c
** <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. **
1. <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><> <20><><EFBFBD><> <20><><20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD>:
[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] c <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C> <20> c [<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C>
2. <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C> <20><EFBFBD> <20><20><><>, <20><><EFBFBD><EFBFBD> w (<28>⥞), $ (<28><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20><><EFBFBD>.
3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> --->.
4. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><20><EFBFBD>.
5. <20><><EFBFBD> c$ <20><><EFBFBD> <20><> <20><EFBFBD><E1A49C> <20><> <20><><EFBFBD><E6A2A6><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><> <20><> <20><> <20><><EFBFBD><E7AB9C>
<20><><EFBFBD> <20><><EFBFBD><EFBFBD> <ESC>.
---> The end of this line needs some help to make it like the second.
---> The end of this line needs to be corrected using the c$ command.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A99C> <20><><EFBFBD><E5A39C> <20><><EFBFBD> <20><EFBFBD><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> p .
<20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><E5A39C> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1ADAB><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
2. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> r
<20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
3. <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E1A59C> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C>
<20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C>. <20>.<2E>. <20><><EFBFBD> cw <20><><EFBFBD> <20><>
<20><><EFBFBD><EFBFBD><E1A59C> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><> <20><EFBFBD> <20><><EFBFBD> <20><EFBFBD>, c$ <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E1A59C>
<20><EFBFBD> <20><> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
4. <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD>:
[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] c <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C> <20> c [<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C>
<EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><E6A39C> <20><EFBFBD><E19F9E>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 4.1: <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD><EFBFBD> CTRL-g <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD>.
<20><><EFBFBD><EFBFBD> SHIFT-G <20><><EFBFBD> <20><> <20><20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. **
<20><><EFBFBD><EFBFBD><EFBFBD>ਫ਼: <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E6A1A2><EFBFBD> <20><> <20><EFBFBD><E19F9E> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C> <20><EFBFBD><E1A7A6> <20><><EFBFBD> <20><> <20><EFBFBD><E3A398>!!
1. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><> <20><><EFBFBD><E3A1AB> Ctrl <20><><EFBFBD> <20><><EFBFBD><EFBFBD> g . <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD><EFBFBD>
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><><E6A4A6> <20><><EFBFBD><EFBFBD><20><><EFBFBD> <20><>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20>㣘 3.
2. <20><><EFBFBD><EFBFBD> shift-G <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>妬.
3. <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E3A998><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> shift-G. <20><><EFBFBD><EFBFBD> <20><>
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E3A998><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E3A99C> <20><><EFBFBD> <20><><20><><EFBFBD><EFBFBD> Ctrl-g.
(<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59DA6><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>椞).
4. <20><> <20><><EFBFBD><EFBFBD><E99F9C> <20><EFBFBD><E59AA6><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E3A398> 1 <20><><EFBFBD> 3.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<09><EFBFBD><E19F9E> 4.2: <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A39C> <20><><EFBFBD> <20><> <20><><20><><EFBFBD> <20><EFBFBD><E1AEA4><EFBFBD>. **
1. <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㨘 / . <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
<20> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59DA6><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : .
2. <20><20><><EFBFBD> 'errroor' <ENTER>. <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20> <20><20><><EFBFBD> <20><EFBFBD><E2A29C> <20><> <20><EFBFBD><E1A59C>.
3. <20><><EFBFBD> <20><> <20><EFBFBD><E1A59C> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><> <20><>ᩞ, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> n .
<20><><EFBFBD> <20><> <20><EFBFBD><E1A59C> <20><><EFBFBD><> <20><><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E59F9C> <20><><EFBFBD><EFBFBD><EFBFBD><E79FAC><EFBFBD>, <20><><EFBFBD><EFBFBD> Shift-N .
4. <20><> <20><EFBFBD><E2A29C> <20><> <20><EFBFBD><E1A59C> <20><><EFBFBD> <20><><EFBFBD> <20><><20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ? <20><><EFBFBD><EFBFBD> <20><><EFBFBD> / .
---> <> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E3AB9E> <20><><EFBFBD> <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>.
"errroor" is not the way to spell error; errroor is an error.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 4.3: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD><EFBFBD> % <20><><EFBFBD> <20><> <20><><EFBFBD><20><><EFBFBD> <20><><EFBFBD><EFBFBD><E5A9AB><EFBFBD><EFBFBD> ), ], <20> } . **
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E1A7A6> (, [, <20> { <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> --->.
2. <20><20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㨘 % .
3. <20> <20><><EFBFBD><EFBFBD><20><> <20><><EFBFBD> <20><> <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E5A9AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E2A49F><EFBFBD> <20> <20><><EFBFBD>碞.
4. <20><><EFBFBD><EFBFBD> % <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><20><><EFBFBD>
(<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
---> This ( is a test line with ('s, ['s ] and {'s } in it. ))
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><E3A9A0> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A3A3><EFBFBD><EFBFBD>
<20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C>!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 4.4: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD> :s/old/new/g <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E1A59C> <20><> 'new' <20><> <20><> 'old'. **
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> --->.
2. <20><><EFBFBD> :s/thee/the <ENTER> . <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>
<20><><EFBFBD> <20><><20><><EFBFBD><EFBFBD><E1A4A0> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
3. <20><20><><EFBFBD> :s/thee/the/g <20><><EFBFBD><EFBFBD><EFBFBD><E9A4AB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A99C> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
---> thee best time to see thee flowers is in thee spring.
4. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E1A59C> <20><20><><EFBFBD><EFBFBD><E1A4A0> <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<20><><EFBFBD> :#,#s/old/new/g 槦<> #,# <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<20><><EFBFBD> :%s/old/new/g <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E1A59C> <20><20><><EFBFBD><EFBFBD><E1A4A0> <20><><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1. <20><> Ctrl-g <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD>.
<20><> Shift-G <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>妬. 뤘<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A39C><EFBFBD> <20><><EFBFBD> Shift-G <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
2. <20><><EFBFBD><E1ADA6><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A39C> <20><><EFBFBD> <20><><EFBFBD> <20><><20><EFBFBD><E1AEA4> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
<20><> <20><>ᩞ. <20><><EFBFBD><E1ADA6><EFBFBD><EFBFBD> ? <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A39C> <20><><EFBFBD> <20><><EFBFBD> <20><><20><EFBFBD><E1AEA4> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
<20><><EFBFBD> <20><> <20><>ᩞ. <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E3AB9E> <20><><EFBFBD><EFBFBD> n <20><><EFBFBD> <20><> <20><><EFBFBD><20><><EFBFBD>
<20><><EFBFBD><E6A39C> <20><><EFBFBD><EFBFBD><E1A4A0> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><> <20><><EFBFBD><EFBFBD><EFBFBD><E79FAC><EFBFBD> <20> Shift-N <20><><EFBFBD> <20><> <20><EFBFBD><E1A59C>
<20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E59F9C> <20><><EFBFBD><EFBFBD><EFBFBD><E79FAC><EFBFBD>.
3. <20><><EFBFBD><EFBFBD><E9A4AB> % 橦 <20> <20><><EFBFBD><EFBFBD><20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> (,),[,],{, <20> } <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><> <20><><EFBFBD><EFBFBD><E5A9AB><EFBFBD><EFBFBD> <20><><20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
4. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><> new <20><><EFBFBD> <20><><EFBFBD> old <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> :s/old/new
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><> new <20><><EFBFBD><EFBFBD> <20><><EFBFBD> 'old' <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> :s/old/new/g
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD><E1A99C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> # <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> :#,#s/old/new/g
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> :%s/old/new/g
<20><><EFBFBD> <20><><EFBFBD><E9AB9E> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⤘ 'c' "%s/old/new/gc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 5.1: <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD> :! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A39C> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E0AB9C><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C>. **
1. <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <20><><EFBFBD> <20><> <20><EFBFBD><E2A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD>
<20><><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E9A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
2. <20><20><><EFBFBD><EFBFBD> <20><> ! (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>). <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A7A6> <20><><EFBFBD><E0AB9C><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
3. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E19B9C><EFBFBD><EFBFBD> <20><><EFBFBD> ls <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> ! <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <ENTER>. <20><><EFBFBD><EFBFBD> <20><>
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><><E3A998><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> :!dir <20><> <20><> ls <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>眠.
---> <20><><EFBFBD><EFBFBD><EFBFBD>ਫ਼: <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A7A6> <20><><EFBFBD><E0AB9C><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>槦.
---> <20><><EFBFBD><EFBFBD><EFBFBD>ਫ਼: <> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59DA6><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E9A4AB> <20><> <ENTER>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 5.2: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD> <20><> <20><EFBFBD><E9A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD><E1A498> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> :w <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. **
1. <20><><EFBFBD> :!dir <20> :!ls <20><><EFBFBD> <20><> <20><EFBFBD><E1A89C> <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>.
<20><EFBFBD><E2A89C><20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E3A99C> <ENTER> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>.
2. <20><><EFBFBD><EFBFBD><EFBFBD> ⤘ 椦<><E6A4A6> <20><><EFBFBD><EFBFBD><20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E1A8AE> <20><>棘, <20><><EFBFBD><EFBFBD> <20><> TEST.
3. <20><20><><EFBFBD>: :w TEST (槦<> TEST <20><EFBFBD> <20><><><E6A4A6> <20><><EFBFBD><EFBFBD><20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E2A598>).
4. <20><><EFBFBD><EFBFBD> <20><EFBFBD><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (vim Tutor) <20><> <20><><><E6A4A6> TEST. <20><><EFBFBD> <20><> <20><>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A99C>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD> :!dir <20><><EFBFBD> <20><> <20><><20><><EFBFBD> <20><><EFBFBD><EFBFBD><E1A2A6> <20><><EFBFBD>.
---> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> <20><><EFBFBD><EFBFBD><E5A498> <20><><EFBFBD> <20><><EFBFBD> Vim <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E5A498> <20><><EFBFBD><EFBFBD> <20><> <20><><><E6A4A6>
<20><><EFBFBD><EFBFBD>妬 TEST, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E59AA8><EFBFBD> <20><><EFBFBD> tutor 櫘<> <20><> <20><EFBFBD><E9A998>.
5. <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1ADA6><EFBFBD><EFBFBD> (MS-DOS): :!del TEST
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 5.3: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD> <20><> <20><EFBFBD><E9A99C> <20><><20><><EFBFBD> <20><><EFBFBD><EFBFBD>妬, <20><><EFBFBD> :#,# w <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> **
1. ꢢ<> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> :!dir <20> :!ls <20><><EFBFBD> <20><> <20><EFBFBD><E1A89C> <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><E1A2A6> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><E1A2A2><EFBFBD><><E6A4A6> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><> TEST.
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
Ctrl-g <20><><EFBFBD> <20><> <20><><EFBFBD><20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
3. <20><20><><EFBFBD><EFBFBD><EFBFBD><E5A49C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> Ctrl-g <20><><EFBFBD><EFBFBD>.
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
4. <20><><EFBFBD> <20><> <20><EFBFBD><E9A99C> <20><><EFBFBD><EFBFBD><20><><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> :#,# w TEST
<> #,# <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A998> (<28><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>) <20><><EFBFBD> TEST <20><>
<><E6A4A6> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD>.
5. <20><><EFBFBD><EFBFBD>, <20><>嫜 櫠 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> :!dir <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AF9C>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 5.4: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E19A9C> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A39C> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>妬, <20><><EFBFBD> :r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> **
1. <20><><EFBFBD> :!dir <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嫜 櫠 <20><> TEST <20><><EFBFBD><E1A8AE> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>.
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C> <20><> <20>㣘 3 <20><> <20><><20><> <20><EFBFBD><E19F9E> 5.3.
<20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E19F9E> <20><><EFBFBD><EFBFBD>.
3. <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> TEST <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A4AB> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> :r TEST
<> TEST <20><EFBFBD> <20><><><E6A4A6> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>妬.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A4AB> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E5A9A1><EFBFBD><EFBFBD>
<20> <20><><EFBFBD><EFBFBD>☪.
4. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7A99C><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E39F9E>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><E1A8AE><EFBFBD> <20><20><><EFBFBD> <20><><EFBFBD><EFBFBD><E59AA8><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E3A398><EFBFBD> 5.3, <20><>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><E2A19B><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>妬.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1. :!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E0AB9C><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E3A9A0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59AA3><EFBFBD> <20><EFBFBD> (MS-DOS):
:!dir - <20><><EFBFBD><EFBFBD><E1A4A0> <20><EFBFBD><E5A9AB> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
:!del <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
2. :w <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> Vim <20><><EFBFBD> <20><EFBFBD> <20><><><E6A4A6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
3. :#,#w <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> # <20><EFBFBD> # <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
4. :r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E5A9A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A2A2> <20>
<20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<09><EFBFBD><E19F9E> 6.1: <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD><EFBFBD> o <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E5A59C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>
<20><><EFBFBD><EFBFBD><EFBFBD><20><> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. **
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> --->.
2. <20><><EFBFBD><EFBFBD> o (<28><><EFBFBD><EFBFBD>) <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E5A59C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>
<20><><EFBFBD><EFBFBD><EFBFBD><20><> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
3. <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> ---> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <ESC> <20><><EFBFBD> <20><>
<20><><EFBFBD><20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
---> After typing o the cursor is placed on the open line in Insert mode.
4. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E5A59C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
O, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD> o. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E9A4AB> Shift-O 橦 <20> <20><><EFBFBD><EFBFBD><20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 6.2: <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD><EFBFBD> a <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E19A9C> <20><><EFBFBD><E5A39C> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. **
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> ---> <20><><EFBFBD><EFBFBD><E9A4AB> $ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD>.
2. <20><><EFBFBD><EFBFBD> ⤘ a (<28><><EFBFBD><EFBFBD>) <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C> <20><><EFBFBD><E5A39C> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. (<28><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> A <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD>
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ਫ਼: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E1AB9E> <20><><EFBFBD> i , <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㨘, <20><>
<20><><EFBFBD><E5A39C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <ESC>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><EFBFBD>, x, <20><20><><EFBFBD>
<20><20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C> <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><20><><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20> <20><><EFBFBD><EFBFBD><EFBFBD><20><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD> <20><> <20><20><><EFBFBD> <20><><EFBFBD><EFBFBD><E19A9C><EFBFBD> <20><> <20><><EFBFBD><E5A39C>.
---> This line will allow you to practice
---> This line will allow you to practice appending text to the end of a line.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 6.3: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> R <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E1A59C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6AB9C><EFBFBD><EFBFBD> <20><><EFBFBD><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. **
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> --->.
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD> <20><> <20><><EFBFBD><E7AB9C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><> ---> (<28> <20>⥞ 'last').
3. <20><><EFBFBD><EFBFBD> <20>騘 R <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><E6A2A6><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><E1ADA6><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E5A39C><> <20><> <20><EFBFBD><E1A49C> <20><><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><>
<20><> <20><> <20><><EFBFBD><E7AB9C>.
---> 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. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 櫠 櫘<> <20><><EFBFBD>᫜ <ESC> <20><><EFBFBD> <20><> <20><><EFBFBD>嫜, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A7A6>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E5A39C>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><EFBFBD><E19F9E> 6.4: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E3AB9E> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> **
1. <20><EFBFBD> <20><><EFBFBD> 'ignore' <20><><EFBFBD><EFBFBD><E19AA6><EFBFBD><EFBFBD>:
/ignore
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E9A4AB> <20><> <20><><EFBFBD><E3A1AB> n.
2. <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 'ic' (Ignore case) <20><><EFBFBD><E1ADA6><EFBFBD><EFBFBD>:
:set ic
3. <20><EFBFBD> <20><20><><EFBFBD><EFBFBD> <20><><EFBFBD> 'ignore' <20><><EFBFBD><EFBFBD><E9A4AB>: n
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E3AB9E> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E9A4AB> <20><> <20><><EFBFBD><E3A1AB> n
4. <20><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 'hlsearch' <20><><EFBFBD> 'incsearch':
:set hls is
5. <20><><EFBFBD><EFBFBD><E19A9C> <20><20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E3AB9E><EFBFBD>, <20><><EFBFBD> <20><><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/ignore
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 6 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1. <20><><EFBFBD><EFBFBD><E9A4AB> o <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E1A9AB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
2. <20><><EFBFBD><EFBFBD> a <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E19A9C> <20><><EFBFBD><E5A39C> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD>
<20> <20><><EFBFBD><EFBFBD>☪. <20><><EFBFBD><EFBFBD><E9A4AB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> A <20><><EFBFBD><EFBFBD><E6A398> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E5A39C> <20><><EFBFBD> <20><EFBFBD>
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
3. <20><><EFBFBD><EFBFBD><E9A4AB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> R <20><><EFBFBD><EFBFBD><E2A8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A9AB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1A9AB><EFBFBD><EFBFBD> <20><EFBFBD> <20><>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <ESC> <20><><EFBFBD> <20><> <20><><EFBFBD><E2A29F>.
4. <20><><EFBFBD><E1ADA6><EFBFBD><EFBFBD> ":set xxx" <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "xxx".
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 7: ON-LINE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> on-line <20><EFBFBD><E7A9AB><EFBFBD> <20><><EFBFBD><E39F9C><EFBFBD> **
<20> Vim ⮜<><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> on-line <20><EFBFBD><E7A9AB><EFBFBD> <20><><EFBFBD><E39F9C><EFBFBD>. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E1A7A6> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>:
- <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><E3A1AB> <HELP> (<28><><><E2AE9C> <20><EFBFBD><E1A7A6>)
- <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><E3A1AB> <F1> (<28><><><E2AE9C> <20><EFBFBD><E1A7A6>)
- <20><><EFBFBD> :help <ENTER>
<20><><EFBFBD> :q <ENTER> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E5A99C> <20><> <20><><EFBFBD><EFBFBD><E19FAC> <20><><EFBFBD> <20><><EFBFBD><E39F9C><EFBFBD>.
<20><><EFBFBD><EFBFBD><EFBFBD><20><> <20><><EFBFBD><20><><EFBFBD><E39F9C> <20><><EFBFBD><EFBFBD> <20><> <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A39C>, <20><EFBFBD><E5A4A6><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E1A39C><EFBFBD>
<20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ":help". <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><20><> <20><><EFBFBD>᫜ <ENTER>):
:help w
:help c_<T
:help insert-index
:help user-manual
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 8: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> SCRIPT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> Vim **
<20> Vim ⮜<> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6AB9C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>' <20>,<2C><> <20> Vi, <20><><EFBFBD><EFBFBD> <20><>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6AB9C> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⤘. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E5A99C> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6AB9C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><E1A59C><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "vimrc".
1. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A4A6><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "vimrc", <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><EFBFBD><E7A9AB><EFBFBD> <20><><EFBFBD>:
:edit ~/.vimrc <20><><EFBFBD> Unix
:edit $VIM/_vimrc <20><><EFBFBD> MS-Windows
2. <20><20><><EFBFBD><EFBFBD><E19A9C> <20><> <20><><EFBFBD><E5A39C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59AA3><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "vimrc":
:read $VIMRUNTIME/vimrc_example.vim
3. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>:
:write
<20><><EFBFBD> <20><><EFBFBD><E6A39C> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A99C> <20><><EFBFBD> Vim <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0ABA0><EFBFBD>
<20><EFBFBD><E7A4AB><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A99C><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A39C><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>' <20><><EFBFBD><EFBFBD>
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "vimrc".
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A49C><EFBFBD> <20><> Vim Tutor. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><> <20><> <20><EFBFBD> <20><><EFBFBD> <20><EFBFBD><E7A4AB><EFBFBD>
<20><><EFBFBD><EFBFBD><E5A29E> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> Vim, <20><><EFBFBD><EFBFBD><EFBFBD><E1AEA0><EFBFBD><EFBFBD> <20>橞 驫<> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A99C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E7A1A6>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> Vim ⮜<> <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>:
":help user-manual".
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E19998><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>⫞, <20><><EFBFBD><EFBFBD><EFBFBD><E3A49C><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
Vim - Vi Improved - by Steve Oualline
Publisher: New Riders
<09><> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> Vim.
<09><><EFBFBD><EFBFBD><EFBFBD><E5AB9C> <20><><EFBFBD><E3A9A0> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><E1A8A0><EFBFBD>.
<09><><EFBFBD><E1A8AE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59AA3><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>.
<09><><20><><EFBFBD> http://iccf-holland.org/click5.html
<20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E6AB9C> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6AB9C> <20><><EFBFBD> <20><><EFBFBD> Vi <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> Vim,
<20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A39C>:
Learning the Vi Editor - by Linda Lamb
Publisher: O'Reilly & Associates Inc.
<09><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><EFBFBD><E19F9C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD> <20><><EFBFBD> <20><EFBFBD><E2A29C>
<09><> <20><EFBFBD><E1A49C> <20><> <20><><EFBFBD> Vi.
<09><><><E2A19B><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD> <20><><EFBFBD> Vim.
<20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E39A9E> <20><><EFBFBD><E1ADAB><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> Michael C. Pierce <20><><EFBFBD> Robert K. Ware,
Colorado School of Mines <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A4AB> <20><><20><><EFBFBD> <20><><EFBFBD> Charles Smith,
Colorado State University. E-mail: bware@mines.colorado.edu.
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> Vim <20><><EFBFBD> <20><><EFBFBD> Bram Moolenaar.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

972
runtime/tutor/tutor.hr Normal file
View File

@ -0,0 +1,972 @@
===============================================================================
= D o b r o d o <20> l i u VIM p r i r u <20> n i k - Verzija 1.7 =
===============================================================================
Vim je vrlo mo<6D>an editor koji ima mnogo naredbi, previ<76>e da bi ih
se svih ovdje spomenulo. Namjena priru<72>nika je objasniti dovoljno
naredbi kako bi po<70>etnici znatno lak<61>e koristili ovaj svestran editor.
Pribli<6C>no vrijeme potrebno za uspje<6A>an zavr<76>etak priru<72>nika je oko
30 minuta a ovisi o tome koliko <20>e te vremena odvojiti za vje<6A>banje.
UPOZORENJE:
Naredbe u ovom priru<72>niku <20>e promijeniti ovaj tekst.
Napravite kopiju ove datoteke kako bi ste na istoj vje<6A>bali
(ako ste pokrenuli "vimtutor" ovo je ve<76> kopija).
Vrlo je va<76>no primijetiti da je ovaj priru<72>nik namijenjen za vje<6A>banje.
Preciznije, morate izvr<76>iti naredbe u Vim-u kako bi ste iste nau<61>ili
pravilno koristiti. Ako samo <20>itate tekst, zaboraviti <20>e te naredbe!
Ako je CapsLock uklju<6A>en ISKLJU<4A>ITE ga. Pritiskajte tipku j kako
bi pomakli kursor sve dok Lekcija 1.1 ne ispuni ekran.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 1.1: POMICANJE KURSORA
** Za pomicanje kursora, pritisnite h,j,k,l tipke kako je prikazano **
^
k Savjet: h tipka je lijevo i pomi<6D>e kursor lijevo.
< h l > l tipka je desno i pomi<6D>e kursor desno.
j j izgleda kao strelica usmjerena dolje.
v
1. Pomi<6D>ite kursor po ekranu dok se ne naviknete na kori<72>tenje.
2. Dr<44>ite tipku (j) pritisnutom.
Sada znate kako do<64>i do sljede<64>e lekcije.
3. Koriste<74>i tipku j prije<6A>ite na sljede<64>u lekciju 1.2.
NAPOMENA: Ako niste sigurni <20>to ste zapravo pritisnuli uvijek koristite
tipku <ESC> kako bi pre<72>li u Normal mod i onda poku<6B>ajte ponovno.
NAPOMENA: Kursorske tipke rade isto. Kori<72>tenje hjkl tipaka je znatno
br<62>e, nakon <20>to se jednom naviknete na njihovo kori<72>tenje. Stvarno!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 1.2: IZLAZ IZ VIM-a
!! UPOZORENJE: Prije izvo<76>enja bilo kojeg koraka,
pro<72>itajte cijelu lekciju!!
1. Pritisnite <ESC> tipku (Vim je sada u Normal modu).
2. Otipkajte: :q! <ENTER>.
Izlaz iz editora, GUBE se sve napravljene promjene.
3. Kada se pojavi ljuska, utipkajte naredbu koja je pokrenula
ovaj priru<72>nik: vimtutor <ENTER>
4. Ako ste upamtili ove korake, izvr<76>ite ih redom od 1 do 3
kako bi ponovno pokrenuli editor.
NAPOMENA: :q! <ENTER> poni<6E>tava sve promjene koje ste napravili.
U sljede<64>im lekcijama nau<61>it <20>e te kako promjene sa<73>uvati.
5. Pomaknite kursor na Lekciju 1.3.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 1.3: PROMJENA TEKSTA - BRISANJE
** Pritisnite x za brisanje znaka pod kursorom. **
1. Pomaknite kursor na liniju ozna<6E>enu s --->.
2. Kako bi ste ispravili pogre<72>ke, pomi<6D>ite kursor dok se
ne bude nalazio na slovu kojeg trebate izbrisati.
3. Pritisnite tipku x kako bi uklonili ne<6E>eljeno slovo.
4. Ponovite korake od 2 do 4 dok ne ispravite sve pogre<72>ke.
---> KKKravaa jee pressko<6B>ila mmjeseccc.
5. Nakon <20>to ispravite liniju, prije<6A>ite na lekciju 1.4.
NAPOMENA: Koriste<74>i ovaj priru<72>nik ne poku<6B>avajte pamtiti
ve<76> u<>ite primjenom.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE
** Pritisnite i za ubacivanje teksta ispred kursora. **
1. Pomaknite kursor na prvu sljede<64>u liniju ozna<6E>enu s --->.
2. Kako bi napravili prvu liniju istovjetnoj drugoj, pomaknite
kursor na prvi znak POSLIJE kojeg <20>e te utipkati potreban tekst.
3. Pritisnite i te utipkajte potrebne nadopune.
4. Nakon <20>to ispravite pogre<72>ku pritisnite <ESC> kako bi vratili Vim
u Normal mod. Ponovite korake od 2 do 4 kako bi ispravili sve pogre<72>ke.
---> Nedje no teka od v lin.
---> Nedostaje ne<6E>to teksta od ove linije.
5. Prije<6A>ite na sljede<64>u lekciju.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE
** Pritisnite A za dodavanje teksta. **
1. Pomaknite kursor na prvu sljede<64>u liniju ozna<6E>enu s --->.
Nije va<76>no na kojem se slovu nalazi kursor na toj liniji.
2. Pritisnite A i napravite potrebne promjene.
3. Nakon <20>to ste dodali tekst, pritisnite <ESC>
za povratak u Normal mod.
4. Pomaknite kursor na drugu liniju ozna<6E>enu s --->
i ponovite korake 2 i 3 dok ne popravite tekst.
---> Ima ne<6E>to teksta koji nedostaje n
Ima ne<6E>to teksta koji nedostaje na ovoj liniji.
---> Ima ne<6E>to teksta koji ne
Ima ne<6E>to teksta koji nedostaje ba<62> ovdje.
5. Prije<6A>ite na lekciju 1.6.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 1.6: PROMJENA DATOTEKE
** Koristite :wq za spremanje teksta i napu<70>tanje Vim-a. **
!! UPOZORENJE: Prije izvr<76>avanja bilo kojeg koraka, pro<72>itajte lekciju!!
1. Iza<7A>ite iz programa kao sto ste napravili u lekciji 1.2: :q!
2. Iz ljuske utipkajte sljede<64>u naredbu: vim tutor <ENTER>
'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju
<20>elite ure<72>ivati. Koristite datoteku koju imate ovlasti mijenjati.
3. Ubacite i izbri<72>ite tekst kao <20>to ste to napravili u lekcijama prije.
4. Sa<53>uvajte promjenjeni tekst i iza<7A>ite iz Vim-a: :wq <ENTER>
5. Ponovno pokrenite vimtutor i nastavite <20>itati sa<73>etak koji sljedi.
6. Nakon sto pro<72>itate gornje korake i u potpunosti ih razumijete:
izvr<76>ite ih.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 1 SA<53>ETAK
1. Kursor se pomi<6D>e strelicama ili pomo<6D>u hjkl tipaka.
h (lijevo) j (dolje) k (gore) l (desno)
2. Pokretanje Vim-a iz ljuske: vim IME_DATOTEKE <ENTER>
3. Izlaz: <ESC> :q! <ENTER> sve promjene su izgubljene.
ILI: <ESC> :wq <ENTER> promjene su sa<73>uvane.
4. Brisanje znaka na kojem se nalazi kursor: x
5. Ubacivanja ili dodavanje teksta:
i utipkajte tekst <ESC> unos ispred kursora
A utipkajte tekst <ESC> dodavanje na kraju linije
NAPOMENA: Tipkanjem tipke <ESC> prebacuje Vim u Normal mod i
prekida ne<6E>eljenu ili djelomi<6D>no zavr<76>enu naredbu.
Nastavite <20>itati Lekciju 2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 2.1: NAREDBE BRISANJA
** Tipkajte dw za brisanje rije<6A>i. **
1. Pritisnite <ESC> kako bi bili sigurni da je Vim u Normal modu.
2. Pomaknite kursor na liniju ozna<6E>enu s --->.
3. Pomaknite kursor na po<70>etak rije<6A>i koju treba izbrisati.
4. Otipkajte dw kako bi uklonili rije<6A>.
NAPOMENA: Vim <20>e prikazati slovo d na zadnjoj liniji kad ga otipkate.
Vim <20>eka da otipkate w . Ako je prikazano neko drugo slovo,
krivo ste otipkali; pritisnite <ESC> i poku<6B>ajte ponovno.
---> Neke rije<6A>i smije<6A>no ne pripadaju na papir ovoj re<72>enici.
5. Ponovite korake 3 i 4 dok ne ispravite re<72>enicu;
prije<6A>ite na Lekciju 2.2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 2.2: JO<4A> BRISANJA
** Otipkajte d$ za brisanje znakova do kraja linije. **
1. Pritisnite <ESC> kako bi bili
sigurni da je Vim u Normal modu.
2. Pomaknite kursor na liniju ozna<6E>enu s --->.
3. Pomaknite kursor do kraja ispravne re<72>enice
(POSLJE prve . ).
4. Otipkajte d$
kako bi izbrisali sve znakove do kraja linije.
---> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput.
5. Prije<6A>ite na Lekciju 2.3 za bolje obja<6A>njenje.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA
Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta.
Oblik naredbe brisanja sa d operatorom je sljede<64>i:
d pokret
Pri <20>emu je:
d - operator brisanja.
pokret - ono na <20>emu <20>e se operacija izvr<76>avati (navedeno u nastavku).
Kratka lista pokreta:
w - sve do po<70>etka sljede<64>e rije<6A>i, NE UKLJU<4A>UJU<4A>I prvo slovo.
e - sve do kraja trenuta<74>ne rije<6A>i, UKLJU<4A>UJU<4A>I zadnje slovo.
$ - sve do kraje linije, UKLJU<4A>UJU<4A>I zadnje slovo.
Tipkanjem de <20>e se brisati od kursora do kraja rije<6A>i.
NAPOMENA: Pritiskaju<6A>i samo pokrete dok ste u Normal modu bez operatora <20>e
pomicati kursor kao <20>to je navedeno.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 2.4: KORI<52>TENJE BROJANJA ZA POKRETE
** Tipkanjem nekog broja prije pokreta, pokret se izvr<76>ava toliko puta. **
1. Pomaknite kursor na liniju ozna<6E>enu s --->.
2. Otipkajte 2w da pomaknete kursor dvije rije<6A>i naprijed.
3. Otipkajte 3e da pomaknete kursor na kraj tre<72>e rije<6A>i naprijed.
4. Otipkajte 0 (nulu) da pomaknete kursor na po<70>etak linije.
5. Ponovite korake 2 i 3 s nekim drugim brojevima.
---> Re<52>enica sa rije<6A>ima po kojoj mo<6D>ete pomicati kursor.
6. Prije<6A>ite na Lekciju 2.5.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 2.5: KORI<52>TENJE BROJANJA ZA VE<56>E BRISANJE
** Tipkanje broja N s operatorom ponavlja ga N-puta. **
U kombinaciji operatora brisanja i pokreta spomenutih iznad
ubacujete broj prije pokreta kako bi izbrisali vi<76>e znakova:
d broj pokret
1. Pomaknite kursor na prvo slovo u rije<6A>i sa VELIKIM SLOVIMA
ozna<6E>enu s --->.
2. Otipkajte 2dw da izbri<72>ete dvije rije<6A>i sa VELIKIM SLOVIMA
3. Ponovite korake 1 i 2 sa razli<6C>itim brojevima da izbri<72>ete
uzastopne rije<6A>i sa VELIKIM SLOVIMA sa samo jednom naredbom.
---> ova ABC<42><43> D<>E linija FGHI JK LMN OP rije<6A>i je RS<52> TUVZ<56> popravljena.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 2.6: OPERIRANJE NAD LINIJAMA
** Otipkajte dd za brisanje cijele linije. **
Zbog u<>estalosti brisanja cijelih linija, dizajneri Vi-a su odlu<6C>ili da
je lak<61>e brisati linije tipkanjem d dvaput.
1. Pomaknite kursor na drugu liniju u donjoj kitici.
2. Otipkajte dd kako bi izbrisali liniju.
3. Pomaknite kursor na <20>etvrtu liniju.
4. Otipkajte 2dd kako bi izbrisali dvije linije.
---> 1) Ru<52>e su crvene,
---> 2) Pla<6C>a je super,
---> 3) Ljubice su plave,
---> 4) Imam auto,
---> 5) Satovi ukazuju vrijeme,
---> 6) <20>e<EFBFBD>er je sladak
---> 7) Kao i ti.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 2.7: NAREDBA PONI<4E>TENJA
** Pritisnite u za poni<6E>tenje zadnje naredbe, U za cijelu liniju. **
1. Pomaknite kursor na liniju ozna<6E>enu s ---> i postavite kursor na prvu
pogre<72>ku.
2. Otipkajte x kako bi izbrisali prvi ne<6E>eljeni znak.
3. Otipkajte u kako bi poni<6E>tili zadnju izvr<76>enu naredbu.
4. Ovaj put ispravite sve pogre<72>ke na liniji koriste<74>i x naredbu.
5. Sada utipkajte veliko U kako bi poni<6E>tili sve promjene
na liniji, vra<72>aju<6A>i je u prija<6A>nje stanje.
6. Sada utipkajte u nekoliko puta kako bi poni<6E>tili U
i prija<6A>nje naredbe.
7. Sada utipkajte CTRL-R (dr<64>e<EFBFBD>i CTRL tipku pritisnutom dok
ne pritisnete R) nekoliko puta kako bi vratili promjene
(poni<6E>tili poni<6E>tenja).
---> Poopravite pogre<72>ke nna ovvoj liniji ii pooni<6E>titeee ih.
8. Vrlo korisne naredbe. Prije<6A>ite na sa<73>etak Lekcije 2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 2 SA<53>ETAK
1. Brisanje od kursora do sljede<64>e rije<6A>i: dw
2. Brisanje od kursora do kraja linije: d$
3. Brisanje cijele linije: dd
4. Za ponavljanje pokreta prethodite mu broj: 2w
5. Oblik naredbe mijenjanja:
operator [broj] pokret
gdje je:
operator - <20>to napraviti, npr. d za brisanje
[broj] - neobavezan broj ponavljanja pokreta
pokret - kretanje po tekstu po kojem se operira,
kao <20>to je: w (rije<6A>), $ (kraj linije), itd.
6. Postavljanje kursora na po<70>etak linije: 0
7. Za poni<6E>tenje prethodnih promjena, pritisnite: u (malo u)
Za poni<6E>tenje svih promjena na liniji, pritisnite: U (veliko U)
Za vra<72>anja promjena, utipkajte: CTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 3.1: NAREDBA POSTAVI
** p za unos prethodno izbrisanog teksta iza kursora. **
1. Pomaknite kursor na prvu sljede<64>u liniju ozna<6E>enu s --->.
2. Otipkajte dd kako bi izbrisali liniju i spremili je u Vim registar.
3. Pomaknite kursor na liniju c), IZNAD linije koju trebate unijeti.
4. Otipkajte p kako bi postavili liniju ispod kursora.
5. Ponovite korake 2 do 4 kako bi postavili sve linije u pravilnom
rasporedu.
---> d) Mo<4D>e<EFBFBD> li i ti nau<61>iti?
---> b) Ljubice su plave,
---> c) Inteligencija je nau<61>ena,
---> a) Ru<52>e su crvene,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 3.2: NAREDBA PROMJENE
** Otipkajte rx za zamjenu slova ispod kursora sa slovom x . **
1. Pomaknite kursor na prvu sljede<64>u liniju ozna<6E>enu s --->.
2. Pomaknite kursor tako da se nalazi na prvoj pogre<72>ci.
3. Otipkajte r i nakon toga ispravan znak na tom mjestu.
4. Ponovite korake 2 i 3 sve dok prva
linije ne bude istovjetna drugoj.
---> Kede ju ovu limija tupjana, natko je protuskao kruve tupke!
---> Kada je ova linija tipkana, netko je pritiskao krive tipke!
5. Prije<6A>ite na Lekciju 3.2.
NAPOMENA: Prisjetite da trebate u<>iti vje<6A>banjem, ne pam<61>enjem.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 3.3: OPERATOR MIJENJANJA
** Za mijenjanje do kraja rije<6A>i, istipkajte ce . **
1. Pomaknite kursor na prvu sljede<64>u liniju ozna<6E>enu s --->.
2. Postavite kursor na a u lackmb.
3. Otipkajte ce i ispravite rije<6A> (u ovom slu<6C>aju otipkajte inija ).
4. Pritisnite <ESC> i pomaknite kursor na sljede<64>i znak
kojeg je potrebno ispraviti.
5. Ponovite korake 3 i 4 sve dok prva re<72>enica ne postane istovjetna
drugoj.
---> Ova lackmb ima nekoliko rjlcah koje trfcb mijdmlfsz.
---> Ova linija ima nekoliko rije<6A>i koje treba mijenjati.
Primijetite da ce bri<72>e rije<6A> i postavlja Vim u Insert mod.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 3.4: JO<4A> MIJENJANJA KORI<52>TENJEM c
** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. **
1. Operator mijenjanja se koristi na isti na<6E>in kao i operator brisanja:
c [broj] pokret
2. Pokreti su isti, npr: w (rije<6A>) i $ (kraj linije).
3. Pomaknite kursor na prvu sljede<64>u liniju ozna<6E>enu s --->.
4. Pomaknite kursor na prvu pogre<72>ku.
5. Otipkajte c$ i utipkajte ostatak linije tako da bude istovjetna
drugoj te pritisnite <ESC>.
---> Kraj ove linije treba pomo<6D> tako da izgleda kao linija ispod.
---> Kraj ove linije treba ispraviti kori<72>tenjem c$ naredbe.
NAPOMENA: Mo<4D>ete koristiti Backspace za ispravljanje gre<72>aka.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 3 SA<53>ETAK
1. Za postavljanje teksta koji je upravo izbrisan, pritisnite p . Ovo
postavlja tekst IZA kursora (ako je pak linija izbrisana tekst se
postavlja na liniju ispod kursora).
2. Za promjenu znaka na kojem se nalazi kursor, pritisnite r i nakon toga
<20>eljeni znak.
3. Operator mijenjanja dozvoljava promjenu teksta od kursora do pozicije do
koje dovede pokret. tj. Otipkajte ce za mijenjanje od kursora do kraja
rije<6A>i, c$ za mijenjanje od kursora do kraja linije.
4. Oblik naredbe mijenjanja:
c [broj] pokret
Prije<EFBFBD>ite na sljede<64>u lekciju.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE
** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke.
Pritisnite G za pomicanje kursora na neku liniju u datoteci. **
NAPOMENA: Pro<72>itajte cijelu lekciju prije izvr<76>enja bilo kojeg koraka!!
1. Dr<44>ite Ctrl tipku pritisnutom i pritisnite g . Ukratko: CTRL-G.
Vim <20>e ispisati poruku na dnu ekrana sa imenom datoteke i pozicijom
kursora u datoteci. Zapamtite broj linije za 3. korak.
NAPOMENA: Mo<4D>ete vidjeti poziciju kursora u donjem desnom kutu ako
je postavka 'ruler' aktivirana (obja<6A>njeno u 6. lekciji).
2. Pritisnite G za pomicanje kursora na kraj datoteke.
Otipkajte gg za pomicanje kursora na po<70>etak datoteke.
3. Otipkajte broj linije na kojoj ste bili maloprije i zatim G . Kursor
<20>e se vratiti na liniju na kojoj se nalazio kada ste otipkali CTRL-G.
4. Ako ste spremni, izvr<76>ite korake od 1 do 3.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 4.2: NAREDBE TRA<52>ENJA
** Otipkajte / i nakon toga izraz kojeg <20>elite tra<72>iti. **
1. U Normal modu otipkajte / znak. Primijetite da se znak
pojavio zajedno sa kursorom na dnu ekrana kao kod : naredbe.
2. Sada otipkajte 'grrrre<72>ka' <ENTER>. To je rije<6A> koju zapravo tra<72>ite.
3. Za ponovno tra<72>enje istog izraza, otipkajte n .
Za tra<72>enje istog izraza ali u suprotnom smjeru, otipkajte N .
4. Za tra<72>enje izraza unatrag, koristite ? umjesto / .
5. Za povratak na prethodnu poziciju koristite CTRL-O (dr<64>ite Ctrl
pritisnutim dok ne pritisnete tipku o). Ponavljajte sve dok se ne
vratite na po<70>etak. CTRL-I sli<6C>no kao CTRL-O ali u suprotnom smjeru.
---> "pogrrrre<72>ka" je pogre<72>no; umjesto pogrrrre<72>ka treba stajati pogre<72>ka.
NAPOMENA: Ako se tra<72>enjem do<64>e do kraja datoteke nastavit <20>e se od njenog
po<70>etka osim ako je postavka 'wrapscan' deaktivirana.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 4.3: TRA<52>ENJE PRIPADAJU<4A>E ZAGRADE
** Otipkajte % za pronalazak pripadaju<6A>e ), ] ili } . **
1. Postavite kursor na bilo koju od ( , [ ili {
otvorenih zagrada u liniji ozna<6E>enoj s --->.
2. Otipkajte znak % .
3. Kursor <20>e se pomaknuti na pripadaju<6A>u zatvorenu zagradu.
4. Otipkajte % kako bi pomakli kursor na drugu pripadaju<6A>u zagradu.
5. Pomaknite kursor na neku od (,),[,],{ ili } i ponovite % naredbu.
---> Linija ( testiranja obi<62>nih ( [ uglatih ] i { viti<74>astih } zagrada.))
NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadaju<6A>im zagradama!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 4.4: NAREDBE ZAMIJENE
** Otipkajte :s/staro/novo/g da zamijenite 'staro' za 'novo'. **
1. Pomaknite kursor na liniju ozna<6E>enu s --->.
2. Otipkajte :s/cvr<76><72>/cvr<76> <ENTER> . Primjetite da ova naredba zamjenjuje
samo prvi "cvr<76><72>" u liniji.
3. Otipkajte :s/cvr<76><72>/cvr<76>/g . Dodavanje g stavke zna<6E>i da <20>e se naredba
izvr<76>iti na cijeloj liniji, zamjenjivanjem svih "cvr<76><72>" u liniji.
---> i cvr<76><72>i cvr<76><72>i cvr<76><72>ak na <20>voru crne smr<6D>e.
4. Za zamjenu svih izraza u rasponu dviju linija,
otipkajte :#,#s/staro/novo/g #,# su brojevi linije datoteke na kojima
te izme<6D>u njih <20>e se izvr<76>iti zamjena.
Otipkajte :%s/staro/novo/g za zamjenu svih izraza u cijeloj datoteci.
Otipkajte :%s/staro/novo/gc za pronalazak svakog izraza u datoteci i
potvrdu zamjene.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 4 SA<53>ETAK
1. CTRL-G prikazuje poziciju kursora u datoteci i status datoteke.
G postavlja kursor na zadnju liniju datoteke.
broj G postavlja kursor na broj liniju.
gg postavlja kursor na prvu liniju.
2. Tipkanje / sa izrazom tra<72>i UNAPRIJED taj izraz.
Tipkanje ? sa izrazom tra<72>i UNATRAG taj izraz.
Nakon naredbe tra<72>enja koristite n za pronalazak izraza u istom
smjeru, i N za pronalazak istog izraza ali u suprotnom smjeru.
CTRL-O vra<72>a kursor na prethodnu poziciju, CTRL-I na sljede<64>u poziciju.
3. Tipkanje % dok je kursor na zagradi pomi<6D>e ga na pripadaju<6A>u zagradu.
4. Za zamjenu prvog izraza staro za izraz novo :s/staro/novo
Za zamjenu svih izraza staro na cijeloj liniji :s/staro/novo/g
Za zamjenu svih izraza staro u rasponu linija #,# :#,#s/staro/novo/g
Za zamjenu u cijeloj datoteci :%s/staro/novo/g
Za potvrdu svake zamjene dodajte 'c' :%s/staro/novo/gc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 5.1: IZVR<56>AVANJE VANJSKIH NAREDBI
** Otipkajte :! sa vanjskom naredbom koju <20>elite izvr<76>iti. **
1. Otipkajte poznatu naredbu : kako bi kursor premjestili na dno
ekrana. Time omogu<67>avate unos naredbe u naredbenoj liniji.
2. Otipkajte znak ! (uskli<6C>nik). Tako omogu<67>avate
izvr<76>avanje naredbe vanjske ljuske.
3. Kao primjer otipkajte ls nakon ! te pritisnite <ENTER>.
Ovo <20>e prikazati sadr<64>aj direktorija, kao da ste u ljusci.
Koristite :!dir ako :!ls ne radi.
NAPOMENA: Mogu<67>e je izvr<76>avati bilo koju vanjsku naredbu na ovaj na<6E>in,
zajedno sa njenim argumentima.
NAPOMENA: Sve : naredbe se izvr<76>avaju nakon <20>to pritisnete <ENTER>
U daljnjem tekstu to ne<6E>e uvijek biti napomenuto.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 5.2: VI<56>E O SPREMANJU DATOTEKA
** Za spremanje promjena, otipkajte :w IME_DATOTEKE. **
1. Otipkajte :!dir ili :!ls za pregled direktorija.
Ve<56> znate da morate pritisnuti <ENTER> na kraju tipkanja.
2. Izaberite ime datoteke koja jo<6A> ne postoji, npr. TEST.
3. Otipkajte: :w TEST (gdje je TEST ime koje ste prethodno odabrali.)
4. Time <20>e te spremiti cijelu datoteku (Vim Tutor) pod imenom TEST.
Za provjeru, otipkajte ponovno :!dir ili :!ls
za pregled direktorija.
NAPOMENA: Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST ,
datoteka bi bila potpuna kopija ove datoteke u trenutku
kada ste je spremili.
5. Izbri<72>ite datoteku tako da otipkate (MS-DOS): :!del TEST
ili (Unix): :!rm TEST
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 5.3: SPREMANJE OZNA<4E>ENOG TEKSTA
** Kako bi spremili dio datoteke, otipkajte v pokret :w IME_DATOTEKE **
1. Pomaknite kursor na ovu liniju.
2. Pritisnite v i pomaknite kursor pet linija ispod ove.
Primijetite promjenu, ozna<6E>eni tekst se razlikuje od obi<62>nog.
3. Pritisnite : znak. Na dnu ekrana pojavit <20>e se :'<,'> .
4. Otipkajte w TEST , pritom je TEST ime datoteke koja jo<6A> ne postoji.
Provjerite da zaista pi<70>e :'<,'>w TEST
prije nego <20>to pritisnite <ENTER>.
5. Vim <20>e spremiti ozna<6E>eni tekst u TEST. Provjerite sa :!dir ili !ls .
Nemojte je jo<6A> brisati! Koristiti <20>e te je u sljede<64>oj lekciji.
NAPOMENA: Tipka v zapo<70>inje Vizualno ozna<6E>avanje. Mo<4D>ete pomicati kursor
unaokolo kako bi mijenjali veli<6C>inu ozna<6E>enog teksta. Mo<4D>ete
koristiti i operatore. Npr, d <20>e izbrisati ozna<6E>eni tekst.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 5.4: U<>ITAVANJE DATOTEKA
** Za ubacivanje sadr<64>aja datoteke, otipkajte :r IME_DATOTEKE **
1. Postavite kursor iznad ove linije.
NAPOMENA: Nakon <20>to izvr<76>ite 2. korak vidjeti <20>e te tekst iz Lekcije 5.3.
Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju.
2. U<>itajte va<76>u TEST datoteku koriste<74>i naredbu :r TEST
gdje je TEST ime datoteke koju ste koristili u prethodnoj lekciji.
Sadr<64>aj u<>itane datoteke je uba<62>en liniju ispod kursora.
3. Kako bi provjerili da je datoteka u<>itana, vratite kursor unatrag i
primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke.
NAPOMENA: Mo<4D>ete tako<6B>er u<>itati ispis vanjske naredbe. Npr, :r !ls
<20>e u<>itati ispis ls naredbe i postaviti ispis liniju ispod
kursora.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 5 SA<53>ETAK
1. :!naredba izvr<76>ava vanjsku naredbu.
Korisni primjeri:
(MS-DOS) (Unix)
:!dir :!ls - pregled direktorija.
:!del DATOTEKA :!rm DATOTEKA - bri<72>e datoteku DATOTEKA.
2. :w DATOTEKA zapisuje trenuta<74>nu datoteku na disk sa imenom DATOTEKA.
3. v pokret :w IME_DATOTEKE sprema vizualno ozna<6E>ene linije u
datoteku IME_DATOTEKE.
4. :r IME_DATOTEKE u<>itava datoteku IME_DATOTEKE sa diska i stavlja
njen sadr<64>aj liniju ispod kursora.
5. :r !dir u<>itava ispis naredbe dir i postavlja sadr<64>aj ispisa liniju
ispod kursora.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 6.1: NAREDBA OTVORI
** Pritisnite o kako bi otvorili liniju ispod kursora
i pre<72>li u Insert mod. **
1. Pomaknite kursor na sljede<64>u liniju ozna<6E>enu s --->.
2. Otipkajte malo o kako bi otvorili novu liniju ISPOD kursora
i pre<72>li u Insert mod.
3. Otipkajte ne<6E>to teksta i nakon toga pritisnite <ESC>
kako bi napustili Insert mod.
---> Nakon <20>to pritisnete o kursor <20>e pre<72>i u novu liniju u Insert mod.
4. Za otvaranje linije IZNAD kursora, otipkajte umjesto malog o veliko O ,
Poku<6B>ajte na donjoj liniji ozna<6E>enoj s --->.
---> Otvorite liniju iznad ove - otipkajte O dok je kursor na ovoj liniji.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 6.2: NAREDBA DODAJ
** Otipkajte a za dodavanje teksta IZA kursora. **
1. Pomaknite kursor na po<70>etak sljede<64>e linije ozna<6E>ene s --->.
2. Tipkajte e dok se kursor ne nalazi na kraju li .
3. Otipkajte a (malo) kako bi dodali tekst IZA kursora.
4. Dopunite rije<6A> kao <20>to je na liniji ispod.
Pritisnite <ESC> za izlaz iz Insert moda.
5. Sa e prije<6A>ite na sljede<64>u nepotpunu rije<6A> i ponovite korake 3 i 4.
---> Ova li omogu<67>ava vje dodav teksta nekoj liniji.
---> Ova linija omogu<67>ava vje<6A>banje dodavanja teksta nekoj liniji.
NAPOMENA: Sa i, a, i A prelazite u isti Insert mod, jedina
razlika je u poziciji od koje <20>e se tekst ubacivati.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 6.3: DRUGI NA<4E>IN MIJENJANJA
** Otipkajte veliko R kako bi zamijelili vi<76>e od jednog znaka. **
1. Pomaknite kursor na prvu sljede<64>u liniju ozna<6E>enu s --->.
Pomaknite kursor na po<70>etak prvog xxx .
2. Pritisnite R i otipkajte broj koji je liniju ispod,
tako da zamijeni xxx .
3. Pritisnite <ESC> za izlaz iz Replace moda.
Primijetite da je ostatak linije ostao nepromjenjen.
5. Ponovite korake kako bi zamijenili preostali xxx.
---> Zbrajanje: 123 plus xxx je xxx.
---> Zbrajanje: 123 plus 456 je 579.
NAPOMENA: Replace mod je kao Insert mod, ali sa bitnom razlikom,
svaki otipkani znak bri<72>e ve<76> postoje<6A>i.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA
** Koristite y operator za kopiranje a p za lijepljenje teksta. **
1. Pomaknite kursor na liniju s ---> i postavite kursor nakon "a)".
2. Pokrenite Visual mod sa v i pomaknite kursor sve do ispred "prva".
3. Pritisnite y kako bi kopirali ozna<6E>eni tekst.
4. Pomaknite kursor do kraja sljede<64>e linije: j$
5. Pritisnite p kako bi zalijepili tekst. Onda utipkajte: druga <ESC> .
6. Koristite Visual mod kako bi ozna<6E>ili " linija.", kopirajte: y , kursor
postavite na kraj sljede<64>e linije: j$ i ondje zalijepite tekst: p .
---> a) ovo je prva linija.
b)
NAPOMENA: mo<6D>ete koristiti y kao operator; yw kopira jednu rije<6A>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 6.5: MIJENJANJE POSTAVKI
** Postavka: naredbe tra<72>enja i zamijene ne razlikuju VELIKA i mala slova **
1. Potra<72>ite 'razlika' tipkanjem: /razlika <ENTER>
Nekoliko puta ponovite pritiskanjem n .
2. Aktivirajte 'ic' (Ignore case) postavku: :set ic
3. Ponovno potra<72>ite 'razlika' tipkanjem n
Primijetite da su sada i RAZLIKA i Razlika prona<6E>eni.
4. Aktivirajte 'hlsearch' i 'incsearch' postavke: :set hls is
5. Otipkajte naredbu tra<72>enja i primijetite razlike: /razlika <ENTER>
6. Za deaktiviranje ic postavke koristite: :set noic
NAPOMENA: Za neozna<6E>avanje prona<6E>enih izraza otipkajte: :nohlsearch
NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi
koristite \c u izrazu: /razlika\c <ENTER>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 6 SA<53>ETAK
1. Pritisnite o za otvaranje linije ISPOD kursora i prelazak u Insert mod.
Pritisnite O za otvaranje linije IZNAD kursora.
2. Pritisnite a za unos teksta IZA kursora.
Pritisnite A za unos teksta na kraju linije.
3. Naredba e pomi<6D>e kursor na kraj rije<6A>i.
4. Operator y kopira tekst, p ga lijepi.
5. Tipkanjem velikog R Vim prelazi u Replace mod dok ne pritisnete <ESC> .
6. Tipkanjem ":set xxx" aktivira postavku "xxx". Neke postavke su:
'ic' 'ignorecase' ne razlikuje velika/mala slova pri tra<72>enju
'is' 'incsearch' tra<72>i nedovr<76>ene izraze
'hls' 'hlsearch' ozna<6E>i sve prona<6E>ene izraze
Mo<4D>ete koristite dugo ili kratko ime postavke.
7. Prethodite "no" imenu postavke za deaktiviranje iste: :set noic
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 7.1: DOBIVANJE POMO<4D>I
** Koristite on-line sustav pomo<6D>i **
Vim ima detaljan on-line sustav pomo<6D>i.
Za po<70>etak, poku<6B>ajte jedno od sljede<64>eg:
- pritisnite <HELP> tipku (ako je va<76>a tipkovnica ima)
- pritisnite <F1> tipku (ako je va<76>a tipkovnica ima)
- utipkajte :help <ENTER>
Pro<72>itajte tekst u prozoru pomo<6D>i kako bi ste se znali slu<6C>iti istom.
Tipkanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi.
Otipkajte :q <ENTER> kako bi zatvorili prozor pomo<6D>i.
Prona<6E>i <20>e te pomo<6D> o bilo kojoj temi, tako da dodate upit samoj
":help" naredbi. Poku<6B>ajte (ne zaboravite pritisnuti <ENTER>):
:help w
:help c_CTRL-D
:help insert-index
:help user-manual
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 7.2: PRAVLJENJE SKRIPTE
** Aktivirajte Vim mogu<67>nosti **
Vim ima mnogo vi<76>e alata od Vi-ja, ali ve<76>ina njih nije aktivirana.
Kako bi mogli koristiti vi<76>e mogu<67>nosti napravite "vimrc" datoteku.
1. Uredite "vimrc" datoteku. Ovo ovisi o va<76>em sistemu:
:e ~/.vimrc za Unix
:e $VIM/_vimrc za MS-Windows
2. Sada u<>itajte primjer sadr<64>aja "vimrc" datoteke:
:r $VIMRUNTIME/vimrc_example.vim
3. Sa<53>uvajte datoteku sa:
:w
Sljede<64>eg puta kada pokrenete Vim, bojanje sintakse teksta biti <20>e
aktivirano. Sve va<76>e postavke mo<6D>ete dodati u "vimrc" datoteku.
Za vi<76>e informacija otipkajte :help vimrc-intro
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 7.3: AUTOMATSKO DOVR<56>AVANJE
** Dovr<76>avanje iz naredbene linije pomo<6D>u CTRL-D i <TAB> **
1. Provjerite da Vim nije u Vi modu: :set nocp
2. Pogledajte koje datoteke postoje u direktoriju: :!ls or :!dir
3. Otipkajte po<70>etak naredbe: :e
4. Tipkajte CTRL-D i prikazati <20>e se lista naredbi koje zapo<70>inju sa "e".
5. Pritisnite <TAB> i Vim <20>e dopuniti unos u naredbu ":edit".
6. Dodajte razmak i po<70>etak datoteke: :edit FIL
7. Pritisnite <TAB>. Vim <20>e nadopuniti ime datoteke (ako je jedinstveno).
NAPOMENA: Mogu<67>e je dopuniti mnoge naredbe. Koristite CTRL-D i <TAB>.
Naro<72>ito je korisno za :help naredbe.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lekcija 7 SA<53>ETAK
1. Otipkajte :help ili pritisnite <F1> ili <Help> za pomo<6D>.
2. Otipkajte :help naredba kako bi dobili pomo<6D> za naredba .
3. Otipkajte CTRL-W CTRL-W za prelazak u drugi prozor
4. Otipkajte :q kako bi zatvorili prozor pomo<6D>i
5. Napravite vimrc skriptu za podizanje kako bi u nju spremali
va<76>e omiljene postavke.
6. Kada tipkate naredbu koja zapo<70>inje sa :
pritisnite CTRL-D kako bi vidjeli mogu<67>e valjane vrijednosti.
Pritisnite <TAB> kako bi odabrali jednu od njih.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Kraj. Cilj priru<72>nika je da poka<6B>e kratak pregled Vim editora, tek toliko
da omogu<67>i njegovo kori<72>tenje. Priru<72>nik nije potpun jer Vim ima mnogo vi<76>e
naredbi. Za vi<76>e informacija: ":help user-manual".
Za <20>itanje i kori<72>tenje, preporu<72>amo:
Vim - Vi Improved - by Steve Oualline
Izdava<76>: New Riders
Prva knjiga potpuno posve<76>ena Vim-u. Vrlo korisna za po<70>etnike.
Sa mnogo primjera i slika.
Posjetite http://iccf-holland.org/click5.html
Sljede<64>a knjiga je ne<6E>to starija i vi<76>e o Vi-u nego o Vim-u, preporu<72>amo:
Learning the Vi Editor - by Linda Lamb
Izdava<76>: O'Reilly & Associates Inc.
Solidna knjiga, mo<6D>ete saznati skoro sve <20>to mo<6D>ete napraviti
u Vi-u. <20>esto izdanje ima ne<6E>to informacija i o Vim-u.
Ovaj priru<72>nik su napisali: Michael C. Pierce i Robert K. Ware,
Colorado School of Mines koriste<74>i ideje Charles Smith,
Colorado State University. E-po<70>ta: bware@mines.colorado.edu.
Naknadne promjene napravio je Bram Moolenaar.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Preveo na hrvatski: Paul B. Mahol <onemda@gmail.com>
Preinaka 1.42, Lipanj 2008

Some files were not shown because too many files have changed in this diff Show More