summaryrefslogtreecommitdiff
path: root/runtime/tutor
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2008-06-24 22:09:24 +0000
committerBram Moolenaar <Bram@vim.org>2008-06-24 22:09:24 +0000
commitc1a11ed54c7974b74be38f2aef6a200d7cfc878e (patch)
treecbd3d302d09444426d21d905b56dbfafb6cf2497 /runtime/tutor
parent446cb837a017fc1c1b144cb5c2a35cb90abfbbcf (diff)
downloadvim-git-c1a11ed54c7974b74be38f2aef6a200d7cfc878e.tar.gz
updated for version 7.2a
Diffstat (limited to 'runtime/tutor')
-rw-r--r--runtime/tutor/Filelist716
-rw-r--r--runtime/tutor/README_bindos.txt19
-rw-r--r--runtime/tutor/README_lang.txt5
-rw-r--r--runtime/tutor/README_srcdos.txt12
-rw-r--r--runtime/tutor/README_unix.txt10
-rw-r--r--runtime/tutor/runtime/filetype.vim2412
-rw-r--r--runtime/tutor/runtime/ftoff.vim11
-rw-r--r--runtime/tutor/runtime/vim32x32.pngbin0 -> 347 bytes
-rw-r--r--runtime/tutor/runtime/vimlogo.xpm75
-rw-r--r--runtime/tutor/runtime/vimrc_example.vim94
-rw-r--r--runtime/tutor/tutor6
-rw-r--r--runtime/tutor/tutor.fr.utf-8809
-rw-r--r--runtime/tutor/tutor.hr.cp1250972
-rw-r--r--runtime/tutor/tutor.it.utf-8967
14 files changed, 6105 insertions, 3 deletions
diff --git a/runtime/tutor/Filelist b/runtime/tutor/Filelist
new file mode 100644
index 000000000..aa423d998
--- /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 000000000..593a92554
--- /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 000000000..9df9f7609
--- /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 000000000..ef78029c6
--- /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 000000000..5338cb16e
--- /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 000000000..89af04cce
--- /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 000000000..377c6ef82
--- /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 000000000..c6e04fab2
--- /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 000000000..63e0d54b5
--- /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 000000000..a2a891c16
--- /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 32aef9445..31ba71072 100644
--- a/runtime/tutor/tutor
+++ b/runtime/tutor/tutor
@@ -139,12 +139,12 @@ NOTE: As you go through this tutor, do not try to memorize, learn by usage.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lesson 1.6: EDITING A FILE
-
** Use :wq to save a file and exit. **
!! NOTE: Before executing any of the steps below, read this entire lesson!!
1. Exit this tutor as you did in lesson 1.2: :q!
+ Or, if you have access to another terminal, do the following there.
2. At the shell prompt type this command: vim tutor <ENTER>
'vim' is the command to start the Vim editor, 'tutor' is the name of the
@@ -154,10 +154,10 @@ NOTE: As you go through this tutor, do not try to memorize, learn by usage.
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 000000000..5ab14cdb0
--- /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 000000000..92771ab22
--- /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 000000000..051b51bbe
--- /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
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~