changeset 1622:149d8b46404c

updated for version 7.2a
author vimboss
date Tue, 24 Jun 2008 22:09:24 +0000
parents 82b5078be2dd
children 53938adac247
files runtime/autoload/xml/html401t.vim runtime/autoload/xml/html40f.vim runtime/colors/README.txt runtime/compiler/perl.vim runtime/doc/arabic.txt runtime/doc/spell.txt runtime/doc/usr_01.txt runtime/doc/usr_11.txt runtime/doc/usr_27.txt runtime/doc/usr_28.txt runtime/doc/usr_40.txt runtime/doc/windows.txt runtime/ftplugin/denyhosts.vim runtime/ftplugin/php.vim runtime/ftplugin/vim.vim runtime/spell/pt/main.aap runtime/syntax/gitsendemail.vim runtime/syntax/mail.vim runtime/syntax/postscr.vim runtime/tutor/Filelist runtime/tutor/README_bindos.txt runtime/tutor/README_lang.txt runtime/tutor/README_srcdos.txt runtime/tutor/README_unix.txt runtime/tutor/runtime/filetype.vim runtime/tutor/runtime/ftoff.vim runtime/tutor/runtime/vim32x32.png runtime/tutor/runtime/vimlogo.xpm runtime/tutor/runtime/vimrc_example.vim runtime/tutor/tutor runtime/tutor/tutor.fr.utf-8 runtime/tutor/tutor.hr.cp1250 runtime/tutor/tutor.it.utf-8 src/INSTALL src/edit.c src/ops.c src/option.c src/option.h src/po/ja.sjis.po src/po/no.po src/po/zh_CN.cp936.po src/popupmnu.c src/proto/os_unix.pro src/structs.h src/vim.rc
diffstat 45 files changed, 6608 insertions(+), 318 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/autoload/xml/html401t.vim
+++ b/runtime/autoload/xml/html401t.vim
@@ -458,4 +458,3 @@ let g:xmldata_html401t = {
 \ 'param': ['/>', ''],
 \ }
 \ }
-" vim:ft=vim:ff=unix
--- a/runtime/autoload/xml/html40f.vim
+++ b/runtime/autoload/xml/html40f.vim
@@ -466,4 +466,3 @@ let g:xmldata_html40t = {
 \ 'param': ['/>', ''],
 \ }
 \ }
-" vim:ft=vim:ff=unix
--- a/runtime/colors/README.txt
+++ b/runtime/colors/README.txt
@@ -50,6 +50,9 @@ If you think you have a color scheme tha
 please check the following items:
 
 - Does it work in a color terminal as well as in the GUI?
+- Is "g:colors_name" set to a meaningful value?  In case of doubt you can do
+  it this way:
+  	let g:colors_name = expand('<sfile>:t:r')
 - Is 'background' either used or appropriately set to "light" or "dark"?
 - Try setting 'hlsearch' and searching for a pattern, is the match easy to
   spot?
--- a/runtime/compiler/perl.vim
+++ b/runtime/compiler/perl.vim
@@ -1,7 +1,7 @@
 " Vim Compiler File
 " Compiler:     Perl syntax checks (perl -Wc)
 " Maintainer:   Christian J. Robinson <infynity@onewest.net>
-" Last Change:  2004 Mar 27
+" Last Change:  2006 Aug 13
 
 if exists("current_compiler")
   finish
@@ -15,12 +15,20 @@ endif
 let s:savecpo = &cpo
 set cpo&vim
 
-if getline(1) =~# '-[^ ]*T'
-	CompilerSet makeprg=perl\ -WTc\ %
+if exists('g:perl_compiler_force_warnings') && g:perl_compiler_force_warnings == 0
+	let s:warnopt = 'w'
 else
-	CompilerSet makeprg=perl\ -Wc\ %
+	let s:warnopt = 'W'
 endif
 
+if getline(1) =~# '-[^ ]*T'
+	let s:taintopt = 'T'
+else
+	let s:taintopt = ''
+endif
+
+exe 'CompilerSet makeprg=perl\ -' . s:warnopt . s:taintopt . 'c\ %'
+
 CompilerSet errorformat=
 	\%-G%.%#had\ compilation\ errors.,
 	\%-G%.%#syntax\ OK,
--- a/runtime/doc/arabic.txt
+++ b/runtime/doc/arabic.txt
@@ -1,4 +1,4 @@
-*arabic.txt*	For Vim version 7.1.  Last change: 2005 Mar 29
+*arabic.txt*	For Vim version 7.2a.  Last change: 2005 Mar 29
 
 
 		  VIM REFERENCE MANUAL	  by Nadim Shaikli
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.1.  Last change: 2007 May 07
+*spell.txt*	For Vim version 7.2a.  Last change: 2008 Jun 21
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -21,7 +21,7 @@ vimspell" to find about it.  But you wil
 plugin and use the 'spell' option instead, it works better.
 
 ==============================================================================
-1. Quick start						*spell-quickstart*
+1. Quick start					*spell-quickstart* *E756*
 
 This command switches on spell checking: >
 
@@ -46,7 +46,7 @@ won't work.
 
 To search for the next misspelled word:
 
-							*]s* *E756*
+							*]s*
 ]s			Move to next misspelled word after the cursor.
 			A count before the command can be used to repeat.
 			'wrapscan' applies.
@@ -619,7 +619,8 @@ SPELL FILE MISSING		*spell-SpellFileMiss
 If the spell file for the language you are using is not available, you will
 get an error message.  But if the "spellfile.vim" plugin is active it will
 offer you to download the spell file.  Just follow the instructions, it will
-ask you where to write the file.
+ask you where to write the file (there must be a writable directory in
+'runtimepath' for this).
 
 The plugin has a default place where to look for spell files, on the Vim ftp
 server.  If you want to use another location or another protocol, set the
--- a/runtime/doc/usr_01.txt
+++ b/runtime/doc/usr_01.txt
@@ -1,4 +1,4 @@
-*usr_01.txt*	For Vim version 7.1.  Last change: 2006 Oct 08
+*usr_01.txt*	For Vim version 7.2a.  Last change: 2008 May 07
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -118,6 +118,9 @@ available, use the two-letter language c
 
 	vimtutor fr
 
+On Unix, if you prefer using the GUI version of Vim, use "gvimtutor" or
+"vimtutor -g" instead of "vimtutor".
+
 For OpenVMS, if Vim has been properly installed, you can start vimtutor from a
 VMS prompt with: >
 
--- a/runtime/doc/usr_11.txt
+++ b/runtime/doc/usr_11.txt
@@ -1,4 +1,4 @@
-*usr_11.txt*	For Vim version 7.1.  Last change: 2006 Apr 24
+*usr_11.txt*	For Vim version 7.2a.  Last change: 2006 Apr 24
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_27.txt
+++ b/runtime/doc/usr_27.txt
@@ -1,4 +1,4 @@
-*usr_27.txt*	For Vim version 7.1.  Last change: 2006 Apr 24
+*usr_27.txt*	For Vim version 7.2a.  Last change: 2007 Nov 10
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -516,7 +516,7 @@ items mentioned above can be combined.
 
 FINDING A CALIFORNIA LICENSE PLATE
 
-A sample license place number is "1MGU103".  It has one digit, three uppercase
+A sample license plate number is "1MGU103".  It has one digit, three uppercase
 letters and three digits.  Directly putting this into a search pattern: >
 
 	/\d\u\u\u\d\d\d
--- a/runtime/doc/usr_28.txt
+++ b/runtime/doc/usr_28.txt
@@ -1,4 +1,4 @@
-*usr_28.txt*	For Vim version 7.1.  Last change: 2006 Apr 24
+*usr_28.txt*	For Vim version 7.2a.  Last change: 2008 Jun 14
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -378,7 +378,7 @@ More about folding by expression in the 
 This is useful when you set the 'diff' option in the same window.  The
 |vimdiff| command does this for you.  Example: >
 
-	setlocal diff foldmethod=diff scrollbind nowrap foldlevel=1
+	:setlocal diff foldmethod=diff scrollbind nowrap foldlevel=1
 
 Do this in every window that shows a different version of the same file.  You
 will clearly see the differences between the files, while the text that didn't
@@ -389,7 +389,7 @@ For more details see |fold-diff|.
 ==============================================================================
 *28.10* Which fold method to use?
 
-All these possibilities makes you wonder which method you should chose.
+All these possibilities make you wonder which method you should chose.
 Unfortunately, there is no golden rule.  Here are some hints.
 
 If there is a syntax file with folding for the language you are editing, that
--- a/runtime/doc/usr_40.txt
+++ b/runtime/doc/usr_40.txt
@@ -1,4 +1,4 @@
-*usr_40.txt*	For Vim version 7.1.  Last change: 2006 Jun 21
+*usr_40.txt*	For Vim version 7.2a.  Last change: 2006 Jun 21
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt*   For Vim version 7.1.  Last change: 2007 Mar 17
+*windows.txt*   For Vim version 7.2a.  Last change: 2007 Oct 07
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -146,7 +146,7 @@ CTRL-W v						*CTRL-W_v*
 		1. a width was not specified,
 		2. 'equalalways' is set,
 		3. 'eadirection' isn't "ver", and
-		4. one of the other windows are wider than the current or new
+		4. one of the other windows is wider than the current or new
 		   window.
 		Note: In other places CTRL-Q does the same as CTRL-V, but here
 		it doesn't!
@@ -1033,8 +1033,8 @@ list of buffers. |unlisted-buffer|
 		[!].  This will also edit a buffer that is not in the buffer
 		list, without setting the 'buflisted' flag.
 
-:[N]b[uffer][!] {filename}
-		Edit buffer for {filename} from the buffer list.  See
+:[N]b[uffer][!] {bufname}
+		Edit buffer for {bufname} from the buffer list.  See
 		|:buffer-!| for [!].  This will also edit a buffer that is not
 		in the buffer list, without setting the 'buflisted' flag.
 
@@ -1045,8 +1045,8 @@ list of buffers. |unlisted-buffer|
 		also edit a buffer that is not in the buffer list, without
 		setting the 'buflisted' flag.
 
-:[N]sb[uffer] {filename}
-		Split window and edit buffer for {filename} from the buffer
+:[N]sb[uffer] {bufname}
+		Split window and edit buffer for {bufname} from the buffer
 		list.  This will also edit a buffer that is not in the buffer
 		list, without setting the 'buflisted' flag.
 		Note: If what you want to do is split the buffer, make a copy
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/denyhosts.vim
@@ -0,0 +1,18 @@
+" Vim filetype plugin file
+" Maintainer:       Nikolai Weibull <now@bitwi.se>
+" Latest Revision:  2007-09-18
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
+
+let s:cpo_save = &cpo
+set cpo&vim
--- a/runtime/ftplugin/php.vim
+++ b/runtime/ftplugin/php.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	php
 " Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2006 Jul 15
+" Last Changed: 2007 Nov 10
 " URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
@@ -42,7 +42,9 @@ endif
 " ###
 " Provided by Mikolaj Machowski <mikmach at wp dot pl>
 setlocal include=\\\(require\\\|include\\\)\\\(_once\\\)\\\?
-setlocal iskeyword+=$
+" Disabled changing 'iskeyword', it breaks a command such as "*"
+" setlocal iskeyword+=$
+
 if exists("loaded_matchit")
     let b:match_words = '<?php:?>,\<switch\>:\<endswitch\>,' .
 		      \ '\<if\>:\<elseif\>:\<else\>:\<endif\>,' .
@@ -55,15 +57,24 @@ if exists("loaded_matchit")
 endif
 " ###
 
-if exists('&ofu')
-  setlocal ofu=phpcomplete#CompletePHP
+if exists('&omnifunc')
+  setlocal omnifunc=phpcomplete#CompletePHP
 endif
 
+" Section jumping: [[ and ]] provided by Antony Scriven <adscriven at gmail dot com>
+let s:function = '\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function'
+let s:class = '\(abstract\s\+\|final\s\+\)*class'
+let s:interface = 'interface'
+let s:section = '\(.*\%#\)\@!\_^\s*\zs\('.s:function.'\|'.s:class.'\|'.s:interface.'\)'
+exe 'nno <buffer> <silent> [[ ?' . escape(s:section, '|') . '?<CR>:nohls<CR>'
+exe 'nno <buffer> <silent> ]] /' . escape(s:section, '|') . '/<CR>:nohls<CR>'
+exe 'ono <buffer> <silent> [[ ?' . escape(s:section, '|') . '?<CR>:nohls<CR>'
+exe 'ono <buffer> <silent> ]] /' . escape(s:section, '|') . '/<CR>:nohls<CR>'
 
 setlocal commentstring=/*%s*/
 
 " Undo the stuff we changed.
-let b:undo_ftplugin = "setlocal cms< inc< isk<" .
+let b:undo_ftplugin = "setlocal commentstring< include< omnifunc<" .
 	    \	      " | unlet! b:browsefilter b:match_words | " .
 	    \	      s:undo_ftplugin
 
--- a/runtime/ftplugin/vim.vim
+++ b/runtime/ftplugin/vim.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin
 " Language:	Vim
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 Sep 26
+" Last Change:	2008 Feb 27
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -33,14 +33,20 @@ endif
 setlocal commentstring=\"%s
 
 " Move around functions.
-noremap <silent><buffer> [[ m':call search('^\s*fu\%[nction]\>', "bW")<CR>
-noremap <silent><buffer> ]] m':call search('^\s*fu\%[nction]\>', "W")<CR>
-noremap <silent><buffer> [] m':call search('^\s*endf*\%[unction]\>', "bW")<CR>
-noremap <silent><buffer> ][ m':call search('^\s*endf*\%[unction]\>', "W")<CR>
+nnoremap <silent><buffer> [[ m':call search('^\s*fu\%[nction]\>', "bW")<CR>
+vnoremap <silent><buffer> [[ m':<C-U>exe "normal! gv"<Bar>call search('^\s*fu\%[nction]\>', "bW")<CR>
+nnoremap <silent><buffer> ]] m':call search('^\s*fu\%[nction]\>', "W")<CR>
+vnoremap <silent><buffer> ]] m':<C-U>exe "normal! gv"<Bar>call search('^\s*fu\%[nction]\>', "W")<CR>
+nnoremap <silent><buffer> [] m':call search('^\s*endf*\%[unction]\>', "bW")<CR>
+vnoremap <silent><buffer> [] m':<C-U>exe "normal! gv"<Bar>call search('^\s*endf*\%[unction]\>', "bW")<CR>
+nnoremap <silent><buffer> ][ m':call search('^\s*endf*\%[unction]\>', "W")<CR>
+vnoremap <silent><buffer> ][ m':<C-U>exe "normal! gv"<Bar>call search('^\s*endf*\%[unction]\>', "W")<CR>
 
 " Move around comments
-noremap <silent><buffer> ]" :call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR>
-noremap <silent><buffer> [" :call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR>
+nnoremap <silent><buffer> ]" :call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR>
+vnoremap <silent><buffer> ]" :<C-U>exe "normal! gv"<Bar>call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR>
+nnoremap <silent><buffer> [" :call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR>
+vnoremap <silent><buffer> [" :<C-U>exe "normal! gv"<Bar>call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR>
 
 " Let the matchit plugin know what items can be matched.
 if exists("loaded_matchit")
--- a/runtime/spell/pt/main.aap
+++ b/runtime/spell/pt/main.aap
@@ -1,19 +1,5 @@
 # Aap recipe for Portuguese Vim spell files.
 #
-# Based on a shell script by Leonardo Fontenelle.
-# His remarks:
-#
-# Makes a Vim pt dictionary from OpenOffice.org's pt_BR and pt_PT.
-#
-# AFAIK, will have to update the script every time a new dictionary is 
-# released for pt_BR. I asked the maintainer to update OOo's FTP site,
-# but it didn't happen yet. As for the pt_PT dictionary, they won't be
-# in OOo's FTP site for some time, because the Portuguese OOo project
-# decided to adapt the pt_BR dictionary, which is much more extensive.
-# I picked the Natura project unofficial dictionary, because it has been
-# developed by a team with linguists, and for a longer time. At least the
-# pt_PT dictionary has a "latest" file to make our lives easier.
-
 
 # Use a freshly compiled Vim if it exists.
 @if os.path.exists('../../../src/vim'):
@@ -33,13 +19,10 @@ PT_FNAME = myspell.pt-latest.zip
 :attr {fetch = $PT_DIR/%file%} $PT_FNAME
 
 #
-# Fetching the pt_BR files from BrOffice.org (Brazilian OOo) 2.1. Should be
-# updated really soon.
+# Fetching the pt_BR files from BrOffice.org (Brazilian OOo).
 #
-BR_BASENAME = pt_BR-2007-04-11
-BR_DIR = http://www.deso-se.com.br/downloads/download.php?arquivo=$BR_BASENAME
-BR_FNAME = $(BR_BASENAME).zip
-
+BR_FNAME = pt_BR-V.zip
+BR_DIR = http://www.deso-se.com.br/downloads/broffice.org/$(BR_FNAME)
 :attr {fetch = $BR_DIR} $BR_FNAME
 
 all: $SPELLDIR/pt.latin1.spl $SPELLDIR/pt.utf-8.spl \
@@ -58,8 +41,7 @@ all: $SPELLDIR/pt.latin1.spl $SPELLDIR/p
         :cat README_pt_PT.txt | :eval re.sub('\r', '', stdin) >>$target
         :print =================================================== >>$target
         :print pt_BR: >>$target
-        :print Information is in Leia-me.pdf, see $BR_DIR >>$target
-        :cat README_pt_BR.txt >>$target
+        :cat README_pt_BR.txt | :eval re.sub('\r', '', stdin) >>$target
 
 # The files don't depend on the .zip file so that we can delete it.
 # Only download the zip file if the targets don't exist.
@@ -85,19 +67,13 @@ pt_BR.aff pt_BR.dic: {buildcheck=}
         :fetch $BR_FNAME
         :sys $UNZIP $BR_FNAME
         :delete $BR_FNAME
-        :move Leia-me.pdf Leia-me_pt_BR.pdf
+        :sys $VIM README_pt_BR.TXT -e -c "set ff=unix" -c update -c q
+        :move README_pt_BR.TXT README_pt_BR.txt
 
-# 1. pt_BR.dic contains a cp1252-specific character.
-#    Changing it to its latin1 equivalent.
-# 2. Vim seems to ignore the dots from the word list.
-#    Removing words with dot to avoid misbehaviour.
-        :sys $VIM pt_BR.dic -e -c "set ff=unix" -c "%s/\%x92/'/g" -c "/\./d" -c update -c q
-
-# Removing /* ... */ header to avoid warnings.  Write it to the README file, it
-# contains the copyright notice.
-        :sys $VIM pt_BR.aff -e -c "set ff=unix" -c "/\/\*/,/\*\//w! README_pt_BR.txt" -c "/\/\*/,/\*\//+1d" -c update -c q
-
-        #:sys $VIM README_pt_BR.txt -e -c "set ff=unix" -c update -c q
+# Vim seems to ignore the dots from the word list.
+# Removing words with dot to avoid misbehaviour.
+        :sys $VIM pt_BR.dic -e -c "set ff=unix" -c "/\./d" -c update -c q
+        :sys $VIM pt_BR.aff -e -c "set ff=unix" -c update -c q
         @if not os.path.exists('pt_BR.orig.aff'):
             :copy pt_BR.aff pt_BR.orig.aff
         @if not os.path.exists('pt_BR.orig.dic'):
@@ -125,12 +101,12 @@ check: check-pt check-br
 
 check-pt:
         :assertpkg unzip diff
-        :fetch pt_PT.zip
+        :fetch $PT_FNAME
         :mkdir tmp
         :cd tmp
         @try:
             @import stat
-            :sys $UNZIP ../pt_PT.zip
+            :sys $UNZIP ../$PT_FNAME
             :sys {force} diff ../pt_PT.orig.aff pt_PT.aff >d
             @if os.stat('d')[stat.ST_SIZE] > 0:
                 :copy pt_PT.aff ../pt_PT.new.aff
@@ -140,16 +116,16 @@ check-pt:
         @finally:
             :cd ..
             :delete {r}{f}{q} tmp
-            :delete pt_PT.zip
+            :delete $PT_FNAME
 
 check-br:
         :assertpkg unzip diff
-        :fetch pt_BR.zip
+        :fetch $BR_FNAME
         :mkdir tmp
         :cd tmp
         @try:
             @import stat
-            :sys $UNZIP ../pt_BR.zip
+            :sys $UNZIP ../$BR_FNAME
             :sys {force} diff ../pt_BR.orig.aff pt_BR.aff >d
             @if os.stat('d')[stat.ST_SIZE] > 0:
                 :copy pt_BR.aff ../pt_BR.new.aff
@@ -159,6 +135,6 @@ check-br:
         @finally:
             :cd ..
             :delete {r}{f}{q} tmp
-            :delete pt_BR.zip
+            :delete $BR_FNAME
 
 # vim: set sts=4 sw=4 :
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/gitsendemail.vim
@@ -0,0 +1,19 @@
+" Vim syntax file
+" Language:	git send-email message
+" Maintainer:	Tim Pope
+" Filenames:	*.msg.[0-9]* (first line is "From ... # This line is ignored.")
+" Last Change:	2007 Dec 16
+
+if exists("b:current_syntax")
+    finish
+endif
+
+runtime! syntax/mail.vim
+syn case match
+
+syn match   gitsendemailComment "\%^From.*#.*"
+syn match   gitsendemailComment "^GIT:.*"
+
+hi def link gitsendemailComment Comment
+
+let b:current_syntax = "gitsendemail"
--- a/runtime/syntax/mail.vim
+++ b/runtime/syntax/mail.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:		Mail file
 " Previous Maintainer:	Felix von Leitner <leitner@math.fu-berlin.de>
-" Maintainer:		Gautam Iyer <gautam@math.uchicago.edu>
-" Last Change:		Wed 01 Jun 2005 02:11:07 PM CDT
+" Maintainer:		Gautam Iyer <gi1242@users.sourceforge.net>
+" Last Change:		Thu 17 Jan 2008 11:25:44 AM PST
 
 " Quit when a syntax file was already loaded
 if exists("b:current_syntax")
@@ -24,13 +24,15 @@ syn case match
 " emails
 " According to RFC 2822 any printable ASCII character can appear in a field
 " name, except ':'.
-syn region	mailHeader	contains=@mailHeaderFields,@NoSpell start="^From " skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1
-syn match	mailHeaderKey	contained contains=mailEmail,@NoSpell "^From\s.*$"
+syn region	mailHeader	contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1
+syn match	mailHeaderKey	contained contains=mailEmail,@NoSpell "^From\s.*\d\d\d\d$"
+" Usenet headers
+syn match	mailHeaderKey	contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(Newsgroups|Followup-To|Message-ID|Supersedes|Control):.*$"
 
 syn case ignore
 " Nothing else depends on case. Headers in properly quoted (with "> " or ">")
 " emails are matched
-syn region	mailHeader	keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1
+syn region	mailHeader	keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1
 
 syn region	mailHeaderKey	contained contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> ?)*)@<=(to|b?cc):" skip=",$" end="$"
 syn match	mailHeaderKey	contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$"
--- a/runtime/syntax/postscr.vim
+++ b/runtime/syntax/postscr.vim
@@ -2,16 +2,16 @@
 " Language:     PostScript - all Levels, selectable
 " Maintainer:   Mike Williams <mrw@eandem.co.uk>
 " Filenames:    *.ps,*.eps
-" Last Change:  27th June 2002
-" URL:		http://www.eandem.co.uk/mrw/vim
+" Last Change:  31st October 2007
+" URL:          http://www.eandem.co.uk/mrw/vim
 "
 " Options Flags:
-" postscr_level			- language level to use for highligting (1, 2, or 3)
-" postscr_display		- include display PS operators
-" postscr_ghostscript		- include GS extensions
-" postscr_fonts			- highlight standard font names (a lot for PS 3)
-" postscr_encodings		- highlight encoding names (there are a lot)
-" postscr_andornot_binary	- highlight and, or, and not as binary operators (not logical)
+" postscr_level                 - language level to use for highligting (1, 2, or 3)
+" postscr_display               - include display PS operators
+" postscr_ghostscript           - include GS extensions
+" postscr_fonts                 - highlight standard font names (a lot for PS 3)
+" postscr_encodings             - highlight encoding names (there are a lot)
+" postscr_andornot_binary       - highlight and, or, and not as binary operators (not logical)
 "
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -35,16 +35,16 @@ endif
 syn keyword postscrTodo contained  TODO
 
 " Comment
-syn match postscrComment	"%.*$" contains=postscrTodo
+syn match postscrComment        "%.*$" contains=postscrTodo,@Spell
 " DSC comment start line (NB: defines DSC level, not PS level!)
-syn match  postscrDSCComment    "^%!PS-Adobe-\d\+\.\d\+\s*.*$"
+syn match postscrDSCComment    	"^%!PS-Adobe-\d\+\.\d\+\s*.*$"
 " DSC comment line (no check on possible comments - another language!)
-syn match  postscrDSCComment    "^%%\u\+.*$" contains=@postscrString,@postscrNumber
+syn match postscrDSCComment    	"^%%\u\+.*$" contains=@postscrString,@postscrNumber,@Spell
 " DSC continuation line (no check that previous line is DSC comment)
-syn match  postscrDSCComment    "^%%+ *.*$" contains=@postscrString,@postscrNumber
+syn match  postscrDSCComment    "^%%+ *.*$" contains=@postscrString,@postscrNumber,@Spell
 
 " Names
-syn match postscrName		"\k\+"
+syn match postscrName           "\k\+"
 
 " Identifiers
 syn match postscrIdentifierError "/\{1,2}[[:space:]\[\]{}]"me=e-1
@@ -53,18 +53,18 @@ syn match postscrIdentifier     "/\{1,2}
 " Numbers
 syn case ignore
 " In file hex data - usually complete lines
-syn match postscrHex		"^[[:xdigit:]][[:xdigit:][:space:]]*$"
-"syn match postscrHex		 "\<\x\{2,}\>"
+syn match postscrHex            "^[[:xdigit:]][[:xdigit:][:space:]]*$"
+"syn match postscrHex            "\<\x\{2,}\>"
 " Integers
-syn match postscrInteger	"\<[+-]\=\d\+\>"
+syn match postscrInteger        "\<[+-]\=\d\+\>"
 " Radix
-syn match postscrRadix		"\d\+#\x\+\>"
+syn match postscrRadix          "\d\+#\x\+\>"
 " Reals - upper and lower case e is allowed
-syn match postscrFloat		"[+-]\=\d\+\.\>"
-syn match postscrFloat		"[+-]\=\d\+\.\d*\(e[+-]\=\d\+\)\=\>"
-syn match postscrFloat		"[+-]\=\.\d\+\(e[+-]\=\d\+\)\=\>"
-syn match postscrFloat		"[+-]\=\d\+e[+-]\=\d\+\>"
-syn cluster postscrNumber	contains=postscrInteger,postscrRadix,postscrFloat
+syn match postscrFloat          "[+-]\=\d\+\.\>"
+syn match postscrFloat          "[+-]\=\d\+\.\d*\(e[+-]\=\d\+\)\=\>"
+syn match postscrFloat          "[+-]\=\.\d\+\(e[+-]\=\d\+\)\=\>"
+syn match postscrFloat          "[+-]\=\d\+e[+-]\=\d\+\>"
+syn cluster postscrNumber       contains=postscrInteger,postscrRadix,postscrFloat
 syn case match
 
 " Escaped characters
@@ -75,7 +75,8 @@ syn match postscrSpecialChar    containe
 
 " Strings
 " ASCII strings
-syn region postscrASCIIString   start=+(+ end=+)+ skip=+([^)]*)+ contains=postscrSpecialChar,postscrSpecialCharError
+syn region postscrASCIIString   start=+(+ end=+)+ skip=+([^)]*)+ contains=postscrSpecialChar,postscrSpecialCharError,@Spell
+syn match postscrASCIIStringError ")"
 " Hex strings
 syn match postscrHexCharError   contained "[^<>[:xdigit:][:space:]]"
 syn region postscrHexString     start=+<\($\|[^<]\)+ end=+>+ contains=postscrHexCharError
@@ -342,61 +343,61 @@ endif
 " By default level 3 includes all level 2 operators
 if postscr_level == 2 || postscr_level == 3
 " Dictionary operators
-  syn match postscrOperator     "\(<<\|>>\)"
-  syn keyword postscrOperator   undef
+  syn match postscrL2Operator     "\(<<\|>>\)"
+  syn keyword postscrL2Operator   undef
   syn keyword postscrConstant   globaldict shareddict
 
 " Device operators
-  syn keyword postscrOperator   setpagedevice currentpagedevice
+  syn keyword postscrL2Operator   setpagedevice currentpagedevice
 
 " Path operators
-  syn keyword postscrOperator   rectclip setbbox uappend ucache upath ustrokepath arct
+  syn keyword postscrL2Operator   rectclip setbbox uappend ucache upath ustrokepath arct
 
 " Painting operators
-  syn keyword postscrOperator   rectfill rectstroke ufill ueofill ustroke
+  syn keyword postscrL2Operator   rectfill rectstroke ufill ueofill ustroke
 
 " Array operators
-  syn keyword postscrOperator   currentpacking setpacking packedarray
+  syn keyword postscrL2Operator   currentpacking setpacking packedarray
 
 " Misc operators
-  syn keyword postscrOperator   languagelevel
+  syn keyword postscrL2Operator   languagelevel
 
 " Insideness operators
-  syn keyword postscrOperator   infill ineofill instroke inufill inueofill inustroke
+  syn keyword postscrL2Operator   infill ineofill instroke inufill inueofill inustroke
 
 " GState operators
-  syn keyword postscrOperator   gstate setgstate currentgstate setcolor
-  syn keyword postscrOperator   setcolorspace currentcolorspace setstrokeadjust currentstrokeadjust
-  syn keyword postscrOperator   currentcolor
+  syn keyword postscrL2Operator   gstate setgstate currentgstate setcolor
+  syn keyword postscrL2Operator   setcolorspace currentcolorspace setstrokeadjust currentstrokeadjust
+  syn keyword postscrL2Operator   currentcolor
 
 " Device gstate operators
-  syn keyword postscrOperator   sethalftone currenthalftone setoverprint currentoverprint
-  syn keyword postscrOperator   setcolorrendering currentcolorrendering
+  syn keyword postscrL2Operator   sethalftone currenthalftone setoverprint currentoverprint
+  syn keyword postscrL2Operator   setcolorrendering currentcolorrendering
 
 " Character operators
-  syn keyword postscrConstant   GlobalFontDirectory SharedFontDirectory
-  syn keyword postscrOperator   glyphshow selectfont
-  syn keyword postscrOperator   addglyph undefinefont xshow xyshow yshow
+  syn keyword postscrL2Constant   GlobalFontDirectory SharedFontDirectory
+  syn keyword postscrL2Operator   glyphshow selectfont
+  syn keyword postscrL2Operator   addglyph undefinefont xshow xyshow yshow
 
 " Pattern operators
-  syn keyword postscrOperator   makepattern setpattern execform
+  syn keyword postscrL2Operator   makepattern setpattern execform
 
 " Resource operators
-  syn keyword postscrOperator   defineresource undefineresource findresource resourcestatus
-  syn keyword postscrRepeat     resourceforall
+  syn keyword postscrL2Operator   defineresource undefineresource findresource resourcestatus
+  syn keyword postscrL2Repeat     resourceforall
 
 " File operators
-  syn keyword postscrOperator   filter printobject writeobject setobjectformat currentobjectformat
+  syn keyword postscrL2Operator   filter printobject writeobject setobjectformat currentobjectformat
 
 " VM operators
-  syn keyword postscrOperator   currentshared setshared defineuserobject execuserobject undefineuserobject
-  syn keyword postscrOperator   gcheck scheck startjob currentglobal setglobal
+  syn keyword postscrL2Operator   currentshared setshared defineuserobject execuserobject undefineuserobject
+  syn keyword postscrL2Operator   gcheck scheck startjob currentglobal setglobal
   syn keyword postscrConstant   UserObjects
 
 " Interpreter operators
-  syn keyword postscrOperator   setucacheparams setvmthreshold ucachestatus setsystemparams
-  syn keyword postscrOperator   setuserparams currentuserparams setcacheparams currentcacheparams
-  syn keyword postscrOperator   currentdevparams setdevparams vmreclaim currentsystemparams
+  syn keyword postscrL2Operator   setucacheparams setvmthreshold ucachestatus setsystemparams
+  syn keyword postscrL2Operator   setuserparams currentuserparams setcacheparams currentcacheparams
+  syn keyword postscrL2Operator   currentdevparams setdevparams vmreclaim currentsystemparams
 
 " PS2 constants
   syn keyword postscrConstant   contained DeviceCMYK Pattern Indexed Separation Cyan Magenta Yellow Black
@@ -491,52 +492,52 @@ if postscr_level == 2 || postscr_level =
   syn keyword postscrConstant   contained Predictor
 
 " Paper Size operators
-  syn keyword postscrOperator   letter lettersmall legal ledger 11x17 a4 a3 a4small b5 note
+  syn keyword postscrL2Operator   letter lettersmall legal ledger 11x17 a4 a3 a4small b5 note
 
 " Paper Tray operators
-  syn keyword postscrOperator   lettertray legaltray ledgertray a3tray a4tray b5tray 11x17tray
+  syn keyword postscrL2Operator   lettertray legaltray ledgertray a3tray a4tray b5tray 11x17tray
 
 " SCC compatibility operators
-  syn keyword postscrOperator   sccbatch sccinteractive setsccbatch setsccinteractive
+  syn keyword postscrL2Operator   sccbatch sccinteractive setsccbatch setsccinteractive
 
 " Page duplexing operators
-  syn keyword postscrOperator   duplexmode firstside newsheet setduplexmode settumble tumble
+  syn keyword postscrL2Operator   duplexmode firstside newsheet setduplexmode settumble tumble
 
 " Device compatability operators
-  syn keyword postscrOperator   devdismount devformat devmount devstatus
-  syn keyword postscrRepeat     devforall
+  syn keyword postscrL2Operator   devdismount devformat devmount devstatus
+  syn keyword postscrL2Repeat     devforall
 
 " Imagesetter compatability operators
-  syn keyword postscrOperator   accuratescreens checkscreen pagemargin pageparams setaccuratescreens setpage
-  syn keyword postscrOperator   setpagemargin setpageparams
+  syn keyword postscrL2Operator   accuratescreens checkscreen pagemargin pageparams setaccuratescreens setpage
+  syn keyword postscrL2Operator   setpagemargin setpageparams
 
 " Misc compatability operators
-  syn keyword postscrOperator   appletalktype buildtime byteorder checkpassword defaulttimeouts diskonline
-  syn keyword postscrOperator   diskstatus manualfeed manualfeedtimeout margins mirrorprint pagecount
-  syn keyword postscrOperator   pagestackorder printername processcolors sethardwareiomode setjobtimeout
-  syn keyword postscrOperator   setpagestockorder setprintername setresolution doprinterrors dostartpage
-  syn keyword postscrOperator   hardwareiomode initializedisk jobname jobtimeout ramsize realformat resolution
-  syn keyword postscrOperator   setdefaulttimeouts setdoprinterrors setdostartpage setdosysstart
-  syn keyword postscrOperator   setuserdiskpercent softwareiomode userdiskpercent waittimeout
-  syn keyword postscrOperator   setsoftwareiomode dosysstart emulate setmargins setmirrorprint
+  syn keyword postscrL2Operator   appletalktype buildtime byteorder checkpassword defaulttimeouts diskonline
+  syn keyword postscrL2Operator   diskstatus manualfeed manualfeedtimeout margins mirrorprint pagecount
+  syn keyword postscrL2Operator   pagestackorder printername processcolors sethardwareiomode setjobtimeout
+  syn keyword postscrL2Operator   setpagestockorder setprintername setresolution doprinterrors dostartpage
+  syn keyword postscrL2Operator   hardwareiomode initializedisk jobname jobtimeout ramsize realformat resolution
+  syn keyword postscrL2Operator   setdefaulttimeouts setdoprinterrors setdostartpage setdosysstart
+  syn keyword postscrL2Operator   setuserdiskpercent softwareiomode userdiskpercent waittimeout
+  syn keyword postscrL2Operator   setsoftwareiomode dosysstart emulate setmargins setmirrorprint
 
 endif " PS2 highlighting
 
 if postscr_level == 3
 " Shading operators
-  syn keyword postscrOperator   setsmoothness currentsmoothness shfill
+  syn keyword postscrL3Operator setsmoothness currentsmoothness shfill
 
 " Clip operators
-  syn keyword postscrOperator   clipsave cliprestore
+  syn keyword postscrL3Operator clipsave cliprestore
 
 " Pagedevive operators
-  syn keyword postscrOperator   setpage setpageparams
+  syn keyword postscrL3Operator setpage setpageparams
 
 " Device gstate operators
-  syn keyword postscrOperator   findcolorrendering
+  syn keyword postscrL3Operator findcolorrendering
 
 " Font operators
-  syn keyword postscrOperator   composefont
+  syn keyword postscrL3Operator composefont
 
 " PS LL3 Output device resource entries
   syn keyword postscrConstant   contained DeviceN TrappingDetailsType
@@ -658,56 +659,56 @@ endif " PS LL3 highlighting
 
 if exists("postscr_ghostscript")
   " GS gstate operators
-  syn keyword postscrOperator   .setaccuratecurves .currentaccuratecurves .setclipoutside
-  syn keyword postscrOperator   .setdashadapt .currentdashadapt .setdefaultmatrix .setdotlength
-  syn keyword postscrOperator   .currentdotlength .setfilladjust2 .currentfilladjust2
-  syn keyword postscrOperator   .currentclipoutside .setcurvejoin .currentcurvejoin
-  syn keyword postscrOperator   .setblendmode .currentblendmode .setopacityalpha .currentopacityalpha .setshapealpha .currentshapealpha
-  syn keyword postscrOperator   .setlimitclamp .currentlimitclamp .setoverprintmode .currentoverprintmode
+  syn keyword postscrGSOperator   .setaccuratecurves .currentaccuratecurves .setclipoutside
+  syn keyword postscrGSOperator   .setdashadapt .currentdashadapt .setdefaultmatrix .setdotlength
+  syn keyword postscrGSOperator   .currentdotlength .setfilladjust2 .currentfilladjust2
+  syn keyword postscrGSOperator   .currentclipoutside .setcurvejoin .currentcurvejoin
+  syn keyword postscrGSOperator   .setblendmode .currentblendmode .setopacityalpha .currentopacityalpha .setshapealpha .currentshapealpha
+  syn keyword postscrGSOperator   .setlimitclamp .currentlimitclamp .setoverprintmode .currentoverprintmode
 
   " GS path operators
-  syn keyword postscrOperator   .dashpath .rectappend
+  syn keyword postscrGSOperator   .dashpath .rectappend
 
   " GS painting operators
-  syn keyword postscrOperator   .setrasterop .currentrasterop .setsourcetransparent
-  syn keyword postscrOperator   .settexturetransparent .currenttexturetransparent
-  syn keyword postscrOperator   .currentsourcetransparent
+  syn keyword postscrGSOperator   .setrasterop .currentrasterop .setsourcetransparent
+  syn keyword postscrGSOperator   .settexturetransparent .currenttexturetransparent
+  syn keyword postscrGSOperator   .currentsourcetransparent
 
   " GS character operators
-  syn keyword postscrOperator   .charboxpath .type1execchar %Type1BuildChar %Type1BuildGlyph
+  syn keyword postscrGSOperator   .charboxpath .type1execchar %Type1BuildChar %Type1BuildGlyph
 
   " GS mathematical operators
-  syn keyword postscrMathOperator arccos arcsin
+  syn keyword postscrGSMathOperator arccos arcsin
 
   " GS dictionary operators
-  syn keyword postscrOperator   .dicttomark .forceput .forceundef .knownget .setmaxlength
+  syn keyword postscrGSOperator   .dicttomark .forceput .forceundef .knownget .setmaxlength
 
   " GS byte and string operators
-  syn keyword postscrOperator   .type1encrypt .type1decrypt
-  syn keyword postscrOperator   .bytestring .namestring .stringmatch
+  syn keyword postscrGSOperator   .type1encrypt .type1decrypt
+  syn keyword postscrGSOperator   .bytestring .namestring .stringmatch
 
   " GS relational operators (seem like math ones to me!)
-  syn keyword postscrMathOperator max min
+  syn keyword postscrGSMathOperator max min
 
   " GS file operators
-  syn keyword postscrOperator   findlibfile unread writeppmfile
-  syn keyword postscrOperator   .filename .fileposition .peekstring .unread
+  syn keyword postscrGSOperator   findlibfile unread writeppmfile
+  syn keyword postscrGSOperator   .filename .fileposition .peekstring .unread
 
   " GS vm operators
-  syn keyword postscrOperator   .forgetsave
+  syn keyword postscrGSOperator   .forgetsave
 
   " GS device operators
-  syn keyword postscrOperator   copydevice .getdevice makeimagedevice makewordimagedevice copyscanlines
-  syn keyword postscrOperator   setdevice currentdevice getdeviceprops putdeviceprops flushpage
-  syn keyword postscrOperator   finddevice findprotodevice .getbitsrect
+  syn keyword postscrGSOperator   copydevice .getdevice makeimagedevice makewordimagedevice copyscanlines
+  syn keyword postscrGSOperator   setdevice currentdevice getdeviceprops putdeviceprops flushpage
+  syn keyword postscrGSOperator   finddevice findprotodevice .getbitsrect
 
   " GS misc operators
-  syn keyword postscrOperator   getenv .makeoperator .setdebug .oserrno .oserror .execn
+  syn keyword postscrGSOperator   getenv .makeoperator .setdebug .oserrno .oserror .execn
 
   " GS rendering stack operators
-  syn keyword postscrOperator   .begintransparencygroup .discardtransparencygroup .endtransparencygroup
-  syn keyword postscrOperator   .begintransparencymask .discardtransparencymask .endtransparencymask .inittransparencymask
-  syn keyword postscrOperator   .settextknockout .currenttextknockout
+  syn keyword postscrGSOperator   .begintransparencygroup .discardtransparencygroup .endtransparencygroup
+  syn keyword postscrGSOperator   .begintransparencymask .discardtransparencymask .endtransparencymask .inittransparencymask
+  syn keyword postscrGSOperator   .settextknockout .currenttextknockout
 
   " GS filters
   syn keyword postscrConstant   contained BCPEncode BCPDecode eexecEncode eexecDecode PCXDecode
@@ -739,42 +740,55 @@ if version >= 508 || !exists("did_postsc
     command -nargs=+ HiLink hi def link <args>
   endif
 
-  HiLink postscrComment		Comment
+  HiLink postscrComment         Comment
 
-  HiLink postscrConstant	Constant
-  HiLink postscrString		String
-  HiLink postscrASCIIString	postscrString
-  HiLink postscrHexString	postscrString
-  HiLink postscrASCII85String	postscrString
-  HiLink postscrNumber		Number
-  HiLink postscrInteger		postscrNumber
-  HiLink postscrHex		postscrNumber
-  HiLink postscrRadix		postscrNumber
-  HiLink postscrFloat		Float
-  HiLink postscrBoolean		Boolean
+  HiLink postscrConstant        Constant
+  HiLink postscrString          String
+  HiLink postscrASCIIString     postscrString
+  HiLink postscrHexString       postscrString
+  HiLink postscrASCII85String   postscrString
+  HiLink postscrNumber          Number
+  HiLink postscrInteger         postscrNumber
+  HiLink postscrHex             postscrNumber
+  HiLink postscrRadix           postscrNumber
+  HiLink postscrFloat           Float
+  HiLink postscrBoolean         Boolean
+
+  HiLink postscrIdentifier      Identifier
+  HiLink postscrProcedure       Function
 
-  HiLink postscrIdentifier	Identifier
-  HiLink postscrProcedure	Function
-
-  HiLink postscrName		Statement
-  HiLink postscrConditional	Conditional
-  HiLink postscrRepeat		Repeat
-  HiLink postscrOperator	Operator
-  HiLink postscrMathOperator	postscrOperator
+  HiLink postscrName            Statement
+  HiLink postscrConditional     Conditional
+  HiLink postscrRepeat          Repeat
+  HiLink postscrL2Repeat        postscrRepeat
+  HiLink postscrOperator        Operator
+  HiLink postscrL1Operator      postscrOperator
+  HiLink postscrL2Operator      postscrOperator
+  HiLink postscrL3Operator      postscrOperator
+  HiLink postscrMathOperator    postscrOperator
   HiLink postscrLogicalOperator postscrOperator
-  HiLink postscrBinaryOperator	postscrOperator
+  HiLink postscrBinaryOperator  postscrOperator
 
-  HiLink postscrDSCComment	SpecialComment
-  HiLink postscrSpecialChar	SpecialChar
+  HiLink postscrDSCComment      SpecialComment
+  HiLink postscrSpecialChar     SpecialChar
 
-  HiLink postscrTodo		Todo
+  HiLink postscrTodo            Todo
 
-  HiLink postscrError		Error
+  HiLink postscrError           Error
   HiLink postscrSpecialCharError postscrError
   HiLink postscrASCII85CharError postscrError
-  HiLink postscrHexCharError	postscrError
+  HiLink postscrHexCharError    postscrError
+  HiLink postscrASCIIStringError postscrError
   HiLink postscrIdentifierError postscrError
 
+  if exists("postscr_ghostscript")
+    HiLink postscrGSOperator      postscrOperator
+    HiLink postscrGSMathOperator  postscrMathOperator
+  else
+    HiLink postscrGSOperator      postscrError
+    HiLink postscrGSMathOperator  postscrError
+  endif
+
   delcommand HiLink
 endif
 
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/Filelist
@@ -0,0 +1,716 @@
+# List of distributed Vim files.
+# Used by Makefile and upload.aap.
+
+# source files for all source archives
+SRC_ALL =	\
+		src/README.txt \
+		src/arabic.c \
+		src/arabic.h \
+		src/ascii.h \
+		src/buffer.c \
+		src/charset.c \
+		src/diff.c \
+		src/digraph.c \
+		src/edit.c \
+		src/eval.c \
+		src/ex_cmds.c \
+		src/ex_cmds.h \
+		src/ex_cmds2.c \
+		src/ex_docmd.c \
+		src/ex_eval.c \
+		src/ex_getln.c \
+		src/farsi.c \
+		src/farsi.h \
+		src/feature.h \
+		src/fileio.c \
+		src/fold.c \
+		src/getchar.c \
+		src/globals.h \
+		src/gui.c \
+		src/gui.h \
+		src/gui_beval.c \
+		src/gui_beval.h \
+		src/hardcopy.c \
+		src/hashtab.c \
+		src/keymap.h \
+		src/macros.h \
+		src/main.c \
+		src/mark.c \
+		src/mbyte.c \
+		src/memfile.c \
+		src/memline.c \
+		src/menu.c \
+		src/message.c \
+		src/misc1.c \
+		src/misc2.c \
+		src/move.c \
+		src/mysign \
+		src/nbdebug.c \
+		src/nbdebug.h \
+		src/netbeans.c \
+		src/normal.c \
+		src/ops.c \
+		src/option.c \
+		src/option.h \
+		src/popupmnu.c \
+		src/quickfix.c \
+		src/regexp.c \
+		src/regexp.h \
+		src/screen.c \
+		src/search.c \
+		src/structs.h \
+		src/spell.c \
+		src/syntax.c \
+		src/tag.c \
+		src/term.c \
+		src/term.h \
+		src/termlib.c \
+		src/ui.c \
+		src/undo.c \
+		src/version.c \
+		src/version.h \
+		src/vim.h \
+		src/window.c \
+		src/xxd/xxd.c \
+		src/main.aap \
+		src/testdir/main.aap \
+		src/testdir/*.in \
+		src/testdir/test[0-9]*.ok \
+		src/testdir/test49.vim \
+		src/testdir/test60.vim \
+		src/proto.h \
+		src/proto/buffer.pro \
+		src/proto/charset.pro \
+		src/proto/diff.pro \
+		src/proto/digraph.pro \
+		src/proto/edit.pro \
+		src/proto/eval.pro \
+		src/proto/ex_cmds.pro \
+		src/proto/ex_cmds2.pro \
+		src/proto/ex_docmd.pro \
+		src/proto/ex_eval.pro \
+		src/proto/ex_getln.pro \
+		src/proto/fileio.pro \
+		src/proto/fold.pro \
+		src/proto/getchar.pro \
+		src/proto/gui.pro \
+		src/proto/gui_beval.pro \
+		src/proto/hardcopy.pro \
+		src/proto/hashtab.pro \
+		src/proto/main.pro \
+		src/proto/mark.pro \
+		src/proto/mbyte.pro \
+		src/proto/memfile.pro \
+		src/proto/memline.pro \
+		src/proto/menu.pro \
+		src/proto/message.pro \
+		src/proto/misc1.pro \
+		src/proto/misc2.pro \
+		src/proto/move.pro \
+		src/proto/netbeans.pro \
+		src/proto/normal.pro \
+		src/proto/ops.pro \
+		src/proto/option.pro \
+		src/proto/popupmnu.pro \
+		src/proto/quickfix.pro \
+		src/proto/regexp.pro \
+		src/proto/screen.pro \
+		src/proto/search.pro \
+		src/proto/spell.pro \
+		src/proto/syntax.pro \
+		src/proto/tag.pro \
+		src/proto/term.pro \
+		src/proto/termlib.pro \
+		src/proto/ui.pro \
+		src/proto/undo.pro \
+		src/proto/version.pro \
+		src/proto/window.pro \
+
+
+# source files for Unix only
+SRC_UNIX =	\
+		Makefile \
+		Filelist \
+		README_src.txt \
+		configure \
+		pixmaps/*.xpm \
+		pixmaps/gen-inline-pixbufs.sh \
+		pixmaps/stock_icons.h \
+		src/INSTALL \
+		src/INSTALLx.txt \
+		src/Makefile \
+		src/auto/configure \
+		src/config.aap.in \
+		src/config.h.in \
+		src/config.mk.dist \
+		src/config.mk.in \
+		src/configure \
+		src/configure.in \
+		src/gui_at_fs.c \
+		src/gui_at_sb.c \
+		src/gui_at_sb.h \
+		src/gui_athena.c \
+		src/gui_gtk.c \
+		src/gui_gtk_f.c \
+		src/gui_gtk_f.h \
+		src/gui_gtk_x11.c \
+		src/gui_motif.c \
+		src/gui_xmdlg.c \
+		src/gui_xmebw.c \
+		src/gui_xmebw.h \
+		src/gui_xmebwp.h \
+		src/gui_x11.c \
+		src/gui_x11_pm.h \
+		src/hangulin.c \
+		src/if_xcmdsrv.c \
+		src/integration.c \
+		src/integration.h \
+		src/link.sh \
+		src/installman.sh \
+		src/installml.sh \
+		src/mkinstalldirs \
+		src/os_unix.c \
+		src/os_unix.h \
+		src/os_unixx.h \
+		src/osdef.sh \
+		src/osdef1.h.in \
+		src/osdef2.h.in \
+		src/pathdef.sh \
+		src/proto/gui_athena.pro \
+		src/proto/gui_gtk.pro \
+		src/proto/gui_gtk_x11.pro \
+		src/proto/gui_motif.pro \
+		src/proto/gui_xmdlg.pro \
+		src/proto/gui_x11.pro \
+		src/proto/hangulin.pro \
+		src/proto/if_xcmdsrv.pro \
+		src/proto/os_unix.pro \
+		src/proto/pty.pro \
+		src/proto/workshop.pro \
+		src/pty.c \
+		src/testdir/Makefile \
+		src/testdir/unix.vim \
+		src/toolcheck \
+		src/vim_icon.xbm \
+		src/vim_mask.xbm \
+		src/vimtutor \
+		src/gvimtutor \
+		src/which.sh \
+		src/workshop.c \
+		src/workshop.h \
+		src/wsdebug.c \
+		src/wsdebug.h \
+		src/xxd/Makefile \
+
+# source files for both DOS and Unix
+SRC_DOS_UNIX =	\
+		src/if_cscope.c \
+		src/if_cscope.h \
+		src/if_mzsch.c \
+		src/if_mzsch.h \
+		src/if_perl.xs \
+		src/if_perlsfio.c \
+		src/if_python.c \
+		src/if_ruby.c \
+		src/if_sniff.h \
+		src/if_tcl.c \
+		src/proto/if_cscope.pro \
+		src/proto/if_mzsch.pro \
+		src/proto/if_perl.pro \
+		src/proto/if_perlsfio.pro \
+		src/proto/if_python.pro \
+		src/proto/if_ruby.pro \
+		src/proto/if_tcl.pro \
+		src/typemap \
+
+# source files for DOS (also in the extra archive)
+SRC_DOS =	\
+		src/GvimExt/*.mak \
+		src/GvimExt/GvimExt.reg \
+		src/GvimExt/Makefile \
+		src/GvimExt/README.txt \
+		src/GvimExt/gvimext.cpp \
+		src/GvimExt/gvimext.def \
+		src/GvimExt/gvimext.h \
+		src/GvimExt/gvimext.inf \
+		src/GvimExt/gvimext.rc \
+		src/GvimExt/gvimext_ming.def \
+		src/GvimExt/gvimext_ming.rc \
+		src/GvimExt/resource.h \
+		src/GvimExt/uninst.bat \
+		README_srcdos.txt \
+		src/INSTALLpc.txt \
+		src/Make_bc3.mak \
+		src/Make_bc5.mak \
+		src/Make_cyg.mak \
+		src/Make_djg.mak \
+		src/Make_ivc.mak \
+		src/Make_dvc.mak \
+		src/Make_ming.mak \
+		src/Make_mvc.mak \
+		src/Make_w16.mak \
+		src/bigvim.bat \
+		src/msvcsetup.bat \
+		src/msvc2008.bat \
+		src/dimm.idl \
+		src/dlldata.c \
+		src/dosinst.c \
+		src/dosinst.h \
+		src/glbl_ime.cpp \
+		src/glbl_ime.h \
+		src/gui_w16.c \
+		src/gui_w32.c \
+		src/gui_w48.c \
+		src/guiw16rc.h \
+		src/gui_w32_rc.h \
+		src/if_ole.cpp \
+		src/if_ole.h \
+		src/if_ole.idl \
+		src/iid_ole.c \
+		src/os_dos.h \
+		src/os_msdos.c \
+		src/os_msdos.h \
+		src/os_w32dll.c \
+		src/os_w32exe.c \
+		src/os_win16.c \
+		src/os_win32.c \
+		src/os_mswin.c \
+		src/os_win16.h \
+		src/os_win32.h \
+		src/proto/gui_w16.pro \
+		src/proto/gui_w32.pro \
+		src/proto/if_ole.pro \
+		src/proto/os_msdos.pro \
+		src/proto/os_win16.pro \
+		src/proto/os_win32.pro \
+		src/proto/os_mswin.pro \
+		src/testdir/Make_dos.mak \
+		src/testdir/dos.vim \
+		src/uninstal.c \
+		src/vim.def \
+		src/vim.rc \
+		src/vimio.h \
+		src/gvim.exe.mnf \
+		src/vim16.def \
+		src/vim16.rc \
+		src/vimrun.c \
+		src/vimtbar.h \
+		src/xpm_w32.c \
+		src/xpm_w32.h \
+		src/xxd/Make_bc3.mak \
+		src/xxd/Make_bc5.mak \
+		src/xxd/Make_cyg.mak \
+		src/xxd/Make_djg.mak \
+		src/xxd/Make_mvc.mak \
+		nsis/gvim.nsi \
+		nsis/README.txt \
+		uninstal.txt \
+		src/VisVim/Commands.cpp \
+		src/VisVim/Commands.h \
+		src/VisVim/DSAddIn.cpp \
+		src/VisVim/DSAddIn.h \
+		src/VisVim/OleAut.cpp \
+		src/VisVim/OleAut.h \
+		src/VisVim/README_VisVim.txt \
+		src/VisVim/Reg.cpp \
+		src/VisVim/Register.bat \
+		src/VisVim/Resource.h \
+		src/VisVim/StdAfx.cpp \
+		src/VisVim/StdAfx.h \
+		src/VisVim/UnRegist.bat \
+		src/VisVim/VisVim.cpp \
+		src/VisVim/VisVim.def \
+		src/VisVim/VisVim.mak \
+		src/VisVim/VisVim.h \
+		src/VisVim/VisVim.odl \
+		src/VisVim/VisVim.rc \
+		src/VisVim/VsReadMe.txt \
+
+# source files for DOS without CR/LF translation (also in the extra archive)
+SRC_DOS_BIN =	\
+		src/VisVim/Res/*.bmp \
+		src/tearoff.bmp \
+		src/tools.bmp \
+		src/tools16.bmp \
+		src/vim*.ico \
+		src/vim.tlb \
+		src/vimtbar.lib \
+		src/vimtbar.dll \
+		nsis/icons/*.bmp \
+		nsis/icons/*.ico \
+
+# source files for Amiga, DOS, etc. (also in the extra archive)
+SRC_AMI_DOS =	\
+
+# source files for Amiga (also in the extra archive)
+SRC_AMI =	\
+		README_amisrc.txt \
+		README_amisrc.txt.info \
+		src.info \
+		src/INSTALLami.txt \
+		src/Make_dice.mak \
+		src/Make_manx.mak \
+		src/Make_morph.mak \
+		src/Make_sas.mak \
+		src/os_amiga.c \
+		src/os_amiga.h \
+		src/proto/os_amiga.pro \
+		src/testdir/Make_amiga.mak \
+		src/testdir/amiga.vim \
+		src/xxd/Make_amiga.mak \
+
+# source files for the Mac (also in the extra archive)
+SRC_MAC =	\
+		src/INSTALLmac.txt \
+		src/dehqx.py \
+		src/gui_mac.c \
+		src/os_mac_rsrc/*.icns \
+		src/os_mac.h \
+		src/os_mac.rsr.hqx \
+		src/os_mac_conv.c \
+		src/os_macosx.c \
+		src/proto/gui_mac.pro \
+		src/proto/os_mac_conv.pro \
+
+# source files for VMS (in the extra archive)
+SRC_VMS =	\
+		src/INSTALLvms.txt \
+		src/Make_vms.mms \
+		src/gui_gtk_vms.h \
+		src/os_vms.c \
+		src/os_vms_conf.h \
+		src/os_vms_mms.c \
+		src/proto/os_vms.pro \
+		src/testdir/Make_vms.mms \
+		src/testdir/vms.vim \
+		src/xxd/Make_vms.mms \
+		vimtutor.com \
+
+# source files for OS/2 (in the extra archive)
+SRC_OS2 =	\
+		src/Make_os2.mak \
+		src/os_os2_cfg.h \
+		src/testdir/Make_os2.mak \
+		src/testdir/todos.vim \
+		src/testdir/os2.vim \
+		src/xxd/Make_os2.mak \
+
+# source files for QNX (in the extra archive)
+SRC_QNX =	\
+		src/os_qnx.c \
+		src/os_qnx.h \
+		src/gui_photon.c \
+		src/proto/gui_photon.pro \
+		src/proto/os_qnx.pro \
+
+
+# source files for the extra archive (all sources that are not for Unix)
+SRC_EXTRA =	\
+		$(SRC_AMI) \
+		$(SRC_AMI_DOS) \
+		$(SRC_DOS) \
+		$(SRC_DOS_BIN) \
+		$(SRC_MAC) \
+		$(SRC_OS2) \
+		$(SRC_QNX) \
+		$(SRC_VMS) \
+		README_os390.txt \
+		src/Make_mint.mak \
+		src/Make_ro.mak \
+		src/gui_riscos.c \
+		src/gui_riscos.h \
+		src/if_sniff.c \
+		src/infplist.xml \
+		src/link.390 \
+		src/os_beos.c \
+		src/os_beos.h \
+		src/os_beos.rsrc \
+		src/os_mint.h \
+		src/os_riscos.c \
+		src/os_riscos.h \
+		src/proto/gui_riscos.pro \
+		src/proto/os_riscos.pro \
+		src/os_vms_fix.com \
+		src/toolbar.phi \
+
+# runtime files for all distributions
+RT_ALL =	\
+		README.txt \
+		runtime/bugreport.vim \
+		runtime/doc/*.awk \
+		runtime/doc/*.pl \
+		runtime/doc/*.txt \
+		runtime/doc/Makefile \
+		runtime/doc/doctags.c \
+		runtime/doc/vim.1 \
+		runtime/doc/evim.1 \
+		runtime/doc/vimdiff.1 \
+		runtime/doc/vimtutor.1 \
+		runtime/doc/xxd.1 \
+		runtime/ftoff.vim \
+		runtime/gvimrc_example.vim \
+		runtime/macros/README.txt \
+		runtime/macros/dvorak \
+		runtime/macros/editexisting.vim \
+		runtime/macros/hanoi/click.me \
+		runtime/macros/hanoi/hanoi.vim \
+		runtime/macros/hanoi/poster \
+		runtime/macros/justify.vim \
+		runtime/macros/less.sh \
+		runtime/macros/less.vim \
+		runtime/macros/life/click.me \
+		runtime/macros/life/life.vim \
+		runtime/macros/matchit.vim \
+		runtime/macros/matchit.txt \
+		runtime/macros/maze/README.txt \
+		runtime/macros/maze/[mM]akefile \
+		runtime/macros/maze/main.aap \
+		runtime/macros/maze/maze.c \
+		runtime/macros/maze/maze_5.78 \
+		runtime/macros/maze/maze_mac \
+		runtime/macros/maze/mazeansi.c \
+		runtime/macros/maze/mazeclean.c \
+		runtime/macros/maze/poster \
+		runtime/macros/shellmenu.vim \
+		runtime/macros/swapmous.vim \
+		runtime/macros/urm/README.txt \
+		runtime/macros/urm/examples \
+		runtime/macros/urm/urm \
+		runtime/macros/urm/urm.vim \
+		runtime/mswin.vim \
+		runtime/evim.vim \
+		runtime/optwin.vim \
+		runtime/ftplugin.vim \
+		runtime/ftplugof.vim \
+		runtime/indent.vim \
+		runtime/indoff.vim \
+		runtime/termcap \
+		runtime/tools/README.txt \
+		runtime/tools/[a-z]*[a-z0-9] \
+		runtime/tutor/README.txt \
+		runtime/tutor/tutor \
+		runtime/tutor/tutor.vim \
+		runtime/vimrc_example.vim \
+
+# runtime files for all distributions without CR-NL translation
+RT_ALL_BIN =	\
+		runtime/doc/tags \
+		runtime/print/*.ps \
+
+# runtime script files
+RT_SCRIPTS =	\
+		runtime/filetype.vim \
+		runtime/scripts.vim \
+		runtime/menu.vim \
+		runtime/macmap.vim \
+		runtime/delmenu.vim \
+		runtime/synmenu.vim \
+		runtime/makemenu.vim \
+		runtime/autoload/*.vim \
+		runtime/autoload/README.txt \
+		runtime/autoload/xml/*.vim \
+		runtime/colors/*.vim \
+		runtime/colors/README.txt \
+		runtime/compiler/*.vim \
+		runtime/compiler/README.txt \
+		runtime/indent/*.vim \
+		runtime/indent/README.txt \
+		runtime/ftplugin/*.vim \
+		runtime/ftplugin/README.txt \
+		runtime/plugin/*.vim \
+		runtime/plugin/README.txt \
+		runtime/syntax/*.vim \
+		runtime/syntax/README.txt \
+
+# Unix runtime
+RT_UNIX =	\
+		README_unix.txt \
+		runtime/hi16-action-make.png \
+		runtime/hi22-action-make.png \
+		runtime/vim16x16.png \
+		runtime/vim16x16.xpm \
+		runtime/vim32x32.png \
+		runtime/vim32x32.xpm \
+		runtime/vim48x48.png \
+		runtime/vim48x48.xpm \
+
+# Unix and DOS runtime without CR-LF translation
+RT_UNIX_DOS_BIN =	\
+		runtime/vim16x16.gif \
+		runtime/vim32x32.gif \
+		runtime/vim48x48.gif \
+
+# runtime not for unix or extra
+RT_NO_UNIX =	\
+
+# runtime for Amiga (also in the extra archive)
+RT_AMI_DOS =	\
+		runtime/doc/vim.man \
+		runtime/doc/vimdiff.man \
+		runtime/doc/vimtutor.man \
+		runtime/doc/xxd.man \
+
+# DOS runtime (also in the extra archive)
+RT_DOS =	\
+		README_dos.txt \
+		runtime/rgb.txt \
+		vimtutor.bat \
+
+# DOS runtime without CR-LF translation (also in the extra archive)
+RT_DOS_BIN =	\
+		runtime/vimlogo.cdr \
+		runtime/vimlogo.eps \
+		runtime/vimlogo.gif \
+		runtime/vimlogo.pdf \
+
+# Amiga runtime (also in the extra archive)
+RT_AMI =	\
+		README.txt.info \
+		README_ami.txt \
+		README_ami.txt.info \
+		libs/arp.library \
+		runtime/doc.info \
+		runtime/doc/*.info \
+		runtime/icons/README.txt \
+		runtime/icons/*.info \
+		runtime/icons.info \
+		runtime/macros.info \
+		runtime/macros/*.info \
+		runtime/macros/hanoi/*.info \
+		runtime/macros/life/*.info \
+		runtime/macros/maze/*.info \
+		runtime/macros/urm/*.info \
+		runtime/tools.info \
+		runtime/tutor.info \
+		runtime/tutor/*.info \
+
+# runtime files in extra archive
+RT_EXTRA =	\
+		$(RT_AMI) \
+		$(RT_AMI_DOS) \
+		$(RT_DOS) \
+		$(RT_DOS_BIN) \
+		README_mac.txt \
+
+# included in all Amiga archives
+ROOT_AMI =	\
+		Contents \
+		Contents.info \
+		runtime.info \
+		vimdir.info \
+
+# root files for the extra archive
+ROOT_EXTRA =	\
+		$(ROOT_AMI) \
+
+# files for Amiga small binary (also in extra archive)
+BIN_AMI =	\
+		README_amibin.txt \
+		README_amibin.txt.info \
+		Vim.info \
+		Xxd.info \
+
+# files for DOS binary (also in extra archive)
+BIN_DOS =	\
+		README_bindos.txt \
+		uninstal.txt \
+
+# files for Win32 OLE binary (also in extra archive)
+BIN_OLE =	\
+		README_ole.txt \
+
+# files for Win32s binary (also in extra archive)
+BIN_W32S =	\
+		README_w32s.txt \
+
+# files for VMS binary (also in extra archive)
+BIN_VMS =	\
+		README_vms.txt \
+
+# files for OS/2 binary (also in extra archive)
+BIN_OS2 =	\
+		README_os2.txt \
+
+# binary files for extra archive
+BIN_EXTRA =	\
+		$(BIN_AMI) \
+		$(BIN_DOS) \
+		$(BIN_OLE) \
+		$(BIN_W32S) \
+		$(BIN_VMS) \
+		$(BIN_OS2) \
+
+# all files for extra archive
+EXTRA =		\
+		$(BIN_EXTRA) \
+		$(ROOT_EXTRA) \
+		$(RT_EXTRA) \
+		$(SRC_EXTRA) \
+		README_extra.txt \
+		src/VisVim/VisVim.dll \
+		farsi/README.txt \
+		farsi/fonts/*/far-* \
+		runtime/vimlogo.xpm \
+		src/swis.s \
+		src/tee/Makefile* \
+		src/tee/tee.c \
+		csdpmi4b.zip \
+
+# generic language files
+LANG_GEN = \
+		README_lang.txt \
+		runtime/doc/*-fr.1 \
+		runtime/doc/*-fr.UTF-8.1 \
+		runtime/doc/*-it.1 \
+		runtime/doc/*-it.UTF-8.1 \
+		runtime/doc/*-pl.1 \
+		runtime/doc/*-pl.UTF-8.1 \
+		runtime/doc/*-ru.1 \
+		runtime/doc/*-ru.UTF-8.1 \
+		runtime/lang/README.txt \
+		runtime/lang/menu_*.vim \
+		runtime/keymap/README.txt \
+		runtime/keymap/*.vim \
+		runtime/tutor/README.*.txt \
+		runtime/tutor/Makefile \
+		runtime/tutor/tutor.utf-8 \
+		runtime/tutor/tutor.?? \
+		runtime/tutor/tutor.??.* \
+		runtime/spell/README.txt \
+		runtime/spell/??/*.diff \
+		runtime/spell/??/main.aap \
+		runtime/spell/yi/README.txt \
+		runtime/spell/main.aap \
+		runtime/spell/cleanadd.vim \
+		runtime/spell/*.vim \
+		runtime/spell/fixdup \
+
+# generic language files, binary
+LANG_GEN_BIN = \
+		runtime/spell/README_en.txt \
+		runtime/spell/en.ascii.spl \
+		runtime/spell/en.latin1.spl \
+		runtime/spell/en.utf-8.spl \
+		runtime/spell/en.ascii.sug \
+		runtime/spell/en.latin1.sug \
+		runtime/spell/en.utf-8.sug \
+
+# all files for lang archive
+LANG_SRC = \
+		src/po/README.txt \
+		src/po/README_mingw.txt \
+		src/po/README_mvc.txt \
+		src/po/check.vim \
+		src/po/cleanup.vim \
+		src/po/Makefile \
+		src/po/Make_cyg.mak \
+		src/po/Make_ming.mak \
+		src/po/Make_mvc.mak \
+		src/po/sjiscorr.c \
+		src/po/*.po \
+
+# the language files for the Win32 lang archive
+LANG_DOS = \
+		src/po/*.mo \
+
+# vim: set ft=make:
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/README_bindos.txt
@@ -0,0 +1,19 @@
+README_bindos.txt for version 7.2a of Vim: Vi IMproved.
+
+See "README.txt" for general information about Vim.
+See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
+These files are in the runtime archive (vim70rt.zip).
+
+
+There are several binary distributions of Vim for the PC.  You would normally
+pick only one of them, but it's also possible to install several.
+These ones are available (the version number may differ):
+	vim70d16.zip	16 bit DOS version
+	vim70d32.zip	32 bit DOS version
+	vim70w32.zip	Windows 95/98/NT/etc. console version
+	gvim70.zip	Windows 95/98/NT/etc. GUI version
+	gvim70ole.zip	Windows 95/98/NT/etc. GUI version with OLE
+	gvim70_s.zip	Windows 3.1 GUI version
+
+You MUST also get the runtime archive (vim70rt.zip).
+The sources are also available (vim70src.zip).
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/README_lang.txt
@@ -0,0 +1,5 @@
+README_lang.txt for version 7.2a of Vim: Vi IMproved.
+
+This file contains files for non-English languages:
+- Translated messages.
+- Translated menus.
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/README_srcdos.txt
@@ -0,0 +1,12 @@
+README_srcdos.txt for version 7.2a of Vim: Vi IMproved.
+
+See "README.txt" for general information about Vim.
+See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
+These files are in the runtime archive (vim70rt.zip).
+
+
+The DOS source archive contains the files needed to compile Vim on MS-DOS or
+MS-Windows.  It is packed for DOS systems, with CR-LF.  It also includes the
+VisVim sources.
+
+See "src/INSTALLpc.txt" for instructions on how to compile Vim on the PC.
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/README_unix.txt
@@ -0,0 +1,10 @@
+README_unix.txt for version 7.2a of Vim: Vi IMproved.
+
+This file explains the installation of Vim on Unix systems.
+See "README.txt" for general information about Vim.
+
+
+When you use the source distribution, "make install" is used to install Vim.
+See the "INSTALL" file in the "src" directory.
+
+If you use a compiled package, follow the instructions for the package.
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/runtime/filetype.vim
@@ -0,0 +1,2412 @@
+" Vim support file to detect file types
+"
+" Maintainer:	Bram Moolenaar <Bram@vim.org>
+" Last Change:	2008 Jun 20
+
+" Listen very carefully, I will say this only once
+if exists("did_load_filetypes")
+  finish
+endif
+let did_load_filetypes = 1
+
+" Line continuation is used here, remove 'C' from 'cpoptions'
+let s:cpo_save = &cpo
+set cpo&vim
+
+augroup filetypedetect
+
+" Ignored extensions
+if exists("*fnameescape")
+au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.rpmsave,?\+.rpmnew
+	\ exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r"))
+au BufNewFile,BufRead *~
+	\ let s:name = expand("<afile>") |
+	\ let s:short = substitute(s:name, '\~$', '', '') |
+	\ if s:name != s:short && s:short != "" |
+	\   exe "doau filetypedetect BufRead " . fnameescape(s:short) |
+	\ endif |
+	\ unlet s:name s:short
+au BufNewFile,BufRead ?\+.in
+	\ if expand("<afile>:t") != "configure.in" |
+	\   exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r")) |
+	\ endif
+elseif &verbose > 0
+  echomsg "Warning: some filetypes will not be recognized because this version of Vim does not have fnameescape()"
+endif
+
+" Pattern used to match file names which should not be inspected.
+" Currently finds compressed files.
+if !exists("g:ft_ignore_pat")
+  let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
+endif
+
+" Function used for patterns that end in a star: don't set the filetype if the
+" file name matches ft_ignore_pat.
+func! s:StarSetf(ft)
+  if expand("<amatch>") !~ g:ft_ignore_pat
+    exe 'setf ' . a:ft
+  endif
+endfunc
+
+" Abaqus or Trasys
+au BufNewFile,BufRead *.inp			call s:Check_inp()
+
+func! s:Check_inp()
+  if getline(1) =~ '^\*'
+    setf abaqus
+  else
+    let n = 1
+    if line("$") > 500
+      let nmax = 500
+    else
+      let nmax = line("$")
+    endif
+    while n <= nmax
+      if getline(n) =~? "^header surface data"
+	setf trasys
+	break
+      endif
+      let n = n + 1
+    endwhile
+  endif
+endfunc
+
+" A-A-P recipe
+au BufNewFile,BufRead *.aap			setf aap
+
+" A2ps printing utility
+au BufNewFile,BufRead etc/a2ps.cfg,etc/a2ps/*.cfg,a2psrc,.a2psrc setf a2ps
+
+" ABAB/4
+au BufNewFile,BufRead *.abap			setf abap
+
+" ABC music notation
+au BufNewFile,BufRead *.abc			setf abc
+
+" ABEL
+au BufNewFile,BufRead *.abl			setf abel
+
+" AceDB
+au BufNewFile,BufRead *.wrm			setf acedb
+
+" Ada (83, 9X, 95)
+au BufNewFile,BufRead *.adb,*.ads,*.ada		setf ada
+if has("vms")
+  au BufNewFile,BufRead *.gpr,*.ada_m,*.adc 	setf ada
+else
+  au BufNewFile,BufRead *.gpr 			setf ada
+endif
+
+" AHDL
+au BufNewFile,BufRead *.tdf			setf ahdl
+
+" AMPL
+au BufNewFile,BufRead *.run			setf ampl
+
+" Ant
+au BufNewFile,BufRead build.xml			setf ant
+
+" Apache style config file
+au BufNewFile,BufRead proftpd.conf*		call s:StarSetf('apachestyle')
+
+" Apache config file
+au BufNewFile,BufRead .htaccess			 setf apache
+au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/apache2/*.conf* call s:StarSetf('apache')
+
+" XA65 MOS6510 cross assembler
+au BufNewFile,BufRead *.a65			setf a65
+
+" Applix ELF
+au BufNewFile,BufRead *.am
+	\ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif
+
+" ALSA configuration
+au BufNewFile,BufRead ~/.asoundrc,/usr/share/alsa/alsa.conf,/etc/asound.conf	setf alsaconf
+
+" Arc Macro Language
+au BufNewFile,BufRead *.aml			setf aml
+
+" Arch Inventory file
+au BufNewFile,BufRead .arch-inventory,=tagging-method	setf arch
+
+" ART*Enterprise (formerly ART-IM)
+au BufNewFile,BufRead *.art			setf art
+
+" ASN.1
+au BufNewFile,BufRead *.asn,*.asn1		setf asn
+
+" Active Server Pages (with Visual Basic Script)
+au BufNewFile,BufRead *.asa
+	\ if exists("g:filetype_asa") |
+	\   exe "setf " . g:filetype_asa |
+	\ else |
+	\   setf aspvbs |
+	\ endif
+
+" Active Server Pages (with Perl or Visual Basic Script)
+au BufNewFile,BufRead *.asp
+	\ if exists("g:filetype_asp") |
+	\   exe "setf " . g:filetype_asp |
+	\ elseif getline(1) . getline(2) . getline(3) =~? "perlscript" |
+	\   setf aspperl |
+	\ else |
+	\   setf aspvbs |
+	\ endif
+
+" Grub (must be before catch *.lst)
+au BufNewFile,BufRead /boot/grub/menu.lst,/boot/grub/grub.conf,/etc/grub.conf	setf grub
+
+" Assembly (all kinds)
+" *.lst is not pure assembly, it has two extra columns (address, byte codes)
+au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst	call s:FTasm()
+
+" This function checks for the kind of assembly that is wanted by the user, or
+" can be detected from the first five lines of the file.
+func! s:FTasm()
+  " make sure b:asmsyntax exists
+  if !exists("b:asmsyntax")
+    let b:asmsyntax = ""
+  endif
+
+  if b:asmsyntax == ""
+    call s:FTasmsyntax()
+  endif
+
+  " if b:asmsyntax still isn't set, default to asmsyntax or GNU
+  if b:asmsyntax == ""
+    if exists("g:asmsyntax")
+      let b:asmsyntax = g:asmsyntax
+    else
+      let b:asmsyntax = "asm"
+    endif
+  endif
+
+  exe "setf " . b:asmsyntax
+endfunc
+
+func! s:FTasmsyntax()
+  " see if file contains any asmsyntax=foo overrides. If so, change
+  " b:asmsyntax appropriately
+  let head = " ".getline(1)." ".getline(2)." ".getline(3)." ".getline(4).
+	\" ".getline(5)." "
+  if head =~ '\sasmsyntax=\S\+\s'
+    let b:asmsyntax = substitute(head, '.*\sasmsyntax=\([a-zA-Z0-9]\+\)\s.*','\1', "")
+  elseif ((head =~? '\.title') || (head =~? '\.ident') || (head =~? '\.macro') || (head =~? '\.subtitle') || (head =~? '\.library'))
+    let b:asmsyntax = "vmasm"
+  endif
+endfunc
+
+" Macro (VAX)
+au BufNewFile,BufRead *.mar			setf vmasm
+
+" Atlas
+au BufNewFile,BufRead *.atl,*.as		setf atlas
+
+" Autoit v3
+au BufNewFile,BufRead *.au3			setf autoit
+
+" Autohotkey
+au BufNewFile,BufRead *.ahk			setf autohotkey
+
+" Automake
+au BufNewFile,BufRead [mM]akefile.am,GNUmakefile.am	setf automake
+
+" Autotest .at files are actually m4
+au BufNewFile,BufRead *.at			setf m4
+
+" Avenue
+au BufNewFile,BufRead *.ave			setf ave
+
+" Awk
+au BufNewFile,BufRead *.awk			setf awk
+
+" B
+au BufNewFile,BufRead *.mch,*.ref,*.imp		setf b
+
+" BASIC or Visual Basic
+au BufNewFile,BufRead *.bas			call s:FTVB("basic")
+
+" Check if one of the first five lines contains "VB_Name".  In that case it is
+" probably a Visual Basic file.  Otherwise it's assumed to be "alt" filetype.
+func! s:FTVB(alt)
+  if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'VB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)'
+    setf vb
+  else
+    exe "setf " . a:alt
+  endif
+endfunc
+
+" Visual Basic Script (close to Visual Basic)
+au BufNewFile,BufRead *.vbs,*.dsm,*.ctl		setf vb
+
+" IBasic file (similar to QBasic)
+au BufNewFile,BufRead *.iba,*.ibi		setf ibasic
+
+" FreeBasic file (similar to QBasic)
+au BufNewFile,BufRead *.fb,*.bi			setf freebasic
+
+" Batch file for MSDOS.
+au BufNewFile,BufRead *.bat,*.sys		setf dosbatch
+" *.cmd is close to a Batch file, but on OS/2 Rexx files also use *.cmd.
+au BufNewFile,BufRead *.cmd
+	\ if getline(1) =~ '^/\*' | setf rexx | else | setf dosbatch | endif
+
+" Batch file for 4DOS
+au BufNewFile,BufRead *.btm			call s:FTbtm()
+func! s:FTbtm()
+  if exists("g:dosbatch_syntax_for_btm") && g:dosbatch_syntax_for_btm
+    setf dosbatch
+  else
+    setf btm
+  endif
+endfunc
+
+" BC calculator
+au BufNewFile,BufRead *.bc			setf bc
+
+" BDF font
+au BufNewFile,BufRead *.bdf			setf bdf
+
+" BibTeX bibliography database file
+au BufNewFile,BufRead *.bib			setf bib
+
+" BibTeX Bibliography Style
+au BufNewFile,BufRead *.bst			setf bst
+
+" BIND configuration
+au BufNewFile,BufRead named.conf,rndc.conf	setf named
+
+" BIND zone
+au BufNewFile,BufRead named.root		setf bindzone
+au BufNewFile,BufRead *.db			call s:BindzoneCheck('')
+
+func! s:BindzoneCheck(default)
+  if getline(1).getline(2).getline(3).getline(4) =~ '^; <<>> DiG [0-9.]\+ <<>>\|BIND.*named\|$ORIGIN\|$TTL\|IN\s\+SOA'
+    setf bindzone
+  elseif a:default != ''
+    exe 'setf ' . a:default
+  endif
+endfunc
+
+" Blank
+au BufNewFile,BufRead *.bl			setf blank
+
+" C or lpc
+au BufNewFile,BufRead *.c			call s:FTlpc()
+
+func! s:FTlpc()
+  if exists("g:lpc_syntax_for_c")
+    let lnum = 1
+    while lnum <= 12
+      if getline(lnum) =~# '^\(//\|inherit\|private\|protected\|nosave\|string\|object\|mapping\|mixed\)'
+	setf lpc
+	return
+      endif
+      let lnum = lnum + 1
+    endwhile
+  endif
+  setf c
+endfunc
+
+" Calendar
+au BufNewFile,BufRead calendar			setf calendar
+au BufNewFile,BufRead */.calendar/*,
+	\*/share/calendar/*/calendar.*,*/share/calendar/calendar.*
+	\					call s:StarSetf('calendar')
+
+" C#
+au BufNewFile,BufRead *.cs			setf cs
+
+" Cdrdao TOC
+au BufNewFile,BufRead *.toc			setf cdrtoc
+
+" Cdrdao config
+au BufNewFile,BufRead etc/cdrdao.conf,etc/defaults/cdrdao,etc/default/cdrdao,~/.cdrdao						setf cdrdaoconf
+
+" Cfengine
+au BufNewFile,BufRead cfengine.conf		setf cfengine
+
+" Comshare Dimension Definition Language
+au BufNewFile,BufRead *.cdl			setf cdl
+
+" Conary Recipe
+au BufNewFile,BufRead *.recipe			setf conaryrecipe
+
+" Controllable Regex Mutilator
+au BufNewFile,BufRead *.crm			setf crm
+
+" Cyn++
+au BufNewFile,BufRead *.cyn			setf cynpp
+
+" Cynlib
+" .cc and .cpp files can be C++ or Cynlib.
+au BufNewFile,BufRead *.cc
+	\ if exists("cynlib_syntax_for_cc")|setf cynlib|else|setf cpp|endif
+au BufNewFile,BufRead *.cpp
+	\ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif
+
+" C++
+if has("fname_case")
+  au BufNewFile,BufRead *.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
+else
+  au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
+endif
+
+" .h files can be C, Ch C++, ObjC or ObjC++.
+" Set c_syntax_for_h if you want C, ch_syntax_for_h if you want Ch. ObjC is
+" detected automatically.
+au BufNewFile,BufRead *.h			call s:FTheader()
+
+func! s:FTheader()
+  if match(getline(1, min([line("$"), 200])), '^@\(interface\|end\|class\)') > -1
+    setf objc
+  elseif exists("c_syntax_for_h")
+    setf c
+  elseif exists("ch_syntax_for_h")
+    setf ch
+  else
+    setf cpp
+  endif
+endfunc
+
+" Ch (CHscript)
+au BufNewFile,BufRead *.chf			setf ch
+
+" TLH files are C++ headers generated by Visual C++'s #import from typelibs
+au BufNewFile,BufRead *.tlh			setf cpp
+
+" Cascading Style Sheets
+au BufNewFile,BufRead *.css			setf css
+
+" Century Term Command Scripts (*.cmd too)
+au BufNewFile,BufRead *.con			setf cterm
+
+" Changelog
+au BufNewFile,BufRead changelog.Debian,changelog.dch,NEWS.Debian,NEWS.dch
+					\	setf debchangelog
+
+au BufNewFile,BufRead [cC]hange[lL]og
+	\  if getline(1) =~ '; urgency='
+	\|   setf debchangelog
+	\| else
+	\|   setf changelog
+	\| endif
+
+au BufNewFile,BufRead NEWS
+	\  if getline(1) =~ '; urgency='
+	\|   setf debchangelog
+	\| endif
+
+" CHILL
+au BufNewFile,BufRead *..ch			setf chill
+
+" Changes for WEB and CWEB or CHILL
+au BufNewFile,BufRead *.ch			call s:FTchange()
+
+" This function checks if one of the first ten lines start with a '@'.  In
+" that case it is probably a change file.
+" If the first line starts with # or ! it's probably a ch file.
+" If a line has "main", "include", "//" ir "/*" it's probably ch.
+" Otherwise CHILL is assumed.
+func! s:FTchange()
+  let lnum = 1
+  while lnum <= 10
+    if getline(lnum)[0] == '@'
+      setf change
+      return
+    endif
+    if lnum == 1 && (getline(1)[0] == '#' || getline(1)[0] == '!')
+      setf ch
+      return
+    endif
+    if getline(lnum) =~ "MODULE"
+      setf chill
+      return
+    endif
+    if getline(lnum) =~ 'main\s*(\|#\s*include\|//'
+      setf ch
+      return
+    endif
+    let lnum = lnum + 1
+  endwhile
+  setf chill
+endfunc
+
+" ChordPro
+au BufNewFile,BufRead *.chopro,*.crd,*.cho,*.crdpro,*.chordpro	setf chordpro
+
+" Clean
+au BufNewFile,BufRead *.dcl,*.icl		setf clean
+
+" Clever
+au BufNewFile,BufRead *.eni			setf cl
+
+" Clever or dtd
+au BufNewFile,BufRead *.ent			call s:FTent()
+
+func! s:FTent()
+  " This function checks for valid cl syntax in the first five lines.
+  " Look for either an opening comment, '#', or a block start, '{".
+  " If not found, assume SGML.
+  let lnum = 1
+  while lnum < 6
+    let line = getline(lnum)
+    if line =~ '^\s*[#{]'
+      setf cl
+      return
+    elseif line !~ '^\s*$'
+      " Not a blank line, not a comment, and not a block start,
+      " so doesn't look like valid cl code.
+      break
+    endif
+    let lnum = lnum + 1
+  endw
+  setf dtd
+endfunc
+
+" Clipper (or FoxPro; could also be eviews)
+au BufNewFile,BufRead *.prg
+	\ if exists("g:filetype_prg") |
+	\   exe "setf " . g:filetype_prg |
+	\ else |
+	\   setf clipper |
+	\ endif
+
+" Cmake
+au BufNewFile,BufRead CMakeLists.txt,*.cmake,*.cmake.in		setf cmake
+
+" Cmusrc
+au BufNewFile,BufRead ~/.cmus/{autosave,rc,command-history,*.theme} setf cmusrc
+au BufNewFile,BufRead */cmus/{rc,*.theme}			setf cmusrc
+
+" Cobol
+au BufNewFile,BufRead *.cbl,*.cob,*.lib	setf cobol
+"   cobol or zope form controller python script? (heuristic)
+au BufNewFile,BufRead *.cpy
+	\ if getline(1) =~ '^##' |
+	\   setf python |
+	\ else |
+	\   setf cobol |
+	\ endif
+
+" Coco/R
+au BufNewFile,BufRead *.atg			setf coco
+
+" Cold Fusion
+au BufNewFile,BufRead *.cfm,*.cfi,*.cfc		setf cf
+
+" Configure scripts
+au BufNewFile,BufRead configure.in,configure.ac setf config
+
+" CUDA  Cumpute Unified Device Architecture
+au BufNewFile,BufRead *.cu			setf cuda
+
+" WildPackets EtherPeek Decoder
+au BufNewFile,BufRead *.dcd			setf dcd
+
+" Enlightenment configuration files
+au BufNewFile,BufRead *enlightenment/*.cfg	setf c
+
+" Eterm
+au BufNewFile,BufRead *Eterm/*.cfg		setf eterm
+
+" Lynx config files
+au BufNewFile,BufRead lynx.cfg			setf lynx
+
+" Quake
+au BufNewFile,BufRead *baseq[2-3]/*.cfg,*id1/*.cfg	setf quake
+au BufNewFile,BufRead *quake[1-3]/*.cfg			setf quake
+
+" Quake C
+au BufNewFile,BufRead *.qc			setf c
+
+" Configure files
+au BufNewFile,BufRead *.cfg			setf cfg
+
+" Communicating Sequential Processes
+au BufNewFile,BufRead *.csp,*.fdr		setf csp
+
+" CUPL logic description and simulation
+au BufNewFile,BufRead *.pld			setf cupl
+au BufNewFile,BufRead *.si			setf cuplsim
+
+" Debian Control
+au BufNewFile,BufRead */debian/control		setf debcontrol
+au BufNewFile,BufRead control
+	\  if getline(1) =~ '^Source:'
+	\|   setf debcontrol
+	\| endif
+
+" Debian Sources.list
+au BufNewFile,BufRead /etc/apt/sources.list	setf debsources
+
+" Deny hosts
+au BufNewFile,BufRead denyhosts.conf		setf denyhosts
+
+" ROCKLinux package description
+au BufNewFile,BufRead *.desc			setf desc
+
+" the D language or dtrace
+au BufNewFile,BufRead *.d			call s:DtraceCheck()
+
+func! s:DtraceCheck()
+  let lines = getline(1, min([line("$"), 100]))
+  if match(lines, '^#!\S\+dtrace\|#pragma\s\+D\s\+option\|:\S\{-}:\S\{-}:') > -1
+    setf dtrace
+  else
+    setf d
+  endif
+endfunc
+
+" Desktop files
+au BufNewFile,BufRead *.desktop,.directory	setf desktop
+
+" Dict config
+au BufNewFile,BufRead dict.conf,.dictrc		setf dictconf
+
+" Dictd config
+au BufNewFile,BufRead dictd.conf		setf dictdconf
+
+" Diff files
+au BufNewFile,BufRead *.diff,*.rej,*.patch	setf diff
+
+" Dircolors
+au BufNewFile,BufRead .dir_colors,/etc/DIR_COLORS	setf dircolors
+
+" Diva (with Skill) or InstallShield
+au BufNewFile,BufRead *.rul
+	\ if getline(1).getline(2).getline(3).getline(4).getline(5).getline(6) =~? 'InstallShield' |
+	\   setf ishd |
+	\ else |
+	\   setf diva |
+	\ endif
+
+" DCL (Digital Command Language - vms) or DNS zone file
+au BufNewFile,BufRead *.com			call s:BindzoneCheck('dcl')
+
+" DOT
+au BufNewFile,BufRead *.dot			setf dot
+
+" Dylan - lid files
+au BufNewFile,BufRead *.lid			setf dylanlid
+
+" Dylan - intr files (melange)
+au BufNewFile,BufRead *.intr			setf dylanintr
+
+" Dylan
+au BufNewFile,BufRead *.dylan			setf dylan
+
+" Microsoft Module Definition
+au BufNewFile,BufRead *.def			setf def
+
+" Dracula
+au BufNewFile,BufRead *.drac,*.drc,*lvs,*lpe	setf dracula
+
+" dsl
+au BufNewFile,BufRead *.dsl			setf dsl
+
+" DTD (Document Type Definition for XML)
+au BufNewFile,BufRead *.dtd			setf dtd
+
+" EDIF (*.edf,*.edif,*.edn,*.edo)
+au BufNewFile,BufRead *.ed\(f\|if\|n\|o\)	setf edif
+
+" Embedix Component Description
+au BufNewFile,BufRead *.ecd			setf ecd
+
+" Eiffel or Specman
+au BufNewFile,BufRead *.e,*.E			call s:FTe()
+
+" Elinks configuration
+au BufNewFile,BufRead */etc/elinks.conf,*/.elinks/elinks.conf	setf elinks
+
+func! s:FTe()
+  let n = 1
+  while n < 100 && n < line("$")
+    if getline(n) =~ "^\\s*\\(<'\\|'>\\)\\s*$"
+      setf specman
+      return
+    endif
+    let n = n + 1
+  endwhile
+  setf eiffel
+endfunc
+
+" ERicsson LANGuage; Yaws is erlang too
+au BufNewFile,BufRead *.erl,*.yaws		setf erlang
+
+" Elm Filter Rules file
+au BufNewFile,BufRead filter-rules		setf elmfilt
+
+" ESMTP rc file
+au BufNewFile,BufRead *esmtprc			setf esmtprc
+
+" ESQL-C
+au BufNewFile,BufRead *.ec,*.EC			setf esqlc
+
+" Esterel
+au BufNewFile,BufRead *.strl			setf esterel
+
+" Essbase script
+au BufNewFile,BufRead *.csc			setf csc
+
+" Exim
+au BufNewFile,BufRead exim.conf			setf exim
+
+" Expect
+au BufNewFile,BufRead *.exp			setf expect
+
+" Exports
+au BufNewFile,BufRead exports			setf exports
+
+" Factor
+au BufNewFile,BufRead *.factor			setf factor
+
+" Fetchmail RC file
+au BufNewFile,BufRead .fetchmailrc		setf fetchmail
+
+" FlexWiki
+au BufNewFile,BufRead *.wiki			setf flexwiki
+
+" Focus Executable
+au BufNewFile,BufRead *.fex,*.focexec		setf focexec
+
+" Focus Master file (but not for auto.master)
+au BufNewFile,BufRead auto.master		setf conf
+au BufNewFile,BufRead *.mas,*.master		setf master
+
+" Forth
+au BufNewFile,BufRead *.fs,*.ft			setf forth
+
+" Reva Forth
+au BufNewFile,BufRead *.frt			setf reva
+
+" Fortran
+if has("fname_case")
+  au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95	 setf fortran
+endif
+au BufNewFile,BufRead   *.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95  setf fortran
+
+" FStab
+au BufNewFile,BufRead fstab,mtab		setf fstab
+
+" GDB command files
+au BufNewFile,BufRead .gdbinit			setf gdb
+
+" GDMO
+au BufNewFile,BufRead *.mo,*.gdmo		setf gdmo
+
+" Gedcom
+au BufNewFile,BufRead *.ged			setf gedcom
+
+" Git
+autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG    setf gitcommit
+autocmd BufNewFile,BufRead *.git/config,.gitconfig setf gitconfig
+autocmd BufNewFile,BufRead git-rebase-todo         setf gitrebase
+autocmd BufNewFile,BufRead .msg.[0-9]*
+      \ if getline(1) =~ '^From.*# This line is ignored.$' |
+      \   setf gitsendemail |
+      \ endif
+autocmd BufNewFile,BufRead *.git/**
+      \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
+      \   setf git |
+      \ endif
+
+" Gkrellmrc
+au BufNewFile,BufRead gkrellmrc,gkrellmrc_?	setf gkrellmrc
+
+" GP scripts (2.0 and onward)
+au BufNewFile,BufRead *.gp,.gprc		setf gp
+
+" GPG
+au BufNewFile,BufRead */.gnupg/options		setf gpg
+au BufNewFile,BufRead */.gnupg/gpg.conf		setf gpg
+au BufNewFile,BufRead /usr/**/gnupg/options.skel setf gpg
+
+" Gnuplot scripts
+au BufNewFile,BufRead *.gpi			setf gnuplot
+
+" GrADS scripts
+au BufNewFile,BufRead *.gs			setf grads
+
+" Gretl
+au BufNewFile,BufRead *.gretl			setf gretl
+
+" Groovy
+au BufNewFile,BufRead *.groovy			setf groovy
+
+" GNU Server Pages
+au BufNewFile,BufRead *.gsp			setf gsp
+
+" Group file
+au BufNewFile,BufRead /etc/group		setf group
+
+" GTK RC
+au BufNewFile,BufRead .gtkrc,gtkrc		setf gtkrc
+
+" Hamster Classic | Playground files
+au BufNewFile,BufRead *.hsc,*.hsm		setf hamster
+
+" Haskell
+au BufNewFile,BufRead *.hs			setf haskell
+au BufNewFile,BufRead *.lhs			setf lhaskell
+au BufNewFile,BufRead *.chs			setf chaskell
+
+" Haste
+au BufNewFile,BufRead *.ht			setf haste
+
+" Hercules
+au BufNewFile,BufRead *.vc,*.ev,*.rs,*.sum,*.errsum	setf hercules
+
+" HEX (Intel)
+au BufNewFile,BufRead *.hex,*.h32		setf hex
+
+" Tilde (must be before HTML)
+au BufNewFile,BufRead *.t.html			setf tilde
+
+" HTML (.shtml and .stm for server side)
+au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm  call s:FThtml()
+
+" Distinguish between HTML, XHTML and Django
+func! s:FThtml()
+  let n = 1
+  while n < 10 && n < line("$")
+    if getline(n) =~ '\<DTD\s\+XHTML\s'
+      setf xhtml
+      return
+    endif
+    if getline(n) =~ '{%\s*\(extends\|block\)\>'
+      setf htmldjango
+      return
+    endif
+    let n = n + 1
+  endwhile
+  setf html
+endfunc
+
+" HTML with Ruby - eRuby
+au BufNewFile,BufRead *.erb,*.rhtml		setf eruby
+
+" HTML with M4
+au BufNewFile,BufRead *.html.m4			setf htmlm4
+
+" HTML Cheetah template
+au BufNewFile,BufRead *.tmpl			setf htmlcheetah
+
+" Host config
+au BufNewFile,BufRead /etc/host.conf		setf hostconf
+
+" Hyper Builder
+au BufNewFile,BufRead *.hb			setf hb
+
+" Icon
+au BufNewFile,BufRead *.icn			setf icon
+
+" IDL (Interface Description Language)
+au BufNewFile,BufRead *.idl			call s:FTidl()
+
+" Distinguish between standard IDL and MS-IDL
+func! s:FTidl()
+  let n = 1
+  while n < 50 && n < line("$")
+    if getline(n) =~ '^\s*import\s\+"\(unknwn\|objidl\)\.idl"'
+      setf msidl
+      return
+    endif
+    let n = n + 1
+  endwhile
+  setf idl
+endfunc
+
+" Microsoft IDL (Interface Description Language)  Also *.idl
+" MOF = WMI (Windows Management Instrumentation) Managed Object Format
+au BufNewFile,BufRead *.odl,*.mof		setf msidl
+
+" Icewm menu
+au BufNewFile,BufRead */.icewm/menu		setf icemenu
+
+" Indent profile (must come before IDL *.pro!)
+au BufNewFile,BufRead .indent.pro		setf indent
+au BufNewFile,BufRead indent.pro		call s:ProtoCheck('indent')
+
+" IDL (Interactive Data Language)
+au BufNewFile,BufRead *.pro			call s:ProtoCheck('idlang')
+
+" Distinguish between "default" and Cproto prototype file. */
+func! s:ProtoCheck(default)
+  " Cproto files have a comment in the first line and a function prototype in
+  " the second line, it always ends in ";".  Indent files may also have
+  " comments, thus we can't match comments to see the difference.
+  if getline(2) =~ ';$'
+    setf cpp
+  else
+    exe 'setf ' . a:default
+  endif
+endfunc
+
+
+" Indent RC
+au BufNewFile,BufRead indentrc			setf indentrc
+
+" Inform
+au BufNewFile,BufRead *.inf,*.INF		setf inform
+
+" Initng
+au BufNewFile,BufRead /etc/initng/**/*.i,*.ii	setf initng
+
+" Ipfilter
+au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules	setf ipfilter
+
+" Informix 4GL (source - canonical, include file, I4GL+M4 preproc.)
+au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl	setf fgl
+
+" .INI file for MSDOS
+au BufNewFile,BufRead *.ini			setf dosini
+
+" SysV Inittab
+au BufNewFile,BufRead inittab			setf inittab
+
+" Inno Setup
+au BufNewFile,BufRead *.iss			setf iss
+
+" JAL
+au BufNewFile,BufRead *.jal,*.JAL		setf jal
+
+" Jam
+au BufNewFile,BufRead *.jpl,*.jpr		setf jam
+
+" Java
+au BufNewFile,BufRead *.java,*.jav		setf java
+
+" JavaCC
+au BufNewFile,BufRead *.jj,*.jjt		setf javacc
+
+" JavaScript, ECMAScript
+au BufNewFile,BufRead *.js,*.javascript,*.es	setf javascript
+
+" Java Server Pages
+au BufNewFile,BufRead *.jsp			setf jsp
+
+" Java Properties resource file (note: doesn't catch font.properties.pl)
+au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_??	setf jproperties
+au BufNewFile,BufRead *.properties_??_??_*	call s:StarSetf('jproperties')
+
+" Jess
+au BufNewFile,BufRead *.clp			setf jess
+
+" Jgraph
+au BufNewFile,BufRead *.jgr			setf jgraph
+
+" Kixtart
+au BufNewFile,BufRead *.kix			setf kix
+
+" Kimwitu[++]
+au BufNewFile,BufRead *.k			setf kwt
+
+" KDE script
+au BufNewFile,BufRead *.ks			setf kscript
+
+" Kconfig
+au BufNewFile,BufRead Kconfig,Kconfig.debug	setf kconfig
+
+" Lace (ISE)
+au BufNewFile,BufRead *.ace,*.ACE		setf lace
+
+" Latte
+au BufNewFile,BufRead *.latte,*.lte		setf latte
+
+" Limits
+au BufNewFile,BufRead /etc/limits		setf limits
+
+" LambdaProlog (*.mod too, see Modsim)
+au BufNewFile,BufRead *.sig			setf lprolog
+
+" LDAP LDIF
+au BufNewFile,BufRead *.ldif			setf ldif
+
+" Ld loader
+au BufNewFile,BufRead *.ld			setf ld
+
+" Lex
+au BufNewFile,BufRead *.lex,*.l			setf lex
+
+" Libao
+au BufNewFile,BufRead /etc/libao.conf,*/.libao	setf libao
+
+" Libsensors
+au BufNewFile,BufRead /etc/sensors.conf		setf sensors
+
+" LFTP
+au BufNewFile,BufRead lftp.conf,.lftprc,*lftp/rc	setf lftp
+
+" Lifelines (or Lex for C++!)
+au BufNewFile,BufRead *.ll			setf lifelines
+
+" Lilo: Linux loader
+au BufNewFile,BufRead lilo.conf*		call s:StarSetf('lilo')
+
+" Lisp (*.el = ELisp, *.cl = Common Lisp, *.jl = librep Lisp)
+if has("fname_case")
+  au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,*.L,.emacs,.sawfishrc setf lisp
+else
+  au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,.emacs,.sawfishrc setf lisp
+endif
+
+" SBCL implementation of Common Lisp
+au BufNewFile,BufRead sbclrc,.sbclrc		setf lisp
+
+" Lite
+au BufNewFile,BufRead *.lite,*.lt		setf lite
+
+" LiteStep RC files
+au BufNewFile,BufRead */LiteStep/*/*.rc		setf litestep
+
+" Login access
+au BufNewFile,BufRead /etc/login.access		setf loginaccess
+
+" Login defs
+au BufNewFile,BufRead /etc/login.defs		setf logindefs
+
+" Logtalk
+au BufNewFile,BufRead *.lgt			setf logtalk
+
+" LOTOS
+au BufNewFile,BufRead *.lot,*.lotos		setf lotos
+
+" Lout (also: *.lt)
+au BufNewFile,BufRead *.lou,*.lout		setf lout
+
+" Lua
+au BufNewFile,BufRead *.lua			setf lua
+
+" Linden Scripting Language (Second Life)
+au BufNewFile,BufRead *.lsl			setf lsl
+
+" Lynx style file (or LotusScript!)
+au BufNewFile,BufRead *.lss			setf lss
+
+" M4
+au BufNewFile,BufRead *.m4
+	\ if expand("<afile>") !~? 'html.m4$\|fvwm2rc' | setf m4 | endif
+
+" MaGic Point
+au BufNewFile,BufRead *.mgp			setf mgp
+
+" Mail (for Elm, trn, mutt, muttng, rn, slrn)
+au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
+
+" Mail aliases
+au BufNewFile,BufRead /etc/mail/aliases,/etc/aliases	setf mailaliases
+
+" Mailcap configuration file
+au BufNewFile,BufRead .mailcap,mailcap		setf mailcap
+
+" Makefile
+au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make
+
+" MakeIndex
+au BufNewFile,BufRead *.ist,*.mst		setf ist
+
+" Manpage
+au BufNewFile,BufRead *.man			setf man
+
+" Man config
+au BufNewFile,BufRead /etc/man.conf,man.config	setf manconf
+
+" Maple V
+au BufNewFile,BufRead *.mv,*.mpl,*.mws		setf maple
+
+" Mason
+au BufNewFile,BufRead *.mason,*.mhtml		setf mason
+
+" Matlab or Objective C
+au BufNewFile,BufRead *.m			call s:FTm()
+
+func! s:FTm()
+  let n = 1
+  while n < 10
+    let line = getline(n)
+    if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)'
+      setf objc
+      return
+    endif
+    if line =~ '^\s*%'
+      setf matlab
+      return
+    endif
+    if line =~ '^\s*(\*'
+      setf mma
+      return
+    endif
+    let n = n + 1
+  endwhile
+  if exists("g:filetype_m")
+    exe "setf " . g:filetype_m
+  else
+    setf matlab
+  endif
+endfunc
+
+" Mathematica notebook
+au BufNewFile,BufRead *.nb			setf mma
+
+" Maya Extension Language
+au BufNewFile,BufRead *.mel			setf mel
+
+" Messages
+au BufNewFile,BufRead /var/log/messages,/var/log/messages.*[0-9]  setf messages
+
+" Metafont
+au BufNewFile,BufRead *.mf			setf mf
+
+" MetaPost
+au BufNewFile,BufRead *.mp			setf mp
+
+" MGL
+au BufNewFile,BufRead *.mgl			setf mgl
+
+" MMIX or VMS makefile
+au BufNewFile,BufRead *.mms			call s:FTmms()
+
+" Symbian meta-makefile definition (MMP)
+au BufNewFile,BufRead *.mmp			setf mmp
+
+func! s:FTmms()
+  let n = 1
+  while n < 10
+    let line = getline(n)
+    if line =~ '^\s*\(%\|//\)' || line =~ '^\*'
+      setf mmix
+      return
+    endif
+    if line =~ '^\s*#'
+      setf make
+      return
+    endif
+    let n = n + 1
+  endwhile
+  setf mmix
+endfunc
+
+
+" Modsim III (or LambdaProlog)
+au BufNewFile,BufRead *.mod
+	\ if getline(1) =~ '\<module\>' |
+	\   setf lprolog |
+	\ else |
+	\   setf modsim3 |
+	\ endif
+
+" Modula 2
+au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi setf modula2
+
+" Modula 3 (.m3, .i3, .mg, .ig)
+au BufNewFile,BufRead *.[mi][3g]		setf modula3
+
+" Monk
+au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc	setf monk
+
+" MOO
+au BufNewFile,BufRead *.moo			setf moo
+
+" Modconf
+au BufNewFile,BufRead /etc/modules.conf,/etc/conf.modules	setf modconf
+au BufNewFile,BufRead /etc/modutils/*
+	\ if executable(expand("<afile>")) != 1
+	\|  call s:StarSetf('modconf')
+	\|endif
+
+" Mplayer config
+au BufNewFile,BufRead mplayer.conf,*/.mplayer/config	setf mplayerconf
+
+" Moterola S record
+au BufNewFile,BufRead *.s19,*.s28,*.s37		setf srec
+
+" Mrxvtrc
+au BufNewFile,BufRead mrxvtrc,.mrxvtrc		setf mrxvtrc
+
+" Msql
+au BufNewFile,BufRead *.msql			setf msql
+
+" Mysql
+au BufNewFile,BufRead *.mysql			setf mysql
+
+" M$ Resource files
+au BufNewFile,BufRead *.rc			setf rc
+
+" MuPAD source
+au BufRead,BufNewFile *.mu			setf mupad
+
+" Mush
+au BufNewFile,BufRead *.mush			setf mush
+
+" Mutt setup file (also for Muttng)
+au BufNewFile,BufRead Mutt{ng,}rc		setf muttrc
+
+" Nano
+au BufNewFile,BufRead /etc/nanorc,.nanorc	setf nanorc
+
+" Nastran input/DMAP
+"au BufNewFile,BufRead *.dat			setf nastran
+
+" Natural
+au BufNewFile,BufRead *.NS[ACGLMNPS]		setf natural
+
+" Netrc
+au BufNewFile,BufRead .netrc			setf netrc
+
+" Novell netware batch files
+au BufNewFile,BufRead *.ncf			setf ncf
+
+" Nroff/Troff (*.ms and *.t are checked below)
+au BufNewFile,BufRead *.me
+	\ if expand("<afile>") != "read.me" && expand("<afile>") != "click.me" |
+	\   setf nroff |
+	\ endif
+au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom	setf nroff
+au BufNewFile,BufRead *.[1-9]			call s:FTnroff()
+
+" This function checks if one of the first five lines start with a dot.  In
+" that case it is probably an nroff file: 'filetype' is set and 1 is returned.
+func! s:FTnroff()
+  if getline(1)[0] . getline(2)[0] . getline(3)[0] . getline(4)[0] . getline(5)[0] =~ '\.'
+    setf nroff
+    return 1
+  endif
+  return 0
+endfunc
+
+" Nroff or Objective C++
+au BufNewFile,BufRead *.mm			call s:FTmm()
+
+func! s:FTmm()
+  let n = 1
+  while n < 10
+    let line = getline(n)
+    if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)'
+      setf objcpp
+      return
+    endif
+    let n = n + 1
+  endwhile
+  setf nroff
+endfunc
+
+" Not Quite C
+au BufNewFile,BufRead *.nqc			setf nqc
+
+" NSIS
+au BufNewFile,BufRead *.nsi			setf nsis
+
+" OCAML
+au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly	setf ocaml
+
+" Occam
+au BufNewFile,BufRead *.occ			setf occam
+
+" Omnimark
+au BufNewFile,BufRead *.xom,*.xin		setf omnimark
+
+" OpenROAD
+au BufNewFile,BufRead *.or			setf openroad
+
+" OPL
+au BufNewFile,BufRead *.[Oo][Pp][Ll]		setf opl
+
+" Oracle config file
+au BufNewFile,BufRead *.ora			setf ora
+
+" Packet filter conf
+au BufNewFile,BufRead pf.conf			setf pf
+
+" Pam conf
+au BufNewFile,BufRead /etc/pam.conf		setf pamconf
+
+" PApp
+au BufNewFile,BufRead *.papp,*.pxml,*.pxsl	setf papp
+
+" Password file
+au BufNewFile,BufRead /etc/passwd,/etc/shadow,/etc/shadow- setf passwd
+
+" Pascal (also *.p)
+au BufNewFile,BufRead *.pas			setf pascal
+
+" Delphi project file
+au BufNewFile,BufRead *.dpr			setf pascal
+
+" PDF
+au BufNewFile,BufRead *.pdf			setf pdf
+
+" Perl
+if has("fname_case")
+  au BufNewFile,BufRead *.pl,*.PL		call s:FTpl()
+else
+  au BufNewFile,BufRead *.pl			call s:FTpl()
+endif
+au BufNewFile,BufRead *.plx			setf perl
+
+func! s:FTpl()
+  if exists("g:filetype_pl")
+    exe "setf " . g:filetype_pl
+  else
+    " recognize Prolog by specific text in the first non-empty line
+    " require a blank after the '%' because Perl uses "%list" and "%translate"
+    let l = getline(nextnonblank(1))
+    if l =~ '\<prolog\>' || l =~ '^\s*\(%\+\(\s\|$\)\|/\*\)' || l =~ ':-'
+      setf prolog
+    else
+      setf perl
+    endif
+  endif
+endfunc
+
+" Perl, XPM or XPM2
+au BufNewFile,BufRead *.pm
+	\ if getline(1) =~ "XPM2" |
+	\   setf xpm2 |
+	\ elseif getline(1) =~ "XPM" |
+	\   setf xpm |
+	\ else |
+	\   setf perl |
+	\ endif
+
+" Perl POD
+au BufNewFile,BufRead *.pod			setf pod
+
+" Php, php3, php4, etc.
+" Also Phtml (was used for PHP 2 in the past)
+" Also .ctp for Cake template file
+au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp	setf php
+
+" Pike
+au BufNewFile,BufRead *.pike,*.lpc,*.ulpc,*.pmod setf pike
+
+" Pinfo config
+au BufNewFile,BufRead */etc/pinforc,*/.pinforc	setf pinfo
+
+" Palm Resource compiler
+au BufNewFile,BufRead *.rcp			setf pilrc
+
+" Pine config
+au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex		setf pine
+
+" PL/M (also: *.inp)
+au BufNewFile,BufRead *.plm,*.p36,*.pac		setf plm
+
+" PL/SQL
+au BufNewFile,BufRead *.pls,*.plsql		setf plsql
+
+" PLP
+au BufNewFile,BufRead *.plp			setf plp
+
+" PO and PO template (GNU gettext)
+au BufNewFile,BufRead *.po,*.pot		setf po
+
+" Postfix main config
+au BufNewFile,BufRead main.cf			setf pfmain
+
+" PostScript (+ font files, encapsulated PostScript, Adobe Illustrator)
+au BufNewFile,BufRead *.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai	  setf postscr
+
+" PostScript Printer Description
+au BufNewFile,BufRead *.ppd			setf ppd
+
+" Povray
+au BufNewFile,BufRead *.pov			setf pov
+
+" Povray configuration
+au BufNewFile,BufRead .povrayrc			setf povini
+
+" Povray, PHP or assembly
+au BufNewFile,BufRead *.inc			call s:FTinc()
+
+func! s:FTinc()
+  if exists("g:filetype_inc")
+    exe "setf " . g:filetype_inc
+  else
+    let lines = getline(1).getline(2).getline(3)
+    if lines =~? "perlscript"
+      setf aspperl
+    elseif lines =~ "<%"
+      setf aspvbs
+    elseif lines =~ "<?"
+      setf php
+    else
+      call s:FTasmsyntax()
+      if exists("b:asmsyntax")
+	exe "setf " . b:asmsyntax
+      else
+	setf pov
+      endif
+    endif
+  endif
+endfunc
+
+" Printcap and Termcap
+au BufNewFile,BufRead *printcap
+	\ let b:ptcap_type = "print" | setf ptcap
+au BufNewFile,BufRead *termcap
+	\ let b:ptcap_type = "term" | setf ptcap
+
+" PCCTS / ANTRL
+"au BufNewFile,BufRead *.g			setf antrl
+au BufNewFile,BufRead *.g			setf pccts
+
+" PPWizard
+au BufNewFile,BufRead *.it,*.ih			setf ppwiz
+
+" Oracle Pro*C/C++
+au BufNewFile,BufRead *.pc			setf proc
+
+" Privoxy actions file
+au BufNewFile,BufRead *.action			setf privoxy
+
+" Procmail
+au BufNewFile,BufRead .procmail,.procmailrc	setf procmail
+
+" Progress or CWEB
+au BufNewFile,BufRead *.w			call s:FTprogress_cweb()
+
+func! s:FTprogress_cweb()
+  if exists("g:filetype_w")
+    exe "setf " . g:filetype_w
+    return
+  endif
+  if getline(1) =~ '&ANALYZE' || getline(3) =~ '&GLOBAL-DEFINE'
+    setf progress
+  else
+    setf cweb
+  endif
+endfunc
+
+" Progress or assembly
+au BufNewFile,BufRead *.i			call s:FTprogress_asm()
+
+func! s:FTprogress_asm()
+  if exists("g:filetype_i")
+    exe "setf " . g:filetype_i
+    return
+  endif
+  " This function checks for an assembly comment the first ten lines.
+  " If not found, assume Progress.
+  let lnum = 1
+  while lnum <= 10 && lnum < line('$')
+    let line = getline(lnum)
+    if line =~ '^\s*;' || line =~ '^\*'
+      call s:FTasm()
+      return
+    elseif line !~ '^\s*$' || line =~ '^/\*'
+      " Not an empty line: Doesn't look like valid assembly code.
+      " Or it looks like a Progress /* comment
+      break
+    endif
+    let lnum = lnum + 1
+  endw
+  setf progress
+endfunc
+
+" Progress or Pascal
+au BufNewFile,BufRead *.p			call s:FTprogress_pascal()
+
+func! s:FTprogress_pascal()
+  if exists("g:filetype_p")
+    exe "setf " . g:filetype_p
+    return
+  endif
+  " This function checks for valid Pascal syntax in the first ten lines.
+  " Look for either an opening comment or a program start.
+  " If not found, assume Progress.
+  let lnum = 1
+  while lnum <= 10 && lnum < line('$')
+    let line = getline(lnum)
+    if line =~ '^\s*\(program\|unit\|procedure\|function\|const\|type\|var\)\>'
+	\ || line =~ '^\s*{' || line =~ '^\s*(\*'
+      setf pascal
+      return
+    elseif line !~ '^\s*$' || line =~ '^/\*'
+      " Not an empty line: Doesn't look like valid Pascal code.
+      " Or it looks like a Progress /* comment
+      break
+    endif
+    let lnum = lnum + 1
+  endw
+  setf progress
+endfunc
+
+
+" Software Distributor Product Specification File (POSIX 1387.2-1995)
+au BufNewFile,BufRead *.psf			setf psf
+au BufNewFile,BufRead INDEX,INFO
+	\ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' |
+	\   setf psf |
+	\ endif
+
+" Prolog
+au BufNewFile,BufRead *.pdb			setf prolog
+
+" Promela
+au BufNewFile,BufRead *.pml			setf promela
+
+" Protocols
+au BufNewFile,BufRead /etc/protocols		setf protocols
+
+" Pyrex
+au BufNewFile,BufRead *.pyx,*.pxd		setf pyrex
+
+" Python
+au BufNewFile,BufRead *.py,*.pyw		setf python
+
+" Radiance
+au BufNewFile,BufRead *.rad,*.mat		setf radiance
+
+" Ratpoison config/command files
+au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc	setf ratpoison
+
+" RCS file
+au BufNewFile,BufRead *\,v			setf rcs
+
+" Readline
+au BufNewFile,BufRead .inputrc,inputrc		setf readline
+
+" Registry for MS-Windows
+au BufNewFile,BufRead *.reg
+	\ if getline(1) =~? '^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$' | setf registry | endif
+
+" Renderman Interface Bytestream
+au BufNewFile,BufRead *.rib			setf rib
+
+" Rexx
+au BufNewFile,BufRead *.rexx,*.rex,*.jrexx,*.rxj,*.orx	setf rexx
+
+" R (Splus)
+if has("fname_case")
+  au BufNewFile,BufRead *.s,*.S			setf r
+else
+  au BufNewFile,BufRead *.s			setf r
+endif
+
+" R Help file
+if has("fname_case")
+  au BufNewFile,BufRead *.rd,*.Rd		setf rhelp
+else
+  au BufNewFile,BufRead *.rd			setf rhelp
+endif
+
+" R noweb file
+if has("fname_case")
+  au BufNewFile,BufRead *.Rnw,*.rnw,*.Snw,*.snw		setf rnoweb
+else
+  au BufNewFile,BufRead *.rnw,*.snw			setf rnoweb
+endif
+
+" Rexx, Rebol or R
+au BufNewFile,BufRead *.r,*.R			call s:FTr()
+
+func! s:FTr()
+  let max = line("$") > 50 ? 50 : line("$")
+
+  for n in range(1, max)
+    " Rebol is easy to recognize, check for that first
+    if getline(n) =~? '\<REBOL\>'
+      setf rebol
+      return
+    endif
+  endfor
+
+  for n in range(1, max)
+    " R has # comments
+    if getline(n) =~ '^\s*#'
+      setf r
+      return
+    endif
+    " Rexx has /* comments */
+    if getline(n) =~ '^\s*/\*'
+      setf rexx
+      return
+    endif
+  endfor
+
+  " Nothing recognized, assume Rexx
+  setf rexx
+endfunc
+
+" Remind
+au BufNewFile,BufRead .reminders*		call s:StarSetf('remind')
+
+" Resolv.conf
+au BufNewFile,BufRead resolv.conf		setf resolv
+
+" Relax NG Compact
+au BufNewFile,BufRead *.rnc			setf rnc
+
+" RPL/2
+au BufNewFile,BufRead *.rpl			setf rpl
+
+" Robots.txt
+au BufNewFile,BufRead robots.txt		setf robots
+
+" Rpcgen
+au BufNewFile,BufRead *.x			setf rpcgen
+
+" reStructuredText Documentation Format
+au BufNewFile,BufRead *.rst			setf rst
+
+" RTF
+au BufNewFile,BufRead *.rtf			setf rtf
+
+" Ruby
+au BufNewFile,BufRead *.rb,*.rbw,*.gem,*.gemspec	setf ruby
+
+" Ruby on Rails
+au BufNewFile,BufRead *.builder,*.rxml,*.rjs	setf ruby
+
+" Rantfile and Rakefile is like Ruby
+au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake	setf ruby
+
+" S-lang (or shader language!)
+au BufNewFile,BufRead *.sl			setf slang
+
+" Samba config
+au BufNewFile,BufRead smb.conf			setf samba
+
+" SAS script
+au BufNewFile,BufRead *.sas			setf sas
+
+" Sather
+au BufNewFile,BufRead *.sa			setf sather
+
+" Scilab
+au BufNewFile,BufRead *.sci,*.sce		setf scilab
+
+" SD: Streaming Descriptors
+au BufNewFile,BufRead *.sd			setf sd
+
+" SDL
+au BufNewFile,BufRead *.sdl,*.pr		setf sdl
+
+" sed
+au BufNewFile,BufRead *.sed			setf sed
+
+" Sieve (RFC 3028)
+au BufNewFile,BufRead *.siv			setf sieve
+
+" Sendmail
+au BufNewFile,BufRead sendmail.cf		setf sm
+
+" Sendmail .mc files are actually m4.  Could also be MS Message text file.
+au BufNewFile,BufRead *.mc			call s:McSetf()
+
+func! s:McSetf()
+  " Rely on the file to start with a comment.
+  " MS message text files use ';', Sendmail files use '#' or 'dnl'
+  for lnum in range(1, min([line("$"), 20]))
+    let line = getline(lnum)
+    if line =~ '^\s*\(#\|dnl\)'
+      setf m4  " Sendmail .mc file
+      return
+    elseif line =~ '^\s*;'
+      setf msmessages  " MS Message text file
+      return
+    endif
+  endfor
+  setf m4  " Default: Sendmail .mc file
+endfunc
+
+" Services
+au BufNewFile,BufRead /etc/services		setf services
+
+" Service Location config
+au BufNewFile,BufRead /etc/slp.conf		setf slpconf
+
+" Service Location registration
+au BufNewFile,BufRead /etc/slp.reg		setf slpreg
+
+" Service Location SPI
+au BufNewFile,BufRead /etc/slp.spi		setf slpspi
+
+" Setserial config
+au BufNewFile,BufRead /etc/serial.conf		setf setserial
+
+" SGML
+au BufNewFile,BufRead *.sgm,*.sgml
+	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' |
+	\   setf sgmllnx |
+	\ elseif getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' |
+	\   let b:docbk_type="sgml" |
+	\   setf docbk |
+	\ else |
+	\   setf sgml |
+	\ endif
+
+" SGMLDECL
+au BufNewFile,BufRead *.decl,*.dcl,*.dec
+	\ if getline(1).getline(2).getline(3) =~? '^<!SGML' |
+	\    setf sgmldecl |
+	\ endif
+
+" SGML catalog file
+au BufNewFile,BufRead catalog			setf catalog
+au BufNewFile,BufRead sgml.catalog*		call s:StarSetf('catalog')
+
+" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
+" Gentoo ebuilds are actually bash scripts
+au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash_profile*,.bash_logout*,*.bash,*.ebuild call SetFileTypeSH("bash")
+au BufNewFile,BufRead .kshrc*,*.ksh call SetFileTypeSH("ksh")
+au BufNewFile,BufRead /etc/profile,.profile*,*.sh,*.env call SetFileTypeSH(getline(1))
+
+" Also called from scripts.vim.
+func! SetFileTypeSH(name)
+  if expand("<amatch>") =~ g:ft_ignore_pat
+    return
+  endif
+  if a:name =~ '\<ksh\>'
+    let b:is_kornshell = 1
+    if exists("b:is_bash")
+      unlet b:is_bash
+    endif
+    if exists("b:is_sh")
+      unlet b:is_sh
+    endif
+  elseif exists("g:bash_is_sh") || a:name =~ '\<bash\>' || a:name =~ '\<bash2\>'
+    let b:is_bash = 1
+    if exists("b:is_kornshell")
+      unlet b:is_kornshell
+    endif
+    if exists("b:is_sh")
+      unlet b:is_sh
+    endif
+  elseif a:name =~ '\<sh\>'
+    let b:is_sh = 1
+    if exists("b:is_kornshell")
+      unlet b:is_kornshell
+    endif
+    if exists("b:is_bash")
+      unlet b:is_bash
+    endif
+  endif
+  call SetFileTypeShell("sh")
+endfunc
+
+" For shell-like file types, check for an "exec" command hidden in a comment,
+" as used for Tcl.
+" Also called from scripts.vim, thus can't be local to this script.
+func! SetFileTypeShell(name)
+  if expand("<amatch>") =~ g:ft_ignore_pat
+    return
+  endif
+  let l = 2
+  while l < 20 && l < line("$") && getline(l) =~ '^\s*\(#\|$\)'
+    " Skip empty and comment lines.
+    let l = l + 1
+  endwhile
+  if l < line("$") && getline(l) =~ '\s*exec\s' && getline(l - 1) =~ '^\s*#.*\\$'
+    " Found an "exec" line after a comment with continuation
+    let n = substitute(getline(l),'\s*exec\s\+\([^ ]*/\)\=', '', '')
+    if n =~ '\<tclsh\|\<wish'
+      setf tcl
+      return
+    endif
+  endif
+  exe "setf " . a:name
+endfunc
+
+" tcsh scripts
+au BufNewFile,BufRead .tcshrc*,*.tcsh,tcsh.tcshrc,tcsh.login	call SetFileTypeShell("tcsh")
+
+" csh scripts, but might also be tcsh scripts (on some systems csh is tcsh)
+au BufNewFile,BufRead .login*,.cshrc*,csh.cshrc,csh.login,csh.logout,*.csh,.alias  call s:CSH()
+
+func! s:CSH()
+  if exists("g:filetype_csh")
+    call SetFileTypeShell(g:filetype_csh)
+  elseif &shell =~ "tcsh"
+    call SetFileTypeShell("tcsh")
+  else
+    call SetFileTypeShell("csh")
+  endif
+endfunc
+
+" Z-Shell script
+au BufNewFile,BufRead .zprofile,/etc/zprofile,.zfbfmarks  setf zsh
+au BufNewFile,BufRead .zsh*,.zlog*,.zcompdump*  call s:StarSetf('zsh')
+
+" Scheme
+au BufNewFile,BufRead *.scm,*.ss		setf scheme
+
+" Screen RC
+au BufNewFile,BufRead .screenrc,screenrc	setf screen
+
+" Simula
+au BufNewFile,BufRead *.sim			setf simula
+
+" SINDA
+au BufNewFile,BufRead *.sin,*.s85		setf sinda
+
+" SiSU
+au BufNewFile,BufRead *.sst,*.ssm,*.ssi,*.-sst,*._sst setf sisu
+au BufNewFile,BufRead *.sst.meta,*.-sst.meta,*._sst.meta setf sisu
+
+" SKILL
+au BufNewFile,BufRead *.il,*.ils,*.cdf		setf skill
+
+" SLRN
+au BufNewFile,BufRead .slrnrc			setf slrnrc
+au BufNewFile,BufRead *.score			setf slrnsc
+
+" Smalltalk (and TeX)
+au BufNewFile,BufRead *.st			setf st
+au BufNewFile,BufRead *.cls
+	\ if getline(1) =~ '^%' |
+	\  setf tex |
+	\ else |
+	\  setf st |
+	\ endif
+
+" Smarty templates
+au BufNewFile,BufRead *.tpl			setf smarty
+
+" SMIL or XML
+au BufNewFile,BufRead *.smil
+	\ if getline(1) =~ '<?\s*xml.*?>' |
+	\   setf xml |
+	\ else |
+	\   setf smil |
+	\ endif
+
+" SMIL or SNMP MIB file
+au BufNewFile,BufRead *.smi
+	\ if getline(1) =~ '\<smil\>' |
+	\   setf smil |
+	\ else |
+	\   setf mib |
+	\ endif
+
+" SMITH
+au BufNewFile,BufRead *.smt,*.smith		setf smith
+
+" Snobol4 and spitbol
+au BufNewFile,BufRead *.sno,*.spt		setf snobol4
+
+" SNMP MIB files
+au BufNewFile,BufRead *.mib,*.my		setf mib
+
+" Snort Configuration
+au BufNewFile,BufRead *.hog,snort.conf,vision.conf	setf hog
+au BufNewFile,BufRead *.rules			call s:FTRules()
+
+let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*'
+func! s:FTRules()
+  if expand('<amatch>:p') =~ '^/etc/udev/rules\.d/.*\.rules$'
+    setf udevrules
+    return
+  endif
+  try
+    let config_lines = readfile('/etc/udev/udev.conf')
+  catch /^Vim\%((\a\+)\)\=:E484/
+    setf hog
+    return
+  endtry
+  let dir = expand('<amatch>:p:h')
+  for line in config_lines
+    if line =~ s:ft_rules_udev_rules_pattern
+      let udev_rules = substitute(line, s:ft_rules_udev_rules_pattern, '\1', "")
+      if dir == udev_rules
+        setf udevrules
+      endif
+      break
+    endif
+  endfor
+  setf hog
+endfunc
+
+
+" Spec (Linux RPM)
+au BufNewFile,BufRead *.spec			setf spec
+
+" Speedup (AspenTech plant simulator)
+au BufNewFile,BufRead *.speedup,*.spdata,*.spd	setf spup
+
+" Slice
+au BufNewFile,BufRead *.ice			setf slice
+
+" Spice
+au BufNewFile,BufRead *.sp,*.spice		setf spice
+
+" Spyce
+au BufNewFile,BufRead *.spy,*.spi		setf spyce
+
+" Squid
+au BufNewFile,BufRead squid.conf		setf squid
+
+" SQL for Oracle Designer
+au BufNewFile,BufRead *.tyb,*.typ,*.tyc,*.pkb,*.pks	setf sql
+
+" SQL
+au BufNewFile,BufRead *.sql			call s:SQL()
+
+func! s:SQL()
+  if exists("g:filetype_sql")
+    exe "setf " . g:filetype_sql
+  else
+    setf sql
+  endif
+endfunc
+
+" SQLJ
+au BufNewFile,BufRead *.sqlj			setf sqlj
+
+" SQR
+au BufNewFile,BufRead *.sqr,*.sqi		setf sqr
+
+" OpenSSH configuration
+au BufNewFile,BufRead ssh_config,*/.ssh/config	setf sshconfig
+
+" OpenSSH server configuration
+au BufNewFile,BufRead sshd_config		setf sshdconfig
+
+" Stata
+au BufNewFile,BufRead *.ado,*.class,*.do,*.imata,*.mata   setf stata
+
+" SMCL
+au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl	setf smcl
+
+" Stored Procedures
+au BufNewFile,BufRead *.stp			setf stp
+
+" Standard ML
+au BufNewFile,BufRead *.sml			setf sml
+
+" Sratus VOS command macro
+au BufNewFile,BufRead *.cm			setf voscm
+
+" Sysctl
+au BufNewFile,BufRead /etc/sysctl.conf		setf sysctl
+
+" Sudoers
+au BufNewFile,BufRead /etc/sudoers,sudoers.tmp	setf sudoers
+
+" If the file has an extension of 't' and is in a directory 't' then it is
+" almost certainly a Perl test file.
+" If the first line starts with '#' and contains 'perl' it's probably a Perl
+" file.
+" (Slow test) If a file contains a 'use' statement then it is almost certainly
+" a Perl file.
+func! s:FTperl()
+  if expand("%:e") == 't' && expand("%:p:h:t") == 't'
+    setf perl
+    return 1
+  endif
+  if getline(1)[0] == '#' && getline(1) =~ 'perl'
+    setf perl
+    return 1
+  endif
+  if search('^use\s\s*\k', 'nc', 30)
+    setf perl
+    return 1
+  endif
+  return 0
+endfunc
+
+" Tads (or Nroff or Perl test file)
+au BufNewFile,BufRead *.t
+	\ if !s:FTnroff() && !s:FTperl() | setf tads | endif
+
+" Tags
+au BufNewFile,BufRead tags			setf tags
+
+" TAK
+au BufNewFile,BufRead *.tak			setf tak
+
+" Tcl (JACL too)
+au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl	setf tcl
+
+" TealInfo
+au BufNewFile,BufRead *.tli			setf tli
+
+" Telix Salt
+au BufNewFile,BufRead *.slt			setf tsalt
+
+" Terminfo
+au BufNewFile,BufRead *.ti			setf terminfo
+
+" TeX
+au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl	setf tex
+au BufNewFile,BufRead *.tex			call s:FTtex()
+
+" Choose context, plaintex, or tex (LaTeX) based on these rules:
+" 1. Check the first line of the file for "%&<format>".
+" 2. Check the first 1000 non-comment lines for LaTeX or ConTeXt keywords.
+" 3. Default to "latex" or to g:tex_flavor, can be set in user's vimrc.
+func! s:FTtex()
+  let firstline = getline(1)
+  if firstline =~ '^%&\s*\a\+'
+    let format = tolower(matchstr(firstline, '\a\+'))
+    let format = substitute(format, 'pdf', '', '')
+    if format == 'tex'
+      let format = 'plain'
+    endif
+  else
+    " Default value, may be changed later:
+    let format = exists("g:tex_flavor") ? g:tex_flavor : 'plain'
+    " Save position, go to the top of the file, find first non-comment line.
+    let save_cursor = getpos('.')
+    call cursor(1,1)
+    let firstNC = search('^\s*[^[:space:]%]', 'c', 1000)
+    if firstNC " Check the next thousand lines for a LaTeX or ConTeXt keyword.
+      let lpat = 'documentclass\>\|usepackage\>\|begin{\|newcommand\>\|renewcommand\>'
+      let cpat = 'start\a\+\|setup\a\+\|usemodule\|enablemode\|enableregime\|setvariables\|useencoding\|usesymbols\|stelle\a\+\|verwende\a\+\|stel\a\+\|gebruik\a\+\|usa\a\+\|imposta\a\+\|regle\a\+\|utilisemodule\>'
+      let kwline = search('^\s*\\\%(' . lpat . '\)\|^\s*\\\(' . cpat . '\)',
+			      \ 'cnp', firstNC + 1000)
+      if kwline == 1	" lpat matched
+	let format = 'latex'
+      elseif kwline == 2	" cpat matched
+	let format = 'context'
+      endif		" If neither matched, keep default set above.
+      " let lline = search('^\s*\\\%(' . lpat . '\)', 'cn', firstNC + 1000)
+      " let cline = search('^\s*\\\%(' . cpat . '\)', 'cn', firstNC + 1000)
+      " if cline > 0
+      "   let format = 'context'
+      " endif
+      " if lline > 0 && (cline == 0 || cline > lline)
+      "   let format = 'tex'
+      " endif
+    endif " firstNC
+    call setpos('.', save_cursor)
+  endif " firstline =~ '^%&\s*\a\+'
+
+  " Translation from formats to file types.  TODO:  add AMSTeX, RevTex, others?
+  if format == 'plain'
+    setf plaintex
+  elseif format == 'context'
+    setf context
+  else " probably LaTeX
+    setf tex
+  endif
+  return
+endfunc
+
+" ConTeXt
+au BufNewFile,BufRead tex/context/*/*.tex,*.mkii,*.mkiv   setf context
+
+" Texinfo
+au BufNewFile,BufRead *.texinfo,*.texi,*.txi	setf texinfo
+
+" TeX configuration
+au BufNewFile,BufRead texmf.cnf			setf texmf
+
+" Tidy config
+au BufNewFile,BufRead .tidyrc,tidyrc		setf tidy
+
+" TF mud client
+au BufNewFile,BufRead *.tf,.tfrc,tfrc		setf tf
+
+" TPP - Text Presentation Program
+au BufNewFile,BufReadPost *.tpp			setf tpp
+
+" Trustees
+au BufNewFile,BufRead trustees.conf		setf trustees
+
+" TSS - Geometry
+au BufNewFile,BufReadPost *.tssgm		setf tssgm
+
+" TSS - Optics
+au BufNewFile,BufReadPost *.tssop		setf tssop
+
+" TSS - Command Line (temporary)
+au BufNewFile,BufReadPost *.tsscl		setf tsscl
+
+" Motif UIT/UIL files
+au BufNewFile,BufRead *.uit,*.uil		setf uil
+
+" Udev conf
+au BufNewFile,BufRead /etc/udev/udev.conf	setf udevconf
+
+" Udev permissions
+au BufNewFile,BufRead /etc/udev/permissions.d/*.permissions setf udevperm
+"
+" Udev symlinks config
+au BufNewFile,BufRead /etc/udev/cdsymlinks.conf	setf sh
+
+" UnrealScript
+au BufNewFile,BufRead *.uc			setf uc
+
+" Updatedb
+au BufNewFile,BufRead /etc/updatedb.conf	setf updatedb
+
+" Vera
+au BufNewFile,BufRead *.vr,*.vri,*.vrh		setf vera
+
+" Verilog HDL
+au BufNewFile,BufRead *.v			setf verilog
+
+" Verilog-AMS HDL
+au BufNewFile,BufRead *.va,*.vams		setf verilogams
+
+" VHDL
+au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst  setf vhdl
+au BufNewFile,BufRead *.vhdl_[0-9]*		call s:StarSetf('vhdl')
+
+" Vim script
+au BufNewFile,BufRead *.vim,*.vba,.exrc,_exrc	setf vim
+
+" Viminfo file
+au BufNewFile,BufRead .viminfo,_viminfo		setf viminfo
+
+" Virata Config Script File
+au BufRead,BufNewFile *.hw,*.module,*.pkg	setf virata
+
+" Visual Basic (also uses *.bas) or FORM
+au BufNewFile,BufRead *.frm			call s:FTVB("form")
+
+" SaxBasic is close to Visual Basic
+au BufNewFile,BufRead *.sba			setf vb
+
+" Vgrindefs file
+au BufNewFile,BufRead vgrindefs			setf vgrindefs
+
+" VRML V1.0c
+au BufNewFile,BufRead *.wrl			setf vrml
+
+" Webmacro
+au BufNewFile,BufRead *.wm			setf webmacro
+
+" Wget config
+au BufNewFile,BufRead .wgetrc,wgetrc		setf wget
+
+" Website MetaLanguage
+au BufNewFile,BufRead *.wml			setf wml
+
+" Winbatch
+au BufNewFile,BufRead *.wbt			setf winbatch
+
+" WSML
+au BufNewFile,BufRead *.wsml			setf wsml
+
+" WvDial
+au BufNewFile,BufRead wvdial.conf,.wvdialrc	setf wvdial
+
+" CVS RC file
+au BufNewFile,BufRead .cvsrc			setf cvsrc
+
+" CVS commit file
+au BufNewFile,BufRead cvs\d\+			setf cvs
+
+" WEB (*.web is also used for Winbatch: Guess, based on expecting "%" comment
+" lines in a WEB file).
+au BufNewFile,BufRead *.web
+	\ if getline(1)[0].getline(2)[0].getline(3)[0].getline(4)[0].getline(5)[0] =~ "%" |
+	\   setf web |
+	\ else |
+	\   setf winbatch |
+	\ endif
+
+" Windows Scripting Host and Windows Script Component
+au BufNewFile,BufRead *.ws[fc]			setf wsh
+
+" XHTML
+au BufNewFile,BufRead *.xhtml,*.xht		setf xhtml
+
+" X Pixmap (dynamically sets colors, use BufEnter to make it work better)
+au BufEnter *.xpm
+	\ if getline(1) =~ "XPM2" |
+	\   setf xpm2 |
+	\ else |
+	\   setf xpm |
+	\ endif
+au BufEnter *.xpm2				setf xpm2
+
+" XFree86 config
+au BufNewFile,BufRead XF86Config
+	\ if getline(1) =~ '\<XConfigurator\>' |
+	\   let b:xf86c_xfree86_version = 3 |
+	\ endif |
+	\ setf xf86conf
+
+" Xorg config
+au BufNewFile,BufRead xorg.conf,xorg.conf-4	let b:xf86c_xfree86_version = 4 | setf xf86conf
+
+" Xinetd conf
+au BufNewFile,BufRead /etc/xinetd.conf		setf xinetd
+
+" XS Perl extension interface language
+au BufNewFile,BufRead *.xs			setf xs
+
+" X resources file
+au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults
+
+" Xmath
+au BufNewFile,BufRead *.msc,*.msf		setf xmath
+au BufNewFile,BufRead *.ms
+	\ if !s:FTnroff() | setf xmath | endif
+
+" XML  specific variants: docbk and xbl
+au BufNewFile,BufRead *.xml			call s:FTxml()
+
+func! s:FTxml()
+  let n = 1
+  while n < 100 && n < line("$")
+    let line = getline(n)
+    if line =~ '<!DOCTYPE.*DocBook'
+      let b:docbk_type = "xml"
+      setf docbk
+      return
+    endif
+    if line =~ 'xmlns:xbl="http://www.mozilla.org/xbl"'
+      setf xbl
+      return
+    endif
+    let n += 1
+  endwhile
+  setf xml
+endfunc
+
+" XMI (holding UML models) is also XML
+au BufNewFile,BufRead *.xmi			setf xml
+
+" CSPROJ files are Visual Studio.NET's XML-based project config files
+au BufNewFile,BufRead *.csproj,*.csproj.user	setf xml
+
+" Qt Linguist translation source and Qt User Interface Files are XML
+au BufNewFile,BufRead *.ts,*.ui			setf xml
+
+" TPM's are RDF-based descriptions of TeX packages (Nikolai Weibull)
+au BufNewFile,BufRead *.tpm			setf xml
+
+" Xdg menus
+au BufNewFile,BufRead /etc/xdg/menus/*.menu	setf xml
+
+" ATI graphics driver configuration
+au BufNewFile,BufRead fglrxrc			setf xml
+
+" XLIFF (XML Localisation Interchange File Format) is also XML
+au BufNewFile,BufRead *.xlf			setf xml
+au BufNewFile,BufRead *.xliff			setf xml
+
+" X11 xmodmap (also see below)
+au BufNewFile,BufRead *Xmodmap			setf xmodmap
+
+" Xquery
+au BufNewFile,BufRead *.xq,*.xql,*.xqm,*.xquery,*.xqy	setf xquery
+
+" XSD
+au BufNewFile,BufRead *.xsd			setf xsd
+
+" Xslt
+au BufNewFile,BufRead *.xsl,*.xslt		setf xslt
+
+" Yacc
+au BufNewFile,BufRead *.yy			setf yacc
+
+" Yacc or racc
+au BufNewFile,BufRead *.y			call s:FTy()
+
+func! s:FTy()
+  let n = 1
+  while n < 100 && n < line("$")
+    let line = getline(n)
+    if line =~ '^\s*%'
+      setf yacc
+      return
+    endif
+    if getline(n) =~ '^\s*\(#\|class\>\)' && getline(n) !~ '^\s*#\s*include'
+      setf racc
+      return
+    endif
+    let n = n + 1
+  endwhile
+  setf yacc
+endfunc
+
+
+" Yaml
+au BufNewFile,BufRead *.yaml,*.yml		setf yaml
+
+" Zope
+"   dtml (zope dynamic template markup language), pt (zope page template),
+"   cpt (zope form controller page template)
+au BufNewFile,BufRead *.dtml,*.pt,*.cpt		call s:FThtml()
+"   zsql (zope sql method)
+au BufNewFile,BufRead *.zsql			call s:SQL()
+
+" Z80 assembler asz80
+au BufNewFile,BufRead *.z8a			setf z8a
+
+augroup END
+
+
+" Source the user-specified filetype file, for backwards compatibility with
+" Vim 5.x.
+if exists("myfiletypefile") && filereadable(expand(myfiletypefile))
+  execute "source " . myfiletypefile
+endif
+
+
+" Check for "*" after loading myfiletypefile, so that scripts.vim is only used
+" when there are no matching file name extensions.
+" Don't do this for compressed files.
+augroup filetypedetect
+au BufNewFile,BufRead *
+	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
+	\ | runtime! scripts.vim | endif
+au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif
+
+
+" Extra checks for when no filetype has been detected now.  Mostly used for
+" patterns that end in "*".  E.g., "zsh*" matches "zsh.vim", but that's a Vim
+" script file.
+" Most of these should call s:StarSetf() to avoid names ending in .gz and the
+" like are used.
+
+" Asterisk config file
+au BufNewFile,BufRead *asterisk/*.conf*		call s:StarSetf('asterisk')
+au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm')
+
+" Bazaar version control
+au BufNewFile,BufRead bzr_log.*			setf bzr
+
+" BIND zone
+au BufNewFile,BufRead */named/db.*,*/bind/db.*	call s:StarSetf('bindzone')
+
+" Changelog
+au BufNewFile,BufRead [cC]hange[lL]og*
+	\ if getline(1) =~ '; urgency='
+	\|  call s:StarSetf('debchangelog')
+	\|else
+	\|  call s:StarSetf('changelog')
+	\|endif
+
+" Crontab
+au BufNewFile,BufRead crontab,crontab.*		call s:StarSetf('crontab')
+
+" Debian Sources.list
+au BufNewFile,BufRead /etc/apt/sources.list.d/*	call s:StarSetf('debsources')
+
+" Dracula
+au BufNewFile,BufRead drac.*			call s:StarSetf('dracula')
+
+" Fvwm
+au BufNewFile,BufRead */.fvwm/*			call s:StarSetf('fvwm')
+au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook
+	\ let b:fvwm_version = 1 | call s:StarSetf('fvwm')
+au BufNewFile,BufRead *fvwm2rc*
+	\ if expand("<afile>:e") == "m4"
+	\|  call s:StarSetf('fvwm2m4')
+	\|else
+	\|  let b:fvwm_version = 2 | call s:StarSetf('fvwm')
+	\|endif
+
+" GTK RC
+au BufNewFile,BufRead .gtkrc*,gtkrc*		call s:StarSetf('gtkrc')
+
+" Jam
+au BufNewFile,BufRead Prl*.*,JAM*.*		call s:StarSetf('jam')
+
+" Jargon
+au! BufNewFile,BufRead *jarg*
+	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE'
+	\|  call s:StarSetf('jargon')
+	\|endif
+
+" Kconfig
+au BufNewFile,BufRead Kconfig.*			call s:StarSetf('kconfig')
+
+" Makefile
+au BufNewFile,BufRead [mM]akefile*		call s:StarSetf('make')
+
+" Ruby Makefile
+au BufNewFile,BufRead [rR]akefile*		call s:StarSetf('ruby')
+
+" Mail (also matches muttrc.vim, so this is below the other checks)
+au BufNewFile,BufRead mutt[[:alnum:]._-]\{6\}	setf mail
+
+" Modconf
+au BufNewFile,BufRead /etc/modprobe.*		call s:StarSetf('modconf')
+
+" Mutt setup file
+au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
+au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc*		call s:StarSetf('muttrc')
+
+" Nroff macros
+au BufNewFile,BufRead tmac.*			call s:StarSetf('nroff')
+
+" Pam conf
+au BufNewFile,BufRead /etc/pam.d/*		call s:StarSetf('pamconf')
+
+" Printcap and Termcap
+au BufNewFile,BufRead *printcap*
+	\ if !did_filetype()
+	\|  let b:ptcap_type = "print" | call s:StarSetf('ptcap')
+	\|endif
+au BufNewFile,BufRead *termcap*
+	\ if !did_filetype()
+	\|  let b:ptcap_type = "term" | call s:StarSetf('ptcap')
+	\|endif
+
+" Vim script
+au BufNewFile,BufRead *vimrc*			call s:StarSetf('vim')
+
+" Subversion commit file
+au BufNewFile,BufRead svn-commit*.tmp		setf svn
+
+" X resources file
+au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* call s:StarSetf('xdefaults')
+
+" XFree86 config
+au BufNewFile,BufRead XF86Config-4*
+	\ let b:xf86c_xfree86_version = 4 | call s:StarSetf('xf86conf')
+au BufNewFile,BufRead XF86Config*
+	\ if getline(1) =~ '\<XConfigurator\>'
+	\|  let b:xf86c_xfree86_version = 3
+	\|endif
+	\|call s:StarSetf('xf86conf')
+
+" X11 xmodmap
+au BufNewFile,BufRead *xmodmap*			call s:StarSetf('xmodmap')
+
+" Xinetd conf
+au BufNewFile,BufRead /etc/xinetd.d/*		call s:StarSetf('xinetd')
+
+" Z-Shell script
+au BufNewFile,BufRead zsh*,zlog*		call s:StarSetf('zsh')
+
+
+" Generic configuration file (check this last, it's just guessing!)
+au BufNewFile,BufRead,StdinReadPost *
+	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
+	\    && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
+	\	|| getline(4) =~ '^#' || getline(5) =~ '^#') |
+	\   setf conf |
+	\ endif
+
+" Use the plugin-filetype checks last, they may overrule any of the previously
+" detected filetypes.
+runtime! ftdetect/*.vim
+
+augroup END
+
+
+" If the GUI is already running, may still need to install the Syntax menu.
+" Don't do it when the 'M' flag is included in 'guioptions'.
+if has("menu") && has("gui_running")
+      \ && !exists("did_install_syntax_menu") && &guioptions !~# "M"
+  source <sfile>:p:h/menu.vim
+endif
+
+" Function called for testing all functions defined here.  These are
+" script-local, thus need to be executed here.
+" Returns a string with error messages (hopefully empty).
+func! TestFiletypeFuncs(testlist)
+  let output = ''
+  for f in a:testlist
+    try
+      exe f
+    catch
+      let output = output . "\n" . f . ": " . v:exception
+    endtry
+  endfor
+  return output
+endfunc
+
+" Restore 'cpoptions'
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/runtime/ftoff.vim
@@ -0,0 +1,11 @@
+" Vim support file to switch off detection of file types
+"
+" Maintainer:	Bram Moolenaar <Bram@vim.org>
+" Last change:	2001 Jun 11
+
+if exists("did_load_filetypes")
+  unlet did_load_filetypes
+endif
+
+" Remove all autocommands in the filetypedetect group
+silent! au! filetypedetect *
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c6e04fab21905f6d7b89acdc6f3bf2859bef143c
GIT binary patch
literal 347
zc%17D@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G|s0G|-o
zy?ggE{AW0D;6Ot|0|P_D|Ns9PfHVVxVfP(*AjMb`<QL4~@a#q!kn_;f#W6%<V(6rU
zT+IeN4#ltK&s58Nv6K9F;J|N(GP#~FtLB>R->=d;b*aaz$6Grc8>A8&|3~cJ#=EAl
zQh(N!+v&YdbC*qLy3#Ra-Yi#6Hn&AOE3X^J-{fi4xT~UH=f*PWPJcm@$?k%Nzb~7b
zg9{Q4rOcHwSXdJh$veYA#cPMejBNcyYog@ehXx#V6cxFmY%c!g+SWR~-49X?lL`;A
z2OYd(b#&rnojkYs7sG50960epnMK;CuZRE1VF|CkpIZIQnO^aJ1_e&rQbU`3`j!f^
prZt4{?=dvEVyCl>^WWmXeD+q;v;HP33WR||z|+;wWt~$(69DQDh-3f&
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/runtime/vimlogo.xpm
@@ -0,0 +1,75 @@
+/* XPM */
+static char *vimlogo[] = {
+/* width height num_colors chars_per_pixel */
+"   125    60        8            1",
+/* colors */
+". c #000000",
+"# c #00007f",
+"a c #007f00",
+"b c #7f7f7f",
+"c c #00ff00",
+"d c #bfbfbf",
+"e c #ffffff",
+"f c None",
+/* pixels */
+"fffffffffffffffffffffffffffee..eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffffffffffffffffffffee.cc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"fffffffffffffffffffffffffee.cccc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffeeeeeeeeeeeeeeeeeeee.ccaacc.eeffeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"fffffee....................caaaacc.eeee...................eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffee.deeeeeeeeeeeeeeeeeeb.aaaaacc.ee.deeeeeeeeeeeeeeeeeb.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffe.dedddddddddddddddddddb.aaaaacc..dedddddddddddddddddd.beffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffe.eddddddddddddddddddddb.aaaaaacc.edddddddddddddddddddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffe.eddddddddddddddddddddb.aaaaaaac.edddddddddddddddddddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffe.edddddddddddddddddddbb.aaaaaaaa.eddddddddddddddddddbb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffe.bbdddddddddddddddddbbb.aaaaaaaa.bbddddddddddddddddbb.befffffffffffffffffffffffffffeeeeeffffffffffffffffffffffffffffffff",
+"ffffee.bbbbddddddddddddbbbb.aaaaaaaaaa.bbbbddddddddddddbbb.eefffffffffffffffeeeeeeeeeeeee...effffffffffffffffffffffffffffffff",
+"fffffee..beddddddddddddbbb.aaaaaaaaaaaa..dedddddddddddbbb.eeffffffffffffffffe..........ee...effffffffffffffffffffffffffffffff",
+"ffffffeee.eddddddddddddbb.aaaaaaaaaaaaa.eedddddddddddbbb.eefffffffffffffffffe..........eee..eeeeeefffeeeeeeefffffffffffffffff",
+"ffffffffe.eddddddddddddbb.aaaaaaaaaaaa.eedddddddddddbbb.eeffffffffffffffffffe..ee..ee..efe..e....eefee.....eeffffffffffffffff",
+"ffffffffe.eddddddddddddbb.aaaaaaaaaaa.eedddddddddddbbb.eefffffffffffffffffffe..ee..ee..efe........eee.......eefffffffffffffff",
+"ffffffffe.eddddddddddddbb.aaaaaaaaaa.eedddddddddddbbb.eeffffffffffffffffffffe..ee..ee..efe...eee..ee..eeeee..efffffffffffffff",
+"ffffffffe.eddddddddddddbb.aaaaaaaaa.eedddddddddddbbb.eefffffffffffffffffffffeeeee..eeeeefe..eefe..ee.........efffffffffffffff",
+"ffffffffe.eddddddddddddbb.aaaaaaaa.eedddddddddddbbb.eeffffffffffffffffffffffffffe..efffffe..effe..ee.........efffffffffffffff",
+"ffffffffe.eddddddddddddbb.aaaaaaa.eedddddddddddbbb.eefffffffffffffffffffffffffffe..efffffe..effe..ee..eeeeeeeefffffffffffffff",
+"fffffffee.eddddddddddddbb.aaaaaa.eedddddddddddbbb.eeffffffffffffffffffffffffffeee..eeeffee..eeee..ee...eeee..efffffffffffffff",
+"ffffffee..eddddddddddddbb.aaaaa.eedddddddddddbbb.c.eefffffffffffffffffffffffffe......effe....ee....ee........efffffffffffffff",
+"fffffee.c.eddddddddddddbb.aaaa.eedddddddddddbbb.acc.eeffffffffffffffffffffffffe......effe....ee....eee......eefffffffffffffff",
+"ffffee.cc.eddddddddddddbb.aaa.eedddddddddddbbb.aaacc.eefffffffffffffffffffffffeeeeeeeeffeeeeeeeeeeeefeeeeeeeeffffffffffffffff",
+"fffee.cca.eddddddddddddbb.aa.eedddddddddddbbb.aaaaacc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffee.ccaa.eddddddddddddbb.a.eedddddddddddbbb.aaaaaaacc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"fee.ccaaa.eddddddddddddbb..eedddddddddddbbb.aaaaaaaaacc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ee.ccaaaa.eddddddddddddbb.eedddddddddddbbb.aaaaaaaaaaacc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"e.ccaaaaa.eddddddddddddbbeedddddddddddbbb.aaaaaaaaaaaaacc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"...aaaaaa.eddddddddddddbdedddddddddddbbb.aaaaaaaaaaaaaaacc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"e.##aaaaa.eddddddddddddbedddddddddddbbb.aaaaaaaaaaaaaaaaa...effffffffffffffffeeeeeffffeeeefffffeeeeffffffffffffffffffffffffff",
+"ee.##aaaa.eddddddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eeffffffffffffffffe...effffe..efffffe..effffffffffffffffffffffffff",
+"fee.##aaa.edddddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eefffffffffffffffffe...effffe..efffffe..effffffffffffffffffffffffff",
+"ffee.##aa.eddddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eefffeeeeeeeffffeeeeee..efeeeeeeefffeee..eeeeefffeeeeeeeffeeeeeeeeee",
+"fffee.##a.edddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eefffee.....eeffee....e..efe.....efffe........effee.....eefe....e...e",
+"ffffee.##.edddddddddddddddddddd....aaaaaaaaaaaaaaaaa##.eefffee.......eeee........efe.....efffe........efee.......eee.........",
+"fffffee.#.eddddddddddddddddddd.dbb.aaaaaaaaaaaaaaaa##.eeffffe..eeeee..ee...eee...efeeee..efffeee..eeeeefe...eee...eeee...ee..",
+"ffffffee..eddddddddddddddddddd.ddb.aaaaaaaaaaaaaaa##.eefffffe.........ee..eefee..effffe..efffffe..efffffe..eefee..effe..eeeee",
+"fffffffee.eddddddddddddddddddb.bbb.aaaaaaaaaaaaaa##.eeffffffe.........ee..efffe..effffe..efffffe..efffffe..efffe..effe..effff",
+"ffffffffe.edddddddddddddddddbbb...aaaaaaaaaaaaaa##.eeeeeeeffe..eeeeeeeee..eefee..effffe..efffffe..efeeeee..eefee..effe..effff",
+"ffffffffe.eddddddddddddddddbb......aa.....aa.....#......beefe...eeee..ee...eee...eeeeee..eeeeffe..eee..ee...eee...eeee..eeeee",
+"ffffffffe.edddddddddddddddbbb.dbbb.aa.dbbb..dbbbb..dbbbb.befee........eee.........ee........effe.......eee.......eee........e",
+"ffffffffe.eddddddddddddddbbb..bdd.aaa.bdddbbdddddbbdddddb.effee......eefee....e...ee........effee....eeefee.....eefe........e",
+"ffffffffe.edddddddddddddbbb.a.ddb.aaa.ddddddddddddddddddb.efffeeeeeeeefffeeeeeeeeeeeeeeeeeeeefffeeeeeeffffeeeeeeeffeeeeeeeeee",
+"ffffffffe.eddddddddddddbbb.a.bddb.aa.bdddbbbbddddbbbbdddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.edddddddddddbbb.aa.bdd.aaa.bddb....bddb....bdd.beffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.eddddddddddbbb.aaa.ddb.aaa.ddb.##b.ddb.eeb.ddb.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.edddddddddbbb..aa.bddb.aa.bddb.#e.bddb.ee.bddb.efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.eddddddddbbb..aaa.bdd.aaa.bdd.#ee.bdd.bee.bdd.befffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.edddddddbbb.aaaaa.ddb.aaa.ddb.eeb.ddb.eeb.ddb.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.eddddddbbb.##aaa.bddb.aa.bddb.ee.bddb.ee.bddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.edddddbbb.e.##aa.bdd.aaa.bdd.bee.bdd.bee.bdd.beffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.bddddbbb.eee.##a.ddb.aaa.ddb.eeb.ddb.eeb.ddb.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffee..bbbb..eefee.#.bbbbb.a.bbbbb.e.bbbbb.e.bbbbb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"fffffffffeeb....beefffee........a.......e.......e.......effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffffeeeeeeeefffffee.##aaaa##.eeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffffffffffffffffffee.##aa##.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"fffffffffffffffffffffffffee.####.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffffffffffffffffffffee.##.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"fffffffffffffffffffffffffffee..eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+};
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/runtime/vimrc_example.vim
@@ -0,0 +1,94 @@
+" An example for a vimrc file.
+"
+" Maintainer:	Bram Moolenaar <Bram@vim.org>
+" Last change:	2008 Jun 16
+"
+" To use it, copy it to
+"     for Unix and OS/2:  ~/.vimrc
+"	      for Amiga:  s:.vimrc
+"  for MS-DOS and Win32:  $VIM\_vimrc
+"	    for OpenVMS:  sys$login:.vimrc
+
+" When started as "evim", evim.vim will already have done these settings.
+if v:progname =~? "evim"
+  finish
+endif
+
+" Use Vim settings, rather then Vi settings (much better!).
+" This must be first, because it changes other options as a side effect.
+set nocompatible
+
+" allow backspacing over everything in insert mode
+set backspace=indent,eol,start
+
+if has("vms")
+  set nobackup		" do not keep a backup file, use versions instead
+else
+  set backup		" keep a backup file
+endif
+set history=50		" keep 50 lines of command line history
+set ruler		" show the cursor position all the time
+set showcmd		" display incomplete commands
+set incsearch		" do incremental searching
+
+" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
+" let &guioptions = substitute(&guioptions, "t", "", "g")
+
+" Don't use Ex mode, use Q for formatting
+map Q gq
+
+" CTRL-U in insert mode deletes a lot.  Use CTRL-G u to first break undo,
+" so that you can undo CTRL-U after inserting a line break.
+inoremap <C-U> <C-G>u<C-U>
+
+" In many terminal emulators the mouse works just fine, thus enable it.
+set mouse=a
+
+" Switch syntax highlighting on, when the terminal has colors
+" Also switch on highlighting the last used search pattern.
+if &t_Co > 2 || has("gui_running")
+  syntax on
+  set hlsearch
+endif
+
+" Only do this part when compiled with support for autocommands.
+if has("autocmd")
+
+  " Enable file type detection.
+  " Use the default filetype settings, so that mail gets 'tw' set to 72,
+  " 'cindent' is on in C files, etc.
+  " Also load indent files, to automatically do language-dependent indenting.
+  filetype plugin indent on
+
+  " Put these in an autocmd group, so that we can delete them easily.
+  augroup vimrcEx
+  au!
+
+  " For all text files set 'textwidth' to 78 characters.
+  autocmd FileType text setlocal textwidth=78
+
+  " When editing a file, always jump to the last known cursor position.
+  " Don't do it when the position is invalid or when inside an event handler
+  " (happens when dropping a file on gvim).
+  " Also don't do it when the mark is in the first line, that is the default
+  " position when opening a file.
+  autocmd BufReadPost *
+    \ if line("'\"") > 1 && line("'\"") <= line("$") |
+    \   exe "normal! g`\"" |
+    \ endif
+
+  augroup END
+
+else
+
+  set autoindent		" always set autoindenting on
+
+endif " has("autocmd")
+
+" Convenient command to see the difference between the current buffer and the
+" file it was loaded from, thus the changes you made.
+" Only define it when not defined already.
+if !exists(":DiffOrig")
+  command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
+		  \ | wincmd p | diffthis
+endif
--- a/runtime/tutor/tutor
+++ b/runtime/tutor/tutor
@@ -139,12 +139,12 @@ NOTE: As you go through this tutor, do n
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		     Lesson 1.6: EDITING A FILE
 
-
 		    ** Use  :wq  to save a file and exit. **
 
   !! NOTE: Before executing any of the steps below, read this entire lesson!!
 
   1. Exit this tutor as you did in lesson 1.2:  :q!
+     Or, if you have access to another terminal, do the following there.
 
   2. At the shell prompt type this command:  vim tutor <ENTER>
      'vim' is the command to start the Vim editor, 'tutor' is the name of the
@@ -154,10 +154,10 @@ NOTE: As you go through this tutor, do n
 
   4. Save the file with changes and exit Vim with:  :wq  <ENTER>
 
-  5. Restart the vimtutor and move down to the following summary.
+  5. If you have quit vimtutor in step 1 restart the vimtutor and move down to
+     the following summary.
 
   6. After reading the above steps and understanding them: do it.
-
   
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			       Lesson 1 SUMMARY
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/tutor.fr.utf-8
@@ -0,0 +1,809 @@
+===============================================================================
+= B i e n v e n u e  dans le  T u t o r i e l  de  V I M  -  Version 1.5.fr.2 =
+===============================================================================
+
+     Vim est un テゥditeur trティs puissant qui a trop de commandes pour pouvoir
+     toutes les expliquer dans un cours comme celui-ci, qui est conテァu pour en
+     dテゥcrire suffisamment afin de vous permettre d'utiliser simplement Vim.
+
+     Le temps requis pour suivre ce cours est d'environ 25 テ 30 minutes, selon
+     le temps que vous passerez テ expテゥrimenter.  Les commandes utilisテゥes dans
+     les leテァons modifieront le texte. Faites une copie de ce fichier afin de
+     vous entraテョner dessus (si vous avez lancテゥ "vimtutor" ceci est dテゥjテ une
+     copie).
+
+     Il est important de garder en tテェte que ce cours est conテァu pour apprendre
+     par la pratique.  Cela signifie que vous devez exテゥcuter les commandes
+     pour les apprendre correctement.  Si vous vous contentez de lire le
+     texte, vous oublierez les commandes !
+
+     Maintenant, vテゥrifiez que votre clavier n'est PAS verouillテゥ en majuscules,
+     et appuyez la touche  j  le nombre de fois suffisant pour que la leテァon
+     1.1 remplisse complティtement l'テゥcran.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leテァon 1.1 : Dテ臼LACEMENT DU CURSEUR
+
+
+  ** Pour dテゥplacer le curseur, appuyez les touches h,j,k,l comme indiquテゥ. **
+	    ^
+	    k	     Astuce:  La touche h est テ gauche et dテゥplace テ gauche.
+      < h      l >	      La touche l est テ droite et dテゥplace テ droite.
+	   j		      La touche j ressemble テ une flティche vers le bas.
+	   v
+  1. Dテゥplacez le curseur sur l'テゥcran jusqu'テ vous sentir テ l'aise.
+
+  2. Maintenez la touche Bas (j) enfoncテゥe jusqu'テ ce qu'elle se rテゥpティte.
+---> Maintenant vous テェtes capable de vous dテゥplacer jusqu'テ la leテァon suivante.
+
+  3. En utilisant la touche Bas, allez テ la Leテァon 1.2.
+
+Note: Si jamais vous doutez de ce que vous venez de taper, appuyez <テ営hap>
+      pour revenir en mode Normal. Puis retapez la commande que vous vouliez.
+
+Note: Les touches flテゥchテゥes devraient テゥgalement fonctionner. Mais en utilisant
+      hjkl vous pourrez vous dテゥplacer beaucoup plus rapidement, une fois que
+      vous aurez pris l'habitude.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leテァon 1.2 : ENTRテ右 ET SORTIE DE VIM
+
+
+ !! NOTE: Avant d'effectuer les テゥtapes ci-dessous, lisez toute cette leテァon !!
+
+  1. Appuyez la touche	<テ営hap>  (pour テェtre sテサr d'テェtre en mode Normal).
+
+  2. Tapez:			:q! <Entrテゥe>
+
+---> Ceci quitte l'テゥditeur SANS sauver les changements que vous avez faits.
+     Si vous voulez enregistrer les changements et sortir, tapez:
+				:wq <Entrテゥe>
+
+  3. Lorsque l'invite du 'shell' vous sera prテゥsentテゥe, tapez la commande qui
+     vous a amenテゥ dans ce tutoriel.  Cela pourrait テェtre:    vimtutor <Entrテゥe>
+     Normalement, vous utiliseriez:			    vim tutor <Entrテゥe>
+
+---> 'vim' lance l'テゥditeur, 'tutor' est le fichier que vous souhaitez テゥditer.
+
+  4. Si vous avez mテゥmorisテゥ ces テゥtapes et テェtes confiant, effectuez les テゥtapes
+     1 テ 3 pour sortir puis rentrer dans l'テゥditeur.  Dテゥplacez ensuite le
+      curseur jusqu'テ la Leテァon 1.3.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Leテァon 1.3 : テ吋ITION DE TEXTE - EFFACEMENT
+
+
+ ** En mode Normal, appuyez  x	pour effacer le caractティre sous le curseur. **
+
+  1. Dテゥplacez le curseur sur la ligne marquテゥe ---> ci-dessous.
+
+  2. Pour corriger les erreurs, dテゥplacez le curseur jusqu'テ ce qu'il soit
+     sur un caractティre テ effacer.
+
+  3. Appuyez la touche	x  pour effacer le caractティre redondant.
+
+  4. Rテゥpテゥtez les テゥtapes 2 テ 4 jusqu'テ ce que la phrase soit correcte.
+
+---> La vvache テ sautテゥテゥ au-ddessus dde la luune.
+
+  5. Maintenant que la ligne est correcte, passez テ la leテァon 1.4.
+
+NOTE: En avanテァant dans ce cours, n'essayez pas de mテゥmoriser, apprenez par
+      la pratique.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leテァon 1.4 : テ吋ITION DE TEXTE - INSERTION
+
+
+	   ** En mode Normal, appuyez  i  pour insテゥrer du texte. **
+
+  1. Dテゥplacez le curseur sur la premiティre ligne marquテゥe ---> ci-dessous.
+
+  2. Pour rendre la premiティre ligne identique テ la seconde, mettez le curseur
+     sur le premier caractティre APRテS l'endroit oテケ insテゥrer le texte.
+
+  3. Appuyez  i  et tapez les caractティres qui manquent.
+
+  4. Une fois qu'une erreur est corrigテゥe, appuyez <テ営hap> pour revenir en mode
+     Normal. Rテゥpテゥtez les テゥtapes 2 テ 4 pour corriger la phrase.
+
+---> Il mnqe caractティres cette .
+---> Il manque des caractティres dans cette ligne.
+
+  5. Une fois que vous テェtes テ l'aise avec l'insertion de texte, allez au
+     rテゥsumテゥ ci-dessous.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			     Rテ唄UMテ DE LA LEテON 1
+
+  1. Le curseur se dテゥplace avec les touches flテゥchテゥes ou les touches hjkl.
+	 h (gauche)	j (bas)        k (haut)       l (droite)
+
+  2. Pour entrer dans Vim (テ l'invite %) tapez:  vim FICHIER <Entrテゥe>
+
+  3. Pour quitter Vim tapez:  <テ営hap> :q! <Entrテゥe>  pour perdre tous les
+						    changements.
+		   OU tapez:  <テ営hap> :wq <Entrテゥe>  pour enregistrer les
+						    changements.
+
+  4. Pour effacer un caractティre sous le curseur en mode Normal tapez:  x
+
+  5. Pour insテゥrer du texte au niveau du curseur en mode Normal tapez:
+	 i   tapez le texte   <テ営hap>
+
+NOTE: Appuyer  <テ営hap>	vous place en mode Normal ou annule une commande
+      partiellement tapテゥe dont vous ne voudriez plus.
+
+Passez maintenant テ la Leテァon 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			   Leテァon 2.1 : EFFACEMENTS
+
+
+	    ** Tapez  dw  pour effacer jusqu'テ la fin d'un mot. **
+
+  1. Appuyez  <テ営hap>  pour テェtre sテサr d'テェtre en mode Normal.
+
+  2. Dテゥplacez le curseur sur la ligne marquテゥe ---> ci-dessous.
+
+  3. Placez le curseur sur le dテゥbut d'un mot qui a besoin d'テェtre effacテゥ.
+
+  4. Tapez  dw	pour faire disparaテョtre ce mot.
+
+NOTE: Les lettres  dw  apparaテョtront sur la derniティre ligne de l'テゥcran lors de
+      votre frappe. Si vous avez mal tapテゥ quelque chose, appuyez <テ営hap> et
+      recommencez.
+
+---> Il y a quelques drテエle mots qui n'ont rien テ faire papier sur cette ligne.
+
+  5. Rテゥpテゥtez les テゥtapes 3 et 4 jusqu'テ ce que la phrase soit correcte et allez
+     テ la Leテァon 2.2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Leテァon 2.2 : PLUS D'EFFACEMENTS
+
+
+	  ** Tapez  d$	pour effacer jusqu'テ la fin de la ligne. **
+
+  1. Appuyez  <テ営hap>  pour テェtre sテサr d'テェtre en mode Normal.
+
+  2. Dテゥplacez le curseur sur la ligne marquテゥe ---> ci-dessous.
+
+  3. Dテゥplacez le curseur jusqu'テ la fin correcte de la ligne
+     (APRテS le premier . ).
+
+  4. Tapez  d$	pour effacer jusqu'テ la fin de la ligne.
+
+---> Quelqu'un a tapテゥ la fin de cette ligne deux fois. cette ligne deux fois.
+
+  5. Allez テ la Leテァon 2.3 pour comprendre ce qui se passe.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leテァon 2.3 : DES COMMANDES ET DES OBJETS
+
+
+  Le format de la commande d'effacement  d  est le suivant:
+
+	 [nombre]  d  objet	   OU	     d	[nombre]  objet
+  oテケ:
+    nombre - est combien de fois exテゥcuter la commande (optionnel, dテゥfaut: 1).
+    d - est la commande d'effacement.
+    objet - est ce sur quoi la commande va opテゥrer (liste ci-dessous).
+
+  Une courte liste d'objets:
+    w - du curseur jusqu'テ la fin du mot, y compris l'espace qui suit.
+    e - du curseur jusqu'テ la fin du mot, SANS l'espace qui suit.
+    $ - du curseur jusqu'テ la fin de la ligne.
+
+NOTE: Pour les aventureux, le seul appui d' objet  en mode Normal, sans
+      commande, dテゥplace le curseur comme indiquテゥ dans la liste des objets.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Leテァon 2.4 : UNE EXCEPTION テ 'COMMANDE-OBJET'
+
+	      ** Tapez	dd  pour effacer une ligne complティte. **
+
+  Vu le nombre de fois oテケ l'on efface des lignes complティtes, les concepteurs
+  de Vi ont dテゥcidテゥ qu'il serait plus facile de taper simplement deux d テ la
+  suite pour effacer une ligne.
+
+  1. Placez le curseur sur la seconde ligne de la phrase ci-dessous.
+  2. Tapez  dd	pour effacer la ligne.
+  3. Maintenant allez テ la quatriティme ligne.
+  4. Tapez  2dd  (rappelez-vous, nombre-commande-objet) pour effacer les
+     deux lignes.
+
+      1)  Les roses sont rouges,
+      2)  La boue c'est drテエle,
+      3)  Les violettes sont bleues,
+      4)  J'ai une voiture,
+      5)  Les horloges donnent l'heure,
+      6)  Le sucre est doux
+      7)  Tout comme vous.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    Leテァon 2.5 : L'ANNULATION
+
+	    ** Tapez  u  pour annuler les derniティres commandes. **
+	       ** Tapez  U  pour rテゥcupテゥrer toute une ligne. **
+
+  1. Dテゥplacez le curseur sur la ligne marquテゥe ---> ci-dessous et placez-le sur
+     la premiティre erreur.
+  2. Tapez  x  pour effacer le premier caractティre redondant.
+  3. Puis tapez  u  pour annuler la derniティre commande exテゥcutテゥe.
+  4. Cette fois, corrigez toutes les erreurs de la ligne avec la commande  x .
+  5. Puis tapez un  U  majuscule pour remettre la ligne dans son テゥtat initial.
+  6. Puis tapez  u  deux-trois fois pour annuler le  U	et les commandes
+     prテゥcテゥdentes.
+  7. Maintenant tapez  Ctrl-R  (maintenez la touche Ctrl enfoncテゥe pendant que
+     vous appuyez sur R) deux-trois fois pour refaire les commandes (annuler
+     les annulations).
+
+---> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'.
+
+  8. Ce sont des commandes trティs utiles. Maintenant, allez au rテゥsumテゥ de la
+     Leテァon 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			     Rテ唄UMテ DE LA LEテON 2
+
+
+  1. Pour effacer du curseur jusqu'テ la fin d'un mot tapez:	dw
+
+  2. Pour effacer du curseur jusqu'テ la fin d'une ligne tapez:	d$
+
+  3. Pour effacer toute une ligne tapez:  dd
+
+  4. Le format d'une commande en mode Normal est:
+
+       [nombre]  commande  objet     OU     commande  [nombre]	objet
+     oテケ:
+       nombre - est combien de fois rテゥpテゥter la commande
+       commande - est ce qu'il faut faire, par exemple	d  pour effacer
+       objet - est ce sur quoi la commande devrait agir, par exemple w (mot),
+	       $ (jusqu'テ la fin de la ligne), etc.
+
+  5. Pour annuler des actions prテゥcテゥdentes, tapez:	     u	(u minuscule)
+     Pour annuler tous les changements sur une ligne tapez:  U	(U majuscule)
+     Pour annuler l'annulation tapez:			     Ctrl-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			     Leテァon 3.1 : LE COLLAGE
+
+
+   ** Tapez  p	pour placer aprティs le curseur ce qui vient d'テェtre effacテゥ. **
+
+  1. Placez le curseur sur la premiティre ligne du "poティme" ci-dessous.
+
+  2. Tapez  dd	pour effacer la ligne et la placer dans le tampon de Vim.
+
+  3. Dテゥplacez le curseur sur la ligne qui PRテ韻テDE l'endroit oテケ vous voulez
+     remettre la ligne effacテゥe.
+
+  4. En mode Normal, tapez  p  pour remettre la ligne.
+
+  5. Rテゥpテゥtez les テゥtapes 2 テ 4 pour mettre toutes les lignes dans le bon ordre.
+
+     d) Et vous, qu'apprenez-vous ?
+     b) Les violettes sont bleues,
+     c) L'intelligence s'apprend,
+     a) Les roses sont rouges,
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Leテァon 3.2 : LE REMPLACEMENT
+
+
+ ** Tapez  r  et un caractティre pour remplacer le caractティre sous le curseur. **
+
+  1. Dテゥplacez le curseur sur la premiティre ligne marquテゥe ---> ci-dessous.
+
+  2. Placez le curseur de maniティre テ ce qu'il surplombe la premiティre erreur.
+
+  3. Tapez  r  suivi du caractティre qui doit corriger l'erreur.
+
+  4. Rテゥpテゥtez les テゥtapes 2 et 3 jusqu'テ ce que la premiティre ligne soit correcte.
+
+--->  Quand cette ligne a テゥtテゥ sauvie, quelqu'un a lait des faunes de frappe !
+--->  Quand cette ligne a テゥtテゥ saisie, quelqu'un a fait des fautes de frappe !
+
+  5. Maintenant, allez テ la Leテァon 3.3.
+
+NOTE: N'oubliez pas que vous devriez apprendre par la pratique, pas par
+      mテゥmorisation.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  Leテァon 3.3 : LE CHANGEMENT
+
+
+	    ** Pour changer tout ou partie d'un mot, tapez  cw .**
+
+  1. Dテゥplacez le curseur sur la premiティre ligne marquテゥe ---> ci-dessous.
+
+  2. Placez le curseur sur le u de luhko.
+
+  3. Tapez  cw	et corrigez le mot (dans notre cas, tapez  'igne'.)
+
+  4. Appuyez <テ営hap> et placez-vous sur l'erreur suivante (le premier
+     caractティre qui doit テェtre changテゥ).
+
+  5. Rテゥpテゥtez les テゥtapes 3 et 4 jusqu'テ ce que la premiティre phrase soit
+     identique テ la seconde.
+
+---> Cette luhko contient quelques myqa qui ont ricne d'テェtre chantufip.
+---> Cette ligne contient quelques mots qui ont besoin d'テェtre changテゥs.
+
+Notez que  cw  efface le mot et vous place ensuite en mode Insertion.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Leテァon 3.4 : PLUS DE CHANGEMENTS AVEC c
+
+
+    ** Le changement fonctionne avec les mテェmes objets que l'effacement. **
+
+  1. Le changement fonctionne de la mテェme maniティre que l'effacement.
+     Le format est:
+
+	 [nombre]  c  objet	   OU	     c	[nombre]  objet
+
+  2. Les objets sont テゥgalement les mテェmes:  w (mot), $ (fin de ligne), etc.
+
+  3. Dテゥplacez-vous テ la premiティre ligne marquテゥe ---> ci-dessous.
+
+  4. Placez le curseur sur la premiティre erreur.
+
+  5. Tapez  c$	pour changer la fin de la ligne, rendez-lテ identique テ la
+     seconde ligne, puis tapez <テ営hap>.
+
+---> La fin de cette ligne doit テェtre rendue identique テ la seconde.
+---> La fin de cette ligne doit テェtre corrigテゥe avec la commande	c$ .
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			     Rテ唄UMテ DE LA LEテON 3
+
+
+  1. Pour remettre du texte qui vient d'テェtre effacテゥ, tapez  p . Cela Place le
+     texte effacテゥ APRテS le curseur (si une ligne complティte a テゥtテゥ effacテゥe, elle
+     sera placテゥe sous la ligne du curseur).
+
+  2. Pour remplacer le caractティre sous le curseur, tapez  r  suivi du caractティre
+     qui remplacera l'original.
+
+  3. Le changement vous permet de changer l'objet spテゥcifiテゥ, du curseur jusqu'テ
+     la fin de l'objet. Par exemple, tapez  cw	pour changer du curseur
+     jusqu'テ la fin du mot,  c$  pour changer jusqu'テ la fin d'une ligne.
+
+  4. Le format pour le changement est:
+
+	 [nombre]  c  objet	   OU	     c	[nombre]  objet
+
+Passez maintenant テ la leテァon suivante.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leテァon 4.1 : POSITION ET テ欝AT DU FICHIER
+
+
+  ** Tapez Ctrl-G pour afficher votre position dans le fichier et son テゥtat.
+     Utilisez Maj-G pour vous rendre テ une ligne donnテゥe du fichier. **
+
+  Note: Lisez toute cette leテァon avant d'effectuer l'une des テゥtapes !
+
+  1. Maintenez enfoncテゥe la touche Ctrl et appuyez sur  G .  Une ligne d'テゥtat
+     va apparaテョtre en bas de l'テゥcran avec le nom du fichier et le numテゥro de la
+     ligne oテケ vous テェtes.  Notez ce numテゥro, il servira lors de l'テゥtape 3.
+
+  2. Tapez  G  majuscule (Maj-G) pour vous rendre テ la fin du fichier.
+
+  3. Tapez le numテゥro de la ligne oテケ vous テゥtiez suivi de Maj-G.	Cela vous
+     ramティnera テ la ligne oテケ vous テゥtiez au dテゥpart.
+     (Lorsque vous tapez les chiffres, ils n'apparaissent PAS テ l'テゥcran).
+
+  4. Si vous vous sentez prテェt テ faire ceci, effectuez les テゥtapes 1 テ 3.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    Leテァon 4.2 : LA RECHERCHE
+
+
+	  ** Tapez  /  suivi d'un texte pour rechercher ce texte. **
+
+  1. Tapez le caractティre  /  en mode Normal. Notez que celui-ci et le curseur
+     apparaissent en bas de l'テゥcran, comme lorsque l'on utilise  : .
+
+  2. Puis tapez 'errreuur' <Entrテゥe>.  C'est le mot que vous voulez rechercher.
+
+  3. Pour rechercher テ nouveau le mテェme texte, tapez simplement	n .
+     Pour rechercher le mテェme texte dans la direction opposテゥe, tapez  Maj-N .
+
+  4. Si vous voulez rechercher un texte vers le haut du fichier, utilisez  ?
+     テ la place de  / .
+
+---> erreur ne s'テゥcrit pas "errreuur"; errreuur est une erreur.
+
+Note: Quand la recherche atteint la fin du fichier, elle reprend au dテゥbut.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	    Leテァon 4.3 : RECHERCHE DES PARENTHテSES CORRESPONDANTES
+
+
+	   ** Tapez  %	pour trouver des ), ] ou } correspondants. **
+
+  1. Placez le curseur sur l'un des (, [ ou { de la ligne marquテゥe --->
+     ci-dessous.
+
+  2. Puis tapez le caractティre  % .
+
+  3. Le curseur devrait se placer sur la parenthティse correspondante.
+
+  4. Tapez  %  pour replacer le curseur sur l'autre parenthティse.
+
+---> Voici ( une ligne de test contenant des (, des [ ] et des { } )).
+
+Note: Cette fonctionnalitテゥ est trティs utile lors du dテゥbogage d'un programme qui
+      contient des parenthティses dテゥsテゥquilibrテゥes !
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	       Leテァon 4.4 : UNE MANIテRE DE CORRIGER LES ERREURS
+
+
+  ** Tapez  :s/ancien/nouveau/g  pour remplacer 'ancien' par 'nouveau'.  **
+
+  1. Dテゥplacez le curseur sur la ligne marquテゥe ---> ci-dessous.
+
+  2. Tapez  :s/lee/le <Entrテゥe> . Notez que cette commande change seulement la
+     premiティre occurence sur la ligne.
+
+  3. Puis tapez  :s/lee/le/g  qui ordonne de faire une substitution globale
+     sur la ligne. Cela change toutes les occurences sur la ligne
+
+---> lee meilleur moment pour regarder lees fleurs est pendant lee Printemps.
+
+  4. Pour changer toutes les occurences d'un texte, entre deux lignes,
+     tapez  :#,#s/ancien/nouveau/g  oテケ #,# sont les numテゥros des deux lignes.
+     Tapez  :%s/ancien/nouveau/g    pour changer chaque occurence dans tout
+				    le fichier.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			     Rテ唄UMテ DE LA LEテON 4
+
+
+  1. Ctrl-G  affiche votre position dans le fichier et l'テゥtat de celui-ci.
+     Maj-G  vous place テ la fin du fichier. Un numテゥro de ligne suivi de Maj-G
+     vous place テ cette ligne.
+
+  2. Taper  /  suivi d'un texte recherche ce texte vers l'AVANT.
+     Taper  ?  suivi d'un texte recherche ce texte vers l'ARRIテRE.
+     Aprティs une recherche tapez	n  pour trouver l'occurence suivante dans la
+     mテェme direction ou	Maj-N  pour rechercher dans la direction opposテゥe.
+
+  3. Taper  %  lorsque le curseur est sur  (, ), [, ], { ou }  dテゥplace
+     celui-ci sur le caractティre correspondant.
+
+  4. Pour remplacer le premier aa par bb sur une ligne tapez	 :s/aa/bb
+     Pour remplacer tous les aa par bb sur une ligne tapez	 :s/aa/bb/g
+     Pour remplacer du texte entre deux numテゥros de ligne tapez	 :#,#s/aa/bb/g
+     Pour remplacer toutes les occurences dans le fichier tapez  :%s/aa/bb/g
+     Pour demander une confirmation テ chaque fois ajoutez 'c'	 :%s/aa/bb/gc
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Leテァon 5.1 : COMMENT EXテ韻UTER UNE COMMANDE EXTERNE
+
+
+ ** Tapez  :!  suivi d'une commande externe pour exテゥcuter cette commande. **
+
+  1. Tapez le  :  familier pour mettre le curseur en bas de l'テゥcran. Cela vous
+     permet de saisir une commande.
+
+  2. Puis tapez un  !  (point d'exclamation). Cela vous permet d'exテゥcuter
+     n'importe quelle commande valide pour votre interprテゥteur (shell).
+
+  3. Par exemple, tapez  ls  aprティs le  !  et appuyez <Entrテゥe>. Ceci affichera
+     la liste des fichiers du dossier courant, comme si vous aviez tapテゥ la
+     commande テ l'invite du shell. Utilisez  :!dir  si	:!ls  ne marche pas.
+
+Note:  Il est possible d'exテゥcuter n'importe quelle commande externe de cette
+       maniティre.
+
+Note:  Toutes les commandes  :  doivent finir par la frappe de <Entrテゥe>.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	 Leテァon 5.2 : PLUS DE Dテ欝AILS SUR L'ENREGISTREMENT DE FICHIERS
+
+
+ ** Pour enregistrer les changements faits au fichier, tapez  :w FICHIER . **
+
+  1. Tapez  :!dir  ou  :!ls  pour avoir la liste des fichiers du dossier
+     courant. Vous savez dテゥjテ qu'il faut appuyer <Entrテゥe> aprティs cela.
+
+  2. Choisissez un nom de fichier qui n'existe pas encore, par exemple TEST.
+
+  3. Puis tapez  :w TEST  (oテケ TEST est le nom que vous avez choisi).
+
+  4. Cela sauvegarde tout le fichier (Tutoriel Vim) sous le nom TEST.
+     Pour le vテゥrifier, tapez  :!dir  pour revisualiser le contenu du dossier.
+
+Notez que si vous quittez Vim et y retournez avec le fichier TEST, celui-ci
+sera une copie exacte du cours au moment oテケ vous l'avez sauvテゥ.
+
+  5. Maintenant, effacez le fichier en tapant (MS-DOS):    :!del TEST
+					   ou (Unix):	   :!rm TEST
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Leテァon 5.3 : UN ENREGISTREMENT Sテ鵜ECTIF
+
+
+     ** Pour enregistrer une portion de fichier, tapez	:#,#w FICHIER **
+
+  1. Tapez テ nouveau  :!dir  ou  :!ls  pour visualiser le contenu du dossier
+     courant et choisissez un nom de fichier, tel que TEST.
+
+  2. Dテゥplacez le curseur jusqu'en haut de cette page et tapez  Ctrl-G  pour
+     connaテョtre le numテゥro de cette ligne. NOTEZ CE NUMテ嘘O !
+
+  3. Puis rendez-vous au bas de cette page et tapez テ nouveau  Ctrl-G .
+     NOTEZ テ烏ALEMENT CE NUMテ嘘O !
+
+  4. Pour enregistrer SEULEMENT une portion d'un fichier, tapez  :#,#w TEST
+     oテケ #,# sont les deux numテゥros que vous avez notテゥs (haut,bas) et TEST est
+     le nom du fichier.
+
+  5. Une fois encore, vテゥrifiez la prテゥsence du fichier avec  :!dir  mais NE
+     L'EFFACEZ PAS.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Leテァon 5.4 : Rテ韻UPテ嘘ATION ET FUSION DE FICHIERS
+
+
+	** Pour insテゥrer le contenu d'un fichier, tapez	:r FICHIER **
+
+  1. Tapez  :!dir  pour vテゥrifier que votre fichier TEST est encore lテ.
+
+  2. Placez le curseur en haut de cette page.
+
+NOTE:  Aprティs avoir suivi l'テゥtape 3 vous verrez テ l'テゥcran la Leテァon 5.3.
+       Dテゥplacez-vous vers le bas jusqu'テ revenir テ cette leテァon.
+
+  3. Maintenant rテゥcupテゥrez votre fichier TEST en utilisant la commande  :r TEST
+     oテケ TEST est le nom de votre fichier.
+
+NOTE:  Le fichier que vous rテゥcupテゥrez est placテゥ lテ oテケ se trouve le curseur.
+
+  4. Pour vテゥrifier que le fichier a bien テゥtテゥ insテゥrテゥ, remontez et vテゥrifiez
+     qu'il y a maintenant deux copies de la Leテァon 5.3, l'originale et celle
+     contenue dans le fichier.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			     Rテ唄UMテ DE LA LEテON 5
+
+
+  1.  :!commande  exテゥcute une commande externe.
+
+      Quelques exemples pratiques:
+	(MS-DOS)	(Unix)
+	 :!dir		 :!ls		 affiche le contenu du dossier courant.
+	 :!del FICHIER   :!rm FICHIER    efface FICHIER.
+
+  2.  :w FICHIER  enregistre le fichier Vim courant sur le disque avec pour
+		  nom FICHIER.
+
+  3.  :#,#w FICHIER  enregistre les lignes # テ # dans le fichier FICHIER.
+
+  4.  :r FICHIER  rテゥcupティre le fichier FICHIER et l'insティre dans le fichier
+		  courant テ partir de la position du curseur.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    Leテァon 6.1 : L'OUVERTURE
+
+
+** Tapez  o  pour ouvrir une ligne sous le curseur et y aller en Insertion. **
+
+  1. Dテゥplacez le curseur sur la ligne marquテゥe ---> ci-dessous.
+
+  2. Tapez  o  (minuscule) pour ouvrir une ligne SOUS le curseur et vous y
+     placer en mode Insertion.
+
+  3. Puis recopiez la ligne marquテゥe ---> et appuyez sur <テ営hap> pour quitter
+     le mode Insertion.
+
+---> En tapant	o  le curseur se met sur la ligne ouverte, en mode Insertion.
+
+  4. Pour ouvrir une ligne au DESSUS du curseur, tapez simplement un  O
+     majuscule, plutテエt qu'un  o  minuscule. Faites un essai sur la ligne
+     ci-dessous.
+Ouvrez une ligne ci-dessus en tapant MAJ-O lorsque le curseur est ici.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Leテァon 6.2 : L'AJOUT
+
+
+	    ** Tapez  a  pour insテゥrer du texte APRテS le curseur. **
+
+  1. Placez le curseur テ la fin de la premiティre ligne marquテゥe ---> ci-dessous
+     en tapant	$  en mode Normal.
+
+  2. Tapez un  a  (minuscule) pour ajouter du texte APRテS le caractティre situテゥ
+     sous le curseur. ( A  majuscule ajoute du texte テ la fin de la ligne).
+
+Note: Ceci テゥvite de taper  i , le dernier caractティre, le texte テ insテゥrer,
+      <テ営hap>, curseur-テ-droite, et finalement	x , juste pour ajouter du
+      texte テ la fin d'une ligne !
+
+  3. Maintenant, complテゥtez la premiティre ligne. Notez テゥgalement que l'ajout est
+     identique au mode Insertion, hormis la position oテケ le texte est insテゥrテゥ.
+
+---> Cette ligne vous permet de pratiquer
+---> Cette ligne vous permet de pratiquer l'ajout de texte en fin de ligne.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leテァon 6.3 : UNE AUTRE VERSION DU REMPLACEMENT
+
+
+       ** Tapez un  R  majuscule pour remplacer plus d'un caractティre. **
+
+  1. Dテゥplacez le curseur sur la premiティre ligne marquテゥe ---> ci-dessous.
+
+  2. Placez le curseur au dテゥbut du premier mot qui diffティre de la seconde ligne
+     marquテゥe ---> (le mot 'celle').
+
+  3. Puis tapez  R  et remplacez le reste du texte de la premiティre ligne en
+     tapant par dessus celui-ci, de maniティre テ rendre la premiティre ligne
+     identique テ la seconde.
+
+---> Pour rendre cette ligne identique テ celle du dessous utilisez le clavier.
+---> Pour rendre cette ligne identique テ la seconde, tapez R et la correction.
+
+  4. Notez que lorsque vous appuyez <テ営hap>, le texte qui n'a pas encore テゥtテゥ
+     remplacテゥ reste.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Leテァon 6.4 : Rテ烏LAGE DES OPTIONS
+
+
+  ** Rテゥglons une option afin que la recherche et la substitution ignorent la
+     casse des caractティres. **
+
+  1. Recherchez 'ignore' en tapant  /ignore .
+     Rテゥpテゥtez ceci plusieurs fois en utilisant la touche  n .
+
+  2. Activez l'option 'ic' (Ignorer casse) en tapant  :set ic .
+
+  3. Puis poursuivez votre recherche en utilisant  n .
+     Rテゥpテゥtez cette recherche plusieurs fois avec la touche  n .
+
+  4. Activez les options 'hlsearch' et 'incsearch' avec  :set hls is .
+
+  5. Puis recommencez une recherche, et faites bien attention テ ce qui se
+     produit:  /ignore .
+
+  6. Pour interrompre la mise en surbrillance des rテゥsultats, tapez:
+     :nohlsearch
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			     Rテ唄UMテ DE LA LEテON 6
+
+
+  1. Taper  o  ouvre une ligne SOUS le curseur et y place celui-ci en mode
+     Insertion. Taper un  O  majuscule ouvre une ligne au DESSUS de la ligne
+     oテケ se trouve le curseur.
+
+  2. Tapez un  a  pour insテゥrer du texte APRテS le caractティre oテケ se trouve le
+     curseur. Taper un	A  majuscule ajoute du texte automatiquement テ la fin
+     de la ligne.
+
+  3. Taper un  R  majuscule active le mode Remplacement jusqu'テ ce que la
+     touche  <テ営hap>  soit appuyテゥe pour en sortir.
+
+  4. Taper  :set xxx  active l'option 'xxx'.
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leテァon 7 : ACCテ吋ER テ L'AIDE EN LIGNE
+
+		  ** Utiliser le systティme d'aide en ligne. **
+
+  Vim a un systティme complet d'aide en ligne.  Pour y accテゥder, essayez l'une de
+  ces trois mテゥthodes:
+	- appuyez la touche <Help> (si vous en avez une)
+	- appuyez la touche <F1> (si vous en avez une)
+	- tapez  :help <Entrテゥe>
+
+  Tapez  :q <Entrテゥe>  pour fermer la fenテェtre d'aide.
+
+  Vous pouvez accテゥder テ l'aide sur テ peu prティs n'importe quel sujet en donnant
+  des arguments テ la commande  :help . Essayez par exemple (n'oubliez pas
+  d'appuyer sur <Entrテゥe>):
+
+	:help w
+	:help c_<T
+	:help insert-index
+	:help user-manual
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Leテァon 8 : CRテ右R UN SCRIPT DE Dテ窺ARRAGE
+
+		  ** Activer les fonctionnalitテゥs de Vim. **
+
+  Vim a beaucoup plus de fonctionnalitテゥs que Vi, mais la plupart de celles-ci
+  sont dテゥsactivテゥes par dテゥfaut.  Pour commencer テ les utiliser, vous devez
+  crテゥer un fichier "vimrc".
+
+  1. Commencez テ テゥditer le fichier "vimrc". Ceci dテゥpend de votre systティme:
+	:edit ~/.vimrc			pour Unix
+	:edit $VIM/_vimrc		pour MS-Windows
+
+  2. Intテゥgrez maintenant le texte du fichier "vimrc" d'exemple:
+	:read $VIMRUNTIME/vimrc_example.vim
+
+  3. Enregistrez le fichier avec:
+	:write
+
+  La prochaine fois que vous dテゥmarrerez Vim, le surlignage syntactique sera
+  activテゥ. Vous pouvez ajouter tous vos rテゥglages prテゥfテゥrテゥs dans ce fichier.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Ceci conclut le Tutoriel Vim.  Le but テゥtait de vous donner un bref aperテァu de
+  l'テゥditeur Vim, juste assez pour vous permettre d'utiliser l'テゥditeur
+  relativement facilement.  Il est loin d'テェtre complet, vu que Vim a beaucoup
+  beaucoup plus de commandes.  Un Manuel de l'utilisateur est disponible en
+  anglais:  :help user-manual .
+
+  Pour continuer テ dテゥcouvrir et テ apprendre Vim, il existe un livre traduit en
+  franテァais. Il parle plus de Vi que de Vim, mais pourra vous テェtre utile.
+	L'テゥditeur Vi - Collection Prテゥcis et concis - par Arnold Robbins
+	テ嬰iteur: O'Reilly France
+	ISBN: 2-84177-102-4
+
+  Deux livres en anglais sont テゥgalement mentionnテゥs dans la version originale
+  de ce tutoriel, dont un qui traite spテゥcifiquement de Vim. Merci de vous y
+  rテゥfテゥrer si vous テェtes intテゥressテゥ.
+
+  Ce tutoriel a テゥtテゥ テゥcrit par Michael C. Pierce et Robert K. Ware de l'テ営ole
+  des Mines du Colorado et reprend des idテゥes fournies par Charles Smith,
+  Universtテゥ d'テ液at du Colorado.  E-mail: bware@mines.colorado.edu.
+
+  Modifiテゥ pour Vim par Bram Moolenar.
+
+  Traduit en Franテァais par Adrien Beau, en avril 2001.
+  E-mail:	version.francaise@free.fr
+  Last Change:	2003 May 29
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/tutor.hr.cp1250
@@ -0,0 +1,972 @@
+===============================================================================
+=    D o b r o d o  l i   u   VIM   p r i r u  n i k  -    Verzija 1.7      =
+===============================================================================
+
+     Vim je vrlo mo訛n editor koji ima mnogo naredbi, previ啼 da bi ih
+     se svih ovdje spomenulo.  Namjena priru鈩ika je objasniti dovoljno
+     naredbi kako bi po鐺tnici znatno lak啼 koristili ovaj svestran editor.
+
+     Pribli柤o vrijeme potrebno za uspje啾n zavr啼tak priru鈩ika je oko
+     30 minuta a ovisi o tome koliko 詁 te vremena odvojiti za vje枌anje.
+
+     UPOZORENJE:
+     Naredbe u ovom priru鈩iku 詁 promijeniti ovaj tekst.
+     Napravite kopiju ove datoteke kako bi ste na istoj vje枌ali
+     (ako ste pokrenuli "vimtutor" ovo je ve kopija).
+
+     Vrlo je va柤o primijetiti da je ovaj priru鈩ik namijenjen za vje枌anje.
+     Preciznije, morate izvr喨ti naredbe u Vim-u kako bi ste iste nau鑛li
+     pravilno koristiti. Ako samo 鑛tate tekst, zaboraviti 詁 te naredbe!
+
+     Ako je CapsLock uklju鐺n ISKLJUネITE ga.  Pritiskajte tipku  j  kako
+     bi pomakli kursor sve dok Lekcija 1.1 ne ispuni ekran.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcija 1.1:  POMICANJE KURSORA
+
+
+ ** Za pomicanje kursora, pritisnite h,j,k,l tipke kako je prikazano **
+	     ^
+	     k		    Savjet:  h tipka je lijevo i pomi鐺 kursor lijevo.
+       < h	 l >		   l tipka je desno i pomi鐺 kursor desno.
+	     j                     j izgleda kao strelica usmjerena dolje.
+	     v
+  1. Pomi鑛te kursor po ekranu dok se ne naviknete na kori嗾enje.
+
+  2. Dr枴te tipku (j) pritisnutom.
+     Sada znate kako do詈 do sljede詁 lekcije.
+
+  3. Koriste詈 tipku j prijeite na sljede誦 lekciju 1.2.
+
+NAPOMENA:  Ako niste sigurni 嗾o ste zapravo pritisnuli uvijek koristite
+           tipku <ESC> kako bi pre嗟i u Normal mod i onda poku啾jte ponovno.
+
+NAPOMENA:  Kursorske tipke rade isto.  Kori嗾enje hjkl tipaka je znatno
+           br枡, nakon 嗾o se jednom naviknete na njihovo kori嗾enje.  Stvarno!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			   Lekcija 1.2: IZLAZ IZ VIM-a
+
+
+  !! UPOZORENJE: Prije izvoenja bilo kojeg koraka,
+                 pro鑛tajte cijelu lekciju!!
+
+  1. Pritisnite <ESC> tipku (Vim je sada u Normal modu).
+
+  2. Otipkajte:	:q! <ENTER>.
+     Izlaz iz editora, GUBE se sve napravljene promjene.
+
+  3. Kada se pojavi ljuska, utipkajte naredbu koja je pokrenula
+     ovaj priru鈩ik:		vimtutor <ENTER>
+
+  4. Ako ste upamtili ove korake, izvr喨te ih redom od 1 do 3
+     kako bi ponovno pokrenuli editor.
+
+NAPOMENA:  :q! <ENTER>  poni嗾ava sve promjene koje ste napravili.
+           U sljede詈m lekcijama nau鑛t 詁 te kako promjene sa鑾vati.
+
+  5. Pomaknite kursor na Lekciju 1.3.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Lekcija 1.3: PROMJENA TEKSTA - BRISANJE
+
+
+	      ** Pritisnite  x  za brisanje znaka pod kursorom. **
+
+  1. Pomaknite kursor na liniju ozna鐺nu s --->.
+
+  2. Kako bi ste ispravili pogre嗅e, pomi鑛te kursor dok se
+     ne bude nalazio na slovu kojeg trebate izbrisati.
+
+  3. Pritisnite tipku x kako bi uklonili ne枡ljeno slovo.
+
+  4. Ponovite korake od 2 do 4 dok ne ispravite sve pogre嗅e.
+
+---> KKKravaa jee pressko鑛la mmjeseccc.
+
+  5. Nakon 嗾o ispravite liniju, prijeite na lekciju 1.4.
+
+NAPOMENA:  Koriste詈 ovaj priru鈩ik ne poku啾vajte pamtiti
+           ve u鑛te primjenom.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE
+
+
+	  ** Pritisnite  i  za ubacivanje teksta ispred kursora. **
+
+  1. Pomaknite kursor na prvu sljede誦 liniju ozna鐺nu s --->.
+
+  2. Kako bi napravili prvu liniju istovjetnoj drugoj, pomaknite
+     kursor na prvi znak POSLIJE kojeg 詁 te utipkati potreban tekst.
+
+  3. Pritisnite  i  te utipkajte potrebne nadopune.
+
+  4. Nakon 嗾o ispravite pogre嗅u pritisnite <ESC> kako bi vratili Vim
+     u Normal mod. Ponovite korake od 2 do 4 kako bi ispravili sve pogre嗅e.
+
+---> Nedje no teka od v lin.
+---> Nedostaje ne嗾o teksta od ove linije.
+
+  5. Prijeite na sljede誦 lekciju.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE
+
+
+	           ** Pritisnite  A  za dodavanje teksta. **
+
+  1. Pomaknite kursor na prvu sljede誦 liniju ozna鐺nu s --->.
+     Nije va柤o na kojem se slovu nalazi kursor na toj liniji.
+
+  2. Pritisnite  A  i napravite potrebne promjene.
+
+  3. Nakon 嗾o ste dodali tekst, pritisnite <ESC>
+     za povratak u Normal mod.
+
+  4. Pomaknite kursor na drugu liniju ozna鐺nu s --->
+     i ponovite korake 2 i 3 dok ne popravite tekst.
+
+---> Ima ne嗾o teksta koji nedostaje n
+     Ima ne嗾o teksta koji nedostaje na ovoj liniji.
+---> Ima ne嗾o teksta koji ne
+     Ima ne嗾o teksta koji nedostaje ba ovdje.
+
+  5. Prijeite na lekciju 1.6.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lekcija 1.6: PROMJENA DATOTEKE
+
+
+     ** Koristite  :wq  za spremanje teksta i napu嗾anje Vim-a. **
+
+  !! UPOZORENJE: Prije izvr啾vanja bilo kojeg koraka, pro鑛tajte lekciju!!
+
+  1. Izaite iz programa kao sto ste napravili u lekciji 1.2:  :q!
+
+  2. Iz ljuske utipkajte sljede誦 naredbu:  vim tutor <ENTER>
+     'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju
+     枡lite ureivati.  Koristite datoteku koju imate ovlasti mijenjati.
+
+  3. Ubacite i izbri喨te tekst kao 嗾o ste to napravili u lekcijama prije.
+
+  4. Sa鑾vajte promjenjeni tekst i izaite iz Vim-a:  :wq  <ENTER>
+
+  5. Ponovno pokrenite vimtutor i nastavite 鑛tati sa枡tak koji sljedi.
+
+  6. Nakon sto pro鑛tate gornje korake i u potpunosti ih razumijete:
+     izvr喨te ih.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Lekcija 1 SA殺TAK
+
+
+  1. Kursor se pomi鐺 strelicama ili pomo誦 hjkl tipaka.
+	h (lijevo)	j (dolje)	k (gore)	l (desno)
+
+  2. Pokretanje Vim-a iz ljuske:  vim IME_DATOTEKE <ENTER>
+
+  3. Izlaz:	<ESC>	:q! <ENTER> 	sve promjene su izgubljene.
+       ILI:	<ESC>	:wq <ENTER> 	promjene su sa鑾vane.
+
+  4. Brisanje znaka na kojem se nalazi kursor:  x
+
+  5. Ubacivanja ili dodavanje teksta:
+	 i   utipkajte tekst <ESC>	unos ispred kursora
+	 A   utipkajte tekst <ESC>	dodavanje na kraju linije
+
+NAPOMENA:  Tipkanjem tipke <ESC> prebacuje Vim u Normal mod i
+           prekida ne枡ljenu ili djelomi鈩o zavr啼nu naredbu.
+
+Nastavite 鑛tati Lekciju 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcija 2.1: NAREDBE BRISANJA
+
+
+		 ** Tipkajte  dw  za brisanje rije鑛. **
+
+  1. Pritisnite  <ESC>  kako bi bili sigurni da je Vim u Normal modu.
+
+  2. Pomaknite kursor na liniju ozna鐺nu s --->.
+
+  3. Pomaknite kursor na po鐺tak rije鑛 koju treba izbrisati.
+
+  4. Otipkajte  dw  kako bi uklonili rije.
+
+NAPOMENA:  Vim 詁 prikazati slovo  d  na zadnjoj liniji kad ga otipkate.
+           Vim 鐺ka da otipkate  w .  Ako je prikazano neko drugo slovo,
+           krivo ste otipkali; pritisnite <ESC> i poku啾jte ponovno.
+
+---> Neke rije鑛 smije嗜o ne pripadaju na papir ovoj re鐺nici.
+
+  5. Ponovite korake 3 i 4 dok ne ispravite re鐺nicu;
+     prijeite na Lekciju 2.2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcija 2.2: JO BRISANJA
+
+
+       ** Otipkajte  d$ za brisanje znakova do kraja linije. **
+
+  1. Pritisnite  <ESC>  kako bi bili
+     sigurni da je Vim u Normal modu.
+
+  2. Pomaknite kursor na liniju ozna鐺nu s  --->.
+
+  3. Pomaknite kursor do kraja ispravne re鐺nice
+     (POSLJE prve . ).
+
+  4. Otipkajte  d$
+     kako bi izbrisali sve znakove do kraja linije.
+
+---> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput.
+
+  5. Prijeite na Lekciju 2.3 za bolje obja嗜jenje.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA
+
+
+  Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta.
+  Oblik naredbe brisanja sa  d  operatorom je sljede詈:
+
+  	d   pokret
+
+  Pri 鐺mu je:
+    d      - operator brisanja.
+    pokret - ono na 鐺mu 詁 se operacija izvr啾vati (navedeno u nastavku).
+
+  Kratka lista pokreta:
+    w - sve do po鐺tka sljede詁 rije鑛, NE UKLJUネUJUニI prvo slovo.
+    e - sve do kraja trenuta鈩e rije鑛, UKLJUネUJUニI zadnje slovo.
+    $ - sve do kraje linije, UKLJUネUJUニI zadnje slovo.
+
+  Tipkanjem  de  詁 se brisati od kursora do kraja rije鑛.
+
+NAPOMENA:  Pritiskaju詈 samo pokrete dok ste u Normal modu bez operatora 詁
+           pomicati kursor kao 嗾o je navedeno.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Lekcija 2.4: KORI概ENJE BROJANJA ZA POKRETE
+
+
+  ** Tipkanjem nekog broja prije pokreta, pokret se izvr啾va toliko puta. **
+
+  1. Pomaknite kursor na liniju ozna鐺nu s --->.
+
+  2. Otipkajte  2w  da pomaknete kursor dvije rije鑛 naprijed.
+
+  3. Otipkajte  3e  da pomaknete kursor na kraj tre詁 rije鑛 naprijed.
+
+  4. Otipkajte  0  (nulu) da pomaknete kursor na po鐺tak linije.
+
+  5. Ponovite korake 2 i 3 s nekim drugim brojevima.
+
+---> Re鐺nica sa rije鑛ma po kojoj mo枡te pomicati kursor.
+
+  6. Prijeite na Lekciju 2.5.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+             Lekcija 2.5: KORI概ENJE BROJANJA ZA VEニE BRISANJE
+
+
+	  ** Tipkanje broja N s operatorom ponavlja ga N-puta. **
+
+  U kombinaciji operatora brisanja i pokreta spomenutih iznad
+  ubacujete broj prije pokreta kako bi izbrisali vi啼 znakova:
+
+	 d   broj   pokret
+
+  1. Pomaknite kursor na prvo slovo u rije鑛 sa VELIKIM SLOVIMA
+     ozna鐺nu s --->.
+
+  2. Otipkajte  2dw  da izbri啼te dvije rije鑛 sa VELIKIM SLOVIMA
+
+  3. Ponovite korake 1 i 2 sa razli鑛tim brojevima da izbri啼te
+     uzastopne rije鑛 sa VELIKIM SLOVIMA sa samo jednom naredbom.
+
+---> ova ABCネニ DミE linija FGHI JK LMN OP rije鑛 je RS TUVZ popravljena.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lekcija 2.6: OPERIRANJE NAD LINIJAMA
+
+
+	       ** Otipkajte  dd   za brisanje cijele linije. **
+
+  Zbog u鐺stalosti brisanja cijelih linija, dizajneri Vi-a su odlu鑛li da
+  je lak啼 brisati linije tipkanjem  d  dvaput.
+
+  1. Pomaknite kursor na drugu liniju u donjoj kitici.
+  2. Otipkajte  dd  kako bi izbrisali liniju.
+  3. Pomaknite kursor na 鐺tvrtu liniju.
+  4. Otipkajte   2dd   kako bi izbrisali dvije linije.
+
+--->  1)  Ru枡 su crvene,
+--->  2)  Pla杪 je super,
+--->  3)  Ljubice su plave,
+--->  4)  Imam auto,
+--->  5)  Satovi ukazuju vrijeme,
+--->  6)  各詁r je sladak
+--->  7)  Kao i ti.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcija 2.7: NAREDBA PONI概ENJA
+
+
+  ** Pritisnite  u  za poni嗾enje zadnje naredbe,  U  za cijelu liniju. **
+
+  1. Pomaknite kursor na liniju ozna鐺nu s ---> i postavite kursor na prvu
+     pogre嗅u.
+  2. Otipkajte  x  kako bi izbrisali prvi ne枡ljeni znak.
+  3. Otipkajte  u  kako bi poni嗾ili zadnju izvr啼nu naredbu.
+  4. Ovaj put ispravite sve pogre嗅e na liniji koriste詈  x  naredbu.
+  5. Sada utipkajte veliko  U  kako bi poni嗾ili sve promjene
+     na liniji, vra訛ju詈 je u prija嗜je stanje.
+  6. Sada utipkajte  u  nekoliko puta kako bi poni嗾ili  U
+     i prija嗜je naredbe.
+  7. Sada utipkajte CTRL-R (dr枡詈  CTRL  tipku pritisnutom dok
+     ne pritisnete  R) nekoliko puta kako bi vratili promjene
+     (poni嗾ili poni嗾enja).
+
+---> Poopravite pogre嗅e nna ovvoj liniji ii pooni嗾iteee ih.
+
+  8. Vrlo korisne naredbe.  Prijeite na sa枡tak Lekcije 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Lekcija 2 SA殺TAK
+
+
+  1. Brisanje od kursora do sljede詁 rije鑛:    dw
+  2. Brisanje od kursora do kraja linije:    d$
+  3. Brisanje cijele linije:    dd
+
+  4. Za ponavljanje pokreta prethodite mu broj:   2w
+  5. Oblik naredbe mijenjanja:
+               operator   [broj]   pokret
+     gdje je:
+       operator - 嗾o napraviti, npr.   d  za brisanje
+       [broj]   - neobavezan broj ponavljanja pokreta
+       pokret   - kretanje po tekstu po kojem se operira,
+                  kao 嗾o je: w (rije), $ (kraj linije), itd.
+
+  6. Postavljanje kursora na po鐺tak linije:  0
+
+  7. Za poni嗾enje prethodnih promjena, pritisnite:	  u  (malo u)
+     Za poni嗾enje svih promjena na liniji, pritisnite:   U  (veliko U)
+     Za vra訛nja promjena, utipkajte:	CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lekcija 3.1: NAREDBA POSTAVI
+
+
+	** p  za unos prethodno izbrisanog teksta iza kursora. **
+
+  1. Pomaknite kursor na prvu sljede誦 liniju ozna鐺nu s --->.
+
+  2. Otipkajte  dd  kako bi izbrisali liniju i spremili je u Vim registar.
+
+  3. Pomaknite kursor na liniju c), IZNAD linije koju trebate unijeti.
+
+  4. Otipkajte  p  kako bi postavili liniju ispod kursora.
+
+  5. Ponovite korake 2 do 4 kako bi postavili sve linije u pravilnom
+     rasporedu.
+
+---> d) Mo枡 li i ti nau鑛ti?
+---> b) Ljubice su plave,
+---> c) Inteligencija je nau鐺na,
+---> a) Ru枡 su crvene,
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lekcija 3.2: NAREDBA PROMJENE
+
+
+      ** Otipkajte  rx  za zamjenu slova ispod kursora sa slovom  x . **
+
+  1. Pomaknite kursor na prvu sljede誦 liniju ozna鐺nu s --->.
+
+  2. Pomaknite kursor tako da se nalazi na prvoj pogre喞i.
+
+  3. Otipkajte  r  i nakon toga ispravan znak na tom mjestu.
+
+  4. Ponovite korake 2 i 3 sve dok prva
+     linije ne bude istovjetna drugoj.
+
+--->  Kede ju ovu limija tupjana, natko je protuskao kruve tupke!
+--->  Kada je ova linija tipkana, netko je pritiskao krive tipke!
+
+  5. Prijeite na Lekciju 3.2.
+
+NAPOMENA:  Prisjetite da trebate u鑛ti vje枌anjem, ne pam詁njem.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Lekcija 3.3: OPERATOR MIJENJANJA
+
+
+	  ** Za mijenjanje do kraja rije鑛, istipkajte  ce . **
+
+  1. Pomaknite kursor na prvu sljede誦 liniju ozna鐺nu s --->.
+
+  2. Postavite kursor na  a  u  lackmb.
+
+  3. Otipkajte  ce  i ispravite rije (u ovom slu鐶ju otipkajte  inija ).
+
+  4. Pritisnite <ESC> i pomaknite kursor na sljede詈 znak
+     kojeg je potrebno ispraviti.
+
+  5. Ponovite korake 3 i 4 sve dok prva re鐺nica ne postane istovjetna
+     drugoj.
+
+---> Ova lackmb ima nekoliko rjlcah koje trfcb mijdmlfsz.
+---> Ova linija ima nekoliko rije鑛 koje treba mijenjati.
+
+Primijetite da  ce  bri啼 rije i postavlja Vim u Insert mod.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	         Lekcija 3.4: JO MIJENJANJA KORI概ENJEM c
+
+
+    ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. **
+
+  1. Operator mijenjanja se koristi na isti na鑛n kao i operator brisanja:
+
+         c    [broj]   pokret
+
+  2. Pokreti su isti, npr:   w (rije) i  $ (kraj linije).
+
+  3. Pomaknite kursor na prvu sljede誦 liniju ozna鐺nu s --->.
+
+  4. Pomaknite kursor na prvu pogre嗅u.
+
+  5. Otipkajte  c$  i utipkajte ostatak linije tako da bude istovjetna
+     drugoj te pritisnite <ESC>.
+
+---> Kraj ove linije treba pomo tako da izgleda kao linija ispod.
+---> Kraj ove linije treba ispraviti kori嗾enjem c$ naredbe.
+
+NAPOMENA:  Mo枡te koristiti Backspace za ispravljanje gre啾ka.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Lekcija 3 SA殺TAK
+
+
+  1. Za postavljanje teksta koji je upravo izbrisan, pritisnite  p . Ovo
+     postavlja tekst IZA kursora (ako je pak linija izbrisana tekst se
+     postavlja na liniju ispod kursora).
+
+  2. Za promjenu znaka na kojem se nalazi kursor, pritisnite  r  i nakon toga
+     枡ljeni znak.
+
+  3. Operator mijenjanja dozvoljava promjenu teksta od kursora do pozicije do
+     koje dovede pokret. tj. Otipkajte  ce  za mijenjanje od kursora do kraja
+     rije鑛, c$  za mijenjanje od kursora do kraja linije.
+
+  4. Oblik naredbe mijenjanja:
+
+	 c   [broj]   pokret
+
+Prijeite na sljede誦 lekciju.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE
+
+  ** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke.
+     Pritisnite  G  za pomicanje kursora na neku liniju u datoteci. **
+
+NAPOMENA:  Pro鑛tajte cijelu lekciju prije izvr啼nja bilo kojeg koraka!!
+
+  1. Dr枴te Ctrl tipku pritisnutom i pritisnite  g .  Ukratko: CTRL-G.
+     Vim 詁 ispisati poruku na dnu ekrana sa imenom datoteke i pozicijom
+     kursora u datoteci.  Zapamtite broj linije za 3. korak.
+
+NAPOMENA:  Mo枡te vidjeti poziciju kursora u donjem desnom kutu ako
+           je postavka 'ruler' aktivirana (obja嗜jeno u 6. lekciji).
+
+  2. Pritisnite  G  za pomicanje kursora na kraj datoteke.
+     Otipkajte  gg  za pomicanje kursora na po鐺tak datoteke.
+
+  3. Otipkajte broj linije na kojoj ste bili maloprije i zatim  G .  Kursor
+     詁 se vratiti na liniju na kojoj se nalazio kada ste otipkali CTRL-G.
+
+  4. Ako ste spremni, izvr喨te korake od 1 do 3.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcija 4.2: NAREDBE TRA殺NJA
+
+       ** Otipkajte  /  i nakon toga izraz kojeg 枡lite tra枴ti. **
+
+  1. U Normal modu otipkajte  /  znak.  Primijetite da se znak
+     pojavio zajedno sa kursorom na dnu ekrana kao kod  :  naredbe.
+
+  2. Sada otipkajte 'grrrre嗅a' <ENTER>.  To je rije koju zapravo tra枴te.
+
+  3. Za ponovno tra枡nje istog izraza, otipkajte  n .
+     Za tra枡nje istog izraza ali u suprotnom smjeru, otipkajte  N .
+
+  4. Za tra枡nje izraza unatrag, koristite  ?  umjesto  / .
+
+  5. Za povratak na prethodnu poziciju koristite  CTRL-O  (dr枴te Ctrl
+     pritisnutim dok ne pritisnete tipku o).  Ponavljajte sve dok se ne
+     vratite na po鐺tak.  CTRL-I sli鈩o kao CTRL-O ali u suprotnom smjeru.
+
+---> "pogrrrre嗅a" je pogre嗜o; umjesto pogrrrre嗅a treba stajati pogre嗅a.
+
+NAPOMENA:  Ako se tra枡njem doe do kraja datoteke nastavit 詁 se od njenog
+           po鐺tka osim ako je postavka 'wrapscan' deaktivirana.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Lekcija 4.3: TRA殺NJE PRIPADAJUニE ZAGRADE
+
+
+	** Otipkajte  %  za pronalazak pripadaju詁 ), ] ili } . **
+
+  1. Postavite kursor na bilo koju od  ( ,  [  ili  {
+     otvorenih zagrada u liniji ozna鐺noj s --->.
+
+  2. Otipkajte znak  % .
+
+  3. Kursor 詁 se pomaknuti na pripadaju誦 zatvorenu zagradu.
+
+  4. Otipkajte  %  kako bi pomakli kursor na drugu pripadaju誦 zagradu.
+
+  5. Pomaknite kursor na neku od (,),[,],{ ili } i ponovite  %  naredbu.
+
+---> Linija ( testiranja obi鈩ih ( [ uglatih ] i { viti鐶stih } zagrada.))
+
+
+NAPOMENA:  Vrlo korisno u ispravljanju koda sa nepripadaju詈m zagradama!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcija 4.4: NAREDBE ZAMIJENE
+
+
+       ** Otipkajte  :s/staro/novo/g  da zamijenite 'staro' za 'novo'. **
+
+  1. Pomaknite kursor na liniju ozna鐺nu s --->.
+
+  2. Otipkajte  :s/cvr跖/cvr <ENTER> .  Primjetite da ova naredba zamjenjuje
+     samo prvi "cvr跖" u liniji.
+
+  3. Otipkajte  :s/cvr跖/cvr/g .  Dodavanje  g  stavke zna鑛 da 詁 se naredba
+     izvr喨ti na cijeloj liniji, zamjenjivanjem svih "cvr跖" u liniji.
+
+---> i cvr跖i cvr跖i cvr跖ak na 钁oru crne smr鐺.
+
+  4. Za zamjenu svih izraza u rasponu dviju linija,
+     otipkajte :#,#s/staro/novo/g   #,# su brojevi linije datoteke na kojima
+                                    te izmeu njih 詁 se izvr喨ti zamjena.
+     Otipkajte :%s/staro/novo/g     za zamjenu svih izraza u cijeloj datoteci.
+     Otipkajte :%s/staro/novo/gc    za pronalazak svakog izraza u datoteci i
+     			            potvrdu zamjene.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Lekcija 4 SA殺TAK
+
+
+  1. CTRL-G  prikazuje poziciju kursora u datoteci i status datoteke.
+             G  postavlja kursor na zadnju liniju datoteke.
+     broj    G  postavlja kursor na  broj  liniju.
+            gg  postavlja kursor na prvu liniju.
+
+  2. Tipkanje  /  sa izrazom tra枴 UNAPRIJED taj izraz.
+     Tipkanje  ?  sa izrazom tra枴 UNATRAG taj izraz.
+     Nakon naredbe tra枡nja koristite  n  za pronalazak izraza u istom
+     smjeru, i  N  za pronalazak istog izraza ali u suprotnom smjeru.
+     CTRL-O vra訛 kursor na prethodnu poziciju, CTRL-I na sljede誦 poziciju.
+
+  3. Tipkanje  %  dok je kursor na zagradi pomi鐺 ga na pripadaju誦 zagradu.
+
+  4. Za zamjenu prvog izraza staro za izraz novo	   :s/staro/novo
+     Za zamjenu svih izraza staro na cijeloj liniji	   :s/staro/novo/g
+     Za zamjenu svih izraza staro u rasponu linija #,#     :#,#s/staro/novo/g
+     Za zamjenu u cijeloj datoteci			   :%s/staro/novo/g
+     Za potvrdu svake zamjene dodajte 'c'		   :%s/staro/novo/gc
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Lekcija 5.1: IZVR晦VANJE VANJSKIH NAREDBI
+
+
+	** Otipkajte  :!  sa vanjskom naredbom koju 枡lite izvr喨ti. **
+
+  1. Otipkajte poznatu naredbu  :  kako bi kursor premjestili na dno
+     ekrana.  Time omogu訛vate unos naredbe u naredbenoj liniji.
+
+  2. Otipkajte znak  !  (uskli鈩ik).  Tako omogu訛vate
+     izvr啾vanje naredbe vanjske ljuske.
+
+  3. Kao primjer otipkajte   ls   nakon ! te pritisnite <ENTER>.
+     Ovo 詁 prikazati sadr杪j direktorija, kao da ste u ljusci.
+     Koristite   :!dir   ako   :!ls   ne radi.
+
+NAPOMENA:  Mogu詁 je izvr啾vati bilo koju vanjsku naredbu na ovaj na鑛n,
+           zajedno sa njenim argumentima.
+
+NAPOMENA:  Sve  :  naredbe se izvr啾vaju nakon 嗾o pritisnete <ENTER>
+	   U daljnjem tekstu to ne詁 uvijek biti napomenuto.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Lekcija 5.2: VI界 O SPREMANJU DATOTEKA
+
+           ** Za spremanje promjena, otipkajte  :w IME_DATOTEKE. **
+
+  1. Otipkajte   :!dir   ili   :!ls   za pregled direktorija.
+     Ve znate da morate pritisnuti <ENTER> na kraju tipkanja.
+
+  2. Izaberite ime datoteke koja jo ne postoji, npr. TEST.
+
+  3. Otipkajte:	 :w TEST   (gdje je TEST ime koje ste prethodno odabrali.)
+
+  4. Time 詁 te spremiti cijelu datoteku (Vim Tutor) pod imenom TEST.
+     Za provjeru, otipkajte ponovno   :!dir   ili   :!ls
+     za pregled direktorija.
+
+NAPOMENA:  Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST ,
+           datoteka bi bila potpuna kopija ove datoteke u trenutku
+           kada ste je spremili.
+
+  5. Izbri喨te datoteku tako da otipkate (MS-DOS):	:!del TEST
+				       ili (Unix):	:!rm TEST
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Lekcija 5.3: SPREMANJE OZNAネENOG TEKSTA
+
+
+   ** Kako bi spremili dio datoteke, otipkajte  v  pokret  :w IME_DATOTEKE **
+
+  1. Pomaknite kursor na ovu liniju.
+
+  2. Pritisnite  v  i pomaknite kursor pet linija ispod ove.
+     Primijetite promjenu, ozna鐺ni tekst se razlikuje od obi鈩og.
+
+  3. Pritisnite  :  znak.  Na dnu ekrana pojavit 詁 se  :'<,'> .
+
+  4. Otipkajte  w TEST  , pritom je TEST ime datoteke koja jo ne postoji.
+     Provjerite da zaista pi啼  :'<,'>w TEST
+     prije nego 嗾o pritisnite <ENTER>.
+
+  5. Vim 詁 spremiti ozna鐺ni tekst u TEST.  Provjerite sa :!dir  ili  !ls .
+     Nemojte je jo brisati!  Koristiti 詁 te je u sljede誂j lekciji.
+
+NAPOMENA:  Tipka  v  zapo鑛nje Vizualno ozna鐶vanje.  Mo枡te pomicati kursor
+           unaokolo kako bi mijenjali veli鑛nu ozna鐺nog teksta. Mo枡te
+           koristiti i operatore.  Npr,  d  詁 izbrisati ozna鐺ni tekst.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Lekcija 5.4: UネITAVANJE DATOTEKA
+
+
+       ** Za ubacivanje sadr杪ja datoteke, otipkajte  :r IME_DATOTEKE  **
+
+  1. Postavite kursor iznad ove linije.
+
+NAPOMENA:  Nakon 嗾o izvr喨te 2. korak vidjeti 詁 te tekst iz Lekcije 5.3.
+           Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju.
+
+  2. U鑛tajte va嗽 TEST datoteku koriste詈 naredbu   :r TEST
+     gdje je TEST ime datoteke koju ste koristili u prethodnoj lekciji.
+     Sadr杪j u鑛tane datoteke je uba鐺n liniju ispod kursora.
+
+  3. Kako bi provjerili da je datoteka u鑛tana, vratite kursor unatrag i
+     primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke.
+
+NAPOMENA:  Mo枡te takoer u鑛tati ispis vanjske naredbe.  Npr,  :r !ls
+           詁 u鑛tati ispis  ls  naredbe i postaviti ispis liniju ispod
+           kursora.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Lekcija 5 SA殺TAK
+
+
+  1.  :!naredba  izvr啾va vanjsku naredbu.
+
+      Korisni primjeri:
+	 (MS-DOS)	  (Unix)
+	  :!dir		   :!ls		   -  pregled direktorija.
+	  :!del DATOTEKA   :!rm DATOTEKA   -  bri啼 datoteku DATOTEKA.
+
+  2.  :w DATOTEKA  zapisuje trenuta鈩u datoteku na disk sa imenom DATOTEKA.
+
+  3.  v  pokret  :w IME_DATOTEKE  sprema vizualno ozna鐺ne linije u
+      datoteku IME_DATOTEKE.
+
+  4.  :r IME_DATOTEKE  u鑛tava datoteku IME_DATOTEKE sa diska i stavlja
+      njen sadr杪j liniju ispod kursora.
+
+  5.  :r !dir  u鑛tava ispis naredbe dir i postavlja sadr杪j ispisa liniju
+      ispod kursora.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Lekcija 6.1: NAREDBA OTVORI
+
+
+	** Pritisnite  o  kako bi otvorili liniju ispod kursora
+	   i pre嗟i u Insert mod. **
+
+  1. Pomaknite kursor na sljede誦 liniju ozna鐺nu s --->.
+
+  2. Otipkajte malo  o  kako bi otvorili novu liniju ISPOD kursora
+     i pre嗟i u Insert mod.
+
+  3. Otipkajte ne嗾o teksta i nakon toga pritisnite <ESC>
+     kako bi napustili Insert mod.
+
+---> Nakon 嗾o pritisnete  o  kursor 詁 pre詈 u novu liniju u Insert mod.
+
+  4. Za otvaranje linije IZNAD kursora, otipkajte umjesto malog o veliko O ,
+     Poku啾jte na donjoj liniji ozna鐺noj s --->.
+
+---> Otvorite liniju iznad ove - otipkajte O dok je kursor na ovoj liniji.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcija 6.2: NAREDBA DODAJ
+
+
+	     ** Otipkajte  a  za dodavanje teksta IZA kursora. **
+
+  1. Pomaknite kursor na po鐺tak sljede詁 linije ozna鐺ne s --->.
+  
+  2. Tipkajte  e  dok se kursor ne nalazi na kraju  li .
+
+  3. Otipkajte  a  (malo) kako bi dodali tekst IZA kursora.
+
+  4. Dopunite rije kao 嗾o je na liniji ispod.
+     Pritisnite <ESC> za izlaz iz Insert moda.
+
+  5. Sa  e  prijeite na sljede誦 nepotpunu rije i ponovite korake 3 i 4.
+  
+---> Ova li omogu訛va vje dodav teksta nekoj liniji.
+---> Ova linija omogu訛va vje枌anje dodavanja teksta nekoj liniji.
+
+NAPOMENA:  Sa i, a, i  A  prelazite u isti Insert mod, jedina
+           razlika je u poziciji od koje 詁 se tekst ubacivati.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Lekcija 6.3: DRUGI NAネIN MIJENJANJA
+
+
+      ** Otipkajte veliko  R  kako bi zamijelili vi啼 od jednog znaka. **
+
+  1. Pomaknite kursor na prvu sljede誦 liniju ozna鐺nu s --->.
+     Pomaknite kursor na po鐺tak prvog  xxx .
+
+  2. Pritisnite  R  i otipkajte broj koji je liniju ispod,
+     tako da zamijeni xxx .
+
+  3. Pritisnite <ESC> za izlaz iz Replace moda.
+     Primijetite da je ostatak linije ostao nepromjenjen.
+
+  5. Ponovite korake kako bi zamijenili preostali xxx.
+
+---> Zbrajanje: 123 plus xxx je xxx.
+---> Zbrajanje: 123 plus 456 je 579.
+
+NAPOMENA:  Replace mod je kao Insert mod, ali sa bitnom razlikom,
+           svaki otipkani znak bri啼 ve postoje詈.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA
+
+
+    ** Koristite  y  operator za kopiranje a  p  za lijepljenje teksta. **
+
+  1. Pomaknite kursor na liniju s --->  i postavite kursor nakon "a)".
+  
+  2. Pokrenite Visual mod sa  v  i pomaknite kursor sve do ispred "prva".
+  
+  3. Pritisnite  y  kako bi kopirali ozna鐺ni tekst.
+
+  4. Pomaknite kursor do kraja sljede詁 linije:  j$
+
+  5. Pritisnite  p  kako bi zalijepili tekst.  Onda utipkajte:  druga <ESC> .
+
+  6. Koristite Visual mod kako bi ozna鑛li " linija.", kopirajte:  y , kursor
+     postavite na kraj sljede詁 linije:  j$  i ondje zalijepite tekst:  p .
+
+--->  a) ovo je prva linija.
+      b)
+
+NAPOMENA:  mo枡te koristiti  y  kao operator;  yw   kopira jednu rije.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Lekcija 6.5: MIJENJANJE POSTAVKI
+
+
+ ** Postavka: naredbe tra枡nja i zamijene ne razlikuju VELIKA i mala slova **
+
+  1. Potra枴te 'razlika' tipkanjem:   /razlika  <ENTER>
+     Nekoliko puta ponovite pritiskanjem  n .
+
+  2. Aktivirajte 'ic' (Ignore case) postavku:   :set ic
+
+  3. Ponovno potra枴te 'razlika' tipkanjem  n
+     Primijetite da su sada i RAZLIKA i Razlika pronaeni.
+
+  4. Aktivirajte 'hlsearch' i 'incsearch' postavke:  :set hls is
+
+  5. Otipkajte naredbu tra枡nja i primijetite razlike:  /razlika <ENTER>
+
+  6. Za deaktiviranje  ic  postavke koristite:  :set noic
+
+NAPOMENA:  Za neozna鐶vanje pronaenih izraza otipkajte:   :nohlsearch
+NAPOMENA:  Bez razlikovanja velikih i malih slova u samo jednoj naredbi
+	   koristite  \c u izrazu:  /razlika\c  <ENTER>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Lekcija 6 SA殺TAK
+
+  1. Pritisnite  o  za otvaranje linije ISPOD kursora i prelazak u Insert mod.
+     Pritisnite  O  za otvaranje linije IZNAD kursora.
+
+  2. Pritisnite  a  za unos teksta IZA kursora.
+     Pritisnite  A  za unos teksta na kraju linije.
+
+  3. Naredba  e  pomi鐺 kursor na kraj rije鑛.
+
+  4. Operator  y  kopira tekst,  p  ga lijepi.
+
+  5. Tipkanjem velikog  R  Vim prelazi u Replace mod dok ne pritisnete <ESC> .
+
+  6. Tipkanjem ":set xxx" aktivira postavku "xxx".  Neke postavke su:
+  	'ic' 'ignorecase'	ne razlikuje velika/mala slova pri tra枡nju
+	'is' 'incsearch'	tra枴 nedovr啼ne izraze
+	'hls' 'hlsearch'	ozna鑛 sve pronaene izraze
+     Mo枡te koristite dugo ili kratko ime postavke.
+
+  7. Prethodite "no" imenu postavke za deaktiviranje iste:   :set noic
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lekcija 7.1: DOBIVANJE POMOニI
+
+
+		   ** Koristite on-line sustav pomo詈 **
+
+  Vim ima detaljan on-line sustav pomo詈.
+  Za po鐺tak, poku啾jte jedno od sljede詁g:
+	- pritisnite <HELP> tipku (ako je va啾 tipkovnica ima)
+	- pritisnite <F1> tipku (ako je va啾 tipkovnica ima)
+	- utipkajte   :help <ENTER>
+
+  Pro鑛tajte tekst u prozoru pomo詈 kako bi ste se znali slu枴ti istom.
+  Tipkanjem  CTRL-W CTRL-W   prelazite iz jednog prozora u drugi.
+  Otipkajte    :q <ENTER>    kako bi zatvorili prozor pomo詈.
+
+  Prona詈 詁 te pomo o bilo kojoj temi, tako da dodate upit samoj
+  ":help" naredbi.  Poku啾jte (ne zaboravite pritisnuti <ENTER>):
+
+	:help w
+	:help c_CTRL-D
+	:help insert-index
+	:help user-manual
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcija 7.2: PRAVLJENJE SKRIPTE
+
+
+		       ** Aktivirajte Vim mogu誅osti **
+
+  Vim ima mnogo vi啼 alata od Vi-ja, ali ve詈na njih nije aktivirana.
+  Kako bi mogli koristiti vi啼 mogu誅osti napravite "vimrc" datoteku.
+
+  1. Uredite "vimrc" datoteku.  Ovo ovisi o va啼m sistemu:
+	:e ~/.vimrc		za Unix
+	:e $VIM/_vimrc		za MS-Windows
+
+  2. Sada u鑛tajte primjer sadr杪ja "vimrc" datoteke:
+	:r $VIMRUNTIME/vimrc_example.vim
+
+  3. Sa鑾vajte datoteku sa:
+	:w
+
+  Sljede詁g puta kada pokrenete Vim, bojanje sintakse teksta biti 詁
+  aktivirano. Sve va啼 postavke mo枡te dodati u "vimrc" datoteku.
+  Za vi啼 informacija otipkajte  :help vimrc-intro
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lekcija 7.3: AUTOMATSKO DOVR晦VANJE
+
+
+	** Dovr啾vanje iz naredbene linije pomo誦 CTRL-D i <TAB> **
+
+  1. Provjerite da Vim nije u Vi modu:  :set nocp
+
+  2. Pogledajte koje datoteke postoje u direktoriju:  :!ls   or  :!dir
+
+  3. Otipkajte po鐺tak naredbe:  :e
+
+  4. Tipkajte  CTRL-D  i prikazati 詁 se lista naredbi koje zapo鑛nju sa "e".
+
+  5. Pritisnite <TAB>  i Vim 詁 dopuniti unos u naredbu ":edit".
+
+  6. Dodajte razmak i po鐺tak datoteke:  :edit FIL
+
+  7. Pritisnite <TAB>.  Vim 詁 nadopuniti ime datoteke (ako je jedinstveno).
+
+NAPOMENA:  Mogu詁 je dopuniti mnoge naredbe.  Koristite CTRL-D i <TAB>.
+           Naro鑛to je korisno za  :help  naredbe.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Lekcija 7 SA殺TAK
+
+
+  1. Otipkajte  :help  ili pritisnite <F1> ili <Help>  za pomo.
+
+  2. Otipkajte  :help naredba  kako bi dobili pomo za  naredba .
+
+  3. Otipkajte  CTRL-W CTRL-W  za prelazak u drugi prozor
+
+  4. Otipkajte  :q  kako bi zatvorili prozor pomo詈
+
+  5. Napravite vimrc skriptu za podizanje kako bi u nju spremali
+     va啼 omiljene postavke.
+
+  6. Kada tipkate naredbu koja zapo鑛nje sa  :
+     pritisnite CTRL-D kako bi vidjeli mogu詁 valjane vrijednosti.
+     Pritisnite <TAB> kako bi odabrali jednu od njih.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  Kraj.  Cilj priru鈩ika je da poka枡 kratak pregled Vim editora, tek toliko
+  da omogu詈 njegovo kori嗾enje. Priru鈩ik nije potpun jer Vim ima mnogo vi啼
+  naredbi. Za vi啼 informacija: ":help user-manual".
+
+  Za 鑛tanje i kori嗾enje, preporu鐶mo:
+	Vim - Vi Improved - by Steve Oualline
+	Izdava: New Riders
+  Prva knjiga potpuno posve詁na Vim-u. Vrlo korisna za po鐺tnike.
+  Sa mnogo primjera i slika.
+  Posjetite http://iccf-holland.org/click5.html
+
+  Sljede訛 knjiga je ne嗾o starija i vi啼 o Vi-u nego o Vim-u, preporu鐶mo:
+	Learning the Vi Editor - by Linda Lamb
+	Izdava: O'Reilly & Associates Inc.
+  Solidna knjiga, mo枡te saznati skoro sve 嗾o mo枡te napraviti
+  u Vi-u. 各sto izdanje ima ne嗾o informacija i o Vim-u.
+
+  Ovaj priru鈩ik su napisali: Michael C. Pierce i Robert K. Ware,
+  Colorado School of Mines koriste詈 ideje Charles Smith,
+  Colorado State University.  E-po嗾a: bware@mines.colorado.edu.
+
+  Naknadne promjene napravio je Bram Moolenaar.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Preveo na hrvatski: Paul B. Mahol <onemda@gmail.com>
+  Preinaka 1.42, Lipanj 2008
+
+
new file mode 100644
--- /dev/null
+++ b/runtime/tutor/tutor.it.utf-8
@@ -0,0 +1,967 @@
+===============================================================================
+=    Benvenuto  alla   G u i d a    all'Editor   V I M   -    Versione 1.7    =
+===============================================================================
+
+     Vim ティ un Editor molto potente ed ha parecchi comandi, troppi per
+     spiegarli tutti in una guida come questa.  Questa guida serve a
+     descrivere quei comandi che ti permettono di usare facilmente
+     Vim come Editor di uso generale.
+
+     Il tempo necessario per completare la guida ティ circa 25-30 minuti,
+     a seconda di quanto tempo dedichi alla sperimentazione.
+
+     ATTENZIONE!
+     I comandi nelle lezioni modificano questo testo. Fai una copia di questo
+     file per esercitarti (se hai usato "vimtutor", stai giテ usando una copia).
+
+     E' importante non scordare che questa guida vuole insegnare tramite
+     l'uso. Questo vuol dire che devi eseguire i comandi per impararli
+     davvero. Se leggi il testo e basta, dimenticherai presto i comandi!
+
+     Adesso, assicurati che il tasto BLOCCA-MAIUSCOLO non sia schiacciato
+     e premi il tasto    j    tanto da muovere il cursore fino a che la
+     Lezione 1.1 riempia completamente lo schermo.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lezione 1.1:  MOVIMENTI DEL CURSORE
+
+
+   ** Per muovere il cursore, premi i tasti h,j,k,l come indicato. **
+	     ^
+	     k		    NOTA:  Il tasto h ティ a sinistra e muove a sinistra.
+       < h	 l >		   Il tasto l ティ a destra e muove a destra.
+	     j			   Il tasto j ricorda una freccia in giテケ.
+	     v
+  1. Muovi il cursore sullo schermo finchテゥ non ti senti a tuo agio.
+
+  2. Tieni schiacciato il tasto "giテケ" (j) finchテゥ non si ripete il movimento.
+     Adesso sai come arrivare fino alla lezione seguente.
+
+  3. Usando il tasto "giテケ" spostati alla Lezione 1.2.
+
+NOTA: Quando non sei sicuro del tasto che hai premuto, premi <ESC> per andare
+      in Modalitテ Normale [Normal Mode]. Poi ri-immetti il comando che volevi.
+
+NOTA: I tasti con le frecce fanno lo stesso servizio. Ma usando hjkl riesci
+      a muoverti molto piテケ rapidamente, dopo che ci si abitua.  Davvero!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lezione 1.2: USCIRE DA VIM
+
+
+  !! NOTA: Prima di eseguire quanto richiesto, leggi la Lezione per intero!!
+
+  1. Premi il tasto <ESC> (per assicurarti di essere in Modalitテ Normale).
+
+  2. Batti:     :q! <INVIO>.
+     Cosテャ esci dall'Editor SCARTANDO qualsiasi modifica fatta.
+
+  3. Quando vedi il PROMPT della Shell, batti il comando con cui sei arrivato
+     qui.  Sarebbe:	vimtutor <INVIO>
+
+  4. Se hai memorizzato questi comandi e ti senti pronto, esegui i passi
+     da 1 a 3 per uscire e rientrare nell'Editor.
+
+NOTA:  :q! <INVIO> SCARTA qualsiasi modifica fatta.  In una delle prossime
+       lezioni imparerai come salvare un file che hai modificato.
+
+  5. Muovi in giテケ il cursore per passare alla lezione 1.3.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lezione 1.3: MODIFICA DI TESTI - CANCELLAZIONE
+
+
+	** Premere  x  per cancellare il carattere sotto al cursore **
+
+  1. Muovi il cursore alla linea piテケ sotto, indicata da --->.
+
+  2. Per correggere errori, muovi il cursore fino a posizionarlo sopra il
+     carattere da cancellare.
+
+  3. Premi il tasto	x     per cancellare il carattere sbagliato.
+
+  4. Ripeti i passi da 2 a 4 finchテゥ la frase ティ corretta.
+
+---> La mmucca saltテイテイ finnoo allaa lunnna.
+
+  5. Ora che la linea ティ corretta, vai alla Lezione 1.4
+
+NOTA: Mentre segui questa guida, non cercare di imparare a memoria,
+      ma impara facendo pratica.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lezione 1.4: MODIFICA DI TESTI - INSERIMENTO
+
+
+                   ** Premere  i  per inserire testo. **
+
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.
+
+  2. Per rendere la prima linea uguale alla seconda, muovi il cursore sopra
+     il primo carattere DOPO la posizione in cui il testo va inserito.
+
+  3. Premi  i  e batti le aggiunte opportune.
+
+  4. Quando un errore ティ corretto, premi <ESC> per tornare in Modalitテ Normale.
+     Ripeti i passi da 2 a 4 fino a completare la correzione della frase.
+
+---> C'era del tsto mncnt questa .
+---> C'era del testo mancante da questa linea.
+
+  5. Quando sei a tuo agio nell'inserimento di testo vai alla lezione 1.5.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Lezione 1.5: MODIFICA DI TESTI - AGGIUNTA
+
+
+	   ** Premere  A  per aggiungere testo a fine linea. **
+
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.
+     Non importa dove ティ posizionato il cursore sulla linea stessa.
+
+  2. Batti  A  e inserisci le necessarie aggiunte.
+
+  3. Alla fine della aggiunta premi <ESC> per tornare in modalitテ Normale.
+
+  4. Muovi il cursore alla seconda linea indicata ---> e ripeti
+     i passi 2 e 3 per correggere questa frase.
+
+---> C'ティ del testo che manca da qu
+     C'ティ del testo che manca da questa linea.
+---> C'ティ anche del testo che ma
+     C'ティ anche del testo che manca qui.
+
+  5. Quando sei a tuo agio nell'aggiunta di testo vai alla lezione 1.6.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lezione 1.6: MODIFICARE UN FILE
+
+
+	      ** Usare  :wq  per salvare un file e uscire. **
+
+  !! NOTA: Prima di eseguire quanto richiesto, leggi la Lezione per intero!!
+
+  1. Esci da Vim come hai fatto nella lezione 1.2:  :q!
+
+  2. Quando vedi il PROMPT della Shell, batti il comando:  vim tutor <INVIO>
+     'vim' ティ il comando per richiamare Vim, 'tutor' ティ il nome del file che
+     desideri modificare.  Usa un file che possa essere modificato.
+
+  3. Inserisci e cancella testo come hai imparato nelle lezioni precedenti.
+
+  4. Salva il file ed esci da Vim con:  :wq  <INVIO>
+
+  5. Rientra in vimtutor e scendi al sommario che segue.
+
+  6. Dopo aver letto i passi qui sopra ed averli compresi: eseguili.
+
+  
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       Lezione 1 SOMMARIO
+
+
+  1. Il cursore si muove usando i tasti con le frecce o i tasti hjkl.
+	 h (sinistra)	j (giテケ)       k (su)	    l (destra)
+
+  2. Per eseguire Vim dal PROMPT della Shell batti:  vim NOMEFILE <INVIO>
+
+  3. Per uscire da Vim batti: <ESC> :q! <INVIO> per uscire senza salvare.
+		oppure batti: <ESC> :wq <INVIO> per uscire salvando modifiche.
+
+  4. Per cancellare il carattere sotto al cursore batti: x
+
+  5. Per inserire testo subito prima del cursore batti:
+	 i     batti testo inserito	<ESC>	inserisci prima del cursore
+	 A     batti testo aggiunto	<ESC>	aggiungi a fine linea
+
+NOTA: premendo <ESC> ritornerai in Modalitテ Normale o annullerai
+      un comando errato che puoi aver inserito in parte.
+
+Ora continua con la Lezione 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Lezione 2.1: COMANDI DI CANCELLAZIONE
+
+
+		** Batti  dw  per cancellare una parola. **
+
+  1. Premi  <ESC>  per accertarti di essere in Modalitテ Normale.
+
+  2. Muovi il cursore fino alla linea qui sotto, indicata da --->.
+
+  3. Muovi il cursore all'inizio di una parola che vuoi cancellare.
+
+  4. Batti   dw   per cancellare la parola.
+
+NOTA: La lettera  d  sarテ visibile sull'ultima linea dello schermo mentre la
+      batti. Vim attende che tu batta  w . Se vedi una lettera diversa
+      da  d  hai battuto qualcosa di sbagliato; premi  <ESC>  e ricomincia.
+
+---> Ci sono le alcune parole gioia che non c'entrano carta in questa frase.
+
+  5. Ripeti i passi 3 e 4 finchテゥ la frase ティ corretta, poi vai alla Lezione 2.2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lezione 2.2: ALTRI COMANDI DI CANCELLAZIONE
+
+
+	   ** Batti  d$	per cancellare fino a fine linea. **
+
+  1. Premi  <ESC>  per accertarti di essere in Modalitテ Normale.
+
+  2. Muovi il cursore fino alla linea qui sotto, indicata da --->.
+
+  3. Muovi il cursore alla fine della linea corretta (DOPO il primo . ).
+
+  4. Batti    d$    per cancellare fino a fine linea.
+
+---> Qualcuno ha battuto la fine di questa linea due volte. linea due volte.
+
+
+  5. Vai alla Lezione 2.3 per capire il funzionamento di questo comando.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lezione 2.3: OPERATORI E MOVIMENTI
+
+
+  Molti comandi di modifica testi consistono in un operatore e un movimento.
+  Il formato del comando di cancellazione con l'operatore  d  ティ il seguente:
+
+	 d	movimento
+
+  Dove:
+    d	      - ティ l'operatore di cancellazione
+    movimento - indica dove l'operatore va applicato (lista qui sotto).
+
+  Breve lista di movimenti:
+    w - fino a inizio della parola seguente, ESCLUSO il suo primo carattere.
+    e - alla fine della parola corrente, COMPRESO il suo ultimo carattere.
+    $ - dal cursore fino a fine linea, COMPRESO l'ultimo carattere della linea.
+
+  Quindi se batti  de  cancelli dal cursore fino a fine parola.
+
+NOTA:  Se batti solo il movimento mentre sei in Modalitテ Normale, senza
+       nessun operatore, il cursore si muoverテ come specificato.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	 Lezione 2.4: USO DI UN CONTATORE PER UN MOVIMENTO
+
+
+  ** Se batti un numero prima di un movimento, lo ripeti altrettante volte. **
+
+  1. Muovi il cursore fino all'inizio della linea qui sotto, indicata da --->.
+
+  2. Batti  2w  per spostare il cursore due parole piテケ avanti.
+
+  3. Batti  3e  per spostare il cursore alla fine della terza parola seguente.
+
+  4. Batti  0  (zero) per posizionarti all'inizio della linea.
+
+  5. Ripeti i passi 2 e 3 usando numeri differenti.
+
+---> Questa ティ solo una linea con parole all'interno della quale puoi muoverti.
+
+  6. Vai alla Lezione 2.5.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	Lezione 2.5: USO DI UN CONTATORE PER CANCELLARE DI PIU'
+
+
+  ** Se batti un numero prima di un movimento, lo ripeti altrettante volte. **
+
+  Nella combinazione dell'operatore cancella e di un movimento, descritto prima,
+  inserite un contatore prima del movimento per cancellare di piテケ:
+	 d   numero   movimento
+
+  1. Muovi il cursore alla prima parola MAIUSCOLA nella riga indicata da --->.
+
+  2. Batti  d2w  per cancellare le due parole MAIUSCOLE
+
+  3. Ripeti i passi 1 e 2 con un contatore diverso per cancellare la parole
+     MAIUSCOLE consecutive con un solo comando
+
+--->  questa ABC DE linea FGHI JK LMN OP di parole ティ Q RS TUV ora ripulita.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lezione 2.6: LAVORARE SU LINEE INTERE
+
+	    ** Batti  dd  per cancellare un'intera linea. **
+
+  Per la frequenza con cui capita di cancellare linee intere, chi ha
+  disegnato Vi ha deciso che sarebbe stato piテケ semplice battere
+  due d consecutive per cancellare una linea.
+
+  1. Muovi il cursore alla linea 2) nella frase qui sotto.
+  2. Batti  dd  per cancellare la linea.
+  3. Ora spostati alla linea 4).
+  4. Batti   2dd   per cancellare due linee.
+
+--->  1)  Le rose sono rosse,
+--->  2)  Il fango ティ divertente,
+--->  3)  Le viole sono blu,
+--->  4)  Io ho un'automobile,
+--->  5)  Gli orologi segnano il tempo,
+--->  6)  Lo zucchero ティ dolce,
+--->  7)  E cosテャ sei anche tu.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Lezione 2.7: IL COMANDO UNDO [ANNULLA]
+
+    **  Premi  u  per annullare gli ultimi comandi eseguiti.  **
+    ** Premi  U  per annullare le modifiche all'ultima linea. **
+
+  1. Muovi il cursore fino alla linea qui sotto, indicata da --->.
+     e posizionati sul primo errore.
+  2. Batti  x  per cancellare il primo carattere sbagliato.
+  3. Adesso batti  u  per annullare l'ultimo comando eseguito.
+  4. Ora invece, correggi tutti gli errori sulla linea usando il comando  x .
+  5. Adesso batti una U Maiuscola per riportare la linea al suo stato originale.
+  6. Adesso batti  u  piテケ volte per annullare la  U  e i comandi precedenti.
+  7. Adesso batti piテケ volte CTRL-r (tieni il tasto CTRL schiacciato
+     mentre batti r) per rieseguire i comandi (annullare l'annullamento).
+
+---> Correeggi gli errori ssu quuesta linea e riimpiazzali coon "undo".
+
+  8. Questi comandi sono molto utili. Ora spostati al Sommario della Lezione 2.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       Lezione 2 SOMMARIO
+
+
+  1. Per cancellare dal cursore fino alla parola seguente batti:      dw
+  2. Per cancellare dal cursore fino alla fine della linea batti:     d$
+  3. Per cancellare un'intera linea batti:    dd
+  4. Per eseguire piテケ volte un movimento, mettici davanti un numero:  2w
+  5. Il formato per un comando di modifica ティ:
+
+       operatore   [numero]   movimento
+     dove:
+       operatore - indica il da farsi, ad es.  d  per [delete] cancellare
+       [numero]  - contatore facoltativo di ripetizione del movimento
+       movimento - spostamento nel testo su cui operare, ad es.
+       		   w [word] parola, $ (fino a fine linea), etc.
+
+  6. Per andare a inizio linea usate uno zero:	0
+  7. Per annullare i comandi precedenti, batti:	 	    u (u minuscola)
+     Per annullare tutte le modifiche a una linea batti:    U (U maiuscola)
+     Per annullare l'annullamento ["redo"]  	  batti:    CTRL-r
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Lezione 3.1: IL COMANDO PUT [METTI, PONI]
+
+
+   ** Batti  p  per porre [put] testo (cancellato prima) dopo il cursore. **
+
+  1. Muovi il cursore alla prima linea indicata con ---> qui in basso.
+
+  2. Batti  dd  per cancellare la linea e depositarla in un registro di Vim.
+
+  3. Muovi il cursore fino alla linea c) SOPRA quella dove andrebbe messa
+     la linea appena cancellata.
+
+  4. Batti  p  per mettere la linea sotto il cursore.
+
+  5. Ripeti i passi da 2 a 4 per mettere tutte le linee nel giusto ordine.
+
+---> d)  Puoi impararla tu?
+---> b)  Le viole sono blu,
+---> c)  La saggezza si impara,
+---> a)  Le rose sono rosse,
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Lezione 3.2: IL COMANDO REPLACE [RIMPIAZZARE]
+
+
+  ** Batti  rx  per rimpiazzare il carattere sotto al cursore con x . **
+
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.
+
+  2. Muovi il cursore fino a posizionarlo sopra il primo errore.
+
+  3. Batti   r	e poi il carattere che dovrebbe stare qui.
+
+  4. Ripeti i passi 2 e 3 finchテゥ la prima linea ティ uguale alla seconda.
+
+--->  Ammattendo quetta lince, qualcuno ho predato alcuni tosti sballiati!
+--->  Immettendo questa linea, qualcuno ha premuto alcuni tasti sbagliati!
+
+  5. Ora passa alla Lezione 3.2.
+
+NOTA: Ricordati che dovresti imparare con la pratica, non solo leggendo.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	     Lezione 3.3: L'OPERATORE CHANGE [CAMBIA]
+
+
+     ** Per cambiare fino alla fine di una parola, batti  ce . **
+
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.
+
+  2. Posiziona il cursore alla  u  in lubw.
+
+  3. Batti  ce  e la parola corretta (in questo caso, batti  inea    ).
+
+  4. Premi <ESC> e vai sul prossimo carattere da modificare.
+
+  5. Ripeti i passi 3 e 4 finchテゥ la prima frase ティ uguale alla seconda.
+
+---> Questa lubw ha alcune pptfd da asdert usgfk l'operatore CHANGE.
+---> Questa linea ha alcune parole da cambiare usando l'operatore CHANGE.
+
+Nota che  ce  cancella la parola, e ti mette anche in Modalitテ Inserimento
+    [Insert Mode]
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Lezione 3.4: ALTRI CAMBIAMENTI USANDO c
+
+** L'operatore c [CHANGE] agisce sugli stessi movimenti di  d  [DELETE] **
+
+  1. L'operatore CHANGE si comporta come DELETE.  Il formato ティ:
+
+       c   [numero]   movimento
+
+  2. I movimenti sono gli stessi,
+     ad es. w (word, parola), $ (fine linea), etc.
+
+  3. Muovi il cursore alla prima linea qui sotto, indicata da --->.
+
+  4. Posiziona il cursore al primo errore.
+
+  5. Batti  c$  e inserisci resto della linea utilizzando come modello la
+     linea seguente, e quando hai finito premi <ESC>
+
+---> La fine di questa linea deve essere aiutata a divenire come la seguente.
+---> La fine di questa linea deve essere corretta usando il comando  c$  .
+
+NOTA:  Puoi usare il tasto Backspace se devi correggere errori di battitura.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       Lezione 3 SOMMARIO
+
+
+  1. Per reinserire del testo appena cancellato, batti   p   .  Questo
+     inserisce [pone] il testo cancellato DOPO il cursore (se era stata tolta
+     una linea intera, questa verrテ messa nella linea SOTTO il cursore).
+
+  2. Per rimpiazzare il carattere sotto il cursore, batti   r   e poi il
+     carattere che vuoi sostituire.
+
+  3. L'operatore change ti permette di cambiare dal cursore fino a dove
+     arriva il movimento.  Ad es. Batti  ce  per cambiare dal cursore
+     fino alla fine della parola,  c$  per cambiare fino a fine linea.
+
+  4. Il formato di  change  ティ:
+
+       c   [numero]   movimento
+
+Ora vai alla prossima Lezione.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lezione 4.1: POSIZIONAMENTO E SITUAZIONE FILE
+
+  ** Batti CTRL-G per vedere a che punto sei nel file e la situazione **
+  **     del file.  Batti G  per raggiungere una linea nel file.      **
+
+  NOTA: Leggi l'intera Lezione prima di eseguire un qualsiasi passo!!
+
+  1. Tieni premuto il tasto CTRL e batti  g  .  Ossia batti CTRL-G.
+     Un messaggio apparirテ in fondo alla pagina con il NOME FILE e la
+     posizione nel file.  Ricordati il numero della linea per il Passo 3.
+
+NOTA: La posizione del cursore si vede nell'angolo in basso a destra dello
+      schermo, se ティ impostata l'opzione 'ruler' (righello, vedi :help ruler).
+
+  2. Premi  G  [G Maiuscolo] per posizionarti in fondo al file.
+     Batti gg  per posizionarti in cima al file.
+
+  3. Batti il numero della linea in cui ti trovavi e poi  G  .  Questo ti
+     riporterテ fino alla linea in cui ti trovavi quando avevi battuto CTRL-g.
+
+  4. Se ti senti sicuro nel farlo, esegui i passi da 1 a 3.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lezione 4.2: IL COMANDO SEARCH [RICERCA]
+
+     ** Batti  /  seguito da una frase per ricercare quella frase. **
+
+  1. in Modalitテ Normale batti il carattere  /  . Nota che la "/" e il cursore
+     sono visibili in fondo dello schermo come quando si usa il comando  : .
+
+  2. Adesso batti 'errroore' <INVIO>. Questa ティ la parola che vuoi ricercare.
+
+  3. Per ricercare ancora la stessa frase, batti soltanto       n  .
+     Per ricercare la stessa frase in direzione opposta, batti  N  .
+
+  4. Per ricercare una frase nella direzione opposta, usa  ?  al posto di  /  .
+
+  5. Per tornare dove eri prima nel file premi  CTRL-O  (tieni il tasto CTRL
+     schiacciato mentre premi la lettera o).  Ripeti  CTRL-O  per andare ancora
+     indietro. Puoi usare  CTRL-I  per tornare in avanti.
+
+NOTA: "errroore" non ティ il modo giusto di digitare errore; errroore ティ un errore.
+NOTA: Quando la ricerca arriva a fine file, ricomincia dall'inizio del file,
+      a meno che l'opzione 'wrapscan' sia stata disattivata.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Lezione 4.3: RICERCA DI PARENTESI CORRISPONDENTI
+
+
+	 ** Batti  %  per trovare una  ),], o }  corrispondente. **
+
+  1. Posiziona il cursore su una (, [, o { nella linea sotto, indicata da --->.
+
+  2. Adesso batti il carattere   %  .
+
+  3. Il cursore si sposterテ sulla parentesi corrispondente.
+
+  4. Batti  %  per muovere il cursore all'altra parentesi corrispondente.
+
+---> Questa ( ティ una linea di test con (, [ ] e { } al suo interno. ))
+
+
+NOTA: Questo ティ molto utile nel "debug" di un programma con parentesi errate!
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	    Lezione 4.4: L'OPERATORE SOSTITUZIONE (SUBSTITUTE)
+
+  ** Batti  :s/vecchio/nuovo/g  per sostituire 'nuovo' a 'vecchio'. **
+
+  1. Muovi il cursore fino alla linea qui sotto, indicata da --->.
+
+  2. Batti  :s/lla/la <INVIO> .  Nota che questo comando cambia solo
+     LA PRIMA occorrenza di "lla" sulla linea.
+
+  3. Adesso batti  :s/lla/la/g . Aggiungendo la flag  g  si chiede di
+     sostituire "globalmente" sulla linea, ossia tutte le occorrenze
+     di "lla" sulla linea.
+
+---> lla stagione migliore per lla fioritura ティ lla primavera.
+
+  4. Per cambiare ogni ricorrenza di una stringa di caratteri tra due linee,
+     batti :#,#s/vecchio/nuovo/g  dove #,# sono i numeri che delimitano
+                                  il gruppo di linee in cui si vuole sostituire.
+     Batti :%s/vecchio/nuovo/g    per cambiare ogni occorrenza nell'intero file.
+     Batti :%s/vecchio/nuovo/gc   per trovare ogni occorrenza nell'intero file
+                                  ricevendo per ognuna una richiesta se
+				  effettuare o meno la sostituzione.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       Lezione 4 SOMMARIO
+
+
+1. CTRL-G  visualizza a che punto sei nel file e la situazione del file.
+          G  [G Maiuscolo] ti porta all'ultima linea del file.
+   numero G  ti porta alla linea con quel numero.
+         gg  ti porta alla prima linea del file.
+
+2. Battendo  /  seguito da una frase ricerca IN AVANTI quella frase.
+   Battendo  ?  seguito da una frase ricerca ALL'INDIETRO quella frase.
+   DOPO una ricerca batti    n   per trovare la prossima occorrenza nella
+   stessa direzione, oppure  N   per cercare in direzione opposta.
+   CTRL-O ti porta alla posizione precedente, CTRL-I a quella piテケ nuova.
+
+3. Battendo  %  mentre il cursore si trova su  (,),[,],{, oppure }
+   ti posizioni sulla corrispondente parentesi.
+
+4. Per sostituire "nuovo" al primo "vecchio" in 1 linea batti :s/vecchio/nuovo
+   Per sostituire "nuovo" ad ogni  "vecchio" in 1 linea batti :s/vecchio/nuovo/g
+   Per sostituire frasi tra 2 numeri di linea [#]  batti   :#,#s/vecchio/nuovo/g
+   Per sostituire tutte le occorrenze nel file batti	     :%s/vecchio/nuovo/g
+   Per chiedere conferma ogni volta aggiungi 'c'	    :%s/vecchio/nuovo/gc
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Lezione 5.1: COME ESEGUIRE UN COMANDO ESTERNO
+
+
+  ** Batti  :!  seguito da un comando esterno per eseguire quel comando. **
+
+  1. Batti il comando   :   per posizionare il cursore in fondo allo schermo.
+     Ciテイ ti permette di immettere un comando dalla linea comandi.
+
+  2. Adesso batti il carattere  !  (punto esclamativo).  Ciテイ ti permette di
+     eseguire qualsiasi comando esterno si possa eseguire nella "shell".
+
+  3. Ad esempio batti   ls   dopo il ! e poi premi <INVIO>.  Questo
+     visualizza una lista della tua directory, proprio come se fossi in una
+     "shell". Usa   :!dir  se  ls  non funziona.   [Unix: ls  MS-DOS: dir]
+
+NOTA:  E' possibile in questo modo eseguire un comando a piacere, specificando
+       anche dei parametri per i comandi stessi.
+
+NOTA:  Tutti i comandi  :  devono essere terminati premendo <INVIO>
+       Da qui in avanti non lo ripeteremo ogni volta.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Lezione 5.2: ANCORA SULLA SCRITTURA DEI FILE
+
+
+   ** Per salvare le modifiche apportate a un testo batti :w NOMEFILE. **
+
+  1. Batti  :!dir  or  :!ls  per procurarti una lista della tua directory.
+     Giテ sai che devi premere <INVIO> dopo aver scritto il comando.
+
+  2. Scegli un NOMEFILE che ancora non esista, ad es. TEST   .
+
+  3. Adesso batti:	 :w TEST   (dove TEST ティ il NOMEFILE che hai scelto).
+
+  4. Questo salva l'intero file ("tutor.it")  con il nome di TEST.
+     Per verifica batti ancora  :!dir  o  :!ls  per listare la tua directory.
+
+NOTA: Se esci da Vim e riesegui Vim battendo  vim TEST , il file aperto
+      sarテ una copia esatta di "tutor.it" al momento del salvataggio.
+
+  5. Ora cancella il file battendo (MR-DOS):   :!del TEST
+				 o (Unix):     :!rm TEST
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lezione 5.3: SELEZIONARE IL TESTO DA SCRIVERE
+
+   ** Per salvare una porzione di file, batti  v movimento :w NOMEFILE **
+
+  1. Muovi il cursore su questa linea.
+
+  2. Premi  v  e muovi il cursore fino alla linea numerata 5., qui sotto.
+     Nota che il testo viene evidenziato.
+
+  3. Batti il carattere  :  .  In fondo allo schermo apparirテ :'<,'>  .
+
+  4. Batti  w TEST  , dove TEST ティ il nome di un file non ancora esistente.
+     Verifica che si veda  :'<,'>w TEST   prima di dare <INVIO>.
+
+  5. Vim scriverテ nel file TEST le linee che hai selezionato.  Usa  :!dir
+     o  :!ls  per controllare che esiste.  Non cancellarlo ora!  Ti servirテ
+     nella prossima lezione.
+
+NOTA:  Battere  v  inizia una selezione visuale.  Puoi muovere il cursore
+       come vuoi, e rendere la selezione piテケ piccola o piテケ grande.  Poi
+       puoi usare un operatore per agire sul testo selezionato.
+       Ad es.,  d  cancella il testo.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Lezione 5.4: INSERIRE E RIUNIRE FILE
+
+
+   ** Per inserire il contenuto di un file, batti  :r NOMEFILE  **
+
+  1. Posiziona il cursore appena sopra questa riga.
+
+NOTA: Dopo aver eseguito il Passo 2 vedrai il testo della Lezione 5.3.
+      Quindi spostati IN GIU' per tornare ancora a questa Lezione.
+
+  2. Ora inserisci il tuo file TEST con il comando   :r TEST   dove TEST ティ
+     il nome che hai usato per creare il file.
+     Il file richiesto ティ inserito sotto la linea in cui si trova il cursore.
+
+  3. Per verificare che un file ティ stato inserito, torna indietro col cursore
+     e nota che ci sono ora 2 copie della Lezione 5.3, quella originale e
+     quella che viene dal file.
+
+NOTA:  Puoi anche leggere l'output prodotto da un comando esterno. Ad es.
+       :r !ls  legge l'output del comando  ls e lo inserisce sotto la linea
+       in cui si trova il cursore.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       Lezione 5 SOMMARIO
+
+
+  1.  :!comando  esegue un comando esterno.
+
+      Alcuni esempi utili sono [in MSDOS]:
+	  :!dir		     -	visualizza lista directory
+	  :!del NOMEFILE     -	cancella file NOMEFILE.
+
+  2.  :w NOMEFILE  scrive su disco il file che stai editando con nome NOMEFILE.
+
+  3.  v movimento :w NOMEFILE  salva le linee selezionate in maniera
+      visuale nel file NOMEFILE.
+
+  4.  :r NOMEFILE  legge il file NOMEFILE da disco e lo inserisce nel file
+      che stai modificando, dopo la linea in cui ティ posizionato il cursore.
+
+  5.  :r !dir  legge l'output del comando  dir  e lo inserisce dopo la
+      linea in cui ティ posizionato il cursore.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Lezione 6.1: IL COMANDO OPEN [APRIRE]
+
+
+        ** Batti   o   per aprire una linea sotto il cursore **
+        **         e passare in Modalitテ Inserimento.        **
+
+  1. Muovi il cursore fino alla linea qui sotto, indicata da --->.
+
+  2. Batti la lettera minuscola  o  per aprire una linea sotto il cursore e
+     passare in Modalitテ Inserimento.
+
+  3. Poi inserisci del testo e premi <ESC> per uscire dalla
+     Modalitテ Inserimento.
+
+---> Dopo battuto  o  il cursore ティ sulla linea aperta (in Modalitテ Inserimento).
+
+  4. Per aprire una linea SOPRA il cursore, batti una   O  maiuscola, invece
+     che una   o   minuscola. Prova sulla linea qui sotto.
+Apri una linea SOPRA questa battendo  O  mentre il cursore ティ su questa linea.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lezione 6.2: IL COMANDO APPEND [AGGIUNGERE]
+
+	     ** Batti   a   per inserire testo DOPO il cursore. **
+
+  1. Muovi il cursore all'inizio della linea qui sotto, indicata da --->.
+
+  2. Batti  e  finchテゥ il cursore arriva alla fine di  li .
+
+  3. Batti una  a  (minuscola) per aggiungere testo DOPO il cursore.
+
+  4. Completa la parola come mostrato nella linea successiva.  Premi <ESC>
+     per uscire dalla Modalitテ Inserimento.
+
+  5. Usa  e  per passare alla successiva parola incompleta e ripeti i passi
+     3 e 4.
+
+---> Questa li ti permetterテ di esercit ad aggiungere testo a una linea.
+---> Questa linea ti permetterテ di esercitarti ad aggiungere testo a una linea.
+
+NOTA: a, i ed A entrano sempre in Modalitテ Inserimento, la sola differenza
+      ティ dove verranno inseriti i caratteri.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	   Lezione 6.3: UN ALTRO MODO DI RIMPIAZZARE [REPLACE]
+
+
+     ** Batti una  R  maiuscola per rimpiazzare piテケ di un carattere. **
+
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.  Muovi il
+     cursore all'inizio del primo  xxx .
+
+  2. Ora batti  R  e batti il numero che vedi nella linea seguente, in modo
+     che rimpiazzi l'  xxx .
+
+  3. Premi <ESC> per uscire dalla Modalitテ Replace.  Nota che il resto della
+     linea resta invariato.
+
+  4. Ripeti i passi in modo da rimpiazzare l'altro xxx .
+
+---> Aggiungendo 123 a xxx si ottiene xxx.
+---> Aggiungendo 123 a 456 si ottiene 579.
+
+NOTA:  La Modalitテ Replace ティ come la Modalitテ Inserimento, ma ogni carattere
+       che viene battuto ricopre un carattere esistente.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Lezione 6.4: COPIA E INCOLLA DEL TESTO
+
+
+     ** usa l'operatore  y  per copiare del testo e  p  per incollarlo **
+
+  1. Vai alla linea indicata da ---> qui sotto, e metti il cursore dopo "a)".
+  
+  2. Entra in Modalitテ Visuale con  v  e metti il cursore davanti a "primo".
+  
+  3. Batti  y  per copiare [yank] il testo evidenziato.
+
+  4. Muovi il cursore alla fine della linea successiva:  j$
+
+  5. Batti  p  per incollare [paste] il testo.  Poi batti:  a secondo <ESC> .
+
+  6. Usa la Modalitテ Visuale per selezionare " elemento.", copialo con  y ,
+     Vai alla fine della linea successiva con  j$  e incolla il testo con  p .
+
+--->  a) questo ティ il primo elemento.
+      b)
+
+NOTA: Puoi usare  y  come operatore;  yw  copia una parola [word].
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	         Lezione 6.5: SET [IMPOSTA] UN'OPZIONE
+
+       ** Imposta un'opzione per ignorare maiuscole/minuscole **
+       **             durante la ricerca/sostituzione         **
+
+ 1. Ricerca 'nota' battendo:   /nota <ENTER>
+    Ripeti la ricerca piテケ volte usando il tasto   n
+
+ 2. Imposta l'opzione 'ic' (Ignore Case, [Ignora maiuscolo/minuscolo])
+    battendo:  :set ic
+
+ 3. Ora ricerca ancora 'nota' premendo il tasto    n
+    Troverai adesso anche  Nota  e  NOTA .
+
+ 4. Imposta le opzioni 'hlsearch' e 'incsearch'    :set hls is
+
+ 5. Ora batti ancora il comando di ricerca, e guarda cosa succede:    /nota
+ 
+ 6. Per disabilitare il riconoscimento di maiuscole/minuscole batti:  :set noic
+NOTA: Per non evidenziare le occorrenze trovate batti:   :nohlsearch
+NOTA: Per ignorare maiuscole/minuscole solo per una ricerca, usa \c
+      nel comando di ricerca:    /nota\c <INVIO>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lezione 6 SOMMARIO
+
+  1. Batti  o  per aggiungere una linea SOTTO il cursore ed entrare in
+               Modalitテ Inserimento.
+     Batti  O  per aggiungere una linea SOPRA il cursore.
+
+  2. Batti  a  per inserire testo DOPO il cursore.
+     Batti  A  per inserire testo alla fine della linea.
+
+  3. Il comando   e  sposta il cursore alla fine di una parola.
+
+  4. L'operatore  y  copia del testo,  p  incolla del testo.
+
+  5. Batti  R  per entrare in Modalitテ Replace, e ne esci premendo <ESC>.
+
+  6. Batti ":set xxx" per impostare l'opzione "xxx". Alcun opzioni sono:
+      'ic' 'ignorecase'	ignorare maiuscole/minuscole nella ricerca
+      'is' 'incsearch'	mostra occorrenze parziali durante una ricerca
+      'hls' 'hlsearch'	evidenzia tutte le occorrenze di una ricerca
+     Puoi usare sia il nome completo di un'opzione che quello abbreviato.
+
+  7. Usa il prefisso "no" per annullare una opzione:   :set noic
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lezione 7.1: OTTENERE AIUTO
+
+		 ** Usa il sistema di aiuto on-line **
+
+  Vim ha un esauriente sistema di aiuto on-line.  Per cominciare, prova una di
+  queste alternative:
+	- premi il tasto <AIUTO> (se ce n'ティ uno)
+	- premi il tasto <F1>    (se ce n'ティ uno)
+	- batti   :help  <INVIO>  OPPURE   :h <INVIO>
+
+  Leggi il testo nella finestra di aiuto per vedere come funziona l'aiuto.
+  Batti  CTRL-W CTRL-W	per passare da una finestra all'altra.
+  Batti  :q <INVIO>   per chiudere la finestra di aiuto.
+
+  Puoi trovare aiuto su quasi tutto, dando un argomento al comando ":help"
+  Prova questi (non dimenticare di premere <INVIO>):
+
+	:help w
+	:help c_CTRL-D
+	:help insert-index
+	:help user-manual
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Lezione 7.2: PREPARARE UNO SCRIPT INIZIALE
+
+		        ** Attiva le opzioni Vim **
+
+  Vim ha molte piテケ opzioni di Vi, ma molte di esse sono predefinite inattive.
+  Per cominciare a usare piテケ opzioni, devi creare un file "vimrc".
+
+  1. Comincia a editare il file "vimrc".  Questo dipende dal tuo sistema:
+	:e ~/.vimrc		per Unix
+	:e $VIM/_vimrc		per MS-Windows
+
+  2. Ora leggi i contenuti del file "vimrc" distribuito come esempio:
+
+	:r $VIMRUNTIME/vimrc_example.vim
+
+  3. Scrivi il file con:
+	:w
+
+  La prossima volta che apri Vim, sarテ abilitata la colorazione sintattica.
+  Puoi aggiungere a questo file "vimrc" tutte le tue impostazioni preferite.
+  Per maggiori informazioni batti:  :help vimrc-intro
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lezione 7.3: COMPLETAMENTO
+
+
+	      ** Completamento linea comandi con CTRL-D e <TAB> **
+
+  1. Imposta Vim in modalitテ compatibile:  :set nocp
+
+  2. Guarda i file esistenti nella directory:  :!ls   o  :!dir
+
+  3. Batti l'inizio di un comando:  :e
+
+  4. Premi  CTRL-D  e Vim ti mostra una lista di comandi che iniziano per "e".
+
+  5. Premi  <TAB>  e Vim completa per te il nome comando come ":edit".
+
+  6. Ora batti uno spazio e l'inizio del nome di un file esistente:  :edit FIL
+
+  7. Premi <TAB>.  Vim completerテ il nome del file (se ティ il solo possibile).
+
+NOTA:  Il completamento ティ disponibile per molti comandi.  Prova a battere
+       CTRL-D e <TAB>.  Particolarmente utile per  :help .
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			   Lezione 7 Sommario
+
+
+  1. Batti  :help  o premi <F1> o <Help>  per aprire una finestra di aiuto.
+
+  2. Batti  :help comando  per avere aiuto su  comando .
+
+  3. Batti  CTRL-W CTRL-W  per saltare alla prossima finestra.
+
+  4. Batti  :q  per chiudere la finestra di aiuto.
+
+  5. Crea uno script iniziale vimrc contenente le tue impostazioni preferite.
+
+  6. Mentre batti un comando  : , premi CTRL-D per vedere i possibili
+     completamenti.  Premi <TAB> per usare il completamento desiderato.
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  Qui finisce la Guida a Vim.  Il suo intento ティ di fornire una breve panoramica
+  dell'Editor Vim, che ti consenta di usare l'Editor abbastanza facilmente.
+  Questa guida ティ largamente incompleta poichテゥ Vim ha moltissimi altri comandi.
+  Puoi anche leggere il manuale utente (anche in italiano): ":help user-manual".
+
+  Per ulteriore lettura e studio, raccomandiamo:
+	Vim - Vi Improved - di Steve Oualline     Editore: New Riders
+  Il primo libro completamente dedicato a Vim. Utile specie per principianti.
+  Contiene molti esempi e figure.
+  Vedi http://iccf-holland.org/click5.html
+
+  Quest'altro libro ティ piテケ su Vi che su Vim, ma ティ pure consigliato:
+	Learning the Vi Editor - di Linda Lamb e Arnold Robbins
+	Editore: O'Reilly & Associates Inc.
+  E' un buon libro per imparare quasi tutto ciテイ che puoi voler fare con Vi.
+  Ne esiste una traduzione italiana, basata su una vecchia edizione.
+
+  Questa guida ティ stata scritta da Michael C. Pierce e Robert K. Ware,
+  Colorado School of Mines, usando idee fornite da Charles Smith,
+  Colorado State University - E-mail: bware@mines.colorado.edu
+  Modificato per Vim da Bram Moolenaar.
+  Segnalare refusi ad Antonio Colombo - E-mail: azc100@gmail.com
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/src/INSTALL
+++ b/src/INSTALL
@@ -14,6 +14,7 @@ See INSTALLami.txt              for Amig
 See INSTALLmac.txt              for Macintosh
 See INSTALLpc.txt               for PC (MS-DOS, Windows 95/98/NT/XP)
 See INSTALLvms.txt              for VMS
+See INSTALLx.txt		for cross-compiling on Unix
 See ../runtime/doc/os_390.txt   for OS/390 Unix
 See ../runtime/doc/os_beos.txt  for BeBox
 
--- a/src/edit.c
+++ b/src/edit.c
@@ -9300,7 +9300,7 @@ ins_tab()
 	    i = cursor->col - fpos.col;
 	    if (i > 0)
 	    {
-		mch_memmove(ptr, ptr + i, STRLEN(ptr + i) + 1);
+		STRMOVE(ptr, ptr + i);
 		/* correct replace stack. */
 		if ((State & REPLACE_FLAG)
 #ifdef FEAT_VREPLACE
--- a/src/ops.c
+++ b/src/ops.c
@@ -516,7 +516,7 @@ shift_block(oap, amount)
 	copy_spaces(newp + bd.textcol + i, (size_t)j);
 
 	/* the end */
-	mch_memmove(newp + STRLEN(newp), midp, (size_t)STRLEN(midp) + 1);
+	STRMOVE(newp + STRLEN(newp), midp);
     }
     /* replace the line */
     ml_replace(curwin->w_cursor.lnum, newp, FALSE);
@@ -616,7 +616,7 @@ block_insert(oap, s, b_insert, bdp)
 
 	if (spaces > 0)
 	    offset += count;
-	mch_memmove(newp + offset, oldp, (size_t)(STRLEN(oldp) + 1));
+	STRMOVE(newp + offset, oldp);
 
 	ml_replace(lnum, newp, FALSE);
 
@@ -1759,8 +1759,7 @@ op_delete(oap)
 				     (size_t)(bd.startspaces + bd.endspaces));
 	    /* copy the part after the deleted part */
 	    oldp += bd.textcol + bd.textlen;
-	    mch_memmove(newp + bd.textcol + bd.startspaces + bd.endspaces,
-						      oldp, STRLEN(oldp) + 1);
+	    STRMOVE(newp + bd.textcol + bd.startspaces + bd.endspaces, oldp);
 	    /* replace the line */
 	    ml_replace(lnum, newp, FALSE);
 	}
@@ -2081,7 +2080,7 @@ op_replace(oap, c)
 		/* insert post-spaces */
 		copy_spaces(newp + STRLEN(newp), (size_t)bd.endspaces);
 		/* copy the part after the changed part */
-		mch_memmove(newp + STRLEN(newp), oldp, STRLEN(oldp) + 1);
+		STRMOVE(newp + STRLEN(newp), oldp);
 	    }
 	    /* replace the line */
 	    ml_replace(curwin->w_cursor.lnum, newp, FALSE);
@@ -2696,7 +2695,7 @@ op_change(oap)
 			mch_memmove(newp + offset, ins_text, (size_t)ins_len);
 			offset += ins_len;
 			oldp += bd.textcol;
-			mch_memmove(newp + offset, oldp, STRLEN(oldp) + 1);
+			STRMOVE(newp + offset, oldp);
 			ml_replace(linenr, newp, FALSE);
 		    }
 		}
@@ -3662,7 +3661,7 @@ do_put(regname, dir, count, flags)
 		    mch_memmove(ptr, y_array[0], (size_t)yanklen);
 		    ptr += yanklen;
 		}
-		mch_memmove(ptr, oldp + col, STRLEN(oldp + col) + 1);
+		STRMOVE(ptr, oldp + col);
 		ml_replace(lnum, newp, FALSE);
 		/* Put cursor on last putted char. */
 		curwin->w_cursor.col += (colnr_T)(totlen - 1);
--- a/src/option.c
+++ b/src/option.c
@@ -2846,7 +2846,6 @@ static char *(p_bsdir_values[]) = {"curr
 #ifdef FEAT_SCROLLBIND
 static char *(p_scbopt_values[]) = {"ver", "hor", "jump", NULL};
 #endif
-static char *(p_swb_values[]) = {"useopen", "usetab", "split", NULL};
 static char *(p_debug_values[]) = {"msg", "throw", "beep", NULL};
 #ifdef FEAT_VERTSPLIT
 static char *(p_ead_values[]) = {"both", "ver", "hor", NULL};
@@ -3276,20 +3275,8 @@ set_init_1()
     }
 # else
 #  ifdef MACOS_CONVERT
-    if (mch_getenv((char_u *)"LANG") == NULL)
-    {
-	char	buf[20];
-	if (LocaleRefGetPartString(NULL,
-		    kLocaleLanguageMask | kLocaleLanguageVariantMask |
-		    kLocaleRegionMask | kLocaleRegionVariantMask,
-		    sizeof buf, buf) == noErr && *buf)
-	{
-	    vim_setenv((char_u *)"LANG", (char_u *)buf);
-#   ifdef HAVE_LOCALE_H
-	    setlocale(LC_ALL, "");
-#   endif
-	}
-    }
+    /* Moved to os_mac_conv.c to avoid dependency problems. */
+    mac_lang_init();
 #  endif
 # endif
 
@@ -4599,8 +4586,7 @@ do_set(arg, opt_flags)
 				else
 				{
 				    i = (int)STRLEN(newval);
-				    mch_memmove(newval + i + comma, origval,
-							  STRLEN(origval) + 1);
+				    STRMOVE(newval + i + comma, origval);
 				}
 				if (comma)
 				    newval[i] = ',';
@@ -4629,8 +4615,7 @@ do_set(arg, opt_flags)
 					    ++i;
 					}
 				    }
-				    mch_memmove(newval + (s - origval), s + i,
-							   STRLEN(s + i) + 1);
+				    STRMOVE(newval + (s - origval), s + i);
 				}
 			    }
 
@@ -4641,7 +4626,7 @@ do_set(arg, opt_flags)
 				    if ((!(flags & P_COMMA) || *s != ',')
 					    && vim_strchr(s + 1, *s) != NULL)
 				    {
-					mch_memmove(s, s + 1, STRLEN(s));
+					STRMOVE(s, s + 1);
 					--s;
 				    }
 			    }
@@ -6230,7 +6215,7 @@ did_set_string_option(opt_idx, varp, new
     /* 'switchbuf' */
     else if (varp == &p_swb)
     {
-	if (check_opt_strings(p_swb, p_swb_values, TRUE) != OK)
+	if (opt_strings_flags(p_swb, p_swb_values, &swb_flags, TRUE) != OK)
 	    errmsg = e_invarg;
     }
 
@@ -7183,7 +7168,7 @@ set_bool_option(opt_idx, varp, value, op
 	}
 	/* remove 's' from p_shm */
 	else if (!p_terse && p != NULL)
-	    mch_memmove(p, p + 1, STRLEN(p));
+	    STRMOVE(p, p + 1);
     }
 
     /* when 'paste' is set or reset also change other options */
@@ -8177,7 +8162,8 @@ get_option_value(name, numval, stringval
 	{
 #ifdef FEAT_CRYPT
 	    /* never return the value of the crypt key */
-	    if ((char_u **)varp == &curbuf->b_p_key)
+	    if ((char_u **)varp == &curbuf->b_p_key
+						&& **(char_u **)(varp) != NUL)
 		*stringval = vim_strsave((char_u *)"*****");
 	    else
 #endif
@@ -10032,7 +10018,7 @@ ExpandOldSetting(num_file, file)
 		&& (options[expand_option_idx].flags & P_EXPAND)
 		&& vim_isfilec(var[2])
 		&& (var[2] != '\\' || (var == buf && var[4] != '\\')))
-	    mch_memmove(var, var + 1, STRLEN(var));
+	    STRMOVE(var, var + 1);
 #endif
 
     *file[0] = buf;
--- a/src/option.h
+++ b/src/option.h
@@ -742,6 +742,14 @@ EXTERN int	p_sol;		/* 'startofline' */
 EXTERN char_u	*p_su;		/* 'suffixes' */
 EXTERN char_u	*p_sws;		/* 'swapsync' */
 EXTERN char_u	*p_swb;		/* 'switchbuf' */
+EXTERN unsigned	swb_flags;
+#ifdef IN_OPTION_C
+static char *(p_swb_values[]) = {"useopen", "usetab", "split", "newtab", NULL};
+#endif
+#define SWB_USEOPEN		0x001
+#define SWB_USETAB		0x002
+#define SWB_SPLIT		0x004
+#define SWB_NEWTAB		0x008
 EXTERN int	p_tbs;		/* 'tagbsearch' */
 EXTERN long	p_tl;		/* 'taglength' */
 EXTERN int	p_tr;		/* 'tagrelative' */
--- a/src/po/ja.sjis.po
+++ b/src/po/ja.sjis.po
@@ -3,16 +3,17 @@
 # Do ":help uganda"  in Vim to read copying and usage conditions.
 # Do ":help credits" in Vim to see a list of people who contributed.
 #
-# MURAOKA Taro <koron@tka.att.ne.jp>, 2001-6.
-# Last Change: 18-Apr-2006.
+# MURAOKA Taro <koron.kaoriya@gmail.com>, 2001-8.
+# Last Change: 31-May-2008.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Vim 7.0\n"
-"POT-Creation-Date: 2006-04-18 11:00+0900\n"
-"PO-Revision-Date: 2006-04-18 11:30+0900\n"
-"Last-Translator: MURAOKA Taro <koron@tka.att.ne.jp>\n"
-"Language-Team: MURAOKA Taro <koron@tka.att.ne.jp>\n"
+"Project-Id-Version: Vim 7.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-05-31 22:00+0900\n"
+"PO-Revision-Date: 2008-05-31 22:30+0900\n"
+"Last-Translator: MURAOKA Taro <koron.kaoriya@gmail.com>\n"
+"Language-Team: MURAOKA Taro <koron.kaoriya@gmail.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=cp932\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -114,12 +115,15 @@ msgstr "[読込エラー]"
 msgid "[readonly]"
 msgstr "[読込専用]"
 
+#, c-format
 msgid "1 line --%d%%--"
 msgstr "1 行 --%d%%--"
 
+#, c-format
 msgid "%ld lines --%d%%--"
 msgstr "%ld 行 --%d%%--"
 
+#, c-format
 msgid "line %ld of %ld --%d%%-- col "
 msgstr "行 %ld (全体 %ld) --%d%%-- col "
 
@@ -145,6 +149,7 @@ msgstr "末尾"
 msgid "Top"
 msgstr "先頭"
 
+#, c-format
 msgid ""
 "\n"
 "# Buffer list:\n"
@@ -189,6 +194,9 @@ msgstr "E98: diffの出力を読込めません"
 msgid "E99: Current buffer is not in diff mode"
 msgstr "E99: 現在のバッファは差分モードではありません"
 
+msgid "E793: No other buffer in diff mode is modifiable"
+msgstr "E793: 差分モードである他のバッファは変更可能\です"
+
 msgid "E100: No other buffer in diff mode"
 msgstr "E100: 差分モードである他のバッファはありません"
 
@@ -216,6 +224,9 @@ msgstr "E544: キーマップファイルがみつかりません"
 msgid "E105: Using :loadkeymap not in a sourced file"
 msgstr "E105: :source で取込むファイル以外では :loadkeymap を使えません"
 
+msgid "E791: Empty keymap entry"
+msgstr "E791: 空のキーマップエントリ"
+
 msgid " Keyword completion (^N^P)"
 msgstr " キーワード補完 (^N^P)"
 
@@ -282,6 +293,7 @@ msgstr " (置換) スクロール (^E/^Y)"
 msgid "Scanning: %s"
 msgstr "スキャン中: %s"
 
+#, c-format
 msgid "Scanning tags."
 msgstr "タグをスキャン中."
 
@@ -338,7 +350,7 @@ msgid "E713: Cannot use empty key for Di
 msgstr "E713: 辞書型に空のキーを使うことはできません"
 
 msgid "E714: List required"
-msgstr "E471: リスト型が必要です"
+msgstr "E714: リスト型が必要です"
 
 msgid "E715: Dictionary required"
 msgstr "E715: 辞書型が必要です"
@@ -613,6 +625,10 @@ msgid "E706: Variable type mismatch for:
 msgstr "E706: 変数の型が一致しません: %s"
 
 #, c-format
+msgid "E795: Cannot delete variable %s"
+msgstr "E795: 変数 %s を削除できません"
+
+#, c-format
 msgid "E741: Value is locked: %s"
 msgstr "E741: 値がロックされています: %s"
 
@@ -678,6 +694,7 @@ msgstr "%s の実行を継続中です"
 msgid "E133: :return not inside a function"
 msgstr "E133: 関数外に :return がありました"
 
+#, c-format
 msgid ""
 "\n"
 "# global variables:\n"
@@ -744,6 +761,7 @@ msgstr " マーク"
 msgid " FAILED"
 msgstr " 失敗"
 
+#. avoid a wait_return for this message, it's annoying
 #, c-format
 msgid "E137: Viminfo file is not writable: %s"
 msgstr "E137: viminfoファイルが書込みできません: %s"
@@ -761,6 +779,7 @@ msgstr "viminfoファイル \"%s\" を書込み中"
 msgid "# This viminfo file was generated by Vim %s.\n"
 msgstr "# この viminfo ファイルは Vim %s によって生成されました.\n"
 
+#, c-format
 msgid ""
 "# You may edit it if you're careful!\n"
 "\n"
@@ -768,6 +787,7 @@ msgstr ""
 "# 変更する際には十\分注意してください!\n"
 "\n"
 
+#, c-format
 msgid "# Value of 'encoding' when this file was written\n"
 msgstr "# このファイルが書かれた時の 'encoding' の値\n"
 
@@ -810,6 +830,20 @@ msgstr ""
 "\"%s\" には 'readonly' オプションが設定されています.\n"
 "上書き強制をしますか?"
 
+#, c-format
+msgid ""
+"File permissions of \"%s\" are read-only.\n"
+"It may still be possible to write it.\n"
+"Do you wish to try?"
+msgstr ""
+"ファイル \"%s\" のパーミッションが読込専用です.\n"
+"それでも恐らく書き込むことは可能\です.\n"
+"継続しますか?"
+
+#, c-format
+msgid "E505: \"%s\" is read-only (add ! to override)"
+msgstr "E505: \"%s\" は読込専用です (強制書込には ! を追加)"
+
 msgid "Edit File"
 msgstr "ファイルを編集"
 
@@ -864,6 +898,7 @@ msgstr "E148: globalコマンドに正規表\現が指定されていません"
 msgid "Pattern found in every line: %s"
 msgstr "パターンが全ての行でみつかりました: %s"
 
+#, c-format
 msgid ""
 "\n"
 "# Last Substitute String:\n"
@@ -1207,10 +1242,10 @@ msgstr "スワップファイルがありません"
 msgid "Append File"
 msgstr "追加ファイル"
 
-msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
+msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
 msgstr ""
-"E747: バッファが修正されているので, ディレクトリを変更できません (! "
-"を追加で上書)"
+"E747: バッファが修正されているので, ディレクトリを変更できません (! を追加で"
+"上書)"
 
 msgid "E186: No previous directory"
 msgstr "E186: 前のディレクトリはありません"
@@ -1446,6 +1481,9 @@ msgstr " はディレクトリです"
 msgid "is not a file"
 msgstr " はファイルではありません"
 
+msgid "is a device (disabled with 'opendevice' option)"
+msgstr " はデバイスです ('opendevice' オプションで回避できます)"
+
 msgid "[New File]"
 msgstr "[新ファイル]"
 
@@ -1483,6 +1521,9 @@ msgstr "[FIFO]"
 msgid "[socket]"
 msgstr "[ソ\ケット]"
 
+msgid "[character special]"
+msgstr "[キャラクタ・デバイス]"
+
 msgid "[RO]"
 msgstr "[読専]"
 
@@ -1543,6 +1584,9 @@ msgstr "NetBeansバッファの一部を書き出すことはできません"
 msgid "is not a file or writable device"
 msgstr "はファイルでも書込み可能\デバイスでもありません"
 
+msgid "writing to device disabled with 'opendevice' option"
+msgstr "'opendevice' オプションによりデバイスへの書き込みはできません"
+
 msgid "is read-only (add ! to override)"
 msgstr "は読込専用です (強制書込には ! を追加)"
 
@@ -2151,6 +2195,7 @@ msgstr "%d ページ"
 msgid "No text to be printed"
 msgstr "印刷するテキストがありません"
 
+#, c-format
 msgid "Printing page %d (%d%%)"
 msgstr "印刷中: ページ %d (%d%%)"
 
@@ -2290,15 +2335,15 @@ msgstr "E622: cscopeの起動準備(fork)に失敗しました"
 msgid "cs_create_connection exec failed"
 msgstr "cs_create_connection の実行に失敗しました"
 
-msgid "E623: Could not spawn cscope process"
-msgstr "E623: cscopeプロセスを起動できませんでした"
-
 msgid "cs_create_connection: fdopen for to_fp failed"
 msgstr "cs_create_connection: to_fp の fdopen に失敗しました"
 
 msgid "cs_create_connection: fdopen for fr_fp failed"
 msgstr "cs_create_connection: fr_fp の fdopen に失敗しました"
 
+msgid "E623: Could not spawn cscope process"
+msgstr "E623: cscopeプロセスを起動できませんでした"
+
 msgid "E567: no cscope connections"
 msgstr "E567: cscope接続に失敗しました"
 
@@ -2373,8 +2418,8 @@ msgid ""
 "???: Sorry, this command is disabled, the MzScheme library could not be "
 "loaded."
 msgstr ""
-"???: このコマンドは無効です, ごめんなさい: MzScheme "
-"ライブラリをロードできませんでした."
+"???: このコマンドは無効です, ごめんなさい: MzScheme ライブラリをロードできま"
+"せんでした."
 
 msgid "invalid expression"
 msgstr "無効な式です"
@@ -2427,25 +2472,12 @@ msgstr "範囲外の行番号です"
 msgid "not allowed in the Vim sandbox"
 msgstr "サンドボックスでは許されません"
 
-#, c-format
-msgid "E370: Could not load library %s"
-msgstr "E370: ライブラリ %s をロードできませんでした"
-
-msgid "Sorry, this command is disabled: the Perl library could not be loaded."
-msgstr ""
-"このコマンドは無効です, ごめんなさい: Perlライブラリをロードできませんでした."
-
-msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
-msgstr ""
-"E299: サンドボックスでは Safe "
-"モジュールを使用しないPerlスクリプトは禁じられています"
-
 msgid ""
 "E263: Sorry, this command is disabled, the Python library could not be "
 "loaded."
 msgstr ""
-"E263: このコマンドは無効です,ごめんなさい: "
-"Pythonライブラリをロードできませんでした."
+"E263: このコマンドは無効です,ごめんなさい: Pythonライブラリをロードできません"
+"でした."
 
 # Added at 07-Feb-2004.
 msgid "E659: Cannot invoke Python recursively"
@@ -2512,11 +2544,11 @@ msgstr "E265: $_ は文字列のインスタンスでなければなりません"
 msgid ""
 "E266: Sorry, this command is disabled, the Ruby library could not be loaded."
 msgstr ""
-"E266: このコマンドは無効です,ごめんなさい: "
-"Rubyライブラリをロードできませんでした."
+"E266: このコマンドは無効です,ごめんなさい: Rubyライブラリをロードできませんで"
+"した."
 
 msgid "E267: unexpected return"
-msgstr "E265: 予\期せぬ return です"
+msgstr "E267: 予\期せぬ return です"
 
 msgid "E268: unexpected next"
 msgstr "E268: 予\期せぬ next です"
@@ -2595,8 +2627,8 @@ msgid ""
 "Cannot connect to SNiFF+. Check environment (sniffemacs must be found in "
 "$PATH).\n"
 msgstr ""
-"SNiFF+に接続できません. 環境をチェックしてください(sniffemacs が $PATH "
-"になければなりません).\n"
+"SNiFF+に接続できません. 環境をチェックしてください(sniffemacs が $PATH になけ"
+"ればなりません).\n"
 
 msgid "E274: Sniff: Error during read. Disconnected"
 msgstr "E274: Sniff: 読込中にエラーが発生しました. 切断しました"
@@ -2660,8 +2692,8 @@ msgstr "vim エラー"
 
 msgid "cannot create buffer/window command: object is being deleted"
 msgstr ""
-"バッファ/ウィンドウ作成コマンドを作成できません: "
-"オブジェクトが消去されていました"
+"バッファ/ウィンドウ作成コマンドを作成できません: オブジェクトが消去されていま"
+"した"
 
 msgid ""
 "cannot register callback command: buffer/window is already being deleted"
@@ -2670,27 +2702,27 @@ msgstr ""
 
 #. This should never happen.  Famous last word?
 msgid ""
-"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to "
-"vim-dev@vim.org"
+"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
+"org"
 msgstr ""
 "E280: TCL 致命的エラー: reflist 汚染!? vim-dev@vim.org に報告してください"
 
 msgid "cannot register callback command: buffer/window reference not found"
 msgstr ""
-"コールバックコマンドを登録できません: "
-"バッファ/ウィンドウの参照がみつかりません"
+"コールバックコマンドを登録できません: バッファ/ウィンドウの参照がみつかりませ"
+"ん"
 
 msgid ""
 "E571: Sorry, this command is disabled: the Tcl library could not be loaded."
 msgstr ""
-"E571: このコマンドは無効です,ごめんなさい: "
-"Tclライブラリをロードできませんでした."
+"E571: このコマンドは無効です,ごめんなさい: Tclライブラリをロードできませんで"
+"した."
 
 msgid ""
 "E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org"
 msgstr ""
-"E281: TCL エラー: 終了コードが整数値ではありません!? vim-dev@vim.org "
-"に報告してください"
+"E281: TCL エラー: 終了コードが整数値ではありません!? vim-dev@vim.org に報告し"
+"てください"
 
 #, c-format
 msgid "E572: exit code %d"
@@ -2801,8 +2833,12 @@ msgstr ""
 "\n"
 "   もしくは:"
 
-msgid "where case is ignored prepend / to make flag upper case"
-msgstr "大文字小文字は無視されます / フラグは大文字にしてください"
+msgid ""
+"\n"
+"Where case is ignored prepend / to make flag upper case"
+msgstr ""
+"\n"
+"大小文字が無視される場合は大文字にするために / を前置してください"
 
 msgid ""
 "\n"
@@ -2870,8 +2906,8 @@ msgstr "-C\t\t\tVi互換モード: 'compatible'"
 msgid "-N\t\t\tNot fully Vi compatible: 'nocompatible'"
 msgstr "-N\t\t\tVi非互換モード: 'nocompatible"
 
-msgid "-V[N]\t\tVerbose level"
-msgstr "-V[N]\t\tVerbose レベル"
+msgid "-V[N][fname]\t\tBe verbose [level N] [log messages to fname]"
+msgstr "-V[N][fname]\t\tログ出力設定 [レベル N] [ログファイル名 fname]"
 
 msgid "-D\t\t\tDebugging mode"
 msgstr "-D\t\t\tデバッグモード"
@@ -2971,8 +3007,11 @@ msgid ""
 "--remote-wait-silent <files>  Same, don't complain if there is no server"
 msgstr "--remote-wait-silent <files>  同上, サーバが無くても警告文を出力しない"
 
-msgid "--remote-tab <files>  As --remote but open tab page for each file"
-msgstr "--remote-tab <files>  --remoteでファイル1つにつき1つのタブページを開く"
+msgid ""
+"--remote-tab[-wait][-silent] <files>  As --remote but use tab page per file"
+msgstr ""
+"--remote-tab[-wait][-silent] <files>  --remoteでファイル1つにつき1つのタブ"
+"ページを開く"
 
 msgid "--remote-send <keys>\tSend <keys> to a Vim server and exit"
 msgstr "--remote-send <keys>\tVimサーバに <keys> を送信して終了する"
@@ -3097,6 +3136,9 @@ msgstr "--socketid <xid>\t異なるGTK widgetでVimを開く"
 msgid "-P <parent title>\tOpen Vim inside parent application"
 msgstr "-P <親のタイトル>\tVimを親アプリケーションの中で起動する"
 
+msgid "--windowid <HWND>\tOpen Vim inside another win32 widget"
+msgstr "--windowid <HWND>\t異なるWin32 widgetの内部にVimを開く"
+
 msgid "No display"
 msgstr "ディスプレイが見つかりません"
 
@@ -3149,6 +3191,7 @@ msgstr ""
 "\n"
 "変更   行    列  テキスト"
 
+#, c-format
 msgid ""
 "\n"
 "# File marks:\n"
@@ -3157,6 +3200,7 @@ msgstr ""
 "# ファイルマーク:\n"
 
 #. Write the jumplist with -'
+#, c-format
 msgid ""
 "\n"
 "# Jumplist (newest first):\n"
@@ -3164,6 +3208,7 @@ msgstr ""
 "\n"
 "# ジャンプリスト (新しいものが先):\n"
 
+#, c-format
 msgid ""
 "\n"
 "# History of marks within files (newest to oldest):\n"
@@ -3289,6 +3334,9 @@ msgstr ""
 ",\n"
 "もしくはファイルが損傷しています."
 
+msgid " has been damaged (page size is smaller than minimum value).\n"
+msgstr " は損傷しています (ページサイズが最小値を下回っています).\n"
+
 #, c-format
 msgid "Using swap file \"%s\""
 msgstr "スワップファイル \"%s\" を使用中"
@@ -3629,6 +3677,10 @@ msgstr "E328: メニューは他のモードにだけあります"
 msgid "E329: No menu \"%s\""
 msgstr "E329: \"%s\" というメニューはありません"
 
+#. Only a mnemonic or accelerator is not valid.
+msgid "E792: Empty menu name"
+msgstr "E792: メニュー名が空です"
+
 msgid "E330: Menu path must not lead to a sub-menu"
 msgstr "E330: メニューパスはサブメニューを生じるべきではありません"
 
@@ -3680,7 +3732,7 @@ msgid "E354: Invalid register name: '%s'
 msgstr "E354: 無効なレジスタ名: '%s'"
 
 msgid "Messages maintainer: Bram Moolenaar <Bram@vim.org>"
-msgstr "日本語メッセージ翻訳/監修: 村岡 太郎 <koron@tka.att.ne.jp>"
+msgstr "日本語メッセージ翻訳/監修: 村岡 太郎 <koron.kaoriya@gmail.com>"
 
 msgid "Interrupt: "
 msgstr "割込み: "
@@ -3776,6 +3828,7 @@ msgstr "Vim: ファイルを保存中...\n"
 msgid "Vim: Finished.\n"
 msgstr "Vim: 終了しました.\n"
 
+#, c-format
 msgid "ERROR: "
 msgstr "エラー: "
 
@@ -3839,8 +3892,8 @@ msgid ""
 "E343: Invalid path: '**[number]' must be at the end of the path or be "
 "followed by '%s'."
 msgstr ""
-"E343: 無効なパスです: '**[数値]' はpathの最後か '%s' "
-"が続いてないといけません."
+"E343: 無効なパスです: '**[数値]' はpathの最後か '%s' が続いてないといけませ"
+"ん."
 
 #, c-format
 msgid "E344: Can't find directory \"%s\" in cdpath"
@@ -3984,6 +4037,7 @@ msgstr ""
 msgid "Illegal register name"
 msgstr "不正なレジスタ名"
 
+#, c-format
 msgid ""
 "\n"
 "# Registers:\n"
@@ -4140,6 +4194,13 @@ msgstr "E594: 最低 %d のカラム幅が必要です"
 msgid "E355: Unknown option: %s"
 msgstr "E355: 未知のオプションです: %s"
 
+#. There's another character after zeros or the string
+#. * is empty.  In both cases, we are trying to set a
+#. * num option using a string.
+#, c-format
+msgid "E521: Number required: &%s = '%s'"
+msgstr "E521: 数字が必要です: &%s = '%s'"
+
 msgid ""
 "\n"
 "--- Terminal codes ---"
@@ -4270,6 +4331,7 @@ msgstr "Vim: 2重のシグナルのため, 終了します\n"
 msgid "Vim: Caught deadly signal %s\n"
 msgstr "Vim: 致命的シグナル %s を検知しました\n"
 
+#, c-format
 msgid "Vim: Caught deadly signal\n"
 msgstr "Vim: 致命的シグナルを検知しました\n"
 
@@ -4292,6 +4354,20 @@ msgstr "X display の open がタイムアウトしました"
 
 msgid ""
 "\n"
+"Could not get security context for "
+msgstr ""
+"\n"
+"セキュリティコンテキストを取得できません "
+
+msgid ""
+"\n"
+"Could not set security context for "
+msgstr ""
+"\n"
+"セキュリティコンテキストを設定できません "
+
+msgid ""
+"\n"
 "Cannot execute shell "
 msgstr ""
 "\n"
@@ -4399,21 +4475,26 @@ msgstr ""
 msgid "Vim Warning"
 msgstr "Vimの警告"
 
+#, c-format
 msgid "E372: Too many %%%c in format string"
 msgstr "E372: フォーマット文字列に %%%c が多過ぎます"
 
+#, c-format
 msgid "E373: Unexpected %%%c in format string"
 msgstr "E373: フォーマット文字列に予\期せぬ %%%c がありました"
 
 msgid "E374: Missing ] in format string"
 msgstr "E374: フォーマット文字列に ] がありません"
 
+#, c-format
 msgid "E375: Unsupported %%%c in format string"
 msgstr "E375: フォーマット文字列では %%%c はサポートされません"
 
+#, c-format
 msgid "E376: Invalid %%%c in format string prefix"
 msgstr "E376: フォーマット文字列の前置に無効な %%%c があります"
 
+#, c-format
 msgid "E377: Invalid %%%c in format string"
 msgstr "E377: フォーマット文字列に無効な %%%c があります"
 
@@ -4459,6 +4540,10 @@ msgstr "E681: バッファは読み込まれませんでした"
 msgid "E777: String or List expected"
 msgstr "E777: 文字列かリストが必要です"
 
+#, c-format
+msgid "E369: invalid item in %s%%[]"
+msgstr "E369: 無効な項目です: %s%%[]"
+
 msgid "E339: Pattern too long"
 msgstr "E339: パターンが長過ぎます"
 
@@ -4472,6 +4557,7 @@ msgstr "E51: %s( が多過ぎます"
 msgid "E52: Unmatched \\z("
 msgstr "E52: \\z( が釣り合っていません"
 
+#, c-format
 msgid "E53: Unmatched %s%%("
 msgstr "E53: %s%%( が釣り合っていません"
 
@@ -4524,17 +4610,21 @@ msgid "E68: Invalid character after \\z"
 msgstr "E68: \\z の後に不正な文字がありました"
 
 #
+#, c-format
 msgid "E69: Missing ] after %s%%["
 msgstr "E69: %s%%[ の後に ] がありません"
 
+#, c-format
 msgid "E70: Empty %s%%[]"
 msgstr "E70: %s%%[] が空です"
 
 #
+#, c-format
 msgid "E678: Invalid character after %s%%[dxouU]"
 msgstr "E678: %s%%[dxouU] の後に不正な文字がありました"
 
 #
+#, c-format
 msgid "E71: Invalid character after %s%%"
 msgstr "E71: %s%% の後に不正な文字がありました"
 
@@ -4752,16 +4842,16 @@ msgid ""
 "Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line "
 "%d"
 msgstr ""
-"%s の %d 行目の PFX 項目の後の COMPOUNDFORBIDFLAG "
-"の定義は誤った結果を生じることがあります"
+"%s の %d 行目の PFX 項目の後の COMPOUNDFORBIDFLAG の定義は誤った結果を生じる"
+"ことがあります"
 
 #, c-format
 msgid ""
 "Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line "
 "%d"
 msgstr ""
-"%s の %d 行目の PFX 項目の後の COMPOUNDPERMITFLAG "
-"の定義は誤った結果を生じることがあります"
+"%s の %d 行目の PFX 項目の後の COMPOUNDPERMITFLAG の定義は誤った結果を生じる"
+"ことがあります"
 
 #, c-format
 msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s"
@@ -4920,6 +5010,7 @@ msgstr "%s の %d 行目 認識不能\なフラグです: %s"
 msgid "Ignored %d words with non-ASCII characters"
 msgstr "非ASCII文字を含む %d 個の単語を無視しました"
 
+#, c-format
 msgid "Compressed %d of %d nodes; %d (%d%%) remaining"
 msgstr "ノード %d 個(全 %d 個中) を圧縮しました; 残り %d (%d%%)"
 
@@ -4991,6 +5082,7 @@ msgstr "残念ですが, 修正候補はありません"
 msgid "Sorry, only %ld suggestions"
 msgstr "残念ですが, 修正候補は %ld 個しかありません"
 
+#. for when 'cmdheight' > 1
 #. avoid more prompt
 #, c-format
 msgid "Change \"%.*s\" to:"
@@ -5396,6 +5488,9 @@ msgstr "番号   変更     時刻"
 msgid "%ld seconds ago"
 msgstr "%ld 秒経過しています"
 
+msgid "E790: undojoin is not allowed after undo"
+msgstr "E790: undo の直後に undojoin はできません"
+
 msgid "E439: undo list corrupt"
 msgstr "E439: アンドゥリストが壊れています"
 
@@ -5412,6 +5507,13 @@ msgstr ""
 
 msgid ""
 "\n"
+"MS-Windows 64 bit GUI version"
+msgstr ""
+"\n"
+"MS-Windows 64 ビット GUI 版"
+
+msgid ""
+"\n"
 "MS-Windows 32 bit GUI version"
 msgstr ""
 "\n"
@@ -5727,6 +5829,19 @@ msgstr "E446: カーソ\ルの下にファイル名がありません"
 msgid "E447: Can't find file \"%s\" in path"
 msgstr "E447: pathには \"%s\" というファイルがありません"
 
+#, c-format
+msgid "E370: Could not load library %s"
+msgstr "E370: ライブラリ %s をロードできませんでした"
+
+msgid "Sorry, this command is disabled: the Perl library could not be loaded."
+msgstr ""
+"このコマンドは無効です, ごめんなさい: Perlライブラリをロードできませんでした."
+
+msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
+msgstr ""
+"E299: サンドボックスでは Safe モジュールを使用しないPerlスクリプトは禁じられ"
+"ています"
+
 msgid "Edit with &multiple Vims"
 msgstr "複数のVimで編集する (&M)"
 
@@ -5739,6 +5854,7 @@ msgstr "Vimで差分を見る"
 msgid "Edit with &Vim"
 msgstr "Vimで編集する (&V)"
 
+#. Now concatenate
 msgid "Edit with existing Vim - "
 msgstr "既存のVimで編集する - "
 
@@ -5994,8 +6110,8 @@ msgid "E46: Cannot change read-only vari
 msgstr "E46: 読取専用変数 \"%s\" には値を設定できません"
 
 #, c-format
-msgid "E46: Cannot set variable in the sandbox: \"%s\""
-msgstr "E46: サンドボックスでは変数 \"%s\" に値を設定できません"
+msgid "E794: Cannot set variable in the sandbox: \"%s\""
+msgstr "E794: サンドボックスでは変数 \"%s\" に値を設定できません"
 
 msgid "E47: Error while reading errorfile"
 msgstr "E47: エラーファイルの読込中にエラーが発生しました"
@@ -6079,7 +6195,6 @@ msgstr "E363: パターンが 'maxmempattern' 以上のメモリを使用します"
 msgid "E749: empty buffer"
 msgstr "E749: バッファが空です"
 
-#
 msgid "E682: Invalid search pattern or delimiter"
 msgstr "E682: 検索パターンか区切り記号が不正です"
 
--- a/src/po/no.po
+++ b/src/po/no.po
@@ -1249,7 +1249,7 @@ msgstr "Ingen swapfil"
 msgid "Append File"
 msgstr "Legg til fil"
 
-msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
+msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
 msgstr ""
 "E747: Kan ikke skifte katalog, bufferen er forandret (legg til ! for  "
 "overstyre)"
@@ -1492,8 +1492,8 @@ msgstr "er en katalog"
 msgid "is not a file"
 msgstr "er ikke en fil"
 
-msgid "is a device (disabled with 'opendevice' option"
-msgstr "er en enhet (frakoblet med 'opendevice'-valg"
+msgid "is a device (disabled with 'opendevice' option)"
+msgstr "er en enhet (frakoblet med 'opendevice'-valg)"
 
 msgid "[New File]"
 msgstr "[Ny fil]"
@@ -4742,7 +4742,7 @@ msgid "E759: Format error in spell file"
 msgstr "E759: Formateringsfeil i stavefil"
 
 msgid "E758: Truncated spell file"
-msgstr "E237: Valg av skriver feilet"
+msgstr "E758: Valg av skriver feilet"
 
 #, c-format
 msgid "Trailing text in %s line %d: %s"
@@ -5034,7 +5034,7 @@ msgstr "Ferdig!"
 
 #, c-format
 msgid "E765: 'spellfile' does not have %ld entries"
-msgstr "E764: 'spellfile' har ikke %ld poster"
+msgstr "E765: 'spellfile' har ikke %ld poster"
 
 #, c-format
 msgid "Word removed from %s"
@@ -6168,7 +6168,7 @@ msgid "E749: empty buffer"
 msgstr "E749: Tom buffer"
 
 msgid "E682: Invalid search pattern or delimiter"
-msgstr "E683: Ugyldig skestreng eller skilletegn"
+msgstr "E682: Ugyldig skestreng eller skilletegn"
 
 msgid "E139: File is loaded in another buffer"
 msgstr "E139: Filen er lastet i en annen buffer"
--- a/src/po/zh_CN.cp936.po
+++ b/src/po/zh_CN.cp936.po
@@ -1207,7 +1207,7 @@ msgstr "ボスサササホトシ"
 msgid "Append File"
 msgstr "ラキシモホトシ"
 
-msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
+msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
 msgstr "E747: イサトワクトア萋ソツシ」ャサコウ衂メムミ゙クト (ヌシモ ! ヌソヨニヨエミミ)"
 
 msgid "E186: No previous directory"
--- a/src/popupmnu.c
+++ b/src/popupmnu.c
@@ -56,7 +56,7 @@ pum_display(array, size, selected)
     int		i;
     int		top_clear;
     int		row;
-    int		height;
+    int		context_lines;
     int		col;
     int		above_row = cmdline_row;
     int		redo_count = 0;
@@ -73,8 +73,7 @@ redo:
     validate_cursor_col();
     pum_array = NULL;
 
-    row = curwin->w_cline_row + W_WINROW(curwin);
-    height = curwin->w_cline_height;
+    row = curwin->w_wrow + W_WINROW(curwin);
 
     if (firstwin->w_p_pvw)
 	top_clear = firstwin->w_height;
@@ -99,19 +98,26 @@ redo:
 
     /* Put the pum below "row" if possible.  If there are few lines decide on
      * where there is more room. */
-    if (row >= above_row - pum_height
-			      && row > (above_row - top_clear - height) / 2)
+    if (row  + 2 >= above_row - pum_height
+					 && row > (above_row - top_clear) / 2)
     {
 	/* pum above "row" */
-	if (row >= size)
+
+	/* Leave two lines of context if possible */
+	if (curwin->w_wrow - curwin->w_cline_row >= 2)
+	    context_lines = 2;
+	else
+	    context_lines = curwin->w_wrow - curwin->w_cline_row;
+
+	if (row >= size + context_lines)
 	{
-	    pum_row = row - size;
+	    pum_row = row - size - context_lines;
 	    pum_height = size;
 	}
 	else
 	{
 	    pum_row = 0;
-	    pum_height = row;
+	    pum_height = row - context_lines;
 	}
 	if (p_ph > 0 && pum_height > p_ph)
 	{
@@ -122,7 +128,15 @@ redo:
     else
     {
 	/* pum below "row" */
-	pum_row = row + height;
+
+	/* Leave two lines of context if possible */
+	if (curwin->w_cline_row + curwin->w_cline_height - curwin->w_wrow >= 3)
+	    context_lines = 3;
+	else
+	    context_lines = curwin->w_cline_row
+				+ curwin->w_cline_height - curwin->w_wrow;
+
+	pum_row = row + context_lines;
 	if (size > above_row - pum_row)
 	    pum_height = above_row - pum_row;
 	else
--- a/src/proto/os_unix.pro
+++ b/src/proto/os_unix.pro
@@ -19,6 +19,7 @@ int mch_can_restore_icon __ARGS((void));
 void mch_settitle __ARGS((char_u *title, char_u *icon));
 void mch_restore_title __ARGS((int which));
 int vim_is_xterm __ARGS((char_u *name));
+int use_xterm_like_mouse __ARGS((char_u *name));
 int use_xterm_mouse __ARGS((void));
 int vim_is_iris __ARGS((char_u *name));
 int vim_is_vt300 __ARGS((char_u *name));
--- a/src/structs.h
+++ b/src/structs.h
@@ -1005,6 +1005,7 @@ typedef long	varnumber_T;
 #else
 typedef int	varnumber_T;
 #endif
+typedef double	float_T;
 
 typedef struct listvar_S list_T;
 typedef struct dictvar_S dict_T;
@@ -1019,6 +1020,9 @@ typedef struct
     union
     {
 	varnumber_T	v_number;	/* number value */
+#ifdef FEAT_FLOAT
+	float_T		v_float;	/* floating number value */
+#endif
 	char_u		*v_string;	/* string value (can be NULL!) */
 	list_T		*v_list;	/* list value (can be NULL!) */
 	dict_T		*v_dict;	/* dict value (can be NULL!) */
@@ -1032,6 +1036,7 @@ typedef struct
 #define VAR_FUNC    3	/* "v_string" is function name */
 #define VAR_LIST    4	/* "v_list" is used */
 #define VAR_DICT    5	/* "v_dict" is used */
+#define VAR_FLOAT   6	/* "v_float" is used */
 
 /* Values for "v_lock". */
 #define VAR_LOCKED  1	/* locked with lock(), can use unlock() */
--- a/src/vim.rc
+++ b/src/vim.rc
@@ -52,7 +52,7 @@ CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MA
 // Type Library
 //
 #ifdef FEAT_OLE
- 1 TYPELIB "VIM.TLB"
+ 1 TYPELIB "vim.tlb"
 #endif
 
 //
@@ -91,7 +91,7 @@ BEGIN
 	VALUE "FileDescription",	"Vi Improved - A Text Editor\0"
 	VALUE "FileVersion",		VIM_VERSION_MAJOR_STR ", " VIM_VERSION_MINOR_STR ", " VIM_VERSION_BUILD_STR ", " VIM_VERSION_PATCHLEVEL_STR  "\0"
 	VALUE "InternalName",		"VIM\0"
-	VALUE "LegalCopyright",		"Copyright \251 1996-2005\0"
+	VALUE "LegalCopyright",		"Copyright \251 1996-2008\0"
 	VALUE "LegalTrademarks",	"Vim\0"
 	VALUE "OriginalFilename",	"VIM.EXE\0"
 	VALUE "ProductName",		"Vim\0"