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
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~