summaryrefslogtreecommitdiff
path: root/runtime/tutor
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2008-06-24 21:56:24 +0000
committerBram Moolenaar <Bram@vim.org>2008-06-24 21:56:24 +0000
commit446cb837a017fc1c1b144cb5c2a35cb90abfbbcf (patch)
tree6c1fe56f2db8d4adbeee792b181b0659c4d1f216 /runtime/tutor
parent3577c6fafb77da5419cd1001dac56f204d480bdc (diff)
downloadvim-git-446cb837a017fc1c1b144cb5c2a35cb90abfbbcf.tar.gz
updated for version 7.2a
Diffstat (limited to 'runtime/tutor')
-rw-r--r--runtime/tutor/README.el.cp737.txt24
-rw-r--r--runtime/tutor/README.el.txt24
-rwxr-xr-xruntime/tutor/README.txt.infobin738 -> 582 bytes
-rw-r--r--runtime/tutor/README_amibin.txt12
-rw-r--r--runtime/tutor/README_extra.txt61
-rw-r--r--runtime/tutor/README_ole.txt20
-rwxr-xr-xruntime/tutor/runtime/doc.infobin0 -> 624 bytes
-rw-r--r--runtime/tutor/runtime/ftplugin.vim35
-rw-r--r--runtime/tutor/runtime/ftplugof.vim11
-rw-r--r--runtime/tutor/runtime/hi16-action-make.pngbin0 -> 454 bytes
-rw-r--r--runtime/tutor/runtime/menu.vim1105
-rw-r--r--runtime/tutor/runtime/rgb.txt753
-rwxr-xr-xruntime/tutor/runtime/tutor.infobin0 -> 624 bytes
-rw-r--r--runtime/tutor/runtime/vim16x16.gifbin0 -> 166 bytes
-rw-r--r--runtime/tutor/runtime/vim32x32.gifbin0 -> 298 bytes
-rw-r--r--runtime/tutor/tutor.no.utf-8973
-rw-r--r--runtime/tutor/tutor.vim75
17 files changed, 3060 insertions, 33 deletions
diff --git a/runtime/tutor/README.el.cp737.txt b/runtime/tutor/README.el.cp737.txt
new file mode 100644
index 000000000..426f929c6
--- /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 000000000..b2f5e0746
--- /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 238b11fa9..e7fa11494 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 000000000..24b9ef2e1
--- /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 000000000..660b502da
--- /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 000000000..8112136c5
--- /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 000000000..a836031ee
--- /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 000000000..a434b9372
--- /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 000000000..cd99ce05a
--- /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 000000000..824c7580e
--- /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 000000000..d120ce293
--- /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 000000000..5bc2baa3d
--- /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 000000000..f8ceda364
--- /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 000000000..505a855a6
--- /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 000000000..523821b44
--- /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 000000000..a7826b783
--- /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 3dda1ea0e..81e5a1919 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 @@ else
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 @@ endif
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 @@ endif
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 @@ endif
" 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: