updated for version 7.2a
diff --git a/runtime/tutor/Filelist b/runtime/tutor/Filelist
new file mode 100644
index 0000000..aa423d9
--- /dev/null
+++ b/runtime/tutor/Filelist
@@ -0,0 +1,716 @@
+# List of distributed Vim files.
+# Used by Makefile and upload.aap.
+
+# source files for all source archives
+SRC_ALL =	\
+		src/README.txt \
+		src/arabic.c \
+		src/arabic.h \
+		src/ascii.h \
+		src/buffer.c \
+		src/charset.c \
+		src/diff.c \
+		src/digraph.c \
+		src/edit.c \
+		src/eval.c \
+		src/ex_cmds.c \
+		src/ex_cmds.h \
+		src/ex_cmds2.c \
+		src/ex_docmd.c \
+		src/ex_eval.c \
+		src/ex_getln.c \
+		src/farsi.c \
+		src/farsi.h \
+		src/feature.h \
+		src/fileio.c \
+		src/fold.c \
+		src/getchar.c \
+		src/globals.h \
+		src/gui.c \
+		src/gui.h \
+		src/gui_beval.c \
+		src/gui_beval.h \
+		src/hardcopy.c \
+		src/hashtab.c \
+		src/keymap.h \
+		src/macros.h \
+		src/main.c \
+		src/mark.c \
+		src/mbyte.c \
+		src/memfile.c \
+		src/memline.c \
+		src/menu.c \
+		src/message.c \
+		src/misc1.c \
+		src/misc2.c \
+		src/move.c \
+		src/mysign \
+		src/nbdebug.c \
+		src/nbdebug.h \
+		src/netbeans.c \
+		src/normal.c \
+		src/ops.c \
+		src/option.c \
+		src/option.h \
+		src/popupmnu.c \
+		src/quickfix.c \
+		src/regexp.c \
+		src/regexp.h \
+		src/screen.c \
+		src/search.c \
+		src/structs.h \
+		src/spell.c \
+		src/syntax.c \
+		src/tag.c \
+		src/term.c \
+		src/term.h \
+		src/termlib.c \
+		src/ui.c \
+		src/undo.c \
+		src/version.c \
+		src/version.h \
+		src/vim.h \
+		src/window.c \
+		src/xxd/xxd.c \
+		src/main.aap \
+		src/testdir/main.aap \
+		src/testdir/*.in \
+		src/testdir/test[0-9]*.ok \
+		src/testdir/test49.vim \
+		src/testdir/test60.vim \
+		src/proto.h \
+		src/proto/buffer.pro \
+		src/proto/charset.pro \
+		src/proto/diff.pro \
+		src/proto/digraph.pro \
+		src/proto/edit.pro \
+		src/proto/eval.pro \
+		src/proto/ex_cmds.pro \
+		src/proto/ex_cmds2.pro \
+		src/proto/ex_docmd.pro \
+		src/proto/ex_eval.pro \
+		src/proto/ex_getln.pro \
+		src/proto/fileio.pro \
+		src/proto/fold.pro \
+		src/proto/getchar.pro \
+		src/proto/gui.pro \
+		src/proto/gui_beval.pro \
+		src/proto/hardcopy.pro \
+		src/proto/hashtab.pro \
+		src/proto/main.pro \
+		src/proto/mark.pro \
+		src/proto/mbyte.pro \
+		src/proto/memfile.pro \
+		src/proto/memline.pro \
+		src/proto/menu.pro \
+		src/proto/message.pro \
+		src/proto/misc1.pro \
+		src/proto/misc2.pro \
+		src/proto/move.pro \
+		src/proto/netbeans.pro \
+		src/proto/normal.pro \
+		src/proto/ops.pro \
+		src/proto/option.pro \
+		src/proto/popupmnu.pro \
+		src/proto/quickfix.pro \
+		src/proto/regexp.pro \
+		src/proto/screen.pro \
+		src/proto/search.pro \
+		src/proto/spell.pro \
+		src/proto/syntax.pro \
+		src/proto/tag.pro \
+		src/proto/term.pro \
+		src/proto/termlib.pro \
+		src/proto/ui.pro \
+		src/proto/undo.pro \
+		src/proto/version.pro \
+		src/proto/window.pro \
+
+
+# source files for Unix only
+SRC_UNIX =	\
+		Makefile \
+		Filelist \
+		README_src.txt \
+		configure \
+		pixmaps/*.xpm \
+		pixmaps/gen-inline-pixbufs.sh \
+		pixmaps/stock_icons.h \
+		src/INSTALL \
+		src/INSTALLx.txt \
+		src/Makefile \
+		src/auto/configure \
+		src/config.aap.in \
+		src/config.h.in \
+		src/config.mk.dist \
+		src/config.mk.in \
+		src/configure \
+		src/configure.in \
+		src/gui_at_fs.c \
+		src/gui_at_sb.c \
+		src/gui_at_sb.h \
+		src/gui_athena.c \
+		src/gui_gtk.c \
+		src/gui_gtk_f.c \
+		src/gui_gtk_f.h \
+		src/gui_gtk_x11.c \
+		src/gui_motif.c \
+		src/gui_xmdlg.c \
+		src/gui_xmebw.c \
+		src/gui_xmebw.h \
+		src/gui_xmebwp.h \
+		src/gui_x11.c \
+		src/gui_x11_pm.h \
+		src/hangulin.c \
+		src/if_xcmdsrv.c \
+		src/integration.c \
+		src/integration.h \
+		src/link.sh \
+		src/installman.sh \
+		src/installml.sh \
+		src/mkinstalldirs \
+		src/os_unix.c \
+		src/os_unix.h \
+		src/os_unixx.h \
+		src/osdef.sh \
+		src/osdef1.h.in \
+		src/osdef2.h.in \
+		src/pathdef.sh \
+		src/proto/gui_athena.pro \
+		src/proto/gui_gtk.pro \
+		src/proto/gui_gtk_x11.pro \
+		src/proto/gui_motif.pro \
+		src/proto/gui_xmdlg.pro \
+		src/proto/gui_x11.pro \
+		src/proto/hangulin.pro \
+		src/proto/if_xcmdsrv.pro \
+		src/proto/os_unix.pro \
+		src/proto/pty.pro \
+		src/proto/workshop.pro \
+		src/pty.c \
+		src/testdir/Makefile \
+		src/testdir/unix.vim \
+		src/toolcheck \
+		src/vim_icon.xbm \
+		src/vim_mask.xbm \
+		src/vimtutor \
+		src/gvimtutor \
+		src/which.sh \
+		src/workshop.c \
+		src/workshop.h \
+		src/wsdebug.c \
+		src/wsdebug.h \
+		src/xxd/Makefile \
+
+# source files for both DOS and Unix
+SRC_DOS_UNIX =	\
+		src/if_cscope.c \
+		src/if_cscope.h \
+		src/if_mzsch.c \
+		src/if_mzsch.h \
+		src/if_perl.xs \
+		src/if_perlsfio.c \
+		src/if_python.c \
+		src/if_ruby.c \
+		src/if_sniff.h \
+		src/if_tcl.c \
+		src/proto/if_cscope.pro \
+		src/proto/if_mzsch.pro \
+		src/proto/if_perl.pro \
+		src/proto/if_perlsfio.pro \
+		src/proto/if_python.pro \
+		src/proto/if_ruby.pro \
+		src/proto/if_tcl.pro \
+		src/typemap \
+
+# source files for DOS (also in the extra archive)
+SRC_DOS =	\
+		src/GvimExt/*.mak \
+		src/GvimExt/GvimExt.reg \
+		src/GvimExt/Makefile \
+		src/GvimExt/README.txt \
+		src/GvimExt/gvimext.cpp \
+		src/GvimExt/gvimext.def \
+		src/GvimExt/gvimext.h \
+		src/GvimExt/gvimext.inf \
+		src/GvimExt/gvimext.rc \
+		src/GvimExt/gvimext_ming.def \
+		src/GvimExt/gvimext_ming.rc \
+		src/GvimExt/resource.h \
+		src/GvimExt/uninst.bat \
+		README_srcdos.txt \
+		src/INSTALLpc.txt \
+		src/Make_bc3.mak \
+		src/Make_bc5.mak \
+		src/Make_cyg.mak \
+		src/Make_djg.mak \
+		src/Make_ivc.mak \
+		src/Make_dvc.mak \
+		src/Make_ming.mak \
+		src/Make_mvc.mak \
+		src/Make_w16.mak \
+		src/bigvim.bat \
+		src/msvcsetup.bat \
+		src/msvc2008.bat \
+		src/dimm.idl \
+		src/dlldata.c \
+		src/dosinst.c \
+		src/dosinst.h \
+		src/glbl_ime.cpp \
+		src/glbl_ime.h \
+		src/gui_w16.c \
+		src/gui_w32.c \
+		src/gui_w48.c \
+		src/guiw16rc.h \
+		src/gui_w32_rc.h \
+		src/if_ole.cpp \
+		src/if_ole.h \
+		src/if_ole.idl \
+		src/iid_ole.c \
+		src/os_dos.h \
+		src/os_msdos.c \
+		src/os_msdos.h \
+		src/os_w32dll.c \
+		src/os_w32exe.c \
+		src/os_win16.c \
+		src/os_win32.c \
+		src/os_mswin.c \
+		src/os_win16.h \
+		src/os_win32.h \
+		src/proto/gui_w16.pro \
+		src/proto/gui_w32.pro \
+		src/proto/if_ole.pro \
+		src/proto/os_msdos.pro \
+		src/proto/os_win16.pro \
+		src/proto/os_win32.pro \
+		src/proto/os_mswin.pro \
+		src/testdir/Make_dos.mak \
+		src/testdir/dos.vim \
+		src/uninstal.c \
+		src/vim.def \
+		src/vim.rc \
+		src/vimio.h \
+		src/gvim.exe.mnf \
+		src/vim16.def \
+		src/vim16.rc \
+		src/vimrun.c \
+		src/vimtbar.h \
+		src/xpm_w32.c \
+		src/xpm_w32.h \
+		src/xxd/Make_bc3.mak \
+		src/xxd/Make_bc5.mak \
+		src/xxd/Make_cyg.mak \
+		src/xxd/Make_djg.mak \
+		src/xxd/Make_mvc.mak \
+		nsis/gvim.nsi \
+		nsis/README.txt \
+		uninstal.txt \
+		src/VisVim/Commands.cpp \
+		src/VisVim/Commands.h \
+		src/VisVim/DSAddIn.cpp \
+		src/VisVim/DSAddIn.h \
+		src/VisVim/OleAut.cpp \
+		src/VisVim/OleAut.h \
+		src/VisVim/README_VisVim.txt \
+		src/VisVim/Reg.cpp \
+		src/VisVim/Register.bat \
+		src/VisVim/Resource.h \
+		src/VisVim/StdAfx.cpp \
+		src/VisVim/StdAfx.h \
+		src/VisVim/UnRegist.bat \
+		src/VisVim/VisVim.cpp \
+		src/VisVim/VisVim.def \
+		src/VisVim/VisVim.mak \
+		src/VisVim/VisVim.h \
+		src/VisVim/VisVim.odl \
+		src/VisVim/VisVim.rc \
+		src/VisVim/VsReadMe.txt \
+
+# source files for DOS without CR/LF translation (also in the extra archive)
+SRC_DOS_BIN =	\
+		src/VisVim/Res/*.bmp \
+		src/tearoff.bmp \
+		src/tools.bmp \
+		src/tools16.bmp \
+		src/vim*.ico \
+		src/vim.tlb \
+		src/vimtbar.lib \
+		src/vimtbar.dll \
+		nsis/icons/*.bmp \
+		nsis/icons/*.ico \
+
+# source files for Amiga, DOS, etc. (also in the extra archive)
+SRC_AMI_DOS =	\
+
+# source files for Amiga (also in the extra archive)
+SRC_AMI =	\
+		README_amisrc.txt \
+		README_amisrc.txt.info \
+		src.info \
+		src/INSTALLami.txt \
+		src/Make_dice.mak \
+		src/Make_manx.mak \
+		src/Make_morph.mak \
+		src/Make_sas.mak \
+		src/os_amiga.c \
+		src/os_amiga.h \
+		src/proto/os_amiga.pro \
+		src/testdir/Make_amiga.mak \
+		src/testdir/amiga.vim \
+		src/xxd/Make_amiga.mak \
+
+# source files for the Mac (also in the extra archive)
+SRC_MAC =	\
+		src/INSTALLmac.txt \
+		src/dehqx.py \
+		src/gui_mac.c \
+		src/os_mac_rsrc/*.icns \
+		src/os_mac.h \
+		src/os_mac.rsr.hqx \
+		src/os_mac_conv.c \
+		src/os_macosx.c \
+		src/proto/gui_mac.pro \
+		src/proto/os_mac_conv.pro \
+
+# source files for VMS (in the extra archive)
+SRC_VMS =	\
+		src/INSTALLvms.txt \
+		src/Make_vms.mms \
+		src/gui_gtk_vms.h \
+		src/os_vms.c \
+		src/os_vms_conf.h \
+		src/os_vms_mms.c \
+		src/proto/os_vms.pro \
+		src/testdir/Make_vms.mms \
+		src/testdir/vms.vim \
+		src/xxd/Make_vms.mms \
+		vimtutor.com \
+
+# source files for OS/2 (in the extra archive)
+SRC_OS2 =	\
+		src/Make_os2.mak \
+		src/os_os2_cfg.h \
+		src/testdir/Make_os2.mak \
+		src/testdir/todos.vim \
+		src/testdir/os2.vim \
+		src/xxd/Make_os2.mak \
+
+# source files for QNX (in the extra archive)
+SRC_QNX =	\
+		src/os_qnx.c \
+		src/os_qnx.h \
+		src/gui_photon.c \
+		src/proto/gui_photon.pro \
+		src/proto/os_qnx.pro \
+
+
+# source files for the extra archive (all sources that are not for Unix)
+SRC_EXTRA =	\
+		$(SRC_AMI) \
+		$(SRC_AMI_DOS) \
+		$(SRC_DOS) \
+		$(SRC_DOS_BIN) \
+		$(SRC_MAC) \
+		$(SRC_OS2) \
+		$(SRC_QNX) \
+		$(SRC_VMS) \
+		README_os390.txt \
+		src/Make_mint.mak \
+		src/Make_ro.mak \
+		src/gui_riscos.c \
+		src/gui_riscos.h \
+		src/if_sniff.c \
+		src/infplist.xml \
+		src/link.390 \
+		src/os_beos.c \
+		src/os_beos.h \
+		src/os_beos.rsrc \
+		src/os_mint.h \
+		src/os_riscos.c \
+		src/os_riscos.h \
+		src/proto/gui_riscos.pro \
+		src/proto/os_riscos.pro \
+		src/os_vms_fix.com \
+		src/toolbar.phi \
+
+# runtime files for all distributions
+RT_ALL =	\
+		README.txt \
+		runtime/bugreport.vim \
+		runtime/doc/*.awk \
+		runtime/doc/*.pl \
+		runtime/doc/*.txt \
+		runtime/doc/Makefile \
+		runtime/doc/doctags.c \
+		runtime/doc/vim.1 \
+		runtime/doc/evim.1 \
+		runtime/doc/vimdiff.1 \
+		runtime/doc/vimtutor.1 \
+		runtime/doc/xxd.1 \
+		runtime/ftoff.vim \
+		runtime/gvimrc_example.vim \
+		runtime/macros/README.txt \
+		runtime/macros/dvorak \
+		runtime/macros/editexisting.vim \
+		runtime/macros/hanoi/click.me \
+		runtime/macros/hanoi/hanoi.vim \
+		runtime/macros/hanoi/poster \
+		runtime/macros/justify.vim \
+		runtime/macros/less.sh \
+		runtime/macros/less.vim \
+		runtime/macros/life/click.me \
+		runtime/macros/life/life.vim \
+		runtime/macros/matchit.vim \
+		runtime/macros/matchit.txt \
+		runtime/macros/maze/README.txt \
+		runtime/macros/maze/[mM]akefile \
+		runtime/macros/maze/main.aap \
+		runtime/macros/maze/maze.c \
+		runtime/macros/maze/maze_5.78 \
+		runtime/macros/maze/maze_mac \
+		runtime/macros/maze/mazeansi.c \
+		runtime/macros/maze/mazeclean.c \
+		runtime/macros/maze/poster \
+		runtime/macros/shellmenu.vim \
+		runtime/macros/swapmous.vim \
+		runtime/macros/urm/README.txt \
+		runtime/macros/urm/examples \
+		runtime/macros/urm/urm \
+		runtime/macros/urm/urm.vim \
+		runtime/mswin.vim \
+		runtime/evim.vim \
+		runtime/optwin.vim \
+		runtime/ftplugin.vim \
+		runtime/ftplugof.vim \
+		runtime/indent.vim \
+		runtime/indoff.vim \
+		runtime/termcap \
+		runtime/tools/README.txt \
+		runtime/tools/[a-z]*[a-z0-9] \
+		runtime/tutor/README.txt \
+		runtime/tutor/tutor \
+		runtime/tutor/tutor.vim \
+		runtime/vimrc_example.vim \
+
+# runtime files for all distributions without CR-NL translation
+RT_ALL_BIN =	\
+		runtime/doc/tags \
+		runtime/print/*.ps \
+
+# runtime script files
+RT_SCRIPTS =	\
+		runtime/filetype.vim \
+		runtime/scripts.vim \
+		runtime/menu.vim \
+		runtime/macmap.vim \
+		runtime/delmenu.vim \
+		runtime/synmenu.vim \
+		runtime/makemenu.vim \
+		runtime/autoload/*.vim \
+		runtime/autoload/README.txt \
+		runtime/autoload/xml/*.vim \
+		runtime/colors/*.vim \
+		runtime/colors/README.txt \
+		runtime/compiler/*.vim \
+		runtime/compiler/README.txt \
+		runtime/indent/*.vim \
+		runtime/indent/README.txt \
+		runtime/ftplugin/*.vim \
+		runtime/ftplugin/README.txt \
+		runtime/plugin/*.vim \
+		runtime/plugin/README.txt \
+		runtime/syntax/*.vim \
+		runtime/syntax/README.txt \
+
+# Unix runtime
+RT_UNIX =	\
+		README_unix.txt \
+		runtime/hi16-action-make.png \
+		runtime/hi22-action-make.png \
+		runtime/vim16x16.png \
+		runtime/vim16x16.xpm \
+		runtime/vim32x32.png \
+		runtime/vim32x32.xpm \
+		runtime/vim48x48.png \
+		runtime/vim48x48.xpm \
+
+# Unix and DOS runtime without CR-LF translation
+RT_UNIX_DOS_BIN =	\
+		runtime/vim16x16.gif \
+		runtime/vim32x32.gif \
+		runtime/vim48x48.gif \
+
+# runtime not for unix or extra
+RT_NO_UNIX =	\
+
+# runtime for Amiga (also in the extra archive)
+RT_AMI_DOS =	\
+		runtime/doc/vim.man \
+		runtime/doc/vimdiff.man \
+		runtime/doc/vimtutor.man \
+		runtime/doc/xxd.man \
+
+# DOS runtime (also in the extra archive)
+RT_DOS =	\
+		README_dos.txt \
+		runtime/rgb.txt \
+		vimtutor.bat \
+
+# DOS runtime without CR-LF translation (also in the extra archive)
+RT_DOS_BIN =	\
+		runtime/vimlogo.cdr \
+		runtime/vimlogo.eps \
+		runtime/vimlogo.gif \
+		runtime/vimlogo.pdf \
+
+# Amiga runtime (also in the extra archive)
+RT_AMI =	\
+		README.txt.info \
+		README_ami.txt \
+		README_ami.txt.info \
+		libs/arp.library \
+		runtime/doc.info \
+		runtime/doc/*.info \
+		runtime/icons/README.txt \
+		runtime/icons/*.info \
+		runtime/icons.info \
+		runtime/macros.info \
+		runtime/macros/*.info \
+		runtime/macros/hanoi/*.info \
+		runtime/macros/life/*.info \
+		runtime/macros/maze/*.info \
+		runtime/macros/urm/*.info \
+		runtime/tools.info \
+		runtime/tutor.info \
+		runtime/tutor/*.info \
+
+# runtime files in extra archive
+RT_EXTRA =	\
+		$(RT_AMI) \
+		$(RT_AMI_DOS) \
+		$(RT_DOS) \
+		$(RT_DOS_BIN) \
+		README_mac.txt \
+
+# included in all Amiga archives
+ROOT_AMI =	\
+		Contents \
+		Contents.info \
+		runtime.info \
+		vimdir.info \
+
+# root files for the extra archive
+ROOT_EXTRA =	\
+		$(ROOT_AMI) \
+
+# files for Amiga small binary (also in extra archive)
+BIN_AMI =	\
+		README_amibin.txt \
+		README_amibin.txt.info \
+		Vim.info \
+		Xxd.info \
+
+# files for DOS binary (also in extra archive)
+BIN_DOS =	\
+		README_bindos.txt \
+		uninstal.txt \
+
+# files for Win32 OLE binary (also in extra archive)
+BIN_OLE =	\
+		README_ole.txt \
+
+# files for Win32s binary (also in extra archive)
+BIN_W32S =	\
+		README_w32s.txt \
+
+# files for VMS binary (also in extra archive)
+BIN_VMS =	\
+		README_vms.txt \
+
+# files for OS/2 binary (also in extra archive)
+BIN_OS2 =	\
+		README_os2.txt \
+
+# binary files for extra archive
+BIN_EXTRA =	\
+		$(BIN_AMI) \
+		$(BIN_DOS) \
+		$(BIN_OLE) \
+		$(BIN_W32S) \
+		$(BIN_VMS) \
+		$(BIN_OS2) \
+
+# all files for extra archive
+EXTRA =		\
+		$(BIN_EXTRA) \
+		$(ROOT_EXTRA) \
+		$(RT_EXTRA) \
+		$(SRC_EXTRA) \
+		README_extra.txt \
+		src/VisVim/VisVim.dll \
+		farsi/README.txt \
+		farsi/fonts/*/far-* \
+		runtime/vimlogo.xpm \
+		src/swis.s \
+		src/tee/Makefile* \
+		src/tee/tee.c \
+		csdpmi4b.zip \
+
+# generic language files
+LANG_GEN = \
+		README_lang.txt \
+		runtime/doc/*-fr.1 \
+		runtime/doc/*-fr.UTF-8.1 \
+		runtime/doc/*-it.1 \
+		runtime/doc/*-it.UTF-8.1 \
+		runtime/doc/*-pl.1 \
+		runtime/doc/*-pl.UTF-8.1 \
+		runtime/doc/*-ru.1 \
+		runtime/doc/*-ru.UTF-8.1 \
+		runtime/lang/README.txt \
+		runtime/lang/menu_*.vim \
+		runtime/keymap/README.txt \
+		runtime/keymap/*.vim \
+		runtime/tutor/README.*.txt \
+		runtime/tutor/Makefile \
+		runtime/tutor/tutor.utf-8 \
+		runtime/tutor/tutor.?? \
+		runtime/tutor/tutor.??.* \
+		runtime/spell/README.txt \
+		runtime/spell/??/*.diff \
+		runtime/spell/??/main.aap \
+		runtime/spell/yi/README.txt \
+		runtime/spell/main.aap \
+		runtime/spell/cleanadd.vim \
+		runtime/spell/*.vim \
+		runtime/spell/fixdup \
+
+# generic language files, binary
+LANG_GEN_BIN = \
+		runtime/spell/README_en.txt \
+		runtime/spell/en.ascii.spl \
+		runtime/spell/en.latin1.spl \
+		runtime/spell/en.utf-8.spl \
+		runtime/spell/en.ascii.sug \
+		runtime/spell/en.latin1.sug \
+		runtime/spell/en.utf-8.sug \
+
+# all files for lang archive
+LANG_SRC = \
+		src/po/README.txt \
+		src/po/README_mingw.txt \
+		src/po/README_mvc.txt \
+		src/po/check.vim \
+		src/po/cleanup.vim \
+		src/po/Makefile \
+		src/po/Make_cyg.mak \
+		src/po/Make_ming.mak \
+		src/po/Make_mvc.mak \
+		src/po/sjiscorr.c \
+		src/po/*.po \
+
+# the language files for the Win32 lang archive
+LANG_DOS = \
+		src/po/*.mo \
+
+# vim: set ft=make:
diff --git a/runtime/tutor/README_bindos.txt b/runtime/tutor/README_bindos.txt
new file mode 100644
index 0000000..593a925
--- /dev/null
+++ b/runtime/tutor/README_bindos.txt
@@ -0,0 +1,19 @@
+README_bindos.txt for version 7.2a of Vim: Vi IMproved.
+
+See "README.txt" for general information about Vim.
+See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
+These files are in the runtime archive (vim70rt.zip).
+
+
+There are several binary distributions of Vim for the PC.  You would normally
+pick only one of them, but it's also possible to install several.
+These ones are available (the version number may differ):
+	vim70d16.zip	16 bit DOS version
+	vim70d32.zip	32 bit DOS version
+	vim70w32.zip	Windows 95/98/NT/etc. console version
+	gvim70.zip	Windows 95/98/NT/etc. GUI version
+	gvim70ole.zip	Windows 95/98/NT/etc. GUI version with OLE
+	gvim70_s.zip	Windows 3.1 GUI version
+
+You MUST also get the runtime archive (vim70rt.zip).
+The sources are also available (vim70src.zip).
diff --git a/runtime/tutor/README_lang.txt b/runtime/tutor/README_lang.txt
new file mode 100644
index 0000000..9df9f76
--- /dev/null
+++ b/runtime/tutor/README_lang.txt
@@ -0,0 +1,5 @@
+README_lang.txt for version 7.2a of Vim: Vi IMproved.
+
+This file contains files for non-English languages:
+- Translated messages.
+- Translated menus.
diff --git a/runtime/tutor/README_srcdos.txt b/runtime/tutor/README_srcdos.txt
new file mode 100644
index 0000000..ef78029
--- /dev/null
+++ b/runtime/tutor/README_srcdos.txt
@@ -0,0 +1,12 @@
+README_srcdos.txt for version 7.2a of Vim: Vi IMproved.
+
+See "README.txt" for general information about Vim.
+See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
+These files are in the runtime archive (vim70rt.zip).
+
+
+The DOS source archive contains the files needed to compile Vim on MS-DOS or
+MS-Windows.  It is packed for DOS systems, with CR-LF.  It also includes the
+VisVim sources.
+
+See "src/INSTALLpc.txt" for instructions on how to compile Vim on the PC.
diff --git a/runtime/tutor/README_unix.txt b/runtime/tutor/README_unix.txt
new file mode 100644
index 0000000..5338cb1
--- /dev/null
+++ b/runtime/tutor/README_unix.txt
@@ -0,0 +1,10 @@
+README_unix.txt for version 7.2a of Vim: Vi IMproved.
+
+This file explains the installation of Vim on Unix systems.
+See "README.txt" for general information about Vim.
+
+
+When you use the source distribution, "make install" is used to install Vim.
+See the "INSTALL" file in the "src" directory.
+
+If you use a compiled package, follow the instructions for the package.
diff --git a/runtime/tutor/runtime/filetype.vim b/runtime/tutor/runtime/filetype.vim
new file mode 100644
index 0000000..89af04c
--- /dev/null
+++ b/runtime/tutor/runtime/filetype.vim
@@ -0,0 +1,2412 @@
+" Vim support file to detect file types
+"
+" Maintainer:	Bram Moolenaar <Bram@vim.org>
+" Last Change:	2008 Jun 20
+
+" Listen very carefully, I will say this only once
+if exists("did_load_filetypes")
+  finish
+endif
+let did_load_filetypes = 1
+
+" Line continuation is used here, remove 'C' from 'cpoptions'
+let s:cpo_save = &cpo
+set cpo&vim
+
+augroup filetypedetect
+
+" Ignored extensions
+if exists("*fnameescape")
+au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.rpmsave,?\+.rpmnew
+	\ exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r"))
+au BufNewFile,BufRead *~
+	\ let s:name = expand("<afile>") |
+	\ let s:short = substitute(s:name, '\~$', '', '') |
+	\ if s:name != s:short && s:short != "" |
+	\   exe "doau filetypedetect BufRead " . fnameescape(s:short) |
+	\ endif |
+	\ unlet s:name s:short
+au BufNewFile,BufRead ?\+.in
+	\ if expand("<afile>:t") != "configure.in" |
+	\   exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r")) |
+	\ endif
+elseif &verbose > 0
+  echomsg "Warning: some filetypes will not be recognized because this version of Vim does not have fnameescape()"
+endif
+
+" Pattern used to match file names which should not be inspected.
+" Currently finds compressed files.
+if !exists("g:ft_ignore_pat")
+  let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
+endif
+
+" Function used for patterns that end in a star: don't set the filetype if the
+" file name matches ft_ignore_pat.
+func! s:StarSetf(ft)
+  if expand("<amatch>") !~ g:ft_ignore_pat
+    exe 'setf ' . a:ft
+  endif
+endfunc
+
+" Abaqus or Trasys
+au BufNewFile,BufRead *.inp			call s:Check_inp()
+
+func! s:Check_inp()
+  if getline(1) =~ '^\*'
+    setf abaqus
+  else
+    let n = 1
+    if line("$") > 500
+      let nmax = 500
+    else
+      let nmax = line("$")
+    endif
+    while n <= nmax
+      if getline(n) =~? "^header surface data"
+	setf trasys
+	break
+      endif
+      let n = n + 1
+    endwhile
+  endif
+endfunc
+
+" A-A-P recipe
+au BufNewFile,BufRead *.aap			setf aap
+
+" A2ps printing utility
+au BufNewFile,BufRead etc/a2ps.cfg,etc/a2ps/*.cfg,a2psrc,.a2psrc setf a2ps
+
+" ABAB/4
+au BufNewFile,BufRead *.abap			setf abap
+
+" ABC music notation
+au BufNewFile,BufRead *.abc			setf abc
+
+" ABEL
+au BufNewFile,BufRead *.abl			setf abel
+
+" AceDB
+au BufNewFile,BufRead *.wrm			setf acedb
+
+" Ada (83, 9X, 95)
+au BufNewFile,BufRead *.adb,*.ads,*.ada		setf ada
+if has("vms")
+  au BufNewFile,BufRead *.gpr,*.ada_m,*.adc 	setf ada
+else
+  au BufNewFile,BufRead *.gpr 			setf ada
+endif
+
+" AHDL
+au BufNewFile,BufRead *.tdf			setf ahdl
+
+" AMPL
+au BufNewFile,BufRead *.run			setf ampl
+
+" Ant
+au BufNewFile,BufRead build.xml			setf ant
+
+" Apache style config file
+au BufNewFile,BufRead proftpd.conf*		call s:StarSetf('apachestyle')
+
+" Apache config file
+au BufNewFile,BufRead .htaccess			 setf apache
+au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/apache2/*.conf* call s:StarSetf('apache')
+
+" XA65 MOS6510 cross assembler
+au BufNewFile,BufRead *.a65			setf a65
+
+" Applix ELF
+au BufNewFile,BufRead *.am
+	\ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif
+
+" ALSA configuration
+au BufNewFile,BufRead ~/.asoundrc,/usr/share/alsa/alsa.conf,/etc/asound.conf	setf alsaconf
+
+" Arc Macro Language
+au BufNewFile,BufRead *.aml			setf aml
+
+" Arch Inventory file
+au BufNewFile,BufRead .arch-inventory,=tagging-method	setf arch
+
+" ART*Enterprise (formerly ART-IM)
+au BufNewFile,BufRead *.art			setf art
+
+" ASN.1
+au BufNewFile,BufRead *.asn,*.asn1		setf asn
+
+" Active Server Pages (with Visual Basic Script)
+au BufNewFile,BufRead *.asa
+	\ if exists("g:filetype_asa") |
+	\   exe "setf " . g:filetype_asa |
+	\ else |
+	\   setf aspvbs |
+	\ endif
+
+" Active Server Pages (with Perl or Visual Basic Script)
+au BufNewFile,BufRead *.asp
+	\ if exists("g:filetype_asp") |
+	\   exe "setf " . g:filetype_asp |
+	\ elseif getline(1) . getline(2) . getline(3) =~? "perlscript" |
+	\   setf aspperl |
+	\ else |
+	\   setf aspvbs |
+	\ endif
+
+" Grub (must be before catch *.lst)
+au BufNewFile,BufRead /boot/grub/menu.lst,/boot/grub/grub.conf,/etc/grub.conf	setf grub
+
+" Assembly (all kinds)
+" *.lst is not pure assembly, it has two extra columns (address, byte codes)
+au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst	call s:FTasm()
+
+" This function checks for the kind of assembly that is wanted by the user, or
+" can be detected from the first five lines of the file.
+func! s:FTasm()
+  " make sure b:asmsyntax exists
+  if !exists("b:asmsyntax")
+    let b:asmsyntax = ""
+  endif
+
+  if b:asmsyntax == ""
+    call s:FTasmsyntax()
+  endif
+
+  " if b:asmsyntax still isn't set, default to asmsyntax or GNU
+  if b:asmsyntax == ""
+    if exists("g:asmsyntax")
+      let b:asmsyntax = g:asmsyntax
+    else
+      let b:asmsyntax = "asm"
+    endif
+  endif
+
+  exe "setf " . b:asmsyntax
+endfunc
+
+func! s:FTasmsyntax()
+  " see if file contains any asmsyntax=foo overrides. If so, change
+  " b:asmsyntax appropriately
+  let head = " ".getline(1)." ".getline(2)." ".getline(3)." ".getline(4).
+	\" ".getline(5)." "
+  if head =~ '\sasmsyntax=\S\+\s'
+    let b:asmsyntax = substitute(head, '.*\sasmsyntax=\([a-zA-Z0-9]\+\)\s.*','\1', "")
+  elseif ((head =~? '\.title') || (head =~? '\.ident') || (head =~? '\.macro') || (head =~? '\.subtitle') || (head =~? '\.library'))
+    let b:asmsyntax = "vmasm"
+  endif
+endfunc
+
+" Macro (VAX)
+au BufNewFile,BufRead *.mar			setf vmasm
+
+" Atlas
+au BufNewFile,BufRead *.atl,*.as		setf atlas
+
+" Autoit v3
+au BufNewFile,BufRead *.au3			setf autoit
+
+" Autohotkey
+au BufNewFile,BufRead *.ahk			setf autohotkey
+
+" Automake
+au BufNewFile,BufRead [mM]akefile.am,GNUmakefile.am	setf automake
+
+" Autotest .at files are actually m4
+au BufNewFile,BufRead *.at			setf m4
+
+" Avenue
+au BufNewFile,BufRead *.ave			setf ave
+
+" Awk
+au BufNewFile,BufRead *.awk			setf awk
+
+" B
+au BufNewFile,BufRead *.mch,*.ref,*.imp		setf b
+
+" BASIC or Visual Basic
+au BufNewFile,BufRead *.bas			call s:FTVB("basic")
+
+" Check if one of the first five lines contains "VB_Name".  In that case it is
+" probably a Visual Basic file.  Otherwise it's assumed to be "alt" filetype.
+func! s:FTVB(alt)
+  if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'VB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)'
+    setf vb
+  else
+    exe "setf " . a:alt
+  endif
+endfunc
+
+" Visual Basic Script (close to Visual Basic)
+au BufNewFile,BufRead *.vbs,*.dsm,*.ctl		setf vb
+
+" IBasic file (similar to QBasic)
+au BufNewFile,BufRead *.iba,*.ibi		setf ibasic
+
+" FreeBasic file (similar to QBasic)
+au BufNewFile,BufRead *.fb,*.bi			setf freebasic
+
+" Batch file for MSDOS.
+au BufNewFile,BufRead *.bat,*.sys		setf dosbatch
+" *.cmd is close to a Batch file, but on OS/2 Rexx files also use *.cmd.
+au BufNewFile,BufRead *.cmd
+	\ if getline(1) =~ '^/\*' | setf rexx | else | setf dosbatch | endif
+
+" Batch file for 4DOS
+au BufNewFile,BufRead *.btm			call s:FTbtm()
+func! s:FTbtm()
+  if exists("g:dosbatch_syntax_for_btm") && g:dosbatch_syntax_for_btm
+    setf dosbatch
+  else
+    setf btm
+  endif
+endfunc
+
+" BC calculator
+au BufNewFile,BufRead *.bc			setf bc
+
+" BDF font
+au BufNewFile,BufRead *.bdf			setf bdf
+
+" BibTeX bibliography database file
+au BufNewFile,BufRead *.bib			setf bib
+
+" BibTeX Bibliography Style
+au BufNewFile,BufRead *.bst			setf bst
+
+" BIND configuration
+au BufNewFile,BufRead named.conf,rndc.conf	setf named
+
+" BIND zone
+au BufNewFile,BufRead named.root		setf bindzone
+au BufNewFile,BufRead *.db			call s:BindzoneCheck('')
+
+func! s:BindzoneCheck(default)
+  if getline(1).getline(2).getline(3).getline(4) =~ '^; <<>> DiG [0-9.]\+ <<>>\|BIND.*named\|$ORIGIN\|$TTL\|IN\s\+SOA'
+    setf bindzone
+  elseif a:default != ''
+    exe 'setf ' . a:default
+  endif
+endfunc
+
+" Blank
+au BufNewFile,BufRead *.bl			setf blank
+
+" C or lpc
+au BufNewFile,BufRead *.c			call s:FTlpc()
+
+func! s:FTlpc()
+  if exists("g:lpc_syntax_for_c")
+    let lnum = 1
+    while lnum <= 12
+      if getline(lnum) =~# '^\(//\|inherit\|private\|protected\|nosave\|string\|object\|mapping\|mixed\)'
+	setf lpc
+	return
+      endif
+      let lnum = lnum + 1
+    endwhile
+  endif
+  setf c
+endfunc
+
+" Calendar
+au BufNewFile,BufRead calendar			setf calendar
+au BufNewFile,BufRead */.calendar/*,
+	\*/share/calendar/*/calendar.*,*/share/calendar/calendar.*
+	\					call s:StarSetf('calendar')
+
+" C#
+au BufNewFile,BufRead *.cs			setf cs
+
+" Cdrdao TOC
+au BufNewFile,BufRead *.toc			setf cdrtoc
+
+" Cdrdao config
+au BufNewFile,BufRead etc/cdrdao.conf,etc/defaults/cdrdao,etc/default/cdrdao,~/.cdrdao						setf cdrdaoconf
+
+" Cfengine
+au BufNewFile,BufRead cfengine.conf		setf cfengine
+
+" Comshare Dimension Definition Language
+au BufNewFile,BufRead *.cdl			setf cdl
+
+" Conary Recipe
+au BufNewFile,BufRead *.recipe			setf conaryrecipe
+
+" Controllable Regex Mutilator
+au BufNewFile,BufRead *.crm			setf crm
+
+" Cyn++
+au BufNewFile,BufRead *.cyn			setf cynpp
+
+" Cynlib
+" .cc and .cpp files can be C++ or Cynlib.
+au BufNewFile,BufRead *.cc
+	\ if exists("cynlib_syntax_for_cc")|setf cynlib|else|setf cpp|endif
+au BufNewFile,BufRead *.cpp
+	\ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif
+
+" C++
+if has("fname_case")
+  au BufNewFile,BufRead *.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
+else
+  au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
+endif
+
+" .h files can be C, Ch C++, ObjC or ObjC++.
+" Set c_syntax_for_h if you want C, ch_syntax_for_h if you want Ch. ObjC is
+" detected automatically.
+au BufNewFile,BufRead *.h			call s:FTheader()
+
+func! s:FTheader()
+  if match(getline(1, min([line("$"), 200])), '^@\(interface\|end\|class\)') > -1
+    setf objc
+  elseif exists("c_syntax_for_h")
+    setf c
+  elseif exists("ch_syntax_for_h")
+    setf ch
+  else
+    setf cpp
+  endif
+endfunc
+
+" Ch (CHscript)
+au BufNewFile,BufRead *.chf			setf ch
+
+" TLH files are C++ headers generated by Visual C++'s #import from typelibs
+au BufNewFile,BufRead *.tlh			setf cpp
+
+" Cascading Style Sheets
+au BufNewFile,BufRead *.css			setf css
+
+" Century Term Command Scripts (*.cmd too)
+au BufNewFile,BufRead *.con			setf cterm
+
+" Changelog
+au BufNewFile,BufRead changelog.Debian,changelog.dch,NEWS.Debian,NEWS.dch
+					\	setf debchangelog
+
+au BufNewFile,BufRead [cC]hange[lL]og
+	\  if getline(1) =~ '; urgency='
+	\|   setf debchangelog
+	\| else
+	\|   setf changelog
+	\| endif
+
+au BufNewFile,BufRead NEWS
+	\  if getline(1) =~ '; urgency='
+	\|   setf debchangelog
+	\| endif
+
+" CHILL
+au BufNewFile,BufRead *..ch			setf chill
+
+" Changes for WEB and CWEB or CHILL
+au BufNewFile,BufRead *.ch			call s:FTchange()
+
+" This function checks if one of the first ten lines start with a '@'.  In
+" that case it is probably a change file.
+" If the first line starts with # or ! it's probably a ch file.
+" If a line has "main", "include", "//" ir "/*" it's probably ch.
+" Otherwise CHILL is assumed.
+func! s:FTchange()
+  let lnum = 1
+  while lnum <= 10
+    if getline(lnum)[0] == '@'
+      setf change
+      return
+    endif
+    if lnum == 1 && (getline(1)[0] == '#' || getline(1)[0] == '!')
+      setf ch
+      return
+    endif
+    if getline(lnum) =~ "MODULE"
+      setf chill
+      return
+    endif
+    if getline(lnum) =~ 'main\s*(\|#\s*include\|//'
+      setf ch
+      return
+    endif
+    let lnum = lnum + 1
+  endwhile
+  setf chill
+endfunc
+
+" ChordPro
+au BufNewFile,BufRead *.chopro,*.crd,*.cho,*.crdpro,*.chordpro	setf chordpro
+
+" Clean
+au BufNewFile,BufRead *.dcl,*.icl		setf clean
+
+" Clever
+au BufNewFile,BufRead *.eni			setf cl
+
+" Clever or dtd
+au BufNewFile,BufRead *.ent			call s:FTent()
+
+func! s:FTent()
+  " This function checks for valid cl syntax in the first five lines.
+  " Look for either an opening comment, '#', or a block start, '{".
+  " If not found, assume SGML.
+  let lnum = 1
+  while lnum < 6
+    let line = getline(lnum)
+    if line =~ '^\s*[#{]'
+      setf cl
+      return
+    elseif line !~ '^\s*$'
+      " Not a blank line, not a comment, and not a block start,
+      " so doesn't look like valid cl code.
+      break
+    endif
+    let lnum = lnum + 1
+  endw
+  setf dtd
+endfunc
+
+" Clipper (or FoxPro; could also be eviews)
+au BufNewFile,BufRead *.prg
+	\ if exists("g:filetype_prg") |
+	\   exe "setf " . g:filetype_prg |
+	\ else |
+	\   setf clipper |
+	\ endif
+
+" Cmake
+au BufNewFile,BufRead CMakeLists.txt,*.cmake,*.cmake.in		setf cmake
+
+" Cmusrc
+au BufNewFile,BufRead ~/.cmus/{autosave,rc,command-history,*.theme} setf cmusrc
+au BufNewFile,BufRead */cmus/{rc,*.theme}			setf cmusrc
+
+" Cobol
+au BufNewFile,BufRead *.cbl,*.cob,*.lib	setf cobol
+"   cobol or zope form controller python script? (heuristic)
+au BufNewFile,BufRead *.cpy
+	\ if getline(1) =~ '^##' |
+	\   setf python |
+	\ else |
+	\   setf cobol |
+	\ endif
+
+" Coco/R
+au BufNewFile,BufRead *.atg			setf coco
+
+" Cold Fusion
+au BufNewFile,BufRead *.cfm,*.cfi,*.cfc		setf cf
+
+" Configure scripts
+au BufNewFile,BufRead configure.in,configure.ac setf config
+
+" CUDA  Cumpute Unified Device Architecture
+au BufNewFile,BufRead *.cu			setf cuda
+
+" WildPackets EtherPeek Decoder
+au BufNewFile,BufRead *.dcd			setf dcd
+
+" Enlightenment configuration files
+au BufNewFile,BufRead *enlightenment/*.cfg	setf c
+
+" Eterm
+au BufNewFile,BufRead *Eterm/*.cfg		setf eterm
+
+" Lynx config files
+au BufNewFile,BufRead lynx.cfg			setf lynx
+
+" Quake
+au BufNewFile,BufRead *baseq[2-3]/*.cfg,*id1/*.cfg	setf quake
+au BufNewFile,BufRead *quake[1-3]/*.cfg			setf quake
+
+" Quake C
+au BufNewFile,BufRead *.qc			setf c
+
+" Configure files
+au BufNewFile,BufRead *.cfg			setf cfg
+
+" Communicating Sequential Processes
+au BufNewFile,BufRead *.csp,*.fdr		setf csp
+
+" CUPL logic description and simulation
+au BufNewFile,BufRead *.pld			setf cupl
+au BufNewFile,BufRead *.si			setf cuplsim
+
+" Debian Control
+au BufNewFile,BufRead */debian/control		setf debcontrol
+au BufNewFile,BufRead control
+	\  if getline(1) =~ '^Source:'
+	\|   setf debcontrol
+	\| endif
+
+" Debian Sources.list
+au BufNewFile,BufRead /etc/apt/sources.list	setf debsources
+
+" Deny hosts
+au BufNewFile,BufRead denyhosts.conf		setf denyhosts
+
+" ROCKLinux package description
+au BufNewFile,BufRead *.desc			setf desc
+
+" the D language or dtrace
+au BufNewFile,BufRead *.d			call s:DtraceCheck()
+
+func! s:DtraceCheck()
+  let lines = getline(1, min([line("$"), 100]))
+  if match(lines, '^#!\S\+dtrace\|#pragma\s\+D\s\+option\|:\S\{-}:\S\{-}:') > -1
+    setf dtrace
+  else
+    setf d
+  endif
+endfunc
+
+" Desktop files
+au BufNewFile,BufRead *.desktop,.directory	setf desktop
+
+" Dict config
+au BufNewFile,BufRead dict.conf,.dictrc		setf dictconf
+
+" Dictd config
+au BufNewFile,BufRead dictd.conf		setf dictdconf
+
+" Diff files
+au BufNewFile,BufRead *.diff,*.rej,*.patch	setf diff
+
+" Dircolors
+au BufNewFile,BufRead .dir_colors,/etc/DIR_COLORS	setf dircolors
+
+" Diva (with Skill) or InstallShield
+au BufNewFile,BufRead *.rul
+	\ if getline(1).getline(2).getline(3).getline(4).getline(5).getline(6) =~? 'InstallShield' |
+	\   setf ishd |
+	\ else |
+	\   setf diva |
+	\ endif
+
+" DCL (Digital Command Language - vms) or DNS zone file
+au BufNewFile,BufRead *.com			call s:BindzoneCheck('dcl')
+
+" DOT
+au BufNewFile,BufRead *.dot			setf dot
+
+" Dylan - lid files
+au BufNewFile,BufRead *.lid			setf dylanlid
+
+" Dylan - intr files (melange)
+au BufNewFile,BufRead *.intr			setf dylanintr
+
+" Dylan
+au BufNewFile,BufRead *.dylan			setf dylan
+
+" Microsoft Module Definition
+au BufNewFile,BufRead *.def			setf def
+
+" Dracula
+au BufNewFile,BufRead *.drac,*.drc,*lvs,*lpe	setf dracula
+
+" dsl
+au BufNewFile,BufRead *.dsl			setf dsl
+
+" DTD (Document Type Definition for XML)
+au BufNewFile,BufRead *.dtd			setf dtd
+
+" EDIF (*.edf,*.edif,*.edn,*.edo)
+au BufNewFile,BufRead *.ed\(f\|if\|n\|o\)	setf edif
+
+" Embedix Component Description
+au BufNewFile,BufRead *.ecd			setf ecd
+
+" Eiffel or Specman
+au BufNewFile,BufRead *.e,*.E			call s:FTe()
+
+" Elinks configuration
+au BufNewFile,BufRead */etc/elinks.conf,*/.elinks/elinks.conf	setf elinks
+
+func! s:FTe()
+  let n = 1
+  while n < 100 && n < line("$")
+    if getline(n) =~ "^\\s*\\(<'\\|'>\\)\\s*$"
+      setf specman
+      return
+    endif
+    let n = n + 1
+  endwhile
+  setf eiffel
+endfunc
+
+" ERicsson LANGuage; Yaws is erlang too
+au BufNewFile,BufRead *.erl,*.yaws		setf erlang
+
+" Elm Filter Rules file
+au BufNewFile,BufRead filter-rules		setf elmfilt
+
+" ESMTP rc file
+au BufNewFile,BufRead *esmtprc			setf esmtprc
+
+" ESQL-C
+au BufNewFile,BufRead *.ec,*.EC			setf esqlc
+
+" Esterel
+au BufNewFile,BufRead *.strl			setf esterel
+
+" Essbase script
+au BufNewFile,BufRead *.csc			setf csc
+
+" Exim
+au BufNewFile,BufRead exim.conf			setf exim
+
+" Expect
+au BufNewFile,BufRead *.exp			setf expect
+
+" Exports
+au BufNewFile,BufRead exports			setf exports
+
+" Factor
+au BufNewFile,BufRead *.factor			setf factor
+
+" Fetchmail RC file
+au BufNewFile,BufRead .fetchmailrc		setf fetchmail
+
+" FlexWiki
+au BufNewFile,BufRead *.wiki			setf flexwiki
+
+" Focus Executable
+au BufNewFile,BufRead *.fex,*.focexec		setf focexec
+
+" Focus Master file (but not for auto.master)
+au BufNewFile,BufRead auto.master		setf conf
+au BufNewFile,BufRead *.mas,*.master		setf master
+
+" Forth
+au BufNewFile,BufRead *.fs,*.ft			setf forth
+
+" Reva Forth
+au BufNewFile,BufRead *.frt			setf reva
+
+" Fortran
+if has("fname_case")
+  au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95	 setf fortran
+endif
+au BufNewFile,BufRead   *.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95  setf fortran
+
+" FStab
+au BufNewFile,BufRead fstab,mtab		setf fstab
+
+" GDB command files
+au BufNewFile,BufRead .gdbinit			setf gdb
+
+" GDMO
+au BufNewFile,BufRead *.mo,*.gdmo		setf gdmo
+
+" Gedcom
+au BufNewFile,BufRead *.ged			setf gedcom
+
+" Git
+autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG    setf gitcommit
+autocmd BufNewFile,BufRead *.git/config,.gitconfig setf gitconfig
+autocmd BufNewFile,BufRead git-rebase-todo         setf gitrebase
+autocmd BufNewFile,BufRead .msg.[0-9]*
+      \ if getline(1) =~ '^From.*# This line is ignored.$' |
+      \   setf gitsendemail |
+      \ endif
+autocmd BufNewFile,BufRead *.git/**
+      \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
+      \   setf git |
+      \ endif
+
+" Gkrellmrc
+au BufNewFile,BufRead gkrellmrc,gkrellmrc_?	setf gkrellmrc
+
+" GP scripts (2.0 and onward)
+au BufNewFile,BufRead *.gp,.gprc		setf gp
+
+" GPG
+au BufNewFile,BufRead */.gnupg/options		setf gpg
+au BufNewFile,BufRead */.gnupg/gpg.conf		setf gpg
+au BufNewFile,BufRead /usr/**/gnupg/options.skel setf gpg
+
+" Gnuplot scripts
+au BufNewFile,BufRead *.gpi			setf gnuplot
+
+" GrADS scripts
+au BufNewFile,BufRead *.gs			setf grads
+
+" Gretl
+au BufNewFile,BufRead *.gretl			setf gretl
+
+" Groovy
+au BufNewFile,BufRead *.groovy			setf groovy
+
+" GNU Server Pages
+au BufNewFile,BufRead *.gsp			setf gsp
+
+" Group file
+au BufNewFile,BufRead /etc/group		setf group
+
+" GTK RC
+au BufNewFile,BufRead .gtkrc,gtkrc		setf gtkrc
+
+" Hamster Classic | Playground files
+au BufNewFile,BufRead *.hsc,*.hsm		setf hamster
+
+" Haskell
+au BufNewFile,BufRead *.hs			setf haskell
+au BufNewFile,BufRead *.lhs			setf lhaskell
+au BufNewFile,BufRead *.chs			setf chaskell
+
+" Haste
+au BufNewFile,BufRead *.ht			setf haste
+
+" Hercules
+au BufNewFile,BufRead *.vc,*.ev,*.rs,*.sum,*.errsum	setf hercules
+
+" HEX (Intel)
+au BufNewFile,BufRead *.hex,*.h32		setf hex
+
+" Tilde (must be before HTML)
+au BufNewFile,BufRead *.t.html			setf tilde
+
+" HTML (.shtml and .stm for server side)
+au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm  call s:FThtml()
+
+" Distinguish between HTML, XHTML and Django
+func! s:FThtml()
+  let n = 1
+  while n < 10 && n < line("$")
+    if getline(n) =~ '\<DTD\s\+XHTML\s'
+      setf xhtml
+      return
+    endif
+    if getline(n) =~ '{%\s*\(extends\|block\)\>'
+      setf htmldjango
+      return
+    endif
+    let n = n + 1
+  endwhile
+  setf html
+endfunc
+
+" HTML with Ruby - eRuby
+au BufNewFile,BufRead *.erb,*.rhtml		setf eruby
+
+" HTML with M4
+au BufNewFile,BufRead *.html.m4			setf htmlm4
+
+" HTML Cheetah template
+au BufNewFile,BufRead *.tmpl			setf htmlcheetah
+
+" Host config
+au BufNewFile,BufRead /etc/host.conf		setf hostconf
+
+" Hyper Builder
+au BufNewFile,BufRead *.hb			setf hb
+
+" Icon
+au BufNewFile,BufRead *.icn			setf icon
+
+" IDL (Interface Description Language)
+au BufNewFile,BufRead *.idl			call s:FTidl()
+
+" Distinguish between standard IDL and MS-IDL
+func! s:FTidl()
+  let n = 1
+  while n < 50 && n < line("$")
+    if getline(n) =~ '^\s*import\s\+"\(unknwn\|objidl\)\.idl"'
+      setf msidl
+      return
+    endif
+    let n = n + 1
+  endwhile
+  setf idl
+endfunc
+
+" Microsoft IDL (Interface Description Language)  Also *.idl
+" MOF = WMI (Windows Management Instrumentation) Managed Object Format
+au BufNewFile,BufRead *.odl,*.mof		setf msidl
+
+" Icewm menu
+au BufNewFile,BufRead */.icewm/menu		setf icemenu
+
+" Indent profile (must come before IDL *.pro!)
+au BufNewFile,BufRead .indent.pro		setf indent
+au BufNewFile,BufRead indent.pro		call s:ProtoCheck('indent')
+
+" IDL (Interactive Data Language)
+au BufNewFile,BufRead *.pro			call s:ProtoCheck('idlang')
+
+" Distinguish between "default" and Cproto prototype file. */
+func! s:ProtoCheck(default)
+  " Cproto files have a comment in the first line and a function prototype in
+  " the second line, it always ends in ";".  Indent files may also have
+  " comments, thus we can't match comments to see the difference.
+  if getline(2) =~ ';$'
+    setf cpp
+  else
+    exe 'setf ' . a:default
+  endif
+endfunc
+
+
+" Indent RC
+au BufNewFile,BufRead indentrc			setf indentrc
+
+" Inform
+au BufNewFile,BufRead *.inf,*.INF		setf inform
+
+" Initng
+au BufNewFile,BufRead /etc/initng/**/*.i,*.ii	setf initng
+
+" Ipfilter
+au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules	setf ipfilter
+
+" Informix 4GL (source - canonical, include file, I4GL+M4 preproc.)
+au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl	setf fgl
+
+" .INI file for MSDOS
+au BufNewFile,BufRead *.ini			setf dosini
+
+" SysV Inittab
+au BufNewFile,BufRead inittab			setf inittab
+
+" Inno Setup
+au BufNewFile,BufRead *.iss			setf iss
+
+" JAL
+au BufNewFile,BufRead *.jal,*.JAL		setf jal
+
+" Jam
+au BufNewFile,BufRead *.jpl,*.jpr		setf jam
+
+" Java
+au BufNewFile,BufRead *.java,*.jav		setf java
+
+" JavaCC
+au BufNewFile,BufRead *.jj,*.jjt		setf javacc
+
+" JavaScript, ECMAScript
+au BufNewFile,BufRead *.js,*.javascript,*.es	setf javascript
+
+" Java Server Pages
+au BufNewFile,BufRead *.jsp			setf jsp
+
+" Java Properties resource file (note: doesn't catch font.properties.pl)
+au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_??	setf jproperties
+au BufNewFile,BufRead *.properties_??_??_*	call s:StarSetf('jproperties')
+
+" Jess
+au BufNewFile,BufRead *.clp			setf jess
+
+" Jgraph
+au BufNewFile,BufRead *.jgr			setf jgraph
+
+" Kixtart
+au BufNewFile,BufRead *.kix			setf kix
+
+" Kimwitu[++]
+au BufNewFile,BufRead *.k			setf kwt
+
+" KDE script
+au BufNewFile,BufRead *.ks			setf kscript
+
+" Kconfig
+au BufNewFile,BufRead Kconfig,Kconfig.debug	setf kconfig
+
+" Lace (ISE)
+au BufNewFile,BufRead *.ace,*.ACE		setf lace
+
+" Latte
+au BufNewFile,BufRead *.latte,*.lte		setf latte
+
+" Limits
+au BufNewFile,BufRead /etc/limits		setf limits
+
+" LambdaProlog (*.mod too, see Modsim)
+au BufNewFile,BufRead *.sig			setf lprolog
+
+" LDAP LDIF
+au BufNewFile,BufRead *.ldif			setf ldif
+
+" Ld loader
+au BufNewFile,BufRead *.ld			setf ld
+
+" Lex
+au BufNewFile,BufRead *.lex,*.l			setf lex
+
+" Libao
+au BufNewFile,BufRead /etc/libao.conf,*/.libao	setf libao
+
+" Libsensors
+au BufNewFile,BufRead /etc/sensors.conf		setf sensors
+
+" LFTP
+au BufNewFile,BufRead lftp.conf,.lftprc,*lftp/rc	setf lftp
+
+" Lifelines (or Lex for C++!)
+au BufNewFile,BufRead *.ll			setf lifelines
+
+" Lilo: Linux loader
+au BufNewFile,BufRead lilo.conf*		call s:StarSetf('lilo')
+
+" Lisp (*.el = ELisp, *.cl = Common Lisp, *.jl = librep Lisp)
+if has("fname_case")
+  au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,*.L,.emacs,.sawfishrc setf lisp
+else
+  au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,.emacs,.sawfishrc setf lisp
+endif
+
+" SBCL implementation of Common Lisp
+au BufNewFile,BufRead sbclrc,.sbclrc		setf lisp
+
+" Lite
+au BufNewFile,BufRead *.lite,*.lt		setf lite
+
+" LiteStep RC files
+au BufNewFile,BufRead */LiteStep/*/*.rc		setf litestep
+
+" Login access
+au BufNewFile,BufRead /etc/login.access		setf loginaccess
+
+" Login defs
+au BufNewFile,BufRead /etc/login.defs		setf logindefs
+
+" Logtalk
+au BufNewFile,BufRead *.lgt			setf logtalk
+
+" LOTOS
+au BufNewFile,BufRead *.lot,*.lotos		setf lotos
+
+" Lout (also: *.lt)
+au BufNewFile,BufRead *.lou,*.lout		setf lout
+
+" Lua
+au BufNewFile,BufRead *.lua			setf lua
+
+" Linden Scripting Language (Second Life)
+au BufNewFile,BufRead *.lsl			setf lsl
+
+" Lynx style file (or LotusScript!)
+au BufNewFile,BufRead *.lss			setf lss
+
+" M4
+au BufNewFile,BufRead *.m4
+	\ if expand("<afile>") !~? 'html.m4$\|fvwm2rc' | setf m4 | endif
+
+" MaGic Point
+au BufNewFile,BufRead *.mgp			setf mgp
+
+" Mail (for Elm, trn, mutt, muttng, rn, slrn)
+au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
+
+" Mail aliases
+au BufNewFile,BufRead /etc/mail/aliases,/etc/aliases	setf mailaliases
+
+" Mailcap configuration file
+au BufNewFile,BufRead .mailcap,mailcap		setf mailcap
+
+" Makefile
+au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make
+
+" MakeIndex
+au BufNewFile,BufRead *.ist,*.mst		setf ist
+
+" Manpage
+au BufNewFile,BufRead *.man			setf man
+
+" Man config
+au BufNewFile,BufRead /etc/man.conf,man.config	setf manconf
+
+" Maple V
+au BufNewFile,BufRead *.mv,*.mpl,*.mws		setf maple
+
+" Mason
+au BufNewFile,BufRead *.mason,*.mhtml		setf mason
+
+" Matlab or Objective C
+au BufNewFile,BufRead *.m			call s:FTm()
+
+func! s:FTm()
+  let n = 1
+  while n < 10
+    let line = getline(n)
+    if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)'
+      setf objc
+      return
+    endif
+    if line =~ '^\s*%'
+      setf matlab
+      return
+    endif
+    if line =~ '^\s*(\*'
+      setf mma
+      return
+    endif
+    let n = n + 1
+  endwhile
+  if exists("g:filetype_m")
+    exe "setf " . g:filetype_m
+  else
+    setf matlab
+  endif
+endfunc
+
+" Mathematica notebook
+au BufNewFile,BufRead *.nb			setf mma
+
+" Maya Extension Language
+au BufNewFile,BufRead *.mel			setf mel
+
+" Messages
+au BufNewFile,BufRead /var/log/messages,/var/log/messages.*[0-9]  setf messages
+
+" Metafont
+au BufNewFile,BufRead *.mf			setf mf
+
+" MetaPost
+au BufNewFile,BufRead *.mp			setf mp
+
+" MGL
+au BufNewFile,BufRead *.mgl			setf mgl
+
+" MMIX or VMS makefile
+au BufNewFile,BufRead *.mms			call s:FTmms()
+
+" Symbian meta-makefile definition (MMP)
+au BufNewFile,BufRead *.mmp			setf mmp
+
+func! s:FTmms()
+  let n = 1
+  while n < 10
+    let line = getline(n)
+    if line =~ '^\s*\(%\|//\)' || line =~ '^\*'
+      setf mmix
+      return
+    endif
+    if line =~ '^\s*#'
+      setf make
+      return
+    endif
+    let n = n + 1
+  endwhile
+  setf mmix
+endfunc
+
+
+" Modsim III (or LambdaProlog)
+au BufNewFile,BufRead *.mod
+	\ if getline(1) =~ '\<module\>' |
+	\   setf lprolog |
+	\ else |
+	\   setf modsim3 |
+	\ endif
+
+" Modula 2
+au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi setf modula2
+
+" Modula 3 (.m3, .i3, .mg, .ig)
+au BufNewFile,BufRead *.[mi][3g]		setf modula3
+
+" Monk
+au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc	setf monk
+
+" MOO
+au BufNewFile,BufRead *.moo			setf moo
+
+" Modconf
+au BufNewFile,BufRead /etc/modules.conf,/etc/conf.modules	setf modconf
+au BufNewFile,BufRead /etc/modutils/*
+	\ if executable(expand("<afile>")) != 1
+	\|  call s:StarSetf('modconf')
+	\|endif
+
+" Mplayer config
+au BufNewFile,BufRead mplayer.conf,*/.mplayer/config	setf mplayerconf
+
+" Moterola S record
+au BufNewFile,BufRead *.s19,*.s28,*.s37		setf srec
+
+" Mrxvtrc
+au BufNewFile,BufRead mrxvtrc,.mrxvtrc		setf mrxvtrc
+
+" Msql
+au BufNewFile,BufRead *.msql			setf msql
+
+" Mysql
+au BufNewFile,BufRead *.mysql			setf mysql
+
+" M$ Resource files
+au BufNewFile,BufRead *.rc			setf rc
+
+" MuPAD source
+au BufRead,BufNewFile *.mu			setf mupad
+
+" Mush
+au BufNewFile,BufRead *.mush			setf mush
+
+" Mutt setup file (also for Muttng)
+au BufNewFile,BufRead Mutt{ng,}rc		setf muttrc
+
+" Nano
+au BufNewFile,BufRead /etc/nanorc,.nanorc	setf nanorc
+
+" Nastran input/DMAP
+"au BufNewFile,BufRead *.dat			setf nastran
+
+" Natural
+au BufNewFile,BufRead *.NS[ACGLMNPS]		setf natural
+
+" Netrc
+au BufNewFile,BufRead .netrc			setf netrc
+
+" Novell netware batch files
+au BufNewFile,BufRead *.ncf			setf ncf
+
+" Nroff/Troff (*.ms and *.t are checked below)
+au BufNewFile,BufRead *.me
+	\ if expand("<afile>") != "read.me" && expand("<afile>") != "click.me" |
+	\   setf nroff |
+	\ endif
+au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom	setf nroff
+au BufNewFile,BufRead *.[1-9]			call s:FTnroff()
+
+" This function checks if one of the first five lines start with a dot.  In
+" that case it is probably an nroff file: 'filetype' is set and 1 is returned.
+func! s:FTnroff()
+  if getline(1)[0] . getline(2)[0] . getline(3)[0] . getline(4)[0] . getline(5)[0] =~ '\.'
+    setf nroff
+    return 1
+  endif
+  return 0
+endfunc
+
+" Nroff or Objective C++
+au BufNewFile,BufRead *.mm			call s:FTmm()
+
+func! s:FTmm()
+  let n = 1
+  while n < 10
+    let line = getline(n)
+    if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)'
+      setf objcpp
+      return
+    endif
+    let n = n + 1
+  endwhile
+  setf nroff
+endfunc
+
+" Not Quite C
+au BufNewFile,BufRead *.nqc			setf nqc
+
+" NSIS
+au BufNewFile,BufRead *.nsi			setf nsis
+
+" OCAML
+au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly	setf ocaml
+
+" Occam
+au BufNewFile,BufRead *.occ			setf occam
+
+" Omnimark
+au BufNewFile,BufRead *.xom,*.xin		setf omnimark
+
+" OpenROAD
+au BufNewFile,BufRead *.or			setf openroad
+
+" OPL
+au BufNewFile,BufRead *.[Oo][Pp][Ll]		setf opl
+
+" Oracle config file
+au BufNewFile,BufRead *.ora			setf ora
+
+" Packet filter conf
+au BufNewFile,BufRead pf.conf			setf pf
+
+" Pam conf
+au BufNewFile,BufRead /etc/pam.conf		setf pamconf
+
+" PApp
+au BufNewFile,BufRead *.papp,*.pxml,*.pxsl	setf papp
+
+" Password file
+au BufNewFile,BufRead /etc/passwd,/etc/shadow,/etc/shadow- setf passwd
+
+" Pascal (also *.p)
+au BufNewFile,BufRead *.pas			setf pascal
+
+" Delphi project file
+au BufNewFile,BufRead *.dpr			setf pascal
+
+" PDF
+au BufNewFile,BufRead *.pdf			setf pdf
+
+" Perl
+if has("fname_case")
+  au BufNewFile,BufRead *.pl,*.PL		call s:FTpl()
+else
+  au BufNewFile,BufRead *.pl			call s:FTpl()
+endif
+au BufNewFile,BufRead *.plx			setf perl
+
+func! s:FTpl()
+  if exists("g:filetype_pl")
+    exe "setf " . g:filetype_pl
+  else
+    " recognize Prolog by specific text in the first non-empty line
+    " require a blank after the '%' because Perl uses "%list" and "%translate"
+    let l = getline(nextnonblank(1))
+    if l =~ '\<prolog\>' || l =~ '^\s*\(%\+\(\s\|$\)\|/\*\)' || l =~ ':-'
+      setf prolog
+    else
+      setf perl
+    endif
+  endif
+endfunc
+
+" Perl, XPM or XPM2
+au BufNewFile,BufRead *.pm
+	\ if getline(1) =~ "XPM2" |
+	\   setf xpm2 |
+	\ elseif getline(1) =~ "XPM" |
+	\   setf xpm |
+	\ else |
+	\   setf perl |
+	\ endif
+
+" Perl POD
+au BufNewFile,BufRead *.pod			setf pod
+
+" Php, php3, php4, etc.
+" Also Phtml (was used for PHP 2 in the past)
+" Also .ctp for Cake template file
+au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp	setf php
+
+" Pike
+au BufNewFile,BufRead *.pike,*.lpc,*.ulpc,*.pmod setf pike
+
+" Pinfo config
+au BufNewFile,BufRead */etc/pinforc,*/.pinforc	setf pinfo
+
+" Palm Resource compiler
+au BufNewFile,BufRead *.rcp			setf pilrc
+
+" Pine config
+au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex		setf pine
+
+" PL/M (also: *.inp)
+au BufNewFile,BufRead *.plm,*.p36,*.pac		setf plm
+
+" PL/SQL
+au BufNewFile,BufRead *.pls,*.plsql		setf plsql
+
+" PLP
+au BufNewFile,BufRead *.plp			setf plp
+
+" PO and PO template (GNU gettext)
+au BufNewFile,BufRead *.po,*.pot		setf po
+
+" Postfix main config
+au BufNewFile,BufRead main.cf			setf pfmain
+
+" PostScript (+ font files, encapsulated PostScript, Adobe Illustrator)
+au BufNewFile,BufRead *.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai	  setf postscr
+
+" PostScript Printer Description
+au BufNewFile,BufRead *.ppd			setf ppd
+
+" Povray
+au BufNewFile,BufRead *.pov			setf pov
+
+" Povray configuration
+au BufNewFile,BufRead .povrayrc			setf povini
+
+" Povray, PHP or assembly
+au BufNewFile,BufRead *.inc			call s:FTinc()
+
+func! s:FTinc()
+  if exists("g:filetype_inc")
+    exe "setf " . g:filetype_inc
+  else
+    let lines = getline(1).getline(2).getline(3)
+    if lines =~? "perlscript"
+      setf aspperl
+    elseif lines =~ "<%"
+      setf aspvbs
+    elseif lines =~ "<?"
+      setf php
+    else
+      call s:FTasmsyntax()
+      if exists("b:asmsyntax")
+	exe "setf " . b:asmsyntax
+      else
+	setf pov
+      endif
+    endif
+  endif
+endfunc
+
+" Printcap and Termcap
+au BufNewFile,BufRead *printcap
+	\ let b:ptcap_type = "print" | setf ptcap
+au BufNewFile,BufRead *termcap
+	\ let b:ptcap_type = "term" | setf ptcap
+
+" PCCTS / ANTRL
+"au BufNewFile,BufRead *.g			setf antrl
+au BufNewFile,BufRead *.g			setf pccts
+
+" PPWizard
+au BufNewFile,BufRead *.it,*.ih			setf ppwiz
+
+" Oracle Pro*C/C++
+au BufNewFile,BufRead *.pc			setf proc
+
+" Privoxy actions file
+au BufNewFile,BufRead *.action			setf privoxy
+
+" Procmail
+au BufNewFile,BufRead .procmail,.procmailrc	setf procmail
+
+" Progress or CWEB
+au BufNewFile,BufRead *.w			call s:FTprogress_cweb()
+
+func! s:FTprogress_cweb()
+  if exists("g:filetype_w")
+    exe "setf " . g:filetype_w
+    return
+  endif
+  if getline(1) =~ '&ANALYZE' || getline(3) =~ '&GLOBAL-DEFINE'
+    setf progress
+  else
+    setf cweb
+  endif
+endfunc
+
+" Progress or assembly
+au BufNewFile,BufRead *.i			call s:FTprogress_asm()
+
+func! s:FTprogress_asm()
+  if exists("g:filetype_i")
+    exe "setf " . g:filetype_i
+    return
+  endif
+  " This function checks for an assembly comment the first ten lines.
+  " If not found, assume Progress.
+  let lnum = 1
+  while lnum <= 10 && lnum < line('$')
+    let line = getline(lnum)
+    if line =~ '^\s*;' || line =~ '^\*'
+      call s:FTasm()
+      return
+    elseif line !~ '^\s*$' || line =~ '^/\*'
+      " Not an empty line: Doesn't look like valid assembly code.
+      " Or it looks like a Progress /* comment
+      break
+    endif
+    let lnum = lnum + 1
+  endw
+  setf progress
+endfunc
+
+" Progress or Pascal
+au BufNewFile,BufRead *.p			call s:FTprogress_pascal()
+
+func! s:FTprogress_pascal()
+  if exists("g:filetype_p")
+    exe "setf " . g:filetype_p
+    return
+  endif
+  " This function checks for valid Pascal syntax in the first ten lines.
+  " Look for either an opening comment or a program start.
+  " If not found, assume Progress.
+  let lnum = 1
+  while lnum <= 10 && lnum < line('$')
+    let line = getline(lnum)
+    if line =~ '^\s*\(program\|unit\|procedure\|function\|const\|type\|var\)\>'
+	\ || line =~ '^\s*{' || line =~ '^\s*(\*'
+      setf pascal
+      return
+    elseif line !~ '^\s*$' || line =~ '^/\*'
+      " Not an empty line: Doesn't look like valid Pascal code.
+      " Or it looks like a Progress /* comment
+      break
+    endif
+    let lnum = lnum + 1
+  endw
+  setf progress
+endfunc
+
+
+" Software Distributor Product Specification File (POSIX 1387.2-1995)
+au BufNewFile,BufRead *.psf			setf psf
+au BufNewFile,BufRead INDEX,INFO
+	\ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' |
+	\   setf psf |
+	\ endif
+
+" Prolog
+au BufNewFile,BufRead *.pdb			setf prolog
+
+" Promela
+au BufNewFile,BufRead *.pml			setf promela
+
+" Protocols
+au BufNewFile,BufRead /etc/protocols		setf protocols
+
+" Pyrex
+au BufNewFile,BufRead *.pyx,*.pxd		setf pyrex
+
+" Python
+au BufNewFile,BufRead *.py,*.pyw		setf python
+
+" Radiance
+au BufNewFile,BufRead *.rad,*.mat		setf radiance
+
+" Ratpoison config/command files
+au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc	setf ratpoison
+
+" RCS file
+au BufNewFile,BufRead *\,v			setf rcs
+
+" Readline
+au BufNewFile,BufRead .inputrc,inputrc		setf readline
+
+" Registry for MS-Windows
+au BufNewFile,BufRead *.reg
+	\ if getline(1) =~? '^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$' | setf registry | endif
+
+" Renderman Interface Bytestream
+au BufNewFile,BufRead *.rib			setf rib
+
+" Rexx
+au BufNewFile,BufRead *.rexx,*.rex,*.jrexx,*.rxj,*.orx	setf rexx
+
+" R (Splus)
+if has("fname_case")
+  au BufNewFile,BufRead *.s,*.S			setf r
+else
+  au BufNewFile,BufRead *.s			setf r
+endif
+
+" R Help file
+if has("fname_case")
+  au BufNewFile,BufRead *.rd,*.Rd		setf rhelp
+else
+  au BufNewFile,BufRead *.rd			setf rhelp
+endif
+
+" R noweb file
+if has("fname_case")
+  au BufNewFile,BufRead *.Rnw,*.rnw,*.Snw,*.snw		setf rnoweb
+else
+  au BufNewFile,BufRead *.rnw,*.snw			setf rnoweb
+endif
+
+" Rexx, Rebol or R
+au BufNewFile,BufRead *.r,*.R			call s:FTr()
+
+func! s:FTr()
+  let max = line("$") > 50 ? 50 : line("$")
+
+  for n in range(1, max)
+    " Rebol is easy to recognize, check for that first
+    if getline(n) =~? '\<REBOL\>'
+      setf rebol
+      return
+    endif
+  endfor
+
+  for n in range(1, max)
+    " R has # comments
+    if getline(n) =~ '^\s*#'
+      setf r
+      return
+    endif
+    " Rexx has /* comments */
+    if getline(n) =~ '^\s*/\*'
+      setf rexx
+      return
+    endif
+  endfor
+
+  " Nothing recognized, assume Rexx
+  setf rexx
+endfunc
+
+" Remind
+au BufNewFile,BufRead .reminders*		call s:StarSetf('remind')
+
+" Resolv.conf
+au BufNewFile,BufRead resolv.conf		setf resolv
+
+" Relax NG Compact
+au BufNewFile,BufRead *.rnc			setf rnc
+
+" RPL/2
+au BufNewFile,BufRead *.rpl			setf rpl
+
+" Robots.txt
+au BufNewFile,BufRead robots.txt		setf robots
+
+" Rpcgen
+au BufNewFile,BufRead *.x			setf rpcgen
+
+" reStructuredText Documentation Format
+au BufNewFile,BufRead *.rst			setf rst
+
+" RTF
+au BufNewFile,BufRead *.rtf			setf rtf
+
+" Ruby
+au BufNewFile,BufRead *.rb,*.rbw,*.gem,*.gemspec	setf ruby
+
+" Ruby on Rails
+au BufNewFile,BufRead *.builder,*.rxml,*.rjs	setf ruby
+
+" Rantfile and Rakefile is like Ruby
+au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake	setf ruby
+
+" S-lang (or shader language!)
+au BufNewFile,BufRead *.sl			setf slang
+
+" Samba config
+au BufNewFile,BufRead smb.conf			setf samba
+
+" SAS script
+au BufNewFile,BufRead *.sas			setf sas
+
+" Sather
+au BufNewFile,BufRead *.sa			setf sather
+
+" Scilab
+au BufNewFile,BufRead *.sci,*.sce		setf scilab
+
+" SD: Streaming Descriptors
+au BufNewFile,BufRead *.sd			setf sd
+
+" SDL
+au BufNewFile,BufRead *.sdl,*.pr		setf sdl
+
+" sed
+au BufNewFile,BufRead *.sed			setf sed
+
+" Sieve (RFC 3028)
+au BufNewFile,BufRead *.siv			setf sieve
+
+" Sendmail
+au BufNewFile,BufRead sendmail.cf		setf sm
+
+" Sendmail .mc files are actually m4.  Could also be MS Message text file.
+au BufNewFile,BufRead *.mc			call s:McSetf()
+
+func! s:McSetf()
+  " Rely on the file to start with a comment.
+  " MS message text files use ';', Sendmail files use '#' or 'dnl'
+  for lnum in range(1, min([line("$"), 20]))
+    let line = getline(lnum)
+    if line =~ '^\s*\(#\|dnl\)'
+      setf m4  " Sendmail .mc file
+      return
+    elseif line =~ '^\s*;'
+      setf msmessages  " MS Message text file
+      return
+    endif
+  endfor
+  setf m4  " Default: Sendmail .mc file
+endfunc
+
+" Services
+au BufNewFile,BufRead /etc/services		setf services
+
+" Service Location config
+au BufNewFile,BufRead /etc/slp.conf		setf slpconf
+
+" Service Location registration
+au BufNewFile,BufRead /etc/slp.reg		setf slpreg
+
+" Service Location SPI
+au BufNewFile,BufRead /etc/slp.spi		setf slpspi
+
+" Setserial config
+au BufNewFile,BufRead /etc/serial.conf		setf setserial
+
+" SGML
+au BufNewFile,BufRead *.sgm,*.sgml
+	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' |
+	\   setf sgmllnx |
+	\ elseif getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' |
+	\   let b:docbk_type="sgml" |
+	\   setf docbk |
+	\ else |
+	\   setf sgml |
+	\ endif
+
+" SGMLDECL
+au BufNewFile,BufRead *.decl,*.dcl,*.dec
+	\ if getline(1).getline(2).getline(3) =~? '^<!SGML' |
+	\    setf sgmldecl |
+	\ endif
+
+" SGML catalog file
+au BufNewFile,BufRead catalog			setf catalog
+au BufNewFile,BufRead sgml.catalog*		call s:StarSetf('catalog')
+
+" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
+" Gentoo ebuilds are actually bash scripts
+au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash_profile*,.bash_logout*,*.bash,*.ebuild call SetFileTypeSH("bash")
+au BufNewFile,BufRead .kshrc*,*.ksh call SetFileTypeSH("ksh")
+au BufNewFile,BufRead /etc/profile,.profile*,*.sh,*.env call SetFileTypeSH(getline(1))
+
+" Also called from scripts.vim.
+func! SetFileTypeSH(name)
+  if expand("<amatch>") =~ g:ft_ignore_pat
+    return
+  endif
+  if a:name =~ '\<ksh\>'
+    let b:is_kornshell = 1
+    if exists("b:is_bash")
+      unlet b:is_bash
+    endif
+    if exists("b:is_sh")
+      unlet b:is_sh
+    endif
+  elseif exists("g:bash_is_sh") || a:name =~ '\<bash\>' || a:name =~ '\<bash2\>'
+    let b:is_bash = 1
+    if exists("b:is_kornshell")
+      unlet b:is_kornshell
+    endif
+    if exists("b:is_sh")
+      unlet b:is_sh
+    endif
+  elseif a:name =~ '\<sh\>'
+    let b:is_sh = 1
+    if exists("b:is_kornshell")
+      unlet b:is_kornshell
+    endif
+    if exists("b:is_bash")
+      unlet b:is_bash
+    endif
+  endif
+  call SetFileTypeShell("sh")
+endfunc
+
+" For shell-like file types, check for an "exec" command hidden in a comment,
+" as used for Tcl.
+" Also called from scripts.vim, thus can't be local to this script.
+func! SetFileTypeShell(name)
+  if expand("<amatch>") =~ g:ft_ignore_pat
+    return
+  endif
+  let l = 2
+  while l < 20 && l < line("$") && getline(l) =~ '^\s*\(#\|$\)'
+    " Skip empty and comment lines.
+    let l = l + 1
+  endwhile
+  if l < line("$") && getline(l) =~ '\s*exec\s' && getline(l - 1) =~ '^\s*#.*\\$'
+    " Found an "exec" line after a comment with continuation
+    let n = substitute(getline(l),'\s*exec\s\+\([^ ]*/\)\=', '', '')
+    if n =~ '\<tclsh\|\<wish'
+      setf tcl
+      return
+    endif
+  endif
+  exe "setf " . a:name
+endfunc
+
+" tcsh scripts
+au BufNewFile,BufRead .tcshrc*,*.tcsh,tcsh.tcshrc,tcsh.login	call SetFileTypeShell("tcsh")
+
+" csh scripts, but might also be tcsh scripts (on some systems csh is tcsh)
+au BufNewFile,BufRead .login*,.cshrc*,csh.cshrc,csh.login,csh.logout,*.csh,.alias  call s:CSH()
+
+func! s:CSH()
+  if exists("g:filetype_csh")
+    call SetFileTypeShell(g:filetype_csh)
+  elseif &shell =~ "tcsh"
+    call SetFileTypeShell("tcsh")
+  else
+    call SetFileTypeShell("csh")
+  endif
+endfunc
+
+" Z-Shell script
+au BufNewFile,BufRead .zprofile,/etc/zprofile,.zfbfmarks  setf zsh
+au BufNewFile,BufRead .zsh*,.zlog*,.zcompdump*  call s:StarSetf('zsh')
+
+" Scheme
+au BufNewFile,BufRead *.scm,*.ss		setf scheme
+
+" Screen RC
+au BufNewFile,BufRead .screenrc,screenrc	setf screen
+
+" Simula
+au BufNewFile,BufRead *.sim			setf simula
+
+" SINDA
+au BufNewFile,BufRead *.sin,*.s85		setf sinda
+
+" SiSU
+au BufNewFile,BufRead *.sst,*.ssm,*.ssi,*.-sst,*._sst setf sisu
+au BufNewFile,BufRead *.sst.meta,*.-sst.meta,*._sst.meta setf sisu
+
+" SKILL
+au BufNewFile,BufRead *.il,*.ils,*.cdf		setf skill
+
+" SLRN
+au BufNewFile,BufRead .slrnrc			setf slrnrc
+au BufNewFile,BufRead *.score			setf slrnsc
+
+" Smalltalk (and TeX)
+au BufNewFile,BufRead *.st			setf st
+au BufNewFile,BufRead *.cls
+	\ if getline(1) =~ '^%' |
+	\  setf tex |
+	\ else |
+	\  setf st |
+	\ endif
+
+" Smarty templates
+au BufNewFile,BufRead *.tpl			setf smarty
+
+" SMIL or XML
+au BufNewFile,BufRead *.smil
+	\ if getline(1) =~ '<?\s*xml.*?>' |
+	\   setf xml |
+	\ else |
+	\   setf smil |
+	\ endif
+
+" SMIL or SNMP MIB file
+au BufNewFile,BufRead *.smi
+	\ if getline(1) =~ '\<smil\>' |
+	\   setf smil |
+	\ else |
+	\   setf mib |
+	\ endif
+
+" SMITH
+au BufNewFile,BufRead *.smt,*.smith		setf smith
+
+" Snobol4 and spitbol
+au BufNewFile,BufRead *.sno,*.spt		setf snobol4
+
+" SNMP MIB files
+au BufNewFile,BufRead *.mib,*.my		setf mib
+
+" Snort Configuration
+au BufNewFile,BufRead *.hog,snort.conf,vision.conf	setf hog
+au BufNewFile,BufRead *.rules			call s:FTRules()
+
+let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*'
+func! s:FTRules()
+  if expand('<amatch>:p') =~ '^/etc/udev/rules\.d/.*\.rules$'
+    setf udevrules
+    return
+  endif
+  try
+    let config_lines = readfile('/etc/udev/udev.conf')
+  catch /^Vim\%((\a\+)\)\=:E484/
+    setf hog
+    return
+  endtry
+  let dir = expand('<amatch>:p:h')
+  for line in config_lines
+    if line =~ s:ft_rules_udev_rules_pattern
+      let udev_rules = substitute(line, s:ft_rules_udev_rules_pattern, '\1', "")
+      if dir == udev_rules
+        setf udevrules
+      endif
+      break
+    endif
+  endfor
+  setf hog
+endfunc
+
+
+" Spec (Linux RPM)
+au BufNewFile,BufRead *.spec			setf spec
+
+" Speedup (AspenTech plant simulator)
+au BufNewFile,BufRead *.speedup,*.spdata,*.spd	setf spup
+
+" Slice
+au BufNewFile,BufRead *.ice			setf slice
+
+" Spice
+au BufNewFile,BufRead *.sp,*.spice		setf spice
+
+" Spyce
+au BufNewFile,BufRead *.spy,*.spi		setf spyce
+
+" Squid
+au BufNewFile,BufRead squid.conf		setf squid
+
+" SQL for Oracle Designer
+au BufNewFile,BufRead *.tyb,*.typ,*.tyc,*.pkb,*.pks	setf sql
+
+" SQL
+au BufNewFile,BufRead *.sql			call s:SQL()
+
+func! s:SQL()
+  if exists("g:filetype_sql")
+    exe "setf " . g:filetype_sql
+  else
+    setf sql
+  endif
+endfunc
+
+" SQLJ
+au BufNewFile,BufRead *.sqlj			setf sqlj
+
+" SQR
+au BufNewFile,BufRead *.sqr,*.sqi		setf sqr
+
+" OpenSSH configuration
+au BufNewFile,BufRead ssh_config,*/.ssh/config	setf sshconfig
+
+" OpenSSH server configuration
+au BufNewFile,BufRead sshd_config		setf sshdconfig
+
+" Stata
+au BufNewFile,BufRead *.ado,*.class,*.do,*.imata,*.mata   setf stata
+
+" SMCL
+au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl	setf smcl
+
+" Stored Procedures
+au BufNewFile,BufRead *.stp			setf stp
+
+" Standard ML
+au BufNewFile,BufRead *.sml			setf sml
+
+" Sratus VOS command macro
+au BufNewFile,BufRead *.cm			setf voscm
+
+" Sysctl
+au BufNewFile,BufRead /etc/sysctl.conf		setf sysctl
+
+" Sudoers
+au BufNewFile,BufRead /etc/sudoers,sudoers.tmp	setf sudoers
+
+" If the file has an extension of 't' and is in a directory 't' then it is
+" almost certainly a Perl test file.
+" If the first line starts with '#' and contains 'perl' it's probably a Perl
+" file.
+" (Slow test) If a file contains a 'use' statement then it is almost certainly
+" a Perl file.
+func! s:FTperl()
+  if expand("%:e") == 't' && expand("%:p:h:t") == 't'
+    setf perl
+    return 1
+  endif
+  if getline(1)[0] == '#' && getline(1) =~ 'perl'
+    setf perl
+    return 1
+  endif
+  if search('^use\s\s*\k', 'nc', 30)
+    setf perl
+    return 1
+  endif
+  return 0
+endfunc
+
+" Tads (or Nroff or Perl test file)
+au BufNewFile,BufRead *.t
+	\ if !s:FTnroff() && !s:FTperl() | setf tads | endif
+
+" Tags
+au BufNewFile,BufRead tags			setf tags
+
+" TAK
+au BufNewFile,BufRead *.tak			setf tak
+
+" Tcl (JACL too)
+au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl	setf tcl
+
+" TealInfo
+au BufNewFile,BufRead *.tli			setf tli
+
+" Telix Salt
+au BufNewFile,BufRead *.slt			setf tsalt
+
+" Terminfo
+au BufNewFile,BufRead *.ti			setf terminfo
+
+" TeX
+au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl	setf tex
+au BufNewFile,BufRead *.tex			call s:FTtex()
+
+" Choose context, plaintex, or tex (LaTeX) based on these rules:
+" 1. Check the first line of the file for "%&<format>".
+" 2. Check the first 1000 non-comment lines for LaTeX or ConTeXt keywords.
+" 3. Default to "latex" or to g:tex_flavor, can be set in user's vimrc.
+func! s:FTtex()
+  let firstline = getline(1)
+  if firstline =~ '^%&\s*\a\+'
+    let format = tolower(matchstr(firstline, '\a\+'))
+    let format = substitute(format, 'pdf', '', '')
+    if format == 'tex'
+      let format = 'plain'
+    endif
+  else
+    " Default value, may be changed later:
+    let format = exists("g:tex_flavor") ? g:tex_flavor : 'plain'
+    " Save position, go to the top of the file, find first non-comment line.
+    let save_cursor = getpos('.')
+    call cursor(1,1)
+    let firstNC = search('^\s*[^[:space:]%]', 'c', 1000)
+    if firstNC " Check the next thousand lines for a LaTeX or ConTeXt keyword.
+      let lpat = 'documentclass\>\|usepackage\>\|begin{\|newcommand\>\|renewcommand\>'
+      let cpat = 'start\a\+\|setup\a\+\|usemodule\|enablemode\|enableregime\|setvariables\|useencoding\|usesymbols\|stelle\a\+\|verwende\a\+\|stel\a\+\|gebruik\a\+\|usa\a\+\|imposta\a\+\|regle\a\+\|utilisemodule\>'
+      let kwline = search('^\s*\\\%(' . lpat . '\)\|^\s*\\\(' . cpat . '\)',
+			      \ 'cnp', firstNC + 1000)
+      if kwline == 1	" lpat matched
+	let format = 'latex'
+      elseif kwline == 2	" cpat matched
+	let format = 'context'
+      endif		" If neither matched, keep default set above.
+      " let lline = search('^\s*\\\%(' . lpat . '\)', 'cn', firstNC + 1000)
+      " let cline = search('^\s*\\\%(' . cpat . '\)', 'cn', firstNC + 1000)
+      " if cline > 0
+      "   let format = 'context'
+      " endif
+      " if lline > 0 && (cline == 0 || cline > lline)
+      "   let format = 'tex'
+      " endif
+    endif " firstNC
+    call setpos('.', save_cursor)
+  endif " firstline =~ '^%&\s*\a\+'
+
+  " Translation from formats to file types.  TODO:  add AMSTeX, RevTex, others?
+  if format == 'plain'
+    setf plaintex
+  elseif format == 'context'
+    setf context
+  else " probably LaTeX
+    setf tex
+  endif
+  return
+endfunc
+
+" ConTeXt
+au BufNewFile,BufRead tex/context/*/*.tex,*.mkii,*.mkiv   setf context
+
+" Texinfo
+au BufNewFile,BufRead *.texinfo,*.texi,*.txi	setf texinfo
+
+" TeX configuration
+au BufNewFile,BufRead texmf.cnf			setf texmf
+
+" Tidy config
+au BufNewFile,BufRead .tidyrc,tidyrc		setf tidy
+
+" TF mud client
+au BufNewFile,BufRead *.tf,.tfrc,tfrc		setf tf
+
+" TPP - Text Presentation Program
+au BufNewFile,BufReadPost *.tpp			setf tpp
+
+" Trustees
+au BufNewFile,BufRead trustees.conf		setf trustees
+
+" TSS - Geometry
+au BufNewFile,BufReadPost *.tssgm		setf tssgm
+
+" TSS - Optics
+au BufNewFile,BufReadPost *.tssop		setf tssop
+
+" TSS - Command Line (temporary)
+au BufNewFile,BufReadPost *.tsscl		setf tsscl
+
+" Motif UIT/UIL files
+au BufNewFile,BufRead *.uit,*.uil		setf uil
+
+" Udev conf
+au BufNewFile,BufRead /etc/udev/udev.conf	setf udevconf
+
+" Udev permissions
+au BufNewFile,BufRead /etc/udev/permissions.d/*.permissions setf udevperm
+"
+" Udev symlinks config
+au BufNewFile,BufRead /etc/udev/cdsymlinks.conf	setf sh
+
+" UnrealScript
+au BufNewFile,BufRead *.uc			setf uc
+
+" Updatedb
+au BufNewFile,BufRead /etc/updatedb.conf	setf updatedb
+
+" Vera
+au BufNewFile,BufRead *.vr,*.vri,*.vrh		setf vera
+
+" Verilog HDL
+au BufNewFile,BufRead *.v			setf verilog
+
+" Verilog-AMS HDL
+au BufNewFile,BufRead *.va,*.vams		setf verilogams
+
+" VHDL
+au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst  setf vhdl
+au BufNewFile,BufRead *.vhdl_[0-9]*		call s:StarSetf('vhdl')
+
+" Vim script
+au BufNewFile,BufRead *.vim,*.vba,.exrc,_exrc	setf vim
+
+" Viminfo file
+au BufNewFile,BufRead .viminfo,_viminfo		setf viminfo
+
+" Virata Config Script File
+au BufRead,BufNewFile *.hw,*.module,*.pkg	setf virata
+
+" Visual Basic (also uses *.bas) or FORM
+au BufNewFile,BufRead *.frm			call s:FTVB("form")
+
+" SaxBasic is close to Visual Basic
+au BufNewFile,BufRead *.sba			setf vb
+
+" Vgrindefs file
+au BufNewFile,BufRead vgrindefs			setf vgrindefs
+
+" VRML V1.0c
+au BufNewFile,BufRead *.wrl			setf vrml
+
+" Webmacro
+au BufNewFile,BufRead *.wm			setf webmacro
+
+" Wget config
+au BufNewFile,BufRead .wgetrc,wgetrc		setf wget
+
+" Website MetaLanguage
+au BufNewFile,BufRead *.wml			setf wml
+
+" Winbatch
+au BufNewFile,BufRead *.wbt			setf winbatch
+
+" WSML
+au BufNewFile,BufRead *.wsml			setf wsml
+
+" WvDial
+au BufNewFile,BufRead wvdial.conf,.wvdialrc	setf wvdial
+
+" CVS RC file
+au BufNewFile,BufRead .cvsrc			setf cvsrc
+
+" CVS commit file
+au BufNewFile,BufRead cvs\d\+			setf cvs
+
+" WEB (*.web is also used for Winbatch: Guess, based on expecting "%" comment
+" lines in a WEB file).
+au BufNewFile,BufRead *.web
+	\ if getline(1)[0].getline(2)[0].getline(3)[0].getline(4)[0].getline(5)[0] =~ "%" |
+	\   setf web |
+	\ else |
+	\   setf winbatch |
+	\ endif
+
+" Windows Scripting Host and Windows Script Component
+au BufNewFile,BufRead *.ws[fc]			setf wsh
+
+" XHTML
+au BufNewFile,BufRead *.xhtml,*.xht		setf xhtml
+
+" X Pixmap (dynamically sets colors, use BufEnter to make it work better)
+au BufEnter *.xpm
+	\ if getline(1) =~ "XPM2" |
+	\   setf xpm2 |
+	\ else |
+	\   setf xpm |
+	\ endif
+au BufEnter *.xpm2				setf xpm2
+
+" XFree86 config
+au BufNewFile,BufRead XF86Config
+	\ if getline(1) =~ '\<XConfigurator\>' |
+	\   let b:xf86c_xfree86_version = 3 |
+	\ endif |
+	\ setf xf86conf
+
+" Xorg config
+au BufNewFile,BufRead xorg.conf,xorg.conf-4	let b:xf86c_xfree86_version = 4 | setf xf86conf
+
+" Xinetd conf
+au BufNewFile,BufRead /etc/xinetd.conf		setf xinetd
+
+" XS Perl extension interface language
+au BufNewFile,BufRead *.xs			setf xs
+
+" X resources file
+au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults
+
+" Xmath
+au BufNewFile,BufRead *.msc,*.msf		setf xmath
+au BufNewFile,BufRead *.ms
+	\ if !s:FTnroff() | setf xmath | endif
+
+" XML  specific variants: docbk and xbl
+au BufNewFile,BufRead *.xml			call s:FTxml()
+
+func! s:FTxml()
+  let n = 1
+  while n < 100 && n < line("$")
+    let line = getline(n)
+    if line =~ '<!DOCTYPE.*DocBook'
+      let b:docbk_type = "xml"
+      setf docbk
+      return
+    endif
+    if line =~ 'xmlns:xbl="http://www.mozilla.org/xbl"'
+      setf xbl
+      return
+    endif
+    let n += 1
+  endwhile
+  setf xml
+endfunc
+
+" XMI (holding UML models) is also XML
+au BufNewFile,BufRead *.xmi			setf xml
+
+" CSPROJ files are Visual Studio.NET's XML-based project config files
+au BufNewFile,BufRead *.csproj,*.csproj.user	setf xml
+
+" Qt Linguist translation source and Qt User Interface Files are XML
+au BufNewFile,BufRead *.ts,*.ui			setf xml
+
+" TPM's are RDF-based descriptions of TeX packages (Nikolai Weibull)
+au BufNewFile,BufRead *.tpm			setf xml
+
+" Xdg menus
+au BufNewFile,BufRead /etc/xdg/menus/*.menu	setf xml
+
+" ATI graphics driver configuration
+au BufNewFile,BufRead fglrxrc			setf xml
+
+" XLIFF (XML Localisation Interchange File Format) is also XML
+au BufNewFile,BufRead *.xlf			setf xml
+au BufNewFile,BufRead *.xliff			setf xml
+
+" X11 xmodmap (also see below)
+au BufNewFile,BufRead *Xmodmap			setf xmodmap
+
+" Xquery
+au BufNewFile,BufRead *.xq,*.xql,*.xqm,*.xquery,*.xqy	setf xquery
+
+" XSD
+au BufNewFile,BufRead *.xsd			setf xsd
+
+" Xslt
+au BufNewFile,BufRead *.xsl,*.xslt		setf xslt
+
+" Yacc
+au BufNewFile,BufRead *.yy			setf yacc
+
+" Yacc or racc
+au BufNewFile,BufRead *.y			call s:FTy()
+
+func! s:FTy()
+  let n = 1
+  while n < 100 && n < line("$")
+    let line = getline(n)
+    if line =~ '^\s*%'
+      setf yacc
+      return
+    endif
+    if getline(n) =~ '^\s*\(#\|class\>\)' && getline(n) !~ '^\s*#\s*include'
+      setf racc
+      return
+    endif
+    let n = n + 1
+  endwhile
+  setf yacc
+endfunc
+
+
+" Yaml
+au BufNewFile,BufRead *.yaml,*.yml		setf yaml
+
+" Zope
+"   dtml (zope dynamic template markup language), pt (zope page template),
+"   cpt (zope form controller page template)
+au BufNewFile,BufRead *.dtml,*.pt,*.cpt		call s:FThtml()
+"   zsql (zope sql method)
+au BufNewFile,BufRead *.zsql			call s:SQL()
+
+" Z80 assembler asz80
+au BufNewFile,BufRead *.z8a			setf z8a
+
+augroup END
+
+
+" Source the user-specified filetype file, for backwards compatibility with
+" Vim 5.x.
+if exists("myfiletypefile") && filereadable(expand(myfiletypefile))
+  execute "source " . myfiletypefile
+endif
+
+
+" Check for "*" after loading myfiletypefile, so that scripts.vim is only used
+" when there are no matching file name extensions.
+" Don't do this for compressed files.
+augroup filetypedetect
+au BufNewFile,BufRead *
+	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
+	\ | runtime! scripts.vim | endif
+au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif
+
+
+" Extra checks for when no filetype has been detected now.  Mostly used for
+" patterns that end in "*".  E.g., "zsh*" matches "zsh.vim", but that's a Vim
+" script file.
+" Most of these should call s:StarSetf() to avoid names ending in .gz and the
+" like are used.
+
+" Asterisk config file
+au BufNewFile,BufRead *asterisk/*.conf*		call s:StarSetf('asterisk')
+au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm')
+
+" Bazaar version control
+au BufNewFile,BufRead bzr_log.*			setf bzr
+
+" BIND zone
+au BufNewFile,BufRead */named/db.*,*/bind/db.*	call s:StarSetf('bindzone')
+
+" Changelog
+au BufNewFile,BufRead [cC]hange[lL]og*
+	\ if getline(1) =~ '; urgency='
+	\|  call s:StarSetf('debchangelog')
+	\|else
+	\|  call s:StarSetf('changelog')
+	\|endif
+
+" Crontab
+au BufNewFile,BufRead crontab,crontab.*		call s:StarSetf('crontab')
+
+" Debian Sources.list
+au BufNewFile,BufRead /etc/apt/sources.list.d/*	call s:StarSetf('debsources')
+
+" Dracula
+au BufNewFile,BufRead drac.*			call s:StarSetf('dracula')
+
+" Fvwm
+au BufNewFile,BufRead */.fvwm/*			call s:StarSetf('fvwm')
+au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook
+	\ let b:fvwm_version = 1 | call s:StarSetf('fvwm')
+au BufNewFile,BufRead *fvwm2rc*
+	\ if expand("<afile>:e") == "m4"
+	\|  call s:StarSetf('fvwm2m4')
+	\|else
+	\|  let b:fvwm_version = 2 | call s:StarSetf('fvwm')
+	\|endif
+
+" GTK RC
+au BufNewFile,BufRead .gtkrc*,gtkrc*		call s:StarSetf('gtkrc')
+
+" Jam
+au BufNewFile,BufRead Prl*.*,JAM*.*		call s:StarSetf('jam')
+
+" Jargon
+au! BufNewFile,BufRead *jarg*
+	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE'
+	\|  call s:StarSetf('jargon')
+	\|endif
+
+" Kconfig
+au BufNewFile,BufRead Kconfig.*			call s:StarSetf('kconfig')
+
+" Makefile
+au BufNewFile,BufRead [mM]akefile*		call s:StarSetf('make')
+
+" Ruby Makefile
+au BufNewFile,BufRead [rR]akefile*		call s:StarSetf('ruby')
+
+" Mail (also matches muttrc.vim, so this is below the other checks)
+au BufNewFile,BufRead mutt[[:alnum:]._-]\{6\}	setf mail
+
+" Modconf
+au BufNewFile,BufRead /etc/modprobe.*		call s:StarSetf('modconf')
+
+" Mutt setup file
+au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
+au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc*		call s:StarSetf('muttrc')
+
+" Nroff macros
+au BufNewFile,BufRead tmac.*			call s:StarSetf('nroff')
+
+" Pam conf
+au BufNewFile,BufRead /etc/pam.d/*		call s:StarSetf('pamconf')
+
+" Printcap and Termcap
+au BufNewFile,BufRead *printcap*
+	\ if !did_filetype()
+	\|  let b:ptcap_type = "print" | call s:StarSetf('ptcap')
+	\|endif
+au BufNewFile,BufRead *termcap*
+	\ if !did_filetype()
+	\|  let b:ptcap_type = "term" | call s:StarSetf('ptcap')
+	\|endif
+
+" Vim script
+au BufNewFile,BufRead *vimrc*			call s:StarSetf('vim')
+
+" Subversion commit file
+au BufNewFile,BufRead svn-commit*.tmp		setf svn
+
+" X resources file
+au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* call s:StarSetf('xdefaults')
+
+" XFree86 config
+au BufNewFile,BufRead XF86Config-4*
+	\ let b:xf86c_xfree86_version = 4 | call s:StarSetf('xf86conf')
+au BufNewFile,BufRead XF86Config*
+	\ if getline(1) =~ '\<XConfigurator\>'
+	\|  let b:xf86c_xfree86_version = 3
+	\|endif
+	\|call s:StarSetf('xf86conf')
+
+" X11 xmodmap
+au BufNewFile,BufRead *xmodmap*			call s:StarSetf('xmodmap')
+
+" Xinetd conf
+au BufNewFile,BufRead /etc/xinetd.d/*		call s:StarSetf('xinetd')
+
+" Z-Shell script
+au BufNewFile,BufRead zsh*,zlog*		call s:StarSetf('zsh')
+
+
+" Generic configuration file (check this last, it's just guessing!)
+au BufNewFile,BufRead,StdinReadPost *
+	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
+	\    && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
+	\	|| getline(4) =~ '^#' || getline(5) =~ '^#') |
+	\   setf conf |
+	\ endif
+
+" Use the plugin-filetype checks last, they may overrule any of the previously
+" detected filetypes.
+runtime! ftdetect/*.vim
+
+augroup END
+
+
+" If the GUI is already running, may still need to install the Syntax menu.
+" Don't do it when the 'M' flag is included in 'guioptions'.
+if has("menu") && has("gui_running")
+      \ && !exists("did_install_syntax_menu") && &guioptions !~# "M"
+  source <sfile>:p:h/menu.vim
+endif
+
+" Function called for testing all functions defined here.  These are
+" script-local, thus need to be executed here.
+" Returns a string with error messages (hopefully empty).
+func! TestFiletypeFuncs(testlist)
+  let output = ''
+  for f in a:testlist
+    try
+      exe f
+    catch
+      let output = output . "\n" . f . ": " . v:exception
+    endtry
+  endfor
+  return output
+endfunc
+
+" Restore 'cpoptions'
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/tutor/runtime/ftoff.vim b/runtime/tutor/runtime/ftoff.vim
new file mode 100644
index 0000000..377c6ef
--- /dev/null
+++ b/runtime/tutor/runtime/ftoff.vim
@@ -0,0 +1,11 @@
+" Vim support file to switch off detection of file types
+"
+" Maintainer:	Bram Moolenaar <Bram@vim.org>
+" Last change:	2001 Jun 11
+
+if exists("did_load_filetypes")
+  unlet did_load_filetypes
+endif
+
+" Remove all autocommands in the filetypedetect group
+silent! au! filetypedetect *
diff --git a/runtime/tutor/runtime/vim32x32.png b/runtime/tutor/runtime/vim32x32.png
new file mode 100644
index 0000000..c6e04fa
--- /dev/null
+++ b/runtime/tutor/runtime/vim32x32.png
Binary files differ
diff --git a/runtime/tutor/runtime/vimlogo.xpm b/runtime/tutor/runtime/vimlogo.xpm
new file mode 100644
index 0000000..63e0d54
--- /dev/null
+++ b/runtime/tutor/runtime/vimlogo.xpm
@@ -0,0 +1,75 @@
+/* XPM */
+static char *vimlogo[] = {
+/* width height num_colors chars_per_pixel */
+"   125    60        8            1",
+/* colors */
+". c #000000",
+"# c #00007f",
+"a c #007f00",
+"b c #7f7f7f",
+"c c #00ff00",
+"d c #bfbfbf",
+"e c #ffffff",
+"f c None",
+/* pixels */
+"fffffffffffffffffffffffffffee..eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffffffffffffffffffffee.cc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"fffffffffffffffffffffffffee.cccc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffeeeeeeeeeeeeeeeeeeee.ccaacc.eeffeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"fffffee....................caaaacc.eeee...................eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffee.deeeeeeeeeeeeeeeeeeb.aaaaacc.ee.deeeeeeeeeeeeeeeeeb.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffe.dedddddddddddddddddddb.aaaaacc..dedddddddddddddddddd.beffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffe.eddddddddddddddddddddb.aaaaaacc.edddddddddddddddddddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffe.eddddddddddddddddddddb.aaaaaaac.edddddddddddddddddddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffe.edddddddddddddddddddbb.aaaaaaaa.eddddddddddddddddddbb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffe.bbdddddddddddddddddbbb.aaaaaaaa.bbddddddddddddddddbb.befffffffffffffffffffffffffffeeeeeffffffffffffffffffffffffffffffff",
+"ffffee.bbbbddddddddddddbbbb.aaaaaaaaaa.bbbbddddddddddddbbb.eefffffffffffffffeeeeeeeeeeeee...effffffffffffffffffffffffffffffff",
+"fffffee..beddddddddddddbbb.aaaaaaaaaaaa..dedddddddddddbbb.eeffffffffffffffffe..........ee...effffffffffffffffffffffffffffffff",
+"ffffffeee.eddddddddddddbb.aaaaaaaaaaaaa.eedddddddddddbbb.eefffffffffffffffffe..........eee..eeeeeefffeeeeeeefffffffffffffffff",
+"ffffffffe.eddddddddddddbb.aaaaaaaaaaaa.eedddddddddddbbb.eeffffffffffffffffffe..ee..ee..efe..e....eefee.....eeffffffffffffffff",
+"ffffffffe.eddddddddddddbb.aaaaaaaaaaa.eedddddddddddbbb.eefffffffffffffffffffe..ee..ee..efe........eee.......eefffffffffffffff",
+"ffffffffe.eddddddddddddbb.aaaaaaaaaa.eedddddddddddbbb.eeffffffffffffffffffffe..ee..ee..efe...eee..ee..eeeee..efffffffffffffff",
+"ffffffffe.eddddddddddddbb.aaaaaaaaa.eedddddddddddbbb.eefffffffffffffffffffffeeeee..eeeeefe..eefe..ee.........efffffffffffffff",
+"ffffffffe.eddddddddddddbb.aaaaaaaa.eedddddddddddbbb.eeffffffffffffffffffffffffffe..efffffe..effe..ee.........efffffffffffffff",
+"ffffffffe.eddddddddddddbb.aaaaaaa.eedddddddddddbbb.eefffffffffffffffffffffffffffe..efffffe..effe..ee..eeeeeeeefffffffffffffff",
+"fffffffee.eddddddddddddbb.aaaaaa.eedddddddddddbbb.eeffffffffffffffffffffffffffeee..eeeffee..eeee..ee...eeee..efffffffffffffff",
+"ffffffee..eddddddddddddbb.aaaaa.eedddddddddddbbb.c.eefffffffffffffffffffffffffe......effe....ee....ee........efffffffffffffff",
+"fffffee.c.eddddddddddddbb.aaaa.eedddddddddddbbb.acc.eeffffffffffffffffffffffffe......effe....ee....eee......eefffffffffffffff",
+"ffffee.cc.eddddddddddddbb.aaa.eedddddddddddbbb.aaacc.eefffffffffffffffffffffffeeeeeeeeffeeeeeeeeeeeefeeeeeeeeffffffffffffffff",
+"fffee.cca.eddddddddddddbb.aa.eedddddddddddbbb.aaaaacc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffee.ccaa.eddddddddddddbb.a.eedddddddddddbbb.aaaaaaacc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"fee.ccaaa.eddddddddddddbb..eedddddddddddbbb.aaaaaaaaacc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ee.ccaaaa.eddddddddddddbb.eedddddddddddbbb.aaaaaaaaaaacc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"e.ccaaaaa.eddddddddddddbbeedddddddddddbbb.aaaaaaaaaaaaacc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"...aaaaaa.eddddddddddddbdedddddddddddbbb.aaaaaaaaaaaaaaacc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"e.##aaaaa.eddddddddddddbedddddddddddbbb.aaaaaaaaaaaaaaaaa...effffffffffffffffeeeeeffffeeeefffffeeeeffffffffffffffffffffffffff",
+"ee.##aaaa.eddddddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eeffffffffffffffffe...effffe..efffffe..effffffffffffffffffffffffff",
+"fee.##aaa.edddddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eefffffffffffffffffe...effffe..efffffe..effffffffffffffffffffffffff",
+"ffee.##aa.eddddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eefffeeeeeeeffffeeeeee..efeeeeeeefffeee..eeeeefffeeeeeeeffeeeeeeeeee",
+"fffee.##a.edddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eefffee.....eeffee....e..efe.....efffe........effee.....eefe....e...e",
+"ffffee.##.edddddddddddddddddddd....aaaaaaaaaaaaaaaaa##.eefffee.......eeee........efe.....efffe........efee.......eee.........",
+"fffffee.#.eddddddddddddddddddd.dbb.aaaaaaaaaaaaaaaa##.eeffffe..eeeee..ee...eee...efeeee..efffeee..eeeeefe...eee...eeee...ee..",
+"ffffffee..eddddddddddddddddddd.ddb.aaaaaaaaaaaaaaa##.eefffffe.........ee..eefee..effffe..efffffe..efffffe..eefee..effe..eeeee",
+"fffffffee.eddddddddddddddddddb.bbb.aaaaaaaaaaaaaa##.eeffffffe.........ee..efffe..effffe..efffffe..efffffe..efffe..effe..effff",
+"ffffffffe.edddddddddddddddddbbb...aaaaaaaaaaaaaa##.eeeeeeeffe..eeeeeeeee..eefee..effffe..efffffe..efeeeee..eefee..effe..effff",
+"ffffffffe.eddddddddddddddddbb......aa.....aa.....#......beefe...eeee..ee...eee...eeeeee..eeeeffe..eee..ee...eee...eeee..eeeee",
+"ffffffffe.edddddddddddddddbbb.dbbb.aa.dbbb..dbbbb..dbbbb.befee........eee.........ee........effe.......eee.......eee........e",
+"ffffffffe.eddddddddddddddbbb..bdd.aaa.bdddbbdddddbbdddddb.effee......eefee....e...ee........effee....eeefee.....eefe........e",
+"ffffffffe.edddddddddddddbbb.a.ddb.aaa.ddddddddddddddddddb.efffeeeeeeeefffeeeeeeeeeeeeeeeeeeeefffeeeeeeffffeeeeeeeffeeeeeeeeee",
+"ffffffffe.eddddddddddddbbb.a.bddb.aa.bdddbbbbddddbbbbdddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.edddddddddddbbb.aa.bdd.aaa.bddb....bddb....bdd.beffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.eddddddddddbbb.aaa.ddb.aaa.ddb.##b.ddb.eeb.ddb.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.edddddddddbbb..aa.bddb.aa.bddb.#e.bddb.ee.bddb.efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.eddddddddbbb..aaa.bdd.aaa.bdd.#ee.bdd.bee.bdd.befffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.edddddddbbb.aaaaa.ddb.aaa.ddb.eeb.ddb.eeb.ddb.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.eddddddbbb.##aaa.bddb.aa.bddb.ee.bddb.ee.bddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.edddddbbb.e.##aa.bdd.aaa.bdd.bee.bdd.bee.bdd.beffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffe.bddddbbb.eee.##a.ddb.aaa.ddb.eeb.ddb.eeb.ddb.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffee..bbbb..eefee.#.bbbbb.a.bbbbb.e.bbbbb.e.bbbbb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"fffffffffeeb....beefffee........a.......e.......e.......effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffffeeeeeeeefffffee.##aaaa##.eeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffffffffffffffffffee.##aa##.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"fffffffffffffffffffffffffee.####.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"ffffffffffffffffffffffffffee.##.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+"fffffffffffffffffffffffffffee..eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
+};
diff --git a/runtime/tutor/runtime/vimrc_example.vim b/runtime/tutor/runtime/vimrc_example.vim
new file mode 100644
index 0000000..a2a891c
--- /dev/null
+++ b/runtime/tutor/runtime/vimrc_example.vim
@@ -0,0 +1,94 @@
+" An example for a vimrc file.
+"
+" Maintainer:	Bram Moolenaar <Bram@vim.org>
+" Last change:	2008 Jun 16
+"
+" To use it, copy it to
+"     for Unix and OS/2:  ~/.vimrc
+"	      for Amiga:  s:.vimrc
+"  for MS-DOS and Win32:  $VIM\_vimrc
+"	    for OpenVMS:  sys$login:.vimrc
+
+" When started as "evim", evim.vim will already have done these settings.
+if v:progname =~? "evim"
+  finish
+endif
+
+" Use Vim settings, rather then Vi settings (much better!).
+" This must be first, because it changes other options as a side effect.
+set nocompatible
+
+" allow backspacing over everything in insert mode
+set backspace=indent,eol,start
+
+if has("vms")
+  set nobackup		" do not keep a backup file, use versions instead
+else
+  set backup		" keep a backup file
+endif
+set history=50		" keep 50 lines of command line history
+set ruler		" show the cursor position all the time
+set showcmd		" display incomplete commands
+set incsearch		" do incremental searching
+
+" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
+" let &guioptions = substitute(&guioptions, "t", "", "g")
+
+" Don't use Ex mode, use Q for formatting
+map Q gq
+
+" CTRL-U in insert mode deletes a lot.  Use CTRL-G u to first break undo,
+" so that you can undo CTRL-U after inserting a line break.
+inoremap <C-U> <C-G>u<C-U>
+
+" In many terminal emulators the mouse works just fine, thus enable it.
+set mouse=a
+
+" Switch syntax highlighting on, when the terminal has colors
+" Also switch on highlighting the last used search pattern.
+if &t_Co > 2 || has("gui_running")
+  syntax on
+  set hlsearch
+endif
+
+" Only do this part when compiled with support for autocommands.
+if has("autocmd")
+
+  " Enable file type detection.
+  " Use the default filetype settings, so that mail gets 'tw' set to 72,
+  " 'cindent' is on in C files, etc.
+  " Also load indent files, to automatically do language-dependent indenting.
+  filetype plugin indent on
+
+  " Put these in an autocmd group, so that we can delete them easily.
+  augroup vimrcEx
+  au!
+
+  " For all text files set 'textwidth' to 78 characters.
+  autocmd FileType text setlocal textwidth=78
+
+  " When editing a file, always jump to the last known cursor position.
+  " Don't do it when the position is invalid or when inside an event handler
+  " (happens when dropping a file on gvim).
+  " Also don't do it when the mark is in the first line, that is the default
+  " position when opening a file.
+  autocmd BufReadPost *
+    \ if line("'\"") > 1 && line("'\"") <= line("$") |
+    \   exe "normal! g`\"" |
+    \ endif
+
+  augroup END
+
+else
+
+  set autoindent		" always set autoindenting on
+
+endif " has("autocmd")
+
+" Convenient command to see the difference between the current buffer and the
+" file it was loaded from, thus the changes you made.
+" Only define it when not defined already.
+if !exists(":DiffOrig")
+  command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
+		  \ | wincmd p | diffthis
+endif
diff --git a/runtime/tutor/tutor b/runtime/tutor/tutor
index 32aef94..31ba710 100644
--- a/runtime/tutor/tutor
+++ b/runtime/tutor/tutor
@@ -139,12 +139,12 @@
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		     Lesson 1.6: EDITING A FILE
 
-
 		    ** Use  :wq  to save a file and exit. **
 
   !! NOTE: Before executing any of the steps below, read this entire lesson!!
 
   1. Exit this tutor as you did in lesson 1.2:  :q!
+     Or, if you have access to another terminal, do the following there.
 
   2. At the shell prompt type this command:  vim tutor <ENTER>
      'vim' is the command to start the Vim editor, 'tutor' is the name of the
@@ -154,10 +154,10 @@
 
   4. Save the file with changes and exit Vim with:  :wq  <ENTER>
 
-  5. Restart the vimtutor and move down to the following summary.
+  5. If you have quit vimtutor in step 1 restart the vimtutor and move down to
+     the following summary.
 
   6. After reading the above steps and understanding them: do it.
-
   
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			       Lesson 1 SUMMARY
diff --git a/runtime/tutor/tutor.fr.utf-8 b/runtime/tutor/tutor.fr.utf-8
new file mode 100644
index 0000000..5ab14cd
--- /dev/null
+++ b/runtime/tutor/tutor.fr.utf-8
@@ -0,0 +1,809 @@
+===============================================================================
+= B i e n v e n u e  dans le  T u t o r i e l  de  V I M  -  Version 1.5.fr.2 =
+===============================================================================
+
+     Vim est un éditeur très puissant qui a trop de commandes pour pouvoir
+     toutes les expliquer dans un cours comme celui-ci, qui est conçu pour en
+     décrire suffisamment afin de vous permettre d'utiliser simplement Vim.
+
+     Le temps requis pour suivre ce cours est d'environ 25 à 30 minutes, selon
+     le temps que vous passerez à expérimenter.  Les commandes utilisées dans
+     les leçons modifieront le texte. Faites une copie de ce fichier afin de
+     vous entraîner dessus (si vous avez lancé "vimtutor" ceci est déjà une
+     copie).
+
+     Il est important de garder en tête que ce cours est conçu pour apprendre
+     par la pratique.  Cela signifie que vous devez exécuter les commandes
+     pour les apprendre correctement.  Si vous vous contentez de lire le
+     texte, vous oublierez les commandes !
+
+     Maintenant, vérifiez que votre clavier n'est PAS verouillé en majuscules,
+     et appuyez la touche  j  le nombre de fois suffisant pour que la leçon
+     1.1 remplisse complètement l'écran.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Leçon 1.1 : DÉPLACEMENT DU CURSEUR
+
+
+  ** Pour déplacer le curseur, appuyez les touches h,j,k,l comme indiqué. **
+	    ^
+	    k	     Astuce:  La touche h est à gauche et déplace à gauche.
+      < h      l >	      La touche l est à droite et déplace à droite.
+	   j		      La touche j ressemble à une flèche vers le bas.
+	   v
+  1. Déplacez le curseur sur l'écran jusqu'à vous sentir à l'aise.
+
+  2. Maintenez la touche Bas (j) enfoncée jusqu'à ce qu'elle se répète.
+---> Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante.
+
+  3. En utilisant la touche Bas, allez à la Leçon 1.2.
+
+Note: Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap>
+      pour revenir en mode Normal. Puis retapez la commande que vous vouliez.
+
+Note: Les touches fléchées devraient également fonctionner. Mais en utilisant
+      hjkl vous pourrez vous déplacer beaucoup plus rapidement, une fois que
+      vous aurez pris l'habitude.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leçon 1.2 : ENTRÉE ET SORTIE DE VIM
+
+
+ !! NOTE: Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !!
+
+  1. Appuyez la touche	<Échap>  (pour être sûr d'être en mode Normal).
+
+  2. Tapez:			:q! <Entrée>
+
+---> Ceci quitte l'éditeur SANS sauver les changements que vous avez faits.
+     Si vous voulez enregistrer les changements et sortir, tapez:
+				:wq <Entrée>
+
+  3. Lorsque l'invite du 'shell' vous sera présentée, tapez la commande qui
+     vous a amené dans ce tutoriel.  Cela pourrait être:    vimtutor <Entrée>
+     Normalement, vous utiliseriez:			    vim tutor <Entrée>
+
+---> 'vim' lance l'éditeur, 'tutor' est le fichier que vous souhaitez éditer.
+
+  4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes
+     1 à 3 pour sortir puis rentrer dans l'éditeur.  Déplacez ensuite le
+      curseur jusqu'à la Leçon 1.3.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT
+
+
+ ** En mode Normal, appuyez  x	pour effacer le caractère sous le curseur. **
+
+  1. Déplacez le curseur sur la ligne marquée ---> ci-dessous.
+
+  2. Pour corriger les erreurs, déplacez le curseur jusqu'à ce qu'il soit
+     sur un caractère à effacer.
+
+  3. Appuyez la touche	x  pour effacer le caractère redondant.
+
+  4. Répétez les étapes 2 à 4 jusqu'à ce que la phrase soit correcte.
+
+---> La vvache à sautéé au-ddessus dde la luune.
+
+  5. Maintenant que la ligne est correcte, passez à la leçon 1.4.
+
+NOTE: En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par
+      la pratique.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leçon 1.4 : ÉDITION DE TEXTE - INSERTION
+
+
+	   ** En mode Normal, appuyez  i  pour insérer du texte. **
+
+  1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous.
+
+  2. Pour rendre la première ligne identique à la seconde, mettez le curseur
+     sur le premier caractère APRÈS l'endroit où insérer le texte.
+
+  3. Appuyez  i  et tapez les caractères qui manquent.
+
+  4. Une fois qu'une erreur est corrigée, appuyez <Échap> pour revenir en mode
+     Normal. Répétez les étapes 2 à 4 pour corriger la phrase.
+
+---> Il mnqe caractères cette .
+---> Il manque des caractères dans cette ligne.
+
+  5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez au
+     résumé ci-dessous.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			     RÉSUMÉ DE LA LEÇON 1
+
+  1. Le curseur se déplace avec les touches fléchées ou les touches hjkl.
+	 h (gauche)	j (bas)        k (haut)       l (droite)
+
+  2. Pour entrer dans Vim (à l'invite %) tapez:  vim FICHIER <Entrée>
+
+  3. Pour quitter Vim tapez:  <Échap> :q! <Entrée>  pour perdre tous les
+						    changements.
+		   OU tapez:  <Échap> :wq <Entrée>  pour enregistrer les
+						    changements.
+
+  4. Pour effacer un caractère sous le curseur en mode Normal tapez:  x
+
+  5. Pour insérer du texte au niveau du curseur en mode Normal tapez:
+	 i   tapez le texte   <Échap>
+
+NOTE: Appuyer  <Échap>	vous place en mode Normal ou annule une commande
+      partiellement tapée dont vous ne voudriez plus.
+
+Passez maintenant à la Leçon 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			   Leçon 2.1 : EFFACEMENTS
+
+
+	    ** Tapez  dw  pour effacer jusqu'à la fin d'un mot. **
+
+  1. Appuyez  <Échap>  pour être sûr d'être en mode Normal.
+
+  2. Déplacez le curseur sur la ligne marquée ---> ci-dessous.
+
+  3. Placez le curseur sur le début d'un mot qui a besoin d'être effacé.
+
+  4. Tapez  dw	pour faire disparaître ce mot.
+
+NOTE: Les lettres  dw  apparaîtront sur la dernière ligne de l'écran lors de
+      votre frappe. Si vous avez mal tapé quelque chose, appuyez <Échap> et
+      recommencez.
+
+---> Il y a quelques drôle mots qui n'ont rien à faire papier sur cette ligne.
+
+  5. Répétez les étapes 3 et 4 jusqu'à ce que la phrase soit correcte et allez
+     à la Leçon 2.2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Leçon 2.2 : PLUS D'EFFACEMENTS
+
+
+	  ** Tapez  d$	pour effacer jusqu'à la fin de la ligne. **
+
+  1. Appuyez  <Échap>  pour être sûr d'être en mode Normal.
+
+  2. Déplacez le curseur sur la ligne marquée ---> ci-dessous.
+
+  3. Déplacez le curseur jusqu'à la fin correcte de la ligne
+     (APRÈS le premier . ).
+
+  4. Tapez  d$	pour effacer jusqu'à la fin de la ligne.
+
+---> Quelqu'un a tapé la fin de cette ligne deux fois. cette ligne deux fois.
+
+  5. Allez à la Leçon 2.3 pour comprendre ce qui se passe.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leçon 2.3 : DES COMMANDES ET DES OBJETS
+
+
+  Le format de la commande d'effacement  d  est le suivant:
+
+	 [nombre]  d  objet	   OU	     d	[nombre]  objet
+  où:
+    nombre - est combien de fois exécuter la commande (optionnel, défaut: 1).
+    d - est la commande d'effacement.
+    objet - est ce sur quoi la commande va opérer (liste ci-dessous).
+
+  Une courte liste d'objets:
+    w - du curseur jusqu'à la fin du mot, y compris l'espace qui suit.
+    e - du curseur jusqu'à la fin du mot, SANS l'espace qui suit.
+    $ - du curseur jusqu'à la fin de la ligne.
+
+NOTE: Pour les aventureux, le seul appui d' objet  en mode Normal, sans
+      commande, déplace le curseur comme indiqué dans la liste des objets.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Leçon 2.4 : UNE EXCEPTION À 'COMMANDE-OBJET'
+
+	      ** Tapez	dd  pour effacer une ligne complète. **
+
+  Vu le nombre de fois où l'on efface des lignes complètes, les concepteurs
+  de Vi ont décidé qu'il serait plus facile de taper simplement deux d à la
+  suite pour effacer une ligne.
+
+  1. Placez le curseur sur la seconde ligne de la phrase ci-dessous.
+  2. Tapez  dd	pour effacer la ligne.
+  3. Maintenant allez à la quatrième ligne.
+  4. Tapez  2dd  (rappelez-vous, nombre-commande-objet) pour effacer les
+     deux lignes.
+
+      1)  Les roses sont rouges,
+      2)  La boue c'est drôle,
+      3)  Les violettes sont bleues,
+      4)  J'ai une voiture,
+      5)  Les horloges donnent l'heure,
+      6)  Le sucre est doux
+      7)  Tout comme vous.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    Leçon 2.5 : L'ANNULATION
+
+	    ** Tapez  u  pour annuler les dernières commandes. **
+	       ** Tapez  U  pour récupérer toute une ligne. **
+
+  1. Déplacez le curseur sur la ligne marquée ---> ci-dessous et placez-le sur
+     la première erreur.
+  2. Tapez  x  pour effacer le premier caractère redondant.
+  3. Puis tapez  u  pour annuler la dernière commande exécutée.
+  4. Cette fois, corrigez toutes les erreurs de la ligne avec la commande  x .
+  5. Puis tapez un  U  majuscule pour remettre la ligne dans son état initial.
+  6. Puis tapez  u  deux-trois fois pour annuler le  U	et les commandes
+     précédentes.
+  7. Maintenant tapez  Ctrl-R  (maintenez la touche Ctrl enfoncée pendant que
+     vous appuyez sur R) deux-trois fois pour refaire les commandes (annuler
+     les annulations).
+
+---> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'.
+
+  8. Ce sont des commandes très utiles. Maintenant, allez au résumé de la
+     Leçon 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			     RÉSUMÉ DE LA LEÇON 2
+
+
+  1. Pour effacer du curseur jusqu'à la fin d'un mot tapez:	dw
+
+  2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez:	d$
+
+  3. Pour effacer toute une ligne tapez:  dd
+
+  4. Le format d'une commande en mode Normal est:
+
+       [nombre]  commande  objet     OU     commande  [nombre]	objet
+     où:
+       nombre - est combien de fois répéter la commande
+       commande - est ce qu'il faut faire, par exemple	d  pour effacer
+       objet - est ce sur quoi la commande devrait agir, par exemple w (mot),
+	       $ (jusqu'à la fin de la ligne), etc.
+
+  5. Pour annuler des actions précédentes, tapez:	     u	(u minuscule)
+     Pour annuler tous les changements sur une ligne tapez:  U	(U majuscule)
+     Pour annuler l'annulation tapez:			     Ctrl-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			     Leçon 3.1 : LE COLLAGE
+
+
+   ** Tapez  p	pour placer après le curseur ce qui vient d'être effacé. **
+
+  1. Placez le curseur sur la première ligne du "poème" ci-dessous.
+
+  2. Tapez  dd	pour effacer la ligne et la placer dans le tampon de Vim.
+
+  3. Déplacez le curseur sur la ligne qui PRÉCÈDE l'endroit où vous voulez
+     remettre la ligne effacée.
+
+  4. En mode Normal, tapez  p  pour remettre la ligne.
+
+  5. Répétez les étapes 2 à 4 pour mettre toutes les lignes dans le bon ordre.
+
+     d) Et vous, qu'apprenez-vous ?
+     b) Les violettes sont bleues,
+     c) L'intelligence s'apprend,
+     a) Les roses sont rouges,
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Leçon 3.2 : LE REMPLACEMENT
+
+
+ ** Tapez  r  et un caractère pour remplacer le caractère sous le curseur. **
+
+  1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous.
+
+  2. Placez le curseur de manière à ce qu'il surplombe la première erreur.
+
+  3. Tapez  r  suivi du caractère qui doit corriger l'erreur.
+
+  4. Répétez les étapes 2 et 3 jusqu'à ce que la première ligne soit correcte.
+
+--->  Quand cette ligne a été sauvie, quelqu'un a lait des faunes de frappe !
+--->  Quand cette ligne a été saisie, quelqu'un a fait des fautes de frappe !
+
+  5. Maintenant, allez à la Leçon 3.3.
+
+NOTE: N'oubliez pas que vous devriez apprendre par la pratique, pas par
+      mémorisation.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			  Leçon 3.3 : LE CHANGEMENT
+
+
+	    ** Pour changer tout ou partie d'un mot, tapez  cw .**
+
+  1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous.
+
+  2. Placez le curseur sur le u de luhko.
+
+  3. Tapez  cw	et corrigez le mot (dans notre cas, tapez  'igne'.)
+
+  4. Appuyez <Échap> et placez-vous sur l'erreur suivante (le premier
+     caractère qui doit être changé).
+
+  5. Répétez les étapes 3 et 4 jusqu'à ce que la première phrase soit
+     identique à la seconde.
+
+---> Cette luhko contient quelques myqa qui ont ricne d'être chantufip.
+---> Cette ligne contient quelques mots qui ont besoin d'être changés.
+
+Notez que  cw  efface le mot et vous place ensuite en mode Insertion.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c
+
+
+    ** Le changement fonctionne avec les mêmes objets que l'effacement. **
+
+  1. Le changement fonctionne de la même manière que l'effacement.
+     Le format est:
+
+	 [nombre]  c  objet	   OU	     c	[nombre]  objet
+
+  2. Les objets sont également les mêmes:  w (mot), $ (fin de ligne), etc.
+
+  3. Déplacez-vous à la première ligne marquée ---> ci-dessous.
+
+  4. Placez le curseur sur la première erreur.
+
+  5. Tapez  c$	pour changer la fin de la ligne, rendez-là identique à la
+     seconde ligne, puis tapez <Échap>.
+
+---> La fin de cette ligne doit être rendue identique à la seconde.
+---> La fin de cette ligne doit être corrigée avec la commande	c$ .
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			     RÉSUMÉ DE LA LEÇON 3
+
+
+  1. Pour remettre du texte qui vient d'être effacé, tapez  p . Cela Place le
+     texte effacé APRÈS le curseur (si une ligne complète a été effacée, elle
+     sera placée sous la ligne du curseur).
+
+  2. Pour remplacer le caractère sous le curseur, tapez  r  suivi du caractère
+     qui remplacera l'original.
+
+  3. Le changement vous permet de changer l'objet spécifié, du curseur jusqu'à
+     la fin de l'objet. Par exemple, tapez  cw	pour changer du curseur
+     jusqu'à la fin du mot,  c$  pour changer jusqu'à la fin d'une ligne.
+
+  4. Le format pour le changement est:
+
+	 [nombre]  c  objet	   OU	     c	[nombre]  objet
+
+Passez maintenant à la leçon suivante.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Leçon 4.1 : POSITION ET ÉTAT DU FICHIER
+
+
+  ** Tapez Ctrl-G pour afficher votre position dans le fichier et son état.
+     Utilisez Maj-G pour vous rendre à une ligne donnée du fichier. **
+
+  Note: Lisez toute cette leçon avant d'effectuer l'une des étapes !
+
+  1. Maintenez enfoncée la touche Ctrl et appuyez sur  G .  Une ligne d'état
+     va apparaître en bas de l'écran avec le nom du fichier et le numéro de la
+     ligne où vous êtes.  Notez ce numéro, il servira lors de l'étape 3.
+
+  2. Tapez  G  majuscule (Maj-G) pour vous rendre à la fin du fichier.
+
+  3. Tapez le numéro de la ligne où vous étiez suivi de Maj-G.	Cela vous
+     ramènera à la ligne où vous étiez au départ.
+     (Lorsque vous tapez les chiffres, ils n'apparaissent PAS à l'écran).
+
+  4. Si vous vous sentez prêt à faire ceci, effectuez les étapes 1 à 3.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    Leçon 4.2 : LA RECHERCHE
+
+
+	  ** Tapez  /  suivi d'un texte pour rechercher ce texte. **
+
+  1. Tapez le caractère  /  en mode Normal. Notez que celui-ci et le curseur
+     apparaissent en bas de l'écran, comme lorsque l'on utilise  : .
+
+  2. Puis tapez 'errreuur' <Entrée>.  C'est le mot que vous voulez rechercher.
+
+  3. Pour rechercher à nouveau le même texte, tapez simplement	n .
+     Pour rechercher le même texte dans la direction opposée, tapez  Maj-N .
+
+  4. Si vous voulez rechercher un texte vers le haut du fichier, utilisez  ?
+     à la place de  / .
+
+---> erreur ne s'écrit pas "errreuur"; errreuur est une erreur.
+
+Note: Quand la recherche atteint la fin du fichier, elle reprend au début.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	    Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES
+
+
+	   ** Tapez  %	pour trouver des ), ] ou } correspondants. **
+
+  1. Placez le curseur sur l'un des (, [ ou { de la ligne marquée --->
+     ci-dessous.
+
+  2. Puis tapez le caractère  % .
+
+  3. Le curseur devrait se placer sur la parenthèse correspondante.
+
+  4. Tapez  %  pour replacer le curseur sur l'autre parenthèse.
+
+---> Voici ( une ligne de test contenant des (, des [ ] et des { } )).
+
+Note: Cette fonctionnalité est très utile lors du débogage d'un programme qui
+      contient des parenthèses déséquilibrées !
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	       Leçon 4.4 : UNE MANIÈRE DE CORRIGER LES ERREURS
+
+
+  ** Tapez  :s/ancien/nouveau/g  pour remplacer 'ancien' par 'nouveau'.  **
+
+  1. Déplacez le curseur sur la ligne marquée ---> ci-dessous.
+
+  2. Tapez  :s/lee/le <Entrée> . Notez que cette commande change seulement la
+     première occurence sur la ligne.
+
+  3. Puis tapez  :s/lee/le/g  qui ordonne de faire une substitution globale
+     sur la ligne. Cela change toutes les occurences sur la ligne
+
+---> lee meilleur moment pour regarder lees fleurs est pendant lee Printemps.
+
+  4. Pour changer toutes les occurences d'un texte, entre deux lignes,
+     tapez  :#,#s/ancien/nouveau/g  où #,# sont les numéros des deux lignes.
+     Tapez  :%s/ancien/nouveau/g    pour changer chaque occurence dans tout
+				    le fichier.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			     RÉSUMÉ DE LA LEÇON 4
+
+
+  1. Ctrl-G  affiche votre position dans le fichier et l'état de celui-ci.
+     Maj-G  vous place à la fin du fichier. Un numéro de ligne suivi de Maj-G
+     vous place à cette ligne.
+
+  2. Taper  /  suivi d'un texte recherche ce texte vers l'AVANT.
+     Taper  ?  suivi d'un texte recherche ce texte vers l'ARRIÈRE.
+     Après une recherche tapez	n  pour trouver l'occurence suivante dans la
+     même direction ou	Maj-N  pour rechercher dans la direction opposée.
+
+  3. Taper  %  lorsque le curseur est sur  (, ), [, ], { ou }  déplace
+     celui-ci sur le caractère correspondant.
+
+  4. Pour remplacer le premier aa par bb sur une ligne tapez	 :s/aa/bb
+     Pour remplacer tous les aa par bb sur une ligne tapez	 :s/aa/bb/g
+     Pour remplacer du texte entre deux numéros de ligne tapez	 :#,#s/aa/bb/g
+     Pour remplacer toutes les occurences dans le fichier tapez  :%s/aa/bb/g
+     Pour demander une confirmation à chaque fois ajoutez 'c'	 :%s/aa/bb/gc
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE
+
+
+ ** Tapez  :!  suivi d'une commande externe pour exécuter cette commande. **
+
+  1. Tapez le  :  familier pour mettre le curseur en bas de l'écran. Cela vous
+     permet de saisir une commande.
+
+  2. Puis tapez un  !  (point d'exclamation). Cela vous permet d'exécuter
+     n'importe quelle commande valide pour votre interpréteur (shell).
+
+  3. Par exemple, tapez  ls  après le  !  et appuyez <Entrée>. Ceci affichera
+     la liste des fichiers du dossier courant, comme si vous aviez tapé la
+     commande à l'invite du shell. Utilisez  :!dir  si	:!ls  ne marche pas.
+
+Note:  Il est possible d'exécuter n'importe quelle commande externe de cette
+       manière.
+
+Note:  Toutes les commandes  :  doivent finir par la frappe de <Entrée>.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	 Leçon 5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS
+
+
+ ** Pour enregistrer les changements faits au fichier, tapez  :w FICHIER . **
+
+  1. Tapez  :!dir  ou  :!ls  pour avoir la liste des fichiers du dossier
+     courant. Vous savez déjà qu'il faut appuyer <Entrée> après cela.
+
+  2. Choisissez un nom de fichier qui n'existe pas encore, par exemple TEST.
+
+  3. Puis tapez  :w TEST  (où TEST est le nom que vous avez choisi).
+
+  4. Cela sauvegarde tout le fichier (Tutoriel Vim) sous le nom TEST.
+     Pour le vérifier, tapez  :!dir  pour revisualiser le contenu du dossier.
+
+Notez que si vous quittez Vim et y retournez avec le fichier TEST, celui-ci
+sera une copie exacte du cours au moment où vous l'avez sauvé.
+
+  5. Maintenant, effacez le fichier en tapant (MS-DOS):    :!del TEST
+					   ou (Unix):	   :!rm TEST
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Leçon 5.3 : UN ENREGISTREMENT SÉLECTIF
+
+
+     ** Pour enregistrer une portion de fichier, tapez	:#,#w FICHIER **
+
+  1. Tapez à nouveau  :!dir  ou  :!ls  pour visualiser le contenu du dossier
+     courant et choisissez un nom de fichier, tel que TEST.
+
+  2. Déplacez le curseur jusqu'en haut de cette page et tapez  Ctrl-G  pour
+     connaître le numéro de cette ligne. NOTEZ CE NUMÉRO !
+
+  3. Puis rendez-vous au bas de cette page et tapez à nouveau  Ctrl-G .
+     NOTEZ ÉGALEMENT CE NUMÉRO !
+
+  4. Pour enregistrer SEULEMENT une portion d'un fichier, tapez  :#,#w TEST
+     où #,# sont les deux numéros que vous avez notés (haut,bas) et TEST est
+     le nom du fichier.
+
+  5. Une fois encore, vérifiez la présence du fichier avec  :!dir  mais NE
+     L'EFFACEZ PAS.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Leçon 5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS
+
+
+	** Pour insérer le contenu d'un fichier, tapez	:r FICHIER **
+
+  1. Tapez  :!dir  pour vérifier que votre fichier TEST est encore là.
+
+  2. Placez le curseur en haut de cette page.
+
+NOTE:  Après avoir suivi l'étape 3 vous verrez à l'écran la Leçon 5.3.
+       Déplacez-vous vers le bas jusqu'à revenir à cette leçon.
+
+  3. Maintenant récupérez votre fichier TEST en utilisant la commande  :r TEST
+     où TEST est le nom de votre fichier.
+
+NOTE:  Le fichier que vous récupérez est placé là où se trouve le curseur.
+
+  4. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez
+     qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle
+     contenue dans le fichier.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			     RÉSUMÉ DE LA LEÇON 5
+
+
+  1.  :!commande  exécute une commande externe.
+
+      Quelques exemples pratiques:
+	(MS-DOS)	(Unix)
+	 :!dir		 :!ls		 affiche le contenu du dossier courant.
+	 :!del FICHIER   :!rm FICHIER    efface FICHIER.
+
+  2.  :w FICHIER  enregistre le fichier Vim courant sur le disque avec pour
+		  nom FICHIER.
+
+  3.  :#,#w FICHIER  enregistre les lignes # à # dans le fichier FICHIER.
+
+  4.  :r FICHIER  récupère le fichier FICHIER et l'insère dans le fichier
+		  courant à partir de la position du curseur.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			    Leçon 6.1 : L'OUVERTURE
+
+
+** Tapez  o  pour ouvrir une ligne sous le curseur et y aller en Insertion. **
+
+  1. Déplacez le curseur sur la ligne marquée ---> ci-dessous.
+
+  2. Tapez  o  (minuscule) pour ouvrir une ligne SOUS le curseur et vous y
+     placer en mode Insertion.
+
+  3. Puis recopiez la ligne marquée ---> et appuyez sur <Échap> pour quitter
+     le mode Insertion.
+
+---> En tapant	o  le curseur se met sur la ligne ouverte, en mode Insertion.
+
+  4. Pour ouvrir une ligne au DESSUS du curseur, tapez simplement un  O
+     majuscule, plutôt qu'un  o  minuscule. Faites un essai sur la ligne
+     ci-dessous.
+Ouvrez une ligne ci-dessus en tapant MAJ-O lorsque le curseur est ici.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Leçon 6.2 : L'AJOUT
+
+
+	    ** Tapez  a  pour insérer du texte APRÈS le curseur. **
+
+  1. Placez le curseur à la fin de la première ligne marquée ---> ci-dessous
+     en tapant	$  en mode Normal.
+
+  2. Tapez un  a  (minuscule) pour ajouter du texte APRÈS le caractère situé
+     sous le curseur. ( A  majuscule ajoute du texte à la fin de la ligne).
+
+Note: Ceci évite de taper  i , le dernier caractère, le texte à insérer,
+      <Échap>, curseur-à-droite, et finalement	x , juste pour ajouter du
+      texte à la fin d'une ligne !
+
+  3. Maintenant, complétez la première ligne. Notez également que l'ajout est
+     identique au mode Insertion, hormis la position où le texte est inséré.
+
+---> Cette ligne vous permet de pratiquer
+---> Cette ligne vous permet de pratiquer l'ajout de texte en fin de ligne.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Leçon 6.3 : UNE AUTRE VERSION DU REMPLACEMENT
+
+
+       ** Tapez un  R  majuscule pour remplacer plus d'un caractère. **
+
+  1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous.
+
+  2. Placez le curseur au début du premier mot qui diffère de la seconde ligne
+     marquée ---> (le mot 'celle').
+
+  3. Puis tapez  R  et remplacez le reste du texte de la première ligne en
+     tapant par dessus celui-ci, de manière à rendre la première ligne
+     identique à la seconde.
+
+---> Pour rendre cette ligne identique à celle du dessous utilisez le clavier.
+---> Pour rendre cette ligne identique à la seconde, tapez R et la correction.
+
+  4. Notez que lorsque vous appuyez <Échap>, le texte qui n'a pas encore été
+     remplacé reste.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Leçon 6.4 : RÉGLAGE DES OPTIONS
+
+
+  ** Réglons une option afin que la recherche et la substitution ignorent la
+     casse des caractères. **
+
+  1. Recherchez 'ignore' en tapant  /ignore .
+     Répétez ceci plusieurs fois en utilisant la touche  n .
+
+  2. Activez l'option 'ic' (Ignorer casse) en tapant  :set ic .
+
+  3. Puis poursuivez votre recherche en utilisant  n .
+     Répétez cette recherche plusieurs fois avec la touche  n .
+
+  4. Activez les options 'hlsearch' et 'incsearch' avec  :set hls is .
+
+  5. Puis recommencez une recherche, et faites bien attention à ce qui se
+     produit:  /ignore .
+
+  6. Pour interrompre la mise en surbrillance des résultats, tapez:
+     :nohlsearch
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			     RÉSUMÉ DE LA LEÇON 6
+
+
+  1. Taper  o  ouvre une ligne SOUS le curseur et y place celui-ci en mode
+     Insertion. Taper un  O  majuscule ouvre une ligne au DESSUS de la ligne
+     où se trouve le curseur.
+
+  2. Tapez un  a  pour insérer du texte APRÈS le caractère où se trouve le
+     curseur. Taper un	A  majuscule ajoute du texte automatiquement à la fin
+     de la ligne.
+
+  3. Taper un  R  majuscule active le mode Remplacement jusqu'à ce que la
+     touche  <Échap>  soit appuyée pour en sortir.
+
+  4. Taper  :set xxx  active l'option 'xxx'.
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Leçon 7 : ACCÉDER À L'AIDE EN LIGNE
+
+		  ** Utiliser le système d'aide en ligne. **
+
+  Vim a un système complet d'aide en ligne.  Pour y accéder, essayez l'une de
+  ces trois méthodes:
+	- appuyez la touche <Help> (si vous en avez une)
+	- appuyez la touche <F1> (si vous en avez une)
+	- tapez  :help <Entrée>
+
+  Tapez  :q <Entrée>  pour fermer la fenêtre d'aide.
+
+  Vous pouvez accéder à l'aide sur à peu près n'importe quel sujet en donnant
+  des arguments à la commande  :help . Essayez par exemple (n'oubliez pas
+  d'appuyer sur <Entrée>):
+
+	:help w
+	:help c_<T
+	:help insert-index
+	:help user-manual
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Leçon 8 : CRÉER UN SCRIPT DE DÉMARRAGE
+
+		  ** Activer les fonctionnalités de Vim. **
+
+  Vim a beaucoup plus de fonctionnalités que Vi, mais la plupart de celles-ci
+  sont désactivées par défaut.  Pour commencer à les utiliser, vous devez
+  créer un fichier "vimrc".
+
+  1. Commencez à éditer le fichier "vimrc". Ceci dépend de votre système:
+	:edit ~/.vimrc			pour Unix
+	:edit $VIM/_vimrc		pour MS-Windows
+
+  2. Intégrez maintenant le texte du fichier "vimrc" d'exemple:
+	:read $VIMRUNTIME/vimrc_example.vim
+
+  3. Enregistrez le fichier avec:
+	:write
+
+  La prochaine fois que vous démarrerez Vim, le surlignage syntactique sera
+  activé. Vous pouvez ajouter tous vos réglages préférés dans ce fichier.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Ceci conclut le Tutoriel Vim.  Le but était de vous donner un bref aperçu de
+  l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur
+  relativement facilement.  Il est loin d'être complet, vu que Vim a beaucoup
+  beaucoup plus de commandes.  Un Manuel de l'utilisateur est disponible en
+  anglais:  :help user-manual .
+
+  Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en
+  français. Il parle plus de Vi que de Vim, mais pourra vous être utile.
+	L'éditeur Vi - Collection Précis et concis - par Arnold Robbins
+	Éditeur: O'Reilly France
+	ISBN: 2-84177-102-4
+
+  Deux livres en anglais sont également mentionnés dans la version originale
+  de ce tutoriel, dont un qui traite spécifiquement de Vim. Merci de vous y
+  référer si vous êtes intéressé.
+
+  Ce tutoriel a été écrit par Michael C. Pierce et Robert K. Ware de l'École
+  des Mines du Colorado et reprend des idées fournies par Charles Smith,
+  Universté d'État du Colorado.  E-mail: bware@mines.colorado.edu.
+
+  Modifié pour Vim par Bram Moolenar.
+
+  Traduit en Français par Adrien Beau, en avril 2001.
+  E-mail:	version.francaise@free.fr
+  Last Change:	2003 May 29
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/runtime/tutor/tutor.hr.cp1250 b/runtime/tutor/tutor.hr.cp1250
new file mode 100644
index 0000000..92771ab
--- /dev/null
+++ b/runtime/tutor/tutor.hr.cp1250
@@ -0,0 +1,972 @@
+===============================================================================
+=    D o b r o d o š l i   u   VIM   p r i r u è n i k  -    Verzija 1.7      =
+===============================================================================
+
+     Vim je vrlo moæan editor koji ima mnogo naredbi, previše da bi ih
+     se svih ovdje spomenulo.  Namjena priruènika je objasniti dovoljno
+     naredbi kako bi poèetnici znatno lakše koristili ovaj svestran editor.
+
+     Približno vrijeme potrebno za uspješan završetak priruènika je oko
+     30 minuta a ovisi o tome koliko æe te vremena odvojiti za vježbanje.
+
+     UPOZORENJE:
+     Naredbe u ovom priruèniku æe promijeniti ovaj tekst.
+     Napravite kopiju ove datoteke kako bi ste na istoj vježbali
+     (ako ste pokrenuli "vimtutor" ovo je veæ kopija).
+
+     Vrlo je važno primijetiti da je ovaj priruènik namijenjen za vježbanje.
+     Preciznije, morate izvršiti naredbe u Vim-u kako bi ste iste nauèili
+     pravilno koristiti. Ako samo èitate tekst, zaboraviti æe te naredbe!
+
+     Ako je CapsLock ukljuèen ISKLJUÈITE ga.  Pritiskajte tipku  j  kako
+     bi pomakli kursor sve dok Lekcija 1.1 ne ispuni ekran.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcija 1.1:  POMICANJE KURSORA
+
+
+ ** Za pomicanje kursora, pritisnite h,j,k,l tipke kako je prikazano **
+	     ^
+	     k		    Savjet:  h tipka je lijevo i pomièe kursor lijevo.
+       < h	 l >		   l tipka je desno i pomièe kursor desno.
+	     j                     j izgleda kao strelica usmjerena dolje.
+	     v
+  1. Pomièite kursor po ekranu dok se ne naviknete na korištenje.
+
+  2. Držite tipku (j) pritisnutom.
+     Sada znate kako doæi do sljedeæe lekcije.
+
+  3. Koristeæi tipku j prijeðite na sljedeæu lekciju 1.2.
+
+NAPOMENA:  Ako niste sigurni što ste zapravo pritisnuli uvijek koristite
+           tipku <ESC> kako bi prešli u Normal mod i onda pokušajte ponovno.
+
+NAPOMENA:  Kursorske tipke rade isto.  Korištenje hjkl tipaka je znatno
+           brže, nakon što se jednom naviknete na njihovo korištenje.  Stvarno!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			   Lekcija 1.2: IZLAZ IZ VIM-a
+
+
+  !! UPOZORENJE: Prije izvoðenja bilo kojeg koraka,
+                 proèitajte cijelu lekciju!!
+
+  1. Pritisnite <ESC> tipku (Vim je sada u Normal modu).
+
+  2. Otipkajte:	:q! <ENTER>.
+     Izlaz iz editora, GUBE se sve napravljene promjene.
+
+  3. Kada se pojavi ljuska, utipkajte naredbu koja je pokrenula
+     ovaj priruènik:		vimtutor <ENTER>
+
+  4. Ako ste upamtili ove korake, izvršite ih redom od 1 do 3
+     kako bi ponovno pokrenuli editor.
+
+NAPOMENA:  :q! <ENTER>  poništava sve promjene koje ste napravili.
+           U sljedeæim lekcijama nauèit æe te kako promjene saèuvati.
+
+  5. Pomaknite kursor na Lekciju 1.3.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Lekcija 1.3: PROMJENA TEKSTA - BRISANJE
+
+
+	      ** Pritisnite  x  za brisanje znaka pod kursorom. **
+
+  1. Pomaknite kursor na liniju oznaèenu s --->.
+
+  2. Kako bi ste ispravili pogreške, pomièite kursor dok se
+     ne bude nalazio na slovu kojeg trebate izbrisati.
+
+  3. Pritisnite tipku x kako bi uklonili neželjeno slovo.
+
+  4. Ponovite korake od 2 do 4 dok ne ispravite sve pogreške.
+
+---> KKKravaa jee presskoèila mmjeseccc.
+
+  5. Nakon što ispravite liniju, prijeðite na lekciju 1.4.
+
+NAPOMENA:  Koristeæi ovaj priruènik ne pokušavajte pamtiti
+           veæ uèite primjenom.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE
+
+
+	  ** Pritisnite  i  za ubacivanje teksta ispred kursora. **
+
+  1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->.
+
+  2. Kako bi napravili prvu liniju istovjetnoj drugoj, pomaknite
+     kursor na prvi znak POSLIJE kojeg æe te utipkati potreban tekst.
+
+  3. Pritisnite  i  te utipkajte potrebne nadopune.
+
+  4. Nakon što ispravite pogrešku pritisnite <ESC> kako bi vratili Vim
+     u Normal mod. Ponovite korake od 2 do 4 kako bi ispravili sve pogreške.
+
+---> Nedje no teka od v lin.
+---> Nedostaje nešto teksta od ove linije.
+
+  5. Prijeðite na sljedeæu lekciju.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE
+
+
+	           ** Pritisnite  A  za dodavanje teksta. **
+
+  1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->.
+     Nije važno na kojem se slovu nalazi kursor na toj liniji.
+
+  2. Pritisnite  A  i napravite potrebne promjene.
+
+  3. Nakon što ste dodali tekst, pritisnite <ESC>
+     za povratak u Normal mod.
+
+  4. Pomaknite kursor na drugu liniju oznaèenu s --->
+     i ponovite korake 2 i 3 dok ne popravite tekst.
+
+---> Ima nešto teksta koji nedostaje n
+     Ima nešto teksta koji nedostaje na ovoj liniji.
+---> Ima nešto teksta koji ne
+     Ima nešto teksta koji nedostaje baš ovdje.
+
+  5. Prijeðite na lekciju 1.6.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lekcija 1.6: PROMJENA DATOTEKE
+
+
+     ** Koristite  :wq  za spremanje teksta i napuštanje Vim-a. **
+
+  !! UPOZORENJE: Prije izvršavanja bilo kojeg koraka, proèitajte lekciju!!
+
+  1. Izaðite iz programa kao sto ste napravili u lekciji 1.2:  :q!
+
+  2. Iz ljuske utipkajte sljedeæu naredbu:  vim tutor <ENTER>
+     'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju
+     želite ureðivati.  Koristite datoteku koju imate ovlasti mijenjati.
+
+  3. Ubacite i izbrišite tekst kao što ste to napravili u lekcijama prije.
+
+  4. Saèuvajte promjenjeni tekst i izaðite iz Vim-a:  :wq  <ENTER>
+
+  5. Ponovno pokrenite vimtutor i nastavite èitati sažetak koji sljedi.
+
+  6. Nakon sto proèitate gornje korake i u potpunosti ih razumijete:
+     izvršite ih.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Lekcija 1 SAÂŽETAK
+
+
+  1. Kursor se pomièe strelicama ili pomoæu hjkl tipaka.
+	h (lijevo)	j (dolje)	k (gore)	l (desno)
+
+  2. Pokretanje Vim-a iz ljuske:  vim IME_DATOTEKE <ENTER>
+
+  3. Izlaz:	<ESC>	:q! <ENTER> 	sve promjene su izgubljene.
+       ILI:	<ESC>	:wq <ENTER> 	promjene su saèuvane.
+
+  4. Brisanje znaka na kojem se nalazi kursor:  x
+
+  5. Ubacivanja ili dodavanje teksta:
+	 i   utipkajte tekst <ESC>	unos ispred kursora
+	 A   utipkajte tekst <ESC>	dodavanje na kraju linije
+
+NAPOMENA:  Tipkanjem tipke <ESC> prebacuje Vim u Normal mod i
+           prekida neželjenu ili djelomièno završenu naredbu.
+
+Nastavite èitati Lekciju 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcija 2.1: NAREDBE BRISANJA
+
+
+		 ** Tipkajte  dw  za brisanje rijeèi. **
+
+  1. Pritisnite  <ESC>  kako bi bili sigurni da je Vim u Normal modu.
+
+  2. Pomaknite kursor na liniju oznaèenu s --->.
+
+  3. Pomaknite kursor na poèetak rijeèi koju treba izbrisati.
+
+  4. Otipkajte  dw  kako bi uklonili rijeè.
+
+NAPOMENA:  Vim æe prikazati slovo  d  na zadnjoj liniji kad ga otipkate.
+           Vim èeka da otipkate  w .  Ako je prikazano neko drugo slovo,
+           krivo ste otipkali; pritisnite <ESC> i pokušajte ponovno.
+
+---> Neke rijeèi smiješno ne pripadaju na papir ovoj reèenici.
+
+  5. Ponovite korake 3 i 4 dok ne ispravite reèenicu;
+     prijeðite na Lekciju 2.2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcija 2.2: JOŠ BRISANJA
+
+
+       ** Otipkajte  d$ za brisanje znakova do kraja linije. **
+
+  1. Pritisnite  <ESC>  kako bi bili
+     sigurni da je Vim u Normal modu.
+
+  2. Pomaknite kursor na liniju oznaèenu s  --->.
+
+  3. Pomaknite kursor do kraja ispravne reèenice
+     (POSLJE prve . ).
+
+  4. Otipkajte  d$
+     kako bi izbrisali sve znakove do kraja linije.
+
+---> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput.
+
+  5. Prijeðite na Lekciju 2.3 za bolje objašnjenje.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Lekcija 2.3: UKRATKO O OPERATORIMA I POKRETIMA
+
+
+  Mnogo naredbi koje mijenjaju tekst se sastoje od operatora i pokreta.
+  Oblik naredbe brisanja sa  d  operatorom je sljedeæi:
+
+  	d   pokret
+
+  Pri èemu je:
+    d      - operator brisanja.
+    pokret - ono na èemu æe se operacija izvršavati (navedeno u nastavku).
+
+  Kratka lista pokreta:
+    w - sve do poèetka sljedeæe rijeèi, NE UKLJUÈUJUÆI prvo slovo.
+    e - sve do kraja trenutaène rijeèi, UKLJUÈUJUÆI zadnje slovo.
+    $ - sve do kraje linije, UKLJUÈUJUÆI zadnje slovo.
+
+  Tipkanjem  de  æe se brisati od kursora do kraja rijeèi.
+
+NAPOMENA:  Pritiskajuæi samo pokrete dok ste u Normal modu bez operatora æe
+           pomicati kursor kao što je navedeno.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Lekcija 2.4: KORIŠTENJE BROJANJA ZA POKRETE
+
+
+  ** Tipkanjem nekog broja prije pokreta, pokret se izvršava toliko puta. **
+
+  1. Pomaknite kursor na liniju oznaèenu s --->.
+
+  2. Otipkajte  2w  da pomaknete kursor dvije rijeèi naprijed.
+
+  3. Otipkajte  3e  da pomaknete kursor na kraj treæe rijeèi naprijed.
+
+  4. Otipkajte  0  (nulu) da pomaknete kursor na poèetak linije.
+
+  5. Ponovite korake 2 i 3 s nekim drugim brojevima.
+
+---> Reèenica sa rijeèima po kojoj možete pomicati kursor.
+
+  6. Prijeðite na Lekciju 2.5.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+             Lekcija 2.5: KORIŠTENJE BROJANJA ZA VEÆE BRISANJE
+
+
+	  ** Tipkanje broja N s operatorom ponavlja ga N-puta. **
+
+  U kombinaciji operatora brisanja i pokreta spomenutih iznad
+  ubacujete broj prije pokreta kako bi izbrisali više znakova:
+
+	 d   broj   pokret
+
+  1. Pomaknite kursor na prvo slovo u rijeèi sa VELIKIM SLOVIMA
+     oznaèenu s --->.
+
+  2. Otipkajte  2dw  da izbrišete dvije rijeèi sa VELIKIM SLOVIMA
+
+  3. Ponovite korake 1 i 2 sa razlièitim brojevima da izbrišete
+     uzastopne rijeèi sa VELIKIM SLOVIMA sa samo jednom naredbom.
+
+---> ova ABCÈÆ DÐE linija FGHI JK LMN OP rijeèi je RSŠ TUVZÂŽ popravljena.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lekcija 2.6: OPERIRANJE NAD LINIJAMA
+
+
+	       ** Otipkajte  dd   za brisanje cijele linije. **
+
+  Zbog uèestalosti brisanja cijelih linija, dizajneri Vi-a su odluèili da
+  je lakše brisati linije tipkanjem  d  dvaput.
+
+  1. Pomaknite kursor na drugu liniju u donjoj kitici.
+  2. Otipkajte  dd  kako bi izbrisali liniju.
+  3. Pomaknite kursor na èetvrtu liniju.
+  4. Otipkajte   2dd   kako bi izbrisali dvije linije.
+
+--->  1)  Ruže su crvene,
+--->  2)  Plaža je super,
+--->  3)  Ljubice su plave,
+--->  4)  Imam auto,
+--->  5)  Satovi ukazuju vrijeme,
+--->  6)  Šeæer je sladak
+--->  7)  Kao i ti.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcija 2.7: NAREDBA PONIŠTENJA
+
+
+  ** Pritisnite  u  za poništenje zadnje naredbe,  U  za cijelu liniju. **
+
+  1. Pomaknite kursor na liniju oznaèenu s ---> i postavite kursor na prvu
+     pogrešku.
+  2. Otipkajte  x  kako bi izbrisali prvi neželjeni znak.
+  3. Otipkajte  u  kako bi poništili zadnju izvršenu naredbu.
+  4. Ovaj put ispravite sve pogreške na liniji koristeæi  x  naredbu.
+  5. Sada utipkajte veliko  U  kako bi poništili sve promjene
+     na liniji, vraæajuæi je u prijašnje stanje.
+  6. Sada utipkajte  u  nekoliko puta kako bi poništili  U
+     i prijašnje naredbe.
+  7. Sada utipkajte CTRL-R (držeæi  CTRL  tipku pritisnutom dok
+     ne pritisnete  R) nekoliko puta kako bi vratili promjene
+     (poništili poništenja).
+
+---> Poopravite pogreške nna ovvoj liniji ii pooništiteee ih.
+
+  8. Vrlo korisne naredbe.  Prijeðite na sažetak Lekcije 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Lekcija 2 SAÂŽETAK
+
+
+  1. Brisanje od kursora do sljedeæe rijeèi:    dw
+  2. Brisanje od kursora do kraja linije:    d$
+  3. Brisanje cijele linije:    dd
+
+  4. Za ponavljanje pokreta prethodite mu broj:   2w
+  5. Oblik naredbe mijenjanja:
+               operator   [broj]   pokret
+     gdje je:
+       operator - što napraviti, npr.   d  za brisanje
+       [broj]   - neobavezan broj ponavljanja pokreta
+       pokret   - kretanje po tekstu po kojem se operira,
+                  kao što je: w (rijeè), $ (kraj linije), itd.
+
+  6. Postavljanje kursora na poèetak linije:  0
+
+  7. Za poništenje prethodnih promjena, pritisnite:	  u  (malo u)
+     Za poništenje svih promjena na liniji, pritisnite:   U  (veliko U)
+     Za vraæanja promjena, utipkajte:	CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lekcija 3.1: NAREDBA POSTAVI
+
+
+	** p  za unos prethodno izbrisanog teksta iza kursora. **
+
+  1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->.
+
+  2. Otipkajte  dd  kako bi izbrisali liniju i spremili je u Vim registar.
+
+  3. Pomaknite kursor na liniju c), IZNAD linije koju trebate unijeti.
+
+  4. Otipkajte  p  kako bi postavili liniju ispod kursora.
+
+  5. Ponovite korake 2 do 4 kako bi postavili sve linije u pravilnom
+     rasporedu.
+
+---> d) Možeš li i ti nauèiti?
+---> b) Ljubice su plave,
+---> c) Inteligencija je nauèena,
+---> a) Ruže su crvene,
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lekcija 3.2: NAREDBA PROMJENE
+
+
+      ** Otipkajte  rx  za zamjenu slova ispod kursora sa slovom  x . **
+
+  1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->.
+
+  2. Pomaknite kursor tako da se nalazi na prvoj pogrešci.
+
+  3. Otipkajte  r  i nakon toga ispravan znak na tom mjestu.
+
+  4. Ponovite korake 2 i 3 sve dok prva
+     linije ne bude istovjetna drugoj.
+
+--->  Kede ju ovu limija tupjana, natko je protuskao kruve tupke!
+--->  Kada je ova linija tipkana, netko je pritiskao krive tipke!
+
+  5. Prijeðite na Lekciju 3.2.
+
+NAPOMENA:  Prisjetite da trebate uèiti vježbanjem, ne pamæenjem.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Lekcija 3.3: OPERATOR MIJENJANJA
+
+
+	  ** Za mijenjanje do kraja rijeèi, istipkajte  ce . **
+
+  1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->.
+
+  2. Postavite kursor na  a  u  lackmb.
+
+  3. Otipkajte  ce  i ispravite rijeè (u ovom sluèaju otipkajte  inija ).
+
+  4. Pritisnite <ESC> i pomaknite kursor na sljedeæi znak
+     kojeg je potrebno ispraviti.
+
+  5. Ponovite korake 3 i 4 sve dok prva reèenica ne postane istovjetna
+     drugoj.
+
+---> Ova lackmb ima nekoliko rjlcah koje trfcb mijdmlfsz.
+---> Ova linija ima nekoliko rijeèi koje treba mijenjati.
+
+Primijetite da  ce  briše rijeè i postavlja Vim u Insert mod.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	         Lekcija 3.4: JOŠ MIJENJANJA KORIŠTENJEM c
+
+
+    ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. **
+
+  1. Operator mijenjanja se koristi na isti naèin kao i operator brisanja:
+
+         c    [broj]   pokret
+
+  2. Pokreti su isti, npr:   w (rijeè) i  $ (kraj linije).
+
+  3. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->.
+
+  4. Pomaknite kursor na prvu pogrešku.
+
+  5. Otipkajte  c$  i utipkajte ostatak linije tako da bude istovjetna
+     drugoj te pritisnite <ESC>.
+
+---> Kraj ove linije treba pomoæ tako da izgleda kao linija ispod.
+---> Kraj ove linije treba ispraviti korištenjem c$ naredbe.
+
+NAPOMENA:  Možete koristiti Backspace za ispravljanje grešaka.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Lekcija 3 SAÂŽETAK
+
+
+  1. Za postavljanje teksta koji je upravo izbrisan, pritisnite  p . Ovo
+     postavlja tekst IZA kursora (ako je pak linija izbrisana tekst se
+     postavlja na liniju ispod kursora).
+
+  2. Za promjenu znaka na kojem se nalazi kursor, pritisnite  r  i nakon toga
+     željeni znak.
+
+  3. Operator mijenjanja dozvoljava promjenu teksta od kursora do pozicije do
+     koje dovede pokret. tj. Otipkajte  ce  za mijenjanje od kursora do kraja
+     rijeèi, c$  za mijenjanje od kursora do kraja linije.
+
+  4. Oblik naredbe mijenjanja:
+
+	 c   [broj]   pokret
+
+Prijeðite na sljedeæu lekciju.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Lekcija 4.1: POZICIJA KURSORA I STATUS DATOTEKE
+
+  ** CTRL-G za prikaz pozicije kursora u datoteci i status datoteke.
+     Pritisnite  G  za pomicanje kursora na neku liniju u datoteci. **
+
+NAPOMENA:  Proèitajte cijelu lekciju prije izvršenja bilo kojeg koraka!!
+
+  1. Držite Ctrl tipku pritisnutom i pritisnite  g .  Ukratko: CTRL-G.
+     Vim æe ispisati poruku na dnu ekrana sa imenom datoteke i pozicijom
+     kursora u datoteci.  Zapamtite broj linije za 3. korak.
+
+NAPOMENA:  Možete vidjeti poziciju kursora u donjem desnom kutu ako
+           je postavka 'ruler' aktivirana (objašnjeno u 6. lekciji).
+
+  2. Pritisnite  G  za pomicanje kursora na kraj datoteke.
+     Otipkajte  gg  za pomicanje kursora na poèetak datoteke.
+
+  3. Otipkajte broj linije na kojoj ste bili maloprije i zatim  G .  Kursor
+     æe se vratiti na liniju na kojoj se nalazio kada ste otipkali CTRL-G.
+
+  4. Ako ste spremni, izvršite korake od 1 do 3.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcija 4.2: NAREDBE TRAÂŽENJA
+
+       ** Otipkajte  /  i nakon toga izraz kojeg želite tražiti. **
+
+  1. U Normal modu otipkajte  /  znak.  Primijetite da se znak
+     pojavio zajedno sa kursorom na dnu ekrana kao kod  :  naredbe.
+
+  2. Sada otipkajte 'grrrreška' <ENTER>.  To je rijeè koju zapravo tražite.
+
+  3. Za ponovno traženje istog izraza, otipkajte  n .
+     Za traženje istog izraza ali u suprotnom smjeru, otipkajte  N .
+
+  4. Za traženje izraza unatrag, koristite  ?  umjesto  / .
+
+  5. Za povratak na prethodnu poziciju koristite  CTRL-O  (držite Ctrl
+     pritisnutim dok ne pritisnete tipku o).  Ponavljajte sve dok se ne
+     vratite na poèetak.  CTRL-I slièno kao CTRL-O ali u suprotnom smjeru.
+
+---> "pogrrrreška" je pogrešno; umjesto pogrrrreška treba stajati pogreška.
+
+NAPOMENA:  Ako se traženjem doðe do kraja datoteke nastavit æe se od njenog
+           poèetka osim ako je postavka 'wrapscan' deaktivirana.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Lekcija 4.3: TRAÂŽENJE PRIPADAJUÆE ZAGRADE
+
+
+	** Otipkajte  %  za pronalazak pripadajuæe ), ] ili } . **
+
+  1. Postavite kursor na bilo koju od  ( ,  [  ili  {
+     otvorenih zagrada u liniji oznaèenoj s --->.
+
+  2. Otipkajte znak  % .
+
+  3. Kursor æe se pomaknuti na pripadajuæu zatvorenu zagradu.
+
+  4. Otipkajte  %  kako bi pomakli kursor na drugu pripadajuæu zagradu.
+
+  5. Pomaknite kursor na neku od (,),[,],{ ili } i ponovite  %  naredbu.
+
+---> Linija ( testiranja obiènih ( [ uglatih ] i { vitièastih } zagrada.))
+
+
+NAPOMENA:  Vrlo korisno u ispravljanju koda sa nepripadajuæim zagradama!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcija 4.4: NAREDBE ZAMIJENE
+
+
+       ** Otipkajte  :s/staro/novo/g  da zamijenite 'staro' za 'novo'. **
+
+  1. Pomaknite kursor na liniju oznaèenu s --->.
+
+  2. Otipkajte  :s/cvræè/cvrè <ENTER> .  Primjetite da ova naredba zamjenjuje
+     samo prvi "cvræè" u liniji.
+
+  3. Otipkajte  :s/cvræè/cvrè/g .  Dodavanje  g  stavke znaèi da æe se naredba
+     izvršiti na cijeloj liniji, zamjenjivanjem svih "cvræè" u liniji.
+
+---> i cvræèi cvræèi cvræèak na èvoru crne smrèe.
+
+  4. Za zamjenu svih izraza u rasponu dviju linija,
+     otipkajte :#,#s/staro/novo/g   #,# su brojevi linije datoteke na kojima
+                                    te izmeðu njih æe se izvršiti zamjena.
+     Otipkajte :%s/staro/novo/g     za zamjenu svih izraza u cijeloj datoteci.
+     Otipkajte :%s/staro/novo/gc    za pronalazak svakog izraza u datoteci i
+     			            potvrdu zamjene.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Lekcija 4 SAÂŽETAK
+
+
+  1. CTRL-G  prikazuje poziciju kursora u datoteci i status datoteke.
+             G  postavlja kursor na zadnju liniju datoteke.
+     broj    G  postavlja kursor na  broj  liniju.
+            gg  postavlja kursor na prvu liniju.
+
+  2. Tipkanje  /  sa izrazom traži UNAPRIJED taj izraz.
+     Tipkanje  ?  sa izrazom traži UNATRAG taj izraz.
+     Nakon naredbe traženja koristite  n  za pronalazak izraza u istom
+     smjeru, i  N  za pronalazak istog izraza ali u suprotnom smjeru.
+     CTRL-O vraæa kursor na prethodnu poziciju, CTRL-I na sljedeæu poziciju.
+
+  3. Tipkanje  %  dok je kursor na zagradi pomièe ga na pripadajuæu zagradu.
+
+  4. Za zamjenu prvog izraza staro za izraz novo	   :s/staro/novo
+     Za zamjenu svih izraza staro na cijeloj liniji	   :s/staro/novo/g
+     Za zamjenu svih izraza staro u rasponu linija #,#     :#,#s/staro/novo/g
+     Za zamjenu u cijeloj datoteci			   :%s/staro/novo/g
+     Za potvrdu svake zamjene dodajte 'c'		   :%s/staro/novo/gc
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Lekcija 5.1: IZVRŠAVANJE VANJSKIH NAREDBI
+
+
+	** Otipkajte  :!  sa vanjskom naredbom koju želite izvršiti. **
+
+  1. Otipkajte poznatu naredbu  :  kako bi kursor premjestili na dno
+     ekrana.  Time omoguæavate unos naredbe u naredbenoj liniji.
+
+  2. Otipkajte znak  !  (uskliènik).  Tako omoguæavate
+     izvršavanje naredbe vanjske ljuske.
+
+  3. Kao primjer otipkajte   ls   nakon ! te pritisnite <ENTER>.
+     Ovo æe prikazati sadržaj direktorija, kao da ste u ljusci.
+     Koristite   :!dir   ako   :!ls   ne radi.
+
+NAPOMENA:  Moguæe je izvršavati bilo koju vanjsku naredbu na ovaj naèin,
+           zajedno sa njenim argumentima.
+
+NAPOMENA:  Sve  :  naredbe se izvršavaju nakon što pritisnete <ENTER>
+	   U daljnjem tekstu to neæe uvijek biti napomenuto.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Lekcija 5.2: VIŠE O SPREMANJU DATOTEKA
+
+           ** Za spremanje promjena, otipkajte  :w IME_DATOTEKE. **
+
+  1. Otipkajte   :!dir   ili   :!ls   za pregled direktorija.
+     Veæ znate da morate pritisnuti <ENTER> na kraju tipkanja.
+
+  2. Izaberite ime datoteke koja još ne postoji, npr. TEST.
+
+  3. Otipkajte:	 :w TEST   (gdje je TEST ime koje ste prethodno odabrali.)
+
+  4. Time æe te spremiti cijelu datoteku (Vim Tutor) pod imenom TEST.
+     Za provjeru, otipkajte ponovno   :!dir   ili   :!ls
+     za pregled direktorija.
+
+NAPOMENA:  Ako bi napustili Vim i ponovno ga pokrenuli sa vim TEST ,
+           datoteka bi bila potpuna kopija ove datoteke u trenutku
+           kada ste je spremili.
+
+  5. Izbrišite datoteku tako da otipkate (MS-DOS):	:!del TEST
+				       ili (Unix):	:!rm TEST
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Lekcija 5.3: SPREMANJE OZNAÈENOG TEKSTA
+
+
+   ** Kako bi spremili dio datoteke, otipkajte  v  pokret  :w IME_DATOTEKE **
+
+  1. Pomaknite kursor na ovu liniju.
+
+  2. Pritisnite  v  i pomaknite kursor pet linija ispod ove.
+     Primijetite promjenu, oznaèeni tekst se razlikuje od obiènog.
+
+  3. Pritisnite  :  znak.  Na dnu ekrana pojavit æe se  :'<,'> .
+
+  4. Otipkajte  w TEST  , pritom je TEST ime datoteke koja još ne postoji.
+     Provjerite da zaista piše  :'<,'>w TEST
+     prije nego što pritisnite <ENTER>.
+
+  5. Vim æe spremiti oznaèeni tekst u TEST.  Provjerite sa :!dir  ili  !ls .
+     Nemojte je još brisati!  Koristiti æe te je u sljedeæoj lekciji.
+
+NAPOMENA:  Tipka  v  zapoèinje Vizualno oznaèavanje.  Možete pomicati kursor
+           unaokolo kako bi mijenjali velièinu oznaèenog teksta. Možete
+           koristiti i operatore.  Npr,  d  æe izbrisati oznaèeni tekst.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Lekcija 5.4: UÈITAVANJE DATOTEKA
+
+
+       ** Za ubacivanje sadržaja datoteke, otipkajte  :r IME_DATOTEKE  **
+
+  1. Postavite kursor iznad ove linije.
+
+NAPOMENA:  Nakon što izvršite 2. korak vidjeti æe te tekst iz Lekcije 5.3.
+           Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju.
+
+  2. Uèitajte vašu TEST datoteku koristeæi naredbu   :r TEST
+     gdje je TEST ime datoteke koju ste koristili u prethodnoj lekciji.
+     Sadržaj uèitane datoteke je ubaèen liniju ispod kursora.
+
+  3. Kako bi provjerili da je datoteka uèitana, vratite kursor unatrag i
+     primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke.
+
+NAPOMENA:  Možete takoðer uèitati ispis vanjske naredbe.  Npr,  :r !ls
+           æe uèitati ispis  ls  naredbe i postaviti ispis liniju ispod
+           kursora.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Lekcija 5 SAÂŽETAK
+
+
+  1.  :!naredba  izvršava vanjsku naredbu.
+
+      Korisni primjeri:
+	 (MS-DOS)	  (Unix)
+	  :!dir		   :!ls		   -  pregled direktorija.
+	  :!del DATOTEKA   :!rm DATOTEKA   -  briše datoteku DATOTEKA.
+
+  2.  :w DATOTEKA  zapisuje trenutaènu datoteku na disk sa imenom DATOTEKA.
+
+  3.  v  pokret  :w IME_DATOTEKE  sprema vizualno oznaèene linije u
+      datoteku IME_DATOTEKE.
+
+  4.  :r IME_DATOTEKE  uèitava datoteku IME_DATOTEKE sa diska i stavlja
+      njen sadržaj liniju ispod kursora.
+
+  5.  :r !dir  uèitava ispis naredbe dir i postavlja sadržaj ispisa liniju
+      ispod kursora.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Lekcija 6.1: NAREDBA OTVORI
+
+
+	** Pritisnite  o  kako bi otvorili liniju ispod kursora
+	   i prešli u Insert mod. **
+
+  1. Pomaknite kursor na sljedeæu liniju oznaèenu s --->.
+
+  2. Otipkajte malo  o  kako bi otvorili novu liniju ISPOD kursora
+     i prešli u Insert mod.
+
+  3. Otipkajte nešto teksta i nakon toga pritisnite <ESC>
+     kako bi napustili Insert mod.
+
+---> Nakon što pritisnete  o  kursor æe preæi u novu liniju u Insert mod.
+
+  4. Za otvaranje linije IZNAD kursora, otipkajte umjesto malog o veliko O ,
+     Pokušajte na donjoj liniji oznaèenoj s --->.
+
+---> Otvorite liniju iznad ove - otipkajte O dok je kursor na ovoj liniji.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcija 6.2: NAREDBA DODAJ
+
+
+	     ** Otipkajte  a  za dodavanje teksta IZA kursora. **
+
+  1. Pomaknite kursor na poèetak sljedeæe linije oznaèene s --->.
+  
+  2. Tipkajte  e  dok se kursor ne nalazi na kraju  li .
+
+  3. Otipkajte  a  (malo) kako bi dodali tekst IZA kursora.
+
+  4. Dopunite rijeè kao što je na liniji ispod.
+     Pritisnite <ESC> za izlaz iz Insert moda.
+
+  5. Sa  e  prijeðite na sljedeæu nepotpunu rijeè i ponovite korake 3 i 4.
+  
+---> Ova li omoguæava vje dodav teksta nekoj liniji.
+---> Ova linija omoguæava vježbanje dodavanja teksta nekoj liniji.
+
+NAPOMENA:  Sa i, a, i  A  prelazite u isti Insert mod, jedina
+           razlika je u poziciji od koje æe se tekst ubacivati.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Lekcija 6.3: DRUGI NAÈIN MIJENJANJA
+
+
+      ** Otipkajte veliko  R  kako bi zamijelili više od jednog znaka. **
+
+  1. Pomaknite kursor na prvu sljedeæu liniju oznaèenu s --->.
+     Pomaknite kursor na poèetak prvog  xxx .
+
+  2. Pritisnite  R  i otipkajte broj koji je liniju ispod,
+     tako da zamijeni xxx .
+
+  3. Pritisnite <ESC> za izlaz iz Replace moda.
+     Primijetite da je ostatak linije ostao nepromjenjen.
+
+  5. Ponovite korake kako bi zamijenili preostali xxx.
+
+---> Zbrajanje: 123 plus xxx je xxx.
+---> Zbrajanje: 123 plus 456 je 579.
+
+NAPOMENA:  Replace mod je kao Insert mod, ali sa bitnom razlikom,
+           svaki otipkani znak briše veæ postojeæi.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lekcija 6.4: KOPIRANJE I LIJEPLJENJE TEKSTA
+
+
+    ** Koristite  y  operator za kopiranje a  p  za lijepljenje teksta. **
+
+  1. Pomaknite kursor na liniju s --->  i postavite kursor nakon "a)".
+  
+  2. Pokrenite Visual mod sa  v  i pomaknite kursor sve do ispred "prva".
+  
+  3. Pritisnite  y  kako bi kopirali oznaèeni tekst.
+
+  4. Pomaknite kursor do kraja sljedeæe linije:  j$
+
+  5. Pritisnite  p  kako bi zalijepili tekst.  Onda utipkajte:  druga <ESC> .
+
+  6. Koristite Visual mod kako bi oznaèili " linija.", kopirajte:  y , kursor
+     postavite na kraj sljedeæe linije:  j$  i ondje zalijepite tekst:  p .
+
+--->  a) ovo je prva linija.
+      b)
+
+NAPOMENA:  možete koristiti  y  kao operator;  yw   kopira jednu rijeè.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Lekcija 6.5: MIJENJANJE POSTAVKI
+
+
+ ** Postavka: naredbe traženja i zamijene ne razlikuju VELIKA i mala slova **
+
+  1. Potražite 'razlika' tipkanjem:   /razlika  <ENTER>
+     Nekoliko puta ponovite pritiskanjem  n .
+
+  2. Aktivirajte 'ic' (Ignore case) postavku:   :set ic
+
+  3. Ponovno potražite 'razlika' tipkanjem  n
+     Primijetite da su sada i RAZLIKA i Razlika pronaðeni.
+
+  4. Aktivirajte 'hlsearch' i 'incsearch' postavke:  :set hls is
+
+  5. Otipkajte naredbu traženja i primijetite razlike:  /razlika <ENTER>
+
+  6. Za deaktiviranje  ic  postavke koristite:  :set noic
+
+NAPOMENA:  Za neoznaèavanje pronaðenih izraza otipkajte:   :nohlsearch
+NAPOMENA:  Bez razlikovanja velikih i malih slova u samo jednoj naredbi
+	   koristite  \c u izrazu:  /razlika\c  <ENTER>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Lekcija 6 SAÂŽETAK
+
+  1. Pritisnite  o  za otvaranje linije ISPOD kursora i prelazak u Insert mod.
+     Pritisnite  O  za otvaranje linije IZNAD kursora.
+
+  2. Pritisnite  a  za unos teksta IZA kursora.
+     Pritisnite  A  za unos teksta na kraju linije.
+
+  3. Naredba  e  pomièe kursor na kraj rijeèi.
+
+  4. Operator  y  kopira tekst,  p  ga lijepi.
+
+  5. Tipkanjem velikog  R  Vim prelazi u Replace mod dok ne pritisnete <ESC> .
+
+  6. Tipkanjem ":set xxx" aktivira postavku "xxx".  Neke postavke su:
+  	'ic' 'ignorecase'	ne razlikuje velika/mala slova pri traženju
+	'is' 'incsearch'	traži nedovršene izraze
+	'hls' 'hlsearch'	oznaèi sve pronaðene izraze
+     Možete koristite dugo ili kratko ime postavke.
+
+  7. Prethodite "no" imenu postavke za deaktiviranje iste:   :set noic
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lekcija 7.1: DOBIVANJE POMOÆI
+
+
+		   ** Koristite on-line sustav pomoæi **
+
+  Vim ima detaljan on-line sustav pomoæi.
+  Za poèetak, pokušajte jedno od sljedeæeg:
+	- pritisnite <HELP> tipku (ako je vaša tipkovnica ima)
+	- pritisnite <F1> tipku (ako je vaša tipkovnica ima)
+	- utipkajte   :help <ENTER>
+
+  Proèitajte tekst u prozoru pomoæi kako bi ste se znali služiti istom.
+  Tipkanjem  CTRL-W CTRL-W   prelazite iz jednog prozora u drugi.
+  Otipkajte    :q <ENTER>    kako bi zatvorili prozor pomoæi.
+
+  Pronaæi æe te pomoæ o bilo kojoj temi, tako da dodate upit samoj
+  ":help" naredbi.  Pokušajte (ne zaboravite pritisnuti <ENTER>):
+
+	:help w
+	:help c_CTRL-D
+	:help insert-index
+	:help user-manual
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcija 7.2: PRAVLJENJE SKRIPTE
+
+
+		       ** Aktivirajte Vim moguænosti **
+
+  Vim ima mnogo više alata od Vi-ja, ali veæina njih nije aktivirana.
+  Kako bi mogli koristiti više moguænosti napravite "vimrc" datoteku.
+
+  1. Uredite "vimrc" datoteku.  Ovo ovisi o vašem sistemu:
+	:e ~/.vimrc		za Unix
+	:e $VIM/_vimrc		za MS-Windows
+
+  2. Sada uèitajte primjer sadržaja "vimrc" datoteke:
+	:r $VIMRUNTIME/vimrc_example.vim
+
+  3. Saèuvajte datoteku sa:
+	:w
+
+  Sljedeæeg puta kada pokrenete Vim, bojanje sintakse teksta biti æe
+  aktivirano. Sve vaše postavke možete dodati u "vimrc" datoteku.
+  Za više informacija otipkajte  :help vimrc-intro
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lekcija 7.3: AUTOMATSKO DOVRŠAVANJE
+
+
+	** Dovršavanje iz naredbene linije pomoæu CTRL-D i <TAB> **
+
+  1. Provjerite da Vim nije u Vi modu:  :set nocp
+
+  2. Pogledajte koje datoteke postoje u direktoriju:  :!ls   or  :!dir
+
+  3. Otipkajte poèetak naredbe:  :e
+
+  4. Tipkajte  CTRL-D  i prikazati æe se lista naredbi koje zapoèinju sa "e".
+
+  5. Pritisnite <TAB>  i Vim æe dopuniti unos u naredbu ":edit".
+
+  6. Dodajte razmak i poèetak datoteke:  :edit FIL
+
+  7. Pritisnite <TAB>.  Vim æe nadopuniti ime datoteke (ako je jedinstveno).
+
+NAPOMENA:  Moguæe je dopuniti mnoge naredbe.  Koristite CTRL-D i <TAB>.
+           Naroèito je korisno za  :help  naredbe.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      Lekcija 7 SAÂŽETAK
+
+
+  1. Otipkajte  :help  ili pritisnite <F1> ili <Help>  za pomoæ.
+
+  2. Otipkajte  :help naredba  kako bi dobili pomoæ za  naredba .
+
+  3. Otipkajte  CTRL-W CTRL-W  za prelazak u drugi prozor
+
+  4. Otipkajte  :q  kako bi zatvorili prozor pomoæi
+
+  5. Napravite vimrc skriptu za podizanje kako bi u nju spremali
+     vaše omiljene postavke.
+
+  6. Kada tipkate naredbu koja zapoèinje sa  :
+     pritisnite CTRL-D kako bi vidjeli moguæe valjane vrijednosti.
+     Pritisnite <TAB> kako bi odabrali jednu od njih.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  Kraj.  Cilj priruènika je da pokaže kratak pregled Vim editora, tek toliko
+  da omoguæi njegovo korištenje. Priruènik nije potpun jer Vim ima mnogo više
+  naredbi. Za više informacija: ":help user-manual".
+
+  Za èitanje i korištenje, preporuèamo:
+	Vim - Vi Improved - by Steve Oualline
+	Izdavaè: New Riders
+  Prva knjiga potpuno posveæena Vim-u. Vrlo korisna za poèetnike.
+  Sa mnogo primjera i slika.
+  Posjetite http://iccf-holland.org/click5.html
+
+  Sljedeæa knjiga je nešto starija i više o Vi-u nego o Vim-u, preporuèamo:
+	Learning the Vi Editor - by Linda Lamb
+	Izdavaè: O'Reilly & Associates Inc.
+  Solidna knjiga, možete saznati skoro sve što možete napraviti
+  u Vi-u. Šesto izdanje ima nešto informacija i o Vim-u.
+
+  Ovaj priruènik su napisali: Michael C. Pierce i Robert K. Ware,
+  Colorado School of Mines koristeæi ideje Charles Smith,
+  Colorado State University.  E-pošta: bware@mines.colorado.edu.
+
+  Naknadne promjene napravio je Bram Moolenaar.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Preveo na hrvatski: Paul B. Mahol <onemda@gmail.com>
+  Preinaka 1.42, Lipanj 2008
+
+
diff --git a/runtime/tutor/tutor.it.utf-8 b/runtime/tutor/tutor.it.utf-8
new file mode 100644
index 0000000..051b51b
--- /dev/null
+++ b/runtime/tutor/tutor.it.utf-8
@@ -0,0 +1,967 @@
+===============================================================================
+=    Benvenuto  alla   G u i d a    all'Editor   V I M   -    Versione 1.7    =
+===============================================================================
+
+     Vim è un Editor molto potente ed ha parecchi comandi, troppi per
+     spiegarli tutti in una guida come questa.  Questa guida serve a
+     descrivere quei comandi che ti permettono di usare facilmente
+     Vim come Editor di uso generale.
+
+     Il tempo necessario per completare la guida è circa 25-30 minuti,
+     a seconda di quanto tempo dedichi alla sperimentazione.
+
+     ATTENZIONE!
+     I comandi nelle lezioni modificano questo testo. Fai una copia di questo
+     file per esercitarti (se hai usato "vimtutor", stai già usando una copia).
+
+     E' importante non scordare che questa guida vuole insegnare tramite
+     l'uso. Questo vuol dire che devi eseguire i comandi per impararli
+     davvero. Se leggi il testo e basta, dimenticherai presto i comandi!
+
+     Adesso, assicurati che il tasto BLOCCA-MAIUSCOLO non sia schiacciato
+     e premi il tasto    j    tanto da muovere il cursore fino a che la
+     Lezione 1.1 riempia completamente lo schermo.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lezione 1.1:  MOVIMENTI DEL CURSORE
+
+
+   ** Per muovere il cursore, premi i tasti h,j,k,l come indicato. **
+	     ^
+	     k		    NOTA:  Il tasto h è a sinistra e muove a sinistra.
+       < h	 l >		   Il tasto l è a destra e muove a destra.
+	     j			   Il tasto j ricorda una freccia in giù.
+	     v
+  1. Muovi il cursore sullo schermo finché non ti senti a tuo agio.
+
+  2. Tieni schiacciato il tasto "giù" (j) finché non si ripete il movimento.
+     Adesso sai come arrivare fino alla lezione seguente.
+
+  3. Usando il tasto "giù" spostati alla Lezione 1.2.
+
+NOTA: Quando non sei sicuro del tasto che hai premuto, premi <ESC> per andare
+      in Modalità Normale [Normal Mode]. Poi ri-immetti il comando che volevi.
+
+NOTA: I tasti con le frecce fanno lo stesso servizio. Ma usando hjkl riesci
+      a muoverti molto più rapidamente, dopo che ci si abitua.  Davvero!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lezione 1.2: USCIRE DA VIM
+
+
+  !! NOTA: Prima di eseguire quanto richiesto, leggi la Lezione per intero!!
+
+  1. Premi il tasto <ESC> (per assicurarti di essere in Modalità Normale).
+
+  2. Batti:     :q! <INVIO>.
+     Così esci dall'Editor SCARTANDO qualsiasi modifica fatta.
+
+  3. Quando vedi il PROMPT della Shell, batti il comando con cui sei arrivato
+     qui.  Sarebbe:	vimtutor <INVIO>
+
+  4. Se hai memorizzato questi comandi e ti senti pronto, esegui i passi
+     da 1 a 3 per uscire e rientrare nell'Editor.
+
+NOTA:  :q! <INVIO> SCARTA qualsiasi modifica fatta.  In una delle prossime
+       lezioni imparerai come salvare un file che hai modificato.
+
+  5. Muovi in giù il cursore per passare alla lezione 1.3.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lezione 1.3: MODIFICA DI TESTI - CANCELLAZIONE
+
+
+	** Premere  x  per cancellare il carattere sotto al cursore **
+
+  1. Muovi il cursore alla linea più sotto, indicata da --->.
+
+  2. Per correggere errori, muovi il cursore fino a posizionarlo sopra il
+     carattere da cancellare.
+
+  3. Premi il tasto	x     per cancellare il carattere sbagliato.
+
+  4. Ripeti i passi da 2 a 4 finché la frase è corretta.
+
+---> La mmucca saltòò finnoo allaa lunnna.
+
+  5. Ora che la linea è corretta, vai alla Lezione 1.4
+
+NOTA: Mentre segui questa guida, non cercare di imparare a memoria,
+      ma impara facendo pratica.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lezione 1.4: MODIFICA DI TESTI - INSERIMENTO
+
+
+                   ** Premere  i  per inserire testo. **
+
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.
+
+  2. Per rendere la prima linea uguale alla seconda, muovi il cursore sopra
+     il primo carattere DOPO la posizione in cui il testo va inserito.
+
+  3. Premi  i  e batti le aggiunte opportune.
+
+  4. Quando un errore è corretto, premi <ESC> per tornare in Modalità Normale.
+     Ripeti i passi da 2 a 4 fino a completare la correzione della frase.
+
+---> C'era del tsto mncnt questa .
+---> C'era del testo mancante da questa linea.
+
+  5. Quando sei a tuo agio nell'inserimento di testo vai alla lezione 1.5.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Lezione 1.5: MODIFICA DI TESTI - AGGIUNTA
+
+
+	   ** Premere  A  per aggiungere testo a fine linea. **
+
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.
+     Non importa dove è posizionato il cursore sulla linea stessa.
+
+  2. Batti  A  e inserisci le necessarie aggiunte.
+
+  3. Alla fine della aggiunta premi <ESC> per tornare in modalità Normale.
+
+  4. Muovi il cursore alla seconda linea indicata ---> e ripeti
+     i passi 2 e 3 per correggere questa frase.
+
+---> C'è del testo che manca da qu
+     C'è del testo che manca da questa linea.
+---> C'è anche del testo che ma
+     C'è anche del testo che manca qui.
+
+  5. Quando sei a tuo agio nell'aggiunta di testo vai alla lezione 1.6.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lezione 1.6: MODIFICARE UN FILE
+
+
+	      ** Usare  :wq  per salvare un file e uscire. **
+
+  !! NOTA: Prima di eseguire quanto richiesto, leggi la Lezione per intero!!
+
+  1. Esci da Vim come hai fatto nella lezione 1.2:  :q!
+
+  2. Quando vedi il PROMPT della Shell, batti il comando:  vim tutor <INVIO>
+     'vim' è il comando per richiamare Vim, 'tutor' è il nome del file che
+     desideri modificare.  Usa un file che possa essere modificato.
+
+  3. Inserisci e cancella testo come hai imparato nelle lezioni precedenti.
+
+  4. Salva il file ed esci da Vim con:  :wq  <INVIO>
+
+  5. Rientra in vimtutor e scendi al sommario che segue.
+
+  6. Dopo aver letto i passi qui sopra ed averli compresi: eseguili.
+
+  
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       Lezione 1 SOMMARIO
+
+
+  1. Il cursore si muove usando i tasti con le frecce o i tasti hjkl.
+	 h (sinistra)	j (giù)       k (su)	    l (destra)
+
+  2. Per eseguire Vim dal PROMPT della Shell batti:  vim NOMEFILE <INVIO>
+
+  3. Per uscire da Vim batti: <ESC> :q! <INVIO> per uscire senza salvare.
+		oppure batti: <ESC> :wq <INVIO> per uscire salvando modifiche.
+
+  4. Per cancellare il carattere sotto al cursore batti: x
+
+  5. Per inserire testo subito prima del cursore batti:
+	 i     batti testo inserito	<ESC>	inserisci prima del cursore
+	 A     batti testo aggiunto	<ESC>	aggiungi a fine linea
+
+NOTA: premendo <ESC> ritornerai in Modalità Normale o annullerai
+      un comando errato che puoi aver inserito in parte.
+
+Ora continua con la Lezione 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Lezione 2.1: COMANDI DI CANCELLAZIONE
+
+
+		** Batti  dw  per cancellare una parola. **
+
+  1. Premi  <ESC>  per accertarti di essere in Modalità Normale.
+
+  2. Muovi il cursore fino alla linea qui sotto, indicata da --->.
+
+  3. Muovi il cursore all'inizio di una parola che vuoi cancellare.
+
+  4. Batti   dw   per cancellare la parola.
+
+NOTA: La lettera  d  sarà visibile sull'ultima linea dello schermo mentre la
+      batti. Vim attende che tu batta  w . Se vedi una lettera diversa
+      da  d  hai battuto qualcosa di sbagliato; premi  <ESC>  e ricomincia.
+
+---> Ci sono le alcune parole gioia che non c'entrano carta in questa frase.
+
+  5. Ripeti i passi 3 e 4 finché la frase è corretta, poi vai alla Lezione 2.2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lezione 2.2: ALTRI COMANDI DI CANCELLAZIONE
+
+
+	   ** Batti  d$	per cancellare fino a fine linea. **
+
+  1. Premi  <ESC>  per accertarti di essere in Modalità Normale.
+
+  2. Muovi il cursore fino alla linea qui sotto, indicata da --->.
+
+  3. Muovi il cursore alla fine della linea corretta (DOPO il primo . ).
+
+  4. Batti    d$    per cancellare fino a fine linea.
+
+---> Qualcuno ha battuto la fine di questa linea due volte. linea due volte.
+
+
+  5. Vai alla Lezione 2.3 per capire il funzionamento di questo comando.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lezione 2.3: OPERATORI E MOVIMENTI
+
+
+  Molti comandi di modifica testi consistono in un operatore e un movimento.
+  Il formato del comando di cancellazione con l'operatore  d  è il seguente:
+
+	 d	movimento
+
+  Dove:
+    d	      - è l'operatore di cancellazione
+    movimento - indica dove l'operatore va applicato (lista qui sotto).
+
+  Breve lista di movimenti:
+    w - fino a inizio della parola seguente, ESCLUSO il suo primo carattere.
+    e - alla fine della parola corrente, COMPRESO il suo ultimo carattere.
+    $ - dal cursore fino a fine linea, COMPRESO l'ultimo carattere della linea.
+
+  Quindi se batti  de  cancelli dal cursore fino a fine parola.
+
+NOTA:  Se batti solo il movimento mentre sei in Modalità Normale, senza
+       nessun operatore, il cursore si muoverà come specificato.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	 Lezione 2.4: USO DI UN CONTATORE PER UN MOVIMENTO
+
+
+  ** Se batti un numero prima di un movimento, lo ripeti altrettante volte. **
+
+  1. Muovi il cursore fino all'inizio della linea qui sotto, indicata da --->.
+
+  2. Batti  2w  per spostare il cursore due parole più avanti.
+
+  3. Batti  3e  per spostare il cursore alla fine della terza parola seguente.
+
+  4. Batti  0  (zero) per posizionarti all'inizio della linea.
+
+  5. Ripeti i passi 2 e 3 usando numeri differenti.
+
+---> Questa è solo una linea con parole all'interno della quale puoi muoverti.
+
+  6. Vai alla Lezione 2.5.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	Lezione 2.5: USO DI UN CONTATORE PER CANCELLARE DI PIU'
+
+
+  ** Se batti un numero prima di un movimento, lo ripeti altrettante volte. **
+
+  Nella combinazione dell'operatore cancella e di un movimento, descritto prima,
+  inserite un contatore prima del movimento per cancellare di più:
+	 d   numero   movimento
+
+  1. Muovi il cursore alla prima parola MAIUSCOLA nella riga indicata da --->.
+
+  2. Batti  d2w  per cancellare le due parole MAIUSCOLE
+
+  3. Ripeti i passi 1 e 2 con un contatore diverso per cancellare la parole
+     MAIUSCOLE consecutive con un solo comando
+
+--->  questa ABC DE linea FGHI JK LMN OP di parole è Q RS TUV ora ripulita.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lezione 2.6: LAVORARE SU LINEE INTERE
+
+	    ** Batti  dd  per cancellare un'intera linea. **
+
+  Per la frequenza con cui capita di cancellare linee intere, chi ha
+  disegnato Vi ha deciso che sarebbe stato più semplice battere
+  due d consecutive per cancellare una linea.
+
+  1. Muovi il cursore alla linea 2) nella frase qui sotto.
+  2. Batti  dd  per cancellare la linea.
+  3. Ora spostati alla linea 4).
+  4. Batti   2dd   per cancellare due linee.
+
+--->  1)  Le rose sono rosse,
+--->  2)  Il fango è divertente,
+--->  3)  Le viole sono blu,
+--->  4)  Io ho un'automobile,
+--->  5)  Gli orologi segnano il tempo,
+--->  6)  Lo zucchero è dolce,
+--->  7)  E così sei anche tu.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Lezione 2.7: IL COMANDO UNDO [ANNULLA]
+
+    **  Premi  u  per annullare gli ultimi comandi eseguiti.  **
+    ** Premi  U  per annullare le modifiche all'ultima linea. **
+
+  1. Muovi il cursore fino alla linea qui sotto, indicata da --->.
+     e posizionati sul primo errore.
+  2. Batti  x  per cancellare il primo carattere sbagliato.
+  3. Adesso batti  u  per annullare l'ultimo comando eseguito.
+  4. Ora invece, correggi tutti gli errori sulla linea usando il comando  x .
+  5. Adesso batti una U Maiuscola per riportare la linea al suo stato originale.
+  6. Adesso batti  u  più volte per annullare la  U  e i comandi precedenti.
+  7. Adesso batti più volte CTRL-r (tieni il tasto CTRL schiacciato
+     mentre batti r) per rieseguire i comandi (annullare l'annullamento).
+
+---> Correeggi gli errori ssu quuesta linea e riimpiazzali coon "undo".
+
+  8. Questi comandi sono molto utili. Ora spostati al Sommario della Lezione 2.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       Lezione 2 SOMMARIO
+
+
+  1. Per cancellare dal cursore fino alla parola seguente batti:      dw
+  2. Per cancellare dal cursore fino alla fine della linea batti:     d$
+  3. Per cancellare un'intera linea batti:    dd
+  4. Per eseguire più volte un movimento, mettici davanti un numero:  2w
+  5. Il formato per un comando di modifica è:
+
+       operatore   [numero]   movimento
+     dove:
+       operatore - indica il da farsi, ad es.  d  per [delete] cancellare
+       [numero]  - contatore facoltativo di ripetizione del movimento
+       movimento - spostamento nel testo su cui operare, ad es.
+       		   w [word] parola, $ (fino a fine linea), etc.
+
+  6. Per andare a inizio linea usate uno zero:	0
+  7. Per annullare i comandi precedenti, batti:	 	    u (u minuscola)
+     Per annullare tutte le modifiche a una linea batti:    U (U maiuscola)
+     Per annullare l'annullamento ["redo"]  	  batti:    CTRL-r
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Lezione 3.1: IL COMANDO PUT [METTI, PONI]
+
+
+   ** Batti  p  per porre [put] testo (cancellato prima) dopo il cursore. **
+
+  1. Muovi il cursore alla prima linea indicata con ---> qui in basso.
+
+  2. Batti  dd  per cancellare la linea e depositarla in un registro di Vim.
+
+  3. Muovi il cursore fino alla linea c) SOPRA quella dove andrebbe messa
+     la linea appena cancellata.
+
+  4. Batti  p  per mettere la linea sotto il cursore.
+
+  5. Ripeti i passi da 2 a 4 per mettere tutte le linee nel giusto ordine.
+
+---> d)  Puoi impararla tu?
+---> b)  Le viole sono blu,
+---> c)  La saggezza si impara,
+---> a)  Le rose sono rosse,
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Lezione 3.2: IL COMANDO REPLACE [RIMPIAZZARE]
+
+
+  ** Batti  rx  per rimpiazzare il carattere sotto al cursore con x . **
+
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.
+
+  2. Muovi il cursore fino a posizionarlo sopra il primo errore.
+
+  3. Batti   r	e poi il carattere che dovrebbe stare qui.
+
+  4. Ripeti i passi 2 e 3 finché la prima linea è uguale alla seconda.
+
+--->  Ammattendo quetta lince, qualcuno ho predato alcuni tosti sballiati!
+--->  Immettendo questa linea, qualcuno ha premuto alcuni tasti sbagliati!
+
+  5. Ora passa alla Lezione 3.2.
+
+NOTA: Ricordati che dovresti imparare con la pratica, non solo leggendo.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	     Lezione 3.3: L'OPERATORE CHANGE [CAMBIA]
+
+
+     ** Per cambiare fino alla fine di una parola, batti  ce . **
+
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.
+
+  2. Posiziona il cursore alla  u  in lubw.
+
+  3. Batti  ce  e la parola corretta (in questo caso, batti  inea    ).
+
+  4. Premi <ESC> e vai sul prossimo carattere da modificare.
+
+  5. Ripeti i passi 3 e 4 finché la prima frase è uguale alla seconda.
+
+---> Questa lubw ha alcune pptfd da asdert usgfk l'operatore CHANGE.
+---> Questa linea ha alcune parole da cambiare usando l'operatore CHANGE.
+
+Nota che  ce  cancella la parola, e ti mette anche in Modalità Inserimento
+    [Insert Mode]
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Lezione 3.4: ALTRI CAMBIAMENTI USANDO c
+
+** L'operatore c [CHANGE] agisce sugli stessi movimenti di  d  [DELETE] **
+
+  1. L'operatore CHANGE si comporta come DELETE.  Il formato è:
+
+       c   [numero]   movimento
+
+  2. I movimenti sono gli stessi,
+     ad es. w (word, parola), $ (fine linea), etc.
+
+  3. Muovi il cursore alla prima linea qui sotto, indicata da --->.
+
+  4. Posiziona il cursore al primo errore.
+
+  5. Batti  c$  e inserisci resto della linea utilizzando come modello la
+     linea seguente, e quando hai finito premi <ESC>
+
+---> La fine di questa linea deve essere aiutata a divenire come la seguente.
+---> La fine di questa linea deve essere corretta usando il comando  c$  .
+
+NOTA:  Puoi usare il tasto Backspace se devi correggere errori di battitura.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       Lezione 3 SOMMARIO
+
+
+  1. Per reinserire del testo appena cancellato, batti   p   .  Questo
+     inserisce [pone] il testo cancellato DOPO il cursore (se era stata tolta
+     una linea intera, questa verrà messa nella linea SOTTO il cursore).
+
+  2. Per rimpiazzare il carattere sotto il cursore, batti   r   e poi il
+     carattere che vuoi sostituire.
+
+  3. L'operatore change ti permette di cambiare dal cursore fino a dove
+     arriva il movimento.  Ad es. Batti  ce  per cambiare dal cursore
+     fino alla fine della parola,  c$  per cambiare fino a fine linea.
+
+  4. Il formato di  change  è:
+
+       c   [numero]   movimento
+
+Ora vai alla prossima Lezione.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lezione 4.1: POSIZIONAMENTO E SITUAZIONE FILE
+
+  ** Batti CTRL-G per vedere a che punto sei nel file e la situazione **
+  **     del file.  Batti G  per raggiungere una linea nel file.      **
+
+  NOTA: Leggi l'intera Lezione prima di eseguire un qualsiasi passo!!
+
+  1. Tieni premuto il tasto CTRL e batti  g  .  Ossia batti CTRL-G.
+     Un messaggio apparirà in fondo alla pagina con il NOME FILE e la
+     posizione nel file.  Ricordati il numero della linea per il Passo 3.
+
+NOTA: La posizione del cursore si vede nell'angolo in basso a destra dello
+      schermo, se è impostata l'opzione 'ruler' (righello, vedi :help ruler).
+
+  2. Premi  G  [G Maiuscolo] per posizionarti in fondo al file.
+     Batti gg  per posizionarti in cima al file.
+
+  3. Batti il numero della linea in cui ti trovavi e poi  G  .  Questo ti
+     riporterà fino alla linea in cui ti trovavi quando avevi battuto CTRL-g.
+
+  4. Se ti senti sicuro nel farlo, esegui i passi da 1 a 3.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lezione 4.2: IL COMANDO SEARCH [RICERCA]
+
+     ** Batti  /  seguito da una frase per ricercare quella frase. **
+
+  1. in Modalità Normale batti il carattere  /  . Nota che la "/" e il cursore
+     sono visibili in fondo dello schermo come quando si usa il comando  : .
+
+  2. Adesso batti 'errroore' <INVIO>. Questa è la parola che vuoi ricercare.
+
+  3. Per ricercare ancora la stessa frase, batti soltanto       n  .
+     Per ricercare la stessa frase in direzione opposta, batti  N  .
+
+  4. Per ricercare una frase nella direzione opposta, usa  ?  al posto di  /  .
+
+  5. Per tornare dove eri prima nel file premi  CTRL-O  (tieni il tasto CTRL
+     schiacciato mentre premi la lettera o).  Ripeti  CTRL-O  per andare ancora
+     indietro. Puoi usare  CTRL-I  per tornare in avanti.
+
+NOTA: "errroore" non è il modo giusto di digitare errore; errroore è un errore.
+NOTA: Quando la ricerca arriva a fine file, ricomincia dall'inizio del file,
+      a meno che l'opzione 'wrapscan' sia stata disattivata.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Lezione 4.3: RICERCA DI PARENTESI CORRISPONDENTI
+
+
+	 ** Batti  %  per trovare una  ),], o }  corrispondente. **
+
+  1. Posiziona il cursore su una (, [, o { nella linea sotto, indicata da --->.
+
+  2. Adesso batti il carattere   %  .
+
+  3. Il cursore si sposterà sulla parentesi corrispondente.
+
+  4. Batti  %  per muovere il cursore all'altra parentesi corrispondente.
+
+---> Questa ( è una linea di test con (, [ ] e { } al suo interno. ))
+
+
+NOTA: Questo è molto utile nel "debug" di un programma con parentesi errate!
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	    Lezione 4.4: L'OPERATORE SOSTITUZIONE (SUBSTITUTE)
+
+  ** Batti  :s/vecchio/nuovo/g  per sostituire 'nuovo' a 'vecchio'. **
+
+  1. Muovi il cursore fino alla linea qui sotto, indicata da --->.
+
+  2. Batti  :s/lla/la <INVIO> .  Nota che questo comando cambia solo
+     LA PRIMA occorrenza di "lla" sulla linea.
+
+  3. Adesso batti  :s/lla/la/g . Aggiungendo la flag  g  si chiede di
+     sostituire "globalmente" sulla linea, ossia tutte le occorrenze
+     di "lla" sulla linea.
+
+---> lla stagione migliore per lla fioritura è lla primavera.
+
+  4. Per cambiare ogni ricorrenza di una stringa di caratteri tra due linee,
+     batti :#,#s/vecchio/nuovo/g  dove #,# sono i numeri che delimitano
+                                  il gruppo di linee in cui si vuole sostituire.
+     Batti :%s/vecchio/nuovo/g    per cambiare ogni occorrenza nell'intero file.
+     Batti :%s/vecchio/nuovo/gc   per trovare ogni occorrenza nell'intero file
+                                  ricevendo per ognuna una richiesta se
+				  effettuare o meno la sostituzione.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       Lezione 4 SOMMARIO
+
+
+1. CTRL-G  visualizza a che punto sei nel file e la situazione del file.
+          G  [G Maiuscolo] ti porta all'ultima linea del file.
+   numero G  ti porta alla linea con quel numero.
+         gg  ti porta alla prima linea del file.
+
+2. Battendo  /  seguito da una frase ricerca IN AVANTI quella frase.
+   Battendo  ?  seguito da una frase ricerca ALL'INDIETRO quella frase.
+   DOPO una ricerca batti    n   per trovare la prossima occorrenza nella
+   stessa direzione, oppure  N   per cercare in direzione opposta.
+   CTRL-O ti porta alla posizione precedente, CTRL-I a quella più nuova.
+
+3. Battendo  %  mentre il cursore si trova su  (,),[,],{, oppure }
+   ti posizioni sulla corrispondente parentesi.
+
+4. Per sostituire "nuovo" al primo "vecchio" in 1 linea batti :s/vecchio/nuovo
+   Per sostituire "nuovo" ad ogni  "vecchio" in 1 linea batti :s/vecchio/nuovo/g
+   Per sostituire frasi tra 2 numeri di linea [#]  batti   :#,#s/vecchio/nuovo/g
+   Per sostituire tutte le occorrenze nel file batti	     :%s/vecchio/nuovo/g
+   Per chiedere conferma ogni volta aggiungi 'c'	    :%s/vecchio/nuovo/gc
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Lezione 5.1: COME ESEGUIRE UN COMANDO ESTERNO
+
+
+  ** Batti  :!  seguito da un comando esterno per eseguire quel comando. **
+
+  1. Batti il comando   :   per posizionare il cursore in fondo allo schermo.
+     Ciò ti permette di immettere un comando dalla linea comandi.
+
+  2. Adesso batti il carattere  !  (punto esclamativo).  Ciò ti permette di
+     eseguire qualsiasi comando esterno si possa eseguire nella "shell".
+
+  3. Ad esempio batti   ls   dopo il ! e poi premi <INVIO>.  Questo
+     visualizza una lista della tua directory, proprio come se fossi in una
+     "shell". Usa   :!dir  se  ls  non funziona.   [Unix: ls  MS-DOS: dir]
+
+NOTA:  E' possibile in questo modo eseguire un comando a piacere, specificando
+       anche dei parametri per i comandi stessi.
+
+NOTA:  Tutti i comandi  :  devono essere terminati premendo <INVIO>
+       Da qui in avanti non lo ripeteremo ogni volta.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	      Lezione 5.2: ANCORA SULLA SCRITTURA DEI FILE
+
+
+   ** Per salvare le modifiche apportate a un testo batti :w NOMEFILE. **
+
+  1. Batti  :!dir  or  :!ls  per procurarti una lista della tua directory.
+     Già sai che devi premere <INVIO> dopo aver scritto il comando.
+
+  2. Scegli un NOMEFILE che ancora non esista, ad es. TEST   .
+
+  3. Adesso batti:	 :w TEST   (dove TEST è il NOMEFILE che hai scelto).
+
+  4. Questo salva l'intero file ("tutor.it")  con il nome di TEST.
+     Per verifica batti ancora  :!dir  o  :!ls  per listare la tua directory.
+
+NOTA: Se esci da Vim e riesegui Vim battendo  vim TEST , il file aperto
+      sarà una copia esatta di "tutor.it" al momento del salvataggio.
+
+  5. Ora cancella il file battendo (MR-DOS):   :!del TEST
+				 o (Unix):     :!rm TEST
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lezione 5.3: SELEZIONARE IL TESTO DA SCRIVERE
+
+   ** Per salvare una porzione di file, batti  v movimento :w NOMEFILE **
+
+  1. Muovi il cursore su questa linea.
+
+  2. Premi  v  e muovi il cursore fino alla linea numerata 5., qui sotto.
+     Nota che il testo viene evidenziato.
+
+  3. Batti il carattere  :  .  In fondo allo schermo apparirà :'<,'>  .
+
+  4. Batti  w TEST  , dove TEST è il nome di un file non ancora esistente.
+     Verifica che si veda  :'<,'>w TEST   prima di dare <INVIO>.
+
+  5. Vim scriverà nel file TEST le linee che hai selezionato.  Usa  :!dir
+     o  :!ls  per controllare che esiste.  Non cancellarlo ora!  Ti servirà
+     nella prossima lezione.
+
+NOTA:  Battere  v  inizia una selezione visuale.  Puoi muovere il cursore
+       come vuoi, e rendere la selezione più piccola o più grande.  Poi
+       puoi usare un operatore per agire sul testo selezionato.
+       Ad es.,  d  cancella il testo.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		  Lezione 5.4: INSERIRE E RIUNIRE FILE
+
+
+   ** Per inserire il contenuto di un file, batti  :r NOMEFILE  **
+
+  1. Posiziona il cursore appena sopra questa riga.
+
+NOTA: Dopo aver eseguito il Passo 2 vedrai il testo della Lezione 5.3.
+      Quindi spostati IN GIU' per tornare ancora a questa Lezione.
+
+  2. Ora inserisci il tuo file TEST con il comando   :r TEST   dove TEST è
+     il nome che hai usato per creare il file.
+     Il file richiesto è inserito sotto la linea in cui si trova il cursore.
+
+  3. Per verificare che un file è stato inserito, torna indietro col cursore
+     e nota che ci sono ora 2 copie della Lezione 5.3, quella originale e
+     quella che viene dal file.
+
+NOTA:  Puoi anche leggere l'output prodotto da un comando esterno. Ad es.
+       :r !ls  legge l'output del comando  ls e lo inserisce sotto la linea
+       in cui si trova il cursore.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       Lezione 5 SOMMARIO
+
+
+  1.  :!comando  esegue un comando esterno.
+
+      Alcuni esempi utili sono [in MSDOS]:
+	  :!dir		     -	visualizza lista directory
+	  :!del NOMEFILE     -	cancella file NOMEFILE.
+
+  2.  :w NOMEFILE  scrive su disco il file che stai editando con nome NOMEFILE.
+
+  3.  v movimento :w NOMEFILE  salva le linee selezionate in maniera
+      visuale nel file NOMEFILE.
+
+  4.  :r NOMEFILE  legge il file NOMEFILE da disco e lo inserisce nel file
+      che stai modificando, dopo la linea in cui è posizionato il cursore.
+
+  5.  :r !dir  legge l'output del comando  dir  e lo inserisce dopo la
+      linea in cui è posizionato il cursore.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Lezione 6.1: IL COMANDO OPEN [APRIRE]
+
+
+        ** Batti   o   per aprire una linea sotto il cursore **
+        **         e passare in Modalità Inserimento.        **
+
+  1. Muovi il cursore fino alla linea qui sotto, indicata da --->.
+
+  2. Batti la lettera minuscola  o  per aprire una linea sotto il cursore e
+     passare in Modalità Inserimento.
+
+  3. Poi inserisci del testo e premi <ESC> per uscire dalla
+     Modalità Inserimento.
+
+---> Dopo battuto  o  il cursore è sulla linea aperta (in Modalità Inserimento).
+
+  4. Per aprire una linea SOPRA il cursore, batti una   O  maiuscola, invece
+     che una   o   minuscola. Prova sulla linea qui sotto.
+Apri una linea SOPRA questa battendo  O  mentre il cursore è su questa linea.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lezione 6.2: IL COMANDO APPEND [AGGIUNGERE]
+
+	     ** Batti   a   per inserire testo DOPO il cursore. **
+
+  1. Muovi il cursore all'inizio della linea qui sotto, indicata da --->.
+
+  2. Batti  e  finché il cursore arriva alla fine di  li .
+
+  3. Batti una  a  (minuscola) per aggiungere testo DOPO il cursore.
+
+  4. Completa la parola come mostrato nella linea successiva.  Premi <ESC>
+     per uscire dalla Modalità Inserimento.
+
+  5. Usa  e  per passare alla successiva parola incompleta e ripeti i passi
+     3 e 4.
+
+---> Questa li ti permetterà di esercit ad aggiungere testo a una linea.
+---> Questa linea ti permetterà di esercitarti ad aggiungere testo a una linea.
+
+NOTA: a, i ed A entrano sempre in Modalità Inserimento, la sola differenza
+      è dove verranno inseriti i caratteri.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	   Lezione 6.3: UN ALTRO MODO DI RIMPIAZZARE [REPLACE]
+
+
+     ** Batti una  R  maiuscola per rimpiazzare più di un carattere. **
+
+  1. Muovi il cursore alla prima linea qui sotto, indicata da --->.  Muovi il
+     cursore all'inizio del primo  xxx .
+
+  2. Ora batti  R  e batti il numero che vedi nella linea seguente, in modo
+     che rimpiazzi l'  xxx .
+
+  3. Premi <ESC> per uscire dalla Modalità Replace.  Nota che il resto della
+     linea resta invariato.
+
+  4. Ripeti i passi in modo da rimpiazzare l'altro xxx .
+
+---> Aggiungendo 123 a xxx si ottiene xxx.
+---> Aggiungendo 123 a 456 si ottiene 579.
+
+NOTA:  La Modalità Replace è come la Modalità Inserimento, ma ogni carattere
+       che viene battuto ricopre un carattere esistente.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Lezione 6.4: COPIA E INCOLLA DEL TESTO
+
+
+     ** usa l'operatore  y  per copiare del testo e  p  per incollarlo **
+
+  1. Vai alla linea indicata da ---> qui sotto, e metti il cursore dopo "a)".
+  
+  2. Entra in Modalità Visuale con  v  e metti il cursore davanti a "primo".
+  
+  3. Batti  y  per copiare [yank] il testo evidenziato.
+
+  4. Muovi il cursore alla fine della linea successiva:  j$
+
+  5. Batti  p  per incollare [paste] il testo.  Poi batti:  a secondo <ESC> .
+
+  6. Usa la Modalità Visuale per selezionare " elemento.", copialo con  y ,
+     Vai alla fine della linea successiva con  j$  e incolla il testo con  p .
+
+--->  a) questo è il primo elemento.
+      b)
+
+NOTA: Puoi usare  y  come operatore;  yw  copia una parola [word].
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	         Lezione 6.5: SET [IMPOSTA] UN'OPZIONE
+
+       ** Imposta un'opzione per ignorare maiuscole/minuscole **
+       **             durante la ricerca/sostituzione         **
+
+ 1. Ricerca 'nota' battendo:   /nota <ENTER>
+    Ripeti la ricerca più volte usando il tasto   n
+
+ 2. Imposta l'opzione 'ic' (Ignore Case, [Ignora maiuscolo/minuscolo])
+    battendo:  :set ic
+
+ 3. Ora ricerca ancora 'nota' premendo il tasto    n
+    Troverai adesso anche  Nota  e  NOTA .
+
+ 4. Imposta le opzioni 'hlsearch' e 'incsearch'    :set hls is
+
+ 5. Ora batti ancora il comando di ricerca, e guarda cosa succede:    /nota
+ 
+ 6. Per disabilitare il riconoscimento di maiuscole/minuscole batti:  :set noic
+NOTA: Per non evidenziare le occorrenze trovate batti:   :nohlsearch
+NOTA: Per ignorare maiuscole/minuscole solo per una ricerca, usa \c
+      nel comando di ricerca:    /nota\c <INVIO>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lezione 6 SOMMARIO
+
+  1. Batti  o  per aggiungere una linea SOTTO il cursore ed entrare in
+               Modalità Inserimento.
+     Batti  O  per aggiungere una linea SOPRA il cursore.
+
+  2. Batti  a  per inserire testo DOPO il cursore.
+     Batti  A  per inserire testo alla fine della linea.
+
+  3. Il comando   e  sposta il cursore alla fine di una parola.
+
+  4. L'operatore  y  copia del testo,  p  incolla del testo.
+
+  5. Batti  R  per entrare in Modalità Replace, e ne esci premendo <ESC>.
+
+  6. Batti ":set xxx" per impostare l'opzione "xxx". Alcun opzioni sono:
+      'ic' 'ignorecase'	ignorare maiuscole/minuscole nella ricerca
+      'is' 'incsearch'	mostra occorrenze parziali durante una ricerca
+      'hls' 'hlsearch'	evidenzia tutte le occorrenze di una ricerca
+     Puoi usare sia il nome completo di un'opzione che quello abbreviato.
+
+  7. Usa il prefisso "no" per annullare una opzione:   :set noic
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lezione 7.1: OTTENERE AIUTO
+
+		 ** Usa il sistema di aiuto on-line **
+
+  Vim ha un esauriente sistema di aiuto on-line.  Per cominciare, prova una di
+  queste alternative:
+	- premi il tasto <AIUTO> (se ce n'è uno)
+	- premi il tasto <F1>    (se ce n'è uno)
+	- batti   :help  <INVIO>  OPPURE   :h <INVIO>
+
+  Leggi il testo nella finestra di aiuto per vedere come funziona l'aiuto.
+  Batti  CTRL-W CTRL-W	per passare da una finestra all'altra.
+  Batti  :q <INVIO>   per chiudere la finestra di aiuto.
+
+  Puoi trovare aiuto su quasi tutto, dando un argomento al comando ":help"
+  Prova questi (non dimenticare di premere <INVIO>):
+
+	:help w
+	:help c_CTRL-D
+	:help insert-index
+	:help user-manual
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 Lezione 7.2: PREPARARE UNO SCRIPT INIZIALE
+
+		        ** Attiva le opzioni Vim **
+
+  Vim ha molte più opzioni di Vi, ma molte di esse sono predefinite inattive.
+  Per cominciare a usare più opzioni, devi creare un file "vimrc".
+
+  1. Comincia a editare il file "vimrc".  Questo dipende dal tuo sistema:
+	:e ~/.vimrc		per Unix
+	:e $VIM/_vimrc		per MS-Windows
+
+  2. Ora leggi i contenuti del file "vimrc" distribuito come esempio:
+
+	:r $VIMRUNTIME/vimrc_example.vim
+
+  3. Scrivi il file con:
+	:w
+
+  La prossima volta che apri Vim, sarà abilitata la colorazione sintattica.
+  Puoi aggiungere a questo file "vimrc" tutte le tue impostazioni preferite.
+  Per maggiori informazioni batti:  :help vimrc-intro
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lezione 7.3: COMPLETAMENTO
+
+
+	      ** Completamento linea comandi con CTRL-D e <TAB> **
+
+  1. Imposta Vim in modalità compatibile:  :set nocp
+
+  2. Guarda i file esistenti nella directory:  :!ls   o  :!dir
+
+  3. Batti l'inizio di un comando:  :e
+
+  4. Premi  CTRL-D  e Vim ti mostra una lista di comandi che iniziano per "e".
+
+  5. Premi  <TAB>  e Vim completa per te il nome comando come ":edit".
+
+  6. Ora batti uno spazio e l'inizio del nome di un file esistente:  :edit FIL
+
+  7. Premi <TAB>.  Vim completerà il nome del file (se è il solo possibile).
+
+NOTA:  Il completamento è disponibile per molti comandi.  Prova a battere
+       CTRL-D e <TAB>.  Particolarmente utile per  :help .
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			   Lezione 7 Sommario
+
+
+  1. Batti  :help  o premi <F1> o <Help>  per aprire una finestra di aiuto.
+
+  2. Batti  :help comando  per avere aiuto su  comando .
+
+  3. Batti  CTRL-W CTRL-W  per saltare alla prossima finestra.
+
+  4. Batti  :q  per chiudere la finestra di aiuto.
+
+  5. Crea uno script iniziale vimrc contenente le tue impostazioni preferite.
+
+  6. Mentre batti un comando  : , premi CTRL-D per vedere i possibili
+     completamenti.  Premi <TAB> per usare il completamento desiderato.
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  Qui finisce la Guida a Vim.  Il suo intento è di fornire una breve panoramica
+  dell'Editor Vim, che ti consenta di usare l'Editor abbastanza facilmente.
+  Questa guida è largamente incompleta poiché Vim ha moltissimi altri comandi.
+  Puoi anche leggere il manuale utente (anche in italiano): ":help user-manual".
+
+  Per ulteriore lettura e studio, raccomandiamo:
+	Vim - Vi Improved - di Steve Oualline     Editore: New Riders
+  Il primo libro completamente dedicato a Vim. Utile specie per principianti.
+  Contiene molti esempi e figure.
+  Vedi http://iccf-holland.org/click5.html
+
+  Quest'altro libro è più su Vi che su Vim, ma è pure consigliato:
+	Learning the Vi Editor - di Linda Lamb e Arnold Robbins
+	Editore: O'Reilly & Associates Inc.
+  E' un buon libro per imparare quasi tutto ciò che puoi voler fare con Vi.
+  Ne esiste una traduzione italiana, basata su una vecchia edizione.
+
+  Questa guida è stata scritta da Michael C. Pierce e Robert K. Ware,
+  Colorado School of Mines, usando idee fornite da Charles Smith,
+  Colorado State University - E-mail: bware@mines.colorado.edu
+  Modificato per Vim da Bram Moolenaar.
+  Segnalare refusi ad Antonio Colombo - E-mail: azc100@gmail.com
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~