Mercurial > vim
changeset 6744:dff4e29c6905
More updated runtime files.
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Mon, 13 Apr 2015 14:22:40 +0200 |
parents | a0990bffa463 |
children | 7f9a158cf1d9 |
files | runtime/autoload/phpcomplete.vim runtime/doc/tags runtime/doc/todo.txt runtime/syntax/csh.vim runtime/syntax/php.vim runtime/syntax/sh.vim runtime/syntax/sm.vim runtime/syntax/tex.vim runtime/syntax/vim.vim runtime/syntax/yacc.vim runtime/tutor/tutor.de runtime/tutor/tutor.de.utf-8 |
diffstat | 12 files changed, 2254 insertions(+), 2220 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/autoload/phpcomplete.vim +++ b/runtime/autoload/phpcomplete.vim @@ -3,7 +3,7 @@ " Maintainer: Dávid Szabó ( complex857 AT gmail DOT com ) " Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) " URL: https://github.com/shawncplus/phpcomplete.vim -" Last Change: 2015 Feb 28 +" Last Change: 2015 Apr 02 " " OPTIONS: " @@ -141,71 +141,80 @@ function! phpcomplete#CompletePHP(findst if a:base != "" let context = substitute(context, '\s*[$a-zA-Z_0-9\x7f-\xff]*$', '', '') end + else + let context = '' end - let [current_namespace, imports] = phpcomplete#GetCurrentNameSpace(getline(0, line('.'))) - - if context =~? '^use\s' || context ==? 'use' - return phpcomplete#CompleteUse(a:base) - endif - - if context =~ '\(->\|::\)$' - " {{{ - " Get name of the class - let classname = phpcomplete#GetClassName(line('.'), context, current_namespace, imports) + try + let winheight = winheight(0) + let winnr = winnr() - " Get location of class definition, we have to iterate through all - if classname != '' - if classname =~ '\' - " split the last \ segment as a classname, everything else is the namespace - let classname_parts = split(classname, '\') - let namespace = join(classname_parts[0:-2], '\') - let classname = classname_parts[-1] - else - let namespace = '\' - endif - let classlocation = phpcomplete#GetClassLocation(classname, namespace) - else - let classlocation = '' + let [current_namespace, imports] = phpcomplete#GetCurrentNameSpace(getline(0, line('.'))) + + if context =~? '^use\s' || context ==? 'use' + return phpcomplete#CompleteUse(a:base) endif - if classlocation != '' - if classlocation == 'VIMPHP_BUILTINOBJECT' && has_key(g:php_builtin_classes, tolower(classname)) - return phpcomplete#CompleteBuiltInClass(context, classname, a:base) + if context =~ '\(->\|::\)$' + " {{{ + " Get name of the class + let classname = phpcomplete#GetClassName(line('.'), context, current_namespace, imports) + + " Get location of class definition, we have to iterate through all + if classname != '' + if classname =~ '\' + " split the last \ segment as a classname, everything else is the namespace + let classname_parts = split(classname, '\') + let namespace = join(classname_parts[0:-2], '\') + let classname = classname_parts[-1] + else + let namespace = '\' + endif + let classlocation = phpcomplete#GetClassLocation(classname, namespace) + else + let classlocation = '' endif - if filereadable(classlocation) - let classfile = readfile(classlocation) - let classcontent = '' - let classcontent .= "\n".phpcomplete#GetClassContents(classlocation, classname) - let sccontent = split(classcontent, "\n") - let visibility = expand('%:p') == fnamemodify(classlocation, ':p') ? 'private' : 'public' + if classlocation != '' + if classlocation == 'VIMPHP_BUILTINOBJECT' && has_key(g:php_builtin_classes, tolower(classname)) + return phpcomplete#CompleteBuiltInClass(context, classname, a:base) + endif + + if filereadable(classlocation) + let classfile = readfile(classlocation) + let classcontent = '' + let classcontent .= "\n".phpcomplete#GetClassContents(classlocation, classname) + let sccontent = split(classcontent, "\n") + let visibility = expand('%:p') == fnamemodify(classlocation, ':p') ? 'private' : 'public' - return phpcomplete#CompleteUserClass(context, a:base, sccontent, visibility) + return phpcomplete#CompleteUserClass(context, a:base, sccontent, visibility) + endif endif + + return phpcomplete#CompleteUnknownClass(a:base, context) + " }}} + elseif context =~? 'implements' + return phpcomplete#CompleteClassName(a:base, ['i'], current_namespace, imports) + elseif context =~? 'extends\s\+.\+$' && a:base == '' + return ['implements'] + elseif context =~? 'extends' + let kinds = context =~? 'class\s' ? ['c'] : ['i'] + return phpcomplete#CompleteClassName(a:base, kinds, current_namespace, imports) + elseif context =~? 'class [a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*' + " special case when you've typed the class keyword and the name too, only extends and implements allowed there + return filter(['extends', 'implements'], 'stridx(v:val, a:base) == 0') + elseif context =~? 'new' + return phpcomplete#CompleteClassName(a:base, ['c'], current_namespace, imports) endif - return phpcomplete#CompleteUnknownClass(a:base, context) - " }}} - elseif context =~? 'implements' - return phpcomplete#CompleteClassName(a:base, ['i'], current_namespace, imports) - elseif context =~? 'extends\s\+.\+$' && a:base == '' - return ['implements'] - elseif context =~? 'extends' - let kinds = context =~? 'class\s' ? ['c'] : ['i'] - return phpcomplete#CompleteClassName(a:base, kinds, current_namespace, imports) - elseif context =~? 'class [a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*' - " special case when you've typed the class keyword and the name too, only extends and implements allowed there - return filter(['extends', 'implements'], 'stridx(v:val, a:base) == 0') - elseif context =~? 'new' - return phpcomplete#CompleteClassName(a:base, ['c'], current_namespace, imports) - endif - - if a:base =~ '^\$' - return phpcomplete#CompleteVariable(a:base) - else - return phpcomplete#CompleteGeneral(a:base, current_namespace, imports) - endif + if a:base =~ '^\$' + return phpcomplete#CompleteVariable(a:base) + else + return phpcomplete#CompleteGeneral(a:base, current_namespace, imports) + endif + finally + silent! exec winnr.'resize '.winheight + endtry endfunction " }}} @@ -1523,21 +1532,19 @@ function! phpcomplete#GetClassName(start return '' endif - if line =~? '\v^\s*(abstract\s+|final\s+)*\s*class' - let class_name = matchstr(line, '\c\s*class\s*\zs'.class_name_pattern.'\ze') + if line =~? '\v^\s*(abstract\s+|final\s+)*\s*class\s' + let class_name = matchstr(line, '\cclass\s\+\zs'.class_name_pattern.'\ze') let extended_class = matchstr(line, '\cclass\s\+'.class_name_pattern.'\s\+extends\s\+\zs'.class_name_pattern.'\ze') let classname_candidate = a:context =~? 'parent::' ? extended_class : class_name - else - let i += 1 - continue + if classname_candidate != '' + let [classname_candidate, class_candidate_namespace] = phpcomplete#GetCallChainReturnType(classname_candidate, class_candidate_namespace, class_candidate_imports, methodstack) + " return absolute classname, without leading \ + return (class_candidate_namespace == '\' || class_candidate_namespace == '') ? classname_candidate : class_candidate_namespace.'\'.classname_candidate + endif endif - if classname_candidate != '' - let [classname_candidate, class_candidate_namespace] = phpcomplete#GetCallChainReturnType(classname_candidate, class_candidate_namespace, class_candidate_imports, methodstack) - " return absolute classname, without leading \ - return (class_candidate_namespace == '\' || class_candidate_namespace == '') ? classname_candidate : class_candidate_namespace.'\'.classname_candidate - endif + let i += 1 endwhile elseif a:context =~? '(\s*new\s\+'.class_name_pattern.'\s*)->' let classname_candidate = matchstr(a:context, '\cnew\s\+\zs'.class_name_pattern.'\ze') @@ -2031,7 +2038,7 @@ function! phpcomplete#GetClassContentsSt " remember the window we started at let phpcomplete_original_window = winnr() - silent! tab 1new + silent! below 1new silent! 0put =cfile call search('\c\(class\|interface\|trait\)\_s\+'.a:class_name.'\(\>\|$\)') let cfline = line('.') @@ -2370,7 +2377,7 @@ endfunction! function! phpcomplete#GetCurrentNameSpace(file_lines) " {{{ let original_window = winnr() - silent! tab 1new + silent! below 1new silent! 0put =a:file_lines normal! G
--- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -4875,6 +4875,7 @@ b:current_syntax-variable syntax.txt /*b b:netrw_lastfile pi_netrw.txt /*b:netrw_lastfile* b:tex_stylish syntax.txt /*b:tex_stylish* b:var eval.txt /*b:var* +b:yaml_schema syntax.txt /*b:yaml_schema* baan-folding syntax.txt /*baan-folding* baan-syntax syntax.txt /*baan-syntax* baan.vim syntax.txt /*baan.vim* @@ -5884,6 +5885,7 @@ ft-xhtml-omni insert.txt /*ft-xhtml-omni ft-xml-omni insert.txt /*ft-xml-omni* ft-xml-syntax syntax.txt /*ft-xml-syntax* ft-xpm-syntax syntax.txt /*ft-xpm-syntax* +ft-yaml-syntax syntax.txt /*ft-yaml-syntax* ft_ada.txt ft_ada.txt /*ft_ada.txt* ft_sql.txt ft_sql.txt /*ft_sql.txt* ftdetect filetype.txt /*ftdetect* @@ -6113,6 +6115,7 @@ g:vimsyn_folding syntax.txt /*g:vimsyn_f g:vimsyn_maxlines syntax.txt /*g:vimsyn_maxlines* g:vimsyn_minlines syntax.txt /*g:vimsyn_minlines* g:vimsyn_noerror syntax.txt /*g:vimsyn_noerror* +g:yaml_schema syntax.txt /*g:yaml_schema* g:zip_nomax pi_zip.txt /*g:zip_nomax* g:zip_shq pi_zip.txt /*g:zip_shq* g:zip_unzipcmd pi_zip.txt /*g:zip_unzipcmd* @@ -8889,6 +8892,7 @@ xterm-screens tips.txt /*xterm-screens* xterm-scroll-region term.txt /*xterm-scroll-region* xterm-shifted-keys term.txt /*xterm-shifted-keys* y change.txt /*y* +yaml.vim syntax.txt /*yaml.vim* yank change.txt /*yank* ye-option-gone version4.txt /*ye-option-gone* year-2000 intro.txt /*year-2000*
--- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 7.4. Last change: 2015 Apr 12 +*todo.txt* For Vim version 7.4. Last change: 2015 Apr 13 VIM REFERENCE MANUAL by Bram Moolenaar @@ -68,13 +68,6 @@ Regexp problems: - this doesn't work: "syntax match ErrorMsg /.\%9l\%>20c\&\%<28c/". Leaving out the \& works. Seems any column check after \& fails. -PHP complete update, (complex, 2015 Apr 2) - -PHP syntax file update. (Jason Woofenden, 2015 Mar 24) - -Updated syntax files. (Charles Campbell, Apr 2) -Two messages. - Check out neovim bug reports that apply to Vim: https://github.com/neovim/neovim/issues?q=label%3Abug-vim Specifically:
--- a/runtime/syntax/csh.vim +++ b/runtime/syntax/csh.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: C-shell (csh) " Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz> +" Last Change: Oct 23, 2014 " Version: 11 -" Last Change: Oct 23, 2014 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_CSH " For version 5.x: Clear all syntax items
--- a/runtime/syntax/php.vim +++ b/runtime/syntax/php.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: php PHP 3/4/5 " Maintainer: Jason Woofenden <jason@jasonwoof.com> -" Last Change: Sep 18, 2014 -" URL: https://gitorious.org/jasonwoof/vim-syntax/blobs/master/php.vim +" Last Change: Mar 24, 2015 +" URL: https://jasonwoof.com/gitweb/?p=vim-syntax.git;a=blob;f=php.vim;hb=HEAD " Former Maintainers: Peter Hodge <toomuchphp-vim@yahoo.com> " Debian VIM Maintainers <pkg-vim-maintainers@lists.alioth.debian.org> "
--- a/runtime/syntax/sh.vim +++ b/runtime/syntax/sh.vim @@ -2,8 +2,8 @@ " Language: shell (sh) Korn shell (ksh) bash (sh) " Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz> " Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int> -" Last Change: Jan 08, 2015 -" Version: 134 +" Last Change: Apr 02, 2015 +" Version: 135 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH " For options and settings, please use: :help ft-sh-syntax " This file includes many ideas from ?ric Brunet (eric.brunet@ens.fr) @@ -104,7 +104,7 @@ syn cluster shErrorList contains=shDoErr if exists("b:is_kornshell") syn cluster ErrorList add=shDTestError endif -syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shComment,shDeref,shDerefSimple,shDo,shEcho,shEscape,shIf,shFor,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement +syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor syn cluster shArithList contains=@shArithParenList,shParenError syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq @@ -127,9 +127,9 @@ syn cluster shHereList contains=shBeginH syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo -syn cluster shLoopList contains=@shCaseList,shIf,shFor,shForPP,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac,shTest,@shErrorList,shSet,shOption +syn cluster shLoopList contains=@shCaseLis,t@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shForPP,shIf,shOption,shSet,shTest,shTestOpr syn cluster shSubShList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator -syn cluster shTestList contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shExDoubleQuote,shDoubleQuote,shExpr,shNumber,shOperator,shExSingleQuote,shSingleQuote,shTestOpr,shTest,shCtrlSeq +syn cluster shTestList contains=shCharClass,shCommandSub,shComment,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr " Echo: {{{1 " ==== " This one is needed INSIDE a CommandSub, so that `echo bla` be correct @@ -197,13 +197,12 @@ syn region shTest transparent matchgroup syn match shTestOpr contained "<=\|>=\|!=\|==\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]" syn match shTestOpr contained '=' skipwhite nextgroup=shTestDoubleQuote,shTestSingleQuote,shTestPattern syn match shTestPattern contained '\w\+' -syn region shTestDoubleQuote contained start='"' skip='\\"' end='"' contains=shBQpairs +syn region shTestDoubleQuote contained start='\%(\%(\\\\\)*\\\)\@<!"' skip=+\\\\\|\\"+ end='"' syn match shTestSingleQuote contained '\\.' syn match shTestSingleQuote contained "'[^']*'" -syn match shBQpairs contained '\\\\' if exists("b:is_kornshell") || exists("b:is_bash") - syn region shDblBrace matchgroup=Delimiter start="\[\[" skip=+\\\\\|\\$+ end="\]\]" contains=@shTestList - syn region shDblParen matchgroup=Delimiter start="((" skip=+\\\\\|\\$+ end="))" contains=@shTestList + syn region shDblBrace matchgroup=Delimiter start="\[\[" skip=+\\\\\|\\$+ end="\]\]" contains=@shTestList,shComment + syn region shDblParen matchgroup=Delimiter start="((" skip=+\\\\\|\\$+ end="))" contains=@shTestList,shComment endif " Character Class In Range: {{{1 @@ -213,15 +212,16 @@ syn match shCharClass contained "\[:\( " Loops: do, if, while, until {{{1 " ====== if s:sh_fold_ifdofor - syn region shDo fold transparent matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>" contains=@shLoopList - syn region shIf fold transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional skip=+-fi\>+ end="\<;\_s*then\>" end="\<fi\>" contains=@shIfList - syn region shFor fold matchgroup=shLoop start="\<for\ze\_s\s*\%(((\)\@!" end="\<in\_s" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn + syn region shDo fold transparent matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>" contains=@shLoopList + syn region shIf fold transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional skip=+-fi\>+ end="\<;\_s*then\>" end="\<fi\>" contains=@shIfList + syn region shFor fold matchgroup=shLoop start="\<for\ze\_s\s*\%(((\)\@!" end="\<in\_s" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn + syn region shForPP fold matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=shTestOpr else - syn region shDo transparent matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>" contains=@shLoopList - syn region shIf transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional skip=+-fi\>+ end="\<;\_s*then\>" end="\<fi\>" contains=@shIfList - syn region shFor matchgroup=shLoop start="\<for\ze\_s\s*\%(((\)\@!" end="\<in\>" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn + syn region shDo transparent matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>" contains=@shLoopList + syn region shIf transparent matchgroup=shConditional start="\<if\_s" matchgroup=shConditional skip=+-fi\>+ end="\<;\_s*then\>" end="\<fi\>" contains=@shIfList + syn region shFor matchgroup=shLoop start="\<for\ze\_s\s*\%(((\)\@!" end="\<in\>" end="\<do\>"me=e-2 contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn + syn region shForPP matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=shTestOpr endif -syn region shForPP matchgroup=shLoop start='\<for\>\_s*((' end='))' contains=shTestOpr if exists("b:is_kornshell") || exists("b:is_bash") syn cluster shCaseList add=shRepeat syn cluster shFunctionList add=shRepeat @@ -409,19 +409,27 @@ endif if exists("b:is_bash") if s:sh_fold_functions - syn region shFunctionOne fold matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment - syn region shFunctionTwo fold matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + syn region shFunctionOne fold matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + syn region shFunctionTwo fold matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + syn region shFunctionThree fold matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + syn region shFunctionFour fold matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*)" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment else - syn region shFunctionOne matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{" end="}" contains=@shFunctionList - syn region shFunctionTwo matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained + syn region shFunctionOne matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{" end="}" contains=@shFunctionList + syn region shFunctionTwo matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained + syn region shFunctionThree matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*(" end=")" contains=@shFunctionList + syn region shFunctionFour matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained endif else if s:sh_fold_functions - syn region shFunctionOne fold matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment - syn region shFunctionTwo fold matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + syn region shFunctionOne fold matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + syn region shFunctionTwo fold matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + syn region shFunctionThree fold matchgroup=shFunction start="^\s*\h\w*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + syn region shFunctionFour fold matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment else - syn region shFunctionOne matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList - syn region shFunctionTwo matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained + syn region shFunctionOne matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList + syn region shFunctionTwo matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained + syn region shFunctionThree matchgroup=shFunction start="^\s*\h\w*\s*()\_s*(" end=")" contains=@shFunctionList + syn region shFunctionFour matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained endif endif @@ -577,7 +585,7 @@ hi def link shDoubleQuote shString hi def link shEcho shString hi def link shEchoDelim shOperator hi def link shEchoQuote shString -"hi def link shForPP shLoop +hi def link shForPP shLoop hi def link shEmbeddedEcho shString hi def link shEscape shCommandSub hi def link shExDoubleQuote shDoubleQuote @@ -604,7 +612,6 @@ hi def link shTestOpr shConditional hi def link shTestPattern shString hi def link shTestDoubleQuote shString hi def link shTestSingleQuote shString -hi def link shBQpairs shString hi def link shVariable shSetList hi def link shWrapLineOperator shOperator
--- a/runtime/syntax/sm.vim +++ b/runtime/syntax/sm.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: sendmail " Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz> -" Last Change: Jan 13, 2015 -" Version: 6 +" Last Change: Oct 23, 2014 +" Version: 7 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SM if exists("b:current_syntax")
--- a/runtime/syntax/tex.vim +++ b/runtime/syntax/tex.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: TeX " Maintainer: Charles E. Campbell <NdrchipO@ScampbellPfamily.AbizM> -" Last Change: Nov 18, 2014 -" Version: 83 +" Last Change: Apr 02, 2015 +" Version: 84 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX " " Notes: {{{1 @@ -391,10 +391,17 @@ endif " particular support for bold and italic {{{1 if s:tex_fast =~ 'b' if s:tex_conceal =~ 'b' - syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" end="}" concealends contains=@texBoldGroup - syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" end="}" concealends contains=@texItalGroup - syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" end="}" concealends contains=@texItalGroup - syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" end="}" concealends contains=@texBoldGroup + if !exists("g:tex_nospell") || !g:tex_nospell + syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*\ze{" matchgroup=Delimiter end="}" concealends contains=@texBoldGroup,@Spell + syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*\ze{" matchgroup=Delimiter end="}" concealends contains=@texItalGroup,@Spell + syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*\ze{" matchgroup=Delimiter end="}" concealends contains=@texItalGroup,@Spell + syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*\ze{" matchgroup=Delimiter end="}" concealends contains=@texBoldGroup,@Spell + else + syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*\ze{" matchgroup=Delimiter end="}" concealends contains=@texBoldGroup + syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*\ze{" matchgroup=Delimiter end="}" concealends contains=@texItalGroup + syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*\ze{" matchgroup=Delimiter end="}" concealends contains=@texItalGroup + syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*\ze{" matchgroup=Delimiter end="}" concealends contains=@texBoldGroup + endif endif endif @@ -576,14 +583,14 @@ else syn match texComment "%.*$" contains=@texCommentGroup if s:tex_fast =~ 'c' syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' fold - syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" fold contains=@texFoldGroup,@NoSpell - syn region texSpellZone matchgroup=texComment start="%\s*spellzone_start" end="%\s*spellzone_end" fold contains=@Spell,@texFoldGroup + syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" fold contains=@texFoldGroup,@NoSpell + syn region texSpellZone matchgroup=texComment start="%\s*spellzone_start" end="%\s*spellzone_end" fold contains=@Spell,@texFoldGroup endif else - syn match texComment "%.*$" contains=@texCommentGroup + syn match texComment "%.*$" contains=@texCommentGroup if s:tex_fast =~ 'c' - syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell - syn region texSpellZone matchgroup=texComment start="%\s*spellzone_start" end="%\s*spellzone_end" contains=@Spell,@texFoldGroup + syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell + syn region texSpellZone matchgroup=texComment start="%\s*spellzone_start" end="%\s*spellzone_end" contains=@Spell,@texFoldGroup endif endif endif
--- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: Vim 7.4 script " Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz> -" Last Change: Jan 13, 2015 -" Version: 7.4-28 +" Last Change: Apr 02, 2015 +" Version: 7.4-33 " Automatically generated keyword lists: {{{1 " Quit when a syntax file was already loaded {{{2 @@ -18,23 +18,24 @@ syn keyword vimTodo contained COMBAK FIX syn cluster vimCommentGroup contains=vimTodo,@Spell " regular vim commands {{{2 -syn keyword vimCommand contained a arga[dd] ar[gs] bd[elete] bN[ext] breakl[ist] b[uffer] cad cb[uffer] cf[ile] changes cl[ist] cn[ext] col[der] conf[irm] cq[uit] cw[indow] delc[ommand] deletl delp diffpu[t] dir doau ea e[dit] endfo[r] ene[w] files fini[sh] foldd[oopen] g h helpt[ags] iabc[lear] intro k l lan lc[d] lefta[bove] lg[etfile] lla[st] lnew[er] lNf[ile] lockv[ar] ls lvimgrepa[dd] mat[ch] mk[exrc] mo n n[ext] nu[mber] opt[ions] pe[rl] pr prof[ile] ptj[ump] ptp[revious] py3 q r[ead] redr[aw] retu[rn] rub[y] rv[iminfo] sba[ll] sbN[ext] scripte[ncoding] setf[iletype] sh[ell] sim[alt] sm[ap] sni[ff] sor[t] spelli[nfo] spr[evious] start st[op] sunmenu syn ta tabf[ind] tabnew tabr[ewind] tcld[o] tj[ump] tN tr tu[nmenu] undoj[oin] uns[ilent] ve[rsion] vimgrepa[dd] vs[plit] winc[md] wN[ext] ws[verb] x[it] xnoremenu -syn keyword vimCommand contained ab argd[elete] argu[ment] bel[owright] bo[tright] br[ewind] buffers caddb[uffer] cc cfir[st] chd[ir] clo[se] cN[ext] colo[rscheme] con[tinue] cr[ewind] d delel deletp dep diffs[plit] di[splay] dp earlier el[se] endfun ex filet fir[st] foldo[pen] go[to] ha[rdcopy] hi if is[earch] keepa la lan[guage] lch[dir] lex[pr] lgr[ep] lli[st] lne[xt] lo lol[der] lt[ag] lw[indow] menut mks[ession] mod[e] nbc[lose] nmapc[lear] o ownsyntax perld[o] pre[serve] promptf[ind] ptl[ast] ptr[ewind] py3do qa[ll] rec[over] redraws[tatus] rew[ind] rubyd[o] sal[l] sbf[irst] sbp[revious] scrip[tnames] setg[lobal] si sl sme sno[magic] so[urce] spellr[epall] sre[wind] startg[replace] stopi[nsert] sus[pend] sync tab tabfir[st] tabn[ext] tabs tclf[ile] tl[ast] tn[ext] tr[ewind] u undol[ist] up[date] vert[ical] vi[sual] w windo wp[revious] wundo xmapc[lear] xunme -syn keyword vimCommand contained abc[lear] argdo as[cii] bf[irst] bp[revious] bro[wse] bun[load] cad[dexpr] ccl[ose] cgetb[uffer] che[ckpath] cmapc[lear] cnf com cope[n] cs de delep delf di difft[his] dj[ump] dr[op] ec elsei[f] endf[unction] exi[t] filetype fix[del] for gr[ep] h[elp] hid[e] ij[ump] isp[lit] keepalt lad la[st] lcl[ose] lf[ile] lgrepa[dd] lmak[e] lN[ext] loadk lop[en] lua ma menut[ranslate] mksp[ell] m[ove] nb[key] noa ol[dfiles] p po[p] prev[ious] promptr[epl] ptn pts[elect] pydo q[uit] red reg[isters] ri[ght] rubyf[ile] san[dbox] sbl[ast] sbr[ewind] scs setl[ocal] sig sla[st] smenu snoreme spe spellu[ndo] st star[tinsert] sts[elect] sv[iew] syncbind tabc[lose] tabl[ast] tabN[ext] ta[g] te[aroff] tm tN[ext] try un unh[ide] v vi viu[sage] wa[ll] winp[os] wq wv[iminfo] xme xunmenu -syn keyword vimCommand contained abo[veleft] arge[dit] au bl[ast] brea[k] bu bw[ipeout] caddf[ile] cd cgete[xpr] checkt[ime] cn cNf comc[lear] co[py] cscope debug d[elete] delf[unction] diffg[et] diffu[pdate] dl ds[earch] echoe[rr] em[enu] en[dif] exu[sage] fin fo[ld] fu grepa[dd] helpc[lose] his[tory] il[ist] iuna[bbrev] keepj[umps] laddb[uffer] lat lcs lfir[st] lh[elpgrep] lmapc[lear] lnf loadkeymap lpf[ile] luado mak[e] mes mkv mz nbs[tart] noautocmd omapc[lear] pc[lose] popu p[rint] ps[earch] ptN pu[t] pyf[ile] quita[ll] redi[r] res[ize] rightb[elow] rundo sa[rgument] sbm[odified] sb[uffer] scscope sf[ind] sign sl[eep] sn[ext] snoremenu spelld[ump] spellw[rong] sta[g] startr[eplace] sun[hide] sw[apname] syntime tabd[o] tabm[ove] tabo[nly] tags tf[irst] tm[enu] to[pleft] ts[elect] una[bbreviate] unl ve vie[w] vmapc[lear] wh[ile] win[size] wqa[ll] x xmenu xwininfo -syn keyword vimCommand contained al[l] argg[lobal] bad[d] bm[odified] breaka[dd] buf c cal[l] ce[nter] cg[etfile] cl cN cnf[ile] comp[iler] cpf[ile] cstag debugg[reedy] deletel dell diffo[ff] dig dli[st] dsp[lit] echom[sg] en endt[ry] f fina[lly] foldc[lose] fun gui helpf[ind] i imapc[lear] j[oin] kee[pmarks] lad[dexpr] later lcscope lgetb[uffer] l[ist] lN lNf lo[adview] lp[revious] luafile ma[rk] messages mkvie[w] mzf[ile] ne noh[lsearch] on[ly] pe popu[p] pro pta[g] ptn[ext] pw[d] py[thon] r red[o] ret[ab] ru ru[ntime] sav[eas] sbn[ext] scrip se[t] sfir[st] sil[ent] sm[agic] sN[ext] so spe[llgood] sp[lit] star stj[ump] sunme sy t tabe[dit] tabN tabp[revious] tc[l] th[row] tn tp[revious] tu u[ndo] unlo[ckvar] verb[ose] vim[grep] vne[w] win wn[ext] w[rite] xa[ll] xnoreme y[ank] -syn keyword vimCommand contained ar argl[ocal] ba[ll] bn[ext] breakd[el] bufdo cabc[lear] cat[ch] cex[pr] c[hange] cla[st] cnew[er] cNf[ile] con cp[revious] cuna[bbrev] del deletep delm[arks] diffp[atch] dig[raphs] do e echon endf endw[hile] f[ile] fin[d] folddoc[losed] fu[nction] gvim helpg[rep] ia in ju[mps] keepp[atterns] laddf[ile] lb[uffer] le[ft] lgete[xpr] ll lne lnf[ile] loc[kmarks] lr[ewind] lv[imgrep] marks mk mkv[imrc] mz[scheme] new noswap[file] o[pen] ped[it] pp[op] profd[el] ptf[irst] ptN[ext] py python3 re +syn keyword vimCommand contained a arga[dd] argl[ocal] ba[ll] bn[ext] breakd[el] bufdo cabc[lear] cb[uffer] cf[ile] changes cl[ist] cn[ext] col[der] conf[irm] cq[uit] cw[indow] delc[ommand] deletl delp diffpu[t] dir doau ea e[dit] endfo[r] ene[w] files fini[sh] foldd[oopen] g h helpt[ags] iabc[lear] intro k l lan lc[d] lefta[bove] lg[etfile] lla[st] lnew[er] lNf[ile] lockv[ar] ls lvimgrepa[dd] mat[ch] mk[exrc] mo n n[ext] nore on[ly] pe popu[p] pro pta[g] ptn[ext] pw[d] py[thon] r red[o] retu[rn] rub[y] rv[iminfo] sba[ll] sbN[ext] scripte[ncoding] setf[iletype] sh[ell] sl sme sno[magic] so[urce] spellr[epall] sre[wind] startg[replace] stopi[nsert] sus[pend] sync tab tabfir[st] tabn[ext] tabs tclf[ile] tl[ast] tn[ext] tr[ewind] u undol[ist] up[date] vert[ical] vi[sual] w windo wp[revious] wundo xmapc[lear] xprop +syn keyword vimCommand contained ab argd ar[gs] bd[elete] bN[ext] breakl[ist] b[uffer] cad[dbuffer] cc cfir[st] chd[ir] clo[se] cN[ext] colo[rscheme] con[tinue] cr[ewind] d delel deletp dep diffs[plit] di[splay] dp earlier el[se] endfun ex filet fir[st] foldo[pen] go[to] ha[rdcopy] hi if is[earch] keepa la lan[guage] lch[dir] lex[pr] lgr[ep] lli[st] lne[xt] lo lol[der] lt[ag] lw[indow] menut mks[ession] mod[e] nbc[lose] nmapc[lear] nos[wapfile] o[pen] ped[it] pp[op] profd[el] ptf[irst] ptN[ext] py python3 re redr[aw] rew[ind] rubyd[o] sal[l] sbf[irst] sbp[revious] scr[iptnames] setg[lobal] sig sla[st] smenu snoreme spe spellu[ndo] st star[tinsert] sts[elect] sv[iew] syncbind tabc[lose] tabl[ast] tabN[ext] ta[g] te[aroff] tm tN[ext] try un unh[ide] v vi viu[sage] wa[ll] winp[os] wq wv[iminfo] xme xunme +syn keyword vimCommand contained abc[lear] argd[elete] argu[ment] bel[owright] bo[tright] br[ewind] buffers cadde[xpr] ccl[ose] cgetb[uffer] che[ckpath] cmapc[lear] cnf com cope[n] cs de delep delf di difft[his] dj[ump] dr[op] ec elsei[f] endf[unction] exi[t] filetype fix[del] for gr[ep] h[elp] hid[e] ij[ump] isp[lit] keepalt lad la[st] lcl[ose] lf[ile] lgrepa[dd] lmak[e] lN[ext] loadk lop[en] lua ma menut[ranslate] mksp[ell] m[ove] nb[key] noa nu[mber] opt[ions] pe[rl] pr prof[ile] ptj[ump] ptp[revious] py3 q r[ead] redraws[tatus] ri[ght] rubyf[ile] san[dbox] sbl[ast] sbr[ewind] scs setl[ocal] sign sl[eep] sn[ext] snoremenu spelld[ump] spellw[rong] sta[g] startr[eplace] sun[hide] sw[apname] syntime tabd[o] tabm[ove] tabo[nly] tags tf[irst] tm[enu] to[pleft] ts[elect] una[bbreviate] unl ve vie[w] vmapc[lear] wh[ile] win[size] wqa[ll] x xmenu xunmenu +syn keyword vimCommand contained abo[veleft] argdo as[cii] bf[irst] bp[revious] bro[wse] bun[load] caddf[ile] cd cgete[xpr] checkt[ime] cn cNf comc[lear] co[py] cscope debug d[elete] delf[unction] diffg[et] diffu[pdate] dl ds[earch] echoe[rr] em[enu] en[dif] exu[sage] fin fo[ld] fu grepa[dd] helpc[lose] his[tory] il[ist] iuna[bbrev] keepj[umps] laddb[uffer] lat lcs lfir[st] lh[elpgrep] lmapc[lear] lnf loadkeymap lpf[ile] luado mak[e] mes mkv mz nbs[tart] noautocmd o ownsyntax perld[o] pre[serve] promptf[ind] ptl[ast] ptr[ewind] py3do qa[ll] rec[over] reg[isters] rightb[elow] rundo sa[rgument] sbm[odified] sb[uffer] scscope sf[ind] sil[ent] sm[agic] sN[ext] so spe[llgood] sp[lit] star stj[ump] sunme sy t tabe[dit] tabN tabp[revious] tc[l] th[row] tn tp[revious] tu u[ndo] unlo[ckvar] verb[ose] vim[grep] vne[w] win wn[ext] w[rite] xa[ll] xnoreme xwininfo +syn keyword vimCommand contained al[l] arge[dit] au bl[ast] brea[k] bu bw[ipeout] cal[l] ce[nter] cg[etfile] cl cN cnf[ile] comp[iler] cpf[ile] cstag debugg[reedy] deletel dell diffo[ff] dig dli[st] dsp[lit] echom[sg] en endt[ry] f fina[lly] foldc[lose] fun gui helpf[ind] i imapc[lear] j[oin] kee[pmarks] lad[dexpr] later lcscope lgetb[uffer] l[ist] lN lNf lo[adview] lp[revious] luafile ma[rk] messages mkvie[w] mzf[ile] ne noh[lsearch] ol[dfiles] p po[p] prev[ious] promptr[epl] ptn pts[elect] pydo q[uit] red res[ize] ru ru[ntime] sav[eas] sbn[ext] scr se[t] sfir[st] sim[alt] sm[ap] sni[ff] sor[t] spelli[nfo] spr[evious] start st[op] sunmenu syn ta tabf[ind] tabnew tabr[ewind] tcld[o] tj[ump] tN tr tu[nmenu] undoj[oin] uns[ilent] ve[rsion] vimgrepa[dd] vs[plit] winc[md] wN[ext] ws[verb] x[it] xnoremenu y[ank] +syn keyword vimCommand contained ar argg[lobal] bad[d] bm[odified] breaka[dd] buf c cat[ch] cex[pr] c[hange] cla[st] cnew[er] cNf[ile] con cp[revious] cuna[bbrev] del deletep delm[arks] diffp[atch] dig[raphs] do e echon endf endw[hile] f[ile] fin[d] folddoc[losed] fu[nction] gvim helpg[rep] ia in ju[mps] keepp[atterns] laddf[ile] lb[uffer] le[ft] lgete[xpr] ll lne lnf[ile] loc[kmarks] lr[ewind] lv[imgrep] marks mk mkv[imrc] mz[scheme] new nor omapc[lear] pc[lose] popu p[rint] ps[earch] ptN pu[t] pyf[ile] quita[ll] redi[r] ret[ab] syn match vimCommand contained "\<z[-+^.=]\=\>" syn keyword vimStdPlugin contained DiffOrig Man N[ext] P[rint] S TOhtml XMLent XMLns " vimOptions are caught only when contained in a vimSet {{{2 -syn keyword vimOption contained acd ambiwidth arabicshape autowriteall backupdir bdlay binary breakat bs casemap cf cink cmdheight colorcolumn completefunc copyindent cryptmethod cscopeverbose csverb debug dict dir eb enc errorbells expandtab fdl fenc fileencodings fkmap foldenable foldminlines formatprg gdefault gp guifontset helpfile hidden hl ignorecase imcmdline imsf indentexpr is isp keywordprg laststatus lisp loadplugins macatsui maxcombine mef mls modelines mousehide mp nu omnifunc paragraphs penc pm printdevice printoptions quoteescape remap rightleftcmd rtp sbo scrolljump sel shell shelltype shortname shq sm so spellfile spr st sts swapsync syn tag tb termbidi tgst titleold top ttimeoutlen ttyscroll ul ur verbosefile visualbell wcm wi wildmenu winfixwidth wm wrapscan -syn keyword vimOption contained ai ambw ari aw backupext beval biosk breakindent bsdir cb cfu cinkeys cmdwinheight columns completeopt cot cscopepathcomp cspc cuc deco dictionary directory ed encoding errorfile exrc fdls fencs fileformat flp foldexpr foldnestmax fp gfm grepformat guifontwide helpheight highlight hlg im imd imstatusfunc indentkeys isf isprint km lazyredraw lispwords lpl magic maxfuncdepth menuitems mm modifiable mousem mps number opendevice paste pex pmbcs printencoding prompt rdt renderoptions rl ru sbr scrolloff selection shellcmdflag shellxescape showbreak si smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tbi termencoding thesaurus titlestring tpm ttm ttytype undodir ut vfile vop wd wic wildmode winheight wmh write -syn keyword vimOption contained akm anti arshape awa backupskip bex bioskey breakindentopt bsk cc ch cino cmp com concealcursor cp cscopeprg csprg cul def diff display edcompatible endofline errorformat fcl fdm fex fileformats fml foldignore foldopen fs gfn grepprg guiheadroom helplang history hls imactivatefunc imdisable inc indk isfname joinspaces kmp lbr list ls makeef maxmapdepth mfd mmd modified mousemodel msm numberwidth operatorfunc pastetoggle pexpr pmbfn printexpr pt re report rlc ruf sc scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartindent sol spellsuggest sr stal sua swf syntax taglength tbidi terse tildeop tl tr tty tw undofile vb vi wa weirdinvert wig wildoptions winminheight wmnu writeany -syn keyword vimOption contained al antialias autochdir background balloondelay bexpr bk bri bt ccv charconvert cinoptions cms comments conceallevel cpo cscopequickfix csqf cursorbind define diffexpr dy ef eol esckeys fcs fdn ff fileignorecase fmr foldlevel foldtext fsync gfs gtl guioptions hf hk hlsearch imactivatekey imi include inex isi js kp lcs listchars lsp makeprg maxmem mh mmp more mouses mzq nuw opfunc patchexpr pfn popt printfont pumheight readonly restorescreen rnu ruler scb scs sessionoptions shellquote shiftround showfulltag sidescrolloff smarttab sp spf srr startofline suffixes switchbuf ta tagrelative tbis textauto timeout tm ts ttybuiltin tx undolevels vbs viewdir wak wfh wildchar wim winminwidth wmw writebackup -syn keyword vimOption contained aleph ar autoindent backspace ballooneval bg bkc briopt bufhidden cd ci cinw co commentstring confirm cpoptions cscoperelative csre cursorcolumn delcombine diffopt ea efm ep et fdc fdo ffs filetype fo foldlevelstart formatexpr ft gfw gtt guipty hh hkmap ic imaf iminsert includeexpr inf isident key langmap linebreak lm lw mat maxmempattern mis mmt mouse mouseshape mzquantum odev osfiletype patchmode ph preserveindent printheader pvh redrawtime revins ro rulerformat scr sect sft shellredir shiftwidth showmatch siso smc spc spl ss statusline suffixesadd sws tabline tags tbs textmode timeoutlen to tsl ttyfast uc undoreload vdir viewoptions warn wfw wildcharm winaltkeys winwidth wop writedelay -syn keyword vimOption contained allowrevins arab autoread backup balloonexpr bh bl brk buflisted cdpath cin cinwords cocu compatible consk cpt cscopetag cst cursorline dex digraph ead ei equalalways eventignore fde fdt fic fillchars foldclose foldmarker formatlistpat gcr ghr guicursor guitablabel hi hkmapp icon imak ims incsearch infercase isk keymap langmenu lines lmap lz matchpairs maxmemtot mkspellmem mod mousef mouset nf oft pa path pheader previewheight printmbcharset pvw regexpengine ri rop runtimepath scroll sections sh shellslash shm showmode sj smd spell splitbelow ssl stl sw sxe tabpagemax tagstack tenc textwidth title toolbar tsr ttym udf updatecount ve viminfo wb wh wildignore window wiv wrap ws -syn keyword vimOption contained altkeymap arabic autowrite backupcopy bdir bin bomb browsedir buftype cedit cindent clipboard cole complete conskey crb cscopetagorder csto cwh dg dip eadirection ek equalprg ex fdi fen fileencoding fk foldcolumn foldmethod formatoptions gd go guifont guitabtooltip hid hkp iconstring imc imsearch inde insertmode iskeyword keymodel langnoremap linespace lnr ma matchtime mco ml modeline mousefocus mousetime nrformats ofu para pdev pi previewwindow printmbfont qe relativenumber rightleft rs sb scrollbind secure shcf shelltemp shortmess showtabline slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tal term tf titlelen toolbariconsize ttimeout ttymouse udir updatetime verbose virtualedit wc whichwrap wildignorecase winfixheight wiw wrapmargin ww +syn keyword vimOption contained acd ambw ari aw backupext beval biosk breakindent bsdir cb cfu cinkeys cmdheight colorcolumn completefunc copyindent cryptmethod cscopeverbose csverb debug dict dir eb enc errorbells expandtab fdl fenc fileencodings fkmap foldenable foldminlines formatprg gdefault gp guifontset helpfile hidden hl ignorecase imcmdline imsf indentexpr is isp keywordprg laststatus lisp loadplugins macatsui maxcombine mef mls modelines mousehide mp nu omnifunc paragraphs penc pm printdevice printoptions quoteescape remap rightleftcmd rtp sbo scrolljump sel shell shelltype shortname shq sm so spellfile spr st sts swapsync syn tag tb termbidi tgst titleold top ttimeoutlen ttyscroll ul ur verbosefile visualbell wcm wi wildmenu winfixwidth wm wrapscan +syn keyword vimOption contained ai anti arshape awa backupskip bex bioskey breakindentopt bsk cc ch cino cmdwinheight columns completeopt cot cscopepathcomp cspc cuc deco dictionary directory ed encoding errorfile exrc fdls fencs fileformat flp foldexpr foldnestmax fp gfm grepformat guifontwide helpheight highlight hlg im imd imstatusfunc indentkeys isf isprint km lazyredraw lispwords lpl magic maxfuncdepth menuitems mm modifiable mousem mps number opendevice paste pex pmbcs printencoding prompt rdt renderoptions rl ru sbr scrolloff selection shellcmdflag shellxescape showbreak si smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tbi termencoding thesaurus titlestring tpm ttm ttytype undodir ut vfile vop wd wic wildmode winheight wmh write +syn keyword vimOption contained akm antialias autochdir background balloondelay bexpr bk bri bt ccv charconvert cinoptions cmp com concealcursor cp cscopeprg csprg cul def diff display edcompatible endofline errorformat fcl fdm fex fileformats fml foldignore foldopen fs gfn grepprg guiheadroom helplang history hls imactivatefunc imdisable inc indk isfname joinspaces kmp lbr list ls makeef maxmapdepth mfd mmd modified mousemodel msm numberwidth operatorfunc pastetoggle pexpr pmbfn printexpr pt re report rlc ruf sc scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartindent sol spellsuggest sr stal sua swf syntax taglength tbidi terse tildeop tl tr tty tw undofile vb vi wa weirdinvert wig wildoptions winminheight wmnu writeany +syn keyword vimOption contained al ar autoindent backspace ballooneval bg bkc briopt bufhidden cd ci cinw cms comments conceallevel cpo cscopequickfix csqf cursorbind define diffexpr dy ef eol esckeys fcs fdn ff fileignorecase fmr foldlevel foldtext fsync gfs gtl guioptions hf hk hlsearch imactivatekey imi include inex isi js kp lcs listchars lsp makeprg maxmem mh mmp more mouses mzq nuw opfunc patchexpr pfn popt printfont pumheight readonly restorescreen rnu ruler scb scs sessionoptions shellquote shiftround showfulltag sidescrolloff smarttab sp spf srr startofline suffixes switchbuf ta tagrelative tbis textauto timeout tm ts ttybuiltin tx undolevels vbs viewdir wak wfh wildchar wim winminwidth wmw writebackup +syn keyword vimOption contained aleph arab autoread backup balloonexpr bh bl brk buflisted cdpath cin cinwords co commentstring confirm cpoptions cscoperelative csre cursorcolumn delcombine diffopt ea efm ep et fdc fdo ffs filetype fo foldlevelstart formatexpr ft gfw gtt guipty hh hkmap ic imaf iminsert includeexpr inf isident key langmap linebreak lm lw mat maxmempattern mis mmt mouse mouseshape mzquantum odev osfiletype patchmode ph preserveindent printheader pvh redrawtime revins ro rulerformat scr sect sft shellredir shiftwidth showmatch siso smc spc spl ss statusline suffixesadd sws tabline tags tbs textmode timeoutlen to tsl ttyfast uc undoreload vdir viewoptions warn wfw wildcharm winaltkeys winwidth wop writedelay +syn keyword vimOption contained allowrevins arabic autowrite backupcopy bdir bin bomb browsedir buftype cedit cindent clipboard cocu compatible consk cpt cscopetag cst cursorline dex digraph ead ei equalalways eventignore fde fdt fic fillchars foldclose foldmarker formatlistpat gcr ghr guicursor guitablabel hi hkmapp icon imak ims incsearch infercase isk keymap langmenu lines lmap lz matchpairs maxmemtot mkspellmem mod mousef mouset nf oft pa path pheader previewheight printmbcharset pvw regexpengine ri rop runtimepath scroll sections sh shellslash shm showmode sj smd spell splitbelow ssl stl sw sxe tabpagemax tagstack tenc textwidth title toolbar tsr ttym udf updatecount ve viminfo wb wh wildignore window wiv wrap ws +syn keyword vimOption contained altkeymap arabicshape autowriteall backupdir bdlay binary breakat bs casemap cf cink cm cole complete conskey crb cscopetagorder csto cwh dg dip eadirection ek equalprg ex fdi fen fileencoding fk foldcolumn foldmethod formatoptions gd go guifont guitabtooltip hid hkp iconstring imc imsearch inde insertmode iskeyword keymodel langnoremap linespace lnr ma matchtime mco ml modeline mousefocus mousetime nrformats ofu para pdev pi previewwindow printmbfont qe relativenumber rightleft rs sb scrollbind secure shcf shelltemp shortmess showtabline slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tal term tf titlelen toolbariconsize ttimeout ttymouse udir updatetime verbose virtualedit wc whichwrap wildignorecase winfixheight wiw wrapmargin ww +syn keyword vimOption contained ambiwidth " vimOptions: These are the turn-off setting variants {{{2 syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobk nobuflisted nocin noconfirm nocopyindent nocscoperelative nocsre nocuc nocursorcolumn nodelcombine nodigraph noed noendofline noerrorbells noex nofen nofk nogd nohid nohkmap nohkp nohlsearch noicon noim noimcmdline noimdisable noinf noinsertmode nojoinspaces nolazyredraw nolinebreak nolist nolpl noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw norelativenumber norestorescreen nori 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 noundofile novisualbell nowarn noweirdinvert nowfw nowildignorecase nowinfixheight nowiv nowrap nowrite nowritebackup @@ -47,8 +48,8 @@ syn keyword vimOption contained invai in syn keyword vimOption contained invakm invanti invarab invari invautoindent invautowriteall invbackup invbin invbioskey invbomb invci invcompatible invconskey invcrb invcscopeverbose invcsverb invcursorbind invdeco invdiff inveb invek invequalalways invet invexrc invfileignorecase invfoldenable invguipty invhk " termcap codes (which can also be set) {{{2 -syn keyword vimOption contained t_AB t_al t_bc t_ce t_cl t_Co 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_SR t_so t_sr t_te t_ti t_ts t_u7 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 t_cs +syn keyword vimOption contained t_AB t_al t_bc t_ce t_cl t_Co 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_u7 t_ue t_us t_ut t_vb t_ve t_vi t_vs t_WP t_WS t_xn t_xs t_ZH t_ZR +syn keyword vimOption contained t_AF t_AL t_cd t_Ce t_cm t_cs t_CS syn match vimOption contained "t_%1" syn match vimOption contained "t_#2" syn match vimOption contained "t_#4" @@ -74,9 +75,9 @@ syn match vimHLGroup contained "Conceal" syn case match " Function Names {{{2 -syn keyword vimFuncName contained abs and argidx asin browse buflisted bufnr byteidx ceil cindent complete confirm cosh cursor did_filetype empty eventhandler exists expr8 filereadable finddir floor fnamemodify foldlevel foreground get getchar getcmdpos getcwd getfsize getline getpid getreg gettabwinvar getwinvar has hasmapto histget hlID indent inputdialog inputsave invert items len line localtime luaeval mapcheck matchaddpos matchend max mode nr2char pow pumvisible range reltimestr remote_peek remove resolve screenattr screenrow searchpair server2client setcmdpos setmatches setreg setwinvar shiftwidth sin sort spellbadword split str2float strchars strftime string strpart strtrans submatch synconcealed synIDattr synstack systemlist tabpagenr tagfiles tan tempname toupper trunc undofile uniq virtcol wildmenumode wincol winline winrestcmd winsaveview writefile -syn keyword vimFuncName contained acos append arglistid atan browsedir bufloaded bufwinnr byteidxcomp changenr clearmatches complete_add copy count deepcopy diff_filler escape executable exp extend filewritable findfile fmod foldclosed foldtext function getbufline getcharmod getcmdtype getfontname getftime getloclist getpos getregtype getwinposx glob has_key histadd histnr hostname index inputlist inputsecret isdirectory join libcall line2byte log map match matcharg matchlist min mzeval or prevnonblank py3eval readfile remote_expr remote_read rename reverse screenchar search searchpairpos serverlist setline setpos settabvar sha256 simplify sinh soundfold spellsuggest sqrt str2nr strdisplaywidth stridx strlen strridx strwidth substitute synID synIDtrans system tabpagebuflist tabpagewinnr taglist tanh tolower tr type undotree values visualmode winbufnr winheight winnr winrestview winwidth xor -syn keyword vimFuncName contained add argc argv atan2 bufexists bufname byte2line call char2nr col complete_check cos cscope_connection delete diff_hlID eval exepath expand feedkeys filter float2nr fnameescape foldclosedend foldtextresult garbagecollect getbufvar getcmdline getcurpos getfperm getftype getmatches getqflist gettabvar getwinposy globpath haslocaldir histdel hlexists iconv input inputrestore insert islocked keys libcallnr lispindent log10 maparg matchadd matchdelete matchstr mkdir nextnonblank pathshorten printf pyeval reltime remote_foreground remote_send repeat round screencol searchdecl searchpos setbufvar setloclist setqflist settabwinvar shellescape +syn keyword vimFuncName contained abs and argidx asin browse buflisted bufnr byteidx ceil cindent complete confirm cosh cursor did_filetype empty eventhandler exists expr8 filereadable finddir floor fnamemodify foldlevel foreground get getchar getcmdpos getcurpos getfperm getftype getmatches getqflist gettabvar getwinposy glob2regpat has_key histadd histnr hostname index inputlist inputsecret isdirectory join libcall line2byte log map match matcharg matchlist min mzeval or prevnonblank py3eval readfile remote_expr remote_read rename reverse screenchar search searchpairpos serverlist setline setpos settabvar sha256 simplify sort spellbadword split str2float strchars strftime string strpart strtrans submatch synconcealed synIDattr synstack systemlist tabpagenr tagfiles tan tempname toupper trunc undofile uniq virtcol wildmenumode wincol winline winrestcmd winsaveview writefile +syn keyword vimFuncName contained acos append arglistid atan browsedir bufloaded bufwinnr byteidxcomp changenr clearmatches complete_add copy count deepcopy diff_filler escape executable exp extend filewritable findfile fmod foldclosed foldtext function getbufline getcharmod getcmdtype getcwd getfsize getline getpid getreg gettabwinvar getwinvar globpath haslocaldir histdel hlexists iconv input inputrestore insert islocked keys libcallnr lispindent log10 maparg matchadd matchdelete matchstr mkdir nextnonblank pathshorten printf pyeval reltime remote_foreground remote_send repeat round screencol searchdecl searchpos setbufvar setloclist setqflist settabwinvar shellescape sin soundfold spellsuggest sqrt str2nr strdisplaywidth stridx strlen strridx strwidth substitute synID synIDtrans system tabpagebuflist tabpagewinnr taglist tanh tolower tr type undotree values visualmode winbufnr winheight winnr winrestview winwidth xor +syn keyword vimFuncName contained add argc argv atan2 bufexists bufname byte2line call char2nr col complete_check cos cscope_connection delete diff_hlID eval exepath expand feedkeys filter float2nr fnameescape foldclosedend foldtextresult garbagecollect getbufvar getcmdline getcmdwintype getfontname getftime getloclist getpos getregtype getwinposx glob has hasmapto histget hlID indent inputdialog inputsave invert items len line localtime luaeval mapcheck matchaddpos matchend max mode nr2char pow pumvisible range reltimestr remote_peek remove resolve screenattr screenrow searchpair server2client setcmdpos setmatches setreg setwinvar shiftwidth sinh "--- syntax here and above generated by mkvimvim --- " Special Vim Highlighting (not automatic) {{{1 @@ -105,9 +106,9 @@ syn match vimNumber "\%(^\|[^a-zA-Z]\)\z " All vimCommands are contained by vimIsCommands. {{{2 syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimIsCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd syn match vimIsCommand "\<\h\w*\>" contains=vimCommand -syn match vimVar "\<[bwglsav]:\K\k*\>" -syn match vimVar contained "\<\K\k*\>" -syn match vimFBVar contained "\<[bwglsav]:\K\k*\>" +syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>" +syn match vimVar "\<[bwglsav]:\h[a-zA-Z0-9#_]*\>" +syn match vimFBVar contained "\<[bwglsav]:\h[a-zA-Z0-9#_]*\>" syn keyword vimCommand contained in " Insertions And Appends: insert append {{{2 @@ -141,19 +142,19 @@ if exists("g:vimsyn_folding") && g:vimsy else syn region vimAugroup matchgroup=vimAugroupKey start="\<aug\%[roup]\>\ze\s\+\K\k*" end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList endif -syn match vimAugroup "aug\%[roup]!" contains=vimAugroupKey +syn match vimAugroup "aug\%[roup]!" contains=vimAugroupKey if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror") syn match vimAugroupError "\<aug\%[roup]\>\s\+[eE][nN][dD]\>" endif -"syn keyword vimAugroupKey contained aug[roup] +syn keyword vimAugroupKey contained aug[roup] " Operators: {{{2 " ========= syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue syn match vimOper "\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile -syn region vimOperParen oneline matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup -syn region vimOperParen oneline matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar +syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup +syn region vimOperParen matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror") syn match vimOperError ")" endif @@ -165,9 +166,9 @@ syn cluster vimFuncBodyList contains=vim syn match vimFunction "\<fu\%[nction]!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'f' - syn region vimFuncBody contained fold start="\ze(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList + syn region vimFuncBody contained fold start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList else - syn region vimFuncBody contained start="\ze(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList + syn region vimFuncBody contained start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList endif syn match vimFuncVar contained "a:\(\K\k*\|\d\+\)" syn match vimFuncSID contained "\c<sid>\|\<s:" @@ -190,14 +191,16 @@ syn match vimSpecFileMod "\(:[phtre]\)\+ " ======================= syn cluster vimUserCmdList contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFilter,vimFunc,vimFuncName,vimFunction,vimFunctionError,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine syn keyword vimUserCommand contained com[mand] -syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserCommand,@vimUserCmdList -syn match vimUserAttrb contained "-n\%[args]=[01*?+]" contains=vimUserAttrbKey,vimOper -syn match vimUserAttrb contained "-com\%[plete]=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError -syn match vimUserAttrb contained "-ra\%[nge]\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey -syn match vimUserAttrb contained "-cou\%[nt]=\d\+" contains=vimNumber,vimOper,vimUserAttrbKey -syn match vimUserAttrb contained "-bang\=\>" contains=vimOper,vimUserAttrbKey -syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey -syn match vimUserAttrb contained "-re\%[gister]\>" contains=vimOper,vimUserAttrbKey +syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList +syn match vimUserAttrbError contained "-\a\+\ze\s" +syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper +syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError +syn match vimUserAttrb contained "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey +syn match vimUserAttrb contained "-count\(=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey +syn match vimUserAttrb contained "-bang\>" contains=vimOper,vimUserAttrbKey +syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey +syn match vimUserAttrb contained "-buffer\>" contains=vimOper,vimUserAttrbKey +syn match vimUserAttrb contained "-register\>" contains=vimOper,vimUserAttrbKey if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror") syn match vimUserCmdError contained "\S\+\>" endif @@ -271,7 +274,7 @@ syn match vimMark "\<norm\%[al]\s\zs'[a- syn match vimMarkNumber "[-+]\d\+" nextgroup=vimSubst contained contains=vimOper syn match vimPlainMark contained "'[a-zA-Z0-9]" -syn match vimRegister '[^,;[{]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]' +syn match vimRegister '[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]' syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]' syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]' syn match vimRegister '@"' @@ -291,7 +294,7 @@ syn match vimCmplxRepeat '@[0-9a-z".=@:] syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar oneline syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar -syn match vimSetSep contained "[,:]" +syn match vimSetSep contained "[,:]" skipwhite nextgroup=vimCommand syn match vimSetMod contained "&vim\=\|[!&?<]\|all&" " Let {{{2 @@ -330,7 +333,7 @@ syn match vimMapMod contained "\c<\(buff syn match vimMapRhs contained ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue syn case ignore -syn keyword vimMapModKey contained buffer expr leader localleader plug script sid silent unique +syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique syn case match " Menus {{{2 @@ -348,7 +351,7 @@ syn match vimMenuBang "!" contained skip " Angle-Bracket Notation (tnx to Michael Geddes) {{{2 " ====================== syn case ignore -syn match vimNotation "\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k[0-9]\)\)>" contains=vimBracket +syn match vimNotation "\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k\d\>\)\)>" contains=vimBracket syn match vimNotation "\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>" contains=vimBracket syn match vimNotation "\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>" contains=vimBracket syn match vimNotation '\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket @@ -429,7 +432,7 @@ syn keyword vimSynType contained match s syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup syn match vimSynMtchOpt contained "\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>" if has("conceal") - syn match vimSynMtchOpt contained "\<cchar=" nextgroup=VimSynMtchCchar + syn match vimSynMtchOpt contained "\<cchar=" nextgroup=vimSynMtchCchar syn match vimSynMtchCchar contained "\S" endif syn cluster vimFuncBodyList add=vimSynMtchGroup @@ -510,17 +513,18 @@ endif syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList syn match vimHiStartStop contained "\c\(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList -syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError +syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib syn match vimHiTermcap contained "\S\+" contains=vimNotation +syn match vimHiNmbr contained '\d\+' " Highlight: clear {{{2 syn keyword vimHiClear contained clear nextgroup=vimHiGroup " Highlight: link {{{2 -syn region vimHiLink contained oneline matchgroup=vimCommand start="\<\(def\%[ault]\s\+\)\=link\>\|\<def\>" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation +syn region vimHiLink contained oneline matchgroup=vimCommand start="\(\<hi\%[ghlight]\s\+\)\@<=\(\(def\%[ault]\s\+\)\=link\>\|\<def\>\)" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation syn cluster vimFuncBodyList add=vimHiLink " Control Characters {{{2 @@ -549,27 +553,43 @@ syn region vimGlobal matchgroup=Statemen " 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 ~= 'l' : embed lua (but only if vim supports it) -" 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) +" g:vimsyn_embed =~ 'l' : embed lua (but only if vim supports it) +" 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 has("win32") || has("win95") || has("win64") || has("win16") + " apparently has("tcl") has been hanging vim on some windows systems with cygwin + let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$') +else + let s:trytcl= 1 +endif if !exists("g:vimsyn_embed") - let g:vimsyn_embed= "lmpPr" + " for default g:vimsyn_embed, determine what to allow based on whether this vim supports it + let g:vimsyn_embed= "" + if has("lua") |let g:vimsyn_embed= g:vimsyn_embed."l"|endif + if has("mzscheme") |let g:vimsyn_embed= g:vimsyn_embed."m"|endif + if has("perl") |let g:vimsyn_embed= g:vimsyn_embed."p"|endif + if has("python") |let g:vimsyn_embed= g:vimsyn_embed."P" + elseif has("python3")|let g:vimsyn_embed= g:vimsyn_embed."P"|endif + if has("ruby") |let g:vimsyn_embed= g:vimsyn_embed."r"|endif + if s:trytcl + if has("tcl") |let g:vimsyn_embed= g:vimsyn_embed."t"|endif + endif endif " [-- lua --] {{{3 let s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim") if !filereadable(s:luapath) - for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n") - if filereadable(fnameescape(s:luapath)) - let s:luapath= fnameescape(s:luapath) + for luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n") + if filereadable(luapath) + let s:luapath= fnameescape(luapath) break endif endfor endif -if (g:vimsyn_embed =~ 'l' && has("lua")) && filereadable(s:luapath) +if g:vimsyn_embed =~ 'l' && has("lua") && filereadable(s:luapath) unlet! b:current_syntax exe "syn include @vimLuaScript ".s:luapath if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'l' @@ -589,14 +609,14 @@ unlet s:luapath " [-- perl --] {{{3 let s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim") if !filereadable(s:perlpath) - for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n") - if filereadable(fnameescape(s:perlpath)) - let s:perlpath= fnameescape(s:perlpath) + for perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n") + if filereadable(fnameescape(perlpath)) + let s:perlpath= fnameescape(perlpath) break endif endfor endif -if (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(s:perlpath) +if g:vimsyn_embed =~ 'p' && has("perl") && filereadable(s:perlpath) unlet! b:current_syntax exe "syn include @vimPerlScript ".s:perlpath if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'p' @@ -616,14 +636,14 @@ unlet s:perlpath " [-- ruby --] {{{3 let s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim") if !filereadable(s:rubypath) - for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n") - if filereadable(fnameescape(s:rubypath)) - let s:rubypath= fnameescape(s:rubypath) + for rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n") + if filereadable(fnameescape(rubypath)) + let s:rubypath= fnameescape(rubypath) break endif endfor endif -if (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(s:rubypath) +if g:vimsyn_embed =~ 'r' && has("ruby") && filereadable(s:rubypath) unlet! b:current_syntax exe "syn include @vimRubyScript ".s:rubypath if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'r' @@ -642,9 +662,9 @@ unlet s:rubypath " [-- python --] {{{3 let s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim") if !filereadable(s:pythonpath) - for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n") - if filereadable(fnameescape(s:pythonpath)) - let s:pythonpath= fnameescape(s:pythonpath) + for pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n") + if filereadable(fnameescape(pythonpath)) + let s:pythonpath= fnameescape(pythonpath) break endif endfor @@ -673,18 +693,12 @@ endif unlet s:pythonpath " [-- tcl --] {{{3 -if has("win32") || has("win95") || has("win64") || has("win16") - " apparently has("tcl") has been hanging vim on some windows systems with cygwin - let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$') -else - let s:trytcl= 1 -endif if s:trytcl let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim") if !filereadable(s:tclpath) - for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n") - if filereadable(fnameescape(s:tclpath)) - let s:tclpath= fnameescape(s:tclpath) + for tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n") + if filereadable(fnameescape(tclpath)) + let s:tclpath= fnameescape(tclpath) break endif endfor @@ -714,9 +728,9 @@ unlet s:trytcl " [-- mzscheme --] {{{3 let s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim") if !filereadable(s:mzschemepath) - for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n") - if filereadable(fnameescape(s:mzschemepath)) - let s:mzschemepath= fnameescape(s:mzschemepath) + for mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n") + if filereadable(fnameescape(mzschemepath)) + let s:mzschemepath= fnameescape(mzschemepath) break endif endfor @@ -757,9 +771,6 @@ syn sync match vimAugroupSyncA groupther " Highlighting Settings {{{2 " ==================== -hi def link vimSubst1 vimSubst -hi def link vimBehaveModel vimBehave - if !exists("g:vimsyn_noerror") hi def link vimBehaveError vimError hi def link vimCollClassErr vimError @@ -781,22 +792,43 @@ endif hi def link vimAbb vimCommand hi def link vimAddress vimMark hi def link vimAugroupKey vimCommand +hi def link vimAuHighlight vimHighlight hi def link vimAutoCmdOpt vimOption hi def link vimAutoCmd vimCommand +hi def link vimAutoEvent Type hi def link vimAutoSet vimCommand +hi def link vimBehaveModel vimBehave hi def link vimBehave vimCommand +hi def link vimBracket Delimiter +hi def link vimCmplxRepeat SpecialChar +hi def link vimCommand Statement +hi def link vimComment Comment hi def link vimCommentString vimString +hi def link vimCommentTitle PreProc hi def link vimCondHL vimCommand +hi def link vimContinue Special +hi def link vimCtrlChar SpecialChar hi def link vimEchoHLNone vimGroup hi def link vimEchoHL vimCommand +hi def link vimElseIfErr Error hi def link vimElseif vimCondHL +hi def link vimEnvvar PreProc +hi def link vimError Error +hi def link vimFBVar vimVar hi def link vimFgBgAttrib vimHiAttrib +hi def link vimFold Folded hi def link vimFTCmd vimCommand hi def link vimFTOption vimSynType hi def link vimFuncKey vimCommand +hi def link vimFuncName Function +hi def link vimFuncSID Special +hi def link vimFuncVar Identifier hi def link vimGroupAdd vimSynOption hi def link vimGroupName vimGroup hi def link vimGroupRem vimSynOption +hi def link vimGroupSpecial Special +hi def link vimGroup Type +hi def link vimHiAttrib PreProc hi def link vimHiClear vimHighlight hi def link vimHiCtermFgBg vimHiTerm hi def link vimHiCTerm vimHiTerm @@ -806,111 +838,95 @@ hi def link vimHiGuiFgBg vimHiTerm hi def link vimHiGuiFont vimHiTerm hi def link vimHiGuiRgb vimNumber hi def link vimHiGui vimHiTerm +hi def link vimHiNmbr Number hi def link vimHiStartStop vimHiTerm +hi def link vimHiTerm Type hi def link vimHLGroup vimGroup +hi def link vimHLMod PreProc hi def link vimInsert vimString hi def link vimKeyCode vimSpecFile +hi def link vimKeyword Statement hi def link vimLet vimCommand hi def link vimLineComment vimComment hi def link vimMapBang vimCommand hi def link vimMapModKey vimFuncSID hi def link vimMapMod vimBracket hi def link vimMap vimCommand +hi def link vimMark Number hi def link vimMarkNumber vimNumber hi def link vimMenuMod vimMapMod hi def link vimMenuNameMore vimMenuName +hi def link vimMenuName PreProc hi def link vimMtchComment vimComment hi def link vimNorm vimCommand +hi def link vimNotation Special hi def link vimNotFunc vimCommand hi def link vimNotPatSep vimString +hi def link vimNumber Number +hi def link vimOperError Error +hi def link vimOper Operator +hi def link vimOption PreProc +hi def link vimParenSep Delimiter hi def link vimPatSepErr vimPatSep hi def link vimPatSepR vimPatSep +hi def link vimPatSep SpecialChar hi def link vimPatSepZone vimString hi def link vimPatSepZ vimPatSep +hi def link vimPattern Type hi def link vimPlainMark vimMark hi def link vimPlainRegister vimRegister +hi def link vimRegister SpecialChar +hi def link vimScriptDelim Comment +hi def link vimSearchDelim Statement hi def link vimSearch vimString +hi def link vimSep Delimiter hi def link vimSetMod vimOption +hi def link vimSetSep Statement hi def link vimSetString vimString +hi def link vimSpecFile Identifier hi def link vimSpecFileMod vimSpecFile +hi def link vimSpecial Type +hi def link vimStatement Statement hi def link vimStringCont vimString +hi def link vimString String +hi def link vimSubst1 vimSubst +hi def link vimSubstDelim Delimiter +hi def link vimSubstFlags Special +hi def link vimSubstSubstr SpecialChar hi def link vimSubstTwoBS vimString hi def link vimSubst vimCommand +hi def link vimSynCaseError Error +hi def link vimSynCase Type +hi def link vimSyncC Type +hi def link vimSyncError Error hi def link vimSyncGroupName vimGroupName hi def link vimSyncGroup vimGroupName +hi def link vimSyncKey Type +hi def link vimSyncNone Type hi def link vimSynContains vimSynOption +hi def link vimSynError Error hi def link vimSynKeyContainedin vimSynContains hi def link vimSynKeyOpt vimSynOption hi def link vimSynMtchGrp vimSynOption hi def link vimSynMtchOpt vimSynOption hi def link vimSynNextgroup vimSynOption hi def link vimSynNotPatRange vimSynRegPat +hi def link vimSynOption Special hi def link vimSynPatRange vimString hi def link vimSynRegOpt vimSynOption hi def link vimSynRegPat vimString +hi def link vimSynReg Type hi def link vimSyntax vimCommand hi def link vimSynType vimSpecial +hi def link vimTodo Todo hi def link vimUnmap vimMap +hi def link vimUserAttrbCmpltFunc Special hi def link vimUserAttrbCmplt vimSpecial hi def link vimUserAttrbKey vimOption hi def link vimUserAttrb vimSpecial +hi def link vimUserAttrbError Error +hi def link vimUserCmdError Error hi def link vimUserCommand vimCommand - -hi def link vimAutoEvent Type -hi def link vimBracket Delimiter -hi def link vimCmplxRepeat SpecialChar -hi def link vimCommand Statement -hi def link vimComment Comment -hi def link vimCommentTitle PreProc -hi def link vimContinue Special -hi def link vimCtrlChar SpecialChar -hi def link vimElseIfErr Error -hi def link vimEnvvar PreProc -hi def link vimError Error -hi def link vimFold Folded -hi def link vimFuncName Function -hi def link vimFuncSID Special -hi def link vimFuncVar Identifier -hi def link vimGroupSpecial Special -hi def link vimGroup Type -hi def link vimHiAttrib PreProc -hi def link vimHiTerm Type -hi def link vimHLMod PreProc -hi def link vimKeyword Statement -hi def link vimMark Number -hi def link vimMenuName PreProc -hi def link vimNotation Special -hi def link vimNumber Number -hi def link vimOperError Error -hi def link vimOper Operator -hi def link vimOption PreProc -hi def link vimParenSep Delimiter -hi def link vimPatSep SpecialChar -hi def link vimPattern Type -hi def link vimRegister SpecialChar -hi def link vimScriptDelim Comment -hi def link vimSearchDelim Statement -hi def link vimSep Delimiter -hi def link vimSetSep Statement -hi def link vimSpecFile Identifier -hi def link vimSpecial Type -hi def link vimStatement Statement -hi def link vimString String -hi def link vimSubstDelim Delimiter -hi def link vimSubstFlags Special -hi def link vimSubstSubstr SpecialChar -hi def link vimSynCaseError Error -hi def link vimSynCase Type -hi def link vimSyncC Type -hi def link vimSyncError Error -hi def link vimSyncKey Type -hi def link vimSyncNone Type -hi def link vimSynError Error -hi def link vimSynOption Special -hi def link vimSynReg Type -hi def link vimTodo Todo -hi def link vimUserAttrbCmpltFunc Special -hi def link vimUserCmdError Error hi def link vimUserFunc Normal hi def link vimVar Identifier hi def link vimWarn WarningMsg
--- a/runtime/syntax/yacc.vim +++ b/runtime/syntax/yacc.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: Yacc " Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz> -" Last Change: Jan 14, 2015 -" Version: 12 +" Last Change: Apr 02, 2015 +" Version: 13 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax " " Options: {{{1
--- a/runtime/tutor/tutor.de +++ b/runtime/tutor/tutor.de @@ -1,982 +1,982 @@ -=============================================================================== -= W i l l k o m m e n im V I M T u t o r - Version 1.7.de.1 = -=============================================================================== - - 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 verwenden. - 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 anwenden 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 Mal, 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. - -Anmerkung: 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. - -Anmerkung: 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 - - - !! Hinweis: 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. - -Anmerkung: :q! <ENTER> verwirft alle Änderungen, die Du gemacht hast. Einige - Lektionen später 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 über dem Zeichen steht, - das gelöscht werden soll. - - 3. Drücke die x Taste, um das unerwünschte Zeichen zu löschen. - - 4. Wiederhole die Schritte 2 bis 4, bis der Satz korrekt ist. - ----> Die Kkuh sprangg übberr deen Moond. - - 5. Nun, da 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, an der Text eingefügt werden soll. - - 3. Drücke i und gib die nötigen Ergänzungen ein. - - 4. Wenn jeweils ein Fehler beseitigt ist, drücke <ESC> , um zum Normalmodus - zurückzukehren. - Wiederhole 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. - Dabei ist gleichgültig, auf welchem Zeichen der Zeile der Cursor steht. - - 2. Drücke A und gib die erforderlichen 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 auszubessern. - ----> 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. ** - - !! Hinweis: 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! - Oder, falls du Zugriff zu einem anderen Terminal hast, führe das - Folgende dort aus. - - 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 darf. - - 3. Füge Text ein oder lösche ihn, wie Du in den vorangehenden Lektionen - gelernt hast. - - 4. Speichere die geänderte Datei und verlasse Vim mit: :wq <ENTER> - - 5. Falls Du in Schritt 1 den vimtutor beendet hast, starte vimtutor neu und - bewege dich abwärts bis zur 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 aus der Eingabeaufforderung zu starten, tippe: vim DATEI <ENTER> - - 3. Um Vim zu verlassen und alle Änderungen zu verwerfen, tippe: - <ESC> :q! <ENTER> . - - 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 Zeilenende - -Anmerkung: 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. - - Anmerkung: Der Buchstabe d erscheint auf der untersten Zeile des Schirms, - wenn Du ihn eingibst. Vim wartet darauf, dass Du w eingibst. Falls Du - ein anderes Zeichen als d siehst, hast Du etwas Falsches getippt; - drücke <ESC> und beginne noch einmal. - ----> 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 - 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 Zeilenende 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 vorgeht. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 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 aufgeführt). - - 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 letzten Zeichen. - - Dementsprechend löscht die Eingabe von de vom Cursor an bis zum Wortende. - -Anmerkung: 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 Nummern. - - ---> Dies ist nur eine Zeile aus Wörtern, 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. ** - - In der Kombination aus Löschoperator und Bewegungsschritt (siehe oben) - stellt man, um mehr zu löschen dem Schritt einen Zähler voran: - 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 darauffol- - genden 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, 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 einem 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 lernbar, ----> 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. - ----> Alf 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. - -Anmerkung: Erinnere Dich daran, 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. - -Beachte, 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. - -Anmerkung: 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 danach das - an dieser Stelle gewollte 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. ** - -Anmerkung: Lies diese gesamte Lektion, bevor Du irgendeinen Schritt ausführst!! - - 1. Halte die Ctrl Taste unten und drücke g . Dies nennen 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. - -Anmerkung: Möglicherweise siehst Du die Cursorposition in der unteren rechten - Bildschirmecke. Dies ist Auswirkung 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. Beachte, 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 noch weiter - zurückzugehen. CTRL-I geht vorwärts. - ----> Fehler schreibt sich nicht "Fehhler"; Fehhler ist ein Fehler -Anmerkung: 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 gegenüberliegenden Klammer ),], oder } zu finden. ** - - 1. Platziere den Cursor auf irgendeinem 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 passenden anderen Klammer zu bewegen. - - 5. Setze den Cursor auf ein anderes (,),[,],{ oder } und probiere % aus. - ----> Dies ( ist eine Testzeile ( mit [ verschiedenen ] { Klammern } darin. )) - -Anmerkung: 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> . Beachte, 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, dies ersetzt alle - Vorkommen von "diee" auf der Zeile. - ----> 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 Bereiches 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 Zeilen # zu ersetzen :#,#s/alt/neu/g - Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe :%s/alt/neu/g - Für eine jedesmalige 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 liefert - eine Auflistung deines Verzeichnisses; genauso, als wenn Du in der - Eingabeaufforderung wärst. Oder verwende :!dir , falls ls nicht geht. - -Anmerkung: Mit dieser Methode kann jedes beliebige externe Kommando - ausgeführt werden, auch mit Argumenten. - -Anmerkung: 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. - -Anmerkung: 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. - Beachte, dass 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, dass 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. - -Hinweis: Drücken von v startet die Visuelle Auswahl. Du kannst den Cursor - umherbewegen, um die Auswahl zu vergrößern oder zu verkleinern. Anschließend - lässt sich ein 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 direkt über dieser Zeile. - -BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 5.3 - sehen. Dann bewege Dich wieder ABWÄRTS, Lektion 5.4 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 - beachte, dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und - die eingefügte Dateiversion. - -Anmerkung: 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 Cursors 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 Cursors 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. - -Anmerkung: 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 dass diese das xxx ersetzt. - - 3. Drücke <ESC> , um den Ersetzungsmodus zu verlassen. Beachte, dass 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. - -Anmerkung: 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) - -Anmerkung: Du kannst y auch als Operator verwenden; yw kopiert ein Wort. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.5: OPTIONEN SETZEN - - ** Setze eine Option so, dass eine Suche oder 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. - Beachte, dass 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 - -Anmerkung: Um die Hervorhebung der Treffer zu entfernen, gib ein: :nohlsearch -Anmerkung: 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 Features 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 und <TAB> ** - - 1. Stelle sicher, dass 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 Kommandos: :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 Anfang einer existierenden Datei an: - :edit DAT - - 7. Drücke <TAB>. Vim vervollständigt den Namen (falls er eindeutig ist). - -Anmerkung: Vervollständigung funktioniert für viele Kommandos. Probiere - 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 mit deinen bevorzugter Einstellungen. - - 6. Drücke CTRL-D nach dem Tippen eines : Kommandos, um mögliche - Vervollständigungen anzusehen. - Drücke <TAB> , um eine Vervollständigung zu anzuwenden. - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Damit ist der Vim Tutor beendet. Seine Intention war, einen kurzen und - bündigen Überblick über den Vim Editor zu geben; 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 empfehlenswert : - 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 und 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 2015. E-Mail: Joachim.Hof@gmx.de - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +=============================================================================== += W i l l k o m m e n im V I M T u t o r - Version 1.7.de.1 = +=============================================================================== + + 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 verwenden. + 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 anwenden 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 Mal, 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. + +Anmerkung: 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. + +Anmerkung: 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 + + + !! Hinweis: 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. + +Anmerkung: :q! <ENTER> verwirft alle Änderungen, die Du gemacht hast. Einige + Lektionen später 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 über dem Zeichen steht, + das gelöscht werden soll. + + 3. Drücke die x Taste, um das unerwünschte Zeichen zu löschen. + + 4. Wiederhole die Schritte 2 bis 4, bis der Satz korrekt ist. + +---> Die Kkuh sprangg übberr deen Moond. + + 5. Nun, da 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, an der Text eingefügt werden soll. + + 3. Drücke i und gib die nötigen Ergänzungen ein. + + 4. Wenn jeweils ein Fehler beseitigt ist, drücke <ESC> , um zum Normalmodus + zurückzukehren. + Wiederhole 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. + Dabei ist gleichgültig, auf welchem Zeichen der Zeile der Cursor steht. + + 2. Drücke A und gib die erforderlichen 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 auszubessern. + +---> 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. ** + + !! Hinweis: 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! + Oder, falls du Zugriff zu einem anderen Terminal hast, führe das + Folgende dort aus. + + 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 darf. + + 3. Füge Text ein oder lösche ihn, wie Du in den vorangehenden Lektionen + gelernt hast. + + 4. Speichere die geänderte Datei und verlasse Vim mit: :wq <ENTER> + + 5. Falls Du in Schritt 1 den vimtutor beendet hast, starte vimtutor neu und + bewege dich abwärts bis zur 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 aus der Eingabeaufforderung zu starten, tippe: vim DATEI <ENTER> + + 3. Um Vim zu verlassen und alle Änderungen zu verwerfen, tippe: + <ESC> :q! <ENTER> . + + 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 Zeilenende + +Anmerkung: 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. + + Anmerkung: Der Buchstabe d erscheint auf der untersten Zeile des Schirms, + wenn Du ihn eingibst. Vim wartet darauf, dass Du w eingibst. Falls Du + ein anderes Zeichen als d siehst, hast Du etwas Falsches getippt; + drücke <ESC> und beginne noch einmal. + +---> 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 + 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 Zeilenende 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 vorgeht. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 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 aufgeführt). + + 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 letzten Zeichen. + + Dementsprechend löscht die Eingabe von de vom Cursor an bis zum Wortende. + +Anmerkung: 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 Nummern. + + ---> Dies ist nur eine Zeile aus Wörtern, 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. ** + + In der Kombination aus Löschoperator und Bewegungsschritt (siehe oben) + stellt man, um mehr zu löschen dem Schritt einen Zähler voran: + 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 darauffol- + genden 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, 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 einem 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 lernbar, +---> 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. + +---> Alf 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. + +Anmerkung: Erinnere Dich daran, 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. + +Beachte, 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. + +Anmerkung: 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 danach das + an dieser Stelle gewollte 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. ** + +Anmerkung: Lies diese gesamte Lektion, bevor Du irgendeinen Schritt ausführst!! + + 1. Halte die Ctrl Taste unten und drücke g . Dies nennen 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. + +Anmerkung: Möglicherweise siehst Du die Cursorposition in der unteren rechten + Bildschirmecke. Dies ist Auswirkung 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. Beachte, 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 noch weiter + zurückzugehen. CTRL-I geht vorwärts. + +---> Fehler schreibt sich nicht "Fehhler"; Fehhler ist ein Fehler +Anmerkung: 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 gegenüberliegenden Klammer ),], oder } zu finden. ** + + 1. Platziere den Cursor auf irgendeinem 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 passenden anderen Klammer zu bewegen. + + 5. Setze den Cursor auf ein anderes (,),[,],{ oder } und probiere % aus. + +---> Dies ( ist eine Testzeile ( mit [ verschiedenen ] { Klammern } darin. )) + +Anmerkung: 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> . Beachte, 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, dies ersetzt alle + Vorkommen von "diee" auf der Zeile. + +---> 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 Bereiches 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 Zeilen # zu ersetzen :#,#s/alt/neu/g + Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe :%s/alt/neu/g + Für eine jedesmalige 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 liefert + eine Auflistung deines Verzeichnisses; genauso, als wenn Du in der + Eingabeaufforderung wärst. Oder verwende :!dir , falls ls nicht geht. + +Anmerkung: Mit dieser Methode kann jedes beliebige externe Kommando + ausgeführt werden, auch mit Argumenten. + +Anmerkung: 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. + +Anmerkung: 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. + Beachte, dass 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, dass 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. + +Hinweis: Drücken von v startet die Visuelle Auswahl. Du kannst den Cursor + umherbewegen, um die Auswahl zu vergrößern oder zu verkleinern. Anschließend + lässt sich ein 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 direkt über dieser Zeile. + +BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 5.3 + sehen. Dann bewege Dich wieder ABWÄRTS, Lektion 5.4 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 + beachte, dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und + die eingefügte Dateiversion. + +Anmerkung: 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 Cursors 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 Cursors 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. + +Anmerkung: 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 dass diese das xxx ersetzt. + + 3. Drücke <ESC> , um den Ersetzungsmodus zu verlassen. Beachte, dass 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. + +Anmerkung: 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) + +Anmerkung: Du kannst y auch als Operator verwenden; yw kopiert ein Wort. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 6.5: OPTIONEN SETZEN + + ** Setze eine Option so, dass eine Suche oder 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. + Beachte, dass 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 + +Anmerkung: Um die Hervorhebung der Treffer zu entfernen, gib ein: :nohlsearch +Anmerkung: 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 Features 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 und <TAB> ** + + 1. Stelle sicher, dass 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 Kommandos: :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 Anfang einer existierenden Datei an: + :edit DAT + + 7. Drücke <TAB>. Vim vervollständigt den Namen (falls er eindeutig ist). + +Anmerkung: Vervollständigung funktioniert für viele Kommandos. Probiere + 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 mit deinen bevorzugter Einstellungen. + + 6. Drücke CTRL-D nach dem Tippen eines : Kommandos, um mögliche + Vervollständigungen anzusehen. + Drücke <TAB> , um eine Vervollständigung zu anzuwenden. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Damit ist der Vim Tutor beendet. Seine Intention war, einen kurzen und + bündigen Überblick über den Vim Editor zu geben; 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 empfehlenswert : + 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 und 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 2015. E-Mail: Joachim.Hof@gmx.de + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.de.utf-8 +++ b/runtime/tutor/tutor.de.utf-8 @@ -1,982 +1,982 @@ -=============================================================================== -= W i l l k o m m e n im V I M T u t o r - Version 1.7.de.1 = -=============================================================================== - - 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 verwenden. - 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 anwenden 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 Mal, 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. - -Anmerkung: 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. - -Anmerkung: 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 - - - !! Hinweis: 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. - -Anmerkung: :q! <ENTER> verwirft alle Änderungen, die Du gemacht hast. Einige - Lektionen später 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 über dem Zeichen steht, - das gelöscht werden soll. - - 3. Drücke die x Taste, um das unerwünschte Zeichen zu löschen. - - 4. Wiederhole die Schritte 2 bis 4, bis der Satz korrekt ist. - ----> Die Kkuh sprangg übberr deen Moond. - - 5. Nun, da 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, an der Text eingefügt werden soll. - - 3. Drücke i und gib die nötigen Ergänzungen ein. - - 4. Wenn jeweils ein Fehler beseitigt ist, drücke <ESC> , um zum Normalmodus - zurückzukehren. - Wiederhole 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. - Dabei ist gleichgültig, auf welchem Zeichen der Zeile der Cursor steht. - - 2. Drücke A und gib die erforderlichen 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 auszubessern. - ----> 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. ** - - !! Hinweis: 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! - Oder, falls du Zugriff zu einem anderen Terminal hast, führe das - Folgende dort aus. - - 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 darf. - - 3. Füge Text ein oder lösche ihn, wie Du in den vorangehenden Lektionen - gelernt hast. - - 4. Speichere die geänderte Datei und verlasse Vim mit: :wq <ENTER> - - 5. Falls Du in Schritt 1 den vimtutor beendet hast, starte vimtutor neu und - bewege dich abwärts bis zur 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 aus der Eingabeaufforderung zu starten, tippe: vim DATEI <ENTER> - - 3. Um Vim zu verlassen und alle Änderungen zu verwerfen, tippe: - <ESC> :q! <ENTER> . - - 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 Zeilenende - -Anmerkung: 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. - - Anmerkung: Der Buchstabe d erscheint auf der untersten Zeile des Schirms, - wenn Du ihn eingibst. Vim wartet darauf, dass Du w eingibst. Falls Du - ein anderes Zeichen als d siehst, hast Du etwas Falsches getippt; - drücke <ESC> und beginne noch einmal. - ----> 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 - 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 Zeilenende 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 vorgeht. - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 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 aufgeführt). - - 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 letzten Zeichen. - - Dementsprechend löscht die Eingabe von de vom Cursor an bis zum Wortende. - -Anmerkung: 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 Nummern. - - ---> Dies ist nur eine Zeile aus Wörtern, 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. ** - - In der Kombination aus Löschoperator und Bewegungsschritt (siehe oben) - stellt man, um mehr zu löschen dem Schritt einen Zähler voran: - 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 darauffol- - genden 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, 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 einem 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 lernbar, ----> 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. - ----> Alf 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. - -Anmerkung: Erinnere Dich daran, 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. - -Beachte, 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. - -Anmerkung: 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 danach das - an dieser Stelle gewollte 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. ** - -Anmerkung: Lies diese gesamte Lektion, bevor Du irgendeinen Schritt ausführst!! - - 1. Halte die Ctrl Taste unten und drücke g . Dies nennen 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. - -Anmerkung: Möglicherweise siehst Du die Cursorposition in der unteren rechten - Bildschirmecke. Dies ist Auswirkung 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. Beachte, 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 noch weiter - zurückzugehen. CTRL-I geht vorwärts. - ----> Fehler schreibt sich nicht "Fehhler"; Fehhler ist ein Fehler -Anmerkung: 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 gegenüberliegenden Klammer ),], oder } zu finden. ** - - 1. Platziere den Cursor auf irgendeinem 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 passenden anderen Klammer zu bewegen. - - 5. Setze den Cursor auf ein anderes (,),[,],{ oder } und probiere % aus. - ----> Dies ( ist eine Testzeile ( mit [ verschiedenen ] { Klammern } darin. )) - -Anmerkung: 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> . Beachte, 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, dies ersetzt alle - Vorkommen von "diee" auf der Zeile. - ----> 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 Bereiches 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 Zeilen # zu ersetzen :#,#s/alt/neu/g - Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe :%s/alt/neu/g - Für eine jedesmalige 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 liefert - eine Auflistung deines Verzeichnisses; genauso, als wenn Du in der - Eingabeaufforderung wärst. Oder verwende :!dir , falls ls nicht geht. - -Anmerkung: Mit dieser Methode kann jedes beliebige externe Kommando - ausgeführt werden, auch mit Argumenten. - -Anmerkung: 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. - -Anmerkung: 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. - Beachte, dass 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, dass 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. - -Hinweis: Drücken von v startet die Visuelle Auswahl. Du kannst den Cursor - umherbewegen, um die Auswahl zu vergrößern oder zu verkleinern. Anschließend - lässt sich ein 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 direkt über dieser Zeile. - -BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 5.3 - sehen. Dann bewege Dich wieder ABWÄRTS, Lektion 5.4 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 - beachte, dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und - die eingefügte Dateiversion. - -Anmerkung: 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 Cursors 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 Cursors 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. - -Anmerkung: 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 dass diese das xxx ersetzt. - - 3. Drücke <ESC> , um den Ersetzungsmodus zu verlassen. Beachte, dass 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. - -Anmerkung: 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) - -Anmerkung: Du kannst y auch als Operator verwenden; yw kopiert ein Wort. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Lektion 6.5: OPTIONEN SETZEN - - ** Setze eine Option so, dass eine Suche oder 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. - Beachte, dass 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 - -Anmerkung: Um die Hervorhebung der Treffer zu entfernen, gib ein: :nohlsearch -Anmerkung: 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 Features 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 und <TAB> ** - - 1. Stelle sicher, dass 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 Kommandos: :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 Anfang einer existierenden Datei an: - :edit DAT - - 7. Drücke <TAB>. Vim vervollständigt den Namen (falls er eindeutig ist). - -Anmerkung: Vervollständigung funktioniert für viele Kommandos. Probiere - 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 mit deinen bevorzugter Einstellungen. - - 6. Drücke CTRL-D nach dem Tippen eines : Kommandos, um mögliche - Vervollständigungen anzusehen. - Drücke <TAB> , um eine Vervollständigung zu anzuwenden. - - - - - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Damit ist der Vim Tutor beendet. Seine Intention war, einen kurzen und - bündigen Überblick über den Vim Editor zu geben; 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 empfehlenswert : - 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 und 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 2015. E-Mail: Joachim.Hof@gmx.de - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +=============================================================================== += W i l l k o m m e n im V I M T u t o r - Version 1.7.de.1 = +=============================================================================== + + 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 verwenden. + 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 anwenden 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 Mal, 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. + +Anmerkung: 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. + +Anmerkung: 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 + + + !! Hinweis: 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. + +Anmerkung: :q! <ENTER> verwirft alle Änderungen, die Du gemacht hast. Einige + Lektionen später 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 über dem Zeichen steht, + das gelöscht werden soll. + + 3. Drücke die x Taste, um das unerwünschte Zeichen zu löschen. + + 4. Wiederhole die Schritte 2 bis 4, bis der Satz korrekt ist. + +---> Die Kkuh sprangg übberr deen Moond. + + 5. Nun, da 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, an der Text eingefügt werden soll. + + 3. Drücke i und gib die nötigen Ergänzungen ein. + + 4. Wenn jeweils ein Fehler beseitigt ist, drücke <ESC> , um zum Normalmodus + zurückzukehren. + Wiederhole 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. + Dabei ist gleichgültig, auf welchem Zeichen der Zeile der Cursor steht. + + 2. Drücke A und gib die erforderlichen 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 auszubessern. + +---> 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. ** + + !! Hinweis: 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! + Oder, falls du Zugriff zu einem anderen Terminal hast, führe das + Folgende dort aus. + + 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 darf. + + 3. Füge Text ein oder lösche ihn, wie Du in den vorangehenden Lektionen + gelernt hast. + + 4. Speichere die geänderte Datei und verlasse Vim mit: :wq <ENTER> + + 5. Falls Du in Schritt 1 den vimtutor beendet hast, starte vimtutor neu und + bewege dich abwärts bis zur 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 aus der Eingabeaufforderung zu starten, tippe: vim DATEI <ENTER> + + 3. Um Vim zu verlassen und alle Änderungen zu verwerfen, tippe: + <ESC> :q! <ENTER> . + + 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 Zeilenende + +Anmerkung: 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. + + Anmerkung: Der Buchstabe d erscheint auf der untersten Zeile des Schirms, + wenn Du ihn eingibst. Vim wartet darauf, dass Du w eingibst. Falls Du + ein anderes Zeichen als d siehst, hast Du etwas Falsches getippt; + drücke <ESC> und beginne noch einmal. + +---> 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 + 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 Zeilenende 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 vorgeht. + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 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 aufgeführt). + + 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 letzten Zeichen. + + Dementsprechend löscht die Eingabe von de vom Cursor an bis zum Wortende. + +Anmerkung: 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 Nummern. + + ---> Dies ist nur eine Zeile aus Wörtern, 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. ** + + In der Kombination aus Löschoperator und Bewegungsschritt (siehe oben) + stellt man, um mehr zu löschen dem Schritt einen Zähler voran: + 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 darauffol- + genden 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, 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 einem 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 lernbar, +---> 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. + +---> Alf 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. + +Anmerkung: Erinnere Dich daran, 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. + +Beachte, 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. + +Anmerkung: 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 danach das + an dieser Stelle gewollte 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. ** + +Anmerkung: Lies diese gesamte Lektion, bevor Du irgendeinen Schritt ausführst!! + + 1. Halte die Ctrl Taste unten und drücke g . Dies nennen 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. + +Anmerkung: Möglicherweise siehst Du die Cursorposition in der unteren rechten + Bildschirmecke. Dies ist Auswirkung 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. Beachte, 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 noch weiter + zurückzugehen. CTRL-I geht vorwärts. + +---> Fehler schreibt sich nicht "Fehhler"; Fehhler ist ein Fehler +Anmerkung: 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 gegenüberliegenden Klammer ),], oder } zu finden. ** + + 1. Platziere den Cursor auf irgendeinem 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 passenden anderen Klammer zu bewegen. + + 5. Setze den Cursor auf ein anderes (,),[,],{ oder } und probiere % aus. + +---> Dies ( ist eine Testzeile ( mit [ verschiedenen ] { Klammern } darin. )) + +Anmerkung: 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> . Beachte, 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, dies ersetzt alle + Vorkommen von "diee" auf der Zeile. + +---> 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 Bereiches 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 Zeilen # zu ersetzen :#,#s/alt/neu/g + Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe :%s/alt/neu/g + Für eine jedesmalige 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 liefert + eine Auflistung deines Verzeichnisses; genauso, als wenn Du in der + Eingabeaufforderung wärst. Oder verwende :!dir , falls ls nicht geht. + +Anmerkung: Mit dieser Methode kann jedes beliebige externe Kommando + ausgeführt werden, auch mit Argumenten. + +Anmerkung: 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. + +Anmerkung: 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. + Beachte, dass 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, dass 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. + +Hinweis: Drücken von v startet die Visuelle Auswahl. Du kannst den Cursor + umherbewegen, um die Auswahl zu vergrößern oder zu verkleinern. Anschließend + lässt sich ein 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 direkt über dieser Zeile. + +BEACHTE: Nachdem Du Schritt 2 ausgeführt hast, wirst Du Text aus Lektion 5.3 + sehen. Dann bewege Dich wieder ABWÄRTS, Lektion 5.4 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 + beachte, dass es jetzt zwei Kopien von Lektion 5.3 gibt, das Original und + die eingefügte Dateiversion. + +Anmerkung: 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 Cursors 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 Cursors 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. + +Anmerkung: 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 dass diese das xxx ersetzt. + + 3. Drücke <ESC> , um den Ersetzungsmodus zu verlassen. Beachte, dass 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. + +Anmerkung: 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) + +Anmerkung: Du kannst y auch als Operator verwenden; yw kopiert ein Wort. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lektion 6.5: OPTIONEN SETZEN + + ** Setze eine Option so, dass eine Suche oder 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. + Beachte, dass 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 + +Anmerkung: Um die Hervorhebung der Treffer zu entfernen, gib ein: :nohlsearch +Anmerkung: 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 Features 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 und <TAB> ** + + 1. Stelle sicher, dass 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 Kommandos: :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 Anfang einer existierenden Datei an: + :edit DAT + + 7. Drücke <TAB>. Vim vervollständigt den Namen (falls er eindeutig ist). + +Anmerkung: Vervollständigung funktioniert für viele Kommandos. Probiere + 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 mit deinen bevorzugter Einstellungen. + + 6. Drücke CTRL-D nach dem Tippen eines : Kommandos, um mögliche + Vervollständigungen anzusehen. + Drücke <TAB> , um eine Vervollständigung zu anzuwenden. + + + + + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Damit ist der Vim Tutor beendet. Seine Intention war, einen kurzen und + bündigen Überblick über den Vim Editor zu geben; 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 empfehlenswert : + 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 und 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 2015. E-Mail: Joachim.Hof@gmx.de + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~