aboutsummaryrefslogtreecommitdiff
path: root/runtime/doc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/doc')
-rw-r--r--runtime/doc/Makefile2
-rw-r--r--runtime/doc/api.txt99
-rw-r--r--runtime/doc/autocmd.txt54
-rw-r--r--runtime/doc/change.txt188
-rw-r--r--runtime/doc/cmdline.txt50
-rw-r--r--runtime/doc/debugger.txt107
-rw-r--r--runtime/doc/develop.txt254
-rw-r--r--runtime/doc/diff.txt24
-rw-r--r--runtime/doc/editing.txt162
-rw-r--r--runtime/doc/eval.txt646
-rw-r--r--runtime/doc/farsi.txt58
-rw-r--r--runtime/doc/filetype.txt154
-rw-r--r--runtime/doc/fold.txt27
-rw-r--r--runtime/doc/gui.txt37
-rw-r--r--runtime/doc/gui_w32.txt26
-rw-r--r--runtime/doc/help.txt7
-rw-r--r--runtime/doc/helphelp.txt6
-rw-r--r--runtime/doc/index.txt15
-rw-r--r--runtime/doc/insert.txt16
-rw-r--r--runtime/doc/intro.txt8
-rw-r--r--runtime/doc/map.txt2
-rw-r--r--runtime/doc/mbyte.txt102
-rw-r--r--runtime/doc/message.txt6
-rw-r--r--runtime/doc/motion.txt4
-rw-r--r--runtime/doc/msgpack_rpc.txt20
-rw-r--r--runtime/doc/nvim_clipboard.txt4
-rw-r--r--runtime/doc/nvim_provider.txt2
-rw-r--r--runtime/doc/nvim_python.txt3
-rw-r--r--runtime/doc/nvim_terminal_emulator.txt15
-rw-r--r--runtime/doc/options.txt619
-rw-r--r--runtime/doc/os_dos.txt292
-rw-r--r--runtime/doc/os_mac.txt116
-rw-r--r--runtime/doc/os_unix.txt57
-rw-r--r--runtime/doc/os_win32.txt100
-rw-r--r--runtime/doc/pattern.txt26
-rw-r--r--runtime/doc/pi_getscript.txt482
-rw-r--r--runtime/doc/pi_msgpack.txt139
-rw-r--r--runtime/doc/pi_netrw.txt378
-rw-r--r--runtime/doc/print.txt2
-rw-r--r--runtime/doc/quickfix.txt86
-rw-r--r--runtime/doc/quickref.txt23
-rw-r--r--runtime/doc/quotes.txt4
-rw-r--r--runtime/doc/recover.txt7
-rw-r--r--runtime/doc/remote.txt5
-rw-r--r--runtime/doc/repeat.txt37
-rw-r--r--runtime/doc/rileft.txt3
-rw-r--r--runtime/doc/scroll.txt27
-rw-r--r--runtime/doc/sign.txt6
-rw-r--r--runtime/doc/spell.txt4
-rw-r--r--runtime/doc/starting.txt98
-rw-r--r--runtime/doc/syntax.txt150
-rw-r--r--runtime/doc/tabpage.txt34
-rw-r--r--runtime/doc/tagsrch.txt31
-rw-r--r--runtime/doc/term.txt27
-rw-r--r--runtime/doc/todo.txt4903
-rw-r--r--runtime/doc/uganda.txt2
-rw-r--r--runtime/doc/undo.txt4
-rw-r--r--runtime/doc/usr_02.txt38
-rw-r--r--runtime/doc/usr_03.txt11
-rw-r--r--runtime/doc/usr_05.txt6
-rw-r--r--runtime/doc/usr_06.txt2
-rw-r--r--runtime/doc/usr_09.txt8
-rw-r--r--runtime/doc/usr_10.txt4
-rw-r--r--runtime/doc/usr_11.txt1
-rw-r--r--runtime/doc/usr_12.txt4
-rw-r--r--runtime/doc/usr_21.txt4
-rw-r--r--runtime/doc/usr_23.txt8
-rw-r--r--runtime/doc/usr_24.txt6
-rw-r--r--runtime/doc/usr_27.txt2
-rw-r--r--runtime/doc/usr_29.txt3
-rw-r--r--runtime/doc/usr_41.txt14
-rw-r--r--runtime/doc/usr_43.txt8
-rw-r--r--runtime/doc/various.txt59
-rw-r--r--runtime/doc/vi_diff.txt575
-rw-r--r--runtime/doc/vim_diff.txt91
-rw-r--r--runtime/doc/windows.txt53
76 files changed, 2446 insertions, 8211 deletions
diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile
index 07b4226151..7423e63673 100644
--- a/runtime/doc/Makefile
+++ b/runtime/doc/Makefile
@@ -20,7 +20,7 @@ all: tags html
# Use Vim to generate the tags file. Can only be used when Vim has been
# compiled and installed. Supports multiple languages.
vimtags: $(DOCS)
- $(VIMEXE) -u NONE -esX -c "helptags ++t ." -c quit
+ $(VIMEXE) -u NONE -es -c "helptags ++t ." -c quit
# Use "doctags" to generate the tags file. Only works for English!
tags: doctags $(DOCS)
diff --git a/runtime/doc/api.txt b/runtime/doc/api.txt
new file mode 100644
index 0000000000..ca79465e0d
--- /dev/null
+++ b/runtime/doc/api.txt
@@ -0,0 +1,99 @@
+*api.txt* For Nvim. {Nvim}
+
+
+ NVIM REFERENCE MANUAL by Thiago de Arruda
+
+The C API of Nvim *nvim-api*
+
+1. Introduction |nvim-api-intro|
+2. API Types |nvim-api-types|
+3. API metadata |nvim-api-metadata|
+4. Buffer highlighting |nvim-api-highlights|
+
+==============================================================================
+1. Introduction *nvim-api-intro*
+
+Nvim defines a C API as the primary way for external code to interact with
+the NVim core. In the present version of Nvim the API is primarily used by
+external processes to interact with Nvim using the msgpack-rpc protocol, see
+|msgpack-rpc|. The API will also be used from vimscript to access new Nvim core
+features, but this is not implemented yet. Later on, Nvim might be embeddable
+in C applications as libnvim, and the application will then control the
+embedded instance by calling the C API directly.
+
+==============================================================================
+2. API Types *nvim-api-types*
+
+Nvim's C API uses custom types for all functions. Some are just typedefs
+around C99 standard types, and some are Nvim defined data structures.
+
+Boolean -> bool
+Integer (signed 64-bit integer) -> int64_t
+Float (IEEE 754 double precision) -> double
+String -> {char* data, size_t size} struct
+
+Additionally, the following data structures are defined:
+
+Array
+Dictionary
+Object
+
+The following handle types are defined as integer typedefs, but are
+discriminated as separate types in an Object:
+
+Buffer -> enum value kObjectTypeBuffer
+Window -> enum value kObjectTypeWindow
+Tabpage -> enum value kObjectTypeTabpage
+
+==============================================================================
+3. API metadata *nvim-api-metadata*
+
+Nvim exposes metadata about the API as a Dictionary with the following keys:
+
+functions calling signature of the API functions
+types The custom handle types defined by Nvim
+error_types The possible kinds of errors an API function can exit with.
+
+This metadata is mostly useful for external programs accessing the api over
+msgpack-api, see |msgpack-rpc-api|.
+
+==============================================================================
+4. Buffer highlighting *nvim-api-highlights*
+
+Nvim allows plugins to add position-based highlights to buffers. This is
+similar to |matchaddpos()| but with some key differences. The added highlights
+are associated with a buffer and adapts to line insertions and deletions,
+similar to signs. It is also possible to manage a set of highlights as a group
+and delete or replace all at once.
+
+The intended use case are linter or semantic highlighter plugins that monitor
+a buffer for changes, and in the background compute highlights to the buffer.
+Another use case are plugins that show output in an append-only buffer, and
+want to add highlights to the outputs. Highlight data cannot be preserved
+on writing and loading a buffer to file, nor in undo/redo cycles.
+
+Highlights are registered using the |buffer_add_highlight| function, see the
+generated API documentation for details. If an external highlighter plugin is
+adding a large number of highlights in a batch, performance can be improved by
+calling |buffer_add_highlight| as an asynchronous notification, after first
+(synchronously) reqesting a source id. Here is an example using wrapper
+functions in the python client:
+>
+ src = vim.new_highlight_source()
+
+ buf = vim.current.buffer
+ for i in range(5):
+ buf.add_highlight("String",i,0,-1,src_id=src)
+
+ # some time later
+
+ buf.clear_highlight(src)
+<
+If the highlights don't need to be deleted or updated, just pass -1 as
+src_id (this is the default in python). |buffer_clear_highlight| can be used
+to clear highligts from a specific source, in a specific line range or the
+entire buffer by passing in the line range 0, -1 (the later is the default
+in python as used above).
+
+==============================================================================
+ vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 7b53bd64ca..25ae94f784 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt* For Vim version 7.4. Last change: 2014 Sep 23
+*autocmd.txt* For Vim version 7.4. Last change: 2015 Dec 05
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -251,12 +251,14 @@ Name triggered by ~
|SwapExists| detected an existing swap file
|TermOpen| when a terminal buffer is starting
+|TermClose| when a terminal buffer ends
Options
|FileType| when the 'filetype' option has been set
|Syntax| when the 'syntax' option has been set
|EncodingChanged| after the 'encoding' option has been changed
|TermChanged| after the value of 'term' has changed
+|OptionSet| after setting any option
Startup and exit
|VimEnter| after doing all the startup stuff
@@ -306,6 +308,8 @@ Name triggered by ~
|InsertCharPre| when a character was typed in Insert mode, before
inserting it
+|TextYankPost| when some text is yanked or deleted
+
|TextChanged| after a change was made to the text in Normal mode
|TextChangedI| after a change was made to the text in Insert mode
@@ -720,6 +724,18 @@ InsertCharPre When a character is typed in Insert mode,
It is not allowed to change the text |textlock|.
The event is not triggered when 'paste' is
set.
+ *TextYankPost*
+TextYankPost Just after a |yank| or |deleting| command, but not
+ if the black hole register |quote_| is used nor
+ for |setreg()|. Pattern must be * because its
+ meaning may change in the future.
+ Sets these |v:event| keys:
+ operator
+ regcontents
+ regname
+ regtype
+ Recursion is ignored.
+ It is not allowed to change the text |textlock|.
*InsertEnter*
InsertEnter Just before starting Insert mode. Also for
Replace mode and Virtual Replace mode. The
@@ -744,6 +760,26 @@ MenuPopup Just before showing the popup menu (under the
o Operator-pending
i Insert
c Command line
+ *OptionSet*
+OptionSet After setting an option. The pattern is
+ matched against the long option name.
+ The |v:option_old| variable indicates the
+ old option value, |v:option_new| variable
+ indicates the newly set value, the
+ |v:option_type| variable indicates whether
+ it's global or local scoped and |<amatch>|
+ indicates what option has been set.
+
+ Usage example: Check for the existence of the
+ directory in the 'backupdir' and 'undodir'
+ options, create the directory if it doesn't
+ exist yet.
+
+ Note: It's a bad idea to reset an option
+ during this autocommand, this may break a
+ plugin. You can always use `:noa` to prevent
+ triggering this autocommand.
+
*QuickFixCmdPre*
QuickFixCmdPre Before a quickfix command is run (|:make|,
|:lmake|, |:grep|, |:lgrep|, |:grepadd|,
@@ -871,6 +907,8 @@ TermChanged After the value of 'term' has changed. Useful
for re-loading the syntax file to update the
colors, fonts and other terminal-dependent
settings. Executed for all loaded buffers.
+ {Nvim} *TermClose*
+TermClose When a terminal buffer ends.
{Nvim} *TermOpen*
TermOpen When a terminal buffer is starting. This can
be used to configure the terminal emulator by
@@ -951,6 +989,13 @@ WinLeave Before leaving a window. If the window to be
==============================================================================
6. Patterns *autocmd-patterns* *{pat}*
+The {pat} argument can be a comma separated list. This works as if the
+command was given with each pattern separately. Thus this command: >
+ :autocmd BufRead *.txt,*.info set et
+Is equivalent to: >
+ :autocmd BufRead *.txt set et
+ :autocmd BufRead *.info set et
+
The file pattern {pat} is tested for a match against the file name in one of
two ways:
1. When there is no '/' in the pattern, Vim checks for a match against only
@@ -1019,7 +1064,7 @@ The pattern is interpreted like mostly used in file names:
[^ch] match any character but 'c' and 'h'
Note that for all systems the '/' character is used for path separator (even
-MS-DOS). This was done because the backslash is difficult to use in a pattern
+Windows). This was done because the backslash is difficult to use in a pattern
and to make the autocommands portable across different systems.
*autocmd-changes*
@@ -1057,7 +1102,7 @@ Instead of a pattern buffer-local autocommands use one of these forms:
Examples: >
:au CursorHold <buffer> echo 'hold'
:au CursorHold <buffer=33> echo 'hold'
- :au CursorHold <buffer=abuf> echo 'hold'
+ :au BufNewFile * au CursorHold <buffer=abuf> echo 'hold'
All the commands for autocommands also work with buffer-local autocommands,
simply use the special string instead of the pattern. Examples: >
@@ -1116,6 +1161,9 @@ name!
:aug[roup] {name} Define the autocmd group name for the
following ":autocmd" commands. The name "end"
or "END" selects the default group.
+ To avoid confusion, the name should be
+ different from existing {event} names, as this
+ most likely will not do what you intended.
*:augroup-delete* *E367*
:aug[roup]! {name} Delete the autocmd group {name}. Don't use
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 075e581bf2..c8eb0705f6 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt* For Vim version 7.4. Last change: 2014 Jun 26
+*change.txt* For Vim version 7.4. Last change: 2016 Jan 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -366,13 +366,49 @@ Adding and subtracting ~
CTRL-A Add [count] to the number or alphabetic character at
or after the cursor.
+ *v_CTRL-A*
+{Visual}CTRL-A Add [count] to the number or alphabetic character in
+ the highlighted text. {not in Vi}
+
+ *v_g_CTRL-A*
+{Visual}g CTRL-A Add [count] to the number or alphabetic character in
+ the highlighted text. If several lines are
+ highlighted, each one will be incremented by an
+ additional [count] (so effectively creating a
+ [count] incrementing sequence). {not in Vi}
+ For Example, if you have this list of numbers:
+ 1. ~
+ 1. ~
+ 1. ~
+ 1. ~
+ Move to the second "1." and Visually select three
+ lines, pressing g CTRL-A results in:
+ 1. ~
+ 2. ~
+ 3. ~
+ 4. ~
+
*CTRL-X*
CTRL-X Subtract [count] from the number or alphabetic
character at or after the cursor.
+ *v_CTRL-X*
+{Visual}CTRL-X Subtract [count] from the number or alphabetic
+ character in the highlighted text. {not in Vi}
+
+ *v_g_CTRL-X*
+{Visual}g CTRL-X Subtract [count] from the number or alphabetic
+ character in the highlighted text. If several lines
+ are highlighted, each value will be decremented by an
+ additional [count] (so effectively creating a [count]
+ decrementing sequence). {not in Vi}
+
The CTRL-A and CTRL-X commands work for (signed) decimal numbers, unsigned
-octal and hexadecimal numbers and alphabetic characters. This depends on the
-'nrformats' option.
+binary/octal/hexadecimal numbers and alphabetic characters.
+
+This depends on the 'nrformats' option:
+- When 'nrformats' includes "bin", Vim assumes numbers starting with '0b' or
+ '0B' are binary.
- When 'nrformats' includes "octal", Vim considers numbers starting with a '0'
to be octal, unless the number includes a '8' or '9'. Other numbers are
decimal and may have a preceding minus sign.
@@ -386,6 +422,10 @@ octal and hexadecimal numbers and alphabetic characters. This depends on the
under or after the cursor. This is useful to make lists with an alphabetic
index.
+For decimals a leading negative sign is considered for incrementing or
+decrementing, for binary, octal and hex values, it won't be considered. To
+ignore the sign Visually select the number before using CTRL-A or CTRL-X.
+
For numbers with leading zeros (including all octal and hexadecimal numbers),
Vim preserves the number of characters in the number when possible. CTRL-A on
"0077" results in "0100", CTRL-X on "0x100" results in "0x0ff".
@@ -397,6 +437,10 @@ octal number.
Note that when 'nrformats' includes "octal", decimal numbers with leading
zeros cause mistakes, because they can be confused with octal numbers.
+Note similarly, when 'nrformats' includes "bin", binary numbers with a leading
+'0x' or '0X' can be interpreted as hexadecimal rather than binary since '0b'
+are valid hexadecimal digits.
+
The CTRL-A command is very useful in a macro. Example: Use the following
steps to make a numbered list.
@@ -578,9 +622,9 @@ For MS-Windows: $TMP, $TEMP, $USERPROFILE, current-dir.
may add [flags], see |:s_flags|.
Note that after `:substitute` the '&' flag can't be
used, it's recognized as a pattern separator.
- The space between `:substitute` and the 'c', 'g' and
- 'r' flags isn't required, but in scripts it's a good
- idea to keep it to avoid confusion.
+ The space between `:substitute` and the 'c', 'g',
+ 'i', 'I' and 'r' flags isn't required, but in scripts
+ it's a good idea to keep it to avoid confusion.
:[range]~[&][flags] [count] *:~*
Repeat last substitute with same substitute string
@@ -789,6 +833,36 @@ either the first or second pattern in parentheses did not match, so either
:s/\([ab]\)\|\([cd]\)/\1x/g modifies "a b c d" to "ax bx x x"
<
+ *:sc* *:sce* *:scg* *:sci* *:scI* *:scl* *:scp* *:sg* *:sgc*
+ *:sge* *:sgi* *:sgI* *:sgl* *:sgn* *:sgp* *:sgr* *:sI* *:si*
+ *:sic* *:sIc* *:sie* *:sIe* *:sIg* *:sIl* *:sin* *:sIn* *:sIp*
+ *:sip* *:sIr* *:sir* *:sr* *:src* *:srg* *:sri* *:srI* *:srl*
+ *:srn* *:srp*
+2-letter and 3-letter :substitute commands ~
+
+ List of :substitute commands
+ | c e g i I n p l r
+ | c :sc :sce :scg :sci :scI :scn :scp :scl ---
+ | e
+ | g :sgc :sge :sg :sgi :sgI :sgn :sgp :sgl :sgr
+ | i :sic :sie --- :si :siI :sin :sip --- :sir
+ | I :sIc :sIe :sIg :sIi :sI :sIn :sIp :sIl :sIr
+ | n
+ | p
+ | l
+ | r :src --- :srg :sri :srI :srn :srp :srl :sr
+
+Exceptions:
+ :scr is `:scriptnames`
+ :se is `:set`
+ :sig is `:sign`
+ :sil is `:silent`
+ :sn is `:snext`
+ :sp is `:split`
+ :sl is `:sleep`
+ :sre is `:srewind`
+
+
Substitute with an expression *sub-replace-expression*
*sub-replace-\=* *s/\=*
When the substitute string starts with "\=" the remainder is interpreted as an
@@ -832,13 +906,13 @@ This replaces each 'E' character with a euro sign. Read more in |<Char->|.
:promptf[ind] [string]
Put up a Search dialog. When [string] is given, it is
used as the initial search string.
- {only for Win32, Motif and GTK GUI}
+ {only for Win32 GUI}
*:promptr* *:promptrepl*
:promptr[epl] [string]
Put up a Search/Replace dialog. When [string] is
given, it is used as the initial search string.
- {only for Win32, Motif and GTK GUI}
+ {only for Win32 GUI}
4.4 Changing tabs *change-tabs*
@@ -892,7 +966,7 @@ inside of strings can change! Also see 'softtabstop' option. >
:reg[isters] {arg} Display the contents of the numbered and named
registers that are mentioned in {arg}. For example: >
- :dis 1a
+ :reg 1a
< to display registers '1' and 'a'. Spaces are allowed
in {arg}.
@@ -1058,16 +1132,17 @@ Rationale: In Vi the "y" command followed by a backwards motion would
With a linewise yank command the cursor is put in the first line, but the
column is unmodified, thus it may not be on the first yanked character.
-There are nine types of registers: *registers* *E354*
+There are ten types of registers: *registers* *E354*
1. The unnamed register ""
2. 10 numbered registers "0 to "9
3. The small delete register "-
4. 26 named registers "a to "z or "A to "Z
-5. four read-only registers ":, "., "% and "#
-6. the expression register "=
-7. The selection and drop registers "*, "+ and "~
-8. The black hole register "_
-9. Last search pattern register "/
+5. three read-only registers ":, "., "%
+6. alternate buffer register "#
+7. the expression register "=
+8. The selection and drop registers "*, "+ and "~
+9. The black hole register "_
+10. Last search pattern register "/
1. Unnamed register "" *quote_quote* *quotequote*
Vim fills this register with text deleted with the "d", "c", "s", "x" commands
@@ -1109,7 +1184,7 @@ letters to replace their previous contents or as uppercase letters to append
to their previous contents. When the '>' flag is present in 'cpoptions' then
a line break is inserted before the appended text.
-5. Read-only registers ":, "., "% and "#
+5. Read-only registers ":, ". and "%
These are '%', '#', ':' and '.'. You can use them only with the "p", "P",
and ":put" commands and with CTRL-R.
*quote_.* *quote.* *E29*
@@ -1120,8 +1195,6 @@ and ":put" commands and with CTRL-R.
('textwidth' and other options affect what is inserted).
*quote_%* *quote%*
"% Contains the name of the current file.
- *quote_#* *quote#*
- "# Contains the name of the alternate file.
*quote_:* *quote:* *E30*
": Contains the most recent executed command-line. Example: Use
"@:" to repeat the previous command-line command.
@@ -1129,15 +1202,33 @@ and ":put" commands and with CTRL-R.
one character of it was typed. Thus it remains unchanged if
the command was completely from a mapping.
-6. Expression register "= *quote_=* *quote=* *@=*
+ *quote_#* *quote#*
+6. Alternate file register "#
+Contains the name of the alternate file for the current window. It will
+change how the |CTRL-^| command works.
+This register is writable, mainly to allow for restoring it after a plugin has
+changed it. It accepts buffer number: >
+ let altbuf = bufnr(@#)
+ ...
+ let @# = altbuf
+It will give error |E86| if you pass buffer number and this buffer does not
+exist.
+It can also accept a match with an existing buffer name: >
+ let @# = 'buffer_name'
+Error |E93| if there is more than one buffer matching the given name or |E94|
+if none of buffers matches the given name.
+
+7. Expression register "= *quote_=* *quote=* *@=*
This is not really a register that stores text, but is a way to use an
expression in commands which use a register. The expression register is
-read-only; you cannot put text into it. After the '=', the cursor moves to
-the command-line, where you can enter any expression (see |expression|). All
-normal command-line editing commands are available, including a special
-history for expressions. When you end the command-line by typing <CR>, Vim
-computes the result of the expression. If you end it with <Esc>, Vim abandons
-the expression. If you do not enter an expression, Vim uses the previous
+read-write.
+
+When typing the '=' after " or CTRL-R the cursor moves to the command-line,
+where you can enter any expression (see |expression|). All normal
+command-line editing commands are available, including a special history for
+expressions. When you end the command-line by typing <CR>, Vim computes the
+result of the expression. If you end it with <Esc>, Vim abandons the
+expression. If you do not enter an expression, Vim uses the previous
expression (like with the "/" command).
The expression must evaluate to a String. A Number is always automatically
@@ -1150,35 +1241,23 @@ If the "= register is used for the "p" command, the String is split up at <NL>
characters. If the String ends in a <NL>, it is regarded as a linewise
register.
-7. Selection and drop registers "*, "+ and "~
+8. Selection and drop registers "*, "+ and "~
Use these registers for storing and retrieving the selected text for the GUI.
See |quotestar| and |quoteplus|. When the clipboard is not available or not
working, the unnamed register is used instead. For Unix systems and Mac OS X,
see |nvim-clipboard|.
- *quote_~* *quote~* *<Drop>*
-The read-only "~ register stores the dropped text from the last drag'n'drop
-operation. When something has been dropped onto Vim, the "~ register is
-filled in and the <Drop> pseudo key is sent for notification. You can remap
-this key if you want; the default action (for all modes) is to insert the
-contents of the "~ register at the cursor position.
-{only available when compiled with the |+dnd| feature, currently only with the
-GTK GUI}
-
-Note: The "~ register is only used when dropping plain text onto Vim.
-Drag'n'drop of URI lists is handled internally.
-
-8. Black hole register "_ *quote_*
+9. Black hole register "_ *quote_*
When writing to this register, nothing happens. This can be used to delete
text without affecting the normal registers. When reading from this register,
nothing is returned.
-9. Last search pattern register "/ *quote_/* *quote/*
+10. Last search pattern register "/ *quote_/* *quote/*
Contains the most recent search-pattern. This is used for "n" and 'hlsearch'.
It is writable with `:let`, you can change it to have 'hlsearch' highlight
other matches without actually searching. You can't yank or delete into this
register. The search direction is available in |v:searchforward|.
-Note that the valued is restored when returning from a function
+Note that the value is restored when returning from a function
|function-search-undo|.
*@/*
@@ -1390,10 +1469,10 @@ When you hit Return in a C-comment, Vim will insert the middle comment leader
for the new line: " * ". To close this comment you just have to type "/"
before typing anything else on the new line. This will replace the
middle-comment leader with the end-comment leader and apply any specified
-alignment, leaving just " */". There is no need to hit BackSpace first.
+alignment, leaving just " */". There is no need to hit Backspace first.
-When there is a match with a middle part, but there also is a maching end part
-which is longer, the end part is used. This makes a C style comment work
+When there is a match with a middle part, but there also is a matching end
+part which is longer, the end part is used. This makes a C style comment work
without requiring the middle part to end with a space.
Here is an example of alignment flags at work to make a comment stand out
@@ -1597,7 +1676,7 @@ Vim has a sorting function and a sorting command. The sorting function can be
found here: |sort()|, |uniq()|.
*:sor* *:sort*
-:[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/]
+:[range]sor[t][!] [b][f][i][n][o][r][u][x] [/{pattern}/]
Sort lines in [range]. When no range is given all
lines are sorted.
@@ -1605,10 +1684,18 @@ found here: |sort()|, |uniq()|.
With [i] case is ignored.
+ Options [n][f][x][o][b] are mutually exclusive.
+
With [n] sorting is done on the first decimal number
in the line (after or inside a {pattern} match).
One leading '-' is included in the number.
+ With [f] sorting is done on the Float in the line.
+ The value of Float is determined similar to passing
+ the text (after or inside a {pattern} match) to
+ str2float() function. This option is available only
+ if Vim was compiled with Floating point support.
+
With [x] sorting is done on the first hexadecimal
number in the line (after or inside a {pattern}
match). A leading "0x" or "0X" is ignored.
@@ -1617,10 +1704,13 @@ found here: |sort()|, |uniq()|.
With [o] sorting is done on the first octal number in
the line (after or inside a {pattern} match).
- With [u] only keep the first of a sequence of
- identical lines (ignoring case when [i] is used).
- Without this flag, a sequence of identical lines
- will be kept in their original order.
+ With [b] sorting is done on the first binary number in
+ the line (after or inside a {pattern} match).
+
+ With [u] (u stands for unique) only keep the first of
+ a sequence of identical lines (ignoring case when [i]
+ is used). Without this flag, a sequence of identical
+ lines will be kept in their original order.
Note that leading and trailing white space may cause
lines to be different.
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
index d85d41a295..a123ea711b 100644
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -1,4 +1,4 @@
-*cmdline.txt* For Vim version 7.4. Last change: 2014 Sep 06
+*cmdline.txt* For Vim version 7.4. Last change: 2015 Dec 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -97,6 +97,11 @@ CTRL-E or <End> *c_CTRL-E* *c_<End>* *c_End*
*c_<LeftMouse>*
<LeftMouse> Move the cursor to the position of the mouse click.
+ *c_<MiddleMouse>*
+<MiddleMouse> Paste the contents of the clipboard (for X11 the primary
+ selection). This is similar to using CTRL-R *, but no CR
+ characters are inserted between lines.
+
CTRL-H *c_<BS>* *c_CTRL-H* *c_BS*
<BS> Delete the character in front of the cursor.
*c_<Del>* *c_Del*
@@ -379,7 +384,7 @@ CTRL-N After using 'wildchar' which got multiple matches, go to next
<S-Tab> *c_CTRL-P* *c_<S-Tab>*
CTRL-P After using 'wildchar' which got multiple matches, go to
previous match. Otherwise recall older command-line from
- history. <S-Tab> only works with the GUI and with MS-DOS.
+ history. <S-Tab> only works with the GUI.
*c_CTRL-A*
CTRL-A All names that match the pattern in front of the cursor are
inserted.
@@ -482,6 +487,8 @@ followed by another Vim command:
:argdo
:autocmd
:bufdo
+ :cdo
+ :cfdo
:command
:cscope
:debug
@@ -490,8 +497,9 @@ followed by another Vim command:
:function
:global
:help
- :helpfind
:lcscope
+ :ldo
+ :lfdo
:make
:normal
:promptfind
@@ -562,6 +570,7 @@ starts editing the three files "foo bar", "goes to" and "school ".
When you want to use the special characters '"' or '|' in a command, or want
to use '%' or '#' in a file name, precede them with a backslash. The
backslash is not required in a range and in the ":substitute" command.
+See also |`=|.
*:_!*
The '!' (bang) character after an Ex command makes the command behave in a
@@ -711,13 +720,13 @@ to insert special things while typing you can use the CTRL-R command. For
example, "%" stands for the current file name, while CTRL-R % inserts the
current file name right away. See |c_CTRL-R|.
-Note: If you want to avoid the special characters in a Vim script you may want
-to use |fnameescape()|.
+Note: If you want to avoid the effects of special characters in a Vim script
+you may want to use |fnameescape()|. Also see |`=|.
In Ex commands, at places where a file name can be used, the following
characters have a special meaning. These can also be used in the expression
-function expand() |expand()|.
+function |expand()|.
% Is replaced with the current file name. *:_%* *c_%*
# Is replaced with the alternate file name. *:_#* *c_#*
This is remembered for every window.
@@ -752,6 +761,7 @@ it, no matter how many backslashes.
# alternate.file
\# #
\\# \#
+Also see |`=|.
*:<cword>* *:<cWORD>* *:<cfile>* *<cfile>*
*:<sfile>* *<sfile>* *:<afile>* *<afile>*
@@ -773,13 +783,13 @@ Note: these are typed literally, they are not special keys!
<afile> only when the file name isn't used to match with
(for FileType, Syntax and SpellFileMissing events).
<sfile> When executing a ":source" command, is replaced with the
- file name of the sourced file. *E498*
- When executing a function, is replaced with
- "function {function-name}"; function call nesting is
- indicated like this:
- "function {function-name1}..{function-name2}". Note that
- filename-modifiers are useless when <sfile> is used inside
- a function.
+ file name of the sourced file. *E498*
+ When executing a function, is replaced with:
+ "function {function-name}[{lnum}]"
+ function call nesting is indicated like this:
+ "function {function-name1}[{lnum}]..{function-name2}[{lnum}]"
+ Note that filename-modifiers are useless when <sfile> is
+ used inside a function.
<slnum> When executing a ":source" command, is replaced with the
line number. *E842*
When executing a function it's the line number relative to
@@ -816,7 +826,7 @@ These modifiers can be given, in this order:
separator is removed. Thus ":p:h" on a directory name results
on the directory name itself (without trailing slash).
When the file name is an absolute path (starts with "/" for
- Unix; "x:\" for MS-DOS and WIN32), that part is not removed.
+ Unix; "x:\" for Windows), that part is not removed.
When there is no head (path is relative to current directory)
the result is empty.
:t Tail of the file name (last component of the name). Must
@@ -841,7 +851,7 @@ These modifiers can be given, in this order:
:gs?pat?sub?
Substitute all occurrences of "pat" with "sub". Otherwise
this works like ":s".
- :S Escape special characters for use with a shell command (see
+ :S Escape special characters for use with a shell command (see
|shellescape()|). Must be the last one. Examples: >
:!dir <cfile>:S
:call system('chmod +w -- ' . expand('%:S'))
@@ -894,9 +904,8 @@ name). This is included for backwards compatibility with version 3.0, the
Note: Where a file name is expected wildcards expansion is done. On Unix the
shell is used for this, unless it can be done internally (for speed).
-Backticks also work, like in >
+Unless in |restricted-mode|, backticks work also, like in >
:n `echo *.c`
-(backtick expansion is not possible in |restricted-mode|)
But expansion is only done if there are any wildcards before expanding the
'%', '#', etc.. This avoids expanding wildcards inside a file name. If you
want to expand the result of <cfile>, add a wildcard character to it.
@@ -907,6 +916,7 @@ Examples: (alternate file name is "?readme?")
:e #.* :e {files matching "?readme?.*"}
:cd <cfile> :cd {file name under cursor}
:cd <cfile>* :cd {file name under cursor plus "*" and then expanded}
+Also see |`=|.
When the expanded argument contains a "!" and it is used for a shell command
(":!cmd", ":r !cmd" or ":w !cmd"), the "!" is escaped with a backslash to
@@ -915,8 +925,8 @@ option contains "sh", this is done twice, to avoid the shell trying to expand
the "!".
*filename-backslash*
-For filesystems that use a backslash as directory separator (MS-DOS and
-Windows), it's a bit difficult to recognize a backslash that is used
+For filesystems that use a backslash as directory separator (Windows
+filesystems), it's a bit difficult to recognize a backslash that is used
to escape the special meaning of the next character. The general rule is: If
the backslash is followed by a normal file name character, it does not have a
special meaning. Therefore "\file\foo" is a valid file name, you don't have
@@ -933,6 +943,8 @@ for the file "$home" in the root directory. A few examples:
/\$home file "$home" in root directory
\\$home file "\\", followed by expanded $home
+Also see |`=|.
+
==============================================================================
7. Command-line window *cmdline-window* *cmdwin*
*command-line-window*
diff --git a/runtime/doc/debugger.txt b/runtime/doc/debugger.txt
deleted file mode 100644
index f1eb5639bd..0000000000
--- a/runtime/doc/debugger.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-*debugger.txt* For Vim version 7.4. Last change: 2005 Mar 29
-
-
- VIM REFERENCE MANUAL by Gordon Prieur
-
-
-Debugger Support Features *debugger-support*
-
-1. Debugger Features |debugger-features|
-
-==============================================================================
-1. Debugger Features *debugger-features*
-
-The following features are available for an integration with a debugger or
-an Integrated Programming Environment (IPE) or Integrated Development
-Environment (IDE):
-
- Alternate Command Input |alt-input|
- Debug Signs |debug-signs|
- Debug Source Highlight |debug-highlight|
- Message Footer |gui-footer|
- Balloon Evaluation |balloon-eval|
-
-These features were added specifically for use in the Motif version of gvim.
-However, the |alt-input| and |debug-highlight| were written to be usable in
-both vim and gvim. Some of the other features could be used in the non-GUI
-vim with slight modifications. However, I did not do this nor did I test the
-reliability of building for vim or non Motif GUI versions.
-
-
-1.1 Alternate Command Input *alt-input*
-
-For Vim to work with a debugger there must be at least an input connection
-with a debugger or external tool. In many cases there will also be an output
-connection but this isn't absolutely necessary.
-
-The purpose of the input connection is to let the external debugger send
-commands to Vim. The commands sent by the debugger should give the debugger
-enough control to display the current debug environment and state.
-
-The current implementation is based on the X Toolkit dispatch loop and the
-XtAddInput() function call.
-
-
-1.2 Debug Signs *debug-signs*
-
-Many debuggers mark specific lines by placing a small sign or color highlight
-on the line. The |:sign| command lets the debugger set this graphic mark. Some
-examples where this feature would be used would be a debugger showing an arrow
-representing the Program Counter (PC) of the program being debugged. Another
-example would be a small stop sign for a line with a breakpoint. These visible
-highlights let the user keep track of certain parts of the state of the
-debugger.
-
-This feature can be used with more than debuggers, too. An IPE can use a sign
-to highlight build errors, searched text, or other things. The sign feature
-can also work together with the |debug-highlight| to ensure the mark is
-highly visible.
-
-Debug signs are defined and placed using the |:sign| command.
-
-
-1.3 Debug Source Highlight *debug-highlight*
-
-This feature allows a line to have a predominant highlight. The highlight is
-intended to make a specific line stand out. The highlight could be made to
-work for both vim and gvim, whereas the debug sign is, in most cases, limited
-to gvim. The one exception to this is Sun Microsystem's dtterm. The dtterm
-from Sun has a "sign gutter" for showing signs.
-
-
-1.4 Message Footer *gui-footer*
-
-The message footer can be used to display messages from a debugger or IPE. It
-can also be used to display menu and toolbar tips. The footer area is at the
-bottom of the GUI window, below the line used to display colon commands.
-
-The display of the footer is controlled by the 'guioptions' letter 'F'.
-
-
-1.5 Balloon Evaluation *balloon-eval*
-
-This feature allows a debugger, or other external tool, to display dynamic
-information based on where the mouse is pointing. The purpose of this feature
-was to allow Sun's Visual WorkShop debugger to display expression evaluations.
-However, the feature was implemented in as general a manner as possible and
-could be used for displaying other information as well.
-
-The Balloon Evaluation has some settable parameters too. For Motif the font
-list and colors can be set via X resources (XmNballoonEvalFontList,
-XmNballoonEvalBackground, and XmNballoonEvalForeground).
-The 'balloondelay' option sets the delay before an attempt is made to show a
-balloon.
-The 'ballooneval' option needs to be set to switch it on.
-
-Balloon evaluation is only available when compiled with the |+balloon_eval|
-feature.
-
-The Balloon evaluation functions are also used to show a tooltip for the
-toolbar. The 'ballooneval' option does not need to be set for this. But the
-other settings apply.
-
-Another way to use the balloon is with the 'balloonexpr' option. This is
-completely user definable.
-
-==============================================================================
- vim:tw=78:sw=4:ts=8:ft=help:norl:
diff --git a/runtime/doc/develop.txt b/runtime/doc/develop.txt
index 2f96c4c6dc..668790358b 100644
--- a/runtime/doc/develop.txt
+++ b/runtime/doc/develop.txt
@@ -10,11 +10,9 @@ This text is important for those who want to be involved in further developing
Vim.
1. Design goals |design-goals|
-2. Coding style |coding-style|
-3. Design decisions |design-decisions|
-4. Assumptions |design-assumptions|
+2. Design decisions |design-decisions|
-See the file README.txt in the "src" directory for an overview of the source
+See the file "src/nvim/README.md" for a high-level overview of the source
code.
Vim is open source software. Everybody is encouraged to contribute to help
@@ -30,28 +28,6 @@ Note that quite a few items are contradicting. This is intentional. A
balance must be found between them.
-VIM IS... VI COMPATIBLE *design-compatible*
-
-First of all, it should be possible to use Vim as a drop-in replacement for
-Vi. When the user wants to, he can use Vim in compatible mode and hardly
-notice any difference with the original Vi.
-
-Exceptions:
-- We don't reproduce obvious Vi bugs in Vim.
-- There are different versions of Vi. I am using Version 3.7 (6/7/85) as a
- reference. But support for other versions is also included when possible.
- The Vi part of POSIX is not considered a definitive source.
-- Vim adds new commands, you cannot rely on some command to fail because it
- didn't exist in Vi.
-- Vim will have a lot of features that Vi doesn't have. Going back from Vim
- to Vi will be a problem, this cannot be avoided.
-- Some things are hardly ever used (open mode, sending an e-mail when
- crashing, etc.). Those will only be included when someone has a good reason
- why it should be included and it's not too much work.
-- For some items it is debatable whether Vi compatibility should be
- maintained. There will be an option flag for these.
-
-
VIM IS... IMPROVED *design-improved*
The IMproved bits of Vim should make it a better Vi, without becoming a
@@ -122,7 +98,6 @@ fast.
VIM IS... MAINTAINABLE *design-maintain*
- The source code should not become a mess. It should be reliable code.
-- Use the same layout in all files to make it easy to read |coding-style|.
- Use comments in a useful way! Quoting the function name and argument names
is NOT useful. Do explain what they are for.
- Porting to another platform should be made easy, without having to change
@@ -140,216 +115,16 @@ such that most users will enjoy using Vim as it is. Commands and options can
be used to adjust Vim to the desire of the user and its environment.
-VIM IS... NOT *design-not*
-
-- Vim is not a shell or an Operating System. You will not be able to run a
- shell inside Vim or use it to control a debugger. This should work the
- other way around: Use Vim as a component from a shell or in an IDE.
- A satirical way to say this: "Unlike Emacs, Vim does not attempt to include
- everything but the kitchen sink, but some people say that you can clean one
- with it. ;-)"
- To use Vim with gdb see: http://www.agide.org and http://clewn.sf.net.
-- Vim is not a fancy GUI editor that tries to look nice at the cost of
- being less consistent over all platforms. But functional GUI features are
- welcomed.
-
-==============================================================================
-2. Coding style *coding-style*
-
-These are the rules to use when making changes to the Vim source code. Please
-stick to these rules, to keep the sources readable and maintainable.
-
-This list is not complete. Look in the source code for more examples.
-
-
-MAKING CHANGES *style-changes*
-
-The basic steps to make changes to the code:
-1. Adjust the documentation. Doing this first gives you an impression of how
- your changes affect the user.
-2. Make the source code changes.
-3. Check ../doc/todo.txt if the change affects any listed item.
-4. Make a patch with "diff -c" against the unmodified code and docs.
-5. Make a note about what changed and include it with the patch.
-
-
-USE OF COMMON FUNCTIONS *style-functions*
-
-Some functions that are common to use, have a special Vim version. Always
-consider using the Vim version, because they were introduced with a reason.
-
-NORMAL NAME VIM NAME DIFFERENCE OF VIM VERSION
-free() vim_free() Checks for freeing NULL
-malloc() alloc() Checks for out of memory situation
-malloc() lalloc() Like alloc(), but has long argument
-strcpy() STRCPY() Includes cast to (char *), for char_u * args
-strchr() vim_strchr() Accepts special characters
-strrchr() vim_strrchr() Accepts special characters
-isspace() ascii_isspace() Can handle characters > 128
-iswhite() ascii_iswhite() Only true for tab and space
-memcpy() mch_memmove() Handles overlapped copies
-bcopy() mch_memmove() Handles overlapped copies
-memset() vim_memset() Uniform for all systems
-
-
-NAMES *style-names*
-
-Function names can not be more than 31 characters long (because of VMS).
-
-Don't use "delete" as a variable name, C++ doesn't like it.
-
-Because of the requirement that Vim runs on as many systems as possible, we
-need to avoid using names that are already defined by the system. This is a
-list of names that are known to cause trouble. The name is given as a regexp
-pattern.
-
-is.*() POSIX, ctype.h
-to.*() POSIX, ctype.h
-
-d_.* POSIX, dirent.h
-l_.* POSIX, fcntl.h
-gr_.* POSIX, grp.h
-pw_.* POSIX, pwd.h
-sa_.* POSIX, signal.h
-mem.* POSIX, string.h
-str.* POSIX, string.h
-wcs.* POSIX, string.h
-st_.* POSIX, stat.h
-tms_.* POSIX, times.h
-tm_.* POSIX, time.h
-c_.* POSIX, termios.h
-MAX.* POSIX, limits.h
-__.* POSIX, system
-_[A-Z].* POSIX, system
-E[A-Z0-9]* POSIX, errno.h
-
-.*_t POSIX, for typedefs. Use .*_T instead.
-
-wait don't use as argument to a function, conflicts with types.h
-index shadows global declaration
-time shadows global declaration
-new C++ reserved keyword
-try Borland C++ doesn't like it to be used as a variable.
-
-clear Mac curses.h
-echo Mac curses.h
-instr Mac curses.h
-meta Mac curses.h
-newwin Mac curses.h
-nl Mac curses.h
-overwrite Mac curses.h
-refresh Mac curses.h
-scroll Mac curses.h
-typeahead Mac curses.h
-
-basename() GNU string function
-dirname() GNU string function
-get_env_value() Linux system function
-
-
-VARIOUS *style-various*
-
-Typedef'ed names should end in "_T": >
- typedef int some_T;
-Define'ed names should be uppercase: >
- #define SOME_THING
-Features always start with "FEAT_": >
- #define FEAT_FOO
-
-Don't use '\"', some compilers can't handle it. '"' works fine.
-
-Don't use:
- #if HAVE_SOME
-Some compilers can't handle that and complain that "HAVE_SOME" is not defined.
-Use
- #ifdef HAVE_SOME
-or
- #if defined(HAVE_SOME)
-
-
-STYLE *style-examples*
+NVIM IS... NOT *design-not*
-General rule: One statement per line.
+Nvim is not an Operating System; instead it should be composed with other
+tools, or hosted as a component. Marvim once said: "Unlike Emacs, Nvim does
+not attempt to include everything but the kitchen sink, but some people use it
+for plumbing."
-Wrong: if (cond) a = 1;
-
-OK: if (cond)
- a = 1;
-
-Wrong: while (cond);
-
-OK: while (cond)
- ;
-
-Wrong: do a = 1; while (cond);
-
-OK: do
- a = 1;
- while (cond);
-
-
-Functions start with:
-
-Wrong: int function_name(int arg1, int arg2)
-
-OK: /*
- * Explanation of what this function is used for.
- *
- * Return value explanation.
- */
- int
- function_name(arg1, arg2)
- int arg1; /* short comment about arg1 */
- int arg2; /* short comment about arg2 */
- {
- int local; /* comment about local */
-
- local = arg1 * arg2;
-
-NOTE: Don't use ANSI style function declarations. A few people still have to
-use a compiler that doesn't support it.
-
-
-SPACES AND PUNCTUATION *style-spaces*
-
-No space between a function name and the bracket:
-
-Wrong: func (arg);
-OK: func(arg);
-
-Do use a space after if, while, switch, etc.
-
-Wrong: if(arg) for(;;)
-OK: if (arg) for (;;)
-
-Use a space after a comma and semicolon:
-
-Wrong: func(arg1,arg2); for (i = 0;i < 2;++i)
-OK: func(arg1, arg2); for (i = 0; i < 2; ++i)
-
-Use a space before and after '=', '+', '/', etc.
-
-Wrong: var=a*5;
-OK: var = a * 5;
-
-In general: Use empty lines to group lines of code together. Put a comment
-just above the group of lines. This makes it easier to quickly see what is
-being done.
-
-OK: /* Prepare for building the table. */
- get_first_item();
- table_idx = 0;
-
- /* Build the table */
- while (has_item())
- table[table_idx++] = next_item();
-
- /* Finish up. */
- cleanup_items();
- generate_hash(table);
==============================================================================
-3. Design decisions *design-decisions*
+2. Design decisions *design-decisions*
Folding
@@ -484,17 +259,4 @@ This isn't ideal, because the longer Vim is running the higher the counts
become. But in practice it is a noticeable improvement over not using the word
count.
-==============================================================================
-4. Assumptions *design-assumptions*
-
-Size of variables:
-char 8 bit signed
-char_u 8 bit unsigned
-int 32 or 64 bit signed (16 might be possible with limited features)
-unsigned 32 or 64 bit unsigned (16 as with ints)
-long 32 or 64 bit signed, can hold a pointer
-
-Note that some compilers cannot handle long lines or strings. The C89
-standard specifies a limit of 509 characters.
-
vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index 54d47eb28a..12bc655edc 100644
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt* For Vim version 7.4. Last change: 2015 Jan 19
+*diff.txt* For Vim version 7.4. Last change: 2015 Nov 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -124,8 +124,9 @@ file for a moment and come back to the same file and be in diff mode again.
if the current window does not have 'diff' set then no options
in it are changed.
-The ":diffoff" command resets the relevant options to the values they had when
-using |:diffsplit|, |:diffpatch| , |:diffthis|. or starting Vim in diff mode.
+The `:diffoff` command resets the relevant options to the values they had when
+using `:diffsplit`, `:diffpatch` , `:diffthis`. or starting Vim in diff mode.
+When using `:diffoff` twice the last saved values are restored.
Otherwise they are set to their default value:
'diff' off
@@ -173,8 +174,8 @@ hidden buffers. You can use ":hide" to close a window without unloading the
buffer. If you don't want a buffer to remain used for the diff do ":set
nodiff" before hiding it.
- *:diffu* *:diffupdate*
-:diffu[pdate][!] Update the diff highlighting and folds.
+ *:dif* *:diffupdate*
+:dif[fupdate][!] Update the diff highlighting and folds.
Vim attempts to keep the differences updated when you make changes to the
text. This mostly takes care of inserted and deleted lines. Changes within a
@@ -306,6 +307,19 @@ name or a part of a buffer name. Examples:
Also see |'diffopt'| and the "diff" item of |'fillchars'|.
+ *diff-slow* *diff_translations*
+For very long lines, the diff syntax highlighting might be slow, especially
+since it tries to match all different kind of localisations. To disable
+localisations and speed up the syntax highlighting, set the global variable
+g:diff_translations to zero: >
+
+ let g:diff_translations = 0
+<
+After setting this variable, Reload the syntax script: >
+
+ set syntax=diff
+<
+
FINDING THE DIFFERENCES *diff-diffexpr*
diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
index bb3d89e4ac..c51286a350 100644
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1,4 +1,4 @@
-*editing.txt* For Vim version 7.4. Last change: 2015 Apr 18
+*editing.txt* For Vim version 7.4. Last change: 2016 Jan 03
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -77,7 +77,8 @@ g CTRL-G Prints the current position of the cursor in five
than one position on the screen (<Tab> or special
character), both the "real" column and the screen
column are shown, separated with a dash.
- See also 'ruler' option.
+ Also see the 'ruler' option and the |wordcount()|
+ function.
*v_g_CTRL-G*
{Visual}g CTRL-G Similar to "g CTRL-G", but Word, Character, Line, and
@@ -130,9 +131,7 @@ You can use this file if you discover that you need the original file. See
also the 'patchmode' option. The name of the backup file is normally the same
as the original file with 'backupext' appended. The default "~" is a bit
strange to avoid accidentally overwriting existing files. If you prefer ".bak"
-change the 'backupext' option. Extra dots are replaced with '_' on MS-DOS
-machines, when Vim has detected that an MS-DOS-like filesystem is being used
-(e.g., messydos or crossdos). The backup file can be placed in another
+change the 'backupext' option. The backup file can be placed in another
directory by setting 'backupdir'.
When you started editing without giving a file name, "No File" is displayed in
@@ -276,7 +275,8 @@ CTRL-^ Edit the alternate file. Mostly the alternate file is
Mnemonic: "goto file".
Uses the 'isfname' option to find out which characters
are supposed to be in a file name. Trailing
- punctuation characters ".,:;!" are ignored.
+ punctuation characters ".,:;!" are ignored. Escaped
+ spaces "\ " are reduced to a single space.
Uses the 'path' option as a list of directory names to
look for the file. See the 'path' option for details
about relative directories and wildcards.
@@ -379,25 +379,38 @@ Finds files:
/usr/include/sys/types.h
/usr/inc_old/types.h
*backtick-expansion* *`-expansion*
-On Unix and a few other systems you can also use backticks in the file name,
-for example: >
- :e `find . -name ver\\*.c -print`
-The backslashes before the star are required to prevent "ver*.c" to be
-expanded by the shell before executing the find program.
+On Unix and a few other systems you can also use backticks for the file name
+argument, for example: >
+ :next `find . -name ver\\*.c -print`
+ :view `ls -t *.patch \| head -n1`
+The backslashes before the star are required to prevent the shell from
+expanding "ver*.c" prior to execution of the find program. The backslash
+before the shell pipe symbol "|" prevents Vim from parsing it as command
+termination.
This also works for most other systems, with the restriction that the
backticks must be around the whole item. It is not possible to have text
directly before the first or just after the last backtick.
*`=*
-You can have the backticks expanded as a Vim expression, instead of an
-external command, by using the syntax `={expr}` e.g.: >
+You can have the backticks expanded as a Vim expression, instead of as an
+external command, by putting an equal sign right after the first backtick,
+e.g.: >
:e `=tempname()`
The expression can contain just about anything, thus this can also be used to
avoid the special meaning of '"', '|', '%' and '#'. However, 'wildignore'
does apply like to other wildcards.
+
+Environment variables in the expression are expanded when evaluating the
+expression, thus this works: >
+ :e `=$HOME . '/.vimrc'`
+This does not work, $HOME is inside a string and used literally: >
+ :e `='$HOME' . '/.vimrc'`
+
If the expression returns a string then names are to be separated with line
breaks. When the result is a |List| then each item is used as a name. Line
breaks also separate names.
+Note that such expressions are only supported in places where a filename is
+expected as an argument to an Ex-command.
*++opt* *[++opt]*
The [++opt] argument can be used to force the value of 'fileformat',
@@ -470,9 +483,9 @@ The 'fileformat' option sets the <EOL> style for a file:
"mac" <CR> Mac format *Mac-format*
When reading a file, the mentioned characters are interpreted as the <EOL>.
-In DOS format (default for MS-DOS and Win32), <CR><NL> and <NL> are both
-interpreted as the <EOL>. Note that when writing the file in DOS format,
-<CR> characters will be added for each single <NL>. Also see |file-read|.
+In DOS format (default for Windows), <CR><NL> and <NL> are both interpreted as
+the <EOL>. Note that when writing the file in DOS format, <CR> characters will
+be added for each single <NL>. Also see |file-read|.
When writing a file, the mentioned characters are used for <EOL>. For DOS
format <CR><NL> is used. Also see |DOS-format-write|.
@@ -493,13 +506,13 @@ If you start editing a new file and the 'fileformats' option is not empty
(which is the default), Vim will try to detect whether the lines in the file
are separated by the specified formats. When set to "unix,dos", Vim will
check for lines with a single <NL> (as used on Unix) or by a <CR><NL> pair
-(MS-DOS). Only when ALL lines end in <CR><NL>, 'fileformat' is set to "dos",
+(Windows). Only when ALL lines end in <CR><NL>, 'fileformat' is set to "dos",
otherwise it is set to "unix". When 'fileformats' includes "mac", and no <NL>
characters are found in the file, 'fileformat' is set to "mac".
-If the 'fileformat' option is set to "dos" on non-MS-DOS systems the message
+If the 'fileformat' option is set to "dos" on non-Windows systems the message
"[dos format]" is shown to remind you that something unusual is happening. On
-MS-DOS systems you get the message "[unix format]" if 'fileformat' is set to
+Windows systems you get the message "[unix format]" if 'fileformat' is set to
"unix". On all systems but the Macintosh you get the message "[mac format]"
if 'fileformat' is set to "mac".
@@ -795,7 +808,8 @@ USING THE ARGUMENT LIST
autocommand event is disabled by adding it to
'eventignore'. This considerably speeds up editing
each file.
- Also see |:windo|, |:tabdo| and |:bufdo|.
+ Also see |:windo|, |:tabdo|, |:bufdo|, |:cdo|, |:ldo|,
+ |:cfdo| and |:lfdo|.
Example: >
:args *.c
@@ -964,10 +978,10 @@ lost the original file.
*DOS-format-write*
If the 'fileformat' is "dos", <CR> <NL> is used for <EOL>. This is default
-for MS-DOS and Win32. On other systems the message "[dos format]" is shown to
+for Windows. On other systems the message "[dos format]" is shown to
remind you that an unusual <EOL> was used.
*Unix-format-write*
-If the 'fileformat' is "unix", <NL> is used for <EOL>. On MS-DOS and Win32
+If the 'fileformat' is "unix", <NL> is used for <EOL>. On Windows
the message "[unix format]" is shown.
*Mac-format-write*
If the 'fileformat' is "mac", <CR> is used for <EOL>. On non-Mac systems the
@@ -997,11 +1011,11 @@ When the file name is actually a device name, Vim will not make a backup (that
would be impossible). You need to use "!", since the device already exists.
Example for Unix: >
:w! /dev/lpt0
-and for MS-DOS or MS-Windows: >
+and Windows: >
:w! lpt0
For Unix a device is detected when the name doesn't refer to a normal file or
a directory. A fifo or named pipe also looks like a device to Vim.
-For MS-DOS and MS-Windows the device is detected by its name:
+For Windows the device is detected by its name:
CON
CLOCK$
NUL
@@ -1028,10 +1042,10 @@ The names can be in upper- or lowercase.
the last file in the argument list has not been
edited. See |:confirm| and 'confirm'.
-:q[uit]! Quit without writing, also when currently visible
- buffers have changes. Does not exit when this is the
- last window and there is a changed hidden buffer.
- In this case, the first changed hidden buffer becomes
+:q[uit]! Quit without writing, also when the current buffer has
+ changes. If this is the last window and there is a
+ modified hidden buffer, the current buffer is
+ abandoned and the first changed hidden buffer becomes
the current buffer.
Use ":qall!" to exit always.
@@ -1141,10 +1155,10 @@ If you want to always use ":confirm", set the 'confirm' option.
|:mkvimrc|, |:mksession|, |:mkview|, |:split|,
|:vsplit|, |:tabe|, |:tabnew|, |:cfile|, |:cgetfile|,
|:caddfile|, |:lfile|, |:lgetfile|, |:laddfile|,
- |:diffsplit|, |:diffpatch|, |:open|, |:pedit|,
- |:redir|, |:source|, |:update|, |:visual|, |:vsplit|,
+ |:diffsplit|, |:diffpatch|, |:pedit|, |:redir|,
+ |:source|, |:update|, |:visual|, |:vsplit|,
and |:qall| if 'confirm' is set.
- {only in Win32, Athena, Motif, GTK and Mac GUI}
+ {only in Win32 GUI}
When ":browse" is not possible you get an error
message. If the |+browse| feature is missing or the
{command} doesn't support browsing, the {command} is
@@ -1172,16 +1186,13 @@ For versions of Vim where browsing is not supported, the command is executed
unmodified.
*browsefilter*
-For MS Windows and GTK, you can modify the filters that are used in the browse
-dialog. By setting the g:browsefilter or b:browsefilter variables, you can
-change the filters globally or locally to the buffer. The variable is set to
-a string in the format "{filter label}\t{pattern};{pattern}\n" where {filter
-label} is the text that appears in the "Files of Type" comboBox, and {pattern}
-is the pattern which filters the filenames. Several patterns can be given,
-separated by ';'.
-
-For Motif the same format is used, but only the very first pattern is actually
-used (Motif only offers one pattern, but you can edit it).
+For Windows you can modify the filters that are used in the browse dialog. By
+setting the g:browsefilter or b:browsefilter variables, you can change the
+filters globally or locally to the buffer. The variable is set to a string in
+the format "{filter label}\t{pattern};{pattern}\n" where {filter label} is the
+text that appears in the "Files of Type" comboBox, and {pattern} is the
+pattern which filters the filenames. Several patterns can be given, separated
+by ';'.
For example, to have only Vim files in the dialog, you could use the following
command: >
@@ -1206,12 +1217,18 @@ use has("browsefilter"): >
==============================================================================
7. The current directory *current-directory*
-You may use the |:cd| and |:lcd| commands to change to another directory, so
-you will not have to type that directory name in front of the file names. It
-also makes a difference for executing external commands, e.g. ":!ls".
+You can use |:cd|, |:tcd| and |:lcd| to change to another directory, so you
+will not have to type that directory name in front of the file names. It also
+makes a difference for executing external commands, e.g. ":!ls" or ":te ls".
-Changing directory fails when the current buffer is modified, the '.' flag is
-present in 'cpoptions' and "!" is not used in the command.
+There are three current-directory "scopes": global, tab and window. The
+window-local working directory takes precedence over the tab-local
+working directory, which in turn takes precedence over the global
+working directory. If a local working directory (tab or window) does not
+exist, the next-higher scope in the hierarchy applies.
+
+Commands for changing the working directory can be suffixed with a bang "!"
+(e.g. |:cd!|) which is ignored, for compatibility with Vim.
*:cd* *E747* *E472*
:cd[!] On non-Unix systems: Print the current directory
@@ -1225,7 +1242,7 @@ present in 'cpoptions' and "!" is not used in the command.
Does not change the meaning of an already opened file,
because its full path name is remembered. Files from
the |arglist| may change though!
- On MS-DOS this also changes the active drive.
+ On Windows this also changes the active drive.
To change to the directory of the current file: >
:cd %:h
<
@@ -1236,29 +1253,50 @@ present in 'cpoptions' and "!" is not used in the command.
*:chd* *:chdir*
:chd[ir][!] [path] Same as |:cd|.
+ *:tc* *:tcd* *E5000* *E5001* *E5002*
+:tc[d][!] {path} Like |:cd|, but set the current directory for the
+ current tab and window. The current directory for
+ other tabs and windows is not changed.
+
+ *:tcd-*
+:tcd[!] - Change to the previous current directory (before the
+ previous ":tcd {path}" command).
+
+ *:tch* *:tchdir*
+:tch[dir][!] Same as |:tcd|.
+
*:lc* *:lcd*
:lc[d][!] {path} Like |:cd|, but only set the current directory for the
current window. The current directory for other
- windows is not changed.
+ windows or any tabs is not changed.
*:lch* *:lchdir*
:lch[dir][!] Same as |:lcd|.
+ *:lcd-*
+:lcd[!] - Change to the previous current directory (before the
+ previous ":tcd {path}" command).
+
*:pw* *:pwd* *E187*
:pw[d] Print the current directory name.
Also see |getcwd()|.
-So long as no |:lcd| command has been used, all windows share the same current
-directory. Using a command to jump to another window doesn't change anything
-for the current directory.
-When a |:lcd| command has been used for a window, the specified directory
-becomes the current directory for that window. Windows where the |:lcd|
-command has not been used stick to the global current directory. When jumping
-to another window the current directory will become the last specified local
-current directory. If none was specified, the global current directory is
-used.
-When a |:cd| command is used, the current window will lose his local current
-directory and will use the global current directory from now on.
+So long as no |:tcd| or |:lcd| command has been used, all windows share the
+same "current directory". Using a command to jump to another window doesn't
+change anything for the current directory.
+
+When |:lcd| has been used for a window, the specified directory becomes the
+current directory for that window. Windows where the |:lcd| command has not
+been used stick to the global or tab-local directory. When jumping to another
+window the current directory will become the last specified local current
+directory. If none was specified, the global or tab-local directory is used.
+
+When changing tabs the same behaviour applies. If the current tab has no
+local working directory the global working directory is used. When a |:cd|
+command is used, the current window and tab will lose their local current
+directories and will use the global current directory from now on. When
+a |:tcd| command is used, only the current window will lose its local working
+directory.
After using |:cd| the full path name will be used for reading and writing
files. On some networked file systems this may cause problems. The result of
@@ -1295,7 +1333,7 @@ There are a few things to remember when editing binary files:
and when the file is written the <NL> will be replaced with <CR> <NL>.
- <Nul> characters are shown on the screen as ^@. You can enter them with
"CTRL-V CTRL-@" or "CTRL-V 000".
-- To insert a <NL> character in the file split up a line. When writing the
+- To insert a <NL> character in the file split a line. When writing the
buffer to a file a <NL> will be written for the <EOL>.
- Vim normally appends an <EOL> at the end of the file if there is none.
Setting the 'binary' option prevents this. If you want to add the final
@@ -1307,9 +1345,7 @@ There are a few things to remember when editing binary files:
9. Encryption *encryption*
*:X* *E817* *E818* *E819* *E820*
-Support for editing encrypted files has been removed, but may be added back in
-the future. See the following discussions for more information:
-
+Support for editing encrypted files has been removed.
https://github.com/neovim/neovim/issues/694
https://github.com/neovim/neovim/issues/701
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 06082774cf..6ae137a6ce 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt* For Vim version 7.4. Last change: 2014 Nov 27
+*eval.txt* For Vim version 7.4. Last change: 2016 Jan 16
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -65,14 +65,16 @@ the Number. Examples:
Number 0 --> String "0" ~
Number -1 --> String "-1" ~
*octal*
-Conversion from a String to a Number is done by converting the first digits
-to a number. Hexadecimal "0xf9" and Octal "017" numbers are recognized. If
-the String doesn't start with digits, the result is zero. Examples:
+Conversion from a String to a Number is done by converting the first digits to
+a number. Hexadecimal "0xf9", Octal "017", and Binary "0b10" numbers are
+recognized. If the String doesn't start with digits, the result is zero.
+Examples:
String "456" --> Number 456 ~
String "6bar" --> Number 6 ~
String "foo" --> Number 0 ~
String "0xf1" --> Number 241 ~
String "0100" --> Number 64 ~
+ String "0b101" --> Number 5 ~
String "-8" --> Number -8 ~
String "+8" --> Number 0 ~
@@ -391,7 +393,7 @@ example, to add up all the numbers in a list: >
1.4 Dictionaries ~
- *dict* *Dictionaries* *Dictionary*
+ *Dict* *dict* *Dictionaries* *Dictionary*
A Dictionary is an associative array: Each entry has a key and a value. The
entry can be located with the key. The entries are stored without a specific
ordering.
@@ -522,7 +524,7 @@ Funcref to a Dictionary, but the "self" variable is not available then.
To avoid the extra name for the function it can be defined and directly
assigned to a Dictionary in this way: >
:let mydict = {'data': [0, 1, 2, 3]}
- :function mydict.len() dict
+ :function mydict.len()
: return len(self.data)
:endfunction
:echo mydict.len()
@@ -862,8 +864,8 @@ expr1'th single byte from expr8. expr8 is used as a String, expr1 as a
Number. This doesn't recognize multi-byte encodings, see |byteidx()| for
an alternative.
-Index zero gives the first character. This is like it works in C. Careful:
-text column numbers start with one! Example, to get the character under the
+Index zero gives the first byte. This is like it works in C. Careful:
+text column numbers start with one! Example, to get the byte under the
cursor: >
:let c = getline(".")[col(".") - 1]
@@ -914,6 +916,11 @@ just above, except that indexes out of range cause an error. Examples: >
Using expr8[expr1] or expr8[expr1a : expr1b] on a |Funcref| results in an
error.
+Watch out for confusion between a namespace and a variable followed by a colon
+for a sublist: >
+ mylist[n:] " uses variable n
+ mylist[s:] " uses namespace s:, error!
+
expr8.name entry in a |Dictionary| *expr-entry*
@@ -953,7 +960,7 @@ Decimal, Hexadecimal (starting with 0x or 0X), or Octal (starting with 0).
Floating point numbers can be written in two forms:
[-+]{N}.{M}
- [-+]{N}.{M}e[-+]{exp}
+ [-+]{N}.{M}[eE][-+]{exp}
{N} and {M} are numbers. Both {N} and {M} must be present and can only
contain digits.
@@ -1001,7 +1008,7 @@ function. Example: >
-string *string* *expr-string* *E114*
+string *string* *String* *expr-string* *E114*
------
"string" string constant *expr-quote*
@@ -1017,7 +1024,7 @@ A string constant accepts these special characters:
\X. same as \x.
\u.... character specified with up to 4 hex numbers, stored according to the
current value of 'encoding' (e.g., "\u02a4")
-\U.... same as \u....
+\U.... same as \u but allows up to 8 hex numbers.
\b backspace <BS>
\e escape <Esc>
\f formfeed <FF>
@@ -1375,6 +1382,31 @@ v:errmsg Last given error message. It's allowed to set this variable.
: ... handle error
< "errmsg" also works, for backwards compatibility.
+ *v:errors* *errors-variable*
+v:errors Errors found by assert functions, such as |assert_true()|.
+ This is a list of strings.
+ The assert functions append an item when an assert fails.
+ To remove old results make it empty: >
+ :let v:errors = []
+< If v:errors is set to anything but a list it is made an empty
+ list by the assert function.
+
+ *v:event* *event-variable*
+v:event Dictionary of event data for the current |autocommand|. The
+ available keys differ per event type and are specified at the
+ documentation for each |event|. The possible keys are:
+ operator The operation performed. Unlike
+ |v:operator|, it is set also for an Ex
+ mode command. For instance, |:yank| is
+ translated to "|y|".
+ regcontents Text stored in the register as a
+ |readfile()|-style list of lines.
+ regname Requested register (e.g "x" for "xyy)
+ or the empty string for an unnamed
+ operation.
+ regtype Type of register as returned by
+ |getregtype()|.
+
*v:exception* *exception-variable*
v:exception The value of the exception most recently caught and not
finished. See also |v:throwpoint| and |throw-variables|.
@@ -1386,6 +1418,13 @@ v:exception The value of the exception most recently caught and not
:endtry
< Output: "caught oops".
+ *v:false* *false-variable*
+v:false Special value used to put "false" in JSON and msgpack. See
+ |json_encode()|. This value is converted to "false" when used
+ as a String (e.g. in |expr5| with string concatenation
+ operator) and to zero when used as a Number (e.g. in |expr5|
+ or |expr7| when used with numeric operators).
+
*v:fcs_reason* *fcs_reason-variable*
v:fcs_reason The reason why the |FileChangedShell| event was triggered.
Can be used in an autocommand to decide what to do and/or what
@@ -1464,7 +1503,9 @@ v:hlsearch Variable that indicates whether search highlighting is on.
this variable to zero acts like the |:nohlsearch| command,
setting it to one acts like >
let &hlsearch = &hlsearch
-<
+< Note that the value is restored when returning from a
+ function. |function-search-undo|.
+
*v:insertmode* *insertmode-variable*
v:insertmode Used for the |InsertEnter| and |InsertChange| autocommand
events. Values:
@@ -1523,6 +1564,13 @@ v:msgpack_types Dictionary containing msgpack types used by |msgpackparse()|
(not editable) empty lists. To check whether some list is one
of msgpack types, use |is| operator.
+ *v:null* *null-variable*
+v:null Special value used to put "null" in JSON and NIL in msgpack.
+ See |json_encode()|. This value is converted to "null" when
+ used as a String (e.g. in |expr5| with string concatenation
+ operator) and to zero when used as a Number (e.g. in |expr5|
+ or |expr7| when used with numeric operators).
+
*v:oldfiles* *oldfiles-variable*
v:oldfiles List of file names that is loaded from the |shada| file on
startup. These are the files that Vim remembers marks for.
@@ -1535,6 +1583,15 @@ v:oldfiles List of file names that is loaded from the |shada| file on
than String this will cause trouble.
{only when compiled with the |+shada| feature}
+ *v:option_new*
+v:option_new New value of the option. Valid while executing an |OptionSet|
+ autocommand.
+ *v:option_old*
+v:option_old Old value of the option. Valid while executing an |OptionSet|
+ autocommand.
+ *v:option_type*
+v:option_type Scope of the set command. Valid while executing an
+ |OptionSet| autocommand. Can be either "global" or "local"
*v:operator* *operator-variable*
v:operator The last operator given in Normal mode. This is a single
character except for commands starting with <g> or <z>,
@@ -1679,6 +1736,13 @@ v:throwpoint The point where the exception most recently caught and not
:endtry
< Output: "Exception from test.vim, line 2"
+ *v:true* *true-variable*
+v:true Special value used to put "true" in JSON and msgpack. See
+ |json_encode()|. This value is converted to "true" when used
+ as a String (e.g. in |expr5| with string concatenation
+ operator) and to one when used as a Number (e.g. in |expr5| or
+ |expr7| when used with numeric operators).
+
*v:val* *val-variable*
v:val Value of the current item of a |List| or |Dictionary|. Only
valid while evaluating the expression used with |map()| and
@@ -1699,7 +1763,8 @@ v:version Version number of Vim: Major version number times 100 plus
v:warningmsg Last given warning message. It's allowed to set this variable.
*v:windowid* *windowid-variable* {Nvim}
-v:windowid Is a no-op at the moment; the value is always set to 0.
+v:windowid Application-specific window ID ("window handle" in MS-Windows)
+ which may be set by any attached UI. Defaults to zero.
Note: for windows inside Vim use |winnr()|.
==============================================================================
@@ -1719,10 +1784,14 @@ append( {lnum}, {string}) Number append {string} below line {lnum}
append( {lnum}, {list}) Number append lines {list} below line {lnum}
argc() Number number of files in the argument list
argidx() Number current index in the argument list
-arglistid( [{winnr}, [ {tabnr}]])
+arglistid( [{winnr} [, {tabnr}]])
Number argument list id
argv( {nr}) String {nr} entry of the argument list
argv( ) List the argument list
+assert_equal( {exp}, {act} [, {msg}]) none assert {exp} equals {act}
+assert_exception({error} [, {msg}]) none assert {error} is in v:exception
+assert_false( {actual} [, {msg}]) none assert {actual} is false
+assert_true( {actual} [, {msg}]) none assert {actual} is true
asin( {expr}) Float arc sine of {expr}
atan( {expr}) Float arc tangent of {expr}
atan2( {expr}, {expr}) Float arc tangent of {expr1} / {expr2}
@@ -1733,7 +1802,7 @@ bufexists( {expr}) Number TRUE if buffer {expr} exists
buflisted( {expr}) Number TRUE if buffer {expr} is listed
bufloaded( {expr}) Number TRUE if buffer {expr} is loaded
bufname( {expr}) String Name of the buffer {expr}
-bufnr( {expr}) Number Number of the buffer {expr}
+bufnr( {expr} [, {create}]) Number Number of the buffer {expr}
bufwinnr( {expr}) Number window number of buffer {expr}
byte2line( {byte}) Number line number at byte count {byte}
byteidx( {expr}, {nr}) Number byte index of {nr}'th char in {expr}
@@ -1762,7 +1831,11 @@ cursor( {lnum}, {col} [, {off}])
Number move cursor to {lnum}, {col}, {off}
cursor( {list}) Number move cursor to position in {list}
deepcopy( {expr} [, {noref}]) any make a full copy of {expr}
-delete( {fname}) Number delete file {fname}
+delete( {fname} [, {flags}]) Number delete the file or directory {fname}
+dictwatcheradd( {dict}, {pattern}, {callback})
+ Start watching a dictionary
+dictwatcherdel( {dict}, {pattern}, {callback})
+ Stop watching a dictionary
did_filetype() Number TRUE if FileType autocommand event used
diff_filler( {lnum}) Number diff filler lines about {lnum}
diff_hlID( {lnum}, {col}) Number diff highlighting at {lnum}/{col}
@@ -1782,7 +1855,7 @@ feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer
filereadable( {file}) Number TRUE if {file} is a readable file
filewritable( {file}) Number TRUE if {file} is a writable file
filter( {expr}, {string}) List/Dict remove items from {expr} where
- {string} is 0
+ {string} is 0
finddir( {name}[, {path}[, {count}]])
String find directory {name} in {path}
findfile( {name}[, {path}[, {count}]])
@@ -1808,12 +1881,13 @@ getbufvar( {expr}, {varname} [, {def}])
any variable {varname} in buffer {expr}
getchar( [expr]) Number get one character from the user
getcharmod( ) Number modifiers for the last typed character
+getcharsearch() Dict last character search
getcmdline() String return the current command-line
getcmdpos() Number return cursor position in command-line
getcmdtype() String return current command-line type
getcmdwintype() String return current command-line window type
getcurpos() List position of the cursor
-getcwd() String the current working directory
+getcwd( [{scope}]) String the current working directory
getfontname( [{name}]) String name of font being used
getfperm( {fname}) String file permissions of file {fname}
getfsize( {fname}) Number size in bytes of file {fname}
@@ -1837,10 +1911,10 @@ getwinposx() Number X coord in pixels of GUI Vim window
getwinposy() Number Y coord in pixels of GUI Vim window
getwinvar( {nr}, {varname} [, {def}])
any variable {varname} in window {nr}
-glob( {expr} [, {nosuf} [, {list}]])
+glob( {expr} [, {nosuf} [, {list} [, {alllinks}]]])
any expand file wildcards in {expr}
glob2regpat( {expr}) String convert a glob pat into a search pat
-globpath( {path}, {expr} [, {nosuf} [, {list}]])
+globpath( {path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
String do glob({expr}) for all dirs in {path}
has( {feature}) Number TRUE if feature {feature} supported
has_key( {dict}, {key}) Number TRUE if {dict} has entry {key}
@@ -1864,17 +1938,25 @@ inputdialog( {p} [, {t} [, {c}]]) String like input() but in a GUI dialog
inputlist( {textlist}) Number let the user pick from a choice list
inputrestore() Number restore typeahead
inputsave() Number save and clear typeahead
-inputsecret( {prompt} [, {text}]) String like input() but hiding the text
-insert( {list}, {item} [, {idx}]) List insert {item} in {list} [before {idx}]
+inputsecret( {prompt} [, {text}])
+ String like input() but hiding the text
+insert( {list}, {item} [, {idx}])
+ List insert {item} in {list} [before {idx}]
invert( {expr}) Number bitwise invert
isdirectory( {directory}) Number TRUE if {directory} is a directory
islocked( {expr}) Number TRUE if {expr} is locked
items( {dict}) List key-value pairs in {dict}
-job_close({job}) Closes a job with id {job}
-job_send({job}, {data}) Writes {data} to {job}'s stdin
-job_spawn({name}, {prog}[, {argv}])
- Spawns {prog} as a job associated with {name}
+jobclose( {job}[, {stream}]) Number Closes a job stream(s)
+jobpid( {job}) Number Returns pid of a job.
+jobresize( {job}, {width}, {height})
+ Number Resize {job}'s pseudo terminal window
+jobsend( {job}, {data}) Number Writes {data} to {job}'s stdin
+jobstart( {cmd}[, {opts}]) Number Spawns {cmd} as a job
+jobstop( {job}) Number Stops a job
+jobwait( {ids}[, {timeout}]) Number Wait for a set of jobs
join( {list} [, {sep}]) String join {list} items into one String
+json_decode( {expr}) any Convert {expr} from JSON
+json_encode( {expr}) String Convert {expr} to JSON
keys( {dict}) List keys in {dict}
len( {expr}) Number the length of {expr}
libcall( {lib}, {func}, {arg}) String call {func} in library {lib} with {arg}
@@ -1927,6 +2009,7 @@ range( {expr} [, {max} [, {stride}]])
readfile( {fname} [, {binary} [, {max}]])
List get list of lines from file {fname}
reltime( [{start} [, {end}]]) List get time value
+reltimefloat( {time}) Float turn the time value into a Float
reltimestr( {time}) String turn time value into a String
remote_expr( {server}, {string} [, {idvar}])
String send expression
@@ -1943,12 +2026,12 @@ repeat( {expr}, {count}) String repeat {expr} {count} times
resolve( {filename}) String get filename a shortcut points to
reverse( {list}) List reverse {list} in-place
round( {expr}) Float round off {expr}
-rpcnotify({channel}, {event}[, {args}...])
+rpcnotify( {channel}, {event}[, {args}...])
Sends a |msgpack-rpc| notification to {channel}
-rpcrequest({channel}, {method}[, {args}...])
+rpcrequest( {channel}, {method}[, {args}...])
Sends a |msgpack-rpc| request to {channel}
-rpcstart({prog}[, {argv}]) Spawns {prog} and opens a |msgpack-rpc| channel
-rpcstop({channel}) Closes a |msgpack-rpc| {channel}
+rpcstart( {prog}[, {argv}]) Spawns {prog} and opens a |msgpack-rpc| channel
+rpcstop( {channel}) Closes a |msgpack-rpc| {channel}
screenattr( {row}, {col}) Number attribute at screen position
screenchar( {row}, {col}) Number character at screen position
screencol() Number current cursor column
@@ -1970,11 +2053,12 @@ setbufvar( {expr}, {varname}, {val}) set {varname} in buffer {expr} to {val}
setcharsearch( {dict}) Dict set character search from {dict}
setcmdpos( {pos}) Number set cursor position in command-line
setline( {lnum}, {line}) Number set line {lnum} to {line}
-setloclist( {nr}, {list}[, {action}])
+setloclist( {nr}, {list}[, {action}[, {title}]])
Number modify location list using {list}
setmatches( {list}) Number restore a list of matches
setpos( {expr}, {list}) Number set the {expr} position to {list}
-setqflist( {list}[, {action}]) Number modify quickfix list using {list}
+setqflist( {list}[, {action}[, {title}]]
+ Number modify quickfix list using {list}
setreg( {n}, {v}[, {opt}]) Number set register to value and type
settabvar( {nr}, {varname}, {val}) set {varname} in tab page {nr} to {val}
settabwinvar( {tabnr}, {winnr}, {varname}, {val}) set {varname} in window
@@ -1999,7 +2083,7 @@ split( {expr} [, {pat} [, {keepempty}]])
sqrt( {expr}) Float square root of {expr}
str2float( {expr}) Float convert String to Float
str2nr( {expr} [, {base}]) Number convert String to Number
-strchars( {expr}) Number character length of the String {expr}
+strchars( {expr} [, {skipcc}]) Number character length of the String {expr}
strdisplaywidth( {expr} [, {col}]) Number display length of the String {expr}
strftime( {format}[, {time}]) String time in specified format
stridx( {haystack}, {needle}[, {start}])
@@ -2056,6 +2140,7 @@ winrestcmd() String returns command to restore window sizes
winrestview( {dict}) none restore view of current window
winsaveview() Dict save view of current window
winwidth( {nr}) Number width of window {nr}
+wordcount() Dict get byte/char/word statistics
writefile( {list}, {fname} [, {flags}])
Number write list of lines to file {fname}
xor( {expr}, {expr}) Number bitwise XOR
@@ -2147,6 +2232,50 @@ argv([{nr}]) The result is the {nr}th file in the argument list of the
< Without the {nr} argument a |List| with the whole |arglist| is
returned.
+ *assert_equal()*
+assert_equal({expected}, {actual}, [, {msg}])
+ When {expected} and {actual} are not equal an error message is
+ added to |v:errors|.
+ There is no automatic conversion, the String "4" is different
+ from the Number 4. And the number 4 is different from the
+ Float 4.0. The value of 'ignorecase' is not used here, case
+ always matters.
+ When {msg} is omitted an error in the form "Expected
+ {expected} but got {actual}" is produced.
+ Example: >
+ assert_equal('foo', 'bar')
+< Will result in a string to be added to |v:errors|:
+ test.vim line 12: Expected 'foo' but got 'bar' ~
+
+assert_exception({error} [, {msg}]) *assert_exception()*
+ When v:exception does not contain the string {error} an error
+ message is added to |v:errors|.
+ This can be used to assert that a command throws an exception.
+ Using the error number, followed by a colon, avoids problems
+ with translations: >
+ try
+ commandthatfails
+ call assert_false(1, 'command should have failed')
+ catch
+ call assert_exception('E492:')
+ endtry
+
+assert_false({actual} [, {msg}]) *assert_false()*
+ When {actual} is not false an error message is added to
+ |v:errors|, like with |assert_equal()|.
+ A value is false when it is zero or |v:false|. When "{actual}"
+ is not a number or |v:false| the assert fails.
+ When {msg} is omitted an error in the form "Expected False but
+ got {actual}" is produced.
+
+assert_true({actual} [, {msg}]) *assert_true()*
+ When {actual} is not true an error message is added to
+ |v:errors|, like with |assert_equal()|.
+ A value is true when it is a non-zero number or |v:true|.
+ When {actual} is not a number or |v:true| the assert fails.
+ When {msg} is omitted an error in the form "Expected True but
+ got {actual}" is produced.
+
asin({expr}) *asin()*
Return the arc sine of {expr} measured in radians, as a |Float|
in the range of [-pi/2, pi/2].
@@ -2401,6 +2530,10 @@ col({expr}) The result is a Number, which is the byte index of the column
number of bytes in the cursor line plus one)
'x position of mark x (if the mark is not set, 0 is
returned)
+ v In Visual mode: the start of the Visual area (the
+ cursor is the end). When not in Visual mode
+ returns the cursor position. Differs from |'<| in
+ that it's updated right away.
Additionally {expr} can be [lnum, col]: a |List| with the line
and column number. Most useful when the column is "$", to get
the last column of a specific line. When "lnum" or "col" is
@@ -2502,10 +2635,10 @@ confirm({msg} [, {choices} [, {default} [, {type}]]])
{default} is omitted, 1 is used.
The optional {type} argument gives the type of dialog. This
- is only used for the icon of the GTK, Mac, Motif and Win32
- GUI. It can be one of these values: "Error", "Question",
- "Info", "Warning" or "Generic". Only the first character is
- relevant. When {type} is omitted, "Generic" is used.
+ is only used for the icon of the Win32 GUI. It can be one of
+ these values: "Error", "Question", "Info", "Warning" or
+ "Generic". Only the first character is relevant.
+ When {type} is omitted, "Generic" is used.
If the user aborts the dialog by pressing <Esc>, CTRL-C,
or another valid interrupt key, confirm() returns 0.
@@ -2653,13 +2786,57 @@ deepcopy({expr}[, {noref}]) *deepcopy()* *E698*
{noref} set to 1 will fail.
Also see |copy()|.
-delete({fname}) *delete()*
- Deletes the file by the name {fname}. The result is a Number,
- which is 0 if the file was deleted successfully, and non-zero
- when the deletion failed.
- Use |remove()| to delete an item from a |List|.
- To delete a line from the buffer use |:delete|. Use |:exe|
- when the line number is in a variable.
+delete({fname} [, {flags}]) *delete()*
+ Without {flags} or with {flags} empty: Deletes the file by the
+ name {fname}. This also works when {fname} is a symbolic link.
+ A symbolic link itself is deleted, not what it points to.
+
+ When {flags} is "d": Deletes the directory by the name
+ {fname}. This fails when directory {fname} is not empty.
+
+ When {flags} is "rf": Deletes the directory by the name
+ {fname} and everything in it, recursively. BE CAREFUL!
+
+ The result is a Number, which is 0 if the delete operation was
+ successful and -1 when the deletion failed or partly failed.
+
+dictwatcheradd({dict}, {pattern}, {callback}) *dictwatcheradd()*
+ Adds a watcher to a dictionary. A dictionary watcher is
+ identified by three components:
+
+ - A dictionary({dict});
+ - A key pattern({pattern}).
+ - A function({callback}).
+
+ After this is called, every change on {dict} and on keys
+ matching {pattern} will result in {callback} being invoked.
+
+ For now {pattern} only accepts very simple patterns that can
+ contain a '*' at the end of the string, in which case it will
+ match every key that begins with the substring before the '*'.
+ That means if '*' is not the last character of {pattern}, only
+ keys that are exactly equal as {pattern} will be matched.
+
+ The {callback} receives three arguments:
+
+ - The dictionary being watched.
+ - The key which changed.
+ - A dictionary containg the new and old values for the key.
+
+ The type of change can be determined by examining the keys
+ present on the third argument:
+
+ - If contains both `old` and `new`, the key was updated.
+ - If it contains only `new`, the key was added.
+ - If it contains only `old`, the key was deleted.
+
+ This function can be used by plugins to implement options with
+ validation and parsing logic.
+
+dictwatcherdel({dict}, {pattern}, {callback}) *dictwatcherdel()*
+ Removes a watcher added with |dictwatcheradd()|. All three
+ arguments must match the ones passed to |dictwatcheradd()| in
+ order for the watcher to be successfully deleted.
*did_filetype()*
did_filetype() Returns non-zero when autocommands are being executed and the
@@ -2695,9 +2872,8 @@ diff_hlID({lnum}, {col}) *diff_hlID()*
empty({expr}) *empty()*
Return the Number 1 if {expr} is empty, zero otherwise.
A |List| or |Dictionary| is empty when it does not have any
- items. A Number is empty when its value is zero.
- For a long |List| this is much faster than comparing the
- length with zero.
+ items. A Number is empty when its value is zero. Special
+ variable is empty when it is |v:false| or |v:null|.
escape({string}, {chars}) *escape()*
Escape the characters in {chars} that occur in {string} with a
@@ -2726,7 +2902,7 @@ executable({expr}) *executable()*
arguments.
executable() uses the value of $PATH and/or the normal
searchpath for programs. *PATHEXT*
- On MS-DOS and MS-Windows the ".exe", ".bat", etc. can
+ On Windows the ".exe", ".bat", etc. can
optionally be included. Then the extensions in $PATHEXT are
tried. Thus if "foo.exe" does not exist, "foo.exe.bat" can be
found. If $PATHEXT is not set then ".exe;.com;.bat;.cmd" is
@@ -2734,9 +2910,9 @@ executable({expr}) *executable()*
the name without an extension. When 'shell' looks like a
Unix shell, then the name is also tried without adding an
extension.
- On MS-DOS and MS-Windows it only checks if the file exists and
+ On Windows it only checks if the file exists and
is not a directory, not if it's really executable.
- On MS-Windows an executable in the same directory as Vim is
+ On Windows an executable in the same directory as Vim is
always found. Since this directory is added to $PATH it
should also work to execute it |win32-PATH|.
The result is a Number:
@@ -2959,6 +3135,8 @@ extend({expr1}, {expr2} [, {expr3}]) *extend()*
{expr1} is changed when {expr2} is not empty. If necessary
make a copy of {expr1} first.
{expr2} remains unchanged.
+ When {expr1} is locked and {expr2} is not empty the operation
+ fails.
Returns {expr1}.
@@ -3178,8 +3356,7 @@ foreground() Move the Vim window to the foreground. Useful when sent from
On Win32 systems this might not work, the OS does not always
allow a window to bring itself to the foreground. Use
|remote_foreground()| instead.
- {only in the Win32, Athena, Motif and GTK GUI versions and the
- Win32 console version}
+ {only in the Win32 GUI and console version}
function({name}) *function()* *E700*
@@ -3310,7 +3487,7 @@ getchar([expr]) *getchar()*
: endwhile
:endfunction
<
- You may also receive syntetic characters, such as
+ You may also receive synthetic characters, such as
|<CursorHold>|. Often you will want to ignore this and get
another character: >
:function GetKey()
@@ -3404,9 +3581,18 @@ getcurpos() Get the position of the cursor. This is like getpos('.'), but
MoveTheCursorAround
call setpos('.', save_cursor)
<
- *getcwd()*
-getcwd() The result is a String, which is the name of the current
- working directory.
+getcwd([{window}[, {tab}]]) *getcwd()*
+ With no arguments the result is a String, which is the name of
+ the current effective working directory. With {window} or
+ {tab} the working directory of that scope is returned.
+ Tabs and windows are identified by their respective numbers,
+ 0 means current tab or window. Missing argument implies 0.
+ Thus the following are equivalent: >
+ getcwd()
+ getcwd(0)
+ getcwd(0, 0)
+< If {window} is -1 it is ignored, only the tab is resolved.
+
getfsize({fname}) *getfsize()*
The result is a Number, which is the size in bytes of the
@@ -3427,8 +3613,6 @@ getfontname([{name}]) *getfontname()*
Only works when the GUI is running, thus not in your vimrc or
gvimrc file. Use the |GUIEnter| autocommand to use this
function just after the GUI has started.
- Note that the GTK 2 GUI accepts any font name, thus checking
- for a valid name does not work.
getfperm({fname}) *getfperm()*
The result is a String, which is the read, write, and execute
@@ -3527,8 +3711,7 @@ getmatches() *getmatches()*
<
*getpid()*
getpid() Return a Number which is the process ID of the Vim process.
- On Unix and MS-Windows this is a unique number, until Vim
- exits. On MS-DOS it's always zero.
+ This is a unique number, until Vim exits.
*getpos()*
getpos({expr}) Get the position for {expr}. For possible values of {expr}
@@ -3654,7 +3837,7 @@ getwinvar({winnr}, {varname} [, {def}]) *getwinvar()*
:let list_is_on = getwinvar(2, '&list')
:echo "myvar = " . getwinvar(1, 'myvar')
<
-glob({expr} [, {nosuf} [, {list}]]) *glob()*
+glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) *glob()*
Expand the file wildcards in {expr}. See |wildcards| for the
use of special characters.
@@ -3671,8 +3854,11 @@ glob({expr} [, {nosuf} [, {list}]]) *glob()*
matches, they are separated by <NL> characters.
If the expansion fails, the result is an empty String or List.
+
A name for a non-existing file is not included. A symbolic
link is only included if it points to an existing file.
+ However, when the {alllinks} argument is present and it is
+ non-zero then all symbolic links are included.
For most systems backticks can be used to get files names from
any external command. Example: >
@@ -3691,8 +3877,11 @@ glob2regpat({expr}) *glob2regpat()*
if filename =~ glob2regpat('Make*.mak')
< This is equivalent to: >
if filename =~ '^Make.*\.mak$'
-<
-globpath({path}, {expr} [, {nosuf} [, {list}]]) *globpath()*
+< When {expr} is an empty string the result is "^$", match an
+ empty string.
+
+ *globpath()*
+globpath({path}, {expr} [, {nosuf} [, {list} [, {allinks}]]])
Perform glob() on all directories in {path} and concatenate
the results. Example: >
:echo globpath(&rtp, "syntax/c.vim")
@@ -3718,6 +3907,8 @@ globpath({path}, {expr} [, {nosuf} [, {list}]]) *globpath()*
they are separated by <NL> characters. Example: >
:echo globpath(&rtp, "syntax/c.vim", 0, 1)
<
+ {allinks} is used as with |glob()|.
+
The "**" item can be used to search in a directory tree.
For example, to find all "README.txt" files in the directories
in 'runtimepath' and below: >
@@ -3736,9 +3927,18 @@ has_key({dict}, {key}) *has_key()*
The result is a Number, which is 1 if |Dictionary| {dict} has
an entry with key {key}. Zero otherwise.
-haslocaldir() *haslocaldir()*
- The result is a Number, which is 1 when the current
- window has set a local path via |:lcd|, and 0 otherwise.
+haslocaldir([{window}[, {tab}]]) *haslocaldir()*
+ The result is a Number, which is 1 when the specified tabpage
+ or window has a local path set via |:lcd| or |:tcd|, and
+ 0 otherwise.
+
+ Tabs and windows are identified by their respective numbers,
+ 0 means current tab or window. Missing argument implies 0.
+ Thus the following are equivalent: >
+ haslocaldir()
+ haslocaldir(0)
+ haslocaldir(0, 0)
+< If {window} is -1 it is ignored, only the tab is resolved.
hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()*
The result is a Number, which is 1 if there is a mapping that
@@ -4060,6 +4260,9 @@ jobclose({job}[, {stream}]) {Nvim} *jobclose()*
Close {job}'s {stream}, which can be one "stdin", "stdout" or
"stderr". If {stream} is omitted, all streams are closed.
+jobpid({job}) {Nvim} *jobpid()*
+ Return the pid (process id) of {job}.
+
jobresize({job}, {width}, {height}) {Nvim} *jobresize()*
Resize {job}'s pseudo terminal window to {width} and {height}.
This function will fail if used on jobs started without the
@@ -4079,9 +4282,14 @@ jobsend({job}, {data}) {Nvim} *jobsend()*
jobstart({cmd}[, {opts}]) {Nvim} *jobstart()*
Spawns {cmd} as a job. If {cmd} is a |List|, it will be run
- directly. If {cmd} is a |string|, it will be equivalent to >
- :call jobstart([&shell, &shellcmdflag, '{cmd}'])
-< If passed, {opts} must be a dictionary with any of the
+ directly. If {cmd} is a |string|, it will be roughly
+ equivalent to >
+ :call jobstart(split(&shell) + split(&shellcmdflag) + ['{cmd}'])
+< NOTE: read |shell-unquoting| before constructing any lists
+ with 'shell' or 'shellcmdflag' options. The above call is
+ only written to show the idea, one needs to perform unquoting
+ and do split taking quotes into account.
+ If passed, {opts} must be a dictionary with any of the
following keys:
- on_stdout: stdout event handler
- on_stderr: stderr event handler
@@ -4092,6 +4300,10 @@ jobstart({cmd}[, {opts}]) {Nvim} *jobstart()*
- width: Width of the terminal screen(only if pty is set)
- height: Height of the terminal screen(only if pty is set)
- TERM: $TERM environment variable(only if pty is set)
+ - detach: Detach the job process from the nvim process. The
+ process won't get killed when nvim exists. If the process
+ dies before nvim exits, on_exit will still be invoked.
+ This option is only allowed for non-pty jobs.
Either funcrefs or function names can be passed as event
handlers. The {opts} object is also used as the "self"
argument for the callback, so the caller may pass arbitrary
@@ -4142,6 +4354,46 @@ join({list} [, {sep}]) *join()*
converted into a string like with |string()|.
The opposite function is |split()|.
+json_decode({expr}) *json_decode()*
+ Convert {expr} from JSON object. Accepts |readfile()|-style
+ list as the input, as well as regular string. May output any
+ Vim value. When 'encoding' is not UTF-8 string is converted
+ from UTF-8 to 'encoding', failing conversion fails
+ json_decode(). In the following cases it will output
+ |msgpack-special-dict|:
+ 1. Dictionary contains duplicate key.
+ 2. Dictionary contains empty key.
+ 3. String contains NUL byte. Two special dictionaries: for
+ dictionary and for string will be emitted in case string
+ with NUL byte was a dictionary key.
+
+ Note: function treats its input as UTF-8 always regardless of
+ 'encoding' value. This is needed because JSON source is
+ supposed to be external (e.g. |readfile()|) and JSON standard
+ allows only a few encodings, of which UTF-8 is recommended and
+ the only one required to be supported. Non-UTF-8 characters
+ are an error.
+
+json_encode({expr}) *json_encode()*
+ Convert {expr} into a JSON string. Accepts
+ |msgpack-special-dict| as the input. Converts from 'encoding'
+ to UTF-8 when encoding strings. Will not convert |Funcref|s,
+ mappings with non-string keys (can be created as
+ |msgpack-special-dict|), values with self-referencing
+ containers, strings which contain non-UTF-8 characters,
+ pseudo-UTF-8 strings which contain codepoints reserved for
+ surrogate pairs (such strings are not valid UTF-8 strings).
+ When converting 'encoding' is taken into account, if it is not
+ "utf-8", then conversion is performed before encoding strings.
+ Non-printable characters are converted into "\u1234" escapes
+ or special escapes like "\t", other are dumped as-is.
+
+ Note: all characters above U+0079 are considered non-printable
+ when 'encoding' is not UTF-8. This function always outputs
+ UTF-8 strings as required by the standard thus when 'encoding'
+ is not unicode resulting string will look incorrect if
+ "\u1234" notation is not used.
+
keys({dict}) *keys()*
Return a |List| with all the keys of {dict}. The |List| is in
arbitrary order.
@@ -4453,7 +4705,7 @@ match({expr}, {pat}[, {start}[, {count}]]) *match()*
done like 'magic' is set and 'cpoptions' is empty.
*matchadd()* *E798* *E799* *E801*
-matchadd({group}, {pattern}[, {priority}[, {id}]])
+matchadd({group}, {pattern}[, {priority}[, {id} [, {dict}]]])
Defines a pattern to be highlighted in the current window (a
"match"). It will be highlighted with {group}. Returns an
identification number (ID), which can be used to delete the
@@ -4461,6 +4713,8 @@ matchadd({group}, {pattern}[, {priority}[, {id}]])
Matching is case sensitive and magic, unless case sensitivity
or magicness are explicitly overridden in {pattern}. The
'magic', 'smartcase' and 'ignorecase' options are not used.
+ The "Conceal" value is special, it causes the match to be
+ concealed.
The optional {priority} argument assigns a priority to the
match. A match with a high priority will have its
@@ -4478,9 +4732,18 @@ matchadd({group}, {pattern}[, {priority}[, {id}]])
message will appear and the match will not be added. An ID
is specified as a positive integer (zero excluded). IDs 1, 2
and 3 are reserved for |:match|, |:2match| and |:3match|,
- respectively. If the {id} argument is not specified,
+ respectively. If the {id} argument is not specified or -1,
|matchadd()| automatically chooses a free ID.
+ The optional {dict} argmument allows for further custom
+ values. Currently this is used to specify a match specifc
+ conceal character that will be shown for |hl-Conceal|
+ highlighted matches. The dict can have the following members:
+
+ conceal Special character to show instead of the
+ match (only for |hl-Conceal| highlighed
+ matches, see |:syn-cchar|)
+
The number of matches is not limited, as it is the case with
the |:match| commands.
@@ -4494,7 +4757,7 @@ matchadd({group}, {pattern}[, {priority}[, {id}]])
available from |getmatches()|. All matches can be deleted in
one operation by |clearmatches()|.
-matchaddpos({group}, {pos}[, {priority}[, {id}]]) *matchaddpos()*
+matchaddpos({group}, {pos}[, {priority}[, {id}[, {dict}]]]) *matchaddpos()*
Same as |matchadd()|, but requires a list of positions {pos}
instead of a pattern. This command is faster than |matchadd()|
because it does not require to handle regular expressions and
@@ -4658,7 +4921,7 @@ msgpackdump({list}) {Nvim} *msgpackdump()*
(dictionary with zero items is represented by 0x80 byte in
messagepack).
- Limitations:
+ Limitations: *E951* *E952* *E953*
1. |Funcref|s cannot be dumped.
2. Containers that reference themselves cannot be dumped.
3. Dictionary keys are always dumped as STR strings.
@@ -4693,9 +4956,13 @@ msgpackparse({list}) {Nvim} *msgpackparse()*
contains name of the key from |v:msgpack_types|):
Key Value ~
- nil Zero, ignored when dumping.
- boolean One or zero. When dumping it is only checked that
- value is a |Number|.
+ nil Zero, ignored when dumping. This value cannot
+ possibly appear in |msgpackparse()| output in Neovim
+ versions which have |v:null|.
+ boolean One or zero. When dumping it is only checked that
+ value is a |Number|. This value cannot possibly
+ appear in |msgpackparse()| output in Neovim versions
+ which have |v:true| and |v:false|.
integer |List| with four numbers: sign (-1 or 1), highest two
bits, number with bits from 62nd to 31st, lowest 31
bits. I.e. to get actual number one will need to use
@@ -4809,6 +5076,9 @@ printf({fmt}, {expr1} ...) *printf()*
%c single byte
%d decimal number
%5d decimal number padded with spaces to 5 characters
+ %b binary number
+ %08b binary number padded with zeros to at least 8 characters
+ %B binary number using upper case letters
%x hex number
%04x hex number padded with zeros to at least 4 characters
%X hex number using upper case letters
@@ -4895,20 +5165,19 @@ printf({fmt}, {expr1} ...) *printf()*
The conversion specifiers and their meanings are:
- *printf-d* *printf-o* *printf-x* *printf-X*
- doxX The Number argument is converted to signed decimal
- (d), unsigned octal (o), or unsigned hexadecimal (x
- and X) notation. The letters "abcdef" are used for
- x conversions; the letters "ABCDEF" are used for X
- conversions.
- The precision, if any, gives the minimum number of
- digits that must appear; if the converted value
- requires fewer digits, it is padded on the left with
- zeros.
- In no case does a non-existent or small field width
- cause truncation of a numeric field; if the result of
- a conversion is wider than the field width, the field
- is expanded to contain the conversion result.
+ *printf-d* *printf-b* *printf-B* *printf-o* *printf-x* *printf-X*
+ dbBoxX The Number argument is converted to signed decimal (d),
+ unsigned binary (b and B), unsigned octal (o), or
+ unsigned hexadecimal (x and X) notation. The letters
+ "abcdef" are used for x conversions; the letters
+ "ABCDEF" are used for X conversions. The precision, if
+ any, gives the minimum number of digits that must
+ appear; if the converted value requires fewer digits, it
+ is padded on the left with zeros. In no case does a
+ non-existent or small field width cause truncation of a
+ numeric field; if the result of a conversion is wider
+ than the field width, the field is expanded to contain
+ the conversion result.
*printf-c*
c The Number argument is converted to a byte, and the
@@ -4918,6 +5187,7 @@ printf({fmt}, {expr1} ...) *printf()*
s The text of the String argument is used. If a
precision is specified, no more bytes than the number
specified are used.
+ *printf-S*
S The text of the String argument is used. If a
precision is specified, no more display cells than the
number specified are used. Without the |+multi_byte|
@@ -4979,7 +5249,7 @@ py3eval({expr}) *py3eval()*
Evaluate Python expression {expr} and return its result
converted to Vim data structures.
Numbers and strings are returned as they are (strings are
- copied though, unicode strings are additionally converted to
+ copied though, Unicode strings are additionally converted to
'encoding').
Lists are represented as Vim |List| type.
Dictionaries are represented as Vim |Dictionary| type with
@@ -5023,7 +5293,7 @@ readfile({fname} [, {binary} [, {max}]])
separated with CR will result in a single long line (unless a
NL appears somewhere).
All NUL characters are replaced with a NL character.
- When {binary/append} contains "b" binary mode is used:
+ When {binary} contains "b" binary mode is used:
- When the last line ends in a NL an extra empty list item is
added.
- No CR characters are removed.
@@ -5051,7 +5321,8 @@ readfile({fname} [, {binary} [, {max}]])
reltime([{start} [, {end}]]) *reltime()*
Return an item that represents a time value. The format of
the item depends on the system. It can be passed to
- |reltimestr()| to convert it to a string.
+ |reltimestr()| to convert it to a string or |reltimefloat()|
+ to convert to a float.
Without an argument it returns the current time.
With one argument is returns the time passed since the time
specified in the argument.
@@ -5059,7 +5330,16 @@ reltime([{start} [, {end}]]) *reltime()*
and {end}.
The {start} and {end} arguments must be values returned by
reltime().
- {only available when compiled with the |+reltime| feature}
+
+reltimefloat({time}) *reltimefloat()*
+ Return a Float that represents the time value of {time}.
+ Unit of time is seconds.
+ Example:
+ let start = reltime()
+ call MyFunction()
+ let seconds = reltimefloat(reltime(start))
+ See the note of reltimestr() about overhead.
+ Also see |profiling|.
reltimestr({time}) *reltimestr()*
Return a String that represents the time value of {time}.
@@ -5069,12 +5349,10 @@ reltimestr({time}) *reltimestr()*
call MyFunction()
echo reltimestr(reltime(start))
< Note that overhead for the commands will be added to the time.
- The accuracy depends on the system.
Leading spaces are used to make the string align nicely. You
can use split() to remove it. >
echo split(reltimestr(reltime(start)))[0]
< Also see |profiling|.
- {only available when compiled with the |+reltime| feature}
*remote_expr()* *E449*
remote_expr({server}, {string} [, {idvar}])
@@ -5106,8 +5384,7 @@ remote_foreground({server}) *remote_foreground()*
Note: This does not restore the window if it was minimized,
like foreground() does.
This function is not available in the |sandbox|.
- {only in the Win32, Athena, Motif and GTK GUI versions and the
- Win32 console version}
+ {only in the Win32 GUI and the Win32 console version}
remote_peek({serverid} [, {retvar}]) *remote_peek()*
@@ -5295,14 +5572,15 @@ search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()*
move. No error message is given.
{flags} is a String, which can contain these character flags:
- 'b' search backward instead of forward
- 'c' accept a match at the cursor position
+ 'b' search Backward instead of forward
+ 'c' accept a match at the Cursor position
'e' move to the End of the match
'n' do Not move the cursor
- 'p' return number of matching sub-pattern (see below)
- 's' set the ' mark at the previous location of the cursor
- 'w' wrap around the end of the file
- 'W' don't wrap around the end of the file
+ 'p' return number of matching sub-Pattern (see below)
+ 's' Set the ' mark at the previous location of the cursor
+ 'w' Wrap around the end of the file
+ 'W' don't Wrap around the end of the file
+ 'z' start searching at the cursor column instead of Zero
If neither 'w' or 'W' is given, the 'wrapscan' option applies.
If the 's' flag is supplied, the ' mark is set, only if the
@@ -5310,6 +5588,12 @@ search({pattern} [, {flags} [, {stopline} [, {timeout}]]]) *search()*
flag.
'ignorecase', 'smartcase' and 'magic' are used.
+
+ When the 'z' flag is not given seaching always starts in
+ column zero and then matches before the cursor are skipped.
+ When the 'c' flag is present in 'cpo' the next search starts
+ after the match. Without the 'c' flag the next search starts
+ one column further.
When the {stopline} argument is given then the search stops
after searching this line. This is useful to restrict the
@@ -5548,7 +5832,7 @@ setbufvar({expr}, {varname}, {val}) *setbufvar()*
:call setbufvar("todo", "myvar", "foobar")
< This function is not available in the |sandbox|.
-setcharsearch() *setcharsearch()*
+setcharsearch({dict}) *setcharsearch()*
Set the current character search information to {dict},
which contains one or more of the following entries:
@@ -5601,11 +5885,13 @@ setline({lnum}, {text}) *setline()*
:endfor
< Note: The '[ and '] marks are not set.
-setloclist({nr}, {list} [, {action}]) *setloclist()*
+setloclist({nr}, {list} [, {action}[, {title}]]) *setloclist()*
Create or replace or add to the location list for window {nr}.
When {nr} is zero the current window is used. For a location
list window, the displayed location list is modified. For an
- invalid window number {nr}, -1 is returned.
+ invalid window number {nr}, -1 is returned. If {title} is
+ given, it will be used to set |w:quickfix_title| after opening
+ the location window.
Otherwise, same as |setqflist()|.
Also see |location-list|.
@@ -5662,7 +5948,7 @@ setpos({expr}, {list})
|winrestview()|.
-setqflist({list} [, {action}]) *setqflist()*
+setqflist({list} [, {action}[, {title}]]) *setqflist()*
Create or replace or add to the quickfix list using the items
in {list}. Each item in {list} is a dictionary.
Non-dictionary items in {list} are ignored. Each dictionary
@@ -5701,6 +5987,9 @@ setqflist({list} [, {action}]) *setqflist()*
with the items from {list}. If {action} is not present or is
set to ' ', then a new list is created.
+ If {title} is given, it will be used to set |w:quickfix_title|
+ after opening the quickfix window.
+
Returns zero for success, -1 for failure.
This function can be used to create a quickfix list
@@ -5783,12 +6072,12 @@ setwinvar({nr}, {varname}, {val}) *setwinvar()*
:call setwinvar(2, "myvar", "foobar")
sha256({string}) *sha256()*
- Returns a String with 64 hex charactes, which is the SHA256
+ Returns a String with 64 hex characters, which is the SHA256
checksum of {string}.
shellescape({string} [, {special}]) *shellescape()*
Escape {string} for use as a shell command argument.
- On MS-Windows and MS-DOS, when 'shellslash' is not set, it
+ On Windows when 'shellslash' is not set, it
will enclose {string} in double quotes and double all double
quotes within {string}.
For other systems, it will enclose {string} in single quotes
@@ -5886,6 +6175,10 @@ sort({list} [, {func} [, {dict}]]) *sort()* *E702*
strtod() function to parse numbers, Strings, Lists, Dicts and
Funcrefs will be considered as being 0).
+ When {func} is given and it is 'N' then all items will be
+ sorted numerical. This is like 'n' but a string containing
+ digits will be used as the number they represent.
+
When {func} is a |Funcref| or a function name, this function
is called to compare items. The function is invoked with two
items as argument and must return zero if they are equal, 1 or
@@ -5987,7 +6280,8 @@ split({expr} [, {pattern} [, {keepempty}]]) *split()*
:let words = split(getline('.'), '\W\+')
< To split a string in individual characters: >
:for c in split(mystring, '\zs')
-< If you want to keep the separator you can also use '\zs': >
+< If you want to keep the separator you can also use '\zs' at
+ the end of the pattern: >
:echo split('abc:def:ghi', ':\zs')
< ['abc:', 'def:', 'ghi'] ~
Splitting a table where the first element can be empty: >
@@ -6024,24 +6318,46 @@ str2float( {expr}) *str2float()*
str2nr( {expr} [, {base}]) *str2nr()*
Convert string {expr} to a number.
- {base} is the conversion base, it can be 8, 10 or 16.
+ {base} is the conversion base, it can be 2, 8, 10 or 16.
When {base} is omitted base 10 is used. This also means that
a leading zero doesn't cause octal conversion to be used, as
with the default String to Number conversion.
When {base} is 16 a leading "0x" or "0X" is ignored. With a
- different base the result will be zero.
+ different base the result will be zero. Similarly, when {base}
+ is 8 a leading "0" is ignored, and when {base} is 2 a leading
+ "0b" or "0B" is ignored.
Text after the number is silently ignored.
-strchars({expr}) *strchars()*
+strchars({expr} [, {skipcc}]) *strchars()*
The result is a Number, which is the number of characters
- String {expr} occupies. Composing characters are counted
- separately.
+ in String {expr}.
+ When {skipcc} is omitted or zero, composing characters are
+ counted separately.
+ When {skipcc} set to 1, Composing characters are ignored.
Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
+
+ {skipcc} is only available after 7.4.755. For backward
+ compatibility, you can define a wrapper function: >
+ if has("patch-7.4.755")
+ function s:strchars(str, skipcc)
+ return strchars(a:str, a:skipcc)
+ endfunction
+ else
+ function s:strchars(str, skipcc)
+ if a:skipcc
+ return strlen(substitute(a:str, ".", "x", "g"))
+ else
+ return strchars(a:str)
+ endif
+ endfunction
+ endif
+<
+
strdisplaywidth({expr}[, {col}]) *strdisplaywidth()*
The result is a Number, which is the number of display cells
- String {expr} occupies on the screen when it starts a {col}.
+ String {expr} occupies on the screen when it starts at {col}.
When {col} is omitted zero is used. Otherwise it is the
screen column where to start. This matters for Tab
characters.
@@ -6097,25 +6413,31 @@ string({expr}) Return {expr} converted to a String. If {expr} is a Number,
{expr} type result ~
String 'string'
Number 123
- Float 123.123456 or 1.123456e8
- Funcref function('name')
+ Float 123.123456 or 1.123456e8 or
+ `str2float('inf')`
+ Funcref `function('name')`
List [item, item]
Dictionary {key: value, key: value}
Note that in String values the ' character is doubled.
Also see |strtrans()|.
+ Note 2: Output format is mostly compatible with YAML, except
+ for infinite and NaN floating-point values representations
+ which use |str2float()|. Strings are also dumped literally,
+ only single quote is escaped, which does not allow using YAML
+ for parsing back binary strings (including text when
+ 'encoding' is not UTF-8). |eval()| should always work for
+ strings and floats though and this is the only official
+ method, use |msgpackdump()| or |json_encode()| if you need to
+ share data with other application.
*strlen()*
strlen({expr}) The result is a Number, which is the length of the String
{expr} in bytes.
- If you want to count the number of multi-byte characters (not
- counting composing characters) use something like this: >
-
- :let len = strlen(substitute(str, ".", "x", "g"))
-<
If the argument is a Number it is first converted to a String.
For other types an error is given.
- Also see |len()|, |strchars()|, |strdisplaywidth()| and
- |strwidth()|.
+ If you want to count the number of multi-byte characters use
+ |strchars()|.
+ Also see |len()|, |strdisplaywidth()| and |strwidth()|.
strpart({src}, {start}[, {len}]) *strpart()*
The result is a String, which is part of {src}, starting from
@@ -6229,6 +6551,9 @@ synID({lnum}, {col}, {trans}) *synID()*
{col} is 1 for the leftmost column, {lnum} is 1 for the first
line. 'synmaxcol' applies, in a longer line zero is returned.
+ Note that when the position is after the last character,
+ that's where the cursor can be in Insert mode, synID() returns
+ zero.
When {trans} is non-zero, transparent items are reduced to the
item that they reveal. This is useful when wanting to know
@@ -6534,12 +6859,14 @@ trunc({expr}) *trunc()*
type({expr}) *type()*
The result is a Number, depending on the type of {expr}:
- Number: 0
- String: 1
+ Number: 0
+ String: 1
Funcref: 2
- List: 3
+ List: 3
Dictionary: 4
- Float: 5
+ Float: 5
+ Boolean: 6 (|v:true| and |v:false|)
+ Null: 7 (|v:null|)
To avoid the magic numbers it should be used this way: >
:if type(myvar) == type(0)
:if type(myvar) == type("")
@@ -6547,6 +6874,10 @@ type({expr}) *type()*
:if type(myvar) == type([])
:if type(myvar) == type({})
:if type(myvar) == type(0.0)
+ :if type(myvar) == type(v:true)
+< In place of checking for |v:null| type it is better to check
+ for |v:null| directly as it is the only value of this type: >
+ :if myvar is v:null
undofile({name}) *undofile()*
Return the name of the undo file that would be used for a file
@@ -6640,6 +6971,10 @@ virtcol({expr}) *virtcol()*
plus one)
'x position of mark x (if the mark is not set, 0 is
returned)
+ v In Visual mode: the start of the Visual area (the
+ cursor is the end). When not in Visual mode
+ returns the cursor position. Differs from |'<| in
+ that it's updated right away.
Note that only marks in the current file can be used.
Examples: >
virtcol(".") with text "foo^Lbar", with cursor on the "^L", returns 5
@@ -6788,6 +7123,28 @@ winwidth({nr}) *winwidth()*
: exe "normal 50\<C-W>|"
:endif
<
+wordcount() *wordcount()*
+ The result is a dictionary of byte/chars/word statistics for
+ the current buffer. This is the same info as provided by
+ |g_CTRL-G|
+ The return value includes:
+ bytes Number of bytes in the buffer
+ chars Number of chars in the buffer
+ words Number of words in the buffer
+ cursor_bytes Number of bytes before cursor position
+ (not in Visual mode)
+ cursor_chars Number of chars before cursor position
+ (not in Visual mode)
+ cursor_words Number of words before cursor position
+ (not in Visual mode)
+ visual_bytes Number of bytes visually selected
+ (only in Visual mode)
+ visual_chars Number of chars visually selected
+ (only in Visual mode)
+ visual_words Number of chars visually selected
+ (only in Visual mode)
+
+
*writefile()*
writefile({list}, {fname} [, {flags}])
Write |List| {list} to file {fname}. Each list item is
@@ -6852,8 +7209,6 @@ There are four types of features:
acl Compiled with |ACL| support.
arabic Compiled with Arabic support |Arabic|.
autocmd Compiled with autocommand support. |autocommand|
-balloon_eval Compiled with |balloon-eval| support.
-balloon_multiline GUI supports multiline balloons.
browse Compiled with |:browse| support, and browse() will
work.
browsefilter Compiled with support for |browsefilter|.
@@ -6871,7 +7226,6 @@ debug Compiled with "DEBUG" defined.
dialog_con Compiled with console dialog support.
dialog_gui Compiled with GUI dialog support.
digraphs Compiled with support for digraphs.
-dnd Compiled with support for the "~ register |quote_~|.
eval Compiled with expression evaluation support. Always
true, of course!
ex_extra Compiled with extra Ex commands |+ex_extra|.
@@ -6884,22 +7238,13 @@ filterpipe When 'shelltemp' is off pipes are used for shell
find_in_path Compiled with support for include file searches
|+find_in_path|.
float Compiled with support for |Float|.
-fname_case Case in file names matters (for MS-DOS and Windows
- this is not present).
+fname_case Case in file names matters (for Windows this is not
+ present).
folding Compiled with |folding| support.
-footer Compiled with GUI footer support. |gui-footer|
-fork Compiled to use fork()/exec() instead of system().
gettext Compiled with message translation |multi-lang|
gui Compiled with GUI enabled.
-gui_athena Compiled with Athena GUI.
-gui_gnome Compiled with Gnome support (gui_gtk is also defined).
-gui_gtk Compiled with GTK+ GUI (any version).
-gui_gtk2 Compiled with GTK+ 2 GUI (gui_gtk is also defined).
-gui_mac Compiled with Macintosh GUI.
-gui_motif Compiled with Motif GUI.
gui_running Vim is running in the GUI, or it will start soon.
gui_win32 Compiled with MS Windows Win32 GUI.
-gui_win32s idem, and Win32s system being used (Windows 3.1)
iconv Can use iconv() for conversion.
insert_expand Compiled with support for CTRL-X expansion commands in
Insert mode.
@@ -6947,7 +7292,7 @@ statusline Compiled with support for 'statusline', 'rulerformat'
syntax Compiled with syntax highlighting support |syntax|.
syntax_items There are active syntax highlighting items for the
current buffer.
-system Compiled to use system() instead of fork()/exec().
+tablineat 'tabline' option accepts %@Func@ items.
tag_binary Compiled with binary searching in tags files
|tag-binary-search|.
tag_old_static Compiled with support for old static tags
@@ -6972,10 +7317,9 @@ visualextra Compiled with extra Visual mode commands.
vreplace Compiled with |gR| and |gr| commands.
wildignore Compiled with 'wildignore' option.
wildmenu Compiled with 'wildmenu' option.
-win32 Win32 version of Vim (MS-Windows 95 and later, 32 or
- 64 bits)
-win32unix Win32 version of Vim, using Unix files (Cygwin)
-win64 Win64 version of Vim (MS-Windows 64 bit).
+win32 Windows version of Vim (32 or 64 bit).
+win32unix Windows version of Vim, using Unix files (Cygwin).
+win64 Windows version of Vim (64 bit).
winaltkeys Compiled with 'winaltkeys' option.
windows Compiled with support for more than one window.
writebackup Compiled with 'writebackup' default on.
@@ -7544,7 +7888,7 @@ This does NOT work: >
:unlet v
< *E741*
If you try to change a locked variable you get an
- error message: "E741: Value of {name} is locked"
+ error message: "E741: Value is locked: {name}"
[depth] is relevant when locking a |List| or
|Dictionary|. It specifies how deep the locking goes:
@@ -8461,7 +8805,7 @@ You can catch all Vim errors by the pattern >
*catch-text*
NOTE: You should never catch the error message text itself: >
:catch /No such variable/
-only works in the english locale, but not when the user has selected
+only works in the English locale, but not when the user has selected
a different language by the |:language| command. It is however helpful to
cite the message text in a comment: >
:catch /^Vim(\a\+):E108:/ " No such variable
diff --git a/runtime/doc/farsi.txt b/runtime/doc/farsi.txt
index d5b371ab40..b85c0a357c 100644
--- a/runtime/doc/farsi.txt
+++ b/runtime/doc/farsi.txt
@@ -53,60 +53,6 @@ o Toggling between Farsi ISIR-3342 standard encoding and Vim Farsi via F9
right-to-left mode, this function is also supported only in right-to-left
mode.
-Farsi Fonts *farsi fonts*
------------
-
-The following files are found in the subdirectories of the '$VIM/farsi/fonts'
-directory:
-
- + far-a01.pcf X Windows fonts for Unix including Linux systems
- + far-a01.bf X Windows fonts for SunOS
- + far-a01.f16 a screen fonts for Unix including Linux systems
- + far-a01.fon a monospaced fonts for Windows NT/95/98
- + far-a01.com a screen fonts for DOS
-
-
-Font Installation
------------------
-
-o Installation of fonts for MS Window systems (NT/95/98)
-
- From 'Control Panel' folder, start the 'Fonts' program. Then from 'file'
- menu item select 'Install New Fonts ...'. Browse and select the
- 'far-a01.fon', then follow the installation guide.
- NOTE: several people have reported that this does not work. The solution
- is unknown.
-
-o Installation of fonts for X Window systems (Unix/Linux)
-
- Depending on your system, copy far-a01.pcf.Z or far-a01.pcf.gz into a
- directory of your choice. Change to the directory containing the Farsi
- fonts and execute the following commands:
-
- > mkfontdir
- > xset +fp path_name_of_farsi_fonts_directory
-
-o Installation of fonts for X Window systems (SunOS)
-
- Copy far-a01.bf font into a directory of your choice.
- Change to the directory containing the far-a01.fb fonts and
- execute the following commands:
-
- > fldfamily
- > xset +fp path_name_of_fonts_directory
-
-o Installation of ASCII screen fonts (Unix/Linux)
-
- For Linux system, copy the far-a01.f16 fonts into /usr/lib/kbd/consolefonts
- directory and execute the setfont program as "setfont far-a01.f16". For
- other systems (e.g. SCO Unix), please refer to the fonts installation
- section of your system administration manuals.
-
-o Installation of ASCII screen fonts (DOS)
-
- After system power on, prior to the first use of Vim, upload the Farsi
- fonts by executing the far-a01.com font uploading program.
-
Usage
-----
@@ -165,7 +111,7 @@ The letter encoding used is the Vim extended ISIR-3342 standard with a built
in function to convert between Vim extended ISIR-3342 and ISIR-3342 standard.
For document portability reasons, the letter encoding is kept the same across
-different platforms (i.e. UNIX's, NT/95/98, MS DOS, ...).
+different platforms (i.e. Unix, Windows, ...).
o Keyboard
@@ -215,7 +161,7 @@ o Keyboard
Note:
stands for Farsi PSP (break without space)
- stands for Farsi PCN (for HAMZE attribute )
+ stands for Farsi PCN (for HAMZE attribute)
Restrictions
------------
diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt
index d1f8b1de4c..76aa3a50ce 100644
--- a/runtime/doc/filetype.txt
+++ b/runtime/doc/filetype.txt
@@ -1,4 +1,4 @@
-*filetype.txt* For Vim version 7.4. Last change: 2013 Dec 15
+*filetype.txt* For Vim version 7.4. Last change: 2015 Dec 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -510,7 +510,7 @@ Local mappings:
to the end of the file in Normal mode. This means "> " is inserted in
each line.
-MAN *ft-man-plugin* *:Man*
+MAN *ft-man-plugin* *:Man* *man.vim*
Displays a manual page in a nice way. Also see the user manual
|find-manpage|.
@@ -535,6 +535,13 @@ Global mapping:
Local mappings:
CTRL-] Jump to the manual page for the word under the cursor.
CTRL-T Jump back to the previous manual page.
+q Same as ":quit"
+
+To enable folding use this: >
+ let g:ft_man_folding_enable = 1
+If you do not like the default folding, use an autocommand to add your desired
+folding style instead. For example: >
+ autocmd FileType man setlocal foldmethod=indent foldenable
PDF *ft-pdf-plugin*
@@ -557,6 +564,149 @@ Since the text for this plugin is rather long it has been put in a separate
file: |pi_spec.txt|.
+SHADA *ft-shada*
+
+Allows editing binary |shada-file|s in a nice way. Opened binary files are
+displayed in the following format: >
+
+ Type with timestamp YYYY-mm-ddTHH:MM:SS:
+ % Key__ Description___ Value
+ + fooba foo bar baz fo {msgpack-value}
+ + abcde abc def ghi jk {msgpack-value}
+ Other type with timestamp YYYY-mm-ddTHH:MM:SS:
+ @ Description__ Value
+ - foo bar baz t {msgpack-value}
+ # Expected more elements in list
+ Some other type with timestamp YYYY-mm-ddTHH:MM:SS:
+ # Unexpected type: type instead of map
+ = {msgpack-value}
+
+Filetype plugin defines all |Cmd-event|s. Defined |SourceCmd| event makes
+"source file.shada" be equivalent to "|:rshada| file.shada". |BufWriteCmd|,
+|FileWriteCmd| and |FileAppendCmd| events are affected by the following
+settings:
+
+*g:shada#keep_old_header* Boolean, if set to false all header entries
+ are ignored when writing. Defaults to 1.
+*g:shada#add_own_header* Boolean, if set to true first written entry
+ will always be header entry with two values in
+ a map with attached data: |v:version| attached
+ to "version" key and "shada.vim" attached to
+ "generator" key. Defaults to 1.
+
+Format description:
+
+1. `#` starts a comment. Lines starting with space characters and then `#`
+ are ignored. Plugin may only add comment lines to indicate some errors in
+ ShaDa format. Lines containing no non-whitespace characters are also
+ ignored.
+2. Each entry starts with line that has format "{type} with timestamp
+ {timestamp}:". {timestamp} is |strftime()|-formatted string representing
+ actual Unix timestamp value. First strftime() argument is equal to
+ `%Y-%m-%dT%H:%M:%S`. When writing this timestamp is parsed using
+ |msgpack#strptime()|, with caching (it remembers which timestamp produced
+ particular strftime() output and uses this value if you did not change
+ timestamp). {type} is one of
+ 1 - Header
+ 2 - Search pattern
+ 3 - Replacement string
+ 4 - History entry
+ 5 - Register
+ 6 - Variable
+ 7 - Global mark
+ 8 - Jump
+ 9 - Buffer list
+ 10 - Local mark
+ 11 - Change
+ * - Unknown (0x{type-hex})
+
+ Each type may be represented using Unknown entry: "Jump with timestamp ..."
+ is the same as "Unknown (0x8) with timestamp ....".
+3. After header there is one of the following lines:
+ 1. " % Key__ Description__ Value": map header. After mapping header
+ follows a table which may contain comments and lines consisting of
+ " +", key, description and |{msgpack-value}|. Key is separated by at
+ least two spaces with description, description is separated by at least
+ two spaces with the value. Each key in the map must be at most as wide
+ as "Key__" header: "Key" allows at most 3-byte keys, "Key__" allows at
+ most 5-byte keys. If keys actually occupy less bytes then the rest is
+ filled with spaces. Keys cannot be empty, end with spaces, contain two
+ consequent spaces inside of them or contain multibyte characters (use
+ "=" format if you need this). Descriptions have the same restrictions
+ on width and contents, except that empty descriptions are allowed.
+ Description column may be omitted.
+
+ When writing description is ignored. Keys with values |msgpack#equal|
+ to default ones are ignored. Order of keys is preserved. All keys are
+ treated as strings (not binary strings).
+
+ Note: specifically for buffer list entries it is allowed to have more
+ then one map header. Each map header starts a new map entry inside
+ buffer list because ShaDa buffer list entry is an array of maps. I.e. >
+
+ Buffer list with timestamp 1970-01-01T00:00:00:
+ % Key Description Value
+ + f file name "/foo"
+ + l line number 1
+ + c column 10
+<
+ is equivalent to >
+
+ Buffer list with timestamp 1970-01-01T00:00:00:
+ = [{="f": "/foo", ="c": 10}]
+<
+ and >
+
+ Buffer list with timestamp 1970-01-01T00:00:00:
+ % Key Description Value
+ + f file name "/foo"
+
+ % Key Description Value
+ + f file name "/bar"
+<
+ is equivalent to >
+
+ Buffer list with timestamp 1970-01-01T00:00:00:
+ = [{="f": "/foo"}, {="f": "/bar"}]
+<
+ Note 2: specifically for register entries special syntax for arrays was
+ designed: >
+
+ Register with timestamp 1970-01-01T00:00:00:
+ % Key Description Value
+ + rc contents @
+ | - "line1"
+ | - "line2"
+<
+ This is equivalent to >
+
+ Register with timestamp 1970-01-01T00:00:00:
+ % Key Description Value
+ + rc contents ["line1", "line2"]
+<
+ Such syntax is automatically used if array representation appears to be
+ too lengthy.
+ 2. " @ Description__ Value": array header. Same as map, but key is
+ omitted and description cannot be omitted. Array entries start with
+ " -". Example: >
+
+ History entry with timestamp 1970-01-01T00:00:00:
+ @ Description_ Value
+ - history type SEARCH
+ - contents "foo"
+ - separator '/'
+<
+ is equivalent to >
+
+ History entry with timestamp 1970-01-01T00:00:00:
+ = [SEARCH, "foo", '/']
+<
+ Note: special array syntax for register entries is not recognized here.
+ 3. " = {msgpack-value}": raw values. |{msgpack-value}| in this case may
+ have absolutely any type. Special array syntax for register entries is
+ not recognized here as well.
+
+
SQL *ft-sql*
Since the text for this plugin is rather long it has been put in a separate
diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt
index ef69835462..680e3270f2 100644
--- a/runtime/doc/fold.txt
+++ b/runtime/doc/fold.txt
@@ -1,4 +1,4 @@
-*fold.txt* For Vim version 7.4. Last change: 2013 Dec 04
+*fold.txt* For Vim version 7.4. Last change: 2016 Jan 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -94,9 +94,9 @@ These are the conditions with which the expression is evaluated:
lowest.
"=" use fold level from the previous line
"a1", "a2", .. add one, two, .. to the fold level of the previous
- line
+ line, use the result for the current line
"s1", "s2", .. subtract one, two, .. from the fold level of the
- previous line
+ previous line, use the result for the next line
"<1", "<2", .. a fold with this level ends at this line
">1", ">2", .. a fold with this level starts at this line
@@ -119,6 +119,18 @@ method can be very slow!
Try to avoid the "=", "a" and "s" return values, since Vim often has to search
backwards for a line for which the fold level is defined. This can be slow.
+An example of using "a1" and "s1": For a multi-line C comment, a line
+containing "/*" would return "a1" to start a fold, and a line containing "*/"
+would return "s1" to end the fold after that line: >
+ if match(thisline, '/\*') >= 0
+ return 'a1'
+ elseif match(thisline, '\*/') >= 0
+ return 's1'
+ else
+ return '='
+ endif
+However, this won't work for single line comments, strings, etc.
+
|foldlevel()| can be useful to compute a fold level relative to a previous
fold level. But note that foldlevel() may return -1 if the level is not known
yet. And it returns the level at the start of the line, while a fold might
@@ -362,7 +374,7 @@ zX Undo manually opened and closed folds: re-apply 'foldlevel'.
Also forces recomputing folds, like |zx|.
*zm*
-zm Fold more: Subtract one from 'foldlevel'. If 'foldlevel' was
+zm Fold more: Subtract |v:count1| from 'foldlevel'. If 'foldlevel' was
already zero nothing happens.
'foldenable' will be set.
@@ -371,7 +383,7 @@ zM Close all folds: set 'foldlevel' to 0.
'foldenable' will be set.
*zr*
-zr Reduce folding: Add one to 'foldlevel'.
+zr Reduce folding: Add |v:count1| to 'foldlevel'.
*zR*
zR Open all folds. This sets 'foldlevel' to highest fold level.
@@ -570,8 +582,9 @@ what you type!
When using an operator, a closed fold is included as a whole. Thus "dl"
deletes the whole closed fold under the cursor.
-For Ex commands the range is adjusted to always start at the first line of a
-closed fold and end at the last line of a closed fold. Thus this command: >
+For Ex commands that work on buffer lines the range is adjusted to always
+start at the first line of a closed fold and end at the last line of a closed
+fold. Thus this command: >
:s/foo/bar/g
when used with the cursor on a closed fold, will replace "foo" with "bar" in
all lines of the fold.
diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt
index 90f772c46f..8d97678af2 100644
--- a/runtime/doc/gui.txt
+++ b/runtime/doc/gui.txt
@@ -61,10 +61,6 @@ When the GUI starts up initializations are carried out, in this order:
~/.config).
The name of the first file found is stored in $MYGVIMRC, unless it was
already set.
-- If the 'exrc' option is set (which is NOT the default) the file ./.ngvimrc
- is sourced, if it exists and isn't the same file as the system or user
- gvimrc file. If this file is not owned by you, some security restrictions
- apply. When ".ngvimrc" is not found, "_ngvimrc" is tried too.
NOTE: All but the first one are not carried out if Vim was started with
"-u NONE" and no "-U" argument was given, or when started with "-U NONE".
@@ -212,18 +208,6 @@ takes too much time or you don't like the cursor jumping to another line,
include the 'h' flag in 'guioptions'. Then the scrolling is limited by the
text of the current cursor line.
- *athena-intellimouse*
-If you have an Intellimouse and an X server that supports using the wheel,
-then you can use the wheel to scroll the text up and down in gvim. This works
-with XFree86 4.0 and later, and with some older versions when you add patches.
-See |scroll-mouse-wheel|.
-
-For older versions of XFree86 you must patch your X server. The following
-page has a bit of information about using the Intellimouse on Linux as well as
-links to the patches and X server binaries (may not have the one you need
-though):
- http://www.inria.fr/koala/colas/mouse-wheel-scroll/
-
==============================================================================
3. Mouse Control *gui-mouse*
@@ -609,10 +593,6 @@ The default menus have these priorities:
When no or zero priority is given, 500 is used.
The priority for the PopUp menu is not used.
-The Help menu will be placed on the far right side of the menu bar on systems
-which support this (Motif and GTK+). For GTK+ 2, this is not done anymore
-because right-aligning the Help menu is now discouraged UI design.
-
You can use a priority higher than 9999, to make it go after the Help menu,
but that is non-standard and is discouraged. The highest possible priority is
about 32000. The lowest is 1.
@@ -681,10 +661,8 @@ level. Vim interprets the items in this menu as follows:
toolbar button image. Note that the exact filename is OS-specific: For
example, under Win32 the command >
:amenu ToolBar.Hello :echo "hello"<CR>
-< would find the file 'hello.bmp'. Under GTK+/X11 it is 'Hello.xpm'. With
- GTK+ 2 the files 'Hello.png', 'Hello.xpm' and 'Hello.bmp' are checked for
- existence, and the first one found would be used.
- For MS-Windows and GTK+ 2 the bitmap is scaled to fit the button. For
+< would find the file 'hello.bmp'. Under X11 it is 'Hello.xpm'.
+ For MS-Windows and the bitmap is scaled to fit the button. For
MS-Windows a size of 18 by 18 pixels works best.
For MS-Windows the bitmap should have 16 colors with the standard palette.
The light grey pixels will be changed to the Window frame color and the
@@ -733,8 +711,8 @@ nr Name Normal action ~
30 WinMinWidth make current window use few columns
*hidden-menus* *win32-hidden-menus*
-In the Win32 and GTK+ GUI, starting a menu name with ']' excludes that menu
-from the main menu bar. You must then use the |:popup| command to display it.
+In the Win32 GUI, starting a menu name with ']' excludes that menu from the
+main menu bar. You must then use the |:popup| command to display it.
*popup-menu*
You can define the special menu "PopUp". This is the menu that is displayed
@@ -887,9 +865,8 @@ a menu item - you don't need to do a :tunmenu as well.
5.9 Popup Menus
-In the Win32 and GTK+ GUI, you can cause a menu to popup at the cursor.
-This behaves similarly to the PopUp menus except that any menu tree can
-be popped up.
+In the Win32 GUI, you can cause a menu to popup at the cursor. This behaves
+similarly to the PopUp menus except that any menu tree can be popped up.
This command is for backwards compatibility, using it is discouraged, because
it behaves in a strange way.
@@ -898,7 +875,7 @@ it behaves in a strange way.
:popu[p] {name} Popup the menu {name}. The menu named must
have at least one subentry, but need not
appear on the menu-bar (see |hidden-menus|).
- {only available for Win32 and GTK GUI}
+ {only available for Win32 GUI}
:popu[p]! {name} Like above, but use the position of the mouse
pointer instead of the cursor.
diff --git a/runtime/doc/gui_w32.txt b/runtime/doc/gui_w32.txt
index 6ae7fa2431..228be9eab2 100644
--- a/runtime/doc/gui_w32.txt
+++ b/runtime/doc/gui_w32.txt
@@ -47,10 +47,6 @@ If you want Vim to start with a maximized window, add this command to your
vimrc or gvimrc file: >
au GUIEnter * simalt ~x
<
- *gui-w32s*
-There is a specific version of gvim.exe that runs under the Win32s subsystem
-of Windows 3.1 or 3.11. See |win32s|.
-
==============================================================================
2. Vim as default editor *vim-default-editor*
@@ -88,7 +84,6 @@ when you have got a new version):
You can also install Vim in the "Send To" menu:
1. Start a Windows Explorer
2. Navigate to your sendto directory:
- Windows 95: %windir%\sendto (e.g. "c:\windows\sendto")
Windows NT: %windir%\profiles\%user%\sendto (e.g.
"c:\winnt\profiles\mattha\sendto").
3. Right-click in the file pane and select New->Shortcut
@@ -243,7 +238,7 @@ selection. You can use CTRL-Q instead. You can also use CTRL-Q in Insert
mode and Command-line mode to get the old meaning of CTRL-V. But CTRL-Q
doesn't work for terminals when it's used for control flow.
-NOTE: The clipboard support still has a number of bugs. See |todo|.
+NOTE: The clipboard support still has a number of bugs.
==============================================================================
4. Shell Commands *gui-shell-win32*
@@ -262,17 +257,6 @@ WARNING: If you close this window with the "X" button, and confirm the
question if you really want to kill the application, Vim may be killed too!
(This does not apply to commands run asynchronously with ":!start".)
- *msdos-mode*
-If you get a dialog that says "This program is set to run in MS-DOS mode..."
-when you run an external program, you can solve this by changing the
-properties of the associated shortcut:
-- Use a Windows Explorer to find the command.com that is used. It can be
- c:\command.com, c:\dos\command.com, c:\windows\command.com, etc.
-- With the right mouse button, select properties of this command.com.
-- In the Program tab select "Advanced".
-- Unselect "MS-DOS mode".
-- Click "OK" twice.
-
*win32-!start*
Normally, Vim waits for a command to complete before continuing (this makes
sense for most shell commands which produce output for Vim to use). If you
@@ -281,10 +265,6 @@ syntax on W95 & NT: >
:!start [/min] {command}
The optional "/min" causes the window to be minimized.
-On Win32s, you will have to go to another window instead. Don't forget that
-you must tell Windows 3.1x to keep executing a DOS command in the background
-while you switch back to Vim.
-
==============================================================================
5. Special colors *win32-colors*
@@ -293,7 +273,7 @@ On Win32, the normal DOS colors can be used. See |dos-colors|.
Additionally the system configured colors can also be used. These are known
by the names Sys_XXX, where XXX is the appropriate system color name, from the
following list (see the Win32 documentation for full descriptions). Case is
-ignored. Note: On Win32s not all of these colors are supported.
+ignored.
Sys_3DDKShadow Sys_3DFace Sys_BTNFace
Sys_3DHilight Sys_3DHighlight Sys_BTNHilight
@@ -405,7 +385,7 @@ detailed elsewhere: see |'mouse'|, |win32-hidden-menus|.
You can drag and drop one or more files into the Vim window, where they will
be opened as normal. See |drag-n-drop|.
- *:simalt* *:si*
+ *:simalt* *:sim*
:sim[alt] {key} simulate pressing {key} while holding Alt pressed.
{only for Win32 versions}
diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt
index e1c05365f7..19bcb35da8 100644
--- a/runtime/doc/help.txt
+++ b/runtime/doc/help.txt
@@ -1,4 +1,4 @@
-*help.txt* For Vim version 7.4. Last change: 2012 Dec 06
+*help.txt* For Vim version 7.4. Last change: 2015 Apr 15
VIM - main help file
k
@@ -23,6 +23,7 @@ Get specific help: It is possible to go directly to whatever you want help
Command-line editing c_ :help c_<Del>
Vim command argument - :help -r
Option ' :help 'textwidth'
+ Regular expression / :help /[
Search for help: Type ":help word", then hit CTRL-D to see matching
help entries for "word".
Or use ":helpgrep word". |:helpgrep|
@@ -94,7 +95,6 @@ General subjects ~
|tips.txt| various tips on using Vim
|message.txt| (error) messages and explanations
|quotes.txt| remarks from users of Vim
-|todo.txt| known problems and desired extensions
|develop.txt| development of Vim
|debug.txt| debugging Vim itself
|uganda.txt| Vim distribution conditions and what to do with your money
@@ -160,12 +160,9 @@ Versions ~
|vi_diff.txt| Main differences between Vim and Vi
*sys-file-list*
Remarks about specific systems ~
-|os_mac.txt| Macintosh
-|os_unix.txt| Unix
|os_win32.txt| MS-Windows
*standard-plugin-list*
Standard plugins ~
-|pi_getscript.txt| Downloading latest version of Vim scripts
|pi_gzip.txt| Reading and writing compressed files
|pi_netrw.txt| Reading and writing files over a network
|pi_paren.txt| Highlight matching parens
diff --git a/runtime/doc/helphelp.txt b/runtime/doc/helphelp.txt
index dea7dded95..f3533b8815 100644
--- a/runtime/doc/helphelp.txt
+++ b/runtime/doc/helphelp.txt
@@ -184,12 +184,6 @@ command: >
:!xterm -e vim +help &
<
- *:helpfind* *:helpf*
-:helpf[ind] Like |:help|, but use a dialog to enter the argument.
- Only for backwards compatibility. It now executes the
- ToolBar.FindHelp menu entry instead of using a builtin
- dialog. {only when compiled with |+GUI_GTK|}
-
*:helpt* *:helptags*
*E154* *E150* *E151* *E152* *E153* *E670*
:helpt[ags] [++t] {dir}
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index 0238d7cc53..e6c1ccc0cf 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1,4 +1,4 @@
-*index.txt* For Vim version 7.4. Last change: 2015 Jan 07
+*index.txt* For Vim version 7.4. Last change: 2016 Jan 03
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -700,12 +700,16 @@ tag char note action in Normal mode ~
|g'| g'{mark} 1 like |'| but without changing the jumplist
|g`| g`{mark} 1 like |`| but without changing the jumplist
|gstar| g* 1 like "*", but without using "\<" and "\>"
+|g+| g+ go to newer text state N times
+|g,| g, 1 go to N newer position in change list
+|g-| g- go to older text state N times
|g0| g0 1 when 'wrap' off go to leftmost character of
the current line that is on the screen;
when 'wrap' on go to the leftmost character
of the current screen line
|g8| g8 print hex value of bytes used in UTF-8
character under the cursor
+|g;| g; 1 go to N older position in change list
|g<| g< display previous command output
|g?| g? 2 Rot13 encoding operator
|g?g?| g?? 2 Rot13 encode current line
@@ -734,6 +738,7 @@ tag char note action in Normal mode ~
the screen; when 'wrap' on go to the
leftmost non-white character of the current
screen line
+|g_| g_ 1 cursor to the last CHAR N - 1 lines lower
|ga| ga print ascii value of character under the
cursor
|gd| gd 1 go to definition of word under the cursor
@@ -1128,6 +1133,8 @@ tag command action ~
|:cc| :cc go to specific error
|:cclose| :ccl[ose] close quickfix window
|:cd| :cd change directory
+|:cdo| :cdo execute command in each valid error list entry
+|:cfdo| :cfdo execute command in each file in error list
|:center| :ce[nter] format lines at the center
|:cexpr| :cex[pr] read errors from expr and jump to first
|:cfile| :cf[ile] read file with error messages and jump to first
@@ -1239,7 +1246,6 @@ tag command action ~
|:hardcopy| :ha[rdcopy] send text to the printer
|:help| :h[elp] open a help window
|:helpclose| :helpc[lose] close one help window
-|:helpfind| :helpf[ind] dialog to open a help window
|:helpgrep| :helpg[rep] like ":grep" but searches help files
|:helptags| :helpt[ags] generate help tags for a directory
|:highlight| :hi[ghlight] specify highlighting methods
@@ -1285,6 +1291,8 @@ tag command action ~
|:lchdir| :lch[dir] change directory locally
|:lclose| :lcl[ose] close location window
|:lcscope| :lcs[cope] like ":cscope" but uses location list
+|:ldo| :ld[o] execute command in valid location list entries
+|:lfdo| :lfd[o] execute command in each file in location list
|:left| :le[ft] left align lines
|:leftabove| :lefta[bove] make split window appear left or above
|:let| :let assign a value to a variable or option
@@ -1359,8 +1367,7 @@ tag command action ~
|:number| :nu[mber] print lines with line number
|:nunmap| :nun[map] like ":unmap" but for Normal mode
|:nunmenu| :nunme[nu] remove menu for Normal mode
-|:oldfiles| :ol[dfiles] list files that have marks in the ShaDa file
-|:open| :o[pen] start open mode (not implemented)
+|:oldfiles| :o[ldfiles] list files that have marks in the ShaDa file
|:omap| :om[ap] like ":map" but for Operator-pending mode
|:omapclear| :omapc[lear] remove all mappings for Operator-pending mode
|:omenu| :ome[nu] add menu for Operator-pending mode
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index a48ad0185d..f931dfa341 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt* For Vim version 7.4. Last change: 2014 Aug 04
+*insert.txt* For Vim version 7.4. Last change: 2015 Sep 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -77,9 +77,11 @@ CTRL-W Delete the word before the cursor (see |i_backspacing| about
joining lines). See the section "word motions",
|word-motions|, for the definition of a word.
*i_CTRL-U*
-CTRL-U Delete all entered characters in the current line (see
- |i_backspacing| about joining lines).
-
+CTRL-U Delete all entered characters before the cursor in the current
+ line. If there are no newly entered characters and
+ 'backspace' is not empty, delete all characters before the
+ cursor in the current line.
+ See |i_backspacing| about joining lines.
*i_CTRL-I* *i_<Tab>* *i_Tab*
<Tab> or CTRL-I Insert a tab. If the 'expandtab' option is on, the
equivalent number of spaces is inserted (use CTRL-V <Tab> to
@@ -146,7 +148,7 @@ CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R*
CTRL-R a results in "ac".
CTRL-R CTRL-R a results in "ab^Hc".
< Options 'textwidth', 'formatoptions', etc. still apply. If
- you also want to avoid these, use "<C-R><C-O>r", see below.
+ you also want to avoid these, use CTRL-R CTRL-O, see below.
The '.' register (last inserted text) is still inserted as
typed.
@@ -1939,9 +1941,9 @@ If the 'fileformats' option is not empty Vim tries to recognize the type of
changed, the detected format is only used while reading the file.
A similar thing happens with 'fileencodings'.
-On non-MS-DOS and Win32 systems the message "[dos format]" is shown if
+On non-Windows systems the message "[dos format]" is shown if
a file is read in DOS format, to remind you that something unusual is done.
-On Macintosh, MS-DOS, and Win32 the message "[unix format]" is shown if
+On Macintosh and Windows the message "[unix format]" is shown if
a file is read in Unix format.
On non-Macintosh systems, the message "[Mac format]" is shown if a file is
read in Mac format.
diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt
index 0825ca8848..cbe017e051 100644
--- a/runtime/doc/intro.txt
+++ b/runtime/doc/intro.txt
@@ -1,4 +1,4 @@
-*intro.txt* For Vim version 7.4. Last change: 2014 May 24
+*intro.txt* For Vim version 7.4. Last change: 2015 Jan 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -131,7 +131,7 @@ http://www.vim.org/maillist.php
Bug reports: *bugs* *bug-reports* *bugreport.vim*
-Send bug reports to: Vim Developers <vim_dev@vim.org>
+Send bug reports to: Vim Developers <vim-dev@vim.org>
This is a maillist, you need to become a member first and many people will see
the message. If you don't want that, e.g. because it is a security issue,
send it to <bugs@vim.org>, this only goes to the Vim maintainer (that's Bram).
@@ -251,7 +251,7 @@ Vim would never have become what it is now, without the help of these people!
lots of patches
Ingo Wilken Tcl interface
Mike Williams PostScript printing
- Juergen Weigert Lattice version, AUX improvements, UNIX and
+ Juergen Weigert Lattice version, AUX improvements, Unix and
MS-DOS ports, autoconf
Stefan 'Sec' Zehl Maintainer of vim.org
@@ -452,7 +452,7 @@ notation meaning equivalent decimal value(s) ~
<C-...> control-key *control* *ctrl* *<C-*
<M-...> alt-key or meta-key *meta* *alt* *<M-*
<A-...> same as <M-...> *<A-*
-<D-...> command-key (Macintosh only) *<D-*
+<D-...> command-key or "super" key *<D-*
<t_xx> key with "xx" entry in termcap
-----------------------------------------------------------------------
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index ab49b6f889..464c700a4d 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt* For Vim version 7.4. Last change: 2014 Oct 03
+*map.txt* For Vim version 7.4. Last change: 2014 Dec 08
VIM REFERENCE MANUAL by Bram Moolenaar
diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt
index 2e3a0141ac..c87ed317d4 100644
--- a/runtime/doc/mbyte.txt
+++ b/runtime/doc/mbyte.txt
@@ -43,16 +43,6 @@ features. Unfortunately, every system has its own way to deal with multibyte
languages and it is quite complicated.
-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 "normal", "big" or
-"huge" features. You can further tune what features are included. See the
-INSTALL files in the source directory.
-
-
LOCALE
First of all, you must make sure your current locale is set correctly. If
@@ -107,14 +97,6 @@ is the difficult part. It depends on the system you are using, the locale and
a few other things. See the chapters on fonts: |mbyte-fonts-X11| for
X-Windows and |mbyte-fonts-MSwin| for MS-Windows.
-For GTK+ 2, you can skip most of this section. The option 'guifontset' does
-no longer exist. You only need to set 'guifont' and everything should "just
-work". If your system comes with Xft2 and fontconfig and the current font
-does not contain a certain glyph, a different font will be used automatically
-if available. The 'guifontwide' option is still supported but usually you do
-not need to set it. It is only necessary if the automatic font selection does
-not suit your needs.
-
For X11 you can set the 'guifontset' option to a list of fonts that together
cover the characters that are used. Example for Korean: >
@@ -494,11 +476,6 @@ For Vim you may need to set 'encoding' to "utf-8".
Unfortunately, using fonts in X11 is complicated. The name of a single-byte
font is a long string. For multi-byte fonts we need several of these...
-Note: Most of this is no longer relevant for GTK+ 2. Selecting a font via
-its XLFD is not supported; see 'guifont' for an example of how to
-set the font. Do yourself a favor and ignore the |XLFD| and |xfontset|
-sections below.
-
First of all, Vim only accepts fixed-width fonts for displaying text. You
cannot use proportionally spaced fonts. This excludes many of the available
(and nicer looking) fonts. However, for menus and tooltips any font can be
@@ -629,52 +606,6 @@ If you use a wrong "font" argument you will get an error message.
Also make sure that you set 'guifontset' before setting fonts for highlight
groups.
-
-USING RESOURCE FILES
-
-Instead of specifying 'guifontset', you can set X11 resources and Vim will
-pick them up. This is only for people who know how X resource files work.
-
-For Motif and Athena insert these three lines in your $HOME/.Xdefaults file:
-
- Vim.font: |base_font_name_list|
- Vim*fontSet: |base_font_name_list|
- Vim*fontList: your_language_font
-
-Note: Vim.font is for text area.
- Vim*fontSet is for menu.
- Vim*fontList is for menu (for Motif GUI)
-
-For example, when you are using Japanese and a 14 dots font, >
-
- Vim.font: -misc-fixed-medium-r-normal--14-*
- Vim*fontSet: -misc-fixed-medium-r-normal--14-*
- Vim*fontList: -misc-fixed-medium-r-normal--14-*
-<
-or: >
-
- Vim*font: k14,r14
- Vim*fontSet: k14,r14
- Vim*fontList: k14,r14
-<
-To have them take effect immediately you will have to do >
-
- xrdb -merge ~/.Xdefaults
-
-Otherwise you will have to stop and restart the X server before the changes
-take effect.
-
-
-The GTK+ version of GUI Vim does not use .Xdefaults, use ~/.gtkrc instead.
-The default mostly works OK. But for the menus you might have to change
-it. Example: >
-
- style "default"
- {
- fontset="-*-*-medium-r-normal--14-*-*-*-c-*-*-*"
- }
- widget_class "*" style "default"
-
==============================================================================
6. Fonts on MS-Windows *mbyte-fonts-MSwin*
@@ -847,20 +778,6 @@ For example, when you are using kinput2 as |IM-server| and sh, >
export XMODIFIERS="@im=kinput2"
<
-FULLY CONTROLLED XIM
-
-You can fully control XIM, like with IME of MS-Windows (see |multibyte-ime|).
-This is currently only available for the GTK GUI.
-
-Before using fully controlled XIM, one setting is required. Set the
-'imactivatekey' option to the key that is used for the activation of the input
-method. For example, when you are using kinput2 + canna as IM Server, the
-activation key is probably Shift+Space: >
-
- :set imactivatekey=S-space
-
-See 'imactivatekey' for the format.
-
==============================================================================
8. Input on MS-Windows *mbyte-IME*
@@ -893,14 +810,11 @@ WHAT IS IME
URL.
WHAT IS GLOBAL IME *global-ime*
- Global IME makes capability to input Chinese, Japanese, and Korean text
- into Vim buffer on any language version of Windows 98, Windows 95, and
- Windows NT 4.0.
- On Windows 2000 and XP it should work as well (without downloading). On
- Windows 2000 Professional, Global IME is built in, and the Input Locales
- can be added through Control Panel/Regional Options/Input Locales.
- Please see below URL for detail of Global IME. You can also find various
- language version of Global IME at same place.
+ Global IME enables input of Chinese, Japanese, and Korean text into Vim
+ buffer on any language version of Windows. Global IME is built in, and
+ the Input Locales can be added through Control Panel/Regional
+ Options/Input Locales. Please see below URL for detail of Global IME.
+ You can also find various language version of Global IME at same place.
- Global IME detailed information.
http://search.microsoft.com/results.aspx?q=global+ime
@@ -1201,14 +1115,12 @@ internally.
Vim has comprehensive UTF-8 support. It works well in:
- xterm with utf-8 support enabled
-- Athena, Motif and GTK GUI
- MS-Windows GUI
- several other platforms
Double-width characters are supported. This works best with 'guifontwide' or
'guifontset'. When using only 'guifont' the wide characters are drawn in the
-normal width and a space to fill the gap. Note that the 'guifontset' option
-is no longer relevant in the GTK+ 2 GUI.
+normal width and a space to fill the gap.
*bom-bytes*
When reading a file a BOM (Byte Order Mark) can be used to recognize the
@@ -1278,8 +1190,6 @@ doesn't always work. See the system specific remarks below, and 'langmenu'.
USING UTF-8 IN X-Windows *utf-8-in-xwindows*
-Note: This section does not apply to the GTK+ 2 GUI.
-
You need to specify a font to be used. For double-wide characters another
font is required, which is exactly twice as wide. There are three ways to do
this:
diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt
index 2ef2a67c4a..114bb61d99 100644
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -401,12 +401,6 @@ You have used an ":unabbreviate" command with an argument which is not an
existing abbreviation. All variations of this command give the same message:
":cunabbrev", ":iunabbrev", etc. Check for trailing white space.
->
- /dev/dsp: No such file or directory
-
-Only given for GTK GUI with Gnome support. Gnome tries to use the audio
-device and it isn't present. You can ignore this error.
-
*E31* >
No such mapping
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index 5e3fe715ab..7f84f2d2a3 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -1,4 +1,4 @@
-*motion.txt* For Vim version 7.4. Last change: 2014 Feb 11
+*motion.txt* For Vim version 7.4. Last change: 2015 Jun 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -171,6 +171,8 @@ CTRL-H or *CTRL-H* *<BS>*
l or *l*
<Right> or *<Right>* *<Space>*
<Space> [count] characters to the right. |exclusive| motion.
+ See the 'whichwrap' option for adjusting the behavior
+ at end of line
*0*
0 To the first character of the line. |exclusive|
diff --git a/runtime/doc/msgpack_rpc.txt b/runtime/doc/msgpack_rpc.txt
index d732e7f818..bafb9dfc2c 100644
--- a/runtime/doc/msgpack_rpc.txt
+++ b/runtime/doc/msgpack_rpc.txt
@@ -7,7 +7,7 @@
The Msgpack-RPC Interface to Nvim *msgpack-rpc*
1. Introduction |msgpack-rpc-intro|
-2. API |msgpack-rpc-api|
+2. API mapping |msgpack-rpc-api|
3. Connecting |msgpack-rpc-connecting|
4. Clients |msgpack-rpc-clients|
5. Types |msgpack-rpc-types|
@@ -36,13 +36,13 @@ Nvim's msgpack-rpc interface is like a more powerful version of Vim's
`clientserver` feature.
==============================================================================
-2. API *msgpack-rpc-api*
+2. API mapping *msgpack-rpc-api*
-The Nvim C API is automatically exposed to the msgpack-rpc interface by the
-build system, which parses headers at src/nvim/api from the project root. A
-dispatch function is generated, which matches msgpack-rpc method names with
-non-static API functions, converting/validating arguments and return values
-back to msgpack.
+The Nvim C API, see |nvim-api|, is automatically exposed to the msgpack-rpc
+interface by the build system, which parses headers at src/nvim/api from the
+project root. A dispatch function is generated, which matches msgpack-rpc method
+names with non-static API functions, converting/validating arguments and return
+values back to msgpack.
Client libraries will normally provide wrappers that hide msgpack-rpc details
from programmers. The wrappers can be automatically generated by reading
@@ -63,7 +63,7 @@ Here's a simple way to get human-readable description of the API (requires
Python and the `pyyaml`/`msgpack-python` pip packages):
>
nvim --api-info | python -c 'import msgpack, sys, yaml; print yaml.dump(msgpack.unpackb(sys.stdin.read()))' > api.yaml
-
+<
==============================================================================
3. Connecting *msgpack-rpc-connecting*
@@ -162,8 +162,8 @@ https://github.com/msgpack-rpc/msgpack-rpc-ruby/blob/master/lib/msgpack/rpc/tran
==============================================================================
5. Types *msgpack-rpc-types*
-Nvim's C API uses custom types for all functions (some are just typedefs
-around C99 standard types). The types can be split into two groups:
+Nvim's C API uses custom types for all functions, se |nvim-api-types|.
+For the purpose of mapping to msgpack, he types can be split into two groups:
- Basic types that map natively to msgpack (and probably have a default
representation in msgpack-supported programming languages)
diff --git a/runtime/doc/nvim_clipboard.txt b/runtime/doc/nvim_clipboard.txt
index 1183ad7a3c..078382c7a7 100644
--- a/runtime/doc/nvim_clipboard.txt
+++ b/runtime/doc/nvim_clipboard.txt
@@ -22,6 +22,10 @@ is found in your `$PATH`.
- xclip
- xsel (newer alternative to xclip)
- pbcopy/pbpaste (only for Mac OS X)
+- lemonade (useful for SSH machine)
+ https://github.com/pocke/lemonade
+- doitclient (another option for SSH setups from the maintainer of PuTTY)
+ http://www.chiark.greenend.org.uk/~sgtatham/doit/
The presence of a suitable clipboard tool implicitly enables the '+' and '*'
registers.
diff --git a/runtime/doc/nvim_provider.txt b/runtime/doc/nvim_provider.txt
index a737d51ac4..91cd5fbfc7 100644
--- a/runtime/doc/nvim_provider.txt
+++ b/runtime/doc/nvim_provider.txt
@@ -26,7 +26,7 @@ are now decoupled from Nvim core as providers:
The first example is clipboard integration: in the original Vim source code,
clipboard functions account for more than 1k lines of C source code (and that
-is just on ui.c), all to peform two tasks that are now accomplished with
+is just on ui.c), all to perform two tasks that are now accomplished with
simple shell commands such as xclip or pbcopy/pbpaste.
The other example is Python scripting support: Vim has three files dedicated to
diff --git a/runtime/doc/nvim_python.txt b/runtime/doc/nvim_python.txt
index 1c345b4532..a2fc968db4 100644
--- a/runtime/doc/nvim_python.txt
+++ b/runtime/doc/nvim_python.txt
@@ -49,6 +49,9 @@ To use Vim Python 2/3 plugins with Nvim, do the following:
>
$ pip3 install --user neovim
<
+Note: If you previously installed the package, get the latest version by
+ appending the `--upgrade` flag to the commands above.
+
==============================================================================
*g:python_host_prog*
diff --git a/runtime/doc/nvim_terminal_emulator.txt b/runtime/doc/nvim_terminal_emulator.txt
index 850391200e..6ef3aaebaa 100644
--- a/runtime/doc/nvim_terminal_emulator.txt
+++ b/runtime/doc/nvim_terminal_emulator.txt
@@ -62,8 +62,8 @@ with the terminal. For example, here's how to map <Esc> to exit terminal mode:
:tnoremap <Esc> <C-\><C-n>
<
Navigating to other windows is only possible by exiting to normal mode, which
-can be cumbersome with <C-\><C-n> keys. Here are some mappings to improve
-the navigation experience:
+can be cumbersome with <C-\><C-n> keys. To improve the navigation experience,
+you could use the following mappings:
>
:tnoremap <A-h> <C-\><C-n><C-w>h
:tnoremap <A-j> <C-\><C-n><C-w>j
@@ -74,8 +74,9 @@ the navigation experience:
:nnoremap <A-k> <C-w>k
:nnoremap <A-l> <C-w>l
<
-This allows using `Alt+{h,j,k,l}` to navigate between windows no matter if
-they are displaying a normal buffer or a terminal buffer in terminal mode.
+This configuration allows using `Alt+{h,j,k,l}` to navigate between windows no
+matter if they are displaying a normal buffer or a terminal buffer in terminal
+mode.
Mouse input is also fully supported, and has the following behavior:
@@ -97,13 +98,15 @@ variables (set via the |TermOpen| autocmd):
- `{g,b}:terminal_scrollback_buffer_size`: Scrollback buffer size, between 1
and 100000 inclusive. The default is 1000.
- `{g,b}:terminal_color_$NUM`: The terminal color palette, where `$NUM` is the
- color index, between 0 and 255 inclusive. This only affects UIs with RGB
- capabilities; for normal terminals the color index is simply forwarded.
+ color index, between 0 and 255 inclusive. This setting only affects UIs with
+ RGB capabilities; for normal terminals the color index is simply forwarded.
The configuration variables are only processed when the terminal starts, which
is why it needs to be done with the |TermOpen| autocmd or setting global
variables before the terminal is started.
+There is also a corresponding |TermClose| event.
+
The terminal cursor can be highlighted via |hl-TermCursor| and
|hl-TermCursorNC|.
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 3471106afd..83ae96a651 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt* For Vim version 7.4. Last change: 2014 Dec 17
+*options.txt* For Vim version 7.4. Last change: 2016 Jan 03
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -49,9 +49,12 @@ achieve special effects. These options come in three forms:
:se[t] {option}&vi Reset option to its Vi default value.
:se[t] {option}&vim Reset option to its Vim default value.
-:se[t] all& Set all options, except terminal options, to their
- default value. The values of 'term', 'lines' and
- 'columns' are not changed.
+:se[t] all& Set all options to their default value. The values of
+ these options are not changed:
+ 'columns'
+ 'encoding'
+ 'lines'
+ Warning: This may have a lot of side effects.
*:set-args* *E487* *E521*
:se[t] {option}={value} or
@@ -183,7 +186,7 @@ the option value, use '\"' instead. This example sets the 'titlestring'
option to 'hi "there"': >
:set titlestring=hi\ \"there\"
-For MS-DOS and WIN32 backslashes in file names are mostly not removed. More
+For Windows backslashes in file names are mostly not removed. More
precise: For options that expect a file name (those where environment
variables are expanded) a backslash before a normal file name character is not
removed. But a backslash before a special character (space, backslash, comma,
@@ -488,11 +491,11 @@ number can be specified where "vim:" or "Vim:" is used:
vim<{vers}: version before {vers}
vim={vers}: version {vers}
vim>{vers}: version after {vers}
-{vers} is 600 for Vim 6.0 (hundred times the major version plus minor).
-For example, to use a modeline only for Vim 6.0 and later:
- /* vim600: set foldmethod=marker: */ ~
-To use a modeline for Vim before version 5.7:
- /* vim<570: set sw=4: */ ~
+{vers} is 700 for Vim 7.0 (hundred times the major version plus minor).
+For example, to use a modeline only for Vim 7.0:
+ /* vim700: set foldmethod=marker */ ~
+To use a modeline for Vim after version 7.2:
+ /* vim>702: set cole=2: */ ~
There can be no blanks between "vim" and the ":".
@@ -635,25 +638,14 @@ A jump table for the options with a short description can be found at |Q_op|.
(or Vim is run inside an xterm invoked with "-cjkwidth" option.),
this option should be set to "double" to match the width perceived
by Vim with the width of glyphs in the font. Perhaps it also has
- to be set to "double" under CJK Windows 9x/ME or Windows 2k/XP
- when the system locale is set to one of CJK locales. See Unicode
- Standard Annex #11 (http://www.unicode.org/reports/tr11).
+ to be set to "double" under CJK Windows XP when the system locale is
+ set to one of CJK locales.
+ See Unicode Standard Annex #11 (http://www.unicode.org/reports/tr11).
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
escape sequence to request cursor position report.
- *'antialias'* *'anti'* *'noantialias'* *'noanti'*
-'antialias' 'anti' boolean (default: off)
- global
- {only available when compiled with GUI enabled
- on Mac OS X}
- This option only has an effect in the GUI version of Vim on Mac OS X
- v10.2 or later. When on, Vim will use smooth ("antialiased") fonts,
- which can be easier to read at certain sizes on certain displays.
- Setting this option can sometimes cause problems if 'guifont' is set
- to its default (empty string).
-
*'autochdir'* *'acd'* *'noautochdir'* *'noacd'*
'autochdir' 'acd' boolean (default off)
global
@@ -715,7 +707,8 @@ A jump table for the options with a short description can be found at |Q_op|.
line.
When 'smartindent' or 'cindent' is on the indent is changed in
a different way.
- The 'autoindent' option is reset when the 'paste' option is set.
+ The 'autoindent' option is reset when the 'paste' option is set and
+ restored when 'paste' is reset.
{small difference from Vi: After the indent is deleted when typing
<Esc> or <CR>, the cursor position when moving up or down is after the
deleted indent; Vi puts the cursor somewhere in the deleted indent}.
@@ -783,14 +776,13 @@ A jump table for the options with a short description can be found at |Q_op|.
putting a ":gui" command in the gvimrc file, before where the value
of 'background' is used (e.g., before ":syntax on").
- For MS-DOS and Windows the default is "dark".
- For other systems "dark" is used when 'term' is "linux",
- "screen.linux", "cygwin" or "putty", or $COLORFGBG suggests a dark
- background. Otherwise the default is "light".
+ For Windows the default is "dark". "dark" should be used if $COLORFGBG
+ suggests a dark background (not yet implemented). Otherwise the default
+ is "light".
Normally this option would be set in the vimrc file. Possibly
depending on the terminal name. Example: >
- :if &term == "pcterm"
+ :if $TERM == "xterm"
: set background=dark
:endif
< When this option is set, the default settings for the highlight groups
@@ -901,7 +893,7 @@ A jump table for the options with a short description can be found at |Q_op|.
again not rename the file.
*'backupdir'* *'bdir'*
-'backupdir' 'bdir' string (default "$XDG_DATA_HOME/nvim/backup")
+'backupdir' 'bdir' string (default ".,$XDG_DATA_HOME/nvim/backup")
global
List of directories for the backup file, separated with commas.
- The backup file will be created in the first directory in the list
@@ -911,7 +903,7 @@ A jump table for the options with a short description can be found at |Q_op|.
impossible!). Writing may fail because of this.
- A directory "." means to put the backup file in the same directory
as the edited file.
- - A directory starting with "./" (or ".\" for MS-DOS et al.) means to
+ - A directory starting with "./" (or ".\" for Windows) means to
put the backup file relative to where the edited file is. The
leading "." is replaced with the path name of the edited file.
("." inside a directory name has no special meaning).
@@ -980,65 +972,17 @@ A jump table for the options with a short description can be found at |Q_op|.
the newly created file). Also see 'backupcopy' and |crontab|.
*'balloondelay'* *'bdlay'*
-'balloondelay' 'bdlay' number (default: 600)
- global
- {only available when compiled with the |+balloon_eval|
- feature}
- Delay in milliseconds before a balloon may pop up. See |balloon-eval|.
+'balloondelay' 'bdlay' Removed. {Nvim}
- *'ballooneval'* *'beval'* *'noballooneval'* *'nobeval'*
-'ballooneval' 'beval' boolean (default off)
- global
- {only available when compiled with the |+balloon_eval|
- feature}
- Switch on the |balloon-eval| functionality.
-
- *'balloonexpr'* *'bexpr'*
-'balloonexpr' 'bexpr' string (default "")
- global or local to buffer |global-local|
- {only available when compiled with the |+balloon_eval|
- feature}
- Expression for text to show in evaluation balloon. It is only used
- when 'ballooneval' is on. These variables can be used:
+ *'ballooneval'* *'beval'* *'noballooneval'* *'nobeval'*
+'ballooneval' 'beval' Removed. {Nvim}
- v:beval_bufnr number of the buffer in which balloon is going to show
- v:beval_winnr number of the window
- v:beval_lnum line number
- v:beval_col column number (byte index)
- v:beval_text word under or after the mouse pointer
-
- The evaluation of the expression must not have side effects!
- Example: >
- function! MyBalloonExpr()
- return 'Cursor is at line ' . v:beval_lnum .
- \', column ' . v:beval_col .
- \ ' of file ' . bufname(v:beval_bufnr) .
- \ ' on word "' . v:beval_text . '"'
- endfunction
- set bexpr=MyBalloonExpr()
- set ballooneval
-<
- NOTE: The balloon is displayed only if the cursor is on a text
- character. If the result of evaluating 'balloonexpr' is not empty,
- Vim does not try to send a message to an external debugger (Netbeans
- or Sun Workshop).
-
- The expression will be evaluated in the |sandbox| when set from a
- modeline, see |sandbox-option|.
-
- It is not allowed to change text or jump to another window while
- evaluating 'balloonexpr' |textlock|.
-
- To check whether line breaks in the balloon text work use this check: >
- if has("balloon_multiline")
-< When they are supported "\n" characters will start a new line. If the
- expression evaluates to a |List| this is equal to using each List item
- as a string and putting "\n" in between them.
+ *'balloonexpr'* *'bexpr'*
+'balloonexpr' 'bexpr' Removed. {Nvim}
*'belloff'* *'bo'*
'belloff' 'bo' string (default "")
global
- {not in Vi}
Specifies for which events the bell will not be rung. It is a comma
separated list of items. For each item that is present, the bell
will be silenced. This is most useful to specify specific events in
@@ -1169,8 +1113,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'browsedir'* *'bsdir'*
'browsedir' 'bsdir' string (default: "last")
global
- {only for Motif, Athena, GTK, Mac and
- Win32 GUI}
+ {only for Mac and Win32 GUI}
Which directory to use for the file browser:
last Use same directory as with last file browser, where a
file was opened or saved.
@@ -1253,6 +1196,9 @@ A jump table for the options with a short description can be found at |Q_op|.
nofile only: The buffer name is fixed, it is not handled like a
file name. It is not modified in response to a |:cd|
command.
+ both: When using ":e bufname" and already editing "bufname"
+ the buffer is made empty and autocommands are
+ triggered as usual for |:edit|.
*E676*
"acwrite" implies that the buffer name is not related to a file, like
"nofile", but it will be written. Thus, in contrast to "nofile" and
@@ -1418,7 +1364,7 @@ A jump table for the options with a short description can be found at |Q_op|.
option, yank and delete operations (but not put)
will additionally copy the text into register
'*'. See |nvim-clipboard|.
-<
+
*clipboard-autoselect*
autoselect Works like the 'a' flag in 'guioptions': If present,
then whenever Visual mode is started, or the Visual
@@ -1538,14 +1484,6 @@ A jump table for the options with a short description can be found at |Q_op|.
(gzipped files for example). Unloaded buffers are not scanned for
whole-line completion.
- The default is ".,w,b,u,t,i", which means to scan:
- 1. the current buffer
- 2. buffers in other windows
- 3. other loaded buffers
- 4. unloaded buffers
- 5. tags
- 6. included files
-
As you can see, CTRL-N and CTRL-P can be used to do any 'iskeyword'-
based expansion (e.g., dictionary |i_CTRL-X_CTRL-K|, included patterns
|i_CTRL-X_CTRL-I|, tags |i_CTRL-X_CTRL-]| and normal expansions).
@@ -1628,8 +1566,7 @@ A jump table for the options with a short description can be found at |Q_op|.
1 Each block of concealed text is replaced with one
character. If the syntax item does not have a custom
replacement character defined (see |:syn-cchar|) the
- character defined in 'listchars' is used (default is a
- space).
+ character defined in 'listchars' is used.
It is highlighted with the "Conceal" highlight group.
2 Concealed text is completely hidden unless it has a
custom replacement character defined (see
@@ -2141,7 +2078,7 @@ A jump table for the options with a short description can be found at |Q_op|.
the edited file. On Unix, a dot is prepended to the file name, so
it doesn't show in a directory listing. On MS-Windows the "hidden"
attribute is set and a dot prepended if possible.
- - A directory starting with "./" (or ".\" for MS-DOS et al.) means to
+ - A directory starting with "./" (or ".\" for Windows) means to
put the swap file relative to where the edited file is. The leading
"." is replaced with the path name of the edited file.
- For Unix and Win32, if a directory ends in two path separators "//"
@@ -2197,7 +2134,7 @@ A jump table for the options with a short description can be found at |Q_op|.
'edcompatible' 'ed' Removed. |vim-differences| {Nvim}
*'encoding'* *'enc'* *E543*
-'encoding' 'enc' string (default: "utf-8" or value from $LANG)
+'encoding' 'enc' string (default: "utf-8")
global
{only available when compiled with the |+multi_byte|
feature}
@@ -2219,10 +2156,6 @@ A jump table for the options with a short description can be found at |Q_op|.
can use: >
if has("multi_byte_encoding")
<
- Normally 'encoding' will be equal to your current locale. This will
- be the default if Vim recognizes your environment settings, otherwise
- "utf-8" is used.
-
When you set this option, it fires the |EncodingChanged| autocommand
event so that you can set up fonts if necessary.
@@ -2239,22 +2172,20 @@ A jump table for the options with a short description can be found at |Q_op|.
setting 'encoding' to one of these values instead of utf-8 only has
effect for encoding used for files when 'fileencoding' is empty.
- When 'encoding' is set to a Unicode encoding, and 'fileencodings' was
- not set yet, the default for 'fileencodings' is changed.
-
*'endofline'* *'eol'* *'noendofline'* *'noeol'*
'endofline' 'eol' boolean (default on)
local to buffer
When writing a file and this option is off and the 'binary' option
- is on, no <EOL> will be written for the last line in the file. This
- option is automatically set when starting to edit a new file, unless
- the file does not have an <EOL> for the last line in the file, in
- which case it is reset. Normally you don't have to set or reset this
- option. When 'binary' is off the value is not used when writing the
- file. When 'binary' is on it is used to remember the presence of a
- <EOL> for the last line in the file, so that when you write the file
- the situation from the original file can be kept. But you can change
- it if you want to.
+ is on, or 'fixeol' option is off, no <EOL> will be written for the
+ last line in the file. This option is automatically set or reset when
+ starting to edit a new file, depending on whether file has an <EOL>
+ for the last line in the file. Normally you don't have to set or
+ reset this option.
+ When 'binary' is off and 'fixeol' is on the value is not used when
+ writing the file. When 'binary' is on or 'fixeol' is off it is used
+ to remember the presence of a <EOL> for the last line in the file, so
+ that when you write the file the situation from the original file can
+ be kept. But you can change it if you want to.
*'equalalways'* *'ea'* *'noequalalways'* *'noea'*
'equalalways' 'ea' boolean (default on)
@@ -2346,17 +2277,19 @@ A jump table for the options with a short description can be found at |Q_op|.
<Tab>. Spaces are used in indents with the '>' and '<' commands and
when 'autoindent' is on. To insert a real tab when 'expandtab' is
on, use CTRL-V<Tab>. See also |:retab| and |ins-expandtab|.
+ This option is reset when the 'paste' option is set and restored when
+ the 'paste' option is reset.
*'exrc'* *'ex'* *'noexrc'* *'noex'*
'exrc' 'ex' boolean (default off)
global
- Enables the reading of .nvimrc, .exrc and .ngvimrc in the current
- directory. If you switch this option on you should also consider
- setting the 'secure' option (see |initialization|). Using a local
- .exrc, .nvimrc or .ngvimrc is a potential security leak, use with care!
- also see |init.vim| and |gui-init|.
+ Enables the reading of .nvimrc and .exrc in the current directory.
+ If you switch this option on you should also consider setting the
+ 'secure' option (see |initialization|). Using this option comes
+ with a potential security risk, use with care!
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
+ Also see |init.vim| and |gui-init|.
*'fileencoding'* *'fenc'* *E213*
'fileencoding' 'fenc' string (default: "")
@@ -2411,9 +2344,7 @@ A jump table for the options with a short description can be found at |Q_op|.
old short name was 'fe', which is no longer used.
*'fileencodings'* *'fencs'*
-'fileencodings' 'fencs' string (default: "ucs-bom",
- "ucs-bom,utf-8,default,latin1" when
- 'encoding' is set to a Unicode value)
+'fileencodings' 'fencs' string (default: "ucs-bom,utf-8,default,latin1")
global
{only available when compiled with the |+multi_byte|
feature}
@@ -2453,9 +2384,8 @@ A jump table for the options with a short description can be found at |Q_op|.
because Vim cannot detect an error, thus the encoding is always
accepted.
The special value "default" can be used for the encoding from the
- environment. This is the default value for 'encoding'. It is useful
- when 'encoding' is set to "utf-8" and your environment uses a
- non-latin1 encoding, such as Russian.
+ environment. It is useful when 'encoding' is set to "utf-8" and
+ your environment uses a non-latin1 encoding, such as Russian.
When 'encoding' is "utf-8" and a file contains an illegal byte
sequence it won't be recognized as UTF-8. You can use the |8g8|
command to find the illegal byte sequence.
@@ -2470,7 +2400,7 @@ A jump table for the options with a short description can be found at |Q_op|.
is read.
*'fileformat'* *'ff'*
-'fileformat' 'ff' string (MS-DOS and MS-Windows default: "dos",
+'fileformat' 'ff' string (Windows default: "dos",
Unix default: "unix",
Macintosh default: "mac")
local to buffer
@@ -2514,8 +2444,8 @@ A jump table for the options with a short description can be found at |Q_op|.
2. If a <NL> is found and 'fileformats' includes "unix", 'fileformat'
is set to "unix". Note that when a <NL> is found without a
preceding <CR>, "unix" is preferred over "dos".
- 3. If 'fileformat' has not yet been set, and if 'fileformats'
- includes "mac", 'fileformat' is set to "mac".
+ 3. If 'fileformat' has not yet been set, and if a <CR> is found, and
+ if 'fileformats' includes "mac", 'fileformat' is set to "mac".
This means that "mac" is only chosen when:
"unix" is not present or no <NL> is found in the file, and
"dos" is not present or no <CR><NL> is found in the file.
@@ -2609,6 +2539,17 @@ A jump table for the options with a short description can be found at |Q_op|.
fold:c Folded |hl-Folded|
diff:c DiffDelete |hl-DiffDelete|
+ *'fixendofline'* *'fixeol'* *'nofixendofline'* *'nofixeol'*
+'fixendofline' 'fixeol' boolean (default on)
+ local to buffer
+ {not in Vi}
+ When writing a file and this option is on, <EOL> at the end of file
+ will be restored if missing. Turn this option off if you want to
+ preserve the situation from the original file.
+ When the 'binary' option is set the value of this option doesn't
+ matter.
+ See the 'endofline' option.
+
*'fkmap'* *'fk'* *'nofkmap'* *'nofk'*
'fkmap' 'fk' boolean (default off) *E198*
global
@@ -2876,10 +2817,7 @@ A jump table for the options with a short description can be found at |Q_op|.
written even on filesystems which do metadata-only journaling. This
will force the harddrive to spin up on Linux systems running in laptop
mode, so it may be undesirable in some situations. Be warned that
- turning this off increases the chances of data loss after a crash. On
- systems without an fsync() implementation, this variable is always
- off.
- Also see 'swapsync' for controlling fsync() on swap files.
+ turning this off increases the chances of data loss after a crash.
*'gdefault'* *'gd'* *'nogdefault'* *'nogd'*
'gdefault' 'gd' boolean (default off)
@@ -2932,14 +2870,14 @@ A jump table for the options with a short description can be found at |Q_op|.
r-cr:hor20-Cursor/lCursor,
sm:block-Cursor
-blinkwait175-blinkoff150-blinkon175",
- for MS-DOS and Win32 console:
+ for Windows console:
"n-v-c:block,o:hor50,i-ci:hor15,
r-cr:hor30,sm:block")
global
{only available when compiled with GUI enabled, and
- for MS-DOS and Win32 console}
+ for Windows console}
This option tells Vim what the cursor should look like in different
- modes. It fully works in the GUI. In an MSDOS or Win32 console, only
+ modes. It fully works in the GUI. In a Windows console, only
the height of the cursor can be changed. This can be done by
specifying a block cursor, or a percentage for a vertical or
horizontal cursor.
@@ -3038,28 +2976,18 @@ A jump table for the options with a short description can be found at |Q_op|.
the case of X). The font names given should be "normal" fonts. Vim
will try to find the related bold and italic fonts.
- For Win32, GTK, Motif, and Mac OS: >
+ For Win32 and Mac OS: >
:set guifont=*
< will bring up a font requester, where you can pick the font you want.
The font name depends on the GUI used. See |setting-guifont| for a
way to set 'guifont' for various systems.
- For the GTK+ 2 GUI the font name looks like this: >
- :set guifont=Andale\ Mono\ 11
-< That's all. XLFDs are not used. For Chinese this is reported to work
- well: >
- if has("gui_gtk2")
- set guifont=Bitstream\ Vera\ Sans\ Mono\ 12,Fixed\ 12
- set guifontwide=Microsoft\ Yahei\ 12,WenQuanYi\ Zen\ Hei\ 12
- endif
-<
For Mac OSX you can use something like this: >
:set guifont=Monaco:h10
< *E236*
Note that the fonts must be mono-spaced (all characters have the same
- width). An exception is GTK 2: all fonts are accepted, but
- mono-spaced fonts look best.
+ width).
To preview a font on X11, you might be able to use the "xfontsel"
program. The "xlsfonts" program gives a list of all available fonts.
@@ -3092,7 +3020,6 @@ A jump table for the options with a short description can be found at |Q_op|.
global
{only available when compiled with GUI enabled and
with the |+xfontset| feature}
- {not available in the GTK+ 2 GUI}
When not empty, specifies two (or more) fonts to be used. The first
one for normal English, the second one for your special language. See
|xfontset|.
@@ -3120,24 +3047,12 @@ A jump table for the options with a short description can be found at |Q_op|.
Note: The size of these fonts must be exactly twice as wide as the one
specified with 'guifont' and the same height.
- All GUI versions but GTK+ 2:
-
'guifontwide' is only used when 'encoding' is set to "utf-8" and
'guifontset' is empty or invalid.
When 'guifont' is set and a valid font is found in it and
'guifontwide' is empty Vim will attempt to find a matching
double-width font and set 'guifontwide' to it.
- GTK+ 2 GUI only: *guifontwide_gtk2*
-
- If set and valid, 'guifontwide' is always used for double width
- characters, even if 'encoding' is not set to "utf-8".
- Vim does not attempt to find an appropriate value for 'guifontwide'
- automatically. If 'guifontwide' is empty Pango/Xft will choose the
- font for characters not available in 'guifont'. Thus you do not need
- to set 'guifontwide' at all unless you want to override the choice
- made by Pango/Xft.
-
Windows +multibyte only: *guifontwide_win_mbyte*
If set and valid, 'guifontwide' is used for IME instead of 'guifont'.
@@ -3145,7 +3060,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'guiheadroom'* *'ghr'*
'guiheadroom' 'ghr' number (default 50)
global
- {only for GTK and X11 GUI}
+ {only for X11 GUI}
The number of pixels subtracted from the screen height when fitting
the GUI window on the screen. Set this before the GUI is started,
e.g., in your |gvimrc| file. When zero, the whole screen height will
@@ -3155,8 +3070,7 @@ A jump table for the options with a short description can be found at |Q_op|.
screen.
*'guioptions'* *'go'*
-'guioptions' 'go' string (default "egmrLT" (MS-Windows),
- "aegimrLT" (GTK, Motif and Athena))
+'guioptions' 'go' string (default "egmrLT" (MS-Windows))
global
{only available when compiled with GUI enabled}
This option only has an effect in the GUI version of Vim. It is a
@@ -3202,10 +3116,9 @@ A jump table for the options with a short description can be found at |Q_op|.
'guitablabel' can be used to change the text in the labels.
When 'e' is missing a non-GUI tab pages line may be used.
The GUI tabs are only supported on some systems, currently
- GTK, Motif, Mac OS/X and MS-Windows.
+ Mac OS/X and MS-Windows.
*'go-i'*
- 'i' Use a Vim icon. For GTK with KDE it is used in the left-upper
- corner of the window.
+ 'i' Use a Vim icon.
*'go-m'*
'm' Menu bar is present.
*'go-M'*
@@ -3217,10 +3130,8 @@ A jump table for the options with a short description can be found at |Q_op|.
*'go-g'*
'g' Grey menu items: Make menu items that are not active grey. If
'g' is not included inactive menu items are not shown at all.
- Exception: Athena will always use grey menu items.
*'go-T'*
- 'T' Include Toolbar. Currently only in Win32, GTK+, Motif,
- and Athena GUIs.
+ 'T' Include Toolbar. Currently only in Win32 GUI.
*'go-r'*
'r' Right-hand scrollbar is always present.
*'go-R'*
@@ -3252,8 +3163,6 @@ A jump table for the options with a short description can be found at |Q_op|.
the right moment, try adding this flag. This must be done
before starting the GUI. Set it in your |gvimrc|. Adding or
removing it after the GUI has started has no effect.
- *'go-F'*
- 'F' Add a footer. Only for Motif. See |gui-footer|.
*'guipty'* *'noguipty'*
@@ -3501,59 +3410,15 @@ A jump table for the options with a short description can be found at |Q_op|.
global
Ignore case in search patterns. Also used when searching in the tags
file.
- Also see 'smartcase'.
+ Also see 'smartcase' and 'tagcase'.
Can be overruled by using "\c" or "\C" in the pattern, see
|/ignorecase|.
*'imactivatefunc'* *'imaf'*
-'imactivatefunc' 'imaf' string (default "")
- global
- {only available when compiled with |+xim| and
- |+GUI_GTK|}
- This option specifies a function that will be called to
- activate/inactivate Input Method.
+'imactivatefunc' 'imaf' Removed. |vim-differences| {Nvim}
- Example: >
- function ImActivateFunc(active)
- if a:active
- ... do something
- else
- ... do something
- endif
- " return value is not used
- endfunction
- set imactivatefunc=ImActivateFunc
-<
*'imactivatekey'* *'imak'*
-'imactivatekey' 'imak' string (default "")
- global
- {only available when compiled with |+xim| and
- |+GUI_GTK|} *E599*
- Specifies the key that your Input Method in X-Windows uses for
- activation. When this is specified correctly, vim can fully control
- IM with 'imcmdline', 'iminsert' and 'imsearch'.
- You can't use this option to change the activation key, the option
- tells Vim what the key is.
- Format:
- [MODIFIER_FLAG-]KEY_STRING
-
- These characters can be used for MODIFIER_FLAG (case is ignored):
- S Shift key
- L Lock key
- C Control key
- 1 Mod1 key
- 2 Mod2 key
- 3 Mod3 key
- 4 Mod4 key
- 5 Mod5 key
- Combinations are allowed, for example "S-C-space" or "SC-space" are
- both shift+ctrl+space.
- See <X11/keysymdef.h> and XStringToKeysym for KEY_STRING.
-
- Example: >
- :set imactivatekey=S-space
-< "S-space" means shift+space. This is the activation key for kinput2 +
- canna (Japanese), and ami (Korean).
+'imactivatekey' 'imak' Removed. |vim-differences| {Nvim}
*'imcmdline'* *'imc'* *'noimcmdline'* *'noimc'*
'imcmdline' 'imc' boolean (default off)
@@ -3595,8 +3460,6 @@ A jump table for the options with a short description can be found at |Q_op|.
|i_CTRL-^|.
The value is set to 1 when setting 'keymap' to a valid keymap name.
It is also used for the argument of commands like "r" and "f".
- The value 0 may not work correctly with Athena and Motif with some XIM
- methods. Use 'imdisable' to disable XIM then.
*'imsearch'* *'ims'*
'imsearch' 'ims' number (default 0, 2 when an input method is supported)
@@ -3612,25 +3475,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|c_CTRL-^|.
The value is set to 1 when it is not -1 and setting the 'keymap'
option to a valid keymap name.
- The value 0 may not work correctly with Athena and Motif with some XIM
- methods. Use 'imdisable' to disable XIM then.
*'imstatusfunc'* *'imsf'*
-'imstatusfunc' 'imsf' string (default "")
- global
- {only available when compiled with |+xim| and
- |+GUI_GTK|}
- This option specifies a function that is called to obtain the status
- of Input Method. It must return a positive number when IME is active.
-
- Example: >
- function ImStatusFunc()
- let is_active = ...do something
- return is_active ? 1 : 0
- endfunction
- set imstatusfunc=ImStatusFunc
-<
- NOTE: This function is invoked very often. Keep it fast.
+'imstatusfunc' 'imsf' Removed. |vim-differences| {Nvim}
*'include'* *'inc'*
'include' 'inc' string (default "^\s*#\s*include")
@@ -3772,7 +3619,7 @@ A jump table for the options with a short description can be found at |Q_op|.
When executing commands with |:normal| 'insertmode' is not used.
*'isfname'* *'isf'*
-'isfname' 'isf' string (default for MS-DOS and Win32:
+'isfname' 'isf' string (default for Windows:
"@,48-57,/,\,.,-,_,+,,,#,$,%,{,},[,],:,@-@,!,~,="
otherwise: "@,48-57,/,.,-,_,+,,,#,$,%,~,=")
global
@@ -3823,7 +3670,7 @@ A jump table for the options with a short description can be found at |Q_op|.
See |option-backslash| about including spaces and backslashes.
*'isident'* *'isi'*
-'isident' 'isi' string (default for MS-DOS and Win32:
+'isident' 'isi' string (default for Windows:
"@,48-57,_,128-167,224-235"
otherwise: "@,48-57,_,192-255")
global
@@ -3838,10 +3685,8 @@ A jump table for the options with a short description can be found at |Q_op|.
change 'iskeyword' instead.
*'iskeyword'* *'isk'*
-'iskeyword' 'isk' string (Vim default for
- Win32: @,48-57,_,128-167,224-235
- otherwise: @,48-57,_,192-255
- Vi default: @,48-57,_)
+'iskeyword' 'isk' string (default: @,48-57,_,192-255
+ Vi default: @,48-57,_)
local to buffer
Keywords are used in searching and recognizing with many commands:
"w", "*", "[i", etc. It is also used for "\k" in a |pattern|. See
@@ -3853,8 +3698,7 @@ A jump table for the options with a short description can be found at |Q_op|.
When the 'lisp' option is on the '-' character is always included.
*'isprint'* *'isp'*
-'isprint' 'isp' string (default for MS-DOS, Win32, and Macintosh:
- "@,~-255"; otherwise: "@,161-255")
+'isprint' 'isp' string (default: "@,161-255")
global
The characters given by this option are displayed directly on the
screen. It is also used for "\p" in a |pattern|. The characters from
@@ -3941,7 +3785,7 @@ A jump table for the options with a short description can be found at |Q_op|.
feature}
This option allows switching your keyboard into a special language
mode. When you are typing text in Insert mode the characters are
- inserted directly. When in command mode the 'langmap' option takes
+ inserted directly. When in Normal mode the 'langmap' option takes
care of translating these special characters to the original meaning
of the key. This means you don't have to change the keyboard mode to
be able to execute Normal mode commands.
@@ -4143,10 +3987,11 @@ A jump table for the options with a short description can be found at |Q_op|.
visible in the first column.
*lcs-conceal*
conceal:c Character to show in place of concealed text, when
- 'conceallevel' is set to 1.
+ 'conceallevel' is set to 1. A space when omitted.
*lcs-nbsp*
- nbsp:c Character to show for a non-breakable space (character
- 0xA0, 160). Left blank when omitted.
+ nbsp:c Character to show for a non-breakable space character
+ (0xA0 (160 decimal) and U+202F). Left blank when
+ omitted.
The characters ':' and ',' should not be used. UTF-8 characters can
be used when 'encoding' is "utf-8", otherwise only printable
@@ -4307,8 +4152,11 @@ A jump table for the options with a short description can be found at |Q_op|.
global
Maximum amount of memory in Kbyte to use for all buffers together.
The maximum usable value is about 2000000 (2 Gbyte). Use this to work
- without a limit. On 64 bit machines higher values might work. But
- hey, do you really need more than 2 Gbyte for text editing?
+ without a limit.
+ On 64 bit machines higher values might work. But hey, do you really
+ need more than 2 Gbyte for text editing? Keep in mind that text is
+ stored in the swap file, one can edit files > 2 Gbyte anyway. We do
+ need the memory to store undo info.
Also see 'maxmem'.
*'menuitems'* *'mis'*
@@ -4449,7 +4297,7 @@ A jump table for the options with a short description can be found at |Q_op|.
The mouse pointer is restored when the mouse is moved.
*'mousemodel'* *'mousem'*
-'mousemodel' 'mousem' string (default "extend", "popup" for MS-DOS and Win32)
+'mousemodel' 'mousem' string (default "extend", "popup" for Windows)
global
Sets the model to use for the mouse. The name mostly specifies what
the right mouse button is used for:
@@ -4551,12 +4399,12 @@ A jump table for the options with a short description can be found at |Q_op|.
*'mousetime'* *'mouset'*
'mousetime' 'mouset' number (default 500)
global
- Only for GUI, MS-DOS, Win32 and Unix with xterm. Defines the maximum
+ Only for GUI, Windows and Unix with xterm. Defines the maximum
time in msec between two mouse clicks for the second click to be
recognized as a multi click.
*'nrformats'* *'nf'*
-'nrformats' 'nf' string (default "hex")
+'nrformats' 'nf' string (default "bin,hex")
local to buffer
This defines what bases Vim will consider for numbers when using the
CTRL-A and CTRL-X commands for adding to and subtracting from a number
@@ -4569,6 +4417,9 @@ A jump table for the options with a short description can be found at |Q_op|.
hex If included, numbers starting with "0x" or "0X" will be
considered to be hexadecimal. Example: Using CTRL-X on
"0x100" results in "0x0ff".
+ bin If included, numbers starting with "0b" or "0B" will be
+ considered to be binary. Example: Using CTRL-X on
+ "0b1000" subtracts one, resulting in "0b0111".
Numbers which simply begin with a digit in the range 1-9 are always
considered decimal. This also happens for numbers that are not
recognized as octal or hex.
@@ -4632,11 +4483,11 @@ A jump table for the options with a short description can be found at |Q_op|.
*'opendevice'* *'odev'* *'noopendevice'* *'noodev'*
'opendevice' 'odev' boolean (default off)
global
- {only for MS-DOS and MS-Windows}
+ {only for Windows}
Enable reading and writing from devices. This may get Vim stuck on a
device that can be opened but doesn't actually do the I/O. Therefore
it is off by default.
- Note that on MS-Windows editing "aux.h", "lpt1.txt" and the like also
+ Note that on Windows editing "aux.h", "lpt1.txt" and the like also
result in editing a device.
@@ -4675,19 +4526,21 @@ A jump table for the options with a short description can be found at |Q_op|.
When the 'paste' option is switched on (also when it was already on):
- mapping in Insert mode and Command-line mode is disabled
- abbreviations are disabled
- - 'textwidth' is set to 0
- - 'wrapmargin' is set to 0
- 'autoindent' is reset
- - 'smartindent' is reset
- - 'softtabstop' is set to 0
+ - 'expandtab' is reset
+ - 'formatoptions' is used like it is empty
- 'revins' is reset
- 'ruler' is reset
- 'showmatch' is reset
- - 'formatoptions' is used like it is empty
+ - 'smartindent' is reset
+ - 'smarttab' is reset
+ - 'softtabstop' is set to 0
+ - 'textwidth' is set to 0
+ - 'wrapmargin' is set to 0
These options keep their value, but their effect is disabled:
- - 'lisp'
- - 'indentexpr'
- 'cindent'
+ - 'indentexpr'
+ - 'lisp'
NOTE: When you start editing another file while the 'paste' option is
on, settings from the modelines or autocommands may change the
settings again, causing trouble when pasting text. You might want to
@@ -5002,18 +4855,7 @@ A jump table for the options with a short description can be found at |Q_op|.
instead of the number of lines.
*'restorescreen'* *'rs'* *'norestorescreen'* *'nors'*
-'restorescreen' 'rs' boolean (default on)
- global
- {only in Windows 95/NT console version}
- When set, the screen contents is restored when exiting Vim. This also
- happens when executing external commands.
-
- For non-Windows Vim: You can set or reset the 't_ti' and 't_te'
- options in your vimrc. To disable restoring:
- set t_ti= t_te=
- To enable restoring (for an xterm):
- set t_ti=^[7^[[r^[[?47h t_te=^[[?47l^[8
- (Where ^[ is an <Esc>, type CTRL-V <Esc> to insert it)
+'restorescreen' 'rs' Removed. |vim-differences| {Nvim}
*'revins'* *'ri'* *'norevins'* *'nori'*
'revins' 'ri' boolean (default off)
@@ -5021,7 +4863,8 @@ A jump table for the options with a short description can be found at |Q_op|.
Inserting characters in Insert mode will work backwards. See "typing
backwards" |ins-reverse|. This option can be toggled with the CTRL-_
command in Insert mode, when 'allowrevins' is set.
- NOTE: This option is reset when 'paste' is set.
+ This option is reset when 'paste' is set and restored when 'paste' is
+ reset.
*'rightleft'* *'rl'* *'norightleft'* *'norl'*
'rightleft' 'rl' boolean (default off)
@@ -5070,7 +4913,8 @@ A jump table for the options with a short description can be found at |Q_op|.
separated with a dash.
For an empty line "0-1" is shown.
For an empty buffer the line number will also be zero: "0,0-1".
- This option is reset when the 'paste' option is set.
+ This option is reset when 'paste' is set and restored when 'paste' is
+ reset.
If you don't want to see the ruler all the time but want to know where
you are, use "g CTRL-G" |g_CTRL-G|.
@@ -5342,8 +5186,8 @@ A jump table for the options with a short description can be found at |Q_op|.
*'shada'* *'sd'* *E526* *E527* *E528*
'shada' 'sd' string (Vim default for
- Win32: '!,100,<50,s10,h,rA:,rB:
- others: '!,100,<50,s10,h
+ Win32: !,'100,<50,s10,h,rA:,rB:
+ others: !,'100,<50,s10,h
Vi default: "")
global
When non-empty, the shada file is read upon startup and written
@@ -5370,9 +5214,9 @@ A jump table for the options with a short description can be found at |Q_op|.
% When included, save and restore the buffer list. If Vim is
started with a file name argument, the buffer list is not
restored. If Vim is started without a file name argument, the
- buffer list is restored from the shada file. Buffers
- without a file name and buffers for help files are not written
- to the shada file.
+ buffer list is restored from the shada file. Quickfix
+ ('buftype'), unlisted ('buflisted'), unnamed and buffers on
+ removable media (|shada-r|) are not saved.
When followed by a number, the number specifies the maximum
number of buffers that are stored. Without a number all
buffers are stored.
@@ -5421,7 +5265,7 @@ A jump table for the options with a short description can be found at |Q_op|.
r Removable media. The argument is a string (up to the next
','). This parameter can be given several times. Each
specifies the start of a path for which no marks will be
- stored. This is to avoid removable media. For MS-DOS you
+ stored. This is to avoid removable media. For Windows you
could use "ra:,rb:". You can also use it for temp files,
e.g., for Unix: "r/tmp". Case is ignored.
*shada-s*
@@ -5459,8 +5303,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'shell'* *'sh'* *E91*
'shell' 'sh' string (default $SHELL or "sh",
- MS-DOS and Win32: "command.com" or
- "cmd.exe")
+ Windows: "cmd.exe")
global
Name of the shell to use for ! and :! commands. When changing the
value also check these options: 'shellpipe', 'shellslash'
@@ -5471,27 +5314,50 @@ A jump table for the options with a short description can be found at |Q_op|.
If the name of the shell contains a space, you might need to enclose
it in quotes. Example: >
:set shell=\"c:\program\ files\unix\sh.exe\"\ -f
-< Note the backslash before each quote (to avoid starting a comment) and
- each space (to avoid ending the option value). Also note that the
- "-f" is not inside the quotes, because it is not part of the command
- name. And Vim automagically recognizes the backslashes that are path
- separators.
+< Note the backslash before each quote (to avoid starting a comment) and
+ each space (to avoid ending the option value), so better use |:let-&|
+ like this: >
+ :let &shell='"C:\Program Files\unix\sh.exe" -f'
+< Also note that the "-f" is not inside the quotes, because it is not
+ part of the command name.
+ *shell-unquoting*
+ Rules regarding quotes:
+ 1. Option is split on space and tab characters that are not inside
+ quotes: "abc def" runs shell named "abc" with additional argument
+ "def", '"abc def"' runs shell named "abc def" with no additional
+ arguments (here and below: additional means “additional to
+ 'shellcmdflag'”).
+ 2. Quotes in option may be present in any position and any number:
+ '"abc"', '"a"bc', 'a"b"c', 'ab"c"' and '"a"b"c"' are all equivalent
+ to just "abc".
+ 3. Inside quotes backslash preceding backslash means one backslash.
+ Backslash preceding quote means one quote. Backslash preceding
+ anything else means backslash and next character literally:
+ '"a\\b"' is the same as "a\b", '"a\\"b"' runs shell named literally
+ 'a"b', '"a\b"' is the same as "a\b" again.
+ 4. Outside of quotes backslash always means itself, it cannot be used
+ to escape quote: 'a\"b"' is the same as "a\b".
+ Note that such processing is done after |:set| did its own round of
+ unescaping, so to keep yourself sane use |:let-&| like shown above.
+
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
*'shellcmdflag'* *'shcf'*
'shellcmdflag' 'shcf' string (default: "-c";
- MS-DOS and Win32, when 'shell' does not
+ Windows, when 'shell' does not
contain "sh" somewhere: "/c")
global
Flag passed to the shell to execute "!" and ":!" commands; e.g.,
- "bash.exe -c ls" or "command.com /c dir". For the MS-DOS-like
+ "bash.exe -c ls" or "cmd.exe /c dir". For Windows
systems, the default is set according to the value of 'shell', to
reduce the need to set this option by the user.
On Unix it can have more than one flag. Each white space separated
part is passed as an argument to the shell command.
See |option-backslash| about including spaces and backslashes.
- Also see |dos-shell| for MS-DOS and MS-Windows.
+ See |shell-unquoting| which talks about separating this option into
+ multiple arguments.
+ Also see |dos-shell| for Windows.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -5506,7 +5372,7 @@ A jump table for the options with a short description can be found at |Q_op|.
The name of the temporary file can be represented by "%s" if necessary
(the file name is appended automatically if no %s appears in the value
of this option).
- For MS-DOS the default is ">". The output is directly saved in a file
+ For Windows the default is ">". The output is directly saved in a file
and not echoed to the screen.
For Unix the default it "| tee". The stdout of the compiler is saved
in a file and echoed to the screen. If the 'shell' option is "csh" or
@@ -5530,7 +5396,7 @@ A jump table for the options with a short description can be found at |Q_op|.
security reasons.
*'shellquote'* *'shq'*
-'shellquote' 'shq' string (default: ""; MS-DOS and Win32, when 'shell'
+'shellquote' 'shq' string (default: ""; Windows, when 'shell'
contains "sh" somewhere: "\"")
global
Quoting character(s), put around the command passed to the shell, for
@@ -5538,7 +5404,7 @@ A jump table for the options with a short description can be found at |Q_op|.
quoting. See 'shellxquote' to include the redirection. It's
probably not useful to set both options.
This is an empty string by default. Only known to be useful for
- third-party shells on MS-DOS-like systems, such as the MKS Korn Shell
+ third-party shells on Windows systems, such as the MKS Korn Shell
or bash, where it should be "\"". The default is adjusted according
the value of 'shell', to reduce the need to set this option by the
user. See |dos-shell|.
@@ -5603,7 +5469,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'shellxescape'* *'sxe'*
'shellxescape' 'sxe' string (default: "";
- for MS-DOS and MS-Windows: "\"&|<>()@^")
+ for Windows: "\"&|<>()@^")
global
When 'shellxquote' is set to "(" then the characters listed in this
option will be escaped with a '^' character. This makes it possible
@@ -5685,6 +5551,9 @@ A jump table for the options with a short description can be found at |Q_op|.
c don't give |ins-completion-menu| messages. For example,
"-- XXX completion (YYY)", "match 1 of 2", "The only match",
"Pattern not found", "Back at original", etc.
+ q use "recording" instead of "recording @a"
+ F don't give the file info when editing a file, like `:silent`
+ was used for the command
This gives you the opportunity to avoid that a change between buffers
requires you to hit <Enter>, but still gives as useful a message as
@@ -5753,7 +5622,9 @@ A jump table for the options with a short description can be found at |Q_op|.
jump is only done if the match can be seen on the screen. The time to
show the match can be set with 'matchtime'.
A Beep is given if there is no match (no matter if the match can be
- seen or not). This option is reset when the 'paste' option is set.
+ seen or not).
+ This option is reset when 'paste' is set and restored when 'paste' is
+ reset.
When the 'm' flag is not included in 'cpoptions', typing a character
will immediately move the cursor back to where it belongs.
See the "sm" field in 'guicursor' for setting the cursor shape and
@@ -5772,8 +5643,7 @@ A jump table for the options with a short description can be found at |Q_op|.
Use the 'M' flag in 'highlight' to set the type of highlighting for
this message.
When |XIM| may be used the message will include "XIM". But this
- doesn't mean XIM is really active, especially when 'imactivatekey' is
- not set.
+ doesn't mean XIM is really active.
*'showtabline'* *'stal'*
'showtabline' 'stal' number (default 1)
@@ -5853,7 +5723,8 @@ A jump table for the options with a short description can be found at |Q_op|.
mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H.
When using the ">>" command, lines starting with '#' are not shifted
right.
- NOTE: When 'paste' is set smart indenting is disabled.
+ This option is reset when 'paste' is set and restored when 'paste' is
+ reset.
*'smarttab'* *'sta'* *'nosmarttab'* *'nosta'*
'smarttab' 'sta' boolean (default on)
@@ -5868,6 +5739,8 @@ A jump table for the options with a short description can be found at |Q_op|.
What gets inserted (a <Tab> or spaces) depends on the 'expandtab'
option. Also see |ins-expandtab|. When 'expandtab' is not set, the
number of spaces is minimized by using <Tab>s.
+ This option is reset when 'paste' is set and restored when 'paste' is
+ reset.
*'softtabstop'* *'sts'*
'softtabstop' 'sts' number (default 0)
@@ -5880,7 +5753,8 @@ A jump table for the options with a short description can be found at |Q_op|.
commands like "x" still work on the actual characters.
When 'sts' is zero, this feature is off.
When 'sts' is negative, the value of 'shiftwidth' is used.
- 'softtabstop' is set to 0 when the 'paste' option is set.
+ 'softtabstop' is set to 0 when the 'paste' option is set and restored
+ when 'paste' is reset.
See also |ins-expandtab|. When 'expandtab' is not set, the number of
spaces is minimized by using <Tab>s.
The 'L' flag in 'cpoptions' changes how tabs are used when 'list' is
@@ -5952,7 +5826,8 @@ A jump table for the options with a short description can be found at |Q_op|.
the two-letter, lower case region name. You can use more than one
region by listing them: "en_us,en_ca" supports both US and Canadian
English, but not words specific for Australia, New Zealand or Great
- Britain.
+ Britain. (Note: currently en_au and en_nz dictionaries are older than
+ en_ca, en_gb and en_us).
If the name "cjk" is included East Asian characters are excluded from
spell checking. This is useful when editing text that also has Asian
words.
@@ -6158,11 +6033,39 @@ A jump table for the options with a short description can be found at |Q_op|.
( - Start of item group. Can be used for setting the width and
alignment of a section. Must be followed by %) somewhere.
) - End of item group. No width fields allowed.
- T N For 'tabline': start of tab page N label. Use %T after the last
- label. This information is used for mouse clicks.
- X N For 'tabline': start of close tab N label. Use %X after the
- label, e.g.: %3Xclose%X. Use %999X for a "close current tab"
- mark. This information is used for mouse clicks.
+ T N For 'tabline': start of tab page N label. Use %T or %X to end
+ the label. Clicking this label with left mouse button switches
+ to the specified tab page.
+ X N For 'tabline': start of close tab N label. Use %X or %T to end
+ the label, e.g.: %3Xclose%X. Use %999X for a "close current
+ tab" label. Clicking this label with left mouse button closes
+ specified tab page.
+ @ N For 'tabline': start of execute function label. Use %X or %T to
+ end the label, e.g.: %10@SwitchBuffer@foo.c%X. Clicking this
+ label runs specified function: in the example when clicking once
+ using left mouse button on "foo.c" "SwitchBuffer(10, 1, 'l',
+ ' ')" expression will be run. Function receives the
+ following arguments in order:
+ 1. minwid field value or zero if no N was specified
+ 2. number of mouse clicks to detect multiple clicks
+ 3. mouse button used: "l", "r" or "m" for left, right or middle
+ button respectively; one should not rely on third argument
+ being only "l", "r" or "m": any other non-empty string value
+ that contains only ASCII lower case letters may be expected
+ for other mouse buttons
+ 4. modifiers pressed: string which contains "s" if shift
+ modifier was pressed, "c" for control, "a" for alt and "m"
+ for meta; currently if modifier is not pressed string
+ contains space instead, but one should not rely on presence
+ of spaces or specific order of modifiers: use |stridx()| to
+ test whether some modifier is present; string is guaranteed
+ to contain only ASCII letters and spaces, one letter per
+ modifier; "?" modifier may also be present, but its presence
+ is a bug that denotes that new mouse button recognition was
+ added without modifying code that reacts on mouse clicks on
+ this label.
+ Note: to test whether your version of Neovim contains this
+ feature use `has('tablineat')`.
< - Where to truncate line if too long. Default is at the start.
No width fields allowed.
= - Separation point between left and right aligned items.
@@ -6186,7 +6089,7 @@ A jump table for the options with a short description can be found at |Q_op|.
become empty. This will make a group like the following disappear
completely from the statusline when none of the flags are set. >
:set statusline=...%(\ [%M%R%H]%)...
-<
+< *g:actual_curbuf*
Beware that an expression is evaluated each and every time the status
line is displayed. The current buffer and current window will be set
temporarily to that of the window (and buffer) whose statusline is
@@ -6269,7 +6172,7 @@ A jump table for the options with a short description can be found at |Q_op|.
When 'swapfile' is reset, the swap file for the current buffer is
immediately deleted. When 'swapfile' is set, and 'updatecount' is
non-zero, a swap file is immediately created.
- Also see |swap-file| and |'swapsync'|.
+ Also see |swap-file|.
If you want to open a new buffer without creating a swap file for it,
use the |:noswapfile| modifier.
@@ -6277,18 +6180,7 @@ A jump table for the options with a short description can be found at |Q_op|.
specify special kinds of buffers. See |special-buffers|.
*'swapsync'* *'sws'*
-'swapsync' 'sws' string (default "fsync")
- global
- When this option is not empty a swap file is synced to disk after
- writing to it. This takes some time, especially on busy unix systems.
- When this option is empty parts of the swap file may be in memory and
- not written to disk. When the system crashes you may lose more work.
- On Unix the system does a sync now and then without Vim asking for it,
- so the disadvantage of setting this option off is small. On some
- systems the swap file will not be written at all. For a unix system
- setting it to "sync" will use the sync() call instead of the default
- fsync(), which may work better on some systems.
- The 'fsync' option is used for the actual file.
+'swapsync' 'sws' Removed. |vim-differences| {Nvim}
*'switchbuf'* *'swb'*
'switchbuf' 'swb' string (default "")
@@ -6307,6 +6199,7 @@ A jump table for the options with a short description can be found at |Q_op|.
split If included, split the current window before loading
a buffer for a |quickfix| command that display errors.
Otherwise: do not split, use current window.
+ vsplit Just like "split" but split vertically.
newtab Like "split", but open a new tab page. Overrules
"split" when both are present.
@@ -6432,19 +6325,22 @@ A jump table for the options with a short description can be found at |Q_op|.
< [The whitespace before and after the '0' must be a single <Tab>]
When a binary search was done and no match was found in any of the
- files listed in 'tags', and 'ignorecase' is set or a pattern is used
+ files listed in 'tags', and case is ignored or a pattern is used
instead of a normal tag name, a retry is done with a linear search.
Tags in unsorted tags files, and matches with different case will only
be found in the retry.
If a tag file indicates that it is case-fold sorted, the second,
- linear search can be avoided for the 'ignorecase' case. Use a value
- of '2' in the "!_TAG_FILE_SORTED" line for this. A tag file can be
- case-fold sorted with the -f switch to "sort" in most unices, as in
- the command: "sort -f -o tags tags". For "Exuberant ctags" version
- 5.x or higher (at least 5.5) the --sort=foldcase switch can be used
- for this as well. Note that case must be folded to uppercase for this
- to work.
+ linear search can be avoided when case is ignored. Use a value of '2'
+ in the "!_TAG_FILE_SORTED" line for this. A tag file can be case-fold
+ sorted with the -f switch to "sort" in most unices, as in the command:
+ "sort -f -o tags tags". For "Exuberant ctags" version 5.x or higher
+ (at least 5.5) the --sort=foldcase switch can be used for this as
+ well. Note that case must be folded to uppercase for this to work.
+
+ By default, tag searches are case-sensitive. Case is ignored when
+ 'ignorecase' is set and 'tagcase' is "followic", or when 'tagcase' is
+ "ignore".
When 'tagbsearch' is off, tags searching is slower when a full match
exists, but faster when no full match exists. Tags in unsorted tags
@@ -6455,6 +6351,16 @@ A jump table for the options with a short description can be found at |Q_op|.
This option doesn't affect commands that find all matching tags (e.g.,
command-line completion and ":help").
+ *'tagcase'* *'tc'*
+'tagcase' 'tc' string (default "followic")
+ global or local to buffer |global-local|
+ {not in Vi}
+ This option specifies how case is handled when searching the tags
+ file:
+ followic Follow the 'ignorecase' option
+ ignore Ignore case
+ match Match case
+
*'taglength'* *'tl'*
'taglength' 'tl' number (default 0)
global
@@ -6500,18 +6406,7 @@ A jump table for the options with a short description can be found at |Q_op|.
mapping which should not change the tagstack.
*'term'* *E529* *E530* *E531*
-'term' string (default is $TERM, if that fails:
- in the GUI: "builtin_gui"
- on Mac: "mac-ansi"
- on MS-DOS: "pcterm"
- on Unix: "ansi"
- on Win 32: "win32")
- global
- Name of the terminal. Used for choosing the terminal control
- characters. Environment variables are expanded |:set_env|.
- For example: >
- :set term=$TERM
-< See |termcap|.
+'term' Removed. |vim-differences| {Nvim}
*'termbidi'* *'tbidi'*
*'notermbidi'* *'notbidi'*
@@ -6529,6 +6424,14 @@ A jump table for the options with a short description can be found at |Q_op|.
*'termencoding'* *'tenc'*
'termencoding' 'tenc' Removed. |vim-differences| {Nvim}
+ *'termguicolors'* *'tgc'*
+'termguicolors' 'tgc' boolean (default off)
+ global
+ When on, uses |highlight-guifg| and |highlight-guibg| attributes in
+ the terminal (thus using 24-bit color). Requires a ISO-8613-3
+ compatible terminal.
+ Must be set at startup (in your |init.vim| or |--cmd|).
+
*'terse'* *'noterse'*
'terse' boolean (default off)
global
@@ -6542,8 +6445,10 @@ A jump table for the options with a short description can be found at |Q_op|.
local to buffer
Maximum width of text that is being inserted. A longer line will be
broken after white space to get this width. A zero value disables
- this. 'textwidth' is set to 0 when the 'paste' option is set. When
- 'textwidth' is zero, 'wrapmargin' may be used. See also
+ this.
+ 'textwidth' is set to 0 when the 'paste' option is set and restored
+ when 'paste' is reset.
+ When 'textwidth' is zero, 'wrapmargin' may be used. See also
'formatoptions' and |ins-textwidth|.
When 'formatexpr' is set it will be used to break the line.
@@ -6691,12 +6596,10 @@ A jump table for the options with a short description can be found at |Q_op|.
'ttyscroll' 'tsl' Removed. |vim-differences| {Nvim}
*'ttytype'* *'tty'*
-'ttytype' 'tty' string (default from $TERM)
- global
- Alias for 'term', see above.
+'ttytype' 'tty' Alias for 'term'. Removed. |vim-differences| {Nvim}
- *'undodir'* *'udir'*
-'undodir' 'udir' string (default ".")
+ *'undodir'* *'udir'* *E926*
+'undodir' 'udir' string (default "$XDG_DATA_HOME/nvim/undo")
global
{only when compiled with the |+persistent_undo| feature}
List of directory names for undo files, separated with commas.
@@ -6705,8 +6608,10 @@ A jump table for the options with a short description can be found at |Q_op|.
"file.txt" is ".file.txt.un~".
For other directories the file name is the full path of the edited
file, with path separators replaced with "%".
- When writing: The first directory that exists is used. "." always
- works, no directories after "." will be used for writing.
+ When writing: The first directory that exists is used. "." always
+ works, no directories after "." will be used for writing. If none of
+ the directories exist Neovim will attempt to create last directory in
+ the list.
When reading all entries are tried to find an undo file. The first
undo file that exists is used. When it cannot be read an error is
given, no further entry is used.
@@ -6773,7 +6678,6 @@ A jump table for the options with a short description can be found at |Q_op|.
When 'updatecount' is set from zero to non-zero, swap files are
created for all buffers that have 'swapfile' set. When 'updatecount'
is set to zero, existing swap files are not deleted.
- Also see |'swapsync'|.
This option has no meaning in buffers where |'buftype'| is "nofile"
or "nowrite".
@@ -7077,7 +6981,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*'winaltkeys'* *'wak'*
'winaltkeys' 'wak' string (default "menu")
global
- {only used in Win32, Motif, and GTK}
+ {only used in Win32}
Some GUI versions allow the access to menu entries by using the ALT
key in combination with a character that appears underlined in the
menu. This conflicts with the use of the ALT key for mappings and
@@ -7092,8 +6996,7 @@ A jump table for the options with a short description can be found at |Q_op|.
keys can be mapped.
If the menu is disabled by excluding 'm' from 'guioptions', the ALT
key is never used for the menu.
- This option is not used for <F10>; on Win32 and with GTK <F10> will
- select the menu, unless it has been mapped.
+ This option is not used for <F10>; on Win32.
*'window'* *'wi'*
'window' 'wi' number (default screen height - 1)
@@ -7261,6 +7164,6 @@ A jump table for the options with a short description can be found at |Q_op|.
global
The number of microseconds to wait for each character sent to the
screen. When non-zero, characters are sent to the terminal one by
- one. For MS-DOS pcterm this does not work. For debugging purposes.
+ one. For debugging purposes.
vim:tw=78:ts=8:ft=help:noet:norl:
diff --git a/runtime/doc/os_dos.txt b/runtime/doc/os_dos.txt
deleted file mode 100644
index 1c80f4d7a5..0000000000
--- a/runtime/doc/os_dos.txt
+++ /dev/null
@@ -1,292 +0,0 @@
-*os_dos.txt* For Vim version 7.4. Last change: 2006 Mar 30
-
-
- VIM REFERENCE MANUAL by Bram Moolenaar
-
-
- *dos* *DOS*
-This file documents some particularities of the Win32
-version of Vim. Also see |os_win32.txt|.
-
-1. File locations |dos-locations|
-2. Using backslashes |dos-backslash|
-3. Standard mappings |dos-standard-mappings|
-4. Screen output and colors |dos-colors|
-5. File formats |dos-file-formats|
-6. :cd command |dos-:cd|
-7. Interrupting |dos-CTRL-Break|
-8. Temp files |dos-temp-files|
-9. Shell option default |dos-shell|
-
-==============================================================================
-1. File locations *dos-locations*
-
-If you keep the Vim executable in the directory that contains the help and
-syntax subdirectories, there is no need to do anything special for Vim to
-work. No registry entries or environment variables need to be set. Just make
-sure that the directory is in your search path, or use a shortcut on the
-desktop.
-
-Your vimrc files ("_vimrc" and "_gvimrc") are normally located one directory
-up from the runtime files. If you want to put them somewhere else, set the
-environment variable $VIM to the directory where you keep them. Example: >
- set VIM=C:\user\piet
-Will find "c:\user\piet\_vimrc".
-Note: This would only be needed when the computer is used by several people.
-Otherwise it's simpler to keep your _vimrc file in the default place.
-
-If you move the executable to another location, you also need to set the $VIM
-environment variable. The runtime files will be found in "$VIM/vim{version}".
-Example: >
- set VIM=E:\vim
-Will find the version 5.4 runtime files in "e:\vim\vim54".
-Note: This is _not_ recommended. The preferred way is to keep the executable
-in the runtime directory.
-
-If you move your executable AND want to put your "_vimrc" and "_gvimrc" files
-somewhere else, you must set $VIM to where you vimrc files are, and set
-$VIMRUNTIME to the runtime files. Example: >
- set VIM=C:\usr\piet
- set VIMRUNTIME=E:\vim\vim54
-Will find "c:\user\piet\_vimrc" and the runtime files in "e:\vim\vim54".
-
-See |$VIM| and |$VIMRUNTIME| for more information.
-
-Under Windows 95, you can set $VIM in your C:\autoexec.bat file. For
-example: >
- set VIM=D:\vim
-Under Windows NT, you can set environment variables for each user separately
-under "Start/Settings/Control Panel->System", or through the properties in the
-menu of "My Computer", under the Environment Tab.
-
-==============================================================================
-2. Using backslashes *dos-backslash*
-
-Using backslashes in file names can be a problem. Vi halves the number of
-backslashes for some commands. Vim is a bit more tolerant and does not remove
-backslashes from a file name, so ":e c:\foo\bar" works as expected. But when
-a backslash occurs before a special character (space, comma, backslash, etc.),
-Vim removes the backslash. Use slashes to avoid problems: ":e c:/foo/bar"
-works fine. Vim replaces the slashes with backslashes internally to avoid
-problems with some MS-DOS programs and Win32 programs.
-
-When you prefer to use forward slashes, set the 'shellslash' option. Vim will
-then replace backslashes with forward slashes when expanding file names. This
-is especially useful when using a Unix-like 'shell'.
-
-==============================================================================
-3. Standard mappings *dos-standard-mappings*
-
-The mappings for CTRL-PageUp and CTRL-PageDown have been removed, they now
-jump to the next or previous tab page |<C-PageUp>| |<C-PageDown>|
-
-If you want them to move to the first and last screen line you can use these
-mappings:
-
-key key code Normal/Visual mode Insert mode ~
-CTRL-PageUp <M-N><M-C-D> H <C-O>H
-CTRL-PageDown <M-N>v L$ <C-O>L<C-O>$
-
-Additionally, these keys are available for copy/cut/paste.
-In the Win32 version, they also use the clipboard.
-
-Shift-Insert paste text (from clipboard) *<S-Insert>*
-CTRL-Insert copy Visual text (to clipboard) *<C-Insert>*
-CTRL-Del cut Visual text (to clipboard) *<C-Del>*
-Shift-Del cut Visual text (to clipboard) *<S-Del>*
-
-These mappings accomplish this (Win32 version of Vim):
-
-key key code Normal Visual Insert ~
-Shift-Insert <M-N><M-T> "*P "-d"*P <C-R><C-O>*
-CTRL-Insert <M-N><M-U> "*y
-Shift-Del <M-N><M-W> "*d
-CTRL-Del <M-N><M-X> "*d
-
-Or these mappings (non-Win32 version of Vim):
-
-key key code Normal Visual Insert ~
-Shift-Insert <M-N><M-T> P "-dP <C-R><C-O>"
-CTRL-Insert <M-N><M-U> y
-Shift-Del <M-N><M-W> d
-CTRL-Del <M-N><M-X> d
-
-When the clipboard is supported, the "* register is used.
-
-==============================================================================
-4. Screen output and colors *dos-colors*
-
-The default output method for the screen is to use bios calls. This works
-right away on most systems. You do not need ansi.sys. You can use ":mode" to
-set the current screen mode. See |:mode|.
-
-To change the screen colors that Vim uses, you can use the |:highlight|
-command. The Normal highlight group specifies the colors Vim uses for normal
-text. For example, to get grey text on a blue background: >
- :hi Normal ctermbg=Blue ctermfg=grey
-See |highlight-groups| for other groups that are available.
-
-A DOS console does not support attributes like bold and underlining. You can
-set the color used in five modes with nine terminal options. Note that this
-is not necessary since you can set the color directly with the ":highlight"
-command; these options are for backward compatibility with older Vim versions.
-The |'highlight'| option specifies which of the five modes is used for which
-action. >
-
- :set t_mr=^V^[\|xxm start of invert mode
- :set t_md=^V^[\|xxm start of bold mode
- :set t_me=^V^[\|xxm back to normal text
-
- :set t_so=^V^[\|xxm start of standout mode
- :set t_se=^V^[\|xxm back to normal text
-
- :set t_us=^V^[\|xxm start of underline mode
- :set t_ue=^V^[\|xxm back to normal text
-
- :set t_ZH=^V^[\|xxm start of italics mode
- :set t_ZR=^V^[\|xxm back to normal text
-
-^V is CTRL-V
-^[ is <Esc>
-You must replace xx with a decimal code, which is the foreground color number
-and background color number added together:
-
-COLOR FOREGROUND BACKGROUND ~
-Black 0 0
-DarkBlue 1 16
-DarkGreen 2 32
-DarkCyan 3 48
-DarkRed 4 64
-DarkMagenta 5 80
-Brown, DarkYellow 6 96
-LightGray 7 112
-DarkGray 8 128 *
-Blue, LightBlue 9 144 *
-Green, LightGreen 10 160 *
-Cyan, LightCyan 11 176 *
-Red, LightRed 12 192 *
-Magenta, LightMagenta 13 208 *
-Yellow, LightYellow 14 224 *
-White 15 240 *
-
-* Depending on the display mode, the color codes above 128 may not be
- available, and code 128 will make the text blink.
-
-When you use 0, the color is reset to the one used when you started Vim
-(usually 7, lightgray on black, but you can override this. If you have
-overridden the default colors in a command prompt, you may need to adjust
-some of the highlight colors in your vimrc---see below).
-This is the default for t_me.
-
-The defaults for the various highlight modes are:
- t_mr 112 reverse mode: Black text (0) on LightGray (112)
- t_md 15 bold mode: White text (15) on Black (0)
- t_me 0 normal mode (revert to default)
-
- t_so 31 standout mode: White (15) text on DarkBlue (16)
- t_se 0 standout mode end (revert to default)
-
- t_czh 225 italic mode: DarkBlue text (1) on Yellow (224)
- t_czr 0 italic mode end (revert to default)
-
- t_us 67 underline mode: DarkCyan text (3) on DarkRed (64)
- t_ue 0 underline mode end (revert to default)
-
-These colors were chosen because they also look good when using an inverted
-display, but you can change them to your liking.
-
-Example: >
- :set t_mr=^V^[\|97m " start of invert mode: DarkBlue (1) on Brown (96)
- :set t_md=^V^[\|67m " start of bold mode: DarkCyan (3) on DarkRed (64)
- :set t_me=^V^[\|112m " back to normal mode: Black (0) on LightGray (112)
-
- :set t_so=^V^[\|37m " start of standout mode: DarkMagenta (5) on DarkGreen
- (32)
- :set t_se=^V^[\|112m " back to normal mode: Black (0) on LightGray (112)
-
-==============================================================================
-5. File formats *dos-file-formats*
-
-If the 'fileformat' option is set to "dos" (which is the default), Vim accepts
-a single <NL> or a <CR><NL> pair for end-of-line (<EOL>). When writing a
-file, Vim uses <CR><NL>. Thus, if you edit a file and write it, Vim replaces
-<NL> with <CR><NL>.
-
-If the 'fileformat' option is set to "unix", Vim uses a single <NL> for <EOL>
-and shows <CR> as ^M.
-
-You can use Vim to replace <NL> with <CR><NL> by reading in any mode and
-writing in Dos mode (":se ff=dos").
-You can use Vim to replace <CR><NL> with <NL> by reading in Dos mode and
-writing in Unix mode (":se ff=unix").
-
-Vim sets 'fileformat' automatically when 'fileformats' is not empty (which is
-the default), so you don't really have to worry about what you are doing.
- |'fileformat'| |'fileformats'|
-
-If you want to edit a script file or a binary file, you should set the
-'binary' option before loading the file. Script files and binary files may
-contain single <NL> characters which Vim would replace with <CR><NL>. You can
-set 'binary' automatically by starting Vim with the "-b" (binary) option.
-
-==============================================================================
-6. :cd command *dos-:cd*
-
-The ":cd" command recognizes the drive specifier and changes the current
-drive. Use ":cd c:" to make drive C the active drive. Use ":cd d:\foo" to go
-to the directory "foo" in the root of drive D. Vim also recognizes UNC names
-if the system supports them; e.g., ":cd \\server\share\dir". |:cd|
-
-==============================================================================
-7. Interrupting *dos-CTRL-Break*
-
-Use CTRL-Break instead of CTRL-C to interrupt searches. Vim does not detect
-the CTRL-C until it tries to read a key.
-
-==============================================================================
-8. Temp files *dos-temp-files*
-
-Only for the 16 bit and 32 bit DOS version:
-Vim puts temporary files (for filtering) in the first of these directories
-that exists and in which Vim can create a file:
- $TMP
- $TEMP
- C:\TMP
- C:\TEMP
- current directory
-
-For the Win32 version (both console and GUI):
-Vim uses standard Windows functions to obtain a temporary file name (for
-filtering). The first of these directories that exists and in which Vim can
-create a file is used:
- $TMP
- $TEMP
- current directory
-
-==============================================================================
-9. Shell option default *dos-shell*
-
-The default for the 'sh' ('shell') option is "command.com" on Windows 95 and
-"cmd.exe" on Windows NT. If SHELL is defined, Vim uses SHELL instead, and if
-SHELL is not defined but COMSPEC is, Vim uses COMSPEC. Vim starts external
-commands with "<shell> /c <command_name>". Typing CTRL-Z starts a new command
-subshell. Return to Vim with "exit". |'shell'| |CTRL-Z|
-
-If you are running a third-party shell, you may need to set the
-|'shellcmdflag'| ('shcf') and |'shellquote'| ('shq') or |'shellxquote'|
-('sxq') options. Unfortunately, this also depends on the version of Vim used.
-For example, with the MKS Korn shell or with bash, the values of the options
-on Win32 should be:
-
-'shellcmdflag' -c
-'shellquote' (empty)
-'shellxquote' "
-
-For Win32, this starts the shell as:
- <shell> -c "command name >file"
-
-When starting up, Vim checks for the presence of "sh" anywhere in the 'shell'
-option. If it is present, Vim sets the 'shellcmdflag' and 'shellquote' or
-'shellxquote' options will be set as described above.
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_mac.txt b/runtime/doc/os_mac.txt
deleted file mode 100644
index 3eebb7ef0d..0000000000
--- a/runtime/doc/os_mac.txt
+++ /dev/null
@@ -1,116 +0,0 @@
-*os_mac.txt* For Vim version 7.4. Last change: 2006 Apr 30
-
-
- VIM REFERENCE MANUAL by Bram Moolenaar et al.
-
-
- *mac* *Mac* *macintosh* *Macintosh*
-
-This file documents the particularities of the Macintosh version of Vim.
-
-NOTE: This file is a bit outdated. You might find more useful info here:
- http://macvim.org/
-
-1. Filename Convention |mac-filename|
-2. .vimrc an .vim files |mac-vimfile|
-3. FAQ |mac-faq|
-4. Known Lack |mac-lack|
-5. Mac Bug Report |mac-bug|
-6. Compiling Vim |mac-compile|
-
-There was a Mac port for version 3.0 of Vim. Here are the first few lines
-from the old file:
-
-VIM Release Notes
-Initial Macintosh release, VIM version 3.0
-19 October 1994
-
-Eric Fischer
-<enf1@midway.uchicago.edu>, <eric@jcp.uchicago.edu>, <etaoin@uchicago.edu>
-5759 N. Guilford Ave
-Indianapolis IN 46220 USA
-
-==============================================================================
-1. Filename Convention *mac-filename*
-
-Starting with Vim version 7 you can just use the unix path separators with
-Vim. In order to determine if the specified filename is relative to the
-current folder or absolute (i.e. relative to the "Desktop"), the following
-algorithm is used:
-
- If the path start by a "/", the path is absolute
- If the path start by a ":", the path is relative
- If the path doesn't start by neither a "/" nor ":",
- and a ":" is found before a "/" then the path is absolute
->
- :e /HD/text
- :e HD:text
-< Edit the file "text" of the disk "HD" >
- :e :src:main.c
- :e src/main.c
-< Edit the file "main.c" in the folder "src" in the current folder >
- :e os_mac.c
-< Edit the file "os_mac.c" in the current folder.
-
-You can use the |$VIM| and |$VIMRUNTIME| variable. >
-
- :so $VIMRUNTIME/syntax/syntax.vim
-
-==============================================================================
-2. .vimrc and .vim files *mac-vimfile*
-
-It is recommended to use Unix style line separators for Vim scripts, thus a
-single newline character.
-
-When starting up Vim will load the $VIMRUNTIME/macmap.vim script to define
-default command-key mappings.
-
-On older systems files starting with a dot "." are discouraged, thus the rc
-files are named "vimrc" or "_vimrc" and "gvimrc" or "_gvimrc". These files
-can be in any format (mac, dos or unix).
-
-==============================================================================
-3. Mac FAQ *mac-faq*
-
-On the internet: http://macvim.org/OSX/index.php#FAQ
-
-Q: I can't enter non-ASCII character in Apple Terminal.
-A: Under Window Settings, Emulation, make sure that "Escape non-ASCII
- characters" is not checked.
-
-Q: How do I start the GUI from the command line?
-A: Assuming that Vim.app is located in /Applications:
- open /Applications/Vim.app
- Or:
- /Applications/Vim.app/Contents/MacOS/Vim -g {arguments}
-
-Q: How can I set $PATH to something reasonable when I start Vim.app from the
- GUI or with open?
-A: The following trick works with most shells. Put it in your vimrc file.
- This is included in the system vimrc file included with the binaries
- distributed at macvim.org . >
- let s:path = system("echo echo VIMPATH'${PATH}' | $SHELL -l")
- let $PATH = matchstr(s:path, 'VIMPATH\zs.\{-}\ze\n')
-
-==============================================================================
-4. Mac Lack *mac-lack*
-
-In a terminal CTRL-^ needs to be entered as Shift-Control-6. CTRL-@ as
-Shift-Control-2.
-
-==============================================================================
-5. Mac Bug Report *mac-bug*
-
-When reporting any Mac specific bug or feature change, please use the vim-mac
-maillist |vim-mac|. However, you need to be subscribed. An alternative is to
-send a message to the current MacVim maintainers:
-
- mac@vim.org
-
-==============================================================================
-6. Compiling Vim *mac-compile*
-
-See the file "src/INSTALLmac.txt" that comes with the source files.
-
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_unix.txt b/runtime/doc/os_unix.txt
deleted file mode 100644
index 604fa5827a..0000000000
--- a/runtime/doc/os_unix.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-*os_unix.txt* For Vim version 7.4. Last change: 2005 Mar 29
-
-
- VIM REFERENCE MANUAL by Bram Moolenaar
-
-
- *unix* *Unix*
-This file contains the particularities for the Unix version of Vim.
-
-For compiling Vim on Unix see "INSTALL" and "Makefile" in the src directory.
-
-The default help file name is "/usr/local/lib/vim/help.txt" The files
-"$HOME/.vimrc" and "$HOME/.exrc" are used for configuration. Additionally
-"/usr/local/etc/vimrc" is used first. If "/usr/local/share" exists it is used
-instead of "/usr/local/lib".
-
-Temporary files (for filtering) are put in "/tmp". If you want to place them
-somewhere else, set the environment variable $TMPDIR to the directory you
-prefer.
-
-With wildcard expansion you can use '~' (home directory) and '$'
-(environment variable).
-
- *fork* *spoon*
-For executing external commands fork()/exec() is used when possible, otherwise
-system() is used, which is a bit slower. The output of ":version" includes
-|+fork| when fork()/exec() is used, |+system()| when system() is used. This
-can be changed at compile time.
-
-Because terminal updating under Unix is often slow (e.g. serial line
-terminal, shell window in suntools), the 'showcmd' and 'ruler' options
-are off by default.
-
-When using Vim in an xterm the mouse clicks can be used by Vim by setting
-'mouse' to "a". If there is access to an X-server gui style copy/paste will
-be used and visual feedback will be provided while dragging with the mouse.
-If you then still want the xterm copy/paste with the mouse, press the shift
-key when using the mouse. See |mouse-using|.
-
- *terminal-colors*
-To use colors in Vim you can use the following example (if your terminal
-supports colors, but "T_Co" is empty or zero): >
- :set t_me=^[[0;1;36m " normal mode (undoes t_mr and t_md)
- :set t_mr=^[[0;1;33;44m " reverse (invert) mode
- :set t_md=^[[1;33;41m " bold mode
- :set t_se=^[[1;36;40m " standout end
- :set t_so=^[[1;32;45m " standout mode
- :set t_ue=^[[0;1;36m " underline end
- :set t_us=^[[1;32m " underline mode start
-[the ^[ is an <Esc>, type CTRL-V <Esc> to enter it]
-
-For real color terminals the ":highlight" command can be used.
-
-The file "tools/vim132" is a shell script that can be used to put Vim in 132
-column mode on a vt100 and lookalikes.
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/os_win32.txt b/runtime/doc/os_win32.txt
index 603dbcddce..3c7ca4e36a 100644
--- a/runtime/doc/os_win32.txt
+++ b/runtime/doc/os_win32.txt
@@ -7,17 +7,15 @@
*win32* *Win32* *MS-Windows*
This file documents the idiosyncrasies of the Win32 version of Vim.
-The Win32 version of Vim works on Windows NT, XP, Vista and Windows 7.
+The Win32 version of Vim works on Windows XP, Vista and Windows 7.
There are both console and GUI versions.
The 32 bit version also runs on 64 bit MS-Windows systems.
1. Known problems |win32-problems|
2. Startup |win32-startup|
-3. Restore screen contents |win32-restore|
-4. Using the mouse |win32-mouse|
-5. Running under Windows 3.1 |win32-win3.1|
-6. Win32 mini FAQ |win32-faq|
+3. Using the mouse |win32-mouse|
+4. Win32 mini FAQ |win32-faq|
Additionally, there are a number of common Win32 and DOS items:
File locations |dos-locations|
@@ -34,7 +32,6 @@ Win32 GUI |gui-w32|
Credits:
The Win32 version was written by George V. Reilly <george@reilly.org>.
-The original Windows NT port was done by Roger Knobbe <RogerK@wonderware.com>.
The GUI version was made by George V. Reilly and Robert Webb.
==============================================================================
@@ -79,14 +76,7 @@ make "!xxd" work, as it is in the Tools menu. And it also means that when
executable() returns 1 the executable can actually be executed.
==============================================================================
-3. Restore screen contents *win32-restore*
-
-When 'restorescreen' is set (which is the default), Vim will restore the
-original contents of the console when exiting or when executing external
-commands. If you don't want this, use ":set nors". |'restorescreen'|
-
-==============================================================================
-4. Using the mouse *win32-mouse*
+3. Using the mouse *win32-mouse*
The Win32 version of Vim supports using the mouse. If you have a two-button
mouse, the middle button can be emulated by pressing both left and right
@@ -98,35 +88,7 @@ When the mouse doesn't work, try disabling the "Quick Edit Mode" feature of
the console.
==============================================================================
-5. Running under Windows 3.1 *win32-win3.1*
-
- *win32s* *windows-3.1*
-There is a special version of Gvim that runs under Windows 3.1 and 3.11. You
-need the gvim.exe that was compiled with Visual C++ 4.1.
-
-To run the Win32 version under Windows 3.1, you need to install Win32s. You
-might have it already from another Win32 application which you have installed.
-If Vim doesn't seem to be running properly, get the latest version: 1.30c.
-You can find it at:
-
- http://support.microsoft.com/download/support/mslfiles/pw1118.exe
-
-(Microsoft moved it again, we don't know where it is now :-( ).
-
-The reason for having two versions of gvim.exe is that the Win32s version was
-compiled with VC++ 4.1. This is the last version of VC++ that supports Win32s
-programs. VC++ 5.0 is better, so that one was used for the Win32 version.
-Apart from that, there is no difference between the programs. If you are in a
-mixed environment, you can use the gvim.exe for Win32s on both.
-
-The Win32s version works the same way as the Win32 version under 95/NT. When
-running under Win32s the following differences apply:
-- You cannot use long file names, because Windows 3.1 doesn't support them!
-- When executing an external command, it doesn't return an exit code. After
- doing ":make" you have to do ":cn" yourself.
-
-==============================================================================
-6. Win32 mini FAQ *win32-faq*
+4. Win32 mini FAQ *win32-faq*
Q. How do I change the font?
A. In the GUI version, you can use the 'guifont' option. Example: >
@@ -134,14 +96,6 @@ A. In the GUI version, you can use the 'guifont' option. Example: >
< In the console version, you need to set the font of the console itself.
You cannot do this from within Vim.
-Q. How do I type dead keys on Windows NT?
-A. Dead keys work on NT 3.51. Just type them as you would in any other
- application.
- On NT 4.0, you need to make sure that the default locale (set in the
- Keyboard part of the Control Panel) is the same as the currently active
- locale. Otherwise the NT code will get confused and crash! This is a NT
- 4.0 problem, not really a Vim problem.
-
Q. I'm using Vim to edit a symbolically linked file on a Unix NFS file server.
When I write the file, Vim does not "write through" the symlink. Instead,
it deletes the symbolic link and creates a new file in its place. Why?
@@ -176,28 +130,6 @@ A. Basically what you need is to put a tee program that will copy its input
:set shellpipe=\|\ tee
< to your _vimrc.
-Q. I'm storing files on a remote machine that works with VisionFS, and files
- disappear!
-A. VisionFS can't handle certain dot (.) three letter extension file names.
- SCO declares this behavior required for backwards compatibility with 16bit
- DOS/Windows environments. The two commands below demonstrate the behavior:
->
- echo Hello > file.bat~
- dir > file.bat
-<
- The result is that the "dir" command updates the "file.bat~" file, instead
- of creating a new "file.bat" file. This same behavior is exhibited in Vim
- when editing an existing file named "foo.bat" because the default behavior
- of Vim is to create a temporary file with a '~' character appended to the
- name. When the file is written, it winds up being deleted.
-
- Solution: Add this command to your _vimrc file: >
- :set backupext=.temporary
-
-Q. How do I change the blink rate of the cursor?
-A. You can't! This is a limitation of the NT console. NT 5.0 is reported to
- be able to set the blink rate for all console windows at the same time.
-
*:!start*
Q. How can I run an external command or program asynchronously?
A. When using :! to run an external command, you can run it with "start": >
@@ -240,28 +172,6 @@ A. You have two possible solutions depending on what you want:
< The first command runs notepad minimized and the second one runs it
normally.
-Q. I'm using Win32s, and when I try to run an external command like "make",
- Vim doesn't wait for it to finish! Help!
-A. The problem is that a 32-bit application (Vim) can't get notification from
- Windows that a 16-bit application (your DOS session) has finished. Vim
- includes a work-around for this, but you must set up your DOS commands to
- run in a window, not full-screen. Unfortunately the default when you
- install Windows is full-screen. To change this:
- 1) Start PIF editor (in the Main program group).
- 2) Open the file "_DEFAULT.PIF" in your Windows directory.
- 3) Changes the display option from "Full Screen" to "Windowed".
- 4) Save and exit.
-
- To test, start Vim and type >
- :!dir C:\<CR>".
-< You should see a DOS box window appear briefly with the directory listing.
-
-Q. I use Vim under Win32s and NT. In NT, I can define the console to default to
- 50 lines, so that I get a 80x50 shell when I ':sh'. Can I do the same in
- W3.1x, or am I stuck with 80x25?
-A. Edit SYSTEM.INI and add 'ScreenLines=50' to the [NonWindowsApp] section. DOS
- prompts and external DOS commands will now run in a 50-line window.
-
*windows-icon*
Q. I don't like the Vim icon, can I change it?
A. Yes, place your favorite icon in bitmaps/vim.ico in a directory of
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index 1a76a4749a..5897f756d8 100644
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt* For Vim version 7.4. Last change: 2014 Sep 06
+*pattern.txt* For Vim version 7.4. Last change: 2016 Jan 03
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -59,6 +59,8 @@ explanations are in chapter 27 |usr_27.txt|.
*n*
n Repeat the latest "/" or "?" [count] times.
+ If the cursor doesn't move the search is repeated with
+ count + 1.
|last-pattern|
*N*
@@ -129,7 +131,7 @@ gD Goto global Declaration. When the cursor is on a
*CTRL-C*
CTRL-C Interrupt current (search) command. Use CTRL-Break on
- MS-DOS |dos-CTRL-Break|.
+ Windows |dos-CTRL-Break|.
In Normal mode, any pending command is aborted.
*:noh* *:nohlsearch*
@@ -390,8 +392,8 @@ Use of "\M" makes the pattern after it be interpreted as if 'nomagic' is used.
Use of "\v" means that in the pattern after it all ASCII characters except
'0'-'9', 'a'-'z', 'A'-'Z' and '_' have a special meaning. "very magic"
-Use of "\V" means that in the pattern after it only the backslash has a
-special meaning. "very nomagic"
+Use of "\V" means that in the pattern after it only the backslash and the
+terminating character (/ or ?) has a special meaning. "very nomagic"
Examples:
after: \v \m \M \V matches ~
@@ -399,6 +401,7 @@ after: \v \m \M \V matches ~
$ $ $ \$ matches end-of-line
. . \. \. matches any character
* * \* \* any number of the previous atom
+ ~ ~ \~ \~ latest substitute string
() \(\) \(\) \(\) grouping into an atom
| \| \| \| separating alternatives
\a \a \a \a alphabetic character
@@ -475,6 +478,7 @@ More explanation and examples below, follow the links.
|/\%v| \%23v \%23v in virtual column 23 |/zero-width|
Character classes: */character-classes*
+ magic nomagic matches ~
|/\i| \i \i identifier character (see 'isident' option)
|/\I| \I \I like "\i", but excluding digits
|/\k| \k \k keyword character (see 'iskeyword' option)
@@ -505,6 +509,7 @@ Character classes: */character-classes*
class with end-of-line included
(end of character classes)
+ magic nomagic matches ~
|/\e| \e \e <Esc>
|/\t| \t \t <Tab>
|/\r| \r \r <CR>
@@ -530,6 +535,7 @@ Character classes: */character-classes*
|/\Z| \Z \Z ignore differences in Unicode "combining characters".
Useful when searching voweled Hebrew or Arabic text.
+ magic nomagic matches ~
|/\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"
@@ -1050,7 +1056,10 @@ x A single character, with no special meaning, matches itself
*E769*
When the ']' is not there Vim will not give an error message but
assume no collection is used. Useful to search for '['. However, you
- do get E769 for internal searching.
+ do get E769 for internal searching. And be aware that in a
+ `:substitute` command the whole command becomes the pattern. E.g.
+ ":s/[/x/" searches for "[/x" and replaces it with nothing. It does
+ not search for "[" and replaces it with "x"!
If the sequence begins with "^", it matches any single character NOT
in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'.
@@ -1082,10 +1091,13 @@ x A single character, with no special meaning, matches itself
*[:backspace:]* [:backspace:] the <BS> character
The brackets in character class expressions are additional to the
brackets delimiting a collection. For example, the following is a
- plausible pattern for a UNIX filename: "[-./[:alnum:]_~]\+" That is,
+ plausible pattern for a Unix filename: "[-./[:alnum:]_~]\+" That is,
a list of at least one character, each of which is either '-', '.',
'/', alphabetic, numeric, '_' or '~'.
- These items only work for 8-bit characters.
+ These items only work for 8-bit characters, except [:lower:] and
+ [:upper:] also work for multi-byte characters when using the new
+ regexp engine. In the future these items may work for multi-byte
+ characters.
*/[[=* *[==]*
- An equivalence class. This means that characters are matched that
have almost the same meaning, e.g., when ignoring accents. This
diff --git a/runtime/doc/pi_getscript.txt b/runtime/doc/pi_getscript.txt
deleted file mode 100644
index 628d9b74e5..0000000000
--- a/runtime/doc/pi_getscript.txt
+++ /dev/null
@@ -1,482 +0,0 @@
-*pi_getscript.txt* For Vim version 7.0. Last change: 2013 Nov 29
->
- GETSCRIPT REFERENCE MANUAL by Charles E. Campbell
-<
-Authors: Charles E. Campbell <NdrOchip@ScampbellPfamilyA.Mbiz>
- (remove NOSPAM from the email address)
- *GetLatestVimScripts-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"
- instead of "VIM". Like anything else that's free, getscript and its
- associated files are provided *as is* and comes with no warranty of
- any kind, either expressed or implied. No guarantees of
- merchantability. No guarantees of suitability for any purpose. By
- using this plugin, you agree that in no event will the copyright
- holder be liable for any damages resulting from the use of this
- software. Use at your own risk!
-
-Getscript is a plugin that simplifies retrieval of the latest versions of the
-scripts that you yourself use! Typing |:GLVS| will invoke getscript; it will
-then use the <GetLatestVimScripts.dat> (see |GetLatestVimScripts_dat|) file to
-get the latest versions of scripts listed therein from http://vim.sf.net/.
-
-==============================================================================
-1. Contents *glvs-contents* *glvs* *getscript*
- *GetLatestVimScripts*
-
- 1. Contents........................................: |glvs-contents|
- 2. GetLatestVimScripts -- Getting Started..........: |glvs-install|
- 3. GetLatestVimScripts Usage.......................: |glvs-usage|
- 4. GetLatestVimScripts Data File...................: |glvs-data|
- 5. GetLatestVimScripts Friendly Plugins............: |glvs-plugins|
- 6. GetLatestVimScripts AutoInstall.................: |glvs-autoinstall|
- 7. GetLatestViMScripts Options.....................: |glvs-options|
- 8. GetLatestVimScripts Algorithm...................: |glvs-alg|
- 9. GetLatestVimScripts History.....................: |glvs-hist|
-
-
-==============================================================================
-2. GetLatestVimScripts -- Getting Started *getscript-start*
- *getlatestvimscripts-install*
-
- VERSION FROM VIM DISTRIBUTION *glvs-dist-install*
-
-Vim 7.0 does not include the GetLatestVimScripts.dist file which
-serves as an example and a template. So, you'll need to create
-your own! See |GetLatestVimScripts_dat|.
-
- VERSION FROM VIM SF NET *glvs-install*
-
-NOTE: The last step, that of renaming/moving the GetLatestVimScripts.dist
-file, is for those who have just downloaded GetLatestVimScripts.tar.bz2 for
-the first time.
-
-The GetLatestVimScripts.dist file serves as an example and a template for your
-own personal list. Feel free to remove all the scripts mentioned within it;
-the "important" part of it is the first two lines.
-
-Your computer needs to have wget or curl for GetLatestVimScripts to do its work.
-
- 1. if compressed: gunzip getscript.vba.gz
- 2. Unix:
- vim getscript.vba
- :so %
- :q
- cd ~/.vim/GetLatest
- mv GetLatestVimScripts.dist GetLatestVimScripts.dat
- (edit GetLatestVimScripts.dat to install your own personal
- list of desired plugins -- see |GetLatestVimScripts_dat|)
-
- 3. Windows:
- vim getscript.vba
- :so %
- :q
- cd **path-to-vimfiles**/GetLatest
- mv GetLatestVimScripts.dist GetLatestVimScripts.dat
- (edit GetLatestVimScripts.dat to install your own personal
- list of desired plugins -- see |GetLatestVimScripts_dat|)
-
-
-==============================================================================
-3. GetLatestVimScripts Usage *glvs-usage* *:GLVS*
-
-Unless it has been defined elsewhere, >
-
- :GLVS
-
-will invoke GetLatestVimScripts(). If some other plugin has defined that
-command, then you may type
->
- :GetLatestVimScripts
-<
-The script will attempt to update and, if permitted, will automatically
-install scripts from http://vim.sourceforge.net/. To do so it will peruse a
-file,
->
- .vim/GetLatest/GetLatestVimScripts.dat (unix)
-<
-or >
- ..wherever..\vimfiles\GetLatest\GetLatestVimScripts.dat (windows)
-(see |glvs-data|), and examine plugins in your [.vim|vimfiles]/plugin
-directory (see |glvs-plugins|).
-
-Scripts which have been downloaded will appear in the
-~/.vim/GetLatest (unix) or ..wherever..\vimfiles\GetLatest (windows)
-subdirectory. GetLatestVimScripts will attempt to automatically
-install them if you have the following line in your <.vimrc>: >
-
- let g:GetLatestVimScripts_allowautoinstall=1
-
-The <GetLatestVimScripts.dat> file will be automatically be updated to
-reflect the latest version of script(s) so downloaded.
-(also see |glvs-options|)
-
-
-==============================================================================
-4. GetLatestVimScripts Data File *getscript-data* *glvs-data*
- *:GetLatestVimScripts_dat*
-The data file <GetLatestVimScripts.dat> must have for its first two lines
-the following text:
->
- ScriptID SourceID Filename
- --------------------------
-<
-Following those two lines are three columns; the first two are numeric
-followed by a text column. The GetLatest/GetLatestVimScripts.dist file
-contains an example of such a data file. Anything following a #... is
-ignored, so you may embed comments in the file.
-
-The first number on each line gives the script's ScriptID. When you're about
-to use a web browser to look at scripts on http://vim.sf.net/, just before you
-click on the script's link, you'll see a line resembling
-
- http://vim.sourceforge.net/scripts/script.php?script_id=40
-
-The "40" happens to be a ScriptID that GetLatestVimScripts needs to
-download the associated page, and is assigned by vim.sf.net itself
-during initial uploading of the plugin.
-
-The second number on each line gives the script's SourceID. The SourceID
-records the count of uploaded scripts as determined by vim.sf.net; hence it
-serves to indicate "when" a script was uploaded. Setting the SourceID to 1
-insures that GetLatestVimScripts will assume that the script it has is
-out-of-date.
-
-The SourceID is extracted by GetLatestVimScripts from the script's page on
-vim.sf.net; whenever it is greater than the one stored in the
-GetLatestVimScripts.dat file, the script will be downloaded
-(see |GetLatestVimScripts_dat|).
-
-If your script's author has included a special comment line in his/her plugin,
-the plugin itself will be used by GetLatestVimScripts to build your
-<GetLatestVimScripts.dat> file, including any dependencies on other scripts it
-may have. As an example, consider: >
-
- " GetLatestVimScripts: 884 1 :AutoInstall: AutoAlign.vim
-
-This comment line tells getscript.vim to check vimscript #884 and that the
-script is automatically installable. Getscript will also use this line to
-help build the GetLatestVimScripts.dat file, by including a line such as: >
-
- 884 1 :AutoInstall: AutoAlign.vim
-<
-assuming that such a line isn't already in GetLatestVimScripts.dat file.
-See |glvs-plugins| for more. Thus, GetLatestVimScripts thus provides a
-comprehensive ability to keep your plugins up-to-date!
-
-In summary:
-
- * Optionally tell getscript that it is allowed to build/append a
- GetLatestVimScripts.dat file based upon already installed plugins: >
- let g:GetLatestVimScripts_allowautoinstall=1
-<
- * A line such as >
- " GetLatestVimScripts: 884 1 :AutoInstall: AutoAlign.vim
-< in an already-downloaded plugin constitutes the concurrence of the
- plugin author that getscript may do AutoInstall. Not all plugins
- may be AutoInstall-able, and the plugin's author is best situated
- to know whether or not his/her plugin will AutoInstall properly.
-
- * A line such as >
- 884 1 :AutoInstall: AutoAlign.vim
-< in your GetLatestVimScripts.dat file constitutes your permission
- to getscript to do AutoInstall. AutoInstall requires both your
- and the plugin author's permission. See |GetLatestVimScripts_dat|.
-
-
- *GetLatestVimScripts_dat*
-As an example of a <GetLatestVimScripts.dat> file:
->
- ScriptID SourceID Filename
- --------------------------
- 294 1 :AutoInstall: Align.vim
- 120 2 Decho.vim
- 40 3 DrawIt.tar.gz
- 451 4 EasyAccents.vim
- 195 5 engspchk.vim
- 642 6 GetLatestVimScripts.vim
- 489 7 Manpageview.vim
-<
-Note: the first two lines are required, but essentially act as comments.
-
-
-==============================================================================
-5. GetLatestVimScripts Friendly Plugins *getscript-plugins* *glvs-plugins*
-
- (this section is for plugin authors)~
-
-If a plugin author includes the following comment anywhere in their plugin,
-GetLatestVimScripts will find it and use it to automatically build the user's
-GetLatestVimScripts.dat files:
->
- src_id
- v
- " GetLatestVimScripts: ### ### yourscriptname
- ^
- scriptid
-<
-As an author, you should include such a line in to refer to your own script
-plus any additional lines describing any plugin dependencies it may have.
-Same format, of course!
-
-If your command is auto-installable (see |glvs-autoinstall|), and most scripts
-are, then you may include :AutoInstall: just before "yourscriptname":
->
- src_id
- v
- " GetLatestVimScripts: ### ### :AutoInstall: yourscriptname
- ^
- scriptid
-<
-NOTE: The :AutoInstall: feature requires both the plugin author's and~
- the user's permission to operate!~
-
-GetLatestVimScripts commands for those scripts are then appended, if not
-already present, to the user's GetLatest/GetLatestVimScripts.dat file. It is
-a relatively painless way to automate the acquisition of any scripts your
-plugins depend upon.
-
-Now, as an author, you probably don't want GetLatestVimScripts to download
-your own scripts atop your own copy, thereby overwriting your not-yet-released
-hard work. GetLatestVimScripts provides a solution for this: put
->
- 0 0 yourscriptname
-<
-into your <GetLatestVimScripts.dat> file and GetLatestVimScripts will skip
-examining the "yourscriptname" scripts for those GetLatestVimScripts comment
-lines. As a result, those lines won't be inadvertently installed into your
-<GetLatestVimScripts.dat> file and subsequently used to download your own
-scripts. This is especially important to do if you've included the
-:AutoInstall: option.
-
-Be certain to use the same "yourscriptname" in the "0 0 yourscriptname" line
-as you've used in your GetLatestVimScripts comment!
-
-
-==============================================================================
-6. GetLatestVimScripts AutoInstall *getscript-autoinstall*
- *glvs-autoinstall*
-
-GetLatestVimScripts now supports "AutoInstall". Not all scripts are
-supportive of auto-install, as they may have special things you need to do to
-install them (please refer to the script's "install" directions). On the
-other hand, most scripts will be auto-installable.
-
-To let GetLatestVimScripts do an autoinstall, the data file's comment field
-should begin with (surrounding blanks are ignored): >
-
- :AutoInstall:
-<
-Both colons are needed, and it should begin the comment (yourscriptname)
-field.
-
-One may prevent any autoinstalling by putting the following line in your
-<.vimrc>: >
-
- let g:GetLatestVimScripts_allowautoinstall= 0
-<
-With :AutoInstall: enabled, as it is by default, files which end with
-
- ---.tar.bz2 : decompressed & untarred in .vim/ directory
- ---.vba.bz2 : decompressed in .vim/ directory, then vimball handles it
- ---.vim.bz2 : decompressed & moved into .vim/plugin directory
- ---.tar.gz : decompressed & untarred in .vim/ directory
- ---.vba.gz : decompressed in .vim/ directory, then vimball handles it
- ---.vim.gz : decompressed & moved into .vim/plugin directory
- ---.vba : unzipped in .vim/ directory
- ---.vim : moved to .vim/plugin directory
- ---.zip : unzipped in .vim/ directory
-
-and which merely need to have their components placed by the untar/gunzip or
-move-to-plugin-directory process should be auto-installable. Vimballs, of
-course, should always be auto-installable.
-
-When is a script not auto-installable? Let me give an example:
-
- .vim/after/syntax/blockhl.vim
-
-The <blockhl.vim> script provides block highlighting for C/C++ programs; it is
-available at:
-
- http://vim.sourceforge.net/scripts/script.php?script_id=104
-
-Currently, vim's after/syntax only supports by-filetype scripts (in
-blockhl.vim's case, that's after/syntax/c.vim). Hence, auto-install would
-possibly overwrite the current user's after/syntax/c.vim file.
-
-In my own case, I use <aftersyntax.vim> (renamed to after/syntax/c.vim) to
-allow a after/syntax/c/ directory:
-
- http://vim.sourceforge.net/scripts/script.php?script_id=1023
-
-The script allows multiple syntax files to exist separately in the
-after/syntax/c subdirectory. I can't bundle aftersyntax.vim in and build an
-appropriate tarball for auto-install because of the potential for the
-after/syntax/c.vim contained in it to overwrite a user's c.vim.
-
-
-==============================================================================
-7. GetLatestVimScripts Options *glvs-options*
->
- g:GetLatestVimScripts_wget
-< default= "wget"
- This variable holds the name of the command for obtaining
- scripts.
->
- g:GetLatestVimScripts_options
-< default= "-q -O"
- This variable holds the options to be used with the
- g:GetLatestVimScripts_wget command.
->
- g:GetLatestVimScripts_allowautoinstall
-< default= 1
- This variable indicates whether GetLatestVimScripts is allowed
- to attempt to automatically install scripts. Furthermore, the
- plugin author has to have explicitly indicated that his/her
- plugin is automatically installable (via the :AutoInstall:
- keyword in the GetLatestVimScripts comment line).
->
- g:GetLatestVimScripts_autoinstalldir
-< default= $HOME/.vim (linux)
- 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*
-
-The Vim sourceforge page dynamically creates a page by keying off of the
-so-called script-id. Within the webpage of
-
- http://vim.sourceforge.net/scripts/script.php?script_id=40
-
-is a line specifying the latest source-id (src_id). The source identifier
-numbers are always increasing, hence if the src_id is greater than the one
-recorded for the script in GetLatestVimScripts then it's time to download a
-newer copy of that script.
-
-GetLatestVimScripts will then download the script and update its internal
-database of script ids, source ids, and scriptnames.
-
-The AutoInstall process will:
-
- Move the file from GetLatest/ to the following directory
- Unix : $HOME/.vim
- Windows: $HOME\vimfiles
- if the downloaded file ends with ".bz2"
- bunzip2 it
- else if the downloaded file ends with ".gz"
- gunzip it
- if the resulting file ends with ".zip"
- unzip it
- else if the resulting file ends with ".tar"
- tar -oxvf it
- else if the resulting file ends with ".vim"
- move it to the plugin subdirectory
-
-
-==============================================================================
-9. GetLatestVimScripts History *getscript-history* *glvs-hist* {{{1
-
-v36 Apr 22, 2013 : * (glts) suggested use of plugin/**/*.vim instead of
- plugin/*.vim in globpath() call.
- * (Andy Wokula) got warning message when setting
- g:loaded_getscriptPlugin
-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
-v32 Jun 19, 2010 : * (Jan Steffens) added support for xz compression
-v31 Jun 29, 2008 : * (Bill McCarthy) fixed having hls enabled with getscript
- * (David Schaefer) the acd option interferes with vimballs
- Solution: bypass the acd option
-v30 Jun 13, 2008 : * GLVS now checks for existence of fnameescape() and will
- issue an error message if it is not supported
-v29 Jan 07, 2008 : * Bram M pointed out that cpo is a global option and that
- getscriptPlugin.vim was setting it but not restoring it.
-v28 Jan 02, 2008 : * improved shell quoting character handling, cygwin
- interface, register-a bypass
- Oct 29, 2007 * Bill McCarthy suggested a change to getscript that avoids
- creating pop-up windows
-v24 Apr 16, 2007 : * removed save&restore of the fo option during script
- loading
-v23 Nov 03, 2006 : * ignores comments (#...)
- * handles vimballs
-v22 Oct 13, 2006 : * supports automatic use of curl if wget is not
- available
-v21 May 01, 2006 : * now takes advantage of autoloading.
-v20 Dec 23, 2005 : * Eric Haarbauer found&fixed a bug with unzip use;
- unzip needs the -o flag to overwrite.
-v19 Nov 28, 2005 : * v18's GetLatestVimScript line accessed the wrong
- script! Fixed.
-v18 Mar 21, 2005 : * bugfix to automatic database construction
- * bugfix - nowrapscan caused an error
- (tnx to David Green for the fix)
- Apr 01, 2005 * if shell is bash, "mv" instead of "ren" used in
- :AutoInstall:s, even though its o/s is windows
- Apr 01, 2005 * when downloading errors occurred, GLVS was
- terminating early. It now just goes on to trying
- the next script (after trying three times to
- download a script description page)
- Apr 20, 2005 * bugfix - when a failure to download occurred,
- GetLatestVimScripts would stop early and claim that
- everything was current. Fixed.
-v17 Aug 25, 2004 : * g:GetLatestVimScripts_allowautoinstall, which
- defaults to 1, can be used to prevent all
- :AutoInstall:
-v16 Aug 25, 2004 : * made execution of bunzip2/gunzip/tar/zip silent
- * fixed bug with :AutoInstall: use of helptags
-v15 Aug 24, 2004 : * bugfix: the "0 0 comment" download prevention wasn't
- always preventing downloads (just usually). Fixed.
-v14 Aug 24, 2004 : * bugfix -- helptags was using dotvim, rather than
- s:dotvim. Fixed.
-v13 Aug 23, 2004 : * will skip downloading a file if its scriptid or srcid
- is zero. Useful for script authors; that way their
- own GetLatestVimScripts activity won't overwrite
- their scripts.
-v12 Aug 23, 2004 : * bugfix - a "return" got left in the distribution that
- was intended only for testing. Removed, now works.
- * :AutoInstall: implemented
-v11 Aug 20, 2004 : * GetLatestVimScripts is now a plugin:
- * :GetLatestVimScripts command
- * (runtimepath)/GetLatest/GetLatestVimScripts.dat
- now holds scripts that need updating
-v10 Apr 19, 2004 : * moved history from script to doc
-v9 Jan 23, 2004 : windows (win32/win16/win95) will use
- double quotes ("") whereas other systems will use
- single quotes ('') around the urls in calls via wget
-v8 Dec 01, 2003 : makes three tries at downloading
-v7 Sep 02, 2003 : added error messages if "Click on..." or "src_id="
- not found in downloaded webpage
- Uses t_ti, t_te, and rs to make progress visible
-v6 Aug 06, 2003 : final status messages now display summary of work
- ( "Downloaded someqty scripts" or
- "Everything was current")
- Now GetLatestVimScripts is careful about downloading
- GetLatestVimScripts.vim itself!
- (goes to <NEW_GetLatestVimScripts.vim>)
-v5 Aug 04, 2003 : missing an endif near bottom
-v4 Jun 17, 2003 : redraw! just before each "considering" message
-v3 May 27, 2003 : Protects downloaded files from errant shell
- expansions with single quotes: '...'
-v2 May 14, 2003 : extracts name of item to be obtained from the
- script file. Uses it instead of comment field
- for output filename; comment is used in the
- "considering..." line and is now just a comment!
- * Fixed a bug: a string-of-numbers is not the
- same as a number, so I added zero to them
- and they became numbers. Fixes comparison.
-
-==============================================================================
-vim:tw=78:ts=8:ft=help:fdm=marker
diff --git a/runtime/doc/pi_msgpack.txt b/runtime/doc/pi_msgpack.txt
new file mode 100644
index 0000000000..95d6ff7467
--- /dev/null
+++ b/runtime/doc/pi_msgpack.txt
@@ -0,0 +1,139 @@
+*pi_msgpack.txt* For NeoVim version 0.1.
+
+Author: Nikolay Pavlov <kp-pav@yandex.ru>
+Copyright: (c) 2015 by Nikolay Pavlov
+
+The Apache license applies to the files in this package, including
+runtime/autoload/msgpack.vim, runtime/doc/pi_msgpack.txt and
+test/functional/plugin/msgpack_spec.lua. Like anything else that's free,
+msgpack.vim and its associated files are provided *as is* and comes with no
+warranty of any kind, either expressed or implied. No guarantees of
+merchantability. No guarantees of suitability for any purpose. By using this
+plugin, you agree that in no event will the copyright holder be liable for any
+damages resulting from the use of this software. Use at your own risk!
+
+==============================================================================
+1. Contents *msgpack.vim-contents*
+
+ 1. Contents..............................: |msgpack.vim-contents|
+ 2. Msgpack.vim introduction..............: |msgpack.vim-intro|
+ 3. Msgpack.vim manual....................: |msgpack.vim-manual|
+ Function arguments....................: |msgpack.vim-arguments|
+ msgpack#is_int function...............: |msgpack#is_int()|
+ msgpack#is_uint function..............: |msgpack#is_uint()|
+ msgpack#strftime function.............: |msgpack#strftime()|
+ msgpack#strptime function.............: |msgpack#strptime()|
+ msgpack#int_dict_to_str function......: |msgpack#int_dict_to_str()|
+ msgpack#special_type function.........: |msgpack#special_type()|
+ msgpack#type function.................: |msgpack#type()|
+ msgpack#deepcopy function.............: |msgpack#deepcopy()|
+ msgpack#string function...............: |msgpack#string()|
+ msgpack#eval function.................: |msgpack#eval()|
+ msgpack#equal function................: |msgpack#equal()|
+
+
+==============================================================================
+2. Msgpack.vim introduction *msgpack.vim-intro*
+
+This plugin contains utility functions to be used in conjunction with
+|msgpackdump()| and |msgpackparse()| functions.
+
+==============================================================================
+3. Msgpack.vim manual *msgpack.vim-manual*
+
+FUNCTION ARGUMENTS *msgpack.vim-arguments*
+
+Disambiguation of arguments described below. Note: if e.g. function is listed
+as accepting |{msgpack-integer}| (or anything else) it means that function
+does not check whether argument matches its description.
+
+*{msgpack-value}* Either |msgpack-special-dict| or a regular value, but
+ not function reference.
+*{msgpack-integer}* Any value for which |msgpack#type| will return
+ "integer".
+*{msgpack-special-int}* |msgpack-special-dict| representing integer.
+
+msgpack#is_int({msgpack-value}) *msgpack#is_int()*
+ Returns 1 if given {msgpack-value} is integer value, 0 otherwise.
+
+msgpack#is_uint({msgpack-value}) *msgpack#is_uint()*
+ Returns 1 if given {msgpack-value} is integer value greater or equal
+ to zero, 0 otherwise.
+
+ *msgpack#strftime*
+msgpack#strftime({format}, {msgpack-integer}) *msgpack#strftime()*
+ Same as |strftime()|, but second argument may be
+ |msgpack-special-dict|. Requires |+python| or |+python3| to really
+ work with |msgpack-special-dict|s.
+
+ *msgpack#strptime*
+msgpack#strptime({format}, {time}) *msgpack#strptime()*
+ Reverse of |msgpack#strptime()|: for any time and format
+ |msgpack#equal|( |msgpack#strptime|(format, |msgpack#strftime|(format,
+ time)), time) be true. Requires |+python| or |+python3|, without it
+ only supports non-|msgpack-special-dict| nonnegative times and format
+ equal to `%Y-%m-%dT%H:%M:%S`.
+
+msgpack#int_dict_to_str({msgpack-special-int}) *msgpack#int_dict_to_str()*
+ Function which converts |msgpack-special-dict| integer value to
+ a hexadecimal value like 0x1234567890ABCDEF (always returns exactly 16
+ hexadecimal digits).
+
+msgpack#special_type({msgpack-value}) *msgpack#special_type()*
+ Returns zero if {msgpack-value} is not |msgpack-special-dict|. If it
+ is it returns name of the key in |v:msgpack_types| which represents
+ {msgpack-value} type.
+
+msgpack#type({msgpack-value}) *msgpack#type()*
+ Returns name of the key in |v:msgpack_types| that represents
+ {msgpack-value} type. Never returns zero: this function returns
+ msgpack type which will be dumped by |msgpackdump()| should it receive
+ a list with singe {msgpack-value} as input.
+
+msgpack#deepcopy({msgpack-value}) *msgpack#deepcopy()*
+ Like |deepcopy()|, but works correctly with |msgpack-special-dict|
+ values. Plain |deepcopy()| will destroy all types in
+ |msgpack-special-dict| values because it will copy _TYPE key values,
+ while they should be preserved.
+
+msgpack#string({msgpack-value}) *msgpack#string()*
+ Like |string()|, but saves information about msgpack types. Values
+ dumped by msgpack#string may be read back by |msgpack#eval()|.
+ Returns is the following:
+
+ - Dictionaries are dumped as "{key1: value1, key2: value2}". Note:
+ msgpack allows any values in keys, so with some
+ |msgpack-special-dict| values |msgpack#string()| may produce even
+ "{{1: 2}: 3, [4]: 5}".
+ - Lists are dumped as "[value1, value2]".
+ - Strings are dumped as
+ 1. `"abc"`: binary string.
+ 2. `="abc"`: string.
+ 3. `+(10)"ext"`: extension strings (10 may be replaced with any
+ 8-bit signed integer).
+ Inside strings the following escape sequences may be present: "\0"
+ (represents NUL byte), "\n" (represents line feed) and "\""
+ (represents double quote).
+ - Floating-point and integer values are dumped using |string()| or
+ |msgpack#int_dict_to_str()|.
+ - Booleans are dumped as "TRUE" or "FALSE".
+ - Nil values are dumped as "NIL".
+
+msgpack#eval({string}, {dict}) *msgpack#eval()*
+ Transforms string created by |msgpack#string()| into a value suitable
+ for |msgpackdump()|. Second argument allows adding special values
+ that start with head characters (|/\h|) and contain only word
+ characters (|/\w|). Built-in special values are "TRUE", "FALSE",
+ "NIL", "nan" and "inf" and they cannot be overridden. Map values are
+ always evaluated to |msgpack-special-dict| values, as well as
+ hexadecimal digits. When evaluating maps order of keys is preserved.
+
+ *msgpack#equal*
+msgpack#equal({msgpack-value}, {msgpack-value}) *msgpack#equal()*
+ Returns 1 if given values are equal, 0 otherwise. When comparing
+ msgpack map values order of keys is ignored. Comparing
+ |msgpack-special-dict| with equivalent non-special-dict value
+ evaluates to 1.
+
+==============================================================================
+vim:tw=78:ts=8:ft=help:fdm=marker
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index 7f5825ba25..1705010ff2 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt* For Vim version 7.4. Last change: 2015 Jan 05
+*pi_netrw.txt* For Vim version 7.4. Last change: 2015 Oct 31
------------------------------------------------
NETRW REFERENCE MANUAL by Charles E. Campbell
@@ -365,7 +365,12 @@ settings are described below, in |netrw-browser-options|, and in
fun! MyFuncRef()
endfun
let g:Netrw_funcref= function("MyFuncRef")
+
<
+ *g:Netrw_UserMaps* specifies a function or |List| of functions which can
+ be used to set up user-specified maps and functionality.
+ See |netrw-usermaps|
+
*g:netrw_ftp* if it doesn't exist, use default ftp
=0 use default ftp (uid password)
=1 use alternate ftp method (user uid password)
@@ -1062,9 +1067,10 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
< <F1> Causes Netrw to issue help
<cr> Netrw will enter the directory or read the file |netrw-cr|
<del> Netrw will attempt to remove the file/directory |netrw-del|
- <c-h> Edit file hiding list |netrw-ctrl-h|
- <c-l> Causes Netrw to refresh the directory listing |netrw-ctrl-l|
- <c-r> Browse using a gvim server |netrw-ctrl-r|
+ <c-h> Edit file hiding list |netrw-ctrl-h|
+ <c-l> Causes Netrw to refresh the directory listing |netrw-ctrl-l|
+ <c-r> Browse using a gvim server |netrw-ctrl-r|
+ <c-tab> Shrink/expand a netrw/explore window |netrw-c-tab|
- Makes Netrw go up one directory |netrw--|
a Toggles between normal display, |netrw-a|
hiding (suppress display of files matching g:netrw_list_hide)
@@ -1077,6 +1083,7 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
gd Force treatment as directory |netrw-gd|
gf Force treatment as file |netrw-gf|
gh Quick hide/unhide of dot-files |netrw-gh|
+ gn Make top of tree the directory below the cursor |netrw-gn|
i Cycle between thin, long, wide, and tree listings |netrw-i|
mb Bookmark current directory |netrw-mb|
mc Copy marked files to marked-file target directory |netrw-mc|
@@ -1105,7 +1112,7 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
qf Display information on file |netrw-qf|
qF Mark files using a quickfix list |netrw-qF|
r Reverse sorting order |netrw-r|
- R Rename the designed file(s)/directory(ies) |netrw-R|
+ R Rename the designated file(s)/directory(ies) |netrw-R|
s Select sorting style: by name, time, or file size |netrw-s|
S Specify suffix priority for name-sorting |netrw-S|
t Enter the file/directory under the cursor in a new tab|netrw-t|
@@ -1174,10 +1181,10 @@ Addtionally, one may use :NetrwMB to bookmark files or directories. >
< No bang: enters files/directories into Netrw's bookmark system
No argument and in netrw buffer:
- if there are marked files: bookmark marked files
- otherwise : bookmark file/directory under cursor
+ if there are marked files : bookmark marked files
+ otherwise : bookmark file/directory under cursor
No argument and not in netrw buffer: bookmarks current open file
- Has arguments: globs them individually and bookmarks them
+ Has arguments : |glob()|s each arg and bookmarks them
With bang: deletes files/directories from Netrw's bookmark system
@@ -1394,8 +1401,8 @@ list (unless |g:netrw_dirhistmax| is zero; by default, it's ten). With the
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.
+For your convenience, qb (see |netrw-qb|) lists the history number which may
+be used in that count.
*.netrwhist*
See |g:netrw_dirhistmax| for how to control the quantity of history stack
@@ -1412,7 +1419,7 @@ CHANGING TO A SUCCESSOR DIRECTORY *netrw-U* *netrw-downdir* {{{2
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|)
+qb 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.
@@ -1420,7 +1427,7 @@ See |g:netrw_dirhistmax| for how to control the quantity of history stack
slots.
-CHANGING TREE TOP *netrw-ntree* *:Ntree* {{{2
+CHANGING TREE TOP *netrw-ntree* *:Ntree* *netrw-gn* {{{2
One may specify a new tree top for tree listings using >
@@ -1430,14 +1437,18 @@ Without a "dirname", the current line is used (and any leading depth
information is elided).
With a "dirname", the specified directory name is used.
+The "gn" map will take the word below the cursor and use that for
+changing the top of the tree listing.
+
NETRW CLEAN *netrw-clean* *:NetrwClean* {{{2
-With :NetrwClean one may easily remove netrw from one's home directory;
+With NetrwClean one may easily remove netrw from one's home directory;
more precisely, from the first directory on your |'runtimepath'|.
-With :NetrwClean!, netrw will remove netrw from all directories on your
-|'runtimepath'|.
+With NetrwClean!, netrw will attempt to remove netrw from all directories on
+your |'runtimepath'|. Of course, you have to have write/delete permissions
+correct to do this.
With either form of the command, netrw will first ask for confirmation
that the removal is in fact what you want to do. If netrw doesn't have
@@ -1454,6 +1465,7 @@ operating system). Netrw allows one to invoke such special handlers by: >
* when Exploring, hit the "x" key
* when editing, hit gx with the cursor atop the special filename
< (latter not available if the |g:netrw_nogx| variable exists)
+
Netrw determines which special handler by the following method:
* if |g:netrw_browsex_viewer| exists, then it will be used to attempt to
@@ -1629,19 +1641,23 @@ DIRECTORY EXPLORATION COMMANDS {{{2
of the current tab. It will open a netrw window on the current
directory if [dir] is omitted; a :Lexplore [dir] will show the
specified directory in the left-hand side browser display no matter
- from which window the command is issued. By default, :Lexplore will
- change an uninitialized |g:netrw_chgwin| to 2; edits will thus
- preferentially be made in window#2.
- The [N] specifies a |g:netrw_winsize| just for the new :Lexplore
+ from which window the command is issued.
+
+ By default, :Lexplore will change an uninitialized |g:netrw_chgwin|
+ to 2; edits will thus preferentially be made in window#2.
+
+ The [N] specifies a |g:netrw_winsize| just for the new :Lexplore
window.
- Those who like this method often also like tree style displays;
+
+ Those who like this method often also often like tree style displays;
see |g:netrw_liststyle|.
- Also see: |netrw-C| |g:netrw_chgwin| |g:netrw_winsize|
- |netrw-p| |netrw-P| |g:netrw_browse_split|
+ Also see: |netrw-C| |g:netrw_browse_split| |g:netrw_wiw|
+ |netrw-p| |netrw-P| |g:netrw_chgwin|
+ |netrw-c-tab| |g:netrw_winsize|
:[N]Lexplore! is like :Lexplore, except that the full-height Explorer window
- will open on the right hand side, and an uninitialized |g:netrw_chgwin|
+ will open on the right hand side and an uninitialized |g:netrw_chgwin|
will be set to 1.
*netrw-:Sexplore*
@@ -2125,19 +2141,18 @@ is unlikely to be fixed.
UNMARKING FILES *netrw-mF* {{{2
- (also see |netrw-mf|)
+ (also see |netrw-mf|, |netrw-mu|)
-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.
+The "mF" command will unmark all files in the current buffer. One may also use
+mf (|netrw-mf|) on a specific, already marked, file to unmark just that file.
MARKING FILES BY QUICKFIX LIST *netrw-qF* {{{2
(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|.
+One may convert |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
@@ -2155,14 +2170,17 @@ MARKED FILES, ARBITRARY VIM COMMAND *netrw-mv* {{{2
(See |netrw-mf| and |netrw-mr| for how to mark files)
(uses the local marked-file list)
-The "mv" map causes netrw execute an arbitrary vim command on each file
-on the local marked file list, individually:
+The "mv" map causes netrw to execute an arbitrary vim command on each file on
+the local marked file list, individually:
* 1split
* sil! keepalt e file
* run vim command
* sil! keepalt wq!
+A prompt, "Enter vim command: ", will be issued to elicit the vim command
+you wish used.
+
MARKED FILES, ARBITRARY SHELL COMMAND *netrw-mx* {{{2
(See |netrw-mf| and |netrw-mr| for how to mark files)
@@ -2194,13 +2212,13 @@ command to be applied to all marked files on the global marked file list. The
command files
-It is useful, for example, to select files and make a tarball:
+This approach is useful, for example, to select files and make a tarball: >
(mark files)
mX
Enter command: tar cf mynewtarball.tar
-
-The command that will be run in this example:
+<
+The command that will be run with this example:
tar cf mynewtarball.tar 'file1' 'file2' ...
@@ -2253,7 +2271,7 @@ MARKED FILES: EDITING *netrw-me* {{{2
(See |netrw-mf| and |netrw-mr| for how to mark files)
(uses the global marked file list)
-This command will place the marked files on the |arglist| and commence
+The "me" 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)
@@ -2261,26 +2279,33 @@ 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 "mg" 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
-desired contents-pattern.
+With /pattern/, editing will start with the first item on the |quickfix| list
+that vimgrep sets up (see |:copen|, |:cnext|, |:cprevious|). The |:vimgrep|
+command is in use, so without 'g' each line is added to quickfix list only
+once; with 'g' every match is included.
+
+With /pattern/j, "mg" will winnow the current marked file list to just those
+marked files also possessing the specified pattern. Thus, one may use >
+
+ mr ...file-pattern...
+ mg /pattern/j
+<
+to have a marked file list satisfying the file-pattern but also restricted to
+files containing some desired 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)
-This command extracts the suffices of the marked files and toggles their
+The "mh" command extracts the suffices of the marked files and toggles their
presence on the hiding list. Please note that marking the same suffix
this way multiple times will result in the suffix's presence being toggled
for each file (so an even quantity of marked files having the same suffix
@@ -2309,16 +2334,16 @@ MARKED FILES: PRINTING *netrw-mp* {{{2
(See |netrw-mf| and |netrw-mr| for how to mark files)
(uses the local marked file list)
-Netrw will apply the |:hardcopy| command to marked files. What it does
-is open each file in a one-line window, execute hardcopy, then close the
-one-line window.
+When "mp" is used, netrw will apply the |:hardcopy| command to marked files.
+What netrw does is open each file in a one-line window, execute hardcopy, then
+close the one-line window.
MARKED FILES: SOURCING *netrw-ms* {{{2
(See |netrw-mf| and |netrw-mr| for how to mark files)
(uses the local marked file list)
-Netrw will source the marked files (using vim's |:source| command)
+With "ms", netrw will source the marked files (using vim's |:source| command)
MARKED FILES: SETTING THE TARGET DIRECTORY *netrw-mt* {{{2
@@ -2341,6 +2366,9 @@ Set the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|):
This command uses |<q-args>|, so spaces in the directory name are
permitted without escaping.
+ * With mouse-enabled vim or with gvim, one may select a target by using
+ <c-leftmouse>
+
There is only one copy/move-to target at a time in a vim session; ie. the
target is a script variable (see |s:var|) and is shared between all netrw
windows (in an instance of vim).
@@ -2417,9 +2445,13 @@ Related topics:
MARKED FILES: UNMARKING *netrw-mu* {{{2
- (See |netrw-mf| and |netrw-mr| for how to mark files)
+ (See |netrw-mf|, |netrw-mF|)
+
+The "mu" mapping will unmark all currently marked files. This command differs
+from "mF" as the latter only unmarks files in the current directory whereas
+"mu" will unmark global and all buffer-local marked files.
+(see |netrw-mF|)
-The "mu" mapping will unmark all currently marked files.
*netrw-browser-settings*
NETRW BROWSER VARIABLES *netrw-browser-options* *netrw-browser-var* {{{2
@@ -2724,6 +2756,11 @@ your browsing preferences. (see also: |netrw-settings|)
evaluation will be suppressed
(see |'ballooneval'|)
+ *g:netrw_usetab* if this variable exists and is non-zero, then
+ the <tab> map supporting shrinking/expanding a
+ Lexplore or netrw window will be enabled.
+ (see |netrw-c-tab|)
+
*g:netrw_remote_mkdir* command for making a remote directory
via ftp (also see |g:netrw_mkdir_cmd|)
default: "mkdir"
@@ -2760,7 +2797,8 @@ your browsing preferences. (see also: |netrw-settings|)
|netrw-ctrl-r| to use for its server.
default: "NETRWSERVER"
- *g:netrw_sort_by* sort by "name", "time", or "size"
+ *g:netrw_sort_by* sort by "name", "time", "size", or
+ "exten".
default: "name"
*g:netrw_sort_direction* sorting direction: "normal" or "reverse"
@@ -2872,6 +2910,10 @@ your browsing preferences. (see also: |netrw-settings|)
take effect, for example).
default: 50 (for 50%)
+ *g:netrw_wiw* =1 specifies the minimum window width to use
+ when shrinking a netrw/Lexplore window
+ (see |netrw-c-tab|).
+
*g:netrw_xstrlen* Controls how netrw computes string lengths,
including multi-byte characters' string
length. (thanks to N Weibull, T Mechelynck)
@@ -2917,7 +2959,7 @@ help on what each of the variables do.
==============================================================================
-OBTAINING A FILE *netrw-O* {{{2
+OBTAINING A FILE *netrw-obtain* *netrw-O* {{{2
If there are no marked files:
@@ -2947,7 +2989,7 @@ Related topics:
* To automatically make the currently browsed directory the current
directory, see |g:netrw_keepdir|.
- *netrw-createfile*
+ *netrw-newfile* *netrw-createfile*
OPEN A NEW FILE IN NETRW'S CURRENT DIRECTORY *netrw-%* {{{2
To open a new file in netrw's current directory, press "%". This map
@@ -2979,10 +3021,13 @@ These will:
will use only 30% of the columns available; the rest of the window
is used for the preview window.
-Also see: |g:netrw_chgwin| |netrw-P|
+ Related: if you like this idea, you may also find :Lexplore
+ (|netrw-:Lexplore|) or |g:netrw_chgwin| of interest
+Also see: |g:netrw_chgwin| |netrw-P| |'previewwindow'|
-PREVIOUS WINDOW *netrw-P* *netrw-prvwin* {{{2
+
+PREVIOUS WINDOW *netrw-P* *netrw-prvwin* {{{2
To edit a file or directory in the previously used (last accessed) window (see
:he |CTRL-W_p|), press a "P". If there's only one window, then the one window
@@ -3004,7 +3049,7 @@ Associated setting variables:
Also see: |g:netrw_chgwin| |netrw-p|
-REFRESHING THE LISTING *netrw-ctrl-l* *netrw-ctrl_l* {{{2
+REFRESHING THE LISTING *netrw-refresh* *netrw-ctrl-l* *netrw-ctrl_l* {{{2
To refresh either a local or remote directory listing, press ctrl-l (<c-l>) or
hit the <cr> when atop the ./ directory entry in the listing. One may also
@@ -3024,11 +3069,12 @@ RENAMING FILES OR DIRECTORIES *netrw-move* *netrw-rename* *netrw-R* {{{2
If there are no marked files: (see |netrw-mf|)
- Renaming/moving files and directories involves moving the cursor to the
+ Renaming files and directories involves moving the cursor to the
file/directory to be moved (renamed) and pressing "R". You will then be
- queried for where you want the file/directory to be moved. You may select
+ queried for what you want the file/directory to be renamed to You may select
a range of lines with the "V" command (visual selection), and then
- pressing "R".
+ press "R"; you will be queried for each file as to what you want it
+ renamed to.
If there are marked files: (see |netrw-mf|)
@@ -3046,6 +3092,14 @@ If there are marked files: (see |netrw-mf|)
This example will mark all *.c files and then rename them to *.cpp
files.
+ The ctrl-X character has special meaning for renaming files: >
+
+ <c-x> : a single ctrl-x tells netrw to ignore the portion of the response
+ lying between the last '/' and the ctrl-x.
+
+ <c-x><c-x> : a pair of contiguous ctrl-x's tells netrw to ignore any
+ portion of the string preceding the double ctrl-x's.
+<
WARNING:~
Note that moving files is a dangerous operation; copies are safer. That's
@@ -3053,13 +3107,13 @@ If there are marked files: (see |netrw-mf|)
the copy fails and the delete does not, you may lose the file.
Use at your own risk.
-The g:netrw_rename_cmd variable is used to implement renaming. By default its
-value is:
+The g:netrw_rename_cmd variable is used to implement remote renaming. By
+default its value is:
ssh HOSTNAME mv
One may rename a block of files and directories by selecting them with
-the V (|linewise-visual|).
+V (|linewise-visual|) when using thin style
SELECTING SORTING STYLE *netrw-s* *netrw-sort* {{{2
@@ -3072,18 +3126,19 @@ Related topics: |netrw-r| |netrw-S|
Associated setting variables: |g:netrw_sort_by| |g:netrw_sort_sequence|
-SETTING EDITING WINDOW *netrw-C* *netrw-:NetrwC* {{{2
+SETTING EDITING WINDOW *netrw-editwindow* *netrw-C* *netrw-:NetrwC* {{{2
One may select a netrw window for editing with the "C" mapping, using the
-:NetrwC [win#] command, or by setting g:netrw_chgwin to the selected window
+:NetrwC [win#] command, or by setting |g:netrw_chgwin| to the selected window
number. Subsequent selection of a file to edit (|netrw-cr|) will use that
window.
- * C by itself, will select the current window for editing via
- |netrw-cr|
+ * C : by itself, will select the current window holding a netrw buffer
+ for editing via |netrw-cr|. The C mapping is only available while in
+ netrw buffers.
- * [count]C the count will be used as the window number to be used
- for editing via |netrw-cr|.
+ * [count]C : the count will be used as the window number to be used
+ for subsequent editing via |netrw-cr|.
* :NetrwC will set |g:netrw_chgwin| to the current window
@@ -3092,12 +3147,91 @@ window.
Using >
let g:netrw_chgwin= -1
-will restore the default editing behavior (ie. use the current window).
+will restore the default editing behavior
+(ie. editing will use the current window).
Related topics: |netrw-cr| |g:netrw_browse_split|
Associated setting variables: |g:netrw_chgwin|
+SHRINKING OR EXPANDING A NETRW OR LEXPLORE WINDOW *netrw-c-tab* {{{2
+
+The <c-tab> key will toggle a netrw or |:Lexplore| window's width,
+but only if |g:netrw_usetab| exists and is non-zero (and, of course,
+only if your terminal supports differentiating <c-tab> from a plain
+<tab>).
+
+ * If the current window is a netrw window, toggle its width
+ (between |g:netrw_wiw| and its original width)
+
+ * Else if there is a |:Lexplore| window in the current tab, toggle
+ its width
+
+ * Else bring up a |:Lexplore| window
+
+If |g:netrw_usetab| exists or is zero, or if there is a pre-existing mapping
+for <c-tab>, then the <tab> will not be mapped. One may map something other
+than a <c-tab>, too: (but you'll still need to have had g:netrw_usetab set) >
+
+ nmap <unique> (whatever) <Plug>NetrwShrink
+<
+Related topics: |:Lexplore|
+Associated setting variable: |g:netrw_usetab|
+
+
+USER SPECIFIED MAPS *netrw-usermaps* {{{1
+
+One may make customized user maps. Specify a variable, |g:Netrw_UserMaps|,
+to hold a |List| of lists of keymap strings and function names: >
+
+ [["keymap-sequence","ExampleUserMapFunc"],...]
+<
+When netrw is setting up maps for a netrw buffer, if |g:Netrw_UserMaps|
+exists, then the internal function netrw#UserMaps(islocal) is called.
+This function goes through all the entries in the |g:Netrw_UserMaps| list:
+
+ * sets up maps: >
+ nno <buffer> <silent> KEYMAP-SEQUENCE
+ :call s:UserMaps(islocal,"ExampleUserMapFunc")
+< * refreshes if result from that function call is the string
+ "refresh"
+ * if the result string is not "", then that string will be
+ executed (:exe result)
+ * if the result is a List, then the above two actions on results
+ will be taken for every string in the result List
+
+The user function is passed one argument; it resembles >
+
+ fun! ExampleUserMapFunc(islocal)
+<
+where a:islocal is 1 if its a local-directory system call or 0 when
+remote-directory system call.
+
+Use netrw#Expose("varname") to access netrw-internal (script-local)
+ variables.
+Use netrw#Modify("varname",newvalue) to change netrw-internal variables.
+Use netrw#Call("funcname"[,args]) to call a netrw-internal function with
+ specified arguments.
+
+Example: Get a copy of netrw's marked file list: >
+
+ let netrwmarkfilelist= netrw#Expose("netrwmarkfilelist")
+<
+Example: Modify the value of netrw's marked file list: >
+
+ call netrw#Modify("netrwmarkfilelist",[])
+<
+Example: Clear netrw's marked file list via a mapping on gu >
+ " ExampleUserMap: {{{2
+ fun! ExampleUserMap(islocal)
+ call netrw#Modify("netrwmarkfilelist",[])
+ call netrw#Modify('netrwmarkfilemtch_{bufnr("%")}',"")
+ let retval= ["refresh"]
+ return retval
+ endfun
+ let g:Netrw_UserMaps= [["gu","ExampleUserMap"]]
+<
+
10. Problems and Fixes *netrw-problems* {{{1
(This section is likely to grow as I get feedback)
@@ -3272,6 +3406,7 @@ Associated setting variables: |g:netrw_chgwin|
The first one (|g:netrw_ssh_cmd|) is the most important; most
of the others will use the string in g:netrw_ssh_cmd by
default.
+
*netrw-p9* *netrw-ml_get*
P9. I'm browsing, changing directory, and bang! ml_get errors
appear and I have to kill vim. Any way around this?
@@ -3298,6 +3433,14 @@ Associated setting variables: |g:netrw_chgwin|
P11. I want to have two windows; a thin one on the left and my editing
window on the right. How may I accomplish this?
+ You probably want netrw running as in a side window. If so, you
+ will likely find that ":[N]Lexplore" does what you want. The
+ optional "[N]" allows you to select the quantity of columns you
+ wish the |:Lexplore|r window to start with (see |g:netrw_winsize|
+ for how this parameter works).
+
+ Previous solution:
+
* Put the following line in your <.vimrc>:
let g:netrw_altv = 1
* Edit the current directory: :e .
@@ -3311,6 +3454,7 @@ Associated setting variables: |g:netrw_chgwin|
<leftmouse> in the browser window and then press the
<middlemouse> to select the file.
+
*netrw-p12*
P12. My directory isn't sorting correctly, or unwanted letters are
appearing in the listed filenames, or things aren't lining
@@ -3388,7 +3532,7 @@ Associated setting variables: |g:netrw_chgwin|
to open a swap file.
(romainl) It looks like you are starting Vim from a protected
- directory. Start if from your $HOME or another writable
+ directory. Start netrw from your $HOME or other writable
directory.
*netrw-p17*
@@ -3412,6 +3556,58 @@ Associated setting variables: |g:netrw_chgwin|
"Using Vim to Remotely Edit A File on ServerB Only
Accessible From ServerA"
+ *netrw-P19*
+ P19. How do I get numbering on in directory listings?
+ With |g:netrw_bufsettings|, you can control netrw's buffer
+ settings; try putting >
+ let g:netrw_bufsettings="noma nomod nu nobl nowrap ro nornu"
+< in your .vimrc. If you'd like to have relative numbering
+ instead, try >
+ let g:netrw_bufsettings="noma nomod nonu nobl nowrap ro rnu"
+<
+ *netrw-P20*
+ P20. How may I have gvim start up showing a directory listing?
+ Try putting the following code snippet into your .vimrc: >
+ augroup VimStartup
+ au!
+ au VimEnter * if expand("%") == "" && argc() == 0 &&
+ \ (v:servername =~ 'GVIM\d*' || v:servername == "")
+ \ | e . | endif
+ augroup END
+< You may use Lexplore instead of "e" if you're so inclined.
+ This snippet assumes that you have client-server enabled
+ (ie. a "huge" vim version).
+
+ *netrw-P21*
+ P21. I've made a directory (or file) with an accented character, but
+ netrw isn't letting me enter that directory/read that file:
+
+ Its likely that the shell or o/s is using a different encoding
+ than you have vim (netrw) using. A patch to vim supporting
+ "systemencoding" may address this issue in the future; for
+ now, just have netrw use the proper encoding. For example: >
+
+ au FileType netrw set enc=latin1
+<
+ *netrw-P22*
+ P22. I get an error message when I try to copy or move a file:
+
+ **error** (netrw) tried using g:netrw_localcopycmd<cp>; it doesn't work!
+
+ What's wrong?
+
+ Netrw uses several system level commands to do things (see
+
+ |g:netrw_localcopycmd|, |g:netrw_localmovecmd|,
+ |g:netrw_localrmdir|, |g:netrw_mkdir_cmd|).
+
+ You may need to adjust the default commands for one or more of
+ these commands by setting them properly in your .vimrc. Another
+ source of difficulty is that these commands use vim's local
+ directory, which may not be the same as the browsing directory
+ shown by netrw (see |g:netrw_keepdir|).
+
+
==============================================================================
11. Debugging Netrw Itself *netrw-debug* {{{1
@@ -3502,6 +3698,46 @@ netrw:
==============================================================================
12. History *netrw-history* {{{1
+ v154: Feb 26, 2015 * (Yuri Kanivetsky) reported a situation where
+ a file was not treated properly as a file
+ due to g:netrw_keepdir == 1
+ Mar 25, 2015 * (requested by Ben Friz) one may now sort by
+ extension
+ Mar 28, 2015 * (requested by Matt Brooks) netrw has a lot
+ of buffer-local mappings; however, some
+ plugins (such as vim-surround) set up
+ conflicting mappings that cause vim to wait.
+ The "<nowait>" modifier has been included
+ with most of netrw's mappings to avoid that
+ delay.
+ Jun 26, 2015 * |netrw-gn| mapping implemted
+ * :Ntree NotADir resulted in having
+ the tree listing expand in the error messages
+ window. Fixed.
+ Jun 29, 2015 * Attempting to delete a file remotely caused
+ an error with "keepsol" mentioned; fixed.
+ Jul 08, 2015 * Several changes to keep the |:jumps| table
+ correct when working with
+ |g:netrw_fastbrowse| set to 2
+ * wide listing with accented characters fixed
+ (using %-S instead of %-s with a |printf()|
+ Jul 13, 2015 * (Daniel Hahler) CheckIfKde() could be true
+ but kfmclient not installed. Changed order
+ in netrw#BrowseX(): checks if kde and
+ kfmclient, then will use xdg-open on a unix
+ system (if xdg-open is executable)
+ Aug 11, 2015 * (McDonnell) tree listing mode wouldn't
+ select a file in a open subdirectory.
+ * (McDonnell) when multiple subdirectories
+ were concurrently open in tree listing
+ mode, a ctrl-L wouldn't refresh properly.
+ * The netrw:target menu showed duplicate
+ entries
+ Oct 13, 2015 * (mattn) provided an exception to handle
+ windows with shellslash set but no shell
+ Oct 23, 2015 * if g:netrw_usetab and <c-tab> now used
+ to control whether NetrwShrink is used
+ (see |netrw-c-tab|)
v153: May 13, 2014 * added another |g:netrw_ffkeep| usage {{{2
May 14, 2014 * changed s:PerformListing() so that it
always sets ft=netrw for netrw buffers
diff --git a/runtime/doc/print.txt b/runtime/doc/print.txt
index 086d05613d..7565d1e976 100644
--- a/runtime/doc/print.txt
+++ b/runtime/doc/print.txt
@@ -677,7 +677,7 @@ It is possible to achieve a poor man's version of duplex printing using the PS
utility psselect. This utility has options -e and -o for printing just the
even or odd pages of a PS file respectively.
-First generate a PS file with the 'hardcopy' command, then generate a new
+First generate a PS file with the 'hardcopy' command, then generate new
files with all the odd and even numbered pages with: >
psselect -o test.ps odd.ps
diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt
index 8c428e44ef..ff4fded0d9 100644
--- a/runtime/doc/quickfix.txt
+++ b/runtime/doc/quickfix.txt
@@ -1,4 +1,4 @@
-*quickfix.txt* For Vim version 7.4. Last change: 2014 Mar 27
+*quickfix.txt* For Vim version 7.4. Last change: 2015 Sep 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -291,6 +291,74 @@ use this code: >
au QuickfixCmdPost make call QfMakeConv()
+EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
+ *:cdo*
+:cdo[!] {cmd} Execute {cmd} in each valid entry in the quickfix list.
+ It works like doing this: >
+ :cfirst
+ :{cmd}
+ :cnext
+ :{cmd}
+ etc.
+< When the current file can't be |abandon|ed and the [!]
+ is not present, the command fails.
+ When an error is detected excecution stops.
+ The last buffer (or where an error occurred) becomes
+ the current buffer.
+ {cmd} can contain '|' to concatenate several commands.
+
+ Only valid entries in the quickfix list are used.
+ A range can be used to select entries, e.g.: >
+ :10,$cdo cmd
+< To skip entries 1 to 9.
+
+ Note: While this command is executing, the Syntax
+ autocommand event is disabled by adding it to
+ 'eventignore'. This considerably speeds up editing
+ each buffer.
+ {not in Vi} {not available when compiled without the
+ |+listcmds| feature}
+ Also see |:bufdo|, |:tabdo|, |:argdo|, |:windo|,
+ |:ldo|, |:cfdo| and |:lfdo|.
+
+ *:cfdo*
+:cfdo[!] {cmd} Execute {cmd} in each file in the quickfix list.
+ It works like doing this: >
+ :cfirst
+ :{cmd}
+ :cnfile
+ :{cmd}
+ etc.
+< Otherwise it works the same as `:cdo`.
+ {not in Vi} {not available when compiled without the
+ |+listcmds| feature}
+
+ *:ldo*
+:ld[o][!] {cmd} Execute {cmd} in each valid entry in the location list
+ for the current window.
+ It works like doing this: >
+ :lfirst
+ :{cmd}
+ :lnext
+ :{cmd}
+ etc.
+< Only valid entries in the location list are used.
+ Otherwise it works the same as `:cdo`.
+ {not in Vi} {not available when compiled without the
+ |+listcmds| feature}
+
+ *:lfdo*
+:lfdo[!] {cmd} Execute {cmd} in each file in the location list for
+ the current window.
+ It works like doing this: >
+ :lfirst
+ :{cmd}
+ :lnfile
+ :{cmd}
+ etc.
+< Otherwise it works the same as `:ldo`.
+ {not in Vi} {not available when compiled without the
+ |+listcmds| feature}
=============================================================================
2. The error window *quickfix-window*
@@ -493,11 +561,11 @@ or simpler >
"$*" can be given multiple times, for example: >
:set makeprg=gcc\ -o\ $*\ $*
-The 'shellpipe' option defaults to ">" for MS-DOS and Win32. This means that
-the output of the compiler is saved in a file and not shown on the screen
-directly. For Unix "| tee" is used. The compiler output is shown on the
-screen and saved in a file the same time. Depending on the shell used "|&
-tee" or "2>&1| tee" is the default, so stderr output will be included.
+The 'shellpipe' option defaults to ">" on Windows. This means that the output
+of the compiler is saved in a file and not shown on the screen directly. For
+Unix "| tee" is used. The compiler output is shown on the screen and saved in
+a file the same time. Depending on the shell used "|& tee" or "2>&1| tee" is
+the default, so stderr output will be included.
If 'shellpipe' is empty, the {errorfile} part will be omitted. This is useful
for compilers that write to an errorfile themselves.
@@ -905,9 +973,9 @@ normally happens by matching following characters and items. When nothing is
following the rest of the line is matched. If "%f" is followed by a '%' or a
backslash, it will look for a sequence of 'isfname' characters.
-On MS-DOS and MS-Windows a leading "C:" will be included in "%f", even when
-using "%f:". This means that a file name which is a single alphabetical
-letter will not be detected.
+On Windows a leading "C:" will be included in "%f", even when using "%f:".
+This means that a file name which is a single alphabetical letter will not be
+detected.
The "%p" conversion is normally followed by a "^". It's used for compilers
that output a line like: >
diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt
index 34e7851493..8e40628e25 100644
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -1,4 +1,4 @@
-*quickref.txt* For Vim version 7.4. Last change: 2014 Nov 19
+*quickref.txt* For Vim version 7.4. Last change: 2015 Nov 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -600,7 +600,6 @@ Short explanation of each option: *option-list*
'allowrevins' 'ari' allow CTRL-_ in Insert and Command-line mode
'altkeymap' 'akm' for default second language (Farsi/Hebrew)
'ambiwidth' 'ambw' what to do with Unicode chars of ambiguous width
-'antialias' 'anti' Mac OS X: use smooth, antialiased fonts
'autochdir' 'acd' change directory to the file in the current window
'arabic' 'arab' for Arabic as a default second language
'arabicshape' 'arshape' do shaping for Arabic characters
@@ -618,6 +617,7 @@ Short explanation of each option: *option-list*
'balloondelay' 'bdlay' delay in mS before a balloon may pop up
'ballooneval' 'beval' switch on balloon evaluation
'balloonexpr' 'bexpr' expression to show in balloon
+'belloff' 'bo' do not ring the bell for these reasons
'binary' 'bin' read/write/edit file in binary mode
'bomb' prepend a Byte Order Mark to the file
'breakat' 'brk' characters that may cause a line break
@@ -689,6 +689,7 @@ Short explanation of each option: *option-list*
'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
+'fixendofline' 'fixeol' make sure last line in file has <EOL>
'fkmap' 'fk' Farsi keyboard mapping
'foldclose' 'fcl' close a fold when the cursor leaves it
'foldcolumn' 'fdc' width of the column used to indicate folds
@@ -703,10 +704,10 @@ Short explanation of each option: *option-list*
'foldnestmax' 'fdn' maximum fold depth
'foldopen' 'fdo' for which commands a fold will be opened
'foldtext' 'fdt' expression used to display for a closed fold
+'formatexpr' 'fex' expression used with "gq" command
'formatlistpat' 'flp' pattern used to recognize a list header
'formatoptions' 'fo' how automatic formatting is to be done
'formatprg' 'fp' name of external program used with "gq" command
-'formatexpr' 'fex' expression used with "gq" command
'fsync' 'fs' whether to invoke fsync() after file write
'gdefault' 'gd' the ":substitute" flag 'g' is default on
'grepformat' 'gfm' format of 'grepprg' output
@@ -731,13 +732,10 @@ Short explanation of each option: *option-list*
'icon' let Vim set the text of the window icon
'iconstring' string to use for the Vim icon text
'ignorecase' 'ic' ignore case in search patterns
-'imactivatekey' 'imak' key that activates the X input method
-'imactivatefunc' 'imaf' function to enable/disable the X input method
'imcmdline' 'imc' use IM when starting to edit a command line
'imdisable' 'imd' do not use the IM in any mode
'iminsert' 'imi' use :lmap or IM in Insert mode
'imsearch' 'ims' use :lmap or IM when typing a search pattern
-'imstatusfunc' 'imsf' function to obtain X input method status
'include' 'inc' pattern to be used to find an include file
'includeexpr' 'inex' expression used to process an include line
'incsearch' 'is' highlight match while typing search pattern
@@ -802,6 +800,7 @@ Short explanation of each option: *option-list*
'patchexpr' 'pex' expression used to patch a file
'patchmode' 'pm' keep the oldest version of a file
'path' 'pa' list of directories searched with "gf" et.al.
+'perldll' name of the Perl dynamic library
'preserveindent' 'pi' preserve the indent structure when reindenting
'previewheight' 'pvh' height of the preview window
'previewwindow' 'pvw' identifies the preview window
@@ -814,6 +813,8 @@ Short explanation of each option: *option-list*
'printmbfont' 'pmbfn' font names to be used for CJK output of :hardcopy
'printoptions' 'popt' controls the format of :hardcopy output
'pumheight' 'ph' maximum height of the popup menu
+'pythondll' name of the Python 2 dynamic library
+'pythonthreedll' name of the Python 3 dynamic library
'quoteescape' 'qe' escape characters used in a string
'readonly' 'ro' disallow writing the buffer
'redrawtime' 'rdt' timeout for 'hlsearch' and |:match| highlighting
@@ -821,10 +822,10 @@ Short explanation of each option: *option-list*
'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
-'restorescreen' 'rs' Win32: restore screen when exiting
'revins' 'ri' inserting characters will work backwards
'rightleft' 'rl' window is right-to-left oriented
'rightleftcmd' 'rlc' commands for which editing works right-to-left
+'rubydll' name of the Ruby dynamic library
'ruler' 'ru' show cursor line and column in the status line
'rulerformat' 'ruf' custom format for the ruler
'runtimepath' 'rtp' list of directories used for runtime files
@@ -875,14 +876,14 @@ Short explanation of each option: *option-list*
'suffixes' 'su' suffixes that are ignored with multiple match
'suffixesadd' 'sua' suffixes added when searching for a file
'swapfile' 'swf' whether to use a swapfile for a buffer
-'swapsync' 'sws' how to sync the swap file
'switchbuf' 'swb' sets behavior when switching to another buffer
'synmaxcol' 'smc' maximum column to find syntax items
'syntax' 'syn' syntax to be loaded for current buffer
-'tabstop' 'ts' number of spaces that <Tab> in file uses
'tabline' 'tal' custom format for the console tab pages line
'tabpagemax' 'tpm' maximum number of tab pages for |-p| and "tab all"
+'tabstop' 'ts' number of spaces that <Tab> in file uses
'tagbsearch' 'tbs' use binary searching in tags files
+'tagcase' 'tc' how to handle case when searching in tags files
'taglength' 'tl' number of significant characters for a tag
'tagrelative' 'tr' file names in tag file are relative
'tags' 'tag' list of file names used by the tag command
@@ -986,11 +987,9 @@ Short explanation of each option: *option-list*
|g_CTRL-G| g CTRL-G show cursor column, line, and character
position
|CTRL-C| CTRL-C during searches: Interrupt the search
-|dos-CTRL-Break| CTRL-Break MS-DOS: during searches: Interrupt the search
+|dos-CTRL-Break| CTRL-Break Windows: during searches: Interrupt the search
|<Del>| <Del> while entering a count: delete last character
|:version| :ve[rsion] show version information
-|:mode| :mode N MS-DOS: set screen mode to N (number, C80,
- C4350, etc.)
|:normal| :norm[al][!] {commands}
execute Normal mode commands
|Q| Q switch to "Ex" mode
diff --git a/runtime/doc/quotes.txt b/runtime/doc/quotes.txt
index 28b0e1c623..c35fb2f139 100644
--- a/runtime/doc/quotes.txt
+++ b/runtime/doc/quotes.txt
@@ -178,14 +178,14 @@ Hurrah for VIM!! It is "at your fingertips" like vi, and has the extensions
that vi sorely needs: highlighting for executing commands on blocks, an easily
navigable and digestible help screen, and more. (Paul Pax)
-The reason WHY I don't have this amazingly useful macro any more, is that I
+The reason WHY I don't have this amazingly useful macro anymore, is that I
now use VIM - and this is built in!! (Stephen Riehm, Germany)
I am a user of VIM and I love it. I use it to do all my programming, C,
C++, HTML what ever. (Tim Allwine)
I discovered VIM after years of struggling with the original vi, and I just
-can't live without it any more. (Emmanuel Mogenet, USA)
+can't live without it anymore. (Emmanuel Mogenet, USA)
Emacs has not a bit of chance to survive so long as VIM is around. Besides,
it also has the most detailed software documentation I have ever seen---much
diff --git a/runtime/doc/recover.txt b/runtime/doc/recover.txt
index 34a579f499..e09138b2f5 100644
--- a/runtime/doc/recover.txt
+++ b/runtime/doc/recover.txt
@@ -60,7 +60,7 @@ Disadvantages:
If you want to put swap files in a fixed place, put a command resembling the
following ones in your vimrc:
:set dir=~/tmp (for Unix)
- :set dir=c:\\tmp (for MS-DOS and Win32)
+ :set dir=c:\\tmp (for Windows)
This is also very handy when editing files on floppy. Of course you will have
to create that "tmp" directory for this to work!
@@ -92,10 +92,7 @@ changed, not when you only moved around. The reason why it is not kept up to
date all the time is that this would slow down normal work too much. You can
change the 200 character count with the 'updatecount' option. You can set
the time with the 'updatetime' option. The time is given in milliseconds.
-After writing to the swap file Vim syncs the file to disk. This takes some
-time, especially on busy Unix systems. If you don't want this you can set the
-'swapsync' option to an empty string. The risk of losing work becomes bigger
-though.
+After writing to the swap file Vim syncs the file to disk.
If the writing to the swap file is not wanted, it can be switched off by
setting the 'updatecount' option to 0. The same is done when starting Vim
diff --git a/runtime/doc/remote.txt b/runtime/doc/remote.txt
index 81ab72a100..933ab3a444 100644
--- a/runtime/doc/remote.txt
+++ b/runtime/doc/remote.txt
@@ -1,4 +1,4 @@
-*remote.txt* For Vim version 7.4. Last change: 2008 May 24
+*remote.txt* For Vim version 7.4. Last change: 2015 Mar 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -34,7 +34,8 @@ The following command line arguments are available:
The remote Vim is raised. If you don't want
this use >
vim --remote-send "<C-\><C-N>:n filename<CR>"
-< --remote-silent [+{cmd}] {file} ... *--remote-silent*
+<
+ --remote-silent [+{cmd}] {file} ... *--remote-silent*
As above, but don't complain if there is no
server and the file is edited locally.
--remote-wait [+{cmd}] {file} ... *--remote-wait*
diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt
index 75384832ec..b2e935eb3f 100644
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -1,4 +1,4 @@
-*repeat.txt* For Vim version 7.4. Last change: 2015 Jan 07
+*repeat.txt* For Vim version 7.4. Last change: 2015 Apr 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -109,6 +109,12 @@ q{0-9a-zA-Z"} Record typed characters into register {0-9a-zA-Z"}
while executing a register, and it doesn't work inside
a mapping and |:normal|.
+ Note: If the register being used for recording is also
+ used for |y| and |p| the result is most likely not
+ what is expected, because the put will paste the
+ recorded macro and the yank will overwrite the
+ recorded macro.
+
q Stops recording.
Implementation note: The 'q' that stops recording is
not stored in the register, unless it was the result
@@ -287,13 +293,13 @@ with CTRL-V followed by the three digit decimal code. This does NOT work for
the <t_xx> termcap codes, these can only be used in mappings.
*:source_crnl* *W15*
-MS-DOS and Win32: Files that are read with ":source" normally have
-<CR><NL> <EOL>s. These always work. If you are using a file with <NL> <EOL>s
-(for example, a file made on Unix), this will be recognized if 'fileformats'
-is not empty and the first line does not end in a <CR>. This fails if the
-first line has something like ":map <F1> :help^M", where "^M" is a <CR>. If
-the first line ends in a <CR>, but following ones don't, you will get an error
-message, because the <CR> from the first lines will be lost.
+Windows: Files that are read with ":source" normally have <CR><NL> <EOL>s.
+These always work. If you are using a file with <NL> <EOL>s (for example, a
+file made on Unix), this will be recognized if 'fileformats' is not empty and
+the first line does not end in a <CR>. This fails if the first line has
+something like ":map <F1> :help^M", where "^M" is a <CR>. If the first line
+ends in a <CR>, but following ones don't, you will get an error message,
+because the <CR> from the first lines will be lost.
Mac Classic: Files that are read with ":source" normally have <CR> <EOL>s.
These always work. If you are using a file with <NL> <EOL>s (for example, a
@@ -303,7 +309,7 @@ linebreaks which has a <CR> in first line.
On other systems, Vim expects ":source"ed files to end in a <NL>. These
always work. If you are using a file with <CR><NL> <EOL>s (for example, a
-file made on MS-DOS), all lines will have a trailing <CR>. This may cause
+file made on Windows), all lines will have a trailing <CR>. This may cause
problems for some commands (e.g., mappings). There is no automatic <EOL>
detection, because it's common to start with a line that defines a mapping
that ends in a <CR>, which will confuse the automaton.
@@ -390,7 +396,7 @@ To enter debugging mode use one of these methods:
useful to find out what is happening when Vim is starting up. A side
effect is that Vim will switch the terminal mode before initialisations
have finished, with unpredictable results.
- For a GUI-only version (Windows, Macintosh) the debugging will start as
+ For a GUI-only version (Windows) the debugging will start as
soon as the GUI window has been opened. To make this happen early, add a
":gui" command in the vimrc file.
*:debug*
@@ -583,9 +589,13 @@ For example, to profile the one_script.vim script file: >
:prof[ile] start {fname} *:prof* *:profile* *E750*
Start profiling, write the output in {fname} upon exit.
+ "~/" and environment variables in {fname} will be expanded.
If {fname} already exists it will be silently overwritten.
The variable |v:profiling| is set to one.
+:prof[ile] stop
+ Write the logfile and stop profiling.
+
:prof[ile] pause
Don't profile until the following ":profile continue". Can be
used when doing something that should not be counted (e.g., an
@@ -609,6 +619,9 @@ For example, to profile the one_script.vim script file: >
after this command. A :profile command in the script itself
won't work.
+:prof[ile] dump
+ Don't wait until exiting Vim and write the current state of
+ profiling to the log immediately.
:profd[el] ... *:profd* *:profdel*
Stop profiling for the arguments specified. See |:breakdel|
@@ -652,10 +665,6 @@ long you take to respond to the input() prompt is irrelevant.
Profiling should give a good indication of where time is spent, but keep in
mind there are various things that may clobber the results:
-- The accuracy of the time measured depends on the gettimeofday() system
- function. It may only be as accurate as 1/100 second, even though the times
- are displayed in micro seconds.
-
- Real elapsed time is measured, if other processes are busy they may cause
delays at unpredictable moments. You may want to run the profiling several
times and use the lowest results.
diff --git a/runtime/doc/rileft.txt b/runtime/doc/rileft.txt
index b4d9347470..e4e495bb18 100644
--- a/runtime/doc/rileft.txt
+++ b/runtime/doc/rileft.txt
@@ -106,9 +106,6 @@ o Does not support reverse insert and rightleft modes on the command-line.
o Somewhat slower in right-to-left mode, because right-to-left motion is
emulated inside Vim, not by the controlling terminal.
-o When the Athena GUI is used, the bottom scrollbar works in the wrong
- direction. This is difficult to fix.
-
o When both 'rightleft' and 'revins' are on: 'textwidth' does not work.
Lines do not wrap at all; you just get a single, long line.
diff --git a/runtime/doc/scroll.txt b/runtime/doc/scroll.txt
index 8626a1a7f6..f2a6f713e6 100644
--- a/runtime/doc/scroll.txt
+++ b/runtime/doc/scroll.txt
@@ -245,26 +245,6 @@ dragging the scrollbar of the current window. How many lines are scrolled
depends on your mouse driver. If the scroll action causes input focus
problems, see |intellimouse-wheel-problems|.
-For the X11 GUIs (Motif, Athena and GTK) scrolling the wheel generates key
-presses <ScrollWheelUp>, <ScrollWheelDown>, <ScrollWheelLeft> and
-<ScrollWheelRight>. For example, if you push the scroll wheel upwards a
-<ScrollWheelUp> key press is generated causing the window to scroll upwards
-(while the text is actually moving downwards). The default action for these
-keys are:
- <ScrollWheelUp> scroll three lines up *<ScrollWheelUp>*
- <S-ScrollWheelUp> scroll one page up *<S-ScrollWheelUp>*
- <C-ScrollWheelUp> scroll one page up *<C-ScrollWheelUp>*
- <ScrollWheelDown> scroll three lines down *<ScrollWheelDown>*
- <S-ScrollWheelDown> scroll one page down *<S-ScrollWheelDown>*
- <C-ScrollWheelDown> scroll one page down *<C-ScrollWheelDown>*
- <ScrollWheelLeft> scroll six columns left *<ScrollWheelLeft>*
- <S-ScrollWheelLeft> scroll one page left *<S-ScrollWheelLeft>*
- <C-ScrollWheelLeft> scroll one page left *<C-ScrollWheelLeft>*
- <ScrollWheelRight> scroll six columns right *<ScrollWheelRight>*
- <S-ScrollWheelRight> scroll one page right *<S-ScrollWheelRight>*
- <C-ScrollWheelRight> scroll one page right *<C-ScrollWheelRight>*
-This should work in all modes, except when editing the command line.
-
Note that horizontal scrolling only works if 'nowrap' is set. Also, unless
the "h" flag in 'guioptions' is set, the cursor moves to the longest visible
line if the cursor line is about to be scrolled off the screen (similarly to
@@ -281,13 +261,6 @@ You can also use Alt and Ctrl modifiers.
This only works when Vim gets the scroll wheel events, of course. You can
check if this works with the "xev" program.
-When using XFree86, the /etc/XF86Config file should have the correct entry for
-your mouse. For FreeBSD, this entry works for a Logitech scrollmouse: >
- Protocol "MouseMan"
- Device "/dev/psm0"
- ZAxisMapping 4 5
-See the XFree86 documentation for information.
-
*<MouseDown>* *<MouseUp>*
The keys <MouseDown> and <MouseUp> have been deprecated. Use <ScrollWheelUp>
instead of <MouseDown> and use <ScrollWheelDown> instead of <MouseUp>.
diff --git a/runtime/doc/sign.txt b/runtime/doc/sign.txt
index 8dc229df41..44a5361c5d 100644
--- a/runtime/doc/sign.txt
+++ b/runtime/doc/sign.txt
@@ -75,12 +75,8 @@ DEFINING A SIGN. *:sign-define* *E255* *E160* *E612*
Define the file name where the bitmap can be found. Should be
a full path. The bitmap should fit in the place of two
characters. This is not checked. If the bitmap is too big it
- will cause redraw problems. Only GTK 2 can scale the bitmap
- to fit the space available.
+ will cause redraw problems.
toolkit supports ~
- GTK 1 pixmap (.xpm)
- GTK 2 many
- Motif pixmap (.xpm)
Win32 .bmp, .ico, .cur
pixmap (.xpm) |+xpm_w32|
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index a45a97a0fe..752444a3bd 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -35,9 +35,7 @@ Vim only checks words for spelling, there is no grammar check.
If the 'mousemodel' option is set to "popup" and the cursor is on a badly
spelled word or it is "popup_setpos" and the mouse pointer is on a badly
spelled word, then the popup menu will contain a submenu to replace the bad
-word. Note: this slows down the appearance of the popup menu. Note for GTK:
-don't release the right mouse button until the menu appears, otherwise it
-won't work.
+word. Note: this slows down the appearance of the popup menu.
To search for the next misspelled word:
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index 2c630ed958..46efe1996a 100644
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -28,8 +28,6 @@ More generally, Vim is started with:
Option arguments and file name arguments can be mixed, and any number of them
can be given. However, watch out for options that take an argument.
-For compatibility with various Vi versions, see |cmdline-arguments|.
-
Exactly one out of the following five items may be used to choose how to
start editing:
@@ -219,7 +217,7 @@ argument.
:set to display option values.
When 'verbose' is non-zero messages are printed (for
debugging, to stderr).
- 'term' and $TERM are not used.
+ $TERM is not used.
If Vim appears to be stuck try typing "qa!<Enter>". You don't
get a prompt thus you can't see Vim is waiting for you to type
something.
@@ -317,9 +315,10 @@ argument.
When {vimrc} is equal to "NONE" (all uppercase), all
initializations from files and environment variables are
skipped, including reading the |ginit.vim| file when the GUI
- starts. Loading plugins is also skipped.
+ starts. Plugins and syntax highlighting are also skipped.
When {vimrc} is equal to "NORC" (all uppercase), this has the
- same effect as "NONE", but loading plugins is not skipped.
+ same effect as "NONE", but plugins and syntax highlighting are
+ not skipped.
*-i*
-i {shada} The file {shada} is used instead of the default ShaDa
@@ -351,18 +350,15 @@ argument.
-W {scriptout} Like -w, but do not append, overwrite an existing file.
==============================================================================
-3. Initialization *initialization* *startup*
+2. Initialization *initialization* *startup*
At startup, Vim checks environment variables and files and sets values
accordingly. Vim proceeds in this order:
-1. Set the 'shell' and 'term' option *SHELL* *COMSPEC* *TERM*
+1. Set the 'shell' option *SHELL* *COMSPEC* *TERM*
The environment variable SHELL, if it exists, is used to set the
- 'shell' option. On MS-DOS and Win32, the COMSPEC variable is used
+ 'shell' option. On Windows, the COMSPEC variable is used
if SHELL is not set.
- The environment variable TERM, if it exists, is used to set the 'term'
- option. However, 'term' will change later when starting the GUI (step
- 8 below).
2. Process the arguments
The options and file names from the command that start Vim are
@@ -384,6 +380,8 @@ accordingly. Vim proceeds in this order:
Places for your personal initializations:
Unix $XDG_CONFIG_HOME/nvim/init.vim
(default for $XDG_CONFIG_HOME is ~/.config)
+ Windows $XDG_CONFIG_HOME/nvim/init.vim
+ (default for $XDG_CONFIG_HOME is ~/AppData/Local)
The files are searched in the order specified above and only the first
one that is found is read.
@@ -396,16 +394,16 @@ accordingly. Vim proceeds in this order:
All following initializations until 4. are skipped. $MYVIMRC is not
set.
"vim -u NORC" can be used to skip these initializations without
- reading a file. "vim -u NONE" also skips loading plugins. |-u|
+ reading a file. "vim -u NONE" also skips plugins and syntax
+ highlighting. |-u|
If Vim was started in Ex mode with the "-s" argument, all following
initializations until 4. are skipped. Only the "-u" option is
interpreted.
*system-vimrc*
- a. For Unix, MS-DOS, MS-Windows, and Macintosh, the system vimrc file is
- read for initializations. The path of this file is shown with the
+ a. For Unix, MS-Windows, and Macintosh, the system vimrc file is read for
+ initializations. The path of this file is shown with the
":version" command. Mostly it's "$VIM/vimrc".
- For the Macintosh the $VIMRUNTIME/macmap.vim is read.
*VIMINIT* *EXINIT* *$MYVIMRC*
b. Four places are searched for initializations. The first that exists
@@ -430,7 +428,22 @@ accordingly. Vim proceeds in this order:
- The file ".exrc" (for Unix)
"_exrc" (for Win32)
-4. Load the plugin scripts. *load-plugins*
+4. Enable filetype and indent plugins.
+ This does the same as the commands: >
+ :runtime! filetype.vim
+ :runtime! ftplugin.vim
+ :runtime! indent.vim
+< This step is skipped if ":filetype ..." was called before now or if
+ the "-u NONE" command line argument was given.
+
+5. Enable syntax highlighting.
+ This does the same as the command: >
+ :runtime! syntax/syntax.vim
+< Note: This enables filetype detection even if ":filetype off" was
+ called before now.
+ This step is skipped if the "-u NONE" command line argument was given.
+
+6. Load the plugin scripts. *load-plugins*
This does the same as the command: >
:runtime! plugin/**/*.vim
< The result is that all directories in the 'runtimepath' option will be
@@ -446,31 +459,30 @@ accordingly. Vim proceeds in this order:
commands from the command line have not been executed yet. You can
use "--cmd 'set noloadplugins'" |--cmd|.
-5. Set 'shellpipe' and 'shellredir'
+7. Set 'shellpipe' and 'shellredir'
The 'shellpipe' and 'shellredir' options are set according to the
value of the 'shell' option, unless they have been set before.
This means that Vim will figure out the values of 'shellpipe' and
'shellredir' for you, unless you have set them yourself.
-6. Set 'updatecount' to zero, if "-n" command argument used
+8. Set 'updatecount' to zero, if "-n" command argument used
-7. Set binary options
+9. Set binary options
If the "-b" flag was given to Vim, the options for binary editing will
be set now. See |-b|.
-8. Perform GUI initializations
+10. Perform GUI initializations
Only when starting "gvim", the GUI initializations will be done. See
|gui-init|.
-9. Read the ShaDa file
- If the 'shada' option is not empty, the ShaDa file is read. See
- |shada-file|.
+11. Read the ShaDa file
+ See |shada-file|.
-10. Read the quickfix file
+12. Read the quickfix file
If the "-q" flag was given to Vim, the quickfix file is read. If this
fails, Vim exits.
-11. Open all windows
+13. Open all windows
When the |-o| flag was given, windows will be opened (but not
displayed yet).
When the |-p| flag was given, tab pages will be created (but not
@@ -479,7 +491,7 @@ accordingly. Vim proceeds in this order:
If the "-q" flag was given to Vim, the first error is jumped to.
Buffers for all windows will be loaded.
-12. Execute startup commands
+14. Execute startup commands
If a "-t" flag was given to Vim, the tag is jumped to.
The commands given with the |-c| and |+cmd| arguments are executed.
The starting flag is reset, has("vim_starting") will now return zero.
@@ -497,7 +509,7 @@ sessions. Put it in a place so that it will be found by 3b:
Local setup:
Put all commands that you need for editing a specific directory only into a
vimrc file and place it in that directory under the name ".nvimrc" ("_nvimrc"
-for MS-DOS and Win32). NOTE: To make Vim look for these special files you
+for Windows). NOTE: To make Vim look for these special files you
have to turn on the option 'exrc'. See |trojan-horse| too.
System setup:
@@ -519,10 +531,9 @@ interfere with Vi, then use the variable VIMINIT and the file init.vim
instead.
MS-DOS line separators:
-On MS-DOS-like systems (MS-DOS itself and Win32), Vim assumes that all
-the vimrc files have <CR> <NL> pairs as line separators. This will give
-problems if you have a file with only <NL>s and have a line like
-":map xx yy^M". The trailing ^M will be ignored.
+On Windows systems Vim assumes that all the vimrc files have <CR> <NL> pairs
+as line separators. This will give problems if you have a file with only
+<NL>s and have a line like ":map xx yy^M". The trailing ^M will be ignored.
The $MYVIMRC or $MYGVIMRC file will be set to the first found vimrc and/or
gvimrc file.
@@ -590,7 +601,7 @@ This still won't work for systems where gvim does not use stdout at all
though.
==============================================================================
-4. $VIM and $VIMRUNTIME
+3. $VIM and $VIMRUNTIME
*$VIM*
The environment variable "$VIM" is used to locate various user files for Vim,
such as the user startup script |init.vim|. This depends on the system, see
@@ -652,7 +663,7 @@ greps in the help files) you might be able to use this: >
VIMRUNTIME="$(nvim -e --cmd 'echo $VIMRUNTIME|quit' 2>&1)"
==============================================================================
-5. Suspending *suspend*
+4. Suspending *suspend*
*iconize* *iconise* *CTRL-Z* *v_CTRL-Z*
CTRL-Z Suspend Vim, like ":stop".
@@ -685,7 +696,7 @@ can't paste it in another application (since Vim is going to sleep an attempt
to get the selection would make the program hang).
==============================================================================
-6. Saving settings *save-settings*
+5. Saving settings *save-settings*
Mostly you will edit your vimrc files manually. This gives you the greatest
flexibility. There are a few commands to generate a vimrc file automatically.
@@ -709,8 +720,8 @@ vimrc file.
These commands will write ":map" and ":set" commands to a file, in such a way
that when these commands are executed, the current key mappings and options
will be set to the same values. The options 'columns', 'endofline',
-'fileformat', 'lines', 'modified', 'scroll', and 'term' are not included,
-because these are terminal or file dependent.
+'fileformat', 'lines', 'modified', and 'scroll' are not included, because
+these are terminal or file dependent.
Note that the options 'binary', 'paste' and 'readonly' are included, this
might not always be what you want.
@@ -742,7 +753,7 @@ these steps:
You need to escape special characters, esp. spaces.
==============================================================================
-7. Views and Sessions *views-sessions*
+6. Views and Sessions *views-sessions*
This is introduced in sections |21.4| and |21.5| of the user manual.
@@ -886,7 +897,7 @@ To automatically save and restore views for *.c files: >
au BufWinEnter *.c silent loadview
==============================================================================
-8. The ShaDa file *shada* *shada-file*
+7. The ShaDa file *shada* *shada-file*
If you exit Vim and later start it again, you would normally lose a lot of
information. The ShaDa file can be used to remember that information, which
@@ -950,7 +961,7 @@ about to abandon with ":bdel", use ":wsh". The '[' and ']' marks are not
stored, but the '"' mark is. The '"' mark is very useful for jumping to the
cursor position when the file was last exited. No marks are saved for files
that start with any string given with the "r" flag in 'shada'. This can be
-used to avoid saving marks for files on removable media (for MS-DOS you would
+used to avoid saving marks for files on removable media (for Windows you would
use "ra:,rb:".
The |v:oldfiles| variable is filled with the file names that the ShaDa file
has marks for.
@@ -1163,13 +1174,14 @@ running) you have additional options:
*:wv* *:wviminfo*
:wv[iminfo][!] [file] Deprecated alias to |:wshada| command.
- *:ol* *:oldfiles*
-:ol[dfiles] List the files that have marks stored in the ShaDa
+ *:o* *:ol* *:oldfiles*
+:o[ldfiles][!] List the files that have marks stored in the ShaDa
file. This list is read on startup and only changes
afterwards with ":rshada!". Also see |v:oldfiles|.
The number can be used with |c_#<|.
+ Use ! to get a file selection prompt.
-:bro[wse] ol[dfiles][!]
+:bro[wse] o[ldfiles][!]
List file names as with |:oldfiles|, and then prompt
for a number. When the number is valid that file from
the list is edited.
@@ -1232,6 +1244,8 @@ exactly four MessagePack objects:
With |shada-h| or 'nohlsearch'
this key is always false.
sp Binary N/A Actual pattern. Required.
+ sb Boolean false True if search direction is
+ backward.
* any none Other keys are allowed for
compatibility reasons, see
|shada-compatibility|.
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 67550365a3..81ba639dbe 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt* For Vim version 7.4. Last change: 2015 Jan 07
+*syntax.txt* For Vim version 7.4. Last change: 2015 Dec 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -71,10 +71,10 @@ with: >
For a color terminal see |:hi-normal-cterm|.
For setting up your own colors syntax highlighting see |syncolor|.
-NOTE: The syntax files on MS-DOS and Windows have lines that end in <CR><NL>.
-The files for Unix end in <NL>. This means you should use the right type of
-file for your system. Although on MS-DOS and Windows the right format is
-automatically selected if the 'fileformats' option is not empty.
+NOTE: The syntax files on Windows have lines that end in <CR><NL>. The files
+for Unix end in <NL>. This means you should use the right type of file for
+your system. Although on Windows the right format is automatically selected
+if the 'fileformats' option is not empty.
NOTE: When using reverse video ("gvim -fg white -bg black"), the default value
of 'background' will not be set until the GUI window is opened, which is after
@@ -206,7 +206,8 @@ thing. These are then linked to a highlight group that specifies the color.
A syntax group name doesn't specify any color or attributes itself.
The name for a highlight or syntax group must consist of ASCII letters, digits
-and the underscore. As a regexp: "[a-zA-Z0-9_]*"
+and the underscore. As a regexp: "[a-zA-Z0-9_]*". However, Vim does not give
+an error when using other characters.
To be able to allow each user to pick his favorite set of colors, there must
be preferred names for highlight groups that are common for many languages.
@@ -416,18 +417,19 @@ and last line to be converted. Example, using the last set Visual area: >
*:TOhtml*
:[range]TOhtml The ":TOhtml" command is defined in a standard plugin.
This command will source |2html.vim| for you. When a
- range is given, set |g:html_start_line| and
- |g:html_end_line| to the start and end of the range,
- respectively. Default range is the entire buffer.
-
- If the current window is part of a |diff|, unless
- |g:html_diff_one_file| is set, :TOhtml will convert
- all windows which are part of the diff in the current
- tab and place them side-by-side in a <table> element
- in the generated HTML. With |g:html_line_ids| you can
- jump to lines in specific windows with (for example)
- #W1L42 for line 42 in the first diffed window, or
- #W3L87 for line 87 in the third.
+ range is given, this command sets |g:html_start_line|
+ and |g:html_end_line| to the start and end of the
+ range, respectively. Default range is the entire
+ buffer.
+
+ If the current window is part of a |diff|, unless
+ |g:html_diff_one_file| is set, :TOhtml will convert
+ all windows which are part of the diff in the current
+ tab and place them side-by-side in a <table> element
+ in the generated HTML. With |g:html_line_ids| you can
+ jump to lines in specific windows with (for example)
+ #W1L42 for line 42 in the first diffed window, or
+ #W3L87 for line 87 in the third.
Examples: >
@@ -741,6 +743,22 @@ and UTF-32 instead, use: >
Note that documents encoded in either UTF-32 or UTF-16 have known
compatibility problems with some major browsers.
+ *g:html_font*
+Default: "monospace"
+You can specify the font or fonts used in the converted document using
+g:html_font. If this option is set to a string, then the value will be
+surrounded with single quotes. If this option is set to a list then each list
+item is surrounded by single quotes and the list is joined with commas. Either
+way, "monospace" is added as the fallback generic family name and the entire
+result used as the font family (using CSS) or font face (if not using CSS).
+Examples: >
+
+ " font-family: 'Consolas', monospace;
+ :let g:html_font = "Consolas"
+
+ " font-family: 'DejaVu Sans Mono', 'Consolas', monospace;
+ :let g:html_font = ["DejaVu Sans Mono", "Consolas"]
+<
*convert-to-XML* *convert-to-XHTML* *g:html_use_xhtml*
Default: 0.
When 0, generate standard HTML 4.01 (strict when possible).
@@ -1058,7 +1076,8 @@ CPP *cpp.vim* *ft-cpp-syntax*
Most of things are same as |ft-c-syntax|.
Variable Highlight ~
-cpp_no_c11 don't highlight C++11 standard items
+cpp_no_cpp11 don't highlight C++11 standard items
+cpp_no_cpp14 don't highlight C++14 standard items
CSH *csh.vim* *ft-csh-syntax*
@@ -1130,6 +1149,8 @@ there are very long lines in the file. To disable translations: >
:let diff_translations = 0
+Also see |diff-slow|.
+
DIRCOLORS *dircolors.vim* *ft-dircolors-syntax*
@@ -1412,34 +1433,28 @@ form, then >
:let fortran_fixed_source=1
in your vimrc prior to the :syntax on command.
-If the form of the source code depends upon the file extension, then it is
-most convenient to set fortran_free_source in a ftplugin file. For more
-information on ftplugin files, see |ftplugin|. For example, if all your
-fortran files with an .f90 extension are written in free source form and the
-rest in fixed source form, add the following code to your ftplugin file >
- let s:extfname = expand("%:e")
- if s:extfname ==? "f90"
- let fortran_free_source=1
- unlet! fortran_fixed_source
- else
- let fortran_fixed_source=1
- unlet! fortran_free_source
- endif
-Note that this will work only if the "filetype plugin indent on" command
-precedes the "syntax on" command in your vimrc file.
+If the form of the source code depends, in a non-standard way, upon the file
+extension, then it is most convenient to set fortran_free_source in a ftplugin
+file. For more information on ftplugin files, see |ftplugin|. Note that this
+will work only if the "filetype plugin indent on" command precedes the "syntax
+on" command in your .vimrc file.
+
When you edit an existing fortran file, the syntax script will assume free
source form if the fortran_free_source variable has been set, and assumes
fixed source form if the fortran_fixed_source variable has been set. If
neither of these variables have been set, the syntax script attempts to
-determine which source form has been used by examining the first five columns
-of the first 250 lines of your file. If no signs of free source form are
-detected, then the file is assumed to be in fixed source form. The algorithm
-should work in the vast majority of cases. In some cases, such as a file that
-begins with 250 or more full-line comments, the script may incorrectly decide
-that the fortran code is in fixed form. If that happens, just add a
-non-comment statement beginning anywhere in the first five columns of the
-first twenty five lines, save (:w) and then reload (:e!) the file.
+determine which source form has been used by examining the file extension
+using conventions common to the ifort, gfortran, Cray, NAG, and PathScale
+compilers (.f, .for, .f77 for fixed-source, .f90, .f95, .f03, .f08 for
+free-source). If none of this works, then the script examines the first five
+columns of the first 500 lines of your file. If no signs of free source form
+are detected, then the file is assumed to be in fixed source form. The
+algorithm should work in the vast majority of cases. In some cases, such as a
+file that begins with 500 or more full-line comments, the script may
+incorrectly decide that the fortran code is in fixed form. If that happens,
+just add a non-comment statement beginning anywhere in the first five columns
+of the first twenty five lines, save (:w) and then reload (:e!) the file.
Tabs in fortran files ~
Tabs are not recognized by the Fortran standards. Tabs are not a good idea in
@@ -3304,6 +3319,32 @@ must not click outside of the pixel strings, but feel free to improve it.
It will look much better with a font in a quadratic cell size, e.g. for X: >
:set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-*
+
+YAML *yaml.vim* *ft-yaml-syntax*
+
+ *g:yaml_schema* *b:yaml_schema*
+A YAML schema is a combination of a set of tags and a mechanism for resolving
+non-specific tags. For user this means that YAML parser may, depending on
+plain scalar contents, treat plain scalar (which can actually be only string
+and nothing else) as a value of the other type: null, boolean, floating-point,
+integer. `g:yaml_schema` option determines according to which schema values
+will be highlighted specially. Supported schemas are
+
+Schema Description ~
+failsafe No additional highlighting.
+json Supports JSON-style numbers, booleans and null.
+core Supports more number, boolean and null styles.
+pyyaml In addition to core schema supports highlighting timestamps,
+ but there are some differences in what is recognized as
+ numbers and many additional boolean values not present in core
+ schema.
+
+Default schema is `core`.
+
+Note that schemas are not actually limited to plain scalars, but this is the
+only difference between schemas defined in YAML specification and the only
+difference defined in the syntax file.
+
==============================================================================
5. Defining a syntax *:syn-define* *E410*
@@ -3401,7 +3442,7 @@ DEFINING KEYWORDS *:syn-keyword*
:syntax keyword Type contained int long char
:syntax keyword Type int long contained char
:syntax keyword Type int long char contained
-< *E789*
+< *E789* *E890*
When you have a keyword with an optional tail, like Ex commands in
Vim, you can put the optional characters inside [], to define all the
variations at once: >
@@ -3655,6 +3696,7 @@ Whether or not it is actually concealed depends on the value of the
'conceallevel' option. The 'concealcursor' option is used to decide whether
concealable items in the current line are displayed unconcealed to be able to
edit the line.
+Another way to conceal text with with |matchadd()|.
concealends *:syn-concealends*
@@ -4101,7 +4143,7 @@ example, for instance, can be done like this: >
As can be seen here, the \z actually does double duty. In the start pattern,
it marks the "\(\I\i*\)" sub-expression as external; in the end pattern, it
-changes the \1 back-reference into an external reference referring to the
+changes the \z1 back-reference into an external reference referring to the
first external sub-expression in the start pattern. External references can
also be used in skip patterns: >
:syn region foo start="start \(\I\i*\)" skip="not end \z1" end="end \z1"
@@ -4236,7 +4278,7 @@ If the "maxlines={N}" argument is given, the number of lines that are searched
for a comment or syncing pattern is restricted to N lines backwards (after
adding "minlines"). This is useful if you have few things to sync on and a
slow machine. Example: >
- :syntax sync ccomment maxlines=500
+ :syntax sync maxlines=500 ccomment
<
*:syn-sync-linebreaks*
When using a pattern that matches multiple lines, a change in one line may
@@ -4504,7 +4546,7 @@ mentioned for the default values. See |:verbose-cmd| for more information.
*highlight-args* *E416* *E417* *E423*
There are three types of terminals for highlighting:
term a normal terminal (vt100, xterm)
-cterm a color terminal (MS-DOS console, color-xterm, these have the "Co"
+cterm a color terminal (Windows console, color-xterm, these have the "Co"
termcap entry)
gui the GUI
@@ -4629,6 +4671,8 @@ ctermbg={color-nr} *highlight-ctermbg*
Note that for some color terminals these names may result in the wrong
colors!
+ You can also use "NONE" to remove the color.
+
*:hi-normal-cterm*
When setting the "ctermfg" or "ctermbg" colors for the Normal group,
these will become the colors used for the non-highlighted text.
@@ -4650,7 +4694,7 @@ ctermbg={color-nr} *highlight-ctermbg*
*E419* *E420*
When Vim knows the normal foreground and background colors, "fg" and
"bg" can be used as color names. This only works after setting the
- colors for the Normal group and for the MS-DOS console. Example, for
+ colors for the Normal group and for the Windows console. Example, for
reverse video: >
:highlight Visual ctermfg=bg ctermbg=fg
< Note that the colors are used that are valid at the moment this
@@ -4676,7 +4720,7 @@ font={font-name} *highlight-font*
When setting the font for the "Normal" group, this becomes the default
font (until the 'guifont' option is changed; the last one set is
used).
- The following only works with Motif and Athena, not with other GUIs:
+ The following only works with Motif not with other GUIs:
When setting the font for the "Menu" group, the menus will be changed.
When setting the font for the "Tooltip" group, the tooltips will be
changed.
@@ -4864,11 +4908,6 @@ Menu Current font, background and foreground colors of the menus.
Also used for the toolbar.
Applicable highlight arguments: font, guibg, guifg.
- NOTE: For Motif and Athena the font argument actually
- specifies a fontset at all times, no matter if 'guifontset' is
- empty, and as such it is tied to the current |:language| when
- set.
-
*hl-Scrollbar*
Scrollbar Current background and foreground of the main window's
scrollbars.
@@ -4878,11 +4917,6 @@ Scrollbar Current background and foreground of the main window's
Tooltip Current font, background and foreground of the tooltips.
Applicable highlight arguments: font, guibg, guifg.
- NOTE: For Motif and Athena the font argument actually
- specifies a fontset at all times, no matter if 'guifontset' is
- empty, and as such it is tied to the current |:language| when
- set.
-
==============================================================================
13. Linking groups *:hi-link* *:highlight-link* *E412* *E413*
diff --git a/runtime/doc/tabpage.txt b/runtime/doc/tabpage.txt
index 44e770dc12..70e6953211 100644
--- a/runtime/doc/tabpage.txt
+++ b/runtime/doc/tabpage.txt
@@ -48,8 +48,8 @@ A double click with the mouse in the non-GUI tab pages line opens a new, empty
tab page. It is placed left of the position of the click. The first click
may select another tab page first, causing an extra screen update.
-This also works in a few GUI versions, esp. Win32 and Motif. But only when
-clicking right of the labels.
+This also works in a few GUI versions, esp. Win32. But only when clicking
+right of the labels.
In the GUI tab pages line you can use the right mouse button to open menu.
|tabline-menu|.
@@ -197,22 +197,29 @@ REORDERING TAB PAGES:
Move the current tab page to after tab page N. Use zero to
make the current tab page the first one. Without N the tab
page is made the last one. >
+ :.tabmove " do nothing
:-tabmove " move the tab page to the left
- :tabmove " move the tab page to the right
- :.tabmove " as above
- :+tabmove " as above
+ :+tabmove " move the tab page to the right
:0tabmove " move the tab page to the beginning of the tab
" list
- :$tabmove " move the tab page to the end of the tab list
-<
+ :tabmove 0 " as above
+ :tabmove " move the tab page to the last
+ :$tabmove " as above
+ :tabmove $ " as above
+
:tabm[ove] +[N]
:tabm[ove] -[N]
Move the current tab page N places to the right (with +) or to
- the left (with -).
+ the left (with -). >
+ :tabmove - " move the tab page to the left
+ :tabmove -1 " as above
+ :tabmove + " move the tab page to the right
+ :tabmove +1 " as above
+
Note that although it is possible to move a tab behind the N-th one by using
-:Ntabmove, it is impossible to move it by N places by using :+Ntabmove. For
-clarification what +N means in this context see |[range]|.
+:Ntabmove. And move it by N places by using :+Ntabmove. For clarification what
++N means in this context see |[range]|.
LOOPING OVER TAB PAGES:
@@ -234,7 +241,8 @@ LOOPING OVER TAB PAGES:
current tab page.
{cmd} can contain '|' to concatenate several commands.
{cmd} must not open or close tab pages or reorder them.
- Also see |:windo|, |:argdo| and |:bufdo|.
+ Also see |:windo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|, |:cfdo|
+ and |:lfdo|.
==============================================================================
3. Other items *tab-page-other*
@@ -265,8 +273,8 @@ window on the same buffer and then edit another buffer. Thus ":tabnew"
triggers:
WinLeave leave current window
TabLeave leave current tab page
- TabEnter enter new tab page
WinEnter enter window in new tab page
+ TabEnter enter new tab page
BufLeave leave current buffer
BufEnter enter new empty buffer
@@ -274,8 +282,8 @@ When switching to another tab page the order is:
BufLeave
WinLeave
TabLeave
- TabEnter
WinEnter
+ TabEnter
BufEnter
When entering a new tab page (|:tabnew|), TabNew is triggered before TabEnter
diff --git a/runtime/doc/tagsrch.txt b/runtime/doc/tagsrch.txt
index 7d3697db07..75d820d072 100644
--- a/runtime/doc/tagsrch.txt
+++ b/runtime/doc/tagsrch.txt
@@ -84,11 +84,13 @@ changed, to avoid confusion when using ":tnext". It is changed when using
":tag {ident}".
The ignore-case matches are not found for a ":tag" command when the
-'ignorecase' option is off. They are found when a pattern is used (starting
-with a "/") and for ":tselect", also when 'ignorecase' is off. Note that
-using ignore-case tag searching disables binary searching in the tags file,
-which causes a slowdown. This can be avoided by fold-case sorting the tag
-file. See the 'tagbsearch' option for an explanation.
+'ignorecase' option is off and 'tagcase' is "followic" or when 'tagcase' is
+"match". They are found when a pattern is used (starting with a "/") and for
+":tselect", also when 'ignorecase' is off and 'tagcase' is "followic" or when
+'tagcase' is "match". Note that using ignore-case tag searching disables
+binary searching in the tags file, which causes a slowdown. This can be
+avoided by fold-case sorting the tag file. See the 'tagbsearch' option for an
+explanation.
==============================================================================
2. Tag stack *tag-stack* *tagstack* *E425*
@@ -418,12 +420,13 @@ file "tags". It can also be used to access a common tags file.
The next file in the list is not used when:
- A matching static tag for the current buffer has been found.
- A matching global tag has been found.
-This also depends on the 'ignorecase' option. If it is off, and the tags file
-only has a match without matching case, the next tags file is searched for a
-match with matching case. If no tag with matching case is found, the first
-match without matching case is used. If 'ignorecase' is on, and a matching
-global tag with or without matching case is found, this one is used, no
-further tags files are searched.
+This also depends on whether case is ignored. Case is ignored when
+'ignorecase' is set and 'tagcase' is "followic", or when 'tagcase' is
+"ignore". If case is not ignored, and the tags file only has a match without
+matching case, the next tags file is searched for a match with matching case.
+If no tag with matching case is found, the first match without matching case
+is used. If case is ignored, and a matching global tag with or without
+matching case is found, this one is used, no further tags files are searched.
When a tag file name starts with "./", the '.' is replaced with the path of
the current file. This makes it possible to use a tags file in the directory
@@ -556,8 +559,10 @@ that indicates if the file was sorted. When this line is found, Vim uses
binary searching for the tags file:
!_TAG_FILE_SORTED<Tab>1<Tab>{anything} ~
-A tag file may be case-fold sorted to avoid a linear search when 'ignorecase'
-is on. See 'tagbsearch' for details. The value '2' should be used then:
+A tag file may be case-fold sorted to avoid a linear search when case is
+ignored. (Case is ignored when 'ignorecase' is set and 'tagcase' is
+"followic", or when 'tagcase' is "ignore".) See 'tagbsearch' for details.
+The value '2' should be used then:
!_TAG_FILE_SORTED<Tab>2<Tab>{anything} ~
The other tag that Vim recognizes, but only when compiled with the
diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt
index 618d4e5df9..7d47368ba3 100644
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -1,4 +1,4 @@
-*term.txt* For Vim version 7.4. Last change: 2014 May 13
+*term.txt* For Vim version 7.4. Last change: 2015 Nov 24
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -357,7 +357,7 @@ adjust the various t_ codes. This avoids the problem that the xterm can
produce different codes, depending on the mode it is in (8-bit, VT102,
VT220, etc.). The result is that codes like <xF1> are no longer needed.
Note: This is only done on startup. If the xterm options are changed after
-Vim has started, the escape sequences may not be recognized any more.
+Vim has started, the escape sequences may not be recognized anymore.
*xterm-resize*
Window resizing with xterm only works if the allowWindowOps resource is
@@ -425,11 +425,9 @@ cleared when scrolling).
Unfortunately it is not possible to deduce from the termcap how cursor
positioning should be done when using a scrolling region: Relative to the
beginning of the screen or relative to the beginning of the scrolling region.
-Most terminals use the first method. A known exception is the MS-DOS console
-(pcterm). The 't_CS' option should be set to any string when cursor
-positioning is relative to the start of the scrolling region. It should be
-set to an empty string otherwise. It defaults to "yes" when 'term' is
-"pcterm".
+Most terminals use the first method. The 't_CS' option should be set to any
+string when cursor positioning is relative to the start of the scrolling
+region. It should be set to an empty string otherwise.
Note for xterm users: The shifted cursor keys normally don't work. You can
make them work with the xmodmap command and some mappings in Vim.
@@ -672,10 +670,9 @@ border, the text is scrolled.
A selection can be started by pressing the left mouse button on the first
character, moving the mouse to the last character, then releasing the mouse
button. You will not always see the selection until you release the button,
-only in some versions (GUI, MS-DOS, WIN32) will the dragging be shown
-immediately. Note that you can make the text scroll by moving the mouse at
-least one character in the first/last line in the window when 'scrolloff' is
-non-zero.
+only in some versions (GUI, Windows) will the dragging be shown immediately.
+Note that you can make the text scroll by moving the mouse at least one
+character in the first/last line in the window when 'scrolloff' is non-zero.
In Normal, Visual and Select mode clicking the right mouse button causes the
Visual area to be extended. When 'mousemodel' is "popup", the left button has
@@ -689,9 +686,9 @@ work on systems where the window manager consumes the mouse events when the
alt key is pressed (it may move the window).
*double-click*
-Double, triple and quadruple clicks are supported when the GUI is active,
-for MS-DOS and Win32, and for an xterm (if the gettimeofday() function is
-available). For selecting text, extra clicks extend the selection:
+Double, triple and quadruple clicks are supported when the GUI is active, for
+Windows and for an xterm. For selecting text, extra clicks extend the
+selection:
click select ~
double word or % match *<2-LeftMouse>*
triple line *<3-LeftMouse>*
@@ -747,7 +744,7 @@ Mouse clicks can be mapped. The codes for mouse clicks are:
The X1 and X2 buttons refer to the extra buttons found on some mice. The
'Microsoft Explorer' mouse has these buttons available to the right thumb.
-Currently X1 and X2 only work on Win32 environments.
+Currently X1 and X2 only work on Win32 and X11 environments.
Examples: >
:noremap <MiddleMouse> <LeftMouse><MiddleMouse>
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
deleted file mode 100644
index 65e69a901b..0000000000
--- a/runtime/doc/todo.txt
+++ /dev/null
@@ -1,4903 +0,0 @@
-*todo.txt* For Vim version 7.4. Last change: 2014 Dec 06
-
-
- VIM REFERENCE MANUAL by Bram Moolenaar
-
-
- TODO list for Vim *todo*
-
-This is a veeeery long list of known bugs, current work and desired
-improvements. To make it a little bit accessible, the items are grouped by
-subject. In the first column of the line a classification is used to be able
-to look for "the next thing to do":
-
-Priority classification:
-9 next point release
-8 next release
-7 as soon as possible
-6 soon
-5 should be included
-4 nice to have
-3 consider including
-2 maybe not
-1 probably not
-- unclassified
-
- *votes-for-changes*
-See |develop.txt| for development plans. You can vote for which items should
-be worked on, but only if you sponsor Vim development. See |sponsor|.
-
-Issues can also be entered online: http://code.google.com/p/vim/issues/list
-Updates will be forwarded to the vim_dev maillist. Issues entered there will
-not be repeated below, unless there is extra information.
-
- *known-bugs*
--------------------- Known bugs and current work -----------------------
-
-Patch to fix list range assign crash. (Yukihiro Nakadaira, 2014 Dec 1)
-
-Patch to fix range with user command. (Marcin Szamotulski, 2014 Dec 2)
-Update Dec 6, with support for user commands.
-
-When window number in Ex range is too high, give an error?
-Only when backwards compatible.
-
-:s/\n// doesn't change anything. Since 7.4.232? (Eliseo Martínez, 2014 Nov
-28) Patch on Issue 287
-
-Using vim_snprintf() in window.c can be in a function.
-
-Regexp problems:
-- The NFA engine does not implement the time limit passed to
- nfa_regexec_multi()
-- Very slow with a long line and Ruby highlighting. (John Whitley, 2014 Dec 4)
-- Bug with pattern: '\vblock (\d+)\.\n.*\d+%(\1)@<!\.$'
- (Lech Lorens, 2014 Feb 3)
-- Issue 164: freeze on regexp search.
-- Ignorecase not handled properly for multi-byte characters. (Axel Bender,
- 2013 Dec 11)
-- Using \@> and \?. (Brett Stahlman, 2013 Dec 21) Remark from Marcin Szamotulski
- Remark from Brett 2014 Jan 6 and 7.
-- Difference in NFA and old engine. (Brett Stahlman, 2014 Nov 5)
-- Bug when using \>. (Ramel, 2014 Feb 2) (Aaron Bohannon, 2014 Feb 13)
-- NFA regexp doesn't handle \%<v correctly. (Ingo Karkat, 2014 May 12)
-- Does not work with NFA regexp engine:
- \%u, \%x, \%o, \%d followed by a composing character
-- Bug relating to back references. (Ingo Karkat, 2014 Jul 24)
-- Using back reference before the capturing group sometimes works with the old
- engine, can we do this with the new engine? E.g. with
- "/\%(<\1>\)\@<=.*\%(<\/\(\w\+\)>\)\@=" matching text inside HTML tags.
-- Diff highlighting can be very slow. (Issue 309)
-
-Still using freed memory after using setloclist(). (lcd, 2014 Jul 23)
-More info Jul 24. Not clear why.
-
-Patch to make getregtype() return the right size for non-linux systems.
-(Yasuhiro Matsumoto, 2014 Jul 8)
-Breaks test_eval. Inefficient, can we only compute y_width when needed?
-
-Problem that a previous silent ":throw" causes a following try/catch not to
-work. (ZyX, 2013 Sep 28)
-
-Patch to fix recognizing function name. (Ozaki Kiichi, 2014 Nov 28)
-
-":cd C:\Windows\System32\drivers\etc*" does not work, even though the
-directory exists. (Sergio Gallelli, 2013 Dec 29)
-
-The entries added by matchaddpos() are returned by getmatches() but can't be
-set with setmatches(). (lcd47, 2014 Jun 29)
-
-Gvim: when both Tab and CTRL-I are mapped, use CTRL-I not for Tab.
-
-Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15)
-
-Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
-
-Change behavior of v:hlsearch? Patch from Christian, 2014 Oct 22.
-
-Patch to recover from X server restart: hint on Issue 203 (2014 Nov 21 18:44)
-
-MS-Windows: When editing a file with a leading space, writing it uses the
-wrong name. (Aram, 2014 Nov 7) Vim 7.4.
-
-Add LessCss support. (Jenoma / Alessandro Vioni, 2014 Nov 24)
-Now with updated license, Nov 24.
-
-patch to remove FEAT_OSFILETYPE from fileio.c. (Christian, 2014 Nov 12)
-
-Value returned by virtcol() changes depending on how lines wrap. This is
-inconsistent with the documentation.
-
-Ukrainian vimtutor. (Issue 288)
-
-Regenerate the Unicode tables in mbyte.c.
-Diff from ZyX, 2014 Dec 6.
-
-Patch to fix relative numbers. (Christian Brabandt, 2014 Nov 17)
-Update Nov 26.
-
-Patch to fix wrong formatting if 'linebreak' is set. (Christian Brabandt, 2014
-Nov 12)
-
-Patch to avoid recognizing polkit as hog files. (Issue 292)
-
-Patch to support hex values for setting option value.
-(Zyx, 2015 Nov 6)
-
-On MS-Windows running tests with Mercurial has problems when the fileformat of
-the input files are changed. (Ken Takata, Taro Muraoka, 2014 Sep 25)
-Update Nov 5.
-
-MS-Windows: Crash opening very long file name starting with "\\".
-(Christian Brock, 2012 Jun 29)
-
-Patch for this from Marcin Szamotulski, 2014 Dec 28:
-8 Make the # register writable, so that it can be restored after jumping
- around in windows.
-
-Using CTRL-L while popup menu is visible behaves like CTRL-P, which is wrong.
-Patch by Yasuhiro Matsumoto, 2015 Jan 5.
-Is this right? Comment from Amadeus Demarzi.
-Another patch from Christian, Jan 6.
-Comment from Hirohito Higashi, Jan 6.
-
-Cursorline background color not mixed with character highlight.
-Patch by Yasuhiro Matsumoto, 2014 Dec 3.
-
-Problem using diff syntax with cp932 encoding. Idea from Yasuhiro Matsumoto,
-patch from Ken Takata (2014 Nov 6)
-
-ml_updatechunk() is slow when retrying for another encoding. (John Little,
-2014 Sep 11)
-
-Patch to add a different escape sequence for replace mode.
-(Omar Sandoval, 2014 Nov 30)
-
-Calling setreg() with an empty list doesn't work.
-Patch by Yasuhiro Matsumoto, 2014 Dec 14.
-
-Extended file attributes lost on write (backupcopy=no). Issue 306.
-
-Window height computed incorrectly when Vim is minimized.
-Patch to fix this. (Ingo Karkat, 2014 Dec 19)
-
-Patch to allow values greater than 255 for ctermfg/ctermbg on Windows.
-(Yasuhiro Matsumoto, 2014 Dec 5)
-
-Mixup of highlighting when there is a match and SpellBad. (ZyX, 2015 Jan 1)
-
-When 'balloonexpr' returns a list the result has a trailing newline.
-Just remove one trailing newline. (lcd, 2014 Oct 17)
-
-Make comments in the test Makefile silent. (Kartik Agaram, 2014 Sep 24)
-
-Result of systemlist() does not show whether text ended in line break.
-(Bjorn Linse, 2014 Nov 27)
-
-When in 'comments' "n:x" follows after three-part comment directly it repeats
-any one-character from the previous line. (Kartik Agaram, 2014 Sep 19)
-
-Syntax highlighting slow (hangs) in SASS file. (Niek Bosch, 2013 Aug 21)
-
-Patch to add the EndOfBuffer highlight group, used instead of NonText for "~"
-lines. (Marco Hinz, 2014 Nov 2)
-
-Adding "~" to 'cdpath' doesn't work for completion? (Davido, 2013 Aug 19)
-
-Plugins need to make a lot of effort, lots of mappings, to know what happened
-before pressing the key that triggers a plugin action. How about keeping the
-last N pressed keys, so that they do not need to be mapped?
-
-":q!" should reset modified flag for current buffer, if another buffer is
-modified no need to abandon it again.
-Patch from Yasuhiro Matsumoto, 2014 Nov 21.
-Update from Hirohito Higashi, 2014 Nov 21.
-With test, Nov 23.
-
-Wrong scrolling when using incsearch. Patch by Christian Brabandt, 2014 Dec 4.
-Is this a good solution?
-
-Can assign to s:type when a function s:type has been defined.
-Also the other way around: define a function while a variable with that name
-was already defined.
-(Yasuhiro Matsumoto, 2014 Nov 3)
-
-Patch to make closed folds line up. (Charles Campbell, 2014 Sep 12)
-
-Patch for building a 32bit Vim with 64bit MingW compiler.
-(Michael Soyka, 2014 Oct 15)
-
-Delete old code in os_msdos.c, mch_FullName().
-
-Redo only remembers the last change. Could use "{count}g." to redo an older
-change. How does the user know which change? At least have a way to list
-them: ":repeats".
-
-Patch for glob(), adding slash to normal files. (Ingo Karkat, 2014 Dec 22)
-
-Using "." to repeat an Ex command puts that command in history. Probably
-should not happen. If the command is the result of a mapping it's not put in
-history either. (Jacob Niehus, 2014 Nov 2)
-Patch from Jacob, Nov 2.
-
-"hi link" does not respect groups with GUI settings only. (Mark Lodato, 2014
-Jun 8)
-
-Bug: Autocompleting ":tag/pat" replaces "/pat" with a match but does not
-insert a space. (Micha Mos, 2014 Nov 7)
-
-Patch to add the :bvimgrep command. (Christian Brabandt, 2014 Nov 12)
-Update Dec 6.
-
-Patch to add argument to :cquit. (Thinca, 2014 Oct 12)
-
-No error for missing endwhile. (ZyX, 2014 Mar 20)
-
-start_global_changes() plus end_global_changes() causes problem for
-clip_unnamed_plus. (Jason Pleau, 2014 Sep 12)
-
-Patch to add :arglocal and :arglists. (Marcin Szamotulski, 2014 Aug 6)
-
-PHP syntax is extremely slow. (Anhad Jai Singh, 2014 Jan 19)
-
-Spell files use a latin single quote. Unicode also has another single quote:
-0x2019. (Ron Aaron, 2014 Apr 4)
-New OpenOffice spell files support this with ICONV. But they are not
-compatible with Vim spell files. The old files can no longer be downloaded.
-
-Patch to make FocusGained and FocusLost work in modern terminals. (Hayaki
-Saito, 2013 Apr 24)
-
-Win32: patch to use 64 bit stat() if possible. (Ken Takata, 2014 May 12)
-More tests May 14. Update May 29. Update Aug 10.
-
-The garbage collector may use too much stack. Make set_ref_in_item()
-iterative instead of recursive. Test program by Marc Weber (2013 Dec 10)
-Patch by Ben Fritz, 2014 Jun 22.
-Related: Vim hangs when freeing a lot of objects. Patch by Yasuhiro
-Matsumoto, 2014 Aug 26.
-
-Idea: For a window in the middle (has window above and below it), use
-right-mouse-drag on the status line to move a window up/down without changing
-its height? It's like dragging the status bar above it at the same time.
-
-Can we make ":unlet $VAR" use unsetenv() to delete the env var?
-What for systems that don't have unsetenv()?
-
-Patch to add a :domodeline command. (Christian Brabandt, 2014 Oct 21)
-
-This does not give an error: (Andre Sihera, 2014 Mar 21)
- vim -u NONE 1 2 3 -c 'bufdo if 1 | echo 1'
-This neither: (ZyX)
- vim -u NONE 1 2 3 -c 'bufdo while 1 | echo 1'
-
-'viewdir' default on MS-Windows is not a good choice, it's a system directory.
-Change 'viewdir' to "$HOME/vimfiles/view" and use 'viewdiralt' to also read
-from?
-
-Problem with upwards search on Windows (works OK on Linux). (Brett Stahlman,
-2014 Jun 8)
-
-Patch to load TCL dynamically. (Ken Takata, 2014 Sep 20)
-
-Include a plugin manager with Vim? Neobundle seems to be the best currently.
-Long message about this from ZyX, 2014 Mar 23. And following replies.
-Also see http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html
-User view:
-- Support multiple sources, basically any http:// URL. Be able to look into
- the files before deciding to install.
-- Be able to try out a plugin and remove it again with (almost) no traces.
-- Each plugin needs a "manifest" file that has the version, dependencies
- (including Vim version and features), conflicts, list of files, etc.
- Updater uses that to decide what/how to update.
- Dependencies can use a URL for specific versions, or short name for scripts
- on vim.org.
-- Once a plugin is installed it remembers where it came from, updater checks
- there. Can manually update when really needed.
-- Must be possible to install for one user. Also system wide?
-- Can edit plugin config with Vim. Can temporarily disable a plugin.
-- Run the update manually, find latest version and install.
-- Be able to download without special tools, must work for 95% of users.
-Implementation:
-- Avoid the 'runtimepath' getting long. Need some other way to keep each
- plugin separate.
-- When installing or updating, first figure out what needs to be done. This
- may involve recursively fetching manifest files for dependencies. Then show
- the user what's going to change and ask for OK.
-- Scripts on Vim.org must be able to consist of several files. Is zip format
- sufficient? Upload the manifest? Or refer to a site that has the manifest?
-- Best is to fetch individual files or use a Vimball. Reduces dependency on
- tools that might be missing and allows inspection of the files before
- installing.
-Out of scope:
-- Overview of plugins, ratings, comments, etc. That's another world.
-- Development work on plugins (although diff with distributed version would be
- useful).
-
-Setting the spell file in a session only reads the local additions, not the
-normal spell file. (Enno Nagel, 2014 Mar 29)
-
-CTRL-] in Visual mode uses the selected text as a tag. This does not work
-when preceded with CTRL-W. (Patrick Hemmer, 2014 Jun 28)
-
-When typing the first character of a command, e.g. "f", then using a menu, the
-menu item doesn't work. Clear typeahead when using a menu?
-
-Editing an ascii file as ucs-2 or ucs-4 causes display errors.
-(ZyX, 2014 Mar 30)
-
-":Next 1 some-arg" does not complain about trailing argument. Also for
-various other commands. (ZyX, 2014 Mar 30)
-
-patch to skip sort if no line matches the expression.
-(Christian Brabandt, 2014 Jun 25)
-
-Patch to add sortuniq(). (Cade Forester, 2014 Mar 19)
-Or add uniq() instead? Patch by lcd47, but it has problems.
-
-Patch to support sorting on floating point number. (Alex Jakushev, 2010 Oct
-30)
-
-Patch to support expression argument to sort() instead of a function name.
-Yasuhiro Matsumoto, 2013 May 31.
-Or should we add a more general mechanism, like a lambda() function?
-Patch by Yasuhiro Matsumoto, 2014 Sep 16.
-
-Patch to fix display of listchars on the cursorline. (Nayuri Aohime, 2013)
-Update suggested by Yasuhiro Matsumoto, 2014 Nov 25:
-https://gist.github.com/presuku/d3d6b230b9b6dcfc0477
-
-Patch for XDG base directory support. (Jean François Bignolles, 2014 Mar 4)
-Remark on the docs. Should not be a compile time feature. But then what?
-
-Completion of ":e" is ":earlier", should be ":edit". Complete to the matching
-command instead of doing this alphabetically. (Mikel Jorgensen)
-
-Patch to add v:completed_item. (Shougo Matsu, 2013 Nov 29).
-
-Patch to get MSVC version in a nicer way. (Ken Takata, 2014 Jul 24)
-
-Patch to define macros for hardcoded values. (Elias Diem, 2013 Dec 14)
-
-Several syntax file match "^\s*" which may get underlined if that's in the
-highlight group. Add a "\zs" after it?
-
-Patch to fix temp directories for Windows, so that it works without tweaking.
-Issue 28.
-
-Go through more coverity reports.
-
-Patch to add ":undorecover", get as much text out of the undo file as
-possible. (Christian Brabandt, 2014 Mar 12, update Aug 22)
-
-Updated spec ftplugin. (Matěj Cepl, 2013 Oct 16)
-
-Patch to right-align signs. (James Kolb (email james), 2013 Sep 23)
-
-Patch to handle integer overflow. (Aaron Burrow, 2013 Dec 12)
-
-With "$" in 'cpoptions' the popup menu isn't fully drawn. (Matti Niemenmaa,
-2013 Sep 5)
-
-Patch to add "ntab" item in 'listchars' to repeat first character. (Nathaniel
-Braun, pragm, 2013 Oct 13) A better solution 2014 Mar 5.
-
-Undo message is not always properly displayed. Patch by Ken Takata, 2013 oct
-3. Doesn't work properly according to Yukihiro Nakadaira.
-
-/[b-a] gives error E16, should probably be E769.
-
-7 Windows XP: When using "ClearType" for text smoothing, a column of yellow
- pixels remains when typing spaces in front of a "D" ('guifont' set to
- "lucida_console:h8").
-Patch by Thomas Tuegel, also for GTK, 2013 Nov 24
-
-:help gives example for z?, but it does not work. m? and t? do work.
-
-Python: Extended funcrefs: use func_T* structure in place of char_u* function
-names.
-(ZyX, 2013 Jul 15, update Sep 22, 24, 28; Update 2013 Dec 15, 2014 Jan 6)
-Also fixes Bug: E685 error for func_unref(). (ZyX, 2010 Aug 5)
-
-Patch to add funcref to Lua. (Luis Carvalho, 2013 Sep 4)
-With tests: Sep 5.
-
-Patch to fix that on suckless Terminal mousewheel up does not work.
-(Ralph Eastwood, 2013 Nov 25)
-
-Discussion about canonicalization of Hebrew. (Ron Aaron, 2011 April 10)
-
-Checking runtime scripts: Thilo Six, 2012 Jun 6.
-
-When evaluating expression in backticks, autoload doesn't work.
-(Andy Wokula, 2013 Dec 14)
-
-Using <nr>ifoobar<esc> can slow down Vim. Patch by Christian Brabandt, 2013
-Dec 13.
-
-Fold can't be opened after ":move". (Ein Brown)
-Patch from Christian Brabandt doesn't fix it completely.
-
-Patch from Christian Brabandt to preserve upper case marks when wiping out a
-buffer. (2013 Dec 9)
-
-Patch for drag&drop reordering of GUI tab pages reordering.
-(Ken Takata, 2013 Nov 22, second one, also by Masamichi Abe)
-
-Patch to add option that tells whether small deletes go into the numbered
-registers. (Aryeh Leib Taurog, 2013 Nov 18)
-
-Javascript file where indent gets stuck on: GalaxyMaster, 2012 May 3.
-
-The BufUnload event is triggered when re-using the empty buffer.
-(Pokey Rule, 2013 Jul 22)
-Patch by Marcin Szamotulski, 2013 Jul 22.
-
-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.
-
-Patch to allow more types in remote_expr(). (Lech Lorens, 2014 Jan 5)
-Doesn't work for string in list. Other way to pass all types of variables
-reliably?
-
-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.
-
-Problem caused by patch 7.3.638: window->open does not update window
-correctly. Issue 91.
-
-Patch to add {lhs} to :mapclear: clear all maps starting with {lhs}.
-(Christian Brabandt, 2013 Dec 9)
-
-Exception caused by argument of return is not caught by try/catch.
-(David Barnett, 2013 Nov 19)
-
-8 'backupdir' and 'directory' should use $TMPDIR, $TMP and/or $TEMP when
- defined.
-Issue 28.
-
-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)
-
-Patch to add "Q" and "A" responses to interactive :substitute. They are
-carried over when using :global. (Christian Brabandt, 2013 Jun 19)
-
-Bug with 'cursorline' in diff mode. Line being scrolled into view gets
-highlighted as the cursor line. (Alessandro Ivaldi, 2013 Jun 4)
-
-Two highlighting bugs. (ZyX, 2013 Aug 18)
-
-Patch to add the bufferlist() function. (Yegappan Lakshmanan, 2013 May 5)
-May 17: with winlist() and tabpagelist().
-May 19: with local variables.
-May 28: with options
-
-Patch to support 'u' in interactive substitute. (Christian Brabandt, 2012 Sep
-28) With tests: Oct 9.
-
-Patch from Christian Brabandt to make the "buffer" argument for ":sign place"
-optional. (2013 Jul 12)
-
-Dialog is too big on Linux too. (David Fishburn, 2013 Sep 2)
-
-Patch to allow setting w:quickfix_title via setqflist() and setloclist()
-functions. (Christian Brabandt, 2013 May 8, update May 21)
-Patch to add getlocstack() / setlocstack(). (Christian Brabandt, 2013 May 14)
-Second one. Update May 22.
-Update by Daniel Hahler, 2014 Jul 4, Aug 14, Oct 14, Oct 15.
-
-Patch to make fold updates much faster. (Christian Brabandt, 2012 Dec)
-
-Issue 54: document behavior of -complete, also expands arg.
-
-- 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.
-
-Bug: findfile("any", "file:///tmp;") does not work.
-
-'ff' is wrong for one-line file without EOL. (Issue 77)
-
-Patch to set antialiasing style on Windows. (Ondrej Balaz, 2013 Mar 14)
-Needs a different check for CLEARTYPE_QUALITY.
-
-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.
-
-Patch to have text objects defined by arbitrary single characters. (Daniel
-Thau, 2013 Nov 20, 2014 Jan 29, 2014 Jan 31)
-Ben Fritz: problem with 'selection' set to "exclusive".
-Updated to current Vim, not quite right yet. (Ben Fritz, 2014 Mar 27)
-
-Patch to select the next or previous text object if there isn't one under the
-cursor. (Daniel Thau, 2013 Nov 20)
-
-patch to add "combine" flag to syntax commands. (so8res, 2012 Dec 6)
-
-Bug caused by patch 7.3.1288? Issue 183.
-I can't reproduce it.
-
-Syntax update problem in one buffer opened in two windows, bottom window is
-not correctly updated. (Paul Harris, 2012 Feb 27)
-
-Patch to add assignments in cscope. (Uli Meis, Estabrooks, 2012 Sep 1)
-Alternate patch by Gary Johnson, Sep 4.
-
-Patch to add getsid(). (Tyru, 2011 Oct 2) Do we want this? Update Oct 4.
-Or use expand('<sid>')?
-
-Patch to make confirm() display colors. (Christian Brabandt, 2012 Nov 9)
-
-Patch to add functions for signs. (Christian Brabandt, 2013 Jan 27)
-
-Do we need some way (option) to show the sign column even when there are no
-signs? Patch by Christian Brabandt, 2013 Aug 22.
-
-Patch to remove flicker from popup menu. (Yasuhiro Matsumoto, 2013 Aug 15)
-
-Patch to add 'completeselect' option. Specifies how to select a candidate in
-insert completion. (Shougo, 2013 May 29)
-Update to add to existing 'completeopt'. 2013 May 30
-
-Problem with refresh:always in completion. (Tyler Wade, 2013 Mar 17)
-
-b:undo_ftplugin cannot call a script-local function. (Boris Danilov, 2013 Jan
-7)
-
-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, like with
-vim.bindeval().
-
-Patch for :tabcloseleft, after closing a tab go to left tab. (William Bowers,
-2012 Aug 4)
-
-Patch to improve equivalence classes in regexp patterns.
-(Christian Brabandt, 2013 Jan 16, update Jan 17)
-
-Patch with suggestions for starting.txt. (Tony Mechelynck, 2012 Oct 24)
-But use Gnome instead of GTK?
-
-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)
-
-Issue 72: 'autochdir' causes problems for :vimgrep.
-
-Session file creation: 'autochdir' causes trouble. Keep it off until after
-loading all files.
-
-Win32: When 'autochdir' is on and 'encoding' is changed, files on the command
-line are opened again, but from the wrong directory. Apply 'autochdir' only
-after starting up?
-
-Patch to add ":ldo" and ":cdo", execute commands over quickfix list and
-location list. (Yegappan Lakshmanan, 2013 Jun 2)
-
-8 "stl" and "stlnc" in 'fillchars' don't work for multi-byte characters.
- Patch by Christian Wellenbrock, 2013 Jul 5.
-
-MS-Windows resizing problems:
-- Windows window on screen positioning: Patch by Yukihiro Nakadaira, 2012 Jun
- 20. Uses getWindowRect() instead of GetWindowPlacement()
-- Win32: When the taskbar is at the top of the screen creating the tabbar
- causes the window to move unnecessarily. (William E. Skeith III, 2012 Jan
- 12) Patch: 2012 Jan 13 Needs more work (2012 Feb 2)
-
-Patch to use Modern UI 2.0 for the Nsis installer. (Guopeng Wen, 2010 Jul 30)
-Latest version: 2011 May 18
-8 Windows install with NSIS: make it possible to do a silent install, see
- http://nsis.sourceforge.net/Docs/Chapter4.html#4.12
- Version from Guopeng Wen that does this (2010 Dec 27)
-Alternative: MSI installer: https://github.com/petrkle/vim-msi/
-Or the one on Issue 279
-
-'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)
-
-Patch to add tagfunc(). Cleaned up by Christian Brabandt, 2013 Jun 22.
-
-Help for 'b:undo_indent'. (Thilo Six, 2012 May 28)
-Also question if examples are correct.
-
-The input map for CTRL-O in mswin.vim causes problems after CTRL-X CTRL-O.
-Suggestion for another map. (Philip Mat, 2012 Jun 18)
-But use "gi" instead of "a". Or use CTRL-\ CTRL-O.
-
-Patch to support user name completion on MS-Windows. (Yasuhiro Matsumoto, 2012
-Aug 16)
-
-When there are no command line arguments ":next" and ":argu" give E163, which
-is confusing. Should say "the argument list is empty".
-
-xterm supports escape sequences to mark a paste operation. Need to be
-enabled. (Bruno Sutic, 2014 Jul 11) How to know the terminal supports this?
-
-Patch to have the fold and sign column and at the last line of the buffer.
-(Marco Hinz, 2014 Sep 25)
-Alternate suggestion: let all columns continue, also the number column.
-
-Patch to add tests for if_xcmdsrv.c., Jul 8, need some more work. (Brian Burns)
-New tests Jul 13. Update Jul 17. Discussion Jul 18.
-
-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 to list user digraphs. (Christian Brabandt, 2012 Apr 14)
-
-Patch to add digraph() function. (Christian Brabandt, 2013 Aug 22, update Aug
-24)
-
-Patch for input method status. (Hirohito Higashi, 2012 Apr 18)
-
-Update Vim app icon (for Gnome). (Jakub Steiner, 2013 Dec 6)
-
-Patch to use .png icons for the toolbar on MS-Windows. (Martin Gieseking, 2013
-Apr 18)
-
-":cd" doesn't work when current directory path contains "**".
-finddir() has the same problem. (Yukihiro Nakadaira, 2012 Jan 10)
-Requires a rewrite of the file_file_in_path code.
-
-Should use has("browsefilter") in ftplugins. Requires patch 7.3.593.
-
-Update for vim2html.pl. (Tyru, 2013 Feb 22)
-
-Patch to sort functions starting with '<' after others. Omit dict functions,
-they can't be called. (Yasuhiro Matsumoto, 2011 Oct 11)
-
-Patch to pass list to or(), and() and xor(). (Yasuhiro Matsumoto, 2012 Feb 8)
-
-Patch to improve "it" and "at" text object matching. (Christian Brabandt, 2011
-Nov 20)
-
-`] moves to character after insert, instead of the last inserted character.
-(Yukihiro Nakadaira, 2011 Dec 9)
-
-Plugin for Modeleasy. (Massimiliano Tripoli, 2011 Nov 29)
-
-BufWinLeave triggers too late when quitting last window in a tab page. (Lech
-Lorens, 2012 Feb 21)
-
-Patch for 'transparency' option. (Sergiu Dotenco, 2011 Sep 17)
-Only for MS-Windows. No documentation. Do we want this?
-
-Patch to support cursor shape in Cygwin console. (Ben bgold, 2011 Dec 27)
-
-Patch to support UTF-8 for Hangul. (Shawn Y.H. Kim, 2011 May 1)
-Needs more work. Pinged 2012 Jan 4.
-
-Issue 64: when 'incsearch' is on can't paste LF on command line.
-
-On MS-Windows a temp dir with a & init causes system() to fail. (Ben Fritz,
-2012 Jun 19)
-
-'cursorline' is displayed too short when there are concealed characters and
-'list' is set. (Dennis Preiser)
-Patch 7.3.116 was the wrong solution.
-Christian Brabandt has another incomplete patch. (2011 Jul 13)
-
-With concealed text mouse click doesn't put the cursor in the right position.
-(Herb Sitz) Fix by Christian Brabandt, 2011 Jun 16. Doesn't work properly,
-need to make the change in where RET_WIN_BUF_CHARTABSIZE() is called.
-
-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)
-
-The :syntax cchar value can only be a single character. It would be useful to
-support combining characters. (Charles Campbell)
-
-'cursorline' works on a text line only. Add 'cursorscreenline' for
-highlighting the screen line. (Christian Brabandt, 2012 Mar 31)
-
-Win32: Patch to use task dialogs when available. (Sergiu Dotenco, 2011 Sep 17)
-New feature, requires testing. Made some remarks.
-
-Win32: Patch for alpha-blended icons and toolbar height. (Sergiu Dotenco, 2011
-Sep 17) Asked for feedback from others.
-
-Win32: Cannot cd into a directory that starts with a space. (Andy Wokula, 2012
-Jan 19)
-
-Need to escape $HOME on Windows? (ZyX, 2011 Jul 21, discussion 2013 Jul 4)
-Can't simply use a backslash, \$HOME has a different meaning already.
-Would be possible to use $$HOME where $HOME is to be used.
-
-"2" in 'formatoptions' not working in comments. (Christian Corneliussen, 2011
-Oct 26)
-
-Bug in repeating Visual "u". (Lawrence Kesteloot, 2010 Dec 20)
-
-With "unamedplus" in 'clipboard' pasting in Visual mode causes error for empty
-register. (Michael Seiwald, 2011 Jun 28) I can't reproduce it.
-
-Windows keys not set properly on Windows 7? (cncyber, 2010 Aug 26)
-
-When using a Vim server, a # in the path causes an error message.
-(Jeff Lanzarotta, 2011 Feb 17)
-
-Setting $HOME on MS-Windows is not very well documented. Suggestion by Ben
-Fritz (2011 Oct 27).
-
-Bug: Windows 7 64 bit system freezes when 'clipboard' set to "unnamed" and
-doing ":g/test/d". Putting every delete on the clipboard? (Robert Chan, 2011
-Jun 17)
-
-When there is a ">" in a line that "gq" wraps to the start of the next line,
-then the following line will pick it up as a leader. Should get the leader
-from the first line, not a wrapped line. (Matt Ackeret, 2012 Feb 27)
-
-Using ":break" or something else that stops executing commands inside a
-":finally" does not rethrow a previously uncaught exception. (ZyX, 2010 Oct
-15)
-
-Vim using lots of memory when joining lines. (John Little, 2010 Dec 3)
-
-BT regexp engine: After trying a \@> match and failing, submatches are not
-cleared. See test64.
-
-Changes to manpage plugin. (Elias Toivanen, 2011 Jul 25)
-
-Patch to make "z=" work when 'spell' is off. Does this have nasty side
-effects? (Christian Brabandt, 2012 Aug 5, Update 2013 Aug 12)
-Would also need to do this for spellbadword() and spellsuggest().
-
-Patch for variable tabstops. On github (Christian Brabandt, 2014 May 15)
-Update Aug 16 (email).
-
-On 64 bit MS-Windows "long" is only 32 bits, but we sometimes need to store a
-64 bits value. Change all number options to use nropt_T and define it to the
-right type.
-
-string() can't parse back "inf" and "nan". Fix documentation or fix code?
-(ZyX, 2010 Aug 23)
-
-Make 'formatprg' global-local. (Sung Pae)
-
-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.
-When a script contains "redir => s:foo" but doesn't end redirection, a
-following "redir" command gives an error for not being able to access s:foo.
-(ZyX, 2011 Mar 27)
-
-When setqflist() uses a filename that triggers a BufReadCmd autocommand Vim
-doesn't jump to the correct line with :cfirst. (ZyX, 2011 Sep 18)
-
-Behavior of i" and a" text objects isn't logical. (Ben Fritz, 2013 Nov 19)
-
-7 Make "ga" show the digraph for a character, if it exists.
-Patch from Christian Brabandt, 2011 Aug 19.
-
-maparg() does not show the <script> flag. When temporarily changing a
-mapping, how to restore the script ID?
-
-Bug in try/catch: return with invalid compare throws error that isn't caught.
-(ZyX, 2011 Jan 26)
-
-When setting a local option value from the global value, add a script ID that
-indicates this, so that ":verbose set" can give a hint. Check with options in
-the help file.
-
-After patch 7.3.097 still get E15. (Yukihiro Nakadaira, 2011 Jan 18)
-Also for another example (ZyX, 2011 Jan 24)
-
-Build problem with small features on Mac OS X 10.6. (Rainer, 2011 Jan 24)
-
-"0g@$" puts '] on last byte of multi-byte. (ZyX, 2011 Jan 22)
-
-Patch to addd TextDeletePost and TextYankPost events. (Philippe Vaucher, 2011
-May 24) Update May 26.
-
-Patch for :tabrecently. (Hirokazu Yoshida, 2012 Jan 30)
-
-Problem with "syn sync grouphere". (Gustavo Niemeyer, 2011 Jan 27)
-
-Loading autoload script even when usage is inside "if 0". (Christian Brabandt,
-2010 Dec 18)
-
-With a filler line in diff mode, it isn't displayed in the column with line
-number, but it is in the sign column. Doesn't look right. (ZyX 2011 Jun 5)
-Patch by Christian Brabandt, 2011 Jun 5. Introduces new problems.
-
-Add jump() function. (Marcin Szamotulski, 2013 Aug 29)
-Is this needed? CTRL-O and CTRL-I do the same, just more difficult to use.
-
-8 Add a command to jump to the next character highlighted with "Error".
-Patch by Christian Brabandt, uses ]e [e ]t and [t. 2011 Aug 9.
-
-8 Add an event like CursorHold that is triggered repeatedly, not just once
- after typing something.
-Need for CursorHold that retriggers. Use a key that doesn't do anything, or a
-function that resets did_cursorhold.
-Patch by Christian Brabandt, 2011 May 6.
-
-Add event for when the text scrolls. A bit like CursorMoved. Also a similar
-one for insert mode. Use the event in matchparen to update the highlight if
-the match scrolls into view.
-
-7 Use "++--", "+++--" for different levels instead of "+---" "+----".
-Patch by Christian Brabandt, 2011 Jul 27.
-Update by Ben Fritz, with fix for TOhtml. (2011 Jul 30)
-
-9 Add %F to 'errorformat': file name without spaces. Useful on Unix to
- avoid matching something up to a time 11:22:33.
-Patch by Christian Brabandt, 2011 Jul 27.
-
-Patch to add up to 99 match groups. (Christian Brabandt, 2010 Dec 22)
-Also add named groups: \%{name}(re) and \%{name}g
-
-In the sandbox it's not allowed to do many things, but it's possible to change
-or set variables. Add a way to prevent variables from being changed in the
-sandbox? E.g.: ":protect g:restore_settings".
-
-Win32: tear-off menu does not work when menu language is German. (Markus
-Bossler, 2011 Mar 2) Fixed by 7.3.095?
-
-Version of netbeans.c for use with MacVim. (Kazuki Sakamoto, 2010 Nov 18)
-
-7.3.014 changed how backslash at end of line works, but still get a NUL when
-there is one backslash. (Ray Frush, 2010 Nov 18) What does the original ex
-do?
-
-Searching mixed with Visual mode doesn't redraw properly. (James Vega, 2010 Nov
-22)
-
-New esperanto spell file can't be processed. (Dominique Pelle, 2011 Jan 30)
-- move compflags to separate growarray?
-- instead of a regexp use a hashtable. Expand '?', '*', '+'. What would be
- the maximum repeat for * and +?
-
-"L'Italie" noted as a spell error at start of the sentence. (Dominique Pelle,
-2011 Feb 27)
-
-Editing a file with a ^M with 'ff' set to "mac", opening a help file, then the
-^M is displayed as ^J sometimes. Getting 'ff' value from wrong window/buffer?
-
-'colorcolumn' has higher priority than hlsearch. Should probably be the other
-way around. (Nazri Ramliy, 2013 Feb 19)
-
-When Vim is put in the background (SIGTSTP) and then gets a SIGHUP it doesn't
-exit. It exists as soon as back in the foreground. (Stephen Liang, 2011 Jan
-9) Caused by vim_handle_signal(SIGNAL_BLOCK); in ui.c.
-
-g` not working correctly when using :edit. It works OK when editing a file on
-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)
-
-Patch to add FoldedLineNr highlighting: different highlighting for the line
-number of a closed fold. (eXerigumo Clanjor, 2013 Jul 15)
-
-Regexp engine performance:
-- Profiling:
- ./vim -u NONE -s ~/vim/test/ruby.vim
- ./vim -u NONE -s ~/vim/test/loop.vim
- ./vim -u NONE -s ~/vim/test/alsa.vim
- ./vim -s ~/vim/test/todo.vim
- ./vim -s ~/vim/test/xml.vim
- Dominique Pelle: xmlSyncDT is particularly slow (Jun 7)
-- More test files from the src/pkg/regexp/testdata directory in the Go repo.
-- Performance tests:
- - Using asciidoc syntax. (Marek Schimara, 2013 Jun 6)
- - ~/vim/text/FeiqCfg.xml (file from Netjune)
- - ~/vim/text/edl.svg (also XML)
- - glts has five tests. (May 25)
- - ~/vim/test/slowsearch
- - ~/vim/test/rgb.vim
- - 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.
-
-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
-the system encoding (usually utf-8).
-
-Patch to add GUI colors to the terminal, when it supports it. (ZyX, 2013 Jan
-26, update 2013 Dec 14, another 2014 Nov 22)
-
-Problem producing tags file when hebrew.frx is present. It has a BOM.
-Results in E670. (Tony Mechelynck, 2010 May 2)
-
-'beval' option should be global-local.
-
-setpos() does not restore cursor position after :normal. (Tyru, 2010 Aug 11)
-
-7 The 'directory' option supports changing path separators to "%" to make
- file names unique, also support this for 'backupdir'. (Mikolaj Machowski)
- Patch by Christian Brabandt, 2010 Oct 21.
-
-With "tw=55 fo+=a" typing space before ) doesn't work well. (Scott Mcdermott,
-2010 Oct 24)
-
-Patch to add random number generator. (Hong Xu, 2010 Nov 8, update Nov 10)
-Alternative from Christian Brabandt. (2010 Sep 19)
-
-Messages in message.txt are highlighted as examples.
-
-When using cp850 the NBSP (0xff) is not drawn correctly. (Brett Stahlman, 2010
-Oct 22) 'isprint' is set to "@,161-255".
-
-":echo "\x85" =~# '[\u0085]'" returns 1 instead of 0. (ZyX, 2010 Oct 3)
-
-'cindent' not correct when 'list' is set. (Zdravi Korusef, 2010 Apr 15)
-
-C-indenting: A matching { in a comment is ignored, but intermediate { are not
-checked to be in a comment. Implement FM_SKIPCOMM flag of findmatchlimit().
-Issue 46.
-
-Mac with X11: clipboard doesn't work properly. (Raf, 2010 Aug 16)
-
-Using CompilerSet doesn't record where an option was set from. E.g., in the
-gcc compiler plugin. (Gary Johnson, 2010 Dec 13)
-
-":helpgrep" does not put the cursor in the correct column when preceded by
-accented character. (Tony Mechelynck, 2010 Apr 15)
-
-Don't call check_restricted() for histadd(), setbufvar(), settabvar(),
-setwinvar().
-
-Patch for GVimExt to show an icon. (Dominik Riebeling, 2010 Nov 7)
-
-When writing a file > 2Gbyte, the reported number of bytes is negative.
-(Antonio Colombo, 2010 Dec 18)
-
-Patch: Let rare word highlighting overrule good word highlighting.
-(Jakson A. Aquino, 2010 Jul 30, again 2011 Jul 2)
-
-When 'lines' is 25 and 'scrolloff' is 12, "j" scrolls zero or two lines
-instead of one. (Constantin Pan, 2010 Sep 10)
-
-Gui menu edit/paste in block mode insert only inserts in one line (Bjorn
-Winckler, 2011 May 11)
-Requires a map mode for Insert mode started from blockwise Visual mode.
-
-Writing nested List and Dict in viminfo gives error message and can't be read
-back. (Yukihiro Nakadaira, 2010 Nov 13)
-
-Problem with cursor in the wrong column. (SungHyun Nam, 2010 Mar 11)
-Additional info by Dominique Pelle. (also on 2010 Apr 10)
-
-CreateFile and CreateFileW are used without sharing, filewritable() fails when
-the file was already open (e.g. script is being sourced). Add FILE_SHARE_READ|
-FILE_SHARE_WRITE in mch_access()? (Phillippe Vaucher, 2010 Nov 2)
-
-Is ~/bin (literally) in $PATH supposed to work? (Paul, 2010 March 29)
-Looks like only bash can do it. (Yakov Lerner)
-
-Cscope "cs add" stopped working somewhat before 7.2.438. (Gary Johnson, 2010
-Jun 29) Caused by 7.2.433?
-
-I often see pasted text (from Firefox, to Vim in xterm) appear twice.
-Also, Vim in xterm sometimes loses copy/paste ability (probably after running
-an external command).
-
-Jumplist doesn't work properly in Insert mode? (Jean Johner, 2010 Mar 20)
-
-Problem with transparent cmdline. Also: Terminal title is wrong with
-non-ASCII character. (Lily White, 2010 Mar 7)
-
-iconv() doesn't fail on an illegal character, as documented. (Yongwei Wu, 2009
-Nov 15, example Nov 26) Add argument to specify whether iconv() should fail
-or replace with a character and continue?
-
-Add local time at start of --startuptime output.
-Requires configure check for localtime().
-Use format year-month-day hr:min:sec.
-
-Patch to add "combine" to :syntax, combines highlight attributes. (Nate
-Soares, 2012 Dec 3)
-
-Patch to make ":hi link" also take arguments. (Nate Soares, 2012 Dec 4)
-
-Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3)
-Find tail? Might have a / in argument. Find space? Might have space in
-path.
-
-Test 51 fails when language set to German. (Marco, 2011 Jan 9)
-Dominique can't reproduce it.
-
-'ambiwidth' should be global-local.
-
-":function f(x) keepjumps" creates a function where every command is executed
-like it has ":keepjumps" before it.
-
-Coverity: ask someone to create new user: Dominique.
-Check if there are new reported defects: http://scan.coverity.com/rung2.html
-
-Patch to support :undo absolute jump to file save number. (Christian Brabandt,
-2010 Nov 5)
-
-Patch to use 'foldnextmax' also for "marker" foldmethod. (Arnaud Lacombe, 2011
-Jan 7)
-
-Bug with 'incsearch' going to wrong line. (Wolfram Kresse, 2009 Aug 17)
-Only with "vim -u NONE".
-
-Problem with editing file in binary mode. (Ingo Krabbe, 2009 Oct 8)
-
-With 'wildmode' set to "longest:full,full" and pressing Tab once the first
-entry in wildmenu is highlighted, that shouldn't happen. (Yuki Watanabe, 2011
-Feb 12)
-
-Display error when 'tabline' that includes a file name with double-width
-characters. (2010 Aug 14, bootleq)
-
-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)
-
-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)
-
-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.
-
-Invalid read error in Farsi mode. (Dominique Pelle, 2009 Aug 2)
-
-For running gvim on an USB stick: avoid the OLE registration. Use a command
-line argument -noregister.
-
-When using an expression in 'statusline' leading white space sometimes goes
-missing (but not always). (ZyX, 2010 Nov 1)
-
-When a mapping exists both for insert mode and lang-insert mode, the last one
-doesn't work. (Tyru, 2010 May 6) Or is this intended?
-
-Still a problem with ":make" in the wrong directory. Caused by ":bufdo".
-(Ajit Thakkar, 2009 Jul 1) More information Jul 9, Jul 15.
-Caused by "doautoall syntaxset BufEnter *" in syntax/nosyntax.vim ?
-There also is a BufLeave/BufEnter aucmd to save/restore view.
-Does the patch to save/restore globaldir work?
-
-":bufdo normal gg" while 'hidden' is set leaves buffers without syntax
-highlighting. Don't disable Syntax autocommands then? Or add a flag/modifier
-to avoid changing 'eventignore'?
-
-Patch for displaying 0x200c and 0x200d. (Ali Gholami Rudi, 2009 May 6)
-Probably needs a bit of work.
-
-Patch to add farsi handling to arabic.c (Ali Gholami Rudi, 2009 May 2)
-Added test, updates, June 23.
-Updated for 7.4: http://litcave.rudi.ir/farsi_vim.diff
-With modification for Tatweel character: https://dpaste.de/VmFw
-Remark from Ameretat Reith (2014 Oct 13)
-
-List of encoding aliases. (Takao Fujiwara, 2009 Jul 18)
-Are they all OK? Update Jul 22.
-
-Win32: Improved Makefile for MSVC. (Leonardo Valeri Manera, 2010 Aug 18)
-
-Win32: Expanding 'path' runs into a maximum size limit. (bgold12, 2009 Nov 15)
-
-Win32: Patch for enabling quick edit mode in console. (Craig Barkhouse, 2010
-Sep 1)
-
-Win32: Patch for using .png files for icons. (Charles Peacech, 2012 Feb 5)
-
-Putting a Visual block while 'visualedit' is "all" does not leave the cursor
-on the first character. (John Beckett, 2010 Aug 7)
-
-Setting 'tags' to "tagsdir/*" does not find "tagsdir/tags". (Steven K. Wong,
-2009 Jul 18)
-
-Patch to add "focusonly" to 'scrollopt', so that scrollbind also applies in
-window that doesn't have focus. (Jonathon Mah, 2009 Jan 12)
-Needs more work.
-
-Problem with <script> mappings (Andy Wokula, 2009 Mar 8)
-
-When starting Vim with "gvim -f -u non_existent_file > foo.txt" there are a
-few control characters in the output. (Dale Wiles, 2009 May 28)
-
-'cmdwinheight' is only used in last window when 'winheight' is a large value.
-(Tony Mechelynck, 2009 Apr 15)
-
-Status line containing winnr() isn't updated when splitting the window (Clark
-J. Wang, 2009 Mar 31)
-
-When $VIMRUNTIME is set in .vimrc, need to reload lang files. Already done
-for GTK, how about others? (Ron Aaron, 2010 Apr 10)
-
-Patch for GTK buttons X1Mouse and X2Mouse. (Christian J. Robinson, 2010 Aug 9)
-
-When 'ft' changes redraw custom status line.
-
-":tab split fname" doesn't set the alternate file in the original window,
-because win_valid() always returns FALSE. Below win_new_tabpage() in
-ex_docmd.c.
-
-Space before comma in function definition not allowed: "function x(a , b)"
-Give a more appropriate error message. Add a remark to the docs.
-
-string_convert() should be able to convert between utf-8 and utf-16le. Used
-for GTK clipboard. Avoid requirement for iconv.
-
-Now that colnr_T is int instead of unsigned, more type casts can be removed.
-
-'delcombine' does not work for the command line. (Tony Mechelynck, 2009 Jul
-20)
-
-Don't load macmap.vim on startup, turn it into a plugin. (Ron Aaron,
-2009 Apr 7) Reminder Apr 14.
-
-Add "no_hlsearch" to winsaveview().
-
-Cursorline highlighting combines with Search ('hlsearch') but not with
-SpellBad. (Jim Karsten, 2009 Mar 18)
-
-When 'foldmethod' is "indent", adding an empty line below a fold and then
-indented text, creates a new fold instead of joining it with the previous one.
-(Evan Laforge, 2009 Oct 17)
-
-Bug: When reloading a buffer changed outside of Vim, BufRead autocommands
-are applied to the wrong buffer/window. (Ben Fritz, 2009 Apr 2, May 11)
-Ignore window options when not in the right window?
-Perhaps we need to use a hidden window for applying autocommands to a buffer
-that doesn't have a window.
-
-When using "ab foo bar" and mapping <Tab> to <Esc>, pressing <Tab> after foo
-doesn't trigger the abbreviation like <Esc> would. (Ramana Kumar, 2009 Sep 6)
-
-getbufvar() to get a window-local option value for a buffer that's not
-displayed in a window should return the value that's stored for that buffer.
-
-":he ctrl_u" can be auto-corrected to ":he ctrl-u".
-
-There should be a way after an abbreviation has expanded to go back to what
-was typed. CTRL-G h ? Would also undo last word or line break inserted
-perhaps. And undo CTRL-W. CTRL-G l would redo.
-
-Diff mode out of sync. (Gary Johnson, 2010 Aug 4)
-
-Support a 'systemencoding' option (for Unix). It specifies the encoding of
-file names. (Kikuchan, 2010 Oct 5). Useful on a latin1 or double-byte Asian
-system when 'encoding' is "utf-8".
-
-Win32: completion of file name ":e c:\!test" results in ":e c:\\!test", which
-does not work. (Nieko Maatjes, 2009 Jan 8, Ingo Karkat, 2009 Jan 22)
-
-opening/closing window causes other window with 'winfixheight' to change
-height. Also happens when there is another window in the frame, if it's not
-very high. (Yegappan Lakshmanan, 2010 Jul 22, Michael Peeters, 2010 Jul 22)
-
-Directory wrong in session file, caused by ":lcd" in BufEnter autocommand.
-(Felix Kater, 2009 Mar 3)
-
-Session file generates error upon loading, cause by --remote-silent-tab.
-(7tommm (ytommm) 2010 Nov 24)
-
-Using ~ works OK on 'a' with composing char, but not on 0x0418 with composing
-char 0x0301. (Tony Mechelynck, 2009 Mar 4)
-
-Searching for composing char works, but not when inside []. (ZyX, Benjamin R.
-Haskell, 2010 Aug 24)
-
-This does not work yet: "a\(%C\)" (get composing characters into a submatch).
-
-A function on a dictionary is not profiled. (ZyX, 2010 Dec 25)
-
-Inconsistent: starting with $LANG set to es_ES.utf-8 gives Spanish
-messages, even though locale is not supported. But ":lang messages
-es_ES.utf-8" gives an error and doesn't switch messages. (Dominique Pelle,
-2009 Jan 26)
-
-When $HOME contains special characters, such as a comma, escape them when used
-in an option. (Michael Hordijk, 2009 May 5)
-Turn "esc" argument of expand_env_esc() into string of chars to be escaped.
-
-Should make 'ignorecase' global-local, so that it makes sense setting it from
-a modeline.
-
-Add cscope target to Makefile. (Tony Mechelynck, 2009 Jun 18, replies by
-Sergey Khorev)
-
-Consider making YankRing or something else that keeps a list of yanked text
-part of standard Vim. The "1 to "9 registers are not sufficient.
-
-netrw: dragging status line causes selection of entry. Should check row
-number to be below last visible line.
-
-After doing "su" $HOME can be the old user's home, thus ~root/file is not
-correct. Don't use it in the swap file.
-
-Completion for ":buf" doesn't work properly on Win32 when 'shellslash' is off.
-(Henrik Ohman, 2009, Jan 29)
-
-shellescape() depends on 'shellslash' for quoting. That doesn't work when
-'shellslash' is set but using cmd.exe. (Ben Fritz)
-Use a different option or let it depend on whether 'shell' looks like a
-unix-like shell?
-
-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)
-
-Have a look at patch for utf-8 line breaking. (Yongwei Wu, 2008 Mar 1, Mar 23)
-Now at: http://vimgadgets.sourceforge.net/liblinebreak/
-
-Greek sigma character should be lower cased depending on the context. Can we
-make this work? (Dominique Pelle, 2009 Sep 24)
-
-When changing 'encoding' convert all the swap file names, so that we can
-still delete them. Also convert all buffer file names?
-
-"gqip" in Insert mode has an off-by-one error, causing it to reflow text.
-(Raul Coronado, 2009 Nov 2)
-
-Update src/testdir/main.aap.
-
-Something wrong with session that has "cd" commands and "badd", in such a way
-that Vim doesn't find the edited file in the buffer list, causing the
-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.
-
-MS-Windows: editing the first, empty buffer, 'ffs' set to "unix,dos", ":enew"
-doesn't set 'ff' to "unix". (Ben Fritz, 2008 Dec 5) Reusing the old buffer
-probably causes this.
-
-'scrollbind' is not respected when deleting lines or undo. (Milan Vancura,
-2009 Jan 16)
-
-Patch to support strikethrough next to bold and italic. (Christian Brabandt,
-2013 Jul 30) Update from Ken Takata, 2013 Oct 12.
-
-Having "Syntax" in 'eventignore' for :bufdo may cause problems, e.g. for
-":bufdo e" when buffers are open in windows. ex_listdo(eap) could set the
-option only for when jumping to another buffer, not when the command argument
-is executed.
-
-":pedit %" with a BufReadPre autocommand causes the cursor to move to the
-first line. (Ingo Karkat, 2008 Jul 1) Ian Kelling is working on this.
-Similar problem with ":e". (Marc Montu, 2014 Apr 22)
-
-Wildmenu not deleted: "gvim -u NONE", ":set nocp wildmenu cmdheight=3
-laststatus=2", CTRL-D CTRL-H CTRL-H CTRL-H. (A.Politz, 2008 April 1)
-Works OK with Vim in an xterm.
-
-Cursor line moves in other window when using CTRL-W J that doesn't change
-anything. (Dasn, 2009 Apr 7)
-
-On Unix "glob('does not exist~')" returns the string. Without the "~" it
-doesn't. (John Little, 2008 Nov 9)
-Shell expansion returns unexpanded string?
-Don't use shell when "~" is not at the start?
-
-":unlet $VAR" doesn't work.
-
-When using ":e ++enc=foo file" and the file is already loaded with
-'fileencoding' set to "bar", then do_ecmd() uses that buffer, even though the
-fileencoding differs. Reload the buffer in this situation? Need to check for
-the buffer to be unmodified.
-Unfinished patch by Ian Kelling, 2008 Jul 11. Followup Jul 14, need to have
-another look at it.
-
-c.vim: XXX in a comment is colored yellow, but not when it's after "#if 0".
-(Ilya Dogolazky, 2009 Aug 7)
-
-You can type ":w ++bad=x fname", but the ++bad argument is ignored. Give an
-error message? Or is this easy to implement? (Nathan Stratton Treadway, 2008
-Aug 20) This is in ucs2bytes(), search for 0xBF. Using the ++bad argument is
-at the other match for 0xBF.
-
-When adding "-complete=file" to a user command this also changes how the
-argument is processed for <f-args>. (Ivan Tishchenko, 2008 Aug 19)
-
-Win32: associating a type with Vim doesn't take care of space after a
-backslash? (Robert Vibrant, 2008 Jun 5)
-
-When 'rightleft' is set, cursorcolumn isn't highlighted after the end of a
-line. It's also wrong in folds. (Dominique Pelle, 2010 Aug 21)
-
-Using an insert mode expression mapping, cursor is not in the expected
-position. (ZyX, 2010 Aug 29)
-
-After using <Tab> for command line completion after ":ta blah" and getting E33
-(no tags file), further editing the command to e.g., ":echo 'blah'", the
-command is not executed. Fix by Ian Kelling?
-
-":help s/~" jumps to *s/\~*, while ":help s/\~" doesn't find anything. (Tim
-Chase) Fix by Ian Kelling, 2008 Jul 14.
-
-Use "\U12345678" for 32 bit Unicode characters? (Tony Mechelynck, 2009
-Apr 6) Or use "\u(123456)", similar to Perl.
-
-When mapping : to ; and ; to :, @; doesn't work like @: and @: doesn't work
-either. Matt Wozniski: nv_at() calls do_execreg() which uses
-put_in_typebuf(). Char mapped twice?
-
-Despite adding save_subexpr() this still doesn't work properly:
-Regexp: matchlist('12a4aaa', '^\(.\{-}\)\(\%5c\@<=a\+\)\(.\+\)\?')
-Returns ['12a4', 'aaa', '4aaa'], should be ['12a4', 'aaa', '']
-Backreference not cleared when retrying after \@<= fails?
-(Brett Stahlman, 2008 March 8)
-
-Problem with remote_send(). (Charles Campbell, 2008 Aug 12)
-
-ftplugin for help file should set 'isk' to help file value.
-
-Win32: remote editing fails when the current directory name contains "[".
-(Ivan Tishchenko, Liu Yubao) Suggested patch by Chris Lubinski: Avoid
-escaping characters where the backslash is not removed later. Asked Chris for
-an alternate solution, also for src/ex_getln.c.
-This also fails when the file or directory name contains "%". (Thoml, 2008
-July 7)
-Using --remote-silent while the current directory has a # in the name does not
-work, the # needs to be escaped. (Tramblay Bruno, 2012 Sep 15)
-
-When using remote-silent the -R flag is not passed on. (Axel Bender, 2012 May
-31)
-
-Win32: A --remote command that has a directory name starting with a ( doesn't
-work, the backslash is removed, assuming that it escapes the (. (Valery
-Kondakoff, 2009 May 13)
-
-Problem with 'langmap' being used on the rhs of a mapping. (Nikolai Weibull,
-2008 May 14)
-
-Problem with CTRL-F. (Charles Campbell, 2008 March 21)
-Only happens with "gvim -geometry "160x26+4+27" -u NONE -U NONE prop.c".
-'lines' is 54. (2008 March 27)
-
-Problem with pointer wrapping around in getvcol(). (Wolfgang Kroworsch, 2008
-Oct 19) Check for "col" being "MAXCOL" separately?
-
-Unexpectedly inserting a double quote. (Anton Woellert, 2008 Mar 23)
-Works OK when 'cmdheight' is 2.
-
-8 Use a mechanism similar to omni completion to figure out the kind of tab
- for CTRL-] and jump to the appropriate matching tag (if there are
- several).
- Alternative: be able to define a function that takes the tag name and uses
- taglist() to find the right location. With indication of using CTRL-] so
- that the context can be taken into account. (Robert Webb)
-Patch by Christian Brabandt, 2013 May 31.
-
-Test54 should not use shell commands. Make it portable.
-
-The utf class table is missing some entries:
- 0x2212, minus sign
- 0x2217, star
- 0x2500, bar
- 0x26ab, circle
-
-Visual line mode doesn't highlight properly when 'showbreak' is used and the
-line doesn't fit. (Dasn, 2008 May 1)
-
-Mac: Move Carbon todo items to os_mac.txt. Note that this version is frozen,
-try the Cocoa version.
-
-Mac: After a ":vsplit" the left scrollbar doesn't appear until 'columns' is
-changed or the window is resized.
-
-Mac: Patch for configure: remove arch from ruby link args. (Knezevic, 2008
-Mar 5) Alternative: Kazuki Sakamoto, Mar 7.
-
-C't: On utf-8 system, editing file with umlaut through Gnome results in URL
-with %nn%nn, which is taken as two characters instead of one.
-Try to reproduce at work.
-
-Patch for default choice in file changed dialog. (Bjorn Winckler, 2008 Oct 19)
-Is there a way to list all the files first?
-
-When 'smartcase' is set and using CTRL-L to add to the search pattern it may
-result in no matches. Convert chars to lower case? (Erik Wognsen, 2009 Apr
-16)
-
-Fail to edit file after failed register access. Error flag remains set?
-(Lech Lorens, 2010 Aug 30)
-
-Patch for redo register. (Ben Schmidt, 2007 Oct 19)
-Await response to question to make the register writable.
-
-src/testdir/Make_dos.mak: not all tests are included, e.g., test49, without a
-remark why.
-
-Problem with 'ts' set to 9 and 'showbreak' to ">>>". (Matthew Winn, 2007 Oct
-1)
-
-In the swapfile dialog, add a H(elp) option that gives more info about what
-each choice does. Similar to ":help swap-exists-choices"
-
-try/catch not working for argument of return. (Matt Wozniski, 2008 Sep 15)
-
-try/catch not working when inside a for loop. (ZyX, 2011 Jan 25)
-
-":tab help" always opens a new tab, while ":help" re-uses an existing window.
-Would be more consistent when an existing tab is re-used. (Tony Mechelynck)
-
-Add ":nofold". Range will apply without expanding to closed fold.
-
-Using Aap to build Vim: add remarks about how to set personal preferences.
-Example on http://www.calmar.ws/tmp/aap.html
-
-Syntax highlighting wrong for transparent region. (Doug Kearns, 2007 Feb 26)
-Bug in using a transparent syntax region. (Hanlen in vim-dev maillist, 2007
-Jul 31)
-
-C syntax: {} inside () causes following {} to be highlighted as error.
-(Michalis Giannakidis, 2006 Jun 1)
-
-When 'diffopt' has "context:0" a single deleted line causes two folds to merge
-and mess up syncing. (Austin Jennings, 2008 Jan 31)
-
-Gnome improvements: Edward Catmur, 2007 Jan 7
- Also use Save/Discard for other GUIs
-
-New PHP syntax file, use it? (Peter Hodge)
-
-":echoe" in catch block stops processing, while this doesn't happen outside of
-a catch block. (ZyX, 2011 Jun 2)
-
-'foldcolumn' in modeline applied to wrong window when using a session. (Teemu
-Likonen, March 19)
-
-Test 54 uses shell commands, that doesn't work on non-Unix systems. Use some
-other way to test buffer-local autocommands.
-
-The documentation mentions the priority for ":2match" and ":3match", but it
-appears the last one wins. (John Beckett, 2008 Jul 22) Caused by adding
-matchadd()? Suggested patch by John, 2008 Jul 24.
-
-When 'encoding' is utf-8 the command line is redrawn as a whole on every
-character typed. (Tyler Spivey, 2008 Sep 3) Only redraw cmdline for
-'arabicshape' when there is a character on the command line for which
-(ARABIC_CHAR(u8c)) is TRUE.
-
-Cheng Fang made javacomplete. (2007 Aug 11)
-Asked about latest version: 0.77.1 is on www.vim.org.
-
-Insert mode completion: When editing the text and pressing CTRL-N again goes
-back to originally completed text, edited text is gone. (Peng Yu, 2008 Jul 24)
-Suggestion by Ben Schmidt, 2008 Aug 6.
-
-Problem with compound words? (Bert, 2008 May 6)
-No warning for when flags are defined after they are used in an affix.
-
-Screen redrawing when continuously updating the buffer and resizing the
-terminal. (Yakov Lerner, 2006 Sept 7)
-
-Add option settings to help ftplugin. (David Eggum, 2006 Dec 18)
-
-Autoconf problem: when checking for iconv library we may add -L/usr/local/lib,
-but when compiling further tests -liconv is added without the -L argument,
-that may fail (e.g., sizeof(int)). (Blaine, 2007 Aug 21)
-
-When opening quickfix window, disable spell checking?
-
-Problem with ".add" files when using two languages and restarting Vim. (Raul
-Coronado, 2008 Oct 30)
-
-Popup menu redraw: Instead of first redrawing the text and then drawing the
-popup menu over it, first draw the new popup menu, remember its position and
-size and then redraw the text, skipping the characters under the popup menu.
-This should avoid flicker. Other solution by A.Politz, 2007 Aug 22.
-
-Windows 98: pasting from the clipboard with text from another application has
-a trailing NUL. (Joachim Hofmann) Perhaps the length specified for CF_TEXT
-isn't right?
-
-When a register contains illegal bytes, writing viminfo in utf-8 and reading
-it back doesn't result in utf-8. (Devin Bayer)
-
-Command line completion: Scanning for tags doesn't check for typed key now and
-then? Hangs for about 5 seconds. Appears to be caused by finding include
-files with "foo/**" in 'path'. (Kalisiak, 2006 July 15)
-Additional info: When using the |wildcards| ** globing, vim hangs
-indefinitely on lots of directories. The |file-searching| globing, like in
-":set path=/**" does not hang as often as with globing with |wildcards|, like
-in ":1find /**/file". This is for files that unix "find" can find very
-quickly. Merging the 2 kinds of globing might make this an easier fix. (Ian
-Kelling, 2008 July 4)
-
-When the file name has parenthesis, e.g., "foo (bar).txt", ":!ls '%'" has the
-parenthesis escaped but not the space. That's inconsistent. Either escape
-neither or both. No escaping might be best, because it doesn't depend on
-particularities of the shell. (Zvi Har'El, 2007 Nov 10) (Teemu Likonen, 2008
-Jun 3)
-However, for backwards compatibility escaping might be necessary. Check if
-the user put quotes around the expanded item?
-
-A throw in a function causes missing an endif below the call. (Spiros
-Bousbouras, 2011 May 16)
-
-Error E324 can be given when a cron script has wiped out our temp directory.
-Give a clear error message about this (and tell them not to wipe out /tmp).
-
-Color for cUserLabel should differ from case label, so that a mistake in a
-switch list is noticed:
- switch (i)
- {
- case 1:
- foobar:
- }
-
-Look at http://www.gtk-server.org/ . It has a Vim script implementation.
-
-Netbeans problem. Use "nc -l 127.0.0.1 55555" for the server, then run gvim
-with "gvim -nb:localhost:55555:foo". From nc do: '1:editFile!0 "foo"'. Then
-go to Insert mode and add a few lines. Then backspacing every other time
-moves the cursor instead of deleting. (Chris Kaiser, 2007 Sep 25)
-
-Windows installer should install 32-bit version of right-click handler also on
-64-bit systems. (Brian Cunningham, 2011 Dec 28)
-
-Windows installer could add a "open in new tab of existing Vim" menu entry.
-Gvimext: patch to add "Edit with single Vim &tabbed" menu entry.
-Just have two choices, always using one Vim and selecting between using an
-argument list or opening each file in a separate tab.
-(Erik Falor, 2008 May 21, 2008 Jun 26)
-
-Windows installer: licence text should not use indent, causes bad word wrap.
-(Benjamin Fritz, 2010 Aug 16)
-
-Dos uninstal may delete vim.bat from the wrong directory (e.g., when someone
-makes his own wrapper). Add a magic string with the version number to the
-.bat file and check for it in the uninstaller. E.g.
- # uninstall key: vim7.3*
-
-Changes for Win32 makefile. (Mike Williams, 2007 Jan 22, Alexei Alexandrov,
-2007 Feb 8)
-
-Win32: Can't complete shell command names. Why is setting xp_context in
-set_one_cmd_context() inside #ifndef BACKSLASH_IN_FILENAME?
-
-Win32: Patch for cscope external command. (Mike Williams, 2007 Aug 7)
-
-Win32: XPM support only works with path without spaces. Patch by Mathias
-Michaelis, 2006 Jun 9. Another patch for more path names, 2006 May 31.
-New version: http://members.tcnet.ch/michaelis/vim/patches.zip (also for other
-patches by Mathias, see mail Feb 22)
-
-Win32: compiling with normal features and OLE fails. Patch by Mathias
-Michaelis, 2006 Jun 4.
-
-Win32: after "[I" showing matches, scroll wheel messes up screen. (Tsakiridis,
-2007 Feb 18)
-Patch by Alex Dobrynin, 2007 Jun 3. Also fixes other scroll wheel problems.
-
-Win32: using CTRL-S in Insert mode doesn't remove the "+" from the tab pages
-label. (Tsakiridis, 2007 Feb 18) Patch from Ian Kelling, 2008 Aug 6.
-
-Win32: using "gvim --remote-tab-silent fname" sometimes gives an empty screen
-with the more prompt. Caused by setting the guitablabel? (Thomas Michael
-Engelke, 2007 Dec 20 - 2008 Jan 17)
-
-Win64: Seek error in swap file for a very big file (3 Gbyte). Check storing
-pointer in long and seek offset in 64 bit var.
-Patches from Ken Takata might help (2014 Apr 17)
-
-Win32: patch for fullscreen mode. (Liushaolin, 2008 April 17)
-
-Win32: When 'shell' is bash shellescape() doesn't always do the right thing.
-Depends on 'shellslash', 'shellquote' and 'shellxquote', but shellescape()
-only takes 'shellslash' into account.
-
-Menu item that does "xxd -r" doesn't work when 'fileencoding' is utf-16.
-Check for this and use iconv? (Edward L. Fox, 2007 Sep 12)
-Does the conversion in the other direction work when 'fileencodings' is set
-properly?
-
-Add a few features to xxd. (Vadim Vygonets, 2013 Nov 11)
-Patches: 2013 Nov 19
-1: Add -e: little endian hexdump
-2: Add -o: add offset to displayed position
-3: Change displayed file position width to 8 chars
-
-Cursor displayed in the wrong position when using 'numberwidth'. (James Vega,
-2007 Jun 21)
-
-When $VAR contains a backslash expand('$VAR') removes it. (Teemu Likonen, 2008
-Jun 18)
-
-If the variable "g:x#y#z" exists completion after ":echo g:x#" doesn't work.
-
-Feature request: Command to go to previous tab, like what CTRL-W p does for
-windows. (Adam George)
-
-F1 - F4 in an xterm produce a different escape sequence when used with a
-modifier key. Need to catch three different sequences. Use K_ZF1, like
-K_ZHOME? (Dickey, 2007 Dec 2)
-
-UTF-8: mapping a multi-byte key where the second byte is 0x80 doesn't appear
-to work. (Tony Mechelynck, 2007 March 2)
-
-In debug mode, using CTRL-R = to evaluate a function causes stepping through
-the function. (Hari Krishna Dara, 2006 Jun 28)
-
-C++ indenting wrong with "=". (James Kanze, 2007 Jan 26)
-
-":lockvar" should use copyID to avoid endless loop.
-
-When using --remote-silent and the file name matches 'wildignore' get an E479
-error. without --remote-silent it works fine. (Ben Fritz, 2008 Jun 20)
-
-Gvim: dialog for closing Vim should check if Vim is busy writing a file. Then
-use a different dialog: "busy saving, really quit? yes / no".
-
-":helpgrep" should use the directory from 'helpfile'.
-
-The need_fileinfo flag is messy. Instead make the message right away and put
-it in keep_msg?
-
-Editing a file remotely that matches 'wildignore' results in a "no match"
-error. Should only happen when there are wildcards, not when giving the file
-name literally, and esp. if there is only one name.
-
-Test 61 fails sometimes. This is a timing problem: "sleep 2" sometimes takes
-longer than 2 seconds.
-
-Using ":au CursorMoved * cmd" invokes mch_FullName(), which can be slow.
-Can this be avoided? (Thomas Waba, 2008 Aug 24)
-Also for ":w" without a file name.
-The buffer has the full path in ffname, should pass this to the autocommand.
-
-input() completion should not insert a backslash to escape a space in a file
-name?
-
-Ruby completion is insecure. Can this be fixed?
-
-When 'backupskip' is set from $TEMP special characters need to be escaped.
-(patch by Grembowietz, 2007 Feb 26, not quite right)
-Another problem is that file_pat_to_reg_pat() doesn't recognize "\\", so "\\("
-will be seen as a path separator plus "\(".
-
-gvim d:\path\path\(FILE).xml should not remove the \ before the (.
-This also fails with --remote.
-
-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?
-
-aucmd_prepbuf() should also use a window in another tab page.
-
-When unloading a buffer in a BufHidden autocommand the hidden flag is reset?
-(Bob Hiestand, 2008 Aug 26, Aug 27)
-
-Substituting an area with a line break with almost the same area does change
-the Visual area. Can this be fixed? (James Vega, 2006 Sept 15)
-
-Spell checking: Add a way to specify punctuation characters. Add the
-superscript numbers by default: 0x2070, 0xb9, 0xb2, 0xb3, 0x2074 - 0x2079.
-
-Spell checking in popup menu: If the only problem is the case of the first
-character, don't offer "ignore" and "add to word list".
-
-Use different pt_br dictionary for spell checking. (Jackson A. Aquino, 2006
-Jun 5)
-
-Use different romanian dictionary for spell checking. (Andrei Popescu, Nov
-2008) Use http://downloads.sourceforge.net/rospell/ro_RO.3.2.zip
-Or the hunspell-ro.3.2.tar.gz file, it also has a iso-8859-2 list.
-
-In a C file with spell checking, in "% integer" "nteger" is seen as an error,
-but "]s" doesn't find it. "nteger" by itself is found. (Ralf Wildenhues, 2008
-Jul 22)
-
-There should be something about spell checking in the user manual.
-
-Spell menu: When using the Popup menu to select a replacement word,
-":spellrepeat" doesn't work. SpellReplace() uses setline(). Can it use "z="
-somehow? Or use a new function.
-
-Mac: Using gvim: netrw window disappears. (Nick Lo, 2006 Jun 21)
-
-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').
-
-The generated vim.bat can avoid the loop for NT. (Carl Zmola, 2006 Sep 3)
-
-When showing a diff between a non-existent file and an existing one, with the
-cursor in the empty buffer, the other buffer only shows the last line. Change
-the "insert" into a change from one line to many? (Yakov Lerner, 2008 May 27)
-
-Add autocommand for when a tabpage is being closed. Also for when a tab page
-has been created.
-
-Using ":make" blocks Vim. Allow running one make in the background (if the
-shell supports it), catch errors in a file and update the error list on the
-fly. A bit like "!make > file&" and repeating ":cf file". ":bgmake",
-background make. ":bgcancel" interrupts it.
-A.Politz may work on this.
-
-These two abbreviations don't give the same result:
- let asdfasdf = "xyz\<Left>"
- cabbr XXX <C-R>=asdfasdf<CR>
- cabbr YYY xyz<Left>
-
-Michael Dietrich: maximized gvim sometimes displays output of external command
-partly. (2006 Dec 7)
-
-In FileChangedShell command it's no longer allowed to switch to another
-buffer. But the changed buffer may differ from the current buffer, how to
-reload it then?
-
-New syntax files for fstab and resolv from Radu Dineiu, David Necas did
-previous version.
-
-For Aap: include a config.arg.example file with hints how to use config.arg.
-
-Command line completion when 'cmdheight' is maximum and 'wildmenu' is set,
-only one buffer line displayed, causes display errors.
-
-Completing with 'wildmenu' and using <Up> and <Down> to move through directory
-tree stops unexpectedly when using ":cd " and entering a directory that
-doesn't contain other directories.
-
-Default for 'background' is wrong when using xterm with 256 colors.
-Table with estimates from Matteo Cavalleri, 2014 Jan 10.
-
-Setting 'background' resets the Normal background color:
- highlight Normal ctermbg=DarkGray
- set background=dark
-This is undesired, 'background' is supposed to tell Vim what the background
-color is, not reset it.
-
-Linux distributions:
-- Suggest compiling xterm with --enable-tcap-query, so that nr of colors is
- known to Vim. 88 colors instead of 16 works better. See ":help
- xfree-xterm".
-- Suggest including bare "vi" and "vim" with X11, syntax, etc.
-
-Completion menu: For a wrapping line, completing a long file name, only the
-start of the path is shown in the menu. Should move the menu to the right to
-show more text of the completions. Shorten the items that don't fit in the
-middle?
-
-When running inside screen it's possible to kill the X server and restart it
-(using pty's the program can keep on running). Vim dies because it loses the
-connection to the X server. Can Vim simply quit using the X server instead of
-dying? Also relevant when running in a console.
-
-Accessing file#var in a function should not need the g: prepended.
-
-When exiting detects a modified buffer, instead of opening the buffer in the
-current tab, use an existing tab, if possible. Like finding a window where
-the buffer is displayed. (Antonios Tsakiridis)
-
-When ":cn" moves to an error in the same line the message isn't shortened.
-Only skip shortening for ":cc"?
-
-Write "making vim work better" for the docs (mostly pointers): *nice*
- - sourcing $VIMRUNTIME/vimrc_example.vim
- - setting 'mouse' to "a"
- - getting colors in xterm
- - compiling Vim with X11, GUI, etc.
-
-Problem with ":call" and dictionary function. Hari Krishna Dara, Charles
-Campbell 2006 Jul 06.
-
-Syntax HL error caused by "containedin". (Peter Hodge, 2006 Oct 6)
-
-A custom completion function in a ":command" cannot be a Funcref. (Andy
-Wokula, 2007 Aug 25)
-
-Problem with using :redir in user command completion function? (Hari Krishna
-Dara, 2006 June 21)
-
-Another resizing problem when setting 'columns' and 'lines' to a very large
-number. (Tony Mechelynck, 2007 Feb 6)
-
-After starting Vim, using '0 to jump somewhere in a file, ":sp" doesn't center
-the cursor line. It works OK after some other commands.
-
-Win32: Is it possible to have both postscript and Win32 printing?
-
-Check: Running Vim in a console and still having connect to the X server for
-copy/paste: is stopping the X server handled gracefully? Should catch the X
-error and stop using the connection to the server.
-
-Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME. (2006
-Jul 26, Gary Johnson)
-
-Using UTF-8 character with ":command" does not work properly. (Matt Wozniski,
-2008 Sep 29)
-
-In the Netbeans interface add a "vimeval" function, so that the other side can
-check the result of has("patch13").
-
-Cursor line at bottom of window instead of halfway through after saving view
-and restoring. Only with 'nowrap'. (Robert Webb, 2008 Aug 25)
-
-Netrw has trouble executing autocommands only for a directory. Add <isdir>
-and <notisdir> to autocommand patterns? Also <isfile>?
-
-Add command modifier that skips wildcard expansion, so that you don't need to
-put backslashes before special chars, only for white space.
-
-Syntax HL: open two windows on the same C code, delete a ")" in one window,
-resulting in highlighted "{" in that window, not in the other.
-
-In mswin.vim: Instead of mapping <C-V> for Insert mode in a complicated way,
-can it be done like ":imap <C-V> <MiddleMouse>" without negative side effects?
-
-When right after "vim file", "M" then CTRL-W v the windows are scrolled
-differently and unexpectedly. Caused by patch 7.2.398?
-
-The magic clipboard format "VimClipboard2" appears in several places. Should
-be only one.
-
-It's difficult to debug numbered functions (function in a Dictionary). Print
-the function name before resolving it to a number?
- let d = {}
- fun! d.foo()
- echo "here"
- endfun
- call d.foo(9)
-
-Add a mark for the other end of the Visual area (VIsual pos). '< and '> are
-only set after Visual moded is ended.
-Also add a variable for the Visual mode. So that this mode and '< '> can be
-used to set what "gv" selects. (Ben Schmidt)
-
-Win32: When running ":make" and 'encoding' differs from the system locale, the
-output should be converted. Esp. when 'encoding' is "utf-8". (Yongwei Wu)
-Should we use 'termencoding' for this?
-
-Win32, NTFS: When editing a specific infostream directly and 'backupcopy' is
-"auto" should detect this situation and work like 'backupcopy' is "yes". File
-name is something like "c:\path\foo.txt:bar", includes a colon. (Alex
-Jakushev, 2008 Feb 1)
-
-printf() uses the field width in bytes. Can it be made character width,
-perhaps with a modifier? What does Posix say?
-
-Small problem displaying diff filler line when opening windows with a script.
-(David Luyer, 2007 Mar 1 ~/Mail/oldmail/mool/in.15872 )
-
-Is it allowed that 'backupext' is empty? Problems when backup is in same dir
-as original file? If it's OK don't compare with 'patchmode'. (Thierry Closen)
-
-Patch for supporting count before CR in quickfix window. (AOYAMA Shotaro, 2007
-Jan 1)
-
-Patch for adding ":lscscope". (Navdeep Parhar, 2007 Apr 26; update 2008 Apr
-23)
-
-":mkview" isn't called with the right buffer argument. Happens when using
-tabs and the autocommand "autocmd BufWinLeave * mkview". (James Vega, 2007
-Jun 18)
-
-xterm should be able to pass focus changes to Vim, so that Vim can check for
-buffers that changed. Perhaps in misc.c, function selectwindow().
-Xterm 224 supports it!
-
-When completing from another file that uses a different encoding completion
-text has the wrong encoding. E.g., when 'encoding' is utf-8 and file is
-latin1. Example from Gombault Damien, 2007 Mar 24.
-
-Is it possible to use "foo#var" instead of "g:foo#var" inside a function?
-
-Syntax HL: When using "nextgroup" and the group has an empty match, there is
-no search at that position for another match. (Lukas Mai, 2008 April 11)
-
-In gvim the backspace key produces a backspace character, but on Linux the
-VERASE key is Delete. Set VERASE to Backspace? (patch by Stephane Chazelas,
-2007 Oct 16)
-
-Create a gvimtutor.1 file and change Makefiles to install it.
-
-When 'encoding' is utf-8 typing text at the end of the line causes previously
-typed characters to be redrawn. Caused by patch 7.1.329. (Tyler Spivey, 2008
-Sep 3, 11)
-
-X11: Putting more than about 262040 characters of text on the clipboard and
-pasting it in another Vim doesn't work. (Dominique Pelle, 2008 Aug 21-23)
-clip_x11_request_selection_cb() is called with zero value and length.
-Also: Get an error message from free() in the process that owns the selection.
-Seems to happen when the selection is requested the second time, but before
-clip_x11_convert_selection_cb() is invoked, thus in X library code.
-
-":vimgrep" does not recognize a recursive symlink. Is it possible to detect
-this, at least for Unix (using device/inode)?
-
-When switching between windows the cursor is often put in the middle.
-Remember the relative position and restore that, just like lnum and col are
-restored. (Luc St-Louis)
-
-Add an option for a minimal text length before inserting a line break for
-'textwidth'. Avoids very short lines when a very long word follows.
-(Kartik Agaram)
-
-
-At next release:
-- Build a huge version by default.
-- Improve plugin handling: Automatic updates, handle dependencies?
- E.g. Vundle: https://github.com/gmarik/vundle
-
-
-More patches:
-- Another patch for Javascript indenting. (Hari Kumar, 2010 Jul 11)
- Needs a few tests.
-- Add 'cscopeignorecase' option. (Liang Wenzhi, 2006 Sept 3)
-- Argument for feedkeys() to prepend to typeahead (Yakov Lerner, 2006 Oct
- 21)
-- Load intl.dll too, not only libintl.dll. (Mike Williams, 2006 May 9, docs
- patch May 10)
-- Extra argument to strtrans() to translate special keys to their name (Eric
- Arnold, 2006 May 22)
-- 'threglookexp' option: only match with first word in thesaurus file.
- (Jakson A. Aquino, 2006 Jun 14)
-- Mac: indicate whether a buffer was modified. (Nicolas Weber, 2006 Jun 30)
-- Allow negative 'nrwidth' for left aligning. (Nathan Laredo, 2006 Aug 16)
-- ml_append_string(): efficiently append to an existing line. (Brad
- Beveridge, 2006 Aug 26) Use in some situations, e.g., when pasting a
- character at a time?
-- recognize hex numbers better. (Mark Manning, 2006 Sep 13)
-- Add <AbbrExpand> key, to expand an abbreviation in a mapping. (Kana
- Natsuno, 2008 Jul 17)
-- Add 'wspara' option, also accept blank lines like empty lines for "{" and
- "}". (Mark Lundquist, 2008 Jul 18)
-- Patch to add CTRL-T to delete part of a path on cmdline. (Adek, 2008 Jul
- 21)
-- Instead of creating a copy of the tutor in all the shell scripts, do it in
- vimtutor.vim. (Jan Minar, 2008 Jul 20)
-- When fsync() fails there is no hint about what went wrong. Patch by Ben
- Schmidt, 2008 Jul 22.
-- testdir/Make_dos_sh.mak for running tests with MingW. (Bill Mccarthy, 2008
- Sep 13)
-- Patch for adding "space" item in 'listchars'. (Jérémie Roquet, 2009 Oct 29,
- Docs patch Oct 30, update David Burgin (glts) 2013 Aug 24, 2014 Oct 10)
-- Replace ccomplete.vim by cppcomplete.vim from www.vim.org? script 1520 by
- Vissale Neang. (Martin Stubenschrott) Asked Vissale to make the scripts
- more friendly for the Vim distribution.
- New version received 2008 Jan 6.
- No maintenance in two years...
-- Patch to open dropped files in new tabs. (Michael Trim, 2010 Aug 3)
-
-Awaiting updated patches:
-9 Mac unicode patch (Da Woon Jung, Eckehard Berns):
- 8 Add patch from Muraoka Taro (Mar 16) to support input method on Mac?
- New patch 2004 Jun 16
- - selecting proportional font breaks display
- - UTF-8 text causes display problems. Font replacement causes this.
- - Command-key mappings do not work. (Alan Schmitt)
- - With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work.
- (Alan Schmitt)
-9 HTML indenting can be slow. Caused by using searchpair(). Can search()
- be used instead? A.Politz is looking into a solution.
-8 Win32: Add minidump generation. (George Reilly, 2006 Apr 24)
-8 Add ":n" to fnamemodify(): normalize path, remove "../" when possible.
- Aric Blumer has a patch for this. He will update the patch for 6.3.
-7 Completion of network shares, patch by Yasuhiro Matsumoto.
- Update 2004 Sep 6.
- How does this work? Missing comments.
-8 Add a few more command names to the menus. Patch from Jiri Brezina
- (28 feb 2002). Will mess the translations...
-7 ATTENTION dialog choices are more logical when "Delete it" appears
- before "Quit". Patch by Robert Webb, 2004 May 3.
-- Include flipcase patch: ~/vim/patches/wall.flipcase2 ? Make it work
- for multi-byte characters.
-- Win32: add options to print dialog. Patch from Vipin Aravind.
-- Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5)
- use the patch that keeps using HLF_8 if HLF_WS has not
- been given values.
- Add section in help files for these highlight groups?
-8 "fg" and "bg" don't work in an xterm. Get default colors from xterm
- with an ESC sequence.
- xterm can send colors for many things. E.g. for the cursor:
- <Esc>]12;?<Bel>
- Can use this to get the background color and restore the colors on exit.
-7 Add "DefaultFG" and "DefaultBG" for the colors of the menu. (Marcin
- Dalecki has a patch for Motif and Carbon)
-- Add possibility to highlight specific columns (for Fortran). Or put a
- line in between columns (e.g., for 'textwidth').
- Patch to add 'hlcolumn' from Vit Stradal, 2004 May 20.
-8 Add functions:
- gettext() Translate a message. (Patch from Yasuhiro Matsumoto)
- Update 2004 Sep 10
- Another patch from Edward L. Fox (2005 Nov 24)
- Search in 'runtimepath'?
- More docs needed about how to use this.
- How to get the messages into the .po files?
- strchars() Like strlen() and strwidth() but counting characters
- instead of bytes.
- confirm() add "flags" argument, with 'v' for vertical
- layout and 'c' for console dialog. (Haegg)
- Flemming Madsen has a patch for the 'c' flag
- (2003 May 13)
- raisewin() raise gvim window (see HierAssist patch for
- Tcl implementation ~/vim/HierAssist/ )
- taglist() add argument to specify maximum number of matches.
- useful for interactive things or completion.
- col('^') column of first non-white character.
- Can use "len(substitute(getline('.'), '\S.*', '', ''))
- + 1", but that's ugly.
-7 Add patch from Benoit Cerrina to integrate Vim and Perl functions
- better. Now also works for Ruby (2001 Nov 10)
-- Patch from Herculano de Lima Einloft Neto for better formatting of the
- quickfix window (2004 dec 2)
-7 When 'rightleft' is set, the search pattern should be displayed right
- to left as well? See patch of Dec 26. (Nadim Shaikli)
-8 Option to lock all used memory so that it doesn't get swapped to disk
- (uncrypted). Patch by Jason Holt, 2003 May 23. Uses mlock.
-7 Add ! register, for shell commands. (patch from Grenie)
-8 In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc. Like it's
- done for filetype detection. Patch from Walter Briscoe, 2003 Jul 1.
-7 Add a "-@ filelist" argument: read file names from a file. (David
- Kotchan has a patch for it)
-8 Include a connection to an external program through a pipe? See
- patches from Felbinger for a mathematica interface.
- Or use emacs server kind of thing?
-7 Add ":justify" command. Patch from Vit Stradal 2002 Nov 25.
-- findmatch() should be adjusted for Lisp. See remark at
- get_lisp_indent(). Esp. \( and \) should be skipped. (Dorai Sitaram,
- incomplete patch Mar 18)
-- Patch for "paranoid mode" by Kevin Collins, March 7. Needs much more work.
-
-
-MSDOS and Win32:
-8 Should $USERPROFILE be preferred above $HOMEDRIVE/$HOMEPATH? No, but it's
- a good fallback, thus use:
- $HOME
- $HOMEDRIVE$HOMEPATH
- SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_APPDATA, FALSE);
- $USERPROFILE
- SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_COMMON_APPDATA, FALSE);
- $ALLUSERSPROFILE
- $SYSTEMDRIVE\
- C:\
-8 Win32 console: <M-Up> and <M-Down> don't work. (Geddes) We don't have
- special keys for these. Should use modifier + key.
-8 Win32 console: caps-lock makes non-alpha keys work like with shift.
- Should work like in the GUI version.
-8 Environment variables in DOS are not case sensitive. Make a define for
- STRCMP_ENV(), and use it when comparing environment var names.
-8 Setting 'shellslash' has no immediate effect. Change all file names when
- it is set/reset? Or only use it when actually executing a shell command?
-8 When editing a file on a Samba server, case might matter. ":e file"
- followed by ":e FILE" will edit "file" again, even though "FILE" might be
- another one. Set last used name in buflist_new()? Fix do_ecmd(), etc.
-8 When a buffer is editing a file like "ftp://mach/file", which is not going
- to be used like a normal file name, don't change the slashes to
- backslashes. (Ronald Hoellwarth)
-
-
-Win32 console:
-9 When editing a file by its short file name, it should be expanded into its
- long file name, to avoid problems like these: (Mccollister)
- 1) Create a file called ".bashrc" using some other editor.
- 2) Drag that file onto a shortcut or the actual executable.
- 3) Note that the file name is something like BASHRC~1
- 4) Go to File->Save As menu item and type ".bashrc" as the file name.
- 5) Press "Yes" to indicate that I want to overwrite the file.
- 6) Note that the message "File exists (add ! to override)" is displayed
- and the file is not saved.
- Use FindFirstFile() to expand a file name and directory in the path to its
- long name.
-7 Re-install the use of $TERM and support the use of different terminals,
- besides the console.
-8 Use of <altgr> modifier doesn't work? 5.3 was OK. (Garcia-Suarez/Guckes)
-9 Mapping <C-S-Tab> doesn't work correctly. How to see the difference with
- <C-S-i>?
-9 tmpnam() uses file in root of file system: "\asdf". That doesn't work on
- a Netware network drive. Use same function as for Win32 GUI?
-8 In os_win32.h, HAVE_STRICMP and HAVE_STRNICMP are defined only if __GNUC__
- is not defined. Shouldn't that be the other way around?
-7 Use SetConsoleCP() and SetConsoleOutputCP() to implement 'termencoding'?
- Avoids that input and output work differently. Need to be restored when
- exiting.
-
-
-Macintosh:
-7 Loading the Perl library only works on OS/X 10.2 or 10.3, never on both.
- Load the Perl library dynamically see Python sources file dynload_mac
- (Jack)
- dynamic linking: http://developer.apple.com/technotes/tn2002/tn2064.html
-8 inputdialog() doesn't resize when giving more text lines. (David Fishburn,
- 2006 Sept 28)
-8 Define vim_mkdir() for Macintosh.
-8 Define mch_writable() for Macintosh.
-9 When DiskLock is running, using a swap file causes a crash. Appears to be
- a problem with writing a file that starts with a dot. (Giacalone)
-9 In mac_expandpath() check that handling of backslashes is done properly.
-
-
-"Small" problems:
-- Can't disable terminal flow control, to enable the use of CTRL-S and
- CTRL-Q. Add an option for it?
-- When using e_secure in do_one_cmd() mention the command being executed,
- otherwise it's not clear where it comes from.
-- When the quickfix window is open and executing ":echo 'hello'" using the
- Command-line window, the text is immediately removed by the redrawing.
- (Michael Henry, 2008 Nov 1)
- Generic solution: When redrawing while there is a message on the
- cmdline, don't erase the display but draw over the existing text.
- Other solution, redraw after closing the cmdline window, before executing
- the command.
-9 For Turkish vim_tolower() and vim_toupper() also need to use utf_
- functions for characters below 0x80. (Sertacyildiz)
-9 When the last edited file is a help file, using '0 in a new Vim doesn't
- edit the file as a help file. 'filetype' is OK, but 'iskeyword' isn't,
- file isn't readonly, etc.
-8 When an ":edit" is inside a try command and the ATTENTION prompt is used,
- the :catch commands are always executed, also when the file is edited
- normally. Should reset did_emsg and undo side effects. Also make sure
- the ATTENTION message shows up. Servatius Brandt works on this.
-7 Vimtutor leaves escape sequence in terminal. This is the xterm response to
- requesting the version number. (Yasuhiro Matsumoto)
-8 When redirecting and using ":silent" the current column for displaying and
- redirection can be different. Use a separate variable to hold the column
- for redirection.
-7 The messages for "vim --help" and "vim --version" don't use
- 'termencoding'.
-- Could the hit-enter prompt be avoided when a message only overlaps the
- 'showcmd' area? Clear that area when the next cmd is typed.
-8 When 'scrollbind' is set, a window won't scroll horizontally if the cursor
- line is too short. Add a word in 'scrollopt' to allow moving the cursor
- to longer line that is visible. A similar thing is done for the GUI when
- using the horizontal scrollbar.
-7 VisVim can only open one file. Hard to solve: each opened file is passed
- with a separate invocation, would need to use timestamps to know the
- invocations belong together.
-8 When giving a ":bwipeout" command a file-changed dialog may popup for this
- buffer, which is pointless. (Mike Williams)
-8 On MS-Windows ":make" doesn't show output while it is working. Use the
- tee.exe from http://unxutils.sourceforge.net/ ? About 16 Kbyte in the
- UnxUtils.zip archive.
- Alternate one: http://www.pramodx.20m.com/tee_for_win32.htm, but Walter
- Briscoe says it's not as good.
-8 When doing Insert mode completion a mapping cannot recursively call
- edit(), because the completion information is global. Put everything in
- an allocated structure?
-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
- character. (Yasuhiro Matsumoto) It should return 1 when used on a tail
- byte, like for utf-8. Store second byte of double-byte in ScreenLines2[]
- (like for DBCS_JPNU) and put a zero in the second byte (like for UTF-8).
-7 Inside a function with "perl <<EOF" a line with "$i++" is recognized as an
- ":insert" command, causing the following "endfunction" not to be found.
- Add skipping this perl construction inside function definitions.
-7 When 'ttimeoutlen' is 10 and 'timeoutlen' is 1000, there is a keycode
- "<Esc>a" and a mapping <Esc>x", when typing "<Esc>a" with half a second
- delay should not be interpreted as a keycode. (Hans Ginzel)
-7 ":botright 1 new" twice causes all window heights to be changed. Make the
- bottom window only bigger as much as needed.
-7 The Cygwin and MingW makefiles define "PC", but it's not used anywhere.
- Remove? (Dan Sharp)
-9 User commands use the context of the script they were defined in. This
- causes a "s:var" argument to unexpectedly use a variable in the defining
- script, not the calling script. Add an argument to ":command":
- "-keepcontext". Do replace <SID>, so that a function in the defining
- script can be called.
-8 The Japanese message translations for MS-Windows are called ja.sjis.po,
- but they use encoding cp932. Rename the file and check that it still
- works.
-8 A very long message in confirm() can't be quit. Make this possible with
- CTRL-C.
-8 "gf" always excludes trailing punctuation characters. file_name_in_line()
- is currently fixed to use ".,:;!". Add an option to make this
- configurable?
-8 'hkmap' should probably be global-local.
-9 When "$" is in 'cpoptions' and folding is active, a "C" command changes
- the folds and resets w_lines_valid. The display updating doesn't work
- then. (Pritesh Mistry)
-8 Using ":s" in a function changes the previous replacement string. Save
- "old_sub" in save_search_patterns()?
-8 Should allow multi-byte characters for the delimiter: ":s+a+b+" where "+"
- is a multi-byte character.
-8 When appending to a file and 'patchmode' isn't empty, a backup file is
- always written, even when the original file already exists.
-9 When getting focus while writing a large file, could warn for this file
- being changed outside of Vim. Avoid checking this while the file is being
- written.
-7 The message in bt_dontwrite_msg() could be clearer.
-8 The script ID that is stored with an option and displayed with ":verbose
- set" isn't reset when the option is set internally. For example when
- 'foldlevel' is set from 'foldlevelstart'.
-8 Also store the line number with the script ID and use it for ":verbose",
- so that "set nocompatible" is found when it changes other option values.
- When an option is set indirectly mention the command? E.g. when
- ":diffsplit" sets 'foldmethod'.
-8 In the fileformat dialog, "Cancel" isn't translated. Add a global
- variable for this. (Eduardo Fernandez)
-9 When editing a file with 'readonly' set, there is no check for an existing
- swap file. Then using ":write" (without making any changes) doesn't give
- a warning either. Should check for an existing swap file without creating
- one. Unfinished patch by Ian Kelling, 2008 July 14.
-7 When 'showbreak' is set, the amount of space a Tab occupies changes.
- Should work like 'showbreak' is inserted without changing the Tabs.
-7 When 'mousefocus' is set and switching to another window with a typed
- command, the mouse pointer may be moved to a part of the window that's
- covered by another window and we lose focus. Only move in the y
- direction, not horizontally?
-8 ":hardcopy":
- - Using the cterm_color[] table is wrong when t_colors is > 16.
- - Need to handle unprintable characters.
- - Win32: On a B&W printer syntax highlighting isn't visible. Perform
- dithering to make grey text?
- - Add a flag in 'printoptions' to add an empty page to make the total
- number even. "addempty"? (Mike Williams)
- - Respect 'linebreak'. Perhaps also 'showbreak'?
- - Should interpret CTRL-L as a page break.
- - Grey line numbers are not always readable. Add field in 'printoptions'.
- Default to black when no syntax highlighting.
- - Be able to print a window in diff mode.
- - Be able to specify a colorscheme to use for printing. And a separate
- one for B&W printing (if that can be detected).
-8 In Visual block mode with 'lbr' set, a change command doesn't insert the
- text in following lines where the linebreak changes.
-8 When 'virtualedit' is "block,insert" and encoding is "utf-8", selecting a
- block of one double-wide character, then "d" deletes only half of it.
-8 When 'virtualedit' is set, should "I" in blockwise visual mode also insert
- in lines that don't extend into the block?
-8 With 'virtualedit' set, in Insert mode just after the end of line, CTRL-O
- yh does not yank the last character of the line. (Pavel Papushev)
- Doing "hl" first appears to make it work.
-8 With 'virtualedit' set it's possible to move into the blank area from
- 'linebreak'.
-8 With 'virtualedit' set and 'selection' "exclusive", a Visual selection
- that ends in or after a tab, "d" doesn't delete (part of) the tab.
- (Helmut Stiegler)
-9 When jumping to a tag, the search pattern is put in the history. When
- 'magic' is on, the pattern may not work. Translate the pattern depending
- on p_magic when putting it in the history? Alternative: Store value of
- 'magic' in history. (Margo)
-9 optwin.vim: Restoring a mapping for <Space> or <CR> is not correct for
- ":noremap". Add "mapcmd({string}, {mode})? Use code from ":mkexrc".
-9 incsearch is incorrect for "/that/<Return>/this/;//" (last search pattern
- isn't updated).
-9 Get out-of-memory for ":g/^/,$s//@/" on 1000 lines, this is not handled
- correctly. Get many error messages while redrawing the screen, which
- cause another redraw, etc.
-8 [<C-I> doesn't work when '*' is in 'iskeyword'. find_pattern_in_path()
- must escape special characters in the pattern.
-8 Vim can overwrite a read-only file with ":w!". ":w" can't overwrite an
- existing file, "w!" can, but perhaps not a read-only file? Then use
- ":w!!" for that.
- Or ask for permission to overwrite it (if file can be made writable) and
- restore file to readonly afterwards.
- Overwriting a file for which a swap file exists is similar issue.
-7 X11: Some people prefer to use CLIPBOARD instead of PRIMARY for the normal
- selection. Add an "xclipboard" argument to the 'clipboard' option? (Mark
- Waggoner)
-8 For xterm need to open a connection to the X server to get the window
- title, which can be slow. Can also get the title with "<Esc>[21t", no
- need to use X11 calls. This returns "<Esc>]l{title}<Esc>\".
-6 When the xterm reports the number of colors, a redraw occurs. This is
- annoying on a slow connection. Wait for the xterm to report the number of
- colors before drawing the screen. With a timeout.
-8 When the builtin xterm termcap contains codes that are not wanted, need a
- way to avoid using the builtin termcap.
-8 Xterm sends ^[[H for <Home> and ^[[F for <End> in some mode. Also
- recognize these keys? Mostly useful for xterm simulators, like gnometerm.
- See http://dickey.his.com/xterm/xterm.faq.html#xterm_pc_style.
-8 For xterm also recognize keypad up/down/left/right and insert.
-8 '[ and '] should be set to start/end of line when using a linewise operator
- (e.g., ":w").
-8 CTRL-A can't handle big "long" numbers, they become negative. Check for
- "-" character, if not present, use unsigned long.
-8 Make it possible to disable the special meaning of "#" in the first column
- for ">>".
-8 Add suspending with CTRL-Z at the "more" prompt, and when executing a long
- script in do_cmdline().
-8 When using 'hidden', many swap files will be open. When Vim runs into the
- maximum number of open files, error messages will appear. Detect that
- this problem is present, and close any hidden files that don't have
- changes.
-8 With 'viminfo' set such that the ".viminfo" file is written on a FAT
- filesystem, an illegal file name may be created: ".vim".
-8 For each buffer that is opened, the viminfo file is opened and read to
- check for file marks. This can be slow.
-7 In xterm, recognize both vt100 and vt220 cursor keys. Change
- add_termcode() to not remove an existing entry for a name, when it's
- needed.
- Need a generic solution to recognize different codes for the same key.
-8 Core dump within signal function: gdb doesn't show stack backtrace! Option
- to skip catch_signals()?
-9 Repeating a "cw" with "." doesn't work if the text was pasted from the
- clipboard. (Thomas Jones) It's because the menu/toolbar item exits Insert
- mode and uses "gP". How to fix this without breaking inserting a block of
- text?
-8 In Replace mode pasting from the clipboard (using menu or toolbar) inserts
- all the text. Add ":rmenu"?
-8 Pasting with the mouse in Replace mode inserts the text, instead of
- overwriting, when it is more than one line. Same for using <C-R>.
-9 CTRL-E and CTRL-Y don't work in small window when 'so' is 4 and lines are
- wrapping (Acevedo/in.226). E.g., when using CTRL-E, window height 7,
- window might actually scroll down when last line of buffer is displayed.
- --> Remember if the previous command was "cursor follows screen" or
- "screen follow cursor" and use this in cursupdate().
-7 tilde_replace() can only handle "~/", should also do "~user/".
- Get the list of home directories (from /etc/passwd? Use getpwent()) and
- use some clever algorithm to match a path with that. Find common strings
- in the list?
-8 When dragging status line with mouse, sometimes a jump when first clicking
- on the status line (caused by 'winheight'). Select window on button up,
- instead of on button down.
-8 Dragging the status line doesn't scroll but redraw.
-9 Evaluating 'statusline' in build_stl_str_hl() does not properly check for
- reaching the end of the available buffer.
- Patch to dynamically allocate the buffer for % items. (Eric Arnold, 2006
- May 14)
-8 When performing incremental search, should abort searching as soon as a
- character is typed.
-8 When the value of $MAKE contains a path, configure can't handle this.
- It's an autoconf bug. Remove the path from $MAKE to work around it.
-8 How to set VIMRC_FILE to \"something\" for configure? Why does this not
- work: CFLAGS='-DVIMRC_FILE=\"/mydir/myfile\"' ./configure
-8 The temporary file is sometimes not writable. Check for this, and use an
- alternate name when it isn't. Or add the 'temptemplate' option: template
- for the temp file name ":set temptemplate=/usr/tmp/?????.tmp".
- Also: Win32 version uses Windows temp directory, which might not work for
- cygwin bash.
-7 Get error "*, \+ or \( operand could be empty" for pattern "\(.\)\1\{3}".
- Remember flags for backreferences.
-7 When switching to Daylight Saving Time, Vim complains that a file has been
- changed since last read. Can we use a function that uses GMT?
-7 When completing an environment variable after a '$', check for file names
- that contain a '$' after all have been found.
-8 When "cm" termcap entry is missing, starting gvim shouldn't complain about
- it. (Lohner) Try out with "vt100" entry, cm replaced with cX.
-7 When an include file starts with "../", the check for already visiting
- this file doesn't work. Need to simplify the file name.
-7 The names and comments for the arguments of do_browse() are confusing.
- "dflt" isn't the default file name when "initdir" is not NULL and
- "initdir" is the default path to be used.
-7 When 'scrolloff' is exactly half the window height, "j" causes a scroll of
- two lines at a time. "k" doesn't do this. (Cory T. Echols)
-8 When write_viminfo() is used while there are many orphaned viminfo
- tempfiles writing the viminfo file fails. Give a clear error message so
- that the user knows he has to delete the files.
-7 It's possible to redefine a script-local function with ":func
- <SNR>123_Test()". (Krishna) Disallow this.
-
-
-I can't reproduce these (if you can, let me know how!):
-9 NT 4.0 on NTFS file system: Editing ".bashrc" (drag and drop), file
- disappears. Editing ".xyz" is OK. Also, drag&drop only works for three
- files. (McCollister)
-
-
-Problems that will (probably) not be solved:
-- xterm title: The following scenario may occur (esp. when running the Vim
- test script): Vim 1 sets the title to "file1", then restores the title to
- "xterm" with an ESC sequence when exiting. Vim 2 obtains the old title
- with an X library call, this may result in "file1", because the window
- manager hasn't processed the "xterm" title yet. Can apparently only be
- worked around with a delay.
-- In a terminal with 'mouse' set such that the mouse is active when entering
- a command line, after executing a shell command that scrolls up the
- display and then pressing ":": Selecting text with the mouse works like
- the display wasn't scrolled. Vim doesn't know how much the external
- command scrolled up the display. Use Shift to select text.
-- X windows: When $DISPLAY points to a X server where there is no access
- permission, trying to connect to the X server causes an error message.
- XtOpenDisplay() prints this directly, there is no way to avoid it.
-- Moving the cursor removes color in color-xterm. This is a color-xterm
- problem! color-xterm ver. 6.1 beta 3 and later work properly.
-- In zsh, "gvim&" changes the terminal settings. This is a zsh problem.
- (Jennings)
-- Problem with HPterm under X: old contents of window is lost (Cosentino).
-- Linux: A file with protection r--rw-rw- is seen readonly for others. The
- access() function in GNU libc is probably wrong.
-- MSDOS: When using smartdrive with write-back buffering, writing to a
- readonly floppy will cause problems. How to test for a writable floppy
- first?
-- MSDOS: Both 16 and 32 bit versions: File name expansion doesn't work for
- names that start with a dot. These used to be illegal file names.
-- When doing a CTRL-Z and typing a command for the shell, while Vim is busy
- (e.g. writing a file), the command for the shell is sometimes eaten by Vim,
- because the terminal mode is changed from RAW to CBREAK.
-- An old version of GNU tgoto can't handle the terminfo code for "AF". The
- "%p1" is interpreted as "%p" and "1", causing color not to be working.
- Fix: Change the "%p1" in the "AF" and "AB" terminfo entries to "%p".
- (Benzinger).
-- Win32: All files created on the day of switching from winter to summer
- time cause "changed since editing started" messages. It goes away when
- the file is written again the next day, or the timezone is adjusted.
- Looks like a problem with the Win32 library.
- Rebooting doesn't help. Time stamps look OK in directory. (Penn)
- Is this on FAT (stores wall clock time) or NTFS (stores UTS)?
-- Win32, MS-Windows XP: $HOME uses the wrong drive when the user profiles
- are not on the boot disk. This is caused by a wrong value of $HOMEDRIVE.
- This is a bug in XP, see MSKB article 818134.
-- Win32, MS-Windows: expanding plugin/**/*.vim also picks up
- dir/ctags.vim,v. This is because the short file name is something like
- "ctags~1.vim" and that matches the pattern.
-- When using an xterm that supports the termresponse feature, and the 't_Co'
- termcap option was wrong when Vim started, it will be corrected when the
- termresponse is received. Since the number of colors changes, the
- highlighting needs to be initialized again. This may cause colors defined
- in the vimrc file to be lost.
-- On Windows NT 4.0 the number of files passed to Vim with drag&drop and
- "Edit with Vim" is limited. The maximum command line length is 255 chars.
-
---------------------- extensions and improvements ----------------------
- *extensions-improvements*
-
-Most interesting new features to be added when all bugs have been fixed:
-- Using ":exe edit fname" has escaping problems. Use ":edit ++(fname)".
- Thus use "++=" to give arguments as expressions, comma separated as if
- calling a function.
- With options: ":edit ++(['!', '++enc=abc'], ['+/pat'], fname)".
- Alternative: Make a function for Ex commands: cmd_edit().
-- Add COLUMN NUMBERS to ":" commands ":line1,line2[col1,col2]cmd". Block
- can be selected with CTRL-V. Allow '$' (end of line) for col2.
-- Add DEBUGGER INTERFACE. Implementation for gdb by Xavier de Gaye.
- Should work like an IDE. Try to keep it generic. Now found here:
- http://clewn.sf.net.
- And the idevim plugin/script.
- To be able to start the debugger from inside Vim: For GUI run a program
- with a netbeans connection; for console: start a program that splits the
- terminal, runs the debugger in one window and reconnect Vim I/O to the
- other window.
- Wishes for NetBeans commands:
- - make it possible to have 'defineAnnoType' also handle terminal colors.
- - send 'balloonText' events for the cursor position (using CursorHold ?)
- in terminal mode.
-- ECLIPSE plugin. Problem is: the interface is very complicated. Need to
- implement part in Java and then connect to Vim. Some hints from Alexandru
- Roman, 2004 Dec 15. Should then also work with Oracle Jdeveloper, see JSR
- 198 standard http://www.jcp.org/en/jsr/detail?id=198.
- Eclim does it: http://eclim.sourceforge.net/ (Eric Van Dewoestine)
- Plugin that uses a terminal emulator: http://vimplugin.sf.net
- And another one: http://www.satokar.com/viplugin/index.php
-- STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is.
- Especially when using the scrollbar. Typing a cursor-movement command
- scrolls back to where the cursor is.
-- Scroll commands by screen line. g CTRL-E and g CTRL-Y ? Requires the
- first line to be able to start halfway through.
-8 Add a command to jump to a certain kind of tag. Allow the user to specify
- values for the optional fields. E.g., ":tag size type=m".
- Also allow specifying the file and command, so that the result of
- taglist() can be used.
-- X11: Make it possible to run Vim inside a window of another program.
- This can be done with XReparentWindow(). But how exactly?
-
-
-Documentation:
-8 List of Vim runtime directories. dotvim.txt from Charles Campbell, 2007
- Feb 20.
-8 List of options should mention whether environment variables are expanded
- or not.
-8 Extend usr_27.txt a bit. (Adam Seyfarth)
-7 Add a section on debugging scripts in the user manual.
-9 Make the Reference Manual more precise. For each command mention:
- - change to cursor position and curswant
- - if it can be undone (u/CTRL-R) and redone (.)
- - how it works for folded lines
- - how it works with multi-byte characters
-9 In change.txt, remark about Javadoc isn't right. Right alignment would
- work too.
-8 Spread the windows commands over the other files. For example, ":stag"
- should be with ":tag". Cross-link with tags to avoid too much double
- text.
-8 Add tags for all features, e.g. "gui_running".
-7 MS-Windows: When a wrong command is typed with an ALT key, give a hint to
- look at the help for 'winaltkeys'.
-7 Add a help.vim plugin that maps <Tab> to jump to the next tag in || and
- <C-Tab> (and <S-Tab>) to the previous tag.
- Patch by Balazs Kezes, 2007 Dec 30. Remark from A. Politz.
-- Check text editor compendium for vi and Vim remarks.
-
-
-Help:
-- First try using the ":help" argument literally, before using it as a
- pattern. And then match it as part of a tag.
-- When a help item has multiple matches make it possible to use ":tn" to go
- to the other matches.
-- Support a way to view (and edit) .info files.
-- Default mapping for help files: <Tab> to position cursor on next |:tag|.
-- Implement a "sticky" help window, some help text lines that are always
- displayed in a window with fixed height. (Guckes) Use "~/.vimhelp" file,
- user can edit it to insert his favorite commands, new account can contain a
- default contents.
-- Make 'winminheight' a local option, so that the user can set a minimal
- height for the help window (and other windows).
-- ":help :s^I" should expand to ":help :substitute".
-- Make the help key (<F1>) context sensitive?
-- Learn mode: show short help while typing commands.
-
-
-User Friendlier:
-8 Windows install with install.exe: Use .exe instead of .bat files for
- links, so that command line arguments are passed on unmodified? (Walter
- Briscoe)
-8 Windows install: Be able to associate Vim with a selection of file types?
-8 Windows uninstall: Have uninstal.c delete the vimfiles directories that
- dosinst.c creates. List the contents of the directory (recursively) if
- the user asks for it. Requires an implementation of "rm -rf".
-8 Remember the name of the vimrc file that was used (~/.vimrc, $VIM/_vimrc,
- $HOME/_vimrc, etc.) and add "edit vimrc" to the File menu.
-- Add a way to save local settings and mappings into a new plugin file.
- ":mkplugin <file>"?
-8 Add ":plugininstall" command. Can be used to install a plugin file that
- includes documentation. Let the user select a directory from
- 'runtimepath'.
- " Vim plugin
- <main plugin code>
- " >>> plugin help start <<<
- <plugin docs>
-- Add mappings local to a window: ":map <window> ..."?
-9 Add buffer-local menu. Should offer a choice between removing the menu or
- disabling it. Be careful that tear-offs don't disappear (keep one empty
- item?).
- Alternative: use BufEnter and BufLeave autocommands.
-7 Add the arguments for configure to the ":version" output?
-7 When Vim detects a file is being edited elsewhere and it's a gvim session
- of the same user it should offer a "Raise" button, so that the other gvim
- window can be displayed. (Eduard)
-
-
-Tab pages:
-9 GUI implementation for the tab pages line for other systems.
-7 GUI: Control over the appearance of the text in the labels (bold, color,
- font, etc.)
-8 Make GUI menu in tab pages line configurable. Like the popup menu.
-8 balloons for the tab page labels that are shortened to show the full path.
-7 :tabdup duplicate the tab with all its windows.
-7 Option to put tab line at the left or right? Need an option to specify
- its width. It's like a separate window with ":tabs" output.
-7 Add local variables for each tab page?
-8 Add local options for each tab page? E.g., 'diffopt' could differ between
- tab pages.
-7 Add local highlighting for each tab page?
-7 Add local directory for tab pages? How would this interfere with
- window-local directories?
-
-
-Spell checking:
-- Support more regions? Caolan McNamara argues it's needed for es_XX.
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=219777
-- Unicode defines another quote character: 0x2019. Use it as an equivalent
- of a single quote, thus use it as a word character like a quote and match
- with words, replacing the curly quote with a single quote.
-- Could filter &eacute; things for HTML before doing spell checking.
- Similarly for TeX.
-- The Hungarian spell file uses four extra characters in the FOL/UPP/LOW
- items than other spell files with the ISO-8859-2 encoding, that causes
- problem when changing 'spelllang'. There is no obvious way to fix this.
-- Considering Hunspell 1.1.4:
- What does MAXNGRAMSUGS do?
- Is COMPLEXPREFIXES necessary when we have flags for affixes?
-- Support spelling words in CamelCase as if they were two separate words.
- Requires some option to enable it. (Timothy Knox)
-- There is no Finnish spell checking file. For openoffice Voikko is now
- used, which is based on Malaga: http://home.arcor.de/bjoern-beutel/malaga/
- (Teemu Likonen)
-8 ":mkspell" still takes much too long in Hungarian dictionary from
- hunspell. Only solution appears to be to postpone secondary suffixes.
-8 Handle postponed prefix with COMPOUNDPERMITFLAG or COMPOUNDFORBIDFLAG.
- WFP_COMPPERMIT and WFP_COMPFORBID
-8 implement use of <compoptions> in .spl file:
- implement CHECKCOMPOUNDREP: when a compound word seems to be OK apply REP
- items and check if the result is a valid word.
- implement CHECKCOMPOUNDDUP
- implement CHECKCOMPOUNDTRIPLE
- Add CHECKCOMPOUNDCASE: when compounding make leading capital lower case.
- How is it supposed to work?
-- Add a command the repeats ]s and z=, showing the misspelled word in its
- context. Thus to spell-check a whole file.
-- suggestion for "KG" to "kg" when it's keepcase.
-- For flags on affixes: Use a "AFFCOMPSET" flag; means the compound flags of
- the word are not used.
-- Support breakpoint character ? 0xb7 and ignore it? Makes it possible to
- use same wordlist for hyphenation.
-- Compound word is accepted if nr of words is <= COMPOUNDWORDMAX OR nr of
- syllables <= COMPOUNDSYLMAX. Specify using AND in the affix file?
-- NEEDCOMPOUND also used for affix? Or is this called ONLYINCOMPOUND now?
- Or is ONLYINCOMPOUND only for inside a compound, not at start or end?
-- Do we need a flag for the rule that when compounding is done the following
- word doesn't have a capital after a word character, even for Onecap words?
-- New hunspell home page: http://hunspell.sourceforge.net/
- - Version 1.1.0 is out now, look into that.
- - Lots of code depends on LANG, that isn't right. Enable each mechanism
- in the affix file separately.
- - Example with compounding dash is bad, gets in the way of setting
- COMPOUNDMIN and COMPOUNDWORDMAX to a reasonable value.
- - PSEUDOROOT == NEEDAFFIX
- - COMPOUNDROOT -> COMPOUNDED? For a word that already is a compound word
- Or use COMPOUNDED2, COMPOUNDED3, etc.
-- CIRCUMFIX: when a word uses a prefix marked with the CIRCUMFIX flag, then
- the word must also have a suffix marked with the CIRCUMFIX flag. It's a
- bit primitive, since only one flag is used, which doesn't allow matching
- specific prefixes with suffixes.
- Alternative:
- PSFX {flag} {pchop} {padd} {pcond} {schop} {sadd}[/flags] {scond}
- We might not need this at all, you can use the NEEDAFFIX flag and the
- affix which is required.
-- When a suffix has more than one syllable, it may count as a word for
- COMPOUNDWORDMAX.
-- Add flags to count extra syllables in a word. SYLLABLEADD1 SYLLABLEADD2,
- etc.? Or make it possible to specify the syllable count of a word
- directly, e.g., after another slash: /abc/3
-- MORPHO item in affix file: ignore TAB and morphological field after
- word/flags and affix.
-- Implement multiple flags for compound words and CMP item?
- Await comments from other spell checking authors.
-- Also see tklspell: http://tkltrans.sourceforge.net/
-8 Charles Campbell asks for method to add "contained" groups to existing
- syntax items (to add @Spell).
- Add ":syntax contains {pattern} add=@Spell" command? A bit like ":syn
- cluster" but change the contains list directly for matching syntax items.
-- References: MySpell library (in OpenOffice.org).
- http://spellchecker.mozdev.org/source.html
- http://whiteboard.openoffice.org/source/browse/whiteboard/lingucomponent/source/spellcheck/myspell/
- author: Kevin Hendricks <kevin.hendricks@sympatico.ca>
-8 It is currently not possible to mark "can not" as rare, because "can" and
- "not" are good words. Find a way to let "rare" overrule "good"?
-8 Make "en-rare" spell file? Ask Charles Campbell.
-8 The English dictionaries for different regions are not consistent in their
- use of words with a dash.
-7 Insert mode completion mechanism that uses the spell word lists.
-8 Add hl groups to 'spelllang'?
- :set spelllang=en_us,en-rare/SpellRare,en-math/SpellMath
- More complicated: Regions with different languages? E.g., comments
- in English, strings in German (po file).
-
-
-Diff mode:
-9 When making small changes, e.g. deleting a character, update the diff.
- Possibly without running diff.
-9 Instead invoking an external diff program, use builtin code. One can be
- found here: http://www.ioplex.com/~miallen/libmba/dl/src/diff.c
- It's quite big and badly documented though.
-8 Use diff mode to show the changes made in a buffer (compared to the file).
- Use an unnamed buffer, like doing:
- new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
- Also show difference with the file when editing started? Should show what
- can be undone. (Tom Popovich)
-7 Add cursor-binding: when moving the cursor in one diff'ed buffer, also
- move it in other diff'ed buffers, so that CTRL-W commands go to the same
- location.
-
-
-Folding:
- (commands still available: zI zJ zK zp zP zq zQ zV zy zY;
- secondary: zB zS zT zZ, z=)
-8 Vertical folds: looks like vertically split windows, but the cursor moves
- through the vertical separator, separator moves when scrolling.
-8 Add "z/" and "z?" for searching in not folded text only.
-9 Add search pattern item to only match in closed or open fold and/or fold
- with certain level. Allows doing ":g/pat/cmd" to work on closed folds.
-8 When a closed fold is displayed open because of 'foldminlines', the
- behavior of commands is still like the fold is closed. How to make the
- user aware of this?
-8 Add an option 'foldskip' with values like 'foldopen' that specifies which
- commands skip over a closed fold.
-8 "H" and "L" count buffer lines instead of window lines. (Servatius Brandt)
-8 Add a way to add fold-plugins. Johannes Zellner has one for VB.
-7 When using manual folding, the undo command should also restore folds.
-- Allow completely hiding a closed fold. E.g., by setting 'foldtext' to an
- empty string. Require showing a character in 'foldcolumn' to avoid the
- missing line goes unnoticed.
- How to implement this?
-- When pressing the down arrow of a scrollbar, a closed fold doesn't scroll
- until after a long time. How to make scrolling with closed folds
- smoother?
-- When creating a session, also store folds for buffers in the buffer list,
- using the wininfo in wi_folds.
-- When currently editing the first file in the argument list the session
- file can contain:
- args version.c main.c
- edit version.c
- Can editing version.c twice be avoided?
-- 'foldmethod' "textobject": fold on sections and paragraph text objects.
-- "zuf": undo change in manual fold. "zUf" redo change in manual fold. How
- to implement this?
-- "zJ" command: add the line or fold below the fold in the fold under the
- cursor.
-- 'foldmethod' "syntax": "fold=3" argument: set fold level for a region or
- match.
-- Apply a new foldlevel to a range of lines. (Steve Litt)
-8 Have some way to restrict commands to not folded text. Also commands like
- searches.
-
-
-Multi-byte characters:
-- When editing a file with both utf-8 and latin1 text Vim always falls back
- to latin1. Add a command to convert the latin1 characters to utf-8?
- :unmix utf-8,latin1 filename
- Would only work when 'encoding' is utf-8.
-9 When the tail byte of a double-byte character is illegal (e.g., a CR), the
- display is messed up (Yasuhiro Matsumoto). Should check for illegal
- double-byte characters and display them differently (display each single
- byte).
-9 'fenc' in modeline problem: add option to reload the file when 'fenc' is
- set to a different value in a modeline? Option can be default on. Could
- it be done with an autocommand?
-8 Add an item in 'fileencodings' to check the first lines of a file for
- the encoding. See Python PEP: http://www.python.org/peps/pep-0263.html.
- To avoid getting a wrong encoding only accept something Emacs-like:
- "-*- coding: enc-na_me.foo -*-" and "-*- coding= enc-na_me.foo -*-"
- Match with "-\*-\s*coding[:=]\s*\([::word::-_.]\+\)\s*-\*-" and use first
- item.
-8 Add an item in 'fileencodings' to check the first line of an XML file for
- the encoding. <?xml version="1.0" encoding="UTF-8"?> Or "charset=UTF-8"?
- For HTML look for "charset=utf-8".
-8 The quickfix file is read without conversion, thus in 'encoding'. Add an
- option to specify the encoding of the errorfile and convert it. Also for
- ":grep" and ":helpgrep".
- More generic solution: support a filter (e.g., by calling a function).
-8 When a file was converted from 'fileencoding' to 'encoding', a tag search
- should also do this on the search pattern. (Andrzej M. Ostruszka)
-8 When filtering changes the encoding 'fileencoding' may not work. E.g.,
- when using xxd and 'fileencoding' is "utf-16". Add an option to set a
- different fileencoding for filter output?
-7 When converting a file fails, mention which byte could not be converted,
- so that the user can fix the problem.
-8 Add configure option to be able to disable using the iconv library. (Udo
- Schweigert)
-9 'aleph' should be set to 1488 for Unicode. (Zvi Har'El)
-8 Should add test for using various commands with multi-byte characters.
-8 'infercase' doesn't work with multi-byte characters.
-8 toupper() function doesn't handle byte count changes.
-7 Searching and composing characters:
- When searching, should order of composing characters be ignored?
- Add a special item to match with a composing character, so that composing
- characters can be manipulated.
-8 Should implement 'delcombine' for command line editing.
-8 Detect overlong UTF-8 sequences and handle them like illegal bytes.
-8 ":s/x/\u\1/" doesn't work, making uppercase isn't done for multi-byte
- characters.
-8 UTF-8: "r" in Visual mode doesn't take composing characters.
-8 UTF-8: When there is a precomposed character in the font, use it instead
- of a character and a composing character. See xterm for an example.
-7 When a character can't be displayed, display its digraph instead.
- 'display' option to specify this.
-7 Use ideas for nl_langinfo() from Markus Kuhn in enc_default():
- (www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c)
-- dbcs_class() only works for Japanese and Korean. Implement this for
- other encodings. The "euc-jp" and "euc-kr" choices might be wrong.
-- Find some way to automatically select the right GUI font or fontset,
- depending on the default value of 'encoding'.
- Irrelevant in the GTK+ 2 GUI so long as UTF-8 is used.
- For Windows, the charset_pairs[] table could be used. But how do we know
- if a font exists?
-- Do keyboard conversion from 'termencoding' to 'encoding' with
- convert_input() for Mac GUI.
-- Add mnemonics from RFC1345 longer than two characters.
- Support CTRL-K _{mnemonic}_
-7 In "-- INSERT (lang) --" show the name of the keymap used instead of
- "lang". (Ilya Dogolazky)
-- Make 'breakat' accept multi-byte characters. Problem: can't use a lookup
- table anymore (breakat_flags[]).
- Simplistic solution: when 'formatoptions' contains "m" also break a line
- at a multi-byte character >= 0x100.
-- Add the possibility to enter mappings which are used whenever normal text
- could be entered. E.g., for "f" command. But not in Normal mode. Sort
- of opposite of 'langmap'. Use ":tmap" command?
-- When breaking a line, take properties of multi-byte characters into
- account. The "linebreak" program from Bruno Haible can do it:
- ftp://ftp.ilog.fr/pub/Users/haible/gnu/linebreak-0.1.tar.gz
- But it's very complicated...
-
-
-Printing:
-7 Implement "undercurl" for printing.
-- Add "page width" to wrap long lines.
-- Win32: use a font dialog for setting 'printfont'. Can reuse the code for
- the 'guifont' dialog, put the common code in a separate function.
-- Add the file timestamp to the page header (with an option). (George
- Reilly)
-- Win32: when 'printfont' is empty use 'guifont'.
-- Unix: Use some dialog box to do the obvious settings (paper size, printer
- name, portrait/landscape, etc).
-- PostScript: Only works for text that can be converted to an 8-bit
- character set. How to support Unicode fully?
-- Allow specifying the paper size, instead of using a standard size. Same
- units as for the margins.
-- Support right-to-left text?
-8 Make the foreground color darkening function preserve the hue of the
- color.
-
-
-Syntax highlighting:
-8 Make ":syn off" use 'runtimepath' instead of $VIMRUNTIME. (Gary Johnson)
- Should do the same for ":syn on" and ":syn manual".
-8 Support "containedin" argument for ":syn include", so that the defined
- cluster can be added to existing syntax items.
-8 C syntax: Don't highlight {} as errors inside () when used like this:
- "({ something })", often used in GCC code.
-7 Add a "startgroup" to a region. Used like "nextgroup" inside the region,
- preferred item at the start of the region. (Charles Campbell)
-8 When editing a new file without a name and giving it a name (by writing
- it) and 'filetype' is not set, detect the filetype. Avoid doing it for
- ":wq file".
-7 For "nextgroup" we have skipwhite, skipnl and skipempty. It would be
- really nice to be able to skip with a pattern. Or skip with a syntax
- group. (Nikolai Weibull, 2007 Feb 27)
-8 Make conversion to HTML faster (Write it in C or pre-compile the script).
-9 There is still a redraw bug somewhere. Probably because a cached state is
- used in a wrong way. I can't reproduce it...
-7 Be able to change only the background highlighting. Useful for Diff* and
- Search highlighting.
-7 When 'number' is set highlight the number of the current line.
- Must be enabled with an option, because it slows down display updating.
-8 Allow the user to add items to the Syntax menu sorted, without having to
- change this for each release.
-8 Add a "matchcontains" for regions: items contained in the start or end
- pattern, but not in the body.
-8 Add a "keepend-contained" argument: Don't change the end of an item this
- one is contained in. Like "keepend" but specified on the contained item,
- instead of the containing item.
-8 cpp.vim: In C++ it's allowed to use {} inside ().
-8 Some syntax files set 'iskeyword'. When switching to another filetype
- this isn't reset. Add a special keyword definition for the syntax rules?
- When this is done, use vim.vim syntax highlighting for help file examples,
- but without ":" in 'iskeyword' for syntax.
- Also need a separate 'iskeyword' for the command line, e.g., in a help
- window ":e /asdf/asdf/" CTRL-W works different.
-8 Add specific syntax item to match with parens/braces that don't have a
- "%" match. :syntax nomatch cMatchError (,{,[,),},] [contained]
-8 Highlight the text between two matching parens (e.g., with a grey
- background) when on one of the parens or in between them.
- Option for the matchparen plugin?
-8 When using a cterm, and no ctermfg or ctermbg are defined, use start/stop
- sequences. Add remark in docs that :if 'term' == "term-name" should be
- used.
-8 Add @spell cluster to String and Comment groups for many languages. Will
- allow spell checking. (Fleiner)
-8 When listing syntax items, try to sort the keywords alphabetically. And
- re-insert the [] if possible.
-8 Make it possible to use color of text for Visual highlight group (like for
- the Cursor).
-8 It would be useful to make the highlight group name an expression. Then
- when there is a match, the expression would be evaluated to find out what
- highlight group to use. Could be used to check if the shell used in a
- password file appears in /etc/shells. (Nikolai Weibull)
- syn match =s:checkShell(v:match) contained 'pattern'
-8 Make it possible to only highlight a sub-expression of a match. Like
- using "\1" in a ":s" command.
-8 Support for deleting syntax items:
- :syn keyword cTodo remove this
- :syn match cTodo remove "pattern"
- :syn region cString remove start="this" end="that"
-8 Add possibility to sync on something else, when the syncing in one way
- doesn't find match. For HTML: When no {script} is found, try looking for
- a '<'. (Fleiner)
-7 Replace the synchronizing method with a state machine specification?
- Should be able to start at any line in the file, search forwards or
- backwards, and use the result of matching a pattern.
-7 Use parsing like awk, so that e.g., a ( without a matching ) can be
- detected.
-8 Make it possible to use "inverted" highlighting, invert the original
- character. For Visual mode. (xterm-selection already does this).
-8 Highlight non-printable characters with "SpecialChar", linked to
- "Special". Display them with the digraph characters, if possible.
-8 Highlight the clipboard-selection with a highlight group.
-8 Be able to reset highlighting to its original (default) values.
-7 Be able to write current highlighting to a file as commands, similar to
- ":mkvimrc".
-8 Improve c.vim:
- - Add check for unterminated strings, with a variable to switch it on:
- "c_strict_ansi".
- - Detect unbalanced "#endif". Requires looking back a long way...
-8 Add an option to restrict the updating of syntax highlighting to the
- current line while in Insert mode.
-8 When guessing value of 'background', the syntax file has already been
- loaded (from the .gvimrc). After changing 'background', load it again?
-8 Add ":syn resync" command, to re-parse the whole file until the current
- display position.
-8 Should support "me" offset for a region start pattern. To be used to
- allow searching for the end pattern inside the match of the end pattern.
- Example: syn region pikeXX start="([^{]" end=")" should work on "()".
-8 When using a regexp for "contains=", should delay matching with it until
- redrawing happens. Set a flag when a group is added, check this flag when
- highlighting starts.
-8 Some terminals can display colors like the GUI. Add some setting to use
- GUI colors for the terminal? With something to define the escape
- sequence.
-7 It's possible for an item to be transparent, so that the colors of an item
- lower on the stack is used. Also do this with highlighting, so that the
- user can set transparent highlighting? E.g. a number in a C comment would
- get the color of a comment, a number in an assignment Normal. (Nikolai
- Weibull)
-7 Add "semitrans": Add highlighting. E.g., make the text bold, but keep the
- colors. And add colors, so that Green+Red becomes Yellow.
- E.g. for this html:
- <B> bold text <I> italic+bold text </B> italic text </I>
-7 CTRL-] checks the highlight group for finding out what the tag is.
-7 Add an explanation how a list of words can be used to highlight misspelled
- words.
-8 Add more command line completion for :syntax.
-8 Add more command line completion for :highlight.
-7 Should find a better way to parse the :syntax and :highlight commands.
- Use tables or lists that can be shared by parsing for execution and
- completion?
-8 Add ColorSchemePost autocommand event, so that scripts can set up their
- highlighting. (Salman Halim)
-7 Add a few sets of colors (e.g. Borland Turbo C one). With a menu to
- select one of the sets.
-8 Add offsets to sub-matches: "\(a*\) *"he=e1-1
- 'e' is end of match 'e1' is end of sub-match 1, 's2' is start of submatch
- 2, etc.
-8 In Insert mode, when there are typeahead characters, postpone the
- highlighting (for "." command).
-8 Syncing on comments isn't 100% correct when / / lines mix with / * and * /.
- For example: What about a line that starts with / / and contains * /?
-8 Ignore / * and * / inside strings, when syncing.
-7 Build a few more syntax files from the file "/usr/share/misc/vgrindefs":
- ISP, LDL, Icon, ratfor. And check "nedit/source/highlight.c".
-6 Add possibility to have background color continue until the right edge of
- the window. Useful for comment blocks and function headings. (Rogall)
-- Make it possible to add "contains" items for all items in a group. Useful
- when extending an already existing syntax file.
-- Add line-continuation pattern for non-syncing items too?
-- Add possibility to highlight the whole line, including the right margin
- (for comment blocks).
-- Add 'hlmatch' option: List of flags:
- 'c': highlight match for character under the cursor.
- 'b': highlight the previous (, and its match.
- 'a': highlight all text from the previous ( until its match.
- Also for {}, <>, etc.?
- 'e': highlight all braces without a match (slow?)
- OR: add an argument "cursor" to the syntax command, which means that the
- region/match/keyword is only highlighted when the cursor is on it.
- (Campbell)
- Or do it like Elvis: define text objects and how to highlight them around
- the cursor. (Iain Truskett)
-7 Make it possible to use all words in the tags files as Keyword.
- Can also be done with a script (but it's slow).
-7 Make it possible to call a ":" command when a match is found. Should
- allow for adding keywords from the text (e.g. variables that are set).
- And allows for sections with different highlighting.
-7 Add highlight group for commandline: "Commandline". Make sure it
- highlights the command line while typing a command, and any output from
- messages. And external commands?
-8 Make a version that works like less, but with highlighting: read stdin for
- text, exit at end of file, don't allow editing, etc. moreim? lessim?
-7 SpecialKey highlighting overrules syntax highlighting. Can't give an
- unprintable char another color. Would be useful for ^M at end of line.
-
-
-Built-in script language:
-8 Make the filename and line number available to script functions, so that
- they can give useful debugging info. The whole call stack would be ideal.
- At least use this for error messages.
-7 Execute a function with standard option values. No need to save and
- restore option values. Especially useful for new options. Problem: how
- to avoid a performance penalty (esp. for string options)?
-8 Add referring to key options with "&t_xx". Both for "echo &t_xx" and
- ":let &t_xx =". Useful for making portable mappings.
-- Add ":let var ?= value", conditional assignment. Patch by Dave Eggum,
- 2006 Dec 11.
-- range for ":exec", pass it on to the executed command. (Webb)
-8 ":{range}source": source the lines from the current file.
- You can already yank lines and use :@" to execute them.
- Most of do_source() would not be used, need a new function.
- It's easy when not doing breakpoints or profiling.
- Requires copying the lines into a list and then creating a function to
- execute lines from the list. Similar to getnextac().
-7 ":include" command: just like ":source" but doesn't start a new scriptID?
- Will be tricky for the list of script names.
-8 Have a look at VSEL. Would it be useful to include? (Bigham)
-8 Add ":fungroup" command, to group function definitions together. When
- encountered, all functions in the group are removed. Suggest using an
- obscure name to avoid name clashes. Require a ":fungroup END" in the same
- sourced file? Assume the group ends at the end of the file. Handle
- nested packages?
- Alternative: Support packages. {package-name}:{function-name}().
- Packages are loaded automatically when first used, from
- $VIMRUNTIME/packages (or use a search path).
-7 Pre-parse or compile Vim scripts into a bytecode.
- 1. Put the bytecode with the original script, with an ":if
- has('bytecode')" around it, so that it's only used with a Vim that
- supports it. Update the code with a command, can be used in an
- autocommand.
- 2. Use a ".vic" file (like Python use .pyc). Create it when writing a
- .vim file. Problem: distribution.
- 3. Use a cache directory for each user. How to recognize which cached
- file belongs to a sourced script?
-7 Add argument to winwidth() to subtract the space taken by 'foldcolumn',
- signs and/or 'number'.
-6 Add ++ and -- operators? They only work on variables (lvals), how to
- implement this?
-8 Add functions:
- has(":command") Check if ":command" works. compare function
- with "ex_ni". E.g. for ":simalt".
- system() With a List argument. Bypasses the shell, use
- exec() directly. (Bob Hiestand)
- escape() Add argument to specify what to escape with.
- modestack() Instead of just the current mode return the
- stack of Insert / CTRL-O / :normal things.
- realname() Get user name (first, last, full)
- user_fullname() patch by Nikolai Weibull, Nov
- 3 2002
- Only add this when also implemented for
- non-Unix systems, otherwise a shell cmd could
- be used.
- get_user_name() gets login name.
- menuprop({name}, {idx}, {what})
- Get menu property of menu {name} item {idx}.
- menuprop("", 1, "name") returns "File".
- menuprop("File", 1, "n") returns "nmenu
- File.Open..." argument.
- Patch by Ilya Sher, 2004 Apr 22
- Return a list of menus and/or a dictionary
- with properties instead.
- mapname({idx}, mode) return the name of the idx'th mapping.
- Patch by Ilya Sher, 2004 Mar 4.
- Return a list instead.
- char2hex() convert char string to hex string.
- base64enc() base 64 encoding
- base64dec() base 64 decoding
- attributes() return file protection flags "drwxrwxrwx"
- filecopy(from, to) Copy a file
- shorten(fname) shorten a file name, like home_replace()
- perl(cmd) call Perl and return string
- inputrl() like input() but right-to-left
- typed() return the characters typed and consumed (to
- find out what happened)
- virtualmode() add argument to obtain whether "$" was used in
- Visual block mode.
- getacp() Win32: get codepage (Glenn Maynard)
- deletebufline() delete line in any buffer
- appendbufline() append line in any buffer
- libcall() Allow more than one argument.
- libcallext() Like libcall(), but using a callback function
- to allow the library to execute a command or
- evaluate an expression.
-7 Make bufname("'0") return the buffer name from mark '0. How to get the
- column and line number? col("'0") currently returns zero.
-8 argc() returns 0 when using "vim -t tag". How to detect that no file was
- specified in any way? To be able to jump to the last edited file.
-8 Pass the command line arguments to Vim scripts in some way. As v:args
- List? Or extra parameter to argv()?
-8 Add command arguments with three dashes, passed on to Vim scripts.
-7 Add optional arguments to user functions:
- :func myFunc(arg1, arg2, arg3 = "blah", arg4 = 17)
-6 User functions: Functions local to buffer "b:func()"?
-8 For Strings add ":let var[{expr}] = {expr}". When past the end of "var"
- just ignore.
-8 The "= register should be writable, if followed by the name of a variable,
- option or environment variable.
-8 ":let &option" should list the value of the option.
-8 ":let Func().foo = value" should work, also when "foo" doesn't exist.
- Also: ":let Func()[foo] = value" should work. Same for a List.
-7 Add synIDlist(), making the whole list of syntax items on the syntax stack
- available as a List.
-8 Add autocommand-event for when a variable is changed:
- :au VarChanged {varname} {commands}
-8 Add "has("gui_capable")", to check if the GUI can be started.
-8 Add possibility to use variables like registers: characterwise (default),
- linewise (when ending in '\n'), blockwise (when ending in '\001'). reg0,
- rega, reg%, etc. Add functions linewise({expr}), blockwise({expr}) and
- charwise({expr}).
-7 Make it possible to do any command on a string variable (make a buffer
- with one line, containing the string). Maybe add an (invisible) scratch
- buffer for this?
- result = scratch(string, command)
- result = apply(string, command)
- result = execute(string, command)
- "command" would use <> notation.
- Does scratch buffer have a number? Or re-use same number?
-7 Add function to generate unique number (date in milliseconds).
-
-
-Robustness:
-6 Add file locking. Lock a file when starting to edit it with flock() or
- fcntl(). This patch has advisory file locking while reading/writing
- the file for Vim 5.4: ~/vim/patches/kahn_file_locking .
- The patch is incomplete (needs support for more systems, autoconf).
- Andy doesn't have time to work on it.
- Disadvantage: Need to find ways to gracefully handle failure to obtain a
- lock. When to release a lock: When buffer is unloaded?
-
-
-Performance:
-7 For string variables up to 3 bytes don't allocate memory, use v_list
- itself as a character array. Use VAR_SSTRING (short string).
-7 Add 'lazysize' option: Above this size Vim doesn't load everything before
- starting to edit a file. Things like 'fileencodings' only work up to this
- size, modelines only work at the top. Useful for large log files where
- you only want to look at the first few pages. Use zero to disable it.
-8 move_lines() copies every line into allocated memory, making reloading a
- buffer a lot slower than re-editing the file. Can the memline be locked
- so that we don't need to make a copy? Or avoid invoking ml_updatechunk(),
- that is taking a lot of time. (Ralf Wildenhues, 2008 Jul 7)
- With a patch, but does it work?
-8 Instead of loading rgb.txt every time a color wasn't recognized load it
- once and keep it in memory. Move the code to a common place to avoid
- repeating it in various system files.
-8 Turn b_syn_ic and b_syn_containedin into b_syn_flags.
-9 Loading menu.vim still takes quite a bit of time. How to make it faster?
-8 in_id_list() takes much time for syntax highlighting. Cache the result?
-7 setpcmark() shifts the jumplist, this takes quite a bit of time when
- jumping around. Instead use an index for the start?
-8 When displaying a space with only foreground highlighting, it's the same
- as a space without attributes. Avoid displaying spaces for the "~" lines
- when starting up in a color terminal.
-8 Profiling shows that in_id_list() is used very often for C code. Can this
- function be improved?
-8 For an existing file, the page size of the swap file is always the
- default, instead of using the block size of the device, because the swap
- file is created only after setting the block size in mf_open(). How can
- this be improved?
-7 C syntax highlighting gets a lot slower after ":set foldmethod=syntax".
- (Charles Campbell) Inserting a "{" is very slow. (dman)
-7 HTML syntax highlighting is slow for long lines. Try displaying
- http://www.theregister.co.uk/content/4/22908.html. (Andre Pang)
-7 Check how performance of loading the wordlist can be improved (adding a
- lot of abbreviations).
-7 MS-DOS console: Add t_DL support, to make scrolling faster.
-7 Compile Ex commands to byte codes. Store byte codes in a vim script file
- at the end, after "compiled:. Make it look like a single comment line
- for old Vim versions. Insert first line "Vim script compiled <timestamp>.
- Only used compiled code when timestamp matches the file stat.
- Add command to compile a vim script and add it to the file in-place.
- Split Ex command executing into a parsing and executing phase.
- Use compiled code for functions, while loops, etc.
-8 When defining autocommands (e.g., from $VIMRUNTIME/filetype.vim), need to
- compare each pattern with all existing patterns. Use a hash code to avoid
- using strcmp() too often?
-7 Include turbo_loader patches, speeding up reading a file?
- Speed up reading a file by reading it into a fixed-size buffer, creating
- the list of indexes in another buffer, and then copying the result into a
- memfile block with two copies. Then read the next block into another
- fixed-size buffer, create the second list of indexes and copy text from
- the two blocks to the memfile block.
-7 do_cmdline(): Avoid that the command line is copied to allocated memory
- and freed again later all the time. For while loops, and for when called
- with an argument that can be messed with.
- Generic solution: Make a struct that contains a pointer and a flag that
- indicates if the pointer should be freed when replaced.
-7 Check that the file size is not more than "sizeof(long)".
-- Further improve finding mappings in maphash[] in vgetorpeek()
-8 Syntax highlighting is slow when deleting lines. Try in
- $VIMRUNTIME/filetype.vim.
-- "out of memory" after deleting (1,$d) and changing (:%s/^/> /) a lot of
- lines (27000) a few times. Memory fragmentation?
-- Have a look at how pdksh does memory allocation (alloc.c). (Dalecki)
-- Do profiling on:
- - :g/pat/normal cmd
- - 1000ii<Esc>
- - deleting 10Mbyte worth of lines (netscape binary)
- - "[i" and "[d" (Yegappan Lakshmanan)
- - ":g/^/m0" on a 450Kbyte file. And the "u".
- - highlighting "~/vim/test/longline.tex", "~/vim/test/scwoop.tcl" and
- "~/vim/test/lockup.pl".
- - loading a syntax file to highlight all words not from a dictionary.
- - editing a Vim script with syntax highlighting on (loading vim.vim).
-7 Screen updating can be further improved by only redrawing lines that were
- changed (and lines after them, when syntax highlighting was used, and it
- changed).
- - On each change, remember start and end of the change.
- - When inserting/deleting lines, remember begin, end, and line count.
-- Use macros/duarte/capicua for profiling. Nvi 1.71 is the fastest!
-- When using a file with one long line (1Mbyte), then do "$hhhh", is still
- very slow. Avoid calling getvcol() for each "h"?
-- Executing a register, e.g. "10000@@" is slow, because ins_typebuf has to
- move the previous commands forward each time. Pass count from
- normal_cmd() down to do_execreg().
-- Repeating insert "1000i-<Esc>" displays --INSERT-- all the time, because of
- the <Esc> at the end. Make this work faster (disable redrawing).
-- Avoid calls to plines() for cursor line, use w_cline_height.
-- After ":set nowrap" remove superfluous redraw with wrong hor. offset if
- cursor is right of the screen.
-8 Make CTRL-C on Unix generate a signal, avoid using select() to check for a
- CTRL-C (it's slow).
-
-
-Code size:
-8 GUI: When NO_CONSOLE is defined, more code can be excluded.
-- Put getline() and cookie in a struct, so only one argument has to be
- passed to do_cmdline() and other functions.
-8 Make a GUI-only version for Unix?
-8 In buf_write _() isn't needed when setting errmsg, do it once when using
- it.
-7 When compiling with a GUI-only version, the code for cterm colors can be
- left out.
-8 When compiled with a GUI-only version, the termcap entries for terminals
- can be removed.
-8 Can the check for libelf in configure.in be removed?
-
-
-Messages:
-8 When using ":q" in a changed file, the error says to "add !". Add the
- command so that beginners understand it: "use :q!".
-8 For 'verbose' level 12 prints commands from source'ed files. How to skip
- lines that aren't executed? Perhaps move the echoing to do_cmdline()?
-8 Use 'report' for ":bdel"? (Krishna) To avoid these messages when using a
- script.
-- Delete message after new command has been entered and have waited for key.
- Perhaps after ten seconds?
-- Make message history available in "msg" variables: msg1, msg2, .. msg9.
-8 When reading from stdin allow suppressing the "reading from stdin"
- message.
-9 Check handling of overwriting of messages and delays:
- Very wrong: errors while redrawing cause endless loop.
- When switching to another file and screen scrolls because of the long
- message and return must be typed, don't scroll the screen back before
- redrawing.
-8 When address range is wrong you only get "Invalid range". Be a bit more
- specific: Negative, beyond last line, reverse range? Include the text.
-8 Make it possible to ignore errors for a moment ('errorignore'?). Another
- option to switch off giving error messages ('errorquiet'?). Also an option
- not to give any messages ('quiet')? Or ":quiet on", ":quiet off".
- Careful: For a severe error (out of memory), and when the user starts
- typing, error messages must be switched back on.
- Also a flag to ignore error messages for shell commands (for mappings).
-- Option to set time for emsg() sleep. Interrupt sleep when key is typed?
- Sleep before second message?
-8 In Ex silent mode or when reading commands from a file, what exactly is
- not printed and what is? Check ":print", ":set all", ":args", ":vers",
- etc. At least there should be no prompt. (Smulders) And don't clear the
- screen when reading commands from stdin. (Kendall)
- --> Make a difference between informative messages, prompts, etc. and
- error messages, printing text, etc.
-8 Window should be redrawn when resizing at the hit-enter prompt.
- Also at the ":tselect" prompt. Find a generic solution for redrawing when
- a prompt is present (with a callback function?).
-
-
-Screen updating:
-7 Add a string to the 'display' option to make CTRL-E and CTRL-Y scroll one
- screen line, also if this means the first line doesn't start with the
- first character (like what happens with a single line that doesn't fit).
-- screen_line():
- - insert/delete character stuff.
- - improve delete rest of line (spaces at end of line).
-- When moving or resizing window, try to avoid a complete redraw (esp. when
- dragging the status line with the mouse).
-- When 'lazyredraw' set, don't echo :ex commands? Need a flag to redraw when
- waiting for a character.
-8 Add a ":refresh [winnr]" command, to force updating a window. Useful from
- an event handler where ":normal" can't be used. Also useful when
- 'lazyredraw' is set in a mapping.
-7 Make 'list' and 'linebreak' work together.
-
-
-Scrolling:
-8 Add "zy" command: scroll horizontally to put the cursor in the middle.
-6 Add option to set the overlap for CTRL-F and CTRL-B. (Garhi)
-- extend 'scrollbind' option: 'scrollopt' words "search", "relative", etc..
- Also 'e'xecute some commands (search, vertical movements) in all bound
- windows.
-7 Add 'scrollbind' feature to make the offset of one window with the next
- one equal to the window height. When editing one file in both windows it
- looks like each window displays a page of the buffer.
-- Allow scrolling by dragging with the mouse (grab a character and move it
- up/down). Like the "hand" in Acrobat reader. Use Alt-LeftMouse for this?
- (Goldfarb)
-- Add command to execute some commands (search, vertical movements) in all
- bound windows.
-- Add 'search' option to 'scrollopt' to allow 'scrollbind' windows to
- be bound by regexp searches
-- Add "z>" and "z<": scroll sideways one screenful. (Campbell)
-- Add option to set the number of lines when not to scroll, instead of the
- fixed number used now (for terminals that scroll slow with a large number
- of lines but not with a single line).
-
-
-Autoconf:
-8 Should use acconfig.h to define prototypes that are used by autoheader.
-8 Some compilers don't give an error for "-OPT:Olimit" but a warning. (Webb)
- Add a check for the warning, so that "Olimit" can be added automatically?
-- Autoconf: Use @datadir@ for the system independent files. Make sure the
- system dependent and system independent files are separated. (Leitner).
-- Add autoconf check for waitpid()/wait4().
-- Remove fcntl() from autoconf, all systems have it?
-- Set default for 'dictionary', add search for dictionary to autoconf.
-
-
-Perl interface:
-8 Rename typemap file to something else?
-7 Make buffers accessed as Perl arrays. (Clark)
-7 Make it possible to compile with non-ANSI C?
-6 Tcl/Tk has the "load" command: load a shared library (.so or .dll).
-
-
-Shared libraries:
-6 Add support for loading shared libraries, and calling functions in it.
- :libload internal-name libname
- :libunload internal-name
- :liblist
- :libcall internal-name function(arg1, arg2, ...)
- :libcall function(arg1, arg2, ...)
- libcall() can have only one integer or String argument at the moment.
-6 Have a look on how Perl handles loading dynamic libraries.
-
-
-Tags:
-9 With ":set tags=./tags,../tags" and a tag appears in both tags files it is
- added twice. Requires figuring out the actual file name for each found
- match. Remove tag_fname from the match and combine it with the fname in
- the match (without expanding or other things that take time). When
- 'tagrelative' is off tag_fname isn't needed at all.
-8 For 'tags' wildcard in the file name is not supported, only in the path.
- This is due to it using |file-searching|. Suboptimal solution would be to
- make the filename or the whole option use |wildcards| globing, better
- would be to merge the 2 kinds of globing. originally (Erik Falor, 2008
- April 18), updated (Ian Kelling, 2008 July 4)
-7 Can CTRL-] (jump to tag) include a following "." and "->" to restrict the
- number of possible matches? Check tags file for an item that has members.
- (Flemming Madsen)
-8 Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis.
-8 When output of ":tselect" is long, getting the more-prompt, should be able
- to type the tag number directly.
-7 Add the possibility to use the "-t {tag}" argument multiple times. Open a
- window for each tag.
-7 Make output of ":tselect" a bit nicer. Use highlighting?
-7 Highlight the "tag 1 of >2" message. New highlight group, or same as "hit
- bottom" search message.
-7 When using ":tag" at the top of the tag stack, should add another entry,
- so CTRL-T can bring you back to where you are now AND to where you were
- before the previous ":tag" command. (Webb)
-- When doing "[^I" or "[^D" add position to tag stack.
-- Add command to put current position to tag stack: ":tpush".
-- Add functions to save and restore the tag stack? Or a command to switch
- to another tag stack? So that you can do something else and come back to
- what you were working on.
-7 When using CTRL-] on someClass::someMethod, separate class from method and
- use ":ta class:someClass someMethod".
- Include C++ tags changes (Bertin). Change "class::func" tag into "func"
- with "class=class"? Docs in oldmail/bertin/in.xxx.
-7 Add ":tagargs", to set values for fields:
- :tagargs class:someclass file:version.c
- :tagargs clear
- These are then the default values (changes the order of priority in tag
- matching).
-7 Support for "gtags" and "global"? With ":rtag" command?
- There is an example for how to do this in Nvi.
- Or do it like Elvis: 'tagprg' and 'tagprgonce' options. (Yamaguchi)
- The Elvis method is far more flexible, do it that way.
-7 Support "col:99" extra field, to position the cursor in that column. With
- a flag in 'cpoptions' to switch it off again.
-7 Better support for jumping to where a function or variable is used. Use
- the id-utils, with a connection to "gid" (Emacs can do it too). Add
- ":idselect", which uses an "ID" database (made by "mkid") like "tselect".
-
-
-Autocommands:
-- Put autocommand event names in a hashtable for faster lookup?
-8 When the SwapExists event is triggered, provide information about the
- swap file, e.g., whether the process is running, file was modified, etc.
- Must be possible to check the situation that it's probably OK to delete
- the swap file. (Marc Merlin)
-8 When all the patterns for an event are "*" there is no need to expand
- buffer names to a full path. This can be slow for NFS.
-7 For autocommand events that trigger multiple times per buffer (e.g.,
- CursorHold), go through the list once and cache the result for a specific
- buffer. Invalidate the cache when adding/deleting autocommands or
- changing the buffer name.
-7 Add TagJump event: do something after jumping to a tag.
-8 Add "TagJumpFile" autocommand: When jumping to another file for a tag.
- Can be used to open "main.c.gz" when "main.c" isn't found.
-8 Use another option than 'updatetime' for the CursorHold event. The two
- things are unrelated for the user (but the implementation is more
- difficult).
-7 Add autocommand event for when a buffer cannot be abandoned. So that the
- user can define the action taking (autowrite, dialog, fail) based on the
- kind of file. (Yakov Lerner) Or is BufLeave sufficient?
-8 Autocommand for when modified files have been found, when getting input
- focus again (e.g., FileChangedFocus).
- Check when: getting focus, jumping to another buffer, ...
-7 Autocommand for when an option is changed. Match buffer name or option
- name?
-8 Autocommands should not change registers. And marks? And the jumplist?
- And anything else? Add a command to save and restore these things.
-8 Add autocommands, user functions and user commands to ":mkvimrc".
-6 Add KeymapChanged event, so that the effects of a different keymap can be
- handled (e.g., other font) (Ron Aaron)
-7 When trying to open a directory, trigger an OpenDirectory event.
-7 Add file type in front of file pattern: <d> for directory, <l> for link,
- <x> for executable, etc. With commas to separate alternatives. The
- autocommand is only executed when both the file type AND the file pattern
- match. (Leonard)
-5 Add option that specifies extensions which are to be discarded from the
- file name. E.g. 'ausuffix', with ".gz,.orig". Such that file.c.gz will
- trigger the "*.c" autocommands. (Belabas)
-7 Add something to break the autocommands for the current event, and for
- what follows. Useful for a "BufWritePre" that wants to avoid writing the
- file.
-8 When editing "tt.gz", which is in DOS format, 'fileformat' stays at
- "unix", thus writing the file changes it. Somehow detect that the read
- command used dos fileformat. Same for 'fileencoding'.
-- Add events to autocommands:
- Error - When an error happens
- NormalEnter - Entering Normal mode
- ReplaceEnter - Entering Replace mode
- CmdEnter - Entering Cmdline mode (with type of cmdline to allow
- different mapping)
- VisualEnter - Entering Visual mode
- *Leave - Leaving a mode (in pair with the above *Enter)
- VimLeaveCheck - Before Vim decides to exit, so that it can be cancelled
- when exiting isn't a good idea.
- CursorHoldC - CursorHold while command-line editing
- WinMoved - when windows have been moved around, e.g, ":wincmd J"
- SearchPost - After doing a search command (e.g. to do "M")
- PreDirChanged/PostDirChanged
- - Before/after ":cd" has been used (for changing the
- window title)
- ShutDown - when the system is about to shut down
- InsertCharPost - user typed a character in Insert mode, after inserting
- the char.
- BufModified - When a buffer becomes modified, or unmodified (for
- putting a [+] in the window title or checking out the
- file from CVS).
- BufFirstChange - When making a change, when 'modified' is set. Can be
- used to do a :preserve for remote files.
- BufChange - after a change was made. Set some variables to indicate
- the position and number of inserted/deleted lines, so
- that marks can be updated. HierAssist has patch to add
- BufChangePre, BufChangePost and RevertBuf. (Shah)
- ViewChanged - triggered when the text scrolls and when the window size
- changes.
- WinResized - After a window has been resized
- WinClose - Just before closing a window
-- Write the file now and then ('autosave'):
- *'autosave'* *'as'* *'noautosave'* *'noas'*
- 'autosave' 'as' number (default 0)
- Automatically write the current buffer to file N seconds after the
- last change has been made and when |'modified'| is still set.
- Default: 0 = do not autosave the buffer.
- Alternative: have 'autosave' use 'updatetime' and 'updatecount' but make
- them save the file itself besides the swapfile.
-
-
-Omni completion:
-- Add a flag to 'complete' to be able to do omni completion with CTRL-N (and
- mix it with other kinds of completion).
-- Ideas from the Vim 7 BOF at SANE:
- - For interpreted languages, use the interpreter to obtain information.
- Should work for Java (Eclipse does this), Python, Tcl, etc.
- Richard Emberson mentioned working on an interface to Java.
- - Check Readline for its completion interface.
-- Ideas from others:
- http://www.wholetomato.com/
- http://www.vim.org/scripts/script.php?script_id=747
- http://sourceforge.net/projects/insenvim
- or http://insenvim.sourceforge.net
- Java, XML, HTML, C++, JSP, SQL, C#
- MS-Windows only, lots of dependencies (e.g. Perl, Internet
- explorer), uses .dll shared libraries.
- For C++ uses $INCLUDE environment var.
- Uses Perl for C++.
- Uses ctags to find the info:
- ctags -f $allTagsFile --fields=+aiKmnsSz --language-force=C++ --C++-kinds=+cefgmnpsut-dlux -u $files
- www.vim.org script 1213 (Java Development Environment) (Fuchuan Wang)
- IComplete: http://www.vim.org/scripts/script.php?script_id=1265
- and http://stud4.tuwien.ac.at/~e0125672/icomplete/
- http://cedet.sourceforge.net/intellisense.shtml (for Emacs)
- Ivan Villanueva has something for Java.
- Emacs: http://www.xref-tech.com/xrefactory/more_c_completion.html
- Completion in .NET framework SharpDevelop: http://www.icsharpcode.net
-- Pre-expand abbreviations, show which abbrevs would match?
-
-
-Insert mode completion/expansion:
-7 When searching in other files the name flash by, too fast to read. Only
- display a name every second or so, like with ":vimgrep".
-7 When expanding file names with an environment variable, add the match with
- the unexpanded var. So $HOME/tm expands to "/home/guy/tmp" and
- "$HOME/tmp"
-8 When there is no word before the cursor but something like "sys." complete
- with "sys.". Works well for C and similar languages.
-9 ^X^L completion doesn't repeat correctly. It uses the first match with
- the last added line, instead of continuing where the last match ended.
- (Webb)
-8 Add option to set different behavior for Insert mode completion:
- - ignore/match case
- - different characters than 'iskeyword'
-8 Add option 'isexpand', containing characters when doing expansion (so that
- "." and "\" can be included, without changing 'iskeyword'). (Goldfarb)
- Also: 'istagword': characters used for CTRL-].
- When 'isexpand' or 'istagword' are empty, use 'iskeyword'.
- Alternative: Use a pattern so that start and end of a keyword can be
- defined, only allow dash in the middle, etc.
-8 Add a command to undo the completion, go back to the original text.
-7 Completion of an abbreviation: Can leave letters out, like what Instant
- text does: www.textware.com
-8 Use the class information in the tags file to do context-sensitive
- completion. After "foo." complete all member functions/variables of
- "foo". Need to search backwards for the class definition of foo.
- Should work for C++ and Java.
- Even more context would be nice: "import java.^N" -> "io", "lang", etc.
-7 When expanding $HOME/dir with ^X^F keep the $HOME (with an option?).
-7 Add CTRL-X command in Insert mode like CTRL-X CTRL-N, that completes WORDS
- instead of words.
-8 Add CTRL-X CTRL-R: complete words from register contents.
-8 Add completion of previously inserted texts (like what CTRL-A does).
- Requires remembering a number of insertions.
-8 Add 'f' flag to 'complete': Expand file names.
- Also apply 'complete' to whole line completion.
-- Add a flag to 'complete' to only scan local header files, not system
- header files. (Andri Moell)
-- Make it possible to search include files in several places. Use the
- 'path' option? Can this be done with the dictionary completion (use
- wildcards in the file name)?
-- Make CTRL-X CTRL-K do a binary search in the dictionary (if it's sorted).
-- Speed up CTRL-X CTRL-K dictionary searching (don't use a regexp?).
-- Set a mark at the position where the match was found (file mark, could
- be in another file).
-- Add CTRL-A command in CTRL-X mode: show all matches.
-- Make CTRL-X CTRL-L use the 'complete' option?
-- Add command in CTRL-X mode to add following words to the completed string
- (e.g. to complete "Pointer->element" with CTRL-X CTRL-P CTRL-W CTRL-W)
-- CTRL-X CTRL-F: Use 'path' to find completions.
-- CTRL-X CTRL-F: Option to use forward slashes on MS-Windows?
-- CTRL-X CTRL-F: Don't replace "$VIM" with the actual value. (Kelly)
-- Allow listing all matches in some way (and picking one from the list).
-
-
-Command line editing:
-7 Add commands (keys) to delete from the cursor to the end of the command
- line.
-8 Custom completion of user commands can't use the standard completion
- functions. Add a hook to invoke a user function that returns the type of
- completion to be done: "file", "tag", "custom", etc.
-- Add flags to 'whichwrap' for command line editing (cursor right at end of
- lines wraps to start of line).
-- Make editing the command line work like Insert mode in a single-line view
- on a buffer that contains the command line history. But this has many
- disadvantages, only implement it when these can be solved. Elvis has run
- into these, see remarks from Steve (~/Mail/oldmail/kirkendall/in.00012).
- - Going back in history and editing a line there would change the history.
- Would still need to keep a copy of the history elsewhere. Like the
- cmdwin does now already.
- - Use CTRL-O to execute one Normal mode command. How to switch to normal
- mode for more commands? <Esc> should cancel the command line. CTRL-T?
- - To allow "/" and "= need to recursively call getcmdline(), overwrite the
- cmdline. But then we are editing a command-line again. How to avoid
- that the user gets confused by the stack of command lines?
- - Use edit() for normal cmdline editing? Would have to integrate
- getcmdline() into edit(). Need to solve conflicts between Insert mode
- and Command-line mode commands. Make it work like Korn shell and tcsh.
- Problems:
- - Insert: completion with 'wildchar'
- - Insert: use cmdline abbreviations
- - Insert: CTRL-D deletes indent instead of listing matches
- - Normal: no CTRL-W commands
- - Normal: no ":" commands?
- - Normal: allow Visual mode only within one line.
- - where to show insert/normal mode message? Change highlighting of
- character in first column?
- - Implementation ideas:
- - Set "curwin" and "curbuf" to the command line window and buffer.
- - curwin->w_topline is always equal to curwin->w_cursor.lnum.
- - never set 'number', no folding, etc. No status line.
- - sync undo after entering a command line?
- - use NV_NOCL flag for commands that are not allowed in Command-line
- Mode.
-
-
-Command line completion:
-8 Change expand_interactively into a flag that is passed as an argument.
-8 With command line completion after '%' and '#', expand current/alternate
- file name, so it can be edited. Also with modifiers, such as "%:h".
-8 When completing command names, either sort them on the long name, or list
- them with the optional part inside [].
-8 Add an option to ignore case when doing interactive completion. So that
- ":e file<Tab>" also lists "Filelist" (sorted after matching case matches).
-7 Completion of ":map x ": fill in the current mapping, so that it can be
- edited. (Sven Guckes)
-- For 'wildmenu': Simplify "../bar" when possible.
-- When using <Up> in wildmenu mode for a submenu, should go back to the
- current menu, not the first one. E.g., ":emenu File.Save<Up>".
-8 When using backtick expansion, the external command may write a greeting
- message. Add an option or commands to remove lines that match a regexp?
-7 When listing matches of files, display the common path separately from the
- file names, if this makes the listing shorter. (Webb)
-- Add command line completion for ":ilist" and friends, show matching
- identifiers (Webb).
-8 Add command line completion for "old value" of a command. ":args <key>"
- would result in the current list of arguments, which you can then edit.
-7 Add command line completion with CTRL-X, just like Insert mode completion.
- Useful for ":s/word/xx/".
-- Add command to go back to the text as it was before completion started.
- Also to be used for <Up> in the command line.
-- Add 'wildlongest' option: Key to use to find longest common match for
- command line completion (default CTRL-L), like 'wildchar'. (Cregut)
- Also: when there are several matches, show them line a CTRL-D.
-
-
-Command line history:
-- 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
- completely resulted from one mapping.
-- When using ":browse", also put the resulting edit command in the history,
- so that it can be repeated. (Demirel)
-
-
-Insert mode:
-9 When 'autoindent' is set, hitting <CR> twice, while there is text after
- the cursor, doesn't delete the autoindent in the resulting blank line.
- (Rich Wales) This is Vi compatible, but it looks like a bug.
-8 When using CTRL-O in Insert mode, then executing an insert command
- "a" or "i", should we return to Insert mode after <Esc>? (Eggink)
- Perhaps it can be allowed a single time, to be able to do
- "<C-O>10axyz<Esc>". Nesting this further is confusing.
- ":map <F2> 5aabc<Esc>" works only once from Insert mode.
-8 When using CTRL-G CTRL-O do like CTRL-\ CTRL-O, but when returning with
- the cursor in the same position and the text didn't change continue the
- same change, so that "." repeats the whole insert.
-7 Use CTRL-G <count> to repeat what follows. Useful for inserting a
- character multiple times or repeating CTRL-Y.
-- Make 'revins' work in Replace mode.
-9 Can't use multi-byte characters for 'matchpairs'.
-7 Use 'matchpairs' for 'showmatch': When inserting a character check if it
- appears in the rhs of 'matchpairs'.
-- In Insert mode (and command line editing?): Allow undo of the last typed
- character. This is useful for CTRL-U, CTRL-W, delete and backspace, and
- also for characters that wrap to the next line.
- Also: be able to undo CTRL-R (insert register).
- Possibly use 'backspace'="whole" for a mode where at least a <CR> that
- inserts autoindent is undone by a single <BS>.
-- Use CTRL-G in Insert mode for an extra range of commands, like "g" in
- Normal mode.
-- Make 'paste' work without resetting other options, but override their
- value. Avoids problems when changing files and modelines or autocommands
- are used.
-- When typing CTRL-V and a digit higher than 2, only expect two digits.
-- Insert binary numbers with CTRL-V b.
-- Make it possible to undo <BS>, <C-W> and <C-U>. Bash uses CTRL-Y.
-
-
-'cindent', 'smartindent':
-9 Wrapping a variable initialization should have extra indent:
- char * veryLongName =
- "very long string"
- Also check if "cino=+10" is used correctly.
-8 Lisp indenting: "\\" confuses the indenter. (Dorai Sitaram, 2006 May 17)
-8 Why are continuation lines outside of a {} block not indented? E.g.:
- long_type foo =
- value;
-8 Java: Inside an anonymous class, after an "else" or "try" the indent is
- too small. (Vincent Bergbauer)
- Problem of using {} inside (), 'cindent' doesn't work then.
-8 In C++ it's possible to have {} inside (): (Kirshna)
- func(
- new String[] {
- "asdf",
- "asdf"
- }
- );
-8 In C++ a function isn't recognized inside a namespace:
- (Chow Loong Jin)
- namespace {
- int
- func(int arg) {
- }
- }
-6 Add 'cino' flag for this function argument layout: (Spencer Collyer)
- func( arg1
- , arg2
- , arg3
- );
-7 Add separate "(0" option into inside/outside a function (Zellner):
- func(
- int x) // indent like "(4"
- {
- if (a
- && b) // indent like "(0"
-9 Using "{" in a comment: (Helmut Stiegler)
- if (a)
- {
- if (b)
- {
- // {
- }
- } <-- this is indented incorrect
- Problem is that find_start_brace() checks for the matching brace to be in
- a comment, but not braces in between. Requires adding a comment check to
- findmatchlimit().
-- Make smartindenting configurable. Add 'sioptions', e.g. '#' setting the
- indent to 0 should be switched on/off.
-7 Support ANSI style function header, with each argument on its own line.
-- "[p" and "]p" should use 'cindent' code if it's on (only for the first
- line).
-- Add option to 'cindent' to set indent for comments outside of {}?
-- Make a command to line up a comment after a code line with a previous
- comment after a code line. Can 'cindent' do this automatically?
-- When 'cindent'ing a '}', showmatch is done before fixing the indent. It
- looks better when the indent is fixed before the showmatch. (Webb)
-- Add option to make indenting work in comments too (for commented-out
- code), unless the line starts with "*".
-- Don't use 'cindent' when doing formatting with "gq"?
-- When formatting a comment after some text, insert the '*' for the new line
- (indent is correct if 'cindent' is set, but '*' doesn't get inserted).
-8 When 'comments' has both "s1:/*,mb:*,ex:*/" and "s1:(*,mb:*,ex:*)", the
- 'x' flag always uses the first match. Need to continue looking for more
- matches of "*" and remember all characters that could end the comment.
-- For smartindent: When typing 'else' line it up with matching 'if'.
-- 'smartindent': allow patterns in 'cinwords', for e.g. TeX files, where
- lines start with "\item".
-- Support this style of comments (with an option): (Brown)
- /* here is a comment that
- is just autoindented, and
- nothing else */
-- Add words to 'cinwords' to reduce the indent, e.g., "end" or "fi".
-7 Use Tabs for the indent of starting lines, pad with spaces for
- continuation lines. Allows changing 'tabstop' without messing up the
- indents.
- Patch by Lech Lorens, 2010 Mar. Update by James McCoy, 2014 Mar 15.
-
-
-Java:
-8 Can have {} constructs inside parens. Include changes from Steve
- Odendahl?
-8 Recognize "import java.util.Vector" and use $CLASSPATH to find files for
- "[i" commands and friends.
-- For files found with 'include': handle "*" in included name, for Java.
- (Jason)
-- How to make a "package java.util" cause all classes in the package to be
- searched? Also for "import java.util.*". (Mark Brophy)
-
-
-'comments':
-8 When formatting C comments that are after code, the "*" isn't repeated
- like it's done when there is no code. And there is no automatic wrapping.
- Recognize comments that come after code. Should insert the comment leader
- when it's "#" or "//".
- Other way around: when a C command starts with "* 4" the "*" is repeated
- while it should not. Use syntax HL comment recognition?
-7 When using "comments=fg:--", Vim inserts three spaces for a new line.
- When hitting a TAB, these spaces could be removed.
-7 The 'n'esting flag doesn't do the indenting of the last (rightmost) item.
-6 Make strings in 'comments' option a RE, to be able to match more
- complicated things. (Phillipps) Use a special flag to indicate that a
- regexp is used.
-8 Make the 'comments' option with "/* * */" lines only repeat the "*" line
- when there is a "/*" before it? Or include this in 'cindent'?
-
-
-Virtual edit:
-8 Make the horizontal scrollbar work to move the text further left.
-7 Allow specifying it separately for Tabs and beyond end-of-line?
-
-
-Text objects:
-8 Add text object for fold, so that it can be yanked when it's open.
-8 Add test script for text object commands "aw", "iW", etc.
-8 Add text object for part of a CamelHumpedWord and under_scored_word.
- (Scott Graham) "ac" and "au"?
-8 Add a text object for any kind of quoting, also with multi-byte
- characters. Option to specify what quotes are recognized (default: all)
- use "aq" and "iq". Use 'quotepairs' to define pairs of quotes, like
- 'matchpairs'?
-8 Add text object for any kind of parens, also multi-byte ones.
-7 Add text object for current search pattern: "a/" and "i/". Makes it
- possible to turn text highlighted for 'hlsearch' into a Visual area.
-8 Add a way to make an ":omap" for a user-defined text object. Requires
- changing the starting position in oap->start.
-8 Add "gp" and "gP" commands: insert text and make sure there is a single
- space before it, unless at the start of the line, and after it, unless at
- the end of the line or before a ".".
-7 Add objects with backwards extension? Use "I" and "A". Thus "2dAs"
- deletes the current and previous sentence. (Jens Paulus)
-7 Add "g{" and "g}" to move to the first/last character of a paragraph
- (instead of the line just before/after a paragraph as with "{" and "}").
-6 Ignore comment leaders for objects. Make "das" work in reply-email.
-5 Make it possible to use syntax group matches as a text object. For
- example, define a "ccItem" group, then do "da<ccItem>" to delete one.
- Or, maybe just define "dai", delete-an-item, to delete the syntax item the
- cursor is on.
-
-
-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://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'.
- - Catch mouse events in ex_getln.c. Also shift-cursor, etc., like in
- normal_cmd().
- - remember start and end of selection in cmdline_info.
- - Typing text replaces the selection.
-
-
-Visual mode:
-8 Support using "." in Visual mode. Use the operator applied to the Visual
- selection, if possible.
-- When dragging the Visual selection with the mouse and 'scrolloff' is zero,
- behave like 'scrolloff' is one, so that the text scrolls when the pointer
- is in the top line.
-- Displaying size of Visual area: use 24-33 column display.
- When selecting multiple lines, up to about a screenful, also count the
- characters.
-8 When using "I" or "A" in Visual block mode, short lines do not get the new
- text. Make it possible to add the text to short lines too, with padding
- where needed.
-7 With a Visual block selected, "2x" deletes a block of double the width,
- "3y" yanks a block of triple width, etc.
-7 When selecting linewise, using "itext" should insert "text" at the start
- of each selected line.
-8 What is "R" supposed to do in Visual mode?
-8 Make Visual mode local to the buffer. Allow changing to another buffer.
- When starting a new Visual selection, remove the Visual selection in any
- other buffer. (Ron Aaron)
-8 Support dragging the Visual area to drop it somewhere else. (Ron Aaron,
- Ben Godfrey)
-7 Support dragging the Visual area to drop it in another program, and
- receive dropped text from another program. (Ben Godfrey)
-7 With blockwise Visual mode and "c", "C", "I", "A", etc., allow the use of
- a <CR>. The entered lines are repeated over the Visual area.
-7 CTRL-V :s should substitute only in the block, not to whole lines. (David
- Young is working on this)
-7 Filtering a block should only apply to the block, not to the whole lines.
- When the number of lines is increased, add lines. When decreased, pad with
- spaces or delete? Use ":`<,`>" on the command line.
-8 After filtering the Visual area, make "gv" select the filtered text?
- Currently "gv" only selects a single line, not useful.
-7 Don't move the cursor when scrolling? Needed when the selection should
- stay the same. Scroll to the cursor at any movement command. With an
- option!
-7 In Visual block mode, need to be able to define a corner on a position
- that doesn't have text? Also: when using the mouse, be able to select
- part of a TAB. Even more: Add a mode where the cursor can be on a screen
- position where there is no text. When typing, add spaces to fill the gap.
- Other solution: Always use curswant, so that you can move the cursor to
- the right column, and then use up/down movements to select the line,
- without changing the column.
-6 ":left" and ":right" should work in Visual block mode.
-7 CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the
- current buffer.
-7 CTRL-A and CTRL-X should increase/decrease all numbers in the Visual area.
-6 In non-Block mode, "I" should insert the same text in front of each line,
- before the first non-blank, "gI" in column 1.
-6 In non-Block mode, "A" should append the same text after each line.
-6 When in blockwise visual selection (CTRL-V), allow cursor to be placed
- right of the line. Could also allow cursor to be placed anywhere on a TAB
- or other special character.
-6 Add commands to move selected text, without deselecting.
-
-
-More advanced repeating commands:
-- Add "." command for visual mode: redo last visual command (e.g. ":fmt").
-7 Repeating "d:{cmd}" with "." doesn't work. (Benji Fisher) Somehow remember
- the command line so that it can be repeated?
-- Add command to repeat last movement. Including count.
-- Add "." command after operator: repeat last command of same operator. E.g.
- "c." will repeat last change, also when "x" used since then (Webb).
- "y." will repeat last yank.
- "c2." will repeat the last but one change?
- Also: keep history of Normal mode commands, add command to list the history
- and/or pick an older command.
-- History stack for . command? Use "g." command.
-
-
-Mappings and Abbreviations:
-8 When "0" is mapped (it is a movement command) this mapping should not be
- used after typing another number, e.g. "20l". (Charles Campbell)
- Is this possible without disabling the mapping of the following command?
-8 Should mapping <C-A> and <C-S-A> both work?
-7 ":abbr b byte", append "b " to an existing word still expands to "byte".
- This is Vi compatible, but can we avoid it anyway?
-8 To make a mapping work with a prepended "x to select a register, store the
- last _typed_ register name and access it with "&.
-8 Add ":amap", like ":amenu".
-7 Add a mapping that works always, for remapping the keyboard.
-8 Add ":cab!", abbreviations that only apply to Command-line mode and not to
- entering search strings.
-8 Add a flag to ":abbrev" to eat the character that triggers the
- abbreviation. Thus "abb ab xxx" and typing "ab<Space>" inserts "xxx" and
- not the <Space>.
-8 Give a warning when using CTRL-C in the lhs of a mapping. It will never
- (?) work.
-8 Add a way to save a current mapping and restore it later. Use a function
- that returns the mapping command to restore it: mapcmd()? mapcheck() is
- not fool proof. How to handle ambiguous mappings?
-7 Add <0x8f> (hex), <033> (octal) and <123> (decimal) to <> notation?
-7 When someone tries to unmap with a trailing space, and it fails, try
- unmapping without the trailing space. Helps for ":unmap xx | unmap yy".
-6 Context-sensitive abbreviations: Specify syntax group(s) in which the
- abbreviations are to be used.
-- Add mappings that take arguments. Could work like the ":s" command. For
- example, for a mouse escape sequence:
- :mapexp <Esc>{\([0-9]*\),\([0-9]*\); H\1j\2l
-- Add optional <Number> argument for mappings:
- :map <Number>q ^W^W<Number>G
- :map <Number>q<Number>t ^W^W<Number1-1>G<Number2>l
- :map q<Char> :s/<Char>/\u\0/g
- Or implicit:
- :map q <Register>d<Number>$
-- Add command to repeat a whole mapping ("." only repeats the last change in
- a mapping). Also: Repeat a whole insert command, including any mappings
- that it included. Sort-of automatic recording?
-- Include an option (or flag to 'cpoptions') that makes errors in mappings
- not flush the rest of the mapping (like nvi does).
-- Use context sensitiveness of completion to switch abbreviations and
- mappings off for :unab and :unmap.
-6 When using mappings in Insert mode, insert characters for incomplete
- mappings first, then remove them again when a mapping matches. Avoids
- that characters that are the start of some mapping are not shown until you
- hit another character.
-- Add mappings for replace mode: ":rmap". How do we then enter mappings for
- non-replace Insert mode?
-- Add separate mappings for Visual-character/block/line mode?
-- Add 'mapstop' command, to stop recursive mappings.
-- List mappings that have a raw escape sequence both with the name of the key
- for that escape sequence (if there is one) and the sequence itself.
-- List mappings: Once with special keys listed as <>, once with meta chars as
- <M-a>, once with the byte values (octal?). Sort of "spell mapping" command?
-- When entering mappings: Add the possibility to enter meta keys like they
- are displayed, within <>: <M-a>, <~@> or <|a>.
-- Allow multiple arguments to :unmap.
-- Command to show keys that are not used and available for mapping
- ":freekeys".
-- Allow any character except white space in abbreviations lhs (Riehm).
-
-
-Incsearch:
-- Add a limit to the number of lines that are searched for 'incsearch'?
-- When no match is found and the user types more, the screen is redrawn
- anyway. Could skip that. Esp. if the line wraps and the text is scrolled
- up every time.
-- Temporarily open folds to show where the search ends up. Restore the
- folds when going to another line.
-- When incsearch used and hitting return, no need to search again in many
- cases, saves a lot of time in big files. (Slootman wants to work on this?)
- When not using special characters, can continue search from the last match
- (or not at all, when there was no match). See oldmail/webb/in.872.
-- With incsearch, use CTRL-N/CTRL-P to go to next/previous match, some other
- key to copy matched word to search pattern (Alexander Schmid).
-
-
-Searching:
-9 Should have an option for :vimgrep to find lines without a match.
-8 Add "g/" and "gb" to search for a pattern in the Visually selected text?
- "g?" is already used for rot13.
- The vis.vim script has a ":S" command that does something like this.
- Can use "g/" in Normal mode, uses the '< to '> area.
- Use "&/" for searching the text in the Visual area?
-9 Add "v" offset: "/pat/v": search for pattern and start Visual mode on the
- matching text.
-8 Add a modifier to interpret a space like "\_s\+" to make it much easier to
- search for a phrase.
-8 Add a mechanism for recursiveness: "\@(([^()]*\@g[^()]*)\)". \@g stands
- for "go recursive here" and \@( \) marks the recursive part.
- Perl does it this way:
- $paren = qr/ \(( [^()] | (??{ $paren }) )* \) /x;
- Here $paren is evaluated when it's encountered. This is like a regexp
- inside a regexp. In the above terms it would be:
- \@((\([^()]\|\@g\)*)\)
-8 Show the progress every second. Could use the code that checks for CTRL-C
- to find out how much time has passed. Or use SIGALRM. Where to show the
- number?
-8 When using an expression for ":s", set the match position in a v:
- variable. So that you can do ":%s/^/\=v:lnum/" to put a line number
- before each line.
-7 Support for approximate-regexps to find similar words (agrep
- http://www.tgries.de/agrep/ tre: http://laurikari.net/tre/index.html).
-8 Add an item for a big character range, so that one can search for a
- chinese character: \z[234-1234] or \z[XX-YY] or \z[0x23-0x234].
-7 Add an item stack to allow matching (). One side is "push X on
- the stack if previous atom matched". Other side is "match with top of
- stack, pop it when it matches". Use "\@pX" and "\@m"?
- Example: \((\@p).\{-}\@m\)*
-7 Add an option to accept a match at the cursor position. Also for
- search(). (Brett)
-7 Add a flag to "/pat/" to discard an error. Useful to continue a mapping
- when a search fails. Could be "/pat/E" (e is already used for end offset).
-7 Add pattern item to use properties of Unicode characters. In Perl it's
- "\p{L}" for a letter. See Regular Expression Pocket Reference.
-8 Would it be possible to allow ":23,45/pat/flags" to search for "pat" in
- lines 23 to 45? Or does this conflict with Ex range syntax?
-8 Allow identical pairs in 'matchpairs'. Restrict the search to the current
- line.
-7 Allow longer pairs in 'matchpairs'. Use ~/vim/macros/matchit.vim as an
- example.
-8 Make it possible to define the character that "%" checks for in
- #if/#endif. For nmake it's !if/!endif.
-- For "%" command: set hierarchy for which things include other things that
- should be ignored (like "*/" or "#endif" inside /* */).
- Also: use "%" to jump from start to end of syntax region and back.
- Alternative: use matchit.vim
-8 "/:/e+1" gets stuck on a match at the end of the line. Do we care?
-8 A pattern like "\([^a]\+\)\+" takes an awful long time. Recognize that
- the recursive "\+" is meaningless and optimize for it.
- This one is also very slow on "/* some comment */": "^\/\*\(.*[^/]\)*$".
-7 Recognize "[a-z]", "[0-9]", etc. and replace them with the faster "\l" and
- "\d".
-7 Add a way to specify characters in <C-M> or <Key> form. Could be
- \%<C-M>.
-8 Add an argument after ":s/pat/str/" for a range of matches. For example,
- ":s/pat/str/#3-4" to replace only the third and fourth "pat" in a line.
-8 When 'iskeyword' is changed the matches from 'hlsearch' may change. (Benji
- Fisher) redraw if some options are set while 'hlsearch' is set?
-8 Add an option not to use 'hlsearch' highlighting for ":s" and ":g"
- commands. (Kahn) It would work like ":noh" is used after that command.
- Also: An extra flag to do this once, and a flag to keep the existing
- search pattern.
-- Make 'hlsearch' a local/global option, so that it can be disabled in some
- of the windows.
-- Add \%h{group-name}; to search for a specific highlight group.
- Add \%s{syntax-group}; to search for a specific syntax group.
-- Support Perl regexp. Use PCRE (Perl Compatible RE) package. (Shade)
- Or translate the pattern to a Vim one.
- Don't switch on with an option for typed commands/mappings/functions, it's
- too confusing. Use "\@@" in the pattern, to avoid incompatibilities.
-8 Add a way to access the last substitute text, what is used for ":s//~/".
- Can't use the ~ register, it's already used for drag & drop.
-- Remember flags for backreferenced items, so that "*" can be used after it.
- Check with "\(\S\)\1\{3}". (Hemmerling)
-8 Flags that apply to the whole pattern.
- This works for all places where a regexp is used.
- Add "\q" to not store this pattern as the last search pattern?
-- Add flags to search command (also for ":s"?):
- i ignore case
- I use case
- p use Perl regexp syntax (or POSIX?)
- v use Vi regexp syntax
- f forget pattern, don't keep it for "n" command
- F remember pattern, keep it for "n" command
- Perl uses these too:
- e evaluate the right side as an expression (Perl only)
- m multiple line expression (we don't need it)
- o compile only once (Perl only)
- s single line expression (we don't need it)
- x extended regexp (we don't need it)
- When used after ":g" command, backslash needed to avoid confusion with the
- following command.
- Add 'searchflags' for default flags (replaces 'gdefault').
-- Add command to display the last used substitute pattern and last used
- pattern. (Margo) Maybe make it accessible through a register (like "/
- for search string)?
-7 Use T-search algorithm, to speed up searching for strings without special
- characters. See C't article, August 1997.
-- Add 'fuzzycase' option, so that case doesn't matter, and '-' and '_' are
- equivalent (for Unix filenames).
-- Add 'v' flag to search command: enter Visual mode, with the matching text
- as Visual area. (variation on idea from Bertin)
-- Searching: "/this//that/" should find "that" after "this".
-- Add global search commands: Instead of wrapping at the end of the buffer,
- they continue in another buffer. Use flag after search pattern:
- a for the next file in the argument list
- f for file in the buffer list
- w for file edited in a window.
- e.g. "/pat/f". Then "n" and "N" work through files too. "f" flag also for
- ":s/pat/foo/f"??? Then when 'autowrite' and 'hidden' are both not set, ask
- before saving files: "Save modified buffer "/path/file"? (Yes/Hide/No
- Save-all/hide-All/Quit) ".
-- ":s/pat/foo/3": find 3rd match of "pat", like sed. (Thomas Koehler)
-7 When searching with 'n' give message when getting back where the search
- first started. Remember start of search in '/ mark.
-7 Add option that scrolls screen to put cursor in middle of screen after
- search always/when off-screen/never. And after a ":tag" command. Maybe
- specify how many lines below the screen causes a redraw with the cursor in
- the middle (default would be half a screen, zero means always).
-6 Support multiple search buffers, so macros can be made without side
- effects.
-7 From xvim: Allow a newline in search patterns (also for :s, can delete
- newline). Add BOW, EOW, NEWL, NLORANY, NLBUTANY, magic 'n' and 'r', etc.
- [not in xvim:] Add option to switch on matches crossing ONE line boundary.
-7 Add ":iselect", a combination of ":ilist" and ":tselect". (Aaron) (Zellner)
- Also ":dselect".
-
-
-Undo:
-9 ":gundo" command: global undo. Undoes changes spread over multiple files
- in the order they were made. Also ":gredo". Both with a count. Useful
- when tests fail after making changes and you forgot in which files.
-9 After undo/redo, in the message show whether the buffer is modified or
- not.
-8 Use timestamps for undo, so that a version a certain time ago can be found
- and info before some time/date can be flushed. 'undopersist' gives maximum
- time to keep undo: "3h", "1d", "2w", "1y", etc.
-8 Search for pattern in undo tree, showing when it happened and the text
- state, so that you can jump to it.
-8 Undo tree: visually show the tree somehow (Damian Conway)
- Show only the leaves, indicating how many changed from the branch and the
- timestamp?
- Put branch with most recent change on the left, older changes get more
- indent?
-8 See ":e" as a change operation, find the changes and add them to the
- undo info. Also be able to undo the "Reload file" choice for when a file
- was changed outside of Vim.
- Would require doing a diff between the buffer text and the file and
- storing the differences.
- Alternative: before reloading a buffer, store it somewhere. Keep a list
- of about 10 last reloaded buffers.
-- Make it possible to undo all the commands from a mapping, including a
- trailing unfinished command, e.g. for ":map K iX^[r".
-- When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not
- possible, even when typing <Esc> immediately. (Grahn) Also for "i", "a",
- etc. Postpone saving for undo until something is really inserted?
-8 When Inserting a lot of text, it can only be undone as a whole. Make undo
- sync points at every line or word. Could recognize the start of a new
- word (white space and then non-white space) and backspacing.
- Can already use CTRL-G u, but that requires remapping a lot of things.
-8 Make undo more memory-efficient: Compare text before and after change,
- only remember the lines that really changed.
-7 Add undo for a range of lines. Can change these back to a previous
- version without changing the rest of the file. Stop doing this when a
- change includes only some of these lines and changes the line count. Need
- to store these undo actions as a separate change that can be undone.
-- For u_save() include the column number. This can be used to set '[ and '].
- And in the future the undo can be made more efficient (Webb).
-- In out-of-memory situations: Free allocated space in undo, and reduce the
- number of undo levels (with confirmation).
-- Instead of [+], give the number of changes since the last write: [+123].
- When undoing to before the last write, change this to a negative number:
- [-99].
-- With undo with simple line delete/insert: optimize screen updating.
-- When executing macro's: Save each line for undo only once.
-- When doing a global substitute, causing almost all lines to be changed,
- undo info becomes very big. Put undo info in swap file??
-
-
-Buffer list:
-7 Command to execute a command in another buffer: ":inbuf {bufname} {cmd}".
- Also for other windows: ":inwin {winnr} {cmd}". How to make sure that
- this works properly for all commands, and still be able to return to the
- current buffer/window? E.g.: ":inbuf xxx only".
-8 Add File.{recent_files} menu entries: Recently edited files.
- Ron Aaron has a plugin for this: mru.vim.
-8 Unix: Check all uses of fnamecmp() and fnamencmp() if they should check
- inode too.
-7 Add another number for a buffer, which is visible for the user. When
- creating a new buffer, use the lowest number not in use (or the highest
- number in use plus one?).
-7 Offer some buffer selection from the command line? Like using ":ls" and
- asking for a buffer number. (Zachmann)
-- When starting to edit a file that is already in the buffer list, use the
- file name argument for the new short file name. (Webb)
-- Add an option to make ":bnext" and ":bprev" wrap around the end of the
- buffer list. Also for ":next" and ":prev"?
-7 Add argument to ":ls" which is a pattern for buffers to list.
- E.g. ":ls *.c". (Thompson)
-7 Add expansion of buffer names, so that "*.c" is expanded to all buffer
- names. Needed for ":bdel *.c", ":bunload *.c", etc.
-8 Support for <afile> where a buffer name is expected.
-8 Some commands don't use line numbers, but buffer numbers. '$'
- should then mean the number of the last buffer. E.g.: "4,$bdel".
-7 Add an option to mostly use slashes in file names. Separately for
- internal use and for when executing an external program?
-8 Some file systems are case-sensitive, some are not. Besides
- 'wildignorecase' there might be more parts inside
- CASE_INSENSITIVE_FILENAME that are useful on Unix.
-
-
-Swap (.swp) files:
-8 If writing to the swap file fails, should try to open one in another
- directory from 'dir'. Useful in case the file system is full and when
- there are short file name problems.
-8 Also use the code to try using a short file name for the backup and swap
- file for the Win32 and Dos 32 bit versions.
-8 When a file is edited by root, add $LOGNAME to know who did su.
-8 When the edited file is a symlink, try to put the swap file in the same
- dir as the actual file. Adjust FullName(). Avoids editing the same file
- twice (e.g. when using quickfix). Also try to make the name of the backup
- file the same as the actual file?
- Use the code for resolve()?
-7 When using 64 bit inode numbers, also store the top 32 bits. Add another
- field for this, using part of bo_fname[], to keep it compatible.
-7 When editing a file on removable media, should put swap file somewhere
- else. Use something like 'r' flag in 'viminfo'. 'diravoid'?
- Also: Be able to specify minimum disk space, skip directory when not
- enough room.
-7 Add a configure check for which directory should be used: /tmp, /var/tmp
- or /var/preserve.
-- Add an option to create a swap file only when making the first change to
- the buffer. (Liang) Or only when the buffer is not read-only.
-- Add option to set "umask" for backup files and swap files (Antwerpen).
- 'backupumask' and 'swapumask'? Or 'umaskback' and 'umaskswap'?
-- When editing a readonly file, don't use a swap file but read parts from the
- original file. Also do this when the file is huge (>'maxmem'). We do
- need to load the file once to count the number of lines? Perhaps keep a
- cached list of which line is where.
-
-
-Viminfo:
-7 Can probably remove the code that checks for a writable viminfo file,
- because we now do the chown() for root, and others can't overwrite someone
- else's viminfo file.
-8 When there is no .viminfo file and someone does "su", runs Vim, a
- root-owned .viminfo file is created. Is there a good way to avoid this?
- Perhaps check the owner of the directory. Only when root?
-8 Add argument to keep the list of buffers when Vim is started with a file
- name. (Schild)
-8 Keep the last used directory of the file browser (File/Open menu).
-8 Remember the last used register for "@@".
-8 Remember the redo buffer, so that "." works after restarting.
-8 Remember a list of last accessed files. To be used in the
- "File.Open Recent" menu. Default is to remember 10 files or so.
- Also remember which files have been read and written. How to display
- this?
-7 Also store the ". register (last inserted text).
-7 Make it possible to store buffer names in viminfo file relative to some
- directory, to make them portable over a network. (Aaron)
-6 Store a snapshot of the currently opened windows. So that when quitting
- Vim, and then starting again (without a file name argument), you see the
- same files in the windows. Use ":mksession" code?
-- Make marks present in .viminfo usable as file marks: Display a list of
- "last visited files" and select one to jump to.
-
-
-Modelines:
-8 Before trying to execute a modeline, check that it looks like one (valid
- option names). If it's very wrong, silently ignore it.
- Ignore a line that starts with "Subject: ".
-- Add an option to whitelist options that are allowed in a modeline. This
- would allow careful users to use modelines, e.g., only allowing
- 'shiftwidth'.
-- Add an option to let modelines only set local options, not global ones
- such as 'encoding'.
-- When an option value is coming from a modeline, do not carry it over to
- another edited file? Would need to remember the value from before the
- modeline setting.
-- Allow setting a variable from a modeline? Only allow using fixed strings,
- no function calls, to avoid a security problem.
-- Allow ":doauto BufRead x.cpp" in modelines, to execute autocommands for
- .cpp files.
-- Support the "abbreviate" command in modelines (Kearns). Careful for
- characters after <Esc>, that is a security leak.
-- Add option setting to ask user if he wants to have the modelines executed
- or not. Same for .exrc in local dir.
-
-
-Sessions:
-8 DOS/Windows: ":mksession" generates a "cd" command where "aa\#bb" means
- directory "#bb" in "aa", but it's used as "aa#bb". (Ronald Hoellwarth)
-7 When there is a "help.txt" window in a session file, restoring that
- session will not get the "LOCAL ADDITIONS" back.
-8 With ":mksession" always store the 'sessionoptions' option, even when
- "options" isn't in it. (St-Amant)
-8 When using ":mksession", also store a command to reset all options to
- their default value, before setting the options that are not at their
- default value.
-7 With ":mksession" also store the tag stack and jump history. (Michal
- Malecki)
-7 Persistent variables: "p:var"; stored in viminfo file and sessions files.
-
-
-Options:
-7 ":with option=value | command": temporarily set an option value and
- restore it after the command has executed.
-8 Make "old" number options that really give a number of effects into string
- options that are a comma separated list. The old number values should
- also be supported.
-8 Add commands to save and restore an option, which also preserves the flag
- that marks if the option was set. Useful to keep the effect of setting
- 'compatible' after ":syntax on" has been used.
-7 There is 'titleold', why is there no 'iconold'? (Chazelas)
-7 Make 'scrolloff' a global-local option, so that it can be different in the
- quickfix window, for example. (Gary Holloway)
- Also do 'sidescrolloff'.
-
-
-External commands:
-8 When filtering text, redirect stderr so that it can't mess up the screen
- and Vim doesn't need to redraw it. Also for ":r !cmd".
-4 Set separate shell for ":sh", piping "range!filter", reading text "r !ls"
- and writing text "w !wc". (Deutsche) Allow arguments for fast start (e.g.
- -f).
-4 Allow direct execution, without using a shell.
-4 Run an external command in the background. But how about I/O in the GUI?
- Careful: don't turn Vim into a shell!
-4 Add feature to disable using a shell or external commands.
-
-
-Multiple Windows:
-7 "vim -oO file ..." use both horizontal and vertical splits.
-8 Add CTRL-W T: go to the top window in the column of the current window.
- And CTRL-W B: go to bottom window.
-7 Use CTRL-W <Tab>, like alt-tab, to switch between buffers. Repeat <Tab>
- to select another buffer (only loaded ones?), <BS> to go back, <Enter> to
- select buffer, <Esc> to go back to original buffer.
-7 Make it possible to edit a new buffer in the preview window. A script can
- then fill it with something. ":popen"?
-7 Add a 'tool' window: behaves like a preview window but there can be
- several. Don't count it in only_one_window(). (Alexei Alexandrov)
-6 Add an option to resize the shell when splitting and/or closing a window.
- ":vsp" would make the shell wider by as many columns as needed for the new
- window. Specify a maximum size (or use the screen size). ":close" would
- shrink the shell by as many columns as come available. (Demirel)
-7 When starting Vim several times, instantiate a Vim server, that allows
- communication between the different Vims. Feels like one Vim running with
- multiple top-level windows. Esp. useful when Vim is started from an IDE
- too. Requires some form of inter process communication.
-- Support a connection to an external viewer. Could call the viewer
- automatically after some seconds of non-activity, or with a command.
- Allow some way of reporting scrolling and cursor positioning in the viewer
- to Vim, so that the link between the viewed and edited text can be made.
-
-
-Marks:
-8 Add ten marks for last changed files: ':0, ':1, etc. One mark per file.
-8 When cursor is first moved because of scrolling, set a mark at this
- position. (Rimon Barr) Use '-.
-8 Add a command to jump to a mark and make the motion inclusive. g'm and g`m?
-8 The '" mark is set to the first line, even when doing ":next" a few times.
- Only set the '" mark when the cursor was really moved in a file.
-8 Make `` and '', which would position the new cursor position in the middle
- of the window, restore the old topline (or relative position) from when
- the mark was set.
-7 Make a list of file marks in a separate window. For listing all buffers,
- matching tags, errors, etc. Normal commands to move around. Add commands
- to jump to the mark (in current window or new window). Start it with
- ":browse marks"?
-6 Add a menu that lists the Marks like ":marks". (Amerige)
-7 For ":jumps", ":tags" and ":marks", for not loaded buffers, remember the
- text at the mark. Highlight the column with the mark.
-7 Highlight each mark in some way (With "Mark" highlight group).
- Or display marks in a separate column, like 'number' does.
-7 Use d"m to delete rectangular area from cursor to mark m (like Vile's \m
- command).
-7 Try to keep marks in the same position when:
- - replacing with a line break, like in ":s/pat/^M/", move marks after the
- line break column to the next line. (Acevedo)
- - inserting/deleting characters in a line.
-5 Include marks for start/end of the current word and section. Useful in
- mappings.
-6 Add "unnamed mark" feature: Like marks for the ":g" command, but place and
- unplace them with commands before doing something with the lines.
- Highlight the marked lines somehow.
-
-
-Digraphs:
-7 Make "ga" show the keymap for a character, if it exists.
- Also show the code of the character after conversion to 'fileencoding'.
-- Use digraph table to tell Vim about the collating sequence of special
- characters?
-8 Add command to remove one or more (all) digraphs. (Brown)
-7 Support different sets of digraphs (depending on the character set?). At
- least Latin1/Unicode, Latin-2, MS-DOS (esp. for Win32).
-
-
-Writing files:
-- In vim_rename(), should lock "from" file when deleting "to" file.
-8 When appending to a file, Vim should also make a backup and a 'patchmode'
- file.
-8 'backupskip' doesn't write a backup file at all, a bit dangerous for some
- applications. Add 'backupelsewhere' to write a backup file in another
- directory? Or add a flag to 'backupdir'?
-6 Add an option to write a new, numbered, backup file each time. Like
- 'patchmode', e.g., 'backupmode'.
-6 Make it possible to write 'patchmode' files to a different directory.
- E.g., ":set patchmode=~/backups/*.orig". (Thomas)
-6 Add an option to prepend something to the backup file name. E.g., "#".
- Or maybe allow a function to modify the backup file name?
-8 Only make a backup when overwriting a file for the first time. Avoids
- losing the original when writing twice. (Slootman)
-7 On non-Unix machines, also overwrite the original file in some situations
- (file system full, it's a link on an NFS partition).
-7 When editing a file, check that it has been change outside of Vim more
- often, not only when writing over it. E.g., at the time the swap file is
- flushed. Or every ten seconds or so (use the time of day, check it before
- waiting for a character to be typed).
-8 When a file was changed since editing started, show this in the status
- line of the window, like "[time]".
- Make it easier to reload all outdated files that don't have changes.
- Automatic and/or with a command.
-
-
-Substitute:
-8 Substitute with hex/unicode number "\%xff" and "\%uabcd". Just like
- "\%uabcd" in search pattern.
-8 Make it easier to replace in all files in the argument list. E.g.:
- ":argsub/oldword/newword/". Works like ":argdo %s/oldword/newword/g|w".
-- :s///p prints the line after a substitution.
-- With :s///c replace \&, ~, etc. when showing the replacement pattern.
-8 With :s///c allow scrolling horizontally when 'nowrap' is effective.
- Also allow a count before the scrolling keys.
-- Add number option to ":s//2": replace second occurrence of string? Or:
- :s///N substitutes N times.
-- Add answers to ":substitute" with 'c' flag, used in a ":global", e.g.:
- ":g/pat1/s/pat2/pat3/cg": 'A' do all remaining replacements, 'Q' don't do
- any replacements, 'u' undo last substitution.
-7 Substitute in a block of text. Use {line}.{column} notation in an Ex
- range, e.g.: ":1.3,$.5s" means to substitute from line 1 column 3 to the
- last line column 5.
-5 Add commands to bookmark lines, display bookmarks, remove bookmarks,
- operate on lines with bookmarks, etc. Like ":global" but with the
- possibility to keep the bookmarks and use them with several commands.
- (Stanislav Sitar)
-
-
-Mouse support:
-8 Add 'o' flag to 'mouse'?
-7 Be able to set a 'mouseshape' for the popup menu.
-8 Add 'mouse' flag, which sets a behavior like Visual mode, but automatic
- yanking at the button-up event. Or like Select mode, but typing gets you
- out of Select mode, instead of replacing the text. (Bhaskar)
-- Using right mouse button to extend a blockwise selection should attach to
- the nearest corner of the rectangle (four possible corners).
-- Precede mouse click by a number to simulate double clicks?!?
-- When mouse click after 'r' command, get character that was pointed to.
-
-
-Argument list:
-6 Add command to put all filenames from the tag files in the argument list.
- When given an argument, only use the files where that argument matches
- (like `grep -l ident`) and jump to the first match.
-6 Add command to form an args list from all the buffers?
-
-
-Registers:
-8 Don't display empty registers with ":display". (Etienne)
-8 Add put command that overwrites existing text. Should also work for
- blocks. Useful to move text around in a table. Works like using "R ^R r"
- for every line.
-6 When yanking into the unnamed registers several times, somehow make the
- previous contents also available (like it's done for deleting). What
- register names to use? g"1, g"2, etc.?
-- When appending to a register, also report the total resulting number of
- lines. Or just say "99 more lines yanked", add the "more".
-- When inserting a register in Insert mode with CTRL-R, don't insert comment
- leader when line wraps?
-- The ":@r" commands should take a range and execute the register for each
- line in the range.
-- Add "P" command to insert contents of unnamed register, move selected text
- to position of previous deleted (to swap foo and bar in " + foo")
-8 Should be able to yank and delete into the "/ register.
- How to take care of the flags (offset, magic)?
-
-
-Debug mode:
-7 Add something to enable debugging when a remote message is received.
-8 Add breakpoints for setting an option
-8 Add breakpoints for assigning to a variable.
-7 Add a watchpoint in the debug mode: An expression that breaks execution
- when evaluating to non-zero. Add the "watchadd expr" command, stop when
- the value of the expression changes. ":watchdel" deletes an item,
- ":watchlist" lists the items. (Charles Campbell)
-7 Store the history from debug mode in viminfo.
-7 Make the debug mode history available with histget() et al.
-
-
-Various improvements:
-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
- "format/chinese.vim" plugin.
- The plugin would set 'formatexpr' and define the function being called.
- Edward L. Fox explains how it should be done for most Asian languages.
- (2005 Nov 24)
- Alternative: patch for utf-8 line breaking. (Yongwei Wu, 2008 Feb 23)
-7 [t to move to previous xml/html tag (like "vatov"), ]t to move to next
- ("vatv").
-7 [< to move to previous xml/html tag, e.g., previous <li>. ]< to move to
- next <li>, ]< to next </li>, [< to previous </li>.
-8 Add ":rename" command: rename the file of the current buffer and rename
- the buffer. Buffer may be modified.
-7 Instead of filtering errors with a shell script it should be possible to
- do this with Vim script. A function that filters the raw text that comes
- from the 'makeprg'?
-- Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh
- Govindachar)
-7 Add a command that goes back to the position from before jumping to the
- first quickfix location. ":cbefore"?
-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)
-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.
- More general: need a way to access command modifiers in a user command.
- Assign them to a v: variable?
-7 Add an invisible buffer which can be edited. For use in scripts that want
- to manipulate text without changing the window layout.
-8 Add a command to revert to the saved version of file; undo or redo until
- all changes are gone.
-6 "vim -q -" should read the list of errors from stdin. (Gautam Mudunuri)
-8 Add "--remote-fail": When contacting the server fails, exit Vim.
- Add "--remote-self": When contacting the server fails, do it in this Vim.
- Overrules the default of "--remote-send" to fail and "--remote" to do it
- in this Vim.
-8 When Vim was started without a server, make it possible to start one, as
- if the "--servername" argument was given. ":startserver <name>"?
-8 No address range can be used before the command modifiers. This makes
- them difficult to use in a menu for Visual mode. Accept the range and
- have it apply to the following command.
-8 Add the possibility to set 'fileformats' to force a format and strip other
- CR characters. For example, for "dos" files remove CR characters at the
- end of the line, so that a file with mixed line endings is cleaned up.
- To just not display the CR characters: Add a flag to 'display'?
-7 Some compilers give error messages in which the file name does not have a
- path. Be able to specify that 'path' is used for these files.
-7 Xterm sends <Esc>O3F for <M-End>. Similarly for other <M-Home>, <M-Left>,
- etc. Combinations of Alt, Ctrl and Shift are also possible. Recognize
- these to avoid inserting the raw byte sequence, handle like the key
- without modifier (unless mapped).
-6 Add "gG": like what "gj" is to "j": go to the N'th window line.
-8 Add command like ":normal" that accepts <Key> notation like ":map".
-9 Support ACLs on more systems.
-7 Add ModeMsgVisual, ModeMsgInsert, etc. so that each mode message can be
- highlighted differently.
-7 Add a message area for the user. Set some option to reserve space (above
- the command line?). Use an ":echouser" command to display the message
- (truncated to fit in the space).
-7 Add %s to 'keywordprg': replace with word under the cursor. (Zellner)
-8 Support printing on Unix. Can use "lpansi.c" as an example. (Bookout)
-8 Add put command that replaces the text under it. Esp. for blockwise
- Visual mode.
-7 Enhance termresponse stuff: Add t_CV(?): pattern of term response, use
- regexp: "\e\[[>?][0-9;]*c", but only check just after sending t_RV.
-7 Add "g|" command: move to N'th column from the left margin (after wrapping
- and applying 'leftcol'). Works as "|" like what "g0" is to "0".
-7 Support setting 'equalprg' to a user function name.
-7 Highlight the characters after the end-of-line differently.
-7 When 'whichwrap' contains "l", "$dl" should join lines?
-8 Add an argument to configure to use $CFLAGS and not modify it? (Mooney)
-8 Enabling features is a mix of configure arguments and defines in
- feature.h. How to make this consistent? Feature.h is required for
- non-unix systems. Perhaps let configure define CONF_XXX, and use #ifdef
- CONF_XXX in feature.h? Then what should min-features and max-features do?
-8 Add "g^E" and "g^Y", to scroll a screen-full line up and down.
-6 Add ":timer" command, to set a command to be executed at a certain
- interval, or once after some time has elapsed. (Aaron)
- Perhaps an autocommand event like CursorHold is better?
- Patch to add async functionality. (Geoff Greer, 2013 Sep 1 and later)
-8 Add ":confirm" handling in open_exfile(), for when file already exists.
-8 When quitting with changed files, make the dialog list the changed file
- and allow "write all", "discard all", "write some". The last one would
- then ask "write" or "discard" for each changed file. Patch in HierAssist
- does something like this. (Shah)
-7 Use growarray for replace stack.
-7 Have a look at viH (Hellenic or Greek version of Vim). But a solution
- outside of Vim might be satisfactory (Haritsis).
-3 Make "2d%" work like "d%d%" instead of "d2%"?
-7 "g CTRL-O" jumps back to last used buffer. Skip CTRL-O jumps in the same
- buffer. Make jumplist remember the last ten accessed buffers?
-7 Make it possible to set the size of the jumplist (also to a smaller number
- than the default). (Nikolai Weibull)
-- Add code to disable the CAPS key when going from Insert to Normal mode.
-- Set date/protection/etc. of the patchfile the same as the original file.
-- Use growarray for termcodes[] in term.c
-- Add <window-99>, like <cword> but use filename of 99'th window.
-7 Add a way to change an operator to always work characterwise-inclusive
- (like "v" makes the operator characterwise-exclusive). "x" could be used.
-- Make a set of operations on list of names: expand wildcards, replace home
- dir, append a string, delete a string, etc.
-- Remove using mktemp() and use tmpname() only? Ctags does this.
-- When replacing environment variables, and there is one that is not set,
- turn it into an empty string? Only when expanding options? (Hiebert)
-- Option to set command to be executed instead of producing a beep (e.g. to
- call "play newbeep.au").
-- Add option to show the current function name in the status line. More or
- less what you find with "[[k", like how 'cindent' recognizes a function.
- (Bhatt).
-- "[r" and "]r": like "p" and "P", but replace instead of insert (esp. for
- blockwise registers).
-- Add 'timecheck' option, on by default. Makes it possible to switch off the
- timestamp warning and question. (Dodt).
-- Add an option to set the time after which Vim should check the timestamps
- of the files. Only check when an event occurs (e.g., character typed,
- mouse moved). Useful for non-GUI versions where keyboard focus isn't
- noticeable.
-- Make 'smartcase' work even though 'ic' isn't set (Webb).
-7 When formatting text, allow to break the line at a number of characters.
- Use an option for this: 'breakchars'? Useful for formatting Fortran code.
-- Add flag to 'formatoptions' to be able to format book-style paragraphs
- (first line of paragraph has larger indent, no empty lines between
- paragraphs). Complements the '2' flag. Use '>' flag when larger indent
- starts a new paragraph, use '<' flag when smaller indent starts a new
- paragraph. Both start a new paragraph on any indent change.
-8 The 'a' flag in 'formatoptions' is too dangerous. In some way only do
- auto-formatting in specific regions, e.g. defined by syntax highlighting.
-8 Allow using a trailing space to signal a paragraph that continues on the
- next line (MIME text/plain; format=flowed, RFC 2646). Can be used for
- continuous formatting. Could use 'autoformat' option, which specifies a
- regexp which triggers auto-formatting (for one line).
- ":set autoformat=\\s$".
-- Be able to redefine where a sentence stops. Use a regexp pattern?
-- Support multi-byte characters for sentences. Example from Ben Peterson.
-7 Add command "g)" to go to the end of a sentence, "g(" to go back to the
- end of a sentence. (Servatius Brandt)
-- Be able to redefine where a paragraph starts. For "[[" where the '{' is
- not in column 1.
-6 Add ":cdprev": go back to the previous directory. Need to remember a
- stack of previous directories. We also need ":cdnext".
-7 Should ":cd" for MS-DOS go to $HOME, when it's defined?
-- Make "gq<CR>" work on the last line in the file. Maybe for every operator?
-- Add more redirecting of Ex commands:
- :redir #> bufname
- :redir #>> bufname (append)
-- Give error message when starting :redir: twice or using END when no
- redirection was active.
-- Setting of options, specifically for a buffer or window, with
- ":set window.option" or ":set buffer.option=val". Or use ":buffer.set".
- Also: "buffer.map <F1> quit".
-6 Would it be possible to change the color of the cursor in the Win32
- console? (Klaus Hast)
-- Add :delcr command:
- *:delcr*
- :[range]delcr[!] Check [range] lines (default: whole buffer) for lines
- ending in <CR>. If all lines end in <CR>, or [!] is
- used, remove the <CR> at the end of lines in [range].
- A CTRL-Z at the end of the file is removed. If
- [range] is omitted, or it is the whole file, and all
- lines end in <CR> 'textmode' is set.
-- Should integrate addstar() and file_pat_to_reg_pat().
-- When working over a serial line with 7 bit characters, remove meta
- characters from 'isprint'.
-- Use fchdir() in init_homedir(), like in FullName().
-- In win_update(), when the GUI is active, always use the scrolling area.
- Avoid that the last status line is deleted and needs to be redrawn.
-- That "cTx" fails when the cursor is just after 'x' is Vi compatible, but
- may not be what you expect. Add a flag in 'cpoptions' for this? More
- general: Add an option to allow "c" to work with a null motion.
-- Give better error messages by using errno (strerror()).
-- Give "Usage:" error message when command used with wrong arguments (like
- Nvi).
-- Make 'restorescreen' option also work for xterm (and others), replaces the
- SAVE_XTERM_SCREEN define.
-7 Support for ":winpos" In xterm: report the current window position.
-- Give warning message when using ":set t_xx=asdf" for a termcap code that
- Vim doesn't know about. Add flag in 'shortmess'?
-6 Add ":che <file>", list all the include paths which lead to this file.
-- For a commandline that has several commands (:s, :d, etc.) summarize the
- changes all together instead of for each command (e.g. for the rot13
- macro).
-- Add command like "[I" that also shows the tree of included files.
-- ":set sm^L" results in ":set s", because short names of options are also
- expanded. Is there a better way to do this?
-- Add ":@!" command, to ":@" like what ":source!" is to ":source".
-8 Add ":@:!": repeat last command with forceit set.
-- Add 't_normal': Used whenever t_me, t_se, t_ue or t_Zr is empty.
-- ":cab map test ^V| je", ":cunab map" doesn't work. This is vi compatible!
-- CTRL-W CTRL-E and CTRL-W CTRL-Y should move the current window up or down
- if it is not the first or last window.
-- Include-file-search commands should look in the loaded buffer of a file (if
- there is one) instead of the file itself.
-7 Change 'nrformats' to include the leader for each format. Example:
- nrformats=hex:$,binary:b,octal:0
- Add setting of 'nrformats' to syntax files.
-- 'path' can become very long, don't use NameBuff for expansion.
-- When unhiding a hidden buffer, put the same line at top of the window as
- the one before hiding it. Or: keep the same relative cursor position (so
- many percent down the windows).
-- Make it possible for the 'showbreak' to be displayed at the end of the
- line. Use a comma to separate the part at the end and the start of the
- line? Highlight the linebreak characters, add flag in 'highlight'.
- Make 'showbreak' local to a window.
-- Some string options should be expanded if they have wildcards, e.g.
- 'dictionary' when it is "*.h".
-- Use a specific type for number and boolean options, making it possible to
- change it for specific machines (e.g. when a long is 64 bit).
-- Add option for <Insert> in replace mode going to normal mode. (Nugent)
-- Add a next/previous possibility to "[^I" and friends.
-- Add possibility to change the HOME directory. Use the directory from the
- passwd file? (Antwerpen)
-8 Add commands to push and pop all or individual options. ":setpush tw",
- ":setpop tw", ":setpush all". Maybe pushing/popping all options is
- sufficient. ":setflush" resets the option stack?
- How to handle an aborted mapping? Remember position in tag stack when
- mapping starts, restore it when an error aborts the mapping?
-- "gc": goto character, move absolute character positions forward, also
- counting newlines. "gC" goes backwards (Weigert).
-- When doing CTRL-^, redraw buffer with the same topline. (Demirel) Store
- cursor row and window height to redraw cursor at same percentage of window
- (Webb).
-- Besides remembering the last used line number of a file, also remember the
- column. Use it with CTRL-^ et. al.
-- Check for non-digits when setting a number option (careful when entering
- hex codes like 0xff).
-- Add option to make "." redo the "@r" command, instead of the last command
- executed by it. Also to make "." redo the whole mapping. Basically: redo
- the last TYPED command.
-- Support URL links for ^X^F in Insert mode, like for "gf".
-- Support %name% expansion for "gf" on Windows.
-- Make "gf" work on "file://c:/path/name". "file:/c:/" and "file:///c:/"
- should also work?
-- Add 'urlpath', used like 'path' for when "gf" used on an URL?
-8 When using "gf" on an absolute file name, while editing a remote file
- (starts with scp:// or http://) should prepend the method and machine
- name.
-- When finding an URL or file name, and it doesn't exist, try removing a
- trailing '.'.
-- Add ":path" command modifier. Should work for every command that takes a
- file name argument, to search for the file name in 'path'. Use
- find_file_in_path().
-- Highlight control characters on the screen: Shows the difference between
- CTRL-X and "^" followed by "X" (Colon).
-- Integrate parsing of cmdline command and parsing for expansion.
-- Create a program that can translate a .swp file from any machine into a
- form usable by Vim on the current machine.
-- Add ":noro" command: Reset 'ro' flag for all buffers, except ones that have
- a readonly file. ":noro!" will reset all 'ro' flags.
-- 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.
-- 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
- to the minimal size.
-- Add "]>" and "[<", shift comment at end of line (command; /* comment */).
-- Should not call cursorcmd() for each vgetc() in getcmdline().
-- ":split file1 file2" adds two more windows (Webb).
-- Don't give message "Incomplete last line" when editing binary file.
-- Add ":a", ":i" for preloading of named buffers.
-- When entering text, keep other windows on same buffer updated (when a line
- entered)?
-- Check out how screen does output optimizing. Apparently this is possible
- as an output filter.
-- In dosub() regexec is called twice for the same line. Try to avoid this.
-- Window updating from memline.c: insert/delete/replace line.
-- Optimize ml_append() for speed, esp. for reading a file.
-- V..c should keep indent when 'ai' is set, just like [count]cc.
-- Updatescript() can be done faster with a string instead of a char.
-- Screen updating is inefficient with CTRL-F and CTRL-B when there are long
- lines.
-- Uppercase characters in Ex commands can be made lowercase?
-8 Add option to show characters in text not as "|A" but as decimal ("^129"),
- hex ("\x81") or octal ("\201") or meta (M-x). Nvi has the 'octal' option
- to switch from hex to octal. Vile can show unprintable characters in hex
- or in octal.
-7 Tighter integration with xxd to edit binary files. Make it more
- easy/obvious to use. Command line argument?
-- How does vi detect whether a filter has messed up the screen? Check source.
- After ":w !command" a wait_return?
-- Improve screen updating code for doput() (use s_ins()).
-- With 'p' command on last line: scroll screen up (also for terminals without
- insert line command).
-- Use insert/delete char when terminal supports it.
-- Optimize screen redraw for slow terminals.
-- Optimize "dw" for long row of spaces (say, 30000).
-- Add "-d null" for editing from a script file without displaying.
-- In Insert mode: Remember the characters that were removed with backspace
- and re-insert them one at a time with <key1>, all together with <key2>.
-- Implement 'redraw' option.
-- Add special code to 'sections' option to define something else but '{' or
- '}' as the start of a section (e.g. one shiftwidth to the right).
-7 Allow using Vim in a pipe: "ls | vim -u xxx.vim - | yyy". Only needs
- implementing ":w" to stdout in the buffer that was read from stdin.
- Perhaps writing to stdout will work, since stderr is used for the terminal
- I/O.
-8 Allow opening an unnamed buffer with ":e !cmd" and ":sp !cmd". Vile can
- do it.
-- Add commands like ]] and [[ that do not include the line jumped to.
-- When :unab without matching "from" part and several matching "to" parts,
- delete the entry that was used last, instead of the first in the list.
-- Add text justification option.
-- Set boolean options on/off with ":set paste=off", ":set paste=on".
-- After "inv"ing an option show the value: ":set invpaste" gives "paste is
- off".
-- Check handling of CTRL-V and '\' for ":" commands that do not have TRLBAR.
-- When a file cannot be opened but does exist, give error message.
-- When writing check for file exists but no permission, "Permission denied".
-- If file does not exist, check if directory exists.
-- MSDOS: although t_cv and t_ci are not set, do invert char under cursor.
-- Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex
- commands.
-- ":set -w all": list one option per line.
-- :table command (Webb)
-- Add new operator: clear, make area white (replace with spaces): "g ".
-- Add command to ":read" a file at a certain column (blockwise read?).
-- Add sort of replace mode where case is taken from the old text (Goldfarb).
-- Allow multiple arguments for ":read", read all the files.
-- Support for tabs in specific columns: ":set tabcol=8,20,34,56" (Demirel).
-- Add 'searchdir' option: Directories to search for file name being edited
- (Demirel).
-- Modifier for the put command: Change to linewise, charwise, blockwise, etc.
-- Add commands for saving and restoring options ":set save" "set restore",
- for use in macro's and the like.
-- Keep output from listings in a window, so you can have a look at it while
- working in another window. Put cmdline in a separate window?
-- Add possibility to put output of Ex commands in a buffer or file, e.g. for
- ":set all". ":r :set all"?
-- When the 'equalalways' option is set, creating a new window should not
- result in windows to become bigger. Deleting a window should not result in
- a window to become smaller (Webb).
-- When resizing the whole Vim window, the windows inside should be resized
- proportionally (Webb).
-- Include options directly in option table, no indirect pointers. Use
- mkopttab to make option table?
-- When doing ":w dir", where "dir" is a directory name, write the current
- file into that directory, with the current file name (without the path)?
-- Support for 'dictionary's that are sorted, makes access a lot faster
- (Haritsis).
-- Add "^Vrx" on the command line, replace with contents of register x. Used
- instead of CTRL-R to make repeating possible. (Marinichev)
-- Add "^Vb" on the command line, replace with word before or under the
- cursor?
-- Option to make a .swp file only when a change is made (Templeton).
-- Support mapping for replace mode and "r" command (Vi doesn't do this)?
-5 Add 'ignorefilecase' option: Ignore case when expanding file names.
- ":e ma<Tab>" would also find "Makefile" on Unix.
-8 Sorting of filenames for completion is wrong on systems that ignore
- case of filenames. Add 'ignorefncase' option. When set, case in
- filenames is ignored for sorting them. Patch by Mike Williams:
- ~/vim/patches/ignorefncase. Also change what matches? Or use another
- option name.
-8 Should be able to compile Vim in another directory, with $(srcdir) set to
- where the sources are. Add $(srcdir) in the Makefile in a lot of places.
- (Netherton)
-6 Make it configurable when "J" inserts a space or not. Should not add a
- space after "(", for example.
-5 When inserting spaces after the end-of-line for 'virtualedit', use tabs
- when the user wants this (e.g., add a "tab" field to 'virtualedit').
- (Servatius Brandt)
-
-
-From Elvis:
-- Use "instman.sh" to install manpages?
-- Add ":alias" command.
-- Search patterns:
- \@ match word under cursor.
- but do:
- \@w match the word under the cursor?
- \@W match the WORD under the cursor?
-8 ":window" command:
- :win + next window (up)
- :win ++ idem, wrapping
- :win - previous window (down)
- :win -- idem, wrapping
- :win nr to window number "nr"
- :win name to window editing buffer "name"
-7 ":cc" compiles a single file (default: current one). 'ccprg' option is
- program to use with ":cc". Use ":compile" instead of ":cc"?
-
-
-From xvi:
-- CTRL-_ : swap 8th bit of character.
-- Add egrep-like regex type, like xvi (Ned Konz) or Perl (Emmanuel Mogenet)
-
-
-From vile:
-- When horizontal scrolling, use '>' for lines continuing right of a window.
-- Support putting .swp files in /tmp: Command in rc.local to move .swp files
- from /tmp to some directory before deleting files.
-
-
-Far future and "big" extensions:
-- Instead of using a Makefile and autoconf, use a simple shell script to
- find the C compiler and do everything with C code. Translate something
- like an Aap recipe and configure.in to C. Avoids depending on Python,
- thus will work everywhere. With batch file to find the C compiler it
- would also work on MS-Windows.
-- Make it easy to setup Vim for groups of users: novice vi users, novice
- Vim users, C programmers, xterm users, GUI users,...
-- Change layout of blocks in swap file: Text at the start, with '\n' in
- between lines (just load the file without changes, except for Mac).
- Indexes for lines are from the end of the block backwards. It's the
- current layout mirrored.
-- Make it possible to edit a register, in a window, like a buffer.
-- Add stuff to syntax highlighting to change the text (upper-case keywords,
- set indent, define other highlighting, etc.).
-- Mode to keep C-code formatted all the time (sort of on-line indent).
-- Several top-level windows in one Vim session. Be able to use a different
- font in each top-level window.
-- Allow editing above start and below end of buffer (flag in 'virtualedit').
-- Smart cut/paste: recognize words and adjust spaces before/after them.
-- Add open mode, use it when terminal has no cursor positioning.
-- Special "drawing mode": a line is drawn where the cursor is moved to.
- Backspace deletes along the line (from jvim).
-- Implement ":Bset", set option in all buffers. Also ":Wset", set in all
- windows, ":Aset, set in all arguments and ":Tset", set in all files
- mentioned in the tags file.
- Add buffer/arg range, like in ":2,5B%s/..." (do we really need this???)
- Add search string: "B/*.c/%s/.."? Or ":F/*.c/%s/.."?
-- Support for underlining (underscore-BS-char), bold (char-BS-char) and other
- standout modes switched on/off with , 'overstrike' option (Reiter).
-- Add vertical mode (Paul Jury, Demirel): "5vdw" deletes a word in five
- lines, "3vitextESC" will insert "text" in three lines, etc..
-4 Recognize l, #, p as 'flags' to EX commands:
- :g/RE/#l shall print lines with line numbers and in list format.
- :g/RE/dp shall print lines that are deleted.
- POSIX: Commands where flags shall apply to all lines written: list,
- number, open, print, substitute, visual, &, z. For other commands, flags
- shall apply to the current line after the command completes. Examples:
- :7,10j #l Join the lines 7-10 and print the result in list
-- Allow two or more users to edit the same file at the same time. Changes
- are reflected in each Vim immediately. Could work with local files but
- also over the internet. See http://www.codingmonkeys.de/subethaedit/.
-
-When using "do" or ":diffget" in a buffer with changes in every line an extra
-empty line would appear.
-
-vim:tw=78:sw=4:sts=4:ts=8:ft=help:norl:
-vim: set fo+=n :
diff --git a/runtime/doc/uganda.txt b/runtime/doc/uganda.txt
index ee1c36d676..c228c65542 100644
--- a/runtime/doc/uganda.txt
+++ b/runtime/doc/uganda.txt
@@ -190,7 +190,7 @@ child, you should have the intention to do this for at least one year.
How do you know that the money will be spent right? First of all you have my
personal guarantee as the author of Vim. I trust the people that are working
-at the centre, I know them personally. Further more, the centre has been
+at the centre, I know them personally. Furthermore, the centre has been
co-sponsored and inspected by World Vision, Save the Children Fund and is now
under the supervision of Pacific Academy Outreach Society. The centre is
visited about once a year to check the progress (at our own cost). I have
diff --git a/runtime/doc/undo.txt b/runtime/doc/undo.txt
index 1342621516..c6c70ab6d2 100644
--- a/runtime/doc/undo.txt
+++ b/runtime/doc/undo.txt
@@ -250,8 +250,8 @@ ignored if its owner differs from the owner of the edited file, except when
the owner of the undo file is the current user. Set 'verbose' to get a
message about that when opening a file.
-Undo files are normally saved in the same directory as the file. This can be
-changed with the 'undodir' option.
+Location of the undo files is controlled by the 'undodir' option, by default
+they are saved to the dedicated directory in the application data folder.
You can also save and restore undo histories by using ":wundo" and ":rundo"
respectively:
diff --git a/runtime/doc/usr_02.txt b/runtime/doc/usr_02.txt
index cd25b14e32..6a288f8965 100644
--- a/runtime/doc/usr_02.txt
+++ b/runtime/doc/usr_02.txt
@@ -1,4 +1,4 @@
-*usr_02.txt* For Vim version 7.4. Last change: 2010 Jul 20
+*usr_02.txt* For Vim version 7.4. Last change: 2015 Apr 12
VIM USER MANUAL - by Bram Moolenaar
@@ -29,11 +29,10 @@ To start Vim, enter this command: >
gvim file.txt
-In UNIX you can type this at any command prompt. If you are running Microsoft
-Windows, open an MS-DOS prompt window and enter the command.
- In either case, Vim starts editing a file called file.txt. Because this
-is a new file, you get a blank window. This is what your screen will look
-like:
+On Unix you can type this at any command prompt. If you are running Windows,
+open a command prompt window and enter the command. In either case, Vim
+starts editing a file called file.txt. Because this is a new file, you get a
+blank window. This is what your screen will look like:
+---------------------------------------+
|# |
@@ -61,10 +60,9 @@ use this command: >
the editing occurs inside your command window. In other words, if you are
running inside an xterm, the editor uses your xterm window. If you are using
-an MS-DOS command prompt window under Microsoft Windows, the editing occurs
-inside this window. The text in the window will look the same for both
-versions, but with gvim you have extra features, like a menu bar. More about
-that later.
+the command prompt under Microsoft Windows, the editing occurs inside this
+window. The text in the window will look the same for both versions, but with
+gvim you have extra features, like a menu bar. More about that later.
==============================================================================
*02.2* Inserting text
@@ -80,7 +78,7 @@ mistakes; you can correct them later. To enter the following programmer's
limerick, this is what you type: >
iA very intelligent turtle
- Found programming UNIX a hurdle
+ Found programming Unix a hurdle
After typing "turtle" you press the <Enter> key to start a new line. Finally
you press the <Esc> key to stop Insert mode and go back to Normal mode. You
@@ -88,7 +86,7 @@ now have two lines of text in your Vim window:
+---------------------------------------+
|A very intelligent turtle |
- |Found programming UNIX a hurdle |
+ |Found programming Unix a hurdle |
|~ |
|~ |
| |
@@ -110,7 +108,7 @@ of the window. This indicates you are in Insert mode.
+---------------------------------------+
|A very intelligent turtle |
- |Found programming UNIX a hurdle |
+ |Found programming Unix a hurdle |
|~ |
|~ |
|-- INSERT -- |
@@ -187,7 +185,7 @@ look like this:
+---------------------------------------+
|intelligent turtle |
- |Found programming UNIX a hurdle |
+ |Found programming Unix a hurdle |
|~ |
|~ |
| |
@@ -202,7 +200,7 @@ insert mode (the final <Esc>). The result:
+---------------------------------------+
|A young intelligent turtle |
- |Found programming UNIX a hurdle |
+ |Found programming Unix a hurdle |
|~ |
|~ |
| |
@@ -215,7 +213,7 @@ To delete a whole line use the "dd" command. The following line will
then move up to fill the gap:
+---------------------------------------+
- |Found programming UNIX a hurdle |
+ |Found programming Unix a hurdle |
|~ |
|~ |
|~ |
@@ -332,7 +330,7 @@ Insert mode. Then you can type the text for the new line.
Suppose the cursor is somewhere in the first of these two lines:
A very intelligent turtle ~
- Found programming UNIX a hurdle ~
+ Found programming Unix a hurdle ~
If you now use the "o" command and type new text: >
@@ -342,7 +340,7 @@ The result is:
A very intelligent turtle ~
That liked using Vim ~
- Found programming UNIX a hurdle ~
+ Found programming Unix a hurdle ~
The "O" command (uppercase) opens a line above the cursor.
@@ -518,9 +516,11 @@ Summary: *help-summary* >
:help subject()
< Function "subject". >
:help -subject
-< Command-line option "-subject". >
+< Command-line argument "-subject". >
:help +subject
< Compile-time feature "+subject". >
+ :help /*
+< Regular expression item "*" >
:help EventName
< Autocommand event "EventName". >
:help digraphs.txt
diff --git a/runtime/doc/usr_03.txt b/runtime/doc/usr_03.txt
index a8139d60ca..b8f65d9309 100644
--- a/runtime/doc/usr_03.txt
+++ b/runtime/doc/usr_03.txt
@@ -1,4 +1,4 @@
-*usr_03.txt* For Vim version 7.4. Last change: 2006 Jun 21
+*usr_03.txt* For Vim version 7.4. Last change: 2015 Dec 12
VIM USER MANUAL - by Bram Moolenaar
@@ -57,8 +57,11 @@ paragraph, much faster than using "l". "b" does the same in the other
direction.
A word ends at a non-word character, such as a ".", "-" or ")". To change
-what Vim considers to be a word, see the 'iskeyword' option.
- It is also possible to move by white-space separated WORDs. This is not a
+what Vim considers to be a word, see the 'iskeyword' option. If you try this
+out in the help directly, 'iskeyword' needs to be reset for the examples to
+work: >
+ :set iskeyword&
+It is also possible to move by white-space separated WORDs. This is not a
word in the normal sense, that's why the uppercase is used. The commands for
moving by WORDs are also uppercase, as this figure shows:
@@ -528,7 +531,7 @@ MATCHING ANY SINGLE CHARACTER
The . (dot) character matches any existing character. For example, the
pattern "c.m" matches a string whose first character is a c, whose second
-character is anything, and whose the third character is m. Example:
+character is anything, and whose third character is m. Example:
We use a computer that became the cummin winter. ~
xxx xxx xxx
diff --git a/runtime/doc/usr_05.txt b/runtime/doc/usr_05.txt
index a130d84630..5aecf33557 100644
--- a/runtime/doc/usr_05.txt
+++ b/runtime/doc/usr_05.txt
@@ -37,9 +37,10 @@ for you), you can edit it this way: >
If you don't have a vimrc file yet, see |init.vim| to find out where you can
create a vimrc file.
-For Unix and Macintosh this file is always used and is recommended:
+This file is always used and is recommended:
- ~/.config/nvim/init.vim ~
+ ~/.config/nvim/init.vim (Unix and OSX) ~
+ ~/AppData/Local/nvim/init.vim (Windows) ~
The vimrc file can contain all the commands that you type after a colon. The
most simple ones are for setting options. For example, if you want Vim to
@@ -285,7 +286,6 @@ Where can you find plugins?
- You could write one yourself, see |write-plugin|.
Some plugins come as a vimball archive, see |vimball|.
-Some plugins can be updated automatically, see |getscript|.
USING A GLOBAL PLUGIN
diff --git a/runtime/doc/usr_06.txt b/runtime/doc/usr_06.txt
index 1cb3eb8673..b4b495ff9f 100644
--- a/runtime/doc/usr_06.txt
+++ b/runtime/doc/usr_06.txt
@@ -152,7 +152,7 @@ You could also write your own color scheme. This is how you do it:
directory. For Unix, this should work: >
!mkdir -p ~/.config/nvim/colors
- !cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim
+ !cp $VIMRUNTIME/colors/morning.vim ~/.config/nvim/colors/mine.vim
<
This is done from Vim, because it knows the value of $VIMRUNTIME.
diff --git a/runtime/doc/usr_09.txt b/runtime/doc/usr_09.txt
index 05cc32bceb..d68d734b8f 100644
--- a/runtime/doc/usr_09.txt
+++ b/runtime/doc/usr_09.txt
@@ -134,10 +134,10 @@ The following command makes the mouse work like a Microsoft Windows mouse: >
:behave mswin
-The default behavior of the mouse on UNIX systems is xterm. The default
-behavior on a Microsoft Windows system is selected during the installation
-process. For details about what the two behaviors are, see |:behave|. Here
-follows a summary.
+The default behavior of the mouse on Unix systems is xterm. The default
+behavior on Windows systems is selected during the installation process. For
+details about what the two behaviors are, see |:behave|. Here follows a
+summary.
XTERM MOUSE BEHAVIOR
diff --git a/runtime/doc/usr_10.txt b/runtime/doc/usr_10.txt
index 64b0181c35..bf7ba18222 100644
--- a/runtime/doc/usr_10.txt
+++ b/runtime/doc/usr_10.txt
@@ -698,10 +698,10 @@ still be something that an external command can do better or faster.
through an external program. In other words, it runs the system command
represented by {program}, giving it the block of text represented by {motion}
as input. The output of this command then replaces the selected block.
- Because this summarizes badly if you are unfamiliar with UNIX filters, take
+ Because this summarizes badly if you are unfamiliar with Unix filters, take
a look at an example. The sort command sorts a file. If you execute the
following command, the unsorted file input.txt will be sorted and written to
-output.txt. (This works on both UNIX and Microsoft Windows.) >
+output.txt. This works on both Unix and Windows. >
sort <input.txt >output.txt
diff --git a/runtime/doc/usr_11.txt b/runtime/doc/usr_11.txt
index 2a810af6c2..1a72c300d7 100644
--- a/runtime/doc/usr_11.txt
+++ b/runtime/doc/usr_11.txt
@@ -293,7 +293,6 @@ If you really don't want to see this message, you can add the 'A' flag to the
'updatecount' Number of key strokes after which the swap file is flushed to
disk.
'updatetime' Timeout after which the swap file is flushed to disk.
-'swapsync' Whether the disk is synced when the swap file is flushed.
'directory' List of directory names where to store the swap file.
'maxmem' Limit for memory usage before writing text to the swap file.
'maxmemtot' Same, but for all files in total.
diff --git a/runtime/doc/usr_12.txt b/runtime/doc/usr_12.txt
index fba1b53274..237abae55f 100644
--- a/runtime/doc/usr_12.txt
+++ b/runtime/doc/usr_12.txt
@@ -309,7 +309,7 @@ matches can be found.
==============================================================================
*12.8* Find where a word is used
-If you are a UNIX user, you can use a combination of Vim and the grep command
+If you are a Unix user, you can use a combination of Vim and the grep command
to edit all the files that contain a given word. This is extremely useful if
you are working on a program and want to view or edit all the files that
contain a specific variable.
@@ -324,7 +324,7 @@ will only list the files containing the word and not print the matching lines.
The word it is searching for is "frame_counter". Actually, this can be any
regular expression. (Note: What grep uses for regular expressions is not
exactly the same as what Vim uses.)
- The entire command is enclosed in backticks (`). This tells the UNIX shell
+ The entire command is enclosed in backticks (`). This tells the Unix shell
to run this command and pretend that the results were typed on the command
line. So what happens is that the grep command is run and produces a list of
files, these files are put on the Vim command line. This results in Vim
diff --git a/runtime/doc/usr_21.txt b/runtime/doc/usr_21.txt
index bdff81ef69..f99c3263d0 100644
--- a/runtime/doc/usr_21.txt
+++ b/runtime/doc/usr_21.txt
@@ -70,9 +70,7 @@ difference. Without it executes the program normally, with the range a number
of text lines is filtered through the program.
Executing a whole row of programs this way is possible. But a shell is much
-better at it. You can start a new shell this way: >
-
- :shell
+better at it. You can start a new shell with |:terminal|.
This is similar to using CTRL-Z to suspend Vim. The difference is that a new
shell is started.
diff --git a/runtime/doc/usr_23.txt b/runtime/doc/usr_23.txt
index bdb3b7afd6..4761203512 100644
--- a/runtime/doc/usr_23.txt
+++ b/runtime/doc/usr_23.txt
@@ -25,7 +25,7 @@ Back in the early days, the old Teletype machines used two characters to
start a new line. One to move the carriage back to the first position
(carriage return, <CR>), another to move the paper up (line feed, <LF>).
When computers came out, storage was expensive. Some people decided that
-they did not need two characters for end-of-line. The UNIX people decided
+they did not need two characters for end-of-line. The Unix people decided
they could use <Line Feed> only for end-of-line. The Apple people
standardized on <CR>. The MS-DOS (and Microsoft Windows) folks decided to
keep the old <CR><LF>.
@@ -34,7 +34,7 @@ have line-break problems. The Vim editor automatically recognizes the
different file formats and handles things properly behind your back.
The option 'fileformats' contains the various formats that will be tried
when a new file is edited. The following command, for example, tells Vim to
-try UNIX format first and MS-DOS format second: >
+try Unix format first and MS-DOS format second: >
:set fileformats=unix,dos
@@ -97,12 +97,12 @@ CONVERSION
You can use the 'fileformat' option to convert from one file format to
another. Suppose, for example, that you have an MS-DOS file named README.TXT
-that you want to convert to UNIX format. Start by editing the MS-DOS format
+that you want to convert to Unix format. Start by editing the MS-DOS format
file: >
vim README.TXT
Vim will recognize this as a dos format file. Now change the file format to
-UNIX: >
+Unix: >
:set fileformat=unix
:write
diff --git a/runtime/doc/usr_24.txt b/runtime/doc/usr_24.txt
index 46a22c683c..ba9d083fe0 100644
--- a/runtime/doc/usr_24.txt
+++ b/runtime/doc/usr_24.txt
@@ -563,9 +563,9 @@ that combination. Thus CTRL-K dP also works. Since there is no digraph for
"dP" Vim will also search for a "Pd" digraph.
Note:
- The digraphs depend on the character set that Vim assumes you are
- using. On MS-DOS they are different from MS-Windows. Always use
- ":digraphs" to find out which digraphs are currently available.
+ The digraphs depend on the character set that Vim assumes you
+ are using. Always use ":digraphs" to find out which digraphs are
+ currently available.
You can define your own digraphs. Example: >
diff --git a/runtime/doc/usr_27.txt b/runtime/doc/usr_27.txt
index fb096593f2..d837610698 100644
--- a/runtime/doc/usr_27.txt
+++ b/runtime/doc/usr_27.txt
@@ -83,7 +83,7 @@ matter if 'ignorecase' or 'smartcase' was changed.
Note:
If your search takes much longer than you expected, you can interrupt
- it with CTRL-C on Unix and CTRL-Break on MS-DOS and MS-Windows.
+ it with CTRL-C on Unix and CTRL-Break on Windows.
==============================================================================
*27.2* Wrapping around the file end
diff --git a/runtime/doc/usr_29.txt b/runtime/doc/usr_29.txt
index 22de2f6ce6..e495aad06d 100644
--- a/runtime/doc/usr_29.txt
+++ b/runtime/doc/usr_29.txt
@@ -255,7 +255,8 @@ function.
RELATED ITEMS
-You can set 'ignorecase' to make case in tag names be ignored.
+To make case in tag names be ignored, you can set 'ignorecase' while leaving
+'tagcase' as "followic", or set 'tagcase' to "ignore".
The 'tagbsearch' option tells if the tags file is sorted or not. The default
is to assume a sorted tags file, which makes a tags search a lot faster, but
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 705702c083..fc8419a522 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1,4 +1,4 @@
-*usr_41.txt* For Vim version 7.4. Last change: 2014 Aug 16
+*usr_41.txt* For Vim version 7.4. Last change: 2015 Nov 30
VIM USER MANUAL - by Bram Moolenaar
@@ -888,6 +888,11 @@ Mappings: *mapping-functions*
maparg() get rhs of a mapping
wildmenumode() check if the wildmode is active
+Testing: *test-functions*
+ assert_equal() assert that two expressions values are equal
+ assert_false() assert that an expression is false
+ assert_true() assert that an expression is true
+
Various: *various-functions*
mode() get current editing mode
visualmode() last visual mode used
@@ -916,6 +921,7 @@ Various: *various-functions*
py3eval() evaluate Python expression (|+python3|)
pyeval() evaluate Python expression (|+python|)
+ wordcount() get byte/word/char count of buffer
==============================================================================
*41.7* Defining a function
@@ -1494,8 +1500,8 @@ Here is a summary of items that apply to Vim scripts. They are also mentioned
elsewhere, but form a nice checklist.
The end-of-line character depends on the system. For Unix a single <NL>
-character is used. For MS-DOS, Windows and the like, <CR><LF> is used.
-This is important when using mappings that end in a <CR>. See |:source_crnl|.
+character is used. For Windows <CR><LF> is used. This is important when
+using mappings that end in a <CR>. See |:source_crnl|.
WHITE SPACE
@@ -2465,8 +2471,6 @@ utility is recommended.
For utmost portability use Vim itself to pack scripts together. This can be
done with the Vimball utility. See |vimball|.
-It's good if you add a line to allow automatic updating. See |glvs-plugins|.
-
==============================================================================
Next chapter: |usr_42.txt| Add new menus
diff --git a/runtime/doc/usr_43.txt b/runtime/doc/usr_43.txt
index e61e6af660..bab446af3c 100644
--- a/runtime/doc/usr_43.txt
+++ b/runtime/doc/usr_43.txt
@@ -1,4 +1,4 @@
-*usr_43.txt* For Vim version 7.4. Last change: 2008 Dec 28
+*usr_43.txt* For Vim version 7.4. Last change: 2015 Oct 23
VIM USER MANUAL - by Bram Moolenaar
@@ -45,6 +45,7 @@ three-line comment. You do this with only two steps:
setlocal softtabstop=4
noremap <buffer> <LocalLeader>c o/**************<CR><CR>/<Esc>
+ let b:undo_ftplugin = "setl softtabstop< | unmap <buffer> <LocalLeader>c"
Try editing a C file. You should notice that the 'softtabstop' option is set
to 4. But when you edit another file it's reset to the default zero. That is
@@ -59,6 +60,11 @@ buffer. This works with any mapping command: ":map!", ":vmap", etc. The
|<LocalLeader>| in the mapping is replaced with the value of the
"maplocalleader" variable.
+The line to set b:undo_ftplugin is for when the filetype is set to another
+value. In that case you will want to undo your preferences. The
+b:undo_ftplugin variable is executed as a command. Watch out for characters
+with a special meaning inside a string, such as a backslash.
+
You can find examples for filetype plugins in this directory: >
$VIMRUNTIME/ftplugin/
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index d34c0516e2..af4224993f 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt* For Vim version 7.4. Last change: 2014 Aug 06
+*various.txt* For Vim version 7.4. Last change: 2015 Nov 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -212,7 +212,7 @@ g8 Print the hex values of the bytes used in the
equivalent to: >
:enew
- :call termopen([&sh, &shcf, '{cmd}'])
+ :call termopen('{cmd}')
:startinsert
<
If no {cmd} is given, 'shellcmdflag' will not be sent
@@ -222,6 +222,10 @@ g8 Print the hex values of the bytes used in the
modified, but can be forced with "!". See |termopen()|
and |nvim-terminal-emulator| for more information.
+ To switch to terminal mode automatically:
+>
+ autocmd BufEnter term://* startinsert
+<
*:!cmd* *:!* *E34*
:!{cmd} Execute {cmd} with 'shell'. See also |:terminal|.
@@ -272,19 +276,15 @@ g8 Print the hex values of the bytes used in the
:!! Repeat last ":!{cmd}".
*:ve* *:version*
-:ve[rsion] Print the version number of the editor. If the
- compiler used understands "__DATE__" the compilation
- date is mentioned. Otherwise a fixed release-date is
- shown.
- The following lines contain information about which
- features were enabled when Vim was compiled. When
- there is a preceding '+', the feature is included,
- when there is a '-' it is excluded. To change this,
- you have to edit feature.h and recompile Vim.
- To check for this in an expression, see |has()|.
- Here is an overview of the features.
- The first column shows the smallest version in which
- they are included:
+:ve[rsion] Print the version number of the editor. The following
+ lines contain information about which features were
+ enabled when Vim was compiled. When there is a
+ preceding '+', the feature is included, when there is
+ a '-' it is excluded. To change this, you have to
+ edit feature.h and recompile Vim. To check for this
+ in an expression, see |has()|. Here is an overview of
+ the features. The first column shows the smallest
+ version in which they are included:
T tiny
S small
N normal
@@ -299,9 +299,6 @@ g8 Print the hex values of the bytes used in the
*+acl* |ACL| support included
B *+arabic* |Arabic| language support
N *+autocmd* |:autocmd|, automatic commands
-m *+balloon_eval* |balloon-eval| support. Included when compiling with
- supported GUI (Motif, GTK, GUI) and either
- Netbeans/Sun Workshop integration or |+eval| feature.
N *+browse* |:browse| command
N *+byte_offset* support for 'o' flag in 'statusline' option, "go"
and ":goto" commands.
@@ -321,7 +318,6 @@ N *+dialog_gui* Support for |:confirm| with GUI dialog.
N *+dialog_con* Support for |:confirm| with console dialog.
N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog.
N *+digraphs* |digraphs| *E196*
- *+dnd* Support for DnD into the "~ register |quote_~|.
N *+eval* expression evaluation |eval.txt|
N *+ex_extra* Vim's extra Ex commands: |:center|, |:left|,
|:normal|, |:retab| and |:right|
@@ -331,13 +327,7 @@ N *+file_in_path* |gf|, |CTRL-W_f| and |<cfile>|
N *+find_in_path* include file searches: |[I|, |:isearch|,
|CTRL-W_CTRL-I|, |:checkpath|, etc.
N *+folding* |folding|
- *+footer* |gui-footer|
- *+fork* Unix only: |fork| shell commands
N *+gettext* message translations |multi-lang|
- *+GUI_Athena* Unix only: Athena |GUI|
- *+GUI_neXtaw* Unix only: neXtaw |GUI|
- *+GUI_GTK* Unix only: GTK+ |GUI|
- *+GUI_Motif* Unix only: Motif |GUI|
*+iconv* Compiled with the |iconv()| function
*+iconv/dyn* Likewise |iconv-dynamic| |/dyn|
N *+insert_expand* |insert_expand| Insert mode completion
@@ -377,10 +367,11 @@ N *+startuptime* |--startuptime| argument
N *+statusline* Options 'statusline', 'rulerformat' and special
formats of 'titlestring' and 'iconstring'
N *+syntax* Syntax highlighting |syntax|
- *+system()* Unix only: opposite of |+fork|
+N *+tablineat* 'tabline' option recognizing %@Func@ items.
N *+tag_binary* binary searching in tags file |tag-binary-search|
N *+tag_old_static* old method for static tags |tag-old-static|
m *+tag_any_white* any white space allowed in tags file |tag-any-white|
+B *+termguicolors* 24-bit color in xterm-compatible terminals support
*+terminfo* uses |terminfo| instead of termcap
N *+termresponse* support for |t_RV| and |v:termresponse|
N *+textobjects* |text-objects| selection
@@ -578,17 +569,11 @@ which it was defined is reported.
:5sleep "sleep for five seconds
:sleep 100m "sleep for a hundred milliseconds
10gs "sleep for ten seconds
-< Can be interrupted with CTRL-C (CTRL-Break on MS-DOS).
+< Can be interrupted with CTRL-C (CTRL-Break on Windows).
"gs" stands for "goto sleep".
While sleeping the cursor is positioned in the text,
if at a visible position.
-
- *g_CTRL-A*
-g CTRL-A Only when Vim was compiled with MEM_PROFILING defined
- (which is very rare): print memory usage statistics.
- Only useful for debugging Vim.
-
==============================================================================
2. Using Vim like less or more *less*
@@ -606,4 +591,12 @@ highlighting.
The "h" key will give you a short overview of the available commands.
+If you want to set options differently when using less, define the
+LessInitFunc in your vimrc, for example: >
+
+ func LessInitFunc()
+ set nocursorcolumn nocursorline
+ endfunc
+<
+
vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/vi_diff.txt b/runtime/doc/vi_diff.txt
index e76c0163b5..ec35694c9e 100644
--- a/runtime/doc/vi_diff.txt
+++ b/runtime/doc/vi_diff.txt
@@ -1,4 +1,4 @@
-*vi_diff.txt* For Vim version 7.4. Last change: 2013 Aug 22
+*vi_diff.txt* For Vim version 7.4. Last change: 2015 Nov 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -6,63 +6,14 @@
Differences between Vim and Vi *vi-differences*
-Throughout the help files differences between Vim and Vi/Ex are given in
-curly braces, like "{not in Vi}". This file only lists what has not been
-mentioned in other files and gives an overview.
-
-1. Simulated command |simulated-command|
-2. Missing options |missing-options|
-3. Limits |limits|
-4. The most interesting additions |vim-additions|
-5. Other vim features |other-features|
-6. Command-line arguments |cmdline-arguments|
+1. Limits |limits|
+2. The most interesting additions |vim-additions|
==============================================================================
-1. Simulated command *simulated-command*
-
-This command is in Vi, but Vim only simulates it:
-
- *:o* *:op* *:open*
-:[range]o[pen] Works like |:visual|: end Ex mode.
- {Vi: start editing in open mode}
+1. Limits *limits*
-:[range]o[pen] /pattern/ As above, additionally move the cursor to the
- column where "pattern" matches in the cursor
- line.
-
-Vim does not support open mode, since it's not really useful. For those
-situations where ":open" would start open mode Vim will leave Ex mode, which
-allows executing the same commands, but updates the whole screen instead of
-only one line.
-
-==============================================================================
-2. Missing options *missing-options*
-
-These options are in the Unix Vi, but not in Vim.
-
-autoprint (ap) boolean (default on) *'autoprint'* *'ap'*
-beautify (bf) boolean (default off) *'beautify'* *'bf'*
-flash (fl) boolean (default ??) *'flash'* *'fl'*
-graphic (gr) boolean (default off) *'graphic'* *'gr'*
-hardtabs (ht) number (default 8) *'hardtabs'* *'ht'*
- number of spaces that a <Tab> moves on the display
-mesg boolean (default on) *'mesg'*
-novice boolean (default off) *'novice'*
-open boolean (default on) *'open'*
-optimize (op) boolean (default off) *'optimize'* *'op'*
-redraw boolean (default off) *'redraw'*
-slowopen (slow) boolean (default off) *'slowopen'* *'slow'*
-sourceany boolean (default off) *'sourceany'*
-w300 number (default 23) *'w300'*
-w1200 number (default 23) *'w1200'*
-w9600 number (default 23) *'w9600'*
+Vim has only a few limits for the files that can be edited.
-==============================================================================
-3. Limits *limits*
-
-Vim has only a few limits for the files that can be edited {Vi: can not handle
-<Nul> characters and characters above 128, has limited line length, many other
-limits}.
*E340*
Maximum line length 2147483647 characters
Maximum number of lines 2147483647 lines
@@ -93,8 +44,7 @@ Memory usage limits
The option 'maxmem' ('mm') is used to set the maximum memory used for one
buffer (in kilobytes). 'maxmemtot' is used to set the maximum memory used for
-all buffers (in kilobytes). The defaults depend on the system used. For
-MS-DOS, 'maxmemtot' is set depending on the amount of memory available.
+all buffers (in kilobytes). The defaults depend on the system used.
These are not hard limits, but tell Vim when to move text into a swap file.
If you don't like Vim to swap to a file, set 'maxmem' and 'maxmemtot' to a
very large value. The swap file will then only be used for recovery. If you
@@ -102,33 +52,13 @@ don't want a swap file at all, set 'updatecount' to 0, or use the "-n"
argument when starting Vim.
==============================================================================
-4. The most interesting additions *vim-additions*
-
-Vi compatibility. |'compatible'|
- Although Vim is 99% Vi compatible, some things in Vi can be
- considered to be a bug, or at least need improvement. But still, Vim
- starts in a mode which behaves like the "real" Vi as much as possible.
- To make Vim behave a little bit better, try resetting the 'compatible'
- option:
- :set nocompatible
- Or start Vim with the "-N" argument:
- vim -N
- Vim starts with 'nocompatible' automatically if you have a .vimrc
- file. See |startup|.
- The 'cpoptions' option can be used to set Vi compatibility on/off for
- a number of specific items.
+2. The most interesting additions *vim-additions*
Support for different systems.
Vim can be used on:
- - All Unix systems (it works on all systems it was tested on, although
- the GUI and Perl interface may not work everywhere).
- - MS-DOS in real-mode (no additional drivers required).
- - In protected mode on Windows 3.1 and MS-DOS (DPMI driver required).
- - Windows 95 and Windows NT, with support for long file names.
- - Macintosh
- Note that on some systems features need to be disabled to reduce
- resource usage, esp. on MS-DOS. For some outdated systems you need to
- use an older Vim version.
+ - Modern Unix systems (*BSD, Linux, etc.)
+ - Windows (XP SP 2 or greater)
+ - OS X
Multi level undo. |undo|
'u' goes backward in time, 'CTRL-R' goes forward again. Set option
@@ -146,8 +76,7 @@ Graphical User Interface (GUI). |gui|
Included support for GUI: menu's, mouse, scrollbars, etc. You can
define your own menus. Better support for CTRL/SHIFT/ALT keys in
combination with special keys and mouse. Supported for various
- platforms, such as X11 (with Motif and Athena interfaces), GTK, Win32
- (Windows 95 and later), and Macintosh.
+ platforms such as Win32.
Multiple windows and buffers. |windows.txt|
Vim can split the screen into several windows, each editing a
@@ -410,9 +339,8 @@ Printing. |printing|
Mouse support. |mouse-using|
The mouse is supported in the GUI version, in an xterm for Unix, for
- BSDs with sysmouse, for Linux with gpm, for MS-DOS, and Win32. It
- can be used to position the cursor, select the visual area, paste a
- register, etc.
+ BSDs with sysmouse, for Linux with gpm, and for Win32. It can be used
+ to position the cursor, select the visual area, paste a register, etc.
Usage of key names. |<>| |key-notation|
Special keys now all have a name like <Up>, <End>, etc.
@@ -437,482 +365,5 @@ Move cursor beyond lines.
screen, also where there is no text. This is useful to edit tables
and figures easily.
-==============================================================================
-5. Other vim features *other-features*
-
-A random collection of nice extra features.
-
-
-When Vim is started with "-s scriptfile", the characters read from
-"scriptfile" are treated as if you typed them. If end of file is reached
-before the editor exits, further characters are read from the console.
-
-The "-w" option can be used to record all typed characters in a script file.
-This file can then be used to redo the editing, possibly on another file or
-after changing some commands in the script file.
-
-The "-o" option opens a window for each argument. "-o4" opens four windows.
-
-Vi requires several termcap entries to be able to work full-screen. Vim only
-requires the "cm" entry (cursor motion).
-
-
-In command mode:
-
-When the 'showcmd' option is set, the command characters are shown in the last
-line of the screen. They are removed when the command is finished.
-
-If the 'ruler' option is set, the current cursor position is shown in the
-last line of the screen.
-
-"U" still works after having moved off the last changed line and after "u".
-
-Characters with the 8th bit set are displayed. The characters between '~' and
-0xa0 are displayed as "~?", "~@", "~A", etc., unless they are included in the
-'isprint' option.
-
-"][" goes to the next ending of a C function ('}' in column 1).
-"[]" goes to the previous ending of a C function ('}' in column 1).
-
-"]f", "[f" and "gf" start editing the file whose name is under the cursor.
-CTRL-W f splits the window and starts editing the file whose name is under
-the cursor.
-
-"*" searches forward for the identifier under the cursor, "#" backward.
-"K" runs the program defined by the 'keywordprg' option, with the identifier
-under the cursor as argument.
-
-"%" can be preceded with a count. The cursor jumps to the line that
-percentage down in the file. The normal "%" function to jump to the matching
-brace skips braces inside quotes.
-
-With the CTRL-] command, the cursor may be in the middle of the identifier.
-
-The used tags are remembered. Commands that can be used with the tag stack
-are CTRL-T, ":pop" and ":tag". ":tags" lists the tag stack.
-
-The 'tags' option can be set to a list of tag file names. Thus multiple
-tag files can be used. For file names that start with "./", the "./" is
-replaced with the path of the current file. This makes it possible to use a
-tags file in the same directory as the file being edited.
-
-Previously used file names are remembered in the alternate file name list.
-CTRL-^ accepts a count, which is an index in this list.
-":files" command shows the list of alternate file names.
-"#<N>" is replaced with the <N>th alternate file name in the list.
-"#<" is replaced with the current file name without extension.
-
-Search patterns have more features. The <NL> character is seen as part of the
-search pattern and the substitute string of ":s". Vi sees it as the end of
-the command.
-
-Searches can put the cursor on the end of a match and may include a character
-offset.
-
-Count added to "~", ":next", ":Next", "n" and "N".
-
-The command ":next!" with 'autowrite' set does not write the file. In vi the
-file was written, but this is considered to be a bug, because one does not
-expect it and the file is not written with ":rewind!".
-
-In Vi when entering a <CR> in replace mode deletes a character only when 'ai'
-is set (but does not show it until you hit <Esc>). Vim always deletes a
-character (and shows it immediately).
-
-Added :wnext command. Same as ":write" followed by ":next".
-
-The ":w!" command always writes, also when the file is write protected. In Vi
-you would have to do ":!chmod +w %:S" and ":set noro".
-
-When 'tildeop' has been set, "~" is an operator (must be followed by a
-movement command).
-
-With the "J" (join) command you can reset the 'joinspaces' option to have only
-one space after a period (Vi inserts two spaces).
-
-"cw" can be used to change white space formed by several characters (Vi is
-confusing: "cw" only changes one space, while "dw" deletes all white space).
-
-"o" and "O" accept a count for repeating the insert (Vi clears a part of
-display).
-
-Flags after Ex commands not supported (no plans to include it).
-
-On non-UNIX systems ":cd" command shows current directory instead of going to
-the home directory (there isn't one). ":pwd" prints the current directory on
-all systems.
-
-After a ":cd" command the file names (in the argument list, opened files)
-still point to the same files. In Vi ":cd" is not allowed in a changed file;
-otherwise the meaning of file names change.
-
-":source!" command reads Vi commands from a file.
-
-":mkexrc" command writes current modified options and mappings to a ".exrc"
-file. ":mkvimrc" writes to a ".vimrc" file.
-
-No check for "tail recursion" with mappings. This allows things like
-":map! foo ^]foo".
-
-When a mapping starts with number, vi loses the count typed before it (e.g.
-when using the mapping ":map g 4G" the command "7g" goes to line 4). This is
-considered a vi bug. Vim concatenates the counts (in the example it becomes
-"74G"), as most people would expect.
-
-The :put! command inserts the contents of a register above the current line.
-
-The "p" and "P" commands of vi cannot be repeated with "." when the putted
-text is less than a line. In Vim they can always be repeated.
-
-":noremap" command can be used to enter a mapping that will not be remapped.
-This is useful to exchange the meaning of two keys. ":cmap", ":cunmap" and
-":cnoremap" can be used for mapping in command-line editing only. ":imap",
-":iunmap" and ":inoremap" can be used for mapping in insert mode only.
-Similar commands exist for abbreviations: ":noreabbrev", ":iabbrev"
-":cabbrev", ":iunabbrev", ":cunabbrev", ":inoreabbrev", ":cnoreabbrev".
-
-In Vi the command ":map foo bar" would remove a previous mapping
-":map bug foo". This is considered a bug, so it is not included in Vim.
-":unmap! foo" does remove ":map! bug foo", because unmapping would be very
-difficult otherwise (this is vi compatible).
-
-The ':' register contains the last command-line.
-The '%' register contains the current file name.
-The '.' register contains the last inserted text.
-
-":dis" command shows the contents of the yank registers.
-
-CTRL-O/CTRL-I can be used to jump to older/newer positions. These are the
-same positions as used with the '' command, but may be in another file. The
-":jumps" command lists the older positions.
-
-If the 'shiftround' option is set, an indent is rounded to a multiple of
-'shiftwidth' with ">" and "<" commands.
-
-The 'scrolljump' option can be set to the minimum number of lines to scroll
-when the cursor gets off the screen. Use this when scrolling is slow.
-
-The 'scrolloff' option can be set to the minimum number of lines to keep
-above and below the cursor. This gives some context to where you are
-editing. When set to a large number the cursor line is always in the middle
-of the window.
-
-Uppercase marks can be used to jump between files. The ":marks" command lists
-all currently set marks. The commands "']" and "`]" jump to the end of the
-previous operator or end of the text inserted with the put command. "'[" and
-"`[" do jump to the start.
-
-The 'highlight' option can be set for the highlight mode to be used for
-several commands.
-
-The CTRL-A (add) and CTRL-X (subtract) commands are new. The count to the
-command (default 1) is added to/subtracted from the number at or after the
-cursor. That number may be decimal, octal (starts with a '0') or hexadecimal
-(starts with '0x'). Very useful in macros.
-
-With the :set command the prefix "inv" can be used to invert boolean options.
-
-In both Vi and Vim you can create a line break with the ":substitute" command
-by using a CTRL-M. For Vi this means you cannot insert a real CTRL-M in the
-text. With Vim you can put a real CTRL-M in the text by preceding it with a
-CTRL-V.
-
-
-In Insert mode:
-
-If the 'revins' option is set, insert happens backwards. This is for typing
-Hebrew. When inserting normal characters the cursor will not be shifted and
-the text moves rightwards. Backspace, CTRL-W and CTRL-U will also work in
-the opposite direction. CTRL-B toggles the 'revins' option. In replace mode
-'revins' has no effect. Only when enabled at compile time.
-
-The backspace key can be used just like CTRL-D to remove auto-indents.
-
-You can backspace, CTRL-U and CTRL-W over line breaks if the 'backspace' (bs)
-option includes "eol". You can backspace over the start of insert if the
-'backspace' option includes "start".
-
-When the 'paste' option is set, a few options are reset and mapping in insert
-mode and abbreviation are disabled. This allows for pasting text in windowing
-systems without unexpected results. When the 'paste' option is reset, the old
-option values are restored.
-
-CTRL-T/CTRL-D always insert/delete an indent in the current line, no matter
-what column the cursor is in.
-
-CTRL-@ (insert previously inserted text) works always (Vi: only when typed as
-first character).
-
-CTRL-A works like CTRL-@ but does not leave insert mode.
-
-CTRL-R {0-9a-z..} can be used to insert the contents of a register.
-
-When the 'smartindent' option is set, C programs will be better auto-indented.
-With 'cindent' even more.
-
-CTRL-Y and CTRL-E can be used to copy a character from above/below the
-current cursor position.
-
-After CTRL-V you can enter a three digit decimal number. This byte value is
-inserted in the text as a single character. Useful for international
-characters that are not on your keyboard.
-
-When the 'expandtab' (et) option is set, a <Tab> is expanded to the
-appropriate number of spaces.
-
-The window always reflects the contents of the buffer (Vi does not do this
-when changing text and in some other cases).
-
-If Vim is compiled with DIGRAPHS defined, digraphs are supported. A set of
-normal digraphs is included. They are shown with the ":digraph" command.
-More can be added with ":digraph {char1}{char2} {number}". A digraph is
-entered with "CTRL-K {char1} {char2}" or "{char1} BS {char2}" (only when
-'digraph' option is set).
-
-When repeating an insert, e.g. "10atest <Esc>" vi would only handle wrapmargin
-for the first insert. Vim does it for all.
-
-A count to the "i" or "a" command is used for all the text. Vi uses the count
-only for one line. "3iabc<NL>def<Esc>" would insert "abcabcabc<NL>def" in Vi
-but "abc<NL>defabc<NL>defabc<NL>def" in Vim.
-
-
-In Command-line mode:
-
-<Esc> terminates the command-line without executing it. In vi the command
-line would be executed, which is not what most people expect (hitting <Esc>
-should always get you back to command mode). To avoid problems with some
-obscure macros, an <Esc> in a macro will execute the command. If you want a
-typed <Esc> to execute the command like vi does you can fix this with
- ":cmap ^V<Esc> ^V<CR>"
-
-General:
-
-The 'ttimeout' option is like 'timeout', but only works for cursor and
-function keys, not for ordinary mapped characters. The 'timeoutlen' option
-gives the number of milliseconds that is waited for. If the 'esckeys' option
-is not set, cursor and function keys that start with <Esc> are not recognized
-in insert mode.
-
-There is an option for each terminal string. Can be used when termcap is not
-supported or to change individual strings.
-
-The 'fileformat' option can be set to select the <EOL>: "dos" <CR><NL>, "unix"
-<NL> or "mac" <CR>.
-When the 'fileformats' option is not empty, Vim tries to detect the type of
-<EOL> automatically. The 'fileformat' option is set accordingly.
-
-On systems that have no job control (older Unix systems and non-Unix systems)
-the CTRL-Z, ":stop" or ":suspend" command starts a new shell.
-
-The 'columns' and 'lines' options are used to set or get the width and height
-of the display.
-
-Option settings are read from the first and last few lines of the file.
-Option 'modelines' determines how many lines are tried (default is 5). Note
-that this is different from the Vi versions that can execute any Ex command
-in a modeline (a major security problem). |trojan-horse|
-
-If the 'insertmode' option is set (e.g. in .exrc), Vim starts in insert mode.
-And it comes back there, when pressing <Esc>.
-
-Undo information is kept in memory. Available memory limits the number and
-size of change that can be undone. This may be a problem with MS-DOS, but is
-almost never one with Unix and Win32.
-
-If the 'backup' or 'writebackup' option is set: Before a file is overwritten,
-a backup file (.bak) is made. If the "backup" option is set it is left
-behind.
-
-Vim creates a file ending in ".swp" to store parts of the file that have been
-changed or that do not fit in memory. This file can be used to recover from
-an aborted editing session with "vim -r file". Using the swap file can be
-switched off by setting the 'updatecount' option to 0 or starting Vim with
-the "-n" option. Use the 'directory' option for placing the .swp file
-somewhere else.
-
-Error messages are shown at least one second (Vi overwrites error messages).
-
-If Vim gives the |hit-enter| prompt, you can hit any key. Characters other
-than <CR>, <NL> and <Space> are interpreted as the (start of) a command. (Vi
-only accepts a command starting with ':').
-
-The contents of the numbered and unnamed registers is remembered when
-changing files.
-
-The "No lines in buffer" message is a normal message instead of an error
-message, since that may cause a mapping to be aborted.
-
-==============================================================================
-6. Command-line arguments *cmdline-arguments*
-
-Different versions of Vi have different command-line arguments. This can be
-confusing. To help you, this section gives an overview of the differences.
-
-Five variants of Vi will be considered here:
- Elvis Elvis version 2.1b
- Nvi Nvi version 1.79
- Posix Posix 1003.2
- Vi Vi version 3.7 (for Sun 4.1.x)
- Vile Vile version 7.4 (incomplete)
- Vim Vim version 5.2
-
-Only Vim is able to accept options in between and after the file names.
-
-+{command} Elvis, Nvi, Posix, Vi, Vim: Same as "-c {command}".
-
-- Nvi, Posix, Vi: Run Ex in batch mode.
- Vim: Read file from stdin (use -s for batch mode).
-
--- Vim: End of options, only file names are following.
-
---cmd {command} Vim: execute {command} before sourcing vimrc files.
-
---echo-wid Vim: GTK+ echoes the Window ID on stdout
-
---help Vim: show help message and exit.
-
---literal Vim: take file names literally, don't expand wildcards.
-
---nofork Vim: same as -f
-
---noplugin[s] Vim: Skip loading plugins.
-
---remote Vim: edit the files in another Vim server
-
---remote-expr {expr} Vim: evaluate {expr} in another Vim server
-
---remote-send {keys} Vim: send {keys} to a Vim server and exit
-
---remote-silent {file} Vim: edit the files in another Vim server if possible
-
---remote-wait Vim: edit the files in another Vim server and wait for it
-
---remote-wait-silent Vim: like --remote-wait, no complaints if not possible
-
---role {role} Vim: GTK+ 2: set role of main window
-
---serverlist Vim: Output a list of Vim servers and exit
-
---servername {name} Vim: Specify Vim server name
-
---socketid {id} Vim: GTK window socket to run Vim in
-
---windowid {id} Vim: Win32 window ID to run Vim in
-
---version Vim: show version message and exit.
-
--? Vile: print usage summary and exit.
-
--a Elvis: Load all specified file names into a window (use -o for
- Vim).
-
--A Vim: Start in Arabic mode (when compiled with Arabic).
-
--b {blksize} Elvis: Use {blksize} blocksize for the session file.
--b Vim: set 'binary' mode.
-
--C Vim: Compatible mode.
-
--c {command} Elvis, Nvi, Posix, Vim: run {command} as an Ex command after
- loading the edit buffer.
- Vim: allow up to 10 "-c" arguments
-
--d Vim: start with 'diff' set. |diff-mode|
-
--D Vim: debug mode.
-
--e Elvis, Nvi, Vim: Start in Ex mode.
-
--E Vim: Start in improved Ex mode |gQ|.
-
--f Vim: Run GUI in foreground.
--f {session} Elvis: Use {session} as the session file.
-
--F Vim: Start in Farsi mode (when compiled with Farsi).
- Nvi: Fast start, don't read the entire file when editing
- starts.
-
--G {gui} Elvis: Use the {gui} as user interface.
-
--g Vim: Start GUI.
--g N Vile: start editing at line N
-
--h Vim: Give help message.
- Vile: edit the help file
-
--H Vim: start Hebrew mode (when compiled with it).
-
--i Elvis: Start each window in Insert mode.
--i {viminfo} Vim: Use {viminfo} for viminfo file.
-
--L Vim: Same as "-r" (also in some versions of Vi).
-
--l Nvi, Vi, Vim: Set 'lisp' and 'showmatch' options.
-
--m Vim: Modifications not allowed to be written, resets 'write'
- option.
-
--M Vim: Modifications not allowed, resets 'modifiable' and the
- 'write' option.
-
--N Vim: No-compatible mode.
-
--n Vim: No swap file used.
-
--nb[args] Vim: open a NetBeans interface connection
-
--O[N] Vim: Like -o, but use vertically split windows.
-
--o[N] Vim: Open [N] windows, or one for each file.
-
--p[N] Vim: Open [N] tab pages, or one for each file.
-
--P {parent-title} Win32 Vim: open Vim inside a parent application window
-
--q {name} Vim: Use {name} for quickfix error file.
--q{name} Vim: Idem.
-
--R Elvis, Nvi, Posix, Vile, Vim: Set the 'readonly' option.
-
--r Elvis, Nvi, Posix, Vi, Vim: Recovery mode.
-
--S Nvi: Set 'secure' option.
--S {script} Vim: source script after starting up.
-
--s Nvi, Posix, Vim: Same as "-" (silent mode), when in Ex mode.
- Elvis: Sets the 'safer' option.
--s {scriptin} Vim: Read from script file {scriptin}; only when not in Ex
- mode.
--s {pattern} Vile: search for {pattern}
-
--t {tag} Elvis, Nvi, Posix, Vi, Vim: Edit the file containing {tag}.
--t{tag} Vim: Idem.
-
--T {term} Vim: Set terminal name to {term}.
-
--u {vimrc} Vim: Read initializations from {vimrc} file.
-
--U {gvimrc} Vim: Read GUI initializations from {gvimrc} file.
-
--v Nvi, Posix, Vi, Vim: Begin in Normal mode (visual mode, in Vi
- terms).
- Vile: View mode, no changes possible.
-
--V Elvis, Vim: Verbose mode.
--V{nr} Vim: Verbose mode with specified level.
-
--w {size} Elvis, Posix, Nvi, Vi, Vim: Set value of 'window' to {size}.
--w{size} Nvi, Vi: Same as "-w {size}".
--w {name} Vim: Write to script file {name} (must start with non-digit).
-
--W {name} Vim: Append to script file {name}.
-
--X Vim: Don't connect to the X server.
-
--Z Vim: restricted mode
-
-@{cmdfile} Vile: use {cmdfile} as startup file.
-
vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt
index 6124c36dc9..508712ca75 100644
--- a/runtime/doc/vim_diff.txt
+++ b/runtime/doc/vim_diff.txt
@@ -11,7 +11,7 @@ the "{Nvim}" tag. This document is a complete and centralized list of all
these differences.
1. Configuration |nvim-configuration|
-2. Option defaults |nvim-option-defaults|
+2. Defaults |nvim-defaults|
3. Changed features |nvim-features-changed|
4. New features |nvim-features-new|
5. Missing legacy features |nvim-features-missing|
@@ -21,14 +21,17 @@ these differences.
==============================================================================
1. Configuration *nvim-configuration*
-- Use `$XDG_CONFIG_HOME/nvim/init.vim` instead of `.vimrc` for storing
+- Use `$XDG_CONFIG_HOME/nvim/init.vim` instead of `.vimrc` for storing
configuration.
- Use `$XDG_CONFIG_HOME/nvim` instead of `.vim` to store configuration files.
-- Use `$XDG_DATA_HOME/shada/main.shada` instead of `.viminfo` for persistent
+- Use `$XDG_DATA_HOME/nvim/shada/main.shada` instead of `.viminfo` for persistent
session information.
==============================================================================
-2. Option defaults *nvim-option-defaults*
+2. Defaults *nvim-defaults*
+
+- Syntax highlighting is enabled by default
+- ":filetype plugin indent on" is enabled by default
- 'autoindent' is set by default
- 'autoread' is set by default
@@ -45,7 +48,7 @@ these differences.
- 'listchars' defaults to "tab:> ,trail:-,nbsp:+"
- 'mouse' defaults to "a"
- 'nocompatible' is always set
-- 'nrformats' defaults to "hex"
+- 'nrformats' defaults to "bin,hex"
- 'sessionoptions' doesn't include "options"
- 'smarttab' is set by default
- 'tabpagemax' defaults to 50
@@ -68,54 +71,74 @@ are always available and may be used simultaneously in separate plugins. The
|nvim-python|).
|mkdir()| behaviour changed:
-1. Assuming /tmp/foo does not exist and /tmp can be written to
+1. Assuming /tmp/foo does not exist and /tmp can be written to
mkdir('/tmp/foo/bar', 'p', 0700) will create both /tmp/foo and /tmp/foo/bar
with 0700 permissions. Vim mkdir will create /tmp/foo with 0755.
-2. If you try to create an existing directory with `'p'` (e.g. mkdir('/',
+2. If you try to create an existing directory with `'p'` (e.g. mkdir('/',
'p')) mkdir() will silently exit. In Vim this was an error.
3. mkdir() error messages now include strerror() text when mkdir fails.
'encoding' cannot be changed after startup.
|string()| and |:echo| behaviour changed:
-1. No maximum recursion depth limit is applied to nested container
+1. No maximum recursion depth limit is applied to nested container
structures.
-2. |string()| fails immediately on nested containers, not when recursion limit
+2. |string()| fails immediately on nested containers, not when recursion limit
was exceeded.
2. When |:echo| encounters duplicate containers like >
let l = []
echo [l, l]
<
- it does not use "[...]" (was: "[[], [...]]", now: "[[], []]"). "..." is
+ it does not use "[...]" (was: "[[], [...]]", now: "[[], []]"). "..." is
only used for recursive containers.
-3. |:echo| printing nested containers adds "@level" after "..." designating
- the level at which recursive container was printed: |:echo-self-refer|.
- Same thing applies to |string()| (though it uses construct like
- "{E724@level}"), but this is not reliable because |string()| continues to
+3. |:echo| printing nested containers adds "@level" after "..." designating
+ the level at which recursive container was printed: |:echo-self-refer|.
+ Same thing applies to |string()| (though it uses construct like
+ "{E724@level}"), but this is not reliable because |string()| continues to
error out.
+4. Stringifyed infinite and NaN values now use |str2float()| and can be evaled
+ back.
+5. (internal) Trying to print or stringify VAR_UNKNOWN in Vim results in
+ nothing, |E908|, in Neovim it is internal error.
+
+|json_decode()| behaviour changed:
+1. It may output |msgpack-special-dict|.
+2. |msgpack-special-dict| is emitted also in case of duplicate keys, while in
+ Vim it errors out.
+3. It accepts only valid JSON. Trailing commas are not accepted.
+
+|json_encode()| behaviour slightly changed: now |msgpack-special-dict| values
+are accepted, but |v:none| is not.
+
+*v:none* variable is absent. In Vim it represents “no value” in “js” strings
+like "[,]" parsed as "[v:none]" by |js_decode()|.
+
+*js_encode()* and *js_decode()* functions are also absent.
-Viminfo text files were replaced with binary (messagepack) ShaDa files.
+Viminfo text files were replaced with binary (messagepack) ShaDa files.
Additional differences:
- |shada-c| has no effect.
- |shada-s| now limits size of every item and not just registers.
-- When reading ShaDa files items are merged according to the timestamp.
+- When reading ShaDa files items are merged according to the timestamp.
|shada-merging|
-- 'viminfo' option got renamed to 'shada'. Old option is kept as an alias for
+- 'viminfo' option got renamed to 'shada'. Old option is kept as an alias for
compatibility reasons.
-- |:wviminfo| was renamed to |:wshada|, |:rviminfo| to |:rshada|. Old
+- |:wviminfo| was renamed to |:wshada|, |:rviminfo| to |:rshada|. Old
commands are still kept.
-- When writing (|:wshada| without bang or at exit) it merges much more data,
- and does this according to the timestamp. Vim merges only marks.
+- |:oldfiles| supports !.
+- When writing (|:wshada| without bang or at exit) it merges much more data,
+ and does this according to the timestamp. Vim merges only marks.
|shada-merging|
-- ShaDa file format was designed with forward and backward compatibility in
+- ShaDa file format was designed with forward and backward compatibility in
mind. |shada-compatibility|
-- Some errors make ShaDa code keep temporary file in-place for user to decide
- what to do with it. Vim deletes temporary file in these cases.
+- Some errors make ShaDa code keep temporary file in-place for user to decide
+ what to do with it. Vim deletes temporary file in these cases.
|shada-error-handling|
-- Vim keeps no timestamps at all, neither in viminfo file nor in the instance
+- Vim keeps no timestamps at all, neither in viminfo file nor in the instance
itself.
+- ShaDa file keeps search direction (|v:searchforward|), viminfo does not.
==============================================================================
4. New Features *nvim-features-new*
@@ -132,8 +155,8 @@ Meta (alt) chords are recognized (even in the terminal).
Note: Meta chords are case-sensitive (<M-a> is distinguished from <M-A>).
-Some `CTRL-SHIFT-...` key chords are distinguished from `CTRL-...` variants (even in
-the terminal). Specifically, the following are known to work:
+Some `CTRL-SHIFT-...` key chords are distinguished from `CTRL-...` variants
+(even in the terminal). Specifically, the following are known to work:
<C-Tab>, <C-S-Tab>
<C-BS>, <C-S-BS>
<C-Enter>, <C-S-Enter>
@@ -142,6 +165,8 @@ Events:
|TabNew|
|TabNewEntered|
|TabClosed|
+ |TermOpen|
+ |TermClose|
Highlight groups:
|hl-EndOfBuffer|
@@ -191,31 +216,43 @@ Highlight groups:
|hl-VisualNOS|
Other options:
+ 'antialias'
'cpoptions' ('g', 'w', 'H', '*', '-', 'j', and all POSIX flags were removed)
'guioptions' (only the 't' flag was removed)
'guipty'
+ 'imactivatefunc'
+ 'imactivatekey'
+ 'imstatusfunc'
'macatsui'
+ 'restorescreen'
'shelltype'
'shortname'
- 'termencoding'
+ 'swapsync'
+ 'term'
+ 'termencoding' (Vim 7.4.852 also removed this for Windows)
'textauto'
'textmode'
'toolbar'
'toolbariconsize'
'ttybuiltin'
'ttymouse'
+ 'ttyscroll'
+ 'ttytype'
'weirdinvert'
Other commands:
:Print
:fixdel
+ :helpfind
:mode (no longer accepts an argument)
+ :open
:shell
:tearoff
Other compile-time features:
EBCDIC
Emacs tags support
+ X11 integration (see |x11-selection|)
Nvim does not have a built-in GUI and hence the following aliases have been
removed: gvim, gex, gview, rgvim, rgview
diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
index 95be125c33..51b73223b6 100644
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt* For Vim version 7.4. Last change: 2014 Dec 05
+*windows.txt* For Vim version 7.4. Last change: 2015 Nov 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -681,7 +681,6 @@ can also get to them with the buffer list commands, like ":bnext".
When using the |:tab| modifier each argument is opened in a
tab page. The last window is used if it's empty.
Also see |++opt| and |+cmd|.
- {only available when compiled with a GUI}
==============================================================================
8. Do a command in all buffers or windows *list-repeat*
@@ -702,11 +701,12 @@ can also get to them with the buffer list commands, like ":bnext".
the current window.
{cmd} can contain '|' to concatenate several commands.
{cmd} must not open or close windows or reorder them.
- Also see |:tabdo|, |:argdo| and |:bufdo|.
+ Also see |:tabdo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|,
+ |:cfdo| and |:lfdo|.
*:bufdo*
:[range]bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list or if
- [range[ is given only for buffers for which their
+ [range] is given only for buffers for which their
buffer name is in the [range]. It works like doing
this: >
:bfirst
@@ -728,7 +728,8 @@ can also get to them with the buffer list commands, like ":bnext".
autocommand event is disabled by adding it to
'eventignore'. This considerably speeds up editing
each buffer.
- Also see |:tabdo|, |:argdo| and |:windo|.
+ Also see |:tabdo|, |:argdo|, |:windo|, |:cdo|, |:ldo|,
+ |:cfdo| and |:lfdo|.
Examples: >
@@ -971,9 +972,10 @@ A buffer can also be unlisted. This means it exists, but it is not in the
list of buffers. |unlisted-buffer|
-:files[!] *:files*
-:buffers[!] *:buffers* *:ls*
-:ls[!] Show all buffers. Example:
+:files[!] [flags] *:files*
+:buffers[!] [flags] *:buffers* *:ls*
+:ls[!] [flags]
+ Show all buffers. Example:
1 #h "/test/text" line 1 ~
2u "asdf" line 0 ~
@@ -983,8 +985,8 @@ list of buffers. |unlisted-buffer|
(the term "unlisted" is a bit confusing then...).
Each buffer has a unique number. That number will not change,
- so you can always go to a specific buffer with ":buffer N" or
- "N CTRL-^", where N is the buffer number.
+ thus you can always go to a specific buffer with ":buffer N"
+ or "N CTRL-^", where N is the buffer number.
Indicators (chars in the same column are mutually exclusive):
u an unlisted buffer (only displayed when [!] is used)
@@ -999,6 +1001,21 @@ list of buffers. |unlisted-buffer|
+ a modified buffer
x a buffer with read errors
+ [flags] can be a combination of the following characters,
+ which restrict the buffers to be listed:
+ + modified buffers
+ - buffers with 'modifiable' off
+ = readonly buffers
+ a active buffers
+ u unlisted buffers (overrides the "!")
+ h hidden buffers
+ x buffers with a read error
+ % current buffer
+ # alternate buffer
+ Combining flags means they are "and"ed together, e.g.:
+ h+ hidden buffers which are modified
+ a+ active buffers which are modified
+
*:bad* *:badd*
:bad[d] [+lnum] {fname}
Add file name {fname} to the buffer list, without loading it.
@@ -1082,13 +1099,13 @@ list of buffers. |unlisted-buffer|
the current buffer remains being edited. See |:buffer-!| for
[!]. This will also edit a buffer that is not in the buffer
list, without setting the 'buflisted' flag.
- Also see ||+cmd|.
+ Also see |+cmd|.
:[N]b[uffer][!] [+cmd] {bufname}
Edit buffer for {bufname} from the buffer list. See
|:buffer-!| for [!]. This will also edit a buffer that is not
in the buffer list, without setting the 'buflisted' flag.
- Also see ||+cmd|.
+ Also see |+cmd|.
:[N]sb[uffer] [+cmd] [N] *:sb* *:sbuffer*
Split window and edit buffer [N] from the buffer list. If [N]
@@ -1096,7 +1113,7 @@ list of buffers. |unlisted-buffer|
"useopen" setting of 'switchbuf' when splitting. This will
also edit a buffer that is not in the buffer list, without
setting the 'buflisted' flag.
- Also see ||+cmd|.
+ Also see |+cmd|.
:[N]sb[uffer] [+cmd] {bufname}
Split window and edit buffer for {bufname} from the buffer
@@ -1105,13 +1122,13 @@ list of buffers. |unlisted-buffer|
Note: If what you want to do is split the buffer, make a copy
under another name, you can do it this way: >
:w foobar | sp #
-< Also see ||+cmd|.
+< Also see |+cmd|.
:[N]bn[ext][!] [+cmd] [N] *:bn* *:bnext* *E87*
Go to [N]th next buffer in buffer list. [N] defaults to one.
Wraps around the end of the buffer list.
See |:buffer-!| for [!].
- Also see ||+cmd|.
+ Also see |+cmd|.
If you are in a help buffer, this takes you to the next help
buffer (if there is one). Similarly, if you are in a normal
(non-help) buffer, this takes you to the next normal buffer.
@@ -1124,21 +1141,21 @@ list of buffers. |unlisted-buffer|
:[N]sbn[ext] [+cmd] [N]
Split window and go to [N]th next buffer in buffer list.
Wraps around the end of the buffer list. Uses 'switchbuf'
- Also see ||+cmd|.
+ Also see |+cmd|.
:[N]bN[ext][!] [+cmd] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88*
:[N]bp[revious][!] [+cmd] [N]
Go to [N]th previous buffer in buffer list. [N] defaults to
one. Wraps around the start of the buffer list.
See |:buffer-!| for [!] and 'switchbuf'.
- Also see ||+cmd|.
+ Also see |+cmd|.
:[N]sbN[ext] [+cmd] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious*
:[N]sbp[revious] [+cmd] [N]
Split window and go to [N]th previous buffer in buffer list.
Wraps around the start of the buffer list.
Uses 'switchbuf'.
- Also see ||+cmd|.
+ Also see |+cmd|.
:br[ewind][!] [+cmd] *:br* *:brewind*
Go to first buffer in buffer list. If the buffer list is