summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvimboss <devnull@localhost>2008-06-24 22:09:24 +0000
committervimboss <devnull@localhost>2008-06-24 22:09:24 +0000
commitd4217d151c973aa720467846eec4c7579616a5ff (patch)
treecbd3d302d09444426d21d905b56dbfafb6cf2497
parent0fef5afcecafb08f0827115b5a0a1e1c41ca0321 (diff)
downloadvim-d4217d151c973aa720467846eec4c7579616a5ff.tar.gz
updated for version 7.2a
-rw-r--r--runtime/autoload/xml/html401t.vim1
-rw-r--r--runtime/autoload/xml/html40f.vim1
-rw-r--r--runtime/colors/README.txt3
-rw-r--r--runtime/compiler/perl.vim14
-rw-r--r--runtime/doc/arabic.txt2
-rw-r--r--runtime/doc/spell.txt9
-rw-r--r--runtime/doc/usr_01.txt5
-rw-r--r--runtime/doc/usr_11.txt2
-rw-r--r--runtime/doc/usr_27.txt4
-rw-r--r--runtime/doc/usr_28.txt6
-rw-r--r--runtime/doc/usr_40.txt2
-rw-r--r--runtime/doc/windows.txt12
-rw-r--r--runtime/ftplugin/denyhosts.vim18
-rw-r--r--runtime/ftplugin/php.vim21
-rw-r--r--runtime/ftplugin/vim.vim20
-rw-r--r--runtime/spell/pt/main.aap56
-rw-r--r--runtime/syntax/gitsendemail.vim19
-rw-r--r--runtime/syntax/mail.vim12
-rw-r--r--runtime/syntax/postscr.vim260
-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
-rw-r--r--src/INSTALL1
-rw-r--r--src/edit.c2
-rw-r--r--src/ops.c13
-rw-r--r--src/option.c34
-rw-r--r--src/option.h8
-rw-r--r--src/po/ja.sjis.po239
-rw-r--r--src/po/no.po12
-rw-r--r--src/po/zh_CN.cp936.po2
-rw-r--r--src/popupmnu.c32
-rw-r--r--src/proto/os_unix.pro1
-rw-r--r--src/structs.h5
-rw-r--r--src/vim.rc4
45 files changed, 6609 insertions, 319 deletions
diff --git a/runtime/autoload/xml/html401t.vim b/runtime/autoload/xml/html401t.vim
index 4c53f03b..ae6c63f6 100644
--- a/runtime/autoload/xml/html401t.vim
+++ b/runtime/autoload/xml/html401t.vim
@@ -458,4 +458,3 @@ let g:xmldata_html401t = {
\ 'param': ['/>', ''],
\ }
\ }
-" vim:ft=vim:ff=unix
diff --git a/runtime/autoload/xml/html40f.vim b/runtime/autoload/xml/html40f.vim
index 2b3ccacf..b5ba99f8 100644
--- a/runtime/autoload/xml/html40f.vim
+++ b/runtime/autoload/xml/html40f.vim
@@ -466,4 +466,3 @@ let g:xmldata_html40t = {
\ 'param': ['/>', ''],
\ }
\ }
-" vim:ft=vim:ff=unix
diff --git a/runtime/colors/README.txt b/runtime/colors/README.txt
index 0bd84842..988e2a04 100644
--- a/runtime/colors/README.txt
+++ b/runtime/colors/README.txt
@@ -50,6 +50,9 @@ If you think you have a color scheme that is good enough to be used by others,
please check the following items:
- Does it work in a color terminal as well as in the GUI?
+- Is "g:colors_name" set to a meaningful value? In case of doubt you can do
+ it this way:
+ let g:colors_name = expand('<sfile>:t:r')
- Is 'background' either used or appropriately set to "light" or "dark"?
- Try setting 'hlsearch' and searching for a pattern, is the match easy to
spot?
diff --git a/runtime/compiler/perl.vim b/runtime/compiler/perl.vim
index 1d30472b..2b7c94a8 100644
--- a/runtime/compiler/perl.vim
+++ b/runtime/compiler/perl.vim
@@ -1,7 +1,7 @@
" Vim Compiler File
" Compiler: Perl syntax checks (perl -Wc)
" Maintainer: Christian J. Robinson <infynity@onewest.net>
-" Last Change: 2004 Mar 27
+" Last Change: 2006 Aug 13
if exists("current_compiler")
finish
@@ -15,12 +15,20 @@ endif
let s:savecpo = &cpo
set cpo&vim
+if exists('g:perl_compiler_force_warnings') && g:perl_compiler_force_warnings == 0
+ let s:warnopt = 'w'
+else
+ let s:warnopt = 'W'
+endif
+
if getline(1) =~# '-[^ ]*T'
- CompilerSet makeprg=perl\ -WTc\ %
+ let s:taintopt = 'T'
else
- CompilerSet makeprg=perl\ -Wc\ %
+ let s:taintopt = ''
endif
+exe 'CompilerSet makeprg=perl\ -' . s:warnopt . s:taintopt . 'c\ %'
+
CompilerSet errorformat=
\%-G%.%#had\ compilation\ errors.,
\%-G%.%#syntax\ OK,
diff --git a/runtime/doc/arabic.txt b/runtime/doc/arabic.txt
index 8e0b7964..9445f2e0 100644
--- a/runtime/doc/arabic.txt
+++ b/runtime/doc/arabic.txt
@@ -1,4 +1,4 @@
-*arabic.txt* For Vim version 7.1. Last change: 2005 Mar 29
+*arabic.txt* For Vim version 7.2a. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Nadim Shaikli
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index 832dee36..e6c40c83 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt* For Vim version 7.1. Last change: 2007 May 07
+*spell.txt* For Vim version 7.2a. Last change: 2008 Jun 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -21,7 +21,7 @@ vimspell" to find about it. But you will probably want to get rid of the
plugin and use the 'spell' option instead, it works better.
==============================================================================
-1. Quick start *spell-quickstart*
+1. Quick start *spell-quickstart* *E756*
This command switches on spell checking: >
@@ -46,7 +46,7 @@ won't work.
To search for the next misspelled word:
- *]s* *E756*
+ *]s*
]s Move to next misspelled word after the cursor.
A count before the command can be used to repeat.
'wrapscan' applies.
@@ -619,7 +619,8 @@ SPELL FILE MISSING *spell-SpellFileMissing* *spellfile.vim*
If the spell file for the language you are using is not available, you will
get an error message. But if the "spellfile.vim" plugin is active it will
offer you to download the spell file. Just follow the instructions, it will
-ask you where to write the file.
+ask you where to write the file (there must be a writable directory in
+'runtimepath' for this).
The plugin has a default place where to look for spell files, on the Vim ftp
server. If you want to use another location or another protocol, set the
diff --git a/runtime/doc/usr_01.txt b/runtime/doc/usr_01.txt
index 50f3649e..1e00a110 100644
--- a/runtime/doc/usr_01.txt
+++ b/runtime/doc/usr_01.txt
@@ -1,4 +1,4 @@
-*usr_01.txt* For Vim version 7.1. Last change: 2006 Oct 08
+*usr_01.txt* For Vim version 7.2a. Last change: 2008 May 07
VIM USER MANUAL - by Bram Moolenaar
@@ -118,6 +118,9 @@ available, use the two-letter language code. For French: >
vimtutor fr
+On Unix, if you prefer using the GUI version of Vim, use "gvimtutor" or
+"vimtutor -g" instead of "vimtutor".
+
For OpenVMS, if Vim has been properly installed, you can start vimtutor from a
VMS prompt with: >
diff --git a/runtime/doc/usr_11.txt b/runtime/doc/usr_11.txt
index 88916d9c..edb45981 100644
--- a/runtime/doc/usr_11.txt
+++ b/runtime/doc/usr_11.txt
@@ -1,4 +1,4 @@
-*usr_11.txt* For Vim version 7.1. Last change: 2006 Apr 24
+*usr_11.txt* For Vim version 7.2a. Last change: 2006 Apr 24
VIM USER MANUAL - by Bram Moolenaar
diff --git a/runtime/doc/usr_27.txt b/runtime/doc/usr_27.txt
index 713dd42f..71bfdda9 100644
--- a/runtime/doc/usr_27.txt
+++ b/runtime/doc/usr_27.txt
@@ -1,4 +1,4 @@
-*usr_27.txt* For Vim version 7.1. Last change: 2006 Apr 24
+*usr_27.txt* For Vim version 7.2a. Last change: 2007 Nov 10
VIM USER MANUAL - by Bram Moolenaar
@@ -516,7 +516,7 @@ items mentioned above can be combined.
FINDING A CALIFORNIA LICENSE PLATE
-A sample license place number is "1MGU103". It has one digit, three uppercase
+A sample license plate number is "1MGU103". It has one digit, three uppercase
letters and three digits. Directly putting this into a search pattern: >
/\d\u\u\u\d\d\d
diff --git a/runtime/doc/usr_28.txt b/runtime/doc/usr_28.txt
index 9c621d72..76644bb6 100644
--- a/runtime/doc/usr_28.txt
+++ b/runtime/doc/usr_28.txt
@@ -1,4 +1,4 @@
-*usr_28.txt* For Vim version 7.1. Last change: 2006 Apr 24
+*usr_28.txt* For Vim version 7.2a. Last change: 2008 Jun 14
VIM USER MANUAL - by Bram Moolenaar
@@ -378,7 +378,7 @@ More about folding by expression in the reference manual: |fold-expr|
This is useful when you set the 'diff' option in the same window. The
|vimdiff| command does this for you. Example: >
- setlocal diff foldmethod=diff scrollbind nowrap foldlevel=1
+ :setlocal diff foldmethod=diff scrollbind nowrap foldlevel=1
Do this in every window that shows a different version of the same file. You
will clearly see the differences between the files, while the text that didn't
@@ -389,7 +389,7 @@ For more details see |fold-diff|.
==============================================================================
*28.10* Which fold method to use?
-All these possibilities makes you wonder which method you should chose.
+All these possibilities make you wonder which method you should chose.
Unfortunately, there is no golden rule. Here are some hints.
If there is a syntax file with folding for the language you are editing, that
diff --git a/runtime/doc/usr_40.txt b/runtime/doc/usr_40.txt
index a9e48bf7..dd90ba92 100644
--- a/runtime/doc/usr_40.txt
+++ b/runtime/doc/usr_40.txt
@@ -1,4 +1,4 @@
-*usr_40.txt* For Vim version 7.1. Last change: 2006 Jun 21
+*usr_40.txt* For Vim version 7.2a. Last change: 2006 Jun 21
VIM USER MANUAL - by Bram Moolenaar
diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
index f95b2da8..dc9c20cc 100644
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt* For Vim version 7.1. Last change: 2007 Mar 17
+*windows.txt* For Vim version 7.2a. Last change: 2007 Oct 07
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -146,7 +146,7 @@ CTRL-W v *CTRL-W_v*
1. a width was not specified,
2. 'equalalways' is set,
3. 'eadirection' isn't "ver", and
- 4. one of the other windows are wider than the current or new
+ 4. one of the other windows is wider than the current or new
window.
Note: In other places CTRL-Q does the same as CTRL-V, but here
it doesn't!
@@ -1033,8 +1033,8 @@ list of buffers. |unlisted-buffer|
[!]. This will also edit a buffer that is not in the buffer
list, without setting the 'buflisted' flag.
-:[N]b[uffer][!] {filename}
- Edit buffer for {filename} from the buffer list. See
+:[N]b[uffer][!] {bufname}
+ Edit buffer for {bufname} from the buffer list. See
|:buffer-!| for [!]. This will also edit a buffer that is not
in the buffer list, without setting the 'buflisted' flag.
@@ -1045,8 +1045,8 @@ list of buffers. |unlisted-buffer|
also edit a buffer that is not in the buffer list, without
setting the 'buflisted' flag.
-:[N]sb[uffer] {filename}
- Split window and edit buffer for {filename} from the buffer
+:[N]sb[uffer] {bufname}
+ Split window and edit buffer for {bufname} from the buffer
list. This will also edit a buffer that is not in the buffer
list, without setting the 'buflisted' flag.
Note: If what you want to do is split the buffer, make a copy
diff --git a/runtime/ftplugin/denyhosts.vim b/runtime/ftplugin/denyhosts.vim
new file mode 100644
index 00000000..86796eb8
--- /dev/null
+++ b/runtime/ftplugin/denyhosts.vim
@@ -0,0 +1,18 @@
+" Vim filetype plugin file
+" Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-09-18
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
+
+let s:cpo_save = &cpo
+set cpo&vim
diff --git a/runtime/ftplugin/php.vim b/runtime/ftplugin/php.vim
index 86cf89c0..c9a0bc72 100644
--- a/runtime/ftplugin/php.vim
+++ b/runtime/ftplugin/php.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: php
" Maintainer: Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2006 Jul 15
+" Last Changed: 2007 Nov 10
" URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
@@ -42,7 +42,9 @@ endif
" ###
" Provided by Mikolaj Machowski <mikmach at wp dot pl>
setlocal include=\\\(require\\\|include\\\)\\\(_once\\\)\\\?
-setlocal iskeyword+=$
+" Disabled changing 'iskeyword', it breaks a command such as "*"
+" setlocal iskeyword+=$
+
if exists("loaded_matchit")
let b:match_words = '<?php:?>,\<switch\>:\<endswitch\>,' .
\ '\<if\>:\<elseif\>:\<else\>:\<endif\>,' .
@@ -55,15 +57,24 @@ if exists("loaded_matchit")
endif
" ###
-if exists('&ofu')
- setlocal ofu=phpcomplete#CompletePHP
+if exists('&omnifunc')
+ setlocal omnifunc=phpcomplete#CompletePHP
endif
+" Section jumping: [[ and ]] provided by Antony Scriven <adscriven at gmail dot com>
+let s:function = '\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function'
+let s:class = '\(abstract\s\+\|final\s\+\)*class'
+let s:interface = 'interface'
+let s:section = '\(.*\%#\)\@!\_^\s*\zs\('.s:function.'\|'.s:class.'\|'.s:interface.'\)'
+exe 'nno <buffer> <silent> [[ ?' . escape(s:section, '|') . '?<CR>:nohls<CR>'
+exe 'nno <buffer> <silent> ]] /' . escape(s:section, '|') . '/<CR>:nohls<CR>'
+exe 'ono <buffer> <silent> [[ ?' . escape(s:section, '|') . '?<CR>:nohls<CR>'
+exe 'ono <buffer> <silent> ]] /' . escape(s:section, '|') . '/<CR>:nohls<CR>'
setlocal commentstring=/*%s*/
" Undo the stuff we changed.
-let b:undo_ftplugin = "setlocal cms< inc< isk<" .
+let b:undo_ftplugin = "setlocal commentstring< include< omnifunc<" .
\ " | unlet! b:browsefilter b:match_words | " .
\ s:undo_ftplugin
diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim
index 78fb6ec3..ca66597d 100644
--- a/runtime/ftplugin/vim.vim
+++ b/runtime/ftplugin/vim.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: Vim
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2006 Sep 26
+" Last Change: 2008 Feb 27
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -33,14 +33,20 @@ endif
setlocal commentstring=\"%s
" Move around functions.
-noremap <silent><buffer> [[ m':call search('^\s*fu\%[nction]\>', "bW")<CR>
-noremap <silent><buffer> ]] m':call search('^\s*fu\%[nction]\>', "W")<CR>
-noremap <silent><buffer> [] m':call search('^\s*endf*\%[unction]\>', "bW")<CR>
-noremap <silent><buffer> ][ m':call search('^\s*endf*\%[unction]\>', "W")<CR>
+nnoremap <silent><buffer> [[ m':call search('^\s*fu\%[nction]\>', "bW")<CR>
+vnoremap <silent><buffer> [[ m':<C-U>exe "normal! gv"<Bar>call search('^\s*fu\%[nction]\>', "bW")<CR>
+nnoremap <silent><buffer> ]] m':call search('^\s*fu\%[nction]\>', "W")<CR>
+vnoremap <silent><buffer> ]] m':<C-U>exe "normal! gv"<Bar>call search('^\s*fu\%[nction]\>', "W")<CR>
+nnoremap <silent><buffer> [] m':call search('^\s*endf*\%[unction]\>', "bW")<CR>
+vnoremap <silent><buffer> [] m':<C-U>exe "normal! gv"<Bar>call search('^\s*endf*\%[unction]\>', "bW")<CR>
+nnoremap <silent><buffer> ][ m':call search('^\s*endf*\%[unction]\>', "W")<CR>
+vnoremap <silent><buffer> ][ m':<C-U>exe "normal! gv"<Bar>call search('^\s*endf*\%[unction]\>', "W")<CR>
" Move around comments
-noremap <silent><buffer> ]" :call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR>
-noremap <silent><buffer> [" :call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR>
+nnoremap <silent><buffer> ]" :call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR>
+vnoremap <silent><buffer> ]" :<C-U>exe "normal! gv"<Bar>call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR>
+nnoremap <silent><buffer> [" :call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR>
+vnoremap <silent><buffer> [" :<C-U>exe "normal! gv"<Bar>call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR>
" Let the matchit plugin know what items can be matched.
if exists("loaded_matchit")
diff --git a/runtime/spell/pt/main.aap b/runtime/spell/pt/main.aap
index 78270e96..17ba24d3 100644
--- a/runtime/spell/pt/main.aap
+++ b/runtime/spell/pt/main.aap
@@ -1,19 +1,5 @@
# Aap recipe for Portuguese Vim spell files.
#
-# Based on a shell script by Leonardo Fontenelle.
-# His remarks:
-#
-# Makes a Vim pt dictionary from OpenOffice.org's pt_BR and pt_PT.
-#
-# AFAIK, will have to update the script every time a new dictionary is
-# released for pt_BR. I asked the maintainer to update OOo's FTP site,
-# but it didn't happen yet. As for the pt_PT dictionary, they won't be
-# in OOo's FTP site for some time, because the Portuguese OOo project
-# decided to adapt the pt_BR dictionary, which is much more extensive.
-# I picked the Natura project unofficial dictionary, because it has been
-# developed by a team with linguists, and for a longer time. At least the
-# pt_PT dictionary has a "latest" file to make our lives easier.
-
# Use a freshly compiled Vim if it exists.
@if os.path.exists('../../../src/vim'):
@@ -33,13 +19,10 @@ PT_FNAME = myspell.pt-latest.zip
:attr {fetch = $PT_DIR/%file%} $PT_FNAME
#
-# Fetching the pt_BR files from BrOffice.org (Brazilian OOo) 2.1. Should be
-# updated really soon.
+# Fetching the pt_BR files from BrOffice.org (Brazilian OOo).
#
-BR_BASENAME = pt_BR-2007-04-11
-BR_DIR = http://www.deso-se.com.br/downloads/download.php?arquivo=$BR_BASENAME
-BR_FNAME = $(BR_BASENAME).zip
-
+BR_FNAME = pt_BR-V.zip
+BR_DIR = http://www.deso-se.com.br/downloads/broffice.org/$(BR_FNAME)
:attr {fetch = $BR_DIR} $BR_FNAME
all: $SPELLDIR/pt.latin1.spl $SPELLDIR/pt.utf-8.spl \
@@ -58,8 +41,7 @@ $SPELLDIR/pt.utf-8.spl : $FILES
:cat README_pt_PT.txt | :eval re.sub('\r', '', stdin) >>$target
:print =================================================== >>$target
:print pt_BR: >>$target
- :print Information is in Leia-me.pdf, see $BR_DIR >>$target
- :cat README_pt_BR.txt >>$target
+ :cat README_pt_BR.txt | :eval re.sub('\r', '', stdin) >>$target
# The files don't depend on the .zip file so that we can delete it.
# Only download the zip file if the targets don't exist.
@@ -85,19 +67,13 @@ pt_BR.aff pt_BR.dic: {buildcheck=}
:fetch $BR_FNAME
:sys $UNZIP $BR_FNAME
:delete $BR_FNAME
- :move Leia-me.pdf Leia-me_pt_BR.pdf
+ :sys $VIM README_pt_BR.TXT -e -c "set ff=unix" -c update -c q
+ :move README_pt_BR.TXT README_pt_BR.txt
-# 1. pt_BR.dic contains a cp1252-specific character.
-# Changing it to its latin1 equivalent.
-# 2. Vim seems to ignore the dots from the word list.
-# Removing words with dot to avoid misbehaviour.
- :sys $VIM pt_BR.dic -e -c "set ff=unix" -c "%s/\%x92/'/g" -c "/\./d" -c update -c q
-
-# Removing /* ... */ header to avoid warnings. Write it to the README file, it
-# contains the copyright notice.
- :sys $VIM pt_BR.aff -e -c "set ff=unix" -c "/\/\*/,/\*\//w! README_pt_BR.txt" -c "/\/\*/,/\*\//+1d" -c update -c q
-
- #:sys $VIM README_pt_BR.txt -e -c "set ff=unix" -c update -c q
+# Vim seems to ignore the dots from the word list.
+# Removing words with dot to avoid misbehaviour.
+ :sys $VIM pt_BR.dic -e -c "set ff=unix" -c "/\./d" -c update -c q
+ :sys $VIM pt_BR.aff -e -c "set ff=unix" -c update -c q
@if not os.path.exists('pt_BR.orig.aff'):
:copy pt_BR.aff pt_BR.orig.aff
@if not os.path.exists('pt_BR.orig.dic'):
@@ -125,12 +101,12 @@ check: check-pt check-br
check-pt:
:assertpkg unzip diff
- :fetch pt_PT.zip
+ :fetch $PT_FNAME
:mkdir tmp
:cd tmp
@try:
@import stat
- :sys $UNZIP ../pt_PT.zip
+ :sys $UNZIP ../$PT_FNAME
:sys {force} diff ../pt_PT.orig.aff pt_PT.aff >d
@if os.stat('d')[stat.ST_SIZE] > 0:
:copy pt_PT.aff ../pt_PT.new.aff
@@ -140,16 +116,16 @@ check-pt:
@finally:
:cd ..
:delete {r}{f}{q} tmp
- :delete pt_PT.zip
+ :delete $PT_FNAME
check-br:
:assertpkg unzip diff
- :fetch pt_BR.zip
+ :fetch $BR_FNAME
:mkdir tmp
:cd tmp
@try:
@import stat
- :sys $UNZIP ../pt_BR.zip
+ :sys $UNZIP ../$BR_FNAME
:sys {force} diff ../pt_BR.orig.aff pt_BR.aff >d
@if os.stat('d')[stat.ST_SIZE] > 0:
:copy pt_BR.aff ../pt_BR.new.aff
@@ -159,6 +135,6 @@ check-br:
@finally:
:cd ..
:delete {r}{f}{q} tmp
- :delete pt_BR.zip
+ :delete $BR_FNAME
# vim: set sts=4 sw=4 :
diff --git a/runtime/syntax/gitsendemail.vim b/runtime/syntax/gitsendemail.vim
new file mode 100644
index 00000000..d247cdab
--- /dev/null
+++ b/runtime/syntax/gitsendemail.vim
@@ -0,0 +1,19 @@
+" Vim syntax file
+" Language: git send-email message
+" Maintainer: Tim Pope
+" Filenames: *.msg.[0-9]* (first line is "From ... # This line is ignored.")
+" Last Change: 2007 Dec 16
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/mail.vim
+syn case match
+
+syn match gitsendemailComment "\%^From.*#.*"
+syn match gitsendemailComment "^GIT:.*"
+
+hi def link gitsendemailComment Comment
+
+let b:current_syntax = "gitsendemail"
diff --git a/runtime/syntax/mail.vim b/runtime/syntax/mail.vim
index 7717cd97..1157517f 100644
--- a/runtime/syntax/mail.vim
+++ b/runtime/syntax/mail.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Mail file
" Previous Maintainer: Felix von Leitner <leitner@math.fu-berlin.de>
-" Maintainer: Gautam Iyer <gautam@math.uchicago.edu>
-" Last Change: Wed 01 Jun 2005 02:11:07 PM CDT
+" Maintainer: Gautam Iyer <gi1242@users.sourceforge.net>
+" Last Change: Thu 17 Jan 2008 11:25:44 AM PST
" Quit when a syntax file was already loaded
if exists("b:current_syntax")
@@ -24,13 +24,15 @@ syn case match
" emails
" According to RFC 2822 any printable ASCII character can appear in a field
" name, except ':'.
-syn region mailHeader contains=@mailHeaderFields,@NoSpell start="^From " skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1
-syn match mailHeaderKey contained contains=mailEmail,@NoSpell "^From\s.*$"
+syn region mailHeader contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1
+syn match mailHeaderKey contained contains=mailEmail,@NoSpell "^From\s.*\d\d\d\d$"
+" Usenet headers
+syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(Newsgroups|Followup-To|Message-ID|Supersedes|Control):.*$"
syn case ignore
" Nothing else depends on case. Headers in properly quoted (with "> " or ">")
" emails are matched
-syn region mailHeader keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1
+syn region mailHeader keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1
syn region mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> ?)*)@<=(to|b?cc):" skip=",$" end="$"
syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$"
diff --git a/runtime/syntax/postscr.vim b/runtime/syntax/postscr.vim
index 40dbcec5..fddfe4c9 100644
--- a/runtime/syntax/postscr.vim
+++ b/runtime/syntax/postscr.vim
@@ -2,16 +2,16 @@
" Language: PostScript - all Levels, selectable
" Maintainer: Mike Williams <mrw@eandem.co.uk>
" Filenames: *.ps,*.eps
-" Last Change: 27th June 2002
-" URL: http://www.eandem.co.uk/mrw/vim
+" Last Change: 31st October 2007
+" URL: http://www.eandem.co.uk/mrw/vim
"
" Options Flags:
-" postscr_level - language level to use for highligting (1, 2, or 3)
-" postscr_display - include display PS operators
-" postscr_ghostscript - include GS extensions
-" postscr_fonts - highlight standard font names (a lot for PS 3)
-" postscr_encodings - highlight encoding names (there are a lot)
-" postscr_andornot_binary - highlight and, or, and not as binary operators (not logical)
+" postscr_level - language level to use for highligting (1, 2, or 3)
+" postscr_display - include display PS operators
+" postscr_ghostscript - include GS extensions
+" postscr_fonts - highlight standard font names (a lot for PS 3)
+" postscr_encodings - highlight encoding names (there are a lot)
+" postscr_andornot_binary - highlight and, or, and not as binary operators (not logical)
"
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@@ -35,16 +35,16 @@ endif
syn keyword postscrTodo contained TODO
" Comment
-syn match postscrComment "%.*$" contains=postscrTodo
+syn match postscrComment "%.*$" contains=postscrTodo,@Spell
" DSC comment start line (NB: defines DSC level, not PS level!)
-syn match postscrDSCComment "^%!PS-Adobe-\d\+\.\d\+\s*.*$"
+syn match postscrDSCComment "^%!PS-Adobe-\d\+\.\d\+\s*.*$"
" DSC comment line (no check on possible comments - another language!)
-syn match postscrDSCComment "^%%\u\+.*$" contains=@postscrString,@postscrNumber
+syn match postscrDSCComment "^%%\u\+.*$" contains=@postscrString,@postscrNumber,@Spell
" DSC continuation line (no check that previous line is DSC comment)
-syn match postscrDSCComment "^%%+ *.*$" contains=@postscrString,@postscrNumber
+syn match postscrDSCComment "^%%+ *.*$" contains=@postscrString,@postscrNumber,@Spell
" Names
-syn match postscrName "\k\+"
+syn match postscrName "\k\+"
" Identifiers
syn match postscrIdentifierError "/\{1,2}[[:space:]\[\]{}]"me=e-1
@@ -53,18 +53,18 @@ syn match postscrIdentifier "/\{1,2}\k\+" contains=postscrConstant,postscrBo
" Numbers
syn case ignore
" In file hex data - usually complete lines
-syn match postscrHex "^[[:xdigit:]][[:xdigit:][:space:]]*$"
-"syn match postscrHex "\<\x\{2,}\>"
+syn match postscrHex "^[[:xdigit:]][[:xdigit:][:space:]]*$"
+"syn match postscrHex "\<\x\{2,}\>"
" Integers
-syn match postscrInteger "\<[+-]\=\d\+\>"
+syn match postscrInteger "\<[+-]\=\d\+\>"
" Radix
-syn match postscrRadix "\d\+#\x\+\>"
+syn match postscrRadix "\d\+#\x\+\>"
" Reals - upper and lower case e is allowed
-syn match postscrFloat "[+-]\=\d\+\.\>"
-syn match postscrFloat "[+-]\=\d\+\.\d*\(e[+-]\=\d\+\)\=\>"
-syn match postscrFloat "[+-]\=\.\d\+\(e[+-]\=\d\+\)\=\>"
-syn match postscrFloat "[+-]\=\d\+e[+-]\=\d\+\>"
-syn cluster postscrNumber contains=postscrInteger,postscrRadix,postscrFloat
+syn match postscrFloat "[+-]\=\d\+\.\>"
+syn match postscrFloat "[+-]\=\d\+\.\d*\(e[+-]\=\d\+\)\=\>"
+syn match postscrFloat "[+-]\=\.\d\+\(e[+-]\=\d\+\)\=\>"
+syn match postscrFloat "[+-]\=\d\+e[+-]\=\d\+\>"
+syn cluster postscrNumber contains=postscrInteger,postscrRadix,postscrFloat
syn case match
" Escaped characters
@@ -75,7 +75,8 @@ syn match postscrSpecialChar contained "\\\o\{1,3}"
" Strings
" ASCII strings
-syn region postscrASCIIString start=+(+ end=+)+ skip=+([^)]*)+ contains=postscrSpecialChar,postscrSpecialCharError
+syn region postscrASCIIString start=+(+ end=+)+ skip=+([^)]*)+ contains=postscrSpecialChar,postscrSpecialCharError,@Spell
+syn match postscrASCIIStringError ")"
" Hex strings
syn match postscrHexCharError contained "[^<>[:xdigit:][:space:]]"
syn region postscrHexString start=+<\($\|[^<]\)+ end=+>+ contains=postscrHexCharError
@@ -342,61 +343,61 @@ endif
" By default level 3 includes all level 2 operators
if postscr_level == 2 || postscr_level == 3
" Dictionary operators
- syn match postscrOperator "\(<<\|>>\)"
- syn keyword postscrOperator undef
+ syn match postscrL2Operator "\(<<\|>>\)"
+ syn keyword postscrL2Operator undef
syn keyword postscrConstant globaldict shareddict
" Device operators
- syn keyword postscrOperator setpagedevice currentpagedevice
+ syn keyword postscrL2Operator setpagedevice currentpagedevice
" Path operators
- syn keyword postscrOperator rectclip setbbox uappend ucache upath ustrokepath arct
+ syn keyword postscrL2Operator rectclip setbbox uappend ucache upath ustrokepath arct
" Painting operators
- syn keyword postscrOperator rectfill rectstroke ufill ueofill ustroke
+ syn keyword postscrL2Operator rectfill rectstroke ufill ueofill ustroke
" Array operators
- syn keyword postscrOperator currentpacking setpacking packedarray
+ syn keyword postscrL2Operator currentpacking setpacking packedarray
" Misc operators
- syn keyword postscrOperator languagelevel
+ syn keyword postscrL2Operator languagelevel
" Insideness operators
- syn keyword postscrOperator infill ineofill instroke inufill inueofill inustroke
+ syn keyword postscrL2Operator infill ineofill instroke inufill inueofill inustroke
" GState operators
- syn keyword postscrOperator gstate setgstate currentgstate setcolor
- syn keyword postscrOperator setcolorspace currentcolorspace setstrokeadjust currentstrokeadjust
- syn keyword postscrOperator currentcolor
+ syn keyword postscrL2Operator gstate setgstate currentgstate setcolor
+ syn keyword postscrL2Operator setcolorspace currentcolorspace setstrokeadjust currentstrokeadjust
+ syn keyword postscrL2Operator currentcolor
" Device gstate operators
- syn keyword postscrOperator sethalftone currenthalftone setoverprint currentoverprint
- syn keyword postscrOperator setcolorrendering currentcolorrendering
+ syn keyword postscrL2Operator sethalftone currenthalftone setoverprint currentoverprint
+ syn keyword postscrL2Operator setcolorrendering currentcolorrendering
" Character operators
- syn keyword postscrConstant GlobalFontDirectory SharedFontDirectory
- syn keyword postscrOperator glyphshow selectfont
- syn keyword postscrOperator addglyph undefinefont xshow xyshow yshow
+ syn keyword postscrL2Constant GlobalFontDirectory SharedFontDirectory
+ syn keyword postscrL2Operator glyphshow selectfont
+ syn keyword postscrL2Operator addglyph undefinefont xshow xyshow yshow
" Pattern operators
- syn keyword postscrOperator makepattern setpattern execform
+ syn keyword postscrL2Operator makepattern setpattern execform
" Resource operators
- syn keyword postscrOperator defineresource undefineresource findresource resourcestatus
- syn keyword postscrRepeat resourceforall
+ syn keyword postscrL2Operator defineresource undefineresource findresource resourcestatus
+ syn keyword postscrL2Repeat resourceforall
" File operators
- syn keyword postscrOperator filter printobject writeobject setobjectformat currentobjectformat
+ syn keyword postscrL2Operator filter printobject writeobject setobjectformat currentobjectformat
" VM operators
- syn keyword postscrOperator currentshared setshared defineuserobject execuserobject undefineuserobject
- syn keyword postscrOperator gcheck scheck startjob currentglobal setglobal
+ syn keyword postscrL2Operator currentshared setshared defineuserobject execuserobject undefineuserobject
+ syn keyword postscrL2Operator gcheck scheck startjob currentglobal setglobal
syn keyword postscrConstant UserObjects
" Interpreter operators
- syn keyword postscrOperator setucacheparams setvmthreshold ucachestatus setsystemparams
- syn keyword postscrOperator setuserparams currentuserparams setcacheparams currentcacheparams
- syn keyword postscrOperator currentdevparams setdevparams vmreclaim currentsystemparams
+ syn keyword postscrL2Operator setucacheparams setvmthreshold ucachestatus setsystemparams
+ syn keyword postscrL2Operator setuserparams currentuserparams setcacheparams currentcacheparams
+ syn keyword postscrL2Operator currentdevparams setdevparams vmreclaim currentsystemparams
" PS2 constants
syn keyword postscrConstant contained DeviceCMYK Pattern Indexed Separation Cyan Magenta Yellow Black
@@ -491,52 +492,52 @@ if postscr_level == 2 || postscr_level == 3
syn keyword postscrConstant contained Predictor
" Paper Size operators
- syn keyword postscrOperator letter lettersmall legal ledger 11x17 a4 a3 a4small b5 note
+ syn keyword postscrL2Operator letter lettersmall legal ledger 11x17 a4 a3 a4small b5 note
" Paper Tray operators
- syn keyword postscrOperator lettertray legaltray ledgertray a3tray a4tray b5tray 11x17tray
+ syn keyword postscrL2Operator lettertray legaltray ledgertray a3tray a4tray b5tray 11x17tray
" SCC compatibility operators
- syn keyword postscrOperator sccbatch sccinteractive setsccbatch setsccinteractive
+ syn keyword postscrL2Operator sccbatch sccinteractive setsccbatch setsccinteractive
" Page duplexing operators
- syn keyword postscrOperator duplexmode firstside newsheet setduplexmode settumble tumble
+ syn keyword postscrL2Operator duplexmode firstside newsheet setduplexmode settumble tumble
" Device compatability operators
- syn keyword postscrOperator devdismount devformat devmount devstatus
- syn keyword postscrRepeat devforall
+ syn keyword postscrL2Operator devdismount devformat devmount devstatus
+ syn keyword postscrL2Repeat devforall
" Imagesetter compatability operators
- syn keyword postscrOperator accuratescreens checkscreen pagemargin pageparams setaccuratescreens setpage
- syn keyword postscrOperator setpagemargin setpageparams
+ syn keyword postscrL2Operator accuratescreens checkscreen pagemargin pageparams setaccuratescreens setpage
+ syn keyword postscrL2Operator setpagemargin setpageparams
" Misc compatability operators
- syn keyword postscrOperator appletalktype buildtime byteorder checkpassword defaulttimeouts diskonline
- syn keyword postscrOperator diskstatus manualfeed manualfeedtimeout margins mirrorprint pagecount
- syn keyword postscrOperator pagestackorder printername processcolors sethardwareiomode setjobtimeout
- syn keyword postscrOperator setpagestockorder setprintername setresolution doprinterrors dostartpage
- syn keyword postscrOperator hardwareiomode initializedisk jobname jobtimeout ramsize realformat resolution
- syn keyword postscrOperator setdefaulttimeouts setdoprinterrors setdostartpage setdosysstart
- syn keyword postscrOperator setuserdiskpercent softwareiomode userdiskpercent waittimeout
- syn keyword postscrOperator setsoftwareiomode dosysstart emulate setmargins setmirrorprint
+ syn keyword postscrL2Operator appletalktype buildtime byteorder checkpassword defaulttimeouts diskonline
+ syn keyword postscrL2Operator diskstatus manualfeed manualfeedtimeout margins mirrorprint pagecount
+ syn keyword postscrL2Operator pagestackorder printername processcolors sethardwareiomode setjobtimeout
+ syn keyword postscrL2Operator setpagestockorder setprintername setresolution doprinterrors dostartpage
+ syn keyword postscrL2Operator hardwareiomode initializedisk jobname jobtimeout ramsize realformat resolution
+ syn keyword postscrL2Operator setdefaulttimeouts setdoprinterrors setdostartpage setdosysstart
+ syn keyword postscrL2Operator setuserdiskpercent softwareiomode userdiskpercent waittimeout
+ syn keyword postscrL2Operator setsoftwareiomode dosysstart emulate setmargins setmirrorprint
endif " PS2 highlighting
if postscr_level == 3
" Shading operators
- syn keyword postscrOperator setsmoothness currentsmoothness shfill
+ syn keyword postscrL3Operator setsmoothness currentsmoothness shfill
" Clip operators
- syn keyword postscrOperator clipsave cliprestore
+ syn keyword postscrL3Operator clipsave cliprestore
" Pagedevive operators
- syn keyword postscrOperator setpage setpageparams
+ syn keyword postscrL3Operator setpage setpageparams
" Device gstate operators
- syn keyword postscrOperator findcolorrendering
+ syn keyword postscrL3Operator findcolorrendering
" Font operators
- syn keyword postscrOperator composefont
+ syn keyword postscrL3Operator composefont
" PS LL3 Output device resource entries
syn keyword postscrConstant contained DeviceN TrappingDetailsType
@@ -658,56 +659,56 @@ endif " PS LL3 highlighting
if exists("postscr_ghostscript")
" GS gstate operators
- syn keyword postscrOperator .setaccuratecurves .currentaccuratecurves .setclipoutside
- syn keyword postscrOperator .setdashadapt .currentdashadapt .setdefaultmatrix .setdotlength
- syn keyword postscrOperator .currentdotlength .setfilladjust2 .currentfilladjust2
- syn keyword postscrOperator .currentclipoutside .setcurvejoin .currentcurvejoin
- syn keyword postscrOperator .setblendmode .currentblendmode .setopacityalpha .currentopacityalpha .setshapealpha .currentshapealpha
- syn keyword postscrOperator .setlimitclamp .currentlimitclamp .setoverprintmode .currentoverprintmode
+ syn keyword postscrGSOperator .setaccuratecurves .currentaccuratecurves .setclipoutside
+ syn keyword postscrGSOperator .setdashadapt .currentdashadapt .setdefaultmatrix .setdotlength
+ syn keyword postscrGSOperator .currentdotlength .setfilladjust2 .currentfilladjust2
+ syn keyword postscrGSOperator .currentclipoutside .setcurvejoin .currentcurvejoin
+ syn keyword postscrGSOperator .setblendmode .currentblendmode .setopacityalpha .currentopacityalpha .setshapealpha .currentshapealpha
+ syn keyword postscrGSOperator .setlimitclamp .currentlimitclamp .setoverprintmode .currentoverprintmode
" GS path operators
- syn keyword postscrOperator .dashpath .rectappend
+ syn keyword postscrGSOperator .dashpath .rectappend
" GS painting operators
- syn keyword postscrOperator .setrasterop .currentrasterop .setsourcetransparent
- syn keyword postscrOperator .settexturetransparent .currenttexturetransparent
- syn keyword postscrOperator .currentsourcetransparent
+ syn keyword postscrGSOperator .setrasterop .currentrasterop .setsourcetransparent
+ syn keyword postscrGSOperator .settexturetransparent .currenttexturetransparent
+ syn keyword postscrGSOperator .currentsourcetransparent
" GS character operators
- syn keyword postscrOperator .charboxpath .type1execchar %Type1BuildChar %Type1BuildGlyph
+ syn keyword postscrGSOperator .charboxpath .type1execchar %Type1BuildChar %Type1BuildGlyph
" GS mathematical operators
- syn keyword postscrMathOperator arccos arcsin
+ syn keyword postscrGSMathOperator arccos arcsin
" GS dictionary operators
- syn keyword postscrOperator .dicttomark .forceput .forceundef .knownget .setmaxlength
+ syn keyword postscrGSOperator .dicttomark .forceput .forceundef .knownget .setmaxlength
" GS byte and string operators
- syn keyword postscrOperator .type1encrypt .type1decrypt
- syn keyword postscrOperator .bytestring .namestring .stringmatch
+ syn keyword postscrGSOperator .type1encrypt .type1decrypt
+ syn keyword postscrGSOperator .bytestring .namestring .stringmatch
" GS relational operators (seem like math ones to me!)
- syn keyword postscrMathOperator max min
+ syn keyword postscrGSMathOperator max min
" GS file operators
- syn keyword postscrOperator findlibfile unread writeppmfile
- syn keyword postscrOperator .filename .fileposition .peekstring .unread
+ syn keyword postscrGSOperator findlibfile unread writeppmfile
+ syn keyword postscrGSOperator .filename .fileposition .peekstring .unread
" GS vm operators
- syn keyword postscrOperator .forgetsave
+ syn keyword postscrGSOperator .forgetsave
" GS device operators
- syn keyword postscrOperator copydevice .getdevice makeimagedevice makewordimagedevice copyscanlines
- syn keyword postscrOperator setdevice currentdevice getdeviceprops putdeviceprops flushpage
- syn keyword postscrOperator finddevice findprotodevice .getbitsrect
+ syn keyword postscrGSOperator copydevice .getdevice makeimagedevice makewordimagedevice copyscanlines
+ syn keyword postscrGSOperator setdevice currentdevice getdeviceprops putdeviceprops flushpage
+ syn keyword postscrGSOperator finddevice findprotodevice .getbitsrect
" GS misc operators
- syn keyword postscrOperator getenv .makeoperator .setdebug .oserrno .oserror .execn
+ syn keyword postscrGSOperator getenv .makeoperator .setdebug .oserrno .oserror .execn
" GS rendering stack operators
- syn keyword postscrOperator .begintransparencygroup .discardtransparencygroup .endtransparencygroup
- syn keyword postscrOperator .begintransparencymask .discardtransparencymask .endtransparencymask .inittransparencymask
- syn keyword postscrOperator .settextknockout .currenttextknockout
+ syn keyword postscrGSOperator .begintransparencygroup .discardtransparencygroup .endtransparencygroup
+ syn keyword postscrGSOperator .begintransparencymask .discardtransparencymask .endtransparencymask .inittransparencymask
+ syn keyword postscrGSOperator .settextknockout .currenttextknockout
" GS filters
syn keyword postscrConstant contained BCPEncode BCPDecode eexecEncode eexecDecode PCXDecode
@@ -739,42 +740,55 @@ if version >= 508 || !exists("did_postscr_syntax_inits")
command -nargs=+ HiLink hi def link <args>
endif
- HiLink postscrComment Comment
-
- HiLink postscrConstant Constant
- HiLink postscrString String
- HiLink postscrASCIIString postscrString
- HiLink postscrHexString postscrString
- HiLink postscrASCII85String postscrString
- HiLink postscrNumber Number
- HiLink postscrInteger postscrNumber
- HiLink postscrHex postscrNumber
- HiLink postscrRadix postscrNumber
- HiLink postscrFloat Float
- HiLink postscrBoolean Boolean
-
- HiLink postscrIdentifier Identifier
- HiLink postscrProcedure Function
-
- HiLink postscrName Statement
- HiLink postscrConditional Conditional
- HiLink postscrRepeat Repeat
- HiLink postscrOperator Operator
- HiLink postscrMathOperator postscrOperator
+ HiLink postscrComment Comment
+
+ HiLink postscrConstant Constant
+ HiLink postscrString String
+ HiLink postscrASCIIString postscrString
+ HiLink postscrHexString postscrString
+ HiLink postscrASCII85String postscrString
+ HiLink postscrNumber Number
+ HiLink postscrInteger postscrNumber
+ HiLink postscrHex postscrNumber
+ HiLink postscrRadix postscrNumber
+ HiLink postscrFloat Float
+ HiLink postscrBoolean Boolean
+
+ HiLink postscrIdentifier Identifier
+ HiLink postscrProcedure Function
+
+ HiLink postscrName Statement
+ HiLink postscrConditional Conditional
+ HiLink postscrRepeat Repeat
+ HiLink postscrL2Repeat postscrRepeat
+ HiLink postscrOperator Operator
+ HiLink postscrL1Operator postscrOperator
+ HiLink postscrL2Operator postscrOperator
+ HiLink postscrL3Operator postscrOperator
+ HiLink postscrMathOperator postscrOperator
HiLink postscrLogicalOperator postscrOperator
- HiLink postscrBinaryOperator postscrOperator
+ HiLink postscrBinaryOperator postscrOperator
- HiLink postscrDSCComment SpecialComment
- HiLink postscrSpecialChar SpecialChar
+ HiLink postscrDSCComment SpecialComment
+ HiLink postscrSpecialChar SpecialChar
- HiLink postscrTodo Todo
+ HiLink postscrTodo Todo
- HiLink postscrError Error
+ HiLink postscrError Error
HiLink postscrSpecialCharError postscrError
HiLink postscrASCII85CharError postscrError
- HiLink postscrHexCharError postscrError
+ HiLink postscrHexCharError postscrError
+ HiLink postscrASCIIStringError postscrError
HiLink postscrIdentifierError postscrError
+ if exists("postscr_ghostscript")
+ HiLink postscrGSOperator postscrOperator
+ HiLink postscrGSMathOperator postscrMathOperator
+ else
+ HiLink postscrGSOperator postscrError
+ HiLink postscrGSMathOperator postscrError
+ endif
+
delcommand HiLink
endif
diff --git a/runtime/tutor/Filelist b/runtime/tutor/Filelist
new file mode 100644
index 00000000..aa423d99
--- /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 00000000..593a9255
--- /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 00000000..9df9f760
--- /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 00000000..ef78029c
--- /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 00000000..5338cb16
--- /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 00000000..89af04cc
--- /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 00000000..377c6ef8
--- /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 00000000..c6e04fab
--- /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 00000000..63e0d54b
--- /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 00000000..a2a891c1
--- /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 32aef944..31ba7107 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 00000000..5ab14cdb
--- /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 00000000..92771ab2
--- /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 moan editor koji ima mnogo naredbi, previe da bi ih
+ se svih ovdje spomenulo. Namjena prirunika je objasniti dovoljno
+ naredbi kako bi poetnici znatno lake koristili ovaj svestran editor.
+
+ Priblino vrijeme potrebno za uspjean zavretak prirunika je oko
+ 30 minuta a ovisi o tome koliko e te vremena odvojiti za vjebanje.
+
+ UPOZORENJE:
+ Naredbe u ovom priruniku e promijeniti ovaj tekst.
+ Napravite kopiju ove datoteke kako bi ste na istoj vjebali
+ (ako ste pokrenuli "vimtutor" ovo je ve kopija).
+
+ Vrlo je vano primijetiti da je ovaj prirunik namijenjen za vjebanje.
+ Preciznije, morate izvriti naredbe u Vim-u kako bi ste iste nauili
+ pravilno koristiti. Ako samo itate tekst, zaboraviti e te naredbe!
+
+ Ako je CapsLock ukljuen ISKLJUITE 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 pomie kursor lijevo.
+ < h l > l tipka je desno i pomie kursor desno.
+ j j izgleda kao strelica usmjerena dolje.
+ v
+ 1. Pomiite kursor po ekranu dok se ne naviknete na koritenje.
+
+ 2. Drite tipku (j) pritisnutom.
+ Sada znate kako doi do sljedee lekcije.
+
+ 3. Koristei tipku j prijeite na sljedeu lekciju 1.2.
+
+NAPOMENA: Ako niste sigurni to ste zapravo pritisnuli uvijek koristite
+ tipku <ESC> kako bi preli u Normal mod i onda pokuajte ponovno.
+
+NAPOMENA: Kursorske tipke rade isto. Koritenje hjkl tipaka je znatno
+ bre, nakon to se jednom naviknete na njihovo koritenje. Stvarno!
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 1.2: IZLAZ IZ VIM-a
+
+
+ !! UPOZORENJE: Prije izvoenja bilo kojeg koraka,
+ proitajte 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 prirunik: vimtutor <ENTER>
+
+ 4. Ako ste upamtili ove korake, izvrite ih redom od 1 do 3
+ kako bi ponovno pokrenuli editor.
+
+NAPOMENA: :q! <ENTER> ponitava sve promjene koje ste napravili.
+ U sljedeim lekcijama nauit e te kako promjene sauvati.
+
+ 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 oznaenu s --->.
+
+ 2. Kako bi ste ispravili pogreke, pomiite kursor dok se
+ ne bude nalazio na slovu kojeg trebate izbrisati.
+
+ 3. Pritisnite tipku x kako bi uklonili neeljeno slovo.
+
+ 4. Ponovite korake od 2 do 4 dok ne ispravite sve pogreke.
+
+---> KKKravaa jee presskoila mmjeseccc.
+
+ 5. Nakon to ispravite liniju, prijeite na lekciju 1.4.
+
+NAPOMENA: Koristei ovaj prirunik ne pokuavajte pamtiti
+ ve uite primjenom.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 1.4: PROMJENA TEKSTA - UBACIVANJE
+
+
+ ** Pritisnite i za ubacivanje teksta ispred kursora. **
+
+ 1. Pomaknite kursor na prvu sljedeu liniju oznaenu 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 pogreku pritisnite <ESC> kako bi vratili Vim
+ u Normal mod. Ponovite korake od 2 do 4 kako bi ispravili sve pogreke.
+
+---> Nedje no teka od v lin.
+---> Nedostaje neto teksta od ove linije.
+
+ 5. Prijeite na sljedeu lekciju.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 1.5: PROMJENA TEKSTA - DODAVANJE
+
+
+ ** Pritisnite A za dodavanje teksta. **
+
+ 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->.
+ Nije vano 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 oznaenu s --->
+ i ponovite korake 2 i 3 dok ne popravite tekst.
+
+---> Ima neto teksta koji nedostaje n
+ Ima neto teksta koji nedostaje na ovoj liniji.
+---> Ima neto teksta koji ne
+ Ima neto teksta koji nedostaje ba ovdje.
+
+ 5. Prijeite na lekciju 1.6.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 1.6: PROMJENA DATOTEKE
+
+
+ ** Koristite :wq za spremanje teksta i naputanje Vim-a. **
+
+ !! UPOZORENJE: Prije izvravanja bilo kojeg koraka, proitajte lekciju!!
+
+ 1. Izaite iz programa kao sto ste napravili u lekciji 1.2: :q!
+
+ 2. Iz ljuske utipkajte sljedeu naredbu: vim tutor <ENTER>
+ 'vim' je naredba pokretanja Vim editora, 'tutor' je ime datoteke koju
+ elite ureivati. Koristite datoteku koju imate ovlasti mijenjati.
+
+ 3. Ubacite i izbriite tekst kao to ste to napravili u lekcijama prije.
+
+ 4. Sauvajte promjenjeni tekst i izaite iz Vim-a: :wq <ENTER>
+
+ 5. Ponovno pokrenite vimtutor i nastavite itati saetak koji sljedi.
+
+ 6. Nakon sto proitate gornje korake i u potpunosti ih razumijete:
+ izvrite ih.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 1 SAETAK
+
+
+ 1. Kursor se pomie strelicama ili pomou 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 sauvane.
+
+ 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 neeljenu ili djelomino zavrenu naredbu.
+
+Nastavite itati Lekciju 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 2.1: NAREDBE BRISANJA
+
+
+ ** Tipkajte dw za brisanje rijei. **
+
+ 1. Pritisnite <ESC> kako bi bili sigurni da je Vim u Normal modu.
+
+ 2. Pomaknite kursor na liniju oznaenu s --->.
+
+ 3. Pomaknite kursor na poetak rijei 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 pokuajte ponovno.
+
+---> Neke rijei smijeno ne pripadaju na papir ovoj reenici.
+
+ 5. Ponovite korake 3 i 4 dok ne ispravite reenicu;
+ prijeite na Lekciju 2.2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 2.2: JO BRISANJA
+
+
+ ** Otipkajte d$ za brisanje znakova do kraja linije. **
+
+ 1. Pritisnite <ESC> kako bi bili
+ sigurni da je Vim u Normal modu.
+
+ 2. Pomaknite kursor na liniju oznaenu s --->.
+
+ 3. Pomaknite kursor do kraja ispravne reenice
+ (POSLJE prve . ).
+
+ 4. Otipkajte d$
+ kako bi izbrisali sve znakove do kraja linije.
+
+---> Netko je utipkao kraj ove linije dvaput. kraj ove linije dvaput.
+
+ 5. Prijeite na Lekciju 2.3 za bolje objanjenje.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 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 sljedei:
+
+ d pokret
+
+ Pri emu je:
+ d - operator brisanja.
+ pokret - ono na emu e se operacija izvravati (navedeno u nastavku).
+
+ Kratka lista pokreta:
+ w - sve do poetka sljedee rijei, NE UKLJUUJUI prvo slovo.
+ e - sve do kraja trenutane rijei, UKLJUUJUI zadnje slovo.
+ $ - sve do kraje linije, UKLJUUJUI zadnje slovo.
+
+ Tipkanjem de e se brisati od kursora do kraja rijei.
+
+NAPOMENA: Pritiskajui samo pokrete dok ste u Normal modu bez operatora e
+ pomicati kursor kao to je navedeno.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 2.4: KORITENJE BROJANJA ZA POKRETE
+
+
+ ** Tipkanjem nekog broja prije pokreta, pokret se izvrava toliko puta. **
+
+ 1. Pomaknite kursor na liniju oznaenu s --->.
+
+ 2. Otipkajte 2w da pomaknete kursor dvije rijei naprijed.
+
+ 3. Otipkajte 3e da pomaknete kursor na kraj tree rijei naprijed.
+
+ 4. Otipkajte 0 (nulu) da pomaknete kursor na poetak linije.
+
+ 5. Ponovite korake 2 i 3 s nekim drugim brojevima.
+
+---> Reenica sa rijeima po kojoj moete pomicati kursor.
+
+ 6. Prijeite na Lekciju 2.5.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 2.5: KORITENJE BROJANJA ZA VEE 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 vie znakova:
+
+ d broj pokret
+
+ 1. Pomaknite kursor na prvo slovo u rijei sa VELIKIM SLOVIMA
+ oznaenu s --->.
+
+ 2. Otipkajte 2dw da izbriete dvije rijei sa VELIKIM SLOVIMA
+
+ 3. Ponovite korake 1 i 2 sa razliitim brojevima da izbriete
+ uzastopne rijei sa VELIKIM SLOVIMA sa samo jednom naredbom.
+
+---> ova ABC DE linija FGHI JK LMN OP rijei je RS TUVZ popravljena.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 2.6: OPERIRANJE NAD LINIJAMA
+
+
+ ** Otipkajte dd za brisanje cijele linije. **
+
+ Zbog uestalosti brisanja cijelih linija, dizajneri Vi-a su odluili da
+ je lake 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) Rue su crvene,
+---> 2) Plaa je super,
+---> 3) Ljubice su plave,
+---> 4) Imam auto,
+---> 5) Satovi ukazuju vrijeme,
+---> 6) eer je sladak
+---> 7) Kao i ti.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 2.7: NAREDBA PONITENJA
+
+
+ ** Pritisnite u za ponitenje zadnje naredbe, U za cijelu liniju. **
+
+ 1. Pomaknite kursor na liniju oznaenu s ---> i postavite kursor na prvu
+ pogreku.
+ 2. Otipkajte x kako bi izbrisali prvi neeljeni znak.
+ 3. Otipkajte u kako bi ponitili zadnju izvrenu naredbu.
+ 4. Ovaj put ispravite sve pogreke na liniji koristei x naredbu.
+ 5. Sada utipkajte veliko U kako bi ponitili sve promjene
+ na liniji, vraajui je u prijanje stanje.
+ 6. Sada utipkajte u nekoliko puta kako bi ponitili U
+ i prijanje naredbe.
+ 7. Sada utipkajte CTRL-R (drei CTRL tipku pritisnutom dok
+ ne pritisnete R) nekoliko puta kako bi vratili promjene
+ (ponitili ponitenja).
+
+---> Poopravite pogreke nna ovvoj liniji ii poonititeee ih.
+
+ 8. Vrlo korisne naredbe. Prijeite na saetak Lekcije 2.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 2 SAETAK
+
+
+ 1. Brisanje od kursora do sljedee rijei: 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 poetak linije: 0
+
+ 7. Za ponitenje prethodnih promjena, pritisnite: u (malo u)
+ Za ponitenje svih promjena na liniji, pritisnite: U (veliko U)
+ Za vraanja promjena, utipkajte: CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 3.1: NAREDBA POSTAVI
+
+
+ ** p za unos prethodno izbrisanog teksta iza kursora. **
+
+ 1. Pomaknite kursor na prvu sljedeu liniju oznaenu 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) Moe li i ti nauiti?
+---> b) Ljubice su plave,
+---> c) Inteligencija je nauena,
+---> a) Rue su crvene,
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 3.2: NAREDBA PROMJENE
+
+
+ ** Otipkajte rx za zamjenu slova ispod kursora sa slovom x . **
+
+ 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->.
+
+ 2. Pomaknite kursor tako da se nalazi na prvoj pogreci.
+
+ 3. Otipkajte r i nakon toga ispravan znak na tom mjestu.
+
+ 4. Ponovite korake 2 i 3 sve dok prva
+ linije ne bude istovjetna drugoj.
+
+---> Kede ju ovu limija tupjana, natko je protuskao kruve tupke!
+---> Kada je ova linija tipkana, netko je pritiskao krive tipke!
+
+ 5. Prijeite na Lekciju 3.2.
+
+NAPOMENA: Prisjetite da trebate uiti vjebanjem, ne pamenjem.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 3.3: OPERATOR MIJENJANJA
+
+
+ ** Za mijenjanje do kraja rijei, istipkajte ce . **
+
+ 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->.
+
+ 2. Postavite kursor na a u lackmb.
+
+ 3. Otipkajte ce i ispravite rije (u ovom sluaju otipkajte inija ).
+
+ 4. Pritisnite <ESC> i pomaknite kursor na sljedei znak
+ kojeg je potrebno ispraviti.
+
+ 5. Ponovite korake 3 i 4 sve dok prva reenica ne postane istovjetna
+ drugoj.
+
+---> Ova lackmb ima nekoliko rjlcah koje trfcb mijdmlfsz.
+---> Ova linija ima nekoliko rijei koje treba mijenjati.
+
+Primijetite da ce brie rije i postavlja Vim u Insert mod.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 3.4: JO MIJENJANJA KORITENJEM c
+
+
+ ** Naredba mijenjanja se koristi sa istim pokretima kao i brisanje. **
+
+ 1. Operator mijenjanja se koristi na isti nain kao i operator brisanja:
+
+ c [broj] pokret
+
+ 2. Pokreti su isti, npr: w (rije) i $ (kraj linije).
+
+ 3. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->.
+
+ 4. Pomaknite kursor na prvu pogreku.
+
+ 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 koritenjem c$ naredbe.
+
+NAPOMENA: Moete koristiti Backspace za ispravljanje greaka.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 3 SAETAK
+
+
+ 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
+ rijei, c$ za mijenjanje od kursora do kraja linije.
+
+ 4. Oblik naredbe mijenjanja:
+
+ c [broj] pokret
+
+Prijeite na sljedeu 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: Proitajte cijelu lekciju prije izvrenja bilo kojeg koraka!!
+
+ 1. Drite 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: Moete vidjeti poziciju kursora u donjem desnom kutu ako
+ je postavka 'ruler' aktivirana (objanjeno u 6. lekciji).
+
+ 2. Pritisnite G za pomicanje kursora na kraj datoteke.
+ Otipkajte gg za pomicanje kursora na poetak 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, izvrite korake od 1 do 3.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 4.2: NAREDBE TRAENJA
+
+ ** Otipkajte / i nakon toga izraz kojeg elite traiti. **
+
+ 1. U Normal modu otipkajte / znak. Primijetite da se znak
+ pojavio zajedno sa kursorom na dnu ekrana kao kod : naredbe.
+
+ 2. Sada otipkajte 'grrrreka' <ENTER>. To je rije koju zapravo traite.
+
+ 3. Za ponovno traenje istog izraza, otipkajte n .
+ Za traenje istog izraza ali u suprotnom smjeru, otipkajte N .
+
+ 4. Za traenje izraza unatrag, koristite ? umjesto / .
+
+ 5. Za povratak na prethodnu poziciju koristite CTRL-O (drite Ctrl
+ pritisnutim dok ne pritisnete tipku o). Ponavljajte sve dok se ne
+ vratite na poetak. CTRL-I slino kao CTRL-O ali u suprotnom smjeru.
+
+---> "pogrrrreka" je pogreno; umjesto pogrrrreka treba stajati pogreka.
+
+NAPOMENA: Ako se traenjem doe do kraja datoteke nastavit e se od njenog
+ poetka osim ako je postavka 'wrapscan' deaktivirana.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 4.3: TRAENJE PRIPADAJUE ZAGRADE
+
+
+ ** Otipkajte % za pronalazak pripadajue ), ] ili } . **
+
+ 1. Postavite kursor na bilo koju od ( , [ ili {
+ otvorenih zagrada u liniji oznaenoj s --->.
+
+ 2. Otipkajte znak % .
+
+ 3. Kursor e se pomaknuti na pripadajuu zatvorenu zagradu.
+
+ 4. Otipkajte % kako bi pomakli kursor na drugu pripadajuu zagradu.
+
+ 5. Pomaknite kursor na neku od (,),[,],{ ili } i ponovite % naredbu.
+
+---> Linija ( testiranja obinih ( [ uglatih ] i { vitiastih } zagrada.))
+
+
+NAPOMENA: Vrlo korisno u ispravljanju koda sa nepripadajuim zagradama!
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 4.4: NAREDBE ZAMIJENE
+
+
+ ** Otipkajte :s/staro/novo/g da zamijenite 'staro' za 'novo'. **
+
+ 1. Pomaknite kursor na liniju oznaenu 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 znai da e se naredba
+ izvriti na cijeloj liniji, zamjenjivanjem svih "cvr" u liniji.
+
+---> i cvri cvri cvrak na voru crne smre.
+
+ 4. Za zamjenu svih izraza u rasponu dviju linija,
+ otipkajte :#,#s/staro/novo/g #,# su brojevi linije datoteke na kojima
+ te izmeu njih e se izvriti 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 SAETAK
+
+
+ 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 trai UNAPRIJED taj izraz.
+ Tipkanje ? sa izrazom trai UNATRAG taj izraz.
+ Nakon naredbe traenja koristite n za pronalazak izraza u istom
+ smjeru, i N za pronalazak istog izraza ali u suprotnom smjeru.
+ CTRL-O vraa kursor na prethodnu poziciju, CTRL-I na sljedeu poziciju.
+
+ 3. Tipkanje % dok je kursor na zagradi pomie ga na pripadajuu 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: IZVRAVANJE VANJSKIH NAREDBI
+
+
+ ** Otipkajte :! sa vanjskom naredbom koju elite izvriti. **
+
+ 1. Otipkajte poznatu naredbu : kako bi kursor premjestili na dno
+ ekrana. Time omoguavate unos naredbe u naredbenoj liniji.
+
+ 2. Otipkajte znak ! (usklinik). Tako omoguavate
+ izvravanje naredbe vanjske ljuske.
+
+ 3. Kao primjer otipkajte ls nakon ! te pritisnite <ENTER>.
+ Ovo e prikazati sadraj direktorija, kao da ste u ljusci.
+ Koristite :!dir ako :!ls ne radi.
+
+NAPOMENA: Mogue je izvravati bilo koju vanjsku naredbu na ovaj nain,
+ zajedno sa njenim argumentima.
+
+NAPOMENA: Sve : naredbe se izvravaju nakon to pritisnete <ENTER>
+ U daljnjem tekstu to nee uvijek biti napomenuto.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 5.2: VIE 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. Izbriite datoteku tako da otipkate (MS-DOS): :!del TEST
+ ili (Unix): :!rm TEST
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 5.3: SPREMANJE OZNAENOG 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, oznaeni tekst se razlikuje od obinog.
+
+ 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 pie :'<,'>w TEST
+ prije nego to pritisnite <ENTER>.
+
+ 5. Vim e spremiti oznaeni tekst u TEST. Provjerite sa :!dir ili !ls .
+ Nemojte je jo brisati! Koristiti e te je u sljedeoj lekciji.
+
+NAPOMENA: Tipka v zapoinje Vizualno oznaavanje. Moete pomicati kursor
+ unaokolo kako bi mijenjali veliinu oznaenog teksta. Moete
+ koristiti i operatore. Npr, d e izbrisati oznaeni tekst.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 5.4: UITAVANJE DATOTEKA
+
+
+ ** Za ubacivanje sadraja datoteke, otipkajte :r IME_DATOTEKE **
+
+ 1. Postavite kursor iznad ove linije.
+
+NAPOMENA: Nakon to izvrite 2. korak vidjeti e te tekst iz Lekcije 5.3.
+ Stoga pomaknite kursor DOLJE kako bi ponovno vidjeli ovu lekciju.
+
+ 2. Uitajte vau TEST datoteku koristei naredbu :r TEST
+ gdje je TEST ime datoteke koju ste koristili u prethodnoj lekciji.
+ Sadraj uitane datoteke je ubaen liniju ispod kursora.
+
+ 3. Kako bi provjerili da je datoteka uitana, vratite kursor unatrag i
+ primijetite dvije kopije Lekcije 5.3, originalnu i onu iz datoteke.
+
+NAPOMENA: Moete takoer uitati ispis vanjske naredbe. Npr, :r !ls
+ e uitati ispis ls naredbe i postaviti ispis liniju ispod
+ kursora.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 5 SAETAK
+
+
+ 1. :!naredba izvrava vanjsku naredbu.
+
+ Korisni primjeri:
+ (MS-DOS) (Unix)
+ :!dir :!ls - pregled direktorija.
+ :!del DATOTEKA :!rm DATOTEKA - brie datoteku DATOTEKA.
+
+ 2. :w DATOTEKA zapisuje trenutanu datoteku na disk sa imenom DATOTEKA.
+
+ 3. v pokret :w IME_DATOTEKE sprema vizualno oznaene linije u
+ datoteku IME_DATOTEKE.
+
+ 4. :r IME_DATOTEKE uitava datoteku IME_DATOTEKE sa diska i stavlja
+ njen sadraj liniju ispod kursora.
+
+ 5. :r !dir uitava ispis naredbe dir i postavlja sadraj ispisa liniju
+ ispod kursora.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 6.1: NAREDBA OTVORI
+
+
+ ** Pritisnite o kako bi otvorili liniju ispod kursora
+ i preli u Insert mod. **
+
+ 1. Pomaknite kursor na sljedeu liniju oznaenu s --->.
+
+ 2. Otipkajte malo o kako bi otvorili novu liniju ISPOD kursora
+ i preli u Insert mod.
+
+ 3. Otipkajte neto teksta i nakon toga pritisnite <ESC>
+ kako bi napustili Insert mod.
+
+---> Nakon to pritisnete o kursor e prei u novu liniju u Insert mod.
+
+ 4. Za otvaranje linije IZNAD kursora, otipkajte umjesto malog o veliko O ,
+ Pokuajte na donjoj liniji oznaenoj 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 poetak sljedee linije oznaene 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 prijeite na sljedeu nepotpunu rije i ponovite korake 3 i 4.
+
+---> Ova li omoguava vje dodav teksta nekoj liniji.
+---> Ova linija omoguava vjebanje 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 NAIN MIJENJANJA
+
+
+ ** Otipkajte veliko R kako bi zamijelili vie od jednog znaka. **
+
+ 1. Pomaknite kursor na prvu sljedeu liniju oznaenu s --->.
+ Pomaknite kursor na poetak 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 brie ve postojei.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 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 oznaeni tekst.
+
+ 4. Pomaknite kursor do kraja sljedee linije: j$
+
+ 5. Pritisnite p kako bi zalijepili tekst. Onda utipkajte: druga <ESC> .
+
+ 6. Koristite Visual mod kako bi oznaili " linija.", kopirajte: y , kursor
+ postavite na kraj sljedee linije: j$ i ondje zalijepite tekst: p .
+
+---> a) ovo je prva linija.
+ b)
+
+NAPOMENA: moete koristiti y kao operator; yw kopira jednu rije.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 6.5: MIJENJANJE POSTAVKI
+
+
+ ** Postavka: naredbe traenja i zamijene ne razlikuju VELIKA i mala slova **
+
+ 1. Potraite 'razlika' tipkanjem: /razlika <ENTER>
+ Nekoliko puta ponovite pritiskanjem n .
+
+ 2. Aktivirajte 'ic' (Ignore case) postavku: :set ic
+
+ 3. Ponovno potraite 'razlika' tipkanjem n
+ Primijetite da su sada i RAZLIKA i Razlika pronaeni.
+
+ 4. Aktivirajte 'hlsearch' i 'incsearch' postavke: :set hls is
+
+ 5. Otipkajte naredbu traenja i primijetite razlike: /razlika <ENTER>
+
+ 6. Za deaktiviranje ic postavke koristite: :set noic
+
+NAPOMENA: Za neoznaavanje pronaenih izraza otipkajte: :nohlsearch
+NAPOMENA: Bez razlikovanja velikih i malih slova u samo jednoj naredbi
+ koristite \c u izrazu: /razlika\c <ENTER>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 6 SAETAK
+
+ 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 pomie kursor na kraj rijei.
+
+ 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 traenju
+ 'is' 'incsearch' trai nedovrene izraze
+ 'hls' 'hlsearch' oznai sve pronaene izraze
+ Moete koristite dugo ili kratko ime postavke.
+
+ 7. Prethodite "no" imenu postavke za deaktiviranje iste: :set noic
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 7.1: DOBIVANJE POMOI
+
+
+ ** Koristite on-line sustav pomoi **
+
+ Vim ima detaljan on-line sustav pomoi.
+ Za poetak, pokuajte jedno od sljedeeg:
+ - pritisnite <HELP> tipku (ako je vaa tipkovnica ima)
+ - pritisnite <F1> tipku (ako je vaa tipkovnica ima)
+ - utipkajte :help <ENTER>
+
+ Proitajte tekst u prozoru pomoi kako bi ste se znali sluiti istom.
+ Tipkanjem CTRL-W CTRL-W prelazite iz jednog prozora u drugi.
+ Otipkajte :q <ENTER> kako bi zatvorili prozor pomoi.
+
+ Pronai e te pomo o bilo kojoj temi, tako da dodate upit samoj
+ ":help" naredbi. Pokuajte (ne zaboravite pritisnuti <ENTER>):
+
+ :help w
+ :help c_CTRL-D
+ :help insert-index
+ :help user-manual
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 7.2: PRAVLJENJE SKRIPTE
+
+
+ ** Aktivirajte Vim mogunosti **
+
+ Vim ima mnogo vie alata od Vi-ja, ali veina njih nije aktivirana.
+ Kako bi mogli koristiti vie mogunosti napravite "vimrc" datoteku.
+
+ 1. Uredite "vimrc" datoteku. Ovo ovisi o vaem sistemu:
+ :e ~/.vimrc za Unix
+ :e $VIM/_vimrc za MS-Windows
+
+ 2. Sada uitajte primjer sadraja "vimrc" datoteke:
+ :r $VIMRUNTIME/vimrc_example.vim
+
+ 3. Sauvajte datoteku sa:
+ :w
+
+ Sljedeeg puta kada pokrenete Vim, bojanje sintakse teksta biti e
+ aktivirano. Sve vae postavke moete dodati u "vimrc" datoteku.
+ Za vie informacija otipkajte :help vimrc-intro
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 7.3: AUTOMATSKO DOVRAVANJE
+
+
+ ** Dovravanje iz naredbene linije pomou 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 poetak naredbe: :e
+
+ 4. Tipkajte CTRL-D i prikazati e se lista naredbi koje zapoinju sa "e".
+
+ 5. Pritisnite <TAB> i Vim e dopuniti unos u naredbu ":edit".
+
+ 6. Dodajte razmak i poetak datoteke: :edit FIL
+
+ 7. Pritisnite <TAB>. Vim e nadopuniti ime datoteke (ako je jedinstveno).
+
+NAPOMENA: Mogue je dopuniti mnoge naredbe. Koristite CTRL-D i <TAB>.
+ Naroito je korisno za :help naredbe.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lekcija 7 SAETAK
+
+
+ 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 pomoi
+
+ 5. Napravite vimrc skriptu za podizanje kako bi u nju spremali
+ vae omiljene postavke.
+
+ 6. Kada tipkate naredbu koja zapoinje sa :
+ pritisnite CTRL-D kako bi vidjeli mogue valjane vrijednosti.
+ Pritisnite <TAB> kako bi odabrali jednu od njih.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Kraj. Cilj prirunika je da pokae kratak pregled Vim editora, tek toliko
+ da omogui njegovo koritenje. Prirunik nije potpun jer Vim ima mnogo vie
+ naredbi. Za vie informacija: ":help user-manual".
+
+ Za itanje i koritenje, preporuamo:
+ Vim - Vi Improved - by Steve Oualline
+ Izdava: New Riders
+ Prva knjiga potpuno posveena Vim-u. Vrlo korisna za poetnike.
+ Sa mnogo primjera i slika.
+ Posjetite http://iccf-holland.org/click5.html
+
+ Sljedea knjiga je neto starija i vie o Vi-u nego o Vim-u, preporuamo:
+ Learning the Vi Editor - by Linda Lamb
+ Izdava: O'Reilly & Associates Inc.
+ Solidna knjiga, moete saznati skoro sve to moete napraviti
+ u Vi-u. esto izdanje ima neto informacija i o Vim-u.
+
+ Ovaj prirunik su napisali: Michael C. Pierce i Robert K. Ware,
+ Colorado School of Mines koristei ideje Charles Smith,
+ Colorado State University. E-pota: 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 00000000..051b51bb
--- /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
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/src/INSTALL b/src/INSTALL
index 2269e411..210d773a 100644
--- a/src/INSTALL
+++ b/src/INSTALL
@@ -14,6 +14,7 @@ See INSTALLami.txt for Amiga
See INSTALLmac.txt for Macintosh
See INSTALLpc.txt for PC (MS-DOS, Windows 95/98/NT/XP)
See INSTALLvms.txt for VMS
+See INSTALLx.txt for cross-compiling on Unix
See ../runtime/doc/os_390.txt for OS/390 Unix
See ../runtime/doc/os_beos.txt for BeBox
diff --git a/src/edit.c b/src/edit.c
index fb17eecc..e04c720a 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -9300,7 +9300,7 @@ ins_tab()
i = cursor->col - fpos.col;
if (i > 0)
{
- mch_memmove(ptr, ptr + i, STRLEN(ptr + i) + 1);
+ STRMOVE(ptr, ptr + i);
/* correct replace stack. */
if ((State & REPLACE_FLAG)
#ifdef FEAT_VREPLACE
diff --git a/src/ops.c b/src/ops.c
index ba774b87..d79d75d5 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -516,7 +516,7 @@ shift_block(oap, amount)
copy_spaces(newp + bd.textcol + i, (size_t)j);
/* the end */
- mch_memmove(newp + STRLEN(newp), midp, (size_t)STRLEN(midp) + 1);
+ STRMOVE(newp + STRLEN(newp), midp);
}
/* replace the line */
ml_replace(curwin->w_cursor.lnum, newp, FALSE);
@@ -616,7 +616,7 @@ block_insert(oap, s, b_insert, bdp)
if (spaces > 0)
offset += count;
- mch_memmove(newp + offset, oldp, (size_t)(STRLEN(oldp) + 1));
+ STRMOVE(newp + offset, oldp);
ml_replace(lnum, newp, FALSE);
@@ -1759,8 +1759,7 @@ op_delete(oap)
(size_t)(bd.startspaces + bd.endspaces));
/* copy the part after the deleted part */
oldp += bd.textcol + bd.textlen;
- mch_memmove(newp + bd.textcol + bd.startspaces + bd.endspaces,
- oldp, STRLEN(oldp) + 1);
+ STRMOVE(newp + bd.textcol + bd.startspaces + bd.endspaces, oldp);
/* replace the line */
ml_replace(lnum, newp, FALSE);
}
@@ -2081,7 +2080,7 @@ op_replace(oap, c)
/* insert post-spaces */
copy_spaces(newp + STRLEN(newp), (size_t)bd.endspaces);
/* copy the part after the changed part */
- mch_memmove(newp + STRLEN(newp), oldp, STRLEN(oldp) + 1);
+ STRMOVE(newp + STRLEN(newp), oldp);
}
/* replace the line */
ml_replace(curwin->w_cursor.lnum, newp, FALSE);
@@ -2696,7 +2695,7 @@ op_change(oap)
mch_memmove(newp + offset, ins_text, (size_t)ins_len);
offset += ins_len;
oldp += bd.textcol;
- mch_memmove(newp + offset, oldp, STRLEN(oldp) + 1);
+ STRMOVE(newp + offset, oldp);
ml_replace(linenr, newp, FALSE);
}
}
@@ -3662,7 +3661,7 @@ do_put(regname, dir, count, flags)
mch_memmove(ptr, y_array[0], (size_t)yanklen);
ptr += yanklen;
}
- mch_memmove(ptr, oldp + col, STRLEN(oldp + col) + 1);
+ STRMOVE(ptr, oldp + col);
ml_replace(lnum, newp, FALSE);
/* Put cursor on last putted char. */
curwin->w_cursor.col += (colnr_T)(totlen - 1);
diff --git a/src/option.c b/src/option.c
index 885c547b..8543b48e 100644
--- a/src/option.c
+++ b/src/option.c
@@ -2846,7 +2846,6 @@ static char *(p_bsdir_values[]) = {"current", "last", "buffer", NULL};
#ifdef FEAT_SCROLLBIND
static char *(p_scbopt_values[]) = {"ver", "hor", "jump", NULL};
#endif
-static char *(p_swb_values[]) = {"useopen", "usetab", "split", NULL};
static char *(p_debug_values[]) = {"msg", "throw", "beep", NULL};
#ifdef FEAT_VERTSPLIT
static char *(p_ead_values[]) = {"both", "ver", "hor", NULL};
@@ -3276,20 +3275,8 @@ set_init_1()
}
# else
# ifdef MACOS_CONVERT
- if (mch_getenv((char_u *)"LANG") == NULL)
- {
- char buf[20];
- if (LocaleRefGetPartString(NULL,
- kLocaleLanguageMask | kLocaleLanguageVariantMask |
- kLocaleRegionMask | kLocaleRegionVariantMask,
- sizeof buf, buf) == noErr && *buf)
- {
- vim_setenv((char_u *)"LANG", (char_u *)buf);
-# ifdef HAVE_LOCALE_H
- setlocale(LC_ALL, "");
-# endif
- }
- }
+ /* Moved to os_mac_conv.c to avoid dependency problems. */
+ mac_lang_init();
# endif
# endif
@@ -4599,8 +4586,7 @@ do_set(arg, opt_flags)
else
{
i = (int)STRLEN(newval);
- mch_memmove(newval + i + comma, origval,
- STRLEN(origval) + 1);
+ STRMOVE(newval + i + comma, origval);
}
if (comma)
newval[i] = ',';
@@ -4629,8 +4615,7 @@ do_set(arg, opt_flags)
++i;
}
}
- mch_memmove(newval + (s - origval), s + i,
- STRLEN(s + i) + 1);
+ STRMOVE(newval + (s - origval), s + i);
}
}
@@ -4641,7 +4626,7 @@ do_set(arg, opt_flags)
if ((!(flags & P_COMMA) || *s != ',')
&& vim_strchr(s + 1, *s) != NULL)
{
- mch_memmove(s, s + 1, STRLEN(s));
+ STRMOVE(s, s + 1);
--s;
}
}
@@ -6230,7 +6215,7 @@ did_set_string_option(opt_idx, varp, new_value_alloced, oldval, errbuf,
/* 'switchbuf' */
else if (varp == &p_swb)
{
- if (check_opt_strings(p_swb, p_swb_values, TRUE) != OK)
+ if (opt_strings_flags(p_swb, p_swb_values, &swb_flags, TRUE) != OK)
errmsg = e_invarg;
}
@@ -7183,7 +7168,7 @@ set_bool_option(opt_idx, varp, value, opt_flags)
}
/* remove 's' from p_shm */
else if (!p_terse && p != NULL)
- mch_memmove(p, p + 1, STRLEN(p));
+ STRMOVE(p, p + 1);
}
/* when 'paste' is set or reset also change other options */
@@ -8177,7 +8162,8 @@ get_option_value(name, numval, stringval, opt_flags)
{
#ifdef FEAT_CRYPT
/* never return the value of the crypt key */
- if ((char_u **)varp == &curbuf->b_p_key)
+ if ((char_u **)varp == &curbuf->b_p_key
+ && **(char_u **)(varp) != NUL)
*stringval = vim_strsave((char_u *)"*****");
else
#endif
@@ -10032,7 +10018,7 @@ ExpandOldSetting(num_file, file)
&& (options[expand_option_idx].flags & P_EXPAND)
&& vim_isfilec(var[2])
&& (var[2] != '\\' || (var == buf && var[4] != '\\')))
- mch_memmove(var, var + 1, STRLEN(var));
+ STRMOVE(var, var + 1);
#endif
*file[0] = buf;
diff --git a/src/option.h b/src/option.h
index 3818bcd8..00374d7e 100644
--- a/src/option.h
+++ b/src/option.h
@@ -742,6 +742,14 @@ EXTERN int p_sol; /* 'startofline' */
EXTERN char_u *p_su; /* 'suffixes' */
EXTERN char_u *p_sws; /* 'swapsync' */
EXTERN char_u *p_swb; /* 'switchbuf' */
+EXTERN unsigned swb_flags;
+#ifdef IN_OPTION_C
+static char *(p_swb_values[]) = {"useopen", "usetab", "split", "newtab", NULL};
+#endif
+#define SWB_USEOPEN 0x001
+#define SWB_USETAB 0x002
+#define SWB_SPLIT 0x004
+#define SWB_NEWTAB 0x008
EXTERN int p_tbs; /* 'tagbsearch' */
EXTERN long p_tl; /* 'taglength' */
EXTERN int p_tr; /* 'tagrelative' */
diff --git a/src/po/ja.sjis.po b/src/po/ja.sjis.po
index 96c2037f..9b9ea234 100644
--- a/src/po/ja.sjis.po
+++ b/src/po/ja.sjis.po
@@ -3,16 +3,17 @@
# Do ":help uganda" in Vim to read copying and usage conditions.
# Do ":help credits" in Vim to see a list of people who contributed.
#
-# MURAOKA Taro <koron@tka.att.ne.jp>, 2001-6.
-# Last Change: 18-Apr-2006.
+# MURAOKA Taro <koron.kaoriya@gmail.com>, 2001-8.
+# Last Change: 31-May-2008.
#
msgid ""
msgstr ""
-"Project-Id-Version: Vim 7.0\n"
-"POT-Creation-Date: 2006-04-18 11:00+0900\n"
-"PO-Revision-Date: 2006-04-18 11:30+0900\n"
-"Last-Translator: MURAOKA Taro <koron@tka.att.ne.jp>\n"
-"Language-Team: MURAOKA Taro <koron@tka.att.ne.jp>\n"
+"Project-Id-Version: Vim 7.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-05-31 22:00+0900\n"
+"PO-Revision-Date: 2008-05-31 22:30+0900\n"
+"Last-Translator: MURAOKA Taro <koron.kaoriya@gmail.com>\n"
+"Language-Team: MURAOKA Taro <koron.kaoriya@gmail.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=cp932\n"
"Content-Transfer-Encoding: 8-bit\n"
@@ -114,12 +115,15 @@ msgstr "[ǍG[]"
msgid "[readonly]"
msgstr "[Ǎp]"
+#, c-format
msgid "1 line --%d%%--"
msgstr "1 s --%d%%--"
+#, c-format
msgid "%ld lines --%d%%--"
msgstr "%ld s --%d%%--"
+#, c-format
msgid "line %ld of %ld --%d%%-- col "
msgstr "s %ld (S %ld) --%d%%-- col "
@@ -145,6 +149,7 @@ msgstr ""
msgid "Top"
msgstr "擪"
+#, c-format
msgid ""
"\n"
"# Buffer list:\n"
@@ -189,6 +194,9 @@ msgstr "E98: diff̏o͂Ǎ߂܂"
msgid "E99: Current buffer is not in diff mode"
msgstr "E99: ݂̃obt@͍[hł͂܂"
+msgid "E793: No other buffer in diff mode is modifiable"
+msgstr "E793: [hł鑼̃obt@͕ύX”\\ł"
+
msgid "E100: No other buffer in diff mode"
msgstr "E100: [hł鑼̃obt@͂܂"
@@ -216,6 +224,9 @@ msgstr "E544: L[}bvt@C݂‚܂"
msgid "E105: Using :loadkeymap not in a sourced file"
msgstr "E105: :source Ŏ捞ރt@CȊOł :loadkeymap g܂"
+msgid "E791: Empty keymap entry"
+msgstr "E791: ̃L[}bvGg"
+
msgid " Keyword completion (^N^P)"
msgstr " L[[h⊮ (^N^P)"
@@ -282,6 +293,7 @@ msgstr " (u) XN[ (^E/^Y)"
msgid "Scanning: %s"
msgstr "XL: %s"
+#, c-format
msgid "Scanning tags."
msgstr "^OXL."
@@ -338,7 +350,7 @@ msgid "E713: Cannot use empty key for Dictionary"
msgstr "E713: ^ɋ̃L[gƂ͂ł܂"
msgid "E714: List required"
-msgstr "E471: Xg^Kvł"
+msgstr "E714: Xg^Kvł"
msgid "E715: Dictionary required"
msgstr "E715: ^Kvł"
@@ -613,6 +625,10 @@ msgid "E706: Variable type mismatch for: %s"
msgstr "E706: ϐ̌^v܂: %s"
#, c-format
+msgid "E795: Cannot delete variable %s"
+msgstr "E795: ϐ %s 폜ł܂"
+
+#, c-format
msgid "E741: Value is locked: %s"
msgstr "E741: lbNĂ܂: %s"
@@ -678,6 +694,7 @@ msgstr "%s ̎spł"
msgid "E133: :return not inside a function"
msgstr "E133: ֐O :return ܂"
+#, c-format
msgid ""
"\n"
"# global variables:\n"
@@ -744,6 +761,7 @@ msgstr " }[N"
msgid " FAILED"
msgstr " s"
+#. avoid a wait_return for this message, it's annoying
#, c-format
msgid "E137: Viminfo file is not writable: %s"
msgstr "E137: viminfot@C݂ł܂: %s"
@@ -761,6 +779,7 @@ msgstr "viminfot@C \"%s\" ݒ"
msgid "# This viminfo file was generated by Vim %s.\n"
msgstr "# viminfo t@C Vim %s ɂĐ܂.\n"
+#, c-format
msgid ""
"# You may edit it if you're careful!\n"
"\n"
@@ -768,6 +787,7 @@ msgstr ""
"# ύXۂɂ͏\\ӂĂ!\n"
"\n"
+#, c-format
msgid "# Value of 'encoding' when this file was written\n"
msgstr "# ̃t@Cꂽ 'encoding' ̒l\n"
@@ -810,6 +830,20 @@ msgstr ""
"\"%s\" ɂ 'readonly' IvVݒ肳Ă܂.\n"
"㏑܂?"
+#, c-format
+msgid ""
+"File permissions of \"%s\" are read-only.\n"
+"It may still be possible to write it.\n"
+"Do you wish to try?"
+msgstr ""
+"t@C \"%s\" ̃p[~bVǍpł.\n"
+"ł炭ނƂ͉”\\ł.\n"
+"p܂?"
+
+#, c-format
+msgid "E505: \"%s\" is read-only (add ! to override)"
+msgstr "E505: \"%s\" ͓Ǎpł (ɂ ! lj)"
+
msgid "Edit File"
msgstr "t@CҏW"
@@ -864,6 +898,7 @@ msgstr "E148: globalR}hɐK\\w肳Ă܂"
msgid "Pattern found in every line: %s"
msgstr "p^[SĂ̍sł݂‚܂: %s"
+#, c-format
msgid ""
"\n"
"# Last Substitute String:\n"
@@ -1207,10 +1242,10 @@ msgstr "Xbvt@C܂"
msgid "Append File"
msgstr "ljt@C"
-msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
+msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
msgstr ""
-"E747: obt@CĂ̂, fBNgύXł܂ (! "
-"ljŏ㏑)"
+"E747: obt@CĂ̂, fBNgύXł܂ (! lj"
+"㏑)"
msgid "E186: No previous directory"
msgstr "E186: ÕfBNg͂܂"
@@ -1446,6 +1481,9 @@ msgstr " ̓fBNgł"
msgid "is not a file"
msgstr " ̓t@Cł͂܂"
+msgid "is a device (disabled with 'opendevice' option)"
+msgstr " ̓foCXł ('opendevice' IvVʼnł܂)"
+
msgid "[New File]"
msgstr "[Vt@C]"
@@ -1483,6 +1521,9 @@ msgstr "[FIFO]"
msgid "[socket]"
msgstr "[\\Pbg]"
+msgid "[character special]"
+msgstr "[LN^EfoCX]"
+
msgid "[RO]"
msgstr "[ǐ]"
@@ -1543,6 +1584,9 @@ msgstr "NetBeansobt@̈ꕔoƂ͂ł܂"
msgid "is not a file or writable device"
msgstr "̓t@Cł݉”\\foCXł܂"
+msgid "writing to device disabled with 'opendevice' option"
+msgstr "'opendevice' IvVɂfoCXւ݂̏͂ł܂"
+
msgid "is read-only (add ! to override)"
msgstr "͓Ǎpł (ɂ ! lj)"
@@ -2151,6 +2195,7 @@ msgstr "%d y[W"
msgid "No text to be printed"
msgstr "eLXg܂"
+#, c-format
msgid "Printing page %d (%d%%)"
msgstr ": y[W %d (%d%%)"
@@ -2290,15 +2335,15 @@ msgstr "E622: cscope̋N(fork)Ɏs܂"
msgid "cs_create_connection exec failed"
msgstr "cs_create_connection ̎sɎs܂"
-msgid "E623: Could not spawn cscope process"
-msgstr "E623: cscopevZXNł܂ł"
-
msgid "cs_create_connection: fdopen for to_fp failed"
msgstr "cs_create_connection: to_fp fdopen Ɏs܂"
msgid "cs_create_connection: fdopen for fr_fp failed"
msgstr "cs_create_connection: fr_fp fdopen Ɏs܂"
+msgid "E623: Could not spawn cscope process"
+msgstr "E623: cscopevZXNł܂ł"
+
msgid "E567: no cscope connections"
msgstr "E567: cscopeڑɎs܂"
@@ -2373,8 +2418,8 @@ msgid ""
"???: Sorry, this command is disabled, the MzScheme library could not be "
"loaded."
msgstr ""
-"???: ̃R}h͖ł, ߂Ȃ: MzScheme "
-"Cu[hł܂ł."
+"???: ̃R}h͖ł, ߂Ȃ: MzScheme Cu[hł"
+"ł."
msgid "invalid expression"
msgstr "Ȏł"
@@ -2427,25 +2472,12 @@ msgstr "͈͊O̍sԍł"
msgid "not allowed in the Vim sandbox"
msgstr "Th{bNXł͋܂"
-#, c-format
-msgid "E370: Could not load library %s"
-msgstr "E370: Cu %s [hł܂ł"
-
-msgid "Sorry, this command is disabled: the Perl library could not be loaded."
-msgstr ""
-"̃R}h͖ł, ߂Ȃ: PerlCu[hł܂ł."
-
-msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
-msgstr ""
-"E299: Th{bNXł Safe "
-"W[gpȂPerlXNvg͋ւĂ܂"
-
msgid ""
"E263: Sorry, this command is disabled, the Python library could not be "
"loaded."
msgstr ""
-"E263: ̃R}h͖ł,߂Ȃ: "
-"PythonCu[hł܂ł."
+"E263: ̃R}h͖ł,߂Ȃ: PythonCu[hł܂"
+"ł."
# Added at 07-Feb-2004.
msgid "E659: Cannot invoke Python recursively"
@@ -2512,11 +2544,11 @@ msgstr "E265: $_ ͕̃CX^XłȂ΂Ȃ܂"
msgid ""
"E266: Sorry, this command is disabled, the Ruby library could not be loaded."
msgstr ""
-"E266: ̃R}h͖ł,߂Ȃ: "
-"RubyCu[hł܂ł."
+"E266: ̃R}h͖ł,߂Ȃ: RubyCu[hł܂"
+"."
msgid "E267: unexpected return"
-msgstr "E265: \\ return ł"
+msgstr "E267: \\ return ł"
msgid "E268: unexpected next"
msgstr "E268: \\ next ł"
@@ -2595,8 +2627,8 @@ msgid ""
"Cannot connect to SNiFF+. Check environment (sniffemacs must be found in "
"$PATH).\n"
msgstr ""
-"SNiFF+ɐڑł܂. ‹`FbNĂ(sniffemacs $PATH "
-"ɂȂ΂Ȃ܂).\n"
+"SNiFF+ɐڑł܂. ‹`FbNĂ(sniffemacs $PATH ɂȂ"
+"΂Ȃ܂).\n"
msgid "E274: Sniff: Error during read. Disconnected"
msgstr "E274: Sniff: ǍɃG[܂. ؒf܂"
@@ -2660,8 +2692,8 @@ msgstr "vim G["
msgid "cannot create buffer/window command: object is being deleted"
msgstr ""
-"obt@/EBhE쐬R}h쐬ł܂: "
-"IuWFNgĂ܂"
+"obt@/EBhE쐬R}h쐬ł܂: IuWFNgĂ"
+""
msgid ""
"cannot register callback command: buffer/window is already being deleted"
@@ -2670,27 +2702,27 @@ msgstr ""
#. This should never happen. Famous last word?
msgid ""
-"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to "
-"vim-dev@vim.org"
+"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
+"org"
msgstr ""
"E280: TCL vIG[: reflist !? vim-dev@vim.org ɕ񍐂Ă"
msgid "cannot register callback command: buffer/window reference not found"
msgstr ""
-"R[obNR}ho^ł܂: "
-"obt@/EBhE̎QƂ݂‚܂"
+"R[obNR}ho^ł܂: obt@/EBhE̎QƂ݂‚܂"
+""
msgid ""
"E571: Sorry, this command is disabled: the Tcl library could not be loaded."
msgstr ""
-"E571: ̃R}h͖ł,߂Ȃ: "
-"TclCu[hł܂ł."
+"E571: ̃R}h͖ł,߂Ȃ: TclCu[hł܂"
+"."
msgid ""
"E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org"
msgstr ""
-"E281: TCL G[: IR[hlł͂܂!? vim-dev@vim.org "
-"ɕ񍐂Ă"
+"E281: TCL G[: IR[hlł͂܂!? vim-dev@vim.org ɕ񍐂"
+"Ă"
#, c-format
msgid "E572: exit code %d"
@@ -2801,8 +2833,12 @@ msgstr ""
"\n"
" :"
-msgid "where case is ignored prepend / to make flag upper case"
-msgstr "啶͖܂ / tO͑啶ɂĂ"
+msgid ""
+"\n"
+"Where case is ignored prepend / to make flag upper case"
+msgstr ""
+"\n"
+"召ꍇ͑啶ɂ邽߂ / OuĂ"
msgid ""
"\n"
@@ -2870,8 +2906,8 @@ msgstr "-C\t\t\tVi݊[h: 'compatible'"
msgid "-N\t\t\tNot fully Vi compatible: 'nocompatible'"
msgstr "-N\t\t\tVi݊[h: 'nocompatible"
-msgid "-V[N]\t\tVerbose level"
-msgstr "-V[N]\t\tVerbose x"
+msgid "-V[N][fname]\t\tBe verbose [level N] [log messages to fname]"
+msgstr "-V[N][fname]\t\tOo͐ݒ [x N] [Ot@C fname]"
msgid "-D\t\t\tDebugging mode"
msgstr "-D\t\t\tfobO[h"
@@ -2971,8 +3007,11 @@ msgid ""
"--remote-wait-silent <files> Same, don't complain if there is no server"
msgstr "--remote-wait-silent <files> , T[oĂxo͂Ȃ"
-msgid "--remote-tab <files> As --remote but open tab page for each file"
-msgstr "--remote-tab <files> --remoteŃt@C1‚ɂ‚1‚̃^uy[WJ"
+msgid ""
+"--remote-tab[-wait][-silent] <files> As --remote but use tab page per file"
+msgstr ""
+"--remote-tab[-wait][-silent] <files> --remoteŃt@C1‚ɂ‚1‚̃^u"
+"y[WJ"
msgid "--remote-send <keys>\tSend <keys> to a Vim server and exit"
msgstr "--remote-send <keys>\tVimT[o <keys> 𑗐MďI"
@@ -3097,6 +3136,9 @@ msgstr "--socketid <xid>\tقȂGTK widgetVimJ"
msgid "-P <parent title>\tOpen Vim inside parent application"
msgstr "-P <ẽ^Cg>\tVimeAvP[V̒ŋN"
+msgid "--windowid <HWND>\tOpen Vim inside another win32 widget"
+msgstr "--windowid <HWND>\tقȂWin32 widget̓VimJ"
+
msgid "No display"
msgstr "fBXvC‚܂"
@@ -3149,6 +3191,7 @@ msgstr ""
"\n"
"ύX s eLXg"
+#, c-format
msgid ""
"\n"
"# File marks:\n"
@@ -3157,6 +3200,7 @@ msgstr ""
"# t@C}[N:\n"
#. Write the jumplist with -'
+#, c-format
msgid ""
"\n"
"# Jumplist (newest first):\n"
@@ -3164,6 +3208,7 @@ msgstr ""
"\n"
"# WvXg (V̂):\n"
+#, c-format
msgid ""
"\n"
"# History of marks within files (newest to oldest):\n"
@@ -3289,6 +3334,9 @@ msgstr ""
",\n"
"̓t@CĂ܂."
+msgid " has been damaged (page size is smaller than minimum value).\n"
+msgstr " ͑Ă܂ (y[WTCYŏlĂ܂).\n"
+
#, c-format
msgid "Using swap file \"%s\""
msgstr "Xbvt@C \"%s\" gp"
@@ -3629,6 +3677,10 @@ msgstr "E328: j[͑̃[hɂ܂"
msgid "E329: No menu \"%s\""
msgstr "E329: \"%s\" Ƃj[͂܂"
+#. Only a mnemonic or accelerator is not valid.
+msgid "E792: Empty menu name"
+msgstr "E792: j[ł"
+
msgid "E330: Menu path must not lead to a sub-menu"
msgstr "E330: j[pX̓Tuj[𐶂ׂł͂܂"
@@ -3680,7 +3732,7 @@ msgid "E354: Invalid register name: '%s'"
msgstr "E354: ȃWX^: '%s'"
msgid "Messages maintainer: Bram Moolenaar <Bram@vim.org>"
-msgstr "{ꃁbZ[W|/ďC: Y <koron@tka.att.ne.jp>"
+msgstr "{ꃁbZ[W|/ďC: Y <koron.kaoriya@gmail.com>"
msgid "Interrupt: "
msgstr ": "
@@ -3776,6 +3828,7 @@ msgstr "Vim: t@Cۑ...\n"
msgid "Vim: Finished.\n"
msgstr "Vim: I܂.\n"
+#, c-format
msgid "ERROR: "
msgstr "G[: "
@@ -3839,8 +3892,8 @@ msgid ""
"E343: Invalid path: '**[number]' must be at the end of the path or be "
"followed by '%s'."
msgstr ""
-"E343: ȃpXł: '**[l]' path̍Ōォ '%s' "
-"ĂȂƂ܂."
+"E343: ȃpXł: '**[l]' path̍Ōォ '%s' ĂȂƂ܂"
+"."
#, c-format
msgid "E344: Can't find directory \"%s\" in cdpath"
@@ -3984,6 +4037,7 @@ msgstr ""
msgid "Illegal register name"
msgstr "sȃWX^"
+#, c-format
msgid ""
"\n"
"# Registers:\n"
@@ -4140,6 +4194,13 @@ msgstr "E594: Œ %d ̃JKvł"
msgid "E355: Unknown option: %s"
msgstr "E355: m̃IvVł: %s"
+#. There's another character after zeros or the string
+#. * is empty. In both cases, we are trying to set a
+#. * num option using a string.
+#, c-format
+msgid "E521: Number required: &%s = '%s'"
+msgstr "E521: Kvł: &%s = '%s'"
+
msgid ""
"\n"
"--- Terminal codes ---"
@@ -4270,6 +4331,7 @@ msgstr "Vim: 2d̃VOî, I܂\n"
msgid "Vim: Caught deadly signal %s\n"
msgstr "Vim: vIVOi %s m܂\n"
+#, c-format
msgid "Vim: Caught deadly signal\n"
msgstr "Vim: vIVOim܂\n"
@@ -4292,6 +4354,20 @@ msgstr "X display open ^CAEg܂"
msgid ""
"\n"
+"Could not get security context for "
+msgstr ""
+"\n"
+"ZLeBReLXg擾ł܂ "
+
+msgid ""
+"\n"
+"Could not set security context for "
+msgstr ""
+"\n"
+"ZLeBReLXgݒł܂ "
+
+msgid ""
+"\n"
"Cannot execute shell "
msgstr ""
"\n"
@@ -4399,21 +4475,26 @@ msgstr ""
msgid "Vim Warning"
msgstr "Vim̌x"
+#, c-format
msgid "E372: Too many %%%c in format string"
msgstr "E372: tH[}bg %%%c ߂܂"
+#, c-format
msgid "E373: Unexpected %%%c in format string"
msgstr "E373: tH[}bgɗ\\ %%%c ܂"
msgid "E374: Missing ] in format string"
msgstr "E374: tH[}bg ] ܂"
+#, c-format
msgid "E375: Unsupported %%%c in format string"
msgstr "E375: tH[}bgł %%%c ̓T|[g܂"
+#, c-format
msgid "E376: Invalid %%%c in format string prefix"
msgstr "E376: tH[}bg̑Ouɖ %%%c ܂"
+#, c-format
msgid "E377: Invalid %%%c in format string"
msgstr "E377: tH[}bgɖ %%%c ܂"
@@ -4459,6 +4540,10 @@ msgstr "E681: obt@͓ǂݍ܂܂ł"
msgid "E777: String or List expected"
msgstr "E777: 񂩃XgKvł"
+#, c-format
+msgid "E369: invalid item in %s%%[]"
+msgstr "E369: ȍڂł: %s%%[]"
+
msgid "E339: Pattern too long"
msgstr "E339: p^[߂܂"
@@ -4472,6 +4557,7 @@ msgstr "E51: %s( ߂܂"
msgid "E52: Unmatched \\z("
msgstr "E52: \\z( ނ荇Ă܂"
+#, c-format
msgid "E53: Unmatched %s%%("
msgstr "E53: %s%%( ނ荇Ă܂"
@@ -4524,17 +4610,21 @@ msgid "E68: Invalid character after \\z"
msgstr "E68: \\z ̌ɕsȕ܂"
#
+#, c-format
msgid "E69: Missing ] after %s%%["
msgstr "E69: %s%%[ ̌ ] ܂"
+#, c-format
msgid "E70: Empty %s%%[]"
msgstr "E70: %s%%[] ł"
#
+#, c-format
msgid "E678: Invalid character after %s%%[dxouU]"
msgstr "E678: %s%%[dxouU] ̌ɕsȕ܂"
#
+#, c-format
msgid "E71: Invalid character after %s%%"
msgstr "E71: %s%% ̌ɕsȕ܂"
@@ -4752,16 +4842,16 @@ msgid ""
"Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line "
"%d"
msgstr ""
-"%s %d sڂ PFX ڂ̌ COMPOUNDFORBIDFLAG "
-"̒`͌ʂ𐶂邱Ƃ܂"
+"%s %d sڂ PFX ڂ̌ COMPOUNDFORBIDFLAG ̒`͌ʂ𐶂"
+"Ƃ܂"
#, c-format
msgid ""
"Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line "
"%d"
msgstr ""
-"%s %d sڂ PFX ڂ̌ COMPOUNDPERMITFLAG "
-"̒`͌ʂ𐶂邱Ƃ܂"
+"%s %d sڂ PFX ڂ̌ COMPOUNDPERMITFLAG ̒`͌ʂ𐶂"
+"Ƃ܂"
#, c-format
msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s"
@@ -4920,6 +5010,7 @@ msgstr "%s %d s Fs\\ȃtOł: %s"
msgid "Ignored %d words with non-ASCII characters"
msgstr "ASCII܂ %d ‚̒P𖳎܂"
+#, c-format
msgid "Compressed %d of %d nodes; %d (%d%%) remaining"
msgstr "m[h %d (S %d ’) k܂; c %d (%d%%)"
@@ -4991,6 +5082,7 @@ msgstr "cOł, C͂܂"
msgid "Sorry, only %ld suggestions"
msgstr "cOł, C %ld ‚܂"
+#. for when 'cmdheight' > 1
#. avoid more prompt
#, c-format
msgid "Change \"%.*s\" to:"
@@ -5396,6 +5488,9 @@ msgstr "ԍ ύX "
msgid "%ld seconds ago"
msgstr "%ld bo߂Ă܂"
+msgid "E790: undojoin is not allowed after undo"
+msgstr "E790: undo ̒ undojoin ͂ł܂"
+
msgid "E439: undo list corrupt"
msgstr "E439: AhDXgĂ܂"
@@ -5412,6 +5507,13 @@ msgstr ""
msgid ""
"\n"
+"MS-Windows 64 bit GUI version"
+msgstr ""
+"\n"
+"MS-Windows 64 rbg GUI "
+
+msgid ""
+"\n"
"MS-Windows 32 bit GUI version"
msgstr ""
"\n"
@@ -5727,6 +5829,19 @@ msgstr "E446: J[\\̉Ƀt@C܂"
msgid "E447: Can't find file \"%s\" in path"
msgstr "E447: pathɂ \"%s\" Ƃt@C܂"
+#, c-format
+msgid "E370: Could not load library %s"
+msgstr "E370: Cu %s [hł܂ł"
+
+msgid "Sorry, this command is disabled: the Perl library could not be loaded."
+msgstr ""
+"̃R}h͖ł, ߂Ȃ: PerlCu[hł܂ł."
+
+msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
+msgstr ""
+"E299: Th{bNXł Safe W[gpȂPerlXNvg͋ւ"
+"Ă܂"
+
msgid "Edit with &multiple Vims"
msgstr "VimŕҏW (&M)"
@@ -5739,6 +5854,7 @@ msgstr "Vimō"
msgid "Edit with &Vim"
msgstr "VimŕҏW (&V)"
+#. Now concatenate
msgid "Edit with existing Vim - "
msgstr "VimŕҏW - "
@@ -5994,8 +6110,8 @@ msgid "E46: Cannot change read-only variable \"%s\""
msgstr "E46: ǎpϐ \"%s\" ɂ͒lݒł܂"
#, c-format
-msgid "E46: Cannot set variable in the sandbox: \"%s\""
-msgstr "E46: Th{bNXł͕ϐ \"%s\" ɒlݒł܂"
+msgid "E794: Cannot set variable in the sandbox: \"%s\""
+msgstr "E794: Th{bNXł͕ϐ \"%s\" ɒlݒł܂"
msgid "E47: Error while reading errorfile"
msgstr "E47: G[t@C̓ǍɃG[܂"
@@ -6079,7 +6195,6 @@ msgstr "E363: p^[ 'maxmempattern' ȏ̃gp܂"
msgid "E749: empty buffer"
msgstr "E749: obt@ł"
-#
msgid "E682: Invalid search pattern or delimiter"
msgstr "E682: p^[؂Lsł"
diff --git a/src/po/no.po b/src/po/no.po
index 9853eb52..d01dc937 100644
--- a/src/po/no.po
+++ b/src/po/no.po
@@ -1249,7 +1249,7 @@ msgstr "Ingen swapfil"
msgid "Append File"
msgstr "Legg til fil"
-msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
+msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
msgstr ""
"E747: Kan ikke skifte katalog, bufferen er forandret (legg til ! for "
"overstyre)"
@@ -1492,8 +1492,8 @@ msgstr "er en katalog"
msgid "is not a file"
msgstr "er ikke en fil"
-msgid "is a device (disabled with 'opendevice' option"
-msgstr "er en enhet (frakoblet med 'opendevice'-valg"
+msgid "is a device (disabled with 'opendevice' option)"
+msgstr "er en enhet (frakoblet med 'opendevice'-valg)"
msgid "[New File]"
msgstr "[Ny fil]"
@@ -4742,7 +4742,7 @@ msgid "E759: Format error in spell file"
msgstr "E759: Formateringsfeil i stavefil"
msgid "E758: Truncated spell file"
-msgstr "E237: Valg av skriver feilet"
+msgstr "E758: Valg av skriver feilet"
#, c-format
msgid "Trailing text in %s line %d: %s"
@@ -5034,7 +5034,7 @@ msgstr "Ferdig!"
#, c-format
msgid "E765: 'spellfile' does not have %ld entries"
-msgstr "E764: 'spellfile' har ikke %ld poster"
+msgstr "E765: 'spellfile' har ikke %ld poster"
#, c-format
msgid "Word removed from %s"
@@ -6168,7 +6168,7 @@ msgid "E749: empty buffer"
msgstr "E749: Tom buffer"
msgid "E682: Invalid search pattern or delimiter"
-msgstr "E683: Ugyldig skestreng eller skilletegn"
+msgstr "E682: Ugyldig skestreng eller skilletegn"
msgid "E139: File is loaded in another buffer"
msgstr "E139: Filen er lastet i en annen buffer"
diff --git a/src/po/zh_CN.cp936.po b/src/po/zh_CN.cp936.po
index 591839f4..96b25276 100644
--- a/src/po/zh_CN.cp936.po
+++ b/src/po/zh_CN.cp936.po
@@ -1207,7 +1207,7 @@ msgstr "޽ļ"
msgid "Append File"
msgstr "׷ļ"
-msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
+msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
msgstr "E747: ܸıĿ¼޸ ( ! ǿִ)"
msgid "E186: No previous directory"
diff --git a/src/popupmnu.c b/src/popupmnu.c
index 1d747a6b..fcc7d851 100644
--- a/src/popupmnu.c
+++ b/src/popupmnu.c
@@ -56,7 +56,7 @@ pum_display(array, size, selected)
int i;
int top_clear;
int row;
- int height;
+ int context_lines;
int col;
int above_row = cmdline_row;
int redo_count = 0;
@@ -73,8 +73,7 @@ redo:
validate_cursor_col();
pum_array = NULL;
- row = curwin->w_cline_row + W_WINROW(curwin);
- height = curwin->w_cline_height;
+ row = curwin->w_wrow + W_WINROW(curwin);
if (firstwin->w_p_pvw)
top_clear = firstwin->w_height;
@@ -99,19 +98,26 @@ redo:
/* Put the pum below "row" if possible. If there are few lines decide on
* where there is more room. */
- if (row >= above_row - pum_height
- && row > (above_row - top_clear - height) / 2)
+ if (row + 2 >= above_row - pum_height
+ && row > (above_row - top_clear) / 2)
{
/* pum above "row" */
- if (row >= size)
+
+ /* Leave two lines of context if possible */
+ if (curwin->w_wrow - curwin->w_cline_row >= 2)
+ context_lines = 2;
+ else
+ context_lines = curwin->w_wrow - curwin->w_cline_row;
+
+ if (row >= size + context_lines)
{
- pum_row = row - size;
+ pum_row = row - size - context_lines;
pum_height = size;
}
else
{
pum_row = 0;
- pum_height = row;
+ pum_height = row - context_lines;
}
if (p_ph > 0 && pum_height > p_ph)
{
@@ -122,7 +128,15 @@ redo:
else
{
/* pum below "row" */
- pum_row = row + height;
+
+ /* Leave two lines of context if possible */
+ if (curwin->w_cline_row + curwin->w_cline_height - curwin->w_wrow >= 3)
+ context_lines = 3;
+ else
+ context_lines = curwin->w_cline_row
+ + curwin->w_cline_height - curwin->w_wrow;
+
+ pum_row = row + context_lines;
if (size > above_row - pum_row)
pum_height = above_row - pum_row;
else
diff --git a/src/proto/os_unix.pro b/src/proto/os_unix.pro
index 735565a2..36193bb0 100644
--- a/src/proto/os_unix.pro
+++ b/src/proto/os_unix.pro
@@ -19,6 +19,7 @@ int mch_can_restore_icon __ARGS((void));
void mch_settitle __ARGS((char_u *title, char_u *icon));
void mch_restore_title __ARGS((int which));
int vim_is_xterm __ARGS((char_u *name));
+int use_xterm_like_mouse __ARGS((char_u *name));
int use_xterm_mouse __ARGS((void));
int vim_is_iris __ARGS((char_u *name));
int vim_is_vt300 __ARGS((char_u *name));
diff --git a/src/structs.h b/src/structs.h
index d6a8f72e..31c3dfc2 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1005,6 +1005,7 @@ typedef long varnumber_T;
#else
typedef int varnumber_T;
#endif
+typedef double float_T;
typedef struct listvar_S list_T;
typedef struct dictvar_S dict_T;
@@ -1019,6 +1020,9 @@ typedef struct
union
{
varnumber_T v_number; /* number value */
+#ifdef FEAT_FLOAT
+ float_T v_float; /* floating number value */
+#endif
char_u *v_string; /* string value (can be NULL!) */
list_T *v_list; /* list value (can be NULL!) */
dict_T *v_dict; /* dict value (can be NULL!) */
@@ -1032,6 +1036,7 @@ typedef struct
#define VAR_FUNC 3 /* "v_string" is function name */
#define VAR_LIST 4 /* "v_list" is used */
#define VAR_DICT 5 /* "v_dict" is used */
+#define VAR_FLOAT 6 /* "v_float" is used */
/* Values for "v_lock". */
#define VAR_LOCKED 1 /* locked with lock(), can use unlock() */
diff --git a/src/vim.rc b/src/vim.rc
index affdb9a5..e9ecd64e 100644
--- a/src/vim.rc
+++ b/src/vim.rc
@@ -52,7 +52,7 @@ CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "gvim.exe.mnf"
// Type Library
//
#ifdef FEAT_OLE
- 1 TYPELIB "VIM.TLB"
+ 1 TYPELIB "vim.tlb"
#endif
//
@@ -91,7 +91,7 @@ BEGIN
VALUE "FileDescription", "Vi Improved - A Text Editor\0"
VALUE "FileVersion", VIM_VERSION_MAJOR_STR ", " VIM_VERSION_MINOR_STR ", " VIM_VERSION_BUILD_STR ", " VIM_VERSION_PATCHLEVEL_STR "\0"
VALUE "InternalName", "VIM\0"
- VALUE "LegalCopyright", "Copyright \251 1996-2005\0"
+ VALUE "LegalCopyright", "Copyright \251 1996-2008\0"
VALUE "LegalTrademarks", "Vim\0"
VALUE "OriginalFilename", "VIM.EXE\0"
VALUE "ProductName", "Vim\0"