updated for version 7.2a
diff --git a/runtime/tutor/README.el.cp737.txt b/runtime/tutor/README.el.cp737.txt
new file mode 100644
index 0000000..426f929
--- /dev/null
+++ b/runtime/tutor/README.el.cp737.txt
@@ -0,0 +1,24 @@
+’¦ Tutor œå¤˜  £å˜ "®œ ¨¦¤˜¡« ¡ã" §œ¨ ãšž©ž š ˜ ¤â¦¬ª ®¨ã©«œª «¦¬
+©¬¤«á¡«ž Vim.
+
+Ž  §œ¨ ©©æ«œ¨¦  ¤â¦  ®¨ã©«œª £§¦¨¦ç¤ ¤˜ «¦ «œ¢œ é©¦¬¤ ©œ ¢ šæ«œ¨¦ ˜§æ
+£å˜ 騘. ’¦ ˜§¦«â¢œ©£˜ œå¤˜  æ«  £§¦¨œå«œ ¤˜ ¡á¤œ«œ £å˜ ˜§¢ã œ¨š˜©å˜
+œ§œ¥œ¨š˜©å˜ª ¡œ £â¤¦¬ ®¨ž© £¦§¦ é¤«˜ª «¦¤ ©¬¤«á¡«ž Vim.
+
+’¦ Tutor œå¤˜  ⤘ ˜¨®œå¦ §¦¬ §œ¨ â®œ  «˜ £˜Ÿã£˜«˜ «žª §¨¦§˜¨˜©¡œ¬ãª.
+‹§¦¨œå«œ ¤˜ œ¡«œ¢â©œ«œ ˜§¢á "vim tutor" ¡˜  £œ«á ¤˜ ˜¡¦¢¦¬Ÿã©œ«œ « ª
+¦›žšåœª ©«˜ £˜Ÿã£˜«˜. ’˜ £˜Ÿã£˜«˜ Ÿ˜ ©˜ª §¦ç¤œ ¤˜ «¨¦§¦§¦ ã©œ«œ
+«¦ ˜¨®œå¦, œ§¦£â¤àª ‹†Œ ’Ž ‰€Œ„’„ ‘’Ž —’Ž’“Ž €Œ’ˆ‚€”Ž ‘€‘.
+
+‘œ ©ç©«ž£˜ Unix £§¦¨œå«œ œ§å©žª ¤˜ ®¨ž© £¦§¦ ã©œ«œ «¦ §¨æš¨˜££˜ "vimtutor".
+‡˜ ›ž£ ¦¬¨šã©œ  §¨é«˜ ⤘ §¨æ®œ ¨¦ ˜¤«åš¨˜­¦ «¦¬ tutor.
+
+ë®à ©¡œ­«œå ¤˜ §¨¦©Ÿâ©à §œ¨ ©©æ«œ¨˜ §¨¦®à¨ž£â¤˜ £˜Ÿã£˜«˜ ˜¢¢á ›œ¤ â®à ™¨œ 
+«¦¤ ˜§˜¨˜å«ž«¦ ®¨æ¤¦. „¤ž£œ¨é©«œ £œ §˜¨˜¡˜¢é §éª Ÿ˜ «¦ Ÿâ¢˜«œ ¡˜  ©«œå¢œ«œ
+£¦¬ ¦§¦ œ©›ã§¦«œ ™œ¢« é©œ ª ¡á¤œ«œ.
+
+Bob Ware, Colorado School of Mines, Golden, Co 80401, USA
+(303) 273-3987
+bware@mines.colorado.edu bware@slate.mines.colorado.edu bware@mines.bitnet
+
+[’¦ ˜¨®œå¦ ˜¬«æ «¨¦§¦§¦ ãŸž¡œ š ˜ «¦¤ Vim ˜§æ «¦¤ Bram Moolenaar]
diff --git a/runtime/tutor/README.el.txt b/runtime/tutor/README.el.txt
new file mode 100644
index 0000000..b2f5e07
--- /dev/null
+++ b/runtime/tutor/README.el.txt
@@ -0,0 +1,24 @@
+Ôï Tutor åßíáé ìßá "÷åéñïíáêôéêÞ" ðåñéÞãçóç ãéá íÝïõò ÷ñÞóôåò ôïõ
+óõíôÜêôç Vim.
+
+Ïé ðåñéóóüôåñïé íÝïé ÷ñÞóôåò ìðïñïýí íá ôï ôåëåéþóïõí óå ëéãüôåñï áðü
+ìßá þñá. Ôï áðïôÝëåóìá åßíáé üôé ìðïñåßôå íá êÜíåôå ìßá áðëÞ åñãáóßá
+åðåîåñãáóßáò êåéìÝíïõ ÷ñçóéìïðïéþíôáò ôïí óõíôÜêôç Vim.
+
+Ôï Tutor åßíáé Ýíá áñ÷åßï ðïõ ðåñéÝ÷åé ôá ìáèÞìáôá ôçò ðñïðáñáóêåõÞò.
+Ìðïñåßôå íá åêôåëÝóåôå áðëÜ "vim tutor" êáé ìåôÜ íá áêïëïõèÞóåôå ôéò
+ïäçãßåò óôá ìáèÞìáôá. Ôá ìáèÞìáôá èá óáò ðïýíå íá ôñïðïðïéÞóåôå
+ôï áñ÷åßï, åðïìÝíùò ÌÇÍ ÔÏ ÊÁÍÅÔÅ ÓÔÏ ÐÑÙÔÏÔÕÐÏ ÁÍÔÉÃÑÁÖÏ ÓÁÓ.
+
+Óå óýóôçìá Unix ìðïñåßôå åðßóçò íá ÷ñçóéìïðïéÞóåôå ôï ðñüãñáììá "vimtutor".
+Èá äçìéïõñãÞóåé ðñþôá Ýíá ðñü÷åéñï áíôßãñáöï ôïõ tutor.
+
+¸÷ù óêåöôåß íá ðñïóèÝóù ðåñéóóüôåñá ðñï÷ùñçìÝíá ìáèÞìáôá áëëÜ äåí Ý÷ù âñåé
+ôïí áðáñáßôçôï ÷ñüíï. Åíçìåñþóôå ìå ðáñáêáëþ ðþò èá ôï èÝëáôå êáé óôåßëåôå
+ìïõ ïðïéåóäÞðïôå âåëôéþóåéò êÜíåôå.
+
+Bob Ware, Colorado School of Mines, Golden, Co 80401, USA
+(303) 273-3987
+bware@mines.colorado.edu bware@slate.mines.colorado.edu bware@mines.bitnet
+
+[Ôï áñ÷åßï áõôü ôñïðïðïéÞèçêå ãéá ôïí Vim áðü ôïí Bram Moolenaar]
diff --git a/runtime/tutor/README.txt.info b/runtime/tutor/README.txt.info
index 238b11f..e7fa114 100755
--- a/runtime/tutor/README.txt.info
+++ b/runtime/tutor/README.txt.info
Binary files differ
diff --git a/runtime/tutor/README_amibin.txt b/runtime/tutor/README_amibin.txt
new file mode 100644
index 0000000..24b9ef2
--- /dev/null
+++ b/runtime/tutor/README_amibin.txt
@@ -0,0 +1,12 @@
+README_amibin.txt for version 7.2a of Vim: Vi IMproved.
+
+See "README.txt" for general information about Vim.
+See "README_ami.txt" for installation instructions for the Amiga.
+These files are in the runtime archive (vim60rt.tgz).
+
+
+The Amiga "bin" archive contains the Vim executable for the Amiga.  It was
+compiled with "big" features.
+
+Postscript printing is not included to avoid requiring floating point
+computations.
diff --git a/runtime/tutor/README_extra.txt b/runtime/tutor/README_extra.txt
new file mode 100644
index 0000000..660b502
--- /dev/null
+++ b/runtime/tutor/README_extra.txt
@@ -0,0 +1,61 @@
+README_extra.txt for version 7.2a of Vim: Vi IMproved.
+
+The extra archive of Vim is to be used in combination with the source archive
+(vim-7.0-src.tar.gz).  The extra archive is useless without it.
+
+For more information, see the "README.txt" file that comes with the runtime
+archive (vim-7.0-rt.tar.gz).  To be able to run Vim you MUST get the runtime
+archive too!
+
+The extra archive plus the source and runtime achives make up the complete
+sources of Vim for all systems.
+
+
+Some of the things that the extra archive contains:
+
+Farsi		Files for the Farsi (persian) language.  If you don't know
+		what Farsi is, this is not for you.
+
+if_sniff	Interface to SNiFF.  If you don't know what SNiFF is, this is
+		not for you.
+
+os_amiga	Files for the Amiga port.
+
+gui_riscos
+os_riscos	Files for the RISC OS port.
+
+gui_beos
+os_beos		Files for the BeOS port.
+
+os_msdos
+os_dos		Files for the MS-DOS port.
+
+gui_mac
+os_mac		Files for the Mac port.
+
+os_mint		Files for the Atari Mint port.
+
+os_os2		Files for the OS/2 port.
+tee		Extra program for OS/2.
+
+os_vms		Files for the VMS port.
+
+os_w32
+os_win32	Files for the Win32 port.
+
+gui_w32		Files for the Win32 GUI.
+gui_w48		Files for the Win32 and Win16 GUI.
+Make_mvc.mak	MS Visual C++ makefile for the Win32 GUI.
+rgb.txt		File with color definitions for the Win32 GUI.
+
+if_ole		OLE automation interface, for MS Windows 95 and NT.
+
+VisVim		Integration of Win32 GUI with MS Visual Developer Studio.
+
+GvimExt		DLL for the "Edit with Vim" context menu entry
+
+nsis		NSIS script to build the self-installing MS-Windows exe
+
+*.man		Preprocessed manual pages.
+
+file_select.vim	Vim script to browse directories (Unix only).
diff --git a/runtime/tutor/README_ole.txt b/runtime/tutor/README_ole.txt
new file mode 100644
index 0000000..8112136
--- /dev/null
+++ b/runtime/tutor/README_ole.txt
@@ -0,0 +1,20 @@
+README_ole.txt for version 7.2a of Vim: Vi IMproved.
+
+This archive contains gvim.exe with OLE interface and VisVim.
+This version of gvim.exe can also load a number of interface dynamically (you
+can optionally install the .dll files for each interface).
+It is only for MS-Windows 95/98/ME/NT/2000/XP.
+
+Also see the README_bindos.txt, README_dos.txt and README.txt files.
+
+Be careful not to overwrite the OLE gvim.exe with the non-OLE gvim.exe when
+unpacking another binary archive!  Check the output of ":version":
+	Win32s - "MS-Windows 16/32 bit GUI version"
+	 Win32 - "MS-Windows 32 bit GUI version"
+Win32 with OLE - "MS-Windows 32 bit GUI version with OLE support"
+
+For further information, type this inside Vim:
+	:help if_ole
+
+Futhermore, this archive contains VISVIM.DLL.  It can be used to integrate
+the OLE gvim with Microsoft Visual Developer Studio.  See VisVim/README.txt.
diff --git a/runtime/tutor/runtime/doc.info b/runtime/tutor/runtime/doc.info
new file mode 100755
index 0000000..a836031
--- /dev/null
+++ b/runtime/tutor/runtime/doc.info
Binary files differ
diff --git a/runtime/tutor/runtime/ftplugin.vim b/runtime/tutor/runtime/ftplugin.vim
new file mode 100644
index 0000000..a434b93
--- /dev/null
+++ b/runtime/tutor/runtime/ftplugin.vim
@@ -0,0 +1,35 @@
+" Vim support file to switch on loading plugins for file types
+"
+" Maintainer:	Bram Moolenaar <Bram@vim.org>
+" Last change:	2006 Apr 30
+
+if exists("did_load_ftplugin")
+  finish
+endif
+let did_load_ftplugin = 1
+
+augroup filetypeplugin
+  au FileType * call s:LoadFTPlugin()
+
+  func! s:LoadFTPlugin()
+    if exists("b:undo_ftplugin")
+      exe b:undo_ftplugin
+      unlet! b:undo_ftplugin b:did_ftplugin
+    endif
+
+    let s = expand("<amatch>")
+    if s != ""
+      if &cpo =~# "S" && exists("b:did_ftplugin")
+	" In compatible mode options are reset to the global values, need to
+	" set the local values also when a plugin was already used.
+	unlet b:did_ftplugin
+      endif
+
+      " When there is a dot it is used to separate filetype names.  Thus for
+      " "aaa.bbb" load "aaa" and then "bbb".
+      for name in split(s, '\.')
+	exe 'runtime! ftplugin/' . name . '.vim ftplugin/' . name . '_*.vim ftplugin/' . name . '/*.vim'
+      endfor
+    endif
+  endfunc
+augroup END
diff --git a/runtime/tutor/runtime/ftplugof.vim b/runtime/tutor/runtime/ftplugof.vim
new file mode 100644
index 0000000..cd99ce0
--- /dev/null
+++ b/runtime/tutor/runtime/ftplugof.vim
@@ -0,0 +1,11 @@
+" Vim support file to switch off loading plugins for file types
+"
+" Maintainer:	Bram Moolenaar <Bram@vim.org>
+" Last Change:	2002 Apr 04
+
+if exists("did_load_ftplugin")
+  unlet did_load_ftplugin
+endif
+
+" Remove all autocommands in the filetypeplugin group
+silent! au! filetypeplugin *
diff --git a/runtime/tutor/runtime/hi16-action-make.png b/runtime/tutor/runtime/hi16-action-make.png
new file mode 100644
index 0000000..824c758
--- /dev/null
+++ b/runtime/tutor/runtime/hi16-action-make.png
Binary files differ
diff --git a/runtime/tutor/runtime/menu.vim b/runtime/tutor/runtime/menu.vim
new file mode 100644
index 0000000..d120ce2
--- /dev/null
+++ b/runtime/tutor/runtime/menu.vim
@@ -0,0 +1,1105 @@
+" Vim support file to define the default menus
+" You can also use this as a start for your own set of menus.
+"
+" Maintainer:	Bram Moolenaar <Bram@vim.org>
+" Last Change:	2008 Jun 16
+
+" Note that ":an" (short for ":anoremenu") is often used to make a menu work
+" in all modes and avoid side effects from mappings defined by the user.
+
+" Make sure the '<' and 'C' flags are not included in 'cpoptions', otherwise
+" <CR> would not be recognized.  See ":help 'cpoptions'".
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Avoid installing the menus twice
+if !exists("did_install_default_menus")
+let did_install_default_menus = 1
+
+
+if exists("v:lang") || &langmenu != ""
+  " Try to find a menu translation file for the current language.
+  if &langmenu != ""
+    if &langmenu =~ "none"
+      let s:lang = ""
+    else
+      let s:lang = &langmenu
+    endif
+  else
+    let s:lang = v:lang
+  endif
+  " A language name must be at least two characters, don't accept "C"
+  if strlen(s:lang) > 1
+    " When the language does not include the charset add 'encoding'
+    if s:lang =~ '^\a\a$\|^\a\a_\a\a$'
+      let s:lang = s:lang . '.' . &enc
+    endif
+
+    " We always use a lowercase name.
+    " Change "iso-8859" to "iso_8859" and "iso8859" to "iso_8859", some
+    " systems appear to use this.
+    " Change spaces to underscores.
+    let s:lang = substitute(tolower(s:lang), '\.iso-', ".iso_", "")
+    let s:lang = substitute(s:lang, '\.iso8859', ".iso_8859", "")
+    let s:lang = substitute(s:lang, " ", "_", "g")
+    " Remove "@euro", otherwise "LC_ALL=de_DE@euro gvim" will show English menus
+    let s:lang = substitute(s:lang, "@euro", "", "")
+    " Change "iso_8859-1" and "iso_8859-15" to "latin1", we always use the
+    " same menu file for them.
+    let s:lang = substitute(s:lang, 'iso_8859-15\=$', "latin1", "")
+    menutrans clear
+    exe "runtime! lang/menu_" . s:lang . ".vim"
+
+    if !exists("did_menu_trans")
+      " There is no exact match, try matching with a wildcard added
+      " (e.g. find menu_de_de.iso_8859-1.vim if s:lang == de_DE).
+      let s:lang = substitute(s:lang, '\.[^.]*', "", "")
+      exe "runtime! lang/menu_" . s:lang . "[^a-z]*vim"
+
+      if !exists("did_menu_trans") && strlen($LANG) > 1 && s:lang !~ '^en_us'
+	" On windows locale names are complicated, try using $LANG, it might
+	" have been set by set_init_1().  But don't do this for "en" or "en_us".
+	" But don't match "slovak" when $LANG is "sl".
+	exe "runtime! lang/menu_" . tolower($LANG) . "[^a-z]*vim"
+      endif
+    endif
+  endif
+endif
+
+
+" Help menu
+an 9999.10 &Help.&Overview<Tab><F1>	:help<CR>
+an 9999.20 &Help.&User\ Manual		:help usr_toc<CR>
+an 9999.30 &Help.&How-to\ links		:help how-to<CR>
+an <silent> 9999.40 &Help.&Find\.\.\.	:call <SID>Helpfind()<CR>
+an 9999.45 &Help.-sep1-			<Nop>
+an 9999.50 &Help.&Credits		:help credits<CR>
+an 9999.60 &Help.Co&pying		:help copying<CR>
+an 9999.70 &Help.&Sponsor/Register	:help sponsor<CR>
+an 9999.70 &Help.O&rphans		:help kcc<CR>
+an 9999.75 &Help.-sep2-			<Nop>
+an 9999.80 &Help.&Version		:version<CR>
+an 9999.90 &Help.&About			:intro<CR>
+
+fun! s:Helpfind()
+  if !exists("g:menutrans_help_dialog")
+    let g:menutrans_help_dialog = "Enter a command or word to find help on:\n\nPrepend i_ for Input mode commands (e.g.: i_CTRL-X)\nPrepend c_ for command-line editing commands (e.g.: c_<Del>)\nPrepend ' for an option name (e.g.: 'shiftwidth')"
+  endif
+  let h = inputdialog(g:menutrans_help_dialog)
+  if h != ""
+    let v:errmsg = ""
+    silent! exe "help " . h
+    if v:errmsg != ""
+      echo v:errmsg
+    endif
+  endif
+endfun
+
+" File menu
+an 10.310 &File.&Open\.\.\.<Tab>:e		:browse confirm e<CR>
+an 10.320 &File.Sp&lit-Open\.\.\.<Tab>:sp	:browse sp<CR>
+an 10.320 &File.Open\ Tab\.\.\.<Tab>:tabnew	:browse tabnew<CR>
+an 10.325 &File.&New<Tab>:enew			:confirm enew<CR>
+an <silent> 10.330 &File.&Close<Tab>:close
+	\ :if winheight(2) < 0 <Bar>
+	\   confirm enew <Bar>
+	\ else <Bar>
+	\   confirm close <Bar>
+	\ endif<CR>
+an 10.335 &File.-SEP1-				<Nop>
+an <silent> 10.340 &File.&Save<Tab>:w		:if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
+an 10.350 &File.Save\ &As\.\.\.<Tab>:sav	:browse confirm saveas<CR>
+
+if has("diff")
+  an 10.400 &File.-SEP2-			<Nop>
+  an 10.410 &File.Split\ &Diff\ with\.\.\.	:browse vert diffsplit<CR>
+  an 10.420 &File.Split\ Patched\ &By\.\.\.	:browse vert diffpatch<CR>
+endif
+
+if has("printer")
+  an 10.500 &File.-SEP3-			<Nop>
+  an 10.510 &File.&Print			:hardcopy<CR>
+  vunmenu   &File.&Print
+  vnoremenu &File.&Print			:hardcopy<CR>
+elseif has("unix")
+  an 10.500 &File.-SEP3-			<Nop>
+  an 10.510 &File.&Print			:w !lpr<CR>
+  vunmenu   &File.&Print
+  vnoremenu &File.&Print			:w !lpr<CR>
+endif
+an 10.600 &File.-SEP4-				<Nop>
+an 10.610 &File.Sa&ve-Exit<Tab>:wqa		:confirm wqa<CR>
+an 10.620 &File.E&xit<Tab>:qa			:confirm qa<CR>
+
+func! <SID>SelectAll()
+  exe "norm gg" . (&slm == "" ? "VG" : "gH\<C-O>G")
+endfunc
+
+func! s:FnameEscape(fname)
+  if exists('*fnameescape')
+    return fnameescape(a:fname)
+  return escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
+endfunc
+
+" Edit menu
+an 20.310 &Edit.&Undo<Tab>u			u
+an 20.320 &Edit.&Redo<Tab>^R			<C-R>
+an 20.330 &Edit.Rep&eat<Tab>\.			.
+
+an 20.335 &Edit.-SEP1-				<Nop>
+vnoremenu 20.340 &Edit.Cu&t<Tab>"+x		"+x
+vnoremenu 20.350 &Edit.&Copy<Tab>"+y		"+y
+cnoremenu 20.350 &Edit.&Copy<Tab>"+y		<C-Y>
+nnoremenu 20.360 &Edit.&Paste<Tab>"+gP		"+gP
+cnoremenu	 &Edit.&Paste<Tab>"+gP		<C-R>+
+exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP	' . paste#paste_cmd['v']
+exe 'inoremenu <script> &Edit.&Paste<Tab>"+gP	' . paste#paste_cmd['i']
+nnoremenu 20.370 &Edit.Put\ &Before<Tab>[p	[p
+inoremenu	 &Edit.Put\ &Before<Tab>[p	<C-O>[p
+nnoremenu 20.380 &Edit.Put\ &After<Tab>]p	]p
+inoremenu	 &Edit.Put\ &After<Tab>]p	<C-O>]p
+if has("win32") || has("win16")
+  vnoremenu 20.390 &Edit.&Delete<Tab>x		x
+endif
+noremenu  <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG	:<C-U>call <SID>SelectAll()<CR>
+inoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG	<C-O>:call <SID>SelectAll()<CR>
+cnoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG	<C-U>call <SID>SelectAll()<CR>
+
+an 20.405	 &Edit.-SEP2-				<Nop>
+if has("win32")  || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
+  an 20.410	 &Edit.&Find\.\.\.			:promptfind<CR>
+  vunmenu	 &Edit.&Find\.\.\.
+  vnoremenu <silent>	 &Edit.&Find\.\.\.		y:promptfind <C-R>=<SID>FixFText()<CR><CR>
+  an 20.420	 &Edit.Find\ and\ Rep&lace\.\.\.	:promptrepl<CR>
+  vunmenu	 &Edit.Find\ and\ Rep&lace\.\.\.
+  vnoremenu <silent>	 &Edit.Find\ and\ Rep&lace\.\.\. y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
+else
+  an 20.410	 &Edit.&Find<Tab>/			/
+  an 20.420	 &Edit.Find\ and\ Rep&lace<Tab>:%s	:%s/
+  vunmenu	 &Edit.Find\ and\ Rep&lace<Tab>:%s
+  vnoremenu	 &Edit.Find\ and\ Rep&lace<Tab>:s	:s/
+endif
+
+an 20.425	 &Edit.-SEP3-				<Nop>
+an 20.430	 &Edit.Settings\ &Window		:options<CR>
+an 20.435	 &Edit.Startup\ &Settings		:call <SID>EditVimrc()<CR>
+
+fun! s:EditVimrc()
+  if $MYVIMRC != ''
+    let fname = "$MYVIMRC"
+  elseif has("win32") || has("dos32") || has("dos16") || has("os2")
+    if $HOME != ''
+      let fname = "$HOME/_vimrc"
+    else
+      let fname = "$VIM/_vimrc"
+    endif
+  elseif has("amiga")
+    let fname = "s:.vimrc"
+  else
+    let fname = "$HOME/.vimrc"
+  endif
+  let fname = s:FnameEscape(fname)
+  if &mod
+    exe "split " . fname
+  else
+    exe "edit " . fname
+  endif
+endfun
+
+fun! s:FixFText()
+  " Fix text in nameless register to be used with :promptfind.
+  return substitute(@", "[\r\n]", '\\n', 'g')
+endfun
+
+" Edit/Global Settings
+an 20.440.100 &Edit.&Global\ Settings.Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	:set hls! hls?<CR>
+an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Ignore-case<Tab>:set\ ic!	:set ic! ic?<CR>
+an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Showmatch<Tab>:set\ sm!	:set sm! sm?<CR>
+
+an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 1\  :set so=1<CR>
+an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 2\  :set so=2<CR>
+an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 3\  :set so=3<CR>
+an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 4\  :set so=4<CR>
+an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 5\  :set so=5<CR>
+an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 7\  :set so=7<CR>
+an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 10\  :set so=10<CR>
+an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 100\  :set so=100<CR>
+
+an 20.440.130.40 &Edit.&Global\ Settings.&Virtual\ Edit.Never :set ve=<CR>
+an 20.440.130.50 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ Selection :set ve=block<CR>
+an 20.440.130.60 &Edit.&Global\ Settings.&Virtual\ Edit.Insert\ mode :set ve=insert<CR>
+an 20.440.130.70 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ and\ Insert :set ve=block,insert<CR>
+an 20.440.130.80 &Edit.&Global\ Settings.&Virtual\ Edit.Always :set ve=all<CR>
+an 20.440.140 &Edit.&Global\ Settings.Toggle\ Insert\ &Mode<Tab>:set\ im!	:set im!<CR>
+an 20.440.145 &Edit.&Global\ Settings.Toggle\ Vi\ C&ompatible<Tab>:set\ cp!	:set cp!<CR>
+an <silent> 20.440.150 &Edit.&Global\ Settings.Search\ &Path\.\.\.  :call <SID>SearchP()<CR>
+an <silent> 20.440.160 &Edit.&Global\ Settings.Ta&g\ Files\.\.\.  :call <SID>TagFiles()<CR>
+"
+" GUI options
+an 20.440.300 &Edit.&Global\ Settings.-SEP1-				<Nop>
+an <silent> 20.440.310 &Edit.&Global\ Settings.Toggle\ &Toolbar		:call <SID>ToggleGuiOption("T")<CR>
+an <silent> 20.440.320 &Edit.&Global\ Settings.Toggle\ &Bottom\ Scrollbar :call <SID>ToggleGuiOption("b")<CR>
+an <silent> 20.440.330 &Edit.&Global\ Settings.Toggle\ &Left\ Scrollbar	:call <SID>ToggleGuiOption("l")<CR>
+an <silent> 20.440.340 &Edit.&Global\ Settings.Toggle\ &Right\ Scrollbar :call <SID>ToggleGuiOption("r")<CR>
+
+fun! s:SearchP()
+  if !exists("g:menutrans_path_dialog")
+    let g:menutrans_path_dialog = "Enter search path for files.\nSeparate directory names with a comma."
+  endif
+  let n = inputdialog(g:menutrans_path_dialog, substitute(&path, '\\ ', ' ', 'g'))
+  if n != ""
+    let &path = substitute(n, ' ', '\\ ', 'g')
+  endif
+endfun
+
+fun! s:TagFiles()
+  if !exists("g:menutrans_tags_dialog")
+    let g:menutrans_tags_dialog = "Enter names of tag files.\nSeparate the names with a comma."
+  endif
+  let n = inputdialog(g:menutrans_tags_dialog, substitute(&tags, '\\ ', ' ', 'g'))
+  if n != ""
+    let &tags = substitute(n, ' ', '\\ ', 'g')
+  endif
+endfun
+
+fun! s:ToggleGuiOption(option)
+    " If a:option is already set in guioptions, then we want to remove it
+    if match(&guioptions, "\\C" . a:option) > -1
+	exec "set go-=" . a:option
+    else
+	exec "set go+=" . a:option
+    endif
+endfun
+
+" Edit/File Settings
+
+" Boolean options
+an 20.440.100 &Edit.F&ile\ Settings.Toggle\ Line\ &Numbering<Tab>:set\ nu!	:set nu! nu?<CR>
+an 20.440.110 &Edit.F&ile\ Settings.Toggle\ &List\ Mode<Tab>:set\ list!	:set list! list?<CR>
+an 20.440.120 &Edit.F&ile\ Settings.Toggle\ Line\ &Wrap<Tab>:set\ wrap!	:set wrap! wrap?<CR>
+an 20.440.130 &Edit.F&ile\ Settings.Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	:set lbr! lbr?<CR>
+an 20.440.160 &Edit.F&ile\ Settings.Toggle\ &expand-tab<Tab>:set\ et!	:set et! et?<CR>
+an 20.440.170 &Edit.F&ile\ Settings.Toggle\ &auto-indent<Tab>:set\ ai!	:set ai! ai?<CR>
+an 20.440.180 &Edit.F&ile\ Settings.Toggle\ &C-indenting<Tab>:set\ cin!	:set cin! cin?<CR>
+
+" other options
+an 20.440.600 &Edit.F&ile\ Settings.-SEP2-		<Nop>
+an 20.440.610.20 &Edit.F&ile\ Settings.&Shiftwidth.2	:set sw=2 sw?<CR>
+an 20.440.610.30 &Edit.F&ile\ Settings.&Shiftwidth.3	:set sw=3 sw?<CR>
+an 20.440.610.40 &Edit.F&ile\ Settings.&Shiftwidth.4	:set sw=4 sw?<CR>
+an 20.440.610.50 &Edit.F&ile\ Settings.&Shiftwidth.5	:set sw=5 sw?<CR>
+an 20.440.610.60 &Edit.F&ile\ Settings.&Shiftwidth.6	:set sw=6 sw?<CR>
+an 20.440.610.80 &Edit.F&ile\ Settings.&Shiftwidth.8	:set sw=8 sw?<CR>
+
+an 20.440.620.20 &Edit.F&ile\ Settings.Soft\ &Tabstop.2	:set sts=2 sts?<CR>
+an 20.440.620.30 &Edit.F&ile\ Settings.Soft\ &Tabstop.3	:set sts=3 sts?<CR>
+an 20.440.620.40 &Edit.F&ile\ Settings.Soft\ &Tabstop.4	:set sts=4 sts?<CR>
+an 20.440.620.50 &Edit.F&ile\ Settings.Soft\ &Tabstop.5	:set sts=5 sts?<CR>
+an 20.440.620.60 &Edit.F&ile\ Settings.Soft\ &Tabstop.6	:set sts=6 sts?<CR>
+an 20.440.620.80 &Edit.F&ile\ Settings.Soft\ &Tabstop.8	:set sts=8 sts?<CR>
+
+an <silent> 20.440.630 &Edit.F&ile\ Settings.Te&xt\ Width\.\.\.  :call <SID>TextWidth()<CR>
+an <silent> 20.440.640 &Edit.F&ile\ Settings.&File\ Format\.\.\.  :call <SID>FileFormat()<CR>
+fun! s:TextWidth()
+  if !exists("g:menutrans_textwidth_dialog")
+    let g:menutrans_textwidth_dialog = "Enter new text width (0 to disable formatting): "
+  endif
+  let n = inputdialog(g:menutrans_textwidth_dialog, &tw)
+  if n != ""
+    " remove leading zeros to avoid it being used as an octal number
+    let &tw = substitute(n, "^0*", "", "")
+  endif
+endfun
+
+fun! s:FileFormat()
+  if !exists("g:menutrans_fileformat_dialog")
+    let g:menutrans_fileformat_dialog = "Select format for writing the file"
+  endif
+  if !exists("g:menutrans_fileformat_choices")
+    let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Cancel"
+  endif
+  if &ff == "dos"
+    let def = 2
+  elseif &ff == "mac"
+    let def = 3
+  else
+    let def = 1
+  endif
+  let n = confirm(g:menutrans_fileformat_dialog, g:menutrans_fileformat_choices, def, "Question")
+  if n == 1
+    set ff=unix
+  elseif n == 2
+    set ff=dos
+  elseif n == 3
+    set ff=mac
+  endif
+endfun
+
+" Setup the Edit.Color Scheme submenu
+let s:n = globpath(&runtimepath, "colors/*.vim")
+let s:idx = 100
+while strlen(s:n) > 0
+  let s:i = stridx(s:n, "\n")
+  if s:i < 0
+    let s:name = s:n
+    let s:n = ""
+  else
+    let s:name = strpart(s:n, 0, s:i)
+    let s:n = strpart(s:n, s:i + 1, 19999)
+  endif
+  " Ignore case for VMS and windows
+  let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
+  exe "an 20.450." . s:idx . ' &Edit.C&olor\ Scheme.' . s:name . " :colors " . s:name . "<CR>"
+  unlet s:name
+  unlet s:i
+  let s:idx = s:idx + 10
+endwhile
+unlet s:n
+unlet s:idx
+
+" Setup the Edit.Keymap submenu
+if has("keymap")
+  let s:n = globpath(&runtimepath, "keymap/*.vim")
+  if s:n != ""
+    let s:idx = 100
+    an 20.460.90 &Edit.&Keymap.None :set keymap=<CR>
+    while strlen(s:n) > 0
+      let s:i = stridx(s:n, "\n")
+      if s:i < 0
+	let s:name = s:n
+	let s:n = ""
+      else
+	let s:name = strpart(s:n, 0, s:i)
+	let s:n = strpart(s:n, s:i + 1, 19999)
+      endif
+      " Ignore case for VMS and windows
+      let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:_]*\)\(_[0-9a-zA-Z-]*\)\=\.vim', '\1', '')
+      exe "an 20.460." . s:idx . ' &Edit.&Keymap.' . s:name . " :set keymap=" . s:name . "<CR>"
+      unlet s:name
+      unlet s:i
+      let s:idx = s:idx + 10
+    endwhile
+    unlet s:idx
+  endif
+  unlet s:n
+endif
+if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
+  an 20.470 &Edit.Select\ Fo&nt\.\.\.	:set guifont=*<CR>
+endif
+
+" Programming menu
+if !exists("g:ctags_command")
+  if has("vms")
+    let g:ctags_command = "mc vim:ctags *.*"
+  else
+    let g:ctags_command = "ctags -R ."
+  endif
+endif
+
+an 40.300 &Tools.&Jump\ to\ this\ tag<Tab>g^]	g<C-]>
+vunmenu &Tools.&Jump\ to\ this\ tag<Tab>g^]
+vnoremenu &Tools.&Jump\ to\ this\ tag<Tab>g^]	g<C-]>
+an 40.310 &Tools.Jump\ &back<Tab>^T		<C-T>
+an 40.320 &Tools.Build\ &Tags\ File		:exe "!" . g:ctags_command<CR>
+
+if has("folding") || has("spell")
+  an 40.330 &Tools.-SEP1-						<Nop>
+endif
+
+" Tools.Spelling Menu
+if has("spell")
+  an 40.335.110 &Tools.&Spelling.&Spell\ Check\ On		:set spell<CR>
+  an 40.335.120 &Tools.&Spelling.Spell\ Check\ &Off		:set nospell<CR>
+  an 40.335.130 &Tools.&Spelling.To\ &Next\ error<Tab>]s	]s
+  an 40.335.130 &Tools.&Spelling.To\ &Previous\ error<Tab>[s	[s
+  an 40.335.140 &Tools.&Spelling.Suggest\ &Corrections<Tab>z=	z=
+  an 40.335.150 &Tools.&Spelling.&Repeat\ correction<Tab>:spellrepall	:spellrepall<CR>
+  an 40.335.200 &Tools.&Spelling.-SEP1-				<Nop>
+  an 40.335.210 &Tools.&Spelling.Set\ language\ to\ "en"	:set spl=en spell<CR>
+  an 40.335.220 &Tools.&Spelling.Set\ language\ to\ "en_au"	:set spl=en_au spell<CR>
+  an 40.335.230 &Tools.&Spelling.Set\ language\ to\ "en_ca"	:set spl=en_ca spell<CR>
+  an 40.335.240 &Tools.&Spelling.Set\ language\ to\ "en_gb"	:set spl=en_gb spell<CR>
+  an 40.335.250 &Tools.&Spelling.Set\ language\ to\ "en_nz"	:set spl=en_nz spell<CR>
+  an 40.335.260 &Tools.&Spelling.Set\ language\ to\ "en_us"	:set spl=en_us spell<CR>
+  an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages	:call <SID>SpellLang()<CR>
+
+  let s:undo_spellang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
+  func! s:SpellLang()
+    for cmd in s:undo_spellang
+      exe "silent! " . cmd
+    endfor
+    let s:undo_spellang = []
+
+    if &enc == "iso-8859-15"
+      let enc = "latin1"
+    else
+      let enc = &enc
+    endif
+
+    let found = 0
+    let s = globpath(&rtp, "spell/*." . enc . ".spl")
+    if s != ""
+      let n = 300
+      for f in split(s, "\n")
+	let nm = substitute(f, '.*spell[/\\]\(..\)\.[^/\\]*\.spl', '\1', "")
+	if nm != "en" && nm !~ '/'
+	  let found += 1
+	  let menuname = '&Tools.&Spelling.Set\ language\ to\ "' . nm . '"'
+	  exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>'
+	  let s:undo_spellang += ['aun ' . menuname]
+	endif
+	let n += 10
+      endfor
+    endif
+    if found == 0
+      echomsg "Could not find other spell files"
+    elseif found == 1
+      echomsg "Found spell file " . nm
+    else
+      echomsg "Found " . found . " more spell files"
+    endif
+    " Need to redo this when 'encoding' is changed.
+    augroup spellmenu
+    au! EncodingChanged * call <SID>SpellLang()
+    augroup END
+  endfun
+
+endif
+
+" Tools.Fold Menu
+if has("folding")
+  " open close folds
+  an 40.340.110 &Tools.&Folding.&Enable/Disable\ folds<Tab>zi		zi
+  an 40.340.120 &Tools.&Folding.&View\ Cursor\ Line<Tab>zv		zv
+  an 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ only<Tab>zMzx	zMzx
+  an 40.340.130 &Tools.&Folding.C&lose\ more\ folds<Tab>zm		zm
+  an 40.340.140 &Tools.&Folding.&Close\ all\ folds<Tab>zM		zM
+  an 40.340.150 &Tools.&Folding.O&pen\ more\ folds<Tab>zr		zr
+  an 40.340.160 &Tools.&Folding.&Open\ all\ folds<Tab>zR		zR
+  " fold method
+  an 40.340.200 &Tools.&Folding.-SEP1-			<Nop>
+  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.M&anual	:set fdm=manual<CR>
+  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.I&ndent	:set fdm=indent<CR>
+  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.E&xpression :set fdm=expr<CR>
+  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.S&yntax	:set fdm=syntax<CR>
+  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.&Diff	:set fdm=diff<CR>
+  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.Ma&rker	:set fdm=marker<CR>
+  " create and delete folds
+  vnoremenu 40.340.220 &Tools.&Folding.Create\ &Fold<Tab>zf	zf
+  an 40.340.230 &Tools.&Folding.&Delete\ Fold<Tab>zd		zd
+  an 40.340.240 &Tools.&Folding.Delete\ &All\ Folds<Tab>zD	zD
+  " moving around in folds
+  an 40.340.300 &Tools.&Folding.-SEP2-				<Nop>
+  an 40.340.310.10 &Tools.&Folding.Fold\ col&umn\ width.\ &0\ 	:set fdc=0<CR>
+  an 40.340.310.20 &Tools.&Folding.Fold\ col&umn\ width.\ &2\ 	:set fdc=2<CR>
+  an 40.340.310.30 &Tools.&Folding.Fold\ col&umn\ width.\ &3\ 	:set fdc=3<CR>
+  an 40.340.310.40 &Tools.&Folding.Fold\ col&umn\ width.\ &4\ 	:set fdc=4<CR>
+  an 40.340.310.50 &Tools.&Folding.Fold\ col&umn\ width.\ &5\ 	:set fdc=5<CR>
+  an 40.340.310.60 &Tools.&Folding.Fold\ col&umn\ width.\ &6\ 	:set fdc=6<CR>
+  an 40.340.310.70 &Tools.&Folding.Fold\ col&umn\ width.\ &7\ 	:set fdc=7<CR>
+  an 40.340.310.80 &Tools.&Folding.Fold\ col&umn\ width.\ &8\ 	:set fdc=8<CR>
+endif  " has folding
+
+if has("diff")
+  an 40.350.100 &Tools.&Diff.&Update		:diffupdate<CR>
+  an 40.350.110 &Tools.&Diff.&Get\ Block	:diffget<CR>
+  vunmenu &Tools.&Diff.&Get\ Block
+  vnoremenu &Tools.&Diff.&Get\ Block		:diffget<CR>
+  an 40.350.120 &Tools.&Diff.&Put\ Block	:diffput<CR>
+  vunmenu &Tools.&Diff.&Put\ Block
+  vnoremenu &Tools.&Diff.&Put\ Block		:diffput<CR>
+endif
+
+an 40.358 &Tools.-SEP2-					<Nop>
+an 40.360 &Tools.&Make<Tab>:make			:make<CR>
+an 40.370 &Tools.&List\ Errors<Tab>:cl			:cl<CR>
+an 40.380 &Tools.L&ist\ Messages<Tab>:cl!		:cl!<CR>
+an 40.390 &Tools.&Next\ Error<Tab>:cn			:cn<CR>
+an 40.400 &Tools.&Previous\ Error<Tab>:cp		:cp<CR>
+an 40.410 &Tools.&Older\ List<Tab>:cold			:colder<CR>
+an 40.420 &Tools.N&ewer\ List<Tab>:cnew			:cnewer<CR>
+an 40.430.50 &Tools.Error\ &Window.&Update<Tab>:cwin	:cwin<CR>
+an 40.430.60 &Tools.Error\ &Window.&Open<Tab>:copen	:copen<CR>
+an 40.430.70 &Tools.Error\ &Window.&Close<Tab>:cclose	:cclose<CR>
+
+an 40.520 &Tools.-SEP3-					<Nop>
+an <silent> 40.530 &Tools.&Convert\ to\ HEX<Tab>:%!xxd
+	\ :call <SID>XxdConv()<CR>
+an <silent> 40.540 &Tools.Conve&rt\ back<Tab>:%!xxd\ -r
+	\ :call <SID>XxdBack()<CR>
+
+" Use a function to do the conversion, so that it also works with 'insertmode'
+" set.
+func! s:XxdConv()
+  let mod = &mod
+  if has("vms")
+    %!mc vim:xxd
+  else
+    call s:XxdFind()
+    exe '%!"' . g:xxdprogram . '"'
+  endif
+  if getline(1) =~ "^0000000:"		" only if it worked
+    set ft=xxd
+  endif
+  let &mod = mod
+endfun
+
+func! s:XxdBack()
+  let mod = &mod
+  if has("vms")
+    %!mc vim:xxd -r
+  else
+    call s:XxdFind()
+    exe '%!"' . g:xxdprogram . '" -r'
+  endif
+  set ft=
+  doautocmd filetypedetect BufReadPost
+  let &mod = mod
+endfun
+
+func! s:XxdFind()
+  if !exists("g:xxdprogram")
+    " On the PC xxd may not be in the path but in the install directory
+    if (has("win32") || has("dos32")) && !executable("xxd")
+      let g:xxdprogram = $VIMRUNTIME . (&shellslash ? '/' : '\') . "xxd.exe"
+    else
+      let g:xxdprogram = "xxd"
+    endif
+  endif
+endfun
+
+" Setup the Tools.Compiler submenu
+let s:n = globpath(&runtimepath, "compiler/*.vim")
+let s:idx = 100
+while strlen(s:n) > 0
+  let s:i = stridx(s:n, "\n")
+  if s:i < 0
+    let s:name = s:n
+    let s:n = ""
+  else
+    let s:name = strpart(s:n, 0, s:i)
+    let s:n = strpart(s:n, s:i + 1, 19999)
+  endif
+  " Ignore case for VMS and windows
+  let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
+  exe "an 30.440." . s:idx . ' &Tools.Se&T\ Compiler.' . s:name . " :compiler " . s:name . "<CR>"
+  unlet s:name
+  unlet s:i
+  let s:idx = s:idx + 10
+endwhile
+unlet s:n
+unlet s:idx
+
+if !exists("no_buffers_menu")
+
+" Buffer list menu -- Setup functions & actions
+
+" wait with building the menu until after loading 'session' files. Makes
+" startup faster.
+let s:bmenu_wait = 1
+
+if !exists("bmenu_priority")
+  let bmenu_priority = 60
+endif
+
+func! s:BMAdd()
+  if s:bmenu_wait == 0
+    " when adding too many buffers, redraw in short format
+    if s:bmenu_count == &menuitems && s:bmenu_short == 0
+      call s:BMShow()
+    else
+      call <SID>BMFilename(expand("<afile>"), expand("<abuf>"))
+      let s:bmenu_count = s:bmenu_count + 1
+    endif
+  endif
+endfunc
+
+func! s:BMRemove()
+  if s:bmenu_wait == 0
+    let name = expand("<afile>")
+    if isdirectory(name)
+      return
+    endif
+    let munge = <SID>BMMunge(name, expand("<abuf>"))
+
+    if s:bmenu_short == 0
+      exe 'silent! aun &Buffers.' . munge
+    else
+      exe 'silent! aun &Buffers.' . <SID>BMHash2(munge) . munge
+    endif
+    let s:bmenu_count = s:bmenu_count - 1
+  endif
+endfunc
+
+" Create the buffer menu (delete an existing one first).
+func! s:BMShow(...)
+  let s:bmenu_wait = 1
+  let s:bmenu_short = 1
+  let s:bmenu_count = 0
+  "
+  " get new priority, if exists
+  if a:0 == 1
+    let g:bmenu_priority = a:1
+  endif
+
+  " remove old menu, if exists; keep one entry to avoid a torn off menu to
+  " disappear.
+  silent! unmenu &Buffers
+  exe 'noremenu ' . g:bmenu_priority . ".1 &Buffers.Dummy l"
+  silent! unmenu! &Buffers
+
+  " create new menu; set 'cpo' to include the <CR>
+  let cpo_save = &cpo
+  set cpo&vim
+  exe 'an <silent> ' . g:bmenu_priority . ".2 &Buffers.&Refresh\\ menu :call <SID>BMShow()<CR>"
+  exe 'an ' . g:bmenu_priority . ".4 &Buffers.&Delete :confirm bd<CR>"
+  exe 'an ' . g:bmenu_priority . ".6 &Buffers.&Alternate :confirm b #<CR>"
+  exe 'an ' . g:bmenu_priority . ".7 &Buffers.&Next :confirm bnext<CR>"
+  exe 'an ' . g:bmenu_priority . ".8 &Buffers.&Previous :confirm bprev<CR>"
+  exe 'an ' . g:bmenu_priority . ".9 &Buffers.-SEP- :"
+  let &cpo = cpo_save
+  unmenu &Buffers.Dummy
+
+  " figure out how many buffers there are
+  let buf = 1
+  while buf <= bufnr('$')
+    if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
+      let s:bmenu_count = s:bmenu_count + 1
+    endif
+    let buf = buf + 1
+  endwhile
+  if s:bmenu_count <= &menuitems
+    let s:bmenu_short = 0
+  endif
+
+  " iterate through buffer list, adding each buffer to the menu:
+  let buf = 1
+  while buf <= bufnr('$')
+    if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
+      call <SID>BMFilename(bufname(buf), buf)
+    endif
+    let buf = buf + 1
+  endwhile
+  let s:bmenu_wait = 0
+  aug buffer_list
+  au!
+  au BufCreate,BufFilePost * call <SID>BMAdd()
+  au BufDelete,BufFilePre * call <SID>BMRemove()
+  aug END
+endfunc
+
+func! s:BMHash(name)
+  " Make name all upper case, so that chars are between 32 and 96
+  let nm = substitute(a:name, ".*", '\U\0', "")
+  if has("ebcdic")
+    " HACK: Replace all non alphabetics with 'Z'
+    "       Just to make it work for now.
+    let nm = substitute(nm, "[^A-Z]", 'Z', "g")
+    let sp = char2nr('A') - 1
+  else
+    let sp = char2nr(' ')
+  endif
+  " convert first six chars into a number for sorting:
+  return (char2nr(nm[0]) - sp) * 0x800000 + (char2nr(nm[1]) - sp) * 0x20000 + (char2nr(nm[2]) - sp) * 0x1000 + (char2nr(nm[3]) - sp) * 0x80 + (char2nr(nm[4]) - sp) * 0x20 + (char2nr(nm[5]) - sp)
+endfunc
+
+func! s:BMHash2(name)
+  let nm = substitute(a:name, ".", '\L\0', "")
+  " Not exactly right for EBCDIC...
+  if nm[0] < 'a' || nm[0] > 'z'
+    return '&others.'
+  elseif nm[0] <= 'd'
+    return '&abcd.'
+  elseif nm[0] <= 'h'
+    return '&efgh.'
+  elseif nm[0] <= 'l'
+    return '&ijkl.'
+  elseif nm[0] <= 'p'
+    return '&mnop.'
+  elseif nm[0] <= 't'
+    return '&qrst.'
+  else
+    return '&u-z.'
+  endif
+endfunc
+
+" insert a buffer name into the buffer menu:
+func! s:BMFilename(name, num)
+  if isdirectory(a:name)
+    return
+  endif
+  let munge = <SID>BMMunge(a:name, a:num)
+  let hash = <SID>BMHash(munge)
+  if s:bmenu_short == 0
+    let name = 'an ' . g:bmenu_priority . '.' . hash . ' &Buffers.' . munge
+  else
+    let name = 'an ' . g:bmenu_priority . '.' . hash . '.' . hash . ' &Buffers.' . <SID>BMHash2(munge) . munge
+  endif
+  " set 'cpo' to include the <CR>
+  let cpo_save = &cpo
+  set cpo&vim
+  exe name . ' :confirm b' . a:num . '<CR>'
+  let &cpo = cpo_save
+endfunc
+
+" Truncate a long path to fit it in a menu item.
+if !exists("g:bmenu_max_pathlen")
+  let g:bmenu_max_pathlen = 35
+endif
+func! s:BMTruncName(fname)
+  let name = a:fname
+  if g:bmenu_max_pathlen < 5
+    let name = ""
+  else
+    let len = strlen(name)
+    if len > g:bmenu_max_pathlen
+      let amountl = (g:bmenu_max_pathlen / 2) - 2
+      let amountr = g:bmenu_max_pathlen - amountl - 3
+      let pattern = '^\(.\{,' . amountl . '}\).\{-}\(.\{,' . amountr . '}\)$'
+      let left = substitute(name, pattern, '\1', '')
+      let right = substitute(name, pattern, '\2', '')
+      if strlen(left) + strlen(right) < len
+	let name = left . '...' . right
+      endif
+    endif
+  endif
+  return name
+endfunc
+
+func! s:BMMunge(fname, bnum)
+  let name = a:fname
+  if name == ''
+    if !exists("g:menutrans_no_file")
+      let g:menutrans_no_file = "[No file]"
+    endif
+    let name = g:menutrans_no_file
+  else
+    let name = fnamemodify(name, ':p:~')
+  endif
+  " detach file name and separate it out:
+  let name2 = fnamemodify(name, ':t')
+  if a:bnum >= 0
+    let name2 = name2 . ' (' . a:bnum . ')'
+  endif
+  let name = name2 . "\t" . <SID>BMTruncName(fnamemodify(name,':h'))
+  let name = escape(name, "\\. \t|")
+  let name = substitute(name, "&", "&&", "g")
+  let name = substitute(name, "\n", "^@", "g")
+  return name
+endfunc
+
+" When just starting Vim, load the buffer menu later
+if has("vim_starting")
+  augroup LoadBufferMenu
+    au! VimEnter * if !exists("no_buffers_menu") | call <SID>BMShow() | endif
+    au  VimEnter * au! LoadBufferMenu
+  augroup END
+else
+  call <SID>BMShow()
+endif
+
+endif " !exists("no_buffers_menu")
+
+" Window menu
+an 70.300 &Window.&New<Tab>^Wn			<C-W>n
+an 70.310 &Window.S&plit<Tab>^Ws		<C-W>s
+an 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^	<C-W><C-^>
+an 70.330 &Window.Split\ &Vertically<Tab>^Wv	<C-W>v
+if has("vertsplit")
+  an <silent> 70.332 &Window.Split\ File\ E&xplorer	:call MenuExplOpen()<CR>
+  if !exists("*MenuExplOpen")
+    fun MenuExplOpen()
+      if @% == ""
+	20vsp .
+      else
+	exe "20vsp " . s:FnameEscape(expand("%:p:h"))
+      endif
+    endfun
+  endif
+endif
+an 70.335 &Window.-SEP1-				<Nop>
+an 70.340 &Window.&Close<Tab>^Wc			:confirm close<CR>
+an 70.345 &Window.Close\ &Other(s)<Tab>^Wo		:confirm only<CR>
+an 70.350 &Window.-SEP2-				<Nop>
+an 70.355 &Window.Move\ &To.&Top<Tab>^WK		<C-W>K
+an 70.355 &Window.Move\ &To.&Bottom<Tab>^WJ		<C-W>J
+an 70.355 &Window.Move\ &To.&Left\ side<Tab>^WH		<C-W>H
+an 70.355 &Window.Move\ &To.&Right\ side<Tab>^WL	<C-W>L
+an 70.360 &Window.Rotate\ &Up<Tab>^WR			<C-W>R
+an 70.362 &Window.Rotate\ &Down<Tab>^Wr			<C-W>r
+an 70.365 &Window.-SEP3-				<Nop>
+an 70.370 &Window.&Equal\ Size<Tab>^W=			<C-W>=
+an 70.380 &Window.&Max\ Height<Tab>^W_			<C-W>_
+an 70.390 &Window.M&in\ Height<Tab>^W1_			<C-W>1_
+an 70.400 &Window.Max\ &Width<Tab>^W\|			<C-W>\|
+an 70.410 &Window.Min\ Widt&h<Tab>^W1\|			<C-W>1\|
+
+" The popup menu
+an 1.10 PopUp.&Undo			u
+an 1.15 PopUp.-SEP1-			<Nop>
+vnoremenu 1.20 PopUp.Cu&t		"+x
+vnoremenu 1.30 PopUp.&Copy		"+y
+cnoremenu 1.30 PopUp.&Copy		<C-Y>
+nnoremenu 1.40 PopUp.&Paste		"+gP
+cnoremenu 1.40 PopUp.&Paste		<C-R>+
+exe 'vnoremenu <script> 1.40 PopUp.&Paste	' . paste#paste_cmd['v']
+exe 'inoremenu <script> 1.40 PopUp.&Paste	' . paste#paste_cmd['i']
+vnoremenu 1.50 PopUp.&Delete		x
+an 1.55 PopUp.-SEP2-			<Nop>
+vnoremenu 1.60 PopUp.Select\ Blockwise	<C-V>
+
+nnoremenu 1.70 PopUp.Select\ &Word	vaw
+onoremenu 1.70 PopUp.Select\ &Word	aw
+vnoremenu 1.70 PopUp.Select\ &Word	<C-C>vaw
+inoremenu 1.70 PopUp.Select\ &Word	<C-O>vaw
+cnoremenu 1.70 PopUp.Select\ &Word	<C-C>vaw
+
+nnoremenu 1.73 PopUp.Select\ &Sentence	vas
+onoremenu 1.73 PopUp.Select\ &Sentence	as
+vnoremenu 1.73 PopUp.Select\ &Sentence	<C-C>vas
+inoremenu 1.73 PopUp.Select\ &Sentence	<C-O>vas
+cnoremenu 1.73 PopUp.Select\ &Sentence	<C-C>vas
+
+nnoremenu 1.77 PopUp.Select\ Pa&ragraph	vap
+onoremenu 1.77 PopUp.Select\ Pa&ragraph	ap
+vnoremenu 1.77 PopUp.Select\ Pa&ragraph	<C-C>vap
+inoremenu 1.77 PopUp.Select\ Pa&ragraph	<C-O>vap
+cnoremenu 1.77 PopUp.Select\ Pa&ragraph	<C-C>vap
+
+nnoremenu 1.80 PopUp.Select\ &Line	V
+onoremenu 1.80 PopUp.Select\ &Line	<C-C>V
+vnoremenu 1.80 PopUp.Select\ &Line	<C-C>V
+inoremenu 1.80 PopUp.Select\ &Line	<C-O>V
+cnoremenu 1.80 PopUp.Select\ &Line	<C-C>V
+
+nnoremenu 1.90 PopUp.Select\ &Block	<C-V>
+onoremenu 1.90 PopUp.Select\ &Block	<C-C><C-V>
+vnoremenu 1.90 PopUp.Select\ &Block	<C-C><C-V>
+inoremenu 1.90 PopUp.Select\ &Block	<C-O><C-V>
+cnoremenu 1.90 PopUp.Select\ &Block	<C-C><C-V>
+
+noremenu  <script> <silent> 1.100 PopUp.Select\ &All	:<C-U>call <SID>SelectAll()<CR>
+inoremenu <script> <silent> 1.100 PopUp.Select\ &All	<C-O>:call <SID>SelectAll()<CR>
+cnoremenu <script> <silent> 1.100 PopUp.Select\ &All	<C-U>call <SID>SelectAll()<CR>
+
+if has("spell")
+  " Spell suggestions in the popup menu.  Note that this will slow down the
+  " appearance of the menu!
+  func! <SID>SpellPopup()
+    if exists("s:changeitem") && s:changeitem != ''
+      call <SID>SpellDel()
+    endif
+
+    " Return quickly if spell checking is not enabled.
+    if !&spell || &spelllang == ''
+      return
+    endif
+
+    let curcol = col('.')
+    let [w, a] = spellbadword()
+    if col('.') > curcol		" don't use word after the cursor
+      let w = ''
+      call cursor(0, curcol)	" put the cursor back where it was
+    endif
+    if w != ''
+      if a == 'caps'
+	let s:suglist = [substitute(w, '.*', '\u&', '')]
+      else
+	let s:suglist = spellsuggest(w, 10)
+      endif
+      if len(s:suglist) <= 0
+	call cursor(0, curcol)	" put the cursor back where it was
+      else
+	let s:changeitem = 'change\ "' . escape(w, ' .'). '"\ to'
+	let s:fromword = w
+	let pri = 1
+	for sug in s:suglist
+	  exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .')
+		\ . ' :call <SID>SpellReplace(' . pri . ')<CR>'
+	  let pri += 1
+	endfor
+
+	let s:additem = 'add\ "' . escape(w, ' .') . '"\ to\ word\ list'
+	exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>'
+
+	let s:ignoreitem = 'ignore\ "' . escape(w, ' .') . '"'
+	exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
+
+	anoremenu 1.8 PopUp.-SpellSep- :
+      endif
+    endif
+  endfunc
+
+  func! <SID>SpellReplace(n)
+    let l = getline('.')
+    call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1]
+	  \ . strpart(l, col('.') + len(s:fromword) - 1))
+  endfunc
+
+  func! <SID>SpellDel()
+    exe "aunmenu PopUp." . s:changeitem
+    exe "aunmenu PopUp." . s:additem
+    exe "aunmenu PopUp." . s:ignoreitem
+    aunmenu PopUp.-SpellSep-
+    let s:changeitem = ''
+  endfun
+
+  augroup SpellPopupMenu
+    au! MenuPopup * call <SID>SpellPopup()
+  augroup END
+endif
+
+" The GUI toolbar (for MS-Windows and GTK)
+if has("toolbar")
+  an 1.10 ToolBar.Open			:browse confirm e<CR>
+  an <silent> 1.20 ToolBar.Save		:if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
+  an 1.30 ToolBar.SaveAll		:browse confirm wa<CR>
+
+  if has("printer")
+    an 1.40   ToolBar.Print		:hardcopy<CR>
+    vunmenu   ToolBar.Print
+    vnoremenu ToolBar.Print		:hardcopy<CR>
+  elseif has("unix")
+    an 1.40   ToolBar.Print		:w !lpr<CR>
+    vunmenu   ToolBar.Print
+    vnoremenu ToolBar.Print		:w !lpr<CR>
+  endif
+
+  an 1.45 ToolBar.-sep1-		<Nop>
+  an 1.50 ToolBar.Undo			u
+  an 1.60 ToolBar.Redo			<C-R>
+
+  an 1.65 ToolBar.-sep2-		<Nop>
+  vnoremenu 1.70 ToolBar.Cut		"+x
+  vnoremenu 1.80 ToolBar.Copy		"+y
+  cnoremenu 1.80 ToolBar.Copy		<C-Y>
+  nnoremenu 1.90 ToolBar.Paste		"+gP
+  cnoremenu	 ToolBar.Paste		<C-R>+
+  exe 'vnoremenu <script>	 ToolBar.Paste	' . paste#paste_cmd['v']
+  exe 'inoremenu <script>	 ToolBar.Paste	' . paste#paste_cmd['i']
+
+  if !has("gui_athena")
+    an 1.95   ToolBar.-sep3-		<Nop>
+    an 1.100  ToolBar.Replace		:promptrepl<CR>
+    vunmenu   ToolBar.Replace
+    vnoremenu ToolBar.Replace		y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
+    an 1.110  ToolBar.FindNext		n
+    an 1.120  ToolBar.FindPrev		N
+  endif
+
+  an 1.215 ToolBar.-sep5-		<Nop>
+  an <silent> 1.220 ToolBar.LoadSesn	:call <SID>LoadVimSesn()<CR>
+  an <silent> 1.230 ToolBar.SaveSesn	:call <SID>SaveVimSesn()<CR>
+  an 1.240 ToolBar.RunScript		:browse so<CR>
+
+  an 1.245 ToolBar.-sep6-		<Nop>
+  an 1.250 ToolBar.Make			:make<CR>
+  an 1.270 ToolBar.RunCtags		:exe "!" . g:ctags_command<CR>
+  an 1.280 ToolBar.TagJump		g<C-]>
+
+  an 1.295 ToolBar.-sep7-		<Nop>
+  an 1.300 ToolBar.Help			:help<CR>
+  an <silent> 1.310 ToolBar.FindHelp	:call <SID>Helpfind()<CR>
+
+" Only set the tooltips here if not done in a language menu file
+if exists("*Do_toolbar_tmenu")
+  call Do_toolbar_tmenu()
+else
+  let did_toolbar_tmenu = 1
+  tmenu ToolBar.Open		Open file
+  tmenu ToolBar.Save		Save current file
+  tmenu ToolBar.SaveAll		Save all files
+  tmenu ToolBar.Print		Print
+  tmenu ToolBar.Undo		Undo
+  tmenu ToolBar.Redo		Redo
+  tmenu ToolBar.Cut		Cut to clipboard
+  tmenu ToolBar.Copy		Copy to clipboard
+  tmenu ToolBar.Paste		Paste from Clipboard
+  if !has("gui_athena")
+    tmenu ToolBar.Find		Find...
+    tmenu ToolBar.FindNext	Find Next
+    tmenu ToolBar.FindPrev	Find Previous
+    tmenu ToolBar.Replace		Find / Replace...
+  endif
+  tmenu ToolBar.LoadSesn	Choose a session to load
+  tmenu ToolBar.SaveSesn	Save current session
+  tmenu ToolBar.RunScript	Choose a Vim Script to run
+  tmenu ToolBar.Make		Make current project (:make)
+  tmenu ToolBar.RunCtags	Build tags in current directory tree (!ctags -R .)
+  tmenu ToolBar.TagJump		Jump to tag under cursor
+  tmenu ToolBar.Help		Vim Help
+  tmenu ToolBar.FindHelp	Search Vim Help
+endif
+
+" Select a session to load; default to current session name if present
+fun! s:LoadVimSesn()
+  if strlen(v:this_session) > 0
+    let name = s:FnameEscape(v:this_session)
+  else
+    let name = "Session.vim"
+  endif
+  execute "browse so " . name
+endfun
+
+" Select a session to save; default to current session name if present
+fun! s:SaveVimSesn()
+  if strlen(v:this_session) == 0
+    let v:this_session = "Session.vim"
+  endif
+  execute "browse mksession! " . s:FnameEscape(v:this_session)
+endfun
+
+endif
+
+endif " !exists("did_install_default_menus")
+
+" Define these items always, so that syntax can be switched on when it wasn't.
+" But skip them when the Syntax menu was disabled by the user.
+if !exists("did_install_syntax_menu")
+  an 50.212 &Syntax.&Manual		:syn manual<CR>
+  an 50.214 &Syntax.A&utomatic		:syn on<CR>
+  an <silent> 50.216 &Syntax.on/off\ for\ &This\ file :call <SID>SynOnOff()<CR>
+  if !exists("*s:SynOnOff")
+    fun s:SynOnOff()
+      if has("syntax_items")
+	syn clear
+      else
+	if !exists("g:syntax_on")
+	  syn manual
+	endif
+	set syn=ON
+      endif
+    endfun
+  endif
+endif
+
+
+" Install the Syntax menu only when filetype.vim has been loaded or when
+" manual syntax highlighting is enabled.
+" Avoid installing the Syntax menu twice.
+if (exists("did_load_filetypes") || exists("syntax_on"))
+	\ && !exists("did_install_syntax_menu")
+  let did_install_syntax_menu = 1
+
+" Skip setting up the individual syntax selection menus unless
+" do_syntax_sel_menu is defined (it takes quite a bit of time).
+if exists("do_syntax_sel_menu")
+  runtime! synmenu.vim
+else
+  an 50.10 &Syntax.&Show\ filetypes\ in\ menu	:let do_syntax_sel_menu = 1<Bar>runtime! synmenu.vim<Bar>aunmenu &Syntax.&Show\ filetypes\ in\ menu<CR>
+  an 50.195 &Syntax.-SEP1-		<Nop>
+endif
+
+an 50.210 &Syntax.&Off			:syn off<CR>
+an 50.700 &Syntax.-SEP3-		<Nop>
+an 50.710 &Syntax.Co&lor\ test		:sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR>
+an 50.720 &Syntax.&Highlight\ test	:runtime syntax/hitest.vim<CR>
+an 50.730 &Syntax.&Convert\ to\ HTML	:runtime syntax/2html.vim<CR>
+
+endif " !exists("did_install_syntax_menu")
+
+" Restore the previous value of 'cpoptions'.
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: set sw=2 :
diff --git a/runtime/tutor/runtime/rgb.txt b/runtime/tutor/runtime/rgb.txt
new file mode 100644
index 0000000..5bc2baa
--- /dev/null
+++ b/runtime/tutor/runtime/rgb.txt
@@ -0,0 +1,753 @@
+! $XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp $
+255 250 250		snow
+248 248 255		ghost white
+248 248 255		GhostWhite
+245 245 245		white smoke
+245 245 245		WhiteSmoke
+220 220 220		gainsboro
+255 250 240		floral white
+255 250 240		FloralWhite
+253 245 230		old lace
+253 245 230		OldLace
+250 240 230		linen
+250 235 215		antique white
+250 235 215		AntiqueWhite
+255 239 213		papaya whip
+255 239 213		PapayaWhip
+255 235 205		blanched almond
+255 235 205		BlanchedAlmond
+255 228 196		bisque
+255 218 185		peach puff
+255 218 185		PeachPuff
+255 222 173		navajo white
+255 222 173		NavajoWhite
+255 228 181		moccasin
+255 248 220		cornsilk
+255 255 240		ivory
+255 250 205		lemon chiffon
+255 250 205		LemonChiffon
+255 245 238		seashell
+240 255 240		honeydew
+245 255 250		mint cream
+245 255 250		MintCream
+240 255 255		azure
+240 248 255		alice blue
+240 248 255		AliceBlue
+230 230 250		lavender
+255 240 245		lavender blush
+255 240 245		LavenderBlush
+255 228 225		misty rose
+255 228 225		MistyRose
+255 255 255		white
+  0   0   0		black
+ 47  79  79		dark slate gray
+ 47  79  79		DarkSlateGray
+ 47  79  79		dark slate grey
+ 47  79  79		DarkSlateGrey
+105 105 105		dim gray
+105 105 105		DimGray
+105 105 105		dim grey
+105 105 105		DimGrey
+112 128 144		slate gray
+112 128 144		SlateGray
+112 128 144		slate grey
+112 128 144		SlateGrey
+119 136 153		light slate gray
+119 136 153		LightSlateGray
+119 136 153		light slate grey
+119 136 153		LightSlateGrey
+190 190 190		gray
+190 190 190		grey
+211 211 211		light grey
+211 211 211		LightGrey
+211 211 211		light gray
+211 211 211		LightGray
+ 25  25 112		midnight blue
+ 25  25 112		MidnightBlue
+  0   0 128		navy
+  0   0 128		navy blue
+  0   0 128		NavyBlue
+100 149 237		cornflower blue
+100 149 237		CornflowerBlue
+ 72  61 139		dark slate blue
+ 72  61 139		DarkSlateBlue
+106  90 205		slate blue
+106  90 205		SlateBlue
+123 104 238		medium slate blue
+123 104 238		MediumSlateBlue
+132 112 255		light slate blue
+132 112 255		LightSlateBlue
+  0   0 205		medium blue
+  0   0 205		MediumBlue
+ 65 105 225		royal blue
+ 65 105 225		RoyalBlue
+  0   0 255		blue
+ 30 144 255		dodger blue
+ 30 144 255		DodgerBlue
+  0 191 255		deep sky blue
+  0 191 255		DeepSkyBlue
+135 206 235		sky blue
+135 206 235		SkyBlue
+135 206 250		light sky blue
+135 206 250		LightSkyBlue
+ 70 130 180		steel blue
+ 70 130 180		SteelBlue
+176 196 222		light steel blue
+176 196 222		LightSteelBlue
+173 216 230		light blue
+173 216 230		LightBlue
+176 224 230		powder blue
+176 224 230		PowderBlue
+175 238 238		pale turquoise
+175 238 238		PaleTurquoise
+  0 206 209		dark turquoise
+  0 206 209		DarkTurquoise
+ 72 209 204		medium turquoise
+ 72 209 204		MediumTurquoise
+ 64 224 208		turquoise
+  0 255 255		cyan
+224 255 255		light cyan
+224 255 255		LightCyan
+ 95 158 160		cadet blue
+ 95 158 160		CadetBlue
+102 205 170		medium aquamarine
+102 205 170		MediumAquamarine
+127 255 212		aquamarine
+  0 100   0		dark green
+  0 100   0		DarkGreen
+ 85 107  47		dark olive green
+ 85 107  47		DarkOliveGreen
+143 188 143		dark sea green
+143 188 143		DarkSeaGreen
+ 46 139  87		sea green
+ 46 139  87		SeaGreen
+ 60 179 113		medium sea green
+ 60 179 113		MediumSeaGreen
+ 32 178 170		light sea green
+ 32 178 170		LightSeaGreen
+152 251 152		pale green
+152 251 152		PaleGreen
+  0 255 127		spring green
+  0 255 127		SpringGreen
+124 252   0		lawn green
+124 252   0		LawnGreen
+  0 255   0		green
+127 255   0		chartreuse
+  0 250 154		medium spring green
+  0 250 154		MediumSpringGreen
+173 255  47		green yellow
+173 255  47		GreenYellow
+ 50 205  50		lime green
+ 50 205  50		LimeGreen
+154 205  50		yellow green
+154 205  50		YellowGreen
+ 34 139  34		forest green
+ 34 139  34		ForestGreen
+107 142  35		olive drab
+107 142  35		OliveDrab
+189 183 107		dark khaki
+189 183 107		DarkKhaki
+240 230 140		khaki
+238 232 170		pale goldenrod
+238 232 170		PaleGoldenrod
+250 250 210		light goldenrod yellow
+250 250 210		LightGoldenrodYellow
+255 255 224		light yellow
+255 255 224		LightYellow
+255 255   0		yellow
+255 215   0		gold
+238 221 130		light goldenrod
+238 221 130		LightGoldenrod
+218 165  32		goldenrod
+184 134  11		dark goldenrod
+184 134  11		DarkGoldenrod
+188 143 143		rosy brown
+188 143 143		RosyBrown
+205  92  92		indian red
+205  92  92		IndianRed
+139  69  19		saddle brown
+139  69  19		SaddleBrown
+160  82  45		sienna
+205 133  63		peru
+222 184 135		burlywood
+245 245 220		beige
+245 222 179		wheat
+244 164  96		sandy brown
+244 164  96		SandyBrown
+210 180 140		tan
+210 105  30		chocolate
+178  34  34		firebrick
+165  42  42		brown
+233 150 122		dark salmon
+233 150 122		DarkSalmon
+250 128 114		salmon
+255 160 122		light salmon
+255 160 122		LightSalmon
+255 165   0		orange
+255 140   0		dark orange
+255 140   0		DarkOrange
+255 127  80		coral
+240 128 128		light coral
+240 128 128		LightCoral
+255  99  71		tomato
+255  69   0		orange red
+255  69   0		OrangeRed
+255   0   0		red
+255 105 180		hot pink
+255 105 180		HotPink
+255  20 147		deep pink
+255  20 147		DeepPink
+255 192 203		pink
+255 182 193		light pink
+255 182 193		LightPink
+219 112 147		pale violet red
+219 112 147		PaleVioletRed
+176  48  96		maroon
+199  21 133		medium violet red
+199  21 133		MediumVioletRed
+208  32 144		violet red
+208  32 144		VioletRed
+255   0 255		magenta
+238 130 238		violet
+221 160 221		plum
+218 112 214		orchid
+186  85 211		medium orchid
+186  85 211		MediumOrchid
+153  50 204		dark orchid
+153  50 204		DarkOrchid
+148   0 211		dark violet
+148   0 211		DarkViolet
+138  43 226		blue violet
+138  43 226		BlueViolet
+160  32 240		purple
+147 112 219		medium purple
+147 112 219		MediumPurple
+216 191 216		thistle
+255 250 250		snow1
+238 233 233		snow2
+205 201 201		snow3
+139 137 137		snow4
+255 245 238		seashell1
+238 229 222		seashell2
+205 197 191		seashell3
+139 134 130		seashell4
+255 239 219		AntiqueWhite1
+238 223 204		AntiqueWhite2
+205 192 176		AntiqueWhite3
+139 131 120		AntiqueWhite4
+255 228 196		bisque1
+238 213 183		bisque2
+205 183 158		bisque3
+139 125 107		bisque4
+255 218 185		PeachPuff1
+238 203 173		PeachPuff2
+205 175 149		PeachPuff3
+139 119 101		PeachPuff4
+255 222 173		NavajoWhite1
+238 207 161		NavajoWhite2
+205 179 139		NavajoWhite3
+139 121	 94		NavajoWhite4
+255 250 205		LemonChiffon1
+238 233 191		LemonChiffon2
+205 201 165		LemonChiffon3
+139 137 112		LemonChiffon4
+255 248 220		cornsilk1
+238 232 205		cornsilk2
+205 200 177		cornsilk3
+139 136 120		cornsilk4
+255 255 240		ivory1
+238 238 224		ivory2
+205 205 193		ivory3
+139 139 131		ivory4
+240 255 240		honeydew1
+224 238 224		honeydew2
+193 205 193		honeydew3
+131 139 131		honeydew4
+255 240 245		LavenderBlush1
+238 224 229		LavenderBlush2
+205 193 197		LavenderBlush3
+139 131 134		LavenderBlush4
+255 228 225		MistyRose1
+238 213 210		MistyRose2
+205 183 181		MistyRose3
+139 125 123		MistyRose4
+240 255 255		azure1
+224 238 238		azure2
+193 205 205		azure3
+131 139 139		azure4
+131 111 255		SlateBlue1
+122 103 238		SlateBlue2
+105  89 205		SlateBlue3
+ 71  60 139		SlateBlue4
+ 72 118 255		RoyalBlue1
+ 67 110 238		RoyalBlue2
+ 58  95 205		RoyalBlue3
+ 39  64 139		RoyalBlue4
+  0   0 255		blue1
+  0   0 238		blue2
+  0   0 205		blue3
+  0   0 139		blue4
+ 30 144 255		DodgerBlue1
+ 28 134 238		DodgerBlue2
+ 24 116 205		DodgerBlue3
+ 16  78 139		DodgerBlue4
+ 99 184 255		SteelBlue1
+ 92 172 238		SteelBlue2
+ 79 148 205		SteelBlue3
+ 54 100 139		SteelBlue4
+  0 191 255		DeepSkyBlue1
+  0 178 238		DeepSkyBlue2
+  0 154 205		DeepSkyBlue3
+  0 104 139		DeepSkyBlue4
+135 206 255		SkyBlue1
+126 192 238		SkyBlue2
+108 166 205		SkyBlue3
+ 74 112 139		SkyBlue4
+176 226 255		LightSkyBlue1
+164 211 238		LightSkyBlue2
+141 182 205		LightSkyBlue3
+ 96 123 139		LightSkyBlue4
+198 226 255		SlateGray1
+185 211 238		SlateGray2
+159 182 205		SlateGray3
+108 123 139		SlateGray4
+202 225 255		LightSteelBlue1
+188 210 238		LightSteelBlue2
+162 181 205		LightSteelBlue3
+110 123 139		LightSteelBlue4
+191 239 255		LightBlue1
+178 223 238		LightBlue2
+154 192 205		LightBlue3
+104 131 139		LightBlue4
+224 255 255		LightCyan1
+209 238 238		LightCyan2
+180 205 205		LightCyan3
+122 139 139		LightCyan4
+187 255 255		PaleTurquoise1
+174 238 238		PaleTurquoise2
+150 205 205		PaleTurquoise3
+102 139 139		PaleTurquoise4
+152 245 255		CadetBlue1
+142 229 238		CadetBlue2
+122 197 205		CadetBlue3
+ 83 134 139		CadetBlue4
+  0 245 255		turquoise1
+  0 229 238		turquoise2
+  0 197 205		turquoise3
+  0 134 139		turquoise4
+  0 255 255		cyan1
+  0 238 238		cyan2
+  0 205 205		cyan3
+  0 139 139		cyan4
+151 255 255		DarkSlateGray1
+141 238 238		DarkSlateGray2
+121 205 205		DarkSlateGray3
+ 82 139 139		DarkSlateGray4
+127 255 212		aquamarine1
+118 238 198		aquamarine2
+102 205 170		aquamarine3
+ 69 139 116		aquamarine4
+193 255 193		DarkSeaGreen1
+180 238 180		DarkSeaGreen2
+155 205 155		DarkSeaGreen3
+105 139 105		DarkSeaGreen4
+ 84 255 159		SeaGreen1
+ 78 238 148		SeaGreen2
+ 67 205 128		SeaGreen3
+ 46 139	 87		SeaGreen4
+154 255 154		PaleGreen1
+144 238 144		PaleGreen2
+124 205 124		PaleGreen3
+ 84 139	 84		PaleGreen4
+  0 255 127		SpringGreen1
+  0 238 118		SpringGreen2
+  0 205 102		SpringGreen3
+  0 139	 69		SpringGreen4
+  0 255	  0		green1
+  0 238	  0		green2
+  0 205	  0		green3
+  0 139	  0		green4
+127 255	  0		chartreuse1
+118 238	  0		chartreuse2
+102 205	  0		chartreuse3
+ 69 139	  0		chartreuse4
+192 255	 62		OliveDrab1
+179 238	 58		OliveDrab2
+154 205	 50		OliveDrab3
+105 139	 34		OliveDrab4
+202 255 112		DarkOliveGreen1
+188 238 104		DarkOliveGreen2
+162 205	 90		DarkOliveGreen3
+110 139	 61		DarkOliveGreen4
+255 246 143		khaki1
+238 230 133		khaki2
+205 198 115		khaki3
+139 134	 78		khaki4
+255 236 139		LightGoldenrod1
+238 220 130		LightGoldenrod2
+205 190 112		LightGoldenrod3
+139 129	 76		LightGoldenrod4
+255 255 224		LightYellow1
+238 238 209		LightYellow2
+205 205 180		LightYellow3
+139 139 122		LightYellow4
+255 255	  0		yellow1
+238 238	  0		yellow2
+205 205	  0		yellow3
+139 139	  0		yellow4
+255 215	  0		gold1
+238 201	  0		gold2
+205 173	  0		gold3
+139 117	  0		gold4
+255 193	 37		goldenrod1
+238 180	 34		goldenrod2
+205 155	 29		goldenrod3
+139 105	 20		goldenrod4
+255 185	 15		DarkGoldenrod1
+238 173	 14		DarkGoldenrod2
+205 149	 12		DarkGoldenrod3
+139 101	  8		DarkGoldenrod4
+255 193 193		RosyBrown1
+238 180 180		RosyBrown2
+205 155 155		RosyBrown3
+139 105 105		RosyBrown4
+255 106 106		IndianRed1
+238  99	 99		IndianRed2
+205  85	 85		IndianRed3
+139  58	 58		IndianRed4
+255 130	 71		sienna1
+238 121	 66		sienna2
+205 104	 57		sienna3
+139  71	 38		sienna4
+255 211 155		burlywood1
+238 197 145		burlywood2
+205 170 125		burlywood3
+139 115	 85		burlywood4
+255 231 186		wheat1
+238 216 174		wheat2
+205 186 150		wheat3
+139 126 102		wheat4
+255 165	 79		tan1
+238 154	 73		tan2
+205 133	 63		tan3
+139  90	 43		tan4
+255 127	 36		chocolate1
+238 118	 33		chocolate2
+205 102	 29		chocolate3
+139  69	 19		chocolate4
+255  48	 48		firebrick1
+238  44	 44		firebrick2
+205  38	 38		firebrick3
+139  26	 26		firebrick4
+255  64	 64		brown1
+238  59	 59		brown2
+205  51	 51		brown3
+139  35	 35		brown4
+255 140 105		salmon1
+238 130	 98		salmon2
+205 112	 84		salmon3
+139  76	 57		salmon4
+255 160 122		LightSalmon1
+238 149 114		LightSalmon2
+205 129	 98		LightSalmon3
+139  87	 66		LightSalmon4
+255 165	  0		orange1
+238 154	  0		orange2
+205 133	  0		orange3
+139  90	  0		orange4
+255 127	  0		DarkOrange1
+238 118	  0		DarkOrange2
+205 102	  0		DarkOrange3
+139  69	  0		DarkOrange4
+255 114	 86		coral1
+238 106	 80		coral2
+205  91	 69		coral3
+139  62	 47		coral4
+255  99	 71		tomato1
+238  92	 66		tomato2
+205  79	 57		tomato3
+139  54	 38		tomato4
+255  69	  0		OrangeRed1
+238  64	  0		OrangeRed2
+205  55	  0		OrangeRed3
+139  37	  0		OrangeRed4
+255   0	  0		red1
+238   0	  0		red2
+205   0	  0		red3
+139   0	  0		red4
+255  20 147		DeepPink1
+238  18 137		DeepPink2
+205  16 118		DeepPink3
+139  10	 80		DeepPink4
+255 110 180		HotPink1
+238 106 167		HotPink2
+205  96 144		HotPink3
+139  58  98		HotPink4
+255 181 197		pink1
+238 169 184		pink2
+205 145 158		pink3
+139  99 108		pink4
+255 174 185		LightPink1
+238 162 173		LightPink2
+205 140 149		LightPink3
+139  95 101		LightPink4
+255 130 171		PaleVioletRed1
+238 121 159		PaleVioletRed2
+205 104 137		PaleVioletRed3
+139  71	 93		PaleVioletRed4
+255  52 179		maroon1
+238  48 167		maroon2
+205  41 144		maroon3
+139  28	 98		maroon4
+255  62 150		VioletRed1
+238  58 140		VioletRed2
+205  50 120		VioletRed3
+139  34	 82		VioletRed4
+255   0 255		magenta1
+238   0 238		magenta2
+205   0 205		magenta3
+139   0 139		magenta4
+255 131 250		orchid1
+238 122 233		orchid2
+205 105 201		orchid3
+139  71 137		orchid4
+255 187 255		plum1
+238 174 238		plum2
+205 150 205		plum3
+139 102 139		plum4
+224 102 255		MediumOrchid1
+209  95 238		MediumOrchid2
+180  82 205		MediumOrchid3
+122  55 139		MediumOrchid4
+191  62 255		DarkOrchid1
+178  58 238		DarkOrchid2
+154  50 205		DarkOrchid3
+104  34 139		DarkOrchid4
+155  48 255		purple1
+145  44 238		purple2
+125  38 205		purple3
+ 85  26 139		purple4
+171 130 255		MediumPurple1
+159 121 238		MediumPurple2
+137 104 205		MediumPurple3
+ 93  71 139		MediumPurple4
+255 225 255		thistle1
+238 210 238		thistle2
+205 181 205		thistle3
+139 123 139		thistle4
+  0   0   0		gray0
+  0   0   0		grey0
+  3   3   3		gray1
+  3   3   3		grey1
+  5   5   5		gray2
+  5   5   5		grey2
+  8   8   8		gray3
+  8   8   8		grey3
+ 10  10  10		gray4
+ 10  10  10		grey4
+ 13  13  13		gray5
+ 13  13  13		grey5
+ 15  15  15		gray6
+ 15  15  15		grey6
+ 18  18  18		gray7
+ 18  18  18		grey7
+ 20  20  20		gray8
+ 20  20  20		grey8
+ 23  23  23		gray9
+ 23  23  23		grey9
+ 26  26  26		gray10
+ 26  26  26		grey10
+ 28  28  28		gray11
+ 28  28  28		grey11
+ 31  31  31		gray12
+ 31  31  31		grey12
+ 33  33  33		gray13
+ 33  33  33		grey13
+ 36  36  36		gray14
+ 36  36  36		grey14
+ 38  38  38		gray15
+ 38  38  38		grey15
+ 41  41  41		gray16
+ 41  41  41		grey16
+ 43  43  43		gray17
+ 43  43  43		grey17
+ 46  46  46		gray18
+ 46  46  46		grey18
+ 48  48  48		gray19
+ 48  48  48		grey19
+ 51  51  51		gray20
+ 51  51  51		grey20
+ 54  54  54		gray21
+ 54  54  54		grey21
+ 56  56  56		gray22
+ 56  56  56		grey22
+ 59  59  59		gray23
+ 59  59  59		grey23
+ 61  61  61		gray24
+ 61  61  61		grey24
+ 64  64  64		gray25
+ 64  64  64		grey25
+ 66  66  66		gray26
+ 66  66  66		grey26
+ 69  69  69		gray27
+ 69  69  69		grey27
+ 71  71  71		gray28
+ 71  71  71		grey28
+ 74  74  74		gray29
+ 74  74  74		grey29
+ 77  77  77		gray30
+ 77  77  77		grey30
+ 79  79  79		gray31
+ 79  79  79		grey31
+ 82  82  82		gray32
+ 82  82  82		grey32
+ 84  84  84		gray33
+ 84  84  84		grey33
+ 87  87  87		gray34
+ 87  87  87		grey34
+ 89  89  89		gray35
+ 89  89  89		grey35
+ 92  92  92		gray36
+ 92  92  92		grey36
+ 94  94  94		gray37
+ 94  94  94		grey37
+ 97  97  97		gray38
+ 97  97  97		grey38
+ 99  99  99		gray39
+ 99  99  99		grey39
+102 102 102		gray40
+102 102 102		grey40
+105 105 105		gray41
+105 105 105		grey41
+107 107 107		gray42
+107 107 107		grey42
+110 110 110		gray43
+110 110 110		grey43
+112 112 112		gray44
+112 112 112		grey44
+115 115 115		gray45
+115 115 115		grey45
+117 117 117		gray46
+117 117 117		grey46
+120 120 120		gray47
+120 120 120		grey47
+122 122 122		gray48
+122 122 122		grey48
+125 125 125		gray49
+125 125 125		grey49
+127 127 127		gray50
+127 127 127		grey50
+130 130 130		gray51
+130 130 130		grey51
+133 133 133		gray52
+133 133 133		grey52
+135 135 135		gray53
+135 135 135		grey53
+138 138 138		gray54
+138 138 138		grey54
+140 140 140		gray55
+140 140 140		grey55
+143 143 143		gray56
+143 143 143		grey56
+145 145 145		gray57
+145 145 145		grey57
+148 148 148		gray58
+148 148 148		grey58
+150 150 150		gray59
+150 150 150		grey59
+153 153 153		gray60
+153 153 153		grey60
+156 156 156		gray61
+156 156 156		grey61
+158 158 158		gray62
+158 158 158		grey62
+161 161 161		gray63
+161 161 161		grey63
+163 163 163		gray64
+163 163 163		grey64
+166 166 166		gray65
+166 166 166		grey65
+168 168 168		gray66
+168 168 168		grey66
+171 171 171		gray67
+171 171 171		grey67
+173 173 173		gray68
+173 173 173		grey68
+176 176 176		gray69
+176 176 176		grey69
+179 179 179		gray70
+179 179 179		grey70
+181 181 181		gray71
+181 181 181		grey71
+184 184 184		gray72
+184 184 184		grey72
+186 186 186		gray73
+186 186 186		grey73
+189 189 189		gray74
+189 189 189		grey74
+191 191 191		gray75
+191 191 191		grey75
+194 194 194		gray76
+194 194 194		grey76
+196 196 196		gray77
+196 196 196		grey77
+199 199 199		gray78
+199 199 199		grey78
+201 201 201		gray79
+201 201 201		grey79
+204 204 204		gray80
+204 204 204		grey80
+207 207 207		gray81
+207 207 207		grey81
+209 209 209		gray82
+209 209 209		grey82
+212 212 212		gray83
+212 212 212		grey83
+214 214 214		gray84
+214 214 214		grey84
+217 217 217		gray85
+217 217 217		grey85
+219 219 219		gray86
+219 219 219		grey86
+222 222 222		gray87
+222 222 222		grey87
+224 224 224		gray88
+224 224 224		grey88
+227 227 227		gray89
+227 227 227		grey89
+229 229 229		gray90
+229 229 229		grey90
+232 232 232		gray91
+232 232 232		grey91
+235 235 235		gray92
+235 235 235		grey92
+237 237 237		gray93
+237 237 237		grey93
+240 240 240		gray94
+240 240 240		grey94
+242 242 242		gray95
+242 242 242		grey95
+245 245 245		gray96
+245 245 245		grey96
+247 247 247		gray97
+247 247 247		grey97
+250 250 250		gray98
+250 250 250		grey98
+252 252 252		gray99
+252 252 252		grey99
+255 255 255		gray100
+255 255 255		grey100
+169 169 169		dark grey
+169 169 169		DarkGrey
+169 169 169		dark gray
+169 169 169		DarkGray
+0     0 139		dark blue
+0     0 139		DarkBlue
+0   139 139		dark cyan
+0   139 139		DarkCyan
+139   0 139		dark magenta
+139   0 139		DarkMagenta
+139   0   0		dark red
+139   0   0		DarkRed
+144 238 144		light green
+144 238 144		LightGreen
diff --git a/runtime/tutor/runtime/tutor.info b/runtime/tutor/runtime/tutor.info
new file mode 100755
index 0000000..f8ceda3
--- /dev/null
+++ b/runtime/tutor/runtime/tutor.info
Binary files differ
diff --git a/runtime/tutor/runtime/vim16x16.gif b/runtime/tutor/runtime/vim16x16.gif
new file mode 100644
index 0000000..505a855
--- /dev/null
+++ b/runtime/tutor/runtime/vim16x16.gif
Binary files differ
diff --git a/runtime/tutor/runtime/vim32x32.gif b/runtime/tutor/runtime/vim32x32.gif
new file mode 100644
index 0000000..523821b
--- /dev/null
+++ b/runtime/tutor/runtime/vim32x32.gif
Binary files differ
diff --git a/runtime/tutor/tutor.no.utf-8 b/runtime/tutor/tutor.no.utf-8
new file mode 100644
index 0000000..a7826b7
--- /dev/null
+++ b/runtime/tutor/tutor.no.utf-8
@@ -0,0 +1,973 @@
+===============================================================================
+= V e l k o m m e n   t i l   i n n f ø r i n g e n   i   V i m  --  Ver. 1.7 =
+===============================================================================
+
+     Vim er en meget kraftig editor med mange kommandoer, alt for mange til å
+     kunne gå gjennom alle i en innføring som denne. Den er beregnet på å
+     sette deg inn i bruken av nok kommandoer så du vil være i stand til lett
+     å kunne bruke Vim som en editor til alle formål.
+
+     Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30
+     minutter, avhengig av hvor mye tid du bruker til eksperimentering.
+
+     MERK:
+     Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne
+     filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er
+     dette allerede en kopi).
+
+     Det er viktig å huske at denne innføringen er beregnet på læring gjennom
+     bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig.
+     Hvis du bare leser teksten, vil du glemme kommandoene!
+
+     Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for
+     å flytte markøren helt til leksjon 1.1 fyller skjermen.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 1.1:  FLYTTING AV MARKØREN
+
+
+       ** For å flytte markøren, trykk tastene h, j, k, l som vist. **
+	     ^
+	     k		Tips: h-tasten er til venstre og flytter til venstre.
+       < h	 l >	      l-tasten er til høyre og flytter til høyre.
+	     j		      j-tasten ser ut som en pil som peker nedover.
+	     v
+  1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene.
+
+  2. Hold inne nedovertasten (j) til den repeterer.
+     Nå vet du hvordan du beveger deg til neste leksjon.
+
+  3. Gå til leksjon 1.2 ved hjelp av nedovertasten.
+
+Merk: Hvis du blir usikker på noe du har skrevet, trykk <ESC> for å gå til
+      normalmodus. Skriv deretter kommandoen du ønsket på nytt.
+
+Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til
+      å bevege markøren mye raskere når du er blitt vant til det. Helt sant!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  Leksjon 1.2: AVSLUTTE VIM
+
+
+  !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!!
+
+  1. Trykk <ESC>-tasten (for å forsikre deg om at du er i normalmodus).
+
+  2. Skriv:	:q! <ENTER>.
+     Dette avslutter editoren og FORKASTER alle forandringer som du har gjort.
+
+  3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne
+     innføringen. Den er:   vimtutor <ENTER>
+
+  4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å
+     avslutte og starte editoren på nytt.
+
+MERK:  :q! <ENTER>  forkaster alle forandringer som du gjorde. I løpet av noen
+       få leksjoner vil du lære hvordan du lagrer forandringene til en fil.
+
+  5. Flytt markøren ned til leksjon 1.3.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Leksjon 1.3: REDIGERING AV TEKST -- SLETTING
+
+
+	     ** Trykk  x  for å slette tegnet under markøren. **
+
+  1. Flytt markøren til den første linjen merket med  --->.
+
+  2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som
+     skal slettes.
+
+  3. Trykk tasten  x  for å slette det uønskede tegnet.
+
+  4. Repeter punkt 2 til 4 til setningen er lik den som er under.
+
+---> Hessstennnn brrråsnudddde ii gaaata.
+---> Hesten bråsnudde i gata.
+
+  5. Nå som linjen er korrekt, gå til leksjon 1.4.
+
+MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men
+      bruk dem helt til de sitter.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING
+
+
+		    ** Trykk  i  for å sette inn tekst. **
+
+  1. Flytt markøren til den første linjen som er merket med --->.
+
+  2. For å gjøre den første linjen lik den andre, flytt markøren til den står
+     på tegnet ETTER posisjonen der teksten skal settes inn.
+
+  3. Trykk  i  og skriv inn teksten som mangler.
+
+  4. Etterhvert som hver feil er fikset, trykk <ESC> for å returnere til
+     normalmodus. Repeter punkt 2 til 4 til setningen er korrekt.
+
+---> Det er tkst som mnglr .
+---> Det er ganske mye tekst som mangler her.
+
+  5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen
+     nedenfor.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL
+
+
+		    ** Trykk  A  for å legge til tekst. **
+
+  1. Flytt markøren til den første linjen nedenfor merket --->.
+     Det har ikke noe å si hvor markøren er plassert på den linjen.
+
+  2. Trykk  A  og skriv inn det som skal legges til.
+
+  3. Når teksten er lagt til, trykk <ESC> for å returnere til normalmodusen.
+
+  4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og
+     3 for å reparere denne setningen.
+
+---> Det mangler noe tekst p
+     Det mangler noe tekst på denne linjen.
+---> Det mangler også litt tek
+     Det mangler også litt tekst på denne linjen.
+
+  5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Leksjon 1.6: REDIGERE EN FIL
+
+
+	       ** Bruk	:wq  for å lagre en fil og avslutte. **
+
+  !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!!
+
+  1. Avslutt denne innføringen som du gjorde i leksjon 1.2:  :q!
+
+  2. Skriv denne kommandoen på kommandolinja:  vim tutor <ENTER>
+     «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila
+     som du vil redigere. Bruk en fil som kan forandres.
+
+  3. Sett inn og slett tekst som du lærte i de foregående leksjonene.
+
+  4. Lagre filen med forandringene og avslutt Vim med:	:wq <ENTER>
+
+  5. Start innføringen på nytt og flytt ned til oppsummeringen som følger.
+
+  6. Etter å ha lest og forstått stegene ovenfor: Sett i gang.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 1
+
+
+  1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene.
+	 h (venstre)	 j (ned)     k (opp)	 l (høyre)
+
+  2. For å starte Vim fra skall-kommandolinjen, skriv:	vim FILNAVN <ENTER>
+
+  3. For å avslutte Vim, skriv:  <ESC> :q! <ENTER>  for å forkaste endringer.
+		   ELLER skriv:  <ESC> :wq <ENTER>  for å lagre forandringene.
+
+  4. For å slette tegnet under markøren, trykk:  x
+
+  5. For å sette inn eller legge til tekst, trykk:
+	 i    skriv innsatt tekst  <ESC>	sett inn før markøren
+	 A    skriv tillagt tekst  <ESC>	legg til på slutten av linjen
+
+MERK: Når du trykker <ESC> går du til normalmodus eller du avbryter en uønsket
+      og delvis fullført kommando.
+
+  Nå kan du gå videre til leksjon 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Leksjon 2.1: SLETTEKOMMANDOER
+
+
+		    ** Trykk  dw  for å slette et ord. **
+
+  1. Trykk <ESC> for å være sikker på at du er i normalmodus.
+
+  2. Flytt markøren til den første linjen nedenfor merket --->.
+
+  3. Flytt markøren til begynnelsen av ordet som skal slettes.
+
+  4. Trykk  dw	og ordet vil forsvinne.
+
+MERK: Bokstaven  d  vil komme til syne på den nederste linjen på skjermen når
+      du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet
+      tegn enn	d  har du skrevet noe feil; trykk <ESC> og start på nytt.
+
+---> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen.
+---> Det er tre ord som ikke hører hjemme i denne setningen.
+
+  5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå
+     deretter til leksjon 2.2.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leksjon 2.2: FLERE SLETTEKOMMANDOER
+
+
+	     ** Trykk  d$  for å slette til slutten av linjen. **
+
+  1. Trykk <ESC> for å være sikker på at du er i normalmodus.
+
+  2. Flytt markøren til linjen nedenfor merket --->.
+
+  3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum).
+
+  4. Trykk  d$	for å slette alt til slutten av linjen.
+
+---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye.
+
+  5. Gå til leksjon 2.3 for å forstå hva som skjer.
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leksjon 2.3: OM OPERATORER OG BEVEGELSER
+
+
+  Mange kommandoer som forandrer teksten er laget ut i fra en operator og en
+  bevegelse. Formatet for en slettekommando med sletteoperatoren  d  er:
+
+	d   bevegelse
+
+  Der:
+    d	      - er sletteoperatoren.
+    bevegelse - er hva operatoren vil opere på (listet nedenfor).
+
+  En kort liste med bevegelser:
+    w - til starten av det neste ordet, UNNTATT det første tegnet.
+    e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet.
+    $ - til slutten av linjen, INKLUDERT det siste tegnet.
+
+  Ved å skrive	de  vil altså alt fra markøren til slutten av ordet bli
+  slettet.
+
+MERK:  Ved å skrive kun bevegelsen i normalmodusen uten en operator vil
+       markøren flyttes som spesifisert.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE
+
+
+ ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. **
+
+  1. Flytt markøren til starten av linjen markert ---> nedenfor.
+
+  2. Skriv  2w	for å flytte markøren to ord framover.
+
+  3. Skriv  3e	for å flytte markøren framover til slutten av det tredje
+     ordet.
+
+  4. Skriv  0  (null) for å flytte til starten av linjen.
+
+  5. Repeter steg 2 og 3 med forskjellige tall.
+
+---> Dette er en linje med noen ord som du kan bevege deg rundt på.
+
+  6. Gå videre til leksjon 2.5.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER
+
+
+     ** Et tall sammen med en operator repeterer den så mange ganger. **
+
+  I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du
+  inn antall før bevegelsen for å slette mer:
+	 d  nummer  bevegelse
+
+  1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert
+     med --->.
+
+  2. Skriv  2dw  for å slette de to ordene med store bokstaver.
+
+  3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende
+     ordene som har store bokstaver.
+
+---> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar.
+
+MERK: Et antall mellom operatoren  d  og bevegelsen virker på samme måte som å
+      bruke bevegelsen uten en operator.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Leksjon 2.6: OPERERE PÅ LINJER
+
+
+		 ** Trykk  dd  for å slette en hel linje. **
+
+  På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at
+  det vil være lettere å rett og slett trykke to d-er for å slette en linje.
+
+  1. Flytt markøren til den andre linjen i verset nedenfor.
+  2. Trykk  dd	 å slette linjen.
+  3. Flytt deretter til den fjerde linjen.
+  4. Trykk  2dd  for å slette to linjer.
+
+--->  1) Roser er røde,
+--->  2) Gjørme er gøy,
+--->  3) Fioler er blå,
+--->  4) Jeg har en bil,
+--->  5) Klokker viser tiden,
+--->  6) Druer er søte
+--->  7) Og du er likeså.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Leksjon 2.7: ANGRE-KOMMANDOEN
+
+
+  ** Trykk  u  for å angre siste kommando,  U  for å fikse en hel linje. **
+
+  1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den
+     første feilen.
+  2. Trykk  x  for å slette det første uønskede tegnet.
+  3. Trykk så  u  for å angre den siste utførte kommandoen.
+  4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen	x  .
+  5. Trykk nå en stor  U  for å sette linjen tilbake til det den var
+     originalt.
+  6. Trykk  u  noen ganger for å angre	U  og foregående kommandoer.
+  7. Deretter trykker du  CTRL-R  (hold CTRL nede mens du trykker R) noen
+     ganger for å gjenopprette kommandoene (omgjøre angrekommandoene).
+
+---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre.
+
+  8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av
+     leksjon 2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 2
+
+
+  1. For å slette fra markøren fram til det neste ordet, trykk:  dw
+  2. For å slette fra markøren til slutten av en linje, trykk:	d$
+  3. For å slette en hel linje, trykk:	dd
+
+  4. For å repetere en bevegelse, sett et nummer foran:  2w
+  5. Formatet for en forandringskommando er:
+	       operator  [nummer]  bevegelse
+     der:
+       operator  - hva som skal gjøres, f.eks.	d  for å slette
+       [nummer]  - et valgfritt antall for å repetere bevegelsen
+       bevegelse - hva kommandoen skal operere på, eksempelvis	w  (ord),
+		   $  (til slutten av linjen) og så videre.
+
+  6. For å gå til starten av en linje, bruk en null:  0
+
+  7. For å angre tidligere endringer, skriv:		u  (liten u)
+     For å angre alle forandringer på en linje, skriv:	U  (stor U)
+     For å omgjøre angringen, trykk:			CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 3.1: «LIM INN»-KOMMANDOEN
+
+
+    ** Trykk  p  for å lime inn tidligere slettet tekst etter markøren **
+
+  1. Flytt markøren til den første linjen med ---> nedenfor.
+
+  2. Trykk  dd	for å slette linjen og lagre den i et Vim-register.
+
+  3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn.
+
+  4. Trykk  p  for å legge linjen under markøren.
+
+  5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge.
+
+---> d) Kan du også lære?
+---> b) Fioler er blå,
+---> c) Intelligens må læres,
+---> a) Roser er røde,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 3.2: «ERSTATT»-KOMMANDOEN
+
+
+	 ** Trykk  rx  for å erstatte tegnet under markøren med x. **
+
+  1. Flytt markøren til den første linjen nedenfor merket --->.
+
+  2. Flytt markøren så den står oppå den første feilen.
+
+  3. Trykk  r  og deretter tegnet som skal være der.
+
+  4. Repeter punkt 2 og 3 til den første linjen er lik den andre.
+
+---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster!
+---> Da denne linjen ble skrevet, var det noen som trykket feile taster!
+
+  5. Gå videre til leksjon 3.2.
+
+MERK: Husk at du bør lære ved å BRUKE, ikke pugge.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 3.3: «FORANDRE»-OPERATOREN
+
+
+	   ** For å forandre til slutten av et ord, trykk  ce . **
+
+  1. Flytt markøren til den første linjen nedenfor som er merket --->.
+
+  2. Plasser markøren på  u  i «lubjwr».
+
+  3. Trykk  ce	og det korrekte ordet (i dette tilfellet, skriv «injen»).
+
+  4. Trykk <ESC> og gå til det neste tegnet som skal forandres.
+
+  5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre.
+
+---> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen.
+---> Denne linjen har noen ord som må forandres med «forandre»-kommandoen.
+
+Vær oppmerksom på at  ce  sletter ordet og går inn i innsettingsmodus.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c
+
+
+ ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». **
+
+  1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er:
+
+	 c    [nummer]	 bevegelse
+
+  2. Bevegelsene er de samme, som for eksempel	w  (ord) og  $	(slutten av en
+     linje).
+
+  3. Gå til den første linjen nedenfor som er merket --->.
+
+  4. Flytt markøren til den første feilen.
+
+  5. Skriv  c$	og skriv resten av linjen lik den andre og trykk <ESC>.
+
+---> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste.
+---> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen.
+
+MERK: Du kan bruke slettetasten for å rette feil mens du skriver.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 3
+
+
+  1. For å legge tilbake tekst som nettopp er blitt slettet, trykk  p  . Dette
+     limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet
+     vil den bli limt inn på linjen under markøren).
+
+  2. For å erstatte et tegn under markøren, trykk  r  og deretter tegnet som
+     du vil ha der.
+
+  3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen
+     tar deg. Det vil si, skriv  ce  for å forandre fra markøren til slutten
+     av ordet,	c$  for å forandre til slutten av linjen.
+
+  4. Formatet for «forandre» er:
+
+	 c   [nummer]	bevegelse
+
+Nå kan du gå til neste leksjon.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	     Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS
+
+	** Trykk CTRL-G for å vise posisjonen i filen og filstatusen.
+	   Trykk  G  for å gå til en spesifikk linje i filen. **
+
+  Merk: Les hele leksjonen før du utfører noen av punktene!
+
+  1. Hold nede Ctrl-tasten og trykk  g	. Vi kaller dette CTRL-G. En melding
+     vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i
+     filen. Husk linjenummeret for bruk i steg 3.
+
+Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette
+      skjer når «ruler»-valget er satt (forklart i leksjon 6).
+
+  2. Trykk  G  for å gå til bunnen av filen.
+     Skriv  gg	for å gå til begynnelsen av filen.
+
+  3. Skriv inn linjenummeret du var på og deretter  G . Dette vil føre deg
+     tilbake til linjen du var på da du først trykket CTRL-G.
+
+  4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Leksjon 4.2: SØKEKOMMANDOEN
+
+      ** Skriv	/  etterfulgt av en søkestreng som du vil lete etter. **
+
+  1. Trykk  /  når du er i normalmodusen. Legg merke til at skråstreken og
+     markøren kommer til syne på bunnen av skjermen i likhet med
+     «:»-kommandoene.
+
+  2. Skriv «feeeiil» og trykk <ENTER>. Dette er teksten du vil lete etter.
+
+  3. For å finne neste forekomst av søkestrengen, trykk  n .
+     For å lete etter samme søketeksten i motsatt retning, trykk  N .
+
+  4. For å lete etter en tekst bakover i filen, bruk  ?  istedenfor  /	.
+
+  5. For å gå tilbake til der du kom fra, trykk  CTRL-O  (Hold Ctrl nede mens
+     du trykker bokstaven  o ). Repeter for å gå enda lengre tilbake. CTRL-I
+     går framover.
+
+---> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil.
+Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt
+      hvis «wrapscan»-valget er resatt.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leksjon 4.3: FINN SAMSVARENDE PARENTESER
+
+
+	  ** Trykk  %  for å finne en samsvarende ), ] eller } . **
+
+  1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->.
+
+  2. Trykk  %  .
+
+  3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen.
+
+  4. Trykk  %  for å flytte markøren til den andre samsvarende parentesen.
+
+  5. Flytt markøren til en annen (, ), [, ], { eller } og se hva  %  gjør.
+
+---> Dette ( er en testlinje med (, [ ] og { } i den )).
+
+Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert
+      antall parenteser!
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Leksjon 4.4: ERSTATT-KOMMANDOEN
+
+
+	** Skriv  :s/gammel/ny/g  for å erstatte «gammel» med «ny». **
+
+  1. Flytt markøren til linjen nedenfor som er merket med --->.
+
+  2. Skriv  :s/deen/den/ <ENTER>  . Legg merke til at denne kommandoen bare
+     forandrer den første forekomsten av «deen» på linjen.
+
+  3. Skriv  :s/deen/den/g . Når g-flagget legges til, betyr dette global
+     erstatning på linjen og erstatter alle forekomster av «deen» på linjen.
+
+---> deen som kan kaste deen tyngste steinen lengst er deen beste
+
+  4. For å erstatte alle forekomster av en tekststreng mellom to linjer,
+     skriv  :#,#s/gammel/ny/g  der #,# er linjenumrene på de to linjene for
+			       linjeområdet erstatningen skal gjøres.
+     Skriv  :%s/gammel/ny/g    for å erstatte tekst i hele filen.
+     Skriv  :%s/gammel/ny/gc   for å finne alle forekomster i hele filen, og
+			       deretter spørre om teksten skal erstattes eller
+			       ikke.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 4
+
+
+  1. Ctrl-G viser nåværende posisjon i filen og filstatusen.
+	     G	går til slutten av filen.
+     nummer  G	går til det linjenummeret.
+	    gg	går til den første linjen.
+
+  2. Skriv  /  etterfulgt av en søketekst for å lete FRAMOVER etter teksten.
+     Skriv  ?  etterfulgt av en søketekst for å lete BAKOVER etter teksten.
+     Etter et søk kan du trykke  n  for å finne neste forekomst i den samme
+     retningen eller  N  for å lete i motsatt retning.
+     CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner.
+
+  3. Skriv  %  når markøren står på en (, ), [, ], { eller } for å finne den
+     som samsvarer.
+
+  4. Erstatte «gammel» med første «ny» på en linje:  :s/gammel/ny
+     Erstatte alle «gammel» med «ny» på en linje:    :s/gammel/ny/g
+     Erstatte tekst mellom to linjenumre:	     :#,#s/gammel/ny/g
+     Erstatte alle forekomster i en fil:	     :%s/gammel/ny/g
+     For å godkjenne hver erstatning, legg til «c»:  :%s/gammel/ny/gc
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	       Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO
+
+
+    ** Skriv  :!  etterfulgt av en ekstern kommando for å utføre denne. **
+
+  1. Skriv den velkjente kommandoen  :	 for å plassere markøren på bunnen av
+     skjermen. Dette lar deg skrive en kommandolinjekommando.
+
+  2. Nå kan du skrive tegnet  !  . Dette lar deg utføre en hvilken som helst
+     ekstern kommando.
+
+  3. Som et eksempel, skriv  ls  etter utropstegnet og trykk <ENTER>. Du vil
+     nå få en liste over filene i katalogen, akkurat som om du hadde kjørt
+     kommandoen direkte fra kommandolinjen i skallet. Eller bruk  :!dir  hvis
+     «ls» ikke virker.
+
+MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med
+      parametere.
+
+MERK: Alle «:»-kommandoer må avsluttes med <ENTER>. Fra dette punktet er det
+      ikke alltid vi nevner det.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leksjon 5.2: MER OM LAGRING AV FILER
+
+
+      ** For å lagre endringene gjort i en tekst, skriv  :w FILNAVN. **
+
+  1. Skriv  :!dir  eller  :!ls	for å få en liste over filene i katalogen. Du
+     vet allerede at du må trykke <ENTER> etter dette.
+
+  2. Velg et filnavn på en fil som ikke finnes, som for eksempel  TEST .
+
+  3. Skriv  :w TEST  (der TEST er filnavnet du velger).
+
+  4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å
+     sjekke dette, skriv  :!dir  eller	:!ls  igjen for å se innholdet av
+     katalogen.
+
+Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST»,
+      ville filen vært en eksakt kopi av innføringen da du lagret den.
+
+  5. Fjern filen ved å skrive  :!rm TEST  hvis du er på et Unix-lignende
+     operativsystem, eller  :!del TEST	hvis du bruker MS-DOS.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES
+
+
+     ** For å lagre en del av en fil, skriv  v	bevegelse  :w FILNAVN **
+
+  1. Flytt markøren til denne linjen.
+
+  2. Trykk  v  og flytt markøren til det femte elementet nedenfor. Legg merke
+     til at teksten blir markert.
+
+  3. Trykk  :  (kolon). På bunnen av skjermen vil  :'<,'>  komme til syne.
+
+  4. Trykk  w TEST  , der TEST er et filnavn som ikke finnes enda. Kontroller
+     at du ser	:'<,'>w TEST  før du trykker Enter.
+
+  5. Vim vil skrive de valgte linjene til filen TEST. Bruk  :!dir  eller  !ls
+     for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon.
+
+MERK: Ved å trykke  v  startes visuelt valg. Du kan flytte markøren rundt for
+      å gjøre det valgte området større eller mindre. Deretter kan du bruke en
+      operator for å gjøre noe med teksten. For eksempel sletter  d  teksten.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER
+
+
+ ** For å lese inn en annen fil inn i nåværende buffer, skriv  :r FILNAVN  **
+
+  1. Plasser markøren like over denne linjen.
+
+MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter
+      NED for å se denne leksjonen igjen.
+
+  2. Hent TEST-filen ved å bruke kommandoen  :r TEST  der TEST er navnet på
+     filen du brukte. Filen du henter blir plassert nedenfor markørlinjen.
+
+  3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av
+     leksjon 5.3, originalen og denne versjonen.
+
+MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel,	:r !ls
+      leser utdataene av ls-kommandoen og legger dem nedenfor markøren.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 5
+
+
+  1.  :!kommando  utfører en ekstern kommandio.
+
+      Noen nyttige eksempler er:
+	 (MS-DOS)	  (Unix)
+	  :!dir		   :!ls		  - List filene i katalogen.
+	  :!del FILNAVN    :!rm FILNAVN   - Slett filen FILNAVN.
+
+  2.  :w FILNAVN  skriver den nåværende Vim-filen disken med navnet FILNAVN .
+
+  3.  v  bevegelse  :w FILNAVN	lagrer de visuelt valgte linjene til filen
+     FILNAVN.
+
+  4.  :r FILNAVN  henter filen FILNAVN og legger den inn nedenfor markøren.
+
+  5.  :r !dir  leser utdataene fra «dir»-kommandoen og legger dem nedenfor
+     markørposisjonen.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN
+
+
+    ** Skriv  o  for å «åpne opp» for en ny linje etter markøren og gå til
+       innsettingsmodus **
+
+  1. Flytt markøren til linjen nedenfor merket --->.
+
+  2. Skriv  o  (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i
+     innsettingsmodus.
+
+  3. Skriv litt tekst og trykk <ESC> for å gå ut av innsettingsmodusen.
+
+---> Etter at  o  er skrevet blir markøren plassert på den tomme linjen.
+
+  4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor	O
+     istedenfor en liten  o . Prøv dette på linjen nedenfor.
+
+---> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leksjon 6.2: «LEGG TIL»-KOMMANDOEN
+
+
+	    ** Skriv  a  for å legge til tekst ETTER markøren. **
+
+  1. Flytt markøren til starten av linjen merket ---> nedenfor.
+
+  2. Trykk  e  til markøren er på slutten av «li».
+
+  3. Trykk  a  (liten a) for å legge til tekst ETTER markøren.
+
+  4. Fullfør ordet sånn som på linjen nedenfor. Trykk <ESC> for å gå ut av
+     innsettingsmodusen.
+
+  5. Bruk  e  for å gå til det neste ufullstendige ordet og repeter steg 3 og
+     4.
+
+---> Denne li lar deg øve på å leg til tek på en linje.
+---> Denne linjen lar deg øve på å legge til tekst på en linje.
+
+Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste
+      forskjellen er hvor tegnene blir satt inn.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ
+
+
+	   ** Skriv en stor  R	for å erstatte mer enn ett tegn. **
+
+  1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren
+     til begynnelsen av den første «xxx»-en.
+
+  2. Trykk  R  og skriv inn tallet som står nedenfor på den andre linjen så
+     det erstatter xxx.
+
+  3. Trykk <ESC> for å gå ut av erstatningsmodusen. Legg merke til at resten
+     av linjen forblir uforandret.
+
+  4. Repeter stegene for å erstatte den gjenværende xxx.
+
+---> Ved å legge 123 til xxx får vi xxx.
+---> Ved å legge 123 til 456 får vi 579.
+
+MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives
+      erstatter et eksisterende tegn.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Leksjon 6.4: KOPIERE OG LIME INN TEKST
+
+
+    ** Bruk y-operatoren for å kopiere tekst og  p  for å lime den inn **
+
+  1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)».
+
+  2. Gå inn i visuell modus med  v  og flytt markøren til like før «første».
+
+  3. Trykk  y  for å kopiere (engelsk: «yank») den uthevede teksten.
+
+  4. Flytt markøren til slutten av den neste linjen:  j$
+
+  5. Trykk  p  for å lime inn teksten. Trykk deretter:	a andre <ESC> .
+
+  6. Bruk visuell modus for å velge « valget.», kopier det med	y , gå til
+     slutten av den neste linjen med  j$  og legg inn teksten der med  p .
+
+---> a) Dette er det første valget.
+     b)
+
+Merk: Du kan også bruke  y  som en operator;  yw  kopierer ett ord.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    Leksjon 6.5: SETT VALG
+
+
+  ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. **
+
+  1. Let etter «ignore» ved å skrive:  /ignore <ENTER>
+     Repeter flere ganger ved å trykke	n .
+
+  2. Sett «ic»-valget (Ignore Case) ved å skrive:  :set ic
+
+  3. Søk etter «ignore» igjen ved å trykke  n .
+     Legg merke til at både «Ignore» og «IGNORE» blir funnet.
+
+  4. Sett «hlsearch»- og «incsearch»-valgene:  :set hls is
+
+  5. Skriv søkekommandoen igjen og se hva som skjer:  /ignore <ENTER>
+
+  6. For å slå av ignorering av store/små bokstaver, skriv:  :set noic
+
+Merk: For å fjerne uthevingen av treff, skriv:	:nohlsearch
+Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk
+      \c  i uttrykket:	/ignore\c <ENTER>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 6
+
+  1. Trykk  o  for å legge til en linje NEDENFOR markøren og gå inn i
+     innsettingsmodus.
+     Trykk  O  for å åpne en linje OVER markøren.
+
+  2. Skriv  a  for å sette inn tekst ETTER markøren.
+     Skriv  A  for å sette inn tekst etter slutten av linjen.
+
+  3. Kommandoen  e  går til slutten av et ord.
+
+  4. Operatoren  y  («yank») kopierer tekst,  p  («paste») limer den inn.
+
+  5. Ved å trykke  R  går du inn i erstatningsmodus helt til  <ESC>  trykkes.
+
+  6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er:
+	«ic» «ignorecase»	ignorer store/små bokstaver under søk
+	«is» «incsearch»	vis delvise treff for en søketekst
+	«hls» «hlsearch»	uthev alle søketreff
+
+  7. Legg til «no» foran valget for å slå det av:  :set noic
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    Leksjon 7.1: FÅ HJELP
+
+
+		   ** Bruk det innebygde hjelpesystemet. **
+
+  Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av
+  disse måtene:
+    - Trykk Hjelp-tasten (hvis du har en)
+    - Trykk F1-tasten (hvis du har en)
+    - Skriv  :help <ENTER>
+
+  Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker.
+  Skriv  CTRL-W CTRL-W	for å hoppe fra et vindu til et annet
+  Skriv  :q <ENTER>	for å lukke hjelpevinduet.
+
+  Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til
+  «:help»-kommandoen. Prøv disse (ikke glem å trykke <ENTER>):
+
+    :help w
+    :help c_CTRL-D
+    :help insert-index
+    :help user-manual
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leksjon 7.2: LAG ET OPPSTARTSSKRIPT
+
+
+			** Slå på funksjoner i Vim **
+
+  Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av
+  som standard. For å begynne å bruke flere funksjoner må du lage en
+  «vimrc»-fil.
+
+  1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt:
+	:e ~/.vimrc	  for Unix
+	:e $VIM/_vimrc	  for MS Windows
+
+  2. Les inn eksempelfilen for «vimrc»:
+	:r $VIMRUNTIME/vimrc_example.vim
+
+  3. Lagre filen med:
+	:w
+
+  Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til
+  alle dine foretrukne oppsett i denne «vimrc»-filen.
+  For mer informasjon, skriv  :help vimrc-intro
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			   Leksjon 7.3: FULLFØRING
+
+
+	      ** Kommandolinjefullføring med CTRL-D og <TAB> **
+
+  1. Vær sikker på at Vim ikke er i Vi-kompatibel modus:  :set nocp
+
+  2. Se hvilke filer som er i katalogen:  :!ls	eller  :!dir
+
+  3. Skriv starten på en kommando:  :e
+
+  4. Trykk  CTRL-D  og Vim vil vise en liste over kommandoer som starter med
+     «e».
+
+  5. Trykk  <TAB>  og Vim vil fullføre kommandonavnet til «:edit».
+
+  6. Legg til et mellomrom og starten på et eksisterende filnavn:  :edit FIL
+
+  7. Trykk <TAB>. Vim vil fullføre navnet (hvis det er unikt).
+
+MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og
+      <TAB>. Det er spesielt nyttig for bruk sammen med  :help .
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  OPPSUMMERING AV LEKSJON 7
+
+
+  1. Skriv  :help  eller trykk <F1> eller <Help> for å åpne et hjelpevindu.
+
+  2. Skriv  :help kommando  for å få hjelp om  kommando .
+
+  3. Trykk  CTRL-W CTRL-W  for å hoppe til et annet vindu.
+
+  4. Trykk  :q	for å lukke hjelpevinduet.
+
+  5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine.
+
+  6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige
+     fullføringer. Trykk <TAB> for å bruke en fullføring.
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Her slutter innføringen i Vim. Den var ment som en rask oversikt over
+  editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på
+  langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen
+  ved å skrive	:help user-manual  .
+
+  For videre lesing og studier, kan denne boken anbefales:
+      «Vim - Vi Improved» av Steve Oualline
+      Utgiver: New Riders
+  Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for
+  nybegynnere. Inneholder mange eksempler og illustrasjoner.
+  Se http://iccf-holland.org/click5.html
+
+  Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også:
+      «Learning the Vi Editor» av Linda Lamb
+      Utgiver: O'Reilly & Associates Inc.
+  Det er en god bok for å få vite omtrent hva som helst om Vi.
+  Den sjette utgaven inneholder også informasjon om Vim.
+
+  Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware,
+  Colorado School of Mines med idéer av Charles Smith, Colorado State
+  University. E-mail: bware@mines.colorado.edu .
+
+  Modifisert for Vim av Bram Moolenaar.
+  Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org
+  Id: tutor.no 406 2007-03-18 22:48:36Z sunny
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+vim: set ts=8 :
diff --git a/runtime/tutor/tutor.vim b/runtime/tutor/tutor.vim
index 3dda1ea..81e5a19 100644
--- a/runtime/tutor/tutor.vim
+++ b/runtime/tutor/tutor.vim
@@ -1,6 +1,6 @@
 " Vim tutor support file
 " Author: Eduardo F. Amatria <eferna1@platea.pntic.mec.es>
-" Last Change:	2007 Mar 01
+" Last Change:	2008 Jun 21
 
 " This small source file is used for detecting if a translation of the
 " tutor file exist, i.e., a tutor.xx file, where xx is the language.
@@ -45,23 +45,28 @@
   endif
 endif
 
+" Somehow ".ge" (Germany) is sometimes used for ".de" (Deutsch).
+if s:ext =~? '\.ge'
+  let s:ext = ".de"
+endif
+
+if s:ext =~? '\.en'
+  let s:ext = ""
+endif
+
 " The japanese tutor is available in two encodings, guess which one to use
 " The "sjis" one is actually "cp932", it doesn't matter for this text.
 if s:ext =~? '\.ja'
   if &enc =~ "euc"
     let s:ext = ".ja.euc"
-  elseif &enc =~ "utf-8$"
-    let s:ext = ".ja.utf-8"
-  else
+  elseif &enc != "utf-8"
     let s:ext = ".ja.sjis"
   endif
 endif
 
 " The korean tutor is available in two encodings, guess which one to use
 if s:ext =~? '\.ko'
-  if &enc =~ "utf-8$"
-    let s:ext = ".ko.utf-8"
-  else
+  if &enc != "utf-8"
     let s:ext = ".ko.euc"
   endif
 endif
@@ -72,7 +77,7 @@
 if s:ext =~? '\.zh'
   if &enc =~ 'big5\|cp950'
     let s:ext = ".zh.big5"
-  else
+  elseif &enc != 'utf-8'
     let s:ext = ".zh.euc"
   endif
 endif
@@ -81,16 +86,12 @@
 if s:ext =~? '\.pl'
   if &enc =~ 1250
     let s:ext = ".pl.cp1250"
-  elseif &enc =~ "utf-8$"
-    let s:ext = ".pl.utf-8"
   endif
 endif
 
 " The Turkish tutor is available in two encodings, guess which one to use
 if s:ext =~? '\.tr'
-  if &enc == "utf-8"
-    let s:ext = ".tr.utf-8"
-  elseif &enc == "iso-8859-9"
+  if &enc == "iso-8859-9"
     let s:ext = ".tr.iso9"
   endif
 endif
@@ -99,59 +100,67 @@
 " We used ".gr" (Greece) instead of ".el" (Greek); accept both.
 if s:ext =~? '\.gr\|\.el'
   if &enc == "iso-8859-7"
-    let s:ext = ".gr"
+    let s:ext = ".el"
   elseif &enc == "utf-8"
-    let s:ext = ".gr.utf-8"
+    let s:ext = ".el.utf-8"
   elseif &enc =~ 737
-    let s:ext = ".gr.cp737"
+    let s:ext = ".el.cp737"
   endif
 endif
 
 " The Slovak tutor is available in three encodings, guess which one to use
 if s:ext =~? '\.sk'
-  if &enc == 'utf-8'
-    let s:ext = ".sk.utf-8"
-  elseif &enc =~ 1250
+  if &enc =~ 1250
     let s:ext = ".sk.cp1250"
   endif
 endif
 
 " The Czech tutor is available in three encodings, guess which one to use
 if s:ext =~? '\.cs'
-  if &enc == 'utf-8'
-    let s:ext = ".cs.utf-8"
-  elseif &enc =~ 1250
+  if &enc =~ 1250
     let s:ext = ".cs.cp1250"
   endif
 endif
 
 " The Russian tutor is available in three encodings, guess which one to use.
 if s:ext =~? '\.ru'
-  if &enc == 'utf-8'
-    let s:ext = '.ru.utf-8'
-  elseif &enc =~ '1251'
+  if &enc =~ '1251'
     let s:ext = '.ru.cp1251'
   elseif &enc =~ 'koi8'
     let s:ext = '.ru'
   endif
 endif
 
-" The Hungarian tutor is available in two encodings, guess which one to use.
+" The Hungarian tutor is available in three encodings, guess which one to use.
 if s:ext =~? '\.hu'
-  if &enc == 'utf-8'
-    let s:ext = '.hu.utf-8'
+  if &enc =~ 1250
+    let s:ext = ".hu.cp1250"
   elseif &enc =~ 'iso-8859-2'
     let s:ext = '.hu'
   endif
 endif
 
-" Somehow ".ge" (Germany) is sometimes used for ".de" (Deutsch).
-if s:ext =~? '\.ge'
-  let s:ext = ".de"
+" The Croatian tutor is available in three encodings, guess which one to use.
+if s:ext =~? '\.hr'
+  if &enc =~ 1250
+    let s:ext = ".hr.cp1250"
+  elseif &enc =~ 'iso-8859-2'
+    let s:ext = '.hr'
+  endif
 endif
 
-if s:ext =~? '\.en'
-  let s:ext = ""
+" Esperanto is only available in utf-8
+if s:ext =~? '\.eo'
+  let s:ext = ".eo.utf-8"
+endif
+" Vietnamese is only available in utf-8
+if s:ext =~? '\.vi'
+  let s:ext = ".vi.utf-8"
+endif
+
+" If 'encoding' is utf-8 s:ext must end in utf-8.
+if &enc == 'utf-8' && s:ext !~ '\.utf-8'
+  s:ext .= '.utf-8'
 endif
 
 " 2. Build the name of the file: