Compare commits

...

148 Commits

Author SHA1 Message Date
Bram Moolenaar
a03dbed9e9 updated for version 7.3.1007
Problem:    Can't build on Minix 3.2.1.
Solution:   Add a condition to an #ifdef. (Gautam Tirumala)
2013-05-23 22:27:03 +02:00
Bram Moolenaar
307d10a2fb updated for version 7.3.1006
Problem:    NFA engine not used for "\_[0-9]".
Solution:   Enable this, fixed in patch 1005.
2013-05-23 22:25:15 +02:00
Bram Moolenaar
35b2386a8e updated for version 7.3.1005
Problem:    Get stuck on regexp "\n*" and on "%s/^\n\+/\r".
Solution:   Fix handling of matching a line break. (idea by Hirohito Higashi)
2013-05-22 23:00:40 +02:00
Bram Moolenaar
c96ebe75e5 updated for version 7.3.1004
Problem:    No error when option could not be set.
Solution:   Report an error. (ZyX)
2013-05-21 22:38:18 +02:00
Bram Moolenaar
2a0f3d3fb2 updated for version 7.3.1003
Problem:    Python interface does not compile with Python 2.2
Solution:   Fix thread issues and True/False. (ZyX)
2013-05-21 22:23:56 +02:00
Bram Moolenaar
0b9aecc3a5 updated for version 7.3.1002
Problem:    Valgrind errors for Python interface.
Solution:   Fix memory leaks when running tests. (ZyX)
2013-05-21 22:13:41 +02:00
Bram Moolenaar
673af4d304 updated for version 7.3.1001
Problem:    Duplicate condition in if.
Solution:   Remove one condition.
2013-05-21 22:00:51 +02:00
Bram Moolenaar
2eec59e30b updated for version 7.3.1000
Problem:    Typo in char value causes out of bounds access.
Solution:   Fix character value.  (Klemens Baum)
2013-05-21 21:37:20 +02:00
Bram Moolenaar
f878bf0da2 updated for version 7.3.999
Problem:    New regexp engine sets curbuf temporarily.
Solution:   Use reg_buf instead, like the old engine.
2013-05-21 21:20:20 +02:00
Bram Moolenaar
e6ae6225b4 Updated runtime files, language files and translations. 2013-05-21 21:01:10 +02:00
Bram Moolenaar
774267bbb9 updated for version 7.3.998
Problem:    Python: garbage collection issues.
Solution:   Fix the GC issues: Use proper DESTRUCTOR_FINISH: avoids negative
            refcounts, use PyObject_GC_* for objects with tp_traverse and
            tp_clear, add RangeTraverse and RangeClear, use Py_XDECREF in some
            places. (ZyX)
2013-05-21 20:51:59 +02:00
Bram Moolenaar
a7b64ce74e updated for version 7.3.997
Problem:    Vim and Python exceptions are different.
Solution:   Make Vim exceptions be Python exceptions. (ZyX)
2013-05-21 20:40:40 +02:00
Bram Moolenaar
cac867ad18 updated for version 7.3.996
Problem:    Python: Can't check types of what is returned by bindeval().
Solution:   Add vim.List, vim.Dictionary and vim.Function types. (ZyX)
2013-05-21 19:50:34 +02:00
Bram Moolenaar
1dc28783fa updated for version 7.3.995
Problem:    Python: Module initialization is duplicated.
Solution:   Move to shared file. (ZyX)
2013-05-21 19:11:01 +02:00
Bram Moolenaar
182dc4f2ab updated for version 7.3.994
Problem:    Python: using magic constants.
Solution:   Use descriptive values for ml_flags. (ZyX)
2013-05-21 19:01:55 +02:00
Bram Moolenaar
e64faa6645 updated for version 7.3.993
Problem:    Python: Later patch does things slightly differently.
Solution:   Adjusted argument type changes. (ZyX)
2013-05-21 18:47:21 +02:00
Bram Moolenaar
d6e391862c updated for version 7.3.992
Problem:    Python: Too many type casts.
Solution:   Change argument types. (ZyX)
2013-05-21 18:30:34 +02:00
Bram Moolenaar
b52f4c02e6 updated for version 7.3.991
Problem:    More can be shared by Python 2 and 3.
Solution:   Move more stuff to if_py_both. (ZyX)
2013-05-21 18:19:38 +02:00
Bram Moolenaar
b09d983c78 updated for version 7.3.990
Problem:    Memory leak in new regexp engine.
Solution:   Jump to end of function to free memory. (Dominique Pelle)
2013-05-21 16:28:11 +02:00
Bram Moolenaar
12e4014092 updated for version 7.3.989
Problem:    New regexp engine compares negative numbers to character.
Solution:   Add missing case statements.
2013-05-21 15:33:41 +02:00
Bram Moolenaar
66e83d7db0 updated for version 7.3.988
Problem:    New regexp engine is slow.
Solution:   Break out of the loop when the state list is empty.
2013-05-21 14:03:00 +02:00
Bram Moolenaar
d2470e9fbe updated for version 7.3.987
Problem:    No easy to run an individual test.  Tests 64 fails when
            'encoding' is not utf-8.
Solution:   Add individual test targets to the Makefile.  Move some lines from
            test 64 to 95.
2013-05-21 13:30:21 +02:00
Bram Moolenaar
d7a06b1d71 updated for version 7.3.986
Problem:    Test 95 doesn't pass when 'encoding' isn't utf-8. (Yasuhiro
            Matsumoto)
Solution:   Force 'encoding' to be utf-8.
2013-05-21 13:05:15 +02:00
Bram Moolenaar
8dd7901a66 updated for version 7.3.985
Problem:    GTK vim not started as gvim doesn't set WM_CLASS property to a
            useful value.
Solution:   Call g_set_prgname() on startup. (James McCoy)
2013-05-21 12:52:04 +02:00
Bram Moolenaar
9bad29decf updated for version 7.3.984
Problem:    A Visual mapping that uses CTRL-G works differently when started
            from Insert mode. (Ein Brown)
Solution:   Reset old_mapped_len when handling typed text in Select mode.
2013-05-21 12:46:02 +02:00
Bram Moolenaar
080504921d updated for version 7.3.983
Problem:    Uneccessary temp variable.
Solution:   Remove the variable.
2013-05-21 12:43:56 +02:00
Bram Moolenaar
0fabe3fdbe updated for version 7.3.982
Problem:    In the new regexp engine \p does not work on multi-byte
            characters.
Solution:   Don't point to an integer but the characters.
2013-05-21 12:34:17 +02:00
Bram Moolenaar
09ea9fcf3f updated for version 7.3.981
Problem:    In the old regexp engine \i, \I, \f and \F don't work on
            multi-byte characters.
Solution:   Dereference pointer properly.
2013-05-21 00:03:02 +02:00
Bram Moolenaar
745fc029ba updated for version 7.3.980
Problem:    Regexp logs may contain garbage. Character classes don't work
            correctly for multi-byte characters.
Solution:   Check for end of post list.  Only use "is" functions for
            characters up to 255. (Ken Takata)
2013-05-20 22:20:02 +02:00
Bram Moolenaar
e3c7b86aab updated for version 7.3.979
Problem:    Complex NFA regexp doesn't work.
Solution:   Set actual state stack end instead of using an arbitrary number.
            (Yasuhiro Matsumoto)
2013-05-20 21:57:03 +02:00
Bram Moolenaar
7fcff1f781 updated for version 7.3.978
Problem:    Regexp debug logs don't have a good name.
Solution:   Use clear names and make it possible to write logs for the old and
            new engines separately. (Taro Muraoka)
2013-05-20 21:49:13 +02:00
Bram Moolenaar
ca12d7c004 updated for version 7.3.977
Problem:    Compiler warnings on 64 bit Windows.
Solution:   Add type casts. (Mike Williams)  Also fix some white space and
            uncomment what was commented-out for testing.
2013-05-20 21:26:33 +02:00
Bram Moolenaar
053bb60f44 updated for version 7.3.976
Problem:    Can't build on HP-UX.
Solution:   Remove modern initialization. (John Marriott)
2013-05-20 13:55:21 +02:00
Bram Moolenaar
bc0ea8f75e updated for version 7.3.975
Problem:    Crash in regexp parsing.
Solution:   Correctly compute the end of allocated memory.
2013-05-20 13:44:29 +02:00
Bram Moolenaar
10f3a79e89 updated for version 7.3.974
Problem:    Can't build with ruby 1.8.5.
Solution:   Only use ruby_init_stack() when RUBY_INIT_STACK is defined.
            (Yukihiro Nakadaira)
2013-05-20 12:52:29 +02:00
Bram Moolenaar
ba40447ab1 updated for version 7.3.973
Problem:    Compiler warnings. Crash on startup. (Tony Mechelynck)
Solution:   Change EMSG2 to EMSGN. Make array one character longer.
2013-05-19 22:31:18 +02:00
Bram Moolenaar
097c992c46 updated for version 7.3.972
Problem:    Cursor not restored after InsertEnter autocommand if it moved to
            another line.
Solution:   Also restore if the saved line number is still valid.  Allow
            setting v:char to skip restoring.
2013-05-19 21:15:15 +02:00
Bram Moolenaar
884f6e44e0 updated for version 7.3.971
Problem:    No support for VS2012 static code analysis.
Solution:   Add the ANALYZE option. (Mike Williams)
2013-05-19 21:03:54 +02:00
Bram Moolenaar
fbc0d2ea1e updated for version 7.3.970
Problem:    Syntax highlighting can be slow.
Solution:   Include the NFA regexp engine.  Add the 'regexpengine' option to
            select which one is used. (various authors, including Ken Takata,
            Andrei Aiordachioaie, Russ Cox, Xiaozhou Liua, Ian Young)
2013-05-19 19:40:29 +02:00
Bram Moolenaar
6fa41fb374 updated for version 7.3.969
Problem:    Can't built with Python 3 and without Python 2.
Solution:   Adjust #ifdef. (Xavier de Gaye)
2013-05-18 20:55:35 +02:00
Bram Moolenaar
7533fddd09 updated for version 7.3.968
Problem:    Multi-byte support is only available when compiled with "big"
            features.
Solution:   Include multi-byte by default, with "normal" features.
2013-05-18 20:45:59 +02:00
Bram Moolenaar
9e74e30b5f updated for version 7.3.967
Problem:    Build fails on Mac OSX. (Greg Novack)
Solution:   Undefine clear().
2013-05-17 21:20:17 +02:00
Bram Moolenaar
ad3b366c82 Update runtime files. 2013-05-17 18:14:19 +02:00
Bram Moolenaar
d620aa9be4 updated for version 7.3.966
Problem:    There is ":py3do" but no ":pydo".
Solution:   Add the ":pydo" command. (Lilydjwg)
2013-05-17 16:40:06 +02:00
Bram Moolenaar
cfef5ff23e updated for version 7.3.965
Problem:    Python garbage collection not working properly.
Solution:   Add support for garbage collection. (ZyX)
2013-05-17 16:24:32 +02:00
Bram Moolenaar
cabf80ff2f updated for version 7.3.964
Problem:    Python: not so easy to access tab pages.
Solution:   Add window.tabpage, make window.number work with non-current tab
            pages. (ZyX)
2013-05-17 16:18:33 +02:00
Bram Moolenaar
105bc355a6 updated for version 7.3.963
Problem:    Setting curbuf without curwin causes trouble.
Solution:   Add switch_buffer() and restore_buffer().  Block autocommands to
            avoid trouble.
2013-05-17 16:03:57 +02:00
Bram Moolenaar
55b8ad3dab updated for version 7.3.962
Problem:    Python tests are not portable.
Solution:   Use shiftwidth instead of iminsert. (ZyX)
2013-05-17 13:38:04 +02:00
Bram Moolenaar
c24c1acd82 updated for version 7.3.961
Problem:    Tests 86 and 87 fail when using another language than English.
Solution:   Set the language to C in the test. (Dominique Pelle)
2013-05-16 20:47:56 +02:00
Bram Moolenaar
07729b25bf updated for version 7.3.960
Problem:    Compiler warning for unused variable.
Solution:   Put declaration in #ifdef.
2013-05-15 23:13:10 +02:00
Bram Moolenaar
54e8f00581 updated for version 7.3.959
Problem:    Missing error number.
Solution:   Assign an error number.
2013-05-15 19:44:39 +02:00
Bram Moolenaar
2cd7362e30 updated for version 7.3.958
Problem:    Python: Iteration destructor not set.
Solution:   Put IterDestructor to use. (ZyX)
2013-05-15 19:07:47 +02:00
Bram Moolenaar
3dab2806fe updated for version 7.3.957
Problem:    Python does not have a "do" command like Perl or Lua.
Solution:   Add the ":py3do" command. (Lilydjwg)
2013-05-15 18:28:13 +02:00
Bram Moolenaar
71700b8903 updated for version 7.3.956
Problem:    Python vim.bindeval() causes SIGABRT.
Solution:   Make pygilstate a local variable. (Yukihiro Nakadaira)
2013-05-15 17:49:05 +02:00
Bram Moolenaar
a4720019cf updated for version 7.3.955
Problem:    Python: Not enough tests.
Solution:   Add tests for vim.{current,window*,tabpage*}. (ZyX)
2013-05-15 16:27:37 +02:00
Bram Moolenaar
b983f75d22 updated for version 7.3.954
Problem:    No check if PyObject_IsTrue fails.
Solution:   Add a check for -1 value. (ZyX)
2013-05-15 16:11:50 +02:00
Bram Moolenaar
d5f729cada updated for version 7.3.953
Problem:    Python: string exceptions are deprecated.
Solution:   Make vim.error an Exception subclass. (ZyX)
2013-05-15 16:04:40 +02:00
Bram Moolenaar
e761459eb6 updated for version 7.3.952
Problem:    Python: It's not easy to change window/buffer/tabpage.
Solution:   Add ability to assign to vim.current.{tabpage,buffer,window}.
            (ZyX)
2013-05-15 15:51:08 +02:00
Bram Moolenaar
8661b17843 updated for version 7.3.951
Problem:    Python exceptions have problems.
Solution:   Change some IndexErrors to TypeErrors. Make “line number out of
            range” an IndexError.  Make “unable to get option value” a
            RuntimeError. Make all PyErr_SetString messages start with
            lowercase letter and use _(). (ZyX)
2013-05-15 15:44:28 +02:00
Bram Moolenaar
4d188da22b updated for version 7.3.950
Problem:    Python: Stack trace printer can't handle messages.
Solution:   Make KeyErrors use PyErr_SetObject. (ZyX)
2013-05-15 15:35:09 +02:00
Bram Moolenaar
5e538ecd5e updated for version 7.3.949
Problem:    Python: no easy access to tabpages.
Solution:   Add vim.tabpages and vim.current.tabpage. (ZyX)
2013-05-15 15:12:29 +02:00
Bram Moolenaar
03db85b398 updated for version 7.3.948
Problem:    Cannot build with Python 2.2
Solution:   Make Python interface work with Python 2.2
            Make 2.2 the first supported version. (ZyX)
2013-05-15 14:51:35 +02:00
Bram Moolenaar
b6c589a529 updated for version 7.3.947
Problem:    Python: No iterator for vim.list and vim.bufferlist.
Solution:   Add the iterators. Also fix name of FunctionType. Add tests for
            vim.buffers.  (ZyX)
2013-05-15 14:39:52 +02:00
Bram Moolenaar
46a7561f3a updated for version 7.3.946
Problem:    Sometimes get stuck in waiting for cursor position report,
            resulting in keys starting with <Esc>[ not working.
Solution:   Only wait for more characters after <Esc>[ if followed by '?', '>'
            or a digit.
2013-05-15 14:22:41 +02:00
Bram Moolenaar
dfa38d4e45 updated for version 7.3.945
Problem:    Python: List of buffers is not very useful.
Solution:   Make vim.buffers a map. No iterator yet. (ZyX)
2013-05-15 13:38:47 +02:00
Bram Moolenaar
29607acff6 updated for version 7.3.944
Problem:    External program receives the termrespone.
Solution:   Insert a delay and discard input. (Hayaki Saito)
2013-05-13 20:26:53 +02:00
Bram Moolenaar
bd80f35bc5 updated for version 7.3.943
Problem:    Python: Negative indices were failing.
Solution:   Fix negative indices. Add tests. (ZyX)
2013-05-12 21:16:23 +02:00
Bram Moolenaar
8f1723de47 updated for version 7.3.942
Problem:    Python: SEGV in Buffer functions.
Solution:   Call CheckBuffer() at the right time. (ZyX)
2013-05-12 20:36:14 +02:00
Bram Moolenaar
3d0c52db9c updated for version 7.3.941
Problem:    Stuff in if_py_both.h is ordered badly.
Solution:   Reorder by type. (ZyX)
2013-05-12 19:45:35 +02:00
Bram Moolenaar
4e5dfb5700 updated for version 7.3.940
Problem:    Python: Can't get position of window.
Solution:   Add window.row and window.col. (ZyX)
2013-05-12 19:30:31 +02:00
Bram Moolenaar
99add41656 updated for version 7.3.939
Problem:    Using Py_BuildValue is inefficient sometimes.
Solution:   Use PyLong_FromLong(). (ZyX)
2013-05-12 19:09:51 +02:00
Bram Moolenaar
6d21645f46 updated for version 7.3.938
Problem:    Python: not easy to get to window number.
Solution:   Add vim.window.number. (ZyX)
2013-05-12 19:00:41 +02:00
Bram Moolenaar
971db46799 updated for version 7.3.937
Problem:    More can be shared between Python 2 and 3.
Solution:   Move code to if_py_both.h. (ZyX)
2013-05-12 18:44:48 +02:00
Bram Moolenaar
3b9abb6cc2 updated for version 7.3.936
Problem:    Ruby 1.8: Missing piece for static linking on 64 bit systems.
Solution:   Define ruby_init_stack() (Hiroshi Shirosaki)
            Also fix preprocessor indents.
2013-05-12 14:11:17 +02:00
Bram Moolenaar
76a86063ca updated for version 7.3.935
Problem:    Init stack works differently on 64 bit systems.
Solution:   Handle 64 bit systems and also static library. (Yukihiro
            Nakadaira)
2013-05-11 17:45:48 +02:00
Bram Moolenaar
82e803b055 updated for version 7.3.934
Problem:    E381 and E380 make the user think nothing happened.
Solution:   Display the message indicating what error list is now active.
            (Christian Brabandt)
2013-05-11 15:50:33 +02:00
Bram Moolenaar
99685e6a7e updated for version 7.3.933
Problem:    Ruby on Mac crashes due to GC failure.
Solution:   Init the stack from main(). (Hiroshi Shirosaki)
2013-05-11 13:56:18 +02:00
Bram Moolenaar
6800186a03 updated for version 7.3.932
Problem:    Compiler warning for uninitialized variable. (Tony Mechelynck)
Solution:   Initialize the variable.
2013-05-11 13:45:05 +02:00
Bram Moolenaar
09bb33dde9 updated for version 7.3.931
Problem:    No completion for :xmap and :smap. (Yukihiro Nakadaira)
Solution:   Add the case statements. (Christian Brabandt)
2013-05-07 05:18:20 +02:00
Bram Moolenaar
290424868d updated for version 7.3.930
Problem:    MSVC 2012 update is not recognized.
Solution:   Update the version in the makefile. (Raymond Ko)
2013-05-07 05:11:17 +02:00
Bram Moolenaar
51ac8a27e5 updated for version 7.3.929
Problem:    Compiler warning for unused variable. Not freeing unused string.
Solution:   Remove the variable. Clear the options.
2013-05-06 06:45:47 +02:00
Bram Moolenaar
161fb5e302 updated for version 7.3.928
Problem:    Can't build with strict C compiler.
Solution:   Move declaration to start of block. (Taro Muraoka)
2013-05-06 06:26:15 +02:00
Bram Moolenaar
531da5955e Updated runtime files. 2013-05-06 05:58:55 +02:00
Bram Moolenaar
229f8dbf7a updated for version 7.3.927
Problem:    Missing combining characters when putting text in a register.
Solution:   Include combining characters. (David Bürgin)
2013-05-06 05:50:28 +02:00
Bram Moolenaar
49e649fc2e updated for version 7.3.926
Problem:    Autocommands are triggered by setwinvar() et al. Missing BufEnter
            on :tabclose. Duplicate WinEnter on :tabclose. Wrong order of
            events for :tablose and :tabnew.
Solution:   Fix these autocommand events. (Zyx)
2013-05-06 04:50:35 +02:00
Bram Moolenaar
84a05acc8c updated for version 7.3.925
Problem:    Typos in source files.
Solution:   Fix the typos. (Ken Takata)
2013-05-06 04:24:17 +02:00
Bram Moolenaar
84e0f6ca9a updated for version 7.3.924
Problem:    Python interface can't easily access options.
Solution:   Add vim.options, vim.window.options and vim.buffer.options. (ZyX)
2013-05-06 03:52:55 +02:00
Bram Moolenaar
d1864597a0 updated for version 7.3.923
Problem:    Check for X11 header files fails on Solaris.
Solution:   Only use -Werror for gcc. (Laurent Blume)
2013-05-04 04:40:15 +02:00
Bram Moolenaar
8fadd8b840 updated for version 7.3.922
Problem:    No test for what 7.3.918 fixes.
Solution:   Add a test. (David Bürgin)
2013-05-04 04:11:07 +02:00
Bram Moolenaar
29f49ee8d7 updated for version 7.3.921
Problem:    Trying to create a fontset handle when 'guifontset' is not set.
Solution:   Add curly braces around the code block. (Max Kirillov)
2013-05-04 03:42:34 +02:00
Bram Moolenaar
4e0d974645 updated for version 7.3.920
Problem:    Compiler warning for size_t to int.
Solution:   Add a type cast. (Mike Williams)
2013-05-04 03:40:27 +02:00
Bram Moolenaar
02938a970c updated for version 7.3.919
Problem:    An empty nl.po file does not work with an old msgfmt.
Solution:   Put a single # in the file. (Laurent Blume)
2013-05-04 03:37:10 +02:00
Bram Moolenaar
ff0341946e Updated runtime files. 2013-04-24 18:51:19 +02:00
Bram Moolenaar
7afea82f50 updated for version 7.3.918
Problem:    Repeating an Ex command after using a Visual motion does not work.
Solution:   Check for an Ex command being used. (David Bürgin)
2013-04-24 18:34:45 +02:00
Bram Moolenaar
811fe63f39 updated for version 7.3.917
Problem:    When a path ends in a backslash appending a comma has the wrong
            effect.
Solution:   Replace a trailing backslash with a slash. (Nazri Ramliy)
2013-04-24 17:34:20 +02:00
Bram Moolenaar
567199b68f updated for version 7.3.916
Problem:    Using freed memory when pasting with the mouse (Issue 130).
Solution:   Get the byte value early. (hint by Dominique Pelle)
2013-04-24 16:52:36 +02:00
Bram Moolenaar
e8d9530b0e updated for version 7.3.915
Problem:    When reading a file with encoding conversion fails at the end the
            next encoding in 'fencs' is not used.
Solution:   Retry with another encoding when possible. (Taro Muraoka)
2013-04-24 16:34:02 +02:00
Bram Moolenaar
2ab0713279 updated for version 7.3.914
Problem:    ~/.viminfo is messed up when running tests.
Solution:   Set the viminfo filename.
2013-04-24 15:47:15 +02:00
Bram Moolenaar
f687cf3f36 updated for version 7.3.913
Problem:    Still a crash when writing viminfo.
Solution:   Add checks for NULL pointers. (Ron Aaron)
2013-04-24 15:39:11 +02:00
Bram Moolenaar
ec38d6932c updated for version 7.3.912
Problem:    Typing a ":" command at the hit-enter dialog does not work if the
            "file changed" dialog happens next.
Solution:   Check for changed files before giving the hit-enter dialog.
2013-04-24 15:12:32 +02:00
Bram Moolenaar
230bb3f09d updated for version 7.3.911
Problem:    Python: Access to Vim variables is not so easy.
Solution:   Define vim.vars and vim.vvars. (ZyX)
2013-04-24 14:07:45 +02:00
Bram Moolenaar
335e0b6974 updated for version 7.3.910
Problem:    Python code in #ifdef branches with only minor differences.
Solution:   Merge the #ifdef branches. (ZyX)
2013-04-24 13:47:45 +02:00
Bram Moolenaar
4d1da49cfe updated for version 7.3.909
Problem:    Duplicate Python code.
Solution:   Move more items to if_py_both.h. (ZyX)  Also avoid compiler
            warnings for missing initializers.
2013-04-24 13:39:15 +02:00
Bram Moolenaar
7a26dd860a updated for version 7.3.908
Problem:    Possible crash when using a list in Python.
Solution:   Return early if the list is NULL. (ZyX)
2013-04-24 13:10:41 +02:00
Bram Moolenaar
af6abb9d93 updated for version 7.3.907
Problem:    Python uses IndexError when a dict key is not found.
Solution:   Use KeyError instead. (ZyX)
2013-04-24 13:04:26 +02:00
Bram Moolenaar
3f99152276 updated for version 7.3.906
Problem:    The "sleep .2" for running tests does not work on Solaris.
Solution:   Fall back to using "sleep 1". (Laurent Blume)
2013-04-24 12:56:19 +02:00
Bram Moolenaar
b70a473e24 updated for version 7.3.905
Problem:    Crash when writing viminfo. (Ron Aaron)
Solution:   Prevent freed history info to be used.
2013-04-15 22:22:57 +02:00
Bram Moolenaar
3bb28557e1 updated for version 7.3.904
Problem:    Using memory freed by the garbage collector.
Solution:   Mark items in aucmd_win as used.
2013-04-15 18:25:59 +02:00
Bram Moolenaar
a8565fecc6 updated for version 7.3.903
Problem:    Crash on exit writing viminfo. (Ron Aaron)
Solution:   Check for the history to be empty.
2013-04-15 16:14:22 +02:00
Bram Moolenaar
4c7e9db0d6 updated for version 7.3.902
Problem:    When deleting last buffer in other tab the tabline is not updated.
Solution:   Set the redraw_tabline flag. (Yukihiro Nakadaira)
2013-04-15 15:55:19 +02:00
Bram Moolenaar
687a29c5e2 updated for version 7.3.901
Problem:    Outdated comment, ugly condition.
Solution:   Update a few comments, break line.
2013-04-15 15:47:12 +02:00
Bram Moolenaar
f6dcbb245b updated for version 7.3.900
Problem:    Not obvious that some mouse features are mutual-exclusive.
Solution:   Add a comment.
2013-04-15 15:40:33 +02:00
Bram Moolenaar
f8de161090 updated for version 7.3.899
Problem:    #if indents are off.
Solution:   Fix the indents.
2013-04-15 15:32:25 +02:00
Bram Moolenaar
54c34fa6f5 updated for version 7.3.898
Problem:    Memory leak reported by valgrind in test 91.
Solution:   Only use default argument when needed.
2013-04-15 15:15:35 +02:00
Bram Moolenaar
768baacdc8 updated for version 7.3.897
Problem:    Configure doesn't always find the shared library.
Solution:   Change the configure script. (Ken Takata)
2013-04-15 14:44:57 +02:00
Bram Moolenaar
b376647bb1 updated for version 7.3.896
Problem:    Memory leaks in Lua interface.
Solution:   Fix the leaks, add tests. (Yukihiro Nakadaira)
2013-04-15 13:49:21 +02:00
Bram Moolenaar
332ac0621c updated for version 7.3.895
Problem:    Valgrind error in test 91. (Issue 128)
Solution:   Pass scope name to find_var_in_ht().
2013-04-15 13:06:21 +02:00
Bram Moolenaar
84b0493c34 updated for version 7.3.894
Problem:    Using wrong RUBY_VER causing Ruby build to break.
Solution:   Correct the RUBY_VER value. (Yongwei Wu)
2013-04-15 12:36:18 +02:00
Bram Moolenaar
429fa85392 updated for version 7.3.893
Problem:    Crash when using b:, w: or t: after closing the buffer, window or
            tabpage.
Solution:   Allocate the dictionary instead of having it part of the
            buffer/window/tabpage struct. (Yukihiro Nakadaira)
2013-04-15 12:27:36 +02:00
Bram Moolenaar
07219f911c updated for version 7.3.892
Problem:    Still mering problems for viminfo history.
Solution:   Do not merge lines when writing, don't write old viminfo lines.
2013-04-14 23:19:36 +02:00
Bram Moolenaar
6f852a557d updated for version 7.3.891
Problem:    Merging viminfo history doesn't work well.
Solution:   Don't stop when one type of history is empty. Don't merge history
            when writing viminfo.
2013-04-14 16:26:15 +02:00
Bram Moolenaar
7311c6932c updated for version 7.3.890
Problem:    Test 79 fails on Windows. (Michael Soyka)
Solution:   Add comment below line causing an error.
2013-04-14 16:21:41 +02:00
Bram Moolenaar
0bcdd6e709 updated for version 7.3.889
Problem:    Can't build with Ruby 2.0 on a 64 bit system.
Solution:   Define rb_fix2int and rb_num2int. (Kohei Suzuki)
2013-04-14 16:19:03 +02:00
Bram Moolenaar
0187ca0bdf Updated runtime files. 2013-04-12 15:09:51 +02:00
Bram Moolenaar
38ec50bea8 updated for version 7.3.888
Problem:    Filename completion with 'fileignorecase' does not work for
            multi-byte characters.
Solution:   Make 'fileignorecase' work properly. (Hirohito Higashi)
2013-04-12 14:42:39 +02:00
Bram Moolenaar
e3e6e573d1 updated for version 7.3.887
Problem:    No tests for Visual mode operators, what 7.3.879 fixes.
Solution:   Add a new test file. (David Bürgin)
2013-04-12 13:45:02 +02:00
Bram Moolenaar
8185111125 updated for version 7.3.886
Problem:    Can't build with multi-byte on Solaris 10.
Solution:   Add #ifdef X_HAVE_UTF8_STRING. (Laurent Blume)
2013-04-12 12:27:30 +02:00
Bram Moolenaar
644cf03b7e updated for version 7.3.885
Problem:    Double free for list and dict in Lua. (Shougo Matsu)
Solution:   Do not unref list and dict. (Yasuhiro Matsumoto)
2013-04-12 12:18:49 +02:00
Bram Moolenaar
126bdeeabe Move redif syntax file to the right directory.
Disable recognizing .rdf as a redif file.
2013-04-06 17:26:26 +02:00
Bram Moolenaar
2a66a07b29 updated for version 7.3.884
Problem:    Compiler warning for variable shadowing another. (John Little)
Solution:   Rename the variable. (Christian Brabandt)
2013-04-06 14:30:40 +02:00
Bram Moolenaar
25a6df90df updated for version 7.3.883
Problem:    Can't build with some combination of features.
Solution:   Adjust #ifdefs.
2013-04-06 14:29:00 +02:00
Bram Moolenaar
bf88493c09 Updated runtime files. 2013-04-05 22:26:15 +02:00
Bram Moolenaar
68879258d9 updated for version 7.3.882
Problem:    CursorHold may trigger after receiving the termresponse.
Solution:   Set the did_cursorhold flag. (Hayaki Saito)
2013-04-05 19:50:17 +02:00
Bram Moolenaar
24b11fb173 updated for version 7.3.881
Problem:    Python list does not work correctly.
Solution:   Fix it and add a test. (Yukihiro Nakadaira)
2013-04-05 19:32:36 +02:00
Bram Moolenaar
b3049f4a34 updated for version 7.3.880
Problem:    When writing viminfo, old history lines may replace lines written
            more recently by another Vim instance.
Solution:   Mark history entries that were read from viminfo and overwrite
            them when merging with the current viminfo.
2013-04-05 18:58:47 +02:00
Bram Moolenaar
d7fbfe107d updated for version 7.3.879
Problem:    When using an ex command in operator pending mode, using Esc to
            abort the command still executes the operator. (David Bürgin)
Solution:   Clear the operator when the ex command fails. (Christian Brabandt)
2013-04-05 17:43:14 +02:00
Bram Moolenaar
91fc43d3f9 updated for version 7.3.878
Problem:    'fileignorecase' is missing in options window and quickref.
Solution:   Add the option.
2013-04-05 15:41:05 +02:00
Bram Moolenaar
7bcb30e913 updated for version 7.3.877
Problem:    Forward searching with search() is broken.
Solution:   Fix it and add tests. (Sung Pae)
2013-04-03 21:14:29 +02:00
Bram Moolenaar
cdffbeae2b updated for version 7.3.876
Problem:    #if indents are off.
Solution:   Insert a space where appropriate. (Taro Muraoka)
2013-04-03 21:11:39 +02:00
Bram Moolenaar
95a5135118 updated for version 7.3.875
Problem:    Build problem with some combination of features.
Solution:   Use FEAT_XCLIPBOARD instead of FEAT_CLIPBOARD.
2013-03-21 22:53:50 +01:00
Bram Moolenaar
d0e2d94589 updated for version 7.3.874
Problem:    Comparing file names does not handle multi-byte characters
            properly.
Solution:   Implement multi-byte handling.
2013-03-19 18:31:49 +01:00
Bram Moolenaar
c2c355df6f updated for version 7.3.873
Problem:    Cannot easily use :s to make title case.
Solution:   Have "\L\u" result in title case. (James McCoy)
2013-03-19 17:42:15 +01:00
Bram Moolenaar
71afbfe6cd updated for version 7.3.872
Problem:    On some systems case of file names is always ignored, on others
            never.
Solution:   Add the 'fileignorecase' option to control this at runtime.
            Implies 'wildignorecase'.
2013-03-19 16:49:16 +01:00
Bram Moolenaar
db333a5b8d updated for version 7.3.871
Problem:    search('^$', 'c') does not use the empty match under the cursor.
Solution:   Special handling of the 'c' flag. (Christian Brabandt)
            Add tests.
2013-03-19 15:27:48 +01:00
Bram Moolenaar
af62ff3696 updated for version 7.3.870
Problem:    Compiler warnings when using MingW 4.5.3.
Solution:   Do not use MAKEINTRESOURCE. Adjust #if. (Ken Takata)
2013-03-19 14:48:29 +01:00
Bram Moolenaar
0c279bbb9c updated for version 7.3.869
Problem:    bufwinnr() matches buffers in other tabs.
Solution:   For bufwinnr() and ? only match buffers in the current tab.
            (Alexey Radkov)
2013-03-19 14:25:54 +01:00
Bram Moolenaar
b59494cab1 updated for version 7.3.868
Problem:    When at the hit-return prompt and using "k" while no text has
            scrolled off screen, then using "j", an empty line is displayed.
Solution:   Only act on "k" when text scrolled off screen.  Also accept
            page-up and page-down.  (cptstubing)
2013-03-19 13:56:08 +01:00
Bram Moolenaar
186628f671 updated for version 7.3.867
Problem:    Matchparen does not update match when using auto-indenting.
            (Marc Aldorasi)
Solution:   Add the TextChanged and TextChangedI autocommand events.
2013-03-19 13:33:23 +01:00
221 changed files with 28235 additions and 7692 deletions

View File

@@ -57,6 +57,7 @@ SRC_ALL = \
src/popupmnu.c \
src/quickfix.c \
src/regexp.c \
src/regexp_nfa.c \
src/regexp.h \
src/screen.c \
src/search.c \

View File

@@ -1,8 +1,8 @@
" ---------------------------------------------------------------------
" getscript.vim
" Author: Charles E. Campbell, Jr.
" Date: Jan 17, 2012
" Version: 34
" Author: Charles E. Campbell
" Date: Apr 17, 2013
" Version: 35
" Installing: :help glvs-install
" Usage: :help glvs
"
@@ -15,7 +15,7 @@
if exists("g:loaded_getscript")
finish
endif
let g:loaded_getscript= "v34"
let g:loaded_getscript= "v35"
if &cp
echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)"
finish
@@ -74,6 +74,11 @@ if !exists("g:GetLatestVimScripts_allowautoinstall")
let g:GetLatestVimScripts_allowautoinstall= 1
endif
" set up default scriptaddr address
if !exists("g:GetLatestVimScripts_scriptaddr")
let g:GetLatestVimScripts_scriptaddr = 'http://vim.sourceforge.net/script.php?script_id='
endif
"" For debugging:
"let g:GetLatestVimScripts_wget = "echo"
"let g:GetLatestVimScripts_options = "options"
@@ -314,7 +319,7 @@ fun! getscript#GetLatestVimScripts()
if &mod
silent! w!
endif
q
q!
" restore events and current directory
exe "cd ".fnameescape(substitute(origdir,'\','/','ge'))
@@ -415,7 +420,7 @@ fun! s:GetOneScript(...)
echo 'considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid
" grab a copy of the plugin's vim.sourceforge.net webpage
let scriptaddr = 'http://vim.sourceforge.net/script.php?script_id='.scriptid
let scriptaddr = g:GetLatestVimScripts_scriptaddr.scriptid
let tmpfile = tempname()
let v:errmsg = ""

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,9 @@
" netrwFileHandlers: contains various extension-based file handlers for
" netrw's browsers' x command ("eXecute launcher")
" Author: Charles E. Campbell, Jr.
" Date: Mar 14, 2012
" Version: 11a
" Copyright: Copyright (C) 1999-2012 Charles E. Campbell, Jr. {{{1
" Author: Charles E. Campbell
" Date: May 03, 2013
" Version: 11b ASTRO-ONLY
" Copyright: Copyright (C) 1999-2012 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
@@ -20,7 +20,7 @@
if exists("g:loaded_netrwFileHandlers") || &cp
finish
endif
let g:loaded_netrwFileHandlers= "v11a"
let g:loaded_netrwFileHandlers= "v11b"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of netrwFileHandlers needs vim 7.2"
@@ -34,10 +34,10 @@ set cpo&vim
" netrwFileHandlers#Invoke: {{{1
fun! netrwFileHandlers#Invoke(exten,fname)
" call Dfunc("netrwFileHandlers#Invoke(exten<".a:exten."> fname<".a:fname.">)")
let fname= a:fname
let exten= a:exten
" list of supported special characters. Consider rcs,v --- that can be
" supported with a NFH_rcsCOMMAv() handler
if a:fname =~ '[@:,$!=\-+%?;~]'
if exten =~ '[@:,$!=\-+%?;~]'
let specials= {
\ '@' : 'AT',
\ ':' : 'COLON',
@@ -51,18 +51,18 @@ fun! netrwFileHandlers#Invoke(exten,fname)
\ '?' : 'QUESTION',
\ ';' : 'SEMICOLON',
\ '~' : 'TILDE'}
let fname= substitute(a:fname,'[@:,$!=\-+%?;~]','\=specials[submatch(0)]','ge')
let exten= substitute(a:exten,'[@:,$!=\-+%?;~]','\=specials[submatch(0)]','ge')
" call Decho('fname<'.fname.'> done with dictionary')
endif
if a:exten != "" && exists("*NFH_".a:exten)
if a:exten != "" && exists("*NFH_".exten)
" support user NFH_*() functions
" call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.fname.'")')
exe "let ret= NFH_".a:exten.'("'.fname.'")'
elseif a:exten != "" && exists("*s:NFH_".a:exten)
exe "let ret= NFH_".exten.'("'.a:fname.'")'
elseif a:exten != "" && exists("*s:NFH_".exten)
" use builtin-NFH_*() functions
" call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.fname.'")')
exe "let ret= s:NFH_".a:exten.'("'.fname.'")'
exe "let ret= s:NFH_".a:exten.'("'.a:fname.'")'
endif
" call Dret("netrwFileHandlers#Invoke 0 : ret=".ret)

View File

@@ -1,8 +1,8 @@
" netrwSettings.vim: makes netrw settings simpler
" Date: Sep 03, 2008
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" Version: 13
" Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
" Date: May 03, 2013
" Maintainer: Charles E Campbell <drchipNOSPAM at campbellfamily dot biz>
" Version: 14a ASTRO-ONLY
" Copyright: Copyright (C) 1999-2007 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
@@ -19,7 +19,7 @@
if exists("g:loaded_netrwSettings") || &cp
finish
endif
let g:loaded_netrwSettings = "v13"
let g:loaded_netrwSettings = "v14a"
if v:version < 700
echohl WarningMsg
echo "***warning*** this version of netrwSettings needs vim 7.0"
@@ -63,7 +63,7 @@ fun! netrwSettings#NetrwSettings()
endif
put ='+ ---------------------------------------------'
put ='+ NetrwSettings: by Charles E. Campbell, Jr.'
put ='+ NetrwSettings: by Charles E. Campbell'
put ='+ Press <F1> with cursor atop any line for help'
put ='+ ---------------------------------------------'
let s:netrw_settings_stop= line(".")
@@ -88,6 +88,7 @@ fun! netrwSettings#NetrwSettings()
put = 'let g:netrw_ftpmode = '.g:netrw_ftpmode
put = 'let g:netrw_ignorenetrc = '.g:netrw_ignorenetrc
put = 'let g:netrw_sshport = '.g:netrw_sshport
put = 'let g:netrw_silent = '.g:netrw_silent
put = 'let g:netrw_use_nt_rcp = '.g:netrw_use_nt_rcp
put = 'let g:netrw_win95ftp = '.g:netrw_win95ftp
let s:netrw_xfer_stop= line(".")
@@ -99,27 +100,50 @@ fun! netrwSettings#NetrwSettings()
put ='+ Netrw Browser Control'
put = 'let g:netrw_alto = '.g:netrw_alto
put = 'let g:netrw_altv = '.g:netrw_altv
put = 'let g:netrw_banner = '.g:netrw_banner
if exists("g:netrw_bannerbackslash")
put = 'let g:netrw_bannerbackslash = '.g:netrw_bannerbackslash
else
put = '\" let g:netrw_bannerbackslash = (not defined)'
endif
put = 'let g:netrw_browse_split = '.g:netrw_browse_split
if exists("g:netrw_browsex_viewer")
put = 'let g:netrw_browsex_viewer = '.g:netrw_browsex_viewer
put = 'let g:netrw_browsex_viewer = '.g:netrw_browsex_viewer
else
put = 'let g:netrw_browsex_viewer = (not defined)'
put = '\" let g:netrw_browsex_viewer = (not defined)'
endif
put = 'let g:netrw_compress = '.g:netrw_compress
if exists("g:Netrw_corehandler")
put = 'let g:Netrw_corehandler = '.g:Netrw_corehandler
else
put = '\" let g:Netrw_corehandler = (not defined)'
endif
put = 'let g:netrw_ctags = '.g:netrw_ctags
put = 'let g:netrw_cursor = '.g:netrw_cursor
let decompressline= line("$")
put ='let g:netrw_decompress...'
put = 'let g:netrw_decompress = '.string(g:netrw_decompress)
if exists("g:netrw_dynamic_maxfilenamelen")
put = 'let g:netrw_dynamic_maxfilenamelen='.g:netrw_dynamic_maxfilenamelen
else
put = '\" let g:netrw_dynamic_maxfilenamelen= (not defined)'
endif
put = 'let g:netrw_dirhistmax = '.g:netrw_dirhistmax
put = 'let g:netrw_errorlvl = '.g:netrw_errorlvl
put = 'let g:netrw_fastbrowse = '.g:netrw_fastbrowse
let fnameescline= line("$")
put = 'let g:netrw_fname_escape...'
put = 'let g:netrw_fname_escape = '.string(g:netrw_fname_escape)
put = 'let g:netrw_ftp_browse_reject = '.g:netrw_ftp_browse_reject
put = 'let g:netrw_ftp_list_cmd = '.g:netrw_ftp_list_cmd
put = 'let g:netrw_ftp_sizelist_cmd = '.g:netrw_ftp_sizelist_cmd
put = 'let g:netrw_ftp_timelist_cmd = '.g:netrw_ftp_timelist_cmd
let globescline= line("$")
put ='let g:netrw_glob_escape...'
put = 'let g:netrw_glob_escape = '.string(g:netrw_glob_escape)
put = 'let g:netrw_hide = '.g:netrw_hide
if exists("g:netrw_home")
put = 'let g:netrw_home = '.g:netrw_home
else
put = '\" let g:netrw_home = (not defined)'
endif
put = 'let g:netrw_keepdir = '.g:netrw_keepdir
put = 'let g:netrw_list_cmd = '.g:netrw_list_cmd
put = 'let g:netrw_list_hide = '.g:netrw_list_hide
@@ -127,23 +151,30 @@ fun! netrwSettings#NetrwSettings()
put = 'let g:netrw_localcopycmd = '.g:netrw_localcopycmd
put = 'let g:netrw_localmkdir = '.g:netrw_localmkdir
put = 'let g:netrw_localmovecmd = '.g:netrw_localmovecmd
put = 'let g:netrw_localrmdir = '.g:netrw_localrmdir
put = 'let g:netrw_localrmdir = '.g:netrw_localrmdir
put = 'let g:netrw_maxfilenamelen = '.g:netrw_maxfilenamelen
put = 'let g:netrw_menu = '.g:netrw_menu
put = 'let g:netrw_mousemaps = '.g:netrw_mousemaps
put = 'let g:netrw_mkdir_cmd = '.g:netrw_mkdir_cmd
if exists("g:netrw_nobeval")
put = 'let g:netrw_nobeval = '.g:netrw_nobeval
else
put = '\" let g:netrw_nobeval = (not defined)'
endif
put = 'let g:netrw_remote_mkdir = '.g:netrw_remote_mkdir
put = 'let g:netrw_preview = '.g:netrw_preview
put = 'let g:netrw_rename_cmd = '.g:netrw_rename_cmd
put = 'let g:netrw_retmap = '.g:netrw_retmap
put = 'let g:netrw_rm_cmd = '.g:netrw_rm_cmd
put = 'let g:netrw_rmdir_cmd = '.g:netrw_rmdir_cmd
put = 'let g:netrw_rmf_cmd = '.g:netrw_rmf_cmd
put = 'let g:netrw_silent = '.g:netrw_silent
put = 'let g:netrw_sort_by = '.g:netrw_sort_by
put = 'let g:netrw_sort_direction = '.g:netrw_sort_direction
put = 'let g:netrw_sort_options = '.g:netrw_sort_options
put = 'let g:netrw_sort_sequence = '.g:netrw_sort_sequence
put = 'let g:netrw_special_syntax = '.g:netrw_special_syntax
put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject
put = 'let g:netrw_ssh_cmd = '.g:netrw_ssh_cmd
put = 'let g:netrw_scpport = '.g:netrw_scpport
put = 'let g:netrw_sepchr = '.g:netrw_sepchr
put = 'let g:netrw_sshport = '.g:netrw_sshport

View File

@@ -1,8 +1,8 @@
" Vim OMNI completion script for SQL
" Language: SQL
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
" Version: 14.0
" Last Change: 2012 Dec 04
" Version: 15.0
" Last Change: 2013 May 13
" Homepage: http://www.vim.org/scripts/script.php?script_id=1572
" Usage: For detailed help
" ":help sql.txt"
@@ -11,6 +11,18 @@
" History
"
" TODO
" - Jonas Enberg - if no table is found when using column completion
" look backwards to a FROM clause and find the first table
" and complete it.
"
" Version 15.0 (May 2013)
" - NF: Changed the SQL precached syntax items, omni_sql_precache_syntax_groups,
" to use regular expressions to pick up extended syntax group names.
" This requires an updated SyntaxComplete plugin version 13.0.
" If the required versions have not been installed, previous
" behaviour will not be impacted.
"
" Version 14.0 (Dec 2012)
" - BF: Added check for cpo
"
@@ -91,7 +103,7 @@ endif
if exists('g:loaded_sql_completion')
finish
endif
let g:loaded_sql_completion = 130
let g:loaded_sql_completion = 150
let s:keepcpo= &cpo
set cpo&vim
@@ -110,12 +122,14 @@ let s:syn_value = []
" Used in conjunction with the syntaxcomplete plugin
let s:save_inc = ""
let s:save_exc = ""
if exists('g:omni_syntax_group_include_sql')
let s:save_inc = g:omni_syntax_group_include_sql
if !exists('g:omni_syntax_group_include_sql')
let g:omni_syntax_group_include_sql = ''
endif
if exists('g:omni_syntax_group_exclude_sql')
let s:save_exc = g:omni_syntax_group_exclude_sql
if !exists('g:omni_syntax_group_exclude_sql')
let g:omni_syntax_group_exclude_sql = ''
endif
let s:save_inc = g:omni_syntax_group_include_sql
let s:save_exc = g:omni_syntax_group_exclude_sql
" Used with the column list
let s:save_prev_table = ""
@@ -127,12 +141,12 @@ endif
" Default syntax items to precache
if !exists('g:omni_sql_precache_syntax_groups')
let g:omni_sql_precache_syntax_groups = [
\ 'syntax',
\ 'sqlKeyword',
\ 'sqlFunction',
\ 'sqlOption',
\ 'sqlType',
\ 'sqlStatement'
\ 'syntax\w*',
\ 'sqlKeyword\w*',
\ 'sqlFunction\w*',
\ 'sqlOption\w*',
\ 'sqlType\w*',
\ 'sqlStatement\w*'
\ ]
endif
" Set ignorecase to the ftplugin standard
@@ -621,19 +635,23 @@ function! s:SQLCGetSyntaxList(syn_group)
" Return previously cached value
let compl_list = s:syn_value[list_idx]
else
let s:save_inc = g:omni_syntax_group_include_sql
let s:save_exc = g:omni_syntax_group_exclude_sql
let g:omni_syntax_group_include_sql = ''
let g:omni_syntax_group_exclude_sql = ''
" Request the syntax list items from the
" syntax completion plugin
if syn_group == 'syntax'
" Handle this special case. This allows the user
" to indicate they want all the syntax items available,
" so do not specify a specific include list.
let g:omni_syntax_group_include_sql = ''
let syn_value = syntaxcomplete#OmniSyntaxList()
else
" The user has specified a specific syntax group
let g:omni_syntax_group_include_sql = syn_group
let syn_value = syntaxcomplete#OmniSyntaxList(syn_group)
endif
let g:omni_syntax_group_exclude_sql = ''
let syn_value = syntaxcomplete#OmniSyntaxList()
let g:omni_syntax_group_include_sql = s:save_inc
let g:omni_syntax_group_exclude_sql = s:save_exc
" Cache these values for later use

View File

@@ -1,18 +1,34 @@
" Vim completion script
" Language: All languages, uses existing syntax highlighting rules
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
" Version: 11.0
" Last Change: 2012 Dec 04
" Version: 13.0
" Last Change: 2013 May 14
" Usage: For detailed help, ":help ft-syntax-omni"
" History
"
" Version 13.0
" - Extended the option omni_syntax_group_include_{filetype}
" to accept a comma separated list of regex's rather than
" string. For example, for the javascript filetype you could
" use:
" let g:omni_syntax_group_include_javascript = 'javascript\w\+,jquery\w\+'
" - Some syntax files (perl.vim) use the match // syntax as a mechanism
" to identify keywords. This update attempts to parse the
" match syntax and pull out syntax items which are at least
" 3 words or more.
"
" Version 12.0
" - It is possible to have '-' as part of iskeyword, when
" checking for character ranges, tighten up the regex.
" E688: More targets than List items.
"
" Version 11.0
" Corrected which characters required escaping during
" - Corrected which characters required escaping during
" substitution calls.
"
" Version 10.0
" Cycle through all the character ranges specified in the
" - Cycle through all the character ranges specified in the
" iskeyword option and build a list of valid word separators.
" Prior to this change, only actual characters were used,
" where for example ASCII "45" == "-". If "45" were used
@@ -20,30 +36,30 @@
" This introduces a new option, since the character ranges
" specified could be multibyte:
" let g:omni_syntax_use_single_byte = 1
" This by default will only allow single byte ASCII
" - This by default will only allow single byte ASCII
" characters to be added and an additional check to ensure
" the charater is printable (see documentation for isprint).
"
" Version 9.0
" Add the check for cpo.
" - Add the check for cpo.
"
" Version 8.0
" Updated SyntaxCSyntaxGroupItems()
" - Updated SyntaxCSyntaxGroupItems()
" - Some additional syntax items were also allowed
" on nextgroup= lines which were ignored by default.
" Now these lines are processed independently.
"
" Version 7.0
" Updated syntaxcomplete#OmniSyntaxList()
" - Updated syntaxcomplete#OmniSyntaxList()
" - Looking up the syntax groups defined from a syntax file
" looked for only 1 format of {filetype}GroupName, but some
" syntax writers use this format as well:
" {b:current_syntax}GroupName
" OmniSyntaxList() will now check for both if the first
" - OmniSyntaxList() will now check for both if the first
" method does not find a match.
"
" Version 6.0
" Added syntaxcomplete#OmniSyntaxList()
" - Added syntaxcomplete#OmniSyntaxList()
" - Allows other plugins to use this for their own
" purposes.
" - It will return a List of all syntax items for the
@@ -52,7 +68,7 @@
" sqlcomplete plugin to populate a Choose box.
"
" Version 5.0
" Updated SyntaxCSyntaxGroupItems()
" - Updated SyntaxCSyntaxGroupItems()
" - When processing a list of syntax groups, the final group
" was missed in function SyntaxCSyntaxGroupItems.
"
@@ -70,7 +86,7 @@ endif
if exists('g:loaded_syntax_completion')
finish
endif
let g:loaded_syntax_completion = 110
let g:loaded_syntax_completion = 130
" Turn on support for line continuations when creating the script
let s:cpo_save = &cpo
@@ -113,7 +129,8 @@ endif
" This script will build a completion list based on the syntax
" elements defined by the files in $VIMRUNTIME/syntax.
let s:syn_remove_words = 'match,matchgroup=,contains,'.
" let s:syn_remove_words = 'match,matchgroup=,contains,'.
let s:syn_remove_words = 'matchgroup=,contains,'.
\ 'links to,start=,end='
" \ 'links to,start=,end=,nextgroup='
@@ -275,9 +292,19 @@ function! OmniSyntaxList(...)
" sqlType
" sqlOperators
" sqlKeyword ...
redir @l
silent! exec 'syntax list '.join(list_parms)
redir END
if !empty(list_parms) && empty(substitute(join(list_parms), '[a-zA-Z ]', '', 'g'))
" If list_parms only includes word characters, use it to limit
" the syntax elements.
" If using regex syntax list will fail to find those items, so
" simply grab the who syntax list.
redir @l
silent! exec 'syntax list '.join(list_parms)
redir END
else
redir @l
silent! exec 'syntax list'
redir END
endif
let syntax_full = "\n".@l
let @l = saveL
@@ -311,82 +338,167 @@ function! OmniSyntaxList(...)
endif
endif
" Sometimes filetypes can be composite names, like c.doxygen
" Loop through each individual part looking for the syntax
" items specific to each individual filetype.
if empty(list_parms)
let list_parms = [&filetype.'\w\+']
endif
let syn_list = ''
let ftindex = 0
let ftindex = match(&filetype, '\w\+', ftindex)
let index = 0
for group_regex in list_parms
" Sometimes filetypes can be composite names, like c.doxygen
" Loop through each individual part looking for the syntax
" items specific to each individual filetype.
" let ftindex = 0
" let ftindex = match(syntax_full, group_regex, ftindex)
while ftindex > -1
let ft_part_name = matchstr( &filetype, '\w\+', ftindex )
" while ftindex > -1
" let ft_part_name = matchstr( syntax_full, '\w\+', ftindex )
" Syntax rules can contain items for more than just the current
" filetype. They can contain additional items added by the user
" via autocmds or their vimrc.
" Some syntax files can be combined (html, php, jsp).
" We want only items that begin with the filetype we are interested in.
let next_group_regex = '\n' .
\ '\zs'.ft_part_name.'\w\+\ze'.
\ '\s\+xxx\s\+'
let index = 0
let index = match(syntax_full, next_group_regex, index)
if index == -1 && exists('b:current_syntax') && ft_part_name != b:current_syntax
" There appears to be two standards when writing syntax files.
" Either items begin as:
" syn keyword {filetype}Keyword values ...
" let b:current_syntax = "sql"
" let b:current_syntax = "sqlanywhere"
" Or
" syn keyword {syntax_filename}Keyword values ...
" let b:current_syntax = "mysql"
" So, we will make the format of finding the syntax group names
" a bit more flexible and look for both if the first fails to
" find a match.
" Syntax rules can contain items for more than just the current
" filetype. They can contain additional items added by the user
" via autocmds or their vimrc.
" Some syntax files can be combined (html, php, jsp).
" We want only items that begin with the filetype we are interested in.
let next_group_regex = '\n' .
\ '\zs'.b:current_syntax.'\w\+\ze'.
\ '\zs'.group_regex.'\ze'.
\ '\s\+xxx\s\+'
let index = 0
let index = match(syntax_full, next_group_regex, index)
endif
while index > -1
let group_name = matchstr( syntax_full, '\w\+', index )
let get_syn_list = 1
for exclude_group_name in list_exclude_groups
if '\<'.exclude_group_name.'\>' =~ '\<'.group_name.'\>'
let get_syn_list = 0
endif
endfor
" This code is no longer needed in version 6.0 since we have
" augmented the syntax list command to only retrieve the syntax
" groups we are interested in.
"
" if get_syn_list == 1
" if syntax_group_include_{filetype} != ''
" if '\<'.syntax_group_include_{filetype}.'\>' !~ '\<'.group_name.'\>'
" let get_syn_list = 0
" endif
" endif
" endif
if get_syn_list == 1
" Pass in the full syntax listing, plus the group name we
" are interested in.
let extra_syn_list = s:SyntaxCSyntaxGroupItems(group_name, syntax_full)
let syn_list = syn_list . extra_syn_list . "\n"
" For the matched group name, strip off any of the regex special
" characters and see if we get a match with the current syntax
if index == -1 && exists('b:current_syntax') && substitute(group_regex, '[^a-zA-Z ]\+.*', '', 'g') !~ '^'.b:current_syntax
" There appears to be two standards when writing syntax files.
" Either items begin as:
" syn keyword {filetype}Keyword values ...
" let b:current_syntax = "sql"
" let b:current_syntax = "sqlanywhere"
" Or
" syn keyword {syntax_filename}Keyword values ...
" let b:current_syntax = "mysql"
" So, we will make the format of finding the syntax group names
" a bit more flexible and look for both if the first fails to
" find a match.
let next_group_regex = '\n' .
\ '\zs'.b:current_syntax.'\w\+\ze'.
\ '\s\+xxx\s\+'
let index = 0
let index = match(syntax_full, next_group_regex, index)
endif
let index = index + strlen(group_name)
let index = match(syntax_full, next_group_regex, index)
endwhile
while index > -1
let group_name = matchstr( syntax_full, '\w\+', index )
let ftindex = ftindex + len(ft_part_name)
let ftindex = match( &filetype, '\w\+', ftindex )
endwhile
let get_syn_list = 1
for exclude_group_name in list_exclude_groups
if '\<'.exclude_group_name.'\>' =~ '\<'.group_name.'\>'
let get_syn_list = 0
endif
endfor
" This code is no longer needed in version 6.0 since we have
" augmented the syntax list command to only retrieve the syntax
" groups we are interested in.
"
" if get_syn_list == 1
" if syntax_group_include_{filetype} != ''
" if '\<'.syntax_group_include_{filetype}.'\>' !~ '\<'.group_name.'\>'
" let get_syn_list = 0
" endif
" endif
" endif
if get_syn_list == 1
" Pass in the full syntax listing, plus the group name we
" are interested in.
let extra_syn_list = s:SyntaxCSyntaxGroupItems(group_name, syntax_full)
let syn_list = syn_list . extra_syn_list . "\n"
endif
let index = index + strlen(group_name)
let index = match(syntax_full, next_group_regex, index)
endwhile
" let ftindex = ftindex + len(ft_part_name)
" let ftindex = match( syntax_full, group_regex, ftindex )
" endwhile
endfor
" " Sometimes filetypes can be composite names, like c.doxygen
" " Loop through each individual part looking for the syntax
" " items specific to each individual filetype.
" let syn_list = ''
" let ftindex = 0
" let ftindex = match(&filetype, '\w\+', ftindex)
" while ftindex > -1
" let ft_part_name = matchstr( &filetype, '\w\+', ftindex )
" " Syntax rules can contain items for more than just the current
" " filetype. They can contain additional items added by the user
" " via autocmds or their vimrc.
" " Some syntax files can be combined (html, php, jsp).
" " We want only items that begin with the filetype we are interested in.
" let next_group_regex = '\n' .
" \ '\zs'.ft_part_name.'\w\+\ze'.
" \ '\s\+xxx\s\+'
" let index = 0
" let index = match(syntax_full, next_group_regex, index)
" if index == -1 && exists('b:current_syntax') && ft_part_name != b:current_syntax
" " There appears to be two standards when writing syntax files.
" " Either items begin as:
" " syn keyword {filetype}Keyword values ...
" " let b:current_syntax = "sql"
" " let b:current_syntax = "sqlanywhere"
" " Or
" " syn keyword {syntax_filename}Keyword values ...
" " let b:current_syntax = "mysql"
" " So, we will make the format of finding the syntax group names
" " a bit more flexible and look for both if the first fails to
" " find a match.
" let next_group_regex = '\n' .
" \ '\zs'.b:current_syntax.'\w\+\ze'.
" \ '\s\+xxx\s\+'
" let index = 0
" let index = match(syntax_full, next_group_regex, index)
" endif
" while index > -1
" let group_name = matchstr( syntax_full, '\w\+', index )
" let get_syn_list = 1
" for exclude_group_name in list_exclude_groups
" if '\<'.exclude_group_name.'\>' =~ '\<'.group_name.'\>'
" let get_syn_list = 0
" endif
" endfor
" " This code is no longer needed in version 6.0 since we have
" " augmented the syntax list command to only retrieve the syntax
" " groups we are interested in.
" "
" " if get_syn_list == 1
" " if syntax_group_include_{filetype} != ''
" " if '\<'.syntax_group_include_{filetype}.'\>' !~ '\<'.group_name.'\>'
" " let get_syn_list = 0
" " endif
" " endif
" " endif
" if get_syn_list == 1
" " Pass in the full syntax listing, plus the group name we
" " are interested in.
" let extra_syn_list = s:SyntaxCSyntaxGroupItems(group_name, syntax_full)
" let syn_list = syn_list . extra_syn_list . "\n"
" endif
" let index = index + strlen(group_name)
" let index = match(syntax_full, next_group_regex, index)
" endwhile
" let ftindex = ftindex + len(ft_part_name)
" let ftindex = match( &filetype, '\w\+', ftindex )
" endwhile
" Convert the string to a List and sort it.
let compl_list = sort(split(syn_list))
@@ -454,10 +566,65 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
\ , "\n", 'g'
\ )
" Attempt to deal with lines using the match syntax
" javaScriptDocTags xxx match /@\(param\|argument\|requires\|file\)\>/
" Though it can use any types of regex, so this plugin will attempt
" to restrict it
" 1. Only use \( or \%( constructs remove all else
" 2 Remove and []s
" 3. Account for match //constructs
" \%(\%(ms\|me\|hs\|he\|rs\|re\|lc\)\S\+\)\?
" 4. Hope for the best
"
"
let syn_list_old = syn_list
while syn_list =~ '\<match\>\s\+\/'
if syn_list =~ 'perlElseIfError'
let syn_list = syn_list
endif
" Check if the match has words at least 3 characters long
if syn_list =~ '\<match \/\zs.\{-}\<\w\{3,}\>.\{-}\ze\\\@<!\/\%(\%(ms\|me\|hs\|he\|rs\|re\|lc\)\S\+\)\?\s\+'
" Remove everything after / and before the first \(
let syn_list = substitute( syn_list, '\<match \/\zs.\{-}\ze\\%\?(.\{-}\\\@<!\/\%(\%(ms\|me\|hs\|he\|rs\|re\|lc\)\S\+\)\?\s\+', '', 'g' )
" Remove everything after \) and up to the ending /
let syn_list = substitute( syn_list, '\<match \/.\{-}\\)\zs.\{-}\ze\/\%(\%(ms\|me\|hs\|he\|rs\|re\|lc\)\S\+\)\?\s\+', '', 'g' )
" Remove any character classes
" let syn_list = substitute( syn_list, '\<match /\zs.\{-}\[[^]]*\].\{-}\ze\/ ', '', 'g' )
let syn_list = substitute( syn_list, '\%(\<match \/[^/]\{-}\)\@<=\[[^]]*\]\ze.\{-}\\\@<!\/\%(\%(ms\|me\|hs\|he\|rs\|re\|lc\)\S\+\)\?', '', 'g' )
" Remove any words < 3 characters
let syn_list = substitute( syn_list, '\%(\<match \/[^/]\{-}\)\@<=\<\w\{1,2}\>\ze.\{-}\\\@<!\/\%(\%(ms\|me\|hs\|he\|rs\|re\|lc\)\S\+\)\?\s\+', '', 'g' )
" Remove all non-word characters
" let syn_list = substitute( syn_list, '\<match /\zs.\{-}\<\W\+\>.\{-}\ze\/ ', "", 'g' )
" let syn_list = substitute( syn_list, '\%(\<match \/[^/]\{-}\)\@<=\W\+\ze.\{-}\/ ', ' ', 'g' )
" Do this by using the outer substitue() call to gather all
" text between the match /.../ tags.
" The inner substitute() call operates on the text selected
" and replaces all non-word characters.
let syn_list = substitute( syn_list, '\<match \/\zs\(.\{-}\)\ze\\\@<!\/\%(\%(ms\|me\|hs\|he\|rs\|re\|lc\)\S\+\)\?\s\+'
\ , '\=substitute(submatch(1), "\\W\\+", " ", "g")'
\ , 'g' )
" Remove the match / / syntax
let syn_list = substitute( syn_list, '\<match \/\(.\{-}\)\/\%(\%(ms\|me\|hs\|he\|rs\|re\|lc\)\S\+\)\?\s\+', '\1', 'g' )
else
" No words long enough, remove the match
" Remove the match syntax
" let syn_list = substitute( syn_list, '\<match \/[^\/]*\/\%(\%(ms\|me\|hs\|he\|rs\|re\|lc\)\S\+\)\?\s\+', '', 'g' )
let syn_list = substitute( syn_list, '\<match \/\%(.\{-}\)\?\/\%(\%(ms\|me\|hs\|he\|rs\|re\|lc\)\S\+\)\?\s\+', '', 'g' )
endif
if syn_list =~ '\<match\>\s\+\/'
" Problem removing the match / / tags
let syn_list = ''
endif
endwhile
" Now strip off the newline + blank space + contained.
" Also include lines with nextgroup=@someName skip_key_words syntax_element
" \ syn_list, '\%(^\|\n\)\@<=\s*\<\(contained\|nextgroup=\)'
" \ syn_list, '\%(^\|\n\)\@<=\s*\<\(contained\|nextgroup=[@a-zA-Z,]*\)'
let syn_list = substitute(
\ syn_list, '\%(^\|\n\)\@<=\s*\<\(contained\|nextgroup=\)'
\ syn_list, '\<\(contained\|nextgroup=[@a-zA-Z,]*\)'
\ , "", 'g'
\ )
@@ -497,7 +664,7 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
" If so, add it to the list.
let accepted_chars = ''
for item in split(&iskeyword, ',')
if item =~ '-'
if item =~ '\d-\d'
" This is a character range (ie 47-58),
" cycle through each character within the range
let [b:start, b:end] = split(item, '-')

View File

@@ -1,13 +1,13 @@
" tar.vim: Handles browsing tarfiles
" AUTOLOAD PORTION
" Date: Jan 17, 2012
" Version: 28
" Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" Date: Apr 17, 2013
" Version: 29
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" License: Vim License (see vim's :help license)
"
" Contains many ideas from Michael Toren's <tar.vim>
"
" Copyright: Copyright (C) 2005-2011 Charles E. Campbell, Jr. {{{1
" Copyright: Copyright (C) 2005-2011 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
@@ -22,7 +22,7 @@
if &cp || exists("g:loaded_tar")
finish
endif
let g:loaded_tar= "v28"
let g:loaded_tar= "v29"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of tar needs vim 7.2"
@@ -31,6 +31,7 @@ if v:version < 702
endif
let s:keepcpo= &cpo
set cpo&vim
"DechoTabOn
"call Decho("loading autoload/tar.vim")
" ---------------------------------------------------------------------
@@ -80,7 +81,7 @@ endif
" set up shell quoting character
if !exists("g:tar_shq")
if exists("&shq") && &shq != ""
if exists("+shq") && exists("&shq") && &shq != ""
let g:tar_shq= &shq
elseif has("win32") || has("win95") || has("win64") || has("win16")
if exists("g:netrw_cygwin") && g:netrw_cygwin
@@ -147,7 +148,7 @@ fun! tar#Browse(tarfile)
keepj $
let tarfile= a:tarfile
if has("win32") && executable("cygpath")
if has("win32unix") && executable("cygpath")
" assuming cygwin
let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
endif
@@ -227,7 +228,7 @@ fun! s:TarBrowseSelect()
" about to make a new window, need to use b:tarfile
let tarfile= b:tarfile
let curfile= expand("%")
if has("win32") && executable("cygpath")
if has("win32unix") && executable("cygpath")
" assuming cygwin
let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
endif
@@ -239,6 +240,8 @@ fun! s:TarBrowseSelect()
let s:tblfile_{winnr()}= curfile
call tar#Read("tarfile:".tarfile.'::'.fname,1)
filetype detect
set nomod
exe 'com! -buffer -nargs=? -complete=file TarDiff :call tar#Diff(<q-args>,"'.fnameescape(fname).'")'
let &report= repkeep
" call Dret("TarBrowseSelect : s:tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
@@ -252,7 +255,7 @@ fun! tar#Read(fname,mode)
set report=10
let tarfile = substitute(a:fname,'tarfile:\(.\{-}\)::.*$','\1','')
let fname = substitute(a:fname,'tarfile:.\{-}::\(.*\)$','\1','')
if has("win32") && executable("cygpath")
if has("win32unix") && executable("cygpath")
" assuming cygwin
let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
endif
@@ -425,7 +428,7 @@ fun! tar#Write(fname)
if fname =~ '/'
let dirpath = substitute(fname,'/[^/]\+$','','e')
if executable("cygpath")
if has("win32unix") && executable("cygpath")
let dirpath = substitute(system("cygpath ".shellescape(dirpath, 0)),'\n','','e')
endif
call mkdir(dirpath,"p")
@@ -445,7 +448,7 @@ fun! tar#Write(fname)
let tar_secure= " "
endif
exe "w! ".fnameescape(fname)
if executable("cygpath")
if has("win32unix") && executable("cygpath")
let tarfile = substitute(system("cygpath ".shellescape(tarfile,0)),'\n','','e')
endif
@@ -500,6 +503,30 @@ fun! tar#Write(fname)
" call Dret("tar#Write")
endfun
" ---------------------------------------------------------------------
" tar#Diff: {{{2
fun! tar#Diff(userfname,fname)
" call Dfunc("tar#Diff(userfname<".a:userfname."> fname<".a:fname.")")
let fname= a:fname
if a:userfname != ""
let fname= a:userfname
endif
if filereadable(fname)
" sets current file (from tarball) for diff'ing
" splits window vertically
" opens original file, sets it for diff'ing
" sets up b:tardiff_otherbuf variables so each buffer knows about the other (for closing purposes)
diffthis
wincmd v
exe "e ".fnameescape(fname)
diffthis
else
redraw!
echo "***warning*** unable to read file<".fname.">"
endif
" call Dret("tar#Diff")
endfun
" ---------------------------------------------------------------------
" s:Rmdir: {{{2
fun! s:Rmdir(fname)

View File

@@ -1,10 +1,10 @@
" zip.vim: Handles browsing zipfiles
" AUTOLOAD PORTION
" Date: Jan 17, 2012
" Version: 25
" Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" Date: Apr 17, 2013
" Version: 26
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005-2012 Charles E. Campbell, Jr. {{{1
" Copyright: Copyright (C) 2005-2012 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
@@ -19,7 +19,7 @@
if &cp || exists("g:loaded_zip")
finish
endif
let g:loaded_zip= "v25"
let g:loaded_zip= "v26"
if v:version < 702
echohl WarningMsg
echo "***warning*** this version of zip needs vim 7.2"
@@ -188,13 +188,23 @@ fun! zip#Read(fname,mode)
else
let zipfile = substitute(a:fname,'^.\{-}zipfile:\(.\{-}\)::[^\\].*$','\1','')
let fname = substitute(a:fname,'^.\{-}zipfile:.\{-}::\([^\\].*\)$','\1','')
let fname = substitute(fname, '[', '[[]', 'g')
let fname = substitute(fname, '[', '[[]', 'g')
endif
" call Decho("zipfile<".zipfile.">")
" call Decho("fname <".fname.">")
" call Decho("exe r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fnameescape(fname),1))
exe "keepj sil! r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fnameescape(fname),1)
" the following code does much the same thing as
" exe "keepj sil! r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fnameescape(fname),1)
" but allows zipfile:... entries in quickfix lists
let temp = tempname()
let fn = expand('%:p')
exe "sil! !".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fnameescape(fname),1).' > '.temp
" call Decho("exe sil! !".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fnameescape(fname),1).' > '.temp)
sil exe 'keepalt file '.temp
sil keepj e!
sil exe 'keepalt file '.fnameescape(fn)
call delete(temp)
filetype detect
" cleanup
@@ -267,7 +277,7 @@ fun! zip#Write(fname)
if fname =~ '/'
let dirpath = substitute(fname,'/[^/]\+$','','e')
if executable("cygpath")
if has("win32unix") && executable("cygpath")
let dirpath = substitute(system("cygpath ".s:Escape(dirpath,0)),'\n','','e')
endif
" call Decho("mkdir(dirpath<".dirpath.">,p)")
@@ -279,7 +289,7 @@ fun! zip#Write(fname)
" call Decho("zipfile<".zipfile."> fname<".fname.">")
exe "w! ".fnameescape(fname)
if executable("cygpath")
if has("win32unix") && executable("cygpath")
let zipfile = substitute(system("cygpath ".s:Escape(zipfile,0)),'\n','','e')
endif

View File

@@ -0,0 +1,21 @@
" Vim compiler file
" Compiler: Microsoft Visual Studio C#
" Maintainer: Chiel ten Brinke (ctje92@gmail.com)
" Last Change: 2013 May 13
if exists("current_compiler")
finish
endif
let current_compiler = "msbuild"
let s:keepcpo= &cpo
set cpo&vim
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet errorformat=\ %#%f(%l\\\,%c):\ %m
CompilerSet makeprg=msbuild\ /nologo\ /v:q\ /property:GenerateFullPaths=true
let &cpo = s:keepcpo
unlet s:keepcpo

View File

@@ -0,0 +1,22 @@
" Vim compiler file
" Compiler: Mono C#
" Maintainer: Chiel ten Brinke (ctje92@gmail.com)
" Last Change: 2013 May 13
if exists("current_compiler")
finish
endif
let current_compiler = "xbuild"
let s:keepcpo= &cpo
set cpo&vim
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet errorformat=\ %#%f(%l\\\,%c):\ %m
CompilerSet makeprg=xbuild\ /nologo\ /v:q\ /property:GenerateFullPaths=true
let &cpo = s:keepcpo
unlet s:keepcpo

View File

@@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 7.3. Last change: 2013 Mar 13
*autocmd.txt* For Vim version 7.3. Last change: 2013 May 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -519,8 +519,9 @@ CursorMoved After the cursor was moved in Normal mode.
Not triggered when there is typeahead or when
an operator is pending.
For an example see |match-parens|.
Careful: Don't do anything that the user does
not expect or that is slow.
Careful: This is triggered very often, don't
do anything that the user does not expect or
that is slow.
*CursorMovedI*
CursorMovedI After the cursor was moved in Insert mode.
Not triggered when the popup menu is visible.
@@ -690,8 +691,11 @@ InsertCharPre When a character is typed in Insert mode,
InsertEnter Just before starting Insert mode. Also for
Replace mode and Virtual Replace mode. The
|v:insertmode| variable indicates the mode.
Be careful not to move the cursor or do
anything else that the user does not expect.
Be careful not to do anything else that the
user does not expect.
The cursor is restored afterwards. If you do
not want that set |v:char| to a non-empty
string.
*InsertLeave*
InsertLeave When leaving Insert mode. Also when using
CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|.
@@ -831,12 +835,27 @@ TermResponse After the response to |t_RV| is received from
triggered halfway executing another event,
especially if file I/O, a shell command or
anything else that takes time is involved.
*TextChanged*
TextChanged After a change was made to the text in the
current buffer in Normal mode. That is when
|b:changedtick| has changed.
Not triggered when there is typeahead or when
an operator is pending.
Careful: This is triggered very often, don't
do anything that the user does not expect or
that is slow.
*TextChangedI*
TextChangedI After a change was made to the text in the
current buffer in Insert mode.
Not triggered when the popup menu is visible.
Otherwise the same as TextChanged.
*User*
User Never executed automatically. To be used for
autocommands that are only executed with
":doautocmd".
*UserGettingBored*
UserGettingBored When the user hits CTRL-C. Just kidding! :-)
UserGettingBored When the user presses the same key 42 times.
Just kidding! :-)
*VimEnter*
VimEnter After doing all the startup stuff, including
loading .vimrc files, executing the "-c cmd"

View File

@@ -1,4 +1,4 @@
*change.txt* For Vim version 7.3. Last change: 2012 Nov 02
*change.txt* For Vim version 7.3. Last change: 2013 Mar 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -784,6 +784,11 @@ Examples: >
:s/abcde/abc^Mde/ modifies "abcde" to "abc", "de" (two lines)
:s/$/\^M/ modifies "abcde" to "abcde^M"
:s/\w\+/\u\0/g modifies "bla bla" to "Bla Bla"
:s/\w\+/\L\u/g modifies "BLA bla" to "Bla Bla"
Note: "\L\u" can be used to capitalize the first letter of a word. This is
not compatible with Vi and older versions of Vim, where the "\u" would cancel
out the "\L". Same for "\U\l".
Note: In previous versions CTRL-V was handled in a special way. Since this is
not Vi compatible, this was removed. Use a backslash instead.

View File

@@ -1,4 +1,4 @@
*develop.txt* For Vim version 7.3. Last change: 2012 Jan 10
*develop.txt* For Vim version 7.3. Last change: 2013 Apr 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -20,6 +20,7 @@ code.
Vim is open source software. Everybody is encouraged to contribute to help
improving Vim. For sending patches a context diff "diff -c" is preferred.
Also see http://www.vim.org/tips/tip.php?tip_id=618.
Also see http://vim.wikia.com/wiki/How_to_make_and_submit_a_patch.
==============================================================================
1. Design goals *design-goals*

View File

@@ -1,4 +1,4 @@
*eval.txt* For Vim version 7.3. Last change: 2013 Mar 10
*eval.txt* For Vim version 7.3. Last change: 2013 May 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1150,14 +1150,14 @@ delete all script-local variables: >
: unlet s:[k]
:endfor
<
*buffer-variable* *b:var*
*buffer-variable* *b:var* *b:*
A variable name that is preceded with "b:" is local to the current buffer.
Thus you can have several "b:foo" variables, one for each buffer.
This kind of variable is deleted when the buffer is wiped out or deleted with
|:bdelete|.
One local buffer variable is predefined:
*b:changedtick-variable* *changetick*
*b:changedtick* *changetick*
b:changedtick The total number of changes to the current buffer. It is
incremented for each change. An undo command is also a change
in this case. This can be used to perform an action only when
@@ -1167,21 +1167,21 @@ b:changedtick The total number of changes to the current buffer. It is
: call My_Update()
:endif
<
*window-variable* *w:var*
*window-variable* *w:var* *w:*
A variable name that is preceded with "w:" is local to the current window. It
is deleted when the window is closed.
*tabpage-variable* *t:var*
*tabpage-variable* *t:var* *t:*
A variable name that is preceded with "t:" is local to the current tab page,
It is deleted when the tab page is closed. {not available when compiled
without the |+windows| feature}
*global-variable* *g:var*
*global-variable* *g:var* *g:*
Inside functions global variables are accessed with "g:". Omitting this will
access a variable local to a function. But "g:" can also be used in any other
place if you like.
*local-variable* *l:var*
*local-variable* *l:var* *l:*
Inside functions local variables are accessed without prepending anything.
But you can also prepend "l:" if you like. However, without prepending "l:"
you may run into reserved variable names. For example "count". By itself it
@@ -1264,7 +1264,7 @@ Note that this means that filetype plugins don't get a different set of script
variables for each buffer. Use local buffer variables instead |b:var|.
Predefined Vim variables: *vim-variable* *v:var*
Predefined Vim variables: *vim-variable* *v:var* *v:*
*v:beval_col* *beval_col-variable*
v:beval_col The number of the column, over which the mouse pointer is.
@@ -1297,7 +1297,7 @@ v:beval_winnr The number of the window, over which the mouse pointer is. Only
*v:char* *char-variable*
v:char Argument for evaluating 'formatexpr' and used for the typed
character when using <expr> in an abbreviation |:map-<expr>|.
It is also used by the |InsertCharPre| event.
It is also used by the |InsertCharPre| and |InsertEnter| events.
*v:charconvert_from* *charconvert_from-variable*
v:charconvert_from
@@ -4639,7 +4639,7 @@ pumvisible() *pumvisible()*
This can be used to avoid some things that would remove the
popup menu.
*E860* *E861*
*E860*
py3eval({expr}) *py3eval()*
Evaluate Python expression {expr} and return its result
converted to Vim data structures.
@@ -5320,8 +5320,6 @@ settabvar({tabnr}, {varname}, {val}) *settabvar()*
|t:var|
Note that the variable name without "t:" must be used.
Tabs are numbered starting with one.
Vim briefly goes to the tab page {tabnr}, this may trigger
TabLeave and TabEnter autocommands.
This function is not available in the |sandbox|.
settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()*
@@ -5334,8 +5332,6 @@ settabwinvar({tabnr}, {winnr}, {varname}, {val}) *settabwinvar()*
doesn't work for a global or local buffer variable.
For a local buffer option the global value is unchanged.
Note that the variable name without "w:" must be used.
Vim briefly goes to the tab page {tabnr}, this may trigger
TabLeave and TabEnter autocommands.
Examples: >
:call settabwinvar(1, 1, "&list", 0)
:call settabwinvar(3, 2, "myvar", "foobar")

View File

@@ -1,4 +1,4 @@
*ft_sql.txt* For Vim version 7.3. Last change: 2010 Jul 20
*ft_sql.txt* For Vim version 7.3. Last change: 2013 May 15
by David Fishburn
@@ -349,6 +349,7 @@ may not work properly on all platforms: >
The static maps (which are based on the syntax highlight groups) follow this
format: >
imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O>
imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword\w*')<CR><C-X><C-O>
This command breaks down as: >
imap - Create an insert map
@@ -369,6 +370,9 @@ This command breaks down as: >
command while editing a SQL file.
'sqlKeyword' - Display the items for the sqlKeyword highlight
group
'sqlKeyword\w*' - A second option available with Vim 7.4 which
uses a regular expression to determine which
syntax groups to use
)<CR> - Execute the :let command
<C-X><C-O> - Trigger the standard omni completion key stroke.
Passing in 'sqlKeyword' instructs the SQL
@@ -435,7 +439,7 @@ the space bar):
of columns, you can press <Left>, this will
replace the column list with the list of tables.
- This allows you to quickly drill down into a
table to view it's columns and back again.
table to view its columns and back again.
- <Right> and <Left> can be also be chosen via
your |.vimrc| >
let g:ftplugin_sql_omni_key_right = '<Right>'
@@ -645,7 +649,7 @@ your |vimrc|: >
- When completing tables, procedure or views and using dbext.vim 3.00
or higher the list of objects will also include the owner name.
When completing these objects and omni_sql_include_owner is enabled
the owner name will be be replaced. >
the owner name will be replaced. >
omni_sql_precache_syntax_groups
< - Default:

View File

@@ -1,4 +1,4 @@
*if_pyth.txt* For Vim version 7.3. Last change: 2013 Feb 03
*if_pyth.txt* For Vim version 7.3. Last change: 2013 May 21
VIM REFERENCE MANUAL by Paul Moore
@@ -11,9 +11,10 @@ The Python Interface to Vim *python* *Python*
3. Buffer objects |python-buffer|
4. Range objects |python-range|
5. Window objects |python-window|
6. pyeval(), py3eval() Vim functions |python-pyeval|
7. Dynamic loading |python-dynamic|
8. Python 3 |python3|
6. Tab page objects |python-tabpage|
7. pyeval(), py3eval() Vim functions |python-pyeval|
8. Dynamic loading |python-dynamic|
9. Python 3 |python3|
{Vi does not have any of these commands}
@@ -57,6 +58,22 @@ Example: >
Note: Python is very sensitive to the indenting. Make sure the "class" line
and "EOF" do not have any indent.
*:pydo*
:[range]pydo {body} Execute Python function "def _vim_pydo(line, linenr):
{body}" for each line in the [range], with the
function arguments being set to the text of each line
in turn, without a trailing <EOL>, and the current
line number. The function should return a string or
None. If a string is returned, it becomes the text of
the line in the current turn. The default for [range]
is the whole file: "1,$".
{not in Vi}
Examples:
>
:pydo return "%s\t%d" % (line[::-1], len(line))
:pydo if line: return "%4d: %s" % (linenr, line)
<
*:pyfile* *:pyf*
:[range]pyf[ile] {file}
Execute the Python script in {file}. The whole
@@ -160,7 +177,7 @@ vim.bindeval(str) *python-bindeval*
list or dictionary. Thus modifications to these objects imply
modifications of the original.
Additionally, vimlist and vimdictionary type have read-write
Additionally, vim.List and vim.Dictionary type have read-write
`.locked` attribute that returns
Value Meaning ~
zero Variable is not locked
@@ -173,14 +190,15 @@ vim.bindeval(str) *python-bindeval*
case these locks are ignored by anything except |:let|: |extend()|
does not care, neither does python interface).
Vimdictionary type also supports `.scope` attribute which is one of
vim.Dictionary type also supports `.scope` attribute which is one
of
Value Meaning ~
zero Dictionary is not a scope one
vim.VAR_DEF_SCOPE Function-local or global scope dictionary
vim.VAR_SCOPE Other scope dictionary
2. if expression evaluates to a function reference, then it returns
callable vimfunction object. Use self keyword argument to assign
callable vim.Function object. Use self keyword argument to assign
|self| object for dictionary functions.
Note: this function has the same behavior as |lua-eval| (except that
@@ -189,6 +207,10 @@ vim.bindeval(str) *python-bindeval*
relying on outputs of vim.eval() being a copy of original or
vim.eval("1") returning a string.
You can use "List", "Dictionary" and "Function" vim module attributes
to test whether object has given type. These types are currently not
subclassable, neither they contain constructors, so you can use them
only for checks like `isinstance(obj, vim.List)`.
Error object of the "vim" module
@@ -209,12 +231,12 @@ Constants of the "vim" module
to which the variables referred.
vim.buffers *python-buffers*
A sequence object providing access to the list of vim buffers. The
A mapping object providing access to the list of vim buffers. The
object supports the following operations: >
:py b = vim.buffers[i] # Indexing (read-only)
:py b in vim.buffers # Membership test
:py n = len(vim.buffers) # Number of elements
:py for b in vim.buffers: # Sequential access
:py for b in vim.buffers: # Iterating over buffer list
<
vim.windows *python-windows*
A sequence object providing access to the list of vim windows. The
@@ -223,13 +245,28 @@ vim.windows *python-windows*
:py w in vim.windows # Membership test
:py n = len(vim.windows) # Number of elements
:py for w in vim.windows: # Sequential access
< Note: vim.windows object always accesses current tab page,.
|python-tabpage|.windows objects are bound to parent |python-tabpage|
object and always use windows from that tab page (or throw vim.error
in case tab page was deleted). You can keep a reference to both
without keeping a reference to vim module object or |python-tabpage|,
they will not loose their properties in this case.
vim.tabpages *python-tabpages*
A sequence object providing access to the list of vim tab pages. The
object supports the following operations: >
:py t = vim.tabpages[i] # Indexing (read-only)
:py t in vim.tabpages # Membership test
:py n = len(vim.tabpages) # Number of elements
:py for t in vim.tabpages: # Sequential access
<
vim.current *python-current*
An object providing access (via specific attributes) to various
"current" objects available in vim:
vim.current.line The current line (RW) String
vim.current.buffer The current buffer (RO) Buffer
vim.current.window The current window (RO) Window
vim.current.buffer The current buffer (RW) Buffer
vim.current.window The current window (RW) Window
vim.current.tabpage The current tab page (RW) TabPage
vim.current.range The current line range (RO) Range
The last case deserves a little explanation. When the :python or
@@ -237,6 +274,42 @@ vim.current *python-current*
"current range". A range is a bit like a buffer, but with all access
restricted to a subset of lines. See |python-range| for more details.
Note: When assigning to vim.current.{buffer,window,tabpage} it expects
valid |python-buffer|, |python-window| or |python-tabpage| objects
respectively. Assigning triggers normal (with |autocommand|s)
switching to given buffer, window or tab page. It is the only way to
switch UI objects in python: you can't assign to
|python-tabpage|.window attribute. To switch without triggering
autocommands use >
py << EOF
saved_eventignore = vim.options['eventignore']
vim.options['eventignore'] = 'all'
try:
vim.current.buffer = vim.buffers[2] # Switch to buffer 2
finally:
vim.options['eventignore'] = saved_eventignore
EOF
<
vim.vars *python-vars*
vim.vvars *python-vvars*
Dictionary-like objects holding dictionaries with global (|g:|) and
vim (|v:|) variables respectively. Identical to `vim.bindeval("g:")`,
but faster.
vim.options *python-options*
Object partly supporting mapping protocol (supports setting and
getting items) providing a read-write access to global options.
Note: unlike |:set| this provides access only to global options. You
cannot use this object to obtain or set local options' values or
access local-only options in any fashion. Raises KeyError if no global
option with such name exists (i.e. does not raise KeyError for
|global-local| options and global only options, but does for window-
and buffer-local ones). Use |python-buffer| objects to access to
buffer-local options and |python-window| objects to access to
window-local options.
Type of this object is available via "Options" attribute of vim
module.
Output from Python *python-output*
Vim displays all Python code output in the Vim message area. Normal
@@ -278,6 +351,17 @@ Buffer indexes start at zero, as is normal in Python. This differs from vim
line numbers, which start from 1. This is particularly relevant when dealing
with marks (see below) which use vim line numbers.
The buffer object attributes are:
b.vars Dictionary-like object used to access
|buffer-variable|s.
b.options Mapping object (supports item getting, setting and
deleting) that provides access to buffer-local options
and buffer-local values of |global-local| options. Use
|python-window|.options if option is window-local,
this object will raise KeyError. If option is
|global-local| and local value is missing getting it
will return None.
The buffer object methods are:
b.append(str) Append a line to the buffer
b.append(str, nr) Idem, below line "nr"
@@ -296,6 +380,8 @@ Note that when adding a line it must not contain a line break character '\n'.
A trailing '\n' is allowed and ignored, so that you can do: >
:py b.append(f.readlines())
Buffer object type is available using "Buffer" attribute of vim module.
Examples (assume b is the current buffer) >
:py print b.name # write the buffer file name
:py b[0] = "hello!!!" # replace the top line
@@ -307,6 +393,9 @@ Examples (assume b is the current buffer) >
:py n = len(b) # number of lines
:py (row,col) = b.mark('a') # named mark
:py r = b.range(1,5) # a sub-range of the buffer
:py b.vars["foo"] = "bar" # assign b:foo variable
:py b.options["ff"] = "dos" # set fileformat
:py del b.options["ar"] # same as :set autoread<
==============================================================================
4. Range objects *python-range*
@@ -334,6 +423,8 @@ The range object methods are:
for Python's built-in list objects.
r.append(list, nr) Idem, after line "nr"
Range object type is available using "Range" attribute of vim module.
Example (assume r is the current range):
# Send all lines in a range to the default printer
vim.command("%d,%dhardcopy!" % (r.start+1,r.end+1))
@@ -344,6 +435,8 @@ Example (assume r is the current range):
Window objects represent vim windows. You can obtain them in a number of ways:
- via vim.current.window (|python-current|)
- from indexing vim.windows (|python-windows|)
- from indexing "windows" attribute of a tab page (|python-tabpage|)
- from the "window" attribute of a tab page (|python-tabpage|)
You can manipulate window objects only through their attributes. They have no
methods, and no sequence or other interface.
@@ -354,17 +447,58 @@ Window attributes are:
This is a tuple, (row,col).
height (read-write) The window height, in rows
width (read-write) The window width, in columns
vars (read-only) The window |w:| variables. Attribute is
unassignable, but you can change window
variables this way
options (read-only) The window-local options. Attribute is
unassignable, but you can change window
options this way. Provides access only to
window-local options, for buffer-local use
|python-buffer| and for global ones use
|python-options|. If option is |global-local|
and local value is missing getting it will
return None.
number (read-only) Window number. The first window has number 1.
This is zero in case it cannot be determined
(e.g. when the window object belongs to other
tab page).
row, col (read-only) On-screen window position in display cells.
First position is zero.
tabpage (read-only) Window tab page.
The height attribute is writable only if the screen is split horizontally.
The width attribute is writable only if the screen is split vertically.
Window object type is available using "Window" attribute of vim module.
==============================================================================
6. pyeval() and py3eval() Vim functions *python-pyeval*
6. Tab page objects *python-tabpage*
Tab page objects represent vim tab pages. You can obtain them in a number of
ways:
- via vim.current.tabpage (|python-current|)
- from indexing vim.tabpages (|python-tabpages|)
You can use this object to access tab page windows. They have no methods and
no sequence or other interfaces.
Tab page attributes are:
number The tab page number like the one returned by
|tabpagenr()|.
windows Like |python-windows|, but for current tab page.
vars The tab page |t:| variables.
window Current tabpage window.
TabPage object type is available using "TabPage" attribute of vim module.
==============================================================================
7. pyeval() and py3eval() Vim functions *python-pyeval*
To facilitate bi-directional interface, you can use |pyeval()| and |py3eval()|
functions to evaluate Python expressions and pass their values to VimL.
==============================================================================
7. Dynamic loading *python-dynamic*
8. Dynamic loading *python-dynamic*
On MS-Windows the Python library can be loaded dynamically. The |:version|
output then includes |+python/dyn|.
@@ -381,14 +515,16 @@ Currently the name is "python24.dll". That is for Python 2.4. To know for
sure edit "gvim.exe" and search for "python\d*.dll\c".
==============================================================================
8. Python 3 *python3*
9. Python 3 *python3*
*:py3* *:python3*
The |:py3| and |:python3| commands work similar to |:python|. A simple check
The `:py3` and `:python3` commands work similar to `:python`. A simple check
if the `:py3` command is working: >
:py3 print("Hello")
< *:py3file*
The |:py3file| command works similar to |:pyfile|.
The `:py3file` command works similar to `:pyfile`.
*:py3do* *E863*
The `:py3do` command works similar to `:pydo`.
Vim can be built in four ways (:version output):

View File

@@ -1,4 +1,4 @@
*indent.txt* For Vim version 7.3. Last change: 2012 Aug 30
*indent.txt* For Vim version 7.3. Last change: 2013 May 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -740,12 +740,12 @@ those useless characters first with a command like: >
:%s /\r$//g
Or, you can simply |:let| the variable PHP_removeCRwhenUnix to 1 and the
script will silently remove them when Vim loads a PHP file (at each|BufRead|).
script will silently remove them when Vim loads a PHP file (at each |BufRead|).
OPTIONS: ~
PHP indenting can be altered in several ways by modifying the values of some
variables:
global variables:
*php-comment*
To not enable auto-formating of comments by default (if you want to use your
@@ -753,10 +753,21 @@ own 'formatoptions'): >
:let g:PHP_autoformatcomment = 0
Else, 't' will be removed from the 'formatoptions' string and "qrowcb" will be
added, see|fo-table|for more information.
added, see |fo-table| for more information.
-------------
To add an extra indent to every PHP lines with N being the number of
To add extra indentation to single-line comments: >
:let g:PHP_outdentSLComments = N
With N being the number of 'shiftwidth' to add.
Only single-line comments will be affected such as: >
# Comment
// Comment
/* Comment */
-------------
To add extra indentation to every PHP lines with N being the number of
'shiftwidth' to add: >
:let g:PHP_default_indenting = N
@@ -772,7 +783,7 @@ For example, with N = 1, this will give:
$command_hist = TRUE;
?>
(Notice the extra indent between the PHP container markers and the code)
(Notice the extra indentation between the PHP container markers and the code)
-------------
To indent PHP tags as the surrounding code: >
@@ -804,8 +815,10 @@ NOTE: Indenting will be a bit slower if this option is used because some
To indent 'case:' and 'default:' statements in switch() blocks: >
:let g:PHP_vintage_case_default_indent = 1
(Since in PHP braces are not required inside 'case/default' blocks, by default they are indented at the same level than the 'switch()' to avoid
unnecessary indentation)
In PHP braces are not required inside 'case/default' blocks therefore 'case:'
and 'default:' are indented at the same level than the 'switch()' to avoid
meaningless indentation. You can use the above option to return to the
traditional way.
PYTHON *ft-python-indent*

View File

@@ -1,4 +1,4 @@
*index.txt* For Vim version 7.3. Last change: 2013 Feb 28
*index.txt* For Vim version 7.3. Last change: 2013 May 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -725,6 +725,7 @@ tag char note action in Normal mode ~
cursor N times, leave the cursor after it
|gQ| gQ switch to "Ex" mode with Vim editing
|gR| gR 2 enter Virtual Replace mode
|gT| gT go to the previous tab page
|gU| gU{motion} 2 make Nmove text uppercase
|gV| gV don't reselect the previous Visual area
when executing a mapping or menu in Select
@@ -762,6 +763,7 @@ tag char note action in Normal mode ~
|gq| gq{motion} 2 format Nmove text
|gr| gr{char} 2 virtual replace N chars with {char}
|gs| gs go to sleep for N seconds (default 1)
|gt| gt go to the next tab page
|gu| gu{motion} 2 make Nmove text lowercase
|gv| gv reselect the previous Visual area
|gw| gw{motion} 2 format Nmove text and keep cursor
@@ -1401,8 +1403,10 @@ tag command action ~
|:pwd| :pw[d] print current directory
|:py3| :py3 execute Python 3 command
|:python3| :python3 same as :py3
|:py3do| :py3d[o] execute Python 3 command for each line
|:py3file| :py3f[ile] execute Python 3 script file
|:python| :py[thon] execute Python command
|:pydo| :pyd[o] execute Python command for each line
|:pyfile| :pyf[ile] execute Python script file
|:quit| :q[uit] quit current window (when one window quit Vim)
|:quitall| :quita[ll] quit Vim

View File

@@ -1,4 +1,4 @@
*insert.txt* For Vim version 7.3. Last change: 2013 Jan 09
*insert.txt* For Vim version 7.3. Last change: 2013 Apr 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1869,13 +1869,15 @@ NOTE: These commands cannot be used with |:global| or |:vglobal|.
See |++opt| for the possible values of [++opt].
*:r!* *:read!*
:[range]r[ead] !{cmd} Execute {cmd} and insert its standard output below
:[range]r[ead] [++opt] !{cmd}
Execute {cmd} and insert its standard output below
the cursor or the specified line. A temporary file is
used to store the output of the command which is then
read into the buffer. 'shellredir' is used to save
the output of the command, which can be set to include
stderr or not. {cmd} is executed like with ":!{cmd}",
any '!' is replaced with the previous command |:!|.
See |++opt| for the possible values of [++opt].
These commands insert the contents of a file, or the output of a command,
into the buffer. They can be undone. They cannot be repeated with the "."

View File

@@ -1,4 +1,4 @@
*map.txt* For Vim version 7.3. Last change: 2012 Apr 13
*map.txt* For Vim version 7.3. Last change: 2013 May 05
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -49,7 +49,7 @@ modes.
:nm[ap] {lhs} {rhs} |mapmode-n| *:nm* *:nmap*
:vm[ap] {lhs} {rhs} |mapmode-v| *:vm* *:vmap*
:xm[ap] {lhs} {rhs} |mapmode-x| *:xm* *:xmap*
:smap {lhs} {rhs} |mapmode-s| *:smap*
:smap {lhs} {rhs} |mapmode-s| *:smap*
:om[ap] {lhs} {rhs} |mapmode-o| *:om* *:omap*
:map! {lhs} {rhs} |mapmode-ic| *:map!*
:im[ap] {lhs} {rhs} |mapmode-i| *:im* *:imap*

View File

@@ -1,4 +1,4 @@
*mbyte.txt* For Vim version 7.3. Last change: 2012 Oct 06
*mbyte.txt* For Vim version 7.3. Last change: 2013 May 18
VIM REFERENCE MANUAL by Bram Moolenaar et al.
@@ -48,9 +48,9 @@ COMPILING
If you already have a compiled Vim program, check if the |+multi_byte| feature
is included. The |:version| command can be used for this.
If +multi_byte is not included, you should compile Vim with "big" features.
You can further tune what features are included. See the INSTALL files in the
source directory.
If +multi_byte is not included, you should compile Vim with "normal", "big" or
"huge" features. You can further tune what features are included. See the
INSTALL files in the source directory.
LOCALE

View File

@@ -1,4 +1,4 @@
*options.txt* For Vim version 7.3. Last change: 2013 Mar 13
*options.txt* For Vim version 7.3. Last change: 2013 May 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -277,8 +277,10 @@ Now the 'list' option is not set, because ":set nolist" resets the global
value, ":setlocal list" only changes the local value and ":e two" gets the
global value. Note that if you do this next: >
:e one
You will not get back the 'list' value as it was the last time you edited
"one". The options local to a window are not remembered for each buffer.
You will get back the 'list' value as it was the last time you edited "one".
The options local to a window are remembered for each buffer. This also
happens when the buffer is not loaded, but they are lost when the buffer is
wiped out |:bwipe|.
*:setl* *:setlocal*
:setl[ocal] ... Like ":set" but set only the value local to the
@@ -701,7 +703,7 @@ A jump table for the options with a short description can be found at |Q_op|.
Vim may set this option automatically at startup time when Vim is
compiled with the |+termresponse| feature and if |t_u7| is set to the
sescape sequense to request cursor position report.
escape sequence to request cursor position report.
*'antialias'* *'anti'* *'noantialias'* *'noanti'*
'antialias' 'anti' boolean (default: off)
@@ -2872,7 +2874,7 @@ A jump table for the options with a short description can be found at |Q_op|.
See |file-formats| and |file-read|.
For the character encoding of the file see 'fileencoding'.
When 'binary' is set, the value of 'fileformat' is ignored, file I/O
works like it was set to "unix'.
works like it was set to "unix".
This option is set automatically when starting to edit a file and
'fileformats' is not empty and 'binary' is off.
When this option is set, after starting to edit a file, the 'modified'
@@ -2941,6 +2943,14 @@ A jump table for the options with a short description can be found at |Q_op|.
NOTE: This option is set to the Vi default value when 'compatible' is
set and to the Vim default value when 'compatible' is reset.
*'fileignorecase'* *'fic'* *'nofileignorecase'* *'nofic'*
'fileignorecase' 'fic' boolean (default on for systems where case in file
names is normally ignored)
global
{not in Vi}
When set case is ignored when using file names and directories.
See 'wildignorecase' for only ignoring case when doing completion.
*'filetype'* *'ft'*
'filetype' 'ft' string (default: "")
local to buffer
@@ -5506,6 +5516,19 @@ A jump table for the options with a short description can be found at |Q_op|.
matches will be highlighted. This is used to avoid that Vim hangs
when using a very complicated pattern.
*'regexpengine''* *'re'*
'regexpengine' 're' number (default 0)
global
{not in Vi}
This selects the default regexp engine. |two-engines|
The possible values are:
0 automatic selection
1 old engine
2 NFA engine
Note that when using the NFA engine and the pattern contains something
that is not supported the pattern will not match. This is only useful
for debugging the regexp engine.
*'relativenumber'* *'rnu'* *'norelativenumber'* *'nornu'*
'relativenumber' 'rnu' boolean (default off)
local to window
@@ -7903,7 +7926,7 @@ A jump table for the options with a short description can be found at |Q_op|.
global
{not in Vi}
When set case is ignored when completing file names and directories.
Has no effect on systems where file name case is generally ignored.
Has no effect when 'fileignorecase' is set.
Does not apply when the shell is used to expand wildcards, which
happens when there are special characters.

View File

@@ -1,4 +1,4 @@
*pattern.txt* For Vim version 7.3. Last change: 2013 Jan 25
*pattern.txt* For Vim version 7.3. Last change: 2013 May 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -350,6 +350,27 @@ For starters, read chapter 27 of the user manual |usr_27.txt|.
or \z( pattern \) |/\z(|
*/\%#=* *two-engines*
Vim includes two regexp engines:
1. An old, backtracking engine that supports everything.
2. A new, NFA engine that works much faster on some patterns, but does not
support everything.
Vim will automatically select the right engine for you. However, if you run
into a problem or want to specifically select one engine or the other, you can
prepend one of the following to the pattern:
\%#=0 Force automatic selection. Only has an effect when
'regexpengine' has been set to a non-zero value.
\%#=1 Force using the old engine.
\%#=2 Force using the NFA engine.
You can also use the 'regexpengine' option to change the default.
*E864* *E868* *E874* *E875* *E876* *E877* *E878*
If selecting the NFA engine and it runs into something that is not implemented
the pattern will not match. This is only useful when debugging Vim.
==============================================================================
3. Magic */magic*
@@ -396,9 +417,10 @@ pattern.
==============================================================================
4. Overview of pattern items *pattern-overview*
*E865* *E866* *E867* *E869*
Overview of multi items. */multi* *E61* *E62*
More explanation and examples below, follow the links. *E64*
More explanation and examples below, follow the links. *E64* *E871*
multi ~
'magic' 'nomagic' matches of the preceding atom ~
@@ -508,12 +530,14 @@ Character classes {not in Vi}: */character-classes*
|/\c| \c \c ignore case, do not use the 'ignorecase' option
|/\C| \C \C match case, do not use the 'ignorecase' option
|/\Z| \Z \Z ignore differences in Unicode "combining characters".
Useful when searching voweled Hebrew or Arabic text.
|/\m| \m \m 'magic' on for the following chars in the pattern
|/\M| \M \M 'magic' off for the following chars in the pattern
|/\v| \v \v the following chars in the pattern are "very magic"
|/\V| \V \V the following chars in the pattern are "very nomagic"
|/\Z| \Z \Z ignore differences in Unicode "combining characters".
Useful when searching voweled Hebrew or Arabic text.
|/\%#=| \%#=1 \%#=1 select regexp engine |/zero-width|
|/\%d| \%d \%d match specified decimal character (eg \%d123)
|/\%x| \%x \%x match specified hex character (eg \%x2a)
@@ -581,7 +605,7 @@ overview.
\? Just like \=. Cannot be used when searching backwards with the "?"
command. {not in Vi}
*/\{* *E58* *E60* *E554*
*/\{* *E58* *E60* *E554* *E870*
\{n,m} Matches n to m of the preceding atom, as many as possible
\{n} Matches n of the preceding atom
\{n,} Matches at least n of the preceding atom, as many as possible
@@ -962,7 +986,8 @@ match ASCII characters, as indicated by the range.
~ matches the last given substitute string */~* */\~*
\(\) A pattern enclosed by escaped parentheses. */\(* */\(\)* */\)*
E.g., "\(^a\)" matches 'a' at the start of a line. *E51* *E54* *E55*
E.g., "\(^a\)" matches 'a' at the start of a line.
*E51* *E54* *E55* *E872* *E873*
\1 Matches the same string that was matched by */\1* *E65*
the first sub-expression in \( and \). {not in Vi}
@@ -1061,6 +1086,8 @@ x A single character, with no special meaning, matches itself
any character that's not in "^]-\bdertnoUux". "[\xyz]" matches '\',
'x', 'y' and 'z'. It's better to use "\\" though, future expansions
may use other characters after '\'.
- Omitting the trailing ] is not considered an error. "[]" works like
"[]]", it matches the ']' character.
- The following translations are accepted when the 'l' flag is not
included in 'cpoptions' {not in Vi}:
\e <Esc>

View File

@@ -1,11 +1,11 @@
*pi_getscript.txt* For Vim version 7.0. Last change: 2011 Jun 23
*pi_getscript.txt* For Vim version 7.0. Last change: 2012 Apr 07
>
GETSCRIPT REFERENCE MANUAL by Charles E. Campbell, Jr.
GETSCRIPT REFERENCE MANUAL by Charles E. Campbell
<
Authors: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamilyA.Mbiz>
Authors: Charles E. Campbell <NdrOchip@ScampbellPfamilyA.Mbiz>
(remove NOSPAM from the email address)
*GetLatestVimScripts-copyright*
Copyright: (c) 2004-2012 by Charles E. Campbell, Jr. *glvs-copyright*
Copyright: (c) 2004-2012 by Charles E. Campbell *glvs-copyright*
The VIM LICENSE (see |copyright|) applies to the files in this
package, including getscriptPlugin.vim, getscript.vim,
GetLatestVimScripts.dist, and pi_getscript.txt, except use "getscript"
@@ -343,6 +343,11 @@ after/syntax/c.vim contained in it to overwrite a user's c.vim.
default= $HOME/vimfiles (windows)
Override where :AutoInstall: scripts will be installed.
Doesn't override vimball installation.
>
g:GetLatestVimScripts_scriptaddr
< default='http://vim.sourceforge.net/script.php?script_id='
Override this if your system needs
... ='http://vim.sourceforge.net/script/script.php?script_id='
==============================================================================
8. GetLatestVimScripts Algorithm *glvs-algorithm* *glvs-alg*
@@ -380,7 +385,11 @@ The AutoInstall process will:
==============================================================================
9. GetLatestVimScripts History *getscript-history* *glvs-hist* {{{1
v44 Jun 23, 2011 : * handles additional decompression options for tarballs
v35 Apr 07, 2012 : * (MengHuan Yu) pointed out that the script url has
changed (somewhat). However, it doesn't work, and
the original one does (under Linux). I'll make it
yet-another-option.
v34 Jun 23, 2011 : * handles additional decompression options for tarballs
(tgz taz tbz txz)
v33 May 31, 2011 : * using fnameescape() instead of escape()
* *.xz support

View File

@@ -1,12 +1,12 @@
*pi_netrw.txt* For Vim version 7.3. Last change: 2012 Oct 25
*pi_netrw.txt* For Vim version 7.3. Last change: 2013 May 18
-----------------------------------------------------
NETRW REFERENCE MANUAL by Charles E. Campbell, Jr.
-----------------------------------------------------
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
------------------------------------------------
NETRW REFERENCE MANUAL by Charles E. Campbell
------------------------------------------------
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first)
Copyright: Copyright (C) 1999-2012 Charles E Campbell, Jr *netrw-copyright*
Copyright: Copyright (C) 1999-2013 Charles E Campbell *netrw-copyright*
The VIM LICENSE applies to the files in this package, including
netrw.vim, pi_netrw.txt, netrwFileHandlers.vim, netrwSettings.vim, and
syntax/netrw.vim. Like anything else that's free, netrw.vim and its
@@ -25,83 +25,87 @@ Copyright: Copyright (C) 1999-2012 Charles E Campbell, Jr *netrw-copyright*
==============================================================================
1. Contents *netrw-contents* {{{1
1. Contents.............................................|netrw-contents|
2. Starting With Netrw..................................|netrw-start|
3. Netrw Reference......................................|netrw-ref|
EXTERNAL APPLICATIONS AND PROTOCOLS................|netrw-externapp|
READING............................................|netrw-read|
WRITING............................................|netrw-write|
SOURCING...........................................|netrw-source|
DIRECTORY LISTING..................................|netrw-dirlist|
CHANGING THE USERID AND PASSWORD...................|netrw-chgup|
VARIABLES AND SETTINGS.............................|netrw-variables|
PATHS..............................................|netrw-path|
4. Network-Oriented File Transfer.......................|netrw-xfer|
NETRC..............................................|netrw-netrc|
PASSWORD...........................................|netrw-passwd|
5. Activation...........................................|netrw-activate|
6. Transparent Remote File Editing......................|netrw-transparent|
7. Ex Commands..........................................|netrw-ex|
8. Variables and Options................................|netrw-variables|
9. Browsing.............................................|netrw-browse|
Introduction To Browsing...........................|netrw-intro-browse|
Quick Reference: Maps..............................|netrw-browse-maps|
Quick Reference: Commands..........................|netrw-browse-cmds|
Bookmarking A Directory............................|netrw-mb|
Browsing...........................................|netrw-cr|
Browsing With A Horizontally Split Window..........|netrw-o|
Browsing With A New Tab............................|netrw-t|
Browsing With A Vertically Split Window............|netrw-v|
Change Listing Style.(thin wide long tree).........|netrw-i|
Changing To A Bookmarked Directory.................|netrw-gb|
Changing To A Predecessor Directory................|netrw-u|
Changing To A Successor Directory..................|netrw-U|
Customizing Browsing With A User Function..........|netrw-x|
Deleting Bookmarks.................................|netrw-mB|
Deleting Files Or Directories......................|netrw-D|
Directory Exploring Commands.......................|netrw-explore|
Exploring With Stars and Patterns..................|netrw-star|
Displaying Information About File..................|netrw-qf|
Edit File Or Directory Hiding List.................|netrw-ctrl-h|
Editing The Sorting Sequence.......................|netrw-S|
Forcing treatment as a file or directory...........|netrw-gd| |netrw-gf|
Going Up...........................................|netrw--|
Hiding Files Or Directories........................|netrw-a|
Improving Browsing.................................|netrw-ssh-hack|
Listing Bookmarks And History......................|netrw-qb|
Making A New Directory.............................|netrw-d|
Making The Browsing Directory The Current Directory|netrw-c|
Marking Files......................................|netrw-mf|
Marking Files By Regular Expression................|netrw-mr|
Marked Files: Arbitrary Command....................|netrw-mx|
Marked Files: Compression And Decompression........|netrw-mz|
Marked Files: Copying..............................|netrw-mc|
Marked Files: Diff.................................|netrw-md|
Marked Files: Editing..............................|netrw-me|
Marked Files: Grep.................................|netrw-mg|
Marked Files: Hiding and Unhiding by Suffix........|netrw-mh|
Marked Files: Moving...............................|netrw-mm|
Marked Files: Printing.............................|netrw-mp|
Marked Files: Sourcing.............................|netrw-ms|
Marked Files: Tagging..............................|netrw-mT|
Marked Files: Setting the Target Directory.........|netrw-mt|
Marked Files: Unmarking............................|netrw-mu|
Netrw Browser Variables............................|netrw-browser-var|
Netrw Browsing And Option Incompatibilities........|netrw-incompatible|
Netrw Settings Window..............................|netrw-settings-window|
Obtaining A File...................................|netrw-O|
Preview Window.....................................|netrw-p|
Previous Window....................................|netrw-P|
Refreshing The Listing.............................|netrw-ctrl-l|
Renaming Files Or Directories......................|netrw-move|
Reversing Sorting Order............................|netrw-r|
Selecting Sorting Style............................|netrw-s|
Setting Editing Window.............................|netrw-C|
10. Problems and Fixes...................................|netrw-problems|
11. Debugging Netrw Itself...............................|netrw-debug|
12. History..............................................|netrw-history|
13. Todo.................................................|netrw-todo|
14. Credits..............................................|netrw-credits|
1. Contents..............................................|netrw-contents|
2. Starting With Netrw...................................|netrw-start|
3. Netrw Reference.......................................|netrw-ref|
EXTERNAL APPLICATIONS AND PROTOCOLS.................|netrw-externapp|
READING.............................................|netrw-read|
WRITING.............................................|netrw-write|
SOURCING............................................|netrw-source|
DIRECTORY LISTING...................................|netrw-dirlist|
CHANGING THE USERID AND PASSWORD....................|netrw-chgup|
VARIABLES AND SETTINGS..............................|netrw-variables|
PATHS...............................................|netrw-path|
4. Network-Oriented File Transfer........................|netrw-xfer|
NETRC...............................................|netrw-netrc|
PASSWORD............................................|netrw-passwd|
5. Activation............................................|netrw-activate|
6. Transparent Remote File Editing.......................|netrw-transparent|
7. Ex Commands...........................................|netrw-ex|
8. Variables and Options.................................|netrw-variables|
9. Browsing..............................................|netrw-browse|
Introduction To Browsing............................|netrw-intro-browse|
Quick Reference: Maps...............................|netrw-browse-maps|
Quick Reference: Commands...........................|netrw-browse-cmds|
Bookmarking A Directory.............................|netrw-mb|
Browsing............................................|netrw-cr|
Browsing With A Horizontally Split Window...........|netrw-o|
Browsing With A New Tab.............................|netrw-t|
Browsing With A Vertically Split Window.............|netrw-v|
Change Listing Style.(thin wide long tree)..........|netrw-i|
Changing To A Bookmarked Directory..................|netrw-gb|
Changing To A Predecessor Directory.................|netrw-u|
Changing To A Successor Directory...................|netrw-U|
Customizing Browsing With A User Function...........|netrw-x|
Deleting Bookmarks..................................|netrw-mB|
Deleting Files Or Directories.......................|netrw-D|
Directory Exploring Commands........................|netrw-explore|
Exploring With Stars and Patterns...................|netrw-star|
Displaying Information About File...................|netrw-qf|
Edit File Or Directory Hiding List..................|netrw-ctrl-h|
Editing The Sorting Sequence........................|netrw-S|
Forcing treatment as a file or directory............|netrw-gd| |netrw-gf|
Going Up............................................|netrw--|
Hiding Files Or Directories.........................|netrw-a|
Improving Browsing..................................|netrw-ssh-hack|
Listing Bookmarks And History.......................|netrw-qb|
Making A New Directory..............................|netrw-d|
Making The Browsing Directory The Current Directory.|netrw-c|
Marking Files.......................................|netrw-mf|
Unmarking Files.....................................|netrw-mF|
Marking Files By QuickFix List......................|netrw-qF|
Marking Files By Regular Expression.................|netrw-mr|
Marked Files: Arbitrary Command.....................|netrw-mx|
Marked Files: Compression And Decompression.........|netrw-mz|
Marked Files: Copying...............................|netrw-mc|
Marked Files: Diff..................................|netrw-md|
Marked Files: Editing...............................|netrw-me|
Marked Files: Grep..................................|netrw-mg|
Marked Files: Hiding and Unhiding by Suffix.........|netrw-mh|
Marked Files: Moving................................|netrw-mm|
Marked Files: Printing..............................|netrw-mp|
Marked Files: Sourcing..............................|netrw-ms|
Marked Files: Setting the Target Directory..........|netrw-mt|
Marked Files: Tagging...............................|netrw-mT|
Marked Files: Target Directory Using Bookmarks......|netrw-Tb|
Marked Files: Target Directory Using History........|netrw-Th|
Marked Files: Unmarking.............................|netrw-mu|
Netrw Browser Variables.............................|netrw-browser-var|
Netrw Browsing And Option Incompatibilities.........|netrw-incompatible|
Netrw Settings Window...............................|netrw-settings-window|
Obtaining A File....................................|netrw-O|
Preview Window......................................|netrw-p|
Previous Window.....................................|netrw-P|
Refreshing The Listing..............................|netrw-ctrl-l|
Reversing Sorting Order.............................|netrw-r|
Renaming Files Or Directories.......................|netrw-R|
Selecting Sorting Style.............................|netrw-s|
Setting Editing Window..............................|netrw-C|
10. Problems and Fixes....................................|netrw-problems|
11. Debugging Netrw Itself................................|netrw-debug|
12. History...............................................|netrw-history|
13. Todo..................................................|netrw-todo|
14. Credits...............................................|netrw-credits|
{Vi does not have any of this}
@@ -142,13 +146,13 @@ and has lines resembling >
<
Windows' ftp doesn't support .netrc; however, one may have in one's .vimrc: >
let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE'
let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\MyUserName\MACHINE'
<
Netrw will substitute the host's machine name for MACHINE from the url it is
Netrw will substitute the host's machine name for "MACHINE" from the url it is
attempting to open, and so one may specify >
userid
password
for each site in a separate file in c:\Users\Myself\.
for each site in a separate file: c:\Users\MyUserName\MachineName.
Now about browsing -- when you just want to look around before editing a
file. For browsing on your current host, just "edit" a directory: >
@@ -282,7 +286,7 @@ SOURCING *netrw-source* {{{2
:Nsource "scp://[user@]machine[[:#]port]/path" uses scp
:Nsource "sftp://[user@]machine/path" uses sftp
DIRECTORY LISTING *netrw-trailingslash* *netrw-dirlist* {{{2
DIRECTORY LISTING *netrw-trailingslash* *netrw-dirlist* {{{2
One may browse a directory to get a listing by simply attempting to
edit the directory: >
@@ -317,6 +321,8 @@ CHANGING USERID AND PASSWORD *netrw-chgup* *netrw-userpass* {{{2
:call NetUserPass("uid") -- prompts for password
:call NetUserPass("uid","password") -- sets global uid and password
(Related topics: |ftp| |netrw-userpass| |netrw-start|)
NETRW VARIABLES AND SETTINGS *netrw-variables* {{{2
(Also see:
|netrw-browser-var| : netrw browser option variables
@@ -538,8 +544,8 @@ netrw will substitute the current machine name requested for ftp connections
for MACHINE. Hence one can have multiple machine.ftp files containing login
and password for ftp. Example: >
let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE'
vim ftp://myhost.somewhere.net/
let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE'
vim ftp://myhost.somewhere.net/
will use a file >
C:\Users\Myself\myhost.ftp
<
@@ -923,6 +929,7 @@ itself:
endfunction
endif
>
(Related topics: |ftp| |netrw-userpass| |netrw-start|)
==============================================================================
9. Browsing *netrw-browsing* *netrw-browse* *netrw-help* {{{1
@@ -1086,8 +1093,8 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
<2-leftmouse> (gvim only) when:
* in a netrw-selected file, AND
* |g:netrw_retmap| == 1 AND
* the user doesn't already have a <2-leftmouse> mapping
defined before netrw is autoloaded,
* the user doesn't already have a <2-leftmouse>
mapping defined before netrw is autoloaded,
then a double clicked leftmouse button will return
to the netrw browser window. See |g:netrw_retmap|.
<s-leftmouse> (gvim only) like mf, will mark files
@@ -1183,17 +1190,18 @@ cursor at the top.
Associated setting variables: |g:netrw_alto| |g:netrw_winsize|
Related Actions |netrw-cr| |netrw-p| |netrw-t| |netrw-T| |netrw-v|
Related Actions |netrw-cr| |netrw-p| |netrw-t| |netrw-v|
Associated setting variables:
|g:netrw_alto| control above/below splitting
|g:netrw_winsize| control initial sizing
BROWSING WITH A NEW TAB *netrw-t* *netrw-T* {{{2
BROWSING WITH A NEW TAB *netrw-t*
Normally one enters a file or directory using the <cr>. The "t" map
allows one to open a new window holding the new directory listing or file in
a new tab. The "T" version puts the file or directory into a background tab
(see |gT|)
a new tab.
If you'd like to have the new listing in a background tab, use |gT|.
Related Actions |netrw-cr| |netrw-o| |netrw-p| |netrw-v|
Associated setting variables:
@@ -1213,7 +1221,7 @@ will split the screen, but the same buffer will be shown twice.
Associated setting variable: |g:netrw_altv| |g:netrw_winsize|
Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-T| |netrw-v|
Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-v|
Associated setting variables:
|g:netrw_altv| control right/left splitting
|g:netrw_winsize| control initial sizing
@@ -1276,6 +1284,8 @@ To change directory back to a bookmarked directory, use
{cnt}gb
Any count may be used to reference any of the bookmarks.
Note that |netrw-qb| shows both bookmarks and history; to go
to a location stored in the history see |netrw-u| and |netrw-U|.
Related Topics:
|netrw-mB| how to delete bookmarks
@@ -1291,6 +1301,13 @@ list (unless |g:netrw_dirhistmax| is zero; by default, it's ten). With the
"u" map, one can change to an earlier directory (predecessor). To do
the opposite, see |netrw-U|.
The "u" map also accepts counts to go back in the history several slots.
For your convenience, |netrw-qb| lists the history number which can be
re-used in that count.
See |g:netrw_dirhistmax| for how to control the quantity of history stack
slots.
CHANGING TO A SUCCESSOR DIRECTORY *netrw-U* *netrw-downdir* {{{2
@@ -1298,6 +1315,11 @@ With the "U" map, one can change to a later directory (successor).
This map is the opposite of the "u" map. (see |netrw-u|) Use the
q map to list both the bookmarks and history. (see |netrw-qb|)
The "U" map also accepts counts to go forward in the history several slots.
See |g:netrw_dirhistmax| for how to control the quantity of history stack
slots.
NETRW CLEAN *netrw-clean* *:NetrwClean*
@@ -1674,7 +1696,7 @@ As a quick shortcut, one may press >
to toggle between hiding files which begin with a period (dot) and not hiding
them.
Associated setting variable: |g:netrw_list_hide|
Associated setting variable: |g:netrw_list_hide| |g:netrw_hide|
Associated topics: |netrw-a| |netrw-ctrl-h| |netrw-mh|
IMPROVING BROWSING *netrw-listhack* *netrw-ssh-hack* {{{2
@@ -1785,9 +1807,10 @@ Associated setting variables: |g:netrw_localmkdir| |g:netrw_mkdir_cmd|
MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-c* {{{2
By default, |g:netrw_keepdir| is 1. This setting means that the current
directory will not track the browsing directory.
directory will not track the browsing directory. (done for backwards
compatibility with v6's file explorer).
Setting g:netrw_keepdir to 0 tells netrw to make vim's current directory to
Setting g:netrw_keepdir to 0 tells netrw to make vim's current directory
track netrw's browsing directory.
However, given the default setting for g:netrw_keepdir of 1 where netrw
@@ -1810,6 +1833,7 @@ maps make use of marked files:
|netrw-mc| Copy marked files to target
|netrw-md| Apply vimdiff to marked files
|netrw-me| Edit marked files
|netrw-mF| Unmark marked files
|netrw-mg| Apply vimgrep to marked files
|netrw-mm| Move marked files
|netrw-mp| Print marked files
@@ -1817,6 +1841,7 @@ maps make use of marked files:
|netrw-mT| Generate tags using marked files
|netrw-mx| Apply shell command to marked files
|netrw-mz| Compress/Decompress marked files
|netrw-qF| Mark files using quickfix list
|netrw-O| Obtain marked files
|netrw-R| Rename marked files
@@ -1844,6 +1869,22 @@ commands which operate on marked files use one or the other of the marked file
lists.
UNMARKING FILES *netrw-mF* {{{2
(also see |netrw-mf|)
This command will unmark all files in the current buffer. One may also use
mf (|netrw-mf|) on a specific file to unmark just that file.
MARKING FILES BY QUICKFIX LIST *netrw-qF*
(also see |netrw-mf|)
One may convert the |quickfix-error-lists| into a marked file list using
"qF". You may then proceed with commands such as me (|netrw-me|) to
edit them. Quickfix error lists are generated, for example, by calls
to |:vimgrep|.
MARKING FILES BY REGULAR EXPRESSION *netrw-mr* {{{2
(also see |netrw-mf|)
@@ -1902,17 +1943,27 @@ MARKED FILES: EDITING *netrw-me* {{{2
This command will place the marked files on the |arglist| and commence
editing them. One may return the to explorer window with |:Rexplore|.
(use |:n| and |:p| to edit next and previous files in the arglist)
MARKED FILES: GREP *netrw-mg* {{{2
(See |netrw-mf| and |netrw-mr| for how to mark files)
(uses the global marked file list)
This command will apply |:vimgrep| to the marked files. The command will ask
for the requested pattern; one may enter: >
This command will apply |:vimgrep| to the marked files.
The command will ask for the requested pattern; one may then enter: >
/pattern/[g][j]
! /pattern/[g][j]
pattern
<
In the cases of "j" option usage as shown above, "mg" will winnow the current
marked file list to just those possessing the specified pattern.
Thus, one may use >
mr ...file-pattern
mg ..contents-pattern
to have a marked file list satisfying the file-pattern but containing the
desried contents-pattern.
MARKED FILES: HIDING AND UNHIDING BY SUFFIX *netrw-mh* {{{2
(See |netrw-mf| and |netrw-mr| for how to mark files)
(uses the local marked file list)
@@ -1958,6 +2009,36 @@ MARKED FILES: SOURCING *netrw-ms* {{{2
Netrw will source the marked files (using vim's |:source| command)
MARKED FILES: SETTING THE TARGET DIRECTORY *netrw-mt* {{{2
(See |netrw-mf| and |netrw-mr| for how to mark files)
Set the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|):
* If the cursor is atop a file name, then the netrw window's currently
displayed directory is used for the copy/move-to target.
* Also, if the cursor is in the banner, then the netrw window's currently
displayed directory is used for the copy/move-to target.
Unless the target already is the current directory. In which case,
remove the target.
* However, if the cursor is atop a directory name, then that directory is
used for the copy/move-to target
There is only one copy/move-to target per vim session; ie. the target is a
script variable (see |s:var|) and is shared between all netrw windows (in an
instance of vim).
When using menus and gvim, netrw provides a "Targets" entry which allows one
to pick a target from the list of bookmarks and history.
Related topics:
Marking Files......................................|netrw-mf|
Marking Files by Regular Expression................|netrw-mr|
Marked Files: Target Directory Using Bookmarks.....|netrw-Tb|
Marked Files: Target Directory Using History.......|netrw-Th|
MARKED FILES: TAGGING *netrw-mT* {{{2
(See |netrw-mf| and |netrw-mr| for how to mark files)
(uses the global marked file list)
@@ -1983,24 +2064,37 @@ edit the desired file and go to the tag.
Associated setting variables: |g:netrw_ctags| |g:netrw_ssh_cmd|
MARKED FILES: TARGET DIRECTORY USING BOOKMARKS *netrw-Tb* {{{2
MARKED FILES: SETTING THE TARGET DIRECTORY *netrw-mt* {{{2
(See |netrw-mf| and |netrw-mr| for how to mark files)
Sets the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|).
Set the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|):
The |netrw-qb| map will give you a list of bookmarks (and history).
One may choose one of the bookmarks to become your marked file
target by using [count]Tb (default count: 1).
* if the cursor is atop a file name, then the netrw window's currently
displayed directory is used for the copy/move-to target.
Related topics:
Listing Bookmarks and History......................|netrw-qb|
Marked Files: Setting The Target Directory.........|netrw-mt|
Marked Files: Target Directory Using History.......|netrw-Th|
Marking Files......................................|netrw-mf|
Marking Files by Regular Expression................|netrw-mr|
* also, if the cursor is in the banner, then the netrw window's currently
displayed directory is used for the copy/move-to target.
* however, if the cursor is atop a directory name, then that directory is
used for the copy/move-to target
MARKED FILES: TARGET DIRECTORY USING HISTORY *netrw-Th* {{{2
Sets the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|).
The |netrw-qb| map will give you a list of history (and bookmarks).
One may choose one of the history entries to become your marked file
target by using [count]Th (default count: 0; ie. the current directory).
Related topics:
Listing Bookmarks and History......................|netrw-qb|
Marked Files: Setting The Target Directory.........|netrw-mt|
Marked Files: Target Directory Using Bookmarks.....|netrw-Tb|
Marking Files......................................|netrw-mf|
Marking Files by Regular Expression................|netrw-mr|
There is only one copy/move-to target per vim session; ie. the target is a
script variable (see |s:var|) and is shared between all netrw windows (in an
instance of vim).
MARKED FILES: UNMARKING *netrw-mu* {{{2
(See |netrw-mf| and |netrw-mr| for how to mark files)
@@ -2020,21 +2114,25 @@ your browsing preferences. (see also: |netrw-settings|)
--- -----------
Var Explanation
--- -----------
< *g:netrw_alto* change from above splitting to below splitting
< *g:netrw_alto* change from above splitting to below splitting
by setting this variable (see |netrw-o|)
default: =&sb (see |'sb'|)
*g:netrw_altv* change from left splitting to right splitting
*g:netrw_altv* change from left splitting to right splitting
by setting this variable (see |netrw-v|)
default: =&spr (see |'spr'|)
*g:netrw_banner* enable/suppress the banner
*g:netrw_banner* enable/suppress the banner
=0: suppress the banner
=1: banner is enabled (default)
NOTE: suppressing the banner is a new feature
which may cause problems.
*g:netrw_browse_split* when browsing, <cr> will open the file by:
*g:netrw_bannerbackslash* if this variable exists and is not zero, the
banner will be displayed with backslashes
rather than forward slashes.
*g:netrw_browse_split* when browsing, <cr> will open the file by:
=0: re-using the same window
=1: horizontally splitting the window first
=2: vertically splitting the window first
@@ -2044,7 +2142,7 @@ your browsing preferences. (see also: |netrw-settings|)
to get vertical splitting instead of
horizontal splitting.
*g:netrw_browsex_viewer* specify user's preference for a viewer: >
*g:netrw_browsex_viewer* specify user's preference for a viewer: >
"kfmclient exec"
"gnome-open"
< If >
@@ -2053,15 +2151,15 @@ your browsing preferences. (see also: |netrw-settings|)
a script/function to handle the given
extension. (see |netrw_filehandler|).
*g:netrw_chgperm* Unix/Linux: "chmod PERM FILENAME"
*g:netrw_chgperm* Unix/Linux: "chmod PERM FILENAME"
Windows: "cacls FILENAME /e /p PERM"
Used to change access permission for a file.
*g:netrw_compress* ="gzip"
*g:netrw_compress* ="gzip"
Will compress marked files with this
command
*g:Netrw_corehandler* Allows one to specify something additional
*g:Netrw_corehandler* Allows one to specify something additional
to do when handling <core> files via netrw's
browser's "x" command (see |netrw-x|). If
present, g:Netrw_corehandler specifies
@@ -2070,10 +2168,11 @@ your browsing preferences. (see also: |netrw-settings|)
is required its holding a function reference)
*g:netrw_ctags* ="ctags"
The default external program used to create tags
*g:netrw_ctags* ="ctags"
The default external program used to create
tags
*g:netrw_cursor* = 2 (default)
*g:netrw_cursor* = 2 (default)
This option controls the use of the
|'cursorline'| (cul) and |'cursorcolumn'|
(cuc) settings by netrw:
@@ -2091,7 +2190,7 @@ your browsing preferences. (see also: |netrw-settings|)
cul : |'cursorline'| locally set
cuc : |'cursorcolumn'| locally set
*g:netrw_decompress* = { ".gz" : "gunzip" ,
*g:netrw_decompress* = { ".gz" : "gunzip" ,
".bz2" : "bunzip2" ,
".zip" : "unzip" ,
".tar" : "tar -xf"}
@@ -2112,7 +2211,7 @@ your browsing preferences. (see also: |netrw-settings|)
1: warnings
2: errors
*g:netrw_fastbrowse* =0: slow speed directory browsing;
*g:netrw_fastbrowse* =0: slow speed directory browsing;
never re-uses directory listings,
always obtains directory listings.
=1: medium speed directory browsing;
@@ -2136,10 +2235,10 @@ your browsing preferences. (see also: |netrw-settings|)
trading off accuracy (ie. up-to-date listing)
versus speed.
*g:netrw_fname_escape* =' ?&;%'
*g:netrw_fname_escape* =' ?&;%'
Used on filenames before remote reading/writing
*g:netrw_ftp_browse_reject* ftp can produce a number of errors and warnings
*g:netrw_ftp_browse_reject* ftp can produce a number of errors and warnings
that can show up as "directories" and "files"
in the listing. This pattern is used to
remove such embedded messages. By default its
@@ -2152,19 +2251,19 @@ your browsing preferences. (see also: |netrw-settings|)
: connect to address [0-9a-fA-F:]*
: No route to host$'
*g:netrw_ftp_list_cmd* options for passing along to ftp for directory
*g:netrw_ftp_list_cmd* options for passing along to ftp for directory
listing. Defaults:
unix or g:netrw_cygwin set: : "ls -lF"
otherwise "dir"
*g:netrw_ftp_sizelist_cmd* options for passing along to ftp for directory
*g:netrw_ftp_sizelist_cmd* options for passing along to ftp for directory
listing, sorted by size of file.
Defaults:
unix or g:netrw_cygwin set: : "ls -slF"
otherwise "dir"
*g:netrw_ftp_timelist_cmd* options for passing along to ftp for directory
*g:netrw_ftp_timelist_cmd* options for passing along to ftp for directory
listing, sorted by time of last modification.
Defaults:
unix or g:netrw_cygwin set: : "ls -tlF"
@@ -2175,61 +2274,64 @@ your browsing preferences. (see also: |netrw-settings|)
These characters in directory names are
escaped before applying glob()
*g:netrw_hide* if true, the hiding list is used
*g:netrw_hide* Controlled by the "a" map (see |netrw-a|)
=0 : show all
=1 : show not-hidden files
=2 : show hidden files only
default: =0
*g:netrw_home* The home directory for where bookmarks and
*g:netrw_home* The home directory for where bookmarks and
history are saved (as .netrwbook and
.netrwhist).
default: the first directory on the
|'runtimepath'|
*g:netrw_keepdir* =1 (default) keep current directory immune from
*g:netrw_keepdir* =1 (default) keep current directory immune from
the browsing directory.
=0 keep the current directory the same as the
browsing directory.
The current browsing directory is contained in
b:netrw_curdir (also see |netrw-c|)
*g:netrw_list_cmd* command for listing remote directories
*g:netrw_list_cmd* command for listing remote directories
default: (if ssh is executable)
"ssh HOSTNAME ls -FLa"
*g:netrw_liststyle* Set the default listing style:
*g:netrw_liststyle* Set the default listing style:
= 0: thin listing (one file per line)
= 1: long listing (one file per line with time
stamp information and file size)
= 2: wide listing (multiple files in columns)
= 3: tree style listing
*g:netrw_list_hide* comma separated pattern list for hiding files
*g:netrw_list_hide* comma separated pattern list for hiding files
Patterns are regular expressions (see |regexp|)
Example: let g:netrw_list_hide= '.*\.swp$'
default: ""
*g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin
*g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin
="copy" Windows
Copies marked files (|netrw-mf|) to target
directory (|netrw-mt|, |netrw-mc|)
*g:netrw_localmovecmd* ="mv" Linux/Unix/MacOS/Cygwin
*g:netrw_localmkdir* command for making a local directory
default: "mkdir"
*g:netrw_localmovecmd* ="mv" Linux/Unix/MacOS/Cygwin
="move" Windows
Moves marked files (|netrw-mf|) to target
directory (|netrw-mt|, |netrw-mm|)
*g:netrw_localmkdir* command for making a local directory
default: "mkdir"
*g:netrw_localrmdir* remove directory command (rmdir)
*g:netrw_localrmdir* remove directory command (rmdir)
default: "rmdir"
*g:netrw_maxfilenamelen* =32 by default, selected so as to make long
*g:netrw_maxfilenamelen* =32 by default, selected so as to make long
listings fit on 80 column displays.
If your screen is wider, and you have file
or directory names longer than 32 bytes,
you may set this option to keep listings
columnar.
*g:netrw_mkdir_cmd* command for making a remote directory
*g:netrw_mkdir_cmd* command for making a remote directory
via ssh (also see |g:netrw_remote_mkdir|)
default: "ssh USEPORT HOSTNAME mkdir"
@@ -2246,11 +2348,11 @@ your browsing preferences. (see also: |netrw-settings|)
evaluation will be suppressed
(see |'ballooneval'|)
*g:netrw_remote_mkdir* command for making a local directory
*g:netrw_remote_mkdir* command for making a local directory
via ftp (also see |g:netrw_mkdir_cmd|)
default: "mkdir"
*g:netrw_retmap* if it exists and is set to one, then:
*g:netrw_retmap* if it exists and is set to one, then:
* if in a netrw-selected file, AND
* no normal-mode <2-leftmouse> mapping exists,
then the <2-leftmouse> will be mapped for easy
@@ -2269,22 +2371,22 @@ your browsing preferences. (see also: |netrw-settings|)
default: =0
*g:netrw_rm_cmd* command for removing files
*g:netrw_rm_cmd* command for removing files
default: "ssh USEPORT HOSTNAME rm"
*g:netrw_rmdir_cmd* command for removing directories
*g:netrw_rmdir_cmd* command for removing directories
default: "ssh USEPORT HOSTNAME rmdir"
*g:netrw_rmf_cmd* command for removing softlinks
*g:netrw_rmf_cmd* command for removing softlinks
default: "ssh USEPORT HOSTNAME rm -f"
*g:netrw_sort_by* sort by "name", "time", or "size"
*g:netrw_sort_by* sort by "name", "time", or "size"
default: "name"
*g:netrw_sort_direction* sorting direction: "normal" or "reverse"
*g:netrw_sort_direction* sorting direction: "normal" or "reverse"
default: "normal"
*g:netrw_sort_options* sorting is done using |:sort|; this
*g:netrw_sort_options* sorting is done using |:sort|; this
variable's value is appended to the
sort command. Thus one may ignore case,
for example, with the following in your
@@ -2292,14 +2394,14 @@ your browsing preferences. (see also: |netrw-settings|)
let g:netrw_sort_options="i"
< default: ""
*g:netrw_sort_sequence* when sorting by name, first sort by the
*g:netrw_sort_sequence* when sorting by name, first sort by the
comma-separated pattern sequence. Note that
the filigree added to indicate filetypes
should be accounted for in your pattern.
default: '[\/]$,*,\.bak$,\.o$,\.h$,
\.info$,\.swp$,\.obj$'
*g:netrw_special_syntax* If true, then certain files will be shown
*g:netrw_special_syntax* If true, then certain files will be shown
using special syntax in the browser:
netrwBak : *.bak
@@ -2321,24 +2423,24 @@ your browsing preferences. (see also: |netrw-settings|)
< into one's <.vimrc> to use one's own
preferences.
*g:netrw_ssh_cmd* One may specify an executable command
to use instead of ssh for remote actions
such as listing, file removal, etc.
default: ssh
*g:netrw_ssh_browse_reject* ssh can sometimes produce unwanted lines,
*g:netrw_ssh_browse_reject* ssh can sometimes produce unwanted lines,
messages, banners, and whatnot that one doesn't
want masquerading as "directories" and "files".
Use this pattern to remove such embedded
messages. By default its value is:
'^total\s\+\d\+$'
*g:netrw_ssh_cmd* One may specify an executable command
to use instead of ssh for remote actions
such as listing, file removal, etc.
default: ssh
*g:netrw_tmpfile_escape* =' &;'
*g:netrw_tmpfile_escape* =' &;'
escape() is applied to all temporary files
to escape these characters.
*g:netrw_timefmt* specify format string to vim's strftime().
*g:netrw_timefmt* specify format string to vim's strftime().
The default, "%c", is "the preferred date
and time representation for the current
locale" according to my manpage entry for
@@ -2348,7 +2450,7 @@ your browsing preferences. (see also: |netrw-settings|)
" %a %Y-%m-%d %I-%M-%S %p"
default: "%c"
*g:netrw_use_noswf* netrw normally avoids writing swapfiles
*g:netrw_use_noswf* netrw normally avoids writing swapfiles
for browser buffers. However, under some
systems this apparently is causing nasty
ml_get errors to appear; if you're getting
@@ -2356,7 +2458,7 @@ your browsing preferences. (see also: |netrw-settings|)
let g:netrw_use_noswf= 0
in your .vimrc.
*g:netrw_winsize* specify initial size of new windows made with
*g:netrw_winsize* specify initial size of new windows made with
"o" (see |netrw-o|), "v" (see |netrw-v|),
|:Hexplore| or |:Vexplore|. The g:netrw_winsize
is an integer describing the percentage of the
@@ -2367,7 +2469,7 @@ your browsing preferences. (see also: |netrw-settings|)
or columns will be used for the new window.
default: 50 (for 50%)
*g:netrw_xstrlen* Controls how netrw computes string lengths,
*g:netrw_xstrlen* Controls how netrw computes string lengths,
including multi-byte characters' string
length. (thanks to N Weibull, T Mechelynck)
=0: uses Vim's built-in strlen()
@@ -2383,7 +2485,7 @@ your browsing preferences. (see also: |netrw-settings|)
immediately preceded by lam, one
otherwise, etc)
*g:NetrwTopLvlMenu* This variable specifies the top level
*g:NetrwTopLvlMenu* This variable specifies the top level
menu name; by default, it's "Netrw.". If
you wish to change this, do so in your
.vimrc.
@@ -2483,7 +2585,7 @@ has been modified, and there's only one window with that buffer, then
the user will be asked if s/he wishes to save the buffer first (yes,
no, or cancel).
Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-T| |netrw-v|
Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-v|
Associated setting variables:
|g:netrw_alto| control above/below splitting
|g:netrw_altv| control right/left splitting
@@ -2498,6 +2600,15 @@ hit the <cr> when atop the ./ directory entry in the listing. One may also
refresh a local directory by using ":e .".
REVERSING SORTING ORDER *netrw-r* *netrw-reverse* {{{2
One may toggle between normal and reverse sorting order by pressing the
"r" key.
Related topics: |netrw-s|
Associated setting variable: |g:netrw_sort_direction|
RENAMING FILES OR DIRECTORIES *netrw-move* *netrw-rename* *netrw-R* {{{2
If there are no marked files: (see |netrw-mf|)
@@ -2528,15 +2639,6 @@ One may rename a block of files and directories by selecting them with
the V (|linewise-visual|).
REVERSING SORTING ORDER *netrw-r* *netrw-reverse* {{{2
One may toggle between normal and reverse sorting order by pressing the
"r" key.
Related topics: |netrw-s|
Associated setting variable: |g:netrw_sort_direction|
SELECTING SORTING STYLE *netrw-s* *netrw-sort* {{{2
One may select the sorting style by name, time, or (file) size. The "s" map
@@ -2620,9 +2722,9 @@ Associated setting variables: |g:netrw_chgwin|
P5. My times come up oddly in local browsing
Does your system's strftime() accept the "%c" to yield dates
such as "Sun Apr 27 11:49:23 1997"? If not, do a "man strftime"
and find out what option should be used. Then put it into
your |.vimrc|: >
such as "Sun Apr 27 11:49:23 1997"? If not, do a
"man strftime" and find out what option should be used. Then
put it into your |.vimrc|: >
let g:netrw_timefmt= "%X" (where X is the option)
<
@@ -2895,6 +2997,70 @@ which is loaded automatically at startup (assuming :set nocp).
==============================================================================
12. History *netrw-history* {{{1
v149: Apr 18, 2013 * in wide listing format, now have maps for
w and b to move to next/previous file
Apr 26, 2013 * one may now copy files in the same
directory; netrw will issue requests for
what names the files should be copied under
Apr 29, 2013 * Trying Benzinger's problem again. Seems
that commenting out the BufEnter and
installing VimEnter (only) works. Weird
problem! (tree listing, vim -O Dir1 Dir2)
May 01, 2013 * :Explore ftp://... wasn't working. Fixed.
May 02, 2013 * introduced |g:netrw_bannerbackslash| as
requested by Paul Domaskis.
May 18, 2013 * More fixes for windows (not cygwin)
v148: Apr 16, 2013 * changed Netrw's Style menu to allow direct
choice of listing style, hiding style, and
sorting style
v147: Nov 24, 2012 * (James McCoy) Even with g:netrw_dirhistmax
at zero, the .vim/ directory would be
created to support history/bookmarks. I've
gone over netrw to suppress history and
bookmarking when g:netrw_dirhistmax is zero.
For instance, the menus will display
(disabled) when attempts to use
bookmarks/history are made.
Nov 29, 2012 * (Kim Jang-hwan) reported that with
g:Align_xstrlen set to 3 that the cursor was
moved (linewise) after invocation. This
problem also afflicted netrw.
(see |g:netrw_xstrlen|) Fixed.
Jan 21, 2013 * (mattn) provided a patch to insert some
endifs needed with the code implementing
|netrw-O|.
Jan 24, 2013 * (John Szakmeister) found that remote file
editing resulted in filetype options being
overwritten by NetrwOptionRestore(). I
moved filetype detect from NetrwGetFile()
to NetrwOptionRestore.
Feb 17, 2013 * (Yukhiro Nakadaira) provided a patch
correcting some syntax errors.
Feb 28, 2013 * (Ingo Karkat) provided a patch preventing
receipt of an |E95| when revisiting a
file://... style url.
Mar 18, 2013 * (Gary Johnson) pointed out that changing
cedit to <Esc> caused problems with visincr;
the cedit setting is now bypassed in netrw too.
Apr 02, 2013 * (Paul Domaskis) reported an undefined
variable error (s:didstarstar) was
occurring. It is now defined at
initialization.
* included additional sanity checking for the
marked file functions.
* included |netrw-qF| and special "j" option
handling for |netrw-mg|
Apr 12, 2013 * |netrw-u| and |netrw-U| now handle counts
* the former mapping for "T" has been removed;
in its place are new maps, |netrw-Tb| and |netrw-Th|.
* the menu now supports a "Targets" entry for
easier target selection. (see |netrw-mt|)
* (Paul Domaskis) reported some problems with
moving/copying files under Windows' gvim
(ie. not cygwin). Fixed.
* (Paul Mueller) provided a patch to get
start and rundll working via |netrw-gx|
by bypassing the user's |'shellslash'| option.
v146: Oct 20, 2012 * (David Kotchan) reported that under Windows,
directories named with unusual characters
such as "#" or "$" were not being listed
@@ -2904,6 +3070,10 @@ which is loaded automatically at startup (assuming :set nocp).
Netrw will now |:bwipe| netrw buffers
upon editing a file if g:netrw_fastbrowse
is zero and its not in tree listing style.
* fixed a bug with s:NetrwInit() that
prevented initialization with |Lists| and
|Dictionaries|.
* |netrw-mu| now unmarks marked-file lists
v145: Apr 05, 2012 * moved some command from a g:netrw_local_...
format to g:netwr_local... format
* included some NOTE level messages about

View File

@@ -1,4 +1,4 @@
*pi_paren.txt* For Vim version 7.3. Last change: 2008 Jun 16
*pi_paren.txt* For Vim version 7.3. Last change: 2013 May 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -46,7 +46,10 @@ are:
closed folds.
- 'synmaxcol' times 2 bytes before or after the cursor to avoid a delay
in a long line with syntax highlighting.
- A timeout of 300 msec (60 msec in Insert mode). This can be changed with the
g:matchparen_timeout and g:matchparen_insert_timeout variables and their
buffer-local equivalents b:matchparen_timeout and
b:matchparen_insert_timeout.
If you would like the |%| command to work better, the matchit plugin can be
used, see |matchit-install|. This plugin also helps to skip matches in

View File

@@ -1,10 +1,10 @@
*pi_tar.txt* For Vim version 7.3. Last change: 2012 Jan 17
*pi_tar.txt* For Vim version 7.3. Last change: 2013 Apr 17
+====================+
| Tar File Interface |
+====================+
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first)
Copyright 2005-2012: *tar-copyright*
The VIM LICENSE (see |copyright|) applies to the files in this
@@ -50,6 +50,21 @@ Copyright 2005-2012: *tar-copyright*
*g:tar_extractcmd* , which by default is >
"tar -xf"
<
*:TarDiff*
DIFFERENCING SUPPORT~
:TarDiff [filename]
This command will attempt to show the differences between the tarball
version of a file and the associated file on the system. In order to
find that file on the system, the script uses the path associated with
the file mentioned in the tarball. If the current directory is not
correct for that path, :TarDiff will fail to find the associated file.
If the [filename] is given, that that filename (and path) will be used
to specify the associated file.
PREVENTING LOADING~
If for some reason you do not wish to use vim to examine tar'd files,

View File

@@ -1,12 +1,12 @@
*pi_zip.txt* For Vim version 7.3. Last change: 2012 Jan 17
*pi_zip.txt* For Vim version 7.3. Last change: 2013 Apr 17
+====================+
| Zip File Interface |
+====================+
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
Author: Charles E. Campbell <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first)
Copyright: Copyright (C) 2005-2011 Charles E Campbell, Jr *zip-copyright*
Copyright: Copyright (C) 2005-2012 Charles E Campbell *zip-copyright*
The VIM LICENSE (see |copyright|) applies to the files in this
package, including zipPlugin.vim, zip.vim, and pi_zip.vim. except use
"zip.vim" instead of "VIM". Like anything else that's free, zip.vim
@@ -85,8 +85,13 @@ Copyright: Copyright (C) 2005-2011 Charles E Campbell, Jr *zip-copyright*
==============================================================================
4. History *zip-history* {{{1
v26 Nov 15, 2012 * (Jason Spiro) provided a lot of new extensions that
are synonyms for .zip
v25 Jun 27, 2011 * using keepj with unzip -Z
(consistent with the -p variant)
* (Ben Staniford) now uses
has("win32unix") && executable("cygpath")
before converting to cygwin-style paths
v24 Jun 21, 2010 * (Cédric Bosdonnat) unzip seems to need its filenames
fnameescape'd as well as shellquote'd
* (Motoya Kurotsu) inserted keepj before 0d to protect

View File

@@ -1,4 +1,4 @@
*quickref.txt* For Vim version 7.3. Last change: 2013 Feb 06
*quickref.txt* For Vim version 7.3. Last change: 2013 May 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -691,6 +691,7 @@ Short explanation of each option: *option-list*
'fileencodings' 'fencs' automatically detected character encodings
'fileformat' 'ff' file format used for file I/O
'fileformats' 'ffs' automatically detected values for 'fileformat'
'fileignorecase' 'fic' ignore case when using file names
'filetype' 'ft' type of file, used for autocommands
'fillchars' 'fcs' characters to use for displaying special items
'fkmap' 'fk' Farsi keyboard mapping
@@ -823,6 +824,7 @@ Short explanation of each option: *option-list*
'quoteescape' 'qe' escape characters used in a string
'readonly' 'ro' disallow writing the buffer
'redrawtime' 'rdt' timeout for 'hlsearch' and |:match| highlighting
'regexpengine' 're' default regexp engine to use
'relativenumber' 'rnu' show relative line number in front of each line
'remap' allow mappings to work recursively
'report' threshold for reporting nr. of lines changed

View File

@@ -1,4 +1,4 @@
*starting.txt* For Vim version 7.3. Last change: 2012 Mar 16
*starting.txt* For Vim version 7.3. Last change: 2013 May 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -438,6 +438,8 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
option should be used when Vim is started by a program that
will wait for the edit session to finish (e.g., mail or
readnews). See |amiga-window|.
MS-Windows: This option is not always supported.
{not in Vi}

View File

@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 7.3. Last change: 2013 Mar 13
*syntax.txt* For Vim version 7.3. Last change: 2013 Apr 05
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1239,17 +1239,17 @@ to your startup file.
ERLANG *erlang.vim* *ft-erlang-syntax*
The erlang highlighting supports Erlang (ERicsson LANGuage).
Erlang is case sensitive and default extension is ".erl".
Erlang is a functional programming language developed by Ericsson. Files with
the following extentions are recognized as Erlang files: erl, hrl, yaws.
If you want to disable keywords highlighting, put in your .vimrc: >
:let erlang_keywords = 1
If you want to disable built-in-functions highlighting, put in your
.vimrc file: >
:let erlang_functions = 1
If you want to disable special characters highlighting, put in
your .vimrc: >
:let erlang_characters = 1
The BIFs (built-in functions) are highlighted by default. To disable this,
put the following line in your vimrc: >
:let g:erlang_highlight_bifs = 0
To enable highlighting some special atoms, put this in your vimrc: >
:let g:erlang_highlight_special_atoms = 1
FLEXWIKI *flexwiki.vim* *ft-flexwiki-syntax*
@@ -2069,7 +2069,7 @@ Therefore, you should be careful about not using more space between sentences
than you intend to have in your final document. For this reason, the common
practice is to insert a carriage return immediately after all punctuation
marks. If you want to have "even" text in your final processed output, you
need to maintaining regular spacing in the input text. To mark both trailing
need to maintain regular spacing in the input text. To mark both trailing
spaces and two or more spaces after a punctuation as an error, use: >
:let nroff_space_errors = 1
@@ -4928,7 +4928,7 @@ restoring "b:current_syntax", since the syntax files do set
Once a window has its own syntax, syntax commands executed from other windows
on the same buffer (including :syntax clear) have no effect. Conversely,
syntax commands executed from that window do not effect other windows on the
syntax commands executed from that window do not affect other windows on the
same buffer.
A window with its own syntax reverts to normal behavior when another buffer

View File

@@ -233,10 +233,12 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
'fex' options.txt /*'fex'*
'ff' options.txt /*'ff'*
'ffs' options.txt /*'ffs'*
'fic' options.txt /*'fic'*
'fileencoding' options.txt /*'fileencoding'*
'fileencodings' options.txt /*'fileencodings'*
'fileformat' options.txt /*'fileformat'*
'fileformats' options.txt /*'fileformats'*
'fileignorecase' options.txt /*'fileignorecase'*
'filetype' options.txt /*'filetype'*
'fillchars' options.txt /*'fillchars'*
'fk' options.txt /*'fk'*
@@ -523,6 +525,8 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
'noexpandtab' options.txt /*'noexpandtab'*
'noexrc' options.txt /*'noexrc'*
'nofen' options.txt /*'nofen'*
'nofic' options.txt /*'nofic'*
'nofileignorecase' options.txt /*'nofileignorecase'*
'nofk' options.txt /*'nofk'*
'nofkmap' options.txt /*'nofkmap'*
'nofoldenable' options.txt /*'nofoldenable'*
@@ -732,9 +736,11 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
'quote motion.txt /*'quote*
'quoteescape' options.txt /*'quoteescape'*
'rdt' options.txt /*'rdt'*
're' options.txt /*'re'*
'readonly' options.txt /*'readonly'*
'redraw' vi_diff.txt /*'redraw'*
'redrawtime' options.txt /*'redrawtime'*
'regexpengine'' options.txt /*'regexpengine''*
'relativenumber' options.txt /*'relativenumber'*
'remap' options.txt /*'remap'*
'report' options.txt /*'report'*
@@ -1385,6 +1391,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
/\ pattern.txt /*\/\\*
/\$ pattern.txt /*\/\\$*
/\%# pattern.txt /*\/\\%#*
/\%#= pattern.txt /*\/\\%#=*
/\%$ pattern.txt /*\/\\%$*
/\%'m pattern.txt /*\/\\%'m*
/\%( pattern.txt /*\/\\%(*
@@ -1830,6 +1837,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
:RmVimball pi_vimball.txt /*:RmVimball*
:Sexplore pi_netrw.txt /*:Sexplore*
:TOhtml syntax.txt /*:TOhtml*
:TarDiff pi_tar.txt /*:TarDiff*
:Texplore pi_netrw.txt /*:Texplore*
:UseVimball pi_vimball.txt /*:UseVimball*
:Vexplore pi_netrw.txt /*:Vexplore*
@@ -2585,7 +2593,9 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
:pwd editing.txt /*:pwd*
:py if_pyth.txt /*:py*
:py3 if_pyth.txt /*:py3*
:py3do if_pyth.txt /*:py3do*
:py3file if_pyth.txt /*:py3file*
:pydo if_pyth.txt /*:pydo*
:pyf if_pyth.txt /*:pyf*
:pyfile if_pyth.txt /*:pyfile*
:python if_pyth.txt /*:python*
@@ -4251,9 +4261,24 @@ E858 eval.txt /*E858*
E859 eval.txt /*E859*
E86 windows.txt /*E86*
E860 eval.txt /*E860*
E861 eval.txt /*E861*
E862 eval.txt /*E862*
E863 if_pyth.txt /*E863*
E864 pattern.txt /*E864*
E865 pattern.txt /*E865*
E866 pattern.txt /*E866*
E867 pattern.txt /*E867*
E868 pattern.txt /*E868*
E869 pattern.txt /*E869*
E87 windows.txt /*E87*
E870 pattern.txt /*E870*
E871 pattern.txt /*E871*
E872 pattern.txt /*E872*
E873 pattern.txt /*E873*
E874 pattern.txt /*E874*
E875 pattern.txt /*E875*
E876 pattern.txt /*E876*
E877 pattern.txt /*E877*
E878 pattern.txt /*E878*
E88 windows.txt /*E88*
E89 message.txt /*E89*
E90 message.txt /*E90*
@@ -4480,6 +4505,8 @@ TabLeave autocmd.txt /*TabLeave*
Tcl if_tcl.txt /*Tcl*
TermChanged autocmd.txt /*TermChanged*
TermResponse autocmd.txt /*TermResponse*
TextChanged autocmd.txt /*TextChanged*
TextChangedI autocmd.txt /*TextChangedI*
Transact-SQL ft_sql.txt /*Transact-SQL*
U undo.txt /*U*
UTF-8 mbyte.txt /*UTF-8*
@@ -4770,7 +4797,8 @@ aw motion.txt /*aw*
a{ motion.txt /*a{*
a} motion.txt /*a}*
b motion.txt /*b*
b:changedtick-variable eval.txt /*b:changedtick-variable*
b: eval.txt /*b:*
b:changedtick eval.txt /*b:changedtick*
b:changelog_name filetype.txt /*b:changelog_name*
b:current_syntax-variable syntax.txt /*b:current_syntax-variable*
b:netrw_lastfile pi_netrw.txt /*b:netrw_lastfile*
@@ -5798,6 +5826,7 @@ g, motion.txt /*g,*
g- undo.txt /*g-*
g0 motion.txt /*g0*
g8 various.txt /*g8*
g: eval.txt /*g:*
g:NetrwTopLvlMenu pi_netrw.txt /*g:NetrwTopLvlMenu*
g:Netrw_corehandler pi_netrw.txt /*g:Netrw_corehandler*
g:Netrw_funcref pi_netrw.txt /*g:Netrw_funcref*
@@ -5873,6 +5902,7 @@ g:html_whole_filler syntax.txt /*g:html_whole_filler*
g:netrw_alto pi_netrw.txt /*g:netrw_alto*
g:netrw_altv pi_netrw.txt /*g:netrw_altv*
g:netrw_banner pi_netrw.txt /*g:netrw_banner*
g:netrw_bannerbackslash pi_netrw.txt /*g:netrw_bannerbackslash*
g:netrw_browse_split pi_netrw.txt /*g:netrw_browse_split*
g:netrw_browsex_viewer pi_netrw.txt /*g:netrw_browsex_viewer*
g:netrw_bufsettings pi_netrw.txt /*g:netrw_bufsettings*
@@ -6565,6 +6595,7 @@ keypad-point intro.txt /*keypad-point*
keys() eval.txt /*keys()*
known-bugs todo.txt /*known-bugs*
l motion.txt /*l*
l: eval.txt /*l:*
l:var eval.txt /*l:var*
lCursor mbyte.txt /*lCursor*
lace.vim syntax.txt /*lace.vim*
@@ -6856,7 +6887,8 @@ netrw-O pi_netrw.txt /*netrw-O*
netrw-P pi_netrw.txt /*netrw-P*
netrw-R pi_netrw.txt /*netrw-R*
netrw-S pi_netrw.txt /*netrw-S*
netrw-T pi_netrw.txt /*netrw-T*
netrw-Tb pi_netrw.txt /*netrw-Tb*
netrw-Th pi_netrw.txt /*netrw-Th*
netrw-U pi_netrw.txt /*netrw-U*
netrw-X pi_netrw.txt /*netrw-X*
netrw-a pi_netrw.txt /*netrw-a*
@@ -6925,6 +6957,7 @@ netrw-listbookmark pi_netrw.txt /*netrw-listbookmark*
netrw-listhack pi_netrw.txt /*netrw-listhack*
netrw-login pi_netrw.txt /*netrw-login*
netrw-mB pi_netrw.txt /*netrw-mB*
netrw-mF pi_netrw.txt /*netrw-mF*
netrw-mT pi_netrw.txt /*netrw-mT*
netrw-mb pi_netrw.txt /*netrw-mb*
netrw-mc pi_netrw.txt /*netrw-mc*
@@ -6979,6 +7012,7 @@ netrw-prvwin pi_netrw.txt /*netrw-prvwin*
netrw-pscp pi_netrw.txt /*netrw-pscp*
netrw-psftp pi_netrw.txt /*netrw-psftp*
netrw-putty pi_netrw.txt /*netrw-putty*
netrw-qF pi_netrw.txt /*netrw-qF*
netrw-qb pi_netrw.txt /*netrw-qb*
netrw-qf pi_netrw.txt /*netrw-qf*
netrw-quickcom pi_netrw.txt /*netrw-quickcom*
@@ -7319,10 +7353,15 @@ python-error if_pyth.txt /*python-error*
python-eval if_pyth.txt /*python-eval*
python-examples if_pyth.txt /*python-examples*
python-input if_pyth.txt /*python-input*
python-options if_pyth.txt /*python-options*
python-output if_pyth.txt /*python-output*
python-pyeval if_pyth.txt /*python-pyeval*
python-range if_pyth.txt /*python-range*
python-tabpage if_pyth.txt /*python-tabpage*
python-tabpages if_pyth.txt /*python-tabpages*
python-vars if_pyth.txt /*python-vars*
python-vim if_pyth.txt /*python-vim*
python-vvars if_pyth.txt /*python-vvars*
python-window if_pyth.txt /*python-window*
python-windows if_pyth.txt /*python-windows*
python.vim syntax.txt /*python.vim*
@@ -7835,6 +7874,7 @@ system-functions usr_41.txt /*system-functions*
system-vimrc starting.txt /*system-vimrc*
s~ change.txt /*s~*
t motion.txt /*t*
t: eval.txt /*t:*
t:var eval.txt /*t:var*
t_#2 term.txt /*t_#2*
t_#4 term.txt /*t_#4*
@@ -8150,6 +8190,7 @@ try-nested eval.txt /*try-nested*
try-nesting eval.txt /*try-nesting*
tutor usr_01.txt /*tutor*
twice if_cscop.txt /*twice*
two-engines pattern.txt /*two-engines*
type() eval.txt /*type()*
type-mistakes tips.txt /*type-mistakes*
typecorr-settings usr_41.txt /*typecorr-settings*
@@ -8230,6 +8271,7 @@ utf-8-in-xwindows mbyte.txt /*utf-8-in-xwindows*
utf-8-typing mbyte.txt /*utf-8-typing*
utf8 mbyte.txt /*utf8*
v visual.txt /*v*
v: eval.txt /*v:*
v:beval_bufnr eval.txt /*v:beval_bufnr*
v:beval_col eval.txt /*v:beval_col*
v:beval_lnum eval.txt /*v:beval_lnum*
@@ -8523,6 +8565,7 @@ vt100-function-keys term.txt /*vt100-function-keys*
w motion.txt /*w*
w32-clientserver remote.txt /*w32-clientserver*
w32-xpm-support gui_w32.txt /*w32-xpm-support*
w: eval.txt /*w:*
w:current_syntax syntax.txt /*w:current_syntax*
w:quickfix_title quickfix.txt /*w:quickfix_title*
w:var eval.txt /*w:var*

View File

@@ -328,7 +328,7 @@ Note: Use the <> form if possible
t_k8 <F8> function key 8 *<F8>* *t_k8* *'t_k8'*
t_k9 <F9> function key 9 *<F9>* *t_k9* *'t_k9'*
t_k; <F10> function key 10 *<F10>* *t_k;* *'t_k;'*
t_F1 <F11> function key 11 *<F11>* *t_F1* *'t_F1'*
t_F1 <F11> function key 11 *<F11>* *t_F1* *'t_F1'*
t_F2 <F12> function key 12 *<F12>* *t_F2* *'t_F2'*
t_F3 <F13> function key 13 *<F13>* *t_F3* *'t_F3'*
t_F4 <F14> function key 14 *<F14>* *t_F4* *'t_F4'*
@@ -358,9 +358,9 @@ Note: Use the <> form if possible
t_kI <Insert> insert key *t_kI* *'t_kI'*
t_kD <Del> delete key *t_kD* *'t_kD'*
t_kb <BS> backspace key *t_kb* *'t_kb'*
t_kB <S-Tab> back-tab (shift-tab) *<S-Tab>* *t_kB* *'t_kB'*
t_kB <S-Tab> back-tab (shift-tab) *<S-Tab>* *t_kB* *'t_kB'*
t_kh <Home> home key *t_kh* *'t_kh'*
t_#2 <S-Home> shifted home key *<S-Home>* *t_#2* *'t_#2'*
t_#2 <S-Home> shifted home key *<S-Home>* *t_#2* *'t_#2'*
<xHome> alternate home key *<xHome>*
t_@7 <End> end key *t_@7* *'t_@7'*
t_*7 <S-End> shifted end key *<S-End>* *t_star7* *'t_star7'*
@@ -373,8 +373,8 @@ Note: Use the <> form if possible
t_K5 <kPageDown> keypad page-down key *t_K5* *'t_K5'*
t_K6 <kPlus> keypad plus key *<kPlus>* *t_K6* *'t_K6'*
t_K7 <kMinus> keypad minus key *<kMinus>* *t_K7* *'t_K7'*
t_K8 <kDivide> keypad divide *<kDivide>* *t_K8* *'t_K8'*
t_K9 <kMultiply> keypad multiply *<kMultiply>* *t_K9* *'t_K9'*
t_K8 <kDivide> keypad divide *<kDivide>* *t_K8* *'t_K8'*
t_K9 <kMultiply> keypad multiply *<kMultiply>* *t_K9* *'t_K9'*
t_KA <kEnter> keypad enter key *<kEnter>* *t_KA* *'t_KA'*
t_KB <kPoint> keypad decimal point *<kPoint>* *t_KB* *'t_KB'*
t_KC <k0> keypad 0 *<k0>* *t_KC* *'t_KC'*

View File

@@ -1,4 +1,4 @@
*todo.txt* For Vim version 7.3. Last change: 2013 Mar 18
*todo.txt* For Vim version 7.3. Last change: 2013 May 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -34,22 +34,200 @@ not be repeated below, unless there is extra information.
*known-bugs*
-------------------- Known bugs and current work -----------------------
Rename src/Makefile and create a new one like toplevel Makefile that creates
auto/config.mk when it's not there? (Ben Schmidt, 2011 Feb 11)
--- Python interface
Python: thread with refactoring patches. (ZyX, May 19, 16:46 and later)
9
10
11
Configure doesn't find Python 3 on Ubuntu 13.04. (Ken Takata, Apr 13)
Python SystemExit exception is not handled properly. Patch to catch the
exception and give an error. (Yasuhiro Matsumoto)
Does not work, tests fail.
Patch to print the result of a :python command. (Maxim Philippov
<philippovmi@gmail.com>, 2012 Aug 16) Update Aug 17.
Patch no longer applies.
":python os.chdir('/tmp')" makes short buffer names invalid. (Xavier de Gaye)
Patch to make os.chdir() handle side effects. (Xavier de Gaye, 2013 May 17)
Update May 19, also for os.fchdir().
Adds a $VIMRUNTIME/python directory.
ZyX: OK to add python and python3 directory.
Mac: OS/X 10.4 with Python 2.5 installed: configure finds an extra argument
that breaks the build. (Brian Victor, 2008 Sep 1)
Patch to access screen under Python. (Marko Mahni, 2010 Jul 18)
Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
Win32: The Python interface only works with one version of Python, selected at
compile time. Can this be made to work with version 2.1 and 2.2 dynamically?
Python: Be able to define a Python function that can be called directly from
Vim script. Requires converting the arguments and return value.
--- runtime files
Syntax file for protocol buffers. (Feng Xiao, 2013 May 9)
Has an ugly copyright notice.
Add statement that it does not conflict with Vim license.
Patch for JavaScript syntax. (Kevin Locke, 2013 May 9)
Claudio didn't respond yet.
--- Fast regexp engine
Duplicate condition in line 1094. (Ken Takata) Should be 'r'?
Multi-byte problem? Marc Weber
echo matchlist('1', '\%#=1\o{\?Ä\Z')
echo matchlist('1', '\%#=2\o{\?Ä\Z')
Difference in matching this pattern: (Marc Weber)
echo matchlist("t", '\%#=1ú\Z')
echo matchlist("t", '\%#=2ú\Z')
Difference in matching this pattern:
echo matchlist('google', '\%#=1\<go*\|go')
echo matchlist('google', '\%#=2\<go*\|go')
Difference in matching this pattern: (Marc Weber)
echo matchlist("\na", '\%#=1\_F')
echo matchlist("\na", '\%#=0\_F')
echo matchlist("\na", '\%#=2\_F')
Don't set curbuf, use reg_buf.
Estimation of number of items is wrong, can be much larger.
When running out of space, retry with more space?
nfa_regcomp() should not use nstate_max but the actual number of states for
allocating the prog?
Get example files for many languages. Compare syntax highlighting with old and
new regexp, find regexp constructs where NFA does not work correctly.
source ~/vim/regexp/runold.vim to update the "old" files.
source ~/vim/regexp/runnew.vim to update the "new" files
source ~/vim/regexp/diff.vim to find differences
Diffs in these files:
- csh02: line 2, "13" is not highlighted after -misc-fixed-bold-r-normal-
as cshNumber
- csh02: line 7, similar problem.
- tst28.tex line 8 \alpha in texStatement instead of texGreek
It's very slow compared to the old engine...
Performance tests:
- ~/vim/test/veryslow.js display last line (file from Daniel Fetchinson)
- ~/vim/test/slowsearch
- ~/vim/test/rgb.vim
- ~/vim/text/FeiqCfg.xml (file from Netjune)
- ~/vim/text/edl.svg (also XML)
- search for a.*e*exn in the vim executable. Go to last line to use
'hlsearch'.
- Slow combination of folding and PHP syntax highlighting. Script to
reproduce it. Caused by "syntax sync fromstart" in combination with patch
7.2.274. (Christian Brabandt, 2010 May 27) Generally, folding with
'foldmethod' set to "syntax" is slow. Do profiling to find out why.
- Does not use any of the optimizations, such as required start pattern.
- When lists are empty in nfa_regmatch() and match is true, it keeps looping
without doing anything.
"\ze" is currently disabled for NFA, can this be fixed?
"\_[0-9]\?\>" does not match at end of line, disabled.
Items with \%u, \%x, \%o, \%d do not work with the new engine.
--- bug fixes
Patch to avoid wrong error message for 1.0[0]. (Yasuhiro Matsumoto, 2013 May
1)
Patch for if_lua. (Luis Carvalho, 2012 Aug 26, update Aug 29, another Aug 30,
then Sep 1, reminder Oct 14)
Patch to check if 'foldexpr' sets did_emsg. (Christian Brabandt, 2013 Mar 20)
Patch for 'backupcopy' default behavior for symlinks on Windows. (David Pope,
2012 Mar 21, update Mar 31)
With fix for memory leak: Ken Takata, 2012 Aug 24
Another update Sep 24.
Also patch from Joerg Bornemann, 2013 Apr 30.
Undo problem: line not removed as expected when using setline() from Insert
mode. (Israel Chauca, 2010 May 13, more in second msg)
Break undo when CTRL-R = changes the text? Or save more lines?
Patch by Christian Brabandt, 2012 Nov 16.
Do allow real tags above the !_TAG entries. Undo older patch. Issue 90.
Matches might be highlighted correctly. Inefficient patch by Christian
Brabandt, 2013 Feb 26.
Patch to use bold/italic fonts when 'guifontewide' is set. (Ken Takata, 2013
Mar 31)
Problem with winfixheight and resizing. (Yukihiro Nakadaira, 2011 Sep 17)
Patch Sep 18.
Patch for IME problems. Remove hacking code for old IM. (Yukihiro Nakadaira,
2012 Jul 20)
Patch to fix finding toolbar bitmaps. Issue 129.
Combining characters are not used when executing a register with :@w.
(William Fugh, 2013 Apr 5, more info from Ben Fritz)
Patch by Christian Brabandt, 2013 Apr 6. Second one.
MS-Windows ACL support doesn't work well. Patch from Ken Takata, 2012 Aug 29.
Update Aug 31.
Another patch for MingW, 2012 Dec 29.
Bug in completion menu. (Olivier Teuliere, 2013 Feb 15)
Patch by Christian Brabandt, Feb 16.
'cursorline' is drawn incorrectly in diff mode. Patch by Christian Brabandt,
2012 Apr 2.
When someone does a silly thing such as setting rows and columns to 65535,
handle the out-of-memory and set them to sane values? (jimmywang, 2013 May 17)
InsertEnter doesn't prevent the cursor from moving when it goes to another
line.
--- slightly incompatible changes
Patch to load ~/.vim/vimrc when ~/.vimrc isn't found. (Lech Lorens, 2013 Apr
13)
It's probably a good idea to make a negative value for 'sts' use the value of
'sw'. Patch by So8res, Oct 3 2012
When a buffer-local mapping is used, but a global mapping starts with the same
characters, Vim currently waits for the next typed character to find out if
the global mapping matches. It is probably better to let the local mapping
win and not wait. (discussion with Andy Wokula, 2013 Jan 30)
Patch by Michael Henry, 2013 Jan 30, update Feb 15.
---- Fixes to be included before 7.4 above, less important stuff below ----
Several syntax file match "^\s*" which may get underlined if that's in the
highlight group. Add a "\zs" after it?
Go through more coverity reports.
Valgrind errors in test 16.
Memory leaks in Lua, uncovered by test 85.
Discussion about canonicalization of Hebrew. (Ron Aaron, 2011 April 10)
Checking runtime scripts: Thilo Six, 2012 Jun 6.
Patch to keep serving the selection while waiting for a child process.
(Yukihiro Nakadaira, 2013 March 14)
GTK: problem with 'L' in 'guioptions' changing the window width.
(Aaron Cornelius, 2012 Feb 6)
@@ -59,43 +237,41 @@ The CompleteDone autocommand needs some info passed to it:
- The word that was selected (empty if abandoned complete)
- Type of completion: tag, omnifunc, user func.
Using ":call foo#d.f()" doesn't autoload the "foo.vim" file.
That is, calling a dictionary function on an autoloaded dict.
Works OK for echo, just not for ":call" and ":call call()". (Ted, 2011 Mar
17)
Patch by Christian Brabandt, 2013 Mar 23.
Not 100% sure this is the right solution.
Win32: When a directory name contains an exclamation mark, completion doesn't
complete the contents of the directory. No escaping for the "!"? (Jan
Stocker, 2012 Jan 5)
Matchparen does not update match when indenting. (Marc Aldorasi, 2013 Feb 9)
Possible patch by Christian Brabandt, 2013 Feb 13.
Remarks about the more message and a patch to change behavior. (cptstubing,
2013 Mar 16)
Patch to set antialiasing style on Windows. (Ondrej Balaz, 2013 Mar 14)
Problem caused by patch 7.3.638: window->open does not update window
correctly. Issue 91.
Patch to add argument to bufname() to only consider buffers in the current
tab. (Alexey Radkov, 2013 Feb 8) Example in later email.
Is this right?
Patch to fix compiler warnings for MingW 4.5.3. (Ken Takata, 2013 Jan 26)
Bug: search() does not use the match at the cursor position if it's empty.
(Christian Brabandt, 2013 Feb 16) Patch later.
On Mac do not define CASE_INSENSITIVE_FILENAME ? (Richo Healey, 2013 Mar 3)
But do set 'wildignorecase' ?
Patch to make it possible to create Title Case in :s. with \L\u.
(James McCoy, 2013 Feb 13)
Patch to fix that 'cedit' is recognized after :normal. (Christian Brabandt,
2013 Mar 19, later message)
Patch to view coverage of the tests. (Nazri Ramliy, 2013 Feb 15)
Do allow real tags above the !_TAG entries. Undo older patch. Issue 90.
Patch to invert characters differently in GTK. (Yukihiro Nakadaira, 2013 May
5)
Patch to add the bufferlist() function. (Yegappan Lakshmanan, 2013 May 5)
May 17: with winlist() and tabpagelist().
May 19: with local variables.
Patch to allow setting w:quickfix_title via setqflist() and setloclist()
functions. (Christian Brabandt, 2013 May 8, update May 21)
Patch to support 'u' in interactive substitute. (Christian Brabandt, 2012 Sep
28) With tests: Oct 9.
Patch to add getlocstack() / setlocstack(). (Christian Brabandt, 2013 May 14)
Second one.
Patch to make fold updates much faster. (Christian Brabandt, 2012 Dec)
Patch for IME handling, adds 'imactivatefunc' and 'imstatusfunc' option.
@@ -104,26 +280,24 @@ Patch to improve IME handling. (Yasuhiro Matsumoto, 2012 Jul 18)
Issue 54: document behavior of -complete, also expands arg.
Matches might be highlighted correctly. Inefficient patch by Christian
Brabandt, 2013 Feb 26.
- Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine
the two into a regex for searching. (Ned Konz)
Patch by Christian Brabandt, 2013 Apr 20, unfinished.
New syntax files for apt. (quidame, 2012 Sep 21)
Bug: findfile("any", "http://;") returns http://any. (Andrew Pimlott, 2013 May
7) Not sure if that can be fixed, but when using "file://" it should be
possible to check if the file exists.
v:register is not directly reset to " after a delete command that specifies a
register. It is reset after the next command. (Steve Vermeulen, 2013 Mar 16)
'ff' is wrong for one-line file without EOL. (Issue 77)
Patch for if_lua. (Luis Carvalho, 2012 Aug 26, update Aug 29, another Aug 30,
then Sep 1, reminder Oct 14)
Patch to set antialiasing style on Windows. (Ondrej Balaz, 2013 Mar 14)
Needs a different check for CLEARTYPE_QUALITY.
Issue 72: 'autochdir' causes problems for :vimgrep.
Undo problem: line not removed as expected when using setline() from Insert
mode. (Israel Chauca, 2010 May 13, more in second msg)
Break undo when CTRL-R = changes the text? Or save more lines?
Patch by Christian Brabandt, 2012 Nov 16.
In the ATTENTION message about an existing swap file, mention the name of the
process that is running. It might actually be some other program, e.g. after
a reboot.
@@ -131,14 +305,8 @@ a reboot.
MS-Windows: Crash opening very long file name starting with "\\".
(Christian Brock, 2012 Jun 29)
It's probably a good idea to make a negative value for 'sts' use the value of
'sw'. Patch by So8res, Oct 3 2012
patch to add "combine" flag to syntax commands. (so8res, 2012 Dec 6)
Bug in completion menu. (Olivier Teuliere, 2013 Feb 15)
Patch by Christian Brabandt, Feb 16.
Syntax update problem in one buffer opened in two windows, bottom window is
not correctly updated. (Paul Harris, 2012 Feb 27)
@@ -152,8 +320,8 @@ Patch to make confirm() display colors. (Christian Brabandt, 2012 Nov 9)
Patch to add functions for signs. (Christian Brabandt, 2013 Jan 27)
Patch to use directX to draw text on Windows. Adds the 'directx' option.
(Taro Muraoka, 2013 Jan 25)
Patch to use directX to draw text on Windows. Adds the 'renderoptions'
option. (Taro Muraoka, 2013 Jan 25, update 2013 Apr 3, May 14)
Problem with refresh:always in completion. (Tyler Wade, 2013 Mar 17)
@@ -169,6 +337,9 @@ Patch to improve equivalence classes in regexp patterns.
Patch with suggestions for starting.txt. (Tony Mechelynck, 2012 Oct 24)
But use Gnome instead of GTK?
Patch to make FocusGained and FocusLost work in modern terminals. (Hayaki
Saito, 2013 Apr 24)
Should be possible to enable/disable matchparen per window or buffer.
Add a check for b:no_match_paren in Highlight_matching_Pair() (Marcin
Szamotulski, 2012 Nov 8)
@@ -176,10 +347,6 @@ Szamotulski, 2012 Nov 8)
Crash in autocmd that unloads buffers in a BufUnload event. (Andrew Pimlott,
2012 Aug 11) Disallow :new when BufUnload is being handled?
MS-Windows ACL support doesn't work well. Patch from Ken Takata, 2012 Aug 29.
Update Aug 31.
Another patch for MingW, 2012 Dec 29.
MS-Windows resizing problems:
- Windows window on screen positioning: Patch by Yukihiro Nakadaira, 2012 Jun
20. Uses getWindowRect() instead of GetWindowPlacement()
@@ -189,6 +356,9 @@ MS-Windows resizing problems:
'iminsert' global value set when using ":setlocal iminsert"? (Wu, 2012 Jun 23)
Patch to append regexp to tag commands to make it possible to select one out
of many matches. (Cody Cutler, 2013 Mar 28)
Help for 'b:undo_indent'. (Thilo Six, 2012 May 28)
Also question if examples are correct.
@@ -223,23 +393,12 @@ When running Vim in silent ex mode, an existing swapfile causes Vim to wait
for a user action without a prompt. (Maarten Billemont, 2012 Feb 3)
Do give the prompt? Quit with an error?
Patch for 'backupcopy' default behavior for symlinks on Windows. (David Pope,
2012 Mar 21, update Mar 31)
With fix for memory leak: Ken Takata, 2012 Aug 24
Another update Sep 24.
Patch to list user digraphs. (Christian Brabandt, 2012 Apr 14)
Patch for input method status. (Hirohito Higashi, 2012 Apr 18)
Patch to print the result of a :python command. (Maxim Philippov
<philippovmi@gmail.com>, 2012 Aug 16) Update Aug 17.
Problem with winfixheight and resizing. (Yukihiro Nakadaira, 2011 Sep 17)
Patch Sep 18.
Patch for IME problems. Remove hacking code for old IM. (Yukihiro Nakadaira,
2012 Jul 20)
Patch to use .png icons for the toolbar on MS-Windows. (Martin Gieseking, 2013
Apr 18)
Patch for has('unnamedplus') docs. (Tony Mechelynck, 2011 Sep 27)
And one for gui_x11.txt.
@@ -273,16 +432,11 @@ Nov 20)
Patch to improve GUI find/replace dialog. (Christian Brabandt, 2012 May 26)
Update Jun 2.
Patch to add ":py3do". (Lilydjwg, 2012 Apr 7)
`] moves to character after insert, instead of the last inserted character.
(Yukihiro Nakadaira, 2011 Dec 9)
Plugin for Modeleasy. (Massimiliano Tripoli, 2011 Nov 29)
Updated syntax file for ssh_config, maintainer doesn't respond.
(Leonard Ehrenfried, 2011 Sep 26)
BufWinLeave triggers too late when quitting last window in a tab page. (Lech
Lorens, 2012 Feb 21)
@@ -312,15 +466,9 @@ Syntax region with 'concealends' and a 'cchar' value, 'conceallevel' set to 2,
only one of the two ends gets the cchar displayed. (Brett Stahlman, 2010 Aug
21, Ben Fritz, 2010 Sep 14)
'cursorline' is drawn incorrectly in diff mode. Patch by Christian Brabandt,
2012 Apr 2.
'cursorline' works on a text line only. Add 'cursorscreenline' for
highlighting the screen line. (Christian Brabandt, 2012 Mar 31)
Win32: Does building a 64 bit version with VC9 give warnings for int
conversions? (Mike Williams)
Win32: Patch to use task dialogs when available. (Sergiu Dotenco, 2011 Sep 17)
New feature, requires testing. Made some remarks.
@@ -400,12 +548,6 @@ string() can't parse back "inf" and "nan". Fix documentation or fix code?
Make 'formatprg' global-local. (Sung Pae)
When a buffer-local mapping is used, but a global mapping starts with the same
characters, Vim currently waits for the next typed character to find out if
the global mapping matches. It is probably better to let the local mapping
win and not wait. (discussion with Andy Wokula, 2013 Jan 30)
Patch by Michael Henry, 2013 Jan 30, update Feb 15.
When doing "redir => s:foo" in a script and then "redir END" somewhere else
(e.g. in a function) it can't find s:foo.
@@ -532,9 +674,6 @@ the command line. (Ingo Karkat, 2011 Jan 25)
Since patch 7.2.46 Yankring plugin has become very slow, eventually make Vim
crash? (Raiwil, 2010 Nov 17)
Python: Adding line to buffer other than the current one doesn't work
correctly. (Rozbujnik, 2010 Dec 19)
Patch to add 'systemencoding', convert between 'encoding' and this for file
names, shell commands and the like. (Kikuchan, 2010 Oct 14)
Assume the system converts between the actual encoding of the filesystem to
@@ -699,20 +838,11 @@ Problem with stop directory in findfile(). (Adam Simpkins, 2009 Aug 26)
Using ']' as the end of a range in a pattern requires double escaping:
/[@-\\]] (Andy Wokula, 2011 Jun 28)
Slow combination of folding and PHP syntax highlighting. Script to reproduce
it. Caused by "syntax sync fromstart" in combination with patch 7.2.274.
(Christian Brabandt, 2010 May 27)
Generally, folding with 'foldmethod' set to "syntax" is slow. Do profiling to
find out why.
Syntax priority problem. (Charles Campbell, 2011 Sep 15)
When completion inserts the first match, it may trigger the line to be folded.
Disable updating folds while completion is active? (Peter Odding, 2010 Jun 9)
Using ":call foo#d.f()" doesn't autoload the "foo.vim" file. Works OK for
echo, just not for ":call" and ":call call()". (Ted, 2011 Mar 17)
When a:base in 'completefunc' starts with a number it's passed as a number,
not a string. (Sean Ma) Need to add flag to call_func_retlist() to force a
string value.
@@ -897,9 +1027,6 @@ shellescape() depends on 'shellshash' for quoting. That doesn't work when
Use a different option or let it depend on whether 'shell' looks like a
unix-like shell?
Allow patches to add something to version.c, like with an official patch, so
that :version output shows which patches have been applied.
Bug: in Ex mode (after "Q") backslash before line break, when yanked into a
register and executed, results in <Nul>: instead of line break.
(Konrad Schwarz, 2010 Apr 16)
@@ -926,6 +1053,7 @@ ATTENTION message? (Tony Mechelynck, 2008 Dec 1)
Also: swap files are in ~/tmp/ One has relative file name ".mozilla/...".
Add v:motion_force. (Kana Natsuno, 2008 Dec 6)
Maybe call it v:motiontype.
Runtime files for Clojure. (Toralf Wittner, 2008 Jun 25)
@@ -1113,18 +1241,6 @@ Would be more consistent when an existing tab is re-used. (Tony Mechelynck)
Add ":nofold". Range will apply without expanding to closed fold.
Including NFA regexp code:
Use "\%#= to set the engine: 0 = automatic, 1 = backtracking, 2 = new.
Useful in tests.
Performance tests:
- ~/vim/test/veryslow.js (file from Daniel Fetchinson)
- ~/vim/test/slowsearch
- ~/vim/test/rgb.vim
- ~/vim/text/FeiqCfg.xml (file from Netjune)
- ~/vim/text/edl.svg (also XML)
- search for a.*e*exn in the vim executable. Go to last line to use
'hlsearch'.
Using Aap to build Vim: add remarks about how to set personal preferences.
Example on http://www.calmar.ws/tmp/aap.html
@@ -1357,9 +1473,6 @@ if_ruby.c.
":helpgrep" should use the directory from 'helpfile'.
Patch to dynamically load Python on Solaris. (Danek Duvall, 2009 Feb 16)
Needs more work.
The need_fileinfo flag is messy. Instead make the message right away and put
it in keep_msg?
@@ -1401,9 +1514,6 @@ When doing ":quit" the Netbeans "killed" event isn't sent. (Xavier de Gaye,
2008 Nov 10) call netbeans_file_closed() at the end of buf_freeall(), or in
all places where buf_freeall() is called?
":python os.chdir('/tmp')" makes short buffer names invalid. (Xavier de Gaye)
Check directory and call shorten_fnames()?
aucmd_prepbuf() should also use a window in another tab page.
When unloading a buffer in a BufHidden autocommand the hidden flag is reset?
@@ -1439,9 +1549,6 @@ somehow? Or use a new function.
Mac: Using gvim: netrw window disappears. (Nick Lo, 2006 Jun 21)
Mac: OS/X 10.4 with Python 2.5 installed: configure finds an extra argument
that breaks the build. (Brian Victor, 2008 Sep 1)
Add an option to specify the character to use when a double-width character is
moved to the next line. Default '>', set to a space to blank it out. Check
that char is single width when it's set (compare with 'listchars').
@@ -1683,10 +1790,8 @@ Patch to support horizontal scroll wheel in GTK. Untested. (Bjorn Winckler,
2010 Jun 30)
At next release 7.4:
At next release:
- Build a huge version by default.
- Rename src/Makefile and create a new one like toplevel Makefile that
creates auto/config.mk when it's not there? (Ben Schmidt, 2011 Feb 11)
- Improve plugin handling: Automatic updates, handle dependencies?
E.g. Vundle: https://github.com/gmarik/vundle
@@ -1728,7 +1833,6 @@ More patches:
more friendly for the Vim distribution.
New version received 2008 Jan 6.
No maintenance in two years...
- Patch to access screen under Python. (Marko Mahni, 2010 Jul 18)
- Patch to open dropped files in new tabs. (Michael Trim, 2010 Aug 3)
Awaiting updated patches:
@@ -2307,7 +2411,6 @@ Macintosh:
8 When doing Insert mode completion a mapping cannot recursively call
edit(), because the completion information is global. Put everything in
an allocated structure?
6 Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
8 Command line completion: buffers "foo.txt" and "../b/foo.txt", completing
":buf foo<Tab>" doesn't find the second one. (George V. Reilly)
7 mb_off2cells() doesn't work correctly on the tail byte of a double-byte
@@ -3604,9 +3707,6 @@ Tags:
Win32 GUI:
8 Make debug mode work while starting up (vim -D). Open console window for
the message and input?
7 The Python interface only works with one version of Python, selected at
compile time. Can this be made to work with version 2.1 and 2.2
dynamically?
7 GvimExt: when there are several existing Vims, move the list to a submenu.
(Mike McCollister)
8 When using "Edit with Vim" for one file it changes directory, when several
@@ -3968,9 +4068,6 @@ Command line completion:
Command line history:
9 Remember which command lines were actually typed and were not loaded from
viminfo. When writing viminfo append only these lines, so that lines from
other Vim's are not overwritten.
- Add "KeyWasTyped" flag: It's reset before each command and set when a
character from the keyboard is consumed. Value is used to decide to put a
command line in history or not. Put line in history if it didn't
@@ -4159,7 +4256,7 @@ Select mode:
8 In blockwise mode, typed characters are inserted in front of the block,
backspace deletes a column before the block. (Steve Hall)
7 Alt-leftmouse starts block mode selection in MS Word.
See http://www.vim.org/tips/tip.php?tip_id=743
See http://vim.wikia.com/wiki/Use_Alt-Mouse_to_select_blockwise.
7 Add Cmdline-select mode. Like Select mode, but used on the command line.
- Change gui_send_mouse_event() to pass on mouse events when 'mouse'
contains 'C' or 'A'.
@@ -4824,8 +4921,6 @@ Debug mode:
Various improvements:
9 Python: be able to define a Python function that can be called directly
from Vim script. Requires converting the arguments and return value.
7 Add plugins for formatting? Should be able to make a choice depending on
the language of a file (English/Korean/Japanese/etc.).
Setting the 'langformat' option to "chinese" would load the
@@ -4850,7 +4945,6 @@ Various improvements:
7 Allow a window not to have a statusline. Makes it possible to use a
window as a buffer-tab selection.
8 Allow non-active windows to have a different statusline. (Yakov Lerner)
6 Python interface: add vim.message() function. (Michal Vitecek, 2002 Nov 5)
7 Support using ":vert" with User commands. Add expandable items <vert>.
Do the same for ":browse" and ":confirm"?
For ":silent" and ":debug" apply to the whole user command.
@@ -5081,8 +5175,6 @@ Various improvements:
- Add a variant of CTRL-V that stops interpretation of more than one
character. For entering mappings on the command line where a key contains
several special characters, e.g. a trailing newline.
- Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine
the two into a regex for searching. (Ned Konz)
- Make '2' option in 'formatoptions' also work inside comments.
- Add 's' flag to 'formatoptions': Do not break when inside a string. (Dodt)
- When window size changed (with the mouse) and made too small, set it back

View File

@@ -1,4 +1,4 @@
*various.txt* For Vim version 7.3. Last change: 2012 Dec 06
*various.txt* For Vim version 7.3. Last change: 2013 May 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -368,7 +368,7 @@ N *+mouse_sysmouse* Unix only: *BSD console mouse handling |sysmouse|
B *+mouse_sgr* Unix only: sgr mouse handling |sgr-mouse|
B *+mouse_urxvt* Unix only: urxvt mouse handling |urxvt-mouse|
N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse|
B *+multi_byte* 16 and 32 bit characters |multibyte|
N *+multi_byte* 16 and 32 bit characters |multibyte|
*+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime|
N *+multi_lang* non-English language support |multi-lang|
m *+mzscheme* Mzscheme interface |mzscheme|

View File

@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2013 Mar 16
" Last Change: 2013 May 15
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -1638,9 +1638,6 @@ func! s:FTr()
endif
endfunc
" ReDIF
au BufRead,BufNewFile *.rdf setf redif
" Remind
au BufNewFile,BufRead .reminders,*.remind,*.rem setf remind
@@ -1650,6 +1647,9 @@ au BufNewFile,BufRead resolv.conf setf resolv
" Relax NG Compact
au BufNewFile,BufRead *.rnc setf rnc
" Relax NG XML
au BufNewFile,BufRead *.rng setf rng
" RPL/2
au BufNewFile,BufRead *.rpl setf rpl
@@ -2563,6 +2563,20 @@ au BufNewFile,BufRead *termcap*
\| let b:ptcap_type = "term" | call s:StarSetf('ptcap')
\|endif
" ReDIF
" Only used when the .rdf file was not detected to be XML.
au BufRead,BufNewFile *.rdf call s:Redif()
func! s:Redif()
let lnum = 1
while lnum <= 5 && lnum < line('$')
if getline(lnum) =~ "^\ctemplate-type:"
setf redif
return
endif
let lnum = lnum + 1
endwhile
endfunc
" Remind
au BufNewFile,BufRead .reminders* call s:StarSetf('remind')

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: Aap recipe
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2003 Nov 04
" Last Change: 2013 Apr 05
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -19,7 +19,7 @@ let b:undo_ftplugin = "setl fo< com< et<"
setlocal fo-=t fo+=croql
" Set 'comments' to format dashed lists in comments.
setlocal comments=s:#\ -,m:#\ \,e:#,n:#,fb:-
setlocal comments=s:#\ -,m:#\ \ ,e:#,n:#,fb:-
" Expand tabs to spaces to avoid trouble.
setlocal expandtab

29
runtime/ftplugin/abap.vim Normal file
View File

@@ -0,0 +1,29 @@
" Vim filetype plugin file
" Language: ABAP
" Author: Steven Oliver <oliver.steven@gmail.com>
" Copyright: Copyright (c) 2013 Steven Oliver
" License: You may redistribute this under the same terms as Vim itself
" --------------------------------------------------------------------------
" Only do this when not done yet for this buffer
if (exists("b:did_ftplugin"))
finish
endif
let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
setlocal softtabstop=2 shiftwidth=2
setlocal suffixesadd=.abap
" Windows allows you to filter the open file dialog
if has("gui_win32") && !exists("b:browsefilter")
let b:browsefilter = "ABAP Source Files (*.abap)\t*.abap\n" .
\ "All Files (*.*)\t*.*\n"
endif
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: set sw=4 sts=4 et tw=80 :

View File

@@ -7,7 +7,7 @@
" Neil Bird <neil@fnxweb.com>
" $Author: krischik $
" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $
" Version: 4.6
" Version: 4.6 with patch from David Bürgin
" $Revision: 887 $
" $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/ftplugin/ada.vim $
" History: 24.05.2006 MK Unified Headers
@@ -42,7 +42,7 @@ set cpoptions-=C
" Section: Comments {{{1
"
setlocal comments=O:--,:--\ \
setlocal comments=O:--,:--\ \
setlocal commentstring=--\ \ %s
setlocal complete=.,w,b,u,t,i

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: Make
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2006 Jun 17
" Last Change: 2013 Apr 22
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -26,3 +26,8 @@ setlocal commentstring=#\ %s
" Including files.
let &l:include = '^\s*include'
" For matchit.vim, suggested by Albert Netymk.
if exists("loaded_matchit")
let b:match_words = '\<if\(n\)\=\(eq\|def\)\>:\<else\>:\<endif\>,\<define\>:\<endef\>'
endif

View File

@@ -1,8 +1,8 @@
" SQL filetype plugin file
" Language: SQL (Common for Oracle, Microsoft SQL Server, Sybase)
" Version: 10.0
" Version: 11.0
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
" Last Change: 2012 Dec 04
" Last Change: 2013 May 13
" Download: http://vim.sourceforge.net/script.php?script_id=454
" For more details please use:
@@ -36,6 +36,10 @@
"
" History
"
" Version 11.0 (May 2013)
"
" NF: Updated to use SyntaxComplete's new regex support for syntax groups.
"
" Version 10.0 (Dec 2012)
"
" NF: Changed all maps to use noremap instead of must map
@@ -189,7 +193,7 @@ if !exists("*SQL_SetType")
" Remove any cached SQL since a new sytax will have different
" items and groups
if !exists('g:loaded_sql_completion') || 100 == g:loaded_sql_completion
if !exists('g:loaded_sql_completion') || g:loaded_sql_completion >= 100
call sqlcomplete#ResetCacheSyntax()
endif
@@ -458,6 +462,8 @@ if exists('&omnifunc')
" OMNI function prior to setting up the SQL OMNI function
let b:sql_compl_savefunc = &omnifunc
" Source it to determine it's version
runtime autoload/sqlcomplete.vim
" This is used by the sqlcomplete.vim plugin
" Source it for it's global functions
runtime autoload/syntaxcomplete.vim
@@ -466,14 +472,20 @@ if exists('&omnifunc')
" Prevent the intellisense plugin from loading
let b:sql_vis = 1
if !exists('g:omni_sql_no_default_maps')
let regex_extra = ''
if exists('g:loaded_syntax_completion') && exists('g:loaded_sql_completion')
if g:loaded_syntax_completion > 120 && g:loaded_sql_completion > 140
let regex_extra = '\\w*'
endif
endif
" Static maps which use populate the completion list
" using Vim's syntax highlighting rules
exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'a <C-\><C-O>:call sqlcomplete#Map("syntax")<CR><C-X><C-O>'
exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'k <C-\><C-O>:call sqlcomplete#Map("sqlKeyword")<CR><C-X><C-O>'
exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'f <C-\><C-O>:call sqlcomplete#Map("sqlFunction")<CR><C-X><C-O>'
exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'o <C-\><C-O>:call sqlcomplete#Map("sqlOption")<CR><C-X><C-O>'
exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'T <C-\><C-O>:call sqlcomplete#Map("sqlType")<CR><C-X><C-O>'
exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'s <C-\><C-O>:call sqlcomplete#Map("sqlStatement")<CR><C-X><C-O>'
exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'k <C-\><C-O>:call sqlcomplete#Map("sqlKeyword'.regex_extra.'")<CR><C-X><C-O>'
exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'f <C-\><C-O>:call sqlcomplete#Map("sqlFunction'.regex_extra.'")<CR><C-X><C-O>'
exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'o <C-\><C-O>:call sqlcomplete#Map("sqlOption'.regex_extra.'")<CR><C-X><C-O>'
exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'T <C-\><C-O>:call sqlcomplete#Map("sqlType'.regex_extra.'")<CR><C-X><C-O>'
exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'s <C-\><C-O>:call sqlcomplete#Map("sqlStatement'.regex_extra.'")<CR><C-X><C-O>'
" Dynamic maps which use populate the completion list
" using the dbext.vim plugin
exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'t <C-\><C-O>:call sqlcomplete#Map("table")<CR><C-X><C-O>'
@@ -510,4 +522,3 @@ let &cpo = s:save_cpo
unlet s:save_cpo
" vim:sw=4:

File diff suppressed because it is too large Load Diff

View File

@@ -2,21 +2,23 @@
" Language: PHP
" Author: John Wellesz <John.wellesz (AT) teaser (DOT) fr>
" URL: http://www.2072productions.com/vim/indent/php.vim
" Last Change: 2010 Jully 26th
" Newsletter: http://www.2072productions.com/?to=php-indent-for-vim-newsletter.php
" Version: 1.33
" Home: https://github.com/2072/PHP-Indenting-for-VIm
" Last Change: 2013 May 10th
" Version: 1.37
"
"
" If you find a bug, please report it on GitHub:
" http://github.com/2072/PHP-Indenting-for-VIm/issues
" with an example of code that breaks the algorithm.
" Type :help php-indent for available options
"
" A fully commented version of this file is available on github
"
"
" Thanks a lot for using this script.
"
" If you find a bug, please open a ticket on github.org
" ( https://github.com/2072/PHP-Indenting-for-VIm/issues ) with an example of
" code that breaks the algorithm.
"
" NOTE: This script must be used with PHP syntax ON and with the php syntax
" script by Lutz Eymers (http://www.ipdienste.net/data/php.vim ) or with the
" script by Lutz Eymers (http://www.isp.de/data/php.vim ) or with the
" script by Peter Hodge (http://www.vim.org/scripts/script.php?script_id=1571 )
" the later is bunbdled by default with Vim 7.
"
@@ -26,7 +28,7 @@
" script will automatically put HereDoc end identifiers at col 1 if
" they are followed by a ';').
"
"
" NOTE: If you are editing files in Unix file format and that (by accident)
" there are '\r' before new lines, this script won't be able to proceed
" correctly and will make many mistakes because it won't be able to match
@@ -38,8 +40,6 @@
" or simply 'let' the option PHP_removeCRwhenUnix to 1 and the script will
" silently remove them when VIM load this script (at each bufread).
"
" Options: See :help php-indent for available options.
if exists("b:did_indent")
finish
@@ -50,12 +50,19 @@ let b:did_indent = 1
let php_sync_method = 0
if exists("PHP_default_indenting")
let b:PHP_default_indenting = PHP_default_indenting * &sw
else
let b:PHP_default_indenting = 0
endif
if exists("PHP_outdentSLComments")
let b:PHP_outdentSLComments = PHP_outdentSLComments * &sw
else
let b:PHP_outdentSLComments = 0
endif
if exists("PHP_BracesAtCodeLevel")
let b:PHP_BracesAtCodeLevel = PHP_BracesAtCodeLevel
else
@@ -116,13 +123,20 @@ endif
if exists("*GetPhpIndent")
call ResetPhpOptions()
finish
finish " XXX -- comment this line for easy dev
endif
let s:endline= '\s*\%(//.*\|#.*\|/\*.*\*/\s*\)\=$'
let s:PHP_startindenttag = '<?\%(.*?>\)\@!\|<script[^>]*>\%(.*<\/script>\)\@!'
function! DebugPrintReturn(scriptLine)
echo "debug:" . a:scriptLine
call getchar()
endfunction
function! GetLastRealCodeLNum(startline) " {{{
let lnum = a:startline
@@ -189,8 +203,6 @@ function! GetLastRealCodeLNum(startline) " {{{
let b:InPHPcode_and_script = 0
endif
return lnum
endfunction " }}}
@@ -198,11 +210,11 @@ function! Skippmatch2()
let line = getline(".")
if line =~ '\%(".*\)\@<=/\*\%(.*"\)\@=' || line =~ '\%(\%(//\|#\).*\)\@<=/\*'
return 1
else
return 0
endif
if line =~ "\\([\"']\\).*/\\*.*\\1" || line =~ '\%(//\|#\).*/\*'
return 1
else
return 0
endif
endfun
function! Skippmatch() " {{{
@@ -314,7 +326,7 @@ function! IslinePHP (lnum, tofind) " {{{
endif
endfunction " }}}
let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\|else\)'
let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\|die\|else\)'
let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|else\>\|while\>\|switch\>\|case\>\|default\>\|for\%(each\)\=\>\|declare\>\|class\>\|interface\>\|abstract\>\|try\>\|catch\>\)'
let s:autoresetoptions = 0
@@ -361,14 +373,12 @@ function! GetPhpIndent()
if !b:PHP_indentinghuge && b:PHP_lastindented > b:PHP_indentbeforelast
if b:PHP_indentbeforelast
let b:PHP_indentinghuge = 1
echom 'Large indenting detected, speed optimizations engaged (v1.33)'
endif
let b:PHP_indentbeforelast = b:PHP_lastindented
endif
if b:InPHPcode_checked && prevnonblank(v:lnum - 1) != b:PHP_lastindented
if b:PHP_indentinghuge
echom 'Large indenting deactivated'
let b:PHP_indentinghuge = 0
let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
endif
@@ -425,7 +435,7 @@ function! GetPhpIndent()
else
let b:InPHPcode = 0
let b:UserIsTypingComment = 0
let b:InPHPcode_tofind = '<?\%(.*?>\)\@!\|<script.*>'
let b:InPHPcode_tofind = s:PHP_startindenttag
endif
endif "!b:InPHPcode_checked }}}
@@ -493,7 +503,9 @@ function! GetPhpIndent()
endif
" Indent successive // or # comment the same way the first is {{{
let addSpecial = 0
if cline =~ '^\s*\%(//\|#\|/\*.*\*/\s*$\)'
let addSpecial = b:PHP_outdentSLComments
if b:PHP_LastIndentedWasComment == 1
return indent(real_PHP_lastindented)
endif
@@ -550,7 +562,7 @@ function! GetPhpIndent()
endif
if lnum == 0
return b:PHP_default_indenting
return b:PHP_default_indenting + addSpecial
endif
@@ -577,17 +589,17 @@ function! GetPhpIndent()
endif
if last_line =~ '[;}]'.endline && last_line !~ '^)' && last_line !~# s:defaultORcase
if last_line =~ '[;}]'.endline && last_line !~ '^[)\]]' && last_line !~# s:defaultORcase
if ind==b:PHP_default_indenting
return b:PHP_default_indenting
return b:PHP_default_indenting + addSpecial
elseif b:PHP_indentinghuge && ind==b:PHP_CurrentIndentLevel && cline !~# '^\s*\%(else\|\%(case\|default\).*:\|[})];\=\)' && last_line !~# '^\s*\%(\%(}\s*\)\=else\)' && getline(GetLastRealCodeLNum(lnum - 1))=~';'.endline
return b:PHP_CurrentIndentLevel
return b:PHP_CurrentIndentLevel + addSpecial
endif
endif
let LastLineClosed = 0
let terminated = '\%(;\%(\s*?>\)\=\|<<<''\=\a\w*''\=$\|^\s*}\)'.endline
let terminated = '\%(;\%(\s*\%(?>\|}\)\)\=\|<<<''\=\a\w*''\=$\|^\s*}\)'.endline
let unstated = '\%(^\s*'.s:blockstart.'.*)\|\%(//.*\)\@<!\<e'.'lse\>\)'.endline
@@ -618,19 +630,23 @@ function! GetPhpIndent()
endwhile
elseif last_line =~# unstated && cline !~ '^\s*);\='.endline
let ind = ind + &sw
return ind
let ind = ind + &sw " we indent one level further when the preceding line is not stated
return ind + addSpecial
elseif (ind != b:PHP_default_indenting || last_line =~ '^)' ) && last_line =~ terminated
elseif (ind != b:PHP_default_indenting || last_line =~ '^[)\]]' ) && last_line =~ terminated " Added || last_line =~ '^)' on 2007-12-30 (array indenting problem broke other things)
let previous_line = last_line
let last_line_num = lnum
let LastLineClosed = 1
while 1
if previous_line =~ '^\s*}'
let last_line_num = FindOpenBracket(last_line_num)
if previous_line =~ '^\s*}\|;\s*}'.endline " XXX
if getline(last_line_num) =~ '^\s*{'
call cursor(last_line_num, 1)
call search('}\|;\s*}'.endline, 'W')
let oldLastLine = last_line_num
let last_line_num = searchpair('{', '', '}', 'bW', 'Skippmatch()')
if oldLastLine == last_line_num || getline(last_line_num) =~ '^\s*{'
let last_line_num = GetLastRealCodeLNum(last_line_num - 1)
endif
@@ -674,7 +690,7 @@ function! GetPhpIndent()
let ind = indent(last_match)
let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
return ind
return ind + addSpecial
endif
endif
@@ -693,7 +709,7 @@ function! GetPhpIndent()
if !LastLineClosed
if last_line =~# '[{(]'.endline || last_line =~? '\h\w*\s*(.*,$' && AntepenultimateLine !~ '[,(]'.endline
if last_line =~# '[{(\[]'.endline || last_line =~? '\h\w*\s*(.*,$' && AntepenultimateLine !~ '[,(]'.endline
if !b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{'
let ind = ind + &sw
@@ -702,7 +718,7 @@ function! GetPhpIndent()
if b:PHP_BracesAtCodeLevel || b:PHP_vintage_case_default_indent == 1
let b:PHP_CurrentIndentLevel = ind
return ind
return ind + addSpecial
endif
elseif last_line =~ '\S\+\s*),'.endline
@@ -712,22 +728,21 @@ function! GetPhpIndent()
if openedparent != lnum
let ind = indent(openedparent)
endif
elseif last_line =~ '^\s*'.s:blockstart
let ind = ind + &sw
elseif AntepenultimateLine =~ '\%(;\%(\s*?>\)\=\|<<<''\=\a\w*''\=$\|^\s*}\|{\)'.endline . '\|' . s:defaultORcase
elseif AntepenultimateLine =~ '\%(;\%(\s*\%(?>\|}\)\)\=\|<<<''\=\a\w*''\=$\|^\s*}\|{\)'.endline . '\|' . s:defaultORcase
let ind = ind + &sw
endif
endif
if cline =~ '^\s*);\='
if cline =~ '^\s*[)\]];\='
let ind = ind - &sw
endif
let b:PHP_CurrentIndentLevel = ind
return ind
return ind + addSpecial
endfunction

View File

@@ -1,6 +1,6 @@
" Vim indent file
" Language: LaTeX
" Maintainer: Zhou YiChao <broken.zhou AT gmail.com>
" Maintainer: YiChao Zhou <broken.zhou AT gmail.com>
" Created: Sat, 16 Feb 2002 16:50:19 +0100
" Last Change: 2012 Mar 18 19:19:50
" Version: 0.7
@@ -46,6 +46,9 @@
" (*) Modify indentkeys.
" 2012/03/18 by Zhou Yichao <broken.zhou AT gmail.com>
" (*) Add &cpo
" 2013/05/02 by Zhou Yichao <broken.zhou AT gmail.com>
" (*) Fix problem about GetTeXIndent checker. Thank Albert Netymk
" for reporting this.
" }}}
" Document: {{{
@@ -106,10 +109,6 @@
" }}}
" Only define the function once
if exists("*GetTeXIndent")
finish
endif
if exists("b:did_indent")
finish
endif
@@ -158,7 +157,7 @@ exec 'setlocal indentkeys+=[,(,{,),},],\&' . substitute(g:tex_items, '^\|\(\\|\)
let g:tex_items = '^\s*' . substitute(g:tex_items, '^\(\^\\s\*\)*', '', '')
" }}}
function GetTeXIndent() " {{{
function! GetTeXIndent() " {{{
" Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1)

View File

@@ -2,9 +2,9 @@
"
" Menu Translations: Japanese (EUC-JP)
" Translated By: MURAOKA Taro <koron.kaoriya@gmail.com>
" Last Change: 24-Feb-2013.
" Last Change: 12-May-2013.
"
" Copyright (C) 2001-12 MURAOKA Taro <koron.kaoriya@gmail.com>
" Copyright (C) 2001-13 MURAOKA Taro <koron.kaoriya@gmail.com>
" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE.
" Quit when menu translations have already been done.
@@ -299,50 +299,6 @@ menutrans Co&lor\ test
menutrans &Highlight\ test <09>ϥ<EFBFBD><EFBFBD><EFBFBD>ȥƥ<EFBFBD><EFBFBD><EFBFBD>(&H)
menutrans &Convert\ to\ HTML HTML<EFBFBD>إ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD>(&C)
" Japanese specific menu
" <20><><EFBFBD>ݤ<EFBFBD>iconv<6E><76><EFBFBD>衢ɬ<E8A1A2><C9AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAA4B7><EFBFBD><EFBFBD><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɤˤʤ<CBA4><CAA4><EFBFBD>ǤϤʤ<CFA4><CAA4><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD>
if has('iconv')
" iconv<6E>ΥС<CEA5><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD><C8BD>
let s:support_jisx0213 = (iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb") ? 1 : 0
" <20>ɤ߹<C9A4><DFB9><EFBFBD>
an 10.395 &File.-SEPICONV- <Nop>
an 10.396.100.100 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><><EFBFBD><EFBFBD>(&O)\.\.\..SJIS(&S)<Tab>fenc=cp932 :browse confirm e ++enc=cp932<CR>
if !s:support_jisx0213
an 10.396.100.110 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><><EFBFBD><EFBFBD>(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jp :browse confirm e ++enc=euc-jp<CR>
an 10.396.100.120 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><><EFBFBD><EFBFBD>(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :browse confirm e ++enc=iso-2022-jp<CR>
else
an 10.396.100.110 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><><EFBFBD><EFBFBD>(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :browse confirm e ++enc=euc-jisx0213<CR>
an 10.396.100.120 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><><EFBFBD><EFBFBD>(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :browse confirm e ++enc=iso-2022-jp-3<CR>
endif
an 10.396.100.130 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><><EFBFBD><EFBFBD>(&O)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :browse confirm e ++enc=utf-8<CR>
" <20><><EFBFBD>ɹ<EFBFBD>
an 10.396.110.100 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><><EFBFBD>ɹ<EFBFBD>(&R)\.\.\..SJIS(&S)<Tab>fenc=cp932 :e ++enc=cp932<CR>
if !s:support_jisx0213
an 10.396.110.110 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><><EFBFBD>ɹ<EFBFBD>(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jp :e ++enc=euc-jp<CR>
an 10.396.110.120 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><><EFBFBD>ɹ<EFBFBD>(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :e ++enc=iso-2022-jp<CR>
else
an 10.396.110.110 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><><EFBFBD>ɹ<EFBFBD>(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :e ++enc=euc-jisx0213<CR>
an 10.396.110.120 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><><EFBFBD>ɹ<EFBFBD>(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :e ++enc=iso-2022-jp-3<CR>
endif
an 10.396.110.130 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><><EFBFBD>ɹ<EFBFBD>(&R)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :e ++enc=utf-8<CR>
" <20><>¸
an 10.396.115 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..-SEP1- <Nop>
an 10.396.120.100 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><>¸(&S)\.\.\..SJIS(&S)<Tab>fenc=cp932 :set fenc=cp932 \| w<CR>
if !s:support_jisx0213
an 10.396.120.110 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><>¸(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jp :set fenc=euc-jp \| w<CR>
an 10.396.120.120 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><>¸(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :set fenc=iso-2022-jp \| w<CR>
else
an 10.396.120.110 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><>¸(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :set fenc=euc-jisx0213 \| w<CR>
an 10.396.120.120 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><>¸(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :set fenc=iso-2022-jp-3 \| w<CR>
endif
an 10.396.120.130 &File.<2E><><EFBFBD>󥳡<EFBFBD><F3A5B3A1>ɻ<EFBFBD><EFBFBD><EFBFBD>(&E)\.\.\..<2E><>¸(&S)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :set fenc=utf-8 \| w<CR>
unlet s:support_jisx0213
endif
let &cpo = s:keepcpo
unlet s:keepcpo

View File

@@ -2,9 +2,9 @@
"
" Menu Translations: Japanese (UTF-8)
" Translated By: MURAOKA Taro <koron.kaoriya@gmail.com>
" Last Change: 24-Feb-2013.
" Last Change: 12-May-2013.
"
" Copyright (C) 2001-12 MURAOKA Taro <koron.kaoriya@gmail.com>
" Copyright (C) 2001-13 MURAOKA Taro <koron.kaoriya@gmail.com>
" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE.
" Quit when menu translations have already been done.
@@ -299,50 +299,6 @@ menutrans Co&lor\ test カラーテスト(&L)
menutrans &Highlight\ test ハイライトテスト(&H)
menutrans &Convert\ to\ HTML HTMLへコンバート(&C)
" Japanese specific menu
" 成否はiconv次第、必ずしも指定したエンコードになるわけではないことに注意
if has('iconv')
" iconvのバージョン判定
let s:support_jisx0213 = (iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb") ? 1 : 0
" 読み込み
an 10.395 &File.-SEPICONV- <Nop>
an 10.396.100.100 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..SJIS(&S)<Tab>fenc=cp932 :browse confirm e ++enc=cp932<CR>
if !s:support_jisx0213
an 10.396.100.110 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jp :browse confirm e ++enc=euc-jp<CR>
an 10.396.100.120 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :browse confirm e ++enc=iso-2022-jp<CR>
else
an 10.396.100.110 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :browse confirm e ++enc=euc-jisx0213<CR>
an 10.396.100.120 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :browse confirm e ++enc=iso-2022-jp-3<CR>
endif
an 10.396.100.130 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :browse confirm e ++enc=utf-8<CR>
" 再読込
an 10.396.110.100 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..SJIS(&S)<Tab>fenc=cp932 :e ++enc=cp932<CR>
if !s:support_jisx0213
an 10.396.110.110 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jp :e ++enc=euc-jp<CR>
an 10.396.110.120 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :e ++enc=iso-2022-jp<CR>
else
an 10.396.110.110 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :e ++enc=euc-jisx0213<CR>
an 10.396.110.120 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :e ++enc=iso-2022-jp-3<CR>
endif
an 10.396.110.130 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :e ++enc=utf-8<CR>
" 保存
an 10.396.115 &File.エンコード指定(&E)\.\.\..-SEP1- <Nop>
an 10.396.120.100 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..SJIS(&S)<Tab>fenc=cp932 :set fenc=cp932 \| w<CR>
if !s:support_jisx0213
an 10.396.120.110 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jp :set fenc=euc-jp \| w<CR>
an 10.396.120.120 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :set fenc=iso-2022-jp \| w<CR>
else
an 10.396.120.110 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :set fenc=euc-jisx0213 \| w<CR>
an 10.396.120.120 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :set fenc=iso-2022-jp-3 \| w<CR>
endif
an 10.396.120.130 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :set fenc=utf-8 \| w<CR>
unlet s:support_jisx0213
endif
let &cpo = s:keepcpo
unlet s:keepcpo

View File

@@ -2,9 +2,9 @@
"
" Menu Translations: Japanese (CP932)
" Translated By: MURAOKA Taro <koron.kaoriya@gmail.com>
" Last Change: 24-Feb-2013.
" Last Change: 12-May-2013.
"
" Copyright (C) 2001-12 MURAOKA Taro <koron.kaoriya@gmail.com>
" Copyright (C) 2001-13 MURAOKA Taro <koron.kaoriya@gmail.com>
" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE.
" Quit when menu translations have already been done.
@@ -299,50 +299,6 @@ menutrans Co&lor\ test
menutrans &Highlight\ test <09>n<EFBFBD>C<EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>g<EFBFBD>e<EFBFBD>X<EFBFBD>g(&H)
menutrans &Convert\ to\ HTML HTML<EFBFBD>փR<EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>[<5B>g(&C)
" Japanese specific menu
" <20><><EFBFBD>ۂ<EFBFBD>iconv<6E><76><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>K<EFBFBD><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><EFBFBD><E882B5><EFBFBD>G<EFBFBD><47><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>ɂȂ<C982><C882><EFBFBD>ł͂Ȃ<CD82><C882><EFBFBD><EFBFBD>Ƃɒ<C682><C992><EFBFBD>
if has('iconv')
" iconv<6E>̃o<CC83>[<5B>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
let s:support_jisx0213 = (iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb") ? 1 : 0
" <20>ǂݍ<C782><DD8D><EFBFBD>
an 10.395 &File.-SEPICONV- <Nop>
an 10.396.100.100 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>J<EFBFBD><EFBFBD>(&O)\.\.\..SJIS(&S)<Tab>fenc=cp932 :browse confirm e ++enc=cp932<CR>
if !s:support_jisx0213
an 10.396.100.110 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>J<EFBFBD><EFBFBD>(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jp :browse confirm e ++enc=euc-jp<CR>
an 10.396.100.120 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>J<EFBFBD><EFBFBD>(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :browse confirm e ++enc=iso-2022-jp<CR>
else
an 10.396.100.110 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>J<EFBFBD><EFBFBD>(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :browse confirm e ++enc=euc-jisx0213<CR>
an 10.396.100.120 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>J<EFBFBD><EFBFBD>(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :browse confirm e ++enc=iso-2022-jp-3<CR>
endif
an 10.396.100.130 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>J<EFBFBD><EFBFBD>(&O)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :browse confirm e ++enc=utf-8<CR>
" <20>ēǍ<C493>
an 10.396.110.100 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>ēǍ<EFBFBD>(&R)\.\.\..SJIS(&S)<Tab>fenc=cp932 :e ++enc=cp932<CR>
if !s:support_jisx0213
an 10.396.110.110 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>ēǍ<EFBFBD>(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jp :e ++enc=euc-jp<CR>
an 10.396.110.120 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>ēǍ<EFBFBD>(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :e ++enc=iso-2022-jp<CR>
else
an 10.396.110.110 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>ēǍ<EFBFBD>(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :e ++enc=euc-jisx0213<CR>
an 10.396.110.120 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>ēǍ<EFBFBD>(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :e ++enc=iso-2022-jp-3<CR>
endif
an 10.396.110.130 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>ēǍ<EFBFBD>(&R)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :e ++enc=utf-8<CR>
" <20>ۑ<EFBFBD>
an 10.396.115 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..-SEP1- <Nop>
an 10.396.120.100 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>ۑ<EFBFBD>(&S)\.\.\..SJIS(&S)<Tab>fenc=cp932 :set fenc=cp932 \| w<CR>
if !s:support_jisx0213
an 10.396.120.110 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>ۑ<EFBFBD>(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jp :set fenc=euc-jp \| w<CR>
an 10.396.120.120 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>ۑ<EFBFBD>(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :set fenc=iso-2022-jp \| w<CR>
else
an 10.396.120.110 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>ۑ<EFBFBD>(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :set fenc=euc-jisx0213 \| w<CR>
an 10.396.120.120 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>ۑ<EFBFBD>(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :set fenc=iso-2022-jp-3 \| w<CR>
endif
an 10.396.120.130 &File.<2E>G<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>[<5B>h<EFBFBD>w<EFBFBD><EFBFBD>(&E)\.\.\..<2E>ۑ<EFBFBD>(&S)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :set fenc=utf-8 \| w<CR>
unlet s:support_jisx0213
endif
let &cpo = s:keepcpo
unlet s:keepcpo

View File

@@ -2,7 +2,7 @@
" You can also use this as a start for your own set of menus.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2012 Dec 06
" Last Change: 2013 May 17
" Note that ":an" (short for ":anoremenu") is often used to make a menu work
" in all modes and avoid side effects from mappings defined by the user.
@@ -308,8 +308,10 @@ fun! s:TextWidth()
endif
let n = inputdialog(g:menutrans_textwidth_dialog, &tw)
if n != ""
" remove leading zeros to avoid it being used as an octal number
let &tw = substitute(n, "^0*", "", "")
" Remove leading zeros to avoid it being used as an octal number.
" But keep a zero by itself.
let tw = substitute(n, "^0*", "", "")
let &tw = tw == '' ? 0 : tw
endif
endfun

View File

@@ -1,7 +1,7 @@
" These commands create the option window.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2012 Feb 22
" Last Change: 2013 May 20
" If there already is an option window, jump to that one.
if bufwinnr("option-window") > 0
@@ -258,6 +258,8 @@ call append("$", "incsearch\tshow match for partly typed search command")
call <SID>BinOptionG("is", &is)
call append("$", "magic\tchange the way backslashes are used in search patterns")
call <SID>BinOptionG("magic", &magic)
call append("$", "regexpengine\tselect the default regexp engine used")
call <SID>OptionG("re", &re)
call append("$", "ignorecase\tignore case when using a search pattern")
call <SID>BinOptionG("ic", &ic)
call append("$", "smartcase\toverride 'ignorecase' when pattern has upper case characters")
@@ -1035,6 +1037,8 @@ if has("wildignore")
call append("$", "wildignore\tlist of patterns to ignore files for file name completion")
call <SID>OptionG("wig", &wig)
endif
call append("$", "fileignorecase\tignore case when using file names")
call <SID>BinOptionG("fic", &fic)
call append("$", "wildignorecase\tignore case when completing file names")
call <SID>BinOptionG("wic", &wic)
if has("wildmenu")

View File

@@ -1,6 +1,6 @@
" ---------------------------------------------------------------------
" getscriptPlugin.vim
" Author: Charles E. Campbell, Jr.
" Author: Charles E. Campbell
" Date: Jan 07, 2008
" Installing: :help glvs-install
" Usage: :help glvs
@@ -19,7 +19,7 @@ if &cp || exists("g:loaded_getscriptPlugin")
endif
finish
endif
let g:loaded_getscriptPlugin = "v34"
let g:loaded_getscriptPlugin = "v35"
let s:keepcpo = &cpo
set cpo&vim

View File

@@ -1,19 +1,29 @@
" Vim plugin for showing matching parens
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2011 Aug 27
" Last Change: 2013 May 08
" Exit quickly when:
" - this plugin was already loaded (or disabled)
" - when 'compatible' is set
" - the "CursorMoved" autocmd event is not availble.
" - the "CursorMoved" autocmd event is not available.
if exists("g:loaded_matchparen") || &cp || !exists("##CursorMoved")
finish
endif
let g:loaded_matchparen = 1
if !exists("g:matchparen_timeout")
let g:matchparen_timeout = 300
endif
if !exists("g:matchparen_insert_timeout")
let g:matchparen_insert_timeout = 60
endif
augroup matchparen
" Replace all matchparen autocommands
autocmd! CursorMoved,CursorMovedI,WinEnter * call s:Highlight_Matching_Pair()
if exists('##TextChanged')
autocmd! TextChanged,TextChangedI * call s:Highlight_Matching_Pair()
endif
augroup END
" Skip the rest if it was already done.
@@ -96,10 +106,15 @@ function! s:Highlight_Matching_Pair()
let stopline = stoplinetop
endif
" Limit the search time to 300 msec to avoid a hang on very long lines.
" This fails when a timeout is not supported.
if mode() == 'i' || mode() == 'R'
let timeout = exists("b:matchparen_insert_timeout") ? b:matchparen_insert_timeout : g:matchparen_insert_timeout
else
let timeout = exists("b:matchparen_timeout") ? b:matchparen_timeout : g:matchparen_timeout
endif
try
" Limit the search time to 300 msec to avoid a hang on very long lines.
" This fails when a timeout is not supported.
let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline, 300)
let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline, timeout)
catch /E118/
" Can't use the timeout, restrict the stopline a bit more to avoid taking
" a long time on closed folds and long lines.

View File

@@ -1,9 +1,9 @@
" netrwPlugin.vim: Handles file transfer and remote directory listing across a network
" PLUGIN SECTION
" Date: Aug 24, 2011
" Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" Date: Apr 30, 2013
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
" Copyright: Copyright (C) 1999-2012 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
@@ -20,13 +20,15 @@
if &cp || exists("g:loaded_netrwPlugin")
finish
endif
let g:loaded_netrwPlugin = "v146"
"DechoTabOn
let g:loaded_netrwPlugin = "v149"
if v:version < 702
echohl WarningMsg | echo "***netrw*** you need vim version 7.2 for this version of netrw" | echohl None
finish
endif
let s:keepcpo = &cpo
set cpo&vim
"DechoTabOn
" ---------------------------------------------------------------------
" Public Interface: {{{1
@@ -34,9 +36,7 @@ set cpo&vim
" Local Browsing: {{{2
augroup FileExplorer
au!
" au BufReadCmd *[/\\] sil! call s:LocalBrowse(expand("<amatch>"))
" au BufEnter *[^/\\] sil! call s:LocalBrowse(expand("<amatch>"))
" au VimEnter *[^/\\] sil! call s:VimEnter(expand("<amatch>"))
" SEE Benzinger problem...
au BufEnter * sil! call s:LocalBrowse(expand("<amatch>"))
au VimEnter * sil! call s:VimEnter(expand("<amatch>"))
if has("win32") || has("win95") || has("win64") || has("win16")
@@ -47,11 +47,11 @@ augroup END
" Network Browsing Reading Writing: {{{2
augroup Network
au!
au BufReadCmd file://* call netrw#FileUrlRead(expand("<amatch>"))
au BufReadCmd ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(2,expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>"))
au FileReadCmd ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau FileReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(1,expand("<amatch>"))|exe "silent doau FileReadPost ".fnameescape(expand("<amatch>"))
au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau BufWritePre ".fnameescape(expand("<amatch>"))|exe 'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau BufWritePost ".fnameescape(expand("<amatch>"))
au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau FileWritePre ".fnameescape(expand("<amatch>"))|exe "'[,']".'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau FileWritePost ".fnameescape(expand("<amatch>"))
au BufReadCmd file://* call netrw#FileUrlRead(expand("<amatch>"))
au BufReadCmd ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau BufReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(2,expand("<amatch>"))|exe "sil doau BufReadPost ".fnameescape(expand("<amatch>"))
au FileReadCmd ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau FileReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(1,expand("<amatch>"))|exe "sil doau FileReadPost ".fnameescape(expand("<amatch>"))
au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau BufWritePre ".fnameescape(expand("<amatch>"))|exe 'Nwrite '.fnameescape(expand("<amatch>"))|exe "sil doau BufWritePost ".fnameescape(expand("<amatch>"))
au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau FileWritePre ".fnameescape(expand("<amatch>"))|exe "'[,']".'Nwrite '.fnameescape(expand("<amatch>"))|exe "sil doau FileWritePost ".fnameescape(expand("<amatch>"))
try
au SourceCmd ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe 'Nsource '.fnameescape(expand("<amatch>"))
catch /^Vim\%((\a\+)\)\=:E216/
@@ -92,27 +92,37 @@ fun! s:LocalBrowse(dirname)
" unfortunate interaction -- debugging calls can't be used here;
" the BufEnter event causes triggering when attempts to write to
" the DBG buffer are made.
if !exists("s:vimentered")
return
endif
" call Decho("s:LocalBrowse(dirname<".a:dirname.">){")
" echomsg "dirname<".a:dirname.">"
if has("amiga")
" The check against '' is made for the Amiga, where the empty
" string is the current directory and not checking would break
" things such as the help command.
" call Decho("(LocalBrowse) dirname<".a:dirname."> (amiga)")
if a:dirname != '' && isdirectory(a:dirname)
sil! call netrw#LocalBrowseCheck(a:dirname)
endif
elseif isdirectory(a:dirname)
" echomsg "dirname<".dirname."> isdir"
" call Decho("(LocalBrowse) dirname<".a:dirname."> (not amiga)")
sil! call netrw#LocalBrowseCheck(a:dirname)
endif
" not a directory, ignore it
" call Decho("|return s:LocalBrowse }")
endfun
" ---------------------------------------------------------------------
" s:VimEnter: {{{2
fun! s:VimEnter(dirname)
let curwin= winnr()
" call Decho("VimEnter(dirname<".a:dirname.">){")
let curwin = winnr()
let s:vimentered = 1
windo if a:dirname != expand("%")|call s:LocalBrowse(expand("%:p"))|endif
exe curwin."wincmd w"
" call Decho("|return VimEnter }")
endfun
" ---------------------------------------------------------------------

View File

@@ -1,6 +1,6 @@
" tarPlugin.vim -- a Vim plugin for browsing tarfiles
" Original was copyright (c) 2002, Michael C. Toren <mct@toren.net>
" Modified by Charles E. Campbell, Jr.
" Modified by Charles E. Campbell
" Distributed under the GNU General Public License.
"
" Updates are available from <http://michael.toren.net/code/>. If you
@@ -14,7 +14,7 @@
if &cp || exists("g:loaded_tarPlugin")
finish
endif
let g:loaded_tarPlugin = "v28"
let g:loaded_tarPlugin = "v29"
let s:keepcpo = &cpo
set cpo&vim

View File

@@ -1,9 +1,9 @@
" zipPlugin.vim: Handles browsing zipfiles
" PLUGIN PORTION
" Date: Aug 15, 2011
" Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" Date: Nov 15, 2012
" Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005-2011 Charles E. Campbell, Jr. {{{1
" Copyright: Copyright (C) 2005-2012 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
@@ -20,7 +20,7 @@
if &cp || exists("g:loaded_zipPlugin")
finish
endif
let g:loaded_zipPlugin = "v25"
let g:loaded_zipPlugin = "v26"
let s:keepcpo = &cpo
set cpo&vim
@@ -40,7 +40,7 @@ augroup zip
au FileWriteCmd zipfile:*/* call zip#Write(expand("<amatch>"))
endif
au BufReadCmd *.zip,*.jar,*.xpi,*.war,*.ear,*.celzip,*.oxt call zip#Browse(expand("<amatch>"))
au BufReadCmd *.zip,*.jar,*.xpi,*.ja,*.war,*.ear,*.celzip,*.oxt,*.kmz,*.wsz,*.xap,*.docx,*.docm,*.dotx,*.dotm,*.potx,*.potm,*.ppsx,*.ppsm,*.pptx,*.pptm,*.ppam,*.sldx,*.thmx,*.xlam,*.xlsx,*.xlsm,*.xlsb,*.xltx,*.xltm,*.xlam,*.crtx,*.vdw,*.glox,*.gcsx,*.gqsx call zip#Browse(expand("<amatch>"))
augroup END
" ---------------------------------------------------------------------

View File

@@ -1,7 +1,7 @@
" Vim syntax file
" Language: APT config file
" Maintainer: Yann Amar <quidame@poivron.org>
" Last Change: 2012 Oct 06
" Last Change: 2013 Apr 12
" For version 5.x: Clear all syntax items
" For version 6.x and 7.x: Quit when a syntax file was already loaded
@@ -17,7 +17,6 @@ endif
let s:cpo_save = &cpo
set cpo&vim
" Errors:
" Catch all that is not overridden by next rules/items:
syn match aptconfError display '[^[:blank:]]'
@@ -198,6 +197,24 @@ syn keyword aptconfAptitudeUI contained
\ Package-Status-Format Pause-After-Download Preview-Limit
\ Prompt-On-Exit Styles ViewTabs
syn keyword aptconfAptitudeUIKeyBindings contained
\ ApplySolution Begin BugReport Cancel Changelog ChangePkgTreeGrouping
\ ChangePkgTreeLimit ChangePkgTreeSorting ClearAuto CollapseAll
\ CollapseTree Commit Confirm Cycle CycleNext CycleOrder CyclePrev
\ DelBOL DelBack DelEOL DelForward Dependencies DescriptionCycle
\ DescriptionDown DescriptionUp DoInstallRun Down DpkgReconfigure
\ DumpResolver EditHier End ExamineSolution ExpandAll ExpandTree
\ FirstSolution ForbidUpgrade ForgetNewPackages Help HistoryNext
\ HistoryPrev Hold Install InstallSingle Keep LastSolution Left
\ LevelDown LevelUp MarkUpgradable MineFlagSquare MineLoadGame
\ MineSaveGame MineSweepSquare MineUncoverSquare MineUncoverSweepSquare
\ NextPage NextSolution No Parent PrevPage PrevSolution Purge
\ PushButton Quit QuitProgram RejectBreakHolds Refresh Remove
\ ReInstall RepeatSearchBack ReSearch ReverseDependencies Right
\ SaveHier Search SearchBack SearchBroken SetAuto ShowHideDescription
\ SolutionActionApprove SolutionActionReject ToggleExpanded
\ ToggleMenuActive Undo Up UpdatePackageList Versions Yes
syn keyword aptconfAptitudeUIStyles contained
\ Bullet ChangeLogNewerVersion Default DepBroken DisabledMenuEntry
\ DownloadHit DownloadProgress EditLine Error Header HighlightedMenuBar
@@ -220,7 +237,8 @@ syn cluster aptconfAptitude_ contains=aptconfAptitude,
\ aptconfAptitudeCmdlineSafeUpgrade,aptconfAptitudeLogging,
\ aptconfAptitudeProblemResolver,aptconfAptitudeSafeResolver,
\ aptconfAptitudeScreenshot,aptconfAptitudeSections,aptconfAptitudeUI,
\ aptconfAptitudeUIStyles,aptconfAptitudeUIStylesElements
\ aptconfAptitudeUIKeyBindings,aptconfAptitudeUIStyles,
\ aptconfAptitudeUIStylesElements
" }}}
" DebTags: {{{
syn keyword aptconfDebTags contained
@@ -449,6 +467,7 @@ hi def link aptconfAptitudeSafeResolver aptconfOption
hi def link aptconfAptitudeScreenshot aptconfOption
hi def link aptconfAptitudeSections aptconfOption
hi def link aptconfAptitudeUI aptconfOption
hi def link aptconfAptitudeUIKeyBindings aptconfOption
hi def link aptconfAptitudeUIStyles aptconfOption
hi def link aptconfAptitudeUIStylesElements aptconfOption

View File

@@ -2,7 +2,8 @@
" Language: Clean
" Author: Pieter van Engelen <pietere@sci.kun.nl>
" Co-Author: Arthur van Leeuwen <arthurvl@sci.kun.nl>
" Last Change: 2011 Dec 25 by Thilo Six
" Previous Change: 2011 Dec 25 by Thilo Six
" Last Change: 2013 Apr 25 by Jurriën Stutterheim
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@@ -18,7 +19,7 @@ set cpo&vim
" Some Clean-keywords
syn keyword cleanConditional if case
syn keyword cleanLabel let! with where in of
syn keyword cleanInclude from import
syn keyword cleanInclude from import qualified
syn keyword cleanSpecial Start
syn keyword cleanKeyword infixl infixr infix
syn keyword cleanBasicType Int Real Char Bool String

View File

@@ -3,7 +3,7 @@
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
" Last Change: 2013 Jan 03
" Last Change: 2013 May 05
" URL: http://anonscm.debian.org/hg/pkg-vim/vim/raw-file/unstable/runtime/syntax/debchangelog.vim
" Standard syntax initialization
@@ -19,7 +19,7 @@ syn case ignore
" Define some common expressions we can use later on
syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ "
syn match debchangelogUrgency contained "; urgency=\(low\|medium\|high\|critical\|emergency\)\( \S.*\)\="
syn match debchangelogTarget contained "\v %(frozen|unstable|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(squeeze)-%(backports%(-sloppy)=|volatile)|%(hardy|lucid|oneiric|precise|quantal|raring)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
syn match debchangelogTarget contained "\v %(frozen|unstable|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|squeeze-%(backports%(-sloppy)=|volatile)|wheezy-backports|%(lucid|precise|quantal|raring|saucy)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
syn match debchangelogVersion contained "(.\{-})"
syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"

View File

@@ -3,7 +3,7 @@
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
" Last Change: 2012 Dec 31
" Last Change: 2013 May 05
" URL: http://anonscm.debian.org/hg/pkg-vim/vim/raw-file/unstable/runtime/syntax/debcontrol.vim
" Standard syntax initialization
@@ -38,7 +38,7 @@ syn match debcontrolDmUpload contained "\cyes"
syn match debcontrolHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
syn match debcontrolVcsSvn contained "\vsvn%(\+ssh)?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
syn match debcontrolVcsCvs contained "\v%(\-d *)?:pserver:[^@]+\@[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?:/[^[:space:]]*%( [^[:space:]]+)?$"
syn match debcontrolVcsGit contained "\v%(git|http)://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
syn match debcontrolVcsGit contained "\v%(git|http)://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?%(\s+-b\s+[^ ~^:?*[\\]+)?$"
" An email address
syn match debcontrolEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"

View File

@@ -2,7 +2,7 @@
" Language: Debian sources.list
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
" Last Change: 2013 Jan 03
" Last Change: 2013 May 05
" URL: http://anonscm.debian.org/hg/pkg-vim/vim/raw-file/unstable/runtime/syntax/debsources.vim
" Standard syntax initialization
@@ -23,7 +23,7 @@ syn match debsourcesComment /#.*/ contains=@Spell
" Match uri's
syn match debsourcesUri +\(http://\|ftp://\|[rs]sh://\|debtorrent://\|\(cdrom\|copy\|file\):\)[^' <>"]\++
syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\(squeeze\|wheezy\|\(old\)\=stable\|testing\|unstable\|sid\|rc-buggy\|experimental\|hardy\|lucid\|oneiric\|precise\|quantal\|raring\)\([-[:alnum:]_./]*\)+
syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\(squeeze\|wheezy\|\(old\)\=stable\|testing\|unstable\|sid\|rc-buggy\|experimental\|lucid\|precise\|quantal\|raring\|saucy\)\([-[:alnum:]_./]*\)+
" Associate our matches and regions with pretty colours
hi def link debsourcesLine Error

View File

@@ -1,7 +1,7 @@
" Vim syntax file
" Language: dts/dtsi (device tree files)
" Maintainer: Daniel Mack <vim@zonque.org>
" Last Change: 2013 Mar 11
" Last Change: 2013 Apr 05
if exists("b:current_syntax")
finish
@@ -13,7 +13,7 @@ syntax region dtsBinaryProperty start="\[" end="\]"
syntax match dtsStringProperty "\".*\""
syntax match dtsKeyword "/.*/"
syntax match dtsLabel "^[[:space:]]*[[:alpha:][:digit:]_]\+:"
syntax match dtsNode /[[:alpha:][:digit:]-_]\+\(@[0-9a-eA-E]\+\|\)[[:space:]]*{/he=e-1
syntax match dtsNode /[[:alpha:][:digit:]-_]\+\(@[0-9a-fA-F]\+\|\)[[:space:]]*{/he=e-1
syntax region dtsCellProperty start="<" end=">" contains=dtsReference,dtsBinaryProperty,dtsStringProperty,dtsComment
syntax region dtsCommentInner start="/\*" end="\*/"

View File

@@ -1,126 +1,175 @@
" Vim syntax file
" Language: Erlang
" Author: Oscar Hellstr<74>m <oscar@oscarh.net> (http://oscar.hellstrom.st)
" Contributors: Ricardo Catalinas Jim<69>nez <jimenezrick@gmail.com>
" Language: Erlang (http://www.erlang.org)
" Maintainer: Csaba Hoch <csaba.hoch@gmail.com>
" Former Maintainer: Kreąimir Marľić (Kresimir Marzic) <kmarzic@fly.srk.fer.hr>
" Last Update: 2013-Mar-07
" License: Vim license
" Version: 2011/09/11
" URL: https://github.com/hcs42/vim-erlang
if exists("b:current_syntax")
finish
else
let b:current_syntax = "erlang"
" Customization:
"
" There are two optional sets of highlighting:
"
" 1. The BIFs (built-in functions) are highlighted by default. To disable
" this, put the following line in your vimrc:
"
" let g:erlang_highlight_bifs = 0
"
" 2. To enable highlighting some special atoms, put this in your vimrc:
"
" let g:erlang_highlight_special_atoms = 1
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
if !exists("g:erlang_highlight_bif")
let g:erlang_highlight_bif = 1
endif
" Erlang is case sensitive
" Case sensitive
syn case match
" Match groups
syn match erlangStringModifier /\\./ contained
syn match erlangStringModifier /\~\%(-\?[0-9*]\+\)\?\%(\.[0-9*]\+\..\?\)\?\%(c\|f\|e\|g\|s\|w\|p\|W\|P\|B\|X\|#\|b\|+\|n\|i\)/ contained
syn match erlangModifier /\$\\\?./
syn match erlangInteger /\<\%([0-9]\+#[0-9a-fA-F]\+\|[0-9]\+\)\>/
syn match erlangFloat /\<[0-9]\+\.[0-9]\+\%(e-\?[0-9]\+\)\?\>/
syn keyword erlangTodo TODO FIXME XXX contained
syn match erlangComment /%.*$/ contains=@Spell,erlangTodo,erlangAnnotation
syn match erlangAnnotation /\%(%\s\)\@<=@\%(author\|clear\|copyright\|deprecated\|doc\|docfile\|end\|equiv\|headerfile\|hidden\|private\|reference\|see\|since\|spec\|throws\|title\|todo\|TODO\|type\|version\)/ contained
syn match erlangAnnotation /`[^']\+'/ contained
syn keyword erlangKeyword band bor bnot bsl bsr bxor div rem xor
syn keyword erlangKeyword try catch begin receive after cond fun let query
syn keyword erlangConditional case if of end
syn keyword erlangConditional not and or andalso orelse
syn keyword erlangConditional when
syn keyword erlangBoolean true false
syn keyword erlangGuard is_list is_alive is_atom is_binary is_bitstring is_boolean is_tuple is_number is_integer is_float is_function is_constant is_pid is_port is_reference is_record is_process_alive
syn match erlangOperator /\/\|*\|+\|-\|++\|--/
syn match erlangOperator /->\|<-\|||\||\|!\|=/
syn match erlangOperator /=:=\|==\|\/=\|=\/=\|<\|>\|=<\|>=/
syn keyword erlangOperator div rem
syn region erlangString start=/"/ end=/"/ skip=/\\/ contains=@Spell,erlangStringModifier
syn match erlangVariable /\<[A-Z_]\w*\>/
syn match erlangAtom /\%(\%(^-\)\|#\)\@<!\<[a-z][A-Za-z0-9_]*\>\%(\s*[(:]\)\@!/
syn match erlangAtom /\\\@<!'[^']*\\\@<!'/
syn match erlangRecord /#\w\+/
syn match erlangTuple /{\|}/
syn match erlangList /\[\|\]/
syn match erlangAttribute /^-\%(vsn\|author\|copyright\|compile\|deprecated\|module\|export\|import\|behaviour\|behavior\|export_type\|ignore_xref\|on_load\)\s*(\@=/
syn match erlangInclude /^-include\%(_lib\)\?\s*(\@=/
syn match erlangRecordDef /^-record\s*(\@=/
syn match erlangDefine /^-\%(define\|undef\)\s*(\@=/
syn match erlangPreCondit /^-\%(ifdef\|ifndef\|else\|endif\)\%(\s*(\@=\)\?/
syn match erlangType /^-\%(spec\|type\)[( ]\@=/
syn match erlangMacro /\%(-define(\)\@<=\w\+/
syn match erlangMacro /?\??\w\+/
syn match erlangBitType /\%(\/\|-\)\@<=\%(bits\|bitstring\|binary\|integer\|float\|unit\)\>/
syn match erlangBitSize /:\@<=[0-9]\+/
syn match erlangBinary /<<\|>>/
" BIFs
syn match erlangBIF /\%([^:0-9A-Za-z_]\|\<erlang:\)\@<=\%(abs\|apply\|atom_to_binary\|atom_to_list\|binary_part\|binary_to_atom\|binary_to_existing_atom\|binary_to_list\|binary_to_term\|bit_size\|bitstring_to_list\|byte_size\|check_process_code\|date\|delete_module\|demonitor\|disconnect_node\|element\|erase\|exit\|float\|float_to_list\|garbage_collect\|get\|get_keys\|group_leader\|hd\|integer_to_list\|iolist_size\|iolist_to_binary\|is_alive\|is_atom\|is_binary\|is_bitstring\|is_boolean\|is_float\|is_function\|is_integer\|is_list\|is_number\|is_pid\|is_port\|is_process_alive\|is_record\|is_reference\|is_tuple\|length\|link\|list_to_atom\|list_to_binary\|list_to_bitstring\|list_to_existing_atom\|list_to_float\|list_to_integer\|list_to_pid\|list_to_tuple\|load_module\|make_ref\|max\|min\|module_loaded\|monitor\|monitor_node\|node\|nodes\|now\|open_port\|pid_to_list\|port_close\|port_command\|port_connect\|port_control\|pre_loaded\|processes\|process_flag\|process_info\|purge_module\|put\|register\|registered\|round\|self\|setelement\|size\|spawn\|spawn_link\|spawn_monitor\|spawn_opt\|split_binary\|statistics\|term_to_binary\|time\|tl\|trunc\|tuple_size\|tuple_to_list\|unlink\|unregister\|whereis\)\%((\|\/[0-9]\)\@=/
syn match erlangBIF /\<\%(erlang:\)\@<=\%(append_element\|bump_reductions\|cancel_timer\|decode_packet\|display\|function_exported\|fun_info\|fun_to_list\|get_cookie\|get_stacktrace\|hash\|is_builtin\|loaded\|load_nif\|localtime\|localtime_to_universaltime\|make_tuple\|memory\|monitor_node\|phash\|port_call\|port_info\|ports\|port_to_list\|process_display\|read_timer\|ref_to_list\|resume_process\|send\|send_after\|send_nosuspend\|set_cookie\|start_timer\|suspend_process\|system_flag\|system_info\|system_monitor\|system_profile\|trace\|trace_delivered\|trace_info\|trace_pattern\|universaltime\|universaltime_to_localtime\|yield\)(\@=/
syn match erlangGBIF /erlang\%(:\w\)\@=/
" Link Erlang stuff to Vim groups
hi link erlangTodo Todo
hi link erlangString String
hi link erlangNoSpellString String
hi link erlangModifier SpecialChar
hi link erlangStringModifier SpecialChar
hi link erlangComment Comment
hi link erlangAnnotation Special
hi link erlangVariable Identifier
hi link erlangInclude Include
hi link erlangRecordDef Keyword
hi link erlangAttribute Keyword
hi link erlangKeyword Keyword
hi link erlangMacro Macro
hi link erlangDefine Define
hi link erlangPreCondit PreCondit
hi link erlangPreProc PreProc
hi link erlangDelimiter Delimiter
hi link erlangBitDelimiter Normal
hi link erlangOperator Operator
hi link erlangConditional Conditional
hi link erlangGuard Conditional
hi link erlangBoolean Boolean
hi link erlangAtom Constant
hi link erlangRecord Structure
hi link erlangInteger Number
hi link erlangFloat Number
hi link erlangFloat Number
hi link erlangFloat Number
hi link erlangFloat Number
hi link erlangHex Number
hi link erlangFun Keyword
hi link erlangList Delimiter
hi link erlangTuple Delimiter
hi link erlangBinary Keyword
hi link erlangBitVariable Identifier
hi link erlangBitType Type
hi link erlangType Type
hi link erlangBitSize Number
" Optional highlighting
if g:erlang_highlight_bif
hi link erlangBIF Keyword
hi link erlangGBIF Keyword
if version >= 600
setlocal iskeyword+=$,@-@
endif
" Comments
syn match erlangComment '%.*$' contains=erlangCommentAnnotation,erlangTodo
syn match erlangCommentAnnotation ' \@<=@\%(clear\|docfile\|end\|headerfile\|todo\|TODO\|type\|author\|copyright\|doc\|reference\|see\|since\|title\|version\|deprecated\|hidden\|private\|equiv\|spec\|throws\)' contained
syn match erlangCommentAnnotation /`[^']*'/ contained
syn keyword erlangTodo TODO FIXME XXX contained
" Numbers (minimum base is 2, maximum is 36.)
syn match erlangNumberInteger '\<\d\+\>'
syn match erlangNumberInteger '\<\%([2-9]\|[12]\d\|3[0-6]\)\+#[[:alnum:]]\+\>'
syn match erlangNumberFloat '\<\d\+\.\d\+\%([eE][+-]\=\d\+\)\=\>'
" Strings, atoms, characters
syn region erlangString start=/"/ end=/"/ contains=erlangStringModifier
syn region erlangQuotedAtom start=/'/ end=/'/ contains=erlangQuotedAtomModifier
syn match erlangStringModifier '\~\a\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)' contained
syn match erlangQuotedAtomModifier '\~\a\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)' contained
syn match erlangModifier '\$\%([^\\]\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)\)'
" Operators
syn match erlangOperator '==\|=:=\|/=\|=/=\|<\|=<\|>\|>=\|++\|--\|=\|!\|<-\|+\|-\|\*\|\/'
syn keyword erlangOperator div rem or xor bor bxor bsl bsr and band not bnot andalso orelse
" Separators
syn match erlangSeparator '(\|)\|{\|}\|\[\|]\||\|||\|;\|,\|?\|#'
syn match erlangRightArrow '->'
" Functions call
syn match erlangFCall '\<\%(\a[[:alnum:]@]*\s*\.\s*\)*\a[[:alnum:]@]*\s*:\s*\a[[:alnum:]@]*\>'
" Constants and Directives
syn match erlangDirective '-\%(behaviour\|behavior\|compile\|define\|else\|endif\|export\|file\|ifdef\|ifndef\|import\|include_lib\|include\|module\|record\|undef\|author\|copyright\|doc\|vsn\|on_load\|export_type\)\>'
" Keywords
syn keyword erlangKeyword after begin case catch cond end fun if let of query receive when try
syn keyword erlangExtra true false
if !exists("g:erlang_highlight_bifs") || g:erlang_highlight_bifs == 1
" build-in-functions (BIFs)
syn keyword erlangBIF abs alive apply atom_to_binary atom_to_list binary_part binary_to_atom binary_to_existing_atom binary_to_float binary_to_integer bitstring_to_list binary_to_list binary_to_term bit_size byte_size check_old_code check_process_code concat_binary date delete_module demonitor disconnect_node element erase error exit float float_to_binary float_to_list garbage_collect get get_keys group_leader halt hd integer_to_binary integer_to_list iolist_to_binary iolist_size is_alive is_atom is_binary is_bitstring is_boolean is_float is_function is_integer is_list is_number is_pid is_port is_process_alive is_record is_reference is_tuple length link list_to_atom list_to_binary list_to_bitstring list_to_existing_atom list_to_float list_to_integer list_to_pid list_to_tuple load_module make_ref max min module_loaded monitor monitor_node node nodes now open_port pid_to_list port_close port_command port_connect pre_loaded process_flag process_flag process_info process purge_module put register registered round self setelement size spawn spawn_link spawn_monitor spawn_opt split_binary statistics term_to_binary throw time tl trunc tuple_size tuple_to_list unlink unregister whereis
endif
if exists("g:erlang_highlight_special_atoms") && g:erlang_highlight_special_atoms == 1
" Processes
syn keyword erlangProcess creation current_function dictionary
syn keyword erlangProcess group_leader heap_size high initial_call
syn keyword erlangProcess linked low memory_in_use message_queue
syn keyword erlangProcess net_kernel node normal priority
syn keyword erlangProcess reductions registered_name runnable
syn keyword erlangProcess running stack_trace status timer
syn keyword erlangProcess trap_exit waiting
" Ports
syn keyword erlangPort command count_in count_out creation in
syn keyword erlangPort in_format linked node out owner packeting
" Nodes
syn keyword erlangNode atom_tables communicating creation
syn keyword erlangNode current_gc current_reductions current_runtime
syn keyword erlangNode current_wall_clock distribution_port
syn keyword erlangNode entry_points error_handler friends
syn keyword erlangNode garbage_collection magic_cookie magic_cookies
syn keyword erlangNode module_table monitored_nodes name next_ref
syn keyword erlangNode ports preloaded processes reductions
syn keyword erlangNode ref_state registry runtime wall_clock
" Reserved
syn keyword erlangReserved apply_lambda module_info module_lambdas
syn keyword erlangReserved record record_index record_info
" Extras
syn keyword erlangExtra badarg nocookie
" Signals
syn keyword erlangSignal badsig kill killed exit normal
endif
" Sync at the beginning of functions: if this is not used, multiline string
" are not always recognized
syn sync match erlangSync grouphere NONE "^[a-z]\s*("
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists ("did_erlang_inits")
if version < 508
let did_erlang_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
" erlang_characters
HiLink erlangComment Comment
HiLink erlangCommentAnnotation Special
HiLink erlangTodo Todo
HiLink erlangSeparator Normal
HiLink erlangOperator Operator
HiLink erlangRightArrow Operator
HiLink erlangStartString String
HiLink erlangString String
HiLink erlangStringModifier Special
HiLink erlangStartQuotedAtom Type
HiLink erlangQuotedAtom Type
HiLink erlangQuotedAtomModifier Special
HiLink erlangNumberInteger Number
HiLink erlangNumberFloat Float
HiLink erlangNumberHex Number
HiLink erlangModifier Special
" erlang_functions
HiLink erlangFCall Function
HiLink erlangBIF Function
" erlang_keywords
HiLink erlangDirective Type
HiLink erlangKeyword Keyword
HiLink erlangProcess Special
HiLink erlangPort Special
HiLink erlangNode Special
HiLink erlangReserved Statement
HiLink erlangExtra Statement
HiLink erlangSignal Statement
delcommand HiLink
endif
let b:current_syntax = "erlang"
" vim: sw=2 et

View File

@@ -1,9 +1,9 @@
" Vim syntax file
" Language: fstab file
" Maintaner: Radu Dineiu <radu.dineiu@gmail.com>
" URL: http://ld.yi.org/vim/fstab.vim
" Last Change: 2009 Feb 04
" Version: 0.93
" Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
" URL: https://raw.github.com/rid9/vim-fstab/master/fstab.vim
" Last Change: 2013 May 21
" Version: 1.0
"
" Credits:
" David Necas (Yeti) <yeti@physics.muni.cz>
@@ -11,10 +11,13 @@
" Georgi Georgiev <chutz@gg3.net>
" James Vega <jamessan@debian.org>
" Elias Probst <mail@eliasprobst.eu>
"
" Options:
" let fstab_unknown_fs_errors = 1
" highlight unknown filesystems as errors
"
" let fstab_unknown_device_errors = 0
" do not highlight unknown devices as errors
if version < 600
syntax clear
@@ -22,15 +25,18 @@ elseif exists("b:current_syntax")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
" General
syn cluster fsGeneralCluster contains=fsComment
syn match fsComment /\s*#.*/
syn match fsComment /\s*#.*/ contains=@Spell
syn match fsOperator /[,=:#]/
" Device
syn cluster fsDeviceCluster contains=fsOperator,fsDeviceKeyword,fsDeviceError
syn match fsDeviceError /\%([^a-zA-Z0-9_\/#@:\.-]\|^\w\{-}\ze\W\)/ contained
syn keyword fsDeviceKeyword contained none proc linproc tmpfs devpts sysfs usbfs
syn keyword fsDeviceKeyword contained none proc linproc tmpfs devpts devtmpfs sysfs usbfs
syn keyword fsDeviceKeyword contained LABEL nextgroup=fsDeviceLabel
syn keyword fsDeviceKeyword contained UUID nextgroup=fsDeviceUUID
syn keyword fsDeviceKeyword contained sshfs nextgroup=fsDeviceSshfs
@@ -47,7 +53,7 @@ syn keyword fsMountPointKeyword contained none swap
" Type
syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown
syn match fsTypeUnknown /\s\+\zs\w\+/ contained
syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 ext4 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs
syn keyword fsTypeKeyword contained adfs ados affs anon_inodefs atfs audiofs auto autofs bdev befs bfs btrfs binfmt_misc cd9660 cfs cgroup cifs coda configfs cpuset cramfs devfs devpts devtmpfs e2compr efs ext2 ext2fs ext3 ext4 fdesc ffs filecore fuse fuseblk fusectl hfs hpfs hugetlbfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix mqueue msdos ncpfs nfs nfsd nilfs2 none ntfs null nwfs overlay ovlfs pipefs portal proc procfs pstore ptyfs qnx4 reiserfs ramfs romfs securityfs shm smbfs squashfs sockfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xenfs xfs zisofs
" Options
" -------
@@ -71,6 +77,11 @@ syn match fsOptionsKeywords contained /\<\%(prefix\|volume\|root\)=/ nextgroup=f
syn match fsOptionsKeywords contained /\<bs=/ nextgroup=fsOptionsSize
syn keyword fsOptionsKeywords contained protect usemp verbose
" Options: btrfs
syn match fsOptionsKeywords contained /\<\%(subvol\|subvolid\|subvolrootid\|device\|compress\|compress-force\|fatal_errors\)=/ nextgroup=fsOptionsString
syn match fsOptionsKeywords contained /\<\%(max_inline\|alloc_start\|thread_pool\|metadata_ratio\|check_int_print_mask\)=/ nextgroup=fsOptionsNumber
syn keyword fsOptionsKeywords contained degraded nodatasum nodatacow nobarrier ssd ssd_spread noacl notreelog flushoncommit space_cache nospace_cache clear_cache user_subvol_rm_allowed autodefrag inode_cache enospc_debug recovery check_int check_int_data skip_balance discard
" Options: cd9660
syn keyword fsOptionsKeywords contained extatt gens norrip nostrictjoilet
@@ -84,7 +95,7 @@ syn match fsOptionsKeywords contained /\<\%(res[gu]id\|sb\)=/ nextgroup=fsOption
syn keyword fsOptionsExt2Check contained none normal strict
syn keyword fsOptionsExt2Errors contained continue panic
syn match fsOptionsExt2Errors contained /\<remount-ro\>/
syn keyword fsOptionsKeywords contained acl bsddf minixdf debug grpid bsdgroups minixdf noacl nocheck nogrpid oldalloc orlov sysvgroups nouid32 nobh user_xattr nouser_xattr
syn keyword fsOptionsKeywords contained acl bsddf minixdf debug grpid bsdgroups minixdf nocheck nogrpid oldalloc orlov sysvgroups nouid32 nobh user_xattr nouser_xattr
" Options: ext3
syn match fsOptionsKeywords contained /\<journal=/ nextgroup=fsOptionsExt3Journal
@@ -92,7 +103,7 @@ syn match fsOptionsKeywords contained /\<data=/ nextgroup=fsOptionsExt3Data
syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber
syn keyword fsOptionsExt3Journal contained update inum
syn keyword fsOptionsExt3Data contained journal ordered writeback
syn keyword fsOptionsKeywords contained noload user_xattr nouser_xattr acl noacl
syn keyword fsOptionsKeywords contained noload user_xattr nouser_xattr acl
" Options: ext4
syn match fsOptionsKeywords contained /\<journal=/ nextgroup=fsOptionsExt4Journal
@@ -216,7 +227,7 @@ syn match fsOptions /\s\+.\{-}\s/me=e-1 nextgroup=fsFreqPass contains=@fsOptions
syn match fsFreqPass /\s\+.\{-}$/ contains=@fsFreqPassCluster,@fsGeneralCluster contained
" Whole line comments
syn match fsCommentLine /^#.*$/
syn match fsCommentLine /^#.*$/ contains=@Spell
if version >= 508 || !exists("did_config_syntax_inits")
if version < 508
@@ -241,7 +252,10 @@ if version >= 508 || !exists("did_config_syntax_inits")
HiLink fsTypeUnknown Error
endif
HiLink fsDeviceError Error
if !exists('fstab_unknown_device_errors') || fstab_unknown_device_errors == 1
HiLink fsDeviceError Error
endif
HiLink fsMountPointError Error
HiLink fsMountPointKeyword Keyword
HiLink fsFreqPassError Error
@@ -277,4 +291,7 @@ endif
let b:current_syntax = "fstab"
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: ts=8 ft=vim

View File

@@ -2,9 +2,9 @@
" Language: Groovy
" Original Author: Alessio Pace <billy.corgan@tiscali.it>
" Maintainer: Tobias Rapp <yahuxo@gmx.de>
" Version: 0.1.12
" Version: 0.1.13
" URL: http://www.vim.org/scripts/script.php?script_id=945
" Last Change: 2013 Mar 14
" Last Change: 2013 Apr 24
" THE ORIGINAL AUTHOR'S NOTES:
"
@@ -74,7 +74,7 @@ endif
" keyword definitions
syn keyword groovyExternal native package
syn match groovyExternal "\<import\(\s\+static\>\)\?"
syn match groovyExternal "\<import\>\(\s\+static\>\)\?"
syn keyword groovyError goto const
syn keyword groovyConditional if else switch
syn keyword groovyRepeat while for do

View File

@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Vim help file
" Maintainer: Bram Moolenaar (Bram@vim.org)
" Last Change: 2012 Jul 16
" Last Change: 2013 Apr 07
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -40,7 +40,7 @@ syn match helpVim "Vim version [0-9.a-z]\+"
syn match helpVim "VIM REFERENCE.*"
syn match helpOption "'[a-z]\{2,\}'"
syn match helpOption "'t_..'"
syn match helpCommand "`[^` ]*`"hs=s+1,he=e-1 contains=helpBacktick
syn match helpCommand "`[^` ]\+`"hs=s+1,he=e-1 contains=helpBacktick
syn match helpHeader "\s*\zs.\{-}\ze\s\=\~$" nextgroup=helpIgnore
syn match helpGraphic ".* \ze`$" nextgroup=helpIgnore
if has("conceal")

View File

@@ -1,7 +1,7 @@
" Language : Netrw Remote-Directory Listing Syntax
" Maintainer : Charles E. Campbell, Jr.
" Last change: Jan 14, 2009
" Version : 16
" Last change: Dec 18, 2012
" Version : 17
" ---------------------------------------------------------------------
" Syntax Clearing: {{{1
@@ -56,13 +56,16 @@ if exists("g:netrw_special_syntax") && netrw_special_syntax
if has("unix")
syn match netrwCoreDump "\<core\%(\.\d\+\)\=\>" contains=netrwTreeBar,@NoSpell
endif
syn match netrwLex "\(\S\+ \)*\S\+\.\%(l\|lex\)\>" contains=netrwTreeBar,@NoSpell
syn match netrwYacc "\(\S\+ \)*\S\+\.y\>" contains=netrwTreeBar,@NoSpell
syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar,@NoSpell
syn match netrwHdr "\(\S\+ \)*\S\+\.h\>" contains=netrwTreeBar,@NoSpell
syn match netrwDoc "\(\S\+ \)*\S\+\.\%(doc\|txt\|pdf\|ps\)" contains=netrwTreeBar,@NoSpell
syn match netrwHdr "\(\S\+ \)*\S\+\.\%(h\|hpp\)\>" contains=netrwTreeBar,@NoSpell
syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar,@NoSpell
syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar,@NoSpell
syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar,@NoSpell
syn match netrwTags "\<tags\>" contains=netrwTreeBar,@NoSpell
syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar,@NoSpell
syn match netrwTags "\<tags\>" contains=netrwTreeBar,@NoSpell
syn match netrwTilde "\(\S\+ \)*\S\+\~\*\=\>" contains=netrwTreeBar,@NoSpell
syn match netrwTmp "\<tmp\(\S\+ \)*\S\+\>\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar,@NoSpell
endif
@@ -95,12 +98,15 @@ if !exists("did_drchip_netrwlist_syntax")
hi default link netrwCompress Folded
hi default link netrwCoreDump WarningMsg
hi default link netrwData DiffChange
hi default link netrwHdr netrwPlain
hi default link netrwLex netrwPlain
hi default link netrwLib DiffChange
hi default link netrwMakefile DiffChange
hi default link netrwObj Folded
hi default link netrwTilde Folded
hi default link netrwTmp Folded
hi default link netrwTags Folded
hi default link netrwYacc netrwPlain
endif
" Current Syntax: {{{1

View File

@@ -1,27 +1,34 @@
" ninja build file syntax.
" Language: ninja build file as described at
" http://martine.github.com/ninja/manual.html
" Version: 1.2
" Last Change: 2012/06/01
" Version: 1.3
" Last Change: 2013/04/16
" Maintainer: Nicolas Weber <nicolasweber@gmx.de>
" Version 1.3 of this script is in the upstream vim repository and will be
" included in the next vim release. If you change this, please send your change
" upstream.
" ninja lexer and parser are at
" https://github.com/martine/ninja/blob/master/src/lexer.in.cc
" https://github.com/martine/ninja/blob/master/src/parsers.cc
" https://github.com/martine/ninja/blob/master/src/manifest_parser.cc
if exists("b:current_syntax")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
syn case match
syn match ninjaComment /#.*/ contains=@Spell
" Toplevel statements are the ones listed here and
" toplevel variable assignments (ident '=' value).
" lexer.in.cc, ReadToken() and parsers.cc, Parse()
" lexer.in.cc, ReadToken() and manifest_parser.cc, Parse()
syn match ninjaKeyword "^build\>"
syn match ninjaKeyword "^rule\>"
syn match ninjaKeyword "^pool\>"
syn match ninjaKeyword "^default\>"
syn match ninjaKeyword "^include\>"
syn match ninjaKeyword "^subninja\>"
@@ -30,9 +37,13 @@ syn match ninjaKeyword "^subninja\>"
" on the first line without indent. 'rule' allows only a
" limited set of magic variables, 'build' allows general
" let assignments.
" parsers.cc, ParseRule()
" manifest_parser.cc, ParseRule()
syn region ninjaRule start="^rule" end="^\ze\S" contains=ALL transparent
syn keyword ninjaRuleCommand contained command depfile description generator restat
syn keyword ninjaRuleCommand contained command deps depfile description generator
\ pool restat rspfile rspfile_content
syn region ninjaPool start="^pool" end="^\ze\S" contains=ALL transparent
syn keyword ninjaPoolCommand contained depth
" Strings are parsed as follows:
" lexer.in.cc, ReadEvalString()
@@ -58,9 +69,13 @@ syn match ninjaOperator "\(=\|:\||\|||\)\ze\s"
hi def link ninjaComment Comment
hi def link ninjaKeyword Keyword
hi def link ninjaRuleCommand Statement
hi def link ninjaPoolCommand Statement
hi def link ninjaWrapLineOperator ninjaOperator
hi def link ninjaOperator Operator
hi def link ninjaSimpleVar ninjaVar
hi def link ninjaVar Identifier
let b:current_syntax = "ninja"
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -1,7 +1,8 @@
" pf syntax file
" Language: OpenBSD packet filter configuration (pf.conf)
" Maintainer: Camiel Dobbelaar <cd@sentia.nl>
" Last Change: 2003 May 27
" Language: OpenBSD packet filter configuration (pf.conf)
" Original Author: Camiel Dobbelaar <cd@sentia.nl>
" Maintainer: Lauri Tirkkonen <lotheac@iki.fi>
" Last Change: 2013 Apr 02
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@@ -14,7 +15,7 @@ endif
setlocal foldmethod=syntax
syn sync fromstart
syn cluster pfNotLS contains=pfComment,pfTodo,pfVarAssign
syn cluster pfNotLS contains=pfTodo,pfVarAssign
syn keyword pfCmd altq anchor antispoof binat nat pass
syn keyword pfCmd queue rdr scrub table set
syn keyword pfService auth bgp domain finger ftp http https ident

View File

@@ -102,12 +102,11 @@ syn match rComplex "\<\d\+[Ee][-+]\=\d\+i"
syn match rOperator "&"
syn match rOperator '-'
syn match rOperator '*'
syn match rOperator '\*'
syn match rOperator '+'
syn match rOperator '='
syn match rOperator "[|!<>^~`/:@]"
syn match rOperator "%\{2}\|%\*%\|%\/%\|%in%\|%o%\|%x%"
syn match rOpError '*\{3}'
syn match rOpError '//'
syn match rOpError '&&&'
syn match rOpError '|||'

View File

@@ -1,22 +1,19 @@
" Vim syntax file
" Language: ReDIF
" Maintainer: Axel Castellane <axel.castellane@polytechnique.edu>
" Last Change: 2013 Feb 20
" Last Change: 2013 April 17
" Original Author: Axel Castellane
" Source: http://openlib.org/acmes/root/docu/redif_1.html
" File Extension: rdf
" Note: The ReDIF format is used by RePEc.
" Start with a check for "b:current_syntax". If it is defined, some other
" syntax file, earlier in 'runtimepath' was already loaded:
if exists("b:current_syntax")
" To be compatible with Vim 5.8 use:
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
" Sync: The template-type (ReDIF-Paper, ReDIF-Archive, etc.) influences which
" fields can follow. Thus sync must start from the beginning to know which
" fields are right or wrong.
syntax sync fromstart
" ReDIF is case-insensitive
syntax case ignore
@@ -27,61 +24,80 @@ syntax case ignore
" *-Institution
" Those fields span a syntax region over several lines so that these regions
" can only contain their respective items.
"
" Other fields (except comments) can only happen in one of these regions.
" Comments must start with # as the first character of the line, otherwise
" I believe that they are considered as part of an argument.
syntax region redifComment start=/^#/ end=/$/ containedin=ALL display
" Any line which is not a correct template or part of an argument is an error.
" This comes at the very beginning, so it has the lowest priority and will
" only match if nothing else did.
syntax match redifWrongLine /^.\+/ display
" Beginning: Anything which is not a comment is not allowed before a
" "Template-Type:" statement. However, not to trouble the users when beginning
" writing a Template-Type, this are not highlighted as errors.
syntax region redifIncorrectBeginningOfFile start=/\%^/ end=/^Template-Type:\_s*ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\) \d\+\.\d\+/me=s-1 contains=redifComment,redifBeginningOfCorrectTemplateType,redifFieldTemplateType
syntax match redifBeginningOfCorrectTemplateType /^\cT\%[emplate-Type:]$/ display
highlight def link redifWrongLine redifError
highlight def link redifIncorrectBeginningOfFile redifError
" Comments must start with # and it must be the first character of the line,
" otherwise I believe that they are considered as part of an argument.
syntax match redifComment /^#.*/ containedin=ALL display
" Defines the 9 possible multi-lines regions of Template-Type and the fields
" they can contain.
syntax region redifRegionTemplatePaper start=/^Template-Type:\_s*ReDIF-Paper \d\+\.\d\+/ end=/^Template-Type:\_s*ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\) \d\+\.\d\+/me=s-1 contains=redifUnknownField,redifRegionClusterAuthor,redifRegionClusterFile,redifFieldTitle,redifFieldHandleOfWork,redifFieldLanguage,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNumber,redifFieldCreationDate,redifFieldRevisionDate,redifFieldPublicationStatus,redifFieldNote,redifFieldLength,redifFieldSeries,redifFieldAvailability,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldRestriction,redifFieldPrice,redifFieldNotification,redifFieldPublicationType,redifFieldTemplateType
syntax region redifRegionTemplateArticle start=/^Template-Type:\_s*ReDIF-Article \d\+\.\d\+/ end=/^Template-Type:\_s*ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\) \d\+\.\d\+/me=s-1 contains=redifUnknownField,redifRegionClusterAuthor,redifRegionClusterFile,redifFieldTitle,redifFieldHandleOfWork,redifFieldLanguage,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNumber,redifFieldCreationDate,redifFieldPublicationStatus,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldRestriction,redifFieldPrice,redifFieldNotification,redifFieldPublicationType,redifFieldJournal,redifFieldVolume,redifFieldYear,redifFieldIssue,redifFieldMonth,redifFieldPages,redifFieldNumber,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType
syntax region redifRegionTemplateChapter start=/^Template-Type:\_s*ReDIF-Chapter \d\+\.\d\+/ end=/^Template-Type:\_s*ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\) \d\+\.\d\+/me=s-1 contains=redifUnknownField,redifRegionClusterAuthor,redifRegionClusterFile,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor,redifFieldHandleOfWork,redifFieldTitle,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldBookTitle,redifFieldYear,redifFieldMonth,redifFieldPages,redifFieldChapter,redifFieldVolume,redifFieldEdition,redifFieldSeries,redifFieldISBN,redifFieldPublicationStatus,redifFieldNote,redifFieldInBook,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType
syntax region redifRegionTemplateBook start=/^Template-Type:\_s*ReDIF-Book \d\+\.\d\+/ end=/^Template-Type:\_s*ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\) \d\+\.\d\+/me=s-1 contains=redifUnknownField,redifRegionClusterAuthor,redifRegionClusterFile,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor,redifFieldTitle,redifFieldHandleOfWork,redifFieldContactEmail,redifFieldYear,redifFieldMonth,redifFieldVolume,redifFieldEdition,redifFieldSeries,redifFieldISBN,redifFieldPublicationStatus,redifFieldNote,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldHasChapter,redifFieldPrice,redifFieldOrderURL,redifFieldNumber,redifFieldCreationDate,redifFieldPublicationDate,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType
syntax region redifRegionTemplateSoftware start=/^Template-Type:\_s*ReDIF-Software \d\+\.\d\+/ end=/^Template-Type:\_s*ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\) \d\+\.\d\+/me=s-1 contains=redifUnknownField,redifRegionClusterAuthor,redifRegionClusterFile,redifFieldHandleOfWork,redifFieldTitle,redifFieldProgrammingLanguage,redifFieldAbstract,redifFieldNumber,redifFieldVersion,redifFieldClassificationJEL,redifFieldKeywords,redifFieldSize,redifFieldSeries,redifFieldCreationDate,redifFieldRevisionDate,redifFieldNote,redifFieldRequires,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType
syntax region redifRegionTemplateArchive start=/^Template-Type:\_s*ReDIF-Archive \d\+\.\d\+/ end=/^Template-Type:\_s*ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\) \d\+\.\d\+/me=s-1 contains=redifUnknownField,redifFieldHandleOfArchive,redifFieldURL,redifFieldMaintainerEmail,redifFieldName,redifFieldMaintainerName,redifFieldMaintainerPhone,redifFieldMaintainerFax,redifFieldClassificationJEL,redifFieldHomepage,redifFieldDescription,redifFieldNotification,redifFieldRestriction,redifFieldTemplateType
syntax region redifRegionTemplateSeries start=/^Template-Type:\_s*ReDIF-Series \d\+\.\d\+/ end=/^Template-Type:\_s*ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\) \d\+\.\d\+/me=s-1 contains=redifUnknownField,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor,redifFieldName,redifFieldHandleOfSeries,redifFieldMaintainerEmail,redifFieldType,redifFieldOrderEmail,redifFieldOrderHomepage,redifFieldOrderPostal,redifFieldPrice,redifFieldRestriction,redifFieldMaintainerPhone,redifFieldMaintainerFax,redifFieldMaintainerName,redifFieldDescription,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNotification,redifFieldISSN,redifFieldFollowup,redifFieldPredecessor,redifFieldTemplateType
syntax region redifRegionTemplateInstitution start=/^Template-Type:\_s*ReDIF-Institution \d\+\.\d\+/ end=/^Template-Type:\_s*ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\) \d\+\.\d\+/me=s-1 contains=redifUnknownField,redifRegionClusterPrimary,redifRegionClusterSecondary,redifRegionClusterTertiary,redifRegionClusterQuaternary,redifFieldHandleOfInstitution,redifFieldPrimaryDefunct,redifFieldSecondaryDefunct,redifFieldTertiaryDefunct,redifFieldTemplateType
syntax region redifRegionTemplatePerson start=/^Template-Type:\_s*ReDIF-Person \d\+\.\d\+/ end=/^Template-Type:\_s*ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\) \d\+\.\d\+/me=s-1 contains=redifUnknownField,redifRegionClusterWorkplace,redifFieldHandleOfPerson,redifFieldNameFull,redifFieldNameFirst,redifFieldNameLast,redifFieldNamePrefix,redifFieldNameMiddle,redifFieldNameSuffix,redifFieldNameASCII,redifFieldEmail,redifFieldHomepage,redifFieldFax,redifFieldPostal,redifFieldPhone,redifFieldWorkplaceOrganization,redifFieldAuthorPaper,redifFieldAuthorArticle,redifFieldAuthorSoftware,redifFieldAuthorBook,redifFieldAuthorChapter,redifFieldEditorBook,redifFieldEditorSeries,redifFieldClassificationJEL,redifFieldShortId,redifFieldLastLoginDate,redifFieldRegisteredDate,redifFieldTemplateType
syntax region redifRegionTemplatePaper start=/^Template-Type:\_s*ReDIF-Paper \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsPaper,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold
syntax region redifRegionTemplateArticle start=/^Template-Type:\_s*ReDIF-Article \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsArticle,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold
syntax region redifRegionTemplateChapter start=/^Template-Type:\_s*ReDIF-Chapter \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsChapter,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold
syntax region redifRegionTemplateBook start=/^Template-Type:\_s*ReDIF-Book \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsBook,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold
syntax region redifRegionTemplateSoftware start=/^Template-Type:\_s*ReDIF-Software \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsSoftware,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold
syntax region redifRegionTemplateArchive start=/^Template-Type:\_s*ReDIF-Archive \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsArchive,redifWrongLine fold
syntax region redifRegionTemplateSeries start=/^Template-Type:\_s*ReDIF-Series \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsSeries,redifWrongLine,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold
syntax region redifRegionTemplateInstitution start=/^Template-Type:\_s*ReDIF-Institution \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsInstitution,redifWrongLine,redifRegionClusterPrimary,redifRegionClusterSecondary,redifRegionClusterTertiary,redifRegionClusterQuaternary fold
syntax region redifRegionTemplatePerson start=/^Template-Type:\_s*ReDIF-Person \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsPerson,redifWrongLine,redifRegionClusterWorkplace fold
" For each template, non-whitespaces ending with a colon must be
" correct fields. By default, they are wrong fields.
syntax match redifUnknownField /^\S\{-1,}:/ contained display
" All fields are foldable (These come before clusters, so they have lower
" priority). So they are contained in a foldable syntax region.
syntax region redifContainerFieldsPaper start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldLanguage,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNumber,redifFieldCreationDate,redifFieldRevisionDate,redifFieldPublicationStatus,redifFieldNote,redifFieldLength,redifFieldSeries,redifFieldAvailability,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldRestriction,redifFieldPrice,redifFieldNotification,redifFieldPublicationType,redifFieldTemplateType,redifWrongLine contained transparent fold
syntax region redifContainerFieldsArticle start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldLanguage,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNumber,redifFieldCreationDate,redifFieldPublicationStatus,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldRestriction,redifFieldPrice,redifFieldNotification,redifFieldPublicationType,redifFieldJournal,redifFieldVolume,redifFieldYear,redifFieldIssue,redifFieldMonth,redifFieldPages,redifFieldNumber,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold
syntax region redifContainerFieldsChapter start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfWork,redifFieldTitle,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldBookTitle,redifFieldYear,redifFieldMonth,redifFieldPages,redifFieldChapter,redifFieldVolume,redifFieldEdition,redifFieldSeries,redifFieldISBN,redifFieldPublicationStatus,redifFieldNote,redifFieldInBook,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold
syntax region redifContainerFieldsBook start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldContactEmail,redifFieldYear,redifFieldMonth,redifFieldVolume,redifFieldEdition,redifFieldSeries,redifFieldISBN,redifFieldPublicationStatus,redifFieldNote,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldHasChapter,redifFieldPrice,redifFieldOrderURL,redifFieldNumber,redifFieldCreationDate,redifFieldPublicationDate,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold
syntax region redifContainerFieldsSoftware start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfWork,redifFieldTitle,redifFieldProgrammingLanguage,redifFieldAbstract,redifFieldNumber,redifFieldVersion,redifFieldClassificationJEL,redifFieldKeywords,redifFieldSize,redifFieldSeries,redifFieldCreationDate,redifFieldRevisionDate,redifFieldNote,redifFieldRequires,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold
syntax region redifContainerFieldsArchive start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfArchive,redifFieldURL,redifFieldMaintainerEmail,redifFieldName,redifFieldMaintainerName,redifFieldMaintainerPhone,redifFieldMaintainerFax,redifFieldClassificationJEL,redifFieldHomepage,redifFieldDescription,redifFieldNotification,redifFieldRestriction,redifFieldTemplateType,redifWrongLine contained transparent fold
syntax region redifContainerFieldsSeries start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldName,redifFieldHandleOfSeries,redifFieldMaintainerEmail,redifFieldType,redifFieldOrderEmail,redifFieldOrderHomepage,redifFieldOrderPostal,redifFieldPrice,redifFieldRestriction,redifFieldMaintainerPhone,redifFieldMaintainerFax,redifFieldMaintainerName,redifFieldDescription,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNotification,redifFieldISSN,redifFieldFollowup,redifFieldPredecessor,redifFieldTemplateType,redifWrongLine contained transparent fold
syntax region redifContainerFieldsInstitution start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfInstitution,redifFieldPrimaryDefunct,redifFieldSecondaryDefunct,redifFieldTertiaryDefunct,redifFieldTemplateType,redifWrongLine contained transparent fold
syntax region redifContainerFieldsPerson start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfPerson,redifFieldNameFull,redifFieldNameFirst,redifFieldNameLast,redifFieldNamePrefix,redifFieldNameMiddle,redifFieldNameSuffix,redifFieldNameASCII,redifFieldEmail,redifFieldHomepage,redifFieldFax,redifFieldPostal,redifFieldPhone,redifFieldWorkplaceOrganization,redifFieldAuthorPaper,redifFieldAuthorArticle,redifFieldAuthorSoftware,redifFieldAuthorBook,redifFieldAuthorChapter,redifFieldEditorBook,redifFieldEditorSeries,redifFieldClassificationJEL,redifFieldShortId,redifFieldLastLoginDate,redifFieldRegisteredDate,redifWrongLine contained transparent fold
highlight def link redifUnknownField redifError
" Defines the 10 possible clusters and what they can contain
" A field not in the cluster ends the cluster.
syntax region redifRegionClusterWorkplace start=/^Workplace-Name:/ skip=/^Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsWorkplace fold
syntax region redifRegionClusterPrimary start=/^Primary-Name:/ skip=/^Primary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsPrimary fold
syntax region redifRegionClusterSecondary start=/^Secondary-Name:/ skip=/^Secondary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsSecondary fold
syntax region redifRegionClusterTertiary start=/^Tertiary-Name:/ skip=/^Tertiary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsTertiary fold
syntax region redifRegionClusterQuaternary start=/^Quaternary-Name:/ skip=/^Quaternary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsQuaternary fold
syntax region redifRegionClusterProvider start=/^Provider-Name:/ skip=/^Provider-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsProvider fold
syntax region redifRegionClusterPublisher start=/^Publisher-Name:/ skip=/^Publisher-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsPublisher fold
syntax region redifRegionClusterAuthor start=/^Author-Name:/ skip=/^Author-\%(Name\%(-First\|-Last\)\|Homepage\|Email\|Fax\|Postal\|Phone\|Person\|Workplace-Name\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifRegionClusterAuthorWorkplace,redifContainerFieldsAuthor fold
syntax region redifRegionClusterEditor start=/^Editor-Name:/ skip=/^Editor-\%(Name\%(-First\|-Last\)\|Homepage\|Email\|Fax\|Postal\|Phone\|Person\|Workplace-Name\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifRegionClusterEditorWorkplace,redifContainerFieldsEditor fold
syntax region redifRegionClusterFile start=/^File-URL:/ skip=/^File-\%(Format\|Function\|Size\|Restriction\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsFile fold
" Defines the 12 possible clusters and what they can contain
syntax region redifRegionClusterAuthorWorkplace start=/^Author-Workplace-Name:/ skip=/^Author-Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\c\S\{-1,}:/me=s-1 contained contains=redifFieldAuthorWorkplaceName,redifFieldAuthorWorkplaceHomepage,redifFieldAuthorWorkplaceNameEnglish,redifFieldAuthorWorkplacePostal,redifFieldAuthorWorkplaceLocation,redifFieldAuthorWorkplaceEmail,redifFieldAuthorWorkplacePhone,redifFieldAuthorWorkplaceFax,redifFieldAuthorWorkplaceInstitution
syntax region redifRegionClusterEditorWorkplace start=/^Editor-Workplace-Name:/ skip=/^Editor-Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\c\S\{-1,}:/me=s-1 contained contains=redifFieldEditorWorkplaceName,redifFieldEditorWorkplaceHomepage,redifFieldEditorWorkplaceNameEnglish,redifFieldEditorWorkplacePostal,redifFieldEditorWorkplaceLocation,redifFieldEditorWorkplaceEmail,redifFieldEditorWorkplacePhone,redifFieldEditorWorkplaceFax,redifFieldEditorWorkplaceInstitution
syntax region redifRegionClusterWorkplace start=/^Workplace-Name:/ skip=/^Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\c\S\{-1,}:/me=s-1 contained contains=redifFieldWorkplaceName,redifFieldWorkplaceHomepage,redifFieldWorkplaceNameEnglish,redifFieldWorkplacePostal,redifFieldWorkplaceLocation,redifFieldWorkplaceEmail,redifFieldWorkplacePhone,redifFieldWorkplaceFax,redifFieldWorkplaceInstitution
syntax region redifRegionClusterPrimary start=/^Primary-Name:/ skip=/^Primary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\c\S\{-1,}:/me=s-1 contained contains=redifFieldPrimaryName,redifFieldPrimaryHomepage,redifFieldPrimaryNameEnglish,redifFieldPrimaryPostal,redifFieldPrimaryLocation,redifFieldPrimaryEmail,redifFieldPrimaryPhone,redifFieldPrimaryFax,redifFieldPrimaryInstitution
syntax region redifRegionClusterSecondary start=/^Secondary-Name:/ skip=/^Secondary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\c\S\{-1,}:/me=s-1 contained contains=redifFieldSecondaryName,redifFieldSecondaryHomepage,redifFieldSecondaryNameEnglish,redifFieldSecondaryPostal,redifFieldSecondaryLocation,redifFieldSecondaryEmail,redifFieldSecondaryPhone,redifFieldSecondaryFax,redifFieldSecondaryInstitution
syntax region redifRegionClusterTertiary start=/^Tertiary-Name:/ skip=/^Tertiary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\c\S\{-1,}:/me=s-1 contained contains=redifFieldTertiaryName,redifFieldTertiaryHomepage,redifFieldTertiaryNameEnglish,redifFieldTertiaryPostal,redifFieldTertiaryLocation,redifFieldTertiaryEmail,redifFieldTertiaryPhone,redifFieldTertiaryFax,redifFieldTertiaryInstitution
syntax region redifRegionClusterQuaternary start=/^Quaternary-Name:/ skip=/^Quaternary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\c\S\{-1,}:/me=s-1 contained contains=redifFieldQuaternaryName,redifFieldQuaternaryHomepage,redifFieldQuaternaryNameEnglish,redifFieldQuaternaryPostal,redifFieldQuaternaryLocation,redifFieldQuaternaryEmail,redifFieldQuaternaryPhone,redifFieldQuaternaryFax,redifFieldQuaternaryInstitution
syntax region redifRegionClusterProvider start=/^Provider-Name:/ skip=/^Provider-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\c\S\{-1,}:/me=s-1 contained contains=redifFieldProviderName,redifFieldProviderHomepage,redifFieldProviderNameEnglish,redifFieldProviderPostal,redifFieldProviderLocation,redifFieldProviderEmail,redifFieldProviderPhone,redifFieldProviderFax,redifFieldProviderInstitution
syntax region redifRegionClusterPublisher start=/^Publisher-Name:/ skip=/^Publisher-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\c\S\{-1,}:/me=s-1 contained contains=redifFieldPublisherName,redifFieldPublisherHomepage,redifFieldPublisherNameEnglish,redifFieldPublisherPostal,redifFieldPublisherLocation,redifFieldPublisherEmail,redifFieldPublisherPhone,redifFieldPublisherFax,redifFieldPublisherInstitution
syntax region redifRegionClusterAuthor start=/^Author-Name:/ skip=/^Author-\%(Name\%(-First\|-Last\)\|Homepage\|Email\|Fax\|Postal\|Phone\|Person\|Workplace-Name\):/ end=/^\c\S\{-1,}:/me=s-1 contained contains=redifRegionClusterAuthorWorkplace,redifFieldAuthorName,redifFieldAuthorNameFirst,redifFieldAuthorNameLast,redifFieldAuthorHomepage,redifFieldAuthorEmail,redifFieldAuthorFax,redifFieldAuthorPostal,redifFieldAuthorPhone,redifFieldAuthorPerson
syntax region redifRegionClusterEditor start=/^Editor-Name:/ skip=/^Editor-\%(Name\%(-First\|-Last\)\|Homepage\|Email\|Fax\|Postal\|Phone\|Person\|Workplace-Name\):/ end=/^\c\S\{-1,}:/me=s-1 contained contains=redifRegionClusterEditorWorkplace,redifFieldEditorName,redifFieldEditorNameFirst,redifFieldEditorNameLast,redifFieldEditorHomepage,redifFieldEditorEmail,redifFieldEditorFax,redifFieldEditorPostal,redifFieldEditorPhone,redifFieldEditorPerson
syntax region redifRegionClusterFile start=/^File-URL:/ skip=/^File-\%(Format\|Function\|Size\|Restriction\):/ end=/^\c\S\{-1,}:/me=s-1 contained contains=redifFieldFileURL,redifFieldFileFormat,redifFieldFileFunction,redifFieldFileSize,redifFieldFileRestriction
" The foldable containers of the clusters.
syntax region redifContainerFieldsWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldWorkplaceName,redifFieldWorkplaceHomepage,redifFieldWorkplaceNameEnglish,redifFieldWorkplacePostal,redifFieldWorkplaceLocation,redifFieldWorkplaceEmail,redifFieldWorkplacePhone,redifFieldWorkplaceFax,redifFieldWorkplaceInstitution,redifWrongLine contained transparent fold
syntax region redifContainerFieldsPrimary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldPrimaryName,redifFieldPrimaryHomepage,redifFieldPrimaryNameEnglish,redifFieldPrimaryPostal,redifFieldPrimaryLocation,redifFieldPrimaryEmail,redifFieldPrimaryPhone,redifFieldPrimaryFax,redifFieldPrimaryInstitution,redifWrongLine contained transparent fold
syntax region redifContainerFieldsSecondary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldSecondaryName,redifFieldSecondaryHomepage,redifFieldSecondaryNameEnglish,redifFieldSecondaryPostal,redifFieldSecondaryLocation,redifFieldSecondaryEmail,redifFieldSecondaryPhone,redifFieldSecondaryFax,redifFieldSecondaryInstitution,redifWrongLine contained transparent fold
syntax region redifContainerFieldsTertiary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTertiaryName,redifFieldTertiaryHomepage,redifFieldTertiaryNameEnglish,redifFieldTertiaryPostal,redifFieldTertiaryLocation,redifFieldTertiaryEmail,redifFieldTertiaryPhone,redifFieldTertiaryFax,redifFieldTertiaryInstitution,redifWrongLine contained transparent fold
syntax region redifContainerFieldsQuaternary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldQuaternaryName,redifFieldQuaternaryHomepage,redifFieldQuaternaryNameEnglish,redifFieldQuaternaryPostal,redifFieldQuaternaryLocation,redifFieldQuaternaryEmail,redifFieldQuaternaryPhone,redifFieldQuaternaryFax,redifFieldQuaternaryInstitution,redifWrongLine contained transparent fold
syntax region redifContainerFieldsProvider start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldProviderName,redifFieldProviderHomepage,redifFieldProviderNameEnglish,redifFieldProviderPostal,redifFieldProviderLocation,redifFieldProviderEmail,redifFieldProviderPhone,redifFieldProviderFax,redifFieldProviderInstitution,redifWrongLine contained transparent fold
syntax region redifContainerFieldsPublisher start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldPublisherName,redifFieldPublisherHomepage,redifFieldPublisherNameEnglish,redifFieldPublisherPostal,redifFieldPublisherLocation,redifFieldPublisherEmail,redifFieldPublisherPhone,redifFieldPublisherFax,redifFieldPublisherInstitution,redifWrongLine contained transparent fold
syntax region redifContainerFieldsAuthor start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldAuthorName,redifFieldAuthorNameFirst,redifFieldAuthorNameLast,redifFieldAuthorHomepage,redifFieldAuthorEmail,redifFieldAuthorFax,redifFieldAuthorPostal,redifFieldAuthorPhone,redifFieldAuthorPerson,redifWrongLine contained transparent fold
syntax region redifContainerFieldsEditor start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldEditorName,redifFieldEditorNameFirst,redifFieldEditorNameLast,redifFieldEditorHomepage,redifFieldEditorEmail,redifFieldEditorFax,redifFieldEditorPostal,redifFieldEditorPhone,redifFieldEditorPerson,redifWrongLine contained transparent fold
syntax region redifContainerFieldsFile start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldFileURL,redifFieldFileFormat,redifFieldFileFunction,redifFieldFileSize,redifFieldFileRestriction,redifWrongLine contained transparent fold
" A field not in the cluster ends the cluster, so no need to define wrong
" fields, because they will be handled by the containing UnknownField region
" immediately when exiting the cluster.
" The two clusters in cluster (must be presented after to have priority over
" fields containers)
syntax region redifRegionClusterAuthorWorkplace start=/^Author-Workplace-Name:/ skip=/^Author-Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsAuthorWorkplace fold
syntax region redifRegionClusterEditorWorkplace start=/^Editor-Workplace-Name:/ skip=/^Editor-Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsEditorWorkplace fold
" Their foldable fields containers
syntax region redifContainerFieldsAuthorWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldAuthorWorkplaceName,redifFieldAuthorWorkplaceHomepage,redifFieldAuthorWorkplaceNameEnglish,redifFieldAuthorWorkplacePostal,redifFieldAuthorWorkplaceLocation,redifFieldAuthorWorkplaceEmail,redifFieldAuthorWorkplacePhone,redifFieldAuthorWorkplaceFax,redifFieldAuthorWorkplaceInstitution,redifWrongLine contained transparent fold
syntax region redifContainerFieldsEditorWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldEditorWorkplaceName,redifFieldEditorWorkplaceHomepage,redifFieldEditorWorkplaceNameEnglish,redifFieldEditorWorkplacePostal,redifFieldEditorWorkplaceLocation,redifFieldEditorWorkplaceEmail,redifFieldEditorWorkplacePhone,redifFieldEditorWorkplaceFax,redifFieldEditorWorkplaceInstitution,redifWrongLine contained transparent fold
" All the possible fields
" Note: The "Handle" field is handled a little bit differently, because it
" does not have the same meaning depending on the Template-Type.
" /redifFieldHandleOf....
" Note: The "Handle" field is handled a little bit differently, because it
" does not have the same meaning depending on the Template-Type. See:
" /redifFieldHandleOf....
syntax match redifFieldAbstract /^Abstract:/ skipwhite skipempty nextgroup=redifArgumentAbstract contained
syntax match redifFieldArticleHandle /^Article-Handle:/ skipwhite skipempty nextgroup=redifArgumentArticleHandle contained
syntax match redifFieldAuthorArticle /^Author-Article:/ skipwhite skipempty nextgroup=redifArgumentAuthorArticle contained
@@ -211,15 +227,6 @@ syntax match redifFieldProviderPostal /^Provider-Postal:/ skipwhite skipempty ne
syntax match redifFieldPublicationDate /^Publication-Date:/ skipwhite skipempty nextgroup=redifArgumentPublicationDate contained
syntax match redifFieldPublicationStatus /^Publication-Status:/ skipwhite skipempty nextgroup=redifArgumentPublicationStatus contained
syntax match redifFieldPublicationType /^Publication-Type:/ skipwhite skipempty nextgroup=redifArgumentPublicationType contained
syntax match redifFieldPublisherEmail /^Publisher-Email:/ skipwhite skipempty nextgroup=redifArgumentPublisherEmail contained
syntax match redifFieldPublisherFax /^Publisher-Fax:/ skipwhite skipempty nextgroup=redifArgumentPublisherFax contained
syntax match redifFieldPublisherHomepage /^Publisher-Homepage:/ skipwhite skipempty nextgroup=redifArgumentPublisherHomepage contained
syntax match redifFieldPublisherInstitution /^Publisher-Institution:/ skipwhite skipempty nextgroup=redifArgumentPublisherInstitution contained
syntax match redifFieldPublisherLocation /^Publisher-Location:/ skipwhite skipempty nextgroup=redifArgumentPublisherLocation contained
syntax match redifFieldPublisherName /^Publisher-Name:/ skipwhite skipempty nextgroup=redifArgumentPublisherName contained
syntax match redifFieldPublisherNameEnglish /^Publisher-Name-English:/ skipwhite skipempty nextgroup=redifArgumentPublisherNameEnglish contained
syntax match redifFieldPublisherPhone /^Publisher-Phone:/ skipwhite skipempty nextgroup=redifArgumentPublisherPhone contained
syntax match redifFieldPublisherPostal /^Publisher-Postal:/ skipwhite skipempty nextgroup=redifArgumentPublisherPostal contained
syntax match redifFieldQuaternaryEmail /^Quaternary-Email:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryEmail contained
syntax match redifFieldQuaternaryFax /^Quaternary-Fax:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryFax contained
syntax match redifFieldQuaternaryHomepage /^Quaternary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryHomepage contained
@@ -404,15 +411,6 @@ highlight def link redifFieldProviderPostal redifField
highlight def link redifFieldPublicationDate redifField
highlight def link redifFieldPublicationStatus redifField
highlight def link redifFieldPublicationType redifField
highlight def link redifFieldPublisherEmail redifField
highlight def link redifFieldPublisherFax redifField
highlight def link redifFieldPublisherHomepage redifField
highlight def link redifFieldPublisherInstitution redifField
highlight def link redifFieldPublisherLocation redifField
highlight def link redifFieldPublisherName redifField
highlight def link redifFieldPublisherNameEnglish redifField
highlight def link redifFieldPublisherPhone redifField
highlight def link redifFieldPublisherPostal redifField
highlight def link redifFieldQuaternaryEmail redifField
highlight def link redifFieldQuaternaryFax redifField
highlight def link redifFieldQuaternaryHomepage redifField
@@ -469,129 +467,157 @@ highlight def link redifFieldWorkplacePhone redifField
highlight def link redifFieldWorkplacePostal redifField
highlight def link redifFieldYear redifField
" Deprecated
" same as Provider-*
" nextgroup=redifArgumentProvider*
syntax match redifFieldPublisherEmail /^Publisher-Email:/ skipwhite skipempty nextgroup=redifArgumentProviderEmail contained
syntax match redifFieldPublisherFax /^Publisher-Fax:/ skipwhite skipempty nextgroup=redifArgumentProviderFax contained
syntax match redifFieldPublisherHomepage /^Publisher-Homepage:/ skipwhite skipempty nextgroup=redifArgumentProviderHomepage contained
syntax match redifFieldPublisherInstitution /^Publisher-Institution:/ skipwhite skipempty nextgroup=redifArgumentProviderInstitution contained
syntax match redifFieldPublisherLocation /^Publisher-Location:/ skipwhite skipempty nextgroup=redifArgumentProviderLocation contained
syntax match redifFieldPublisherName /^Publisher-Name:/ skipwhite skipempty nextgroup=redifArgumentProviderName contained
syntax match redifFieldPublisherNameEnglish /^Publisher-Name-English:/ skipwhite skipempty nextgroup=redifArgumentProviderNameEnglish contained
syntax match redifFieldPublisherPhone /^Publisher-Phone:/ skipwhite skipempty nextgroup=redifArgumentProviderPhone contained
syntax match redifFieldPublisherPostal /^Publisher-Postal:/ skipwhite skipempty nextgroup=redifArgumentProviderPostal contained
highlight def link redifFieldPublisherEmail redifFieldDeprecated
highlight def link redifFieldPublisherFax redifFieldDeprecated
highlight def link redifFieldPublisherHomepage redifFieldDeprecated
highlight def link redifFieldPublisherInstitution redifFieldDeprecated
highlight def link redifFieldPublisherLocation redifFieldDeprecated
highlight def link redifFieldPublisherName redifFieldDeprecated
highlight def link redifFieldPublisherNameEnglish redifFieldDeprecated
highlight def link redifFieldPublisherPhone redifFieldDeprecated
highlight def link redifFieldPublisherPostal redifFieldDeprecated
" Standard arguments
" Contains all the remaining line if it is not a new field
" /\%(^\S\{-}:\)\@!\S.*/
" Note: Those arguments are not highlighted so far. They are here for
" future extensions.
" Note: Those matches do not extend further the end of the line. They are
" unfit for arguments that may span several lines like Title, Abstract,
" Postal. They are well-fit for arguments that must not span more than one
" line by definition, such as URLs, Email addresses, etc.
" By default, they contain all the argument until another field is started:
" start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1
" For arguments that must not span more than one line, use a match:
" /\%(^\S\{-}:\)\@!\S.*/
" AND ADD "display"
" This is faster.
"
" Those arguments are not highlighted so far. They are here for future
" extensions.
" TODO Find more RegEx for these arguments
" TODO Fax, Phone
" TODO URL, Homepage
" TODO Keywords
" TODO Classification-JEL
" TODO Short-Id, Author-Person, Editor-Person
"syntax match redifArgumentAuthorFax /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentAuthorHomepage /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentAuthorName /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentAuthorNameFirst /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentAuthorNameLast /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentAuthorPerson /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentAuthorPhone /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentAuthorPostal /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentAuthorWorkplaceFax /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentAuthorWorkplaceHomepage /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentAuthorWorkplaceLocation /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentAuthorWorkplaceName /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentAuthorWorkplaceNameEnglish /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentAuthorWorkplacePhone /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentAuthorWorkplacePostal /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorFax /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorHomepage /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorName /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorNameFirst /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorNameLast /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorPerson /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorPhone /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorPostal /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorWorkplaceFax /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorWorkplaceHomepage /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorWorkplaceLocation /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorWorkplaceName /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorWorkplaceNameEnglish /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorWorkplacePhone /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentEditorWorkplacePostal /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentFax /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentFileFunction /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentFileURL /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentHomepage /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentIssue /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentJournal /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentMaintainerFax /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentMaintainerName /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentMaintainerPhone /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentNameFirst /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentNameFull /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentNameLast /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentNameMiddle /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentNamePrefix /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentNameSuffix /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentName /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentOrderHomepage /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentOrderPostal /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentOrderURL /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPhone /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPostal /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPrice /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPrimaryFax /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPrimaryHomepage /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPrimaryLocation /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPrimaryName /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPrimaryNameEnglish /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPrimaryPhone /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPrimaryPostal /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentProviderFax /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentProviderHomepage /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentProviderLocation /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentProviderName /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentProviderNameEnglish /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentProviderPhone /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentProviderPostal /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPublisherFax /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPublisherHomepage /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPublisherLocation /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPublisherName /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPublisherNameEnglish /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPublisherPhone /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentPublisherPostal /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentQuaternaryFax /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentQuaternaryHomepage /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentQuaternaryLocation /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentQuaternaryName /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentQuaternaryNameEnglish /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentQuaternaryPhone /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentQuaternaryPostal /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentRequires /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentSecondaryFax /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentSecondaryHomepage /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentSecondaryLocation /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentSecondaryName /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentSecondaryNameEnglish /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentSecondaryPhone /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentSecondaryPostal /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentSeries /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentSize /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentShortId /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentTertiaryFax /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentTertiaryHomepage /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentTertiaryLocation /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentTertiaryName /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentTertiaryNameEnglish /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentTertiaryPhone /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentTertiaryPostal /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentURL /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentVersion /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentWorkplaceFax /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentWorkplaceHomepage /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentWorkplaceLocation /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentWorkplaceName /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentWorkplaceNameEnglish /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentWorkplaceOrganization /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentWorkplacePhone /\%(^\S\{-}:\)\@!\S.*/ contained display
"syntax match redifArgumentWorkplacePostal /\%(^\S\{-}:\)\@!\S.*/ contained display
"
" Arguments that may span several lines:
syntax region redifArgumentAuthorWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentAuthorWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentFileFunction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentIssue start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentJournal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentOrderPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentPrice start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentPrimaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentPrimaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentProviderLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentProviderPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentQuaternaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentQuaternaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentRequires start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentSecondaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentSecondaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentSize start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentTertiaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentTertiaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentVersion start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
" Arguments that may not span several lines:
" If you are sure that these arguments cannot span several lines, change
" them to a match:
" /\%(^\S\{-}:\)\@!\S.*/
" AND ADD "display" after "contained"
" You can use this command on each line that you want to change:
" :s+\Vregion \(\w\+\) start=/\\%(^\\S\\{-}:\\)\\@!\\S/ end=/^\\S\\{-}:/me=s-1 contained+match \1 /\\%(^\\S\\{-}:\\)\\@!\\S.*/ contained display
syntax region redifArgumentAuthorFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentAuthorHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentAuthorName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentAuthorNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentAuthorNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentAuthorPerson start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentAuthorPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentAuthorPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentAuthorWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentAuthorWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentAuthorWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentAuthorWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentAuthorWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorPerson start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentEditorWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentFileURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentMaintainerFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentMaintainerName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentMaintainerPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentNameFull start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentNameMiddle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentNamePrefix start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentNameSuffix start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentNumber start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentOrderHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentOrderURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentPrimaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentPrimaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentPrimaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentPrimaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentPrimaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentProviderFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentProviderHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentProviderName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentProviderNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentProviderPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentQuaternaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentQuaternaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentQuaternaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentQuaternaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentQuaternaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentSecondaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentSecondaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentSecondaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentSecondaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentSecondaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentSeries start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentShortId start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentTertiaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentTertiaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentTertiaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentTertiaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentTertiaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
syntax region redifArgumentWorkplaceOrganization start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained
" Special arguments
" Those arguments require special values
@@ -604,12 +630,14 @@ highlight def link redifFieldYear redifField
"
" Template-Type
syntax match redifArgumentTemplateType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectTemplateType contained display
syntax match redifCorrectTemplateType /ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\)/ nextgroup=redifTemplateVersionNumber contained display
syntax match redifTemplateVersionNumber / \d\+\.\d\+/ contained display
syntax match redifCorrectTemplateType /ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\)/ nextgroup=redifTemplateVersionNumberContainer contained display
syntax match redifTemplateVersionNumberContainer /.\+/ contains=redifTemplateVersionNumber contained display
syntax match redifTemplateVersionNumber / \d\+\.\d\+/ nextgroup=redifWrongLineEnding contained display
highlight def link redifArgumentTemplateType redifError
highlight def link redifCorrectTemplateType Constant
highlight def link redifTemplateVersionNumber Number
highlight def link redifTemplateVersionNumberContainer redifError
" Handles:
"
@@ -629,7 +657,7 @@ syntax match redifArgumentBookHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrec
syntax match redifArgumentChapterHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
syntax match redifArgumentPaperHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
syntax match redifArgumentSoftwareHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display
syntax match redifCorrectHandleOfWork /RePEc:\a\a\a:\%(_\@!\w\)\{6}:\S\+/ contains=redifForbiddenCharactersInHandle,redifBestPracticeInHandle contained display
syntax match redifCorrectHandleOfWork /RePEc:\a\a\a:\%(_\@!\w\)\{6}:\S\+/ contains=redifForbiddenCharactersInHandle,redifBestPracticeInHandle nextgroup=redifWrongLineEnding contained display
" TODO Are those characters really forbidden???
syntax match redifForbiddenCharactersInHandle /[\/*?"<>|]/ contained display
syntax match redifBestPracticeInHandle /\<\%([vi]:[1-9]\d*\|y:[1-9]\d\{3}\|p:[1-9]\d*-[1-9]\d*\|i:\%(jan\|feb\|mar\|apr\|may\|jun\|jul\|aug\|sep\|oct\|nov\|dec\|spr\|sum\|aut\|win\|spe\|Q[1-4]\|\d\d-\d\d\)\|Q:[1-4]\)\>/ contained display
@@ -656,7 +684,7 @@ highlight def link redifBestPracticeInHandle redifSpecial
syntax match redifArgumentHandleOfSeries /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display
syntax match redifArgumentFollowup /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display
syntax match redifArgumentPredecessor /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display
syntax match redifCorrectHandleOfSeries /RePEc:\a\a\a:\%(_\@!\w\)\{6}/ contained display
syntax match redifCorrectHandleOfSeries /RePEc:\a\a\a:\%(_\@!\w\)\{6}/ nextgroup=redifWrongLineEnding contained display
highlight def link redifArgumentHandleOfSeries redifError
highlight def link redifArgumentFollowup redifError
@@ -664,13 +692,13 @@ highlight def link redifArgumentPredecessor redifError
" Handles of Archives:
syntax match redifArgumentHandleOfArchive /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfArchive contained display
syntax match redifCorrectHandleOfArchive /RePEc:\a\a\a/ contained display
syntax match redifCorrectHandleOfArchive /RePEc:\a\a\a/ nextgroup=redifWrongLineEnding contained display
highlight def link redifArgumentHandleOfArchive redifError
" Handles of Person:
syntax match redifArgumentHandleOfPerson /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfPerson contained display
syntax match redifCorrectHandleOfPerson /\%(\%(:\@!\S\)\{-}:\)\{2}[1-9]\d\{3}\%(-02\%(-[12]\d\|-0[1-9]\)\|-\%(0[469]\|11\)\%(-30\|-[12]\d\|-0[1-9]\)\|-\%(0[13578]\|1[02]\)\%(-3[01]\|-[12]\d\|-0[1-9]\)\):\S\+/ contained display
syntax match redifCorrectHandleOfPerson /\%(\%(:\@!\S\)\{-}:\)\{2}[1-9]\d\{3}\%(-02\%(-[12]\d\|-0[1-9]\)\|-\%(0[469]\|11\)\%(-30\|-[12]\d\|-0[1-9]\)\|-\%(0[13578]\|1[02]\)\%(-3[01]\|-[12]\d\|-0[1-9]\)\):\S\+/ nextgroup=redifWrongLineEnding contained display
highlight def link redifArgumentHandleOfPerson redifError
@@ -691,7 +719,7 @@ syntax match redifArgumentTertiaryDefunct /\%(^\S\{-}:\)\@!\S.*/ contains=redifC
" TODO Are digits authorized? Apparently not.
" Country codes:
" http://www.iso.org/iso/country_codes/iso_3166_code_lists/country_names_and_code_elements.htm
syntax match redifCorrectHandleOfInstitution /RePEc:\a\a\a:\a\{5}\(ea\|af\|ax\|al\|dz\|as\|ad\|ao\|ai\|aq\|ag\|ar\|am\|aw\|au\|at\|az\|bs\|bh\|bd\|bb\|by\|be\|bz\|bj\|bm\|bt\|bo\|bq\|ba\|bw\|bv\|br\|io\|bn\|bg\|bf\|bi\|kh\|cm\|ca\|cv\|ky\|cf\|td\|cl\|cn\|cx\|cc\|co\|km\|cg\|cd\|ck\|cr\|ci\|hr\|cu\|cw\|cy\|cz\|dk\|dj\|dm\|do\|ec\|eg\|sv\|gq\|er\|ee\|et\|fk\|fo\|fj\|fi\|fr\|gf\|pf\|tf\|ga\|gm\|ge\|de\|gh\|gi\|gr\|gl\|gd\|gp\|gu\|gt\|gg\|gn\|gw\|gy\|ht\|hm\|va\|hn\|hk\|hu\|is\|in\|id\|ir\|iq\|ie\|im\|il\|it\|jm\|jp\|je\|jo\|kz\|ke\|ki\|kp\|kr\|kw\|kg\|la\|lv\|lb\|ls\|lr\|ly\|li\|lt\|lu\|mo\|mk\|mg\|mw\|my\|mv\|ml\|mt\|mh\|mq\|mr\|mu\|yt\|mx\|fm\|md\|mc\|mn\|me\|ms\|ma\|mz\|mm\|na\|nr\|np\|nl\|nc\|nz\|ni\|ne\|ng\|nu\|nf\|mp\|no\|om\|pk\|pw\|ps\|pa\|pg\|py\|pe\|ph\|pn\|pl\|pt\|pr\|qa\|re\|ro\|ru\|rw\|bl\|sh\|kn\|lc\|mf\|pm\|vc\|ws\|sm\|st\|sa\|sn\|rs\|sc\|sl\|sg\|sx\|sk\|si\|sb\|so\|za\|gs\|ss\|es\|lk\|sd\|sr\|sj\|sz\|se\|ch\|sy\|tw\|tj\|tz\|th\|tl\|tg\|tk\|to\|tt\|tn\|tr\|tm\|tc\|tv\|ug\|ua\|ae\|gb\|us\|um\|uy\|uz\|vu\|ve\|vn\|vg\|vi\|wf\|eh\|ye\|zm\|zw\)/ contained display
syntax match redifCorrectHandleOfInstitution /RePEc:\a\a\a:\a\{5}\(ea\|af\|ax\|al\|dz\|as\|ad\|ao\|ai\|aq\|ag\|ar\|am\|aw\|au\|at\|az\|bs\|bh\|bd\|bb\|by\|be\|bz\|bj\|bm\|bt\|bo\|bq\|ba\|bw\|bv\|br\|io\|bn\|bg\|bf\|bi\|kh\|cm\|ca\|cv\|ky\|cf\|td\|cl\|cn\|cx\|cc\|co\|km\|cg\|cd\|ck\|cr\|ci\|hr\|cu\|cw\|cy\|cz\|dk\|dj\|dm\|do\|ec\|eg\|sv\|gq\|er\|ee\|et\|fk\|fo\|fj\|fi\|fr\|gf\|pf\|tf\|ga\|gm\|ge\|de\|gh\|gi\|gr\|gl\|gd\|gp\|gu\|gt\|gg\|gn\|gw\|gy\|ht\|hm\|va\|hn\|hk\|hu\|is\|in\|id\|ir\|iq\|ie\|im\|il\|it\|jm\|jp\|je\|jo\|kz\|ke\|ki\|kp\|kr\|kw\|kg\|la\|lv\|lb\|ls\|lr\|ly\|li\|lt\|lu\|mo\|mk\|mg\|mw\|my\|mv\|ml\|mt\|mh\|mq\|mr\|mu\|yt\|mx\|fm\|md\|mc\|mn\|me\|ms\|ma\|mz\|mm\|na\|nr\|np\|nl\|nc\|nz\|ni\|ne\|ng\|nu\|nf\|mp\|no\|om\|pk\|pw\|ps\|pa\|pg\|py\|pe\|ph\|pn\|pl\|pt\|pr\|qa\|re\|ro\|ru\|rw\|bl\|sh\|kn\|lc\|mf\|pm\|vc\|ws\|sm\|st\|sa\|sn\|rs\|sc\|sl\|sg\|sx\|sk\|si\|sb\|so\|za\|gs\|ss\|es\|lk\|sd\|sr\|sj\|sz\|se\|ch\|sy\|tw\|tj\|tz\|th\|tl\|tg\|tk\|to\|tt\|tn\|tr\|tm\|tc\|tv\|ug\|ua\|ae\|gb\|us\|um\|uy\|uz\|vu\|ve\|vn\|vg\|vi\|wf\|eh\|ye\|zm\|zw\)/ nextgroup=redifWrongLineEnding contained display
highlight def link redifArgumentHandleOfInstitution redifError
highlight def link redifArgumentPrimaryDefunct redifError
@@ -714,7 +742,7 @@ syntax match redifArgumentQuaternaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifC
syntax match redifArgumentSecondaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
syntax match redifArgumentTertiaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
syntax match redifArgumentWorkplaceEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display
syntax match redifCorrectEmail /\%(@\@!\S\)\+@\%(@\@!\S\)\+/ contained display
syntax match redifCorrectEmail /\%(@\@!\S\)\+@\%(@\@!\S\)\+/ nextgroup=redifWrongLineEnding contained display
highlight def link redifArgumentAuthorEmail redifError
highlight def link redifArgumentAuthorWorkplaceEmail redifError
@@ -735,7 +763,7 @@ highlight def link redifArgumentWorkplaceEmail redifError
" Language
" Source: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
syntax match redifArgumentLanguage /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectLanguage contained display
syntax match redifCorrectLanguage /\<\(aa\|ab\|af\|ak\|als\|am\|an\|ang\|ar\|arc\|as\|ast\|av\|ay\|az\|ba\|bar\|bat-smg\|bcl\|be\|be-x-old\|bg\|bh\|bi\|bm\|bn\|bo\|bpy\|br\|bs\|bug\|bxr\|ca\|ce\|ceb\|ch\|cho\|chr\|chy\|co\|cr\|cs\|csb\|cu\|cv\|cy\|da\|de\|diq\|dsb\|dv\|dz\|ee\|el\|en\|eo\|es\|et\|eu\|ext\|fa\|ff\|fi\|fiu-vro\|fj\|fo\|fr\|frp\|fur\|fy\|ga\|gd\|gil\|gl\|gn\|got\|gu\|gv\|ha\|haw\|he\|hi\|ho\|hr\|ht\|hu\|hy\|hz\|ia\|id\|ie\|ig\|ii\|ik\|ilo\|io\|is\|it\|iu\|ja\|jbo\|jv\|ka\|kg\|ki\|kj\|kk\|kl\|km\|kn\|khw\|ko\|kr\|ks\|ksh\|ku\|kv\|kw\|ky\|la\|lad\|lan\|lb\|lg\|li\|lij\|lmo\|ln\|lo\|lt\|lv\|map-bms\|mg\|mh\|mi\|mk\|ml\|mn\|mo\|mr\|ms\|mt\|mus\|my\|na\|nah\|nap\|nd\|nds\|nds-nl\|ne\|new\|ng\|nl\|nn\|no\|nr\|nso\|nrm\|nv\|ny\|oc\|oj\|om\|or\|os\|pa\|pag\|pam\|pap\|pdc\|pi\|pih\|pl\|pms\|ps\|pt\|qu\|rm\|rmy\|rn\|ro\|roa-rup\|ru\|rw\|sa\|sc\|scn\|sco\|sd\|se\|sg\|sh\|si\|simple\|sk\|sl\|sm\|sn\|so\|sq\|sr\|ss\|st\|su\|sv\|sw\|ta\|te\|tet\|tg\|th\|ti\|tk\|tl\|tlh\|tn\|to\|tpi\|tr\|ts\|tt\|tum\|tw\|ty\|udm\|ug\|uk\|ur\|uz\|ve\|vi\|vec\|vls\|vo\|wa\|war\|wo\|xal\|xh\|yi\|yo\|za\|zh\|zh-min-nan\|zh-yue\|zu\)\>/ contained display
syntax match redifCorrectLanguage /\<\(aa\|ab\|af\|ak\|als\|am\|an\|ang\|ar\|arc\|as\|ast\|av\|ay\|az\|ba\|bar\|bat-smg\|bcl\|be\|be-x-old\|bg\|bh\|bi\|bm\|bn\|bo\|bpy\|br\|bs\|bug\|bxr\|ca\|ce\|ceb\|ch\|cho\|chr\|chy\|co\|cr\|cs\|csb\|cu\|cv\|cy\|da\|de\|diq\|dsb\|dv\|dz\|ee\|el\|en\|eo\|es\|et\|eu\|ext\|fa\|ff\|fi\|fiu-vro\|fj\|fo\|fr\|frp\|fur\|fy\|ga\|gd\|gil\|gl\|gn\|got\|gu\|gv\|ha\|haw\|he\|hi\|ho\|hr\|ht\|hu\|hy\|hz\|ia\|id\|ie\|ig\|ii\|ik\|ilo\|io\|is\|it\|iu\|ja\|jbo\|jv\|ka\|kg\|ki\|kj\|kk\|kl\|km\|kn\|khw\|ko\|kr\|ks\|ksh\|ku\|kv\|kw\|ky\|la\|lad\|lan\|lb\|lg\|li\|lij\|lmo\|ln\|lo\|lt\|lv\|map-bms\|mg\|mh\|mi\|mk\|ml\|mn\|mo\|mr\|ms\|mt\|mus\|my\|na\|nah\|nap\|nd\|nds\|nds-nl\|ne\|new\|ng\|nl\|nn\|no\|nr\|nso\|nrm\|nv\|ny\|oc\|oj\|om\|or\|os\|pa\|pag\|pam\|pap\|pdc\|pi\|pih\|pl\|pms\|ps\|pt\|qu\|rm\|rmy\|rn\|ro\|roa-rup\|ru\|rw\|sa\|sc\|scn\|sco\|sd\|se\|sg\|sh\|si\|simple\|sk\|sl\|sm\|sn\|so\|sq\|sr\|ss\|st\|su\|sv\|sw\|ta\|te\|tet\|tg\|th\|ti\|tk\|tl\|tlh\|tn\|to\|tpi\|tr\|ts\|tt\|tum\|tw\|ty\|udm\|ug\|uk\|ur\|uz\|ve\|vi\|vec\|vls\|vo\|wa\|war\|wo\|xal\|xh\|yi\|yo\|za\|zh\|zh-min-nan\|zh-yue\|zu\)\>/ nextgroup=redifWrongLineEnding contained display
highlight def link redifArgumentLanguage redifError
highlight def link redifCorrectLanguage redifSpecial
@@ -743,22 +771,22 @@ highlight def link redifCorrectLanguage redifSpecial
" Length
" Based on the example in the documentation. But apparently any field is
" possible
syntax match redifArgumentLength /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodLength contained display
syntax region redifArgumentLength start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifGoodLength contained
syntax match redifGoodLength /1 page\|[1-9]\d*\%( pages\)\=/ contained display
highlight def link redifGoodLength redifSpecial
" Publication-Type
syntax match redifArgumentPublicationType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectPublicationType contained display
syntax match redifCorrectPublicationType /\<\(journal article\|book\|book chapter\|working paper\|conference paper\|report\|other\)\>/ contained display
syntax match redifCorrectPublicationType /\<\(journal article\|book\|book chapter\|working paper\|conference paper\|report\|other\)\>/ nextgroup=redifWrongLineEnding contained display
highlight def link redifArgumentPublicationType redifError
highlight def link redifCorrectPublicationType redifSpecial
" Publication-Status
syntax match redifArgumentPublicationStatus /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectPublicationStatus contained display
syntax match redifCorrectPublicationStatus /\<\%(published\|forthcoming\)\>.*/ contains=redifSpecialPublicationStatus contained display
syntax match redifSpecialPublicationStatus /published\|forthcoming/ contained display
syntax region redifArgumentPublicationStatus start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifSpecialPublicationStatus contained
syntax match redifSpecialPublicationStatus /published\|forthcoming/ nextgroup=redifCorrectPublicationStatus contained display
syntax region redifCorrectPublicationStatus start=/./ end=/^\S\{-}:/me=s-1 contained
highlight def link redifArgumentPublicationStatus redifError
highlight def link redifSpecialPublicationStatus redifSpecial
@@ -770,18 +798,17 @@ syntax match redifGoodMonth /\<\(Jan\%(uary\)\=\|Feb\%(ruary\)\=\|Mar\%(ch\)\=\|
highlight def link redifGoodMonth redifSpecial
" Integers: Number, Volume, Chapter
syntax match redifArgumentNumber /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectInteger contained display
" Integers: Volume, Chapter
syntax match redifArgumentVolume /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectInteger contained display
syntax match redifArgumentChapter /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectInteger contained display
syntax match redifCorrectInteger /[1-9]\d*/ contained display
syntax match redifCorrectInteger /[1-9]\d*/ nextgroup=redifWrongLineEnding contained display
highlight def link redifArgumentVolume redifError
highlight def link redifArgumentChapter redifError
" Year
syntax match redifArgumentYear /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectYear contained display
syntax match redifCorrectYear /[1-9]\d\{3}/ contained display
syntax match redifCorrectYear /[1-9]\d\{3}/ nextgroup=redifWrongLineEnding contained display
highlight def link redifArgumentYear redifError
@@ -806,14 +833,14 @@ highlight def link redifGoodISSN redifSpecial
" File-Size
" Based on the example in the documentation.
syntax match redifArgumentFileSize /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodSize contained display
syntax region redifArgumentFileSize start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifGoodSize contained
syntax match redifGoodSize /kb\|bytes/ contained display
highlight def link redifGoodSize redifSpecial
" Type
syntax match redifArgumentType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectType contained display
syntax match redifCorrectType /ReDIF-Paper\|ReDIF-Software\|ReDIF-Article\|ReDIF-Chapter\|ReDIF-Book/ contained display
syntax match redifCorrectType /ReDIF-Paper\|ReDIF-Software\|ReDIF-Article\|ReDIF-Chapter\|ReDIF-Book/ nextgroup=redifWrongLineEnding contained display
highlight def link redifArgumentType redifError
highlight def link redifCorrectType redifSpecial
@@ -825,7 +852,7 @@ syntax match redifArgumentLastLoginDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCor
syntax match redifArgumentPublicationDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display
syntax match redifArgumentRegisteredDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display
syntax match redifArgumentRevisionDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display
syntax match redifCorrectDate /[1-9]\d\{3}\%(-02\%(-[12]\d\|-0[1-9]\)\=\|-\%(0[469]\|11\)\%(-30\|-[12]\d\|-0[1-9]\)\=\|-\%(0[13578]\|1[02]\)\%(-3[01]\|-[12]\d\|-0[1-9]\)\=\)\=/ contained display
syntax match redifCorrectDate /[1-9]\d\{3}\%(-02\%(-[12]\d\|-0[1-9]\)\=\|-\%(0[469]\|11\)\%(-30\|-[12]\d\|-0[1-9]\)\=\|-\%(0[13578]\|1[02]\)\%(-3[01]\|-[12]\d\|-0[1-9]\)\=\)\=/ nextgroup=redifWrongLineEnding contained display
highlight def link redifArgumentCreationDate redifError
highlight def link redifArgumentLastLoginDate redifError
@@ -835,7 +862,7 @@ highlight def link redifArgumentRevisionDate redifError
" Classification-JEL
syntax match redifArgumentClassificationJEL /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectJEL contained display
syntax match redifCorrectJEL /\<\u\d\{,2}\%([,; \t]\s*\)\=/ contains=redifSpecialJEL contained display
syntax match redifCorrectJEL /\<\%(\u\d\{,2}[,; \t]\s*\)*\u\d\{,2}/ contains=redifSpecialJEL nextgroup=redifWrongLineEnding contained display
syntax match redifSpecialJEL /\<\u\d\{,2}/ contained display
highlight def link redifArgumentClassificationJEL redifError
@@ -843,7 +870,7 @@ highlight def link redifSpecialJEL redifSpecial
" Pages
syntax match redifArgumentPages /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectPages contained display
syntax match redifCorrectPages /[1-9]\d*-[1-9]\d*/ contained display
syntax match redifCorrectPages /[1-9]\d*-[1-9]\d*/ nextgroup=redifWrongLineEnding contained display
highlight def link redifArgumentPages redifError
@@ -855,7 +882,7 @@ highlight def link redifArgumentNameASCII redifError
" Programming-Language
syntax match redifArgumentProgrammingLanguage /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodProgrammingLanguage contained display
syntax match redifGoodProgrammingLanguage /\<c++\|\<\%(c\|dos executable\|executable\|fortran\|gauss\|gretl\|java\|mathematica\|matlab\|octave\|ox\|perl\|python\|rats\|r\|shazam\|s-plus\|stata\|tsp international\)\>/ contained display
syntax match redifGoodProgrammingLanguage /\<c++\|\<\%(c\|dos executable\|executable\|fortran\|gauss\|gretl\|java\|mathematica\|matlab\|octave\|ox\|perl\|python\|rats\|r\|shazam\|s-plus\|stata\|tsp international\)\>/ nextgroup=redifWrongLineEnding contained display
highlight def link redifGoodProgrammingLanguage redifSpecial
@@ -864,29 +891,82 @@ highlight def link redifGoodProgrammingLanguage redifSpecial
" ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/media-types
" These are based on the examples in the documentation.
syntax match redifArgumentFileFormat /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodFormat contained display
syntax match redifGoodFormat /application\/pdf\|application\/postscript\|text\/html\|text\/plain/ contained display
syntax match redifGoodFormat "\a\+/[[:alpha:]+-]\+" nextgroup=redifWrongLineEnding contains=redifSpecialFormat contained display
syntax match redifSpecialFormat "application/atom+xml\|application/ecmascript\|application/EDI-X12\|application/EDIFACT\|application/json\|application/javascript\|application/octet-stream\|application/ogg\|application/pdf\|application/postscript\|application/rdf+xml\|application/rss+xml\|application/soap+xml\|application/font-woff\|application/xhtml+xml\|application/xml\|application/xml-dtd\|application/xop+xml\|application/zip\|application/gzip\|audio/basic\|audio/L24\|audio/mp4\|audio/mpeg\|audio/ogg\|audio/vorbis\|audio/vnd.rn-realaudio\|audio/vnd.wave\|audio/webm\|image/gif\|image/jpeg\|image/pjpeg\|image/png\|image/svg+xml\|image/tiff\|image/vnd.microsoft.icon\|message/http\|message/imdn+xml\|message/partial\|message/rfc822\|model/example\|model/iges\|model/mesh\|model/vrml\|model/x3d+binary\|model/x3d+vrml\|model/x3d+xml\|multipart/mixed\|multipart/alternative\|multipart/related\|multipart/form-data\|multipart/signed\|multipart/encrypted\|text/cmd\|text/css\|text/csv\|text/html\|text/javascript\|text/plain\|text/vcard\|text/xml\|video/mpeg\|video/mp4\|video/ogg\|video/quicktime\|video/webm\|video/x-matroska\|video/x-ms-wmv\|video/x-flv" contained display
highlight def link redifGoodFormat redifSpecial
highlight def link redifSpecialFormat redifSpecial
highlight def link redifArgumentFileFormat redifError
" Spell-checked arguments
" Keywords
" Spell checked
syntax match redifArgumentKeywords /\%(^\S\{-}:\)\@!\S.*/ contains=@Spell,redifKeywordsSemicolon contained
syntax match redifKeywordsSemicolon /;/ contained
highlight def link redifKeywordsSemicolon redifSpecial
" Other spell-checked arguments
" Very useful when copy-pasting abstracts that may contain hyphens or
" ligatures.
syntax region redifArgumentAbstract start=/\%(^\S\{-}:\)\@!\S.*/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentAvailability start=/\%(^\S\{-}:\)\@!\S.*/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentBookTitle start=/\%(^\S\{-}:\)\@!\S.*/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentDescription start=/\%(^\S\{-}:\)\@!\S.*/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentFileRestriction start=/\%(^\S\{-}:\)\@!\S.*/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentKeywords start=/\%(^\S\{-}:\)\@!\S.*/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentNote start=/\%(^\S\{-}:\)\@!\S.*/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentNotification start=/\%(^\S\{-}:\)\@!\S.*/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentRestriction start=/\%(^\S\{-}:\)\@!\S.*/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentTitle start=/\%(^\S\{-}:\)\@!\S.*/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentAbstract start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentAvailability start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentBookTitle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentDescription start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentFileRestriction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentNote start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentNotification start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentRestriction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
syntax region redifArgumentTitle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained
" Wrong line ending
syntax match redifWrongLineEnding /.\+/ contained display
highlight def link redifWrongLineEnding redifError
" Final highlight
highlight def link redifComment Comment
highlight def link redifError Error
highlight def link redifField Identifier
highlight def link redifFieldDeprecated Identifier
highlight def link redifSpecial Special
" For deprecated fields:
highlight redifFieldDeprecated term=undercurl cterm=undercurl gui=undercurl guisp=DarkGrey
" Sync: The template-type (ReDIF-Paper, ReDIF-Archive, etc.) influences which
" fields can follow. Thus sync must search backwards for it.
"
" I would like to simply ask VIM to search backward for the first occurence of
" /^Template-Type:/, but it does not seem to be possible, so I have to start
" from the beginning of the file... This might slow down a lot for files that
" contain a lot of Template-Type statements.
syntax sync fromstart
" The problem with syntax sync match (tried below), it is that, for example,
" it cannot realize when it is inside a Author-Name cluster, which is inside a
" Template-Type template...
"
" TODO Is this linecont pattern really useful? It seems to work anyway...
"syntax sync linecont /^\(Template-Type:\)\=\s*$/
" TODO This sync is surprising... It seems to work on several lines even
" though I replaced \_s* by \s*, even without the linecont pattern...
"syntax sync match redifSyncForTemplatePaper groupthere redifRegionTemplatePaper /^Template-Type:\s*ReDIF-Paper \d\+\.\d\+/
"syntax sync match redifSyncForTemplateArticle groupthere redifRegionTemplateArticle /^Template-Type:\s*ReDIF-Article \d\+\.\d\+/
"syntax sync match redifSyncForTemplateChapter groupthere redifRegionTemplateChapter /^Template-Type:\s*ReDIF-Chapter \d\+\.\d\+/
"syntax sync match redifSyncForTemplateBook groupthere redifRegionTemplateBook /^Template-Type:\s*ReDIF-Book \d\+\.\d\+/
"syntax sync match redifSyncForTemplateSoftware groupthere redifRegionTemplateSoftware /^Template-Type:\s*ReDIF-Software \d\+\.\d\+/
"syntax sync match redifSyncForTemplateArchive groupthere redifRegionTemplateArchive /^Template-Type:\s*ReDIF-Archive \d\+\.\d\+/
"syntax sync match redifSyncForTemplateSeries groupthere redifRegionTemplateSeries /^Template-Type:\s*ReDIF-Series \d\+\.\d\+/
"syntax sync match redifSyncForTemplateInstitution groupthere redifRegionTemplateInstitution /^Template-Type:\s*ReDIF-Institution \d\+\.\d\+/
"syntax sync match redifSyncForTemplatePerson groupthere redifRegionTemplatePerson /^Template-Type:\s*ReDIF-Person \d\+\.\d\+/
" I do not really know how sync linebreaks works, but it helps when making
" changes on the argument when this argument is not on the same line than its
" field. I just assume that people won't leave more than one line of
" whitespace between fields and arguments (which is already very unlikely)
" hence the value of 2.
syntax sync linebreaks=2
" Since folding is defined by the syntax, set foldmethod to syntax.
set foldmethod=syntax
" Set "b:current_syntax" to the name of the syntax at the end:
let b:current_syntax="redif"

View File

@@ -1,10 +1,13 @@
" Vim syntax file
" Language: resolver configuration file
" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
" Original Maintaner: Radu Dineiu <littledragon@altern.org>
" License: This file can be redistributed and/or modified under the same terms
" as Vim itself.
" Last Change: 2012-05-24
" Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
" URL: https://raw.github.com/rid9/vim-resolv/master/resolv.vim
" Last Change: 2013 May 21
" Version: 1.0
"
" Credits:
" David Necas (Yeti) <yeti@physics.muni.cz>
" Stefano Zacchiroli <zack@debian.org>
if version < 600
syntax clear
@@ -14,18 +17,18 @@ endif
" Errors, comments and operators
syn match resolvError /./
syn match resolvComment /\s*[#;].*$/ contains=@Spell
syn match resolvOperator /[/:]/ contained
syn match resolvComment /\s*[#;].*$/
syn match resolvOperator /[\/:]/ contained
" IP
syn cluster resolvIPCluster contains=resolvIPError,resolvIPSpecial
syn match resolvIPError /\%(\d\{4,}\|25[6-9]\|2[6-9]\d\|[3-9]\d\{2}\)[.0-9]*/ contained
syn match resolvIPError /\%(\d\{4,}\|25[6-9]\|2[6-9]\d\|[3-9]\d\{2}\)[\.0-9]*/ contained
syn match resolvIPSpecial /\%(127\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)/ contained
" General
syn match resolvIP contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}/ contains=@resolvIPCluster
syn match resolvIPNetmask contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\%(\%(\d\{1,4}\.\)\{,3}\d\{1,4}\)\)\?/ contains=resolvOperator,@resolvIPCluster
syn match resolvHostname contained /\w\{-}\.[-0-9A-Za-z_.]*/
syn match resolvHostname contained /\w\{-}\.[-0-9A-Za-z_\.]*/
" Particular
syn match resolvIPNameserver contained /\%(\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\s\|$\)\)\+/ contains=@resolvIPCluster
@@ -41,8 +44,6 @@ syn match resolvSortList /^\s*sortlist\>/ nextgroup=resolvIPNetmaskSortList skip
syn match resolvOptions /^\s*options\>/ nextgroup=resolvOption skipwhite
" Options
" FIXME: The manual page and the source code do not exactly agree on the set
" of allowed options
syn match resolvOption /\<\%(debug\|no_tld_query\|rotate\|no-check-names\|inet6\)\>/ contained nextgroup=resolvOption skipwhite
syn match resolvOption /\<\%(ndots\|timeout\|attempts\):\d\+\>/ contained contains=resolvOperator nextgroup=resolvOption skipwhite

25
runtime/syntax/rng.vim Normal file
View File

@@ -0,0 +1,25 @@
" Vim syntax file
" Language: RELAX NG
" Maintainer: Jaromir Hradilek <jhradilek@gmail.com>
" URL: https://github.com/jhradilek/vim-rng
" Last Change: 25 March 2013
" Description: A syntax file for RELAX NG, a schema language for XML
if exists('b:current_syntax')
finish
endif
do Syntax xml
syn spell toplevel
syn cluster xmlTagHook add=rngTagName
syn case match
syn keyword rngTagName anyName attribute choice data define div contained
syn keyword rngTagName element empty except externalRef grammar contained
syn keyword rngTagName group include interleave list mixed name contained
syn keyword rngTagName notAllowed nsName oneOrMore optional param contained
syn keyword rngTagName parentRef ref start text value zeroOrMore contained
hi def link rngTagName Statement
let b:current_syntax = 'rng'

View File

@@ -1,8 +1,7 @@
" Vim syntax file
" Language: SGML-linuxdoc (supported by old sgmltools-1.x)
" (for more information, visit www.sgmltools.org)
" Maintainer: SungHyun Nam <goweol@gmail.com>
" Last Change: 2008 Sep 17
" Last Change: 2013 May 13
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@@ -29,7 +28,7 @@ syn region sgmllnxSpecial oneline start="&" end=";"
syn keyword sgmllnxTagName contained article author date toc title sect verb
syn keyword sgmllnxTagName contained abstract tscreen p itemize item enum
syn keyword sgmllnxTagName contained descrip quote htmlurl code ref
syn keyword sgmllnxTagName contained tt tag bf
syn keyword sgmllnxTagName contained tt tag bf it url
syn match sgmllnxTagName contained "sect\d\+"
" Comments

View File

@@ -1,8 +1,8 @@
" SiSU Vim syntax file
" SiSU Maintainer: Ralph Amissah <ralph@amissah.com>
" SiSU Markup: SiSU (sisu-3.1.0)
" Last Change: 2011-10-03
" URL: <http://git.sisudoc.org/?p=code/sisu.git;a=blob;f=data/sisu/v3/conf/editor-syntax-etc/vim/syntax/sisu.vim;hb=HEAD>
" SiSU Markup: SiSU (sisu-4.0.9)
" Last Change: 2013-02-22
" URL (sisu-4.1.0): <http://git.sisudoc.org/?p=code/sisu.git;a=blob;f=data/sisu/conf/editor-syntax-etc/vim/syntax/sisu.vim;hb=HEAD>
"(originally looked at Ruby Vim by Mirko Nasato)
if version < 600
@@ -20,14 +20,9 @@ syn match sisu_error contains=sisu_link,sisu_error_wspace "<![^ei]\S\+!>"
"% "Markers Identifiers:
if !exists("sisu_no_identifiers")
syn match sisu_mark_endnote "\~^"
syn match sisu_break contains=@NoSpell " \\\\\( \|$\)"
syn match sisu_break contains=@NoSpell "<br>\|<br />"
syn match sisu_control contains=@NoSpell "^<:p[bn]>\s*$"
"syn match sisu_control contains=@NoSpell "^<\(br\)\?:\(pg\|pgn\|pn\)>\s*$"
"syn match sisu_control contains=@NoSpell "^\[\(br\)\?:\(pg\|pgn\|pn\)\]\s*$"
syn match sisu_break contains=@NoSpell " \\\\\( \|$\)\|<br>\|<br />"
syn match sisu_control contains=@NoSpell "^\(-\\\\-\|=\\\\=\|-\.\.-\|<:p[bn]>\)\s*$"
syn match sisu_control contains=@NoSpell "^<:\(bo\|---\)>\s*$"
"syn match sisu_control contains=@NoSpell "^<\(br\)\?:\(pr\|o\)>\s*$"
"syn match sisu_control contains=@NoSpell "^\[\(br\)\?:\(pr\|o\)\]\s*$"
syn match sisu_marktail "[~-]#"
syn match sisu_control "\""
syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)"
@@ -43,11 +38,12 @@ if !exists("sisu_no_identifiers")
syn match sisu_sub_header_title "^\s\+:\(subtitle\|short\|edition\|language\|lang_char\|note\):\s" "group=sisu_header_content
syn match sisu_sub_header_creator "^\s\+:\(author\|editor\|contributor\|illustrator\|photographer\|translator\|digitized_by\|prepared_by\|audio\|video\):\s" " &hon &institution
syn match sisu_sub_header_rights "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|preparation\|digitization\|audio\|video\|license\|all\):\s" " access_rights license
syn match sisu_sub_header_classify "^\s\+:\(topic_register\|coverage\|format\|identifier\|keywords\|relation\|subject\|type\|dewey\|loc\|oclc\|pg\|isbn\):\s"
syn match sisu_sub_header_date "^\s\+:\(added_to_site\|available\|created\|issued\|modified\|published\|valid\|translated\|original_publication\):\s"
syn match sisu_sub_header_classify "^\s\+:\(topic_register\|keywords\|subject\|dewey\|loc\):\s"
syn match sisu_sub_header_identifier "^\s\+:\(oclc\|isbn\):\s"
syn match sisu_sub_header_date "^\s\+:\(added_to_site\|available\|created\|issued\|modified\|published\|valid\|translated\|original_publication\):\s"
syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|lang_char\|institution\|nationality\|source\):\s"
syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|plaintext_wrap\|texpdf_font_mono\|texpdf_font\|skin\|stamp\|promo\|ad\|manpage\):\s"
syn match sisu_sub_header_notes "^\s\+:\(abstract\|comment\|description\|history\|prefix\|prefix_[ab]\|suffix\):\s"
syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|substitute\|omit\|plaintext_wrap\|texpdf_font_mono\|texpdf_font\|stamp\|promo\|ad\|manpage\|home_button_text\|home_button_image\|cover_image\|footer\):\s"
syn match sisu_sub_header_notes "^\s\+:\(description\|abstract\|comment\|coverage\|relation\|source\|history\|type\|format\|prefix\|prefix_[ab]\|suffix\):\s"
"% "semantic markers: (ignore)
syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]"
@@ -85,6 +81,8 @@ syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_
syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
" classify document
syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
" identifier document
syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_identifier matchgroup=sisu_header start="^[@]identifier:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
" original language (depreciated)
syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
" notes
@@ -219,6 +217,7 @@ hi def link sisu_sub_header_date Statement
hi def link sisu_sub_header_publisher Statement
hi def link sisu_sub_header_rights Statement
hi def link sisu_sub_header_classify Statement
hi def link sisu_sub_header_identifier Statement
hi def link sisu_sub_header_original Statement
hi def link sisu_sub_header_links Statement
hi def link sisu_sub_header_notes Statement

View File

@@ -1,11 +1,11 @@
" Vim syntax file
" Language: SQL, Adaptive Server Anywhere
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
" Last Change: 2012 Jan 23
" Version: 12.0.1
" Last Change: 2013 May 13
" Version: 16.0.0
" Description: Updated to Adaptive Server Anywhere 12.0.1 (including spatial data)
" Description: Updated to Adaptive Server Anywhere 16.0.0
" Updated to Adaptive Server Anywhere 12.0.1 (including spatial data)
" Updated to Adaptive Server Anywhere 11.0.1
" Updated to Adaptive Server Anywhere 10.0.1
" Updated to Adaptive Server Anywhere 9.0.2
@@ -27,33 +27,34 @@ syn case ignore
syn keyword sqlSpecial false null true
" common functions
syn keyword sqlFunction count sum avg min max debug_eng isnull
syn keyword sqlFunction greater lesser argn string ymd todate
syn keyword sqlFunction totimestamp date today now utc_now
syn keyword sqlFunction number identity years months weeks days
syn keyword sqlFunction hours minutes seconds second minute hour
syn keyword sqlFunction day month year dow date_format substr
syn keyword sqlFunction substring byte_substr length byte_length
syn keyword sqlFunction datalength ifnull evaluate list
syn keyword sqlFunction soundex similar difference like_start
syn keyword sqlFunction like_end regexp_compile
syn keyword sqlFunction regexp_compile_patindex remainder abs
syn keyword sqlFunction graphical_plan plan explanation ulplan
syn keyword sqlFunction graphical_ulplan long_ulplan
syn keyword sqlFunction short_ulplan rewrite watcomsql
syn keyword sqlFunction transactsql dialect estimate
syn keyword sqlFunction estimate_source index_estimate
syn keyword sqlFunction experience_estimate traceback wsql_state
syn keyword sqlFunction lang_message dateadd datediff datepart
syn keyword sqlFunction datename dayname monthname quarter
syn keyword sqlFunction tsequal hextoint inttohex rand textptr
syn keyword sqlFunction rowid grouping stddev variance rank
syn keyword sqlFunction dense_rank density percent_rank user_name
syn keyword sqlFunction user_id str stuff char_length nullif
syn keyword sqlFunction sortkey compare ts_index_statistics
syn keyword sqlFunction ts_table_statistics isdate isnumeric
syn keyword sqlFunction get_identity lookup newid uuidtostr
syn keyword sqlFunction strtouuid varexists
syn keyword sqlFunction abs argn avg bintohex bintostr
syn keyword sqlFunction byte_length byte_substr char_length
syn keyword sqlFunction compare count count_big datalength date
syn keyword sqlFunction date_format dateadd datediff datename
syn keyword sqlFunction datepart day dayname days debug_eng
syn keyword sqlFunction dense_rank density dialect difference
syn keyword sqlFunction dow estimate estimate_source evaluate
syn keyword sqlFunction experience_estimate explanation
syn keyword sqlFunction get_identity graphical_plan
syn keyword sqlFunction graphical_ulplan greater grouping
syn keyword sqlFunction hextobin hextoint hour hours identity
syn keyword sqlFunction ifnull index_estimate inttohex isdate
syn keyword sqlFunction isencrypted isnull isnumeric
syn keyword sqlFunction lang_message length lesser like_end
syn keyword sqlFunction like_start list long_ulplan lookup max
syn keyword sqlFunction min minute minutes month monthname
syn keyword sqlFunction months newid now nullif number
syn keyword sqlFunction percent_rank plan quarter rand rank
syn keyword sqlFunction regexp_compile regexp_compile_patindex
syn keyword sqlFunction remainder rewrite rowid second seconds
syn keyword sqlFunction short_ulplan similar sortkey soundex
syn keyword sqlFunction stddev stack_trace str string strtobin strtouuid stuff
syn keyword sqlFunction subpartition substr substring sum switchoffset sysdatetimeoffset
syn keyword sqlFunction textptr todate todatetimeoffset today totimestamp traceback transactsql
syn keyword sqlFunction ts_index_statistics ts_table_statistics
syn keyword sqlFunction tsequal ulplan user_id user_name utc_now
syn keyword sqlFunction uuidtostr varexists variance watcomsql
syn keyword sqlFunction weeks wsql_state year years ymd
" 9.0.1 functions
syn keyword sqlFunction acos asin atan atn2 cast ceiling convert cos cot
@@ -473,31 +474,36 @@ syn keyword sqlFunction ST_ToPoint
syn keyword sqlFunction ST_ToPolygon
syn keyword sqlFunction ST_ToSurface
" Array functions 16.x
syn keyword sqlFunction array array_agg array_max_cardinality trim_array
syn keyword sqlFunction error_line error_message error_procedure
syn keyword sqlFunction error_sqlcode error_sqlstate error_stack_trace
" keywords
syn keyword sqlKeyword absolute accent action active add address admin aes_decrypt
syn keyword sqlKeyword after aggregate algorithm allow_dup_row allow allowed alter
syn keyword sqlKeyword and angular ansi_substring any as append apply
syn keyword sqlKeyword arbiter asc ascii ase
syn keyword sqlKeyword assign at atan2 atomic attended
syn keyword sqlKeyword audit auditing authorization axis
syn keyword sqlKeyword absolute accent access account action active activate add address admin
syn keyword sqlKeyword aes_decrypt after aggregate algorithm allow_dup_row allow allowed alter
syn keyword sqlKeyword always and angular ansi_substring any as append apply
syn keyword sqlKeyword arbiter array asc ascii ase
syn keyword sqlKeyword assign at atan2 atomic attended
syn keyword sqlKeyword audit auditing authentication authorization axis
syn keyword sqlKeyword autoincrement autostop batch bcp before
syn keyword sqlKeyword between bit_and bit_length bit_or bit_substr bit_xor
syn keyword sqlKeyword blank blanks block
syn keyword sqlKeyword both bottom unbounded breaker bufferpool
syn keyword sqlKeyword build bulk by byte bytes cache calibrate calibration
syn keyword sqlKeyword cancel capability cascade cast
syn keyword sqlKeyword catalog ceil change changes char char_convert check checksum
syn keyword sqlKeyword class classes client cmp
syn keyword sqlKeyword cancel capability cardinality cascade cast
syn keyword sqlKeyword catalog catch ceil change changes char char_convert
syn keyword sqlKeyword check checkpointlog checksum class classes client cmp
syn keyword sqlKeyword cluster clustered collation
syn keyword sqlKeyword column columns
syn keyword sqlKeyword command comments committed comparisons
syn keyword sqlKeyword command comments committed commitid comparisons
syn keyword sqlKeyword compatible component compressed compute computes
syn keyword sqlKeyword concat configuration confirm conflict connection
syn keyword sqlKeyword console consolidate consolidated
syn keyword sqlKeyword constraint constraints content
syn keyword sqlKeyword constraint constraints content
syn keyword sqlKeyword convert coordinate coordinator copy count count_set_bits
syn keyword sqlKeyword crc createtime cross cube cume_dist
syn keyword sqlKeyword crc createtime critical cross cube cume_dist
syn keyword sqlKeyword current cursor data data database
syn keyword sqlKeyword current_timestamp current_user cycle
syn keyword sqlKeyword databases datatype dba dbfile
@@ -506,83 +512,86 @@ syn keyword sqlKeyword decrypted default defaults default_dbspace deferred
syn keyword sqlKeyword definer definition
syn keyword sqlKeyword delay deleting delimited dependencies desc
syn keyword sqlKeyword description deterministic directory
syn keyword sqlKeyword disable disabled disallow distinct do domain download duplicate
syn keyword sqlKeyword dsetpass dttm dynamic each earth editproc ejb
syn keyword sqlKeyword elimination ellipsoid
syn keyword sqlKeyword else elseif empty enable encapsulated encrypted end
syn keyword sqlKeyword encoding endif engine environment erase error escape escapes event
syn keyword sqlKeyword disable disabled disallow distinct disksandbox disk_sandbox
syn keyword sqlKeyword dn do domain download duplicate
syn keyword sqlKeyword dsetpass dttm dynamic each earth editproc effective ejb
syn keyword sqlKeyword elimination ellipsoid else elseif
syn keyword sqlKeyword email empty enable encapsulated encrypted encryption end
syn keyword sqlKeyword encoding endif engine environment erase error errors escape escapes event
syn keyword sqlKeyword event_parameter every exception exclude excluded exclusive exec
syn keyword sqlKeyword existing exists expanded expiry express exprtype extended_property
syn keyword sqlKeyword external externlogin factor failover false
syn keyword sqlKeyword fastfirstrow feature fieldproc file files filler
syn keyword sqlKeyword fillfactor final finish first first_keyword first_value
syn keyword sqlKeyword flattening
syn keyword sqlKeyword following force foreign format forxml forxml_sep fp frame
syn keyword sqlKeyword free freepage french fresh full function
syn keyword sqlKeyword following force foreign format forjson forxml forxml_sep fp frame
syn keyword sqlKeyword free freepage french fresh full function
syn keyword sqlKeyword gb generic get_bit go global grid
syn keyword sqlKeyword group handler hash having header hexadecimal
syn keyword sqlKeyword hidden high history hg hng hold holdlock host
syn keyword sqlKeyword hours http_body http_session_timeout id identified identity ignore
syn keyword sqlKeyword ignore_dup_key ignore_dup_row immediate
syn keyword sqlKeyword in inactiv inactive inactivity included increment incremental
syn keyword sqlKeyword index index_enabled index_lparen indexonly info
syn keyword sqlKeyword inline inner inout insensitive inserting
syn keyword sqlKeyword instead integrated
syn keyword sqlKeyword internal intersection into introduced inverse invoker
syn keyword sqlKeyword index index_enabled index_lparen indexonly info information
syn keyword sqlKeyword inheritance inline inner inout insensitive inserting
syn keyword sqlKeyword instead
syn keyword sqlKeyword internal intersection into introduced inverse invoker
syn keyword sqlKeyword iq is isolation
syn keyword sqlKeyword jar java java_location java_main_userid java_vm_options
syn keyword sqlKeyword jconnect jdk join kb key keep kerberos language last
syn keyword sqlKeyword jconnect jdk join json kb key keys keep language last
syn keyword sqlKeyword last_keyword last_value lateral latitude
syn keyword sqlKeyword ld left len linear lf ln level like
syn keyword sqlKeyword limit local location log
syn keyword sqlKeyword ld ldap left len linear lf ln level like
syn keyword sqlKeyword limit local location log
syn keyword sqlKeyword logging logical login logscan long longitude low lru ls
syn keyword sqlKeyword main major manual mark
syn keyword sqlKeyword match matched materialized max maxvalue maximum mb measure membership
syn keyword sqlKeyword merge metadata methods minimum minor minutes minvalue mirror
syn keyword sqlKeyword mode modify monitor move mru multiplex
syn keyword sqlKeyword name named namespaces national native natural new next nextval
syn keyword sqlKeyword main major manage manual mark master
syn keyword sqlKeyword match matched materialized max maxvalue maximum mb measure median membership
syn keyword sqlKeyword merge metadata methods migrate minimum minor minutes minvalue mirror
syn keyword sqlKeyword mode modify monitor move mru multiplex
syn keyword sqlKeyword name named namespaces national native natural new next nextval
syn keyword sqlKeyword ngram no noholdlock nolock nonclustered none normal not
syn keyword sqlKeyword notify null nullable_constant nulls
syn keyword sqlKeyword object oem_string of off offline offset olap
syn keyword sqlKeyword notify null nullable_constant nulls
syn keyword sqlKeyword object objects oem_string of off offline offset olap
syn keyword sqlKeyword old on online only openstring operator
syn keyword sqlKeyword optimization optimizer option
syn keyword sqlKeyword or order organization others out outer over
syn keyword sqlKeyword or order ordinality organization others out outer over owner
syn keyword sqlKeyword package packetsize padding page pages
syn keyword sqlKeyword paglock parallel parameter parent part
syn keyword sqlKeyword partition partitions partner password path pctfree
syn keyword sqlKeyword perms plan planar policy polygon populate port postfilter preceding
syn keyword sqlKeyword paglock parallel parameter parent part partial
syn keyword sqlKeyword partition partitions partner password path pctfree
syn keyword sqlKeyword permissions perms plan planar policy polygon populate port postfilter preceding
syn keyword sqlKeyword precisionprefetch prefilter prefix preserve preview previous
syn keyword sqlKeyword primary prior priority priqty private privileges procedure profile
syn keyword sqlKeyword primary prior priority priqty private privilege privileges procedure profile profiling
syn keyword sqlKeyword property_is_cumulative property_is_numeric public publication publish publisher
syn keyword sqlKeyword quiesce quote quotes range readclientfile readcommitted reader readfile readonly
syn keyword sqlKeyword readpast readuncommitted readwrite rebuild
syn keyword sqlKeyword received recompile recover recursive references
syn keyword sqlKeyword referencing regex regexp regexp_substr relative relocate
syn keyword sqlKeyword rename repeatable repeatableread replicate
syn keyword sqlKeyword rename repeatable repeatableread replicate replication
syn keyword sqlKeyword requests request_timeout required rereceive resend reserve reset
syn keyword sqlKeyword resizing resolve resource respect restart
syn keyword sqlKeyword restrict result retain
syn keyword sqlKeyword returns reverse right role
syn keyword sqlKeyword rollup root row row_number rowlock rows
syn keyword sqlKeyword restrict result retain retries
syn keyword sqlKeyword returns reverse right role roles
syn keyword sqlKeyword rollup root row row_number rowlock rows rowtype
syn keyword sqlKeyword sa_index_hash sa_internal_fk_verify sa_internal_termbreak
syn keyword sqlKeyword sa_order_preserving_hash sa_order_preserving_hash_big sa_order_preserving_hash_prefix
syn keyword sqlKeyword scale schedule schema scope scripted scroll seconds secqty security
syn keyword sqlKeyword sa_file_free_pages sa_internal_type_from_catalog sa_internal_valid_hash
syn keyword sqlKeyword sa_internal_validate_value sa_json_element
syn keyword sqlKeyword scale schedule schema scope script scripted scroll search seconds secqty security
syn keyword sqlKeyword semi send sensitive sent sequence serializable
syn keyword sqlKeyword server server session set_bit set_bits sets
syn keyword sqlKeyword server severity session set_bit set_bits sets
syn keyword sqlKeyword shapefile share side simple since site size skip
syn keyword sqlKeyword snap snapshot soapheader soap_header
syn keyword sqlKeyword snap snapshot soapheader soap_header
syn keyword sqlKeyword spatial split some sorted_data
syn keyword sqlKeyword sql sqlcode sqlid sqlflagger sqlstate sqrt square
syn keyword sqlKeyword stacker stale statement statistics status stddev_pop stddev_samp
syn keyword sqlKeyword stacker stale state statement statistics status stddev_pop stddev_samp
syn keyword sqlKeyword stemmer stogroup stoplist storage store
syn keyword sqlKeyword strip stripesizekb striping subpages subscribe subscription
syn keyword sqlKeyword subtransaction suser_id suser_name synchronization
syn keyword sqlKeyword subtransaction suser_id suser_name suspend synchronization
syn keyword sqlKeyword syntax_error table tables tablock
syn keyword sqlKeyword tablockx tb temp template temporary term then ties
syn keyword sqlKeyword timezone timeout to to_char to_nchar tolerance top
syn keyword sqlKeyword traced_plan tracing
syn keyword sqlKeyword transfer transform transaction transactional treat tries
syn keyword sqlKeyword true tsequal type tune uncommitted unconditionally
syn keyword sqlKeyword tablockx target tb temp template temporary term then ties
syn keyword sqlKeyword timezone timeout tls to to_char to_nchar tolerance top
syn keyword sqlKeyword trace traced_plan tracing
syn keyword sqlKeyword transfer transform transaction transactional treat tries
syn keyword sqlKeyword true try tsequal type tune uncommitted unconditionally
syn keyword sqlKeyword unenforced unicode unique unistr unit unknown unlimited unload
syn keyword sqlKeyword unpartition unquiesce updatetime updating updlock upgrade upload
syn keyword sqlKeyword upper usage use user
@@ -593,14 +602,14 @@ syn keyword sqlKeyword verify versions view virtual wait
syn keyword sqlKeyword warning wd web when where with with_auto
syn keyword sqlKeyword with_auto with_cube with_rollup without
syn keyword sqlKeyword with_lparen within word work workload write writefile
syn keyword sqlKeyword writeclientfile writer writers writeserver xlock
syn keyword sqlKeyword zeros zone
" XML
syn keyword sqlKeyword writeclientfile writer writers writeserver xlock
syn keyword sqlKeyword war xml zeros zone
" XML
syn keyword sqlKeyword raw auto elements explicit
" HTTP support
syn keyword sqlKeyword authorization secure url service next_soap_header
" HTTP 9.0.2 new procedure keywords
syn keyword sqlKeyword namespace certificate clientport proxy
syn keyword sqlKeyword namespace certificate certificates clientport proxy trusted_certificates_file
" OLAP support 9.0.0
syn keyword sqlKeyword covar_pop covar_samp corr regr_slope regr_intercept
syn keyword sqlKeyword regr_count regr_r2 regr_avgx regr_avgy
@@ -610,6 +619,10 @@ syn keyword sqlKeyword regr_sxx regr_syy regr_sxy
syn keyword sqlKeyword character dec options proc reference
syn keyword sqlKeyword subtrans tran syn keyword
" Login Mode Options
syn keyword sqlKeywordLogin standard integrated kerberos LDAPUA
syn keyword sqlKeywordLogin cloudadmin mixed
" Spatial Predicates
syn keyword sqlKeyword ST_Contains
syn keyword sqlKeyword ST_ContainsFilter
@@ -692,9 +705,9 @@ syn keyword sqlKeyword ST_LinearUnHash
syn keyword sqlOperator in any some all between exists
syn keyword sqlOperator like escape not is and or
syn keyword sqlOperator minus
syn keyword sqlOperator prior distinct
syn keyword sqlOperator prior distinct unnest
syn keyword sqlStatement allocate alter attach backup begin break call case
syn keyword sqlStatement allocate alter attach backup begin break call case catch
syn keyword sqlStatement checkpoint clear close comment commit configure connect
syn keyword sqlStatement continue create deallocate declare delete describe
syn keyword sqlStatement detach disconnect drop except execute exit explain fetch
@@ -705,7 +718,7 @@ syn keyword sqlStatement prepare print put raiserror read readtext refresh relea
syn keyword sqlStatement remote remove reorganize resignal restore resume
syn keyword sqlStatement return revoke rollback save savepoint select
syn keyword sqlStatement set setuser signal start stop synchronize
syn keyword sqlStatement system trigger truncate union unload update
syn keyword sqlStatement system trigger truncate try union unload update
syn keyword sqlStatement validate waitfor whenever while window writetext
@@ -715,7 +728,7 @@ syn keyword sqlType float int integer numeric
syn keyword sqlType smallint tinyint real
syn keyword sqlType money smallmoney
syn keyword sqlType date datetime datetimeoffset smalldatetime time timestamp
syn keyword sqlType binary image varbinary uniqueidentifier
syn keyword sqlType binary image varray varbinary uniqueidentifier
syn keyword sqlType unsigned
" Spatial types
syn keyword sqlType st_geometry st_point st_curve st_surface st_geomcollection
@@ -736,8 +749,10 @@ syn keyword sqlOption Ansi_update_constraints
syn keyword sqlOption Ansinull
syn keyword sqlOption Auditing
syn keyword sqlOption Auditing_options
syn keyword sqlOption Auto_commit_on_create_local_temp_index
syn keyword sqlOption Background_priority
syn keyword sqlOption Blocking
syn keyword sqlOption Blocking_others_timeout
syn keyword sqlOption Blocking_timeout
syn keyword sqlOption Chained
syn keyword sqlOption Checkpoint_time
@@ -754,6 +769,7 @@ syn keyword sqlOption Cooperative_commits
syn keyword sqlOption Database_authentication
syn keyword sqlOption Date_format
syn keyword sqlOption Date_order
syn keyword sqlOption db_publisher
syn keyword sqlOption Debug_messages
syn keyword sqlOption Dedicated_task
syn keyword sqlOption Default_dbspace
@@ -764,14 +780,18 @@ syn keyword sqlOption Divide_by_zero_error
syn keyword sqlOption Escape_character
syn keyword sqlOption Exclude_operators
syn keyword sqlOption Extended_join_syntax
syn keyword sqlOption Extern_login_credentials
syn keyword sqlOption Fire_triggers
syn keyword sqlOption First_day_of_week
syn keyword sqlOption For_xml_null_treatment
syn keyword sqlOption Force_view_creation
syn keyword sqlOption Global_database_id
syn keyword sqlOption Http_session_timeout
syn keyword sqlOption Http_connection_pool_basesize
syn keyword sqlOption Http_connection_pool_timeout
syn keyword sqlOption Integrated_server_name
syn keyword sqlOption Isolation_level
syn keyword sqlOption Java_class_path
syn keyword sqlOption Java_location
syn keyword sqlOption Java_main_userid
syn keyword sqlOption Java_vm_options
@@ -790,6 +810,7 @@ syn keyword sqlOption Max_recursive_iterations
syn keyword sqlOption Max_statement_count
syn keyword sqlOption Max_temp_space
syn keyword sqlOption Min_password_length
syn keyword sqlOption Min_role_admins
syn keyword sqlOption Nearest_century
syn keyword sqlOption Non_keywords
syn keyword sqlOption Odbc_describe_binary_as_varbinary
@@ -807,6 +828,7 @@ syn keyword sqlOption Prefetch
syn keyword sqlOption Preserve_source_format
syn keyword sqlOption Prevent_article_pkey_update
syn keyword sqlOption Priority
syn keyword sqlOption Progress_messages
syn keyword sqlOption Query_mem_timeout
syn keyword sqlOption Quoted_identifier
syn keyword sqlOption Read_past_deleted
@@ -814,6 +836,7 @@ syn keyword sqlOption Recovery_time
syn keyword sqlOption Remote_idle_timeout
syn keyword sqlOption Replicate_all
syn keyword sqlOption Request_timeout
syn keyword sqlOption Reserved_keywords
syn keyword sqlOption Return_date_time_as_string
syn keyword sqlOption Rollback_on_deadlock
syn keyword sqlOption Row_counts
@@ -823,6 +846,12 @@ syn keyword sqlOption Sort_collation
syn keyword sqlOption Sql_flagger_error_level
syn keyword sqlOption Sql_flagger_warning_level
syn keyword sqlOption String_rtruncation
syn keyword sqlOption st_geometry_asbinary_format
syn keyword sqlOption st_geometry_astext_format
syn keyword sqlOption st_geometry_asxml_format
syn keyword sqlOption st_geometry_describe_type
syn keyword sqlOption st_geometry_interpolation
syn keyword sqlOption st_geometry_on_invalid
syn keyword sqlOption Subsume_row_locks
syn keyword sqlOption Suppress_tds_debugging
syn keyword sqlOption Synchronize_mirror_on_commit
@@ -831,6 +860,7 @@ syn keyword sqlOption Temp_space_limit_check
syn keyword sqlOption Time_format
syn keyword sqlOption Time_zone_adjustment
syn keyword sqlOption Timestamp_format
syn keyword sqlOption Timestamp_with_time_zone_format
syn keyword sqlOption Truncate_timestamp_values
syn keyword sqlOption Tsql_outer_joins
syn keyword sqlOption Tsql_variables
@@ -842,6 +872,7 @@ syn keyword sqlOption Uuid_has_hyphens
syn keyword sqlOption Verify_password_function
syn keyword sqlOption Wait_for_commit
syn keyword sqlOption Webservice_namespace_host
syn keyword sqlOption Webservice_sessionid_name
" Strings and characters:
syn region sqlString start=+"+ end=+"+ contains=@Spell
@@ -859,32 +890,18 @@ syn sync ccomment sqlComment
syn sync ccomment sqlDashComment
syn sync ccomment sqlSlashComment
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_sql_syn_inits")
if version < 508
let did_sql_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi link <args>
endif
HiLink sqlDashComment Comment
HiLink sqlSlashComment Comment
HiLink sqlMultiComment Comment
HiLink sqlNumber Number
HiLink sqlOperator Operator
HiLink sqlSpecial Special
HiLink sqlKeyword Keyword
HiLink sqlStatement Statement
HiLink sqlString String
HiLink sqlType Type
HiLink sqlFunction Function
HiLink sqlOption PreProc
delcommand HiLink
endif
hi def link sqlDashComment Comment
hi def link sqlSlashComment Comment
hi def link sqlMultiComment Comment
hi def link sqlNumber Number
hi def link sqlOperator Operator
hi def link sqlSpecial Special
hi def link sqlKeyword Keyword
hi def link sqlStatement Statement
hi def link sqlString String
hi def link sqlType Type
hi def link sqlFunction Function
hi def link sqlOption PreProc
let b:current_syntax = "sqlanywhere"

View File

@@ -11,7 +11,7 @@ so you would normally compile it with one of the following:
cc -D_IRIX ccfilter.c -o ccfilter
cc -D_SOLARIS ccfilter.c -o ccfilter
cc -D_HPUX ccfilter.c -o ccfilter
You can then copy ccfilter to it's target destination (i.e: /usr/local/bin).
You can then copy ccfilter to its target destination (i.e: /usr/local/bin).
The man page ccfilter.1 has to be copied to somewhere in your MANPATH,
under a man1 directory (i.e: /usr/local/man/man1).

View File

@@ -7,12 +7,12 @@
@rem Arguments - +$(CurLine) $(ItemPath)
@rem Init Dir - Empty
@rem
@rem Coutesy of Brian Sturk
@rem Courtesy of Brian Sturk
@rem
@rem --remote-silent +%1 is a command +954, move ahead 954 lines
@rem --remote-silent %2 full path to file
@rem In Vim
@rem :h --remote-silent for mor details
@rem :h --remote-silent for more details
@rem
@rem --servername VS_NET
@rem This will create a new instance of vim called VS_NET. So if you

View File

@@ -18,6 +18,7 @@ all: tutor.utf-8 \
tutor.it.utf-8 \
tutor.ja.sjis tutor.ja.euc \
tutor.ko.euc \
tutor.nl \
tutor.no.utf-8 \
tutor.nb \
tutor.nb.utf-8 \
@@ -73,6 +74,9 @@ tutor.ja.euc: tutor.ja.utf-8
tutor.ko.euc: tutor.ko.utf-8
iconv -f UTF-8 -t EUC-KR tutor.ko.utf-8 > tutor.ko.euc
tutor.nl: tutor.nl.utf-8
iconv -f UTF-8 -t ISO-8859-1 tutor.nl.utf-8 > tutor.nl
tutor.no.utf-8: tutor.no
iconv -f ISO-8859-1 -t UTF-8 tutor.no > tutor.no.utf-8

View File

@@ -645,7 +645,7 @@ RIMARKO:
3. Nun tajpu: :w TESTO (kie TESTO estas la elektita dosiernomo)
4. Tio konservas la tutan dosieron (instruilon de Vim) kun la nomo TESTO.
Por kontroli tion, tajpu :!dir a<> !ls denove por vidigi vian
Por kontroli tion, tajpu :!dir a<> :!ls denove por vidigi vian
dosierujon.
RIMARKO: Se vi volus eliri el Vim kaj restartigi <20>in denove per vim TESTO,

950
runtime/tutor/tutor.nl Normal file
View File

@@ -0,0 +1,950 @@
==========================================================================
= W e l k o m b i j d e V I M l e s s e n - Versie 1.7 =
==========================================================================
Vim is een krachtige editor met veel commando's, te veel om uit te leggen
in lessen zoals deze. Deze lessen zijn bedoeld om voldoende commando's te
behandelen om je in staat te stellen met Vim te werken als een editor voor
algemeen gebruik.
Deze lessen zullen 25 tot 30 minuten in beslag nemen, afhankelijk van de
tijd die wordt besteed aan het uitproberen van de commando's.
LET OP:
Door de commando's in deze lessen verandert de tekst. Maak een kopie van
dit bestand om mee te oefenen (als je "vimtutor" uitvoerde, is dit al een
kopie).
Deze lessen zijn bedoeld om al doende te leren. Dat betekent dat je de
commando's moet uitvoeren om ze goed te leren kennen. Als je de tekst
alleen maar doorleest, zal je de commando's niet leren!
Zorg ervoor dat de <Caps Lock> toets NIET is ingedrukt en druk vaak genoeg
op de j-toets om de cursor zo te bewegen dat les 1.1 volledig op het
scherm staat.
LET OP: In deze lessen worden omwille van de duidelijkheid vaak spaties
gebruikt binnen een commando (bv. "40 G" of "operator [getal] beweging").
Tik deze spaties echter NIET. Ze verstoren de werking.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 1.1: VERPLAATS DE CURSOR
** De cursor wordt verplaatst met de toetsen h, j, k, l zoals aangegeven. **
^
k Hint: De h is de meest linkse en beweegt naar links.
< h l > De l is de meest rechtse en beweegt naar rechts.
j De j lijkt op een pijl naar beneden.
v
1. Beweeg de cursor over het scherm om er vertrouwd mee te raken.
2. Druk de omlaag-toets (j) tot hij repeteert.
Nu weet je hoe je de volgende les bereikt.
3. Gebruik de omlaag-toets om naar les 1.2 te gaan.
OPMERKING: Als je twijfelt aan wat je tikte, druk <ESC> om in de opdracht-
modus te komen. Tik daarna het commando dat bedoeld wordt.
OPMERKING: Pijltjes-toetsen werken ook. Met de hjkl-toetsen kan je sneller
rondbewegen, als je er eenmaal aan gewend bent. Echt waar!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 1.2: VIM AFSLUITEN
!! LET OP: Lees deze les goed door voordat je iets uitvoert!!
1. Druk de <ESC> toets (om zeker in de opdrachtmodus te zitten).
2. Tik :q! <ENTER>
Hiermee wordt de editor afgesloten. Alle veranderingen gaan VERLOREN.
3. Nu zie je de shell-prompt. Tik het commando waarmee je deze lessen
hebt opgeroepen. Dat is normaal gesproken: vimtutor <ENTER>
4. Als je deze stappen goed hebt doorgelezen, voer dan de stappen 1 tot 3
uit om de editor te verlaten en weer op te starten.
LET OP: :q! <ENTER> verwerpt alle veranderingen die je aanbracht. Een paar
lessen verder zal je leren hoe veranderingen worden opgeslagen in
een bestand.
5. Beweeg de cursor omlaag naar les 1.3.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 1.3: TEKST BEWERKEN - WISSEN
** Tik x om het teken onder de cursor te wissen. **
1. Ga met de cursor naar de regel verderop met --->.
2. Zet de cursor op een teken dat moet worden gewist om een fout te
herstellen.
3. Tik x om het ongewenste teken te wissen.
4. Herhaal deze stappen tot de regel goed is.
---> Vi kkent eenn opdracccchtmodus en een invooegmmmmodus.
5. Nu de regel gecorrigeerd is kan je naar les 1.4 gaan.
LET OP: Probeer de lessen niet uit je hoofd te leren. Leer al doende.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 1.4: TEKST BEWERKEN - INVOEGEN
** Tik i ('insert') om tekst in te voegen. **
1. Ga met de cursor naar de eerste regel verderop met --->.
2. Maak de eerste regel gelijk aan de tweede. Zet daarvoor de cursor op
de plaats waar tekst moet worden ingevoegd.
3. Tik i en daarna de nodige aanvullingen.
4. Tik <ESC> na elke herstelde fout om terug te keren in de opdrachtmodus.
Herhaal de stappen 2 tot 4 om de zin te verbeteren.
---> Aan regel ontekt wat .
---> Aan deze regel ontbreekt wat tekst.
5. Ga naar les 1.5 als je gewend bent aan het invoegen van tekst.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 1.5: TEKST BEWERKEN - TOEVOEGEN
** Tik A ('append') om tekst toe te voegen. **
1. Ga met de cursor naar de eerste regel verderop met --->.
Het maakt niet uit waar de cursor in deze regel staat.
2. Tik hoofdletter A en tik de nodige aanvullingen.
3. Tik <ESC> nadat de tekst is aangevuld. Zo keer je terug in de
opdrachtmodus.
4. Ga naar de tweede regel verderop met ---> en herhaal stap 2 en 3
om deze zin te corrigeren.
---> Er ontbreekt wat tekst aan de
Er ontbreekt wat tekst aan deze regel.
---> Hier ontbreekt ook w
Hier ontbreekt ook wat tekst.
5. Ga naar les 1.6 als je vertrouwd bent geraakt aan het toevoegen
van tekst.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 1.6: EEN BESTAND EDITTEN
** Gebruik :wq om een bestand op te slaan en de editor te verlaten. **
!! LET OP: Lees deze les helemaal door voordat je een van de volgende
stappen uitvoert!!
1. Verlaat deze les zoals je in les 1.2 deed: :q!
Of gebruik een andere terminal als je daar de beschikking over hebt. Doe
daar het volgende.
2. Tik het volgende commando na de shell-prompt: vim les <ENTER>
'vim' (vaak ook 'vi') is het commando om de Vim-editor te starten,
'les' is de naam van het bestand, dat je gaat bewerken. Kies een andere
naam als er al een bestand 'les' bestaat, dat niet veranderd mag worden.
3. Voeg naar eigen keus tekst toe, zoals je geleerd hebt in eerdere lessen.
4. Sla het bestand met de wijzigingen op en verlaat Vim met :wq <ENTER>
5. Herstart vimtutor als je deze bij stap 1 hebt verlaten en ga verder met
de volgende samenvatting.
6. Voer deze stappen uit nadat je ze hebt gelezen en begrepen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SAMENVATTING Les 1
1. De cursor wordt bewogen met de pijltjestoetsen of de hjkl-toetsen.
h (links) j (omlaag) k (omhoog) l (rechts)
2. Start Vim van de shell-prompt. Tik: vim BESTANDSNAAM <ENTER>
3. Sluit Vim af met <ESC> :q! <ENTER> om de veranderingen weg te gooien.
OF tik <ESC> :wq <ENTER> om de veranderingen te bewaren.
4. Wis het teken onder de cursor met: x
5. Invoegen of toevoegen van tekst, tik:
i en daarna de in te voegen tekst <ESC> voeg in vanaf de cursor
A en daarna de toe te voegen tekst <ESC> voeg toe achter de regel
OPMERKING: Met <ESC> kom je terug in opdrachtmodus en wordt een ongewenst
of gedeeltelijk uitgevoerd commando afgebroken.
Ga nu verder met les 2.1.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 2.1: WIS-COMMANDO'S
** Tik dw ('delete word') om een woord te wissen. **
1. Druk op <ESC> om zeker in de opdrachtmodus te zijn.
2. Ga naar de regel hieronder, die met ---> begint.
3. Ga met de cursor naar het begin van een woord dat moet worden gewist.
4. Met het tikken van dw verdwijnt het woord.
OPMERKING: De letter d verschijnt op de laatste regel van het scherm
zodra je hem tikt. Vim is aan het wachten tot je de w tikt.
Als je een ander teken dan d ziet, heb je iets verkeerds
getikt. Druk op <ESC> en begin opnieuw.
NOG EEN OPMERKING: Dit werkt alleen als de optie 'showcmd' is ingeschakeld.
Dat gebeurt met :set showcmd <ENTER>
---> Er zijn een het paar ggg woorden, die niet in deze len zin thuishoren.
5. Herhaal de stappen 3 en 4 tot de zin goed is en ga naar les 2.2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 2.2: MEER WIS-COMMANDO'S
** Tik d$ om te wissen tot het einde van de regel. **
1. Druk op <ESC> om zeker in de opdrachtmodus te zijn.
2. Ga naar de regel hieronder, die met ---> begint.
3. Ga met de cursor naar het einde van de correcte regel (NA de eerste . ).
4. Tik d$ om te wissen tot het einde van de regel.
---> Iemand heeft het einde van deze regel dubbel getikt. dubbel getikt.
5. Ga naar les 2.3 voor uitleg.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 2.3: OVER OPERATOREN EN BEWEGINGEN
Veel commando's die de tekst veranderen, bestaan uit een operator en een
beweging. De samenstelling van een wis-commando met de operator d is:
d beweging
Daarbij is:
d - de wis-operator
beweging - het bereik waarop de operator werkt (zie het lijstje hieronder)
Een korte lijst van bewegingen vanaf de cursor:
w - tot het begin van het volgende woord, ZONDER het eerste teken daarvan.
e - tot het einde van het huidige woord, INCLUSIEF het laatste teken.
$ - tot het einde van de regel, INCLUSIEF het laatste teken.
Het tikken van de wist tekst vanaf de cursor tot het eind van het woord.
OPMERKING: Het intikken van alleen maar de beweging, zonder een operator,
in de opdrachtmodus beweegt de cursor (respectievelijk naar het
volgende woord, naar het eind van het huidige woord en naar het
eind van de regel).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 2.4: GEBRUIK VAN EEN TELLER BIJ EEN BEWEGING
** Een getal voor een beweging herhaalt het zoveel keer. **
1. Ga naar de regel hieronder, die met ---> begint.
2. Tik 2w zodat de cursor twee woorden vooruit gaat.
3. Tik 3e zodat de cursor naar het einde van het derde woord gaat.
4. Tik 0 (nul) om naar het begin van de regel te gaan.
5. Herhaal de stappen 2 en 3 met andere getallen.
---> Dit is een regel met woorden waarin je heen en weer kan bewegen.
6. Ga verder met les 2.5.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 2.5: GEBRUIK EEN TELLER OM MEER TE WISSEN
** Een getal met een operator zorgt dat deze zoveel keer wordt herhaald. **
Bij de combinatie van wis-operator en beweging kan je voor de beweging een
teller zetten om meer te wissen:
d [teller] beweging
1. Ga naar het eerste woord in HOOFDLETTERS in de regel na --->.
2. Met d2w worden twee woorden (in dit voorbeeld in hoofdletters) gewist.
3. Herhaal de stappen 1 en 2 met verschillende tellers om de verschillende
woorden in hoofdletters met <20><>n commando te wissen.
---> deze ABC DE regel FGHI JK LMN OP is QZ RS ontdaan van rommel.
OPMERKING: De teller kan ook aan het begin staan: d2w en 2dw werken allebei.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 2.6: BEWERKING VAN HELE REGELS
** Tik dd om een hele regel te wissen. **
Omdat het wissen van een hele regel vaak voorkomt, besloten de ontwerpers
van Vi dat met het tikken van dd simpelweg een hele regel gewist wordt.
1. Ga met de cursor naar de tweede regel van de zinnetjes hieronder.
2. Tik dd om de regel te wissen.
3. Ga nu naar de vierde regel.
4. Tik 2dd om twee regels te wissen.
---> 1) Rozen zijn rood.
---> 2) Modder is leuk.
---> 3) Viooltjes zijn blauw.
---> 4) Ik heb een auto.
---> 5) De klok slaat de tijd.
---> 6) Suiker is zoet.
---> 7) En dat ben jij ook.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 2.7: HET COMMANDO HERSTEL
** u maakt het laatste commando ongedaan, U herstelt een hele regel. **
1. Ga met de cursor naar de regel hieronder met ---> en zet hem
op de eerste fout.
2. Tik x om het eerste ongewenste teken te wissen.
3. Tik nu u en maak daarmee het vorige commando ongedaan.
4. Herstel nu alle fouten in de regel met het x commando.
5. Tik een hoofdletter U om de regel in z'n oorspronkelijke staat terug
te brengen.
6. Tik nu een paar keer u en herstel daarmee de U en eerdere commando's.
7. Tik nu een paar keer CTRL-R (Ctrl-toets ingedrukt houden en R tikken) en
voer daarmee de commando's opnieuw uit: 'redo' oftewel 'undo de undo's'.
---> Heerstel de fouten inn deeze regel en brenng ze weer terugg met undo.
8. Dit zijn heel nuttige commando's. Ga verder met samenvatting van les 2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SAMENVATTING Les 2
1. Wis van de cursor tot het volgende woord met dw
2. Wis van de cursor tot het eind van de regel met d$
3. Wis de hele regel met dd
4. Herhaal een beweging door er een getal voor te zetten: 2w
5. De opbouw van een wijzigingscommando is:
operator [getal] beweging
daarbij is:
operator - wat er moet gebeuren, bijvoorbeeld d om te wissen
[getal] - een (niet-verplichte) teller om 'beweging' te herhalen
beweging - een beweging door de te wijzigen tekst zoals w (woord)
of $ (tot het einde van de regel) enz.
6. Ga naar het begin van de regel met nul: 0
7. Undo de voorgaande actie met u (kleine letter)
Undo alle veranderingen in een regel met U (hoofdletter)
Undo de undo's met CTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 3.1: HET COMMANDO PLAK
** Tik p ('put') en plak daarmee zojuist gewiste tekst na te cursor. **
1. Ga met de cursor naar de eerste regel met ---> hierna.
2. Wis de regel met dd en bewaar hem zodoende in een Vim-register.
3. Ga naar de c-regel, waar de gewiste regel ONDER moet komen.
4. Tik p om de regel terug te zetten onder de regel met de cursor.
5. Herhaal de stappen 2 tot 4 om de regels in de goede volgorde te zetten.
---> d) Krijg je het ook onder de knie?
---> b) Viooltjes zijn blauw,
---> c) Begrip is te leren,
---> a) Rozen zijn rood,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 3.2: HET COMMANDO VERVANG
** Tik rx ('replace') om het teken onder de cursor te vervangen door x. **
1. Ga naar de eerste regel hieronder met --->.
2. Zet de cursor op de eerste fout.
3. Tik r en dan het teken dat er hoort te staan.
4. Herhaal de stappen 2 en 3 tot de eerste regel gelijk is aan de tweede.
---> Bij het tokken van dezf hegel heeft iemamd verklerde letters getikt.
---> Bij het tikken van deze regel heeft iemand verkeerde letters getikt.
5. Ga nu naar les 3.3.
LET OP: Door het te doen, leer je beter dan door het uit je hoofd te leren.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 3.3: HET COMMANDO VERANDER
** Tik ce om te veranderen tot het einde van een woord. **
1. Ga met de cursor naar de eerste regel hieronder met --->.
2. Zet de cursor op de u van ruch.
3. Tik ce en de juiste letters (in dit geval "egel").
4. Druk <ESC> en ga naar het volgende teken dat moet worden veranderd.
5. Herhaal de stappen 3 en 4 tot de eerste regel gelijk is aan de tweede.
---> In deze ruch staan een paar weedrim die veranderd moud worden.
---> In deze regel staan een paar woorden die veranderd moeten worden.
LET OP: Met ce wordt (het laatste deel van) een woord gewist en kom je
in de invoegmodus.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 3.4: MEER VERANDERINGEN MET c
1. Het commando verander ('change') werkt op dezelfde manier als wis. De
opbouw is:
c [teller] beweging
2. De bewegingen zijn hetzelfde, zoals w (woord) en $ (einde regel).
3. Ga naar de eerste regel hieronder met --->.
4. Zet de cursor op de eerste fout.
5. Tik c$ en tik de rest van de regel zodat hij gelijk wordt aan de
tweede en sluit af met <ESC>.
---> Het einde van deze regel moet precies zo worden als de tweede regel.
---> Het einde van deze regel moet gecorrigeerd worden met het commando c$.
OPMERKING: Je kan de toets <BACKSPACE> gebruiken om tikfouten te herstellen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SAMENVATTING Les 3
1. Tik p om tekst terug te plakken, die zojuist is gewist. Dit zet de
gewiste tekst ACHTER de cursor (als een hele regel is gewist komt deze
op de regel ONDER de cursor.
2. Het teken waarop de cursor staat wordt vervangen met r gevolgd door
het teken dat je daar wilt hebben.
3. Het commando 'verander' stelt je in staat om tekst te veranderen vanaf
de cursor tot waar de 'beweging' je brengt. Dat wil zeggen: tik ce om
te veranderen vanaf de cursor tot het einde van het woord, c$ om te
veranderen tot het einde van de regel.
4. De opbouw van het commando verander is:
c [teller] beweging
Ga nu naar de volgende les.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 4.1: PLAATS VAN DE CURSOR EN STATUS VAN HET BESTAND
** CTRL-G laat zien waar (regelnummer) je je bevindt en wat de status van
het bestand is. Met [nummer] G ga je naar een bepaalde regel. **
LET OP: Lees de hele les voordat je een stap uitvoert!!
1. Hou de Ctrl-toets ingedrukt en tik g . Dit noemen we CTRL-G.
Onderaan de pagina verschijnt een boodschap met de bestandsnaam en de
positie in het bestand. Onthou het regelnummer voor stap 3.
OPMERKING: Als de optie 'ruler' aan staat, wordt de positie van de cursor
(regelnummer, kolom) steeds in de rechter-onderhoek van het
scherm vermeld. In dit geval vermeldt CTRL-G geen regelnummer.
CTRL-G geeft ook de status aan, namelijk of de tekst veranderd
is ('modified') sinds het de laatste keer is opgeslagen.
2. Tik hoofdletter G om naar het einde van het bestand te gaan.
Tik gg om naar het begin van het bestand te gaan.
3. Tik het regelnummer waar je bij stap 1 was en daarna G . Dit brengt je
terug naar de regel waar je was toen je de eerste keer CTRL-G tikte.
4. Voer de stappen 1 tot 3 uit als je dit goed hebt gelezen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 4.2: HET COMMANDO ZOEKEN
** Met /ZOEK wordt naar de zoekterm (<28><>n of meer woorden) gezocht. **
1. Tik in de opdrachtmodus het teken / . Je ziet dat het met de cursor
aan de onderkant van het scherm verschijnt, zoals bij het :-commando.
2. Tik nu 'ffouut' <ENTER>. Dit is het woord waarnaar gezocht wordt.
3. Tik n om verder te zoeken met dezelfde zoekterm.
Zoek met N met dezelfde zoekterm in de tegenovergestelde richting.
4. Zoek in achterwaartse richting met ?zoekterm in plaats van / .
5. Keer terug naar de vorige hit met CTRL-O (hou Ctrl-toets ingedrukt en
tik letter o). Herhaal om verder terug te gaan. CTRL-I gaat vooruit.
---> "ffouut" is niet de juiste spelling van fout, ffouut is een fout.
OPMERKING: Als zoeken het einde van het bestand bereikt, wordt vanaf het
begin doorgezocht, tenzij de optie 'wrapscan' is uitgeschakeld.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 4.3: GA NAAR CORRESPONDERENDE HAAKJES
** Tik % om naar corresponderende ), ] of } te gaan. **
1. Zet de cursor op een (, [ of { in de regel hieronder met --->.
2. Tik dan het teken % .
3. De cursor gaan naar het overeenkomstige haakje.
4. Met opnieuw % gaat de cursor terug naar het eerste haakje.
5. Plaats de cursor op een ander haakje en bekijk wat % doet.
---> Dit ( is een testregel met ('s, ['s ] en {'s } erin. ))
OPMERKING: Dit is nuttig bij het debuggen van een programma waarin haakjes
niet corresponderen. Met de optie 'showmatch' wordt ook
aangegeven of haakjes corresponderen, maar de cursor wordt niet
(blijvend) verplaatst.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 4.4: HET VERVANG COMMANDO
** Tik :s/oud/nieuw/g om 'oud' door 'nieuw' te vervangen. **
1. Ga met de cursor naar de regel hieronder met --->.
2. Tik :s/dee/de <ENTER>. Zoals je ziet, vervangt ('substitute') dit
commando alleen de eerste "dee" in de regel.
3. Tik nu :s/dee/de/g . Met de g-vlag ('global') wordt elke "dee" in de
regel vervangen.
---> dee beste tijd om dee bloemen te zien is in dee lente.
4. Om in (een deel van) een tekst elk 'oud' te vervangen door 'nieuw':
tik :#,#s/oud/nieuw/g waar #,# de regelnummers zijn die het gebied
begrenzen waarin wordt vervangen.
tik :%s/oud/nieuw/g om alles te vervangen in het hele bestand.
tik :%s/oud/nieuw/gc om elke 'oud' in het hele bestand te vinden
en te vragen of er vervangen moet worden.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SAMENVATTING Les 4
1. CTRL-G laat positie in het bestand zien en de status van het bestand.
G verplaatst je naar het einde van het bestand.
nummer G verplaatst je naar regelnummer.
gg verplaatst je naar de eerste regel.
2. Met / en een zoekterm wordt VOORWAARTS gezocht naar de term.
Met ? en een zoekterm wordt ACHTERWAARTS gezocht naar de term.
Tik n na een zoekopdracht om de volgende hit te vinden,
of tik N om in de andere richting te zoeken.
CTRL-O brengt je naar eerdere hit, CTRL-I naar nieuwere.
3. Tik % terwijl de cursor op een haakje ([{}]) staat, om naar het
corresponderende haakje te gaan.
4. :s/oud/nieuw vervangt het eerste 'oud' in een regel door 'nieuw'.
:s/oud/nieuw/g vervangt elk 'oud' in een regel door 'nieuw'.
:#,#s/oud/nieuw/g vervangt elk 'oud' door 'nieuw' tussen de regelnummers.
:%s/oud/nieuw/g vervangt elk 'oud' door 'nieuw' in het hele bestand.
Voeg c toe (:%s/oud/nieuw/gc) om elke keer om bevestiging
('confirmation') te vragen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 5.1: HOE EEN EXTERN COMMANDO WORDT UITGEVOERD
** Tik :! gevolgd door een extern commando om dat uit te voeren. **
1. Tik het commando : waarmee de cursor op de onderste regel van het
scherm komt te staan. Nu kan je een opdracht geven via de commando-regel.
2. Tik een ! (uitroepteken). Dit stelt je in staat om elk shell-commando
uit te voeren.
3. Tik bijvoorbeeld ls na het uitroepteken en daarna <ENTER>. Hiermee
krijg je de inhoud van je map te zien, net alsof je de opdracht gaf
vanaf de shell-prompt. Probeer :!dir als het niet werkt.
OPMERKING: Elk extern commando kan op deze manier uitgevoerd worden, ook
met argumenten.
OPMERKING: Alle commando's na : moeten worden afgesloten met <ENTER>.
Vanaf nu zullen we dat niet meer altijd vermelden.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 5.2: MEER OVER HET OPSLAAN VAN BESTANDEN
** Tik :w BESTANDSNAAM om de tekst m<>t veranderingen op te slaan. **
1. Tik :!dir of :!ls om de inhoud van je map te tonen. Je weet
inmiddels dat je daarna een <ENTER> moet tikken.
2. Kies een bestandsnaam die nog niet bestaat, bijvoorbeeld TEST.
3. Tik nu: :w TEST (als je de naam TEST hebt gekozen).
4. Hierdoor wordt het hele bestand (de VIM lessen) opgeslagen onder de
naam TEST. Tik weer :!dir of :!ls om dit te controleren.
OPMERKING: Als je Vim zou verlaten en opnieuw zou starten met vim TEST is
het bestand een exacte kopie van de lessen, zoals je ze opsloeg.
5. Wis het bestand nu met de opdracht (MS-DOS) :!del TEST
of (Unix) :!rm TEST
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 5.3: EEN DEEL VAN DE TEKST OPSLAAN
** Sla een deel van het bestand op met v beweging :w BESTANDSNAAM **
1. Ga naar deze regel.
2. Tik v en ga met de cursor naar stap 5 hieronder. Je ziet dat de
tekst oplicht.
3. Tik : . Onderaan het scherm zal :'<,'> verschijnen.
4. Tik w TEST , waar TEST een bestandsnaam is, die nog niet bestaat.
Controleer dat je :'<,'>w TEST ziet staan voordat je <ENTER> tikt.
5. Vim slaat nu de geselecteerde regels op in het bestand TEST. Met
:!dir of !ls kan je dat zien. Wis het nog niet! We zullen het in
de volgende les gebruiken.
OPMERKING: Het tikken van v zet zichtbare modus ('visual selection') aan.
Je kan de cursor rondbewegen om de selectie groter of kleiner
te maken. Vervolgens kan je een commando gebruiken om iets met
de tekst te doen. Met d bijvoorbeeld wis je de tekst.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 5.4: OPHALEN EN SAMENVOEGEN VAN BESTANDEN
** Tik :r BESTANDSNAAM om de inhoud van een bestand in te voegen. **
1. Zet de cursor precies boven deze regel.
OPMERKING: Na het uitvoeren van stap 2 zie je tekst van les 5.3. Scrol
daarna naar beneden om deze les weer te zien.
2. Haal nu het bestand TEST op met het commando :r TEST .
Het bestand dat je ophaalt komt onder de regel waarin de cursor staat.
3. Controleer dat er een bestand is opgehaald. Ga met de cursor omhoog.
Dan zie je de tekst van les 5.3 dubbel, het origineel en de versie uit
het bestand.
OPMERKING: Je kan ook de uitvoer van een extern commando inlezen. Om een
voorbeeld te geven: :r !ls leest de uitvoer van het commando
ls en zet dat onder de regel waarin de cursor staat.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SAMENVATTING Les 5
1. :!COMMANDO voert een extern commando uit.
Enkele bruikbare voorbeelden zijn:
(MS-DOS) (Unix)
:!dir :!ls - laat de inhoud van een map zien
:!del BESTAND :!rm BESTAND - wist bestand BESTAND
2. :w BESTANDSNAAM schrijft het huidige Vim-bestand naar disk met de
naam BESTANDSNAAM.
3. v beweging :w BESTANDSNAAM laat je in zichtbare modus een fragment
selecteren, dat wordt opgeslagen in het bestand BESTANDSNAAM.
4. :r BESTANDSNAAM haalt het bestand BESTANDSNAAM op en voegt het onder
de cursor-positie in de tekst in.
5. :r !dir leest de uitvoer van het externe commando dir en zet het onder
de cursor-positie.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 6.1: HET COMMANDO OPEN
** Tik o om een regel onder de cursor te openen in invoegmodus. **
1. Ga naar de eerste regel beneden met --->.
2. Tik de kleine letter o en open daarmee een regel ONDER de cursor en
ga naar de invoegmodus.
3. Tik wat tekst in en sluit af met <ESC> om de invoegmodus te verlaten.
---> Als je o tikt, komt de cursor in een nieuwe regel in invoegmodus.
4. Om een regel BOVEN de cursor te openen, moet je gewoon een hoofdletter
O tikken in plaats van een kleine letter. Probeer dat vanaf de volgende
regel.
---> Open een regel hierboven. Tik een O terwijl de cursor hier staat.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 6.2: HET COMMANDO TOEVOEGEN
** Tik a om tekst toe te voegen ACHTER de cursor. **
1. Ga naar het begin van de regel beneden met --->.
2. Tik e tot de cursor op het einde van "ste" staat.
3. Tik een (kleine letter) a ('append') om toe te voegen ACHTER de cursor.
4. Vul het woord aan zoals in de volgende regel. Druk <ESC> om de
invoegmodus te verlaten.
5. Ga met e naar het einde van het volgende onvolledige woord en herhaal
de stappen 3 en 4.
---> Deze regel ste je in staat om te oef in het toevo van tekst.
Deze regel stelt je in staat om te oefenen in het toevoegen van tekst.
OPMERKING: a, i en A openen allemaal dezelfde invoegmodus, het enige
verschil is waar tekens worden ingevoegd.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 6.3: VERVANGEN OP EEN ANDERE MANIER
** Tik een hoofdletter R om meer dan <20><>n teken te vervangen. **
1. Ga naar de eerste regel beneden met --->. Ga met de cursor naar het
begin van de eerste "xxx" .
2. Tik nu R en daarna het getal eronder in de tweede regel, zodat xxx
wordt vervangen.
3. Druk <ESC> om de vervangmodus te verlaten. Je ziet dat de rest van de
regel ongewijzigd blijft.
4. Herhaal de stappen om de overgebleven xxx te vervangen.
---> Optellen van 123 en xxx geeft je xxx.
---> Optellen van 123 en 456 geeft je 579.
OPMERKING: Vervangmodus lijkt op invoegmodus, maar elk teken dat je tikt,
vervangt een bestaand teken.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 6.4: TEKST KOPI<50>REN EN PLAKKEN
** Gebruik y om tekst te kopi<70>ren en p om te plakken. **
1. Ga naar de regel beneden met ---> en zet de cursor achter "a)".
2. Zet zichtbare modus aan met v en zet de cursor juist voor "eerste".
3. Tik y ('yank') om de opgelichte tekst ("dit is het") te kopi<70>ren.
4. Ga met j$ met de cursor naar het einde van de volgende regel.
5. Plak de gekopieerde tekst met p en tik a tweede <ESC>.
6. Selecteer in zichtbare modus "onderdeel", kopieer het met y en
ga met j$ naar het einde van de tweede regel. Plak de tekst daar
met p .
---> a) dit is het eerste onderdeel
b)
OPMERKING: Je kan y ook als operator gebruiken; yw kopieert een woord,
yy een hele regel.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 6.5: OPTIES GEBRUIKEN
** Gebruik een optie voor al dan niet hoofdlettergevoelig zoeken. **
1. Zoek naar 'hoofdlettergevoelig' met /hoofdlettergevoelig <ENTER>
Herhaal het zoeken enkele keren door n te tikken.
2. Schakel de optie 'ic' ('ignore case', niet-hoofdlettergevoelig) in
met :set ic
3. Zoek met n opnieuw naar 'hoofdlettergevoelig'. Je ziet dat
Hoofdlettergevoelig en HOOFDLETTERGEVOELIG nu ook gevonden worden.
4. Schakel de opties 'hlsearch' (treffers oplichten) en 'incsearch' (toon
gedeeltelijke treffers bij intikken) in met :set hls is
5. Tik weer /hoofdlettergevoelig <ENTER> en kijk wat er gebeurt.
6. Schakel 'hoofdlettergevoelig' weer in met :set noic
OPMERKING: Schakel het oplichten van treffers uit met :nohlsearch
OPMERKING: Om bij een enkel zoek-commando de hoofdlettergevoeligheid om
te draaien kan \c worden gebruikt na de zoekterm:
/hoofdlettergevoelig\c <ENTER>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SAMENVATTING Les 6
1. Tik o om een regel te openen ONDER de cursor en invoegmodus te starten.
Tik O om een regel te openen BOVEN de cursor.
2. Tik a om tekst toe te voegen NA de cursor.
Tik A om tekst toe te voegen aan het einde van de regel.
3. Het commando e beweegt de cursor naar het einde van een woord.
4. De operator y yankt (kopieert) tekst, p zet het terug (plakt).
5. Met hoofdletter R wordt de vervangmodus geopend, met <ESC> afgesloten.
6. Met :set xxx wordt optie 'xxx' ingeschakeld. Opties zijn bijvoorbeeld:
ic ignorecase geen verschil hoofdletters/kleine letters bij zoeken
is incsearch toon gedeeltelijke treffers tijdens intikken zoekterm
hls hlsearch laat alle treffers oplichten
Je kan zowel de lange als de korte naam van een optie gebruiken.
7. Zet 'no' voor de naam om een optie uit te schakelen: :set noic
schakelt 'ic' uit.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 7.1: HULP INROEPEN
** Het gebruik van ingebouwde hulp. **
Vim heeft een uitgebreid ingebouwd hulpsysteem. Probeer, om te beginnen,
<20><>n van deze drie:
- druk de <HELP> toets (als je die hebt)
- druk de <F1> toets (als je die hebt)
- tik :help <ENTER>
Lees de tekst in het help-venster om te leren hoe 'help' werkt.
Tik CTRL-W CTRL-W om van het ene venster naar het andere te gaan.
Met :q <ENTER> wordt het help-venster gesloten.
Je kan hulp vinden over nagenoeg elk onderwerp door een argument aan het
commando :help toe te voegen. Probeer deze (en vergeet <ENTER> niet):
:help w
:help c_CTRL-D
:help insert-index
:help user-manual
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 7.2: SCHRIJF EEN CONFIGURATIEBESTAND
** Mogelijkheden van Vim uitbreiden. **
Vim kent veel meer mogelijkheden dan Vi, maar de meeste zijn standaard
uitgeschakeld. Om meer functies te gebruiken moet je een 'vimrc'-bestand
schrijven.
1. Bewerk het bestand 'vimrc'. Hoe dat moet hangt af van je systeem:
:e ~/.vimrc voor Unix
:e $VIM/_vimrc voor MS-Windows
2. Lees de inhoud van het voorbeeld-bestand:
:r $VIMRUNTIME/vimrc_example.vim
3. Sla het bestand op met :w
De volgende keer dat je Vim start wordt 'syntaxiskleuring' gebruiken.
Je kan al je voorkeursinstellingen toevoegen aan dit 'vimrc'-bestand.
Tik :help vimrc-intro voor meer informatie.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 7.3: AANVULLEN
** Aanvullen van de 'command line' met CTRL-D en <TAB>. **
1. Zorg dat Vim niet in 'compatible mode' is met :set nocp
2. Kijk welke bestanden zich in de map bevinden met :!ls of :!dir
3. Tik het begin van een commando: :e
4. Met CTRL-D toont Vim een lijst commando's, die met "e" beginnen.
5. Druk enkele keren <TAB>. Vim laat aanvullingen zien, zoals ":edit",
dat we hier gebruiken.
6. Voeg een spatie toe en de eerste letter(s) van een bestaande
bestandsnaam: :edit BESTAND
7. Druk <TAB>. Vim vult de naam aan (als hij uniek is).
OPMERKING: Aanvullen werkt bij tal van commando's. Probeer gewoon CTRL-D
en <TAB>. Het is bijzonder nuttig bij :help .
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SAMENVATTING Les 7
1. Tik :help of druk <F1> of <Help> om een help-venster te openen.
2. Tik :help CMD voor hulp over CMD .
3. Tik CTRL-W CTRL-W om naar een ander venster te gaan.
4. Tik :q om het help-venster te sluiten.
5. Maak een bestand met de naam 'vimrc' voor je voorkeursinstellingen.
6. Druk CTRL-D tijdens het intikken van een :-commando om mogelijke
aanvullingen te zien. Druk <TAB> om aanvullen te gebruiken.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Hiermee komen de Vim-lessen tot een einde. Ze waren bedoeld om een kort
overzicht te geven van de Vim-editor, juist voldoende om de editor
redelijk makkelijk te gebruiken. Deze lessen zijn verre van volledig. Vim
kent veel meer commando's. Lees hierna de handleiding voor gebruikers:
":help user-manual".
Voor verdere studie wordt aanbevolen:
Vim - Vi Improved - door Steve Oualline
Uitgever: New Riders
Dit is het eerste boek dat geheel aan Vim is gewijd. Speciaal geschikt
voor beginners. Met veel voorbeelden en afbeeldingen.
Zie http://iccf-holland.org/click5.html
Het volgende boek is ouder en gaat meer over Vi dan Vim, maar het wordt
toch aanbevolen:
Learning the Vi Editor - door Linda Lamb
Uitgever: O'Reilly & Associates Inc.
Het is een goed boek om nagenoeg alles te weten te komen dat je met Vi
zou willen doen. De zesde en vooral de nieuwe zevende druk (onder de
titel Learning the Vi and Vim Editors door Arnold Robbins, Elbert Hannah
& Linda Lamb) bevat ook informatie over Vim.
Deze lessen zijn geschreven door Michael C. Pierce en Robert K. Ware,
Colorado School of Mines met gebruikmaking van idee<65>n van Charles Smith
van de Colorado State University. E-mail: bware@mines.colorado.edu.
Aangepast voor Vim door Bram Moolenaar.
Nederlandse vertaling door Rob Bishoff, april 2012
e-mail: rob.bishoff@hccnet.nl)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@@ -0,0 +1,950 @@
==========================================================================
= W e l k o m b i j d e V I M l e s s e n - Versie 1.7 =
==========================================================================
Vim is een krachtige editor met veel commando's, te veel om uit te leggen
in lessen zoals deze. Deze lessen zijn bedoeld om voldoende commando's te
behandelen om je in staat te stellen met Vim te werken als een editor voor
algemeen gebruik.
Deze lessen zullen 25 tot 30 minuten in beslag nemen, afhankelijk van de
tijd die wordt besteed aan het uitproberen van de commando's.
LET OP:
Door de commando's in deze lessen verandert de tekst. Maak een kopie van
dit bestand om mee te oefenen (als je "vimtutor" uitvoerde, is dit al een
kopie).
Deze lessen zijn bedoeld om al doende te leren. Dat betekent dat je de
commando's moet uitvoeren om ze goed te leren kennen. Als je de tekst
alleen maar doorleest, zal je de commando's niet leren!
Zorg ervoor dat de <Caps Lock> toets NIET is ingedrukt en druk vaak genoeg
op de j-toets om de cursor zo te bewegen dat les 1.1 volledig op het
scherm staat.
LET OP: In deze lessen worden omwille van de duidelijkheid vaak spaties
gebruikt binnen een commando (bv. "40 G" of "operator [getal] beweging").
Tik deze spaties echter NIET. Ze verstoren de werking.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 1.1: VERPLAATS DE CURSOR
** De cursor wordt verplaatst met de toetsen h, j, k, l zoals aangegeven. **
^
k Hint: De h is de meest linkse en beweegt naar links.
< h l > De l is de meest rechtse en beweegt naar rechts.
j De j lijkt op een pijl naar beneden.
v
1. Beweeg de cursor over het scherm om er vertrouwd mee te raken.
2. Druk de omlaag-toets (j) tot hij repeteert.
Nu weet je hoe je de volgende les bereikt.
3. Gebruik de omlaag-toets om naar les 1.2 te gaan.
OPMERKING: Als je twijfelt aan wat je tikte, druk <ESC> om in de opdracht-
modus te komen. Tik daarna het commando dat bedoeld wordt.
OPMERKING: Pijltjes-toetsen werken ook. Met de hjkl-toetsen kan je sneller
rondbewegen, als je er eenmaal aan gewend bent. Echt waar!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 1.2: VIM AFSLUITEN
!! LET OP: Lees deze les goed door voordat je iets uitvoert!!
1. Druk de <ESC> toets (om zeker in de opdrachtmodus te zitten).
2. Tik :q! <ENTER>
Hiermee wordt de editor afgesloten. Alle veranderingen gaan VERLOREN.
3. Nu zie je de shell-prompt. Tik het commando waarmee je deze lessen
hebt opgeroepen. Dat is normaal gesproken: vimtutor <ENTER>
4. Als je deze stappen goed hebt doorgelezen, voer dan de stappen 1 tot 3
uit om de editor te verlaten en weer op te starten.
LET OP: :q! <ENTER> verwerpt alle veranderingen die je aanbracht. Een paar
lessen verder zal je leren hoe veranderingen worden opgeslagen in
een bestand.
5. Beweeg de cursor omlaag naar les 1.3.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 1.3: TEKST BEWERKEN - WISSEN
** Tik x om het teken onder de cursor te wissen. **
1. Ga met de cursor naar de regel verderop met --->.
2. Zet de cursor op een teken dat moet worden gewist om een fout te
herstellen.
3. Tik x om het ongewenste teken te wissen.
4. Herhaal deze stappen tot de regel goed is.
---> Vi kkent eenn opdracccchtmodus en een invooegmmmmodus.
5. Nu de regel gecorrigeerd is kan je naar les 1.4 gaan.
LET OP: Probeer de lessen niet uit je hoofd te leren. Leer al doende.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 1.4: TEKST BEWERKEN - INVOEGEN
** Tik i ('insert') om tekst in te voegen. **
1. Ga met de cursor naar de eerste regel verderop met --->.
2. Maak de eerste regel gelijk aan de tweede. Zet daarvoor de cursor op
de plaats waar tekst moet worden ingevoegd.
3. Tik i en daarna de nodige aanvullingen.
4. Tik <ESC> na elke herstelde fout om terug te keren in de opdrachtmodus.
Herhaal de stappen 2 tot 4 om de zin te verbeteren.
---> Aan regel ontekt wat .
---> Aan deze regel ontbreekt wat tekst.
5. Ga naar les 1.5 als je gewend bent aan het invoegen van tekst.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 1.5: TEKST BEWERKEN - TOEVOEGEN
** Tik A ('append') om tekst toe te voegen. **
1. Ga met de cursor naar de eerste regel verderop met --->.
Het maakt niet uit waar de cursor in deze regel staat.
2. Tik hoofdletter A en tik de nodige aanvullingen.
3. Tik <ESC> nadat de tekst is aangevuld. Zo keer je terug in de
opdrachtmodus.
4. Ga naar de tweede regel verderop met ---> en herhaal stap 2 en 3
om deze zin te corrigeren.
---> Er ontbreekt wat tekst aan de
Er ontbreekt wat tekst aan deze regel.
---> Hier ontbreekt ook w
Hier ontbreekt ook wat tekst.
5. Ga naar les 1.6 als je vertrouwd bent geraakt aan het toevoegen
van tekst.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 1.6: EEN BESTAND EDITTEN
** Gebruik :wq om een bestand op te slaan en de editor te verlaten. **
!! LET OP: Lees deze les helemaal door voordat je een van de volgende
stappen uitvoert!!
1. Verlaat deze les zoals je in les 1.2 deed: :q!
Of gebruik een andere terminal als je daar de beschikking over hebt. Doe
daar het volgende.
2. Tik het volgende commando na de shell-prompt: vim les <ENTER>
'vim' (vaak ook 'vi') is het commando om de Vim-editor te starten,
'les' is de naam van het bestand, dat je gaat bewerken. Kies een andere
naam als er al een bestand 'les' bestaat, dat niet veranderd mag worden.
3. Voeg naar eigen keus tekst toe, zoals je geleerd hebt in eerdere lessen.
4. Sla het bestand met de wijzigingen op en verlaat Vim met :wq <ENTER>
5. Herstart vimtutor als je deze bij stap 1 hebt verlaten en ga verder met
de volgende samenvatting.
6. Voer deze stappen uit nadat je ze hebt gelezen en begrepen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SAMENVATTING Les 1
1. De cursor wordt bewogen met de pijltjestoetsen of de hjkl-toetsen.
h (links) j (omlaag) k (omhoog) l (rechts)
2. Start Vim van de shell-prompt. Tik: vim BESTANDSNAAM <ENTER>
3. Sluit Vim af met <ESC> :q! <ENTER> om de veranderingen weg te gooien.
OF tik <ESC> :wq <ENTER> om de veranderingen te bewaren.
4. Wis het teken onder de cursor met: x
5. Invoegen of toevoegen van tekst, tik:
i en daarna de in te voegen tekst <ESC> voeg in vanaf de cursor
A en daarna de toe te voegen tekst <ESC> voeg toe achter de regel
OPMERKING: Met <ESC> kom je terug in opdrachtmodus en wordt een ongewenst
of gedeeltelijk uitgevoerd commando afgebroken.
Ga nu verder met les 2.1.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 2.1: WIS-COMMANDO'S
** Tik dw ('delete word') om een woord te wissen. **
1. Druk op <ESC> om zeker in de opdrachtmodus te zijn.
2. Ga naar de regel hieronder, die met ---> begint.
3. Ga met de cursor naar het begin van een woord dat moet worden gewist.
4. Met het tikken van dw verdwijnt het woord.
OPMERKING: De letter d verschijnt op de laatste regel van het scherm
zodra je hem tikt. Vim is aan het wachten tot je de w tikt.
Als je een ander teken dan d ziet, heb je iets verkeerds
getikt. Druk op <ESC> en begin opnieuw.
NOG EEN OPMERKING: Dit werkt alleen als de optie 'showcmd' is ingeschakeld.
Dat gebeurt met :set showcmd <ENTER>
---> Er zijn een het paar ggg woorden, die niet in deze len zin thuishoren.
5. Herhaal de stappen 3 en 4 tot de zin goed is en ga naar les 2.2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 2.2: MEER WIS-COMMANDO'S
** Tik d$ om te wissen tot het einde van de regel. **
1. Druk op <ESC> om zeker in de opdrachtmodus te zijn.
2. Ga naar de regel hieronder, die met ---> begint.
3. Ga met de cursor naar het einde van de correcte regel (NA de eerste . ).
4. Tik d$ om te wissen tot het einde van de regel.
---> Iemand heeft het einde van deze regel dubbel getikt. dubbel getikt.
5. Ga naar les 2.3 voor uitleg.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 2.3: OVER OPERATOREN EN BEWEGINGEN
Veel commando's die de tekst veranderen, bestaan uit een operator en een
beweging. De samenstelling van een wis-commando met de operator d is:
d beweging
Daarbij is:
d - de wis-operator
beweging - het bereik waarop de operator werkt (zie het lijstje hieronder)
Een korte lijst van bewegingen vanaf de cursor:
w - tot het begin van het volgende woord, ZONDER het eerste teken daarvan.
e - tot het einde van het huidige woord, INCLUSIEF het laatste teken.
$ - tot het einde van de regel, INCLUSIEF het laatste teken.
Het tikken van de wist tekst vanaf de cursor tot het eind van het woord.
OPMERKING: Het intikken van alleen maar de beweging, zonder een operator,
in de opdrachtmodus beweegt de cursor (respectievelijk naar het
volgende woord, naar het eind van het huidige woord en naar het
eind van de regel).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 2.4: GEBRUIK VAN EEN TELLER BIJ EEN BEWEGING
** Een getal voor een beweging herhaalt het zoveel keer. **
1. Ga naar de regel hieronder, die met ---> begint.
2. Tik 2w zodat de cursor twee woorden vooruit gaat.
3. Tik 3e zodat de cursor naar het einde van het derde woord gaat.
4. Tik 0 (nul) om naar het begin van de regel te gaan.
5. Herhaal de stappen 2 en 3 met andere getallen.
---> Dit is een regel met woorden waarin je heen en weer kan bewegen.
6. Ga verder met les 2.5.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 2.5: GEBRUIK EEN TELLER OM MEER TE WISSEN
** Een getal met een operator zorgt dat deze zoveel keer wordt herhaald. **
Bij de combinatie van wis-operator en beweging kan je voor de beweging een
teller zetten om meer te wissen:
d [teller] beweging
1. Ga naar het eerste woord in HOOFDLETTERS in de regel na --->.
2. Met d2w worden twee woorden (in dit voorbeeld in hoofdletters) gewist.
3. Herhaal de stappen 1 en 2 met verschillende tellers om de verschillende
woorden in hoofdletters met één commando te wissen.
---> deze ABC DE regel FGHI JK LMN OP is QZ RS ontdaan van rommel.
OPMERKING: De teller kan ook aan het begin staan: d2w en 2dw werken allebei.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 2.6: BEWERKING VAN HELE REGELS
** Tik dd om een hele regel te wissen. **
Omdat het wissen van een hele regel vaak voorkomt, besloten de ontwerpers
van Vi dat met het tikken van dd simpelweg een hele regel gewist wordt.
1. Ga met de cursor naar de tweede regel van de zinnetjes hieronder.
2. Tik dd om de regel te wissen.
3. Ga nu naar de vierde regel.
4. Tik 2dd om twee regels te wissen.
---> 1) Rozen zijn rood.
---> 2) Modder is leuk.
---> 3) Viooltjes zijn blauw.
---> 4) Ik heb een auto.
---> 5) De klok slaat de tijd.
---> 6) Suiker is zoet.
---> 7) En dat ben jij ook.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 2.7: HET COMMANDO HERSTEL
** u maakt het laatste commando ongedaan, U herstelt een hele regel. **
1. Ga met de cursor naar de regel hieronder met ---> en zet hem
op de eerste fout.
2. Tik x om het eerste ongewenste teken te wissen.
3. Tik nu u en maak daarmee het vorige commando ongedaan.
4. Herstel nu alle fouten in de regel met het x commando.
5. Tik een hoofdletter U om de regel in z'n oorspronkelijke staat terug
te brengen.
6. Tik nu een paar keer u en herstel daarmee de U en eerdere commando's.
7. Tik nu een paar keer CTRL-R (Ctrl-toets ingedrukt houden en R tikken) en
voer daarmee de commando's opnieuw uit: 'redo' oftewel 'undo de undo's'.
---> Heerstel de fouten inn deeze regel en brenng ze weer terugg met undo.
8. Dit zijn heel nuttige commando's. Ga verder met samenvatting van les 2.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SAMENVATTING Les 2
1. Wis van de cursor tot het volgende woord met dw
2. Wis van de cursor tot het eind van de regel met d$
3. Wis de hele regel met dd
4. Herhaal een beweging door er een getal voor te zetten: 2w
5. De opbouw van een wijzigingscommando is:
operator [getal] beweging
daarbij is:
operator - wat er moet gebeuren, bijvoorbeeld d om te wissen
[getal] - een (niet-verplichte) teller om 'beweging' te herhalen
beweging - een beweging door de te wijzigen tekst zoals w (woord)
of $ (tot het einde van de regel) enz.
6. Ga naar het begin van de regel met nul: 0
7. Undo de voorgaande actie met u (kleine letter)
Undo alle veranderingen in een regel met U (hoofdletter)
Undo de undo's met CTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 3.1: HET COMMANDO PLAK
** Tik p ('put') en plak daarmee zojuist gewiste tekst na te cursor. **
1. Ga met de cursor naar de eerste regel met ---> hierna.
2. Wis de regel met dd en bewaar hem zodoende in een Vim-register.
3. Ga naar de c-regel, waar de gewiste regel ONDER moet komen.
4. Tik p om de regel terug te zetten onder de regel met de cursor.
5. Herhaal de stappen 2 tot 4 om de regels in de goede volgorde te zetten.
---> d) Krijg je het ook onder de knie?
---> b) Viooltjes zijn blauw,
---> c) Begrip is te leren,
---> a) Rozen zijn rood,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 3.2: HET COMMANDO VERVANG
** Tik rx ('replace') om het teken onder de cursor te vervangen door x. **
1. Ga naar de eerste regel hieronder met --->.
2. Zet de cursor op de eerste fout.
3. Tik r en dan het teken dat er hoort te staan.
4. Herhaal de stappen 2 en 3 tot de eerste regel gelijk is aan de tweede.
---> Bij het tokken van dezf hegel heeft iemamd verklerde letters getikt.
---> Bij het tikken van deze regel heeft iemand verkeerde letters getikt.
5. Ga nu naar les 3.3.
LET OP: Door het te doen, leer je beter dan door het uit je hoofd te leren.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 3.3: HET COMMANDO VERANDER
** Tik ce om te veranderen tot het einde van een woord. **
1. Ga met de cursor naar de eerste regel hieronder met --->.
2. Zet de cursor op de u van ruch.
3. Tik ce en de juiste letters (in dit geval "egel").
4. Druk <ESC> en ga naar het volgende teken dat moet worden veranderd.
5. Herhaal de stappen 3 en 4 tot de eerste regel gelijk is aan de tweede.
---> In deze ruch staan een paar weedrim die veranderd moud worden.
---> In deze regel staan een paar woorden die veranderd moeten worden.
LET OP: Met ce wordt (het laatste deel van) een woord gewist en kom je
in de invoegmodus.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 3.4: MEER VERANDERINGEN MET c
1. Het commando verander ('change') werkt op dezelfde manier als wis. De
opbouw is:
c [teller] beweging
2. De bewegingen zijn hetzelfde, zoals w (woord) en $ (einde regel).
3. Ga naar de eerste regel hieronder met --->.
4. Zet de cursor op de eerste fout.
5. Tik c$ en tik de rest van de regel zodat hij gelijk wordt aan de
tweede en sluit af met <ESC>.
---> Het einde van deze regel moet precies zo worden als de tweede regel.
---> Het einde van deze regel moet gecorrigeerd worden met het commando c$.
OPMERKING: Je kan de toets <BACKSPACE> gebruiken om tikfouten te herstellen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SAMENVATTING Les 3
1. Tik p om tekst terug te plakken, die zojuist is gewist. Dit zet de
gewiste tekst ACHTER de cursor (als een hele regel is gewist komt deze
op de regel ONDER de cursor.
2. Het teken waarop de cursor staat wordt vervangen met r gevolgd door
het teken dat je daar wilt hebben.
3. Het commando 'verander' stelt je in staat om tekst te veranderen vanaf
de cursor tot waar de 'beweging' je brengt. Dat wil zeggen: tik ce om
te veranderen vanaf de cursor tot het einde van het woord, c$ om te
veranderen tot het einde van de regel.
4. De opbouw van het commando verander is:
c [teller] beweging
Ga nu naar de volgende les.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 4.1: PLAATS VAN DE CURSOR EN STATUS VAN HET BESTAND
** CTRL-G laat zien waar (regelnummer) je je bevindt en wat de status van
het bestand is. Met [nummer] G ga je naar een bepaalde regel. **
LET OP: Lees de hele les voordat je een stap uitvoert!!
1. Hou de Ctrl-toets ingedrukt en tik g . Dit noemen we CTRL-G.
Onderaan de pagina verschijnt een boodschap met de bestandsnaam en de
positie in het bestand. Onthou het regelnummer voor stap 3.
OPMERKING: Als de optie 'ruler' aan staat, wordt de positie van de cursor
(regelnummer, kolom) steeds in de rechter-onderhoek van het
scherm vermeld. In dit geval vermeldt CTRL-G geen regelnummer.
CTRL-G geeft ook de status aan, namelijk of de tekst veranderd
is ('modified') sinds het de laatste keer is opgeslagen.
2. Tik hoofdletter G om naar het einde van het bestand te gaan.
Tik gg om naar het begin van het bestand te gaan.
3. Tik het regelnummer waar je bij stap 1 was en daarna G . Dit brengt je
terug naar de regel waar je was toen je de eerste keer CTRL-G tikte.
4. Voer de stappen 1 tot 3 uit als je dit goed hebt gelezen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 4.2: HET COMMANDO ZOEKEN
** Met /ZOEK wordt naar de zoekterm (één of meer woorden) gezocht. **
1. Tik in de opdrachtmodus het teken / . Je ziet dat het met de cursor
aan de onderkant van het scherm verschijnt, zoals bij het :-commando.
2. Tik nu 'ffouut' <ENTER>. Dit is het woord waarnaar gezocht wordt.
3. Tik n om verder te zoeken met dezelfde zoekterm.
Zoek met N met dezelfde zoekterm in de tegenovergestelde richting.
4. Zoek in achterwaartse richting met ?zoekterm in plaats van / .
5. Keer terug naar de vorige hit met CTRL-O (hou Ctrl-toets ingedrukt en
tik letter o). Herhaal om verder terug te gaan. CTRL-I gaat vooruit.
---> "ffouut" is niet de juiste spelling van fout, ffouut is een fout.
OPMERKING: Als zoeken het einde van het bestand bereikt, wordt vanaf het
begin doorgezocht, tenzij de optie 'wrapscan' is uitgeschakeld.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 4.3: GA NAAR CORRESPONDERENDE HAAKJES
** Tik % om naar corresponderende ), ] of } te gaan. **
1. Zet de cursor op een (, [ of { in de regel hieronder met --->.
2. Tik dan het teken % .
3. De cursor gaan naar het overeenkomstige haakje.
4. Met opnieuw % gaat de cursor terug naar het eerste haakje.
5. Plaats de cursor op een ander haakje en bekijk wat % doet.
---> Dit ( is een testregel met ('s, ['s ] en {'s } erin. ))
OPMERKING: Dit is nuttig bij het debuggen van een programma waarin haakjes
niet corresponderen. Met de optie 'showmatch' wordt ook
aangegeven of haakjes corresponderen, maar de cursor wordt niet
(blijvend) verplaatst.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 4.4: HET VERVANG COMMANDO
** Tik :s/oud/nieuw/g om 'oud' door 'nieuw' te vervangen. **
1. Ga met de cursor naar de regel hieronder met --->.
2. Tik :s/dee/de <ENTER>. Zoals je ziet, vervangt ('substitute') dit
commando alleen de eerste "dee" in de regel.
3. Tik nu :s/dee/de/g . Met de g-vlag ('global') wordt elke "dee" in de
regel vervangen.
---> dee beste tijd om dee bloemen te zien is in dee lente.
4. Om in (een deel van) een tekst elk 'oud' te vervangen door 'nieuw':
tik :#,#s/oud/nieuw/g waar #,# de regelnummers zijn die het gebied
begrenzen waarin wordt vervangen.
tik :%s/oud/nieuw/g om alles te vervangen in het hele bestand.
tik :%s/oud/nieuw/gc om elke 'oud' in het hele bestand te vinden
en te vragen of er vervangen moet worden.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SAMENVATTING Les 4
1. CTRL-G laat positie in het bestand zien en de status van het bestand.
G verplaatst je naar het einde van het bestand.
nummer G verplaatst je naar regelnummer.
gg verplaatst je naar de eerste regel.
2. Met / en een zoekterm wordt VOORWAARTS gezocht naar de term.
Met ? en een zoekterm wordt ACHTERWAARTS gezocht naar de term.
Tik n na een zoekopdracht om de volgende hit te vinden,
of tik N om in de andere richting te zoeken.
CTRL-O brengt je naar eerdere hit, CTRL-I naar nieuwere.
3. Tik % terwijl de cursor op een haakje ([{}]) staat, om naar het
corresponderende haakje te gaan.
4. :s/oud/nieuw vervangt het eerste 'oud' in een regel door 'nieuw'.
:s/oud/nieuw/g vervangt elk 'oud' in een regel door 'nieuw'.
:#,#s/oud/nieuw/g vervangt elk 'oud' door 'nieuw' tussen de regelnummers.
:%s/oud/nieuw/g vervangt elk 'oud' door 'nieuw' in het hele bestand.
Voeg c toe (:%s/oud/nieuw/gc) om elke keer om bevestiging
('confirmation') te vragen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 5.1: HOE EEN EXTERN COMMANDO WORDT UITGEVOERD
** Tik :! gevolgd door een extern commando om dat uit te voeren. **
1. Tik het commando : waarmee de cursor op de onderste regel van het
scherm komt te staan. Nu kan je een opdracht geven via de commando-regel.
2. Tik een ! (uitroepteken). Dit stelt je in staat om elk shell-commando
uit te voeren.
3. Tik bijvoorbeeld ls na het uitroepteken en daarna <ENTER>. Hiermee
krijg je de inhoud van je map te zien, net alsof je de opdracht gaf
vanaf de shell-prompt. Probeer :!dir als het niet werkt.
OPMERKING: Elk extern commando kan op deze manier uitgevoerd worden, ook
met argumenten.
OPMERKING: Alle commando's na : moeten worden afgesloten met <ENTER>.
Vanaf nu zullen we dat niet meer altijd vermelden.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 5.2: MEER OVER HET OPSLAAN VAN BESTANDEN
** Tik :w BESTANDSNAAM om de tekst mèt veranderingen op te slaan. **
1. Tik :!dir of :!ls om de inhoud van je map te tonen. Je weet
inmiddels dat je daarna een <ENTER> moet tikken.
2. Kies een bestandsnaam die nog niet bestaat, bijvoorbeeld TEST.
3. Tik nu: :w TEST (als je de naam TEST hebt gekozen).
4. Hierdoor wordt het hele bestand (de VIM lessen) opgeslagen onder de
naam TEST. Tik weer :!dir of :!ls om dit te controleren.
OPMERKING: Als je Vim zou verlaten en opnieuw zou starten met vim TEST is
het bestand een exacte kopie van de lessen, zoals je ze opsloeg.
5. Wis het bestand nu met de opdracht (MS-DOS) :!del TEST
of (Unix) :!rm TEST
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 5.3: EEN DEEL VAN DE TEKST OPSLAAN
** Sla een deel van het bestand op met v beweging :w BESTANDSNAAM **
1. Ga naar deze regel.
2. Tik v en ga met de cursor naar stap 5 hieronder. Je ziet dat de
tekst oplicht.
3. Tik : . Onderaan het scherm zal :'<,'> verschijnen.
4. Tik w TEST , waar TEST een bestandsnaam is, die nog niet bestaat.
Controleer dat je :'<,'>w TEST ziet staan voordat je <ENTER> tikt.
5. Vim slaat nu de geselecteerde regels op in het bestand TEST. Met
:!dir of !ls kan je dat zien. Wis het nog niet! We zullen het in
de volgende les gebruiken.
OPMERKING: Het tikken van v zet zichtbare modus ('visual selection') aan.
Je kan de cursor rondbewegen om de selectie groter of kleiner
te maken. Vervolgens kan je een commando gebruiken om iets met
de tekst te doen. Met d bijvoorbeeld wis je de tekst.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 5.4: OPHALEN EN SAMENVOEGEN VAN BESTANDEN
** Tik :r BESTANDSNAAM om de inhoud van een bestand in te voegen. **
1. Zet de cursor precies boven deze regel.
OPMERKING: Na het uitvoeren van stap 2 zie je tekst van les 5.3. Scrol
daarna naar beneden om deze les weer te zien.
2. Haal nu het bestand TEST op met het commando :r TEST .
Het bestand dat je ophaalt komt onder de regel waarin de cursor staat.
3. Controleer dat er een bestand is opgehaald. Ga met de cursor omhoog.
Dan zie je de tekst van les 5.3 dubbel, het origineel en de versie uit
het bestand.
OPMERKING: Je kan ook de uitvoer van een extern commando inlezen. Om een
voorbeeld te geven: :r !ls leest de uitvoer van het commando
ls en zet dat onder de regel waarin de cursor staat.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SAMENVATTING Les 5
1. :!COMMANDO voert een extern commando uit.
Enkele bruikbare voorbeelden zijn:
(MS-DOS) (Unix)
:!dir :!ls - laat de inhoud van een map zien
:!del BESTAND :!rm BESTAND - wist bestand BESTAND
2. :w BESTANDSNAAM schrijft het huidige Vim-bestand naar disk met de
naam BESTANDSNAAM.
3. v beweging :w BESTANDSNAAM laat je in zichtbare modus een fragment
selecteren, dat wordt opgeslagen in het bestand BESTANDSNAAM.
4. :r BESTANDSNAAM haalt het bestand BESTANDSNAAM op en voegt het onder
de cursor-positie in de tekst in.
5. :r !dir leest de uitvoer van het externe commando dir en zet het onder
de cursor-positie.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 6.1: HET COMMANDO OPEN
** Tik o om een regel onder de cursor te openen in invoegmodus. **
1. Ga naar de eerste regel beneden met --->.
2. Tik de kleine letter o en open daarmee een regel ONDER de cursor en
ga naar de invoegmodus.
3. Tik wat tekst in en sluit af met <ESC> om de invoegmodus te verlaten.
---> Als je o tikt, komt de cursor in een nieuwe regel in invoegmodus.
4. Om een regel BOVEN de cursor te openen, moet je gewoon een hoofdletter
O tikken in plaats van een kleine letter. Probeer dat vanaf de volgende
regel.
---> Open een regel hierboven. Tik een O terwijl de cursor hier staat.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 6.2: HET COMMANDO TOEVOEGEN
** Tik a om tekst toe te voegen ACHTER de cursor. **
1. Ga naar het begin van de regel beneden met --->.
2. Tik e tot de cursor op het einde van "ste" staat.
3. Tik een (kleine letter) a ('append') om toe te voegen ACHTER de cursor.
4. Vul het woord aan zoals in de volgende regel. Druk <ESC> om de
invoegmodus te verlaten.
5. Ga met e naar het einde van het volgende onvolledige woord en herhaal
de stappen 3 en 4.
---> Deze regel ste je in staat om te oef in het toevo van tekst.
Deze regel stelt je in staat om te oefenen in het toevoegen van tekst.
OPMERKING: a, i en A openen allemaal dezelfde invoegmodus, het enige
verschil is waar tekens worden ingevoegd.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 6.3: VERVANGEN OP EEN ANDERE MANIER
** Tik een hoofdletter R om meer dan één teken te vervangen. **
1. Ga naar de eerste regel beneden met --->. Ga met de cursor naar het
begin van de eerste "xxx" .
2. Tik nu R en daarna het getal eronder in de tweede regel, zodat xxx
wordt vervangen.
3. Druk <ESC> om de vervangmodus te verlaten. Je ziet dat de rest van de
regel ongewijzigd blijft.
4. Herhaal de stappen om de overgebleven xxx te vervangen.
---> Optellen van 123 en xxx geeft je xxx.
---> Optellen van 123 en 456 geeft je 579.
OPMERKING: Vervangmodus lijkt op invoegmodus, maar elk teken dat je tikt,
vervangt een bestaand teken.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 6.4: TEKST KOPIËREN EN PLAKKEN
** Gebruik y om tekst te kopiëren en p om te plakken. **
1. Ga naar de regel beneden met ---> en zet de cursor achter "a)".
2. Zet zichtbare modus aan met v en zet de cursor juist voor "eerste".
3. Tik y ('yank') om de opgelichte tekst ("dit is het") te kopiëren.
4. Ga met j$ met de cursor naar het einde van de volgende regel.
5. Plak de gekopieerde tekst met p en tik a tweede <ESC>.
6. Selecteer in zichtbare modus "onderdeel", kopieer het met y en
ga met j$ naar het einde van de tweede regel. Plak de tekst daar
met p .
---> a) dit is het eerste onderdeel
b)
OPMERKING: Je kan y ook als operator gebruiken; yw kopieert een woord,
yy een hele regel.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 6.5: OPTIES GEBRUIKEN
** Gebruik een optie voor al dan niet hoofdlettergevoelig zoeken. **
1. Zoek naar 'hoofdlettergevoelig' met /hoofdlettergevoelig <ENTER>
Herhaal het zoeken enkele keren door n te tikken.
2. Schakel de optie 'ic' ('ignore case', niet-hoofdlettergevoelig) in
met :set ic
3. Zoek met n opnieuw naar 'hoofdlettergevoelig'. Je ziet dat
Hoofdlettergevoelig en HOOFDLETTERGEVOELIG nu ook gevonden worden.
4. Schakel de opties 'hlsearch' (treffers oplichten) en 'incsearch' (toon
gedeeltelijke treffers bij intikken) in met :set hls is
5. Tik weer /hoofdlettergevoelig <ENTER> en kijk wat er gebeurt.
6. Schakel 'hoofdlettergevoelig' weer in met :set noic
OPMERKING: Schakel het oplichten van treffers uit met :nohlsearch
OPMERKING: Om bij een enkel zoek-commando de hoofdlettergevoeligheid om
te draaien kan \c worden gebruikt na de zoekterm:
/hoofdlettergevoelig\c <ENTER>.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SAMENVATTING Les 6
1. Tik o om een regel te openen ONDER de cursor en invoegmodus te starten.
Tik O om een regel te openen BOVEN de cursor.
2. Tik a om tekst toe te voegen NA de cursor.
Tik A om tekst toe te voegen aan het einde van de regel.
3. Het commando e beweegt de cursor naar het einde van een woord.
4. De operator y yankt (kopieert) tekst, p zet het terug (plakt).
5. Met hoofdletter R wordt de vervangmodus geopend, met <ESC> afgesloten.
6. Met :set xxx wordt optie 'xxx' ingeschakeld. Opties zijn bijvoorbeeld:
ic ignorecase geen verschil hoofdletters/kleine letters bij zoeken
is incsearch toon gedeeltelijke treffers tijdens intikken zoekterm
hls hlsearch laat alle treffers oplichten
Je kan zowel de lange als de korte naam van een optie gebruiken.
7. Zet 'no' voor de naam om een optie uit te schakelen: :set noic
schakelt 'ic' uit.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 7.1: HULP INROEPEN
** Het gebruik van ingebouwde hulp. **
Vim heeft een uitgebreid ingebouwd hulpsysteem. Probeer, om te beginnen,
één van deze drie:
- druk de <HELP> toets (als je die hebt)
- druk de <F1> toets (als je die hebt)
- tik :help <ENTER>
Lees de tekst in het help-venster om te leren hoe 'help' werkt.
Tik CTRL-W CTRL-W om van het ene venster naar het andere te gaan.
Met :q <ENTER> wordt het help-venster gesloten.
Je kan hulp vinden over nagenoeg elk onderwerp door een argument aan het
commando :help toe te voegen. Probeer deze (en vergeet <ENTER> niet):
:help w
:help c_CTRL-D
:help insert-index
:help user-manual
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 7.2: SCHRIJF EEN CONFIGURATIEBESTAND
** Mogelijkheden van Vim uitbreiden. **
Vim kent veel meer mogelijkheden dan Vi, maar de meeste zijn standaard
uitgeschakeld. Om meer functies te gebruiken moet je een 'vimrc'-bestand
schrijven.
1. Bewerk het bestand 'vimrc'. Hoe dat moet hangt af van je systeem:
:e ~/.vimrc voor Unix
:e $VIM/_vimrc voor MS-Windows
2. Lees de inhoud van het voorbeeld-bestand:
:r $VIMRUNTIME/vimrc_example.vim
3. Sla het bestand op met :w
De volgende keer dat je Vim start wordt 'syntaxiskleuring' gebruiken.
Je kan al je voorkeursinstellingen toevoegen aan dit 'vimrc'-bestand.
Tik :help vimrc-intro voor meer informatie.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Les 7.3: AANVULLEN
** Aanvullen van de 'command line' met CTRL-D en <TAB>. **
1. Zorg dat Vim niet in 'compatible mode' is met :set nocp
2. Kijk welke bestanden zich in de map bevinden met :!ls of :!dir
3. Tik het begin van een commando: :e
4. Met CTRL-D toont Vim een lijst commando's, die met "e" beginnen.
5. Druk enkele keren <TAB>. Vim laat aanvullingen zien, zoals ":edit",
dat we hier gebruiken.
6. Voeg een spatie toe en de eerste letter(s) van een bestaande
bestandsnaam: :edit BESTAND
7. Druk <TAB>. Vim vult de naam aan (als hij uniek is).
OPMERKING: Aanvullen werkt bij tal van commando's. Probeer gewoon CTRL-D
en <TAB>. Het is bijzonder nuttig bij :help .
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SAMENVATTING Les 7
1. Tik :help of druk <F1> of <Help> om een help-venster te openen.
2. Tik :help CMD voor hulp over CMD .
3. Tik CTRL-W CTRL-W om naar een ander venster te gaan.
4. Tik :q om het help-venster te sluiten.
5. Maak een bestand met de naam 'vimrc' voor je voorkeursinstellingen.
6. Druk CTRL-D tijdens het intikken van een :-commando om mogelijke
aanvullingen te zien. Druk <TAB> om aanvullen te gebruiken.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Hiermee komen de Vim-lessen tot een einde. Ze waren bedoeld om een kort
overzicht te geven van de Vim-editor, juist voldoende om de editor
redelijk makkelijk te gebruiken. Deze lessen zijn verre van volledig. Vim
kent veel meer commando's. Lees hierna de handleiding voor gebruikers:
":help user-manual".
Voor verdere studie wordt aanbevolen:
Vim - Vi Improved - door Steve Oualline
Uitgever: New Riders
Dit is het eerste boek dat geheel aan Vim is gewijd. Speciaal geschikt
voor beginners. Met veel voorbeelden en afbeeldingen.
Zie http://iccf-holland.org/click5.html
Het volgende boek is ouder en gaat meer over Vi dan Vim, maar het wordt
toch aanbevolen:
Learning the Vi Editor - door Linda Lamb
Uitgever: O'Reilly & Associates Inc.
Het is een goed boek om nagenoeg alles te weten te komen dat je met Vi
zou willen doen. De zesde en vooral de nieuwe zevende druk (onder de
titel Learning the Vi and Vim Editors door Arnold Robbins, Elbert Hannah
& Linda Lamb) bevat ook informatie over Vim.
Deze lessen zijn geschreven door Michael C. Pierce en Robert K. Ware,
Colorado School of Mines met gebruikmaking van ideeën van Charles Smith
van de Colorado State University. E-mail: bware@mines.colorado.edu.
Aangepast voor Vim door Bram Moolenaar.
Nederlandse vertaling door Rob Bishoff, april 2012
e-mail: rob.bishoff@hccnet.nl)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@@ -0,0 +1,852 @@
===============================================================================
= 歡 迎 閱 讀 《 V I M 教 程 》 ── 版本 1.5 =
===============================================================================
vim 是一個具有很多命令的功能非常強大的編輯器。限于篇幅,在本教程當中
不就詳細介紹了。本教程的設計目標是講述一些必要的基本命令,而掌握好這
些命令您就能夠很容易將vim當作一個通用的萬能編輯器來使用了。
完成本教程的內容大約需要25-30分鐘取決于您訓練的時間。
每一節的命令操作將會更改本文。推薦您復制本文的一個副本,然後在副本上
進行訓練(如果您是通過"vimtutor"來啟動教程的,那麼本文就已經是副本了)。
切記一點︰本教程的設計思路是在使用中進行學習的。也就是說,您需要通過
執行命令來學習它們本身的正確用法。如果您只是閱讀而不操作,那麼您可能
會很快遺忘這些命令的!
好了現在請確定您的Shift-Lock(大小寫鎖定鍵)還沒有按下,然後按鍵盤上
的字母鍵 j 足夠多的次數來移動光標,直到第一節的內容能夠完全充滿屏幕。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一講第一節︰移動光標
※※ 要移動光標,請依照說明分別按下 h、j、k、l 鍵。 ※※
^
k 提示︰ h 的鍵位于左邊,每次按下就會向左移動。
< h l > l 的鍵位于右邊,每次按下就會向右移動。
j j 鍵看起來很象一支尖端方向朝下的箭頭。
v
1. 請隨意在屏幕內移動光標,直至您覺得舒服為止。
2. 按下下行鍵(j),直到出現光標重復下行。
---> 現在您應該已經學會如何移動到下一講吧。
3. 現在請使用下行鍵,將光標移動到第二講。
提示︰如果您不敢確定您所按下的字母,請按下<ESC>鍵回到正常(Normal)模式。
然後再次從鍵盤輸入您想要的命令。
提示光標鍵應當也能正常工作的。但是使用hjkl鍵在習慣之後您就能夠快速
地在屏幕內四處移動光標了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一講第二節VIM的進入和退出
!! 特別提示︰敬請閱讀完整本一節的內容,然後才能執行以下所講解的命令。
1. 請按<ESC>鍵(這是為了確保您處在正常模式)。
2. 然後輸入︰ :q! <回車>
---> 這種方式的退出編輯器絕不會保存您進入編輯器以來所做的改動。
如果您想保存更改再退出,請輸入︰
:wq <回車>
3. 如果您看到了命令行提示符,請輸入能夠帶您回到本教程的命令,那就是︰
vimtutor <回車>
通常情況下您也可以用這種方式︰
vim tutor <回車>
---> 這裡的 'vim' 表示進入vim編輯器而 'tutor'則是您準備要編輯的文件。
4. 如果您自信已經牢牢記住了這些步驟的話請從步驟1執行到步驟3退出
後再次進入編輯器。接著將光標移動到第一講第三節來繼續我們的教程講解。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一講第三節︰文本編輯之刪除
** 在正常(Normal)模式下,可以按下 x 鍵來刪除光標所在位置的字符。**
1. 請將光標移動到本節中下面標記有 ---> 的那一行。
2. 為了修正輸入錯誤,請將光標移至準備刪除的字符的位置處。
3. 然後按下 x 鍵將錯誤字符刪除掉。
4. 重復步驟2到步驟4直到句子修正為止。
---> The ccow jumpedd ovverr thhe mooon.
5. 好了,該行已經修正了,下一節內容是第一講第四節。
特別提示︰在您瀏覽本教程時,不要強行記憶。記住一點︰在使用中學習。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一講第四節︰文本編輯之插入
** 在正常模式下,可以按下 i 鍵來插入文本。**
1. 請將光標移動到本節中下面標記有 ---> 的第一行。
2. 為了使得第一行內容雷同于第二行,請將光標移至文本第一個字符準備插入
的位置。
3. 然後按下 i 鍵,接著輸入必要的文本字符。
4. 所有文本都修正完畢,請按下 <ESC> 鍵返回正常模式。
重復步驟2至步驟4以便修正句子。
---> There is text misng this .
---> There is some text missing from this line.
5. 如果您對文本插入操作已經很滿意,請接著閱讀下面的小結。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一講小結
1. 光標在屏幕文本中的移動既可以用箭頭鍵,也可以使用 hjkl 字母鍵。
h (左移) j (下行) k (上行) l (右移)
2. 欲進入vim編輯器(從命令行提示符)請輸入vim 文件名 <回車>
3. 欲退出vim編輯器請輸入以下命令放棄所有修改
<ESC> :q! <回車>
或者輸入以下命令保存所有修改︰
<ESC> :wq <回車>
4. 在正常模式下刪除光標所在位置的字符,請按︰ x
5. 在正常模式下要在光標所在位置開始插入文本,請按︰
i 輸入必要文本 <ESC>
特別提示︰按下 <ESC> 鍵會帶您回到正常模式或者取消一個不期望或者部分完成
的命令。
好了,第一講到此結束。下面接下來繼續第二講的內容。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二講第一節︰刪除類命令
** 輸入 dw 可以從光標處刪除至一個單字/單詞的末尾。**
1. 請按下 <ESC> 鍵確保您處于正常模式。
2. 請將光標移動到本節中下面標記有 ---> 的那一行。
3. 請將光標移至準備要刪除的單詞的開始。
4. 接著輸入 dw 刪除掉該單詞。
特別提示︰您所輸入的 dw 會在您輸入的同時出現在屏幕的最後一行。如果您輸
入有誤,請按下 <ESC> 鍵取消,然後重新再來。
---> There are a some words fun that don't belong paper in this sentence.
5. 重復步驟3至步驟4直至句子修正完畢。接著繼續第二講第二節內容。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二講第二節︰其他刪除類命令
** 輸入 d$ 從當前光標刪除到行末。**
1. 請按下 <ESC> 鍵確保您處于正常模式。
2. 請將光標移動到本節中下面標記有 ---> 的那一行。
3. 請將光標移動到該行的尾部(也就是在第一個點號‘.’後面)。
4. 然後輸入 d$ 從光標處刪至當前行尾部。
---> Somebody typed the end of this line twice. end of this line twice.
5. 請繼續學習第二講第三節就知道是怎麼回事了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二講第三節︰關于命令和對象
刪除命令 d 的格式如下︰
[number] d object 或者 d [number] object
其意如下︰
number - 代表執行命令的次數(可選項,缺省設置為 1 )。
d - 代表刪除。
object - 代表命令所要操作的對象(下面有相關介紹)。
一個簡短的對象列表︰
w - 從當前光標當前位置直到單字/單詞末尾,包括空格。
e - 從當前光標當前位置直到單字/單詞末尾,但是 *不* 包括空格。
$ - 從當前光標當前位置直到當前行末。
特別提示︰
對于勇于探索者,請在正常模式下面僅按代表相應對象的鍵而不使用命令,則
將看到光標的移動正如上面的對象列表所代表的一樣。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二講第四節︰對象命令的特殊情況
** 輸入 dd 可以刪除整一個當前行。 **
鑒于整行刪除的高頻度VIM 的設計者決定要簡化整行刪除,僅需要在同一行上
擊打兩次 d 就可以刪除掉光標所在的整行了。
1. 請將光標移動到本節中下面的短句段落中的第二行。
2. 輸入 dd 刪除該行。
3. 然後移動到第四行。
4. 接著輸入 2dd (還記得前面講過的 number-command-object 嗎?) 刪除兩行。
1) Roses are red,
2) Mud is fun,
3) Violets are blue,
4) I have a car,
5) Clocks tell time,
6) Sugar is sweet
7) And so are you.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二講第五節︰撤消類命令
** 輸入 u 來撤消最後執行的命令,輸入 U 來修正整行。**
1. 請將光標移動到本節中下面標記有 ---> 的那一行,並將其置于第一個錯誤
處。
2. 輸入 x 刪除第一個不想保留的字母。
3. 然後輸入 u 撤消最後執行的(一次)命令。
4. 這次要使用 x 修正本行的所有錯誤。
5. 現在輸入一個大寫的 U ,恢復到該行的原始狀態。
6. 接著多次輸入 u 以撤消 U 以及更前的命令。
7. 然後多次輸入 CTRL-R (先按下 CTRL 鍵不放開,接著輸入 R 鍵) ,這樣就
可以執行恢復命令,也就是撤消掉撤消命令。
---> Fiix the errors oon thhis line and reeplace them witth undo.
8. 這些都是非常有用的命令。下面是第二講的小結了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二講小結
1. 欲從當前光標刪除至單字/單詞末尾請輸入dw
2. 欲從當前光標刪除至當前行末尾請輸入d$
3. 欲刪除整行請輸入dd
4. 在正常模式下一個命令的格式是︰
[number] command object 或者 command [number] object
其意是︰
number - 代表的是命令執行的次數
command - 代表要做的事情,比如 d 代表刪除
object - 代表要操作的對象,比如 w 代表單字/單詞,$ 代表到行末等等。
$ (to the end of line), etc.
5. 欲撤消以前的操作請輸入u (小寫的u)
欲撤消在一行中所做的改動請輸入U (大寫的U)
欲撤消以前的撤消命令恢復以前的操作結果請輸入CTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第三講第一節︰置入類命令
** 輸入 p 將最後一次刪除的內容置入光標之後 **
1. 請將光標移動到本節中下面示范段落的首行。
2. 輸入 dd 將該行刪除這樣會將該行保存到vim的緩沖區中。
3. 接著將光標移動到準備置入的位置的上方。記住︰是上方哦。
4. 然後在正常模式下(<ESC>鍵進入),輸入 p 將該行粘貼置入。
5. 重復步驟2至步驟4將所有的行依序放置到正確的位置上。
d) Can you learn too?
b) Violets are blue,
c) Intelligence is learned,
a) Roses are red,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第三講第二節︰替換類命令
** 輸入 r 和一個字符替換光標所在位置的字符。**
1. 請將光標移動到本節中下面標記有 ---> 的第一行。
2. 請移動光標到第一個錯誤的適當位置。
3. 接著輸入 r ,這樣就能將錯誤替換掉了。
4. 重復步驟2和步驟3直到第一行已經修改完畢。
---> Whan this lime was tuoed in, someone presswd some wrojg keys!
---> When this line was typed in, someone pressed some wrong keys!
5. 然後我們繼續學校第三講第三節。
特別提示︰切記您要在使用中學習,而不是在記憶中學習。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第三講第三節︰更改類命令
** 要改變一個單字/單詞的部分或者全部,請輸入 cw **
1. 請將光標移動到本節中下面標記有 ---> 的第一行。
2. 接著把光標放在單詞 lubw 的字母 u 的位置那裡。
3. 然後輸入 cw 就可以修正該單詞了(在本例這裡是輸入 ine 。)
4. 最後按 <ESC> 鍵,然後光標定位到下一個錯誤第一個準備更改的字母處。
5. 重復步驟3和步驟4直到第一個句子完全雷同第二個句子。
---> This lubw has a few wptfd that mrrf changing usf the change command.
---> This line has a few words that need changing using the change command.
提示︰請注意 cw 命令不僅僅是替換了一個單詞,也讓您進入文本插入狀態了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第三講第四節使用c指令的其他更改類命令
** 更改類指令可以使用同刪除類命令所使用的對象參數。**
1. 更改類指令的工作方式跟刪除類命令是一致的。操作格式是︰
[number] c object 或者 c [number] object
2. 對象參數也是一樣的,比如 w 代表單字/單詞,$代表行末等等。
3. 請將光標移動到本節中下面標記有 ---> 的第一行。
4. 接著將光標移動到第一個錯誤處。
5. 然後輸入 c$ 使得該行剩下的部分更正得同第二行一樣。最後按 <ESC> 鍵。
---> The end of this line needs some help to make it like the second.
---> The end of this line needs to be corrected using the c$ command.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第三講小結
1. 要重新置入已經刪除的文本內容,請輸入小寫字母 p。該操作可以將已刪除
的文本內容置于光標之後。如果最後一次刪除的是一個整行,那麼該行將置
于當前光標所在行的下一行。
2. 要替換光標所在位置的字符,請輸入小寫的 r 和要替換掉原位置字符的新字
符即可。
3. 更改類命令允許您改變指定的對象,從當前光標所在位置直到對象的末尾。
比如輸入 cw 可以替換當前光標到單詞的末尾的內容;輸入 c$ 可以替換當
前光標到行末的內容。
4. 更改類命令的格式是︰
[number] c object 或者 c [number] object
下面我們繼續學習下一講。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第四講第一節︰定位及文件狀態
** 輸入 CTRL-g 顯示當前編輯文件中當前光標所在行位置以及文件狀態信息。
輸入 SHIFT-G 則直接跳轉到文件中的某一指定行。**
提示︰切記要先通讀本節內容,之後才可以執行以下步驟!!!
1. 按下 CTRL 鍵不放開然後按 g 鍵。然後就會看到頁面最底部出現一個狀態信
息行顯示的內容是當前編輯的文件名和文件的總行數。請記住步驟3的行號。
2. 按下 SHIFT-G 鍵可以使得當前光標直接跳轉到文件最後一行。
3. 輸入您曾停留的行號,然後按下 SHIFT-G。這樣就可以返回到您第一次按下
CTRL-g 時所在的行好了。注意︰輸入行號時,行號是不會在屏幕上顯示出來
的。
4. 如果願意您可以繼續執行步驟1至步驟三。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第四講第二節︰搜索類命令
** 輸入 / 以及尾隨的字符串可以用以在當前文件中查找該字符串。**
1. 在正常模式下輸入 / 字符。您此時會注意到該字符和光標都會出現在屏幕底
部,這跟 : 命令是一樣的。
2. 接著輸入 errroor <回車>。那個errroor就是您要查找的字符串。
3. 要查找同上一次的字符串,只需要按 n 鍵。要向相反方向查找同上一次的字
符串,請輸入 Shift-N 即可。
4. 如果您想逆向查找字符串,請使用 ? 代替 / 進行。
---> When the search reaches the end of the file it will continue at the start.
"errroor" is not the way to spell error; errroor is an error.
提示︰如果查找已經到達文件末尾,查找會自動從文件頭部繼續查找。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第四講第三節︰配對括號的查找
** 按 % 可以查找配對的括號 )、]、}。**
1. 把光標放在本節下面標記有 --> 那一行中的任何一個 (、[ 或 { 處。
2. 接著按 % 字符。
3. 此時光標的位置應當是在配對的括號處。
4. 再次按 % 就可以跳回配對的第一個括號處。
---> This ( is a test line with ('s, ['s ] and {'s } in it. ))
提示︰在程序調試時,這個功能用來查找不配對的括號是很有用的。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第四講第四節︰修正錯誤的方法之一
** 輸入 :s/old/new/g 可以替換 old 為 new。**
1. 請將光標移動到本節中下面標記有 ---> 的那一行。
2. 輸入 :s/thee/the <回車> 。請注意該命令只改變光標所在行的第一個匹配
串。
3. 輸入 :s/thee/the/g 則是替換全行的匹配串。
---> the best time to see thee flowers is in thee spring.
4. 要替換兩行之間出現的每個匹配串,請輸入 :#,#s/old/new/g (#,#代表的是
兩行的行號)。輸入 :%s/old/new/g 則是替換整個文件中的每個匹配串。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第四講小結
1. Ctrl-g 用于顯示當前光標所在位置和文件狀態信息。Shift-G 用于將光標跳
轉至文件最後一行。先敲入一個行號然後按 Shift-G 則是將光標移動至該行
號代表的行。
2. 輸入 / 然後緊隨一個字符串是則是在當前所編輯的文檔中向後查找該字符串。
輸入問號 ? 然後緊隨一個字符串是則是在當前所編輯的文檔中向前查找該字
符串。完成一次查找之後按 n 鍵則是重復上一次的命令,可在同一方向上查
找下一個字符串所在;或者按 Shift-N 向相反方向查找下該字符串所在。
3. 如果光標當前位置是括號(、)、[、]、{、},按 % 可以將光標移動到配對的
括號上。
4. 在一行內替換頭一個字符串 old 為新的字符串 new請輸入 :s/old/new
在一行內替換所有的字符串 old 為新的字符串 new請輸入 :s/old/new/g
在兩行內替換所有的字符串 old 為新的字符串 new請輸入 :#,#s/old/new/g
在文件內替換所有的字符串 old 為新的字符串 new請輸入 :%s/old/new/g
進行全文替換時詢問用戶確認每個替換需添加 c 選項,請輸入 :%s/old/new/gc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第五講第一節︰在 VIM 內執行外部命令的方法
** 輸入 :! 然後緊隨著輸入一個外部命令可以執行該外部命令。**
1. 按下我們所熟悉的 : 命令設置光標到屏幕底部。這樣就可以讓您輸入命令了。
2. 接著輸入感嘆號 ! 這個字符,這樣就允許您執行外部的 shell 命令了。
3. 我們以 ls 命令為例。輸入 !ls <回車> 。該命令就會列舉出您當前目錄的
內容,就如同您在命令行提示符下輸入 ls 命令的結果一樣。如果 !ls 沒起
作用,您可以試試 :!dir 看看。
---> 提示︰ 所有的外部命令都可以以這種方式執行。
---> 提示︰ 所有的 : 命令都必須以 <回車> 告終。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第五講第二節︰關于保存文件的更多信息
** 要將對文件的改動保存到文件中,請輸入 :w FILENAME **
1. 輸入 :!dir 或者 :!ls 獲知當前目錄的內容。您應當已知道最後還得敲
<回車> 吧。
2. 選擇一個尚未存在文件名,比如 TEST 。
3. 接著輸入 :w TEST (此處 TEST 是您所選擇的文件名。)
4. 該命令會以 TEST 為文件名保存整個文件 (VIM 教程)。為了確保正確保存,
請再次輸入 :!dir 查看您的目錄列表內容。
---> 請注意︰如果您退出 VIM 然後在以文件名 TEST 為參數進入,那麼該文件內
容應該同您保存時的文件內容是完全一樣的。
5. 現在您可以通過輸入 :!rm TEST 來刪除 TEST 文件了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第五講第三節︰一個具有選擇性的保存命令
** 要保存文件的部分內容,請輸入 :#,# w FILENAME **
1. 再來執行一次 :!dir 或者 :!ls 獲知當前目錄的內容,然後選擇一個合適的
不重名的文件名,比如 TEST 。
2. 接著將光標移動至本頁的最頂端,然後按 CTRL-g 找到該行的行號。別忘了
行號哦。
3. 接著把光標移動至本頁的最底端,再按一次 CTRL-g 。也別忘了這個行好哦。
4. 為了只保存文章的某個部分,請輸入 :#,# w TEST 。這裡的 #,# 就是上面
要求您記住的行號(頂端行號,底端行號),而 TEST 就是選定的文件名。
5. 最後,用 :!dir 確認文件是否正確保存。但是這次先別刪除掉。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第五講第四節︰提取和合並文件
** 要向當前文件中插入另外的文件的內容,請輸入 :r FILENAME **
1. 請鍵入 :!dir 確認您前面創建的 TEST 文件還在。
2. 然後將光標移動至當前頁面的頂端。
特別提示︰ 執行步驟3之後您將看到第五講第三節請屆時再往下移動回到這裡來。
3. 接著通過 :r TEST 將前面創建的名為 TEST 的文件提取進來。
特別提示︰您所提取進來的文件將從光標所在位置處開始置入。
4. 為了確認文件已經提取成功,移動光標回到原來的位置就可以注意有兩份第
五講第三節,一份是原本,另外一份是來自文件的副本。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第五講小結
1. :!command 用于執行一個外部命令 command。
請看一些實際例子︰
:!dir - 用于顯示當前目錄的內容。
:!rm FILENAME - 用于刪除名為 FILENAME 的文件。
2. :w FILENAME 可將當前 VIM 中正在編輯的文件保存到名為 FILENAME
的文件中。
3. :#,#w FILENAME 可將當前編輯文件第 # 行至第 # 行的內容保存到文件
FILENAME 中。
4. :r FILENAME 可提取磁盤文件 FILENAME 並將其插入到當前文件的光標位置
後面。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第六講第一節︰打開類命令
** 輸入 o 將在光標的下方打開新的一行並進入插入模式。**
1. 請將光標移動到本節中下面標記有 ---> 的那一行。
2. 接著輸入小寫的 o 在光標 *下方* 打開新的一行並進入插入模式。
3. 然後復制標記有 ---> 的行並按 <ESC> 鍵退出插入模式而進入正常模式。
---> After typing o the cursor is placed on the open line in Insert mode.
4. 為了在光標 *上方* 打開新的一行,只需要輸入大寫的 O 而不是小寫的 o
就可以了。請在下行測試一下吧。當光標處在在該行上時,按 Shift-O可以
在該行上方新開一行。
Open up a line above this by typing Shift-O while the cursor is on this line.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第六講第二節︰光標後插入類命令
** 輸入 a 將可在光標之後插入文本。 **
1. 請在正常模式下通過輸入 $ 將光標移動到本節中下面標記有 ---> 的第一行
的末尾。
2. 接著輸入小寫的 a 則可在光標之後插入文本了。大寫的 A 則可以直接在行
末插入文本。
提示︰輸入大寫 A 的操作方法可以在行末插入文本,避免了輸入 i光標定位到
最後一個字符,輸入的文本,<ESC> 回復正常模式,箭頭右鍵移動光標以及
x 刪除當前光標所在位置字符等等諸多繁雜的操作。
3. 操作之後第一行就可以補充完整了。請注意光標後插入文本與插入模式是基
本完全一致的,只是文本插入的位置定位稍有不同罷了。
---> This line will allow you to practice
---> This line will allow you to practice appending text to the end of a line.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第六講第三節︰另外一個置換類命令的版本
** 輸入大寫的 R 可連續替換多個字符。**
1. 請將光標移動到本節中下面標記有 ---> 的第一行。
2. 移動光標到第一行中不同于標有 ---> 的第二行的第一個單詞的開始,即單
詞 last 處。
3. 然後輸入大寫的 R 開始把第一行中的不同于第二行的剩余字符逐一輸入,就
可以全部替換掉原有的字符而使得第一行完全雷同第二行了。
---> To make the first line the same as the last on this page use the keys.
---> To make the first line the same as the second, type R and the new text.
4. 請注意︰如果您按 <ESC> 退出置換模式回復正常模式,尚未替換的文本將仍
然保持原狀。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第六講第四節︰設置類命令的選項
** 設置可使查找或者替換可忽略大小寫的選項 **
1. 要查找單詞 ignore 可在正常模式下輸入 /ignore 。要重復查找該詞,可以
重復按 n 鍵。
2. 然後設置 ic 選項(ic就是英文忽略大小寫Ignore Case的首字母縮寫詞),即
輸入︰
:set ic
3. 現在可以通過鍵入 n 鍵再次查找單詞 ignore。重復查找可以重復鍵入 n 鍵。
4. 然後設置 hlsearch 和 incsearch 這兩個選項,輸入以下內容︰
:set hls is
5. 現在可以再次輸入查找命令,看看會有什麼效果︰
/ignore
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第六講小結
1. 輸入小寫的 o 可以在光標下方打開新的一行並將光標置于新開的行首,進入
插入模式。
輸入大寫的 O 可以在光標上方打開新的一行並將光標置于新開的行首,進入
插入模式。
2. 輸入小寫的 a 可以在光標所在位置之後插入文本。
輸入大寫的 A 可以在光標所在行的行末之後插入文本。
3. 輸入大寫的 R 將進入替換模式,直至按 <ESC> 鍵退出替換模式而進入正常
模式。
4. 輸入 :set xxx 可以設置 xxx 選項。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第七講︰在線幫助命令
** 使用在線幫助系統 **
Vim 擁有一個細致全面的在線幫助系統。要啟動該幫助系統,請選擇如下三種方
法之一︰
- 按下 <HELP> 鍵 (如果鍵盤上有的話)
- 按下 <F1> 鍵 (如果鍵盤上有的話)
- 輸入 :help <回車>
輸入 :q <回車> 可以關閉幫助窗口。
提供一個正確的參數給":help"命令,您可以找到關于該主題的幫助。請試驗以
下參數(可別忘了按回車鍵哦。:)
:help w <回車>
:help c_<T <回車>
:help insert-index <回車>
:help user-manual <回車>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第八講︰創建一個啟動腳本
** 啟用vim的功能 **
Vim的功能特性要比vi多得多但大部分功能都沒有缺省激活。為了啟動更多的
功能您得創建一個vimrc文件。
1. 開始編輯vimrc文件這取決于您所使用的操作系統
:edit ~/.vimrc 這是Unix系統所使用的命令
:edit $VIM/_vimrc 這是Windows系統所使用的命令
2. 接著導入vimrc范例文件
:read $VIMRUNTIME/vimrc_example.vim
3. 保存文件,命令為︰
:write
在下次您啟動vim的時候編輯器就會有了語法高亮的功能。您可以繼續把您喜
歡的其它功能設置添加到這個vimrc文件中。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vim 教程到此結束。本教程只是為了簡明地介紹一下vim編輯器但已足以讓您
很容易學會使用本編輯器了。毋庸質疑vim還有很多很多的命令本教程所介
紹的還差得遠著呢。所以您要精通的話,還望繼續努力哦。下一步您可以閱讀
vim手冊使用的命令是
:help user-manual
為了更進一步的參考和學習,以下這本書值得推薦︰
Vim - Vi Improved - 作者Steve Oualline
出版社New Riders
這是第一本完全講解vim的書籍。對于初學者特別有用。其中還包含有大量實例
和圖示。欲知詳情,請訪問 http://iccf-holland.org/click5.html
以下這本書比較老了而且內容主要是vi而不是vim但是也值得推薦
Learning the Vi Editor - 作者Linda Lamb
出版社O'Reilly & Associates Inc.
這是一本不錯的書通過它您幾乎能夠了解到全部vi能夠做到的事情。此書的第
六個版本也包含了一些關于vim的信息。
本教程是由來自Calorado School of Minese的Michael C. Pierce、Robert K.
Ware 所編寫的其中來自Colorado State University的Charles Smith提供了
很多創意。編者通信地址是︰
bware@mines.colorado.edu
本教程已由Bram Moolenaar專為vim進行修訂。
譯制者附言︰
===========
簡體中文教程翻譯版之譯制者為梁昌泰 <beos@turbolinux.com.cn>,還有
另外一個聯系地址linuxrat@gnuchina.org。
繁體中文教程是從簡體中文教程翻譯版使用 Debian GNU/Linux 中文項目小
組的于廣輝先生編寫的中文漢字轉碼器 autoconvert 轉換而成的,並對轉
換的結果做了一些細節的改動。
變更記錄︰
=========
2002年08月30日 梁昌泰 <beos@turbolinux.com.cn>
感謝 RMS@SMTH 的指正,將多處錯誤修正。
2002年04月22日 梁昌泰 <linuxrat@gnuchina.org>
感謝 xuandong@sh163.net 的指正,將兩處錯別字修正。
2002年03月18日 梁昌泰 <linuxrat@gnuchina.org>
根據Bram Molenaar先生在2002年03月16日的來信要求將vimtutor1.4中譯
版升級到vimtutor1.5。
2001年11月15日 梁昌泰 <linuxrat@gnuchina.org>
將vimtutor1.4中譯版提交給Bram Molenaar和Sven Guckes。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@@ -527,7 +527,7 @@ STDMETHODIMP_(ULONG) CShellExt::Release()
//
// PARAMETERS:
// pIDFolder - Specifies the parent folder
// pDataObj - Spefifies the set of items selected in that folder.
// pDataObj - Specifies the set of items selected in that folder.
// hRegKey - Specifies the type of the focused item in the selection.
//
// RETURN VALUE:

View File

@@ -330,7 +330,7 @@ perl_env :
Also VMS_JACKETS.EXE from OpenVMS Porting Library.
Please note, that GTK uses /name=(as_is,short)/float=ieee/ieee=denorm
complier directives that is not compatible with "standard" VMS usage,
compiler directives that is not compatible with "standard" VMS usage,
therefore other external features might fail as PERL, PYTHON and TCL
support.

View File

@@ -1,6 +1,6 @@
#
# Makefile for VIM on Win32, using Cygnus gcc
# Last updated by Dan Sharp. Last Change: 2013 Feb 17
# Last updated by Dan Sharp. Last Change: 2013 Apr 22
#
# Also read INSTALLpc.txt!
#
@@ -48,7 +48,7 @@
# USEDLL no or yes: set to yes to use the Runtime library DLL (no)
# For USEDLL=yes the cygwin1.dll is required to run Vim.
# For "no" the mingw-gcc-g++ package or the mingw64-i686-gcc-g++
# package is required to complie Vim. Or set CC to gcc-3 and add
# package is required to compile Vim. Or set CC to gcc-3 and add
# -L/lib/w32api to EXTRA_LIBS.
# POSTSCRIPT no or yes: set to yes for PostScript printing (no)
# FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG)
@@ -672,6 +672,9 @@ endif
$(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_DEP)
$(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL)
$(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o
$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
$(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o

View File

@@ -765,6 +765,9 @@ if_perl.c: if_perl.xs typemap
$(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC)
$(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL)
$(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o
$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
$(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o

View File

@@ -20,7 +20,7 @@
#
# !!!! After changing features do "nmake clean" first !!!!
#
# Feature Set: FEATURES=[TINY, SMALL, NORMAL, BIG, HUGE] (default is BIG)
# Feature Set: FEATURES=[TINY, SMALL, NORMAL, BIG, HUGE] (default is BIG)
#
# GUI interface: GUI=yes (default is no)
#
@@ -87,20 +87,20 @@
# GETTEXT=[yes or no] (default is yes)
# See http://sourceforge.net/projects/gettext/
#
# PostScript printing: POSTSCRIPT=yes (default is no)
# PostScript printing: POSTSCRIPT=yes (default is no)
#
# Netbeans Support: NETBEANS=[yes or no] (default is yes if GUI is yes)
# Netbeans Support: NETBEANS=[yes or no] (default is yes if GUI is yes)
#
# XPM Image Support: XPM=[path to XPM directory]
# Default is "xpm", using the files included in the distribution.
# Use "no" to disable this feature.
# XPM Image Support: XPM=[path to XPM directory]
# Default is "xpm", using the files included in the distribution.
# Use "no" to disable this feature.
#
# Optimization: OPTIMIZE=[SPACE, SPEED, MAXSPEED] (default is MAXSPEED)
# Optimization: OPTIMIZE=[SPACE, SPEED, MAXSPEED] (default is MAXSPEED)
#
# Processor Version: CPUNR=[i386, i486, i586, i686, pentium4] (default is
# i386)
# Processor Version: CPUNR=[i386, i486, i586, i686, pentium4] (default is
# i386)
#
# Version Support: WINVER=[0x0400, 0x0500] (default is 0x0400)
# Version Support: WINVER=[0x0400, 0x0500] (default is 0x0400)
#
# Debug version: DEBUG=yes
# Mapfile: MAP=[no, yes or lines] (default is yes)
@@ -108,10 +108,12 @@
# yes: Write a normal mapfile.
# lines: Write a mapfile with line numbers (only for VC6 and later)
#
# Netbeans Debugging Support: NBDEBUG=[yes or no] (should be no, yes
# doesn't work)
# Netbeans Debugging Support: NBDEBUG=[yes or no] (should be no, yes
# doesn't work)
#
# Visual C Version: MSVCVER=m.n (default derived from nmake if undefined)
# Visual C Version: MSVCVER=m.n (default derived from nmake if undefined)
#
# Static Code Analysis: ANALYZE=yes (works with VS2012 only)
#
# You can combine any of these interfaces
#
@@ -416,9 +418,12 @@ MSVCVER = 11.0
!if "$(_NMAKE_VER)" == "11.00.51106.1"
MSVCVER = 11.0
!endif
!if "$(_NMAKE_VER)" == "11.00.60315.1"
MSVCVER = 11.0
!endif
!endif
# Abort bulding VIM if version of VC is unrecognised.
# Abort building VIM if version of VC is unrecognised.
!ifndef MSVCVER
!message *** ERROR
!message Cannot determine Visual C version being used. If you are using the
@@ -476,6 +481,11 @@ OPTFLAG = $(OPTFLAG) /GL
CFLAGS=$(CFLAGS) $(WP64CHECK)
!endif
# Static code analysis generally available starting with VS2012
!if ("$(ANALYZE)" == "yes") && ("$(MSVCVER)" == "11.0")
CFLAGS=$(CFLAGS) /analyze
!endif
CFLAGS = $(CFLAGS) $(OPTFLAG) -DNDEBUG $(CPUARG)
RCFLAGS = $(rcflags) $(rcvars) -DNDEBUG
! ifdef USE_MSVCRT
@@ -1163,7 +1173,7 @@ $(OUTDIR)/popupmnu.obj: $(OUTDIR) popupmnu.c $(INCL)
$(OUTDIR)/quickfix.obj: $(OUTDIR) quickfix.c $(INCL)
$(OUTDIR)/regexp.obj: $(OUTDIR) regexp.c $(INCL)
$(OUTDIR)/regexp.obj: $(OUTDIR) regexp.c regexp_nfa.c $(INCL)
$(OUTDIR)/screen.obj: $(OUTDIR) screen.c $(INCL)

View File

@@ -251,7 +251,7 @@ clean:
# generate GlobalSymbolTable, which speeds up the compile time.
#
# A preprocessing stage is used to work arounda bug in the GST generator, in
# A preprocessing stage is used to work around a bug in the GST generator, in
# that it does not handle nested makefiles properly in this stage.
# Ignore error message for not producing any code (105).
$(GST): scoptions vim.h keymap.h macros.h ascii.h term.h structs.h
@@ -283,7 +283,7 @@ $(PRO): $(GST) vim.h
.c.pro:
$(CC) $(CFLAGS) GPFILE=proto/$*.pro $(PROPT) $*.c
# dependancies
# dependencies
blowfish.o: blowfish.c
proto/blowfish.pro: blowfish.c
buffer.o: buffer.c

View File

@@ -34,7 +34,7 @@ DECC = YES
# SMALL - Few features enabled, as basic as possible
# NORMAL - A default selection of features enabled
# BIG - Many features enabled, as rich as possible. (default)
# HUGE - All possible featues enabled.
# HUGE - All possible features enabled.
# Please select one of these alternatives above.
MODEL = HUGE
@@ -55,7 +55,7 @@ MODEL = HUGE
# Comment out if you want the compiler version with :ver command.
# NOTE: This part can make some complications if you're using some
# predefined symbols/flags for your compiler. If does, just leave behind
# the comment varialbe CCVER.
# the comment variable CCVER.
CCVER = YES
# Uncomment if want a debug version. Resulting executable is DVIM.EXE

View File

@@ -4,7 +4,7 @@
# *************************************************************
# * WARNING!
# * This was originally produced by the IDE, but has since been
# * modifed to make it work properly. Adjust with care!
# * modified to make it work properly. Adjust with care!
# * In particular, leave LinkerLocalOptsAtW16_gvim16dexe alone
# * unless you are a guru.
# *************************************************************

View File

@@ -200,7 +200,7 @@
#Solaris 2.5 (sun4m) cc (SC4.0) +X11R6 +GUI (CDE) 4.6b (E) Andrew Large
#Solaris 2.5 cc +X11 +GUI Athena 4.2 (9) Sonia Heimann
#Solaris 2.5 gcc 2.5.6 +X11 Motif 5.0m (R) Ant. Colombo
#Solaris 2.6 gcc 2.8.1 ncursus 5.3 (G) Larry W. Virden
#Solaris 2.6 gcc 2.8.1 ncurses 5.3 (G) Larry W. Virden
#Solaris with -lthread 5.5 (W) K. Nagano
#Solaris gcc (b) Riccardo
#SunOS 4.1.x +X11 -GUI 5.1b (J) Bram Moolenaar
@@ -231,8 +231,8 @@
# (D) Uncomment lines below for QNX
# (E) You might want to use termlib instead of termcap, see below.
# (F) See below for instructions.
# (G) Using ncursus version 4.2 has reported to cause a crash. Use the
# Sun cursus library instead.
# (G) Using ncurses version 4.2 has reported to cause a crash. Use the
# Sun curses library instead.
# (H) See line for EXTRA_LIBS below.
# (I) SINIX-N 5.42 and 5.43 need some EXTRA_LIBS. Also for Reliant-Unix.
# (J) If you get undefined symbols, see below for a solution.
@@ -402,7 +402,7 @@ CClink = $(CC)
# to the command line. If you see strange flags during compilation, check in
# auto/config.mk where they come from. If it's PERL_CFLAGS, try commenting
# the next line.
# When you get an error for a missing "perl.exp" file, try creating an emtpy
# When you get an error for a missing "perl.exp" file, try creating an empty
# one: "touch perl.exp".
# This requires at least "small" features, "tiny" doesn't work.
#CONF_OPT_PERL = --enable-perlinterp
@@ -454,7 +454,7 @@ CClink = $(CC)
# MULTIBYTE - To edit multi-byte characters.
# Uncomment this when you want to edit a multibyte language.
# It's automatically enabled with big features or IME support.
# It's automatically enabled with normal features, GTK or IME support.
# Note: Compile on a machine where setlocale() actually works, otherwise the
# configure tests may fail.
#CONF_OPT_MULTIBYTE = --enable-multibyte
@@ -601,7 +601,7 @@ LINT_OPTIONS = -beprxzF
# Might not work with GUI or Perl.
# For unknown reasons adding "-lc" fixes a linking problem with some versions
# of GCC. That's probably a bug in the "-pg" implementation.
# After running Vim see the profile result with: gmon vim gmon.out | vim -
# After running Vim see the profile result with: gprof vim gmon.out | vim -
# Need to recompile everything after changing this: "make clean" "make".
#PROFILE_CFLAGS = -pg -g -DWE_ARE_PROFILING
#PROFILE_LIBS = -pg
@@ -1294,7 +1294,7 @@ ALL_GUI_PRO = gui.pro gui_gtk.pro gui_motif.pro gui_xmdlg.pro gui_athena.pro gu
### prototype headers are ignored due to -DPROTO, system
### headers #include <...> are ignored if we use the -MM option, as
### e.g. provided by gcc-cpp.
### Include FEAT_GUI to get gependency on gui.h
### Include FEAT_GUI to get dependency on gui.h
### Need to change "-I /<path>" to "-isystem /<path>" for GCC 3.x.
CPP_DEPEND = $(CC) -I$(srcdir) -M$(CPP_MM) \
`echo "$(DEPEND_CFLAGS)" $(DEPEND_CFLAGS_FILTER)`
@@ -1717,7 +1717,7 @@ CCC = $(CC) -c -I$(srcdir) $(ALL_CFLAGS)
# Link the target for normal use or debugging.
# A shell script is used to try linking without unneccesary libraries.
# A shell script is used to try linking without unnecessary libraries.
$(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h
$(CCC) version.c -o objects/version.o
@LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
@@ -1837,8 +1837,8 @@ types.vim: $(TAGS_SRC) $(TAGS_INCL)
#
# This will produce a lot of garbage on your screen, including a few error
# messages. Don't worry about that.
# If there is a real error, there will be a difference between "test.out" and
# a "test99.ok" file.
# If there is a real error, there will be a difference between "testXX.out" and
# a "testXX.ok" file.
# If everything is alright, the final message will be "ALL DONE". If not you
# get "TEST FAILURE".
#
@@ -1861,6 +1861,19 @@ unittest unittests: $(UNITTEST_TARGETS)
./$$t || exit 1; echo $$t passed; \
done
# Run individual test, assuming that Vim was already compiled.
test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 \
test11 test12 test13 test14 test15 test16 test17 test18 test19 \
test21 test22 test23 test24 test25 test26 test27 test28 test29 \
test31 test32 test33 test34 test35 test36 test37 test38 test39 \
test41 test42 test43 test44 test45 test46 test47 test48 test49 \
test51 test52 test53 test54 test55 test56 test57 test58 test59 \
test61 test62 test63 test64 test65 test66 test67 test68 test69 \
test71 test72 test73 test74 test75 test76 test77 test78 test79 \
test81 test82 test83 test84 test85 test86 test87 test88 test89 \
test91 test92 test93 test94 test95 test96 test97 test98 test99:
cd testdir; rm $@.out; $(MAKE) -f Makefile $@.out VIMPROG=../$(VIMTARGET)
testclean:
cd testdir; $(MAKE) -f Makefile clean
if test -d $(PODIR); then \
@@ -2664,7 +2677,7 @@ objects/popupmnu.o: popupmnu.c
objects/quickfix.o: quickfix.c
$(CCC) -o $@ quickfix.c
objects/regexp.o: regexp.c
objects/regexp.o: regexp.c regexp_nfa.c
$(CCC) -o $@ regexp.c
objects/screen.o: screen.c
@@ -2779,9 +2792,9 @@ bundle-rsrc: os_mac.rsr.hqx
mv gui_mac.rsrc.rsrcfork $(RESDIR)/$(VIMNAME).rsrc
# po/Make_osx.pl says something about generating a Mac message file
# for Ukrananian. Would somebody using Mac OS X in Ukranian
# for Ukrainian. Would somebody using Mac OS X in Ukrainian
# *really* be upset that Carbon Vim was not localised in
# Ukranian?
# Ukrainian?
#
#bundle-language: bundle-dir po/Make_osx.pl
# cd po && perl Make_osx.pl --outdir ../$(RESDIR) $(MULTILANG)
@@ -2938,10 +2951,10 @@ objects/quickfix.o: quickfix.c vim.h auto/config.h feature.h os_unix.h \
auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
globals.h farsi.h arabic.h
objects/regexp.o: regexp.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
arabic.h
objects/regexp.o: regexp.c regexp_nfa.c vim.h auto/config.h feature.h os_unix.h \
auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
globals.h farsi.h arabic.h
objects/screen.o: screen.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \

View File

@@ -654,7 +654,7 @@ void COleAutomationControl::ErrDiag ()
}
char Buf[256];
sprintf (Buf, "An OLE error occured:\r\nCode = %s\r\nResult = %lx.",
sprintf (Buf, "An OLE error occurred:\r\nCode = %s\r\nResult = %lx.",
(char*) ErrName, m_hResult);
MessageBox (NULL, Buf, "OLE Error", MB_OK);
}

View File

@@ -220,7 +220,7 @@ Troubleshooting
2. Close Visual Studio.
3. Delete VisVim.dll or move it somewhere it can't be found.
4. Run Visual Studio.
5. Tools -> Cursomize ->Add-ins and Macro-Files.
5. Tools -> Customize ->Add-ins and Macro-Files.
6. A message appears:
".../VisVim.dll" "This add-in no longer exists. It will
no longer be displayed."
@@ -298,7 +298,7 @@ P9 Switching to DevStudio using ALT-TAB may get annoying. Would be nice to
P8 Execute :tag command in Vim for word under cursor in DevStudio
P7 Controlling the Visual Studio Debugger from inside Vim
See message above. Also a 'Debug' highligh group and a
See message above. Also a 'Debug' highlight group and a
command to highlight a certain line would be necessary.
P6 Provide an option to open the current file in VisVim in

41
src/auto/configure vendored
View File

@@ -4737,15 +4737,24 @@ $as_echo "no" >&6; }
if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
else
for LUA_SOVER in "${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
for i in 0 1 2 3 4 5 6 7 8 9; do
if test -f "${vi_cv_path_lua_pfx}/lib/liblua${LUA_SOVER}.$i"; then
LUA_SONAME=".$i"
break
fi
multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
if test "X$multiarch" != "X"; then
lib_multiarch="lib/${multiarch}"
fi
for subdir in "${lib_multiarch}" lib64 lib; do
if test -z "$subdir"; then
continue
fi
for sover in "${vi_cv_version_lua}.so" "-${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
for i in .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 ""; do
if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${sover}$i"; then
sover2="$i"
break 3
fi
done
done
vi_cv_dll_name_lua="liblua${LUA_SOVER}$LUA_SONAME"
done
vi_cv_dll_name_lua="liblua${sover}$sover2"
fi
$as_echo "#define DYNAMIC_LUA 1" >>confdefs.h
@@ -5280,10 +5289,10 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python_version" >&5
$as_echo "$vi_cv_var_python_version" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Python is 1.4 or better" >&5
$as_echo_n "checking Python is 1.4 or better... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Python is 2.2 or better" >&5
$as_echo_n "checking Python is 2.2 or better... " >&6; }
if ${vi_cv_path_python} -c \
"import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
"import sys; sys.exit(${vi_cv_var_python_version} < 2.2)"
then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yep" >&5
$as_echo "yep" >&6; }
@@ -5822,7 +5831,7 @@ else
/* If this program fails, then RTLD_GLOBAL is needed.
* RTLD_GLOBAL will be used and then it is not possible to
* have both python versions enabled in the same vim instance.
* Only the first pyhton version used will be switched on.
* Only the first python version used will be switched on.
*/
int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
@@ -5888,7 +5897,7 @@ else
/* If this program fails, then RTLD_GLOBAL is needed.
* RTLD_GLOBAL will be used and then it is not possible to
* have both python versions enabled in the same vim instance.
* Only the first pyhton version used will be switched on.
* Only the first python version used will be switched on.
*/
int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
@@ -7647,7 +7656,11 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if X11 header files implicitly declare return values" >&5
$as_echo_n "checking if X11 header files implicitly declare return values... " >&6; }
cflags_save=$CFLAGS
CFLAGS="$CFLAGS $X_CFLAGS -Werror"
if test "$GCC" = yes; then
CFLAGS="$CFLAGS $X_CFLAGS -Werror"
else
CFLAGS="$CFLAGS $X_CFLAGS"
fi
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <X11/Xlib.h>
@@ -10580,7 +10593,7 @@ if test "x$vim_cv_tty_group" != "xworld" ; then
_ACEOF
if test "x$vim_cv_tty_mode" = "x" ; then
as_fn_error "It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (propably 0620)" "$LINENO" 5
as_fn_error "It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (probably 0620)" "$LINENO" 5
else
$as_echo "#define PTYMODE 0620" >>confdefs.h

View File

@@ -1,5 +1,5 @@
:: command to build big Vim with OLE, Perl, Python, Ruby and Tcl
SET VCDIR="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\"
SET TOOLDIR=E:\
%VCDIR%nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=E:\perl514 DYNAMIC_PERL=yes PERL_VER=514 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python32 DYNAMIC_PYTHON3=yes PYTHON3_VER=32 RUBY=%TOOLDIR%ruby192 DYNAMIC_RUBY=yes RUBY_VER=192 RUBY_VER_LONG=1.9.2 TCL=%TOOLDIR%tcl TCL_VER=85 TCL_VER_LONG=8.5 DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes
%VCDIR%nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=E:\perl514 DYNAMIC_PERL=yes PERL_VER=514 PYTHON=%TOOLDIR%python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=%TOOLDIR%python32 DYNAMIC_PYTHON3=yes PYTHON3_VER=32 RUBY=%TOOLDIR%ruby192 DYNAMIC_RUBY=yes RUBY_VER=19 RUBY_VER_LONG=1.9.2 TCL=%TOOLDIR%tcl TCL_VER=85 TCL_VER_LONG=8.5 DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes

View File

@@ -648,6 +648,9 @@ free_buffer(buf)
buf_T *buf;
{
free_buffer_stuff(buf, TRUE);
#ifdef FEAT_EVAL
unref_var_dict(buf->b_vars);
#endif
#ifdef FEAT_LUA
lua_buffer_free(buf);
#endif
@@ -689,8 +692,8 @@ free_buffer_stuff(buf, free_options)
#endif
}
#ifdef FEAT_EVAL
vars_clear(&buf->b_vars.dv_hashtab); /* free all internal variables */
hash_init(&buf->b_vars.dv_hashtab);
vars_clear(&buf->b_vars->dv_hashtab); /* free all internal variables */
hash_init(&buf->b_vars->dv_hashtab);
#endif
#ifdef FEAT_USR_CMDS
uc_clear(&buf->b_ucmds); /* clear local user commands */
@@ -928,7 +931,8 @@ do_bufdel(command, arg, addr_count, start_bnr, end_bnr, forceit)
if (!VIM_ISDIGIT(*arg))
{
p = skiptowhite_esc(arg);
bnr = buflist_findpat(arg, p, command == DOBUF_WIPE, FALSE);
bnr = buflist_findpat(arg, p, command == DOBUF_WIPE,
FALSE, FALSE);
if (bnr < 0) /* failed */
break;
arg = p;
@@ -1693,6 +1697,17 @@ buflist_new(ffname, sfname, lnum, flags)
vim_free(ffname);
return NULL;
}
#ifdef FEAT_EVAL
/* init b: variables */
buf->b_vars = dict_alloc();
if (buf->b_vars == NULL)
{
vim_free(ffname);
vim_free(buf);
return NULL;
}
init_var_dict(buf->b_vars, &buf->b_bufvar, VAR_SCOPE);
#endif
}
if (ffname != NULL)
@@ -1777,10 +1792,6 @@ buflist_new(ffname, sfname, lnum, flags)
buf->b_wininfo->wi_fpos.lnum = lnum;
buf->b_wininfo->wi_win = curwin;
#ifdef FEAT_EVAL
/* init b: variables */
init_var_dict(&buf->b_vars, &buf->b_bufvar, VAR_SCOPE);
#endif
#ifdef FEAT_SYN_HL
hash_init(&buf->b_s.b_keywtab);
hash_init(&buf->b_s.b_keywtab_ic);
@@ -1994,7 +2005,7 @@ buflist_getfile(n, lnum, options, forceit)
* "buf" if one exists */
if (swb_flags & SWB_USEOPEN)
wp = buf_jump_open_win(buf);
/* If 'switchbuf' contians "usetab": jump to first window in any tab
/* If 'switchbuf' contains "usetab": jump to first window in any tab
* page containing "buf" if one exists */
if (wp == NULL && (swb_flags & SWB_USETAB))
wp = buf_jump_open_tab(buf);
@@ -2129,18 +2140,20 @@ buflist_findname_stat(ffname, stp)
return NULL;
}
#if defined(FEAT_LISTCMDS) || defined(FEAT_EVAL) || defined(FEAT_PERL) || defined(PROTO)
#if defined(FEAT_LISTCMDS) || defined(FEAT_EVAL) || defined(FEAT_PERL) \
|| defined(PROTO)
/*
* Find file in buffer list by a regexp pattern.
* Return fnum of the found buffer.
* Return < 0 for error.
*/
int
buflist_findpat(pattern, pattern_end, unlisted, diffmode)
buflist_findpat(pattern, pattern_end, unlisted, diffmode, curtab_only)
char_u *pattern;
char_u *pattern_end; /* pointer to first char after pattern */
int unlisted; /* find unlisted buffers */
int diffmode UNUSED; /* find diff-mode buffers only */
int curtab_only; /* find buffers in current tab only */
{
buf_T *buf;
regprog_T *prog;
@@ -2208,6 +2221,23 @@ buflist_findpat(pattern, pattern_end, unlisted, diffmode)
#endif
&& buflist_match(prog, buf) != NULL)
{
if (curtab_only)
{
/* Ignore the match if the buffer is not open in
* the current tab. */
#ifdef FEAT_WINDOWS
win_T *wp;
for (wp = firstwin; wp != NULL; wp = wp->w_next)
if (wp->w_buffer == buf)
break;
if (wp == NULL)
continue;
#else
if (curwin->w_buffer != buf)
continue;
#endif
}
if (match >= 0) /* already found a match */
{
match = -2;
@@ -2381,12 +2411,7 @@ fname_match(prog, name)
if (name != NULL)
{
regmatch.regprog = prog;
#ifdef CASE_INSENSITIVE_FILENAME
regmatch.rm_ic = TRUE; /* Always ignore case */
#else
regmatch.rm_ic = FALSE; /* Never ignore case */
#endif
regmatch.rm_ic = p_fic; /* ignore case when 'fileignorecase' is set */
if (vim_regexec(&regmatch, name, (colnr_T)0))
match = name;
else
@@ -3481,7 +3506,7 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar,
char_u *p;
char_u *s;
char_u *t;
char_u *linecont;
int byteval;
#ifdef FEAT_EVAL
win_T *o_curwin;
buf_T *o_curbuf;
@@ -3548,12 +3573,21 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar,
fillchar = '-';
#endif
/*
* Get line & check if empty (cursorpos will show "0-1").
* If inversion is possible we use it. Else '=' characters are used.
*/
linecont = ml_get_buf(wp->w_buffer, wp->w_cursor.lnum, FALSE);
empty_line = (*linecont == NUL);
/* Get line & check if empty (cursorpos will show "0-1"). Note that
* p will become invalid when getting another buffer line. */
p = ml_get_buf(wp->w_buffer, wp->w_cursor.lnum, FALSE);
empty_line = (*p == NUL);
/* Get the byte value now, in case we need it below. This is more
* efficient than making a copy of the line. */
if (wp->w_cursor.col > (colnr_T)STRLEN(p))
byteval = 0;
else
#ifdef FEAT_MBYTE
byteval = (*mb_ptr2char)(p + wp->w_cursor.col);
#else
byteval = p[wp->w_cursor.col];
#endif
groupdepth = 0;
p = out;
@@ -3931,16 +3965,7 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar,
case STL_BYTEVAL_X:
base = 'X';
case STL_BYTEVAL:
if (wp->w_cursor.col > (colnr_T)STRLEN(linecont))
num = 0;
else
{
#ifdef FEAT_MBYTE
num = (*mb_ptr2char)(linecont + wp->w_cursor.col);
#else
num = linecont[wp->w_cursor.col];
#endif
}
num = byteval;
if (num == NL)
num = 0;
else if (num == CAR && get_fileformat(wp->w_buffer) == EOL_MAC)
@@ -4526,7 +4551,7 @@ do_arg_all(count, forceit, keep_tabs)
* When the ":tab" modifier was used do this for all tab pages.
*/
if (had_tab > 0)
goto_tabpage_tp(first_tabpage, TRUE);
goto_tabpage_tp(first_tabpage, TRUE, TRUE);
for (;;)
{
tpnext = curtab->tp_next;
@@ -4638,7 +4663,7 @@ do_arg_all(count, forceit, keep_tabs)
if (!valid_tabpage(tpnext))
tpnext = first_tabpage; /* start all over...*/
# endif
goto_tabpage_tp(tpnext, TRUE);
goto_tabpage_tp(tpnext, TRUE, TRUE);
}
/*
@@ -4742,13 +4767,13 @@ do_arg_all(count, forceit, keep_tabs)
if (last_curtab != new_curtab)
{
if (valid_tabpage(last_curtab))
goto_tabpage_tp(last_curtab, TRUE);
goto_tabpage_tp(last_curtab, TRUE, TRUE);
if (win_valid(last_curwin))
win_enter(last_curwin, FALSE);
}
/* to window with first arg */
if (valid_tabpage(new_curtab))
goto_tabpage_tp(new_curtab, TRUE);
goto_tabpage_tp(new_curtab, TRUE, TRUE);
if (win_valid(new_curwin))
win_enter(new_curwin, FALSE);
@@ -4800,7 +4825,7 @@ ex_buffer_all(eap)
*/
#ifdef FEAT_WINDOWS
if (had_tab > 0)
goto_tabpage_tp(first_tabpage, TRUE);
goto_tabpage_tp(first_tabpage, TRUE, TRUE);
for (;;)
{
#endif
@@ -4840,7 +4865,7 @@ ex_buffer_all(eap)
/* Without the ":tab" modifier only do the current tab page. */
if (had_tab == 0 || tpnext == NULL)
break;
goto_tabpage_tp(tpnext, TRUE);
goto_tabpage_tp(tpnext, TRUE, TRUE);
}
#endif

View File

@@ -306,7 +306,7 @@ esac
AC_SUBST(line_break)
if test "$cf_cv_ebcdic" = "yes"; then
dnl If we have EBCDIC we most likley have z/OS Unix, let's test it!
dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
AC_MSG_CHECKING(for z/OS Unix)
case `uname` in
OS/390) zOSUnix="yes";
@@ -494,17 +494,26 @@ if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
else
dnl Determine the SONAME for the current version, but fallback to
dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found.
for LUA_SOVER in "${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
for i in 0 1 2 3 4 5 6 7 8 9; do
if test -f "${vi_cv_path_lua_pfx}/lib/liblua${LUA_SOVER}.$i"; then
LUA_SONAME=".$i"
break
fi
multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
if test "X$multiarch" != "X"; then
lib_multiarch="lib/${multiarch}"
fi
dnl Determine the sover for the current version, but fallback to
dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
for subdir in "${lib_multiarch}" lib64 lib; do
if test -z "$subdir"; then
continue
fi
for sover in "${vi_cv_version_lua}.so" "-${vi_cv_version_lua}.so" ".so.${vi_cv_version_lua}"; do
for i in .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 ""; do
if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${sover}$i"; then
sover2="$i"
break 3
fi
done
done
vi_cv_dll_name_lua="liblua${LUA_SOVER}$LUA_SONAME"
done
vi_cv_dll_name_lua="liblua${sover}$sover2"
fi
AC_DEFINE(DYNAMIC_LUA)
LUA_LIBS=""
@@ -854,10 +863,10 @@ if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; th
${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
]])
dnl -- it must be at least version 1.4
AC_MSG_CHECKING(Python is 1.4 or better)
dnl -- it must be at least version 2.2
AC_MSG_CHECKING(Python is 2.2 or better)
if ${vi_cv_path_python} -c \
"import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
"import sys; sys.exit(${vi_cv_var_python_version} < 2.2)"
then
AC_MSG_RESULT(yep)
@@ -1219,7 +1228,7 @@ if test "$python_ok" = yes && test "$python3_ok" = yes; then
/* If this program fails, then RTLD_GLOBAL is needed.
* RTLD_GLOBAL will be used and then it is not possible to
* have both python versions enabled in the same vim instance.
* Only the first pyhton version used will be switched on.
* Only the first python version used will be switched on.
*/
int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
@@ -1265,7 +1274,7 @@ if test "$python_ok" = yes && test "$python3_ok" = yes; then
/* If this program fails, then RTLD_GLOBAL is needed.
* RTLD_GLOBAL will be used and then it is not possible to
* have both python versions enabled in the same vim instance.
* Only the first pyhton version used will be switched on.
* Only the first python version used will be switched on.
*/
int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
@@ -1742,7 +1751,12 @@ else
dnl Check that the X11 header files don't use implicit declarations
AC_MSG_CHECKING(if X11 header files implicitly declare return values)
cflags_save=$CFLAGS
CFLAGS="$CFLAGS $X_CFLAGS -Werror"
dnl -Werror is GCC only, others like Solaris Studio might not like it
if test "$GCC" = yes; then
CFLAGS="$CFLAGS $X_CFLAGS -Werror"
else
CFLAGS="$CFLAGS $X_CFLAGS"
fi
AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
AC_MSG_RESULT(no),
CFLAGS="$CFLAGS -Wno-implicit-int"
@@ -2988,7 +3002,7 @@ rm -f conftest_grp
if test "x$vim_cv_tty_group" != "xworld" ; then
AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
if test "x$vim_cv_tty_mode" = "x" ; then
AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (propably 0620)])
AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (probably 0620)])
else
AC_DEFINE(PTYMODE, 0620)
fi

View File

@@ -1110,7 +1110,7 @@ ex_diffsplit(eap)
}
/*
* Set options to show difs for the current window.
* Set options to show diffs for the current window.
*/
void
ex_diffthis(eap)
@@ -2152,7 +2152,7 @@ ex_diffgetput(eap)
i = atol((char *)eap->arg);
else
{
i = buflist_findpat(eap->arg, p, FALSE, TRUE);
i = buflist_findpat(eap->arg, p, FALSE, TRUE, FALSE);
if (i < 0)
return; /* error message already given */
}

View File

@@ -1609,7 +1609,7 @@ change_openwith_choice(int idx)
/*
* Only add the choice for the open-with menu entry when gvim.exe was found
* and and regedit.exe exist.
* and regedit.exe exist.
*/
static void
init_openwith_choice(void)

View File

@@ -382,13 +382,21 @@ edit(cmdchar, startln, count)
else
ptr = (char_u *)"i";
set_vim_var_string(VV_INSERTMODE, ptr, 1);
set_vim_var_string(VV_CHAR, NULL, -1); /* clear v:char */
# endif
apply_autocmds(EVENT_INSERTENTER, NULL, NULL, FALSE, curbuf);
/* Since Insert mode was not started yet a call to check_cursor_col()
* may have moved the cursor, especially with the "A" command. */
if (curwin->w_cursor.col != save_cursor.col
&& curwin->w_cursor.lnum == save_cursor.lnum)
/* Make sure the cursor didn't move. Do call check_cursor_col() in
* case the text was modified. Since Insert mode was not started yet
* a call to check_cursor_col() may move the cursor, especially with
* the "A" command, thus set State to avoid that. Also check that the
* line number is still valid (lines may have been deleted).
* Do not restore if v:char was set to a non-empty string. */
if (!equalpos(curwin->w_cursor, save_cursor)
# ifdef FEAT_EVAL
&& *get_vim_var_str(VV_CHAR) == NUL
# endif
&& save_cursor.lnum <= curbuf->b_ml.ml_line_count)
{
int save_state = State;
@@ -1418,7 +1426,7 @@ docomplete:
normalchar:
/*
* Insert a nomal character.
* Insert a normal character.
*/
#ifdef FEAT_AUTOCMD
if (!p_paste)
@@ -1592,6 +1600,21 @@ ins_redraw(ready)
# endif
last_cursormoved = curwin->w_cursor;
}
#endif
#ifdef FEAT_AUTOCMD
/* Trigger TextChangedI if b_changedtick differs. */
if (!ready && has_textchangedI()
&& last_changedtick != curbuf->b_changedtick
# ifdef FEAT_INS_EXPAND
&& !pum_visible()
# endif
)
{
if (last_changedtick_buf == curbuf)
apply_autocmds(EVENT_TEXTCHANGEDI, NULL, NULL, FALSE, curbuf);
last_changedtick_buf = curbuf;
last_changedtick = curbuf->b_changedtick;
}
#endif
if (must_redraw)
update_screen(0);
@@ -4321,13 +4344,7 @@ ins_compl_get_exp(ini)
/* May change home directory back to "~". */
tilde_replace(compl_pattern, num_matches, matches);
ins_compl_add_matches(num_matches, matches,
#ifdef CASE_INSENSITIVE_FILENAME
TRUE
#else
FALSE
#endif
);
ins_compl_add_matches(num_matches, matches, p_fic || p_wic);
}
break;
@@ -7153,7 +7170,7 @@ cursor_up(n, upd_topline)
/*
* Count each sequence of folded lines as one logical line.
*/
/* go to the the start of the current fold */
/* go to the start of the current fold */
(void)hasFolding(lnum, &lnum, NULL);
while (n--)
@@ -7204,7 +7221,7 @@ cursor_down(n, upd_topline)
(void)hasFolding(lnum, NULL, &lnum);
#endif
/* This fails if the cursor is already in the last line or would move
* beyound the last line and '-' is in 'cpoptions' */
* beyond the last line and '-' is in 'cpoptions' */
if (lnum >= curbuf->b_ml.ml_line_count
|| (lnum + n > curbuf->b_ml.ml_line_count
&& vim_strchr(p_cpo, CPO_MINUS) != NULL))
@@ -7706,7 +7723,7 @@ fix_indent()
/*
* return TRUE if 'cinkeys' contains the key "keytyped",
* when == '*': Only if key is preceded with '*' (indent before insert)
* when == '!': Only if key is prededed with '!' (don't insert)
* when == '!': Only if key is preceded with '!' (don't insert)
* when == ' ': Only if key is not preceded with '*'(indent afterwards)
*
* "keytyped" can have a few special values:
@@ -8532,7 +8549,7 @@ ins_start_select(c)
#endif
/*
* <Insert> key in Insert mode: toggle insert/remplace mode.
* <Insert> key in Insert mode: toggle insert/replace mode.
*/
static void
ins_insert(replaceState)

Some files were not shown because too many files have changed in this diff Show More