| Return the absolute value of {expr}. When {expr} evaluates to
a Float abs() returns a Float . When {expr} can be
converted to a Number abs() returns a Number . Otherwise
abs() gives an error message and returns -1.
Examples:
|
| Return the arc cosine of {expr} measured in radians, as a
Float in the range of [0, pi].
{expr} must evaluate to a Float or a Number in the range
[-1, 1]. Otherwise acos() returns "nan".
Examples:
|
| Append the item {expr} to List or Blob {object}. Returns
the resulting List or Blob . Examples:
|
| Bitwise AND on the two arguments. The arguments are converted
to a number. A List, Dict or Float argument causes an error.
Also see or() and xor() .
Example:
|
| When {text} is a List : Append each item of the List as a
text line below line {lnum} in the current buffer.
Otherwise append {text} as one text line below line {lnum} in
the current buffer.
Any type of item is accepted and converted to a String.
{lnum} can be zero to insert a line before the first one.
{lnum} is used like with getline() .
Returns 1 for failure ({lnum} out of range or out of memory),
0 for success. When {text} is an empty list zero is returned,
no matter the value of {lnum}.
In Vim9 script an invalid argument or negative number
results in an error. Example:
|
| Like append() but append the text in buffer {buf}.
|
| The result is the number of files in the argument list. See
arglist .
If {winid} is not supplied, the argument list of the current
window is used.
If {winid} is -1, the global argument list is used.
Otherwise {winid} specifies the window of which the argument
list is used: either the window number or the window ID.
Returns -1 if the {winid} argument is invalid.
|
| The result is the current index in the argument list. 0 is
the first file. argc() - 1 is the last one. See arglist .
|
| Return the argument list ID. This is a number which
identifies the argument list being used. Zero is used for the
global argument list. See arglist .
Returns -1 if the arguments are invalid.
|
| The result is the **{nr}**th file in the argument list. See
arglist . "argv(0)" is the first one. Example:
|
| Return the arc sine of {expr} measured in radians, as a Float
in the range of [-pi/2, pi/2].
{expr} must evaluate to a Float or a Number in the range
[-1, 1].
Returns "nan" if {expr} is outside the range [-1, 1]. Returns
0.0 if {expr} is not a Float or a Number .
Examples:
|
| Assert if x is Position by raising an AssertError when it's not.
|
| Assert if x is ScreenPos by raising an AssertError when it's not.
|
| Return the principal value of the arc tangent of {expr}, in
the range [-pi/2, +pi/2] radians, as a Float .
{expr} must evaluate to a Float or a Number .
Returns 0.0 if {expr} is not a Float or a Number .
Examples:
|
| Return the arc tangent of {expr1} / {expr2}, measured in
radians, as a Float in the range [-pi, pi].
{expr1} and {expr2} must evaluate to a Float or a Number .
Returns 0.0 if {expr1} or {expr2} is not a Float or a
Number .
Examples:
|
| Return a List containing the number value of each byte in Blob
{blob}. Examples:
|
| Put up a file requester. This only works when "has("browse")"
returns TRUE (only in some GUI versions).
The input fields are:
{save} when TRUE , select file to write
{title} title for the requester
{initdir} directory to start browsing in
{default} default file name
An empty string is returned when the "Cancel" button is hit,
something went wrong, or browsing is not possible.
|
| Put up a directory requester. This only works when
"has("browse")" returns TRUE (only in some GUI versions).
On systems where a directory browser is not supported a file
browser is used. In that case: select a file in the directory
to be used.
The input fields are:
{title} title for the requester
{initdir} directory to start browsing in
When the "Cancel" button is hit, something went wrong, or
browsing is not possible, an empty string is returned.
|
| Add a buffer to the buffer list with name {name} (must be a
String).
If a buffer for file {name} already exists, return that buffer
number. Otherwise return the buffer number of the newly
created buffer. When {name} is an empty string then a new
buffer is always created.
The buffer will not have 'buflisted' set and not be loaded
yet. To add some text to the buffer use this:
|
| The result is a Number, which is TRUE if a buffer called
{buf} exists.
If the {buf} argument is a number, buffer numbers are used.
Number zero is the alternate buffer for the current window.
|
| The result is a Number, which is TRUE if a buffer called
{buf} exists and is listed (has the 'buflisted' option set).
The {buf} argument is used like with bufexists() .
|
| Ensure the buffer {buf} is loaded. When the buffer name
refers to an existing file then the file is read. Otherwise
the buffer will be empty. If the buffer was already loaded
then there is no change. If the buffer is not related to a
file then no file is read (e.g., when 'buftype' is "nofile").
If there is an existing swap file for the file of the buffer,
there will be no dialog, the buffer will be loaded anyway.
The {buf} argument is used like with bufexists() .
|
| The result is a Number, which is TRUE if a buffer called
{buf} exists and is loaded (shown in a window or hidden).
The {buf} argument is used like with bufexists() .
|
| The result is the name of a buffer. Mostly as it is displayed
by the :ls command, but not using special names such as
"[No Name]".
If {buf} is omitted the current buffer is used.
If {buf} is a Number, that buffer number's name is given.
Number zero is the alternate buffer for the current window.
If {buf} is a String, it is used as a file-pattern to match
with the buffer names. This is always done like 'magic' is
set and 'cpoptions' is empty. When there is more than one
match an empty string is returned.
"" or "%" can be used for the current buffer, "#" for the
alternate buffer.
A full match is preferred, otherwise a match at the start, end
or middle of the buffer name is accepted. If you only want a
full match then put "^" at the start and "$" at the end of the
pattern.
Listed buffers are found first. If there is a single match
with a listed buffer, that one is returned. Next unlisted
buffers are searched for.
If the {buf} is a String, but you want to use it as a buffer
number, force it to be a Number by adding zero to it:
|
| The result is the number of a buffer, as it is displayed by
the :ls command. For the use of {buf}, see bufname()
above.
|
| The result is a Number, which is the window-ID of the first
window associated with buffer {buf}. For the use of {buf},
see bufname() above. If buffer {buf} doesn't exist or
there is no such window, -1 is returned. Example:
|
| Like bufwinid() but return the window number instead of the
window-ID .
If buffer {buf} doesn't exist or there is no such window, -1
is returned. Example:
|
| Return the line number that contains the character at byte
count {byte} in the current buffer. This includes the
end-of-line character, depending on the 'fileformat' option
for the current buffer. The first character has byte count
one.
Also see line2byte() , go and :goto .
|
| Return byte index of the {nr}'th character in the String
{expr}. Use zero for the first character, it then returns
zero.
If there are no multibyte characters the returned value is
equal to {nr}.
Composing characters are not counted separately, their byte
length is added to the preceding base character. See
byteidxcomp() below for counting composing characters
separately.
When {utf16} is present and TRUE, {nr} is used as the UTF-16
index in the String {expr} instead of as the character index.
The UTF-16 index is the index in the string when it is encoded
with 16-bit words. If the specified UTF-16 index is in the
middle of a character (e.g. in a 4-byte character), then the
byte index of the first byte in the character is returned.
Refer to string-offset-encoding for more information.
Example :
|
| Like byteidx(), except that a composing character is counted
as a separate character. Example:
|
| Call function {func} with the items in List {arglist} as
arguments.
{func} can either be a Funcref or the name of a function.
a:firstline and a:lastline are set to the cursor line.
Returns the return value of the called function.
{dict} is for functions with the "dict" attribute. It will be
used to set the local variable "self". Dictionary-function
|
| Return the smallest integral value greater than or equal to
{expr} as a Float (round up).
{expr} must evaluate to a Float or a Number .
Examples:
|
| Return the number of the most recent change. This is the same
number as what is displayed with :undolist and can be used
with the :undo command.
When a change was made it is the number of that change. After
redo it is the number of the redone change. After undo it is
one less than the number of the undone change.
Returns 0 if the undo list is empty.
|
| Return Number value of the first char in {string}.
Examples:
|
| Return the character class of the first character in {string}.
The character class is one of:
0 blank
1 punctuation
2 word character
3 emoji
other specific Unicode class
The class is used in patterns and word motions.
Returns 0 if {string} is not a String .
|
| Same as col() but returns the character index of the column
position given with {expr} instead of the byte position.
|
| Return the character index of the byte at {idx} in {string}.
The index of the first character is zero.
If there are no multibyte characters the returned value is
equal to {idx}.
|
| Change the current working directory to {dir}. The scope of
the directory change depends on the directory of the current
window:
- If the current window has a window-local directory
(:lcd ), then changes the window local directory.
- Otherwise, if the current tabpage has a local
directory (:tcd ) then changes the tabpage local
directory.
- Otherwise, changes the global directory.
{dir} must be a String.
If successful, returns the previous working directory. Pass
this to another chdir() to restore the directory.
On failure, returns an empty string.
|
| Get the amount of indent for line {lnum} according the C
indenting rules, as with 'cindent'.
The indent is counted in spaces, the value of 'tabstop' is
relevant. {lnum} is used just like in getline() .
When {lnum} is invalid -1 is returned.
See C-indenting .
|
| Clears all matches previously defined for the current window
by matchadd() and the :match commands.
If {win} is specified, use the window with this number or
window ID instead of the current window.
|
| The result is a Number, which is the byte index of the column
position given with {expr}. The accepted positions are:
. the cursor position
$ the end of the cursor line (the result is the
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
out of range then col() returns zero.
With the optional {winid} argument the values are obtained for
that window instead of the current window.
To get the line number use line() . To get both use
getpos() .
For the screen column position use virtcol() . For the
character position use charcol() .
Note that only marks in the current file can be used.
Examples:
|
| Set the matches for Insert mode completion.
Can only be used in Insert mode. You need to use a mapping
with CTRL-R = (see i_CTRL-R ). It does not work after CTRL-O
or with an expression mapping.
{startcol} is the byte offset in the line where the completed
text start. The text up to the cursor is the original text
that will be replaced by the matches. Use col('.') for an
empty string. "col('.') - 1" will replace one character by a
match.
{matches} must be a List . Each List item is one match.
See complete-items for the kind of items that are possible.
"longest" in 'completeopt' is ignored.
Note that the after calling this function you need to avoid
inserting anything that would cause completion to stop.
The match can be selected with CTRL-N and CTRL-P as usual with
Insert mode completion. The popup menu will appear if
specified, see ins-completion-menu .
Example:
|
| Add {expr} to the list of matches. Only to be used by the
function specified with the 'completefunc' option.
Returns 0 for failure (empty string or out of memory),
1 when the match was added, 2 when the match was already in
the list.
See complete-functions for an explanation of {expr}. It is
the same as one item in the list that 'omnifunc' would return.
|
| Check for a key typed while looking for completion matches.
This is to be used when looking for matches takes some time.
Returns TRUE when searching for matches is to be aborted,
zero otherwise.
Only to be used by the function specified with the
'completefunc' option.
|
| Returns a Dictionary with information about Insert mode
completion. See ins-completion .
The items are:
mode Current completion mode name string.
See complete_info_mode for the values.
pum_visible TRUE if popup menu is visible.
See pumvisible() .
items List of completion matches. Each item is a
dictionary containing the entries "word",
"abbr", "menu", "kind", "info" and "user_data".
See complete-items .
selected Selected item index. First index is zero.
Index is -1 if no item is selected (showing
typed text only, or the last completion after
no item is selected when using the <Up> or
<Down> keys)
inserted Inserted string. [NOT IMPLEMENTED YET]
|
| confirm() offers the user a dialog, from which a choice can be
made. It returns the number of the choice. For the first
choice this is 1.
Note: confirm() is only supported when compiled with dialog
support, see +dialog_con and +dialog_gui .
|
| Make a copy of {expr}. For Numbers and Strings this isn't
different from using {expr} directly.
When {expr} is a List a shallow copy is created. This means
that the original List can be changed without changing the
copy, and vice versa. But the items are identical, thus
changing an item changes the contents of both Lists .
A Dictionary is copied in a similar way as a List .
Also see deepcopy() .
Can also be used as a method :
|
| Return the cosine of {expr}, measured in radians, as a Float .
{expr} must evaluate to a Float or a Number .
Returns 0.0 if {expr} is not a Float or a Number .
Examples:
|
| Return the hyperbolic cosine of {expr} as a Float in the range
[1, inf].
{expr} must evaluate to a Float or a Number .
Returns 0.0 if {expr} is not a Float or a Number .
Examples:
|
| Return the number of times an item with value {expr} appears
in String , List or Dictionary {comp}.
|
| Positions the cursor at the column (byte count) {col} in the
line {lnum}. The first column is one.
|
| Specifically used to interrupt a program being debugged. It
will cause process {pid} to get a SIGTRAP. Behavior for other
processes is undefined. See terminal-debugger .
only available on MS-Windows
|
| Make a copy of {expr}. For Numbers and Strings this isn't
different from using {expr} directly.
When {expr} is a List a full copy is created. This means
that the original List can be changed without changing the
copy, and vice versa. When an item is a List or
Dictionary , a copy for it is made, recursively. Thus
changing an item in the copy does not change the contents of
the original List .
A Dictionary is copied in a similar way as a List .
|
| Without {flags} or with {flags} empty: Deletes the file by the
name {fname}.
|
| Delete lines {first} to {last} (inclusive) from buffer {buf}.
If {last} is omitted then delete line {first} only.
On success 0 is returned, on failure 1 is returned.
|
| Returns TRUE when autocommands are being executed and the
FileType event has been triggered at least once. Can be used
to avoid triggering the FileType event again in the scripts
that detect the file type. FileType
Returns FALSE when :setf FALLBACK was used.
When editing another file, the counter is reset, thus this
really checks if the FileType event has been triggered for the
current buffer. This allows an autocommand that starts
editing another buffer to set 'filetype' and load a syntax
file.
|
| Returns the number of filler lines above line {lnum}.
These are the lines that were inserted at this point in
another diff'ed window. These filler lines are shown in the
display but don't exist in the buffer.
{lnum} is used like with getline() . Thus "." is the current
line, "'m" mark m, etc.
Returns 0 if the current window is not in diff mode.
|
| Returns the highlight ID for diff mode at line {lnum} column
{col} (byte index). When the current line does not have a
diff change zero is returned.
{lnum} is used like with getline() . Thus "." is the current
line, "'m" mark m, etc.
{col} is 1 for the leftmost column, {lnum} is 1 for the first
line.
The highlight ID can be used with synIDattr() to obtain
syntax information about the highlighting.
|
| Return the digraph of {chars}. This should be a string with
exactly two characters. If {chars} are not just two
characters, or the digraph of {chars} does not exist, an error
is given and an empty string is returned.
|
| Return a list of digraphs. If the {listall} argument is given
and it is TRUE, return all digraphs, including the default
digraphs. Otherwise, return only user-defined digraphs.
|
| Add digraph {chars} to the list. {chars} must be a string
with two characters. {digraph} is a string with one UTF-8
encoded character.
Be careful, composing characters are NOT ignored. This
function is similar to :digraphs command, but useful to add
digraphs start with a white space.
|
| Similar to digraph_set() but this function can add multiple
digraphs at once. {digraphlist} is a list composed of lists,
where each list contains two strings with {chars} and
{digraph} as in digraph_set() .
Example:
|
| Return the Number 1 if {expr} is empty, zero otherwise.
- A
List or Dictionary is empty when it does not have any
items.
- A
String is empty when its length is zero.
- A
Number and Float are empty when their value is zero.
v:false , v:none and v:null are empty, v:true is not.
- A
Job is empty when it failed to start.
- A
Channel is empty when it is closed.
- A
Blob is empty when its length is zero.
|
| Return all of environment variables as dictionary. You can
check if an environment variable exists like this:
|
| Escape the characters in {chars} that occur in {string} with a
backslash. Example:
|
| Evaluate {string} and return the result. Especially useful to
turn the result of string() back into the original value.
This works for Numbers, Floats, Strings, Blobs and composites
of them. Also works for Funcref s that refer to existing
functions.
|
| Returns 1 when inside an event handler. That is that Vim got
interrupted while waiting for the user to type a character,
e.g., when dropping a file on Vim. This means interactive
commands cannot be used. Otherwise zero is returned.
|
| This function checks if an executable with the name {expr}
exists. {expr} must be the name of the program without any
arguments.
executable() uses the value of $PATH and/or the normal
searchpath for programs.
On MS-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 ".com;.exe;.bat;.cmd" is used. A dot
by itself can be used in $PATHEXT to try using the name
without an extension. When 'shell' looks like a Unix shell,
then the name is also tried without adding an extension.
On MS-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
normally found. Since this directory is added to $PATH it
should also work to execute it win32-PATH . This can be
disabled by setting the $NoDefaultCurrentDirectoryInExePath
environment variable.
The result is a Number:
1 exists
0 does not exist
-1 not implemented on this system
exepath() can be used to get the full path of an executable.
|
| Execute an Ex command or commands and return the output as a
string.
{command} can be a string or a List. In case of a List the
lines are executed one by one.
This is more or less equivalent to:
|
| If {expr} is an executable and is either an absolute path, a
relative path or found in $PATH, return the full path.
Note that the current directory is used when {expr} starts
with "./", which may be a problem for Vim:
|
| The result is a Number, which is TRUE if {expr} is defined,
zero otherwise.
|
| Return the exponential of {expr} as a Float in the range
[0, inf].
{expr} must evaluate to a Float or a Number .
Returns 0.0 if {expr} is not a Float or a Number .
Examples:
|
| Expand wildcards and the following special keywords in
{string}. 'wildignorecase' applies.
|
| Expand special items in String {string} like what is done for
an Ex command such as :edit . This expands special keywords,
like with expand() , and environment variables, anywhere in
{string}. "~user" and "~/path" are only expanded at the
start.
|
| {expr1} and {expr2} must be both Lists or both
Dictionaries .
|
| Like extend() but instead of adding items to {expr1} a new
List or Dictionary is created and returned. {expr1} remains
unchanged.
|
| Characters in {string} are queued for processing as if they
come from a mapping or were typed by the user.
|
| The result is a Number, which is TRUE when a file with the
name {file} exists, and can be read. If {file} doesn't exist,
or is a directory, the result is FALSE . {file} is any
expression, which is used as a String.
If you don't care about the file being readable you can use
glob() .
{file} is used as-is, you may want to expand wildcards first:
|
| The result is a Number, which is 1 when a file with the
name {file} exists, and can be written. If {file} doesn't
exist, or is not writable, the result is 0. If {file} is a
directory, and we can write to it, the result is 2.
|
| {expr1} must be a List , String , Blob or Dictionary .
For each item in {expr1} evaluate {expr2} and when the result
is zero or false remove the item from the List or
Dictionary . Similarly for each byte in a Blob and each
character in a String .
|
| Find directory {name} in {path}. Supports both downwards and
upwards recursive directory searches. See file-searching
for the syntax of {path}.
|
| Just like finddir() , but find a file instead of a directory.
Uses 'suffixesadd'.
Example:
|
| Flatten {list} up to {maxdepth} levels. Without {maxdepth}
the result is a List without nesting, as if {maxdepth} is
a very large number.
The {list} is changed in place, use flattennew() if you do
not want that.
In Vim9 script flatten() cannot be used, you must always use
flattennew() .
|
| Like flatten() but first make a copy of {list}.
|
| Convert {expr} to a Number by omitting the part after the
decimal point.
{expr} must evaluate to a Float or a Number .
Returns 0 if {expr} is not a Float or a Number .
When the value of {expr} is out of range for a Number the
result is truncated to 0x7fffffff or -0x7fffffff (or when
64-bit Number support is enabled, 0x7fffffffffffffff or
-0x7fffffffffffffff). NaN results in -0x80000000 (or when
64-bit Number support is enabled, -0x8000000000000000).
Examples:
|
| Return the largest integral value less than or equal to
{expr} as a Float (round down).
{expr} must evaluate to a Float or a Number .
Returns 0.0 if {expr} is not a Float or a Number .
Examples:
|
| Return the remainder of {expr1} / {expr2}, even if the
division is not representable. Returns {expr1} - i * {expr2}
for some integer i such that if {expr2} is non-zero, the
result has the same sign as {expr1} and magnitude less than
the magnitude of {expr2}. If {expr2} is zero, the value
returned is zero. The value returned is a Float .
{expr1} and {expr2} must evaluate to a Float or a Number .
Returns 0.0 if {expr1} or {expr2} is not a Float or a
Number .
Examples:
|
| Escape {string} for use as file name command argument. All
characters that have a special meaning, such as '%' and '|'
are escaped with a backslash.
For most systems the characters escaped are
" \t\n*?[{`$\\%#'\"|!<" . For systems where a backslash
appears in a filename, it depends on the value of 'isfname'.
A leading '+' and '>' is also escaped (special after :edit
and :write ). And a "-" by itself (special after :cd ).
Returns an empty string on error.
Example:
|
| Modify file name {fname} according to {mods}. {mods} is a
string of characters like it is used for file names on the
command line. See filename-modifiers .
Example:
|
| The result is a Number. If the line {lnum} is in a closed
fold, the result is the number of the first line in that fold.
If the line {lnum} is not in a closed fold, -1 is returned.
{lnum} is used like with getline() . Thus "." is the current
line, "'m" mark m, etc.
|
| The result is a Number. If the line {lnum} is in a closed
fold, the result is the number of the last line in that fold.
If the line {lnum} is not in a closed fold, -1 is returned.
{lnum} is used like with getline() . Thus "." is the current
line, "'m" mark m, etc.
|
| The result is a Number, which is the foldlevel of line {lnum}
in the current buffer. For nested folds the deepest level is
returned. If there is no fold at line {lnum}, zero is
returned. It doesn't matter if the folds are open or closed.
When used while updating folds (from 'foldexpr') -1 is
returned for lines where folds are still to be updated and the
foldlevel is unknown. As a special case the level of the
previous line is usually available.
{lnum} is used like with getline() . Thus "." is the current
line, "'m" mark m, etc.
|
| Returns a String, to be displayed for a closed fold. This is
the default function used for the 'foldtext' option and should
only be called from evaluating 'foldtext'. It uses the
v:foldstart , v:foldend and v:folddashes variables.
The returned string looks like this:
|
| Returns the text that is displayed for the closed fold at line
{lnum}. Evaluates 'foldtext' in the appropriate context.
When there is no closed fold at {lnum} an empty string is
returned.
{lnum} is used like with getline() . Thus "." is the current
line, "'m" mark m, etc.
Useful when exporting folded text, e.g., to HTML.
not available when compiled without the +folding feature
|
| Get the full command name from a short abbreviated command
name; see 20.2 for details on command abbreviations.
|
| Just like function() , but the returned Funcref will lookup
the function by reference, not by name. This matters when the
function {name} is redefined later.
|
| Return a Funcref variable that refers to function {name}.
{name} can be the name of a user defined function or an
internal function.
|
| Cleanup unused Lists , Dictionaries , Channels and Jobs
that have circular references.
|
| Get item {idx} from List {list}. When this item is not
available return {default}. Return zero when {default} is
omitted.
Preferably used as a method :
|
| Get information about buffers as a List of Dictionaries.
|
| Return a List with the lines starting from {lnum} to {end}
(inclusive) in the buffer {buf}. If {end} is omitted, a
List with only the line {lnum} is returned. See
getbufoneline() for only getting the line.
|
| Just like getbufline() but only get one line and return it
as a string.
|
| The result is the value of option or local buffer variable
{varname} in buffer {buf}. Note that the name without "b:"
must be used.
The {varname} argument is a string.
When {varname} is empty returns a Dictionary with all the
buffer-local variables.
When {varname} is equal to "&" returns a Dictionary with all
the buffer-local options.
Otherwise, when {varname} starts with "&" returns the value of
a buffer-local option.
This also works for a global or buffer-local option, but it
doesn't work for a global variable, window-local variable or
window-local option.
For the use of {buf}, see bufname() above.
When the buffer or variable doesn't exist {def} or an empty
string is returned, there is no error message.
Examples:
|
| Returns a List of cell widths of character ranges overridden
by setcellwidths() . The format is equal to the argument of
setcellwidths() . If no character ranges have their cell
widths overridden, an empty List is returned.
|
| Returns the changelist for the buffer {buf}. For the use
of {buf}, see bufname() above. If buffer {buf} doesn't
exist, an empty list is returned.
|
| Get a single character from the user or input stream.
If [expr] is omitted, wait until a character is available.
If [expr] is 0, only get a character when one is available.
Return zero otherwise.
If [expr] is 1, only check if a character is available, it is
not consumed. Return zero if no character available.
If you prefer always getting a string use getcharstr() .
|
| The result is a Number which is the state of the modifiers for
the last obtained character with getchar() or in another way.
These values are added together:
2 shift
4 control
8 alt (meta)
16 meta (when it's different from ALT)
32 mouse double click
64 mouse triple click
96 mouse quadruple click (== 32 + 64)
128 command (Macintosh only)
Only the modifiers that have not been included in the
character itself are obtained. Thus Shift-a results in "A"
without a modifier. Returns 0 if no modifiers are used.
|
| Get the position for String {expr}. Same as getpos() but the
column number in the returned List is a character index
instead of a byte index.
If getpos() returns a very large column number, equal to
v:maxcol , then getcharpos() will return the character index
of the last character.
|
| Return the current character search information as a {dict}
with the following entries:
|
| Get a single character from the user or input stream as a
string.
If [expr] is omitted, wait until a character is available.
If [expr] is 0 or false, only get a character when one is
available. Return an empty string otherwise.
If [expr] is 1 or true, only check if a character is
available, it is not consumed. Return an empty string
if no character is available.
Otherwise this works like getchar() , except that a number
result is converted to a string.
|
| Return the type of the current command-line completion.
Only works when the command line is being edited, thus
requires use of c_CTRL-\_e or c_CTRL-R_= .
See :command-completion for the return string.
Also see getcmdtype() , setcmdpos() , getcmdline() and
setcmdline() .
Returns an empty string when completion is not defined.
|
| Return the current command-line. Only works when the command
line is being edited, thus requires use of c_CTRL-\_e or
c_CTRL-R_= .
Example:
|
| Return the position of the cursor in the command line as a
byte count. The first column is 1.
Only works when editing the command line, thus requires use of
c_CTRL-\_e or c_CTRL-R_= or an expression mapping.
Returns 0 otherwise.
Also see getcmdtype() , setcmdpos() , getcmdline() and
setcmdline() .
|
| Return the screen position of the cursor in the command line
as a byte count. The first column is 1.
Instead of getcmdpos() , it adds the prompt position.
Only works when editing the command line, thus requires use of
c_CTRL-\_e or c_CTRL-R_= or an expression mapping.
Returns 0 otherwise.
Also see getcmdpos() , setcmdpos() , getcmdline() and
setcmdline() .
|
| Return the current command-line type. Possible return values
are:
: normal Ex command
> debug mode command debug-mode
/ forward search command
? backward search command
@ input() command
- :insert or :append command
= i_CTRL-R_=
Only works when editing the command line, thus requires use of
c_CTRL-\_e or c_CTRL-R_= or an expression mapping.
Returns an empty string otherwise.
Also see getcmdpos() , setcmdpos() and getcmdline() .
|
| Return the current command-line-window type. Possible return
values are the same as getcmdtype() . Returns an empty string
when not in the command-line window.
|
| Return a list of command-line completion matches. The String
{type} argument specifies what for. The following completion
types are supported:
|
| Get the position of the cursor. This is like getpos('.'), but
includes an extra "curswant" item in the list:
[0, lnum, col, off, curswant]
The "curswant" number is the preferred column when moving the
cursor vertically. After $ command it will be a very large
number equal to v:maxcol . Also see getcursorcharpos() and
getpos() .
The first "bufnum" item is always zero. The byte position of
the cursor is returned in 'col'. To get the character
position, use getcursorcharpos() .
|
| Same as getcurpos() but the column number in the returned
List is a character index instead of a byte index.
|
| The result is a String, which is the name of the current
working directory. 'autochdir' is ignored.
|
| Return the value of environment variable {name}. The {name}
argument is a string, without a leading '$'. Example:
|
| Without an argument returns the name of the normal font being
used. Like what is used for the Normal highlight group
hl-Normal .
With an argument a check is done whether String {name} is a
valid font name. If not then an empty string is returned.
Otherwise the actual font name is returned, or {name} if the
GUI does not support obtaining the real name.
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 GUI accepts any font name, thus checking for
a valid name does not work.
|
| The result is a String, which is the read, write, and execute
permissions of the given file {fname}.
If {fname} does not exist or its directory cannot be read, an
empty string is returned.
The result is of the form "rwxrwxrwx", where each group of
"rwx" flags represent, in turn, the permissions of the owner
of the file, the group the file belongs to, and other users.
If a user does not have a given permission the flag for this
is replaced with the string "-". Examples:
|
| The result is a Number, which is the size in bytes of the
given file {fname}.
If {fname} is a directory, 0 is returned.
If the file {fname} can't be found, -1 is returned.
If the size of {fname} is too big to fit in a Number then -2
is returned.
|
| The result is a Number, which is the last modification time of
the given file {fname}. The value is measured as seconds
since 1st Jan 1970, and may be passed to strftime(). See also
localtime() and strftime() .
If the file {fname} can't be found -1 is returned.
|
| The result is a String, which is a description of the kind of
file of the given file {fname}.
If {fname} does not exist an empty string is returned.
Here is a table over different kinds of files and their
results:
Normal file "file"
Directory "dir"
Symbolic link "link"
Block device "bdev"
Character device "cdev"
Socket "socket"
FIFO "fifo"
All other "other"
Example:
|
| Returns the jumplist for the specified window.
|
| Without {end} the result is a String, which is line {lnum}
from the current buffer. Example:
|
| Returns a List with all the entries in the location list for
window {nr}. {nr} can be the window number or the window-ID .
When {nr} is zero the current window is used.
|
| Without the {buf} argument returns a List with information
about all the global marks. mark
|
| Returns a List with all matches previously defined for the
current window by matchadd() and the :match commands.
getmatches() is useful in combination with setmatches() ,
as setmatches() can restore a list of matches saved by
getmatches() .
If {win} is specified, use the window with this number or
window ID instead of the current window. If {win} is invalid,
an empty list is returned.
Example:
|
| Returns a Dictionary with the last known position of the
mouse. This can be used in a mapping for a mouse click or in
a filter of a popup window. The items are:
screenrow screen row
screencol screen column
winid Window ID of the click
winrow row inside "winid"
wincol column inside "winid"
line text line inside "winid"
column text column inside "winid"
coladd offset (in screen columns) from the
start of the clicked char
All numbers are 1-based.
|
| 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.
|
| Get the position for String {expr}. For possible values of
{expr} see line() . For getting the cursor position see
getcurpos() .
The result is a List with four numbers:
[bufnum, lnum, col, off]
"bufnum" is zero, unless a mark like '0 or 'A is used, then it
is the buffer number of the mark.
"lnum" and "col" are the position in the buffer. The first
column is 1.
The "off" number is zero, unless 'virtualedit' is used. Then
it is the offset in screen columns from the start of the
character. E.g., a position within a <Tab> or after the last
character.
Note that for '< and '> Visual mode matters: when it is "V"
(visual line mode) the column of '< is zero and the column of
'> is a large number equal to v:maxcol .
The column number in the returned List is the byte position
within the line. To get the character position in the line,
use getcharpos() .
A very large column number equal to v:maxcol can be returned,
in which case it means "after the end of the line".
If {expr} is invalid, returns a list with all zeros.
This can be used to save and restore the position of a mark:
|
| Returns a List with all the current quickfix errors. Each
list item is a dictionary with these entries:
bufnr number of buffer that has the file name, use
bufname() to get the name
module module name
lnum line number in the buffer (first line is 1)
end_lnum
end of line number if the item is multiline
col column number (first column is 1)
end_col end of column number if the item has range
vcol TRUE : "col" is visual column
FALSE : "col" is byte index
nr error number
pattern search pattern used to locate the error
text description of the error
type type of the error, 'E', '1', etc.
valid TRUE : recognized error message
user_data
custom data associated with the item, can be
any type.
|
| The result is a String, which is the contents of register
{regname}. Example:
|
| Returns detailed information about register {regname} as a
Dictionary with the following entries:
regcontents List of lines contained in register
{regname}, like
getreg ({regname}, 1, 1).
regtype the type of register {regname}, as in
getregtype() .
isunnamed Boolean flag, v:true if this register
is currently pointed to by the unnamed
register.
points_to for the unnamed register, gives the
single letter name of the register
currently pointed to (see quotequote ).
For example, after deleting a line
with dd , this field will be "1",
which is the register that got the
deleted text.
|
| The result is a String, which is type of register {regname}.
The value will be one of:
"v" for characterwise text
"V" for linewise text
"<CTRL-V>{width}" for blockwise-visual text
"" for an empty or unknown register
<CTRL-V> is one character with value 0x16.
The {regname} argument is a string. If {regname} is "", the
unnamed register '"' is used. If {regname} is not specified,
v:register is used.
In Vim9-script {regname} must be one character.
|
| Returns a List with information about all the sourced Vim
scripts in the order they were sourced, like what
:scriptnames shows.
|
| If {tabnr} is not specified, then information about all the
tab pages is returned as a List . Each List item is a
Dictionary . Otherwise, {tabnr} specifies the tab page
number and information about that one is returned. If the tab
page does not exist an empty List is returned.
|
| Get the value of a tab-local variable {varname} in tab page
{tabnr}. t:var
Tabs are numbered starting with one.
The {varname} argument is a string. When {varname} is empty a
dictionary with all tab-local variables is returned.
Note that the name without "t:" must be used.
When the tab or variable doesn't exist {def} or an empty
string is returned, there is no error message.
|
| Get the value of window-local variable {varname} in window
{winnr} in tab page {tabnr}.
The {varname} argument is a string. When {varname} is empty a
dictionary with all window-local variables is returned.
When {varname} is equal to "&" get the values of all
window-local options in a Dictionary .
Otherwise, when {varname} starts with "&" get the value of a
window-local option.
Note that {varname} must be the name without "w:".
Tabs are numbered starting with one. For the current tabpage
use getwinvar() .
{winnr} can be the window number or the window-ID .
When {winnr} is zero the current window is used.
This also works for a global option, buffer-local option and
window-local option, but it doesn't work for a global variable
or buffer-local variable.
When the tab, window or variable doesn't exist {def} or an
empty string is returned, there is no error message.
Examples:
|
| The result is a Dict, which is the tag stack of window {winnr}.
{winnr} can be the window number or the window-ID .
When {winnr} is not specified, the current window is used.
When window {winnr} doesn't exist, an empty Dict is returned.
|
| Translate String {text} if possible.
This is mainly for use in the distributed Vim scripts. When
generating message translations the {text} is extracted by
xgettext, the translator can add the translated message in the
.po file and Vim will lookup the translation when gettext() is
called.
For {text} double quoted strings are preferred, because
xgettext does not understand escaping in single quoted
strings.
|
| Returns information about windows as a List with Dictionaries.
|
| The result is a List with two numbers, the result of
getwinposx() and getwinposy() combined:
[x-pos, y-pos]
{timeout} can be used to specify how long to wait in msec for
a response from the terminal. When omitted 100 msec is used.
Use a longer time for a remote terminal.
When using a value less than 10 and no response is received
within that time, a previously reported position is returned,
if available. This can be used to poll for the position and
do some work in the meantime:
|
| The result is a Number, which is the X coordinate in pixels of
the left hand side of the GUI Vim window. Also works for an
xterm (uses a timeout of 100 msec).
The result will be -1 if the information is not available.
The value can be used with :winpos .
|
| The result is a Number, which is the Y coordinate in pixels of
the top of the GUI Vim window. Also works for an xterm (uses
a timeout of 100 msec).
The result will be -1 if the information is not available.
The value can be used with :winpos .
|
| Like gettabwinvar() for the current tabpage.
Examples:
|
| Expand the file wildcards in {expr}. See wildcards for the
use of special characters.
|
| Convert a file pattern, as used by glob(), into a search
pattern. The result can be used to match with a string that
is a file name. E.g.
|
| Perform glob() for String {expr} on all directories in {path}
and concatenate the results. Example:
|
| Returns 1 if {feature} is supported, 0 otherwise. The
{feature} argument is a feature name like "nvim-0.2.1" or
"win32", see below. See also exists() .
|
| The result is a Number, which is TRUE if Dictionary {dict}
has an entry with key {key}. FALSE otherwise.
The {key} argument is a string. In Vim9 script a number is
also accepted (and converted to a string) but no other types.
In legacy script the usual automatic conversion to string is
done.
|
| The result is a Number:
1 when the window has set a local directory via :lcd
2 when the tab-page has set a local directory via :tcd
0 otherwise.
|
| The result is a Number, which is TRUE if there is a mapping
that contains {what} in somewhere in the rhs (what it is
mapped to) and this mapping exists in one of the modes
indicated by {mode}.
The arguments {what} and {mode} are strings.
When {abbr} is there and it is TRUE use abbreviations
instead of mappings. Don't forget to specify Insert and/or
Command-line mode.
Both the global mappings and the mappings local to the current
buffer are checked for a match.
If no matching mapping is found FALSE is returned.
The following characters are recognized in {mode}:
n Normal mode
v Visual and Select mode
x Visual mode
s Select mode
o Operator-pending mode
i Insert mode
l Language-Argument ("r", "f", "t", etc.)
c Command-line mode
When {mode} is omitted, "nvo" is used.
|
| Add the String {item} to the history {history} which can be
one of:
"cmd" or ":" command line history
"search" or "/" search pattern history
"expr" or "=" typed expression history
"input" or "@" input line history
"debug" or ">" debug command history
empty the current or last used history
The {history} string does not need to be the whole name, one
character is sufficient.
If {item} does already exist in the history, it will be
shifted to become the newest entry.
The result is a Number: TRUE if the operation was successful,
otherwise FALSE is returned.
|
| Clear {history}, i.e. delete all its entries. See hist-names
for the possible values of {history}.
|
| The result is a String, the entry with Number {index} from
{history}. See hist-names for the possible values of
{history}, and :history-indexing for {index}. If there is
no such entry, an empty String is returned. When {index} is
omitted, the most recent item from the history is used.
|
| The result is the Number of the current entry in {history}.
See hist-names for the possible values of {history}.
If an error occurred, -1 is returned.
|
| The result is a Number, which is TRUE if a highlight group
called {name} exists. This is when the group has been
defined in some way. Not necessarily when highlighting has
been defined for it, it may also have been used for a syntax
item.
|
| The result is a Number, which is the ID of the highlight group
with name {name}. When the highlight group doesn't exist,
zero is returned.
This can be used to retrieve information about the highlight
group. For example, to get the background color of the
"Comment" group:
|
| The result is a String, which is the name of the machine on
which Vim is currently running. Machine names greater than
256 characters long are truncated.
|
| The result is a String, which is the text {string} converted
from encoding {from} to encoding {to}.
When the conversion completely fails an empty string is
returned. When some characters could not be converted they
are replaced with "?".
The encoding names are whatever the iconv() library function
can accept, see ":!man 3 iconv".
Most conversions require Vim to be compiled with the +iconv
feature. Otherwise only UTF-8 to latin1 conversion and back
can be done.
This can be used to display messages with special characters,
no matter what 'encoding' is set to. Write the message in
UTF-8 and use:
|
| The result is a Number, which is indent of line {lnum} in the
current buffer. The indent is counted in spaces, the value
of 'tabstop' is relevant. {lnum} is used just like in
getline() .
When {lnum} is invalid -1 is returned. In Vim9 script an
error is given.
|
| Find {expr} in {object} and return its index. See
indexof() for using a lambda to select the item.
|
| Returns the index of an item in {object} where {expr} is
v:true. {object} must be a List or a Blob .
|
| The result is a String, which is whatever the user typed on
the command-line. The {prompt} argument is either a prompt
string, or a blank string (for no prompt). A '\n' can be used
in the prompt to start a new line.
The highlighting set with :echohl is used for the prompt.
The input is entered just like a command-line, with the same
editing commands and mappings. There is a separate history
for lines typed for input().
Example:
|
| {textlist} must be a List of strings. This List is
displayed, one string per line. The user will be prompted to
enter a number, which is returned.
The user can also select an item by clicking on it with the
mouse, if the mouse is enabled in the command line ('mouse' is
"a" or includes "c"). For the first string 0 is returned.
When clicking above the first item a negative number is
returned. When clicking on the prompt one more than the
length of {textlist} is returned.
Make sure {textlist} has less than 'lines' entries, otherwise
it won't work. It's a good idea to put the entry number at
the start of the string. And put a prompt in the first item.
Example:
|
| Restore typeahead that was saved with a previous inputsave() .
Should be called the same number of times inputsave() is
called. Calling it more often is harmless though.
Returns TRUE when there is nothing to restore, FALSE otherwise.
|
| Preserve typeahead (also from mappings) and clear it, so that
a following prompt gets input from the user. Should be
followed by a matching inputrestore() after the prompt. Can
be used several times, in which case there must be just as
many inputrestore() calls.
Returns TRUE when out of memory, FALSE otherwise.
|
| This function acts much like the input() function with but
two exceptions:
a) the user's response will be displayed as a sequence of
asterisks ("*") thereby keeping the entry secret, and
b) the user's response will not be recorded on the input
history stack.
The result is a String, which is whatever the user actually
typed on the command-line in response to the issued prompt.
NOTE: Command-line completion is not supported.
|
| When {object} is a List or a Blob insert {item} at the start
of it.
|
| Interrupt script execution. It works more or less like the
user typing CTRL-C, most commands won't execute and control
returns to the user. This is useful to abort execution
from lower down, e.g. in an autocommand. Example:
|
| Bitwise invert. The argument is converted to a number. A
List, Dict or Float argument causes an error. Example:
|
| The result is a Number, which is TRUE when a directory
with the name {directory} exists. If {directory} doesn't
exist, or isn't a directory, the result is FALSE . {directory}
is any expression, which is used as a String.
|
| Return 1 if {expr} is a positive infinity, or -1 a negative
infinity, otherwise 0.
|
| The result is a Number, which is TRUE when {expr} is the
name of a locked variable.
The string argument {expr} must be the name of a variable,
List item or Dictionary entry, not the variable itself!
Example:
|
| Return TRUE if {expr} is a float with value NaN.
|
| Return true if the value is Position.
|
| Return true if the value is ScreenPos.
|
| Check if the value is valid BuiltinCompletion
|
| Return a List with all the key-value pairs of {dict}. Each
List item is a list with two items: the key of a {dict}
entry and the value of this entry. The List is in arbitrary
order. Also see keys() and values() .
Example:
|
| Join the items in {list} together into one String.
When {sep} is specified it is put in between the items. If
{sep} is omitted a single space is used.
Note that {sep} is not added at the end. You might want to
add it there too:
|
| This parses a JSON formatted string and returns the equivalent
in Vim values. See json_encode() for the relation between
JSON and Vim values.
The decoding is permissive:
- A trailing comma in an array and object is ignored, e.g.
"[1, 2, ]" is the same as "[1, 2]".
- Integer keys are accepted in objects, e.g. {1:2} is the
same as {"1":2}.
- More floating point numbers are recognized, e.g. "1." for
"1.0", or "001.2" for "1.2". Special floating point values
"Infinity", "-Infinity" and "NaN" (capitalization ignored)
are accepted.
- Leading zeroes in integer numbers are ignored, e.g. "012"
for "12" or "-012" for "-12".
- Capitalization is ignored in literal names null, true or
false, e.g. "NULL" for "null", "True" for "true".
- Control characters U+0000 through U+001F which are not
escaped in strings are accepted, e.g. " " (tab
character in string) for "\t".
- An empty JSON expression or made of only spaces is accepted
and results in v:none.
- Backslash in an invalid 2-character sequence escape is
ignored, e.g. "\a" is decoded as "a".
- A correct surrogate pair in JSON strings should normally be
a 12 character sequence such as "\uD834\uDD1E", but
json_decode() silently accepts truncated surrogate pairs
such as "\uD834" or "\uD834\u"
|
| Encode {expr} as JSON and return this as a string.
The encoding is specified in:
https://tools.ietf.org/html/rfc7159.html
Vim values are converted as follows:
Number decimal number
Float floating point number
Float nan "NaN"
Float inf "Infinity"
Float -inf "-Infinity"
String in double quotes (possibly null)
Funcref not possible, error
List as an array (possibly null); when
used recursively: []
Dict as an object (possibly null); when
used recursively: {}
Blob as an array of the individual bytes
v:false "false"
v:true "true"
v:none "null"
v:null "null"
Note that NaN and Infinity are passed on as values. This is
missing in the JSON standard, but several implementations do
allow it. If not then you will get an error.
If a string contains an illegal character then the replacement
character 0xfffd is used.
|
| Return a List with all the keys of {dict}. The List is in
arbitrary order. Also see items() and values() .
|
| Turn the internal byte representation of keys into a form that
can be used for :map . E.g.
|
| The result is a Number, which is the length of the argument.
When {expr} is a String or a Number the length in bytes is
used, as with strlen() .
When {expr} is a List the number of items in the List is
returned.
When {expr} is a Blob the number of bytes is returned.
When {expr} is a Dictionary the number of entries in the
Dictionary is returned.
Otherwise an error is given and returns zero.
|
| Call function {funcname} in the run-time library {libname}
with single argument {argument}.
This is useful to call functions in a library that you
especially made to be used with Vim. Since only one argument
is possible, calling standard library functions is rather
limited.
The result is the String returned by the function. If the
function returns NULL, this will appear as an empty string ""
to Vim.
If the function returns a number, use libcallnr()!
If {argument} is a number, it is passed to the function as an
int; if {argument} is a string, it is passed as a
null-terminated string.
This function will fail in restricted-mode .
|
| Just like libcall() , but used for a function that returns an
int instead of a string.
only in Win32 on some Unix versions, when the +libcall
feature is present
Examples:
|
| The result is a Number, which is the line number of the file
position given with {expr}. The {expr} argument is a string.
The accepted positions are:
. the cursor position
$ the last line in the current buffer
'x position of mark x (if the mark is not set, 0 is
returned)
w0 first line visible in current window (one if the
display isn't updated, e.g. in silent Ex mode)
w$ last line visible in current window (this is one
less than "w0" if no lines are visible)
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 a mark in another file can be used. The line number
then applies to another buffer.
To get the column number use col() . To get both use
getpos() .
With the optional {winid} argument the values are obtained for
that window instead of the current window.
Returns 0 for invalid values of {expr} and {winid}.
Examples:
|
| Return the byte count from the start of the buffer for line
{lnum}. This includes the end-of-line character, depending on
the 'fileformat' option for the current buffer. The first
line returns 1. 'encoding' matters, 'fileencoding' is ignored.
This can also be used to get the byte count for the line just
below the last line:
|
| Get the amount of indent for line {lnum} according the lisp
indenting rules, as with 'lisp'.
The indent is counted in spaces, the value of 'tabstop' is
relevant. {lnum} is used just like in getline() .
When {lnum} is invalid -1 is returned. In Vim9 script an
error is given.
|
| Return a Blob concatenating all the number values in {list}.
Examples:
|
| Convert each number in {list} to a character string can
concatenate them all. Examples:
|
| Return the current time, measured as seconds since 1st Jan
1970. See also strftime() , strptime() and getftime() .
|
| Return the natural logarithm (base e) of {expr} as a Float .
{expr} must evaluate to a Float or a Number in the range
(0, inf].
Returns 0.0 if {expr} is not a Float or a Number .
Examples:
|
| Return the logarithm of Float {expr} to base 10 as a Float .
{expr} must evaluate to a Float or a Number .
Returns 0.0 if {expr} is not a Float or a Number .
Examples:
|
| {expr1} must be a List , String , Blob or Dictionary .
When {expr1} is a List or Dictionary , replace each
item in {expr1} with the result of evaluating {expr2}.
For a Blob each byte is replaced.
For a String , each character, including composing
characters, is replaced.
If the item type changes you may want to use mapnew() to
create a new List or Dictionary. This is required when using
Vim9 script.
|
| When {dict} is omitted or zero: Return the rhs of mapping
{name} in mode {mode}. The returned String has special
characters translated like in the output of the ":map" command
listing. When {dict} is TRUE a dictionary is returned, see
below. To get a list of all mappings see maplist() .
|
| Check if there is a mapping that matches with {name} in mode
{mode}. See maparg() for {mode} and special names in
{name}.
When {abbr} is there and it is TRUE use abbreviations
instead of mappings.
A match happens with a mapping that starts with {name} and
with a mapping which is equal to the start of {name}.
|
| Restore a mapping from a dictionary, possibly returned by
maparg() or maplist() . A buffer mapping, when dict.buffer
is true, is set on the current buffer; it is up to the caller
to ensure that the intended buffer is the current buffer. This
feature allows copying mappings from one buffer to another.
The dict.mode value may restore a single mapping that covers
more than one mode, like with mode values of '!', ' ', 'nox',
or 'v'.
|
| When {expr} is a List then this returns the index of the
first item where {pat} matches. Each item is used as a
String, Lists and Dictionaries are used as echoed.
|
| 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
match using matchdelete() . The ID is bound to the window.
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.
|
| 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
sets buffer line boundaries to redraw screen. It is supposed
to be used when fast match additions and deletions are
required, for example to highlight matching parentheses.
|
| Selects the {nr} match item, as set with a :match ,
:2match or :3match command.
Return a List with two elements:
The name of the highlight group used
The pattern used.
When {nr} is not 1, 2 or 3 returns an empty List .
When there is no match item set returns ['', ''].
This is useful to save and restore a :match .
Highlighting matches using the :match commands are limited
to three matches. matchadd() does not have this limitation.
|
| Deletes a match with ID {id} previously defined by matchadd()
or one of the :match commands. Returns 0 if successful,
otherwise -1. See example for matchadd() . All matches can
be deleted in one operation by clearmatches() .
If {win} is specified, use the window with this number or
window ID instead of the current window.
|
| Same as match() , but return the index of first character
after the match. Example:
|
| If {list} is a list of strings, then returns a List with all
the strings in {list} that fuzzy match {str}. The strings in
the returned list are sorted based on the matching score.
|
| Same as matchfuzzy() , but returns the list of matched
strings, the list of character positions where characters
in {str} matches and a list of matching scores. You can
use byteidx() to convert a character position to a byte
position.
|
| Same as match() , but return a List . The first item in the
list is the matched string, same as what matchstr() would
return. Following items are submatches, like "\1", "\2", etc.
in :substitute . When an optional submatch didn't match an
empty string is used. Example:
|
| Same as match() , but return the matched string. Example:
|
| Same as matchstr() , but return the matched string, the start
position and the end position of the match. Example:
|
| Return the maximum value of all items in {expr}. Example:
|
| Return information about the specified menu {name} in
mode {mode}. The menu name should be specified without the
shortcut character ('&'). If {name} is "", then the top-level
menu names are returned.
|
| Return the minimum value of all items in {expr}. Example:
|
| |
| Return a string that indicates the current mode.
If [expr] is supplied and it evaluates to a non-zero Number or
a non-empty String (non-zero-arg ), then the full mode is
returned, otherwise only the first letter is returned.
Also see state() .
|
| Return the line number of the first line at or below {lnum}
that is not blank. Example:
|
| Return a string with a single character, which has the number
value {expr}. Examples:
|
| Bitwise OR on the two arguments. The arguments are converted
to a number. A List, Dict or Float argument causes an error.
Also see and() and xor() .
Example:
|
| Shorten directory names in the path {path} and return the
result. The tail, the file name, is kept as-is. The other
components in the path are reduced to {len} letters in length.
If {len} is omitted or smaller than 1 then 1 is used (single
letters). Leading '~' and '.' characters are kept. Examples:
|
| Evaluate Perl expression {expr} in scalar context and return
its result converted to Vim data structures. If value can't be
converted, it is returned as a string Perl representation.
Note: If you want an array or hash, {expr} must return a
reference to it.
Example:
|
| Return the power of {x} to the exponent {y} as a Float .
{x} and {y} must evaluate to a Float or a Number .
Returns 0.0 if {x} or {y} is not a Float or a Number .
Examples:
|
| Return the line number of the first line at or above {lnum}
that is not blank. Example:
|
| Return a String with {fmt}, where "%" items are replaced by
the formatted form of their respective arguments. Example:
|
| Returns the effective prompt text for buffer {buf}. {buf} can
be a buffer name or number. See prompt-buffer .
|
| Set prompt callback for buffer {buf} to {expr}. When {expr}
is an empty string the callback is removed. This has only
effect if {buf} has 'buftype' set to "prompt".
|
| Set a callback for buffer {buf} to {expr}. When {expr} is an
empty string the callback is removed. This has only effect if
{buf} has 'buftype' set to "prompt".
|
| Set prompt for buffer {buf} to {text}. You most likely want
{text} to end in a space.
The result is only visible if {buf} has 'buftype' set to
"prompt". Example:
|
| If the popup menu (see ins-completion-menu ) is not visible,
returns an empty Dictionary , otherwise, returns a
Dictionary with the following keys:
height nr of items visible
width screen cells
row top screen row (0 first row)
col leftmost screen column (0 first col)
size total nr of items
scrollbar TRUE if scrollbar is visible
|
| Returns non-zero when the popup menu is visible, zero
otherwise. See ins-completion-menu .
This can be used to avoid some things that would remove the
popup menu.
|
| 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
'encoding').
Lists are represented as Vim List type.
Dictionaries are represented as Vim Dictionary type with
keys converted to strings.
Note that in a :def function local variables are not visible
to {expr}.
|
| 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).
Lists are represented as Vim List type.
Dictionaries are represented as Vim Dictionary type,
non-string keys result in error.
Note that in a :def function local variables are not visible
to {expr}.
|
| Evaluate Python expression {expr} and return its result
converted to Vim data structures.
Uses Python 2 or 3, see python_x and 'pyxversion'.
See also: pyeval() , py3eval()
|
| Return a pseudo-random Number generated with an xoshiro128**
algorithm using seed {expr}. The returned number is 32 bits,
also on 64 bits systems, for consistency.
{expr} can be initialized by srand() and will be updated by
rand(). If {expr} is omitted, an internal seed value is used
and updated.
Returns -1 if {expr} is invalid.
|
| Returns a List with Numbers:
- If only {expr} is specified: [0, 1, ..., {expr} - 1]
- If {max} is specified: [{expr}, {expr} + 1, ..., {max}]
- If {stride} is specified: [{expr}, {expr} + {stride}, ...,
{max}] (increasing {expr} with {stride} each time, not
producing a value past {max}).
When the maximum is one before the start the result is an
empty list. When the maximum is more than one before the
start this is an error.
Examples:
|
| Read file {fname} in binary mode and return a Blob .
If {offset} is specified, read the file from the specified
offset. If it is a negative value, it is used as an offset
from the end of the file. E.g., to read the last 12 bytes:
|
| Return a list with file and directory names in {directory}.
You can also use glob() if you don't need to do complicated
things, such as limiting the number of matches.
The list will be sorted (case sensitive), see the {dict}
argument below for changing the sort order.
|
| Read file {fname} and return a List , each line of the file
as an item. Lines are broken at NL characters. Macintosh
files 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 {type} 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.
Otherwise:
- CR characters that appear before a NL are removed.
- Whether the last line ends in a NL or not does not matter.
- When 'encoding' is Unicode any UTF-8 byte order mark is
removed from the text.
When {max} is given this specifies the maximum number of lines
to be read. Useful if you only want to check the first ten
lines of a file:
|
| {func} is called for every item in {object}, which can be a
String , List or a Blob . {func} is called with two
arguments: the result so far and current item. After
processing all items the result is returned.
|
| Returns the single letter name of the register being executed.
Returns an empty string when no register is being executed.
See @ .
|
| Returns the single letter name of the register being recorded.
Returns an empty string when not recording. See q .
|
| Return an item that represents a time value. The item is a
list with items that depend on the system. In Vim 9 script
the type list can be used.
The item can be passed to reltimestr() to convert it to a
string or reltimefloat() to convert to a Float. For
example, to see the time spent in function Work():
|
| Return a Float that represents the time value of {time}.
Example:
|
| Return a String that represents the time value of {time}.
This is the number of seconds, a dot and the number of
microseconds. Example:
|
| Without {end}: Remove the item at {idx} from List {list} and
return the item.
With {end}: Remove items from {idx} to {end} (inclusive) and
return a List with these items. When {idx} points to the same
item as {end} a list with one item is returned. When {end}
points to an item before {idx} this is an error.
See list-index for possible values of {idx} and {end}.
Returns zero on error.
Example:
|
| Rename the file by the name {from} to the name {to}. This
should also work to move files across file systems. The
result is a Number, which is 0 if the file was renamed
successfully, and non-zero when the renaming failed.
NOTE: If {to} exists it is overwritten without warning.
This function is not available in the sandbox .
|
| Repeat {expr} {count} times and return the concatenated
result. Example:
|
| On MS-Windows, when {filename} is a shortcut (a .lnk file),
returns the path the shortcut points to in a simplified form.
When {filename} is a symbolic link or junction point, return
the full path to the target. If the target of junction is
removed, return {filename}.
On Unix, repeat resolving symbolic links in all path
components of {filename} and return the simplified result.
To cope with link cycles, resolving of symbolic links is
stopped after 100 iterations.
On other systems, return the simplified {filename}.
The simplification step is done as by simplify() .
resolve() keeps a leading path component specifying the
current directory (provided the result is still a relative
path name) and also keeps a trailing path separator.
|
| Reverse the order of items in {object}. {object} can be a
List , a Blob or a String . For a List and a Blob the
items are reversed in-place and {object} is returned.
For a String a new String is returned.
Returns zero if {object} is not a List, Blob or a String.
If you want a List or Blob to remain unmodified make a copy
first:
|
| Round off {expr} to the nearest integral value and return it
as a Float . If {expr} lies halfway between two integral
values, then use the larger one (away from zero).
{expr} must evaluate to a Float or a Number .
Returns 0.0 if {expr} is not a Float or a Number .
Examples:
|
| Evaluate Ruby expression {expr} and return its result
converted to Vim data structures.
Numbers, floats and strings are returned as they are (strings
are copied though).
Arrays are represented as Vim List type.
Hashes are represented as Vim Dictionary type.
Other objects are represented as strings resulted from their
"Object#to_s" method.
Note that in a :def function local variables are not visible
to {expr}.
|
| Like screenchar() , but return the attribute. This is a rather
arbitrary number that can only be used to compare to the
attribute at other positions.
Returns -1 when row or col is out of range.
|
| The result is a Number, which is the character at position
[row, col] on the screen. This works for every possible
screen position, also status lines, window separators and the
command line. The top left position is row one, column one
The character excludes composing characters. For double-byte
encodings it may only be the first byte.
This is mainly to be used for testing.
Returns -1 when row or col is out of range.
|
| The result is a List of Numbers. The first number is the same
as what screenchar() returns. Further numbers are
composing characters on top of the base character.
This is mainly to be used for testing.
Returns an empty List when row or col is out of range.
|
| The result is a Number, which is the current screen column of
the cursor. The leftmost column has number 1.
This function is mainly used for testing.
|
| The result is a Dict with the screen position of the text
character in window {winid} at buffer line {lnum} and column
{col}. {col} is a one-based byte index.
The Dict has these members:
row screen row
col first screen column
endcol last screen column
curscol cursor screen column
If the specified position is not visible, all values are zero.
The "endcol" value differs from "col" when the character
occupies more than one screen cell. E.g. for a Tab "col" can
be 1 and "endcol" can be 8.
The "curscol" value is where the cursor would be placed. For
a Tab it would be the same as "endcol", while for a double
width character it would be the same as "col".
The conceal feature is ignored here, the column numbers are
as if 'conceallevel' is zero. You can set the cursor to the
right position and use screencol() to get the value with
conceal taken into account.
If the position is in a closed fold the screen position of the
first character is returned, {col} is not used.
Returns an empty Dict if {winid} is invalid.
|
| The result is a Number, which is the current screen row of the
cursor. The top line has number one.
This function is mainly used for testing.
Alternatively you can use winline() .
|
| The result is a String that contains the base character and
any composing characters at position [row, col] on the screen.
This is like screenchars() but returning a String with the
characters.
This is mainly to be used for testing.
Returns an empty String when row or col is out of range.
|
| Search for regexp pattern {pattern}. The search starts at the
cursor position (you can use cursor() to set it).
|
| Get or update the last search count, like what is displayed
without the "S" flag in 'shortmess'. This works even if
'shortmess' does contain the "S" flag.
|
| Search for the declaration of {name}.
|
| Search for the match of a nested start-end pair. This can be
used to find the "endif" that matches an "if", while other
if/endif pairs in between are ignored.
The search starts at the cursor. The default is to search
forward, include 'b' in {flags} to search backward.
If a match is found, the cursor is positioned at it and the
line number is returned. If no match is found 0 or -1 is
returned and the cursor doesn't move. No error message is
given.
|
| Same as searchpair() , but returns a List with the line and
column position of the match. The first element of the List
is the line number and the second element is the byte index of
the column position of the match. If no match is found,
returns [0, 0].
|
| Same as search() , but returns a List with the line and
column position of the match. The first element of the List
is the line number and the second element is the byte index of
the column position of the match. If no match is found,
returns [0, 0].
Example:
|
| Return a list of available server names, one per line.
When there are no servers or the information is not available
an empty string is returned. See also clientserver .
only available when compiled with the +clientserver feature
Example:
|
| Set line {lnum} to {text} in buffer {buf}. This works like
setline() for the specified buffer.
|
| Set option or local variable {varname} in buffer {buf} to
{val}.
This also works for a global or local window option, but it
doesn't work for a global or local window variable.
For a local window option the global value is unchanged.
For the use of {buf}, see bufname() above.
The {varname} argument is a string.
Note that the variable name without "b:" must be used.
Examples:
|
| Specify overrides for cell widths of character ranges. This
tells Vim how wide characters are when displayed in the
terminal, counted in screen cells. The values override
'ambiwidth'. Example:
|
| Same as setpos() but uses the specified column number as the
character index instead of the byte index in the line.
|
| Set the current character search information to {dict},
which contains one or more of the following entries:
|
| Set the command line to {str} and set the cursor position to
{pos}.
If {pos} is omitted, the cursor is positioned after the text.
Returns 0 when successful, 1 when not editing the command
line.
|
| Set the cursor position in the command line to byte position
{pos}. The first position is 1.
Use getcmdpos() to obtain the current position.
Only works while editing the command line, thus you must use
c_CTRL-\_e , c_CTRL-R_= or c_CTRL-R_CTRL-R with '='. For
c_CTRL-\_e and c_CTRL-R_CTRL-R with '=' the position is
set after the command line is set to the expression. For
c_CTRL-R_= it is set after evaluating the expression but
before inserting the resulting text.
When the number is too big the cursor is put at the end of the
line. A number smaller than one has undefined results.
Returns 0 when successful, 1 when not editing the command
line.
|
| Same as cursor() but uses the specified column number as the
character index instead of the byte index in the line.
|
| Set environment variable {name} to {val}. Example:
|
| Set the file permissions for {fname} to {mode}.
{mode} must be a string with 9 characters. It is of the form
"rwxrwxrwx", where each group of "rwx" flags represent, in
turn, the permissions of the owner of the file, the group the
file belongs to, and other users. A '-' character means the
permission is off, any other character means on. Multi-byte
characters are not supported.
|
| Set line {lnum} of the current buffer to {text}. To insert
lines use append() . To set lines in another buffer use
setbufline() . Any text properties in {lnum} are cleared.
|
| Create or replace or add to the location list for window {nr}.
{nr} can be the window number or the window-ID .
When {nr} is zero the current window is used.
|
| Restores a list of matches saved by getmatches() for the
current window. Returns 0 if successful, otherwise -1. All
current matches are cleared before the list is restored. See
example for getmatches() .
If {win} is specified, use the window with this number or
window ID instead of the current window.
|
| Set the position for String {expr}. Possible values:
. the cursor
'x mark x
|
| Create or replace or add to the quickfix list.
|
| Set the register {regname} to {value}.
If {regname} is "" or "@", the unnamed register '"' is used.
The {regname} argument is a string. In Vim9-script
{regname} must be one character.
|
| Set tab-local variable {varname} to {val} in tab page {tabnr}.
t:var
The {varname} argument is a string.
Note that autocommands are blocked, side effects may not be
triggered, e.g. when setting 'filetype'.
Note that the variable name without "t:" must be used.
Tabs are numbered starting with one.
This function is not available in the sandbox .
|
| Set option or local variable {varname} in window {winnr} to
{val}.
Tabs are numbered starting with one. For the current tabpage
use setwinvar() .
{winnr} can be the window number or the window-ID .
When {winnr} is zero the current window is used.
Note that autocommands are blocked, side effects may not be
triggered, e.g. when setting 'filetype' or 'syntax'.
This also works for a global or local buffer option, but it
doesn't work for a global or local buffer variable.
For a local buffer option the global value is unchanged.
Note that the variable name without "w:" must be used.
Examples:
|
| Modify the tag stack of the window {nr} using {dict}.
{nr} can be the window number or the window-ID .
|
| Like settabwinvar() for the current tab page.
Examples:
|
| Returns a String with 64 hex characters, which is the SHA256
checksum of {string}.
|
| Escape {string} for use as a shell command argument.
When the 'shell' contains powershell (MS-Windows) or pwsh
(MS-Windows, Linux, and macOS) then it will enclose {string}
in single quotes and will double up all internal single
quotes.
On MS-Windows, when 'shellslash' is not set, it will enclose
{string} in double quotes and double all double quotes within
{string}.
Otherwise it will enclose {string} in single quotes and
replace all "'" with "'''".
|
| Returns the effective value of 'shiftwidth'. This is the
'shiftwidth' value unless it is zero, in which case it is the
'tabstop' value. This function was introduced with patch
7.3.694 in 2012, everybody should have it by now (however it
did not allow for the optional {col} argument until 8.1.542).
|
| Define a new sign named {name} or modify the attributes of an
existing sign. This is similar to the :sign-define command.
|
| Get a list of defined signs and their attributes.
This is similar to the :sign-list command.
|
| Return a list of signs placed in a buffer or all the buffers.
This is similar to the :sign-place-list command.
|
| Open the buffer {buf} or jump to the window that contains
{buf} and position the cursor at sign {id} in group {group}.
This is similar to the :sign-jump command.
|
| Place the sign defined as {name} at line {lnum} in file or
buffer {buf} and assign {id} and {group} to sign. This is
similar to the :sign-place command.
|
| Place one or more signs. This is similar to the
sign_place() function. The {list} argument specifies the
List of signs to place. Each list item is a dict with the
following sign attributes:
buffer Buffer name or number. For the accepted
values, see bufname() .
group Sign group. {group} functions as a namespace
for {id}, thus two groups can use the same
IDs. If not specified or set to an empty
string, then the global group is used. See
sign-group for more information.
id Sign identifier. If not specified or zero,
then a new unique identifier is allocated.
Otherwise the specified number is used. See
sign-identifier for more information.
lnum Line number in the buffer where the sign is to
be placed. For the accepted values, see
line() .
name Name of the sign to place. See sign_define()
for more information.
priority Priority of the sign. When multiple signs are
placed on a line, the sign with the highest
priority is used. If not specified, the
default value of 10 is used. See
sign-priority for more information.
|
| Deletes a previously defined sign {name}. This is similar to
the :sign-undefine command. If {name} is not supplied, then
deletes all the defined signs.
|
| Remove a previously placed sign in one or more buffers. This
is similar to the :sign-unplace command.
|
| Remove previously placed signs from one or more buffers. This
is similar to the sign_unplace() function.
|
| Simplify the file name as much as possible without changing
the meaning. Shortcuts (on MS-Windows) or symbolic links (on
Unix) are not resolved. If the first path component in
{filename} designates the current directory, this will be
valid for the result as well. A trailing path separator is
not removed either. On Unix "//path" is unchanged, but
"///path" is simplified to "/path" (this follows the Posix
standard).
Example:
|
| Return the sine of {expr}, measured in radians, as a Float .
{expr} must evaluate to a Float or a Number .
Returns 0.0 if {expr} is not a Float or a Number .
Examples:
|
| Return the hyperbolic sine of {expr} as a Float in the range
[-inf, inf].
{expr} must evaluate to a Float or a Number .
Returns 0.0 if {expr} is not a Float or a Number .
Examples:
|
| Sort the items in {list} in-place. Returns {list}.
|
| Return the sound-folded equivalent of {word}. Uses the first
language in 'spelllang' for the current window that supports
soundfolding. 'spell' must be set. When no sound folding is
possible the {word} is returned unmodified.
This can be used for making spelling suggestions. Note that
the method can be quite slow.
|
| Without argument: The result is the badly spelled word under
or after the cursor. The cursor is moved to the start of the
bad word. When no bad word is found in the cursor line the
result is an empty string and the cursor doesn't move.
|
| Return a List with spelling suggestions to replace {word}.
When {max} is given up to this number of suggestions are
returned. Otherwise up to 25 suggestions are returned.
|
| Make a List out of {string}. When {pattern} is omitted or
empty each white-separated sequence of characters becomes an
item.
Otherwise the string is split where {pattern} matches,
removing the matched characters. 'ignorecase' is not used
here, add \c to ignore case. /\c
When the first or last item is empty it is omitted, unless the
{keepempty} argument is given and it's non-zero.
Other empty items are kept when {pattern} matches at least one
character or when {keepempty} is non-zero.
Example:
|
| Return the non-negative square root of Float {expr} as a
Float .
{expr} must evaluate to a Float or a Number . When {expr}
is negative the result is NaN (Not a Number). Returns 0.0 if
{expr} is not a Float or a Number .
Examples:
|
| Initialize seed used by rand() :
- If {expr} is not given, seed values are initialized by
reading from /dev/urandom, if possible, or using time(NULL)
a.k.a. epoch time otherwise; this only has second accuracy.
- If {expr} is given it must be a Number. It is used to
initialize the seed values. This is useful for testing or
when a predictable sequence is intended.
|
| Convert String {string} to a Float. This mostly works the
same as when using a floating point number in an expression,
see floating-point-format . But it's a bit more permissive.
E.g., "1e40" is accepted, while in an expression you need to
write "1.0e40". The hexadecimal form "0x123" is also
accepted, but not others, like binary or octal.
When {quoted} is present and non-zero then embedded single
quotes before the dot are ignored, thus "1'000.0" is a
thousand.
Text after the number is silently ignored.
The decimal point is always '.', no matter what the locale is
set to. A comma ends the number: "12,345.67" is converted to
12.0. You can strip out thousands separators with
substitute() :
|
| Return a list containing the number values which represent
each character in String {string}. Examples:
|
| Convert string {string} to a number.
{base} is the conversion base, it can be 2, 8, 10 or 16.
When {quoted} is present and non-zero then embedded single
quotes are ignored, thus "1'000'000" is a million.
|
| The result is a Number, which is the number of characters
in String {string}. Composing characters are ignored.
strchars() can count the number of characters, counting
composing characters separately.
|
| Like strpart() but using character index and length instead
of byte index and length.
When {skipcc} is omitted or zero, composing characters are
counted separately.
When {skipcc} set to 1, Composing characters are ignored,
similar to slice() .
When a character index is used where a character does not
exist it is omitted and counted as one character. For
example:
|
| The result is a Number, which is the number of characters
in String {string}.
When {skipcc} is omitted or zero, composing characters are
counted separately.
When {skipcc} set to 1, Composing characters are ignored.
strcharlen() always does this.
|
| The result is a Number, which is the number of display cells
String {string} occupies on the screen when it starts at {col}
(first column is zero). When {col} is omitted zero is used.
Otherwise it is the screen column where to start. This
matters for Tab characters.
The option settings of the current window are used. This
matters for anything that's displayed differently, such as
'tabstop' and 'display'.
When {string} contains characters with East Asian Width Class
Ambiguous, this function's return value depends on 'ambiwidth'.
Returns zero on error.
Also see strlen() , strwidth() and strchars() .
|
| The result is a String, which is a formatted date and time, as
specified by the {format} string. The given {time} is used,
or the current time if no time is given. The accepted
{format} depends on your system, thus this is not portable!
See the manual page of the C function strftime() for the
format. The maximum length of the result is 80 characters.
See also localtime() , getftime() and strptime() .
The language can be changed with the :language command.
Examples:
|
| Get a Number corresponding to the character at {index} in
{str}. This uses a zero-based character index, not a byte
index. Composing characters are considered separate
characters here. Use nr2char() to convert the Number to a
String.
Returns -1 if {index} is invalid.
Also see strcharpart() and strchars() .
|
| The result is a Number, which gives the byte index in
{haystack} of the first occurrence of the String {needle}.
If {start} is specified, the search starts at index {start}.
This can be used to find a second match:
|
| Return {expr} converted to a String. If {expr} is a Number,
Float, String, Blob or a composition of them, then the result
can be parsed back with eval() .
{expr} type result
String 'string' (single quotes are doubled)
Number 123
Float 123.123456 or 1.123456e8
Funcref function('name')
Blob 0z00112233.44556677.8899
List [item, item]
Dictionary {key: value, key: value}
Class class SomeName
Object object of SomeName {lnum: 1, col: 3}
|
| The result is a Number, which is the length of the String
{string} in bytes.
If the argument is a Number it is first converted to a String.
For other types an error is given and zero is returned.
If you want to count the number of multibyte characters use
strchars() .
Also see len() , strdisplaywidth() and strwidth() .
|
| The result is a String, which is part of {src}, starting from
byte {start}, with the byte length {len}.
When {chars} is present and TRUE then {len} is the number of
characters positions (composing characters are not counted
separately, thus "1" means one base character and any
following composing characters).
To count {start} as characters instead of bytes use
strcharpart() .
|
| The result is a Number, which is a unix timestamp representing
the date and time in {timestring}, which is expected to match
the format specified in {format}.
|
| The result is a Number, which gives the byte index in
{haystack} of the last occurrence of the String {needle}.
When {start} is specified, matches beyond this index are
ignored. This can be used to find a match before a previous
match:
|
| The result is a String, which is {string} with all unprintable
characters translated into printable characters 'isprint' .
Like they are shown in a window. Example:
|
| The result is a Number, which is the number of display cells
String {string} occupies. A Tab character is counted as one
cell, alternatively use strdisplaywidth() .
When {string} contains characters with East Asian Width Class
Ambiguous, this function's return value depends on 'ambiwidth'.
Returns zero on error.
Also see strlen() , strdisplaywidth() and strchars() .
|
| Only for an expression in a :substitute command or
substitute() function.
Returns the {nr}'th submatch of the matched text. When {nr}
is 0 the whole matched text is returned.
Note that a NL in the string can stand for a line break of a
multi-line match or a NUL character in the text.
Also see sub-replace-expression .
|
| The result is a String, which is a copy of {string}, in which
the first match of {pat} is replaced with {sub}.
When {flags} is "g", all matches of {pat} in {string} are
replaced. Otherwise {flags} should be "".
|
| The result is a dictionary, which holds information about the
swapfile {fname}. The available fields are:
version Vim version
user user name
host host name
fname original file name
pid PID of the Vim process that created the swap
file
mtime last modification time in seconds
inode Optional: INODE number of the file
dirty 1 if file was modified, 0 if not
Note that "user" and "host" are truncated to at most 39 bytes.
In case of failure an "error" item is added with the reason:
Cannot open file: file not found or in accessible
Cannot read file: cannot read first block
Not a swap file: does not contain correct block ID
Magic number mismatch: Info in first block is invalid
|
| The result is the swap file path of the buffer {expr}.
For the use of {buf}, see bufname() above.
If buffer {buf} is the current buffer, the result is equal to
:swapname (unless there is no swap file).
If buffer {buf} has no swap file, returns an empty string.
|
| The result is a List with currently three items:
- The first item in the list is 0 if the character at the
position {lnum} and {col} is not part of a concealable
region, 1 if it is. {lnum} is used like with
getline() .
- The second item in the list is a string. If the first item
is 1, the second item contains the text which will be
displayed in place of the concealed text, depending on the
current setting of 'conceallevel' and 'listchars'.
- The third and final item in the list is a number
representing the specific syntax region matched in the
line. When the character is not concealed the value is
zero. This allows detection of the beginning of a new
concealable region if there are two consecutive regions
with the same replacement character. For an example, if
the text is "123456" and both "23" and "45" are concealed
and replaced by the character "X", then:
call returns
synconcealed(lnum, 1) [0, '', 0]
synconcealed(lnum, 2) [1, 'X', 1]
synconcealed(lnum, 3) [1, 'X', 1]
synconcealed(lnum, 4) [1, 'X', 2]
synconcealed(lnum, 5) [1, 'X', 2]
synconcealed(lnum, 6) [0, '', 0]
|
| The result is a Number, which is the syntax ID at the position
{lnum} and {col} in the current window.
The syntax ID can be used with synIDattr() and
synIDtrans() to obtain syntax information about text.
|
| The result is a String, which is the {what} attribute of
syntax ID {synID}. This can be used to obtain information
about a syntax item.
{mode} can be "gui", "cterm" or "term", to get the attributes
for that mode. When {mode} is omitted, or an invalid value is
used, the attributes for the currently active highlighting are
used (GUI, cterm or term).
Use synIDtrans() to follow linked highlight groups.
{what} result
"name" the name of the syntax item
"fg" foreground color (GUI: color name used to set
the color, cterm: color number as a string,
term: empty string)
"bg" background color (as with "fg")
"font" font name (only available in the GUI)
highlight-font
"sp" special color for the GUI (as with "fg")
highlight-guisp
"ul" underline color for cterm: number as a string
"fg#" like "fg", but for the GUI and the GUI is
running the name in "#RRGGBB" form
"bg#" like "fg#" for "bg"
"sp#" like "fg#" for "sp"
"bold" "1" if bold
"italic" "1" if italic
"reverse" "1" if reverse
"inverse" "1" if inverse (= reverse)
"standout" "1" if standout
"underline" "1" if underlined
"undercurl" "1" if undercurled
"strike" "1" if strikethrough
"nocombine" "1" if nocombine
|
| The result is a Number, which is the translated syntax ID of
{synID}. This is the syntax group ID of what is being used to
highlight the character. Highlight links given with
":highlight link" are followed.
|
| Return a List , which is the stack of syntax items at the
position {lnum} and {col} in the current window. {lnum} is
used like with getline() . Each item in the List is an ID
like what synID() returns.
The first item in the List is the outer region, following are
items contained in that one. The last one is what synID()
returns, unless not the whole item is highlighted or it is a
transparent item.
This function is useful for debugging a syntax file.
Example that shows the syntax stack under the cursor:
|
| Get the output of the shell command {expr} as a String . See
systemlist() to get the output as a List .
|
| Same as system() , but returns a List with lines (parts of
output separated by NL) with NULs transformed into NLs. Output
is the same as readfile() will output with {binary} argument
set to "b", except that there is no extra empty item when the
result ends in a NL.
Note that on MS-Windows you may get trailing CR characters.
|
| The result is a List , where each item is the number of the
buffer associated with each window in the current tab page.
{arg} specifies the number of the tab page to be used. When
omitted the current tab page is used.
When {arg} is invalid the number zero is returned.
To get a list of all buffers in all tabs use this:
|
| The result is a Number, which is the number of the current
tab page. The first tab page has number 1.
|
| Like winnr() but for tab page {tabarg}.
{tabarg} specifies the number of tab page to be used.
{arg} is used like with winnr() :
- When omitted the current window number is returned. This is
the window which will be used when going to this tab page.
- When "$" the number of windows is returned.
- When "#" the previous window nr is returned.
Useful examples:
|
| Returns a List with the file names used to search for tags
for the current buffer. This is the 'tags' option expanded.
|
| Returns a List of tags matching the regular expression {expr}.
|
| Return the tangent of {expr}, measured in radians, as a Float
in the range [-inf, inf].
{expr} must evaluate to a Float or a Number .
Returns 0.0 if {expr} is not a Float or a Number .
Examples:
|
| Return the hyperbolic tangent of {expr} as a Float in the
range [-1, 1].
{expr} must evaluate to a Float or a Number .
Returns 0.0 if {expr} is not a Float or a Number .
Examples:
|
| The result is a String, which is the name of a file that
doesn't exist. It can be used for a temporary file. The name
is different for at least 26 consecutive calls. Example:
|
| Return a list with information about timers.
When {id} is given only information about this timer is
returned. When timer {id} does not exist an empty list is
returned.
When {id} is omitted information about all timers is returned.
|
| Pause or unpause a timer. A paused timer does not invoke its
callback when its time expires. Unpausing a timer may cause
the callback to be invoked almost immediately if enough time
has passed.
|
| Create a timer and return the timer ID.
|
| Stop a timer. The timer callback will no longer be invoked.
{timer} is an ID returned by timer_start(), thus it must be a
Number. If {timer} does not exist there is no error.
|
| Stop all timers. The timer callbacks will no longer be
invoked. Useful if a timer is misbehaving. If there are no
timers there is no error.
|
| The result is a copy of the String given, with all uppercase
characters turned into lowercase (just like applying gu to
the string). Returns an empty string on error.
|
| The result is a copy of the String given, with all lowercase
characters turned into uppercase (just like applying gU to
the string). Returns an empty string on error.
|
| The result is a copy of the {src} string with all characters
which appear in {fromstr} replaced by the character in that
position in the {tostr} string. Thus the first character in
{fromstr} is translated into the first character in {tostr}
and so on. Exactly like the unix "tr" command.
This code also deals with multibyte characters properly.
|
| Return {text} as a String where any character in {mask} is
removed from the beginning and/or end of {text}.
|
| Return the largest integral value with magnitude less than or
equal to {expr} as a Float (truncate towards zero).
{expr} must evaluate to a Float or a Number .
Returns 0.0 if {expr} is not a Float or a Number .
Examples:
|
| The result is a Number representing the type of {expr}.
Instead of using the number directly, it is better to use the
v:t_ variable that has the value:
Number: 0 v:t_number
String: 1 v:t_string
Funcref: 2 v:t_func
List: 3 v:t_list
Dictionary: 4 v:t_dict
Float: 5 v:t_float
Boolean: 6 v:t_bool (v:false and v:true)
None: 7 v:t_none (v:null and v:none)
Job: 8 v:t_job
Channel: 9 v:t_channel
Blob: 10 v:t_blob
Class: 12 v:t_class
Object: 13 v:t_object
Typealias: 14 v:t_typealias
For backward compatibility, this method can be used:
|
| Return the name of the undo file that would be used for a file
with name {name} when writing. This uses the 'undodir'
option, finding directories that exist. It does not check if
the undo file exists.
{name} is always expanded to the full path, since that is what
is used internally.
If {name} is empty undofile() returns an empty string, since a
buffer without a file name will not write an undo file.
Useful in combination with :wundo and :rundo .
When compiled without the +persistent_undo option this always
returns an empty string.
|
| Return the current state of the undo tree for the current
buffer, or for a specific buffer if {buf} is given. The
result is a dictionary with the following items:
"seq_last" The highest undo sequence number used.
"seq_cur" The sequence number of the current position in
the undo tree. This differs from "seq_last"
when some changes were undone.
"time_cur" Time last used for :earlier and related
commands. Use strftime() to convert to
something readable.
"save_last" Number of the last file write. Zero when no
write yet.
"save_cur" Number of the current position in the undo
tree.
"synced" Non-zero when the last undo block was synced.
This happens when waiting from input from the
user. See undo-blocks .
"entries" A list of dictionaries with information about
undo blocks.
|
| Remove second and succeeding copies of repeated adjacent
{list} items in-place. Returns {list}. If you want a list
to remain unmodified make a copy first:
|
| Return a List with all the values of {dict}. The List is
in arbitrary order. Also see items() and keys() .
Returns zero if {dict} is not a Dict .
|
| The result is a Number, which is the screen column of the file
position given with {expr}. That is, the last screen position
occupied by the character at that position, when the screen
would be of unlimited width. When there is a <Tab> at the
position, the returned Number will be the column at the end of
the <Tab> . For example, for a <Tab> in column 1, with 'ts'
set to 8, it returns 8. conceal is ignored.
For the byte position use col() .
|
| The result is a Number, which is the byte index of the
character in window {winid} at buffer line {lnum} and virtual
column {col}.
|
| The result is a String, which describes the last Visual mode
used in the current buffer. Initially it returns an empty
string, but once Visual mode has been used, it returns "v",
"V", or "<CTRL-V>" (a single CTRL-V character) for
character-wise, line-wise, or block-wise Visual mode
respectively.
Example:
|
| Returns TRUE when the wildmenu is active and FALSE
otherwise. See 'wildmenu' and 'wildmode'.
This can be used in mappings to handle the 'wildcharm' option
gracefully. (Makes only sense with mapmode-c mappings).
|
| Like execute() but in the context of window {id}.
The window will temporarily be made the current window,
without triggering autocommands or changing directory. When
executing {command} autocommands will be triggered, this may
have unexpected side effects. Use :noautocmd if needed.
Example:
|
| Returns a List with window-ID s for windows that contain
buffer {bufnr}. When there is none the list is empty.
|
| Get the window-ID for the specified window.
When {win} is missing use the current window.
With {win} this is the window number. The top window has
number 1.
Without {tab} use the current tab, otherwise the tab with
number {tab}. The first tab has number one.
Return zero if the window cannot be found.
|
| Return the type of the window:
"autocmd" autocommand window. Temporary window
used to execute autocommands.
"command" command-line window cmdwin
(empty) normal window
"loclist" location-list-window
"popup" popup window popup
"preview" preview window preview-window
"quickfix" quickfix-window
"unknown" window {nr} not found
|
| Go to window with ID {expr}. This may also change the current
tabpage.
Return TRUE if successful, FALSE if the window cannot be found.
|
| Return a list with the tab number and window number of window
with ID {expr}: [tabnr, winnr].
Return [0, 0] if the window cannot be found.
|
| Return the window number of window with ID {expr}.
Return 0 if the window cannot be found in the current tabpage.
|
| Move window {nr}'s vertical separator (i.e., the right border)
by {offset} columns, as if being dragged by the mouse. {nr}
can be a window number or window-ID . A positive {offset}
moves right and a negative {offset} moves left. Moving a
window's vertical separator will change the width of the
window and the width of other windows adjacent to the vertical
separator. The magnitude of movement may be smaller than
specified (e.g., as a consequence of maintaining
'winminwidth'). Returns TRUE if the window can be found and
FALSE otherwise.
This will fail for the rightmost window and a full-width
window, since it has no separator on the right.
Only works for the current tab page.
|
| Move window {nr}'s status line (i.e., the bottom border) by
{offset} rows, as if being dragged by the mouse. {nr} can be a
window number or window-ID . A positive {offset} moves down
and a negative {offset} moves up. Moving a window's status
line will change the height of the window and the height of
other windows adjacent to the status line. The magnitude of
movement may be smaller than specified (e.g., as a consequence
of maintaining 'winminheight'). Returns TRUE if the window can
be found and FALSE otherwise.
Only works for the current tab page.
|
| Return the screen position of window {nr} as a list with two
numbers: [row, col]. The first window always has position
[1, 1], unless there is a tabline, then it is [2, 1].
{nr} can be the window number or the window-ID . Use zero
for the current window.
Returns [0, 0] if the window cannot be found in the current
tabpage.
|
| Move the window {nr} to a new split of the window {target}.
This is similar to moving to {target}, creating a new window
using :split but having the same contents as window {nr}, and
then closing {nr}.
|
| The result is a Number, which is the number of the buffer
associated with window {nr}. {nr} can be the window number or
the window-ID .
When {nr} is zero, the number of the buffer in the current
window is returned.
When window {nr} doesn't exist, -1 is returned.
Example:
|
| The result is a Number, which is the virtual column of the
cursor in the window. This is counting screen cells from the
left side of the window. The leftmost column is one.
|
| The result is a String. For MS-Windows it indicates the OS
version. E.g, Windows 10 is "10.0", Windows 8 is "6.2",
Windows XP is "5.1". For non-MS-Windows systems the result is
an empty string.
|
| The result is a Number, which is the height of window {nr}.
{nr} can be the window number or the window-ID .
When {nr} is zero, the height of the current window is
returned. When window {nr} doesn't exist, -1 is returned.
An existing window always has a height of zero or more.
This excludes any window toolbar line.
Examples:
|
| The result is a nested List containing the layout of windows
in a tabpage.
|
| The result is a Number, which is the screen line of the cursor
in the window. This is counting screen lines from the top of
the window. The first line is one.
If the cursor was moved the view on the file will be updated
first, this may cause a scroll.
|
| The result is a Number, which is the number of the current
window. The top window has number 1.
Returns zero for a popup window.
|
| Returns a sequence of :resize commands that should restore
the current window sizes. Only works properly when no windows
are opened or closed and the current window and tab page is
unchanged.
Example:
|
| Uses the Dictionary returned by winsaveview() to restore
the view of the current window.
Note: The {dict} does not have to contain all values, that are
returned by winsaveview() . If values are missing, those
settings won't be restored. So you can use:
|
| Returns a Dictionary that contains information to restore
the view of the current window. Use winrestview() to
restore the view.
This is useful if you have a mapping that jumps around in the
buffer and you want to go back to the original view.
This does not save fold information. Use the 'foldenable'
option to temporarily switch off folding, so that folds are
not opened when moving around. This may have side effects.
The return value includes:
lnum cursor line number
col cursor column (Note: the first column
zero, as opposed to what getcurpos()
returns)
coladd cursor column offset for 'virtualedit'
curswant column for vertical movement (Note:
the first column is zero, as opposed
to what getcurpos() returns). After
$ command it will be a very large
number equal to v:maxcol .
topline first line in the window
topfill filler lines, only in diff mode
leftcol first column displayed; only used when
'wrap' is off
skipcol columns skipped
Note that no option values are saved.
|
| The result is a Number, which is the width of window {nr}.
{nr} can be the window number or the window-ID .
When {nr} is zero, the width of the current window is
returned. When window {nr} doesn't exist, -1 is returned.
An existing window always has a width of zero or more.
Examples:
|
| 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 words visually selected
(only in Visual mode)
|
| When {object} is a List write it to file {fname}. Each list
item is separated with a NL. Each list item must be a String
or Number.
All NL characters are replaced with a NUL character.
Inserting CR characters needs to be done before passing {list}
to writefile().
|
| Bitwise XOR on the two arguments. The arguments are converted
to a number. A List, Dict or Float argument causes an error.
Also see and() and or() .
Example:
|